mount("ext4", "EMMC", "/dev/block/mmcblk0p33", "/system");
mount("ext4", "EMMC", "/dev/block/mmcblk0p35", "/data");
assert(file_getprop("/system/build.prop", "ro.build.fingerprint") == "htc_europe/ville/ville:4.1.1/JRO03C/128506.8:user/release-keys" ||
       file_getprop("/system/build.prop", "ro.build.fingerprint") == "htc_europe/ville/ville:4.1.1/JRO03C/128506.8:user/release-keys");
assert(getprop("ro.product.device") == "ville" ||
       getprop("ro.build.product") == "ville");
ui_print("Verifying current system...");
show_progress(0.100000, 0);
assert(apply_patch_check("/system/app/AntiSpam.apk", "345147d8e4163dcdc018064095cbc00eee01a525", "830d8a679390b0a8549a2cb0a52b0be96b1775e4"));
set_progress(0.000889);
assert(apply_patch_check("/system/app/Backup.apk", "65265d20f983ef81a80a36afa1b6506d33f231eb", "0031a8b892c1fa636bbb3aeaaef478a9d240936c"));
set_progress(0.007656);
assert(apply_patch_check("/system/app/Browser.apk", "0add6350bc1d825d3e9b7803e18d90df4a1b7f6d", "24cdec76a20fd5bd05d29539cc51838b82429cb3"));
set_progress(0.058221);
assert(apply_patch_check("/system/app/BugReport.apk", "15bc73052381116e6455e47cd83d7cff24d4449c", "180b8861c2ee00543f384cf6f956eb6bf3a9bc98"));
set_progress(0.059419);
assert(apply_patch_check("/system/app/Calculator.apk", "f7ce2ca6a5e83406bc04f5d9a93c9c2fb9db60a2", "3b9eed94db833799322d44c92f6aae75fbe40869"));
set_progress(0.072820);
assert(apply_patch_check("/system/app/Calendar.apk", "4b2b1dc35e5aad33bd71e14169893ac985d4c869", "5c85f051bfe76ea1e7334ea82549b49eaf075ff1"));
set_progress(0.081503);
assert(apply_patch_check("/system/app/CalendarProvider.apk", "3871d923630f979a566e16e599b47685ffd43db2", "f907c95167759396ed0cc32ae9fab4199ec94186"));
set_progress(0.082603);
assert(apply_patch_check("/system/app/Camera.apk", "6984ab66eb6a2370eae3b0f083527e0de2f3e8e9", "2c95d5a223e881ec3cd7573bc62a2cc605521777"));
set_progress(0.121557);
assert(apply_patch_check("/system/app/CloudService.apk", "bd81d855a0eb82325f7e7b479855af7234003e52", "e52a7fa579bbc12c56e8b8f065200c587cb34146"));
set_progress(0.123290);
assert(apply_patch_check("/system/app/Contacts.apk", "90b2e484334a34293079736faf01a9916524e626", "5ea2ed77cf878e0f6e23428ff707c39241e41434"));
set_progress(0.166906);
assert(apply_patch_check("/system/app/ContactsProvider.apk", "e42f920b021bdf01e4a71d8f38774e3b88a1e4bc", "500662fdfb87481f496329b89721ec201860ea29"));
set_progress(0.169072);
assert(apply_patch_check("/system/app/DataHubProvider.apk", "acb6c615abf7b19b3754003946f30e45d9601832", "3c1b954de13b31dd9ed636e262e944a889746208"));
set_progress(0.169145);
assert(apply_patch_check("/system/app/DeskClock.apk", "8ba1020b87637cdcfbb14ebc4e5b1a92dfdae38d", "a1da37bcfbaed8e6d45f88f666c344a93cb50782"));
set_progress(0.179305);
assert(apply_patch_check("/system/app/DownloadProvider.apk", "7c245f530549831f3d391e207bcded3bc749173e", "05f595056cf2201e7e3172b49372625cefdfb8bb"));
set_progress(0.180173);
assert(apply_patch_check("/system/app/DownloadProviderUi.apk", "e4eb1c602cd656cf8d3b6749caacb027768e9914", "950165244b25050a5743cd3a7e77955d5b5e39b4"));
set_progress(0.180743);
assert(apply_patch_check("/system/app/FileExplorer.apk", "eb43a13f5d5697a72f770b8d8640d48edc50c44f", "85130280067e5ebcefc6afaeadb06f0825f849f1"));
set_progress(0.196047);
assert(apply_patch_check("/system/app/HTCAlbum.apk", "08b6336b2fb87cc433ab746e0e8507cfba7c6c04", "2a1d5fc4c915433c8987ab54bb6d83db9ad7553e"));
set_progress(0.239420);
assert(apply_patch_check("/system/app/MiuiGallery.apk", "44b1f9bd01997696b62c38d5ab7b8f8450d91f20", "49a7b0d5bd50011fea3a91bb907758cb4ba60ea4"));
set_progress(0.269367);
assert(apply_patch_check("/system/app/MiuiHome.apk", "f3b849588b75c3210375eccd6fc2317eb14dc4f6", "2cdcff8698ec7801097a86991c2cd8e454b96e09"));
set_progress(0.301780);
assert(apply_patch_check("/system/app/MiuiSystemUI.apk", "515eea852c76eb78d0acfd5599bf08f1133bdfc3", "df1e0301903448229b4b497df7dbd8dd48f5a549"));
set_progress(0.314177);
assert(apply_patch_check("/system/app/Mms.apk", "87675930a2cd2b6ce2463c0cadb1c4e049ce6d3d", "9c58433253c5755d8179109c0954403acc5a2adb"));
set_progress(0.336530);
assert(apply_patch_check("/system/app/Music.apk", "95f3be7561cdbcb551fa48ad905491336b5bcc64", "4a6657ebfa8769f29099e10dcd731b8e5ed03682"));
set_progress(0.383026);
assert(apply_patch_check("/system/app/NetworkAssistant.apk", "c2e3439f07af114488e2670861c64327e1f352dc", "a67d29d54351807a65140e181a5cc2f13a81c6c0"));
set_progress(0.387307);
assert(apply_patch_check("/system/app/Notes.apk", "f488a0d15fc6055f1d461aee4252843e2886220d", "0a46f69c542bfdcf8d8d57c8b2c2ec870d911de1"));
set_progress(0.456180);
assert(apply_patch_check("/system/app/PackageInstaller.apk", "994f4a3ef18cf5ea306a402af89fa267691627ed", "33544886f7bf2722ea1fdf9501548e57338658eb"));
set_progress(0.458073);
assert(apply_patch_check("/system/app/Phone.apk", "e91717b1b6a9eeb0035a17a8a38964bc7a77e3e3", "56735d9a7b28093511697d81e112a97b46e6ecc1"));
set_progress(0.478017);
assert(apply_patch_check("/system/app/Provision.apk", "945a594479dc3a484a8687afbfb0df1cea2387dc", "b943965c0a27b651916c2bd087540fff21c35c49"));
set_progress(0.485263);
assert(apply_patch_check("/system/app/QuickSearchBox.apk", "638bcc1c10ad52b1348bb22d61650b2a3b6b0ac4", "4494e934a636188151f2f1753064a3a353a884df"));
set_progress(0.487863);
assert(apply_patch_check("/system/app/Settings.apk", "34347065f31166cede0f9dee55d078687d4387d1", "accda2e53e399c2d489e74010b3a5e0771e8496d"));
set_progress(0.581365);
assert(apply_patch_check("/system/app/SoundRecorder.apk", "f050f966d72450cca9a0944f0af313a93346afa5", "bf847e2b5f3d7de82afac8dbdd72461af2e14bb3"));
set_progress(0.605679);
assert(apply_patch_check("/system/app/Stk.apk", "7c6db8a1ed408207fb47908c4b4db8659ce42245", "c033f0d586503ecee992baf0aecf66f2fb761fe9"));
set_progress(0.606052);
assert(apply_patch_check("/system/app/SuperMarket.apk", "e1594ee0c261f45fc1d9a00ec51c1c7ac0a941c9", "a8cbe291fa4ccda863277356bf125afee3a3be1c"));
set_progress(0.610364);
assert(apply_patch_check("/system/app/TelephonyProvider.apk", "81dd4803b825f880e702a4f9531ec7b5d109d66b", "dcede80f828023cc12dac11e8f6b0be65ca8e456"));
set_progress(0.610970);
assert(apply_patch_check("/system/app/ThemeManager.apk", "938eed5b214a21c7948a2bcc1c03f197874c4e2d", "c5676c1f7d1ac400cbd07d2f8ec01e075ae721f1"));
set_progress(0.617980);
assert(apply_patch_check("/system/app/Updater.apk", "2c5184a2e51a6269ca0a05a2fe1eb1f25aed1146", "90bb2c1ac98c234e018259ec91f635ac495b338b"));
set_progress(0.629348);
assert(apply_patch_check("/system/app/VpnDialogs.apk", "a7d4d5814733c95c7ae4ca1a6271c960a4dcbb76", "e18060a7528772c799f5dcec264cbf2995191542"));
set_progress(0.629431);
assert(apply_patch_check("/system/app/Weather.apk", "9616d8c099dd029217245bea2859be517159ff45", "80e3c79371b1b4920cfda614f2c63772a96cb129"));
set_progress(0.639847);
assert(apply_patch_check("/system/app/WeatherProvider.apk", "640973579e263fe4f53f89f65d3b0fca84cd95f2", "97f4705c115246ae315230e8d288c31513c9969a"));
set_progress(0.639915);
assert(apply_patch_check("/system/app/XiaomiServiceFramework.apk", "5f34da49caebc565c94cd46870948885f48e1a8f", "fc82ab4416919d48335251765cae6413aac00caf"));
set_progress(0.663088);
assert(apply_patch_check("/system/app/YellowPage.apk", "ef1d18366564d5bea56c56fa1d9172f2f411f53f", "4570e1c94538c582a21a4169295d9107c246cc0f"));
set_progress(0.668800);
assert(apply_patch_check("/system/build.prop", "f76480e639a073ecc8ffa252d50deb6001b7432f", "e3cde3676d264e4e9f4988e8603c05e5024630d3"));
set_progress(0.668845);
assert(apply_patch_check("/system/framework/HTCExtension.jar", "d05f6321a3f053965e8e1d68631428e6eed7bb2f", "c104c4f01c53915ac3bd3f147fced9ca5eef011e"));
set_progress(0.687741);
assert(apply_patch_check("/system/framework/android.policy.jar", "77900ef958642159ac72d4e8e97370c2506f84f9", "6d74a53654200f5ada5cf780a490c9eda9784ed3"));
set_progress(0.689433);
assert(apply_patch_check("/system/framework/framework-miui-res.apk", "bea6e77121d9a23312174bc3edcf881227d00527", "f1d2eb572f9c9cdf5a81ebc4fc2caf91309bafa9"));
set_progress(0.752633);
assert(apply_patch_check("/system/framework/framework-res.apk", "fe1944e0495bd7497761b7c7f79949389ef298be", "c1427e5202afb06f8041ad9f9afdbe7eeaf5eae2"));
set_progress(0.870259);
assert(apply_patch_check("/system/framework/framework.jar", "30955311403f2bb6eba17c002fd00cf3835e3c53", "6230c69b75d82f1936457094fff39379bcab9dbf"));
set_progress(0.897059);
assert(apply_patch_check("/system/framework/framework2.jar", "8df264006c0bf4f457c62802e5f41148e9fa9aef", "9eaa0327703c241c3caab6c98fab0f2133cf3132"));
set_progress(0.916206);
assert(apply_patch_check("/system/framework/services.jar", "a34088cb9adc31a8b48effb76eb5a82123c66c3e", "eb59886013f91eedda3bcedf48f238bf99aeea8b"));
set_progress(0.925944);
assert(apply_patch_space(17626056));

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

