Merge tag android-5.1.0_r1 into AOSP_5.1_MERGE

Change-Id: Id53e3396f8b33ef71d950363d51d2864535828f2
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index c81ac36..f401d65 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -17,7 +17,7 @@
 <manifest
     xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.android.exchange"
-    android:versionCode="500064" >
+    android:versionCode="500065" >
 
     <uses-permission
         android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
diff --git a/res/mipmap-hdpi/icon.png b/res/mipmap-hdpi/icon.png
index 6fd0a98..608547a 100644
--- a/res/mipmap-hdpi/icon.png
+++ b/res/mipmap-hdpi/icon.png
Binary files differ
diff --git a/res/mipmap-mdpi/icon.png b/res/mipmap-mdpi/icon.png
index 0369413..c028d3a 100644
--- a/res/mipmap-mdpi/icon.png
+++ b/res/mipmap-mdpi/icon.png
Binary files differ
diff --git a/res/mipmap-xhdpi/icon.png b/res/mipmap-xhdpi/icon.png
index 777ef30..7e36d8e 100644
--- a/res/mipmap-xhdpi/icon.png
+++ b/res/mipmap-xhdpi/icon.png
Binary files differ
diff --git a/res/mipmap-xxhdpi/icon.png b/res/mipmap-xxhdpi/icon.png
new file mode 100644
index 0000000..ace512b
--- /dev/null
+++ b/res/mipmap-xxhdpi/icon.png
Binary files differ
diff --git a/res/mipmap-xxxhdpi/icon.png b/res/mipmap-xxxhdpi/icon.png
new file mode 100644
index 0000000..7abdb00
--- /dev/null
+++ b/res/mipmap-xxxhdpi/icon.png
Binary files differ
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index c0f8d18..f813479 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Wanneer: <xliff:g id="EVENTDATE">%s</xliff:g> (herhalend)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Wanneer: <xliff:g id="EVENTDATE">%s</xliff:g> (hele dag)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Wanneer: <xliff:g id="EVENTDATE">%s</xliff:g> (die hele dag, herhalend)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange-kalender bygevoeg"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange-dienste"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Hierdie gebeurtenis is gekanselleer vir: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Die details van hierdie gebeurtenis het verander vir: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 90d9d18..81b0f24 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"መቼ፡ <xliff:g id="EVENTDATE">%s</xliff:g>(ድግግሞሽ)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"የሚከተለው ሲሆን፤ <xliff:g id="EVENTDATE">%s</xliff:g> (ሁሉም ቀን)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"የሚከተለው ሲሆን፤ <xliff:g id="EVENTDATE">%s</xliff:g> (ሁሉም ቀን፣ ተደጋጋሚ)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"የቀን መቁጠሪያ ልውውጥ ታክሏል"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange አገልግሎቶች"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"ይህ ከስተት ለ<xliff:g id="DATE">%s</xliff:g> ተሰርዟል።"</string>
     <string name="exception_updated" msgid="329192591551400871">"የዚህ ክስተት ዝርዝሮች ለ፡<xliff:g id="DATE">%s</xliff:g> ተለውጠዋል"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 7f7d843..ee7f533 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"الموعد: <xliff:g id="EVENTDATE">%s</xliff:g> (متكرر)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"الموعد: <xliff:g id="EVENTDATE">%s</xliff:g> (اليوم كله)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"الموعد: <xliff:g id="EVENTDATE">%s</xliff:g> (اليوم كله، بشكل متكرر)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"‏تمت إضافة تقويم Exchange"</string>
     <string name="app_name" msgid="1707639359526090662">"‏خدمات Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"تم إلغاء هذا الحدث لـ: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"تم تغيير التفاصيل لهذا الحدث لـ: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index b46ec1b..9fde3cd 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Кога: <xliff:g id="EVENTDATE">%s</xliff:g> (с повторения)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Кога: <xliff:g id="EVENTDATE">%s</xliff:g> (цял ден)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Кога: <xliff:g id="EVENTDATE">%s</xliff:g> (цял ден, периодично)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Добавен е календар от Exchange"</string>
     <string name="app_name" msgid="1707639359526090662">"Услуги на Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Това събитие от <xliff:g id="DATE">%s</xliff:g> е анулирано"</string>
     <string name="exception_updated" msgid="329192591551400871">"Подробностите за това събитие са променени за: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
index bf3845f..d02d795 100644
--- a/res/values-bn-rBD/strings.xml
+++ b/res/values-bn-rBD/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"কখন: <xliff:g id="EVENTDATE">%s</xliff:g> (পুনরাবৃত্তি)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"কখন: <xliff:g id="EVENTDATE">%s</xliff:g> (সারা দিন)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"কখন: <xliff:g id="EVENTDATE">%s</xliff:g> (সারা দিন, পুনরাবৃত্তি)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange ক্যালেন্ডার জোড়া হয়েছে"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange পরিষেবাদি"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"এই তারিখের এই ইভেন্টটি বাতিল করা হয়েছে: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"এই তারিখের এই ইভেন্টটির বিশদ বিবরণ পরিবর্তন করা হয়েছে: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 10f6b44..e544331 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Quan: <xliff:g id="EVENTDATE">%s</xliff:g> (periòdica)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Quan: <xliff:g id="EVENTDATE">%s</xliff:g> (tot el dia)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Quan: <xliff:g id="EVENTDATE">%s</xliff:g> (tot el dia, periòdic)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"S\'ha afegit el calendari d\'Exchange."</string>
     <string name="app_name" msgid="1707639359526090662">"Serveis d\'Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Aquest esdeveniment s\'ha cancel·lat al dia <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Els detalls d\'aquest esdeveniment han canviat al dia <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 0d31764..bb6892d 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Kdy: <xliff:g id="EVENTDATE">%s</xliff:g> (pravidelně)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Kdy: <xliff:g id="EVENTDATE">%s</xliff:g> (celý den)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Kdy: <xliff:g id="EVENTDATE">%s</xliff:g> (celý den, opakující se)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Kalendář Exchange byl přidán"</string>
     <string name="app_name" msgid="1707639359526090662">"Služby Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Tato událost byla zrušena pro datum: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Podrobnosti této události byly změněny pro datum: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 9f88fce..ca6dfa3 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Hvornår: <xliff:g id="EVENTDATE">%s</xliff:g> (flere gange)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Hvornår: <xliff:g id="EVENTDATE">%s</xliff:g> (hele dagen)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Hvornår: <xliff:g id="EVENTDATE">%s</xliff:g> (hele dagen, tilbagevendende)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange-kalender er tilføjet"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange-tjenester"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Denne begivenhed er annulleret for: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Oplysningerne om denne begivenhed er ændret for: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 7899e41..46be3e9 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Wann: <xliff:g id="EVENTDATE">%s</xliff:g> (wiederkehrend)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Wann: <xliff:g id="EVENTDATE">%s</xliff:g> (ganztägig)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Wann: <xliff:g id="EVENTDATE">%s</xliff:g> (ganztägig, wiederkehrend)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange-Kalender hinzugefügt"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange-Dienste"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Dieser Termin wurde storniert für: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Die Details dieses Termins wurden geändert für: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 7cea09a..1eda34b 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Πότε: <xliff:g id="EVENTDATE">%s</xliff:g> (επαναλαμβανόμενο)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Πότε: <xliff:g id="EVENTDATE">%s</xliff:g> (όλη την ημέρα)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Πότε: <xliff:g id="EVENTDATE">%s</xliff:g> (όλη την ημέρα, επαναλαμβανόμενα)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Προστέθηκε ημερολόγιο Exchange"</string>
     <string name="app_name" msgid="1707639359526090662">"Υπηρεσίες Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Αυτό το συμβάν ακυρώθηκε για: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Οι λεπτομέρειες αυτού του συμβάντος άλλαξαν για: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index e301341..a11ad35 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"When: <xliff:g id="EVENTDATE">%s</xliff:g> (recurring)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"When: <xliff:g id="EVENTDATE">%s</xliff:g> (all day)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"When: <xliff:g id="EVENTDATE">%s</xliff:g> (all day, recurring)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange calendar added"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange Services"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"This event has been cancelled for: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"The details of this event have been changed for: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index e301341..a11ad35 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"When: <xliff:g id="EVENTDATE">%s</xliff:g> (recurring)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"When: <xliff:g id="EVENTDATE">%s</xliff:g> (all day)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"When: <xliff:g id="EVENTDATE">%s</xliff:g> (all day, recurring)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange calendar added"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange Services"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"This event has been cancelled for: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"The details of this event have been changed for: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 6ba3b5e..c52100c 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Cuando: <xliff:g id="EVENTDATE">%s</xliff:g> (recurrente)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Cuándo: <xliff:g id="EVENTDATE">%s</xliff:g> (todo el día)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Cuándo: <xliff:g id="EVENTDATE">%s</xliff:g> (todo el día, se repite)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Calendario de Exchange agregado"</string>
     <string name="app_name" msgid="1707639359526090662">"Servicios de Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Este evento ha sido cancelado para: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Los detalles de este evento se han modificado para: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 46067d5..5a30fd4 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Cuándo: <xliff:g id="EVENTDATE">%s</xliff:g> (periódico)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Cuando: <xliff:g id="EVENTDATE">%s</xliff:g> (todo el día)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Cuando: <xliff:g id="EVENTDATE">%s</xliff:g> (todo el día, periódico)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Se ha añadido un calendario de Exchange"</string>
     <string name="app_name" msgid="1707639359526090662">"Servicios de Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Este evento se ha cancelado el día: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Los detalles de este evento se han cambiado al día: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index 4618fb7..a4d193a 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Millal: <xliff:g id="EVENTDATE">%s</xliff:g> (korduv)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Toimumisaeg: <xliff:g id="EVENTDATE">%s</xliff:g> (terve päev)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Toimumisaeg: <xliff:g id="EVENTDATE">%s</xliff:g> (terve päev, korduv)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange\'i kalender on lisatud"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange\'i teenused"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"See sündmus on tühistatud: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Selle sündmuse andmed on muutunud: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml
index 1433080..364a3e3 100644
--- a/res/values-eu-rES/strings.xml
+++ b/res/values-eu-rES/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Data: <xliff:g id="EVENTDATE">%s</xliff:g> (errepikakorra)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Noiz: <xliff:g id="EVENTDATE">%s</xliff:g> (egun osoa)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Noiz: <xliff:g id="EVENTDATE">%s</xliff:g> (egun osoa, errepikaria)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange egutegia gehitu da"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange zerbitzuak"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Data honetako gertaera bertan behera utzi da: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Data honetako gertaeraren xehetasunak aldatu egin dira: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index a9f0d50..6455291 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"زمان: <xliff:g id="EVENTDATE">%s</xliff:g> (تکرار)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"زمان: <xliff:g id="EVENTDATE">%s</xliff:g> (در تمام طول روز)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"زمان: <xliff:g id="EVENTDATE">%s</xliff:g> (در تمام طول روز، به‌صورت تکراری)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"‏تقویم Exchange اضافه شد"</string>
     <string name="app_name" msgid="1707639359526090662">"‏سرویس‌های Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"این رویداد لغو شده است به مدت: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"جزئیات این رویداد تغییر کرده‌اند به مدت: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 1355b87..0892030 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Milloin: <xliff:g id="EVENTDATE">%s</xliff:g> (toistuva)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Milloin: <xliff:g id="EVENTDATE">%s</xliff:g> (koko päivän)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Milloin: <xliff:g id="EVENTDATE">%s</xliff:g> (koko päivän, toistuva)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange-kalenteri lisätty"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange Services"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Poikkeus toistuvassa tapahtumassa, peruutettu <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Poikkeus toistuvassa tapahtumassa, muutettu <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index abed2d6..4346331 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Date : <xliff:g id="EVENTDATE">%s</xliff:g> (périodique)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Quand : <xliff:g id="EVENTDATE">%s</xliff:g> (toute la journée)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Quand : <xliff:g id="EVENTDATE">%s</xliff:g> (toute la journée, récurrent)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Calendrier Exchange ajouté"</string>
     <string name="app_name" msgid="1707639359526090662">"Services Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Cet événement a été annulé pour : <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Les détails de cet événement ont été modifiés pour : <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index eda8a1a..9d2a5f6 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Date : <xliff:g id="EVENTDATE">%s</xliff:g> (périodique)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Quand : <xliff:g id="EVENTDATE">%s</xliff:g> (toute la journée)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Quand : <xliff:g id="EVENTDATE">%s</xliff:g> (toute la journée, récurrent)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Agenda Exchange ajouté"</string>
     <string name="app_name" msgid="1707639359526090662">"Services Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Cet événement a été annulé pour : <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Les détails de cet événement ont été modifiés pour : <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml
index 8bfb3d8..94f6ba5 100644
--- a/res/values-gl-rES/strings.xml
+++ b/res/values-gl-rES/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Cando: <xliff:g id="EVENTDATE">%s</xliff:g> (repetida)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Cando: <xliff:g id="EVENTDATE">%s</xliff:g> (todo o día)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Cando: <xliff:g id="EVENTDATE">%s</xliff:g> (todo o día, periódica)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Calendario de Exchange engadido"</string>
     <string name="app_name" msgid="1707639359526090662">"Servizos de Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Cancelouse este evento data do: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Os detalles deste evento cambiáronse o: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 6bcdd92..a70df8f 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"कब: <xliff:g id="EVENTDATE">%s</xliff:g> (पुनरावर्ती)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"कब: <xliff:g id="EVENTDATE">%s</xliff:g> (पूरा दिन)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"कब: <xliff:g id="EVENTDATE">%s</xliff:g> (पूरा दिन, पुनरावृत्ति)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange कैलेंडर जोड़ा गया"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange Services"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"यह ईवेंट इसके लिए रद्द कर दिया गया है: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"इस ईवेंट का विवरण इसके लिए ‍बदल दिया गया है: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 970e3c4..48b60c5 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Kada: <xliff:g id="EVENTDATE">%s</xliff:g> (ponavljanje)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Kada: <xliff:g id="EVENTDATE">%s</xliff:g> (cijeli dan)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Kada: <xliff:g id="EVENTDATE">%s</xliff:g> (cijeli dan, ponavlja se)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Dodan je Exchange kalendar"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange Services"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Ovaj je događaj otkazan za: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Pojedinosti ovog događaja promijenjene su za: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 7ea1896..8a7a97b 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Időpont: <xliff:g id="EVENTDATE">%s</xliff:g> (ismétlődő)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Időpont: <xliff:g id="EVENTDATE">%s</xliff:g> (egész nap)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Időpont: <xliff:g id="EVENTDATE">%s</xliff:g> (egész nap, ismétlődő)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange-naptár hozzáadva"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange szolgáltatások"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Ezt az eseményt törölték: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Az esemény részletei a következőre módosultak: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index c2d6b12..5967d07 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Երբ` <xliff:g id="EVENTDATE">%s</xliff:g> (ընթացիկ)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Երբ` <xliff:g id="EVENTDATE">%s</xliff:g> (ամբողջ օրը):"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Երբ` <xliff:g id="EVENTDATE">%s</xliff:g> (ամբողջ օրը, ընթացիկ)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange օրացույցն ավելացված է"</string>
     <string name="app_name" msgid="1707639359526090662">"Փոխանակման ծառայություններ"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Այս միջոցառումը չեղարկվել է <xliff:g id="DATE">%s</xliff:g>-ին"</string>
     <string name="exception_updated" msgid="329192591551400871">"Այս միջոցառման մանրամասները փոխվել են <xliff:g id="DATE">%s</xliff:g>-ին"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 6c409bc..d8039fd 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Waktu: <xliff:g id="EVENTDATE">%s</xliff:g> (terjadi berulang)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Kapan: <xliff:g id="EVENTDATE">%s</xliff:g> (sepanjang hari)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Kapan: <xliff:g id="EVENTDATE">%s</xliff:g> (sepanjang hari, berulang)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Tukar kalender yang ditambahkan"</string>
     <string name="app_name" msgid="1707639359526090662">"Layanan Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Acara ini telah dibatalkan untuk: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Detail acara ini telah diubah untuk: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml
