(!less_than_int(1750372558, getprop("ro.build.date.utc"))) || abort("E3003: Can't install this package (Thu Jun 19 15:35:58 PDT 2025) over newer build (" + getprop("ro.build.date") + ").");

if get_stage("/dev/block/bootdevice/by-name/misc") == "" then
if (!less_than_str(getprop("ro.build.version.release"), 8.1.0)) then
set_stage("/dev/block/bootdevice/by-name/misc", "3/3");

package_extract_file("META-INF/com/android/last_build_metadata", "/cache/recovery/last_build_metadata.prop");


# set stage to 3/3 if OTA over OREO as no need to update recovery image


if (getprop("ro.oem.project.config") == "AOSP") then
write_value("last-build=8.1_aosp", "/cache/recovery/last_build_metadata.prop");
else
write_value("last-build=8.1_gms", "/cache/recovery/last_build_metadata.prop");
endif;


endif;
endif;


if get_stage("/dev/block/bootdevice/by-name/misc") == "2/3" then


# Stage 2/3

package_extract_file("recovery.img", "/dev/block/bootdevice/by-name/recovery");

package_extract_file("META-INF/com/android/last_build_metadata", "/cache/recovery/last_build_metadata.prop");
ui_print("Stage: 2/3");
set_stage("/dev/block/bootdevice/by-name/misc", "3/3");
reboot_now("/dev/block/bootdevice/by-name/misc", "recovery");
else if get_stage("/dev/block/bootdevice/by-name/misc") == "3/3" then


# Stage 3/3

ui_print("Stage: 3/3");
ui_print("Target: Elo::8.1.0/OPM1.171019.026/4.68.11:user/release-keys");
show_progress(0.550000, 0);
ui_print("Patching system image unconditionally...");
block_image_update("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat.br", "system.patch.dat") ||
  abort("E1001: Failed to update system image.");
show_progress(0.100000, 0);
ui_print("Patching vendor image unconditionally...");
block_image_update("/dev/block/bootdevice/by-name/vendor", package_extract_file("vendor.transfer.list"), "vendor.new.dat.br", "vendor.patch.dat") ||
  abort("E2001: Failed to update vendor image.");
show_progress(0.050000, 5);
package_extract_file("boot.img", "/dev/block/bootdevice/by-name/boot");
ui_print("Writing logo image...");

if (getprop("ro.boot.project_id") == "3") || (getprop("ro.boot.project_id") == "4") || (getprop("ro.boot.project_id") == "7") || (getprop("ro.boot.project_id") == "b") || (getprop("ro.boot.project_id") == "e") then
package_extract_file("elo_logo_hd_raw_24bpp.bin", "/dev/block/bootdevice/by-name/factory");
else if (getprop("ro.boot.project_id") == "1") || (getprop("ro.boot.project_id") == "2") || (getprop("ro.boot.project_id") == "5") || (getprop("ro.boot.project_id") == "6") || (getprop("ro.boot.project_id") == "8") || (getprop("ro.boot.project_id") == "c") ||  (getprop("ro.boot.project_id") == "f")  then
package_extract_file("elo_logo_fhd_raw_24bpp.bin", "/dev/block/bootdevice/by-name/factory");
endif;
endif;

show_progress(0.200000, 10);

# ---- radio update tasks ----