ui_print("Removing unneeded files...");
delete("/system/media/lockscreen/lockscreen_006.jpg",
       "/system/media/theme/miui_mod_icons/com.evernote.ui.HomeActivity.png",
       "/system/media/theme/miui_mod_icons/com.xiachufang.StartPage.png",
       "/system/media/wallpaper/wallpaper_006.jpg",
       "/system/media/theme/miui_mod_icons/com.android.stk.cu.2.png",
       "/system/media/theme/miui_mod_icons/com.xiaomi.xmsf.CloudMessaging.png",
       "/system/recovery.img");
show_progress(0.800000, 0);
ui_print("Patching system files...");
apply_patch("/data/preinstall_apps/VoiceAssist.apk", "-",
            f8c83e49fe6bf59fd3ce783be2efcf38b4ef0ae6, 11097105,
            f909ddbeb12970b803205c8d6890dfdc61d8d6ec, package_extract_file("patch/data/preinstall_apps/VoiceAssist.apk.p"));
set_progress(0.078226);
apply_patch("/system/app/AntiSpam.apk", "-",
            345147d8e4163dcdc018064095cbc00eee01a525, 112178,
            830d8a679390b0a8549a2cb0a52b0be96b1775e4, package_extract_file("patch/system/app/AntiSpam.apk.p"));