index 9fc60ed..790586e 100644
--- a/res/values-is-rIS/strings.xml
+++ b/res/values-is-rIS/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Hvenær: <xliff:g id="EVENTDATE">%s</xliff:g> (endurtekið)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Hvenær: <xliff:g id="EVENTDATE">%s</xliff:g> (allur dagurinn)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Hvenær: <xliff:g id="EVENTDATE">%s</xliff:g> (allur dagurinn, endurtekið)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange-dagatali bætt við"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange-þjónusta"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Þessum viðburði var aflýst: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Upplýsingum um þennan viðburð var breytt: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index b5b900b..b64f557 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Quando: <xliff:g id="EVENTDATE">%s</xliff:g> (ricorrente)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Quando: <xliff:g id="EVENTDATE">%s</xliff:g> (tutto il giorno)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Quando: <xliff:g id="EVENTDATE">%s</xliff:g> (tutto il giorno, ricorrente)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Calendario Exchange aggiunto"</string>
     <string name="app_name" msgid="1707639359526090662">"Servizi Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Questo evento è stato annullato per la data: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"I dettagli di questo evento sono cambiati per la data: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 0593c2a..d02fe37 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"מתי: <xliff:g id="EVENTDATE">%s</xliff:g> (אירוע חוזר)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"מתי: <xliff:g id="EVENTDATE">%s</xliff:g> (כל יום)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"מתי: <xliff:g id="EVENTDATE">%s</xliff:g> (כל היום, חוזר)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"‏נוסף יומן של Exchange"</string>
     <string name="app_name" msgid="1707639359526090662">"‏שירותי Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"אירוע זה בוטל לתאריך: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"הפרטים של אירוע זה השתנו בתאריך: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 86ada48..e8adf70 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"日時: <xliff:g id="EVENTDATE">%s</xliff:g>(定期的)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"日付: <xliff:g id="EVENTDATE">%s</xliff:g>(終日)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"日付: <xliff:g id="EVENTDATE">%s</xliff:g>(終日、定期的)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchangeカレンダーを追加しました"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchangeサービス"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"この予定はキャンセルされました: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"この予定の詳細が変更されました: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index 87b59dc..fe83afc 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"როდის: <xliff:g id="EVENTDATE">%s</xliff:g> (განმეორებადი)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"როდის: <xliff:g id="EVENTDATE">%s</xliff:g> (მთელი დღე)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"როდის: <xliff:g id="EVENTDATE">%s</xliff:g> (მთელი დღე, განმეორებადი)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"დამატებულია Exchange კალენდარი"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange Services"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"ეს ღონისძიება გაუქმებულია: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"ამ ღონისძიების მონაცემები შეცვლილია: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml
index 1b1c5ed..2a1df06 100644
--- a/res/values-kk-rKZ/strings.xml
+++ b/res/values-kk-rKZ/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Қашан: <xliff:g id="EVENTDATE">%s</xliff:g> (қайталанады)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Қашан: <xliff:g id="EVENTDATE">%s</xliff:g> (күні бойы)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Қашан: <xliff:g id="EVENTDATE">%s</xliff:g> (күні бойы, қайталанады)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange күнтізбесі қосылды"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange қызметтері"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Бұл оқиғадан бас тартылды: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Бұл оқиғаның мәліметтері өзгертілді: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index 97b14b9..be48dc7 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"ពេលវេលា​៖ <xliff:g id="EVENTDATE">%s</xliff:g> (កើតឡើង​ច្រើន​ដង)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"ពេល​វេលា៖ <xliff:g id="EVENTDATE">%s</xliff:g> (ពេញ​មួយ​ថ្ងៃ)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"ពេលវេលា​៖ <xliff:g id="EVENTDATE">%s</xliff:g> (ពេញ​មួយ​ថ្ងៃ ​កើតឡើង​ច្រើន​ដង)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"​បាន​បន្ថែម​ការ​ផ្លាស់​ប្ដូរ​ប្រតិទិន"</string>
     <string name="app_name" msgid="1707639359526090662">"សេវាកម្ម​ផ្លាស់ប្ដូរ"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"ព្រឹត្តិការណ៍​នេះ​ត្រូវ​បាន​បោះបង់​ចោល​សម្រាប់៖ <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"ព័ត៌មាន​លម្អិត​នៃ​ព្រឹត្តិការណ៍​នេះ​ត្រូវ​បាន​ប្ដូរ​សម្រាប់៖ <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index 1b7af54..8baebd0 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"ಯಾವಾಗ: <xliff:g id="EVENTDATE">%s</xliff:g> (ಪುನರಾವರ್ತನೆಯಾಗುತ್ತದೆ)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"ಯಾವಾಗ: <xliff:g id="EVENTDATE">%s</xliff:g> (ಎಲ್ಲಾ ದಿನಗಳು)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"ಯಾವಾಗ: <xliff:g id="EVENTDATE">%s</xliff:g> (ಎಲ್ಲಾ ದಿನ, ಪುನರಾವರ್ತನೆಯಾಗುತ್ತದೆ)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"ವಿನಿಮಯ ಕ್ಯಾಲೆಂಡರ್ ಸೇರಿಸಲಾಗಿದೆ"</string>
     <string name="app_name" msgid="1707639359526090662">"ವಿನಿಮಯ ಸೇವೆಗಳು"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"ಈ ದಿನಾಂಕದಲ್ಲಿ ಈ ಈವೆಂಟ್ ಅನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗಿದೆ: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"ಈ ಈವೆಂಟ್‍‍ನ ವಿವರಗಳನ್ನು ಈ ದಿನಾಂಕದಲ್ಲಿ ಬದಲಿಸಲಾಗಿದೆ:<xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 0fded43..29c8cb4 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"일시: <xliff:g id="EVENTDATE">%s</xliff:g>(반복 일정)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"일시: <xliff:g id="EVENTDATE">%s</xliff:g>(종일)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"일시: <xliff:g id="EVENTDATE">%s</xliff:g>(종일, 반복)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange 캘린더 추가됨"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange 서비스"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"<xliff:g id="DATE">%s</xliff:g>에 있을 이 일정이 취소되었습니다."</string>
     <string name="exception_updated" msgid="329192591551400871">"<xliff:g id="DATE">%s</xliff:g>에 있을 이 일정의 세부사항이 변경되었습니다."</string>
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
index 87f6c53..98b7775 100644
--- a/res/values-ky-rKG/strings.xml
+++ b/res/values-ky-rKG/strings.xml
@@ -36,8 +36,6 @@
     <skip />
     <string name="meeting_allday" msgid="7251209063071628040">"Качан: <xliff:g id="EVENTDATE">%s</xliff:g> (бир күн бою)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Качан: <xliff:g id="EVENTDATE">%s</xliff:g> (бир күн бою, улам-улам кайталанып)"</string>
-    <!-- no translation found for notification_exchange_calendar_added (8998454267739748113) -->
-    <skip />
     <!-- no translation found for app_name (1707639359526090662) -->
     <skip />
     <!-- no translation found for exception_cancel (8972887597771126871) -->
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index 83188d6..805d60d 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"ເມື່ອ: <xliff:g id="EVENTDATE">%s</xliff:g> (ເກີດຂຶ້ນຊ້ຳໆ)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"ເມື່ອ: <xliff:g id="EVENTDATE">%s</xliff:g> (ຫມົດມື້)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"ເມື່ອ: <xliff:g id="EVENTDATE">%s</xliff:g> (ຫມົດມື້, ເກີດຂຶ້ນຊ້ຳໆ)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"ເພີ່ມປະຕິທິນ Exchange ແລ້ວ"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange Services"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"ກິດຈະກຳນີ້ໄດ້ຖືກຍົກເລີກສຳລັບ: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"ລາຍລະອຽດ​ຂອງ​ກິດຈະກຳນີ້ໄດ້ມີການ​ປ່ຽນແປງ​ສໍາລັບ: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index c5432d5..c1abf96 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Kada: <xliff:g id="EVENTDATE">%s</xliff:g> (pasikartojantis)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Kada: <xliff:g id="EVENTDATE">%s</xliff:g> (visą dieną)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Kada: <xliff:g id="EVENTDATE">%s</xliff:g> (visą dieną, pasikartojantis)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Pridėtas „Exchange“ kalendorius"</string>
     <string name="app_name" msgid="1707639359526090662">"„Exchange“ paslaugos"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Šis įvykis atšauktas: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Išsami šio įvykio informacija buvo pakeista: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 1936d2c..585443c 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Kad: <xliff:g id="EVENTDATE">%s</xliff:g> (tiek atkārtots)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Kad: <xliff:g id="EVENTDATE">%s</xliff:g> (visu dienu)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Kad: <xliff:g id="EVENTDATE">%s</xliff:g> (visu dienu, atkārtoti)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange kalendārs ir pievienots"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange pakalpojumi"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Pasākums šajā datumā ir atcelts: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Šī pasākuma dati šādā datumā ir mainīti: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml
index d2ec181..5c088b9 100644
--- a/res/values-mk-rMK/strings.xml
+++ b/res/values-mk-rMK/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Кога: <xliff:g id="EVENTDATE">%s</xliff:g> (повторливо)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Кога: <xliff:g id="EVENTDATE">%s</xliff:g> (цел ден)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Кога: <xliff:g id="EVENTDATE">%s</xliff:g> (цел ден, повторливо)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Додаден е календар од сметка на Exchange"</string>
     <string name="app_name" msgid="1707639359526090662">"Услуги на размена"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Овој настан е откажан за: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Деталите на овој настан се променети за: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
index 5b795b2..faa7f8c 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml-rIN/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"എപ്പോൾ: <xliff:g id="EVENTDATE">%s</xliff:g> (ആവർത്തിക്കുന്നത്‌)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"എപ്പോൾ: <xliff:g id="EVENTDATE">%s</xliff:g> (എല്ലാ ദിവസവും)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"എപ്പോൾ: <xliff:g id="EVENTDATE">%s</xliff:g> (എല്ലാ ദിവസവും, ആവർത്തിക്കുന്നത്)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange കലണ്ടർ ചേർത്തു"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange സേവനങ്ങൾ"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"ഈ തീയതിയ്‌ക്കുള്ള ഇവന്റ് റദ്ദാക്കി: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"ഈ ഇവന്റിനായുള്ള വിശദാംശങ്ങൾ മാറ്റി: <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -35,7 +34,7 @@
     <string name="policy_dont_allow_unsigned_apps" msgid="7663879438028397642">"സൈൻ ചെയ്‌തിട്ടില്ലാത്ത അപ്ലിക്കേഷനുകളെ അനുവദിക്കരുത്"</string>
     <string name="policy_dont_allow_unsigned_installers" msgid="8227232531632246827">"സൈൻ ചെയ്‌തിട്ടില്ലാത്ത അപ്ലിക്കേഷൻ ഇൻസ്റ്റാളറുകളെ അനുവദിക്കരുത്"</string>
     <string name="policy_dont_allow_wifi" msgid="8501275982154914194">"Wi-Fi അനുവദിക്കരുത്"</string>
-    <string name="policy_dont_allow_text_messaging" msgid="860590081742537792">"വാചക സന്ദേശമയയ്‌ക്കൽ അനുവദിക്കരുത്"</string>
+    <string name="policy_dont_allow_text_messaging" msgid="860590081742537792">"വാചക സന്ദേശം അനുവദിക്കരുത്"</string>
     <string name="policy_dont_allow_pop_imap" msgid="5772539239469636191">"POP3 അല്ലെങ്കിൽ IMAP അക്കൗണ്ടുകൾ അനുവദിക്കരുത്"</string>
     <string name="policy_dont_allow_irda" msgid="8230803019935893114">"ഇൻഫ്രാറെഡ് ആശയവിനിമയങ്ങൾ അനുവദിക്കരുത്"</string>
     <string name="policy_dont_allow_html" msgid="3909470006782362967">"HTML ഇമെയിൽ അനുവദിക്കരുത്"</string>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index 64600b5..9107a1c 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Хэзээ: <xliff:g id="EVENTDATE">%s</xliff:g> (давтагддаг)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Хэзээ: <xliff:g id="EVENTDATE">%s</xliff:g> (бүтэн өдөр)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Хэзээ: <xliff:g id="EVENTDATE">%s</xliff:g> (өдрийн турш, давтагддаг)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Солигч календарь нэмэгдсэн"</string>
     <string name="app_name" msgid="1707639359526090662">"Солигч Үйлчилгээ"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Энэ үйл явдлыг дараах өдөрт цуцалсан: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Энэ үйл явдлын мэдээллийг дараах өдөрт өөрчилсөн: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
index 9c6471c..1e134a9 100644
--- a/res/values-mr-rIN/strings.xml
+++ b/res/values-mr-rIN/strings.xml
@@ -27,14 +27,13 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"केव्हा: <xliff:g id="EVENTDATE">%s</xliff:g> (आवर्ती)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"केव्हा: <xliff:g id="EVENTDATE">%s</xliff:g> (सर्व दिवस)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"केव्हा: <xliff:g id="EVENTDATE">%s</xliff:g> (सर्व दिवस, आवर्ती)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange कॅलेंडर जोडले"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange सेवा"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"हा इव्हेंट रद्द केला गेला आहे: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"यासाठी या इव्हेंटचे तपशील बदलण्यात आले आहेत: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="policy_dont_allow_storage_cards" msgid="1305111581282078881">"संचयन कार्डना अनुमती देऊ नका"</string>
     <string name="policy_dont_allow_unsigned_apps" msgid="7663879438028397642">"स्वाक्षरी न केलेल्या अॅप्स ना अनुमती देऊ नका"</string>
     <string name="policy_dont_allow_unsigned_installers" msgid="8227232531632246827">"स्वाक्षरी न केलेल्या अॅप स्थापनकर्त्यांना अनुमती देऊ नका"</string>
-    <string name="policy_dont_allow_wifi" msgid="8501275982154914194">"Wi-Fi ला अनुमती देऊ नका"</string>
+    <string name="policy_dont_allow_wifi" msgid="8501275982154914194">"वाय-फाय ला अनुमती देऊ नका"</string>
     <string name="policy_dont_allow_text_messaging" msgid="860590081742537792">"मजकूर संदेशनास अनुमती देऊ नका"</string>
     <string name="policy_dont_allow_pop_imap" msgid="5772539239469636191">"POP3 किंवा IMAP खात्यांना अनुमती देऊ नका"</string>
     <string name="policy_dont_allow_irda" msgid="8230803019935893114">"इन्फ्रारेड संप्रेषणांना अनुमती देऊ नका"</string>
@@ -43,7 +42,7 @@
     <string name="policy_dont_allow_consumer_email" msgid="2473755560531860915">"ग्राहक ईमेलला अनुमती देऊ नका"</string>
     <string name="policy_dont_allow_internet_sharing" msgid="8926902533477728994">"इंटरनेट सामायिकरणास अनुमती देऊ नका"</string>
     <string name="policy_require_smime" msgid="6445017199744800426">"SMIME संदेश आवश्यक"</string>
-    <string name="policy_bluetooth_restricted" msgid="2877695021606992022">"Bluetooth वापर प्रतिबंधित करा"</string>
+    <string name="policy_bluetooth_restricted" msgid="2877695021606992022">"ब्लूटूथ वापर प्रतिबंधित करा"</string>
     <string name="policy_app_blacklist" msgid="6955451921925210944">"निर्दिष्ट अॅप्स ची अनुमती रद्द करा"</string>
     <string name="policy_app_whitelist" msgid="73673250614393830">"केवळ निर्दिष्ट अॅप्स ना अनुमती द्या"</string>
     <string name="policy_text_truncation" msgid="2098855720139889616">"मजकूर ईमेल आकार प्रतिबंधित करा"</string>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index 52c3366..dfb811c 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Bila: <xliff:g id="EVENTDATE">%s</xliff:g> (berulangan)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Bila: <xliff:g id="EVENTDATE">%s</xliff:g> (sepanjang hari)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Bila: <xliff:g id="EVENTDATE">%s</xliff:g> (sepanjang hari, berulang-ulang)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Kalendar Exchange ditambahkan"</string>
     <string name="app_name" msgid="1707639359526090662">"Perkhidmatan Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Acara ini sudah dibatalkan untuk: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Butiran acara ini telah ditukar kepada: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
index dc188d3..2e9fa56 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my-rMM/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"အချိန်: <xliff:g id="EVENTDATE">%s</xliff:g> (ထပ်ဖြစ်နေ)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"အချိန်: <xliff:g id="EVENTDATE">%s</xliff:g> (တစ်နေ့လုံး)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"အချိန်: <xliff:g id="EVENTDATE">%s</xliff:g> (တစ်နေ့လုံး၊ ထပ်ဖြစ်နေ)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"လဲလှယ်ရေး ပြက္ခဒိန်ကို ထည့်ပြီး"</string>
     <string name="app_name" msgid="1707639359526090662">"လဲလှယ်ရေး ၀န်ဆောင်မှုများ"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"ဤဖြစ်ရပ်ကို <xliff:g id="DATE">%s</xliff:g> အတွက် ဖျက်သိမ်းလိုက်သည်။"</string>
     <string name="exception_updated" msgid="329192591551400871">"ဤဖြစ်ရပ်အတွက် အသေးစိတ်များကို ပြောင်းခဲ့သည်မှာ: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index c2b85ba..5bfb9c3 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Når: <xliff:g id="EVENTDATE">%s</xliff:g> (gjentakende)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Når: <xliff:g id="EVENTDATE">%s</xliff:g> (hele dagen)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Når: <xliff:g id="EVENTDATE">%s</xliff:g> (hele dagen, gjentakende)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange-kalender er lagt til"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange-tjenester"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Denne aktiviteten er avlyst for: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Detaljene for denne aktiviteten er endret for: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
