diff --git a/app/src/aosp/java/app/grapheneos/camera/databinding/ActivityMainBinding.java b/app/src/aosp/java/app/grapheneos/camera/databinding/ActivityMainBinding.java
index 87e9f06..879976c 100644
--- a/app/src/aosp/java/app/grapheneos/camera/databinding/ActivityMainBinding.java
+++ b/app/src/aosp/java/app/grapheneos/camera/databinding/ActivityMainBinding.java
@@ -18,7 +18,6 @@
 import androidx.coordinatorlayout.widget.CoordinatorLayout;
 import androidx.viewbinding.ViewBinding;
 import androidx.viewbinding.ViewBindings;
-import androidx.viewpager2.widget.ViewPager2;
 import app.grapheneos.camera.R;
 import app.grapheneos.camera.ui.BottomTabLayout;
 import app.grapheneos.camera.ui.CountDownTimerUI;
@@ -76,9 +75,6 @@
   public final ImageView exposurePlusIcon;
 
   @NonNull
-  public final ViewPager2 flashPager;
-
-  @NonNull
   public final FrameLayout flipCameraCircle;
 
   @NonNull
@@ -196,11 +192,11 @@
       @NonNull ImageButton confirmButton, @NonNull QRToggle dataMatrixToggle,
       @NonNull ExposureBar exposureBar, @NonNull LinearLayout exposureBarPanel,
       @NonNull ImageView exposureNegIcon, @NonNull ImageView exposurePlusIcon,
-      @NonNull ViewPager2 flashPager, @NonNull FrameLayout flipCameraCircle,
-      @NonNull ImageView flipCameraIcon, @NonNull ImageView flipCameraIconContent,
-      @NonNull ImageView focusRing, @NonNull LinearLayout gCircle,
-      @NonNull FrameLayout gCircleFrame, @NonNull View gCircleLeftDash, @NonNull View gCircleLineX,
-      @NonNull View gCircleLineZ, @NonNull View gCircleRightDash, @NonNull TextView gCircleText,
+      @NonNull FrameLayout flipCameraCircle, @NonNull ImageView flipCameraIcon,
+      @NonNull ImageView flipCameraIconContent, @NonNull ImageView focusRing,
+      @NonNull LinearLayout gCircle, @NonNull FrameLayout gCircleFrame,
+      @NonNull View gCircleLeftDash, @NonNull View gCircleLineX, @NonNull View gCircleLineZ,
+      @NonNull View gCircleRightDash, @NonNull TextView gCircleText,
       @NonNull ShapeableImageView imagePreview, @NonNull FrameLayout mainFrame,
       @NonNull ImageView mainOverlay, @NonNull ImageView micOff, @NonNull ImageView moreOptions,
       @NonNull QRToggle pdf417Toggle, @NonNull ImageView playPreview, @NonNull PreviewView preview,
@@ -227,7 +223,6 @@
     this.exposureBarPanel = exposureBarPanel;
     this.exposureNegIcon = exposureNegIcon;
     this.exposurePlusIcon = exposurePlusIcon;
-    this.flashPager = flashPager;
     this.flipCameraCircle = flipCameraCircle;
     this.flipCameraIcon = flipCameraIcon;
     this.flipCameraIconContent = flipCameraIconContent;
@@ -372,12 +367,6 @@
         break missingId;
       }
 