set_progress(0.079017);
apply_patch("/system/app/Backup.apk", "-",
            65265d20f983ef81a80a36afa1b6506d33f231eb, 1013977,
            0031a8b892c1fa636bbb3aeaaef478a9d240936c, package_extract_file("patch/system/app/Backup.apk.p"));
set_progress(0.086165);
apply_patch("/system/app/Browser.apk", "-",
            0add6350bc1d825d3e9b7803e18d90df4a1b7f6d, 7577239,
            24cdec76a20fd5bd05d29539cc51838b82429cb3, package_extract_file("patch/system/app/Browser.apk.p"));
set_progress(0.139579);
apply_patch("/system/app/BugReport.apk", "-",
            15bc73052381116e6455e47cd83d7cff24d4449c, 179485,
            180b8861c2ee00543f384cf6f956eb6bf3a9bc98, package_extract_file("patch/system/app/BugReport.apk.p"));
set_progress(0.140844);
apply_patch("/system/app/Calculator.apk", "-",
            f7ce2ca6a5e83406bc04f5d9a93c9c2fb9db60a2, 2008050,
            3b9eed94db833799322d44c92f6aae75fbe40869, package_extract_file("patch/system/app/Calculator.apk.p"));
set_progress(0.154999);
apply_patch("/system/app/Calendar.apk", "-",
            4b2b1dc35e5aad33bd71e14169893ac985d4c869, 1301148,
            5c85f051bfe76ea1e7334ea82549b49eaf075ff1, package_extract_file("patch/system/app/Calendar.apk.p"));