index f1ca8fb..5954840 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne-rNP/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"जब: <xliff:g id="EVENTDATE">%s</xliff:g> (पुनरावर्ती)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"जब: <xliff:g id="EVENTDATE">%s</xliff:g> (सबै दिन)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"जब: <xliff:g id="EVENTDATE">%s</xliff:g> (सबै दिन, पुनरावर्ती)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"एक्स्चेन्ञ पात्रो थपियो"</string>
     <string name="app_name" msgid="1707639359526090662">"सेवाहरु परिवर्तन गर्नुहोस्"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"<xliff:g id="DATE">%s</xliff:g> को लागि यस घटना रद्द भयो:"</string>
     <string name="exception_updated" msgid="329192591551400871">"<xliff:g id="DATE">%s</xliff:g> को लागि यस घटनाको पूर्ण विवरण परिवर्तन भयो:"</string>
@@ -41,7 +40,7 @@
     <string name="policy_dont_allow_html" msgid="3909470006782362967">"HTML इमेललाई अनुमति नदिनुहोस्"</string>
     <string name="policy_dont_allow_browser" msgid="241728112385525092">"ब्राउजरहरुलाई अनुमति नदिनुहोस्"</string>
     <string name="policy_dont_allow_consumer_email" msgid="2473755560531860915">"उपभोक्ता इ-मेललाई अनुमति नदिनुहोस्"</string>
-    <string name="policy_dont_allow_internet_sharing" msgid="8926902533477728994">"ईन्टरनेट साझेदारी अनुमति नदिनुहोस्"</string>
+    <string name="policy_dont_allow_internet_sharing" msgid="8926902533477728994">"इन्टरनेट साझेदारी अनुमति नदिनुहोस्"</string>
     <string name="policy_require_smime" msgid="6445017199744800426">"SMIME सान्देशहरुको आवश्यकता छ"</string>
     <string name="policy_bluetooth_restricted" msgid="2877695021606992022">"ब्लूटूथ उपयोग प्रतिबन्धित गर्नुहोस्"</string>
     <string name="policy_app_blacklist" msgid="6955451921925210944">"निर्दिष्ट अनुप्रयोगहरू अस्वीकार गर्नुहोस्"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index b6adbd2..5ad17b1 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Wanneer: <xliff:g id="EVENTDATE">%s</xliff:g> (herhalen)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Wanneer: <xliff:g id="EVENTDATE">%s</xliff:g> (hele dag)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Wanneer: <xliff:g id="EVENTDATE">%s</xliff:g> (hele dag, herhalen)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange-agenda toegevoegd"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange Services"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Deze afspraak is geannuleerd voor: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"De details van deze afspraak zijn gewijzigd voor: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 13ac5e3..ad16d37 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Kiedy: <xliff:g id="EVENTDATE">%s</xliff:g> (powtarzane)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Data: <xliff:g id="EVENTDATE">%s</xliff:g> (cały dzień)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Data: <xliff:g id="EVENTDATE">%s</xliff:g> (cały dzień, cykliczne)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Dodano kalendarz Exchange"</string>
     <string name="app_name" msgid="1707639359526090662">"Usługi Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"To zdarzenie zostało anulowane dla: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Szczegóły tego zdarzenia zostały zmienione dla: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 4b2eb8e..fdadf27 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Quando: <xliff:g id="EVENTDATE">%s</xliff:g> (periódica)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Quando: <xliff:g id="EVENTDATE">%s</xliff:g> (todo o dia)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Quando: <xliff:g id="EVENTDATE">%s</xliff:g> (todo o dia, recorrente)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Calendário do Exchange adicionado"</string>
     <string name="app_name" msgid="1707639359526090662">"Serviços do Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Este evento foi cancelado para: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Os detalhes deste evento foram alterados para: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 25fbcac..035207c 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Quando: <xliff:g id="EVENTDATE">%s</xliff:g> (recorrente)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Quando: <xliff:g id="EVENTDATE">%s</xliff:g> (o dia todo)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Quando: <xliff:g id="EVENTDATE">%s</xliff:g> (o dia todo, recorrente)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Agenda do Exchange adicionada"</string>
     <string name="app_name" msgid="1707639359526090662">"Serviços Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Este evento foi cancelado para: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Os detalhes deste evento foram alterados para: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 302cff4..28a362e 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Când: <xliff:g id="EVENTDATE">%s</xliff:g> (recurent)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Când: <xliff:g id="EVENTDATE">%s</xliff:g> (toată ziua)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Când: <xliff:g id="EVENTDATE">%s</xliff:g> (toată ziua, repetat)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"S-a adăugat calendarul Exchange"</string>
     <string name="app_name" msgid="1707639359526090662">"Servicii Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Acest eveniment a fost anulat pentru: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Detaliile acestui eveniment au fost modificate pentru: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index d6fce21..6dae876 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Время: <xliff:g id="EVENTDATE">%s</xliff:g> (повторяющееся)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Дата: <xliff:g id="EVENTDATE">%s</xliff:g> (весь день)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Дата: <xliff:g id="EVENTDATE">%s</xliff:g> (весь день, повторяется)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Календарь Exchange добавлен"</string>
     <string name="app_name" msgid="1707639359526090662">"Службы Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Это мероприятие отменено: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Сведения об этом мероприятии были изменены: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
index f1df627..842cd0f 100644
--- a/res/values-si-rLK/strings.xml
+++ b/res/values-si-rLK/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"කවදාද: <xliff:g id="EVENTDATE">%s</xliff:g> (ආවර්ත වෙමින්)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"කවදාද: <xliff:g id="EVENTDATE">%s</xliff:g> (සියලුම දින)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"කවදාද: <xliff:g id="EVENTDATE">%s</xliff:g> (සියලු දින, ආවර්ත වෙමින්)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"හුවමාරු දින දර්ශනය එකතුකොට ඇත"</string>
     <string name="app_name" msgid="1707639359526090662">"හුවමාරු සේවාවන්"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"මෙම සිද්ධිය අවලංගු වන්නේ: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"මෙම සිද්ධියේ තොරතුරු වෙනස් වන්නේ: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 4b46b92..f393b95 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Kedy: <xliff:g id="EVENTDATE">%s</xliff:g> (pravidelne)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Kedy: <xliff:g id="EVENTDATE">%s</xliff:g> (celý deň)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Kedy: <xliff:g id="EVENTDATE">%s</xliff:g> (celý deň, opakujúce sa)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Kalendár Exchange bol pridaný"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange Services"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Táto udalosť bola zrušená pre termín: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Došlo k zmene podrobností tejto udalosti pre termín: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index d0f3591..e4f8b02 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Kdaj: <xliff:g id="EVENTDATE">%s</xliff:g> (se ponavlja)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Kdaj: <xliff:g id="EVENTDATE">%s</xliff:g> (ves dan)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Kdaj: <xliff:g id="EVENTDATE">%s</xliff:g> (ves dan, ponavljajoče)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Dodan koledar računa Exchange"</string>
     <string name="app_name" msgid="1707639359526090662">"Storitve Exchange Services"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Ta dogodek je bil preklican za: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Podrobnosti tega dogodka so bile spremenjene: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 2624bf0..89a9b2c 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Када: <xliff:g id="EVENTDATE">%s</xliff:g> (редовно)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Када: <xliff:g id="EVENTDATE">%s</xliff:g> (цео дан)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Када: <xliff:g id="EVENTDATE">%s</xliff:g> (цео дан, понавља се)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Додат је Exchange календар"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange услуге"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Овај догађај је отказан за: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Детаљи овог догађаја су промењени за: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 04d6002..a21cd97 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"När: <xliff:g id="EVENTDATE">%s</xliff:g> (återkommande)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"När: <xliff:g id="EVENTDATE">%s</xliff:g> (hela dagen)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"När: <xliff:g id="EVENTDATE">%s</xliff:g> (hela dagen, återkommande)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange-kalendern har lagts till"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange-tjänster"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Det här händelsen har ställts in för: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Den här händelsens information har ändrats för: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 295c60e..f6e3d6f 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Wakati: <xliff:g id="EVENTDATE">%s</xliff:g> (itarudiwa)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Lini: <xliff:g id="EVENTDATE">%s</xliff:g> (siku nzima)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Lini: <xliff:g id="EVENTDATE">%s</xliff:g> (siku nzima, inajirudia)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Kalenda ya Exchange imeongezwa"</string>
     <string name="app_name" msgid="1707639359526090662">"Huduma za Microsoft Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Tukio hili limeghairiwa kwa: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Maelezo ya tukio hili yamebadilishwa kwa: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml
index 52a8214..0f096df 100644
--- a/res/values-ta-rIN/strings.xml
+++ b/res/values-ta-rIN/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"எப்போது: <xliff:g id="EVENTDATE">%s</xliff:g> (மீண்டும் மீண்டும்)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"எப்போது: <xliff:g id="EVENTDATE">%s</xliff:g> (நாள் முழுதும்)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"எப்போது: <xliff:g id="EVENTDATE">%s</xliff:g> (நாள் முழுவதும், மீண்டும் மீண்டும்)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange கேலெண்டர் சேர்க்கப்பட்டது"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange சேவைகள்"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"பின்வரும் நாளிற்கான நிகழ்வு ரத்துசெய்யப்பட்டது: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"பின்வரும் நாளிற்கான நிகழ்வின் விவரங்கள் மாற்றப்பட்டன: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml
index 71c7f1b..f9aad98 100644
--- a/res/values-te-rIN/strings.xml
+++ b/res/values-te-rIN/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"ఎప్పుడు: <xliff:g id="EVENTDATE">%s</xliff:g> (పునరావృతం)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"ఎప్పుడు: <xliff:g id="EVENTDATE">%s</xliff:g> (మొత్తం రోజు)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"ఎప్పుడు: <xliff:g id="EVENTDATE">%s</xliff:g> (మొత్తం రోజు, పునరావృతం)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange క్యాలెండర్ జోడించబడింది"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange సేవలు"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"ఈ తేదీన జరగాల్సిన ఈ ఈవెంట్ రద్దు చేయబడింది: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"ఈ ఈవెంట్ యొక్క వివరాలు ఈ తేదీన మార్చబడ్డాయి: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 2a03340..ab15d7f 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"เวลา: <xliff:g id="EVENTDATE">%s</xliff:g> (เกิดซ้ำ)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"เมื่อ: <xliff:g id="EVENTDATE">%s</xliff:g> (ตลอดวัน)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"เมื่อ: <xliff:g id="EVENTDATE">%s</xliff:g> (ตลอดวัน เกิดซ้ำ)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"เพิ่มปฏิทิน Exchange แล้ว"</string>
     <string name="app_name" msgid="1707639359526090662">"บริการอีเมล Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"กิจกรรมถูกยกเลิกแล้วในวันที่: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"วันที่ของกิจกรรมนี้ถูกเปลี่ยนเป็น: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 279f86f..bdc01e7 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Kailan: <xliff:g id="EVENTDATE">%s</xliff:g> (paulit-ulit)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Kailan: <xliff:g id="EVENTDATE">%s</xliff:g> (buong araw)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Kailan: <xliff:g id="EVENTDATE">%s</xliff:g> (buong araw, umuulit)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Idinagdag ang kalendaryo ng Exchange"</string>
     <string name="app_name" msgid="1707639359526090662">"Mga Serbisyo ng Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Kinansela ang kaganapang ito para sa: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Ang mga detalye ng kaganapang ito ay binago para sa: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index d4a6350..245ddc4 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Zaman: <xliff:g id="EVENTDATE">%s</xliff:g> (yinelenen)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Tarih: <xliff:g id="EVENTDATE">%s</xliff:g> (tüm gün)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Tarih: <xliff:g id="EVENTDATE">%s</xliff:g> (tüm gün, düzenli)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange takvimi eklendi"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange Hizmetleri"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Bu olay şu tarih için iptal edildi: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Bu olayın ayrıntıları değiştirildi: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 3664b69..fee5b58 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Коли: <xliff:g id="EVENTDATE">%s</xliff:g> (повтор.)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Коли: <xliff:g id="EVENTDATE">%s</xliff:g> (увесь день)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Коли: <xliff:g id="EVENTDATE">%s</xliff:g> (увесь день, періодично)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Додано календар Exchange"</string>
     <string name="app_name" msgid="1707639359526090662">"Служби Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Цю подію було скасовано для: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Деталі цієї події змінено на: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml
index 686e10b..1984b9b 100644
--- a/res/values-ur-rPK/strings.xml
+++ b/res/values-ur-rPK/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"کب: <xliff:g id="EVENTDATE">%s</xliff:g> (اعادی)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"کب: <xliff:g id="EVENTDATE">%s</xliff:g> (تمام دن)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"کب: <xliff:g id="EVENTDATE">%s</xliff:g> (تمام دن، اعادی)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"‏Exchange کیلنڈر شامل ہو گیا"</string>
     <string name="app_name" msgid="1707639359526090662">"‏Exchange سروسز"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"یہ ایونٹ منسوخ کر دیا گیا ہے برائے: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"اس ایونٹ کی تفصیلات کو تبدیل کر دیا گیا ہے برائے: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
index 2c83d13..a475f17 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz-rUZ/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Qachon: <xliff:g id="EVENTDATE">%s</xliff:g> (takrorlanadi)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Qachon: <xliff:g id="EVENTDATE">%s</xliff:g> (kun bo‘yi)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Qachon: <xliff:g id="EVENTDATE">%s</xliff:g> (kun bo‘yi, takrorlanadi)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Exchange taqvimi qo‘shildi"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange xizmatlari"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Ushbu tadbir bekor qilindi: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Ushbu tadbir tafsilotlari o‘zgartirildi: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 0e2b501..d245a25 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Thời gian: <xliff:g id="EVENTDATE">%s</xliff:g> (lặp lại)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Thời gian: <xliff:g id="EVENTDATE">%s</xliff:g> (cả ngày)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Thời gian: <xliff:g id="EVENTDATE">%s</xliff:g> (cả ngày, lặp lại)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Đã thêm lịch Exchange"</string>
     <string name="app_name" msgid="1707639359526090662">"Các dịch vụ của Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Sự kiện này đã bị hủy cho: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Chi tiết về sự kiện này đã được thay đổi cho: <xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 1611844..59c340c 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"时间:<xliff:g id="EVENTDATE">%s</xliff:g>(重复)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"日期:<xliff:g id="EVENTDATE">%s</xliff:g>(全天)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"日期:<xliff:g id="EVENTDATE">%s</xliff:g>(全天,循环)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"已添加Exchange日历"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange服务"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"定于以下日期的活动已取消:<xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"定于以下日期的活动的详细信息已更改:<xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 17bea48..16b89bf 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"時間:<xliff:g id="EVENTDATE">%s</xliff:g> (週期性)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"時間:<xliff:g id="EVENTDATE">%s</xliff:g> (全日)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"時間:<xliff:g id="EVENTDATE">%s</xliff:g> (全日,週期性)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"已新增 Exchange 日曆"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange 服務"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"已將以下日期的這項活動取消:<xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"已變更此活動於 <xliff:g id="DATE">%s</xliff:g> 時的詳細資料"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 169db98..33598c9 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"時間:<xliff:g id="EVENTDATE">%s</xliff:g> (週期性)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"時間:<xliff:g id="EVENTDATE">%s</xliff:g> (整天)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"時間:<xliff:g id="EVENTDATE">%s</xliff:g> (整天,週期性)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"已新增 Exchange 日曆"</string>
     <string name="app_name" msgid="1707639359526090662">"Exchange 服務"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"已將 <xliff:g id="DATE">%s</xliff:g> 時的此活動取消"</string>
     <string name="exception_updated" msgid="329192591551400871">"已變更此活動於 <xliff:g id="DATE">%s</xliff:g> 時的詳細資料"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 6239b02..ad2509e 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -27,7 +27,6 @@
     <string name="meeting_recurring" msgid="2752008481765880928">"Nini: <xliff:g id="EVENTDATE">%s</xliff:g> (okuvela njalo)"</string>
     <string name="meeting_allday" msgid="7251209063071628040">"Nini: <xliff:g id="EVENTDATE">%s</xliff:g> (usuku lonke)"</string>
     <string name="meeting_allday_recurring" msgid="4545762363537362545">"Nini: <xliff:g id="EVENTDATE">%s</xliff:g> (usuku lonke, okuqhubekayo)"</string>
-    <string name="notification_exchange_calendar_added" msgid="8998454267739748113">"Ukushintsha ikhalenda kufakiwe"</string>
     <string name="app_name" msgid="1707639359526090662">"Amasevisi we-Exchange"</string>
     <string name="exception_cancel" msgid="8972887597771126871">"Lesi senzakalo sikhanselwe i-<xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="329192591551400871">"Imininingwane yalesenzakalo ishintshelwe:<xliff:g id="DATE">%s</xliff:g>"</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 25d5ec5..9fc30e6 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -21,9 +21,9 @@
         bulk operation. -->
     <!-- Do Not Translate. Unused string. -->
 
-    <!-- Name of Microsoft Exchange account type; used by AccountManager -->
-    <string name="exchange_name">Corporate</string>
-    <!-- Name of Microsoft Exchange account type; used by AccountManager -->
+    <!-- Short name of Microsoft Exchange account type; used by AccountManager -->
+    <string name="exchange_eas_name" translatable="false">Exchange</string>
+    <!-- Long name of Microsoft Exchange account type; used by AccountManager -->
     <string name="exchange_name_alternate">Microsoft Exchange ActiveSync</string>
 
     <!-- Message subject for meeting accepted response. This will be followed
