mount("ext4", "EMMC", "/dev/block/platform/msm_sdcc.1/by-name/system", "/system");
assert(file_getprop("/system/build.prop", "ro.build.fingerprint") == "google/yakju/ef50l:4.1/JWR66Y/776638:user/release-keys" ||
       file_getprop("/system/build.prop", "ro.build.fingerprint") == "google/yakju/ef50l:4.1/JWR66Y/776638:user/release-keys");

mount("ext4", "EMMC", "/dev/block/platform/msm_sdcc.1/by-name/userdata", "/data");
ui_print("Verifying current system...");
show_progress(0.100000, 0);
assert(apply_patch_check("/system/app/DeskClock.apk", "0512681e8da78bce6335032b0b465ddd4111cf27", "26cc0387fff9d8194b0e90874af46ef2d8607a95"));
set_progress(0.020416);
assert(apply_patch_check("/system/app/GuardProvider.apk", "dfb853199765162ad6760d616ec83819fdb348cc", "2a5092caf9c5bd28df656ef031b0b982698c9f47"));
set_progress(0.077258);
assert(apply_patch_check("/system/app/PowerKeeper.apk", "f0358f39dafe9b4552256963a5cfb931e4a65579", "e60f6431fb0caeae2274bda38fc29e476af6399a"));
set_progress(0.081573);
assert(apply_patch_check("/system/app/ThemeManager.apk", "3b8cd49a23587bcec1078afe3217c8f421a72476", "11ac2a8c49d4376c0010d443c91c27132a5ad28a"));
set_progress(0.135553);
assert(apply_patch_check("/system/app/Updater.apk", "4918170ce5d95b743a611d5b2e8d9d3a76620c0a", "2c9fd131383eddf41d6892cfe206366f94a8e36d"));
set_progress(0.155805);
assert(apply_patch_check("/system/app/Whetstone.apk", "78ddeb80b360fe588c943f9a26529eff3275dc62", "eaed702e8c1aa64be26c0666038be2ec5a89c02f"));
set_progress(0.157532);
assert(apply_patch_check("/system/app/XiaomiServiceFramework.apk", "d9d3f1aed4d6f3de0bbeec783573310f999cfe08", "c70a4d9cb8af10cd6568144696bd658471b78a00"));
set_progress(0.163616);
assert(apply_patch_check("/system/app/miuisystem.apk", "acf9dbae88c2a0e2caef27c64371f9389f243d7e", "0aaf37c944b3c9c7a16aea6a86236ce69cfb4d27"));
set_progress(0.180949);
assert(apply_patch_check("/system/build.prop", "a5d88d9a9181d250546455e6cb175149e9e6a6dc", "48792c3ad077246c659d9568255b618046b35677"));
set_progress(0.181043);
assert(apply_patch_check("/system/framework/android.policy.jar", "367f198fc80a0617b30acbc4ddb98286795f85df", "3ed9ec686ec6ef77a6e15aa5f4763f0dd4f4c9c0"));
set_progress(0.182836);
assert(apply_patch_check("/system/framework/framework.jar", "5315bc34e42ec05e60d02518e49e4cdcf5768e66", "80e4c5a8e03e22db84cc4bd86926760cacfb1efd"));
set_progress(0.231709);
assert(apply_patch_check("/system/framework/framework2.jar", "8d40609d2f8787b0b035b8ae0125a2bd83bd6c1b", "f59b9dafa336a36c89b374268ec20a18a43d3bfa"));
set_progress(0.248490);
assert(apply_patch_check("/system/framework/services.jar", "81796ba72a809fe92fd640b7440687c4e3fd1fd5", "98d8837b42a25bbe91cb1825a4dd628881123268"));
set_progress(0.269014);
assert(apply_patch_check("/system/framework/telephony-common.jar", "2a4beb0493e1e25339148421c3f007db969d9338", "094f9b6f7b822202959bd5fb0b29647c309ff78f"));
set_progress(0.276712);
assert(apply_patch_check("/system/lib/liboctvm.so", "9ab79cde8c0b9a6f946075c6fdbe864df1d4f1f6", "175a54ec82e1bbde8701db2ffa8e200e29913d2e"));
set_progress(0.278407);
assert(apply_patch_check("/system/lib/liboctvm_drv.so", "6a6a302272c924e55f181530f2c08eab0c5617ef", "3207f3852c651e51a658465c95edca69f00080c4"));
set_progress(0.278675);
assert(apply_patch_check("/system/lib/libwhetstone_jni.so", "cb2a88adfc0463c5da76ae5e11106392f2f2f41a", "dc810d8c17b7c3121b15729de80996949c03e348"));
set_progress(0.278995);
assert(apply_patch_check("/system/media/theme/default/icons", "de41152ac0dd452285171eff0e211169d49e3e91", "e25ef0fa08ceaf9c1ae593105b46ee203c3d9814"));
set_progress(0.286312);
assert(apply_patch_check("/system/media/theme/default/keyguardmusicview", "ffabf3403719a4dbe6a074ad2fc1ec6e902573f5", "d856ec39ff021fddf498773431d329332204b6e7"));
set_progress(0.286689);
assert(apply_patch_check("/system/media/theme/default/powermenu", "e03a4888d21800631c3098eced51d522e5e553c9", "4ae201b7ccf2fb586741c8235e444f48d756aea3"));
set_progress(0.287354);
assert(apply_patch_check("/system/priv-app/DownloadProvider.apk", "457105e4657b3f2039144ee25e50ced47ecf3559", "b0e505b54465c8705a97c53b78c9c5f5ff4b8e5d"));
set_progress(0.316960);
assert(apply_patch_check("/system/priv-app/MiuiKeyguard.apk", "0cbff3bb0976f25db91628ba7de69584dae016f7", "da6258c31ef66a26f38d08d2ab278dcbcfaf29c0"));
set_progress(0.359825);
assert(apply_patch_check("/system/priv-app/MiuiSystemUI.apk", "3ac74fc873b1da920ae2e149b4a2a5cfbacb4504", "f4821786a5afa2b0af8201901378fd3d24048b1c"));
set_progress(0.394831);
assert(apply_patch_check("/system/priv-app/SecurityCenter.apk", "a8bc801cd04a48004aa5596b877a63afa7391ac1", "412886971852a2865e49f4d1f6373a14d56b7ebd"));
set_progress(0.489363);
assert(apply_patch_check("/system/priv-app/Settings.apk", "f16e55be2b7df12f82e68d72ec28379f39cc5677", "c8c9ebbcd61ad162d9a1b44364efe6de9a68c9f6"));
set_progress(0.824886);
assert(apply_patch_check("/system/priv-app/TeleService.apk", "5e1420f42c5c35dfc738ca7fdaab270beacf9e3d", "86cb95a4e88aa6c331e5ba808e00e92f9f3e77a9"));
set_progress(0.866816);
assert(apply_patch_space(27116209));