set_progress(0.164171);
apply_patch("/system/app/CalendarProvider.apk", "-",
            3871d923630f979a566e16e599b47685ffd43db2, 164810,
            f907c95167759396ed0cc32ae9fab4199ec94186, package_extract_file("patch/system/app/CalendarProvider.apk.p"));
set_progress(0.165333);
apply_patch("/system/app/Camera.apk", "-",
            6984ab66eb6a2370eae3b0f083527e0de2f3e8e9, 5837153,
            2c95d5a223e881ec3cd7573bc62a2cc605521777, package_extract_file("patch/system/app/Camera.apk.p"));
set_progress(0.206481);
apply_patch("/system/app/CloudService.apk", "-",
            bd81d855a0eb82325f7e7b479855af7234003e52, 259741,
            e52a7fa579bbc12c56e8b8f065200c587cb34146, package_extract_file("patch/system/app/CloudService.apk.p"));
set_progress(0.208312);
apply_patch("/system/app/Contacts.apk", "-",
            90b2e484334a34293079736faf01a9916524e626, 6536184,
            5ea2ed77cf878e0f6e23428ff707c39241e41434, package_extract_file("patch/system/app/Contacts.apk.p"));
set_progress(0.254387);
apply_patch("/system/app/ContactsProvider.apk", "-",
            e42f920b021bdf01e4a71d8f38774e3b88a1e4bc, 324486,
            500662fdfb87481f496329b89721ec201860ea29, package_extract_file("patch/system/app/ContactsProvider.apk.p"));