@@ -96,10 +96,6 @@
         (all day, recurring)
     </string>
 
-    <!-- Notification message in notifications window when calendar sync is
-        automatically enabled for pre-existing Exchange accounts on upgrade -->
-    <string name="notification_exchange_calendar_added">Exchange calendar added</string>
-
     <!-- The name of this APK as shown in manage applications settings. [CHAR LIMIT=30] -->
     <string name="app_name" >Exchange Services</string>
 
diff --git a/src/com/android/exchange/Eas.java b/src/com/android/exchange/Eas.java
index 595f328..2b5a052 100644
--- a/src/com/android/exchange/Eas.java
+++ b/src/com/android/exchange/Eas.java
@@ -35,13 +35,10 @@
     public static final String LOG_TAG = "Exchange";
 
     // For debugging
-    public static boolean WAIT_DEBUG = false;   // DO NOT CHECK IN WITH THIS SET TO TRUE
     public static boolean DEBUG = false;         // DO NOT CHECK IN WITH THIS SET TO TRUE
 
     // The following two are for user logging (the second providing more detail)
     public static boolean USER_LOG = false;     // DO NOT CHECK IN WITH THIS SET TO TRUE
-    public static boolean PARSER_LOG = false;   // DO NOT CHECK IN WITH THIS SET TO TRUE
-    public static boolean FILE_LOG = false;     // DO NOT CHECK IN WITH THIS SET TO TRUE
 
     public static final String CLIENT_VERSION = "EAS-2.0";
     public static final String ACCOUNT_MAILBOX_PREFIX = "__eas";
@@ -129,20 +126,6 @@
 
     public static final int EXCHANGE_ERROR_NOTIFICATION = 0x10;
 