# ---- start making changes here ----

ui_print("Removing unneeded files...");
delete("/system/recovery.img");
show_progress(0.800000, 0);
ui_print("Patching system files...");
apply_patch("/data/miui/app/customized/ota-miui-MiGalleryLockscreen.apk",
            "-", 44b3c3630ed978993c1206f42c742f9b7152635c, 10771196,
            699491e382fe7ca6ba9995aded0982c87e4bf082, package_extract_file("patch/data/miui/app/customized/ota-miui-MiGalleryLockscreen.apk.p"));
set_progress(0.133200);
apply_patch("/system/app/DeskClock.apk", "-",
            0512681e8da78bce6335032b0b465ddd4111cf27, 1649996,
            26cc0387fff9d8194b0e90874af46ef2d8607a95, package_extract_file("patch/system/app/DeskClock.apk.p"));
set_progress(0.153605);
apply_patch("/system/app/GuardProvider.apk", "-",
            dfb853199765162ad6760d616ec83819fdb348cc, 4593811,
            2a5092caf9c5bd28df656ef031b0b982698c9f47, package_extract_file("patch/system/app/GuardProvider.apk.p"));
set_progress(0.210413);
apply_patch("/system/app/PowerKeeper.apk", "-",
            f0358f39dafe9b4552256963a5cfb931e4a65579, 373756,
            e60f6431fb0caeae2274bda38fc29e476af6399a, package_extract_file("patch/system/app/PowerKeeper.apk.p"));
set_progress(0.215035);
apply_patch("/system/app/ThemeManager.apk", "-",
            3b8cd49a23587bcec1078afe3217c8f421a72476, 4362488,
            11ac2a8c49d4376c0010d443c91c27132a5ad28a, package_extract_file("patch/system/app/ThemeManager.apk.p"));
set_progress(0.268984);
apply_patch("/system/app/Updater.apk", "-",
            4918170ce5d95b743a611d5b2e8d9d3a76620c0a, 1636761,
            2c9fd131383eddf41d6892cfe206366f94a8e36d, package_extract_file("patch/system/app/Updater.apk.p"));