-      id = R.id.flash_pager;
-      ViewPager2 flashPager = ViewBindings.findChildViewById(rootView, id);
-      if (flashPager == null) {
-        break missingId;
-      }
-
       id = R.id.flip_camera_circle;
       FrameLayout flipCameraCircle = ViewBindings.findChildViewById(rootView, id);
       if (flipCameraCircle == null) {
@@ -603,13 +592,12 @@
       return new ActivityMainBinding((CoordinatorLayout) rootView, aztecToggle, cTimer,
           cameraModeTabs, cancelButton, captureButton, captureButtonCross, captureButtonText,
           confirmButton, dataMatrixToggle, exposureBar, exposureBarPanel, exposureNegIcon,
-          exposurePlusIcon, flashPager, flipCameraCircle, flipCameraIcon, flipCameraIconContent,
-          focusRing, gCircle, gCircleFrame, gCircleLeftDash, gCircleLineX, gCircleLineZ,
-          gCircleRightDash, gCircleText, imagePreview, mainFrame, mainOverlay, micOff, moreOptions,
-          pdf417Toggle, playPreview, preview, previewContainer, previewGrid, previewLoading,
-          qrOverlay, qrScanToggle, qrScanToggles, retakeIcon, root, settingsOption, thirdCircle,
-          thirdOption, threeButtons, timer, whiteOptionCircle, zoomBar, zoomBarPanel, zoomInIcon,
-          zoomOutIcon);
+          exposurePlusIcon, flipCameraCircle, flipCameraIcon, flipCameraIconContent, focusRing,
+          gCircle, gCircleFrame, gCircleLeftDash, gCircleLineX, gCircleLineZ, gCircleRightDash,
+          gCircleText, imagePreview, mainFrame, mainOverlay, micOff, moreOptions, pdf417Toggle,
+          playPreview, preview, previewContainer, previewGrid, previewLoading, qrOverlay,
+          qrScanToggle, qrScanToggles, retakeIcon, root, settingsOption, thirdCircle, thirdOption,
+          threeButtons, timer, whiteOptionCircle, zoomBar, zoomBarPanel, zoomInIcon, zoomOutIcon);
     }
     String missingId = rootView.getResources().getResourceName(id);
     throw new NullPointerException("Missing required view with ID: ".concat(missingId));
diff --git a/app/src/aosp/java/app/grapheneos/camera/databinding/MoreSettingsBinding.java b/app/src/aosp/java/app/grapheneos/camera/databinding/MoreSettingsBinding.java
index cf0dc70..7d79d9b 100644
--- a/app/src/aosp/java/app/grapheneos/camera/databinding/MoreSettingsBinding.java
+++ b/app/src/aosp/java/app/grapheneos/camera/databinding/MoreSettingsBinding.java
@@ -41,6 +41,9 @@
   public final TextView cameraSoundsTitle;
 
   @NonNull
+  public final LinearLayout generalSettings;
+
+  @NonNull
   public final LinearLayout gyroscopeSetting;
 
   @NonNull
@@ -83,6 +86,9 @@
   public final TextView photoQualityTitle;
 
   @NonNull
+  public final LinearLayout photoSettings;
+
+  @NonNull
   public final ImageButton refreshStorageLocation;
 
   @NonNull
@@ -128,6 +134,9 @@
   public final LinearLayout storageLocationSetting;
 
   @NonNull
+  public final LinearLayout storageLocationSettings;
+
+  @NonNull
   public final TextView storageLocationTitle;
 
   @NonNull
@@ -142,34 +151,54 @@
   @NonNull
   public final TextView videoFormatSettingTitle;
 
+  @NonNull
+  public final ImageView zslIcon;
+
+  @NonNull
+  public final LinearLayout zslSetting;
+
+  @NonNull
+  public final TextView zslSettingSubtitle;
+
+  @NonNull
+  public final TextView zslSettingTitle;
+
+  @NonNull
+  public final SwitchCompat zslSettingToggle;
+
   private MoreSettingsBinding(@NonNull ScrollView rootView_,
       @NonNull TextView cameraSoundsDescription, @NonNull ImageView cameraSoundsIcon,
       @NonNull LinearLayout cameraSoundsSetting, @NonNull SwitchCompat cameraSoundsSwitch,
-      @NonNull TextView cameraSoundsTitle, @NonNull LinearLayout gyroscopeSetting,
-      @NonNull TextView gyroscopeSettingDescription, @NonNull ImageView gyroscopeSettingIcon,
-      @NonNull SwitchCompat gyroscopeSettingSwitch, @NonNull TextView gyroscopeSettingTitle,
-      @NonNull LinearLayout imageFormatSetting,
+      @NonNull TextView cameraSoundsTitle, @NonNull LinearLayout generalSettings,
+      @NonNull LinearLayout gyroscopeSetting, @NonNull TextView gyroscopeSettingDescription,
+      @NonNull ImageView gyroscopeSettingIcon, @NonNull SwitchCompat gyroscopeSettingSwitch,
+      @NonNull TextView gyroscopeSettingTitle, @NonNull LinearLayout imageFormatSetting,
       @NonNull AutoCompleteTextView imageFormatSettingField,
       @NonNull ImageView imageFormatSettingIcon, @NonNull TextView imageFormatSettingTitle,
       @NonNull EditText photoQuality, @NonNull ImageView photoQualityIcon,
       @NonNull LinearLayout photoQualitySetting, @NonNull TextView photoQualitySubtitle,
-      @NonNull TextView photoQualityTitle, @NonNull ImageButton refreshStorageLocation,
-      @NonNull ImageView removeExifIcon, @NonNull LinearLayout removeExifSetting,
-      @NonNull TextView removeExifSubtitle, @NonNull TextView removeExifTitle,
-      @NonNull SwitchCompat removeExifToggle, @NonNull LinearLayout rootView,
-      @NonNull ImageView saveImageAsPreviewIcon, @NonNull LinearLayout saveImageAsPreviewSetting,
-      @NonNull TextView saveImageAsPreviewSubtitle, @NonNull TextView saveImageAsPreviewTitle,
-      @NonNull SwitchCompat saveImageAsPreviewToggle, @NonNull EditText storageLocationField,
-      @NonNull ImageView storageLocationIcon, @NonNull LinearLayout storageLocationSetting,
+      @NonNull TextView photoQualityTitle, @NonNull LinearLayout photoSettings,
+      @NonNull ImageButton refreshStorageLocation, @NonNull ImageView removeExifIcon,
+      @NonNull LinearLayout removeExifSetting, @NonNull TextView removeExifSubtitle,
+      @NonNull TextView removeExifTitle, @NonNull SwitchCompat removeExifToggle,
+      @NonNull LinearLayout rootView, @NonNull ImageView saveImageAsPreviewIcon,
+      @NonNull LinearLayout saveImageAsPreviewSetting, @NonNull TextView saveImageAsPreviewSubtitle,
+      @NonNull TextView saveImageAsPreviewTitle, @NonNull SwitchCompat saveImageAsPreviewToggle,
+      @NonNull EditText storageLocationField, @NonNull ImageView storageLocationIcon,
+      @NonNull LinearLayout storageLocationSetting, @NonNull LinearLayout storageLocationSettings,
       @NonNull TextView storageLocationTitle, @NonNull LinearLayout videoFormatSetting,
       @NonNull AutoCompleteTextView videoFormatSettingField,
-      @NonNull ImageView videoFormatSettingIcon, @NonNull TextView videoFormatSettingTitle) {
+      @NonNull ImageView videoFormatSettingIcon, @NonNull TextView videoFormatSettingTitle,
+      @NonNull ImageView zslIcon, @NonNull LinearLayout zslSetting,
+      @NonNull TextView zslSettingSubtitle, @NonNull TextView zslSettingTitle,
+      @NonNull SwitchCompat zslSettingToggle) {
     this.rootView_ = rootView_;
     this.cameraSoundsDescription = cameraSoundsDescription;
     this.cameraSoundsIcon = cameraSoundsIcon;
     this.cameraSoundsSetting = cameraSoundsSetting;
     this.cameraSoundsSwitch = cameraSoundsSwitch;
     this.cameraSoundsTitle = cameraSoundsTitle;
+    this.generalSettings = generalSettings;
     this.gyroscopeSetting = gyroscopeSetting;
     this.gyroscopeSettingDescription = gyroscopeSettingDescription;
     this.gyroscopeSettingIcon = gyroscopeSettingIcon;
@@ -184,6 +213,7 @@
     this.photoQualitySetting = photoQualitySetting;
     this.photoQualitySubtitle = photoQualitySubtitle;
     this.photoQualityTitle = photoQualityTitle;
+    this.photoSettings = photoSettings;
     this.refreshStorageLocation = refreshStorageLocation;
     this.removeExifIcon = removeExifIcon;
     this.removeExifSetting = removeExifSetting;
@@ -199,11 +229,17 @@
     this.storageLocationField = storageLocationField;
     this.storageLocationIcon = storageLocationIcon;
     this.storageLocationSetting = storageLocationSetting;
+    this.storageLocationSettings = storageLocationSettings;
     this.storageLocationTitle = storageLocationTitle;
     this.videoFormatSetting = videoFormatSetting;
     this.videoFormatSettingField = videoFormatSettingField;
     this.videoFormatSettingIcon = videoFormatSettingIcon;
     this.videoFormatSettingTitle = videoFormatSettingTitle;
+    this.zslIcon = zslIcon;
+    this.zslSetting = zslSetting;
+    this.zslSettingSubtitle = zslSettingSubtitle;
+    this.zslSettingTitle = zslSettingTitle;
+    this.zslSettingToggle = zslSettingToggle;
   }
 
   @Override