-    public static void setUserDebug(int state) {
-        // DEBUG takes precedence and is never true in a user build
-        if (!DEBUG) {
-            USER_LOG = (state & EmailServiceProxy.DEBUG_BIT) != 0;
-            PARSER_LOG = (state & EmailServiceProxy.DEBUG_VERBOSE_BIT) != 0;
-            FILE_LOG = (state & EmailServiceProxy.DEBUG_FILE_BIT) != 0;
-            if (FILE_LOG || PARSER_LOG) {
-                USER_LOG = true;
-            }
-            LogUtils.d("Eas Debug", "Logging: " + (USER_LOG ? "User " : "") +
-                    (PARSER_LOG ? "Parser " : "") + (FILE_LOG ? "File" : ""));
-        }
-    }
-
     static public Double getProtocolVersionDouble(String version) {
         if (SUPPORTED_PROTOCOL_EX2003.equals(version)) {
             return SUPPORTED_PROTOCOL_EX2003_DOUBLE;
diff --git a/src/com/android/exchange/adapter/EmailSyncParser.java b/src/com/android/exchange/adapter/EmailSyncParser.java
index f7d674c..21b2b0c 100644
--- a/src/com/android/exchange/adapter/EmailSyncParser.java
+++ b/src/com/android/exchange/adapter/EmailSyncParser.java
@@ -787,12 +787,16 @@
     public void commit() throws RemoteException, OperationApplicationException {
         try {
             commitImpl(MAX_OPS_PER_BATCH);
-        } catch (TransactionTooLargeException e) {
+        } catch (TransactionTooLargeException e1) {
             // Try again but apply batch after every message. The max message size defined in
             // Eas.EAS12_TRUNCATION_SIZE or Eas.EAS2_5_TRUNCATION_SIZE is small enough to fit
             // in a single Binder call.
-            LogUtils.w(TAG, "Transaction too large, retrying in single mode", e);
-            commitImpl(1);
+            LogUtils.w(TAG, e1, "Transaction too large, retrying in single mode");
+            try {
+                commitImpl(1);
+            } catch (TransactionTooLargeException e2) {
+                LogUtils.wtf(TAG, e2, "Transaction too large with batch size one");
+            }
         }
     }
 
@@ -897,16 +901,6 @@
             boolean force)
             throws RemoteException, OperationApplicationException {
         if (force ||  ops.size() >= maxOpsPerBatch) {
-            // STOPSHIP Remove calculating size of data before ship
-            if (LogUtils.isLoggable(TAG, Log.DEBUG)) {
-                final Parcel parcel = Parcel.obtain();
-                for (ContentProviderOperation op : ops) {
-                    op.writeToParcel(parcel, 0);
-                }
-                Log.d(TAG, String.format("Committing %d ops total size=%d",
-                        ops.size(), parcel.dataSize()));
-                parcel.recycle();
-            }
             mContentResolver.applyBatch(EmailContent.AUTHORITY, ops);
             ops.clear();
         }
diff --git a/src/com/android/exchange/adapter/FolderSyncParser.java b/src/com/android/exchange/adapter/FolderSyncParser.java
index 6db4f60..405202d 100644
--- a/src/com/android/exchange/adapter/FolderSyncParser.java
+++ b/src/com/android/exchange/adapter/FolderSyncParser.java
@@ -42,6 +42,7 @@
 import com.android.exchange.Eas;
 import com.android.exchange.eas.EasSyncContacts;
 import com.android.exchange.eas.EasSyncCalendar;
+import com.android.mail.providers.UIProvider;
 import com.android.mail.utils.LogUtils;
 import com.google.common.annotations.VisibleForTesting;
 
@@ -202,8 +203,8 @@
         mInitialSync = (mAccount.mSyncKey == null) || "0".equals(mAccount.mSyncKey);
         if (mInitialSync) {
             // We're resyncing all folders for this account, so nuke any existing ones.
-            mContentResolver.delete(Mailbox.CONTENT_URI, WHERE_ACCOUNT_KEY,
-                    new String[] {mAccountIdAsString});
+            // wipe() will also backup and then restore non default sync settings.
+            wipe();
         }
         if (nextTag(START_DOCUMENT) != Tags.FOLDER_FOLDER_SYNC)
             throw new EasParserException();
@@ -316,10 +317,12 @@
     private static class SyncOptions {
         private final int mInterval;
         private final int mLookback;
+        private final int mSyncState;
 
-        private SyncOptions(int interval, int lookback) {
+        private SyncOptions(int interval, int lookback, int syncState) {
             mInterval = interval;
             mLookback = lookback;
+            mSyncState = syncState;
         }
     }
 
@@ -329,10 +332,12 @@
             SyncWindow.SYNC_WINDOW_ACCOUNT + ")";
 
     private static final String[] MAILBOX_STATE_PROJECTION = new String[] {
-        MailboxColumns.SERVER_ID, MailboxColumns.SYNC_INTERVAL, MailboxColumns.SYNC_LOOKBACK};
+        MailboxColumns.SERVER_ID, MailboxColumns.SYNC_INTERVAL, MailboxColumns.SYNC_LOOKBACK,
+            MailboxColumns.UI_SYNC_STATUS};
     private static final int MAILBOX_STATE_SERVER_ID = 0;
     private static final int MAILBOX_STATE_INTERVAL = 1;
     private static final int MAILBOX_STATE_LOOKBACK = 2;
+    private static final int MAILBOX_STATE_SYNC_STATUS = 3;
     @VisibleForTesting
     final HashMap<String, SyncOptions> mSyncOptionsMap = new HashMap<String, SyncOptions>();
 
@@ -349,9 +354,17 @@
         if (c != null) {
             try {
                 while (c.moveToNext()) {
+                    int syncStatus = c.getInt(MAILBOX_STATE_SYNC_STATUS);
+                    // The only sync status I would ever want to propagate is INITIAL_SYNC_NEEDED.
+                    // This is so that after a migration from the old Email to Unified Gmail
+                    // won't appear to be empty, but not syncing.
+                    if (syncStatus != UIProvider.SyncStatus.INITIAL_SYNC_NEEDED) {
+                        syncStatus = UIProvider.SyncStatus.NO_SYNC;
+                    }
                     mSyncOptionsMap.put(c.getString(MAILBOX_STATE_SERVER_ID),
                             new SyncOptions(c.getInt(MAILBOX_STATE_INTERVAL),
-                                    c.getInt(MAILBOX_STATE_LOOKBACK)));
+                                    c.getInt(MAILBOX_STATE_LOOKBACK),
+                                    syncStatus));
                 }
             } finally {
                 c.close();
@@ -417,6 +430,11 @@
 
         final boolean shouldSync = fromServer && Mailbox.getDefaultSyncStateForType(mailboxType);
         cv.put(MailboxColumns.SYNC_INTERVAL, shouldSync ? 1 : 0);
+        if (shouldSync) {
+            cv.put(MailboxColumns.UI_SYNC_STATUS, UIProvider.SyncStatus.INITIAL_SYNC_NEEDED);
+        } else {
+            cv.put(MailboxColumns.UI_SYNC_STATUS, UIProvider.SyncStatus.NO_SYNC);
+        }
 
         // Set basic flags
         int flags = 0;
@@ -764,6 +782,12 @@
 
     @Override
     protected void wipe() {
+        if (mAccountId == EmailContent.NOT_SAVED) {
+            // This is a dummy account so we don't need to do anything yet.
+            return;
+        }
+
+        // For real accounts, let's go ahead and wipe some data.
         EasSyncCalendar.wipeAccountFromContentProvider(mContext,
                 mAccount.mEmailAddress);
         EasSyncContacts.wipeAccountFromContentProvider(mContext,
diff --git a/src/com/android/exchange/adapter/Parser.java b/src/com/android/exchange/adapter/Parser.java
index 6e7e7d8..c4c9218 100644
--- a/src/com/android/exchange/adapter/Parser.java
+++ b/src/com/android/exchange/adapter/Parser.java
@@ -21,6 +21,7 @@
 
 import com.android.exchange.Eas;
 import com.android.exchange.EasException;
+import com.android.exchange.service.EasService;
 import com.android.exchange.utility.FileLogger;
 import com.android.mail.utils.LogUtils;
 import com.google.common.annotations.VisibleForTesting;
@@ -68,7 +69,6 @@
     private static final int NOT_ENDED = Integer.MIN_VALUE;
     private static final int EOF_BYTE = -1;
 
-    private boolean logging = false;
     private boolean capture = false;
 
     private ArrayList<Integer> captureArray;
@@ -76,9 +76,6 @@
     // The input stream for this parser
     private InputStream in;
 
-    // The current tag depth
-    private int depth;
-
     // The stack of names of tags being processed; used when debug = true
     private String[] nameArray = new String[32];
 
@@ -181,7 +178,6 @@
 
     public Parser(final InputStream in) throws IOException {
         setInput(in, true);
-        logging = Eas.PARSER_LOG;
     }
 
     /**
@@ -191,18 +187,6 @@
      */
     public Parser(final Parser parser) throws IOException {
         setInput(parser.in, false);
-        logging = Eas.PARSER_LOG;
-    }
-
-    /**
-     * Set the debug state of the parser.  When debugging is on, every token is logged (LogUtils.v)
-     * to the console.
-     *
-     * @param val the desired state for debug output
-     */
-    @VisibleForTesting
-    public void setDebug(final boolean val) {
-        logging = val;
     }
 
     protected InputStream getInput() {
@@ -406,7 +390,7 @@
     }
 
     void log(final String str) {
-        if (!logging) {
+        if (!EasService.getProtocolLogging()) {
             return;
         }
         final String logStr;
@@ -419,8 +403,8 @@
         final char [] charArray = new char[startTagArray.size() * 2];
         Arrays.fill(charArray, ' ');
         final String indent = new String(charArray);
-        LogUtils.v(LOG_TAG, "%s", indent + logStr);
-        if (Eas.FILE_LOG) {
+        LogUtils.d(LOG_TAG, "%s", indent + logStr);
+        if (EasService.getFileLogging()) {
             FileLogger.log(LOG_TAG, logStr);
         }
     }
@@ -436,7 +420,7 @@
         push(id);
     }
 
-    private void pop() {
+    protected void pop() {
         // Retrieve the now-current startTag from our stack
         startTag = startTagArray.removeFirst();
         log("</" + startTag + '>');
diff --git a/src/com/android/exchange/adapter/ProvisionParser.java b/src/com/android/exchange/adapter/ProvisionParser.java
index 2cdce4f..4888b8d 100644
--- a/src/com/android/exchange/adapter/ProvisionParser.java
+++ b/src/com/android/exchange/adapter/ProvisionParser.java
@@ -22,6 +22,7 @@
 import android.support.v4.content.ContextCompat;
 
 import com.android.emailcommon.provider.Policy;
+import com.android.emailcommon.service.PolicyServiceProxy;
 import com.android.exchange.Eas;
 import com.android.exchange.R;
 import com.android.exchange.eas.EasProvision;
@@ -152,7 +153,16 @@
                     policy.mPasswordHistory = getValueInt();
                     break;
                 case Tags.PROVISION_ALLOW_CAMERA:
+                    // We need to check to see if it's possible to disable the camera. It's not
+                    // possible on devices with managed profiles.
                     policy.mDontAllowCamera = (getValueInt() == 0);
+                    if (policy.mDontAllowCamera) {
+                        // See if it's possible to disable the camera.
+                        if (!PolicyServiceProxy.canDisableCamera(mContext)) {
+                            tagIsSupported = false;
+                            policy.mDontAllowCamera = false;
+                        }
+                    }
                     break;
                 case Tags.PROVISION_ALLOW_SIMPLE_DEVICE_PASSWORD:
                     // Ignore this unless there's any MSFT documentation for what this means
diff --git a/src/com/android/exchange/adapter/SearchParser.java b/src/com/android/exchange/adapter/SearchParser.java
index 7a65370..8b7bc85 100644
--- a/src/com/android/exchange/adapter/SearchParser.java
+++ b/src/com/android/exchange/adapter/SearchParser.java
@@ -114,7 +114,6 @@
 
     private boolean parseResult(EmailSyncParser parser,
             ArrayList<ContentProviderOperation> ops) throws IOException {
-        // Get an email sync parser for our incoming message data
         boolean res = false;
         Message msg = new Message();
         while (nextTag(Tags.SEARCH_RESULT) != END) {
@@ -128,7 +127,15 @@
                 msg.mAccountKey = mAccount.mId;
                 msg.mMailboxKey = mMailbox.mId;
                 msg.mFlagLoaded = Message.FLAG_LOADED_COMPLETE;
+                // Delegate parsing of the properties to the EmailSyncParser.
+
+                // We push a new <Properties> tag onto the EmailSyncParser. It will parse
+                // until it consumes the </Properties>
                 parser.pushTag(tag);
+                // Since the EmailSyncParser is responsible for consuming the </Properties>
+                // tag, we need to remove it from our stack or it will be double counted.
+                pop();
+
                 parser.addData(msg, tag);
                 if (msg.mHtml != null) {
                     msg.mHtml = TextUtilities.highlightTermsInHtml(msg.mHtml, mQuery);
diff --git a/src/com/android/exchange/adapter/Serializer.java b/src/com/android/exchange/adapter/Serializer.java
index d28e4c2..7f696ed 100644
--- a/src/com/android/exchange/adapter/Serializer.java
+++ b/src/com/android/exchange/adapter/Serializer.java
@@ -27,6 +27,7 @@
 import android.text.TextUtils;
 
 import com.android.exchange.Eas;
+import com.android.exchange.service.EasService;
 import com.android.exchange.utility.FileLogger;
 import com.android.mail.utils.LogUtils;
 import com.google.common.annotations.VisibleForTesting;
@@ -48,7 +49,6 @@
     private int mPendingTag = NOT_PENDING;
     private final Deque<String> mNameStack = new ArrayDeque<String>();
     private int mTagPage = 0;
-    private final boolean mLogging = LogUtils.isLoggable(TAG, LogUtils.VERBOSE);
 
     public Serializer() throws IOException {
         this(new ByteArrayOutputStream(), true);
@@ -67,7 +67,6 @@
      * Base constructor
      * @param outputStream the stream we're serializing to
      * @param startDocument whether or not to start a document
-     * @param _logging whether or not to log our output
      * @throws IOException
      */
     public Serializer(final OutputStream outputStream, final boolean startDocument)
@@ -82,7 +81,7 @@
     }
 
     void log(final String str) {
-        if (!mLogging) {
+        if (!EasService.getProtocolLogging()) {
             return;
         }
         final String logStr;
@@ -95,8 +94,8 @@
         final char [] charArray = new char[mNameStack.size() * 2];
         Arrays.fill(charArray, ' ');
         final String indent = new String(charArray);
-        LogUtils.v(TAG, "%s%s", indent, logStr);
-        if (Eas.FILE_LOG) {
+        LogUtils.d(TAG, "%s%s", indent, logStr);
+        if (EasService.getFileLogging()) {
             FileLogger.log(TAG, logStr);
         }
     }
diff --git a/src/com/android/exchange/eas/EasAutoDiscover.java b/src/com/android/exchange/eas/EasAutoDiscover.java
index cbcb032..d3927ac 100644
--- a/src/com/android/exchange/eas/EasAutoDiscover.java
+++ b/src/com/android/exchange/eas/EasAutoDiscover.java
@@ -68,22 +68,30 @@
     private HostAuth mHostAuth;
     private String mRedirectUri;
 
+
+    private static Account makeAccount(final String username, final String password) {
+        final HostAuth hostAuth = new HostAuth();
+        hostAuth.mLogin = username;
+        hostAuth.mPassword = password;
+        hostAuth.mPort = 443;
+        hostAuth.mProtocol = Eas.PROTOCOL;
+        hostAuth.mFlags = HostAuth.FLAG_SSL | HostAuth.FLAG_AUTHENTICATE;
+        final Account account = new Account();
+        account.mEmailAddress = username;
+        account.mHostAuthRecv = hostAuth;
+        return account;
+    }
+
     public EasAutoDiscover(final Context context, final String uri, final int attemptNumber,
                            final String username, final String password) {
         // We don't actually need an account or a hostAuth, but the EasServerConnection requires
         // one. Just create dummy values.
-        super(context, -1);
+        super(context, makeAccount(username, password));
         mAttemptNumber = attemptNumber;
         mUri = uri;
         mUsername = username;
         mPassword = password;
-        mHostAuth = new HostAuth();
-        mHostAuth.mLogin = mUsername;
-        mHostAuth.mPassword = mPassword;
-        mHostAuth.mPort = 443;
-        mHostAuth.mProtocol = Eas.PROTOCOL;
-        mHostAuth.mFlags = HostAuth.FLAG_SSL | HostAuth.FLAG_AUTHENTICATE;
-        setAccount(new Account(), mHostAuth);
+        mHostAuth = mAccount.mHostAuthRecv;
     }
 
     public static String genUri(final String domain, final int attemptNumber) {
diff --git a/src/com/android/exchange/eas/EasFolderSync.java b/src/com/android/exchange/eas/EasFolderSync.java
index f9853b8..b5e28c1 100644
--- a/src/com/android/exchange/eas/EasFolderSync.java
+++ b/src/com/android/exchange/eas/EasFolderSync.java
@@ -29,7 +29,6 @@
 import com.android.exchange.adapter.FolderSyncParser;
 import com.android.exchange.adapter.Serializer;
 import com.android.exchange.adapter.Tags;
-import com.android.exchange.service.EasService;
 import com.android.mail.utils.LogUtils;
 
 import org.apache.http.HttpEntity;
@@ -65,17 +64,6 @@
     private Bundle mValidationResult;
 
     /**
-     * Constructor for use with {@link EasService} when performing an actual sync.
-     * @param context
-     * @param accountId
-     */
-    public EasFolderSync(final Context context, final long accountId) {
-        super(context, accountId);
-        mStatusOnly = false;
-        mPolicy = null;
-    }
-
-    /**
      * Constructor for actually doing folder sync.
      * @param context
      * @param account
@@ -86,14 +74,20 @@
         mPolicy = null;
     }
 
+    private static Account makeAccount(final HostAuth hostAuth) {
+        final Account account = new Account();
+        account.mHostAuthRecv = hostAuth;
+        account.mEmailAddress = hostAuth.mLogin;
+        return account;
+    }
+
     /**
      * Constructor for account validation.
      * @param context
      * @param hostAuth
      */
     public EasFolderSync(final Context context, final HostAuth hostAuth) {
-        super(context, -1);
-        setDummyAccount(hostAuth);
+        super(context, makeAccount(hostAuth), hostAuth);
         mStatusOnly = true;
     }
 
diff --git a/src/com/android/exchange/eas/EasFullSyncOperation.java b/src/com/android/exchange/eas/EasFullSyncOperation.java
index 8714834..ba81466 100644
--- a/src/com/android/exchange/eas/EasFullSyncOperation.java
+++ b/src/com/android/exchange/eas/EasFullSyncOperation.java
@@ -5,7 +5,6 @@
 import android.content.Context;
 import android.database.Cursor;
 import android.os.Bundle;
-import android.os.RemoteException;
 import android.provider.CalendarContract;
 import android.provider.ContactsContract;
 
@@ -31,7 +30,7 @@
     private final static String TAG = LogUtils.TAG;
 
     private final static int RESULT_SUCCESS = 0;
-    private final static int RESULT_SECURITY_HOLD = -100;
+    public final static int RESULT_SECURITY_HOLD = -100;
 
     public static final int SEND_FAILED = 1;
     public static final String MAILBOX_KEY_AND_NOT_SEND_FAILED =
@@ -57,9 +56,9 @@
     final Bundle mSyncExtras;
     Set<String> mAuthsToSync;
 
-    public EasFullSyncOperation(final Context context, final long accountId,
+    public EasFullSyncOperation(final Context context, final Account account,
                                 final Bundle syncExtras) {
-        super(context, accountId);
+        super(context, account);
         mSyncExtras = syncExtras;
     }
 
@@ -95,12 +94,12 @@
 
     @Override
     public int performOperation() {
-        // Make sure the account is loaded if it hasn't already been.
-        if (!init(false)) {
-            LogUtils.i(LOG_TAG, "Failed to initialize %d before operation EasFullSyncOperation",
-                    getAccountId());
+        if (!init()) {
+            LogUtils.i(LOG_TAG, "Failed to initialize %d before sending request for operation %s",
+                    getAccountId(), getCommand());
             return RESULT_INITIALIZATION_FAILURE;
         }
+
         final android.accounts.Account amAccount = new android.accounts.Account(
                 mAccount.mEmailAddress, Eas.EXCHANGE_ACCOUNT_MANAGER_TYPE);
         mAuthsToSync = EasService.getAuthoritiesToSync(amAccount, AUTHORITIES_TO_SYNC);
@@ -148,6 +147,7 @@
 
         // Do not permit further syncs if we're on security hold.
         if ((mAccount.mFlags & Account.FLAGS_SECURITY_HOLD) != 0) {
+            LogUtils.d(TAG, "Account is on security hold %d", mAccount.getId());
             return RESULT_SECURITY_HOLD;
         }
 
@@ -240,31 +240,34 @@
             return EmailServiceStatus.SUCCESS;
         }
 
-        int result = 0;
+        int syncResult = 0;
         // Non-mailbox syncs are whole account syncs initiated by the AccountManager and are
         // treated as background syncs.
         if (mailbox.mType == Mailbox.TYPE_OUTBOX || mailbox.isSyncable()) {
             final ContentValues cv = new ContentValues(2);
-            updateMailbox(mailbox, cv, isUserSync ?
-                    EmailContent.SYNC_STATUS_USER : EmailContent.SYNC_STATUS_BACKGROUND);
+            final int syncStatus = isUserSync ?
+                    EmailContent.SYNC_STATUS_USER : EmailContent.SYNC_STATUS_BACKGROUND;
+            updateMailbox(mailbox, cv, syncStatus);
             try {
                 if (mailbox.mType == Mailbox.TYPE_OUTBOX) {
                     return syncOutbox(mailbox.mId);
                 }
                 if (hasCallbackMethod) {
-                    EmailServiceStatus.syncMailboxStatus(mContext.getContentResolver(), mSyncExtras,
-                            mailbox.mId, EmailServiceStatus.IN_PROGRESS, 0,
+                    final int lastSyncResult = UIProvider.createSyncValue(syncStatus,
                             UIProvider.LastSyncResult.SUCCESS);
+                    EmailServiceStatus.syncMailboxStatus(mContext.getContentResolver(), mSyncExtras,
+                            mailbox.mId, EmailServiceStatus.IN_PROGRESS, 0, lastSyncResult);
                 }
                 final EasSyncBase operation = new EasSyncBase(mContext, mAccount, mailbox);
                 LogUtils.d(TAG, "IEmailService.syncMailbox account %d", mAccount.mId);
-                result = operation.performOperation();
+                syncResult = operation.performOperation();
             } finally {
                 updateMailbox(mailbox, cv, EmailContent.SYNC_STATUS_NONE);
                 if (hasCallbackMethod) {
+                    final int uiSyncResult = translateSyncResultToUiResult(syncResult);
+                    final int lastSyncResult = UIProvider.createSyncValue(syncStatus, uiSyncResult);
                     EmailServiceStatus.syncMailboxStatus(mContext.getContentResolver(), mSyncExtras,
-                            mailbox.mId, EmailServiceStatus.SUCCESS, 0,
-                            EasOperation.translateSyncResultToUiResult(result));
+                            mailbox.mId, EmailServiceStatus.SUCCESS, 0, lastSyncResult);
                 }
             }
         } else {
@@ -272,7 +275,7 @@
             LogUtils.d(TAG, "Skipping sync of non syncable folder");
         }
 
-        return result;
+        return syncResult;
     }
 
     private int syncOutbox(final long mailboxId) {
@@ -304,16 +307,23 @@
                 if (result == EasOutboxSync.RESULT_ITEM_NOT_FOUND) {
                     // This can happen if we are using smartReply, and the message we are referring
                     // to has disappeared from the server. Try again with smartReply disabled.
+                    // This should be a legitimate, but unusual case. Log a warning.
+                    LogUtils.w(TAG, "WARNING: EasOutboxSync falling back from smartReply");
                     op = new EasOutboxSync(mContext, mAccount, message, false);
                     result = op.performOperation();
                 }
                 // If we got some connection error or other fatal error, terminate the sync.
-                // RESULT_NON_FATAL_ERROR
+                // If we get some non-fatal error, continue.
                 if (result != EasOutboxSync.RESULT_OK &&
                         result != EasOutboxSync.RESULT_NON_FATAL_ERROR &&
                         result > EasOutboxSync.RESULT_OP_SPECIFIC_ERROR_RESULT) {
                     LogUtils.w(TAG, "Aborting outbox sync for error %d", result);
                     return result;
+                } else if (result <= EasOutboxSync.RESULT_OP_SPECIFIC_ERROR_RESULT) {
+                    // There are several different conditions that can cause outbox syncing to fail,
+                    // but they shouldn't prevent us from continuing and trying to downsync
+                    // other mailboxes.
+                    LogUtils.i(TAG, "Outbox sync failed with result %d", result);
                 }
             }
         } finally {
diff --git a/src/com/android/exchange/eas/EasLoadAttachment.java b/src/com/android/exchange/eas/EasLoadAttachment.java
index 9527e51..16e4d0e 100644
--- a/src/com/android/exchange/eas/EasLoadAttachment.java
+++ b/src/com/android/exchange/eas/EasLoadAttachment.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.os.RemoteException;
 
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
 import com.android.emailcommon.provider.EmailContent.Attachment;
 import com.android.emailcommon.service.EmailServiceStatus;
@@ -69,15 +70,15 @@
     /**
      * Constructor for use with {@link EasService} when performing an actual sync.
      * @param context Our {@link Context}.
-     * @param accountId The id of the account in question (i.e. its id in the database).
+     * @param account The account we're loading the attachment for.
      * @param attachmentId The local id of the attachment (i.e. its id in the database).
      * @param callback The callback for any status updates.
      */
-    public EasLoadAttachment(final Context context, final long accountId, final long attachmentId,
+    public EasLoadAttachment(final Context context, final Account account, final long attachmentId,
             final IEmailServiceCallback callback) {
         // The account is loaded before performOperation but it is not guaranteed to be available
         // before then.
-        super(context, accountId);
+        super(context, account);
         mCallback = callback;
         mAttachmentId = attachmentId;
     }
diff --git a/src/com/android/exchange/eas/EasOperation.java b/src/com/android/exchange/eas/EasOperation.java
index ef7d2a8..c633050 100644
--- a/src/com/android/exchange/eas/EasOperation.java
+++ b/src/com/android/exchange/eas/EasOperation.java
@@ -24,6 +24,7 @@
 import android.net.Uri;
 import android.os.Build;
 import android.os.Bundle;
+import android.support.annotation.NonNull;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.text.format.DateUtils;
@@ -149,11 +150,8 @@
 
     protected final Context mContext;
 
-    /** The provider id for the account this operation is on. */
-    private final long mAccountId;
-
     /** The cached {@link Account} state; can be null if it hasn't been loaded yet. */
-    protected Account mAccount;
+    protected final Account mAccount;
 
     /** The connection to use for this operation. This is created when {@link #mAccount} is set. */
     protected EasServerConnection mConnection;
@@ -164,30 +162,18 @@
         }
     }
 
-    @VisibleForTesting
-    public void replaceEasServerConnection(EasServerConnection connection) {
-        mConnection = connection;
-    }
-
     public static boolean isFatal(int result) {
         return result < RESULT_MIN_OK_RESULT;
     }
 
-    /**
-     * Constructor which defers loading of account and connection info.
-     * @param context
-     * @param accountId
-     */
-    protected EasOperation(final Context context, final long accountId) {
-        mContext = context;
-        mAccountId = accountId;
-    }
-
-    protected EasOperation(final Context context, final Account account,
+    protected EasOperation(final Context context, @NonNull final Account account,
             final EasServerConnection connection) {
-        this(context, account.mId);
+        mContext = context;
         mAccount = account;
         mConnection = connection;
+        if (account == null) {
+            throw new IllegalStateException("Null account in EasOperation");
+        }
     }
 
     protected EasOperation(final Context context, final Account account, final HostAuth hostAuth) {
@@ -205,59 +191,21 @@
      */
     protected EasOperation(final EasOperation parentOperation) {
         mContext = parentOperation.mContext;
-        mAccountId = parentOperation.mAccountId;
         mAccount = parentOperation.mAccount;
         mConnection = parentOperation.mConnection;
     }
 
     /**
-     * Some operations happen before the account exists (e.g. account validation).
-     * These operations cannot use {@link #init}, so instead we make a dummy account and
-     * supply a temporary {@link HostAuth}.
-     * @param hostAuth
+     * This will always be called at the begining of performOperation and can be overridden
+     * to do whatever setup is needed.
+     * @return true if initialization succeeded, false otherwise.
      */
-    protected final void setDummyAccount(final HostAuth hostAuth) {
-        mAccount = new Account();
-        mAccount.mEmailAddress = hostAuth.mLogin;
-        mConnection = new EasServerConnection(mContext, mAccount, hostAuth);
-    }
-
-    /**
-     * Loads (or reloads) the {@link Account} for this operation, and sets up our connection to the
-     * server. This can be overridden to add additional functionality, but child implementations
-     * should always call super().
-     * @param allowReload If false, do not perform a load if we already have an {@link Account}
-     *                    (i.e. just keep the existing one); otherwise allow replacement of the
-     *                    account. Note that this can result in a valid Account being replaced with
-     *                    null if the account no longer exists.
-     * @return Whether we now have a valid {@link Account} object.
-     */
-    public boolean init(final boolean allowReload) {
-        if (mAccount == null || allowReload) {
-            mAccount = Account.restoreAccountWithId(mContext, getAccountId());
-            if (mAccount != null) {
-                mConnection = new EasServerConnection(mContext, mAccount,
-                        mAccount.getOrCreateHostAuthRecv(mContext));
-            }
-        }
-        return (mAccount != null);
-    }
-
-    /**
-     * Sets the account. This is for use in cases where the account is not available upon
-     * construction. This will also create the EasServerConnection.
-     * @param account
-     * @param hostAuth
-     */
-    protected void setAccount(final Account account, final HostAuth hostAuth) {
-        mAccount = account;
-        if (mAccount != null) {
-            mConnection = new EasServerConnection(mContext, mAccount, hostAuth);
-        }
+    public boolean init() {
+        return true;
     }
 
     public final long getAccountId() {
-        return mAccountId;
+        return mAccount.getId();
     }
 
     public final Account getAccount() {
@@ -307,13 +255,19 @@
      * @return A result code for the outcome of this operation, as described above.
      */
     public int performOperation() {
-        // Make sure the account is loaded if it hasn't already been.
-        if (!init(false)) {
+        if (!init()) {
             LogUtils.i(LOG_TAG, "Failed to initialize %d before sending request for operation %s",
                     getAccountId(), getCommand());
             return RESULT_INITIALIZATION_FAILURE;
         }
+        try {
+            return performOperationInternal();
+        } finally {
+            onRequestComplete();
+        }
+    }
 
+    private int performOperationInternal() {
         // We handle server redirects by looping, but we need to protect against too much looping.
         int redirectCount = 0;
 
@@ -454,6 +408,13 @@
         // been sent. It will always be called, regardless of the status of the request.
     }
 
+    protected void onRequestComplete() {
+        // This can be overridden to do any cleanup that must happen after the request has
+        // finished. (i.e. either the response has come back and been processed, or some error
+        // has occurred and we have given up.
+        // It will always be called, regardless of the status of the response.
+    }
+
     protected int handleHttpError(final int httpStatus) {
         // This function can be overriden if the child class needs to change the result code
         // based on the http response status.
diff --git a/src/com/android/exchange/eas/EasOutboxSync.java b/src/com/android/exchange/eas/EasOutboxSync.java
index ba25971..60ffc51 100644
--- a/src/com/android/exchange/eas/EasOutboxSync.java
+++ b/src/com/android/exchange/eas/EasOutboxSync.java
@@ -83,10 +83,9 @@
      * need to reset any derived values (eg, mIsEas14).
      */
     @Override
-    public boolean init(final boolean allowReload) {
-        final boolean haveValidAccount = super.init(allowReload);
+    public boolean init() {
         initEas14();
-        return haveValidAccount;
+        return true;
     }
 
     private void initEas14() {
@@ -192,30 +191,30 @@
                 // The parser holds the status
                 final int status = p.getStatus();
                 if (CommandStatus.isNeedsProvisioning(status)) {
-                    LogUtils.w(LOG_TAG, "Needs provisioning sending mail");
+                    LogUtils.w(LOG_TAG, "Needs provisioning before sending message: %d",
+                            mMessage.mId);
                     return RESULT_PROVISIONING_ERROR;
-                } else if (status == CommandStatus.ITEM_NOT_FOUND &&
-                        mSmartSendInfo != null) {
+                } else if (status == CommandStatus.ITEM_NOT_FOUND && mSmartSendInfo != null) {
                     // Let's retry without "smart" commands.
-                    LogUtils.w(LOG_TAG, "Needs provisioning sending mail");
+                    LogUtils.w(LOG_TAG, "ITEM_NOT_FOUND smart sending message: %d", mMessage.mId);
                     return RESULT_ITEM_NOT_FOUND;
                 }
-
                 // TODO: Set syncServerId = SEND_FAILED in DB?
-                LogUtils.d(LOG_TAG, "General failure sending mail");
+                LogUtils.w(LOG_TAG, "General failure sending message: %d", mMessage.mId);
                 return RESULT_SEND_FAILED;
             } catch (final EmptyStreamException e) {
                 // This is actually fine; an empty stream means SendMail succeeded
-                LogUtils.d(LOG_TAG, "empty response sending mail");
+                LogUtils.d(LOG_TAG, "Empty response sending message: %d", mMessage.mId);
                 // Don't return here, fall through so that we'll delete the sent message.
             } catch (final IOException e) {
                 // Parsing failed in some other way.
-                LogUtils.w(LOG_TAG, "IOException sending mail");
+                LogUtils.e(LOG_TAG, e, "IOException sending message: %d", mMessage.mId);
                 return RESULT_IO_ERROR;
             }
         } else {
             // FLAG: Do we need to parse results for earlier versions?
         }
+        LogUtils.d(LOG_TAG, "Returning RESULT_OK after sending: %d", mMessage.mId);
         mContext.getContentResolver().delete(
             ContentUris.withAppendedId(Message.CONTENT_URI, mMessage.mId), null, null);
         return RESULT_OK;
@@ -349,8 +348,10 @@
             if (reply && forward) {
                 return null;
             }
-            // If we don't support SmartForward and it's a forward, then don't proceed.
-            if (forward && (account.mFlags & Account.FLAGS_SUPPORTS_SMART_FORWARD) == 0) {
+            // If we don't support SmartForward, then don't proceed.
+            // TODO: For now, we assume that if we do not support Smart Forward, we also don't
+            // support Smart Reply. At some point, perhaps these should be separate flags.
+            if ((account.mFlags & Account.FLAGS_SUPPORTS_SMART_FORWARD) == 0) {
                 return null;
             }
 
@@ -362,6 +363,7 @@
             // First, we need to get the id of the reply/forward message, 0 is the default value
             // so we are looking for something greater than 0.
             final long refId = Body.restoreBodySourceKey(context, message.mId);
+            LogUtils.d(LOG_TAG, "getSmartSendInfo - found refId: %d for %d", refId, message.mId);
             if (refId > 0) {
                 // Then, we need the serverId and mailboxKey of the message
                 final String[] colsMailboxKey = Utility.getRowColumns(context, Message.CONTENT_URI,
@@ -405,6 +407,10 @@
                     requiredAtts = null;
                 }
                 return new SmartSendInfo(itemId, collectionId, reply, requiredAtts);
+            } else {
+                LogUtils.w(LOG_TAG,
+                        "getSmartSendInfo - Skipping SmartSend, could not find IDs for: %d",
+                        message.mId);
             }
             return null;
         }
diff --git a/src/com/android/exchange/eas/EasPing.java b/src/com/android/exchange/eas/EasPing.java
index 8b082e3..d3263d3 100644
--- a/src/com/android/exchange/eas/EasPing.java
+++ b/src/com/android/exchange/eas/EasPing.java
@@ -368,7 +368,8 @@
                         case Mailbox.TYPE_CONTACTS:
                             contactsMailboxIds.add(mailboxId);
                         default:
-                            LogUtils.e(LOG_TAG, "unexpected collectiontype %d in EasPing", contentType);
+                            LogUtils.e(LOG_TAG, "unexpected collectiontype %d in EasPing",
+                                    contentType);
                     }
                 }
             } finally {
diff --git a/src/com/android/exchange/eas/EasSearch.java b/src/com/android/exchange/eas/EasSearch.java
index 34869bb..64100f4 100644
--- a/src/com/android/exchange/eas/EasSearch.java
+++ b/src/com/android/exchange/eas/EasSearch.java
@@ -5,6 +5,7 @@
 import android.content.SyncResult;
 
 import com.android.emailcommon.Logging;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.Mailbox;
 import com.android.emailcommon.service.SearchParams;
 import com.android.exchange.CommandStatusException;
@@ -39,10 +40,11 @@
     final SearchParams mSearchParams;
     final long mDestMailboxId;
     int mTotalResults;
+    Mailbox mSearchMailbox;
 
-    public EasSearch(final Context context, final long accountId, final SearchParams searchParams,
+    public EasSearch(final Context context, final Account account, final SearchParams searchParams,
         final long destMailboxId) {
-        super(context, accountId);
+        super(context, account);
         mSearchParams = searchParams;
         mDestMailboxId = destMailboxId;
     }
@@ -72,17 +74,17 @@
         }
 
         int res = 0;
-        final Mailbox searchMailbox = Mailbox.restoreMailboxWithId(mContext, mDestMailboxId);
+        mSearchMailbox = Mailbox.restoreMailboxWithId(mContext, mDestMailboxId);
         // Sanity check; account might have been deleted?
-        if (searchMailbox == null) {
+        if (mSearchMailbox == null) {
             LogUtils.i(LOG_TAG, "search mailbox ceased to exist");
             return null;
         }
-        final ContentValues statusValues = new ContentValues(2);
         try {
             // Set the status of this mailbox to indicate query
+            final ContentValues statusValues = new ContentValues(1);
             statusValues.put(Mailbox.UI_SYNC_STATUS, UIProvider.SyncStatus.LIVE_QUERY);
-            searchMailbox.update(mContext, statusValues);
+            mSearchMailbox.update(mContext, statusValues);
 
             final Serializer s = new Serializer();
             s.start(Tags.SEARCH_SEARCH).start(Tags.SEARCH_STORE);
@@ -133,12 +135,6 @@
             return makeEntity(s);
         } catch (IOException e) {
             LogUtils.d(LOG_TAG, e, "Search exception");
-        } finally {
-            // TODO: Handle error states
-            // Set the status of this mailbox to indicate query over
-            statusValues.put(Mailbox.SYNC_TIME, System.currentTimeMillis());
-            statusValues.put(Mailbox.UI_SYNC_STATUS, UIProvider.SyncStatus.NO_SYNC);
-            searchMailbox.update(mContext, statusValues);
         }
         LogUtils.i(LOG_TAG, "end returning null");
         return null;
@@ -162,4 +158,14 @@
         }
         return RESULT_OK;
     }
+
+    protected void onRequestComplete() {
+        if (mSearchMailbox != null) {
+            // TODO: Handle error states
+            final ContentValues statusValues = new ContentValues(2);
+            statusValues.put(Mailbox.UI_SYNC_STATUS, UIProvider.SyncStatus.NO_SYNC);
+            statusValues.put(Mailbox.SYNC_TIME, System.currentTimeMillis());
+            mSearchMailbox.update(mContext, statusValues);
+        }
+    }
 }
diff --git a/src/com/android/exchange/eas/EasSearchGal.java b/src/com/android/exchange/eas/EasSearchGal.java
index 0dbadd2..ea3c27c 100644
--- a/src/com/android/exchange/eas/EasSearchGal.java
+++ b/src/com/android/exchange/eas/EasSearchGal.java
@@ -2,6 +2,7 @@
 
 import android.content.Context;
 
+import com.android.emailcommon.provider.Account;
 import com.android.exchange.CommandStatusException;
 import com.android.exchange.EasResponse;
 import com.android.exchange.adapter.GalParser;
@@ -25,9 +26,9 @@
     final private int mLimit;
     private GalResult mResult;
 
-    public EasSearchGal(Context context, final long accountId, final String filter,
+    public EasSearchGal(Context context, final Account account, final String filter,
                         final int limit) {
-        super(context, accountId);
+        super(context, account);
         mFilter = filter;
         mLimit = limit;
     }
diff --git a/src/com/android/exchange/eas/EasSendMeetingResponse.java b/src/com/android/exchange/eas/EasSendMeetingResponse.java
index 7897bb5..ba1411f 100644
--- a/src/com/android/exchange/eas/EasSendMeetingResponse.java
+++ b/src/com/android/exchange/eas/EasSendMeetingResponse.java
@@ -52,9 +52,9 @@
     private final int mMeetingResponse;
     private int mEasResponse;
 
-    public EasSendMeetingResponse(final Context context, final long accountId,
+    public EasSendMeetingResponse(final Context context, final Account account,
                                   final EmailContent.Message message, final int meetingResponse) {
-        super(context, accountId);
+        super(context, account);
         mMessage = message;
         mMeetingResponse = meetingResponse;
     }
diff --git a/src/com/android/exchange/eas/EasSyncBase.java b/src/com/android/exchange/eas/EasSyncBase.java
index e892518..8e77e26 100644
--- a/src/com/android/exchange/eas/EasSyncBase.java
+++ b/src/com/android/exchange/eas/EasSyncBase.java
@@ -65,18 +65,15 @@
     }
 
     @Override
-    public boolean init(final boolean allowReload) {
-        final boolean result = super.init(allowReload);
-        if (result) {
-            mCollectionTypeHandler = getCollectionTypeHandler(mMailbox.mType);
-            if (mCollectionTypeHandler == null) {
-                return false;
-            }
-            // Set up traffic stats bookkeeping.
-            final int trafficFlags = TrafficFlags.getSyncFlags(mContext, mAccount);
-            TrafficStats.setThreadStatsTag(trafficFlags | mCollectionTypeHandler.getTrafficFlag());
+    public boolean init() {
+        mCollectionTypeHandler = getCollectionTypeHandler(mMailbox.mType);
+        if (mCollectionTypeHandler == null) {
+            return false;
         }
-        return result;
+        // Set up traffic stats bookkeeping.
+        final int trafficFlags = TrafficFlags.getSyncFlags(mContext, mAccount);
+        TrafficStats.setThreadStatsTag(trafficFlags | mCollectionTypeHandler.getTrafficFlag());
+        return true;
     }
 
     @Override
diff --git a/src/com/android/exchange/provider/ExchangeDirectoryProvider.java b/src/com/android/exchange/provider/ExchangeDirectoryProvider.java
index 6d9ea6e..280ef0c 100644
--- a/src/com/android/exchange/provider/ExchangeDirectoryProvider.java
+++ b/src/com/android/exchange/provider/ExchangeDirectoryProvider.java
@@ -116,13 +116,29 @@
         }
     }
 
+    static class GalDisplayNameFields {
+        private final String displayName;
+        private final String displayNameSource;
+        private final String alternateDisplayName;
+
+        GalDisplayNameFields(PackedString ps) {
+            displayName = ps.get(GalData.DISPLAY_NAME);
+            displayNameSource = ps.get(GalData.DISPLAY_NAME_SOURCE);
+            alternateDisplayName = ps.get(GalData.DISPLAY_NAME_ALTERNATIVE);
+        }
+
+        String getDisplayName() { return displayName; }
+        String getDisplayNameSource() { return displayNameSource; }
+        String getAlternateDisplayName() { return alternateDisplayName; }
+    }
+
     static class GalContactRow {
         private final GalProjection mProjection;
         private Object[] row;
         static long dataId = 1;
 
         GalContactRow(GalProjection projection, long contactId, String accountName,
-                String displayName) {
+                GalDisplayNameFields displayNameFields) {
             this.mProjection = projection;
             row = new Object[projection.size];
 
@@ -132,10 +148,9 @@
             put(Contacts.Entity.RAW_CONTACT_ID, contactId);
             put(Contacts.Entity.DATA_ID, dataId++);
 
-            put(Contacts.DISPLAY_NAME, displayName);
-
-            // TODO alternative display name
-            put(Contacts.DISPLAY_NAME_ALTERNATIVE, displayName);
+            put(Contacts.DISPLAY_NAME, displayNameFields.getDisplayName());
+            put(Contacts.DISPLAY_NAME_SOURCE, displayNameFields.getDisplayNameSource());
+            put(Contacts.DISPLAY_NAME_ALTERNATIVE, displayNameFields.getAlternateDisplayName());
 
             put(RawContacts.ACCOUNT_TYPE, Eas.EXCHANGE_ACCOUNT_MANAGER_TYPE);
             put(RawContacts.ACCOUNT_NAME, accountName);
@@ -157,10 +172,11 @@
         }
 
         static void addEmailAddress(MatrixCursor cursor, GalProjection galProjection,
-                long contactId, String accountName, String displayName, String address) {
+                long contactId, String accountName, GalDisplayNameFields displayNameFields,
+                String address) {
             if (!TextUtils.isEmpty(address)) {
                 final GalContactRow r = new GalContactRow(
-                        galProjection, contactId, accountName, displayName);
+                        galProjection, contactId, accountName, displayNameFields);
                 r.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
                 r.put(Email.TYPE, Email.TYPE_WORK);
                 r.put(Email.ADDRESS, address);
@@ -169,10 +185,10 @@
         }
 
         static void addPhoneRow(MatrixCursor cursor, GalProjection projection, long contactId,
-                String accountName, String displayName, int type, String number) {
+                String accountName, GalDisplayNameFields displayNameFields, int type, String number) {
             if (!TextUtils.isEmpty(number)) {
                 final GalContactRow r = new GalContactRow(
-                        projection, contactId, accountName, displayName);
+                        projection, contactId, accountName, displayNameFields);
                 r.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
                 r.put(Phone.TYPE, type);
                 r.put(Phone.NUMBER, number);
@@ -181,14 +197,14 @@
         }
 
         public static void addNameRow(MatrixCursor cursor, GalProjection galProjection,
-                long contactId, String accountName, String displayName,
+                long contactId, String accountName, GalDisplayNameFields displayNameFields,
                 String firstName, String lastName) {
             final GalContactRow r = new GalContactRow(
-                    galProjection, contactId, accountName, displayName);
+                    galProjection, contactId, accountName, displayNameFields);
             r.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
             r.put(StructuredName.GIVEN_NAME, firstName);
             r.put(StructuredName.FAMILY_NAME, lastName);
-            r.put(StructuredName.DISPLAY_NAME, displayName);
+            r.put(StructuredName.DISPLAY_NAME, displayNameFields.getDisplayName());
             cursor.addRow(r.getRow());
         }
     }
@@ -246,7 +262,7 @@
                                 if (bundle != null && !bundle.getBoolean(
                                         Configuration.EXCHANGE_CONFIGURATION_USE_ALTERNATE_STRINGS,
                                         true)) {
-                                    exchangeName = R.string.exchange_name;
+                                    exchangeName = R.string.exchange_eas_name;
                                 }
                                 row[i] = exchangeName;
                             } else if (column.equals(Directory.DISPLAY_NAME)) {
@@ -354,17 +370,17 @@
                         ? Long.parseLong(pathSegments.get(3))
                         : DEFAULT_CONTACT_ID;
                 ps = new PackedString(lookupKey);
-                final String displayName = ps.get(GalData.DISPLAY_NAME);
-                GalContactRow.addEmailAddress(cursor, galProjection, contactId,
-                        accountName, displayName, ps.get(GalData.EMAIL_ADDRESS));
-                GalContactRow.addPhoneRow(cursor, galProjection, contactId,
-                        displayName, displayName, Phone.TYPE_HOME, ps.get(GalData.HOME_PHONE));
-                GalContactRow.addPhoneRow(cursor, galProjection, contactId,
-                        displayName, displayName, Phone.TYPE_WORK, ps.get(GalData.WORK_PHONE));
-                GalContactRow.addPhoneRow(cursor, galProjection, contactId,
-                        displayName, displayName, Phone.TYPE_MOBILE, ps.get(GalData.MOBILE_PHONE));
-                GalContactRow.addNameRow(cursor, galProjection, contactId, displayName,
-                        ps.get(GalData.FIRST_NAME), ps.get(GalData.LAST_NAME), displayName);
+                final GalDisplayNameFields displayNameFields = new GalDisplayNameFields(ps);
+                GalContactRow.addEmailAddress(cursor, galProjection, contactId, accountName, displayNameFields,
+                        ps.get(GalData.EMAIL_ADDRESS));
+                GalContactRow.addPhoneRow(cursor, galProjection, contactId, accountName, displayNameFields,
+                        Phone.TYPE_HOME, ps.get(GalData.HOME_PHONE));
+                GalContactRow.addPhoneRow(cursor, galProjection, contactId, accountName, displayNameFields,
+                        Phone.TYPE_WORK, ps.get(GalData.WORK_PHONE));
+                GalContactRow.addPhoneRow(cursor, galProjection, contactId, accountName, displayNameFields,
+                        Phone.TYPE_MOBILE, ps.get(GalData.MOBILE_PHONE));
+                GalContactRow.addNameRow(cursor, galProjection, contactId, accountName, displayNameFields,
+                        ps.get(GalData.FIRST_NAME), ps.get(GalData.LAST_NAME));
                 return cursor;
             }
         }
@@ -462,6 +478,7 @@
                 continue;
             }
             galDataRow.put(GalData.DISPLAY_NAME, displayName.first);
+            galDataRow.put(GalData.DISPLAY_NAME_SOURCE, String.valueOf(displayName.second));
 
             final String alternateDisplayName = getAlternateDisplayName(
                     galDataRow, displayName.first);
@@ -475,6 +492,7 @@
                 row[displayNameSourceIndex] = displayName.second;
             }
 
+            galDataRow.put(GalData.DISPLAY_NAME_ALTERNATIVE, alternateDisplayName);
             if (alternateDisplayNameIndex != -1) {
                 row[alternateDisplayNameIndex] = alternateDisplayName;
             }
diff --git a/src/com/android/exchange/provider/GalResult.java b/src/com/android/exchange/provider/GalResult.java
index a431237..45273a6 100644
--- a/src/com/android/exchange/provider/GalResult.java
+++ b/src/com/android/exchange/provider/GalResult.java
@@ -48,6 +48,8 @@
         // PackedString constants for GalData
         public static final String ID = "_id";
         public static final String DISPLAY_NAME = "displayName";
+        public static final String DISPLAY_NAME_SOURCE = "display_name_source";
+        public static final String DISPLAY_NAME_ALTERNATIVE = "display_name_alt";
         public static final String EMAIL_ADDRESS = "emailAddress";
         public static final String WORK_PHONE = "workPhone";
         public static final String HOME_PHONE = "homePhone";
diff --git a/src/com/android/exchange/service/EasService.java b/src/com/android/exchange/service/EasService.java
index 8c29ba1..cf0a983 100644
--- a/src/com/android/exchange/service/EasService.java
+++ b/src/com/android/exchange/service/EasService.java
@@ -20,6 +20,7 @@
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
+import android.content.SharedPreferences;
 import android.database.Cursor;
 import android.os.AsyncTask;
 import android.os.Bundle;
@@ -47,6 +48,7 @@
 import com.android.exchange.eas.EasFullSyncOperation;
 import com.android.exchange.eas.EasLoadAttachment;
 import com.android.exchange.eas.EasOperation;
+import com.android.exchange.eas.EasPing;
 import com.android.exchange.eas.EasSearch;
 import com.android.exchange.eas.EasSearchGal;
 import com.android.exchange.eas.EasSendMeetingResponse;
@@ -54,6 +56,7 @@
 import com.android.exchange.eas.EasSyncContacts;
 import com.android.exchange.provider.GalResult;
 import com.android.mail.utils.LogUtils;
+import com.google.common.annotations.VisibleForTesting;
 
 import java.util.HashSet;
 import java.util.Set;
@@ -67,6 +70,13 @@
 
     private static final String TAG = Eas.LOG_TAG;
 
+    private static final String PREFERENCES_FILE = "ExchangePrefs";
+    private static final String PROTOCOL_LOGGING_PREF = "ProtocolLogging";
+    private static final String FILE_LOGGING_PREF = "FileLogging";
+
+    public static final String EXTRA_START_PING = "START_PING";
+    public static final String EXTRA_PING_ACCOUNT = "PING_ACCOUNT";
+
     /**
      * The content authorities that can be synced for EAS accounts. Initialization must wait until
      * after we have a chance to call {@link EmailContent#init} (and, for future content types,
@@ -77,6 +87,9 @@
     /** Bookkeeping for ping tasks & sync threads management. */
     private final PingSyncSynchronizer mSynchronizer;
 
+    private static boolean sProtocolLogging;
+    private static boolean sFileLogging;
+
     /**
      * Implementation of the IEmailService interface.
      * For the most part these calls should consist of creating the correct {@link EasOperation}
@@ -87,15 +100,22 @@
         public void loadAttachment(final IEmailServiceCallback callback, final long accountId,
                 final long attachmentId, final boolean background) {
             LogUtils.d(TAG, "IEmailService.loadAttachment: %d", attachmentId);
-            final EasLoadAttachment operation = new EasLoadAttachment(EasService.this, accountId,
-                    attachmentId, callback);
-            doOperation(operation, "IEmailService.loadAttachment");
+            final Account account = loadAccount(EasService.this, accountId);
+            if (account != null) {
+                final EasLoadAttachment operation = new EasLoadAttachment(EasService.this, account,
+                        attachmentId, callback);
+                doOperation(operation, "IEmailService.loadAttachment");
+            }
         }
 
         @Override
         public void updateFolderList(final long accountId) {
-            final EasFolderSync operation = new EasFolderSync(EasService.this, accountId);
-            doOperation(operation, "IEmailService.updateFolderList");
+            LogUtils.d(TAG, "IEmailService.updateFolderList: %d", accountId);
+            final Account account = loadAccount(EasService.this, accountId);
+            if (account != null) {
+                final EasFolderSync operation = new EasFolderSync(EasService.this, account);
+                doOperation(operation, "IEmailService.updateFolderList");
+            }
         }
 
         public void sendMail(final long accountId) {
@@ -104,15 +124,27 @@
         }
 
         public int sync(final long accountId, Bundle syncExtras) {
-            EasFullSyncOperation op = new EasFullSyncOperation(EasService.this, accountId, syncExtras);
-            return convertToEmailServiceStatus(doOperation(op, "IEmailService.sync"));
+            LogUtils.d(TAG, "IEmailService.updateFolderList: %d", accountId);
+            final Account account = loadAccount(EasService.this, accountId);
+            if (account != null) {
+                EasFullSyncOperation op = new EasFullSyncOperation(EasService.this, account,
+                        syncExtras);
+                final int result = doOperation(op, "IEmailService.sync");
+                if (result == EasFullSyncOperation.RESULT_SECURITY_HOLD) {
+                    LogUtils.i(LogUtils.TAG, "Security Hold trying to sync");
+                    return EmailServiceStatus.INTERNAL_ERROR;
+                }
+                return convertToEmailServiceStatus(result);
+            } else {
+                return EmailServiceStatus.INTERNAL_ERROR;
+            }
         }
 
         @Override
         public void pushModify(final long accountId) {
             LogUtils.d(TAG, "IEmailService.pushModify: %d", accountId);
             final Account account = Account.restoreAccountWithId(EasService.this, accountId);
-            if (pingNeededForAccount(account)) {
+            if (pingNeededForAccount(EasService.this, account)) {
                 mSynchronizer.pushModify(account);
             } else {
                 mSynchronizer.pushStop(accountId);
@@ -121,6 +153,7 @@
 
         @Override
         public Bundle validate(final HostAuthCompat hostAuthCom) {
+            LogUtils.d(TAG, "IEmailService.validate");
             final HostAuth hostAuth = hostAuthCom.toHostAuth();
             final EasFolderSync operation = new EasFolderSync(EasService.this, hostAuth);
             doOperation(operation, "IEmailService.validate");
@@ -130,24 +163,33 @@
         @Override
         public int searchMessages(final long accountId, final SearchParams searchParams,
                 final long destMailboxId) {
-            final EasSearch operation = new EasSearch(EasService.this, accountId, searchParams,
-                    destMailboxId);
-            doOperation(operation, "IEmailService.searchMessages");
-            return operation.getTotalResults();
+            LogUtils.d(TAG, "IEmailService.searchMessages");
+            final Account account = loadAccount(EasService.this, accountId);
+            if (account != null) {
+                final EasSearch operation = new EasSearch(EasService.this, account, searchParams,
+                        destMailboxId);
+                doOperation(operation, "IEmailService.searchMessages");
+                return operation.getTotalResults();
+            } else {
+                return 0;
+            }
         }
 
         @Override
         public void sendMeetingResponse(final long messageId, final int response) {
             EmailContent.Message msg = EmailContent.Message.restoreMessageWithId(EasService.this,
                     messageId);
+            LogUtils.d(TAG, "IEmailService.sendMeetingResponse");
             if (msg == null) {
                 LogUtils.e(TAG, "Could not load message %d in sendMeetingResponse", messageId);
                 return;
             }
-
-            final EasSendMeetingResponse operation = new EasSendMeetingResponse(EasService.this,
-                    msg.mAccountKey, msg, response);
-            doOperation(operation, "IEmailService.sendMeetingResponse");
+            final Account account = loadAccount(EasService.this, msg.mAccountKey);
+            if (account != null) {
+                final EasSendMeetingResponse operation = new EasSendMeetingResponse(EasService.this,
+                        account, msg, response);
+                doOperation(operation, "IEmailService.sendMeetingResponse");
+            }
         }
 
         @Override
@@ -206,7 +248,13 @@
 
         @Override
         public void setLogging(final int flags) {
-            LogUtils.d(TAG, "IEmailService.setLogging");
+            sProtocolLogging = ((flags & EmailServiceProxy.DEBUG_EXCHANGE_BIT) != 0);
+            sFileLogging = ((flags & EmailServiceProxy.DEBUG_FILE_BIT) != 0);
+            SharedPreferences sharedPrefs = EasService.this.getSharedPreferences(PREFERENCES_FILE,
+                    Context.MODE_PRIVATE);
+            sharedPrefs.edit().putBoolean(PROTOCOL_LOGGING_PREF, sProtocolLogging).apply();
+            sharedPrefs.edit().putBoolean(FILE_LOGGING_PREF, sFileLogging).apply();
+            LogUtils.d(TAG, "IEmailService.setLogging %d, storing to shared pref", flags);
         }
 
         @Override
@@ -225,6 +273,14 @@
         }
     };
 
+    private static Account loadAccount(final Context context, final long accountId) {
+        Account account = Account.restoreAccountWithId(context, accountId);
+        if (account == null) {
+            LogUtils.e(TAG, "Could not load account %d", accountId);
+        }
+        return account;
+    }
+
     /**
      * Content selection string for getting all accounts that are configured for push.
      * TODO: Add protocol check so that we don't get e.g. IMAP accounts here.
@@ -240,15 +296,16 @@
 
         @Override
         protected Void doInBackground(Void... params) {
+            LogUtils.i(TAG, "RestartPingTask");
             final Cursor c = EasService.this.getContentResolver().query(Account.CONTENT_URI,
                     Account.CONTENT_PROJECTION, PUSH_ACCOUNTS_SELECTION, null, null);
             if (c != null) {
                 try {
                     while (c.moveToNext()) {
                         final Account account = new Account();
-                        LogUtils.d(TAG, "RestartPingsTask starting ping for %s", account);
                         account.restore(c);
-                        if (EasService.this.pingNeededForAccount(account)) {
+                        LogUtils.i(TAG, "RestartPingsTask starting ping for %d", account.getId());
+                        if (pingNeededForAccount(EasService.this, account)) {
                             mHasRestartedPing = true;
                             EasService.this.mSynchronizer.pushModify(account);
                         }
@@ -263,7 +320,7 @@
         @Override
         protected void onPostExecute(Void result) {
             if (!mHasRestartedPing) {
-                LogUtils.d(TAG, "RestartPingsTask did not start any pings.");
+                LogUtils.i(TAG, "RestartPingsTask did not start any pings.");
                 EasService.this.mSynchronizer.stopServiceIfIdle();
             }
         }
@@ -276,7 +333,7 @@
 
     @Override
     public void onCreate() {
-        LogUtils.d(TAG, "EasService.onCreate");
+        LogUtils.i(TAG, "EasService.onCreate");
         super.onCreate();
         TempDirectory.setTempDirectory(this);
         EmailContent.init(this);
@@ -285,7 +342,10 @@
                 CalendarContract.AUTHORITY,
                 ContactsContract.AUTHORITY
         };
-
+        SharedPreferences sharedPrefs = EasService.this.getSharedPreferences(PREFERENCES_FILE,
+                Context.MODE_PRIVATE);
+        sProtocolLogging = sharedPrefs.getBoolean(PROTOCOL_LOGGING_PREF, false);
+        sFileLogging = sharedPrefs.getBoolean(FILE_LOGGING_PREF, false);
         // Restart push for all accounts that need it. Because this requires DB loads, we do it in
         // an AsyncTask, and we startService to ensure that we stick around long enough for the
         // task to complete. The task will stop the service if necessary after it's done.
@@ -295,6 +355,7 @@
 
     @Override
     public void onDestroy() {
+        LogUtils.i(TAG, "onDestroy");
         mSynchronizer.stopAllPings();
     }
 
@@ -315,6 +376,13 @@
                 // if accounts disappear out from under us.
                 LogUtils.d(TAG, "Forced shutdown, killing process");
                 System.exit(-1);
+            } else if (intent.getBooleanExtra(EXTRA_START_PING, false)) {
+                LogUtils.d(LogUtils.TAG, "Restarting ping");
+                final Account account = intent.getParcelableExtra(EXTRA_PING_ACCOUNT);
+                final android.accounts.Account amAccount =
+                                new android.accounts.Account(account.mEmailAddress,
+                                    Eas.EXCHANGE_ACCOUNT_MANAGER_TYPE);
+                EasPing.requestPing(amAccount);
             }
         }
         return START_STICKY;
@@ -334,7 +402,7 @@
             LogUtils.d(TAG, "Operation result %d", result);
             return result;
         } finally {
-            mSynchronizer.syncEnd(result >= EasOperation.RESULT_MIN_OK_RESULT,
+            mSynchronizer.syncEnd(result < EasOperation.RESULT_MIN_OK_RESULT,
                     operation.getAccount());
         }
     }
@@ -343,9 +411,10 @@
      * Determine whether this account is configured with folders that are ready for push
      * notifications.
      * @param account The {@link Account} that we're interested in.
+     * @param context The context
      * @return Whether this account needs to ping.
      */
-    public boolean pingNeededForAccount(final Account account) {
+    public static boolean pingNeededForAccount(final Context context, final Account account) {
         // Check account existence.
         if (account == null || account.mId == Account.NO_ACCOUNT) {
             LogUtils.d(TAG, "Do not ping: Account not found or not valid");
@@ -379,12 +448,13 @@
         final Set<String> authsToSync = getAuthoritiesToSync(amAccount, AUTHORITIES_TO_SYNC);
         // If we have at least one sync-enabled content type, check for syncing mailboxes.
         if (!authsToSync.isEmpty()) {
-            final Cursor c = Mailbox.getMailboxesForPush(getContentResolver(), account.mId);
+            final Cursor c = Mailbox.getMailboxesForPush(context.getContentResolver(), account.mId);
             if (c != null) {
                 try {
                     while (c.moveToNext()) {
                         final int mailboxType = c.getInt(Mailbox.CONTENT_TYPE_COLUMN);
                         if (authsToSync.contains(Mailbox.getAuthority(mailboxType))) {
+                            LogUtils.d(TAG, "should ping for account %d", account.mId);
                             return true;
                         }
                     }
@@ -399,18 +469,21 @@
 
     static public GalResult searchGal(final Context context, final long accountId,
                                       final String filter, final int limit) {
-        final EasSearchGal operation = new EasSearchGal(context, accountId, filter, limit);
-        // We don't use doOperation() here for two reasons:
-        // 1. This is a static function, doOperation is not, and we don't have an instance of
-        // EasService.
-        // 2. All doOperation() does besides this is stop the ping and then restart it. This is
-        // required during syncs, but not for GalSearches.
-        final int result = operation.performOperation();
-        if (result == EasSearchGal.RESULT_OK) {
-            return operation.getResult();
-        } else {
-            return null;
+        GalResult galResult = null;
+        final Account account = loadAccount(context, accountId);
+        if (account != null) {
+            final EasSearchGal operation = new EasSearchGal(context, account, filter, limit);
+            // We don't use doOperation() here for two reasons:
+            // 1. This is a static function, doOperation is not, and we don't have an instance of
+            // EasService.
+            // 2. All doOperation() does besides this is stop the ping and then restart it. This is
+            // required during syncs, but not for GalSearches.
+            final int result = operation.performOperation();
+            if (result == EasSearchGal.RESULT_OK) {
+                galResult = operation.getResult();
+            }
         }
+        return galResult;
     }
 
     /**
@@ -486,4 +559,23 @@
         }
         return authsToSync;
     }
+
+    @VisibleForTesting
+    public static void setProtocolLogging(final boolean val) {
+        sProtocolLogging = val;
+    }
+
+    @VisibleForTesting
+    public static void setFileLogging(final boolean val) {
+        sFileLogging = val;
+    }
+
+    public static boolean getProtocolLogging() {
+        return sProtocolLogging;
+    }
+
+    public static boolean getFileLogging() {
+        return sFileLogging;
+    }
+
 }
diff --git a/src/com/android/exchange/service/EmailSyncAdapterService.java b/src/com/android/exchange/service/EmailSyncAdapterService.java
index c5bd106..587a832 100644
--- a/src/com/android/exchange/service/EmailSyncAdapterService.java
+++ b/src/com/android/exchange/service/EmailSyncAdapterService.java
@@ -38,25 +38,6 @@
 
     private static final String TAG = Eas.LOG_TAG;
 
-    // The call to ServiceConnection.onServiceConnected is asynchronous to bindService. It's
-    // possible for that to be delayed if, in which case, a call to onPerformSync
-    // could occur before we have a connection to the service.
-    // In onPerformSync, if we don't yet have our EasService, we will wait for up to 10
-    // seconds for it to appear. If it takes longer than that, we will fail the sync.
-    private static final long MAX_WAIT_FOR_SERVICE_MS = 10 * DateUtils.SECOND_IN_MILLIS;
-
-    // TODO: Do we need to use this?
-    private static final long SYNC_ERROR_BACKOFF_MILLIS = 5 * DateUtils.MINUTE_IN_MILLIS;
-
-    /**
-     * TODO: restore this functionality.
-     * The amount of time between periodic syncs intended to ensure that push hasn't died.
-     */
-    private static final long KICK_SYNC_INTERVAL =
-            DateUtils.HOUR_IN_MILLIS / DateUtils.SECOND_IN_MILLIS;
-    /** Controls whether we do a periodic "kick" to restart the ping. */
-    private static final boolean SCHEDULE_KICK = true;
-
     private static final Object sSyncAdapterLock = new Object();
     private static AbstractThreadedSyncAdapter sSyncAdapter = null;
 
diff --git a/src/com/android/exchange/service/PingSyncSynchronizer.java b/src/com/android/exchange/service/PingSyncSynchronizer.java
index 11d57e6..f722e86 100644
--- a/src/com/android/exchange/service/PingSyncSynchronizer.java
+++ b/src/com/android/exchange/service/PingSyncSynchronizer.java
@@ -83,29 +83,32 @@
     private static final String TAG = Eas.LOG_TAG;
 
     private static final long SYNC_ERROR_BACKOFF_MILLIS =  DateUtils.MINUTE_IN_MILLIS;
-    private static final String EXTRA_START_PING = "START_PING";
-    private static final String EXTRA_PING_ACCOUNT = "PING_ACCOUNT";
 
     // Enable this to make pings get automatically renewed every hour. This
     // should not be needed, but if there is a software error that results in
     // the ping being lost, this is a fallback to make sure that messages are
     // not delayed more than an hour.
-    private static final boolean SCHEDULE_KICK = false;
+    private static final boolean SCHEDULE_KICK = true;
     private static final long KICK_SYNC_INTERVAL_SECONDS =
             DateUtils.HOUR_IN_MILLIS / DateUtils.SECOND_IN_MILLIS;
 
     /**
      * This class handles bookkeeping for a single account.
      */
-    private static class AccountSyncState {
+    private class AccountSyncState {
         /** The currently running {@link PingTask}, or null if we aren't in the middle of a Ping. */
         private PingTask mPingTask;
 
+        // Values for mPushEnabled.
+        public static final int PUSH_UNKNOWN = 0;
+        public static final int PUSH_ENABLED = 1;
+        public static final int PUSH_DISABLED = 2;
+
         /**
          * Tracks whether this account wants to get push notifications, based on calls to
          * {@link #pushModify} and {@link #pushStop} (i.e. it tracks the last requested push state).
          */
-        private boolean mPushEnabled;
+        private int mPushEnabled;
 
         /**
          * The number of syncs that are blocked waiting for the current operation to complete.
@@ -117,11 +120,18 @@
         /** The condition on which to block syncs that need to wait. */
         private Condition mCondition;
 
-        public AccountSyncState(final Lock lock ) {
+        /** The accountId for this accountState, used for logging */
+        private long mAccountId;
+
+        public AccountSyncState(final Lock lock, final long accountId) {
             mPingTask = null;
-            mPushEnabled = false;
+            // We don't yet have enough information to know whether or not push should be enabled.
+            // We need to look up the account and it's folders, which won't yet exist for a newly
+            // created account.
+            mPushEnabled = PUSH_UNKNOWN;
             mSyncCount = 0;
             mCondition = lock.newCondition();
+            mAccountId = accountId;
         }
 
         /**
@@ -133,17 +143,18 @@
             ++mSyncCount;
             if (mPingTask != null) {
                 // Syncs are higher priority than Ping -- terminate the Ping.
-                LogUtils.d(TAG, "Sync is pre-empting a ping");
+                LogUtils.i(TAG, "PSS Sync is pre-empting a ping acct:%d", mAccountId);
                 mPingTask.stop();
             }
             if (mPingTask != null || mSyncCount > 1) {
                 // There’s something we need to wait for before we can proceed.
                 try {
-                    LogUtils.d(TAG, "Sync needs to wait: Ping: %s, Pending tasks: %d",
-                            mPingTask != null ? "yes" : "no", mSyncCount);
+                    LogUtils.i(TAG, "PSS Sync needs to wait: Ping: %s, Pending tasks: %d acct: %d",
+                            mPingTask != null ? "yes" : "no", mSyncCount, mAccountId);
                     mCondition.await();
                 } catch (final InterruptedException e) {
                     // TODO: Handle this properly. Not catching it might be the right answer.
+                    LogUtils.i(TAG, "PSS InterruptedException acct:%d", mAccountId);
                 }
             }
         }
@@ -157,18 +168,25 @@
                                final PingSyncSynchronizer synchronizer) {
             --mSyncCount;
             if (mSyncCount > 0) {
-                LogUtils.d(TAG, "Signalling a pending sync to proceed.");
+                LogUtils.i(TAG, "PSS Signalling a pending sync to proceed acct:%d.",
+                        account.getId());
                 mCondition.signal();
                 return false;
             } else {
-                if (mPushEnabled) {
+                if (mPushEnabled == PUSH_UNKNOWN) {
+                    LogUtils.i(TAG, "PSS push enabled is unknown");
+                    mPushEnabled = (EasService.pingNeededForAccount(mService, account) ?
+                            PUSH_ENABLED : PUSH_DISABLED);
+                }
+                if (mPushEnabled == PUSH_ENABLED) {
                     if (lastSyncHadError) {
-                        final android.accounts.Account amAccount =
-                                new android.accounts.Account(account.mEmailAddress,
-                                    Eas.EXCHANGE_ACCOUNT_MANAGER_TYPE);
-                        scheduleDelayedPing(synchronizer.getContext(), amAccount);
+                        LogUtils.i(TAG, "PSS last sync had error, scheduling delayed ping acct:%d.",
+                                account.getId());
+                        scheduleDelayedPing(synchronizer.getContext(), account);
                         return true;
                     } else {
+                        LogUtils.i(TAG, "PSS last sync succeeded, starting new ping acct:%d.",
+                                account.getId());
                         final android.accounts.Account amAccount =
                                 new android.accounts.Account(account.mEmailAddress,
                                         Eas.EXCHANGE_ACCOUNT_MANAGER_TYPE);
@@ -179,6 +197,7 @@
                     }
                 }
             }
+            LogUtils.i(TAG, "PSS no push enabled acct:%d.", account.getId());
             return true;
         }
 
@@ -189,10 +208,20 @@
         private boolean pingEnd(final android.accounts.Account amAccount) {
             mPingTask = null;
             if (mSyncCount > 0) {
+                LogUtils.i(TAG, "PSS pingEnd, syncs still in progress acct:%d.", mAccountId);
                 mCondition.signal();
                 return false;
             } else {
-                if (mPushEnabled) {
+                if (mPushEnabled == PUSH_ENABLED || mPushEnabled == PUSH_UNKNOWN) {
+                    if (mPushEnabled == PUSH_UNKNOWN) {
+                        // This should not occur. If mPushEnabled is unknown, we should not
+                        // have started a ping. Still, we'd rather err on the side of restarting
+                        // the ping, so log an error and request a new ping. Eventually we should
+                        // do a sync, and then we'll correctly initialize mPushEnabled in
+                        // syncEnd().
+                        LogUtils.e(TAG, "PSS pingEnd, with mPushEnabled UNKNOWN?");
+                    }
+                    LogUtils.i(TAG, "PSS pingEnd, starting new ping acct:%d.", mAccountId);
                     /**
                      * This situation only arises if we encountered some sort of error that
                      * stopped our ping but not due to a sync interruption. In this scenario
@@ -202,16 +231,18 @@
                     return false;
                 }
             }
+            LogUtils.i(TAG, "PSS pingEnd, no longer need ping acct:%d.", mAccountId);
             return true;
         }
 
         private void scheduleDelayedPing(final Context context,
-                                         final android.accounts.Account amAccount) {
-            LogUtils.d(TAG, "Scheduling a delayed ping.");
-            final Intent intent = new Intent(context, EmailSyncAdapterService.class);
+                                         final Account account) {
+            LogUtils.i(TAG, "PSS Scheduling a delayed ping acct:%d.", account.getId());
+            final Intent intent = new Intent(context, EasService.class);
             intent.setAction(Eas.EXCHANGE_SERVICE_INTENT_ACTION);
-            intent.putExtra(EXTRA_START_PING, true);
-            intent.putExtra(EXTRA_PING_ACCOUNT, amAccount);
+            intent.putExtra(EasService.EXTRA_START_PING, true);
+            intent.putExtra(EasService.EXTRA_PING_ACCOUNT, account);
+
             final PendingIntent pi = PendingIntent.getService(context, 0, intent,
                     PendingIntent.FLAG_ONE_SHOT);
             final AlarmManager am = (AlarmManager)context.getSystemService(
@@ -224,20 +255,25 @@
          * Modifies or starts a ping for this account if no syncs are running.
          */
         public void pushModify(final Account account, final PingSyncSynchronizer synchronizer) {
-            mPushEnabled = true;
+            LogUtils.i(LogUtils.TAG, "PSS pushModify acct:%d", account.getId());
+            mPushEnabled = PUSH_ENABLED;
             final android.accounts.Account amAccount =
                     new android.accounts.Account(account.mEmailAddress,
                             Eas.EXCHANGE_ACCOUNT_MANAGER_TYPE);
             if (mSyncCount == 0) {
                 if (mPingTask == null) {
                     // No ping, no running syncs -- start a new ping.
+                    LogUtils.i(LogUtils.TAG, "PSS starting ping task acct:%d", account.getId());
                     mPingTask = new PingTask(synchronizer.getContext(), account, amAccount,
                             synchronizer);
                     mPingTask.start();
                 } else {
                     // Ping is already running, so tell it to restart to pick up any new params.
+                    LogUtils.i(LogUtils.TAG, "PSS restarting ping task acct:%d", account.getId());
                     mPingTask.restart();
                 }
+            } else {
+                LogUtils.i(LogUtils.TAG, "PSS syncs still in progress acct:%d", account.getId());
             }
             if (SCHEDULE_KICK) {
                 final Bundle extras = new Bundle(1);
@@ -251,7 +287,8 @@
          * Stop the currently running ping.
          */
         public void pushStop() {
-            mPushEnabled = false;
+            LogUtils.i(LogUtils.TAG, "PSS pushStop acct:%d", mAccountId);
+            mPushEnabled = PUSH_DISABLED;
             if (mPingTask != null) {
                 mPingTask.stop();
             }
@@ -298,8 +335,8 @@
         assert mLock.isHeldByCurrentThread();
         AccountSyncState state = mAccountStateMap.get(accountId);
         if (state == null && createIfNeeded) {
-            LogUtils.d(TAG, "PSS adding account state for %d", accountId);
-            state = new AccountSyncState(mLock);
+            LogUtils.i(TAG, "PSS adding account state for acct:%d", accountId);
+            state = new AccountSyncState(mLock, accountId);
             mAccountStateMap.put(accountId, state);
             // TODO: Is this too late to startService?
             if (mAccountStateMap.size() == 1) {
@@ -317,7 +354,7 @@
      */
     private void removeAccount(final long accountId) {
         assert mLock.isHeldByCurrentThread();
-        LogUtils.d(TAG, "PSS removing account state for %d", accountId);
+        LogUtils.i(TAG, "PSS removing account state for acct:%d", accountId);
         mAccountStateMap.delete(accountId);
         if (mAccountStateMap.size() == 0) {
             LogUtils.i(TAG, "PSS removed last account; stopping service.");
@@ -328,7 +365,7 @@
     public void syncStart(final long accountId) {
         mLock.lock();
         try {
-            LogUtils.d(TAG, "PSS syncStart for account %d", accountId);
+            LogUtils.i(TAG, "PSS syncStart for account acct:%d", accountId);
             final AccountSyncState accountState = getAccountState(accountId, true);
             accountState.syncStart();
         } finally {
@@ -340,7 +377,7 @@
         mLock.lock();
         try {
             final long accountId = account.getId();
-            LogUtils.d(TAG, "PSS syncEnd for account %d", account.getId());
+            LogUtils.i(TAG, "PSS syncEnd for account acct:%d", account.getId());
             final AccountSyncState accountState = getAccountState(accountId, false);
             if (accountState == null) {
                 LogUtils.w(TAG, "PSS syncEnd for account %d but no state found", accountId);
@@ -357,7 +394,7 @@
     public void pingEnd(final long accountId, final android.accounts.Account amAccount) {
         mLock.lock();
         try {
-            LogUtils.d(TAG, "PSS pingEnd for account %d", accountId);
+            LogUtils.i(TAG, "PSS pingEnd for account %d", accountId);
             final AccountSyncState accountState = getAccountState(accountId, false);
             if (accountState == null) {
                 LogUtils.w(TAG, "PSS pingEnd for account %d but no state found", accountId);
@@ -375,7 +412,7 @@
         mLock.lock();
         try {
             final long accountId = account.getId();
-            LogUtils.d(TAG, "PSS pushModify for account %d", accountId);
+            LogUtils.i(TAG, "PSS pushModify acct:%d", accountId);
             final AccountSyncState accountState = getAccountState(accountId, true);
             accountState.pushModify(account, this);
         } finally {
@@ -386,7 +423,7 @@
     public void pushStop(final long accountId) {
         mLock.lock();
         try {
-            LogUtils.d(TAG, "PSS pushStop for account %d", accountId);
+            LogUtils.i(TAG, "PSS pushStop acct:%d", accountId);
             final AccountSyncState accountState = getAccountState(accountId, false);
             if (accountState != null) {
                 accountState.pushStop();
@@ -402,7 +439,7 @@
     public void stopServiceIfIdle() {
         mLock.lock();
         try {
-            LogUtils.d(TAG, "PSS stopIfIdle");
+            LogUtils.i(TAG, "PSS stopIfIdle");
             if (mAccountStateMap.size() == 0) {
                 LogUtils.i(TAG, "PSS has no active accounts; stopping service.");
                 mService.stopSelf();
diff --git a/src/com/android/exchange/utility/CalendarUtilities.java b/src/com/android/exchange/utility/CalendarUtilities.java
index 572a693..a37b102 100644
--- a/src/com/android/exchange/utility/CalendarUtilities.java
+++ b/src/com/android/exchange/utility/CalendarUtilities.java
@@ -1444,7 +1444,11 @@
         cv.put(Calendars.CALENDAR_TIME_ZONE, Time.getCurrentTimezone());
         cv.put(Calendars.CALENDAR_ACCESS_LEVEL, Calendars.CAL_ACCESS_OWNER);
         cv.put(Calendars.OWNER_ACCOUNT, account.mEmailAddress);
-
+        if (TextUtils.equals(mailbox.mDisplayName, account.mEmailAddress)) {
+            cv.put(Calendars.IS_PRIMARY, 1);
+        } else {
+            cv.put(Calendars.IS_PRIMARY, 0);
+        }
         Uri uri = contentResolver.insert(asSyncAdapter(Calendars.CONTENT_URI, account.mEmailAddress,
                         Eas.EXCHANGE_ACCOUNT_MANAGER_TYPE), cv);
         // We save the id of the calendar into mSyncStatus
diff --git a/tests/src/com/android/exchange/adapter/ParserTest.java b/tests/src/com/android/exchange/adapter/ParserTest.java
index 8b36433..d39e406 100644
--- a/tests/src/com/android/exchange/adapter/ParserTest.java
+++ b/tests/src/com/android/exchange/adapter/ParserTest.java
@@ -20,6 +20,8 @@
 import android.test.suitebuilder.annotation.SmallTest;
 import android.text.TextUtils;
 
+import com.android.exchange.service.EasService;
+
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.io.IOException;
@@ -34,7 +36,7 @@
 
         public TestParser(InputStream in, Object[] expectedData) throws IOException{
             super(in);
-            setDebug(true);
+            EasService.setProtocolLogging(true);
             mExpectedData = expectedData == null ? null
                 : new ArrayDeque<Object>(Arrays.asList(expectedData));
         }