set_progress(0.256674);
apply_patch("/system/app/DataHubProvider.apk", "-",
            acb6c615abf7b19b3754003946f30e45d9601832, 11015,
            3c1b954de13b31dd9ed636e262e944a889746208, package_extract_file("patch/system/app/DataHubProvider.apk.p"));
set_progress(0.256752);
apply_patch("/system/app/DeskClock.apk", "-",
            8ba1020b87637cdcfbb14ebc4e5b1a92dfdae38d, 1522633,
            a1da37bcfbaed8e6d45f88f666c344a93cb50782, package_extract_file("patch/system/app/DeskClock.apk.p"));
set_progress(0.267485);
apply_patch("/system/app/DownloadProvider.apk", "-",
            7c245f530549831f3d391e207bcded3bc749173e, 130130,
            05f595056cf2201e7e3172b49372625cefdfb8bb, package_extract_file("patch/system/app/DownloadProvider.apk.p"));
set_progress(0.268403);
apply_patch("/system/app/DownloadProviderUi.apk", "-",
            e4eb1c602cd656cf8d3b6749caacb027768e9914, 85368,
            950165244b25050a5743cd3a7e77955d5b5e39b4, package_extract_file("patch/system/app/DownloadProviderUi.apk.p"));
set_progress(0.269004);
apply_patch("/system/app/FileExplorer.apk", "-",
            eb43a13f5d5697a72f770b8d8640d48edc50c44f, 2245829,
            85130280067e5ebcefc6afaeadb06f0825f849f1, package_extract_file("patch/system/app/FileExplorer.apk.p"));
set_progress(0.284836);
apply_patch("/system/app/HTCAlbum.apk", "-",
            08b6336b2fb87cc433ab746e0e8507cfba7c6c04, 6499264,
            2a1d5fc4c915433c8987ab54bb6d83db9ad7553e, package_extract_file("patch/system/app/HTCAlbum.apk.p"));
set_progress(0.330651);
apply_patch("/system/app/MiuiGallery.apk", "-",
            44b1f9bd01997696b62c38d5ab7b8f8450d91f20, 4487562,
            49a7b0d5bd50011fea3a91bb907758cb4ba60ea4, package_extract_file("patch/system/app/MiuiGallery.apk.p"));
set_progress(0.362285);
apply_patch("/system/app/MiuiHome.apk", "-",
            f3b849588b75c3210375eccd6fc2317eb14dc4f6, 3101899,
            2cdcff8698ec7801097a86991c2cd8e454b96e09, package_extract_file("patch/system/app/MiuiHome.apk.p"));
set_progress(0.384151);
apply_patch("/system/app/MiuiSystemUI.apk", "-",
            515eea852c76eb78d0acfd5599bf08f1133bdfc3, 1858478,
            df1e0301903448229b4b497df7dbd8dd48f5a549, package_extract_file("patch/system/app/MiuiSystemUI.apk.p"));
set_progress(0.397252);
apply_patch("/system/app/Mms.apk", "-",
            87675930a2cd2b6ce2463c0cadb1c4e049ce6d3d, 3352243,
            9c58433253c5755d8179109c0954403acc5a2adb, package_extract_file("patch/system/app/Mms.apk.p"));