ui_print("Patching firmware images...");
ifelse(msm.boot_update("main"), (
package_extract_file("firmware-update/cmnlib64.mbn", "/dev/block/bootdevice/by-name/cmnlib64");
package_extract_file("firmware-update/cmnlib.mbn", "/dev/block/bootdevice/by-name/cmnlib");
package_extract_file("firmware-update/rpm.mbn", "/dev/block/bootdevice/by-name/rpm");
package_extract_file("firmware-update/tz.mbn", "/dev/block/bootdevice/by-name/tz");
package_extract_file("firmware-update/mdtp.img", "/dev/block/bootdevice/by-name/mdtp");
package_extract_file("firmware-update/emmc_appsboot.mbn", "/dev/block/bootdevice/by-name/aboot");
package_extract_file("firmware-update/lksecapp.mbn", "/dev/block/bootdevice/by-name/lksecapp");
package_extract_file("firmware-update/sbl1.mbn", "/dev/block/bootdevice/by-name/sbl1");
package_extract_file("firmware-update/devcfg.mbn", "/dev/block/bootdevice/by-name/devcfg");
package_extract_file("firmware-update/keymaster.mbn", "/dev/block/bootdevice/by-name/keymaster");
), "");
ifelse(msm.boot_update("backup"), (
package_extract_file("firmware-update/cmnlib64.mbn", "/dev/block/bootdevice/by-name/cmnlib64bak");
package_extract_file("firmware-update/cmnlib.mbn", "/dev/block/bootdevice/by-name/cmnlibbak");
package_extract_file("firmware-update/rpm.mbn", "/dev/block/bootdevice/by-name/rpmbak");
package_extract_file("firmware-update/tz.mbn", "/dev/block/bootdevice/by-name/tzbak");
package_extract_file("firmware-update/emmc_appsboot.mbn", "/dev/block/bootdevice/by-name/abootbak");
package_extract_file("firmware-update/lksecapp.mbn", "/dev/block/bootdevice/by-name/lksecappbak");
package_extract_file("firmware-update/sbl1.mbn", "/dev/block/bootdevice/by-name/sbl1bak");
package_extract_file("firmware-update/devcfg.mbn", "/dev/block/bootdevice/by-name/devcfgbak");
package_extract_file("firmware-update/keymaster.mbn", "/dev/block/bootdevice/by-name/keymasterbak");
), "");
msm.boot_update("finalize");
package_extract_file("firmware-update/NON-HLOS.bin", "/dev/block/bootdevice/by-name/modem");
package_extract_file("firmware-update/adspso.bin", "/dev/block/bootdevice/by-name/dsp");

ui_print("end of stage 3/3");
package_extract_file("META-INF/com/android/metadata", "/cache/recovery/last_current_build_metadata.prop");



if (file_getprop("/cache/recovery/last_build_metadata.prop", "last-build") == "7.1.2") then
ui_print("last build 7.1.2");

show_progress(0.100000, 10);
format("ext4", "EMMC", "/dev/block/bootdevice/by-name/userdata", "0", "/data");

else
ui_print("last build: 8.1");
endif;


set_stage("/dev/block/bootdevice/by-name/misc", "");

else


# Stage 1/3

ui_print("stage 1/3");
package_extract_file("recovery-two-step.img", "/dev/block/bootdevice/by-name/boot");

if getprop("ro.boot.project_id") == "3" then
package_extract_file("elo_logo_hd_raw_24bpp.bin", "/dev/block/bootdevice/by-name/factory");
endif;

package_extract_file("firmware-update/emmc_appsboot.mbn", "/dev/block/bootdevice/by-name/aboot");
package_extract_oem_file("gpt_both0.bin", "/dev/block/bootdevice/by-name/Qcust", "partition");
package_extract_oem_file("firmware-update/sbl1.mbn", "/dev/block/bootdevice/by-name/Qcust", "sbl1");
package_extract_oem_file("firmware-update/rpm.mbn", "/dev/block/bootdevice/by-name/Qcust", "rpm");
package_extract_oem_file("firmware-update/tz.mbn", "/dev/block/bootdevice/by-name/Qcust", "tz");
package_extract_oem_file("firmware-update/lksecapp.mbn", "/dev/block/bootdevice/by-name/Qcust", "lksecapp");
package_extract_oem_file("firmware-update/cmnlib.mbn", "/dev/block/bootdevice/by-name/Qcust", "cmnlib");
package_extract_oem_file("firmware-update/cmnlib64.mbn", "/dev/block/bootdevice/by-name/Qcust", "cmnlib64");
package_extract_oem_file("firmware-update/keymaster.mbn", "/dev/block/bootdevice/by-name/Qcust", "keymaster");


set_stage("/dev/block/bootdevice/by-name/misc", "2/3");
reboot_now("/dev/block/bootdevice/by-name/misc", "");
endif;
endif;

set_progress(1.000000);