set_progress(0.289224);
apply_patch("/system/app/Whetstone.apk", "-",
            78ddeb80b360fe588c943f9a26529eff3275dc62, 148947,
            eaed702e8c1aa64be26c0666038be2ec5a89c02f, package_extract_file("patch/system/app/Whetstone.apk.p"));
set_progress(0.291066);
apply_patch("/system/app/XiaomiServiceFramework.apk", "-",
            d9d3f1aed4d6f3de0bbeec783573310f999cfe08, 491729,
            c70a4d9cb8af10cd6568144696bd658471b78a00, package_extract_file("patch/system/app/XiaomiServiceFramework.apk.p"));
set_progress(0.297147);
apply_patch("/system/app/miuisystem.apk", "-",
            acf9dbae88c2a0e2caef27c64371f9389f243d7e, 1400802,
            0aaf37c944b3c9c7a16aea6a86236ce69cfb4d27, package_extract_file("patch/system/app/miuisystem.apk.p"));
set_progress(0.314470);
apply_patch("/system/framework/android.policy.jar", "-",
            367f198fc80a0617b30acbc4ddb98286795f85df, 144864,
            3ed9ec686ec6ef77a6e15aa5f4763f0dd4f4c9c0, package_extract_file("patch/system/framework/android.policy.jar.p"));
set_progress(0.316261);
apply_patch("/system/framework/framework.jar", "-",
            5315bc34e42ec05e60d02518e49e4cdcf5768e66, 3949880,
            80e4c5a8e03e22db84cc4bd86926760cacfb1efd, package_extract_file("patch/system/framework/framework.jar.p"));
set_progress(0.365107);
apply_patch("/system/framework/framework2.jar", "-",
            8d40609d2f8787b0b035b8ae0125a2bd83bd6c1b, 1356211,
            f59b9dafa336a36c89b374268ec20a18a43d3bfa, package_extract_file("patch/system/framework/framework2.jar.p"));
set_progress(0.381878);
apply_patch("/system/framework/services.jar", "-",
            81796ba72a809fe92fd640b7440687c4e3fd1fd5, 1658698,
            98d8837b42a25bbe91cb1825a4dd628881123268, package_extract_file("patch/system/framework/services.jar.p"));
set_progress(0.402390);
apply_patch("/system/framework/telephony-common.jar", "-",
            2a4beb0493e1e25339148421c3f007db969d9338, 622139,
            094f9b6f7b822202959bd5fb0b29647c309ff78f, package_extract_file("patch/system/framework/telephony-common.jar.p"));
set_progress(0.410084);
apply_patch("/system/lib/liboctvm.so", "-",
            9ab79cde8c0b9a6f946075c6fdbe864df1d4f1f6, 136984,
            175a54ec82e1bbde8701db2ffa8e200e29913d2e, package_extract_file("patch/system/lib/liboctvm.so.p"));
set_progress(0.411778);
apply_patch("/system/lib/liboctvm_drv.so", "-",
            6a6a302272c924e55f181530f2c08eab0c5617ef, 21624,
            3207f3852c651e51a658465c95edca69f00080c4, package_extract_file("patch/system/lib/liboctvm_drv.so.p"));
set_progress(0.412045);
apply_patch("/system/lib/libwhetstone_jni.so", "-",
            cb2a88adfc0463c5da76ae5e11106392f2f2f41a, 25848,
            dc810d8c17b7c3121b15729de80996949c03e348, package_extract_file("patch/system/lib/libwhetstone_jni.so.p"));
set_progress(0.412365);
apply_patch("/system/media/theme/default/icons", "-",
            de41152ac0dd452285171eff0e211169d49e3e91, 591365,
            e25ef0fa08ceaf9c1ae593105b46ee203c3d9814, package_extract_file("patch/system/media/theme/default/icons.p"));
set_progress(0.419678);
apply_patch("/system/media/theme/default/keyguardmusicview", "-",
            ffabf3403719a4dbe6a074ad2fc1ec6e902573f5, 30464,
            d856ec39ff021fddf498773431d329332204b6e7, package_extract_file("patch/system/media/theme/default/keyguardmusicview.p"));
set_progress(0.420055);
apply_patch("/system/media/theme/default/powermenu", "-",
            e03a4888d21800631c3098eced51d522e5e553c9, 58625,
            4ae201b7ccf2fb586741c8235e444f48d756aea3, package_extract_file("patch/system/media/theme/default/powermenu.p"));
