getprop("ro.product.device") == "cepheus" || abort("E3004: This package is for \"cepheus\" devices; this is a \"" + getprop("ro.product.device") + "\".");
ui_print("Source: Xiaomi/cepheus/cepheus:11/RKQ1.200826.002/V12.5.5.0.RFACNXM:user/release-keys");
ui_print("Target: Xiaomi/cepheus/cepheus:11/RKQ1.200826.002/V12.5.6.0.RFACNXM:user/release-keys");
ui_print("Verifying current system...");
getprop("ro.build.fingerprint") == "Xiaomi/cepheus/cepheus:11/RKQ1.200826.002/V12.5.5.0.RFACNXM:user/release-keys" ||
    getprop("ro.build.fingerprint") == "Xiaomi/cepheus/cepheus:11/RKQ1.200826.002/V12.5.6.0.RFACNXM:user/release-keys" ||
    abort("E3001: Package expects build fingerprint of Xiaomi/cepheus/cepheus:11/RKQ1.200826.002/V12.5.5.0.RFACNXM:user/release-keys or Xiaomi/cepheus/cepheus:11/RKQ1.200826.002/V12.5.6.0.RFACNXM:user/release-keys; this device has " + getprop("ro.build.fingerprint") + ".");
patch_partition_check(concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:c9fba70fa8cc635eadf8ff84736ee09e9471e169"),
                      concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:7797ab6d2f15c32b5c01919573016ad7d9f49242")) ||
    abort(concat("E3005: \"",concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:c9fba70fa8cc635eadf8ff84736ee09e9471e169"),"\" or \"",concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:7797ab6d2f15c32b5c01919573016ad7d9f49242"),"\" has unexpected contents."));
apply_patch_space(134217728) || abort("E3006: Not enough free space on /cache to apply patches.");
if (range_sha1("/dev/block/bootdevice/by-name/system", "1666,1,433,508,522,537,545,547,552,554,555,931,932,933,934,1123,1124,1452,1453,1455,1456,2010,2011,2014,2015,2315,2316,3704,3705,7757,7758,13785,13786,22108,22109,22111,22112,22116,22117,22118,22119,22227,22228,22281,22282,22354,22355,22357,22359,23474,23475,23477,23479,29623,29624,29626,29628,29629,29630,29752,29753,29755,29757,29760,29761,29864,29866,30548,30549,30551,30552,30556,30557,30566,30567,30570,30571,32768,32771,35455,35456,35458,35460,35461,35462,35473,35475,36270,36271,36273,36274,36904,36905,37769,37770,37772,37773,38026,38027,38028,38029,38059,38060,38110,38111,38184,38185,38187,38188,38193,38195,39394,39395,39397,39398,39617,39618,39620,39621,40238,40240,40585,40587,41034,41035,41037,41038,41102,41103,41104,41105,41106,41107,41109,41110,41124,41126,41279,41280,41282,41284,41343,41344,41479,41480,41482,41483,41488,41489,45059,45060,48398,48399,49669,49670,53218,53219,58198,58199,62928,62929,64698,64699,65536,65537,70144,70145,70147,70149,70199,70202,70208,70209,71293,71295,71305,71307,71552,71553,71613,71614,71628,71629,71638,71639,72903,72906,72912,72913,72918,72919,72930,72931,73065,73066,73069,73070,73090,74404,77215,77216,77225,77226,77231,77232,77234,77235,83861,83862,83949,83950,84033,84034,86933,86934,87185,87186,87190,87191,87222,87223,88240,88241,90386,90387,91914,91915,97869,97871,98304,98307,99442,99443,104678,104679,104682,104683,105043,105045,105098,105099,105105,105106,105120,105121,105749,105750,107262,107263,107529,107530,107712,107713,111255,111256,112314,112315,116654,116655,121261,121262,125046,125047,129256,129257,130095,130096,130116,130119,131072,131073,132812,132815,136313,136314,136507,136508,136906,136907,137084,137085,138075,138078,139451,139452,144360,144361,145679,145680,148362,148363,162065,162066,162229,162232,163840,163843,164779,164782,166984,166985,167010,167011,167014,167017,169481,169482,169544,169545,169565,169568,170373,170376,170395,170396,170439,170440,170948,170949,171998,171999,172069,172070,172139,172140,172292,172293,183489,183490,183495,183496,184008,184009,189341,189344,194008,194009,194014,194015,195151,195152,195886,195887,195893,195894,196608,196609,198671,198672,201211,201212,216290,216292,221873,221874,224359,224361,227189,227190,227637,227638,227669,227670,227675,227676,227687,227688,228063,228064,228087,228088,229376,229379,231172,231173,231175,231176,231383,231384,231987,231990,232003,232006,232009,232010,232717,232718,233287,233288,234162,234165,238886,238887,244853,244856,246912,246913,247138,247139,248770,248771,250842,250843,251207,251208,253198,253208,253539,253540,256856,256857,259485,259490,259491,259492,259493,259494,259495,259496,259497,259498,259499,259500,259501,259503,259865,259866,261712,261713,262144,262145,266237,266238,267670,267671,269531,269532,274876,274877,282086,282087,282395,282396,282419,282420,282432,282433,282440,282441,282442,282443,282507,282508,282530,282531,282598,282601,282603,282604,282607,282608,282671,282672,282675,282680,282681,282682,282683,282684,282685,282686,283480,283481,283487,283488,284041,284043,284596,284598,284599,284600,284601,284602,284603,284604,284605,284606,284607,284608,284609,284610,284611,284612,284613,284616,286076,286078,286217,286218,286224,286226,286484,286485,286487,286489,287037,287038,287068,287069,287083,287084,287402,287403,287554,287555,287563,287565,288881,288882,294912,294915,303206,303207,311074,311075,313173,313174,313612,313613,317267,317268,322339,322340,327680,327681,334528,335038,335073,335361,335375,335377,335388,335389,350841,350842,354396,354397,355946,355947,356279,356280,356304,356305,356857,356865,356899,357215,360448,360449,361568,361569,368884,368885,372872,372873,377777,377778,380026,380027,380465,380466,380526,380527,388923,388934,389247,389693,393216,393217,393868,393869,414889,414890,423228,423229,425984,425985,435232,435234,442930,442931,453846,453849,455720,455721,455925,455926,458752,458753,460253,460255,460411,460412,460492,460493,460710,460711,461009,461010,461148,461149,462965,462969,462988,462989,462992,462993,463016,463017,463088,463089,463103,463104,463113,463114,463123,463124,463137,463138,463159,463160,463205,463207,463208,463209,463210,463211,463212,463213,463214,463215,463217,463218,463222,463223,463224,463225,463227,463228,463229,463230,463231,463232,463234,463235,463236,463237,463238,463239,463240,463241,463242,463243,463244,463245,463246,463247,463248,463249,463250,463251,463253,463254,463256,463257,463258,463261,463263,463265,463273,463274,463280,463282,463288,463289,463295,463296,463300,463301,464522,464523,464628,464630,464640,464642,464660,464662,464702,464703,464705,468746,468751,468998,469206,469239,469240,469241,469499,469501,469514,469515,469521,469522,469528,469529,469543,469544,469550,469551,469554,469555,469560,469561,469563,469564,469568,469569,469573,469574,469584,469585,469588,469589,469599,469600,469610,469611,469625,469626,469640,469641,469654,469655,469664,469665,469668,469669,469674,469675,469677,469678,469682,469683,469689,469690,469694,469695,469701,469702,469707,469708,469713,469714,469718,469719,469722,469723,469731,469732,469736,469737,469748,469749,469754,469755,469760,469761,469766,469767,469769,469770,469772,469773,469778,469779,469783,469784,469796,469797,469804,469805,469808,469809,469811,469812,469816,469817,469819,469820,469835,469836,469839,469840,469842,469843,469847,469848,469853,469854,469866,469867,469869,469870,469873,469874,469876,469877,469879,469880,469882,469883,469885,469886,469888,469889,469891,469892,469895,469896,469898,469899,469902,469903,469905,469906,469908,469909,469911,469912,469914,469915,469919,469920,469922,469923,469925,469926,469929,469930,469932,469933,469936,469937,469939,469940,469942,469943,469947,469948,469953,469954,469957,469958,469961,469962,469965,469966,469969,469970,469972,469973,469976,469977,469980,469981,469985,469986,469989,469990,469998,469999,470013,470014,470018,470019,470021,470022,470028,470029,470039,470040,470047,470048,470051,470052,470058,470059,470065,470066,470070,470071,470088,470089,470091,470092,470097,470098,470105,470106,470108,470109,470112,470113,470118,470119,470124,470125,470131,470132,470143,470144,470146,470147,470152,470153,470162,470163,470173,470174,470178,470179,470183,470184,470198,470199,470202,470203,470216,470217,470220,470221,470226,470227,470231,470232,470236,470237,470241,470242,470245,470246,470256,470257,470261,470262,470267,470268,470279,470280,470292,470293,470304,470306,470320,470321,470332,470333,470335,470336,470338,470339,470344,470345,470352,470353,470355,470356,470358,470359,470373,470374,470378,470379,470383,470384,470388,470389,470393,470394,470409,470410,470412,470413,470418,470419,470422,470423,470427,470428,470434,470435,470442,470443,470448,470449,470453,470454,470459,470460,470464,470465,470469,470470,470478,470479,470489,470490,470499,470500,470506,470507,470515,470516,470524,470525,470528,470529,470531,470532,470540,470541,470553,470554,470566,470567,470570,470571,470577,470578,470584,470585,470589,470590,470603,470604,470615,470616,470624,470625,470636,470637,470639,470640,470648,470649,470654,470655,470657,470658,470663,470664,470668,470669,470675,470676,470683,470684,470689,470690,470694,470695,470700,470701,470704,470705,470710,470711,470718,470719,470733,470734,470736,470737,470745,470746,470751,470752,470754,470755,470757,470758,470768,470769,470774,470775,470777,470778,470792,470793,470808,470809,470815,470816,470820,470821,470826,470827,470829,470830,470832,470833,470837,470838,470841,470842,470846,470847,470852,470853,470862,470863,470868,470869,470872,470873,470878,470879,470885,470886,470890,470891,470895,470896,470910,470911,470926,470927,470929,470930,470942,470943,470947,470948,470952,470953,470955,470956,470960,470961,470963,470964,470969,470970,470974,470975,470980,470981,470983,470984,470986,470987,470989,470990,471004,471005,471037,471040,474068,474069,474662,474663,475782,475783,477183,477184,477236,477237,478600,478602,479974,479975,485123,485124,485132,485133,485203,485204,491520,491521,512337,512338,515523,515524,515575,515578,522012,522013,522167,522168,522173,522174,522465,522466,522496,522497,524288,524289,525156,525157,525210,525211,533924,533925,534200,534201,537748,537750,538026,538027,538035,538036,538933,538934,540216,540217,541979,541980,544978,544979,544991,544992,545000,545001,546044,546045,546049,546050,546479,546480,546748,546749,546770,546771,546776,546777,548809,548810,549176,549177,556689,556690,557056,557057,558782,558785,562156,562157,569803,569804,574231,574232,579166,579167,588274,588275,589824,589825,617877,617880,619562,619565,622444,622445,622592,622593,637546,637547,642759,642760,645488,645489,655360,655361,670321,670322,672576,672577,676561,676562,676579,676580,676895,676896,682410,682411,684478,684479,684498,684499,688128,688129,692818,692819,692830,692831,693614,693615,703472,703474,705669,705670,705672,705673,708144,708145,708149,708150,712163,712164,712228,712229,720896,720897,723544,723545,728155,728156,728234,728235,728239,728240,728299,728300,728595,728596,728610,728611,728748,728749,734316,734317,735121,735122,735288,735289,735294,735295,735307,735308,737408,737411,737416,737417,737419,737420,737536,737537,737549,737550,752115,752116,753664,753665,768303,768304,769710,769711,777014,777015,783634,783635,783638,783640,783802,783803,783804,783805,783807,783808,783822,783823,783826,783828,783829,783831,783849,783850,783856,783857,783895,783898,784347,784348,784719,784720,786205,786206,786296,786298,786300,786301,786303,786304,786306,786307,786309,786310,786312,786313,786315,786316,786326,786327,786329,786330,786332,786333,786335,786336,786338,786339,786341,786342,786361,786362,786382,786383,786389,786390,786410,786411,786427,786428,786432,786433,786938,786939,786956,786957,786962,786963,786982,786983,786997,786998,787002,787003,787022,787023,787029,787030,787050,787051,787066,787067,787071,787072,787074,787075,787077,787078,787080,787081,787083,787084,787086,787087,787095,787096,787098,787099,787101,787102,787104,787105,787107,787108,787118,787120,788549,788550,804614,804615,811082,811084,813843,813844,819200,819203,819745,819746,820383,820386,820393,820394,820400,820401,820415,820416,820474,820475,820481,820482,820710,820711,820741,820742,820936,820937,820940,820941,820944,820945,820949,820950,820972,820973,821684,821685,821689,821690,821692,821693,821704,821705,821715,821716,821719,821720,821723,821726,821733,821734,821746,821747,821749,821750,821755,821756,821760,821761,821790,821791,821799,821800,821807,821808,821821,821822,821837,821838,822040,822042,822043,822044,822056,822057,822058,822059,822060,822061,822070,822071,822094,822095,822137,822142,822145,822148,822151,822154,822157,822159,822164,822165,822170,822173,822178,822179,822182,822184,822265,822266,822274,822275,823675,823676,824277,824278,824297,824298,829960,829962,835556,835557,835610,835611,838997,838998,839836,839837,840654,840655,840686,840687,851609,851610,851968,851969,857130,857131,858336,858338,858391,858392,859166,859167,859209,859210,860790,860791,875561,875562,884736,884739,886669,886670,895869,895872,896554,896555,896582,896583,896611,896614,897407,897408,897415,897416,897694,897697,897717,897718,897735,897737,898113,898114,898117,898118,898138,898139,898251,898252,898294,898296,898305,898306,898432,898433,898637,898638,898639,898641,903007,917316,917503,917504") == "aecfd1457b3f22cd17721bbeb7a2d7faf087fc7b" || block_image_verify("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat")) then
ui_print("Verified system image...");
else
check_first_block("/dev/block/bootdevice/by-name/system");
ifelse (block_image_recover("/dev/block/bootdevice/by-name/system", "1666,1,433,508,522,537,545,547,552,554,555,931,932,933,934,1123,1124,1452,1453,1455,1456,2010,2011,2014,2015,2315,2316,3704,3705,7757,7758,13785,13786,22108,22109,22111,22112,22116,22117,22118,22119,22227,22228,22281,22282,22354,22355,22357,22359,23474,23475,23477,23479,29623,29624,29626,29628,29629,29630,29752,29753,29755,29757,29760,29761,29864,29866,30548,30549,30551,30552,30556,30557,30566,30567,30570,30571,32768,32771,35455,35456,35458,35460,35461,35462,35473,35475,36270,36271,36273,36274,36904,36905,37769,37770,37772,37773,38026,38027,38028,38029,38059,38060,38110,38111,38184,38185,38187,38188,38193,38195,39394,39395,39397,39398,39617,39618,39620,39621,40238,40240,40585,40587,41034,41035,41037,41038,41102,41103,41104,41105,41106,41107,41109,41110,41124,41126,41279,41280,41282,41284,41343,41344,41479,41480,41482,41483,41488,41489,45059,45060,48398,48399,49669,49670,53218,53219,58198,58199,62928,62929,64698,64699,65536,65537,70144,70145,70147,70149,70199,70202,70208,70209,71293,71295,71305,71307,71552,71553,71613,71614,71628,71629,71638,71639,72903,72906,72912,72913,72918,72919,72930,72931,73065,73066,73069,73070,73090,74404,77215,77216,77225,77226,77231,77232,77234,77235,83861,83862,83949,83950,84033,84034,86933,86934,87185,87186,87190,87191,87222,87223,88240,88241,90386,90387,91914,91915,97869,97871,98304,98307,99442,99443,104678,104679,104682,104683,105043,105045,105098,105099,105105,105106,105120,105121,105749,105750,107262,107263,107529,107530,107712,107713,111255,111256,112314,112315,116654,116655,121261,121262,125046,125047,129256,129257,130095,130096,130116,130119,131072,131073,132812,132815,136313,136314,136507,136508,136906,136907,137084,137085,138075,138078,139451,139452,144360,144361,145679,145680,148362,148363,162065,162066,162229,162232,163840,163843,164779,164782,166984,166985,167010,167011,167014,167017,169481,169482,169544,169545,169565,169568,170373,170376,170395,170396,170439,170440,170948,170949,171998,171999,172069,172070,172139,172140,172292,172293,183489,183490,183495,183496,184008,184009,189341,189344,194008,194009,194014,194015,195151,195152,195886,195887,195893,195894,196608,196609,198671,198672,201211,201212,216290,216292,221873,221874,224359,224361,227189,227190,227637,227638,227669,227670,227675,227676,227687,227688,228063,228064,228087,228088,229376,229379,231172,231173,231175,231176,231383,231384,231987,231990,232003,232006,232009,232010,232717,232718,233287,233288,234162,234165,238886,238887,244853,244856,246912,246913,247138,247139,248770,248771,250842,250843,251207,251208,253198,253208,253539,253540,256856,256857,259485,259490,259491,259492,259493,259494,259495,259496,259497,259498,259499,259500,259501,259503,259865,259866,261712,261713,262144,262145,266237,266238,267670,267671,269531,269532,274876,274877,282086,282087,282395,282396,282419,282420,282432,282433,282440,282441,282442,282443,282507,282508,282530,282531,282598,282601,282603,282604,282607,282608,282671,282672,282675,282680,282681,282682,282683,282684,282685,282686,283480,283481,283487,283488,284041,284043,284596,284598,284599,284600,284601,284602,284603,284604,284605,284606,284607,284608,284609,284610,284611,284612,284613,284616,286076,286078,286217,286218,286224,286226,286484,286485,286487,286489,287037,287038,287068,287069,287083,287084,287402,287403,287554,287555,287563,287565,288881,288882,294912,294915,303206,303207,311074,311075,313173,313174,313612,313613,317267,317268,322339,322340,327680,327681,334528,335038,335073,335361,335375,335377,335388,335389,350841,350842,354396,354397,355946,355947,356279,356280,356304,356305,356857,356865,356899,357215,360448,360449,361568,361569,368884,368885,372872,372873,377777,377778,380026,380027,380465,380466,380526,380527,388923,388934,389247,389693,393216,393217,393868,393869,414889,414890,423228,423229,425984,425985,435232,435234,442930,442931,453846,453849,455720,455721,455925,455926,458752,458753,460253,460255,460411,460412,460492,460493,460710,460711,461009,461010,461148,461149,462965,462969,462988,462989,462992,462993,463016,463017,463088,463089,463103,463104,463113,463114,463123,463124,463137,463138,463159,463160,463205,463207,463208,463209,463210,463211,463212,463213,463214,463215,463217,463218,463222,463223,463224,463225,463227,463228,463229,463230,463231,463232,463234,463235,463236,463237,463238,463239,463240,463241,463242,463243,463244,463245,463246,463247,463248,463249,463250,463251,463253,463254,463256,463257,463258,463261,463263,463265,463273,463274,463280,463282,463288,463289,463295,463296,463300,463301,464522,464523,464628,464630,464640,464642,464660,464662,464702,464703,464705,468746,468751,468998,469206,469239,469240,469241,469499,469501,469514,469515,469521,469522,469528,469529,469543,469544,469550,469551,469554,469555,469560,469561,469563,469564,469568,469569,469573,469574,469584,469585,469588,469589,469599,469600,469610,469611,469625,469626,469640,469641,469654,469655,469664,469665,469668,469669,469674,469675,469677,469678,469682,469683,469689,469690,469694,469695,469701,469702,469707,469708,469713,469714,469718,469719,469722,469723,469731,469732,469736,469737,469748,469749,469754,469755,469760,469761,469766,469767,469769,469770,469772,469773,469778,469779,469783,469784,469796,469797,469804,469805,469808,469809,469811,469812,469816,469817,469819,469820,469835,469836,469839,469840,469842,469843,469847,469848,469853,469854,469866,469867,469869,469870,469873,469874,469876,469877,469879,469880,469882,469883,469885,469886,469888,469889,469891,469892,469895,469896,469898,469899,469902,469903,469905,469906,469908,469909,469911,469912,469914,469915,469919,469920,469922,469923,469925,469926,469929,469930,469932,469933,469936,469937,469939,469940,469942,469943,469947,469948,469953,469954,469957,469958,469961,469962,469965,469966,469969,469970,469972,469973,469976,469977,469980,469981,469985,469986,469989,469990,469998,469999,470013,470014,470018,470019,470021,470022,470028,470029,470039,470040,470047,470048,470051,470052,470058,470059,470065,470066,470070,470071,470088,470089,470091,470092,470097,470098,470105,470106,470108,470109,470112,470113,470118,470119,470124,470125,470131,470132,470143,470144,470146,470147,470152,470153,470162,470163,470173,470174,470178,470179,470183,470184,470198,470199,470202,470203,470216,470217,470220,470221,470226,470227,470231,470232,470236,470237,470241,470242,470245,470246,470256,470257,470261,470262,470267,470268,470279,470280,470292,470293,470304,470306,470320,470321,470332,470333,470335,470336,470338,470339,470344,470345,470352,470353,470355,470356,470358,470359,470373,470374,470378,470379,470383,470384,470388,470389,470393,470394,470409,470410,470412,470413,470418,470419,470422,470423,470427,470428,470434,470435,470442,470443,470448,470449,470453,470454,470459,470460,470464,470465,470469,470470,470478,470479,470489,470490,470499,470500,470506,470507,470515,470516,470524,470525,470528,470529,470531,470532,470540,470541,470553,470554,470566,470567,470570,470571,470577,470578,470584,470585,470589,470590,470603,470604,470615,470616,470624,470625,470636,470637,470639,470640,470648,470649,470654,470655,470657,470658,470663,470664,470668,470669,470675,470676,470683,470684,470689,470690,470694,470695,470700,470701,470704,470705,470710,470711,470718,470719,470733,470734,470736,470737,470745,470746,470751,470752,470754,470755,470757,470758,470768,470769,470774,470775,470777,470778,470792,470793,470808,470809,470815,470816,470820,470821,470826,470827,470829,470830,470832,470833,470837,470838,470841,470842,470846,470847,470852,470853,470862,470863,470868,470869,470872,470873,470878,470879,470885,470886,470890,470891,470895,470896,470910,470911,470926,470927,470929,470930,470942,470943,470947,470948,470952,470953,470955,470956,470960,470961,470963,470964,470969,470970,470974,470975,470980,470981,470983,470984,470986,470987,470989,470990,471004,471005,471037,471040,474068,474069,474662,474663,475782,475783,477183,477184,477236,477237,478600,478602,479974,479975,485123,485124,485132,485133,485203,485204,491520,491521,512337,512338,515523,515524,515575,515578,522012,522013,522167,522168,522173,522174,522465,522466,522496,522497,524288,524289,525156,525157,525210,525211,533924,533925,534200,534201,537748,537750,538026,538027,538035,538036,538933,538934,540216,540217,541979,541980,544978,544979,544991,544992,545000,545001,546044,546045,546049,546050,546479,546480,546748,546749,546770,546771,546776,546777,548809,548810,549176,549177,556689,556690,557056,557057,558782,558785,562156,562157,569803,569804,574231,574232,579166,579167,588274,588275,589824,589825,617877,617880,619562,619565,622444,622445,622592,622593,637546,637547,642759,642760,645488,645489,655360,655361,670321,670322,672576,672577,676561,676562,676579,676580,676895,676896,682410,682411,684478,684479,684498,684499,688128,688129,692818,692819,692830,692831,693614,693615,703472,703474,705669,705670,705672,705673,708144,708145,708149,708150,712163,712164,712228,712229,720896,720897,723544,723545,728155,728156,728234,728235,728239,728240,728299,728300,728595,728596,728610,728611,728748,728749,734316,734317,735121,735122,735288,735289,735294,735295,735307,735308,737408,737411,737416,737417,737419,737420,737536,737537,737549,737550,752115,752116,753664,753665,768303,768304,769710,769711,777014,777015,783634,783635,783638,783640,783802,783803,783804,783805,783807,783808,783822,783823,783826,783828,783829,783831,783849,783850,783856,783857,783895,783898,784347,784348,784719,784720,786205,786206,786296,786298,786300,786301,786303,786304,786306,786307,786309,786310,786312,786313,786315,786316,786326,786327,786329,786330,786332,786333,786335,786336,786338,786339,786341,786342,786361,786362,786382,786383,786389,786390,786410,786411,786427,786428,786432,786433,786938,786939,786956,786957,786962,786963,786982,786983,786997,786998,787002,787003,787022,787023,787029,787030,787050,787051,787066,787067,787071,787072,787074,787075,787077,787078,787080,787081,787083,787084,787086,787087,787095,787096,787098,787099,787101,787102,787104,787105,787107,787108,787118,787120,788549,788550,804614,804615,811082,811084,813843,813844,819200,819203,819745,819746,820383,820386,820393,820394,820400,820401,820415,820416,820474,820475,820481,820482,820710,820711,820741,820742,820936,820937,820940,820941,820944,820945,820949,820950,820972,820973,821684,821685,821689,821690,821692,821693,821704,821705,821715,821716,821719,821720,821723,821726,821733,821734,821746,821747,821749,821750,821755,821756,821760,821761,821790,821791,821799,821800,821807,821808,821821,821822,821837,821838,822040,822042,822043,822044,822056,822057,822058,822059,822060,822061,822070,822071,822094,822095,822137,822142,822145,822148,822151,822154,822157,822159,822164,822165,822170,822173,822178,822179,822182,822184,822265,822266,822274,822275,823675,823676,824277,824278,824297,824298,829960,829962,835556,835557,835610,835611,838997,838998,839836,839837,840654,840655,840686,840687,851609,851610,851968,851969,857130,857131,858336,858338,858391,858392,859166,859167,859209,859210,860790,860791,875561,875562,884736,884739,886669,886670,895869,895872,896554,896555,896582,896583,896611,896614,897407,897408,897415,897416,897694,897697,897717,897718,897735,897737,898113,898114,898117,898118,898138,898139,898251,898252,898294,898296,898305,898306,898432,898433,898637,898638,898639,898641,903007,917316,917503,917504") && block_image_verify("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat"), ui_print("system recovered successfully."), abort("E1004: system partition fails to recover"));
endif;
if (range_sha1("/dev/block/bootdevice/by-name/vendor", "166,1,196,508,515,525,526,604,609,613,614,676,677,679,683,9569,9570,23313,23315,29932,29933,29935,29936,29939,29940,29943,29944,29953,29954,29966,29967,30626,30677,30761,30762,32768,32771,33701,33702,42336,42338,43300,43301,43935,43936,44972,44980,47233,47234,65536,65537,75583,75585,98304,98307,103243,103244,104873,104874,107880,107882,107924,107925,108302,108303,108665,108667,109140,109141,109208,109209,127344,127345,127349,127351,127369,127370,127415,127416,127434,127435,127578,127579,127629,127630,127633,127634,127694,127695,127905,127906,127931,127932,127965,127966,128072,128073,128135,128136,128272,128273,128286,128287,130132,130133,130144,130145,130830,130832,130885,130886,131001,131002,131037,131038,131072,131073,137842,137843,140881,140882,140883,140884,140931,140932,141356,141357,141413,141414,141734,141736,141737,141743,141770,141772,141780,141793,141794,141796,141806,141821,141843,141844,141846,141850,141991,142000,142786,163843,164348,196609,197114,229379,229884,262145,262650,294915,295420,327681,328186,360449,360954,375093,386991,393125,393215,393216") == "14c32c9e9b04a30f12c69bf615c38960c0a2dcb3" || block_image_verify("/dev/block/bootdevice/by-name/vendor", package_extract_file("vendor.transfer.list"), "vendor.new.dat", "vendor.patch.dat")) then
ui_print("Verified vendor image...");
else
check_first_block("/dev/block/bootdevice/by-name/vendor");
ifelse (block_image_recover("/dev/block/bootdevice/by-name/vendor", "166,1,196,508,515,525,526,604,609,613,614,676,677,679,683,9569,9570,23313,23315,29932,29933,29935,29936,29939,29940,29943,29944,29953,29954,29966,29967,30626,30677,30761,30762,32768,32771,33701,33702,42336,42338,43300,43301,43935,43936,44972,44980,47233,47234,65536,65537,75583,75585,98304,98307,103243,103244,104873,104874,107880,107882,107924,107925,108302,108303,108665,108667,109140,109141,109208,109209,127344,127345,127349,127351,127369,127370,127415,127416,127434,127435,127578,127579,127629,127630,127633,127634,127694,127695,127905,127906,127931,127932,127965,127966,128072,128073,128135,128136,128272,128273,128286,128287,130132,130133,130144,130145,130830,130832,130885,130886,131001,131002,131037,131038,131072,131073,137842,137843,140881,140882,140883,140884,140931,140932,141356,141357,141413,141414,141734,141736,141737,141743,141770,141772,141780,141793,141794,141796,141806,141821,141843,141844,141846,141850,141991,142000,142786,163843,164348,196609,197114,229379,229884,262145,262650,294915,295420,327681,328186,360449,360954,375093,386991,393125,393215,393216") && block_image_verify("/dev/block/bootdevice/by-name/vendor", package_extract_file("vendor.transfer.list"), "vendor.new.dat", "vendor.patch.dat"), ui_print("vendor recovered successfully."), abort("E2004: vendor partition fails to recover"));
endif;

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


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

ui_print("Patching firmware images...");
package_extract_file("firmware-update/abl.elf", "/dev/block/bootdevice/by-name/abl");
package_extract_file("firmware-update/abl.elf", "/dev/block/bootdevice/by-name/ablbak");
ui_print("Patching system image after verification.");
show_progress(0.800000, 0);
block_image_update("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat") ||
  abort("E1001: Failed to update system image.");
ui_print("Patching vendor image after verification.");
show_progress(0.100000, 0);
block_image_update("/dev/block/bootdevice/by-name/vendor", package_extract_file("vendor.transfer.list"), "vendor.new.dat", "vendor.patch.dat") ||
  abort("E2001: Failed to update vendor image.");
ui_print("Patching boot image...");
show_progress(0.100000, 10);
patch_partition(concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:c9fba70fa8cc635eadf8ff84736ee09e9471e169"),
                concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:7797ab6d2f15c32b5c01919573016ad7d9f49242"),
                package_extract_file("boot.img.p")) ||
    abort(concat(        "E3008: Failed to apply patch to ",concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:7797ab6d2f15c32b5c01919573016ad7d9f49242")));

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

ui_print("Patching vbmeta dtbo logo binimages...");
package_extract_file("firmware-update/dtbo.img", "/dev/block/bootdevice/by-name/dtbo");
package_extract_file("firmware-update/vbmeta.img", "/dev/block/bootdevice/by-name/vbmeta");
set_progress(1.000000);