set_progress(0.420882);
apply_patch("/system/app/Music.apk", "-",
            95f3be7561cdbcb551fa48ad905491336b5bcc64, 6967452,
            4a6657ebfa8769f29099e10dcd731b8e5ed03682, package_extract_file("patch/system/app/Music.apk.p"));
set_progress(0.469998);
apply_patch("/system/app/NetworkAssistant.apk", "-",
            c2e3439f07af114488e2670861c64327e1f352dc, 674898,
            a67d29d54351807a65140e181a5cc2f13a81c6c0, package_extract_file("patch/system/app/NetworkAssistant.apk.p"));
set_progress(0.474755);
apply_patch("/system/app/Notes.apk", "-",
            f488a0d15fc6055f1d461aee4252843e2886220d, 3272116,
            0a46f69c542bfdcf8d8d57c8b2c2ec870d911de1, package_extract_file("patch/system/app/Notes.apk.p"));
set_progress(0.497821);
apply_patch("/system/app/PackageInstaller.apk", "-",
            994f4a3ef18cf5ea306a402af89fa267691627ed, 283581,
            33544886f7bf2722ea1fdf9501548e57338658eb, package_extract_file("patch/system/app/PackageInstaller.apk.p"));
set_progress(0.499820);
apply_patch("/system/app/Phone.apk", "-",
            e91717b1b6a9eeb0035a17a8a38964bc7a77e3e3, 2988730,
            56735d9a7b28093511697d81e112a97b46e6ecc1, package_extract_file("patch/system/app/Phone.apk.p"));
set_progress(0.520889);
apply_patch("/system/app/Provision.apk", "-",
            945a594479dc3a484a8687afbfb0df1cea2387dc, 1085769,
            b943965c0a27b651916c2bd087540fff21c35c49, package_extract_file("patch/system/app/Provision.apk.p"));
set_progress(0.528542);
apply_patch("/system/app/QuickSearchBox.apk", "-",
            638bcc1c10ad52b1348bb22d61650b2a3b6b0ac4, 389660,
            4494e934a636188151f2f1753064a3a353a884df, package_extract_file("patch/system/app/QuickSearchBox.apk.p"));
set_progress(0.531289);
apply_patch("/system/app/Settings.apk", "-",
            34347065f31166cede0f9dee55d078687d4387d1, 14076614,
            accda2e53e399c2d489e74010b3a5e0771e8496d, package_extract_file("patch/system/app/Settings.apk.p"));
set_progress(0.630519);
apply_patch("/system/app/SoundRecorder.apk", "-",
            f050f966d72450cca9a0944f0af313a93346afa5, 3643552,
            bf847e2b5f3d7de82afac8dbdd72461af2e14bb3, package_extract_file("patch/system/app/SoundRecorder.apk.p"));
set_progress(0.656203);
apply_patch("/system/app/Stk.apk", "-",
            7c6db8a1ed408207fb47908c4b4db8659ce42245, 55786,
            c033f0d586503ecee992baf0aecf66f2fb761fe9, package_extract_file("patch/system/app/Stk.apk.p"));
set_progress(0.656596);
apply_patch("/system/app/SuperMarket.apk", "-",
            e1594ee0c261f45fc1d9a00ec51c1c7ac0a941c9, 649393,
            a8cbe291fa4ccda863277356bf125afee3a3be1c, package_extract_file("patch/system/app/SuperMarket.apk.p"));
set_progress(0.661174);
apply_patch("/system/app/TelephonyProvider.apk", "-",
            81dd4803b825f880e702a4f9531ec7b5d109d66b, 90849,
            dcede80f828023cc12dac11e8f6b0be65ca8e456, package_extract_file("patch/system/app/TelephonyProvider.apk.p"));