set_progress(0.420780);
apply_patch("/system/priv-app/DownloadProvider.apk", "-",
            457105e4657b3f2039144ee25e50ced47ecf3559, 2392705,
            b0e505b54465c8705a97c53b78c9c5f5ff4b8e5d, package_extract_file("patch/system/priv-app/DownloadProvider.apk.p"));
set_progress(0.450369);
apply_patch("/system/priv-app/MiuiKeyguard.apk", "-",
            0cbff3bb0976f25db91628ba7de69584dae016f7, 3464276,
            da6258c31ef66a26f38d08d2ab278dcbcfaf29c0, package_extract_file("patch/system/priv-app/MiuiKeyguard.apk.p"));
set_progress(0.493209);
apply_patch("/system/priv-app/MiuiSystemUI.apk", "-",
            3ac74fc873b1da920ae2e149b4a2a5cfbacb4504, 2829099,
            f4821786a5afa2b0af8201901378fd3d24048b1c, package_extract_file("patch/system/priv-app/MiuiSystemUI.apk.p"));
set_progress(0.528195);
apply_patch("/system/priv-app/SecurityCenter.apk", "-",
            a8bc801cd04a48004aa5596b877a63afa7391ac1, 7639806,
            412886971852a2865e49f4d1f6373a14d56b7ebd, package_extract_file("patch/system/priv-app/SecurityCenter.apk.p"));
set_progress(0.622671);
apply_patch("/system/priv-app/Settings.apk", "-",
            f16e55be2b7df12f82e68d72ec28379f39cc5677, 27116209,
            c8c9ebbcd61ad162d9a1b44364efe6de9a68c9f6, package_extract_file("patch/system/priv-app/Settings.apk.p"));
set_progress(0.958000);
apply_patch("/system/priv-app/TeleService.apk", "-",
            5e1420f42c5c35dfc738ca7fdaab270beacf9e3d, 3388687,
            86cb95a4e88aa6c331e5ba808e00e92f9f3e77a9, package_extract_file("patch/system/priv-app/TeleService.apk.p"));
set_progress(0.999906);
show_progress(0.100000, 10);
ui_print("Symlinks and permissions...");
set_perm_recursive(0, 0, 0755, 0644, "/system");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
set_perm(0, 3004, 02755, "/system/bin/installd");
set_perm(0, 0, 0644, "/system/bin/miuindbg_post");
set_perm(0, 0, 0644, "/system/bin/miuizip");
set_perm(0, 3003, 02750, "/system/bin/netcfg");
set_perm(0, 0, 0755, "/system/bin/ping");
set_perm(0, 2000, 0750, "/system/bin/run-as");
set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
set_perm(0, 2000, 06755, "/system/xbin/tunman");
set_perm(0, 0, 06755, "/system/xbin/busybox");
ui_print("Patching remaining system files...");
apply_patch("/system/build.prop", "-",
            a5d88d9a9181d250546455e6cb175149e9e6a6dc, 7627,
            48792c3ad077246c659d9568255b618046b35677, package_extract_file("patch/system/build.prop.p"));
package_extract_dir("data", "/data");
package_extract_file("META-INF/com/miui/busybox", "/tmp/busybox");
set_perm(0, 0, 0555, "/tmp/busybox");
package_extract_file("META-INF/com/miui/replace_key", "/tmp/replace_key");
set_perm(0, 0, 0555, "/tmp/replace_key");
run_program("/sbin/sh", "/tmp/replace_key");
delete("/tmp/busybox");
delete("/tmp/replace_key");
package_extract_file("META-INF/com/miui/relink", "/tmp/relink");
set_perm(0, 0, 0555, "/tmp/relink");
run_program("/tmp/relink");
delete("/tmp/relink");
set_perm_recursive(1000, 1000, 0755, 0644, "/data/miui");
set_metadata("/system/bin/debuggerd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:debuggerd_exec:s0");
set_metadata("/system/bin/debuggerd_vendor", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:debuggerd_exec:s0");
set_metadata("/system/xbin/shelld", "uid", 0, "gid", 1000, "mode", 06754, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/xbin/su", "uid", 0, "gid", 0, "mode", 06755, "capabilities", 0x0, "selabel", "u:object_r:su_exec:s0");
delete_recursive("/data/miui/preinstall_apps");
delete_recursive("/data/miui/cust/preinstall_apps");
set_perm(0, 0, 0644, "/system/build.prop");
unmount("/data");
unmount("/system");
