(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INPUT='> name:INPUT) op: assign_op.Equal rhs: {<0>} spids: [70] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {($ Id.VSub_Number 1)} right: {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'> } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INPUT='> name:INPUT) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [97] ) ] redirects: [] ) ] spids: [74 94] ) ] else_action: [] redirects: [] ) (C {<.>} {<'/DietPi/dietpi/func/dietpi-globals'>}) (C {<export>} {<Id.Lit_VarLike 'G_PROGRAM_NAME='> (SQ <DietPi-Banner>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DIETPI_VERSION='> name:DIETPI_VERSION) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {<1p>} {<'/DietPi/dietpi/.version'>}) right: <Id.Eof_RParen _> ) <.> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {<2p>} {<'/DietPi/dietpi/.version'>}) right: <Id.Eof_RParen _> ) ) } spids: [139] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'IMAGE_ADDITIONAL_CREDITS='> name: IMAGE_ADDITIONAL_CREDITS ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {<8p>} {<'/DietPi/dietpi/.hw_model'>}) right: <Id.Eof_RParen _> ) } spids: [163] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IP_ADDRESS='> name:IP_ADDRESS) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {<4p>} {<'/DietPi/dietpi/.network'>}) right: <Id.Eof_RParen _> ) } spids: [176] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IP_ADAPTER='> name:IP_ADAPTER) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {<3p>} {<'/DietPi/dietpi/.network'>}) right: <Id.Eof_RParen _> ) } spids: [188] ) ] redirects: [] ) (command.ShFunction name: Update_Ip_Address body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<'/DietPi/dietpi/func/obtain_network_details'>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IP_ADDRESS='> name:IP_ADDRESS) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {<4p>} {<'/DietPi/dietpi/.network'>}) right: <Id.Eof_RParen _> ) } spids: [210] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IP_ADAPTER='> name:IP_ADAPTER) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {<3p>} {<'/DietPi/dietpi/.network'>}) right: <Id.Eof_RParen _> ) } spids: [222] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UPDATE_AVAILABLE='> name:UPDATE_AVAILABLE) op: assign_op.Equal rhs: {<0>} spids: [239] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'UPDATE_AVAILABLE_VERSION='> name: UPDATE_AVAILABLE_VERSION ) op: assign_op.Equal rhs: {(SQ )} spids: [243] ) ] redirects: [] ) (command.ShFunction name: Obtain_Update_Available body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {<'/DietPi/dietpi/.update_available'>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'UPDATE_AVAILABLE='> name: UPDATE_AVAILABLE ) op: assign_op.Equal rhs: {<1>} spids: [278] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'UPDATE_AVAILABLE_VERSION='> name: UPDATE_AVAILABLE_VERSION ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<cat>} {<'/DietPi/dietpi/.update_available'>}) right: <Id.Eof_RParen _> ) } spids: [282] ) ] redirects: [] ) ] spids: [263 274] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Hardware_Model_Print body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<echo>} {<-e>} { (DQ <' '> <Id.Lit_BadBackslash '\\'> <'e[39;49;1mv'> ($ Id.VSub_DollarName DIETPI_VERSION) <Id.Lit_BadBackslash '\\'> <'e[0m '> <Id.Lit_BadBackslash '\\'> <'e[90m| '> ($ Id.VSub_DollarName G_HW_MODEL_DESCRIPTION) <Id.Lit_BadBackslash '\\'> <'e[0m'> <Id.Lit_BadBackslash '\\'> <'n '> <Id.Lit_BadBackslash '\\'> < 'e[38;5;154m───────────────────────────────────────' > <Id.Lit_BadBackslash '\\'> <'e[0m'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: IPAddress_Print body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-n>} {(DQ ($ Id.VSub_DollarName IP_ADDRESS))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Update_Ip_Address>})] spids: [347 362] ) ] else_action: [] redirects: [] ) (C {<echo>} {<-e>} { (DQ <' '> <Id.Lit_BadBackslash '\\'> <'e[39;49;1mIP '> ($ Id.VSub_DollarName IP_ADAPTER) <Id.Lit_BadBackslash '\\'> <'e[0m '> <Id.Lit_BadBackslash '\\'> <'e[90m| '> ($ Id.VSub_DollarName IP_ADDRESS) <Id.Lit_BadBackslash '\\'> <'e[0m'> <Id.Lit_BadBackslash '\\'> <'n '> <Id.Lit_BadBackslash '\\'> < 'e[38;5;154m───────────────────────────────────────' > <Id.Lit_BadBackslash '\\'> <'e[0m'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEXT_TOP='> name:TEXT_TOP) op: assign_op.Equal rhs: {(SQ )} spids: [416] ) ] redirects: [] ) (command.ShFunction name: Banner_TopText_Extras body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName UPDATE_AVAILABLE)} redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName UPDATE_AVAILABLE_VERSION))} {<Id.Lit_Equals '='>} {(SQ <-1>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TEXT_TOP='> name: TEXT_TOP ) op: assign_op.Equal rhs: { (DQ <Id.Lit_BadBackslash '\\'> <'e[90m|'> <Id.Lit_BadBackslash '\\'> <'e[0m '> <Id.Lit_BadBackslash '\\'> <'e[91m'> <Id.Lit_BadBackslash '\\'> <'e[33;49;1mImage available'> <Id.Lit_BadBackslash '\\'> <'e[0m'> ) } spids: [480] ) ] redirects: [] ) ] spids: [459 476] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEXT_TOP='> name:TEXT_TOP) op: assign_op.Equal rhs: { (DQ <Id.Lit_BadBackslash '\\'> <'e[90m|'> <Id.Lit_BadBackslash '\\'> <'e[0m '> <Id.Lit_BadBackslash '\\'> <'e[91m'> <Id.Lit_BadBackslash '\\'> <'e[33;49;1mUpdate available'> <Id.Lit_BadBackslash '\\'> <'e[0m'> ) } spids: [500] ) ] redirects: [] ) ] redirects: [] ) ] spids: [445 455] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEXT_TOP='> name:TEXT_TOP) op: assign_op.Equal rhs: { (DQ <Id.Lit_BadBackslash '\\'> <'e[90m| '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>} {<Id.Lit_Other '+'> (DQ <'%R | %a %x'>)}) right: <Id.Eof_RParen _> ) <Id.Lit_BadBackslash '\\'> <'e[0m'> ) } spids: [532] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Banner_Dietpi body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName INPUT)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<clear>})] spids: [564 578] ) ] else_action: [] redirects: [] ) (C {<echo>} {<-e>} { (DQ <' '> <Id.Lit_BadBackslash '\\'> < 'e[38;5;154m───────────────────────────────────────' > <Id.Lit_BadBackslash '\\'> <'e[0m'> <Id.Lit_BadBackslash '\\'> <'n '> <Id.Lit_BadBackslash '\\'> <'e[39;49;1mDietPi '> <Id.Lit_BadBackslash '\\'> <'e[0m '> ($ Id.VSub_DollarName TEXT_TOP) <' '> <Id.Lit_BadBackslash '\\'> <'n '> <Id.Lit_BadBackslash '\\'> < 'e[38;5;154m───────────────────────────────────────' > <Id.Lit_BadBackslash '\\'> <'e[0m'> ) } ) (C {<Hardware_Model_Print>}) (C {<IPAddress_Print>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Credits_Print body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<echo>} {<-e>} {(SQ )}) (C {<echo>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> <'e[90m Created by : Daniel Knight'> <Id.Lit_BadBackslash '\\'> <'e[0m'> ) } ) (C {<echo>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> <'e[90m Web : http://DietPi.com'> <Id.Lit_BadBackslash '\\'> <'e[0m'> ) } ) (C {<echo>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> <'e[90m Twitter : http://twitter.com/dietpi_'> <Id.Lit_BadBackslash '\\'> <'e[0m'> ) } ) (C {<echo>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> <'e[90m Donate : http://goo.gl/pzISt9 '> <Id.Lit_BadBackslash '\\'> <'e[0m'> ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName IMAGE_ADDITIONAL_CREDITS))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {<-e>} {(SQ )}) (C {<echo>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> <'e[90m Device image possible thanks to: '> ($ Id.VSub_DollarName IMAGE_ADDITIONAL_CREDITS) <Id.Lit_BadBackslash '\\'> <'e[0m'> ) } ) ] spids: [691 704] ) ] else_action: [] redirects: [] ) (C {<echo>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> <'e[90m DietPi\'s web hosting is powered by: MyVirtualServer.com'> <Id.Lit_BadBackslash '\\'> <'e[0m'> ) } ) (C {<echo>} {<-e>} {(SQ )}) (C {<echo>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> <'e[1m dietpi-launcher'> <Id.Lit_BadBackslash '\\'> <'e[0m = All the DietPi programs in one place.'> ) } ) (C {<echo>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> <'e[1m dietpi-config'> <Id.Lit_BadBackslash '\\'> <'e[0m = Feature rich configuration tool for your device.'> ) } ) (C {<echo>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> <'e[1m dietpi-software'> <Id.Lit_BadBackslash '\\'> <'e[0m = Select optimized software for installation.'> ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName UPDATE_AVAILABLE)} redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName UPDATE_AVAILABLE_VERSION))} {<Id.Lit_Equals '='>} {(SQ <-1>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'e[91m An updated DietPi image is available, please goto:'> <Id.Lit_BadBackslash '\\'> <'e[0m'> <Id.Lit_BadBackslash '\\'> <'n http://dietpi.com/download'> <Id.Lit_BadBackslash '\\'> <n> ) } ) ] spids: [809 826] ) ] else_action: [ (C {<echo>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> <'e[1m dietpi-update'> <Id.Lit_BadBackslash '\\'> <'e[0m = '> <Id.Lit_BadBackslash '\\'> <'e[91mRun now to update DietPi (from v'> ($ Id.VSub_DollarName DIETPI_VERSION) <' to v'> ($ Id.VSub_DollarName UPDATE_AVAILABLE_VERSION) <').'> <Id.Lit_BadBackslash '\\'> <'e[0m'> ) } ) ] redirects: [] ) ] spids: [795 805] ) ] else_action: [] redirects: [] ) (C {<echo>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> <'e[1m htop'> <Id.Lit_BadBackslash '\\'> <'e[0m = Resource monitor.'> ) } ) (C {<echo>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> <'e[1m cpu'> <Id.Lit_BadBackslash '\\'> <'e[0m = Shows CPU information and stats.'> ) } ) (C {<echo>} {<-e>} {(SQ )}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName INPUT)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Obtain_Update_Available>}) (C {<Banner_TopText_Extras>}) (C {<Banner_Dietpi>})] spids: [931 945] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName INPUT)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<Obtain_Update_Available>}) (C {<Banner_TopText_Extras>}) (C {<Banner_Dietpi>}) (C {<Credits_Print>}) ] spids: [959 973] ) ] else_action: [] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] )