set_progress(0.661815);
apply_patch("/system/app/ThemeManager.apk", "-",
            938eed5b214a21c7948a2bcc1c03f197874c4e2d, 1050430,
            c5676c1f7d1ac400cbd07d2f8ec01e075ae721f1, package_extract_file("patch/system/app/ThemeManager.apk.p"));
set_progress(0.669219);
apply_patch("/system/app/Updater.apk", "-",
            2c5184a2e51a6269ca0a05a2fe1eb1f25aed1146, 1855112,
            90bb2c1ac98c234e018259ec91f635ac495b338b, package_extract_file("patch/system/app/Updater.apk.p"));
set_progress(0.682296);
apply_patch("/system/app/VpnDialogs.apk", "-",
            a7d4d5814733c95c7ae4ca1a6271c960a4dcbb76, 12390,
            e18060a7528772c799f5dcec264cbf2995191542, package_extract_file("patch/system/app/VpnDialogs.apk.p"));
set_progress(0.682384);
apply_patch("/system/app/Weather.apk", "-",
            9616d8c099dd029217245bea2859be517159ff45, 1561704,
            80e3c79371b1b4920cfda614f2c63772a96cb129, package_extract_file("patch/system/app/Weather.apk.p"));
set_progress(0.693393);
apply_patch("/system/app/WeatherProvider.apk", "-",
            640973579e263fe4f53f89f65d3b0fca84cd95f2, 10223,
            97f4705c115246ae315230e8d288c31513c9969a, package_extract_file("patch/system/app/WeatherProvider.apk.p"));
set_progress(0.693465);
apply_patch("/system/app/XiaomiServiceFramework.apk", "-",
            5f34da49caebc565c94cd46870948885f48e1a8f, 3473019,
            fc82ab4416919d48335251765cae6413aac00caf, package_extract_file("patch/system/app/XiaomiServiceFramework.apk.p"));
set_progress(0.717947);
apply_patch("/system/app/YellowPage.apk", "-",
            ef1d18366564d5bea56c56fa1d9172f2f411f53f, 857565,
            4570e1c94538c582a21a4169295d9107c246cc0f, package_extract_file("patch/system/app/YellowPage.apk.p"));
set_progress(0.723992);
apply_patch("/system/framework/HTCExtension.jar", "-",
            d05f6321a3f053965e8e1d68631428e6eed7bb2f, 2831591,
            c104c4f01c53915ac3bd3f147fced9ca5eef011e, package_extract_file("patch/system/framework/HTCExtension.jar.p"));
set_progress(0.743953);
apply_patch("/system/framework/android.policy.jar", "-",
            77900ef958642159ac72d4e8e97370c2506f84f9, 253605,
            6d74a53654200f5ada5cf780a490c9eda9784ed3, package_extract_file("patch/system/framework/android.policy.jar.p"));
set_progress(0.745740);
apply_patch("/system/framework/framework-miui-res.apk", "-",
            bea6e77121d9a23312174bc3edcf881227d00527, 9597342,
            f1d2eb572f9c9cdf5a81ebc4fc2caf91309bafa9, package_extract_file("patch/system/framework/framework-miui-res.apk.p"));
set_progress(0.813394);
apply_patch("/system/framework/framework-res.apk", "-",
            fe1944e0495bd7497761b7c7f79949389ef298be, 18118843,
            c1427e5202afb06f8041ad9f9afdbe7eeaf5eae2, package_extract_file("patch/system/framework/framework-res.apk.p"));
set_progress(0.941119);
apply_patch("/system/framework/framework.jar", "-",
            30955311403f2bb6eba17c002fd00cf3835e3c53, 4016065,
            6230c69b75d82f1936457094fff39379bcab9dbf, package_extract_file("patch/system/framework/framework.jar.p"));
set_progress(0.969429);
apply_patch("/system/framework/framework2.jar", "-",
            8df264006c0bf4f457c62802e5f41148e9fa9aef, 2870359,
            9eaa0327703c241c3caab6c98fab0f2133cf3132, package_extract_file("patch/system/framework/framework2.jar.p"));
