// ĠCopyright Ġ 2 0 2 1 Ġy u ye zh ong @ gmail . com Ċ // Ċ // ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ // Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ // ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ // Ċ // ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ // Ċ // ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ // Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ // ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ // ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ // Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ċ package Ġc fig . pack able Ċ Ċ import Ġc fig . boot img . v 3 . Vendor Boot Ċ import Ġc fig . helper . Helper . Companion . delete IfExists Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . io . File Ċ Ċ class ĠVendor Boot Parser Ġ: ĠIP ack able Ġ{ ĊĠĠĠ Ġoverride Ġval Ġloop No : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLoggerFactory . getLogger ( Vendor Boot Parser :: class . java ) ĊĠĠĠ Ġoverride Ġfun Ġcapabilities (): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ("^ vendor _ boot (- debug )? \\. img $ ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġunpack ( fileName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclear () ĊĠĠĠĠĠĠĠ Ġval Ġvb Ġ= ĠVendor Boot ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. parse ( fileName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. extract Images () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. extract VB Meta () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. print Unpack Summary () ĊĠĠĠĠĠĠĠ Ġlog . debug ( vb . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpack ( fileName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcfg File Ġ= Ġ"$ out Dir /${ fileName . remove Suffix (". img ") }. json " ĊĠĠĠĠĠĠĠ Ġlog . info (" Loading Ġconfig Ġfrom Ġ$ cfg File ") ĊĠĠĠĠĠĠĠ ĠObjectMapper (). readValue ( File ( cfg File ), ĠVendor Boot :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. pack () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sign () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. update Vb meta () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. print Pack Summary () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ`@ verify `( fileName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper .` @ verify `( fileName ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpull ( fileName : ĠString , Ġdevice Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . pull ( fileName , Ġdevice Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear ( fileName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . clear () ĊĠĠĠĠĠĠĠ ĠlistOf ("", Ġ". clear ", Ġ". google ", Ġ". clear ", Ġ". signed ", Ġ". signed 2 "). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ fileName $ it ". delete IfExists () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠVB Meta Parser (). clear (" vb meta . img ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġflash ( fileName : ĠString , Ġdevice Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstem Ġ= ĠfileName . substring ( 0 , ĠfileName . indexOf (". ")) ĊĠĠĠĠĠĠĠ Ġsuper . flash ("$ fileName . signed ", Ġstem ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( File (" vb meta . img . signed "). exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . flash (" vb meta . img . signed ", Ġ" vb meta ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