@@ -263,6 +299,12 @@
         break missingId;
       }
 
+      id = R.id.general_settings;
+      LinearLayout generalSettings = ViewBindings.findChildViewById(rootView, id);
+      if (generalSettings == null) {
+        break missingId;
+      }
+
       id = R.id.gyroscope_setting;
       LinearLayout gyroscopeSetting = ViewBindings.findChildViewById(rootView, id);
       if (gyroscopeSetting == null) {
@@ -347,6 +389,12 @@
         break missingId;
       }
 
+      id = R.id.photo_settings;
+      LinearLayout photoSettings = ViewBindings.findChildViewById(rootView, id);
+      if (photoSettings == null) {
+        break missingId;
+      }
+
       id = R.id.refresh_storage_location;
       ImageButton refreshStorageLocation = ViewBindings.findChildViewById(rootView, id);
       if (refreshStorageLocation == null) {
@@ -437,6 +485,12 @@
         break missingId;
       }
 
+      id = R.id.storage_location_settings;
+      LinearLayout storageLocationSettings = ViewBindings.findChildViewById(rootView, id);
+      if (storageLocationSettings == null) {
+        break missingId;
+      }
+
       id = R.id.storage_location_title;
       TextView storageLocationTitle = ViewBindings.findChildViewById(rootView, id);
       if (storageLocationTitle == null) {
@@ -467,18 +521,49 @@
         break missingId;
       }
 
+      id = R.id.zsl_icon;
+      ImageView zslIcon = ViewBindings.findChildViewById(rootView, id);
+      if (zslIcon == null) {
+        break missingId;
+      }
+
+      id = R.id.zsl_setting;
+      LinearLayout zslSetting = ViewBindings.findChildViewById(rootView, id);
+      if (zslSetting == null) {
+        break missingId;
+      }
+
+      id = R.id.zsl_setting_subtitle;
+      TextView zslSettingSubtitle = ViewBindings.findChildViewById(rootView, id);
+      if (zslSettingSubtitle == null) {
+        break missingId;
+      }
+
+      id = R.id.zsl_setting_title;
+      TextView zslSettingTitle = ViewBindings.findChildViewById(rootView, id);
+      if (zslSettingTitle == null) {
+        break missingId;
+      }
+
+      id = R.id.zsl_setting_toggle;
+      SwitchCompat zslSettingToggle = ViewBindings.findChildViewById(rootView, id);
+      if (zslSettingToggle == null) {
+        break missingId;
+      }
+
       return new MoreSettingsBinding((ScrollView) rootView, cameraSoundsDescription,
           cameraSoundsIcon, cameraSoundsSetting, cameraSoundsSwitch, cameraSoundsTitle,
-          gyroscopeSetting, gyroscopeSettingDescription, gyroscopeSettingIcon,
+          generalSettings, gyroscopeSetting, gyroscopeSettingDescription, gyroscopeSettingIcon,
           gyroscopeSettingSwitch, gyroscopeSettingTitle, imageFormatSetting,
           imageFormatSettingField, imageFormatSettingIcon, imageFormatSettingTitle, photoQuality,
           photoQualityIcon, photoQualitySetting, photoQualitySubtitle, photoQualityTitle,
-          refreshStorageLocation, removeExifIcon, removeExifSetting, removeExifSubtitle,
-          removeExifTitle, removeExifToggle, rootView_, saveImageAsPreviewIcon,
+          photoSettings, refreshStorageLocation, removeExifIcon, removeExifSetting,
+          removeExifSubtitle, removeExifTitle, removeExifToggle, rootView_, saveImageAsPreviewIcon,
           saveImageAsPreviewSetting, saveImageAsPreviewSubtitle, saveImageAsPreviewTitle,
           saveImageAsPreviewToggle, storageLocationField, storageLocationIcon,
-          storageLocationSetting, storageLocationTitle, videoFormatSetting, videoFormatSettingField,
-          videoFormatSettingIcon, videoFormatSettingTitle);
+          storageLocationSetting, storageLocationSettings, storageLocationTitle, videoFormatSetting,
+          videoFormatSettingField, videoFormatSettingIcon, videoFormatSettingTitle, zslIcon,
+          zslSetting, zslSettingSubtitle, zslSettingTitle, zslSettingToggle);
     }
     String missingId = rootView.getResources().getResourceName(id);
     throw new NullPointerException("Missing required view with ID: ".concat(missingId));