set_progress(0.989663);
apply_patch("/system/framework/services.jar", "-",
            a34088cb9adc31a8b48effb76eb5a82123c66c3e, 1459697,
            eb59886013f91eedda3bcedf48f238bf99aeea8b, package_extract_file("patch/system/framework/services.jar.p"));
set_progress(0.999953);
show_progress(0.100000, 10);
ui_print("Unpacking new files...");
package_extract_dir("system", "/system");
package_extract_dir("data", "/data");
ui_print("Symlinks and permissions...");
set_perm_recursive(1000, 1000, 0755, 0644, "/data/preinstall_apps");
set_perm_recursive(0, 0, 0755, 0644, "/system");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
set_perm(0, 3003, 06755, "/system/bin/ip");
set_perm(0, 1000, 0750, "/system/bin/iptables");
set_perm(0, 3003, 02750, "/system/bin/netcfg");
set_perm(0, 3004, 02755, "/system/bin/ping");
set_perm(0, 2000, 06750, "/system/bin/run-as");
set_perm(0, 1000, 0750, "/system/bin/tc");
set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
set_perm(0, 0, 0755, "/system/etc/bluetooth");
set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");
set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");
set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
set_perm(1000, 3003, 0640, "/system/etc/gps.conf");
set_perm(0, 0, 0400, "/system/etc/hsml.key");
set_perm_recursive(0, 0, 0777, 0777, "/system/etc/init.d");
set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor");
set_perm_recursive(0, 0, 0755, 0644, "/system/vendor/lib");
set_perm(0, 2000, 0755, "/system/vendor/lib");
set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor/lib/drm");
set_perm(0, 0, 0644, "/system/vendor/lib/drm/libdrmwvmplugin.so");
set_perm(0, 0, 0644, "/system/vendor/pittpatt/models/detection/multi_pose_face_landmark_detectors.7/left_eye-y0-yi45-p0-pi45-r0-ri20.lg_32/full_model.bin");
set_perm(0, 0, 0644, "/system/vendor/pittpatt/models/detection/multi_pose_face_landmark_detectors.7/nose_base-y0-yi45-p0-pi45-r0-ri20.lg_32/full_model.bin");
set_perm(0, 0, 0644, "/system/vendor/pittpatt/models/detection/multi_pose_face_landmark_detectors.7/right_eye-y0-yi45-p0-pi45-r0-ri20.lg_32-2/full_model.bin");
set_perm(0, 0, 0644, "/system/vendor/pittpatt/models/detection/yaw_roll_face_detectors.6/head-y0-yi45-p0-pi45-r0-ri30.4a-v24/full_model.bin");
set_perm(0, 0, 0644, "/system/vendor/pittpatt/models/detection/yaw_roll_face_detectors.6/head-y0-yi45-p0-pi45-rn30-ri30.5-v24/full_model.bin");
set_perm(0, 0, 0644, "/system/vendor/pittpatt/models/detection/yaw_roll_face_detectors.6/head-y0-yi45-p0-pi45-rp30-ri30.5-v24/full_model.bin");
set_perm(0, 0, 0644, "/system/vendor/pittpatt/models/recognition/face.face.y0-y0-22-b-N/full_model.bin");
set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
set_perm(0, 0, 06755, "/system/xbin/busybox");
set_perm(0, 1000, 06750, "/system/xbin/shelld");
set_perm(0, 0, 06755, "/system/xbin/su");
ui_print("Patching remaining system files...");
apply_patch("/system/build.prop", "-",
            f76480e639a073ecc8ffa252d50deb6001b7432f, 6720,
            e3cde3676d264e4e9f4988e8603c05e5024630d3, package_extract_file("patch/system/build.prop.p"));
set_perm_recursive(0, 2000, 06755, 06755, "/system/xbin");
set_perm(0, 0, 0644, "/system/build.prop");
unmount("/data");
unmount("/system");
