(command.CommandList children: [ (command.ShFunction name_tok: <usage> name: usage body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'usage: '> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_Number 0)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <' [options] command ... [path]\n'> <'\n'> <'Options:\n'> <' -b basedir -- Operate on a system mounted at basedir\n'> <' (default: /)\n'> <' -d workdir -- Store working files in workdir\n'> <' (default: /var/db/freebsd-update/)\n'> <' -f conffile -- Read configuration options from conffile\n'> <' (default: /etc/freebsd-update.conf)\n'> <' -F -- Force a fetch operation to proceed\n'> <' -k KEY -- Trust an RSA key with SHA256 hash of KEY\n'> <' -r release -- Target for upgrade (e.g., 11.1-RELEASE)\n'> <' -s server -- Server from which to fetch updates\n'> <' (default: update.FreeBSD.org)\n'> <' -t address -- Mail output of cron command, if any, to address\n'> <' (default: root)\n'> <' --not-running-from-cron\n'> <' -- Run without a tty, for use by automated tools\n'> <' --currently-running release\n'> <' -- Update as if currently running this release\n'> <'Commands:\n'> <' fetch -- Fetch updates from server\n'> <' cron -- Sleep rand(3600) seconds, fetch updates, and send an\n'> <' email if updates were found\n'> < ' upgrade -- Fetch upgrades to FreeBSD version specified via -r option\n' > <' install -- Install downloaded updates or upgrades\n'> <' rollback -- Uninstall most recently installed updates\n'> <' IDS -- Compare the system against an index of '> <Id.Right_DoubleQuote '"'> <'known good'> <Id.Right_DoubleQuote '"'> <' files.\n'> ] ) ) ] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment left: <Id.Lit_VarLike 'CONFIGOPTIONS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CONFIGOPTIONS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONFIGOPTIONS='> name:CONFIGOPTIONS) op: assign_op.Equal rhs: { (DQ <'KEYPRINT WORKDIR SERVERNAME MAILTO ALLOWADD ALLOWDELETE\n'> <' KEEPMODIFIEDMETADATA COMPONENTS IGNOREPATHS UPDATEIFUNMODIFIED\n'> <' BASEDIR VERBOSELEVEL TARGETRELEASE STRICTCOMPONENTS MERGECHANGES\n'> <' IDSIGNOREPATHS BACKUPKERNEL BACKUPKERNELDIR BACKUPKERNELSYMBOLFILES'> ) } ) ] redirects: [] ) (command.ShFunction name_tok: <nullconfig> name: nullconfig body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [X] iterable: (for_iter.Words words:[{(${ Id.VSub_Name CONFIGOPTIONS)}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(${ Id.VSub_Name X) <Id.Lit_Equals '='> (DQ )}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <saveconfig> name: saveconfig body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [X] iterable: (for_iter.Words words:[{(${ Id.VSub_Name CONFIGOPTIONS)}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {(${ Id.VSub_Name X) <Id.Lit_VarLike '_saved='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name X) } ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <mergeconfig> name: mergeconfig body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [X] iterable: (for_iter.Words words:[{(${ Id.VSub_Name CONFIGOPTIONS)}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike '_='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name X) <_saved> } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name _))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {(${ Id.VSub_Name X) <Id.Lit_Equals '='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name X) <_saved> } ] redirects: [] do_fork: T ) ] spids: [351 368] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <config_KeyPrint> name: config_KeyPrint body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(${ Id.VSub_Name KEYPRINT)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'KEYPRINT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KEYPRINT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KEYPRINT='> name:KEYPRINT) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] spids: [403 416] ) ] else_kw: <Id.KW_Else else> else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <config_WorkDir> name: config_WorkDir body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(${ Id.VSub_Name WORKDIR)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'WORKDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'WORKDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WORKDIR='> name:WORKDIR) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] spids: [447 460] ) ] else_kw: <Id.KW_Else else> else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <config_ServerName> name: config_ServerName body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(${ Id.VSub_Name SERVERNAME)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SERVERNAME='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SERVERNAME='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SERVERNAME='> name:SERVERNAME) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] spids: [491 504] ) ] else_kw: <Id.KW_Else else> else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <config_MailTo> name: config_MailTo body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(${ Id.VSub_Name MAILTO)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'MAILTO='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MAILTO='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAILTO='> name:MAILTO) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] spids: [535 548] ) ] else_kw: <Id.KW_Else else> else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <config_AllowAdd> name: config_AllowAdd body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(${ Id.VSub_Name ALLOWADD)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Yy> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ALLOWADD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ALLOWADD='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ALLOWADD='> name: ALLOWADD ) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Oo> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ALLOWADD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ALLOWADD='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ALLOWADD='> name: ALLOWADD ) op: assign_op.Equal rhs: {<no>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [582 595] ) ] else_kw: <Id.KW_Else else> else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <config_AllowDelete> name: config_AllowDelete body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(${ Id.VSub_Name ALLOWDELETE)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Yy> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ALLOWDELETE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ALLOWDELETE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ALLOWDELETE='> name: ALLOWDELETE ) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Oo> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ALLOWDELETE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ALLOWDELETE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ALLOWDELETE='> name: ALLOWDELETE ) op: assign_op.Equal rhs: {<no>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [679 692] ) ] else_kw: <Id.KW_Else else> else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <config_KeepModifiedMetadata> name: config_KeepModifiedMetadata body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(${ Id.VSub_Name KEEPMODIFIEDMETADATA)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Yy> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'KEEPMODIFIEDMETADATA='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KEEPMODIFIEDMETADATA='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'KEEPMODIFIEDMETADATA='> name: KEEPMODIFIEDMETADATA ) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Oo> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'KEEPMODIFIEDMETADATA='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KEEPMODIFIEDMETADATA='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'KEEPMODIFIEDMETADATA='> name: KEEPMODIFIEDMETADATA ) op: assign_op.Equal rhs: {<no>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [782 795] ) ] else_kw: <Id.KW_Else else> else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <config_Components> name: config_Components body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [C] iterable: (for_iter.Words words:[{($ Id.VSub_At '@')}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName C))} {<Id.Lit_Equals '='>} {(DQ <src>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-e>} {<'/usr/src/COPYRIGHT'>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'COMPONENTS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COMPONENTS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'COMPONENTS='> name: COMPONENTS ) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name COMPONENTS) <' '> (${ Id.VSub_Name C) ) } ) ] redirects: [] ) ] spids: [911 922] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'src component not installed, skipped'>)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [891 908] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'COMPONENTS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COMPONENTS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'COMPONENTS='> name: COMPONENTS ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name COMPONENTS) <' '> (${ Id.VSub_Name C))} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <config_IgnorePaths> name: config_IgnorePaths body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [C] iterable: (for_iter.Words words:[{($ Id.VSub_At '@')}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'IGNOREPATHS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IGNOREPATHS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'IGNOREPATHS='> name: IGNOREPATHS ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name IGNOREPATHS) <' '> (${ Id.VSub_Name C))} ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <config_IDSIgnorePaths> name: config_IDSIgnorePaths body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [C] iterable: (for_iter.Words words:[{($ Id.VSub_At '@')}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'IDSIGNOREPATHS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IDSIGNOREPATHS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'IDSIGNOREPATHS='> name: IDSIGNOREPATHS ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name IDSIGNOREPATHS) <' '> (${ Id.VSub_Name C))} ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <config_UpdateIfUnmodified> name: config_UpdateIfUnmodified body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [C] iterable: (for_iter.Words words:[{($ Id.VSub_At '@')}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'UPDATEIFUNMODIFIED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'UPDATEIFUNMODIFIED='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'UPDATEIFUNMODIFIED='> name: UPDATEIFUNMODIFIED ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name UPDATEIFUNMODIFIED) <' '> (${ Id.VSub_Name C))} ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <config_MergeChanges> name: config_MergeChanges body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [C] iterable: (for_iter.Words words:[{($ Id.VSub_At '@')}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'MERGECHANGES='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MERGECHANGES='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'MERGECHANGES='> name: MERGECHANGES ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name MERGECHANGES) <' '> (${ Id.VSub_Name C))} ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <config_BaseDir> name: config_BaseDir body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(${ Id.VSub_Name BASEDIR)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'BASEDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BASEDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BASEDIR='> name:BASEDIR) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] spids: [1150 1163] ) ] else_kw: <Id.KW_Else else> else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <config_StrictComponents> name: config_StrictComponents body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(${ Id.VSub_Name STRICTCOMPONENTS)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Yy> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'STRICTCOMPONENTS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'STRICTCOMPONENTS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'STRICTCOMPONENTS='> name: STRICTCOMPONENTS ) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Oo> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'STRICTCOMPONENTS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'STRICTCOMPONENTS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'STRICTCOMPONENTS='> name: STRICTCOMPONENTS ) op: assign_op.Equal rhs: {<no>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [1200 1213] ) ] else_kw: <Id.KW_Else else> else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <config_TargetRelease> name: config_TargetRelease body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(${ Id.VSub_Name TARGETRELEASE)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'TARGETRELEASE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TARGETRELEASE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETRELEASE='> name: TARGETRELEASE ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] spids: [1297 1310] ) ] else_kw: <Id.KW_Else else> else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name TARGETRELEASE)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-qE>} {(SQ <'^[0-9.]+$'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'TARGETRELEASE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TARGETRELEASE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETRELEASE='> name: TARGETRELEASE ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name TARGETRELEASE) <-RELEASE>)} ) ] redirects: [] ) ] spids: [1328 1347] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <config_VerboseLevel> name: config_VerboseLevel body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(${ Id.VSub_Name VERBOSELEVEL)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Dd> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Bb> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Uu> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Gg> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'VERBOSELEVEL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'VERBOSELEVEL='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'VERBOSELEVEL='> name: VERBOSELEVEL ) op: assign_op.Equal rhs: {<debug>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Oo> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Tt> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Aa> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Tt> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'VERBOSELEVEL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'VERBOSELEVEL='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'VERBOSELEVEL='> name: VERBOSELEVEL ) op: assign_op.Equal rhs: {<nostats>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Tt> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Aa> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Tt> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'VERBOSELEVEL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'VERBOSELEVEL='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'VERBOSELEVEL='> name: VERBOSELEVEL ) op: assign_op.Equal rhs: {<stats>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [1375 1388] ) ] else_kw: <Id.KW_Else else> else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <config_BackupKernel> name: config_BackupKernel body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(${ Id.VSub_Name BACKUPKERNEL)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Yy> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'BACKUPKERNEL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BACKUPKERNEL='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'BACKUPKERNEL='> name: BACKUPKERNEL ) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Oo> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'BACKUPKERNEL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BACKUPKERNEL='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'BACKUPKERNEL='> name: BACKUPKERNEL ) op: assign_op.Equal rhs: {<no>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [1515 1528] ) ] else_kw: <Id.KW_Else else> else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <config_BackupKernelDir> name: config_BackupKernelDir body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(${ Id.VSub_Name BACKUPKERNELDIR)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'BackupKernelDir set to empty dir'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [1625 1638] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <'/'> pattern: (pat.Words words: [ {<'/'>} {<'/bin'>} {<'/boot'>} {<'/etc'>} {<'/lib'>} {<'/libexec'>} {<'/sbin'>} {<'/usr'>} {<'/var'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'BackupKernelDir set to invalid path '> ($ Id.VSub_Number 1))} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <'/'> pattern: (pat.Words words:[{<'/'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'BACKUPKERNELDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BACKUPKERNELDIR='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'BACKUPKERNELDIR='> name: BACKUPKERNELDIR ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'BackupKernelDir ('> ($ Id.VSub_Number 1) <') is not an absolute path'> ) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [1609 1622] ) ] else_kw: <Id.KW_Else else> else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <config_BackupKernelSymbolFiles> name: config_BackupKernelSymbolFiles body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(${ Id.VSub_Name BACKUPKERNELSYMBOLFILES)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Yy> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'BACKUPKERNELSYMBOLFILES='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BACKUPKERNELSYMBOLFILES='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'BACKUPKERNELSYMBOLFILES='> name: BACKUPKERNELSYMBOLFILES ) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Oo> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'BACKUPKERNELSYMBOLFILES='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BACKUPKERNELSYMBOLFILES='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'BACKUPKERNELSYMBOLFILES='> name: BACKUPKERNELSYMBOLFILES ) op: assign_op.Equal rhs: {<no>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [1769 1782] ) ] else_kw: <Id.KW_Else else> else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <configline> name: configline body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return>)] spids: [1866 1879] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'OPT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OPT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPT='> name:OPT) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <config_> more_env: [] words: [{<config_> (${ Id.VSub_Name OPT)} {($ Id.VSub_At '@')}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <init_params> name: init_params body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <nullconfig> more_env: [] words: [{<nullconfig>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'CONFFILE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CONFFILE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONFFILE='> name:CONFFILE) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'COMMANDS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COMMANDS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMMANDS='> name:COMMANDS) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'FORCEFETCH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FORCEFETCH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FORCEFETCH='> name:FORCEFETCH) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'NOTTYOK='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NOTTYOK='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NOTTYOK='> name:NOTTYOK) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <parse_cmdline> name: parse_cmdline body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-gt>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-f> pattern: (pat.Words words:[{<-f>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Sentence child: (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] spids: [2015 2028] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} {(DQ (${ Id.VSub_Name CONFFILE))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Sentence child: (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] spids: [2036 2053] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Sentence child: (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike 'CONFFILE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CONFFILE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'CONFFILE='> name: CONFFILE ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-F> pattern: (pat.Words words:[{<-F>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'FORCEFETCH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FORCEFETCH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FORCEFETCH='> name: FORCEFETCH ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--not-running-from-cron> pattern: (pat.Words words:[{<--not-running-from-cron>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'NOTTYOK='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NOTTYOK='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NOTTYOK='> name: NOTTYOK ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--currently-running> pattern: (pat.Words words:[{<--currently-running>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<Id.Lit_VarLike 'UNAME_r='> (DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-b> pattern: (pat.Words words:[{<-b>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Sentence child: (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] spids: [2122 2135] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <config_BaseDir> more_env: [] words: [{<config_BaseDir>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-d> pattern: (pat.Words words:[{<-d>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Sentence child: (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] spids: [2162 2175] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <config_WorkDir> more_env: [] words: [{<config_WorkDir>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-k> pattern: (pat.Words words:[{<-k>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Sentence child: (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] spids: [2202 2215] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <config_KeyPrint> more_env: [] words: [{<config_KeyPrint>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-s> pattern: (pat.Words words:[{<-s>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Sentence child: (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] spids: [2242 2255] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <config_ServerName> more_env: [] words: [{<config_ServerName>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-r> pattern: (pat.Words words:[{<-r>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Sentence child: (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] spids: [2282 2295] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <config_TargetRelease> more_env: [] words: [{<config_TargetRelease>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-t> pattern: (pat.Words words:[{<-t>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Sentence child: (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] spids: [2322 2335] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <config_MailTo> more_env: [] words: [{<config_MailTo>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-v> pattern: (pat.Words words:[{<-v>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Sentence child: (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] spids: [2362 2375] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <config_VerboseLevel> more_env: [] words: [{<config_VerboseLevel>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--debug> pattern: (pat.Words words:[{<--debug>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <config_VerboseLevel> more_env: [] words: [{<config_VerboseLevel>} {<debug>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <--no-stats> pattern: (pat.Words words:[{<--no-stats>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <config_VerboseLevel> more_env: [] words: [{<config_VerboseLevel>} {<nostats>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <cron> pattern: (pat.Words words: [{<cron>} {<fetch>} {<upgrade>} {<install>} {<rollback>} {<IDS>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'COMMANDS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COMMANDS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'COMMANDS='> name: COMMANDS ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name COMMANDS) <' '> ($ Id.VSub_Number 1))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name COMMANDS))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] spids: [2506 2521] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <parse_conffile> name: parse_conffile body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} {(DQ (${ Id.VSub_Name CONFFILE))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-r>} {(DQ (${ Id.VSub_Name CONFFILE))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'File does not exist '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'or is not readable: '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name CONFFILE)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [2551 2584] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name CONFFILE))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CONFFILE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CONFFILE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONFFILE='> name:CONFFILE) op: assign_op.Equal rhs: {(DQ <'/etc/freebsd-update.conf'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-r>} {(DQ (${ Id.VSub_Name CONFFILE))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return>)] spids: [2657 2674] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [2633 2648] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <saveconfig> more_env: [] words: [{<saveconfig>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <nullconfig> more_env: [] words: [{<nullconfig>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'L='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'L='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'L='> name:L) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<LINE>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'L='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'L='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'L='> name:L) op: assign_op.Equal rhs: { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName L)} right: {<Id.Lit_Digits 1>} ) right: <Id.Right_DollarDParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'LINEX='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LINEX='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LINEX='> name:LINEX) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ (${ Id.VSub_Name LINE))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'#'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <configline> more_env: [] words: [{<configline>} {(${ Id.VSub_Name LINEX)}] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Error processing configuration file, line '> ($ Id.VSub_DollarName L) <':'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'==> '> (${ Id.VSub_Name LINE))}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [2763 2774] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(${ Id.VSub_Name CONFFILE)} ) ] ) (command.Simple blame_tok: <mergeconfig> more_env: [] words: [{<mergeconfig>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <default_params> name: default_params body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <saveconfig> more_env: [] words: [{<saveconfig>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <nullconfig> more_env: [] words: [{<nullconfig>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <config_WorkDir> more_env: [] words: [{<config_WorkDir>} {<'/var/db/freebsd-update'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <config_MailTo> more_env: [] words: [{<config_MailTo>} {<root>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <config_AllowAdd> more_env: [] words: [{<config_AllowAdd>} {<yes>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <config_AllowDelete> more_env: [] words: [{<config_AllowDelete>} {<yes>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <config_KeepModifiedMetadata> more_env: [] words: [{<config_KeepModifiedMetadata>} {<yes>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <config_BaseDir> more_env: [] words: [{<config_BaseDir>} {<'/'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <config_VerboseLevel> more_env: [] words: [{<config_VerboseLevel>} {<stats>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <config_StrictComponents> more_env: [] words: [{<config_StrictComponents>} {<no>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <config_BackupKernel> more_env: [] words: [{<config_BackupKernel>} {<yes>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <config_BackupKernelDir> more_env: [] words: [{<config_BackupKernelDir>} {<'/boot/kernel.old'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <config_BackupKernelSymbolFiles> more_env: [] words: [{<config_BackupKernelSymbolFiles>} {<no>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <mergeconfig> more_env: [] words: [{<mergeconfig>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_setup_verboselevel> name: fetch_setup_verboselevel body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(${ Id.VSub_Name VERBOSELEVEL)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <debug> pattern: (pat.Words words:[{<debug>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'QUIETREDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'QUIETREDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'QUIETREDIR='> name:QUIETREDIR) op: assign_op.Equal rhs: {(DQ <'/dev/stderr'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'QUIETFLAG='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'QUIETFLAG='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'QUIETFLAG='> name:QUIETFLAG) op: assign_op.Equal rhs: {(DQ <' '>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'STATSREDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'STATSREDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STATSREDIR='> name:STATSREDIR) op: assign_op.Equal rhs: {(DQ <'/dev/stderr'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'DDSTATS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DDSTATS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DDSTATS='> name:DDSTATS) op: assign_op.Equal rhs: {(DQ <..>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'XARGST='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'XARGST='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'XARGST='> name:XARGST) op: assign_op.Equal rhs: {(DQ <-t>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'NDEBUG='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NDEBUG='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NDEBUG='> name:NDEBUG) op: assign_op.Equal rhs: {(DQ <' '>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <nostats> pattern: (pat.Words words:[{<nostats>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'QUIETREDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'QUIETREDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'QUIETREDIR='> name:QUIETREDIR) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'QUIETFLAG='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'QUIETFLAG='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'QUIETFLAG='> name:QUIETFLAG) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'STATSREDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'STATSREDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STATSREDIR='> name:STATSREDIR) op: assign_op.Equal rhs: {(DQ <'/dev/null'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'DDSTATS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DDSTATS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DDSTATS='> name:DDSTATS) op: assign_op.Equal rhs: {(DQ <..>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'XARGST='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'XARGST='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'XARGST='> name:XARGST) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'NDEBUG='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NDEBUG='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NDEBUG='> name:NDEBUG) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <stats> pattern: (pat.Words words:[{<stats>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'QUIETREDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'QUIETREDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'QUIETREDIR='> name:QUIETREDIR) op: assign_op.Equal rhs: {(DQ <'/dev/null'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'QUIETFLAG='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'QUIETFLAG='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'QUIETFLAG='> name:QUIETFLAG) op: assign_op.Equal rhs: {(DQ <-q>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'STATSREDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'STATSREDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STATSREDIR='> name:STATSREDIR) op: assign_op.Equal rhs: {(DQ <'/dev/stdout'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'DDSTATS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DDSTATS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DDSTATS='> name:DDSTATS) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'XARGST='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'XARGST='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'XARGST='> name:XARGST) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'NDEBUG='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NDEBUG='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NDEBUG='> name:NDEBUG) op: assign_op.Equal rhs: {(DQ <-n>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetchupgrade_check_params> name: fetchupgrade_check_params body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <export> more_env: [] words: [ {<export>} {<Id.Lit_VarLike 'HTTP_USER_AGENT='> (DQ <'freebsd-update ('> (${ Id.VSub_Name COMMAND) <', '> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<-r>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <')'> ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike '_SERVERNAME_z='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_SERVERNAME_z='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_SERVERNAME_z='> name:_SERVERNAME_z) op: assign_op.Equal rhs: {(DQ <'SERVERNAME must be given via command line or configuration file.'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_KEYPRINT_z='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_KEYPRINT_z='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_KEYPRINT_z='> name:_KEYPRINT_z) op: assign_op.Equal rhs: {(DQ <'Key must be given via -k option or configuration file.'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_KEYPRINT_bad='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_KEYPRINT_bad='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_KEYPRINT_bad='> name:_KEYPRINT_bad) op: assign_op.Equal rhs: {(DQ <'Invalid key fingerprint: '>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_WORKDIR_bad='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_WORKDIR_bad='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_WORKDIR_bad='> name:_WORKDIR_bad) op: assign_op.Equal rhs: {(DQ <'Directory does not exist or is not writable: '>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_WORKDIR_bad2='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_WORKDIR_bad2='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_WORKDIR_bad2='> name:_WORKDIR_bad2) op: assign_op.Equal rhs: {(DQ <'Directory is not on a persistent filesystem: '>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name SERVERNAME))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_Number 0)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <': '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ (${ Id.VSub_Name _SERVERNAME_z))}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [3145 3160] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name KEYPRINT))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_Number 0)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <': '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ (${ Id.VSub_Name _KEYPRINT_z))}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [3196 3211] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ (${ Id.VSub_Name KEYPRINT))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-qE>} {(DQ <'^[0-9a-f]{64}'> <Id.Lit_Dollar '$'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_Number 0)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <': '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name _KEYPRINT_bad))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name KEYPRINT)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [3247 3271] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-d>} {(DQ (${ Id.VSub_Name WORKDIR))} {<-a>} {<-w>} {(DQ (${ Id.VSub_Name WORKDIR))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_Number 0)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <': '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name _WORKDIR_bad))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name WORKDIR)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [3316 3343] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <df> more_env: [] words: [{<df>} {<-T>} {(${ Id.VSub_Name WORKDIR)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <'/dev/md'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } {<Id.Lit_Star '*'> <tmpfs> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_Number 0)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <': '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name _WORKDIR_bad2))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name WORKDIR)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <chmod> more_env: [] words: [{<chmod>} {<700>} {(${ Id.VSub_Name WORKDIR)}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {(${ Id.VSub_Name WORKDIR)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'RELNUM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'RELNUM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RELNUM='> name:RELNUM) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<-r>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-E>} {(SQ <'s,-p[0-9]+,,'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-E>} {(SQ <'s,-SECURITY,-RELEASE,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ARCH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ARCH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARCH='> name:ARCH) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<-m>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'FETCHDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FETCHDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FETCHDIR='> name:FETCHDIR) op: assign_op.Equal rhs: {(${ Id.VSub_Name RELNUM) <'/'> (${ Id.VSub_Name ARCH)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PATCHDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PATCHDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATCHDIR='> name:PATCHDIR) op: assign_op.Equal rhs: {(${ Id.VSub_Name RELNUM) <'/'> (${ Id.VSub_Name ARCH) <'/bp'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'BOOTFILE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BOOTFILE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BOOTFILE='> name:BOOTFILE) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <sysctl> more_env: [] words: [{<sysctl>} {<-n>} {<kern.bootfile>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'KERNELDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KERNELDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KERNELDIR='> name:KERNELDIR) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name BOOTFILE> var_name: BOOTFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <kernel>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-d>} {(${ Id.VSub_Name KERNELDIR)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Cannot identify running kernel'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [3594 3609] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'KERNCONF='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KERNCONF='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KERNCONF='> name:KERNCONF) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<-i>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name KERNCONF)} {<Id.Lit_Equals '='>} {(DQ <SMP-GENERIC>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'KERNCONF='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KERNCONF='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KERNCONF='> name:KERNCONF) op: assign_op.Equal rhs: {<SMP>} ) ] redirects: [] ) ] spids: [3670 3687] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name KERNCONF)} {<Id.Lit_Equals '='>} {(DQ <GENERIC>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name ARCH)} {<Id.Lit_Equals '='>} {(DQ <amd64>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple blame_tok: <sysctl> more_env: [] words: [{<sysctl>} {<kern.version>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-qE>} {(SQ <'/SMP$'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'KERNCONF='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KERNCONF='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'KERNCONF='> name: KERNCONF ) op: assign_op.Equal rhs: {<SMP>} ) ] redirects: [] ) ] spids: [3733 3750] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [3697 3730] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'BSPATCH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BSPATCH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BSPATCH='> name:BSPATCH) op: assign_op.Equal rhs: {<'/usr/bin/bspatch'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SHA256='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHA256='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHA256='> name:SHA256) op: assign_op.Equal rhs: {<'/sbin/sha256'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PHTTPGET='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PHTTPGET='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PHTTPGET='> name:PHTTPGET) op: assign_op.Equal rhs: {<'/usr/libexec/phttpget'>} ) ] redirects: [] ) (command.Simple blame_tok: <fetch_setup_verboselevel> more_env: [] words: [{<fetch_setup_verboselevel>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'BDHASH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BDHASH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BDHASH='> name:BDHASH) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name BASEDIR)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sha256> more_env: [] words: [{<sha256>} {<-q>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_check_params> name: fetch_check_params body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <fetchupgrade_check_params> more_env: [] words: [{<fetchupgrade_check_params>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name TARGETRELEASE))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_Number 0)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <': '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} {(DQ <'-r option is meaningless with \'fetch\' command. '>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'(Did you mean \'upgrade\' instead?)'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [3828 3845] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name BDHASH) <'-install/kerneldone'>} {<-a>} {($ Id.VSub_DollarName FORCEFETCH)} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'You have a partially completed upgrade pending'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Run \''> ($ Id.VSub_Number 0) <' install\' first.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'Run \''> ($ Id.VSub_Number 0) <' fetch -F\' to proceed anyway.'>)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [3893 3915] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <upgrade_check_params> name: upgrade_check_params body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <fetchupgrade_check_params> more_env: [] words: [{<fetchupgrade_check_params>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'NKERNCONF='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NKERNCONF='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NKERNCONF='> name:NKERNCONF) op: assign_op.Equal rhs: {(${ Id.VSub_Name KERNCONF)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_TARGETRELEASE_z='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_TARGETRELEASE_z='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_TARGETRELEASE_z='> name: _TARGETRELEASE_z ) op: assign_op.Equal rhs: {(DQ <'Release target must be specified via -r option.'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name TARGETRELEASE))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_Number 0)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <': '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ (${ Id.VSub_Name _TARGETRELEASE_z))}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [3989 4004] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name TARGETRELEASE))} {<Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name RELNUM))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_Number 0)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <': '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'Cannot upgrade from '> (${ Id.VSub_Name RELNUM) <' to itself'>)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [4045 4066] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name ALLOWADD))} {<Id.Lit_Equals '='>} {(DQ <no>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_Number 0)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <': '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ <'WARNING: '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <'AllowAdd no'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' is a bad idea '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'when upgrading between releases.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) ] spids: [4109 4128] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name ALLOWDELETE))} {<Id.Lit_Equals '='>} {(DQ <no>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_Number 0)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <': '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ <'WARNING: '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <'AllowDelete no'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' is a bad idea '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'when upgrading between releases.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) ] spids: [4173 4192] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name EDITOR> var_name: EDITOR suffix_op: (suffix_op.Unary op: <Id.VTest_ColonEquals _> arg_word: {(SQ <'/usr/bin/vi'>)} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <install_check_params> name: install_check_params body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <id> more_env: [] words: [{<id>} {<-u>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'You must be root to run this.'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [4273 4293] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <sysctl> more_env: [] words: [{<sysctl>} {<-n>} {<kern.securelevel>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } {<-gt>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'Updates cannot be installed when the system securelevel'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'is greater than zero.'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [4316 4337] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_WORKDIR_bad='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_WORKDIR_bad='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_WORKDIR_bad='> name:_WORKDIR_bad) op: assign_op.Equal rhs: {(DQ <'Directory does not exist or is not writable: '>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-d>} {(DQ (${ Id.VSub_Name WORKDIR))} {<-a>} {<-w>} {(DQ (${ Id.VSub_Name WORKDIR))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_Number 0)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <': '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name _WORKDIR_bad))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name WORKDIR)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [4373 4400] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {(${ Id.VSub_Name WORKDIR)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'BDHASH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BDHASH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BDHASH='> name:BDHASH) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name BASEDIR)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sha256> more_env: [] words: [{<sha256>} {<-q>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-L>} {(${ Id.VSub_Name BDHASH) <-install>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'No updates are available to install.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Run \''> ($ Id.VSub_Number 0) <' fetch\' first.'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [4486 4502] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name BDHASH) <'-install/INDEX-OLD'>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name BDHASH) <'-install/INDEX-NEW'>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) ] ops: [<Id.Op_DPipe _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'Update manifest is corrupt -- this should never happen.'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Re-run \''> ($ Id.VSub_Number 0) <' fetch\'.'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [4529 4561] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'BOOTFILE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BOOTFILE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BOOTFILE='> name:BOOTFILE) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <sysctl> more_env: [] words: [{<sysctl>} {<-n>} {<kern.bootfile>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'KERNELDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KERNELDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KERNELDIR='> name:KERNELDIR) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name BOOTFILE> var_name: BOOTFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <kernel>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-d>} {(${ Id.VSub_Name KERNELDIR)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Cannot identify running kernel'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [4614 4629] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <rollback_check_params> name: rollback_check_params body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <id> more_env: [] words: [{<id>} {<-u>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'You must be root to run this.'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [4667 4687] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_WORKDIR_bad='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_WORKDIR_bad='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_WORKDIR_bad='> name:_WORKDIR_bad) op: assign_op.Equal rhs: {(DQ <'Directory does not exist or is not writable: '>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-d>} {(DQ (${ Id.VSub_Name WORKDIR))} {<-a>} {<-w>} {(DQ (${ Id.VSub_Name WORKDIR))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_Number 0)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <': '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name _WORKDIR_bad))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name WORKDIR)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [4716 4743] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {(${ Id.VSub_Name WORKDIR)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'BDHASH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BDHASH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BDHASH='> name:BDHASH) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name BASEDIR)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sha256> more_env: [] words: [{<sha256>} {<-q>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-L>} {(${ Id.VSub_Name BDHASH) <-rollback>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'No rollback directory found.'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [4829 4845] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name BDHASH) <'-rollback/INDEX-OLD'>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name BDHASH) <'-rollback/INDEX-NEW'>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) ] ops: [<Id.Op_DPipe _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'Update manifest is corrupt -- this should never happen.'>)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [4863 4895] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <IDS_check_params> name: IDS_check_params body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <export> more_env: [] words: [ {<export>} {<Id.Lit_VarLike 'HTTP_USER_AGENT='> (DQ <'freebsd-update ('> (${ Id.VSub_Name COMMAND) <', '> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<-r>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <')'> ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike '_SERVERNAME_z='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_SERVERNAME_z='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_SERVERNAME_z='> name:_SERVERNAME_z) op: assign_op.Equal rhs: {(DQ <'SERVERNAME must be given via command line or configuration file.'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_KEYPRINT_z='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_KEYPRINT_z='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_KEYPRINT_z='> name:_KEYPRINT_z) op: assign_op.Equal rhs: {(DQ <'Key must be given via -k option or configuration file.'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_KEYPRINT_bad='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_KEYPRINT_bad='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_KEYPRINT_bad='> name:_KEYPRINT_bad) op: assign_op.Equal rhs: {(DQ <'Invalid key fingerprint: '>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_WORKDIR_bad='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_WORKDIR_bad='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_WORKDIR_bad='> name:_WORKDIR_bad) op: assign_op.Equal rhs: {(DQ <'Directory does not exist or is not writable: '>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name SERVERNAME))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_Number 0)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <': '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ (${ Id.VSub_Name _SERVERNAME_z))}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [4991 5006] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name KEYPRINT))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_Number 0)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <': '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ (${ Id.VSub_Name _KEYPRINT_z))}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [5042 5057] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ (${ Id.VSub_Name KEYPRINT))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-qE>} {(DQ <'^[0-9a-f]{64}'> <Id.Lit_Dollar '$'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_Number 0)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <': '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name _KEYPRINT_bad))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name KEYPRINT)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [5093 5117] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-d>} {(DQ (${ Id.VSub_Name WORKDIR))} {<-a>} {<-w>} {(DQ (${ Id.VSub_Name WORKDIR))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_Number 0)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <': '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name _WORKDIR_bad))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name WORKDIR)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [5162 5189] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {(${ Id.VSub_Name WORKDIR)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'RELNUM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'RELNUM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RELNUM='> name:RELNUM) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<-r>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-E>} {(SQ <'s,-p[0-9]+,,'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-E>} {(SQ <'s,-SECURITY,-RELEASE,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ARCH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ARCH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARCH='> name:ARCH) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<-m>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'FETCHDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FETCHDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FETCHDIR='> name:FETCHDIR) op: assign_op.Equal rhs: {(${ Id.VSub_Name RELNUM) <'/'> (${ Id.VSub_Name ARCH)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PATCHDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PATCHDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATCHDIR='> name:PATCHDIR) op: assign_op.Equal rhs: {(${ Id.VSub_Name RELNUM) <'/'> (${ Id.VSub_Name ARCH) <'/bp'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'BOOTFILE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BOOTFILE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BOOTFILE='> name:BOOTFILE) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <sysctl> more_env: [] words: [{<sysctl>} {<-n>} {<kern.bootfile>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'KERNELDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KERNELDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KERNELDIR='> name:KERNELDIR) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name BOOTFILE> var_name: BOOTFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <kernel>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-d>} {(${ Id.VSub_Name KERNELDIR)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Cannot identify running kernel'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [5355 5370] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'KERNCONF='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KERNCONF='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KERNCONF='> name:KERNCONF) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<-i>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name KERNCONF)} {<Id.Lit_Equals '='>} {(DQ <SMP-GENERIC>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'KERNCONF='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KERNCONF='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KERNCONF='> name:KERNCONF) op: assign_op.Equal rhs: {<SMP>} ) ] redirects: [] ) ] spids: [5431 5448] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name KERNCONF)} {<Id.Lit_Equals '='>} {(DQ <GENERIC>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name ARCH)} {<Id.Lit_Equals '='>} {(DQ <amd64>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple blame_tok: <sysctl> more_env: [] words: [{<sysctl>} {<kern.version>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-qE>} {(SQ <'/SMP$'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'KERNCONF='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KERNCONF='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'KERNCONF='> name: KERNCONF ) op: assign_op.Equal rhs: {<SMP>} ) ] redirects: [] ) ] spids: [5494 5511] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [5458 5491] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SHA256='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHA256='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHA256='> name:SHA256) op: assign_op.Equal rhs: {<'/sbin/sha256'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PHTTPGET='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PHTTPGET='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PHTTPGET='> name:PHTTPGET) op: assign_op.Equal rhs: {<'/usr/libexec/phttpget'>} ) ] redirects: [] ) (command.Simple blame_tok: <fetch_setup_verboselevel> more_env: [] words: [{<fetch_setup_verboselevel>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_pick_server_init> name: fetch_pick_server_init body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<serverlist_tried>} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <which> more_env: [] words: [{<which>} {<-s>} {<host>}] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<serverlist_full>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [5610 5621] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} {(DQ <'Looking up '> (${ Id.VSub_Name SERVERNAME) <' mirrors... '>)} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'MLIST='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MLIST='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MLIST='> name:MLIST) op: assign_op.Equal rhs: {(DQ <_http._tcp.> (${ Id.VSub_Name SERVERNAME))} ) ] redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <host> more_env: [] words: [{<host>} {<-t>} {<srv>} {(DQ (${ Id.VSub_Name MLIST))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-nE>} {(DQ <'s/'> (${ Id.VSub_Name MLIST) <' (has SRV record|server selection) //p'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [ {<cut>} {<-f>} {<1> <Id.Lit_Comma ','> <2> <Id.Lit_Comma ','> <4>} {<-d>} {(SQ <' '>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-e>} {(SQ <'s/\\.$//'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<serverlist_full>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<serverlist_full>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'none found.'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [5743 5766] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<serverlist_full>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } {(DQ <'mirrors found.'>)} ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-n>} {(DQ (${ Id.VSub_Name HTTP_PROXY) (${ Id.VSub_Name http_proxy))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'RANDVALUE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'RANDVALUE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RANDVALUE='> name:RANDVALUE) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <sha256> more_env: [] words: [ {<sha256>} {<-qs>} { (DQ (${ Id.VSub_Name HTTP_PROXY) (${ Id.VSub_Name http_proxy) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {<-d>} {(SQ <a-f>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-c>} {<1-9>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] spids: [5817 5835] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'RANDVALUE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'RANDVALUE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RANDVALUE='> name:RANDVALUE) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <jot> more_env: [] words: [{<jot>} {<-r>} {<1>} {<0>} {<999999999>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_pick_server> name: fetch_pick_server body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<serverlist_tried>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <comm> more_env: [] words: [{<comm>} {<-23>} {<serverlist_full>} {<->}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<serverlist>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<serverlist>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'No mirrors remaining, giving up.'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [5941 5964] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SRV_PRIORITY='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SRV_PRIORITY='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SRV_PRIORITY='> name:SRV_PRIORITY) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <' '>)} {<serverlist>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-n>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <head> more_env: [] words: [{<head>} {<-1>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Sentence child: (command.ShAssignment left: <Id.Lit_VarLike 'SRV_WSUM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SRV_WSUM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SRV_WSUM='> name:SRV_WSUM) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<X>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName X))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DollarBrace '${'> pattern: (pat.Words words: [ {(${ Id.VSub_Name SRV_PRIORITY) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\ '> ch: ' ' ) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SRV_W='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SRV_W='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SRV_W='> name:SRV_W) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName X)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <' '>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SRV_WSUM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SRV_WSUM='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SRV_WSUM='> name: SRV_WSUM ) op: assign_op.Equal rhs: { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName SRV_WSUM)} right: {($ Id.VSub_DollarName SRV_W)} ) right: <Id.Right_DollarDParen _> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [(Redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<serverlist>})] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name SRV_WSUM)} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SRV_WSUM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SRV_WSUM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SRV_WSUM='> name:SRV_WSUM) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-E>} {(DQ <'^'> (${ Id.VSub_Name SRV_PRIORITY) <' '>)} {<serverlist>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SRV_W_ADD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SRV_W_ADD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SRV_W_ADD='> name:SRV_W_ADD) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] spids: [6106 6121] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SRV_W_ADD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SRV_W_ADD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SRV_W_ADD='> name:SRV_W_ADD) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SRV_RND='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SRV_RND='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SRV_RND='> name:SRV_RND) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <expr> more_env: [] words: [ {<expr>} {(${ Id.VSub_Name RANDVALUE)} {<Id.Lit_Other '%'>} {(${ Id.VSub_Name SRV_WSUM)} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<X>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName X))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DollarBrace '${'> pattern: (pat.Words words: [ {(${ Id.VSub_Name SRV_PRIORITY) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\ '> ch: ' ' ) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SRV_W='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SRV_W='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SRV_W='> name:SRV_W) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName X)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <' '>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SRV_W='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SRV_W='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SRV_W='> name:SRV_W) op: assign_op.Equal rhs: { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName SRV_W)} right: {($ Id.VSub_DollarName SRV_W_ADD)} ) right: <Id.Right_DollarDParen _> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName SRV_RND)} {<-lt>} {($ Id.VSub_DollarName SRV_W)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SERVERNAME='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SERVERNAME='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SERVERNAME='> name: SERVERNAME ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName X)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<3>} {<-d>} {(SQ <' '>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName X))}] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<serverlist_tried>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] spids: [6258 6271] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SRV_RND='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SRV_RND='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SRV_RND='> name: SRV_RND ) op: assign_op.Equal rhs: { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName SRV_RND)} right: {($ Id.VSub_DollarName SRV_W)} ) right: <Id.Right_DollarDParen _> ) } ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [(Redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<serverlist>})] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_make_patchlist> name: fetch_make_patchlist body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-vE>} { (DQ <'^([0-9a-f]{64})'> <Id.Lit_BadBackslash '\\'> <'|'> <Id.Lit_BadBackslash '\\'> <1> <Id.Lit_Dollar '$'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {(SQ <'|'>)} {(SQ <' '>)}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<X>} {<Y>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {(DQ <'files/'> (${ Id.VSub_Name Y) <.gz>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {(DQ <'files/'> (${ Id.VSub_Name X) <.gz>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] spids: [6399 6435] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ (${ Id.VSub_Name X) <'|'> (${ Id.VSub_Name Y))}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <uniq> more_env: [] words: [{<uniq>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_progress> name: fetch_progress body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'LNC='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LNC='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LNC='> name:LNC) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<x>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'LNC='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LNC='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LNC='> name:LNC) op: assign_op.Equal rhs: { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName LNC)} right: {<Id.Lit_Digits 1>} ) right: <Id.Right_DollarDParen _> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Percent left: {($ Id.VSub_DollarName LNC)} right: {<Id.Lit_Digits 10>} ) right: <Id.Right_DollarDParen _> ) } {<Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {($ Id.VSub_DollarName LNC)}] redirects: [] do_fork: T ) ] spids: [6502 6522] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Percent left: {($ Id.VSub_DollarName LNC)} right: {<Id.Lit_Digits 2>} ) right: <Id.Right_DollarDParen _> ) } {<Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {<.>}] redirects: [] do_fork: T ) ] spids: [6532 6552] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <' '>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <continuep> name: continuep body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [ {<read>} {<-p>} {(DQ <'Does this look reasonable (y/n)? '>)} {<CONTINUE>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name CONTINUE))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <y> pattern: (pat.Words words:[{<y> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <n> pattern: (pat.Words words:[{<n> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <workdir_init> name: workdir_init body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {<files>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <touch> more_env: [] words: [{<touch>} {<tINDEX.present>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_key> name: fetch_key body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-r>} {<pub.ssl>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [{(${ Id.VSub_Name SHA256)} {<-q>} {<pub.ssl>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } {<Id.Lit_Equals '='>} {(${ Id.VSub_Name KEYPRINT)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})] spids: [6693 6728] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} {(DQ <'Fetching public key from '> (${ Id.VSub_Name SERVERNAME) <'... '>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<pub.ssl>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <fetch> more_env: [] words: [ {<fetch>} {(${ Id.VSub_Name QUIETFLAG)} {<http> <Id.Lit_Colon ':'> <'//'> (${ Id.VSub_Name SERVERNAME) <'/'> (${ Id.VSub_Name FETCHDIR) <'/pub.ssl'> } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {(${ Id.VSub_Name QUIETREDIR)} ) ] do_fork: T ) (command.Simple blame_tok: <true> more_env: [] words: [{<true>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-r>} {<pub.ssl>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <failed.>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [6790 6803] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [{(${ Id.VSub_Name SHA256)} {<-q>} {<pub.ssl>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } {<Id.Lit_Equals '='>} {(${ Id.VSub_Name KEYPRINT)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'key has incorrect hash.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<pub.ssl>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [6821 6848] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <done.>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_tag> name: fetch_tag body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'Fetching metadata signature '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(${ Id.VSub_Name NDEBUG)} { (DQ <'for '> (${ Id.VSub_Name RELNUM) <' from '> (${ Id.VSub_Name SERVERNAME) <'... '>) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<latest.ssl>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <fetch> more_env: [] words: [ {<fetch>} {(${ Id.VSub_Name QUIETFLAG)} {<http> <Id.Lit_Colon ':'> <'//'> (${ Id.VSub_Name SERVERNAME) <'/'> (${ Id.VSub_Name FETCHDIR) <'/latest.ssl'> } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {(${ Id.VSub_Name QUIETREDIR)} ) ] do_fork: T ) (command.Simple blame_tok: <true> more_env: [] words: [{<true>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-r>} {<latest.ssl>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <failed.>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [6958 6971] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <openssl> more_env: [] words: [{<openssl>} {<rsautl>} {<-pubin>} {<-inkey>} {<pub.ssl>} {<-verify>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<latest.ssl>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<tag.new>} ) (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {(${ Id.VSub_Name QUIETREDIR)} ) ] do_fork: T ) (command.Simple blame_tok: <true> more_env: [] words: [{<true>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<latest.ssl>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<tag.new>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } {<Id.Lit_Equals '='>} {<1>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-qE>} { (DQ <'^freebsd-update'> <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name ARCH) <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name RELNUM) <Id.Lit_BadBackslash '\\'> <'|[0-9]+'> <Id.Lit_BadBackslash '\\'> <'|[0-9a-f]{64}'> <Id.Lit_BadBackslash '\\'> <'|[0-9]{10}'> ) } {<tag.new>} ] redirects: [] do_fork: T ) ] ops: [] ) ] ops: [<Id.Op_DPipe _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'invalid signature.'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [7028 7088] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <done.>)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'RELPATCHNUM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'RELPATCHNUM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RELPATCHNUM='> name:RELPATCHNUM) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<4>} {<-d>} {(SQ <'|'>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<tag.new>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'TINDEXHASH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TINDEXHASH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TINDEXHASH='> name:TINDEXHASH) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<5>} {<-d>} {(SQ <'|'>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<tag.new>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'EOLTIME='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'EOLTIME='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EOLTIME='> name:EOLTIME) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<6>} {<-d>} {(SQ <'|'>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<tag.new>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_tagsanity> name: fetch_tagsanity body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'RELPX='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'RELPX='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RELPX='> name:RELPX) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<-r>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-E>} {(SQ <'s,.*-,,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name RELPX)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-qE>} {(SQ <'^p[0-9]+$'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'RELPX='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'RELPX='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RELPX='> name:RELPX) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name RELPX)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-c>} {<2->}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] spids: [7221 7240] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'RELPX='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'RELPX='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RELPX='> name:RELPX) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name RELPATCHNUM))} {<-lt>} {(DQ (${ Id.VSub_Name RELPX))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ <'Files on mirror ('> (${ Id.VSub_Name RELNUM) <-p> (${ Id.VSub_Name RELPATCHNUM) <')'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' appear older than what'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'we are currently running ('> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<-r>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <')!'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Cowardly refusing to proceed any further.'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [7273 7294] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [{<Id.Lit_LBracket '['>} {<-f>} {<tag>} {<Id.Lit_RBracket ']'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-qE>} { (DQ <'^freebsd-update'> <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name ARCH) <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name RELNUM) <Id.Lit_BadBackslash '\\'> <'|[0-9]+'> <Id.Lit_BadBackslash '\\'> <'|[0-9a-f]{64}'> <Id.Lit_BadBackslash '\\'> <'|[0-9]{10}'> ) } {<tag>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'LASTRELPATCHNUM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LASTRELPATCHNUM='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'LASTRELPATCHNUM='> name: LASTRELPATCHNUM ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<4>} {<-d>} {(SQ <'|'>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<tag>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name RELPATCHNUM))} {<-lt>} {(DQ (${ Id.VSub_Name LASTRELPATCHNUM))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ <'Files on mirror ('> (${ Id.VSub_Name RELNUM) <-p> (${ Id.VSub_Name RELPATCHNUM) <')'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' are older than the'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'most recently seen updates'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' ('> (${ Id.VSub_Name RELNUM) <-p> (${ Id.VSub_Name LASTRELPATCHNUM) <').'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Cowardly refusing to proceed any further.'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [7437 7458] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [7367 7411] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_metadata_index> name: fetch_metadata_index body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name NDEBUG)} {(DQ <'Fetching metadata index... '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {(${ Id.VSub_Name TINDEXHASH)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <fetch> more_env: [] words: [ {<fetch>} {(${ Id.VSub_Name QUIETFLAG)} {<http> <Id.Lit_Colon ':'> <'//'> (${ Id.VSub_Name SERVERNAME) <'/'> (${ Id.VSub_Name FETCHDIR) <'/t/'> (${ Id.VSub_Name TINDEXHASH) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Redir_Great '2>'> more_env: [] words: [] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {(${ Id.VSub_Name QUIETREDIR)} ) ] do_fork: F ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name TINDEXHASH)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <failed.>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [7591 7606] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [ {(${ Id.VSub_Name SHA256)} {<-q>} {(${ Id.VSub_Name TINDEXHASH)} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(${ Id.VSub_Name TINDEXHASH)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'update metadata index corrupt.'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [7624 7652] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <done.>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_metadata_bogus> name: fetch_metadata_bogus body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'The update metadata'> ($ Id.VSub_Number 1) <' is correctly signed, but'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'failed an integrity check.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Cowardly refusing to proceed any further.'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_metadata_index_merge> name: fetch_metadata_index_merge body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [METAFILE] iterable: (for_iter.Words words:[{($ Id.VSub_At '@')}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-E>} { (DQ <'^'> (${ Id.VSub_Name METAFILE) <Id.Lit_BadBackslash '\\'> <'|'> ) } {(${ Id.VSub_Name TINDEXHASH)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } {<-ne>} {<1>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <fetch_metadata_bogus> more_env: [] words: [{<fetch_metadata_bogus>} {(DQ <' index'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [7749 7791] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-E>} {(DQ (${ Id.VSub_Name METAFILE) <Id.Lit_BadBackslash '\\'> <'|'>)} {(${ Id.VSub_Name TINDEXHASH)} ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<tINDEX.wanted>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {<tINDEX.present>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Pipeline children: [ (command.Simple blame_tok: <join> more_env: [] words: [ {<join>} {<-t>} {(SQ <'|'>)} {<-v>} {<2>} {<tINDEX.wanted>} {<tINDEX.present>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-m>} {<->} {<tINDEX.wanted>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<tINDEX.new>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<tINDEX.wanted>}] redirects: [] do_fork: T ) ] spids: [7840 7851] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {<tINDEX.wanted>} {<tINDEX.new>}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_metadata_index_sanity> name: fetch_metadata_index_sanity body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-qvE>} {(SQ <'^[0-9A-Z.-]+\\|[0-9a-f]{64}$'>)} {<tINDEX.new>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <fetch_metadata_bogus> more_env: [] words: [{<fetch_metadata_bogus>} {(DQ <' index'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [7926 7939] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_metadata_sanity> name: fetch_metadata_sanity body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'P='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'P='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'P='> name:P) op: assign_op.Equal rhs: {(DQ <'[-+./:=,%@_[~[:alnum:]]'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'M='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'M='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'M='> name:M) op: assign_op.Equal rhs: { (DQ <'[0-9]+'> <Id.Lit_BadBackslash '\\'> <'|[0-9]+'> <Id.Lit_BadBackslash '\\'> <'|[0-9]+'> <Id.Lit_BadBackslash '\\'> <'|[0-9]+'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'H='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'H='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'H='> name:H) op: assign_op.Equal rhs: {(DQ <'[0-9a-f]{64}'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple blame_tok: <gunzip> more_env: [] words: [{<gunzip>} {<-c>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'files/'> ($ Id.VSub_Number 1) <.gz>} ) ] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-qvE>} { (DQ <'^[a-z]+'> <Id.Lit_BadBackslash '\\'> <'|[0-9a-z-]+'> <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name P) <'+'> <Id.Lit_BadBackslash '\\'> <'|[fdL-]'> <Id.Lit_BadBackslash '\\'> <'|'> ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <fetch_metadata_bogus> more_env: [] words: [{<fetch_metadata_bogus>} {(DQ )}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [8011 8047] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <gunzip> more_env: [] words: [{<gunzip>} {<-c>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'files/'> ($ Id.VSub_Number 1) <.gz>} ) ] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<4->} {<-d>} {(SQ <'|'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<sanitycheck.tmp>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'^f'>)} {<sanitycheck.tmp>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-qvE>} { (DQ <'^f'> <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name M) <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name H) <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name P) <'*'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <fetch_metadata_bogus> more_env: [] words: [{<fetch_metadata_bogus>} {(DQ )}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [8104 8145] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'^d'>)} {<sanitycheck.tmp>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-qvE>} { (DQ <'^d'> <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name M) <Id.Lit_BadBackslash '\\'> <'|'> <Id.Lit_BadBackslash '\\'> <'|'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <fetch_metadata_bogus> more_env: [] words: [{<fetch_metadata_bogus>} {(DQ )}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [8167 8201] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'^L'>)} {<sanitycheck.tmp>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-qvE>} { (DQ <'^L'> <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name M) <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name P) <'*'> <Id.Lit_BadBackslash '\\'> <'|'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <fetch_metadata_bogus> more_env: [] words: [{<fetch_metadata_bogus>} {(DQ )}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [8223 8261] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'^-'>)} {<sanitycheck.tmp>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-qvE>} { (DQ <'^-'> <Id.Lit_BadBackslash '\\'> <'|'> <Id.Lit_BadBackslash '\\'> <'|'> <Id.Lit_BadBackslash '\\'> <'|'> <Id.Lit_BadBackslash '\\'> <'|'> <Id.Lit_BadBackslash '\\'> <'|'> <Id.Lit_BadBackslash '\\'> <'|'> ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <fetch_metadata_bogus> more_env: [] words: [{<fetch_metadata_bogus>} {(DQ )}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [8283 8319] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<sanitycheck.tmp>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_metadata> name: fetch_metadata body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.Simple blame_tok: <fetch_metadata_index> more_env: [] words: [{<fetch_metadata_index>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_metadata_index_merge> more_env: [] words: [{<fetch_metadata_index_merge>} {($ Id.VSub_At '@')}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_metadata_index_sanity> more_env: [] words: [{<fetch_metadata_index_sanity>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <join> more_env: [] words: [ {<join>} {<-t>} {(SQ <'|'>)} {<-o>} {<1.2> <Id.Lit_Comma ','> <2.2>} {<tINDEX.present>} {<tINDEX.new>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <fetch_make_patchlist> more_env: [] words: [{<fetch_make_patchlist>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<patchlist>})] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-s>} {<patchlist>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ <'Fetching '> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<patchlist>} ) ] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {<-d>} {(SQ <' '>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) <' '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(${ Id.VSub_Name NDEBUG)} {(DQ <'metadata patches.'> (${ Id.VSub_Name DDSTATS))} ] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {(SQ <'|'>)} {(SQ <->)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<patchlist>} ) ] do_fork: T ) (command.Simple blame_tok: <lam> more_env: [] words: [ {<lam>} {<-s>} {(DQ (${ Id.VSub_Name FETCHDIR) <'/tp/'>)} {<->} {<-s>} {(DQ <.gz>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <xargs> more_env: [] words: [ {<xargs>} {(${ Id.VSub_Name XARGST)} {(${ Id.VSub_Name PHTTPGET)} {(${ Id.VSub_Name SERVERNAME)} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {(${ Id.VSub_Name STATSREDIR)} ) ] do_fork: T ) (command.Simple blame_tok: <fetch_progress> more_env: [] words: [{<fetch_progress>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <done.>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'Applying metadata patches... '>)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {(SQ <'|'>)} {(SQ <' '>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<patchlist>} ) ] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<X>} {<Y>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} { (DQ (${ Id.VSub_Name X) <-> (${ Id.VSub_Name Y) <.gz> ) } {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Sentence child: (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) terminator: <Id.Op_Semi _> ) ] spids: [8603 8625] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <gunzip> more_env: [] words: [{<gunzip>} {<-c>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(${ Id.VSub_Name X) <-> (${ Id.VSub_Name Y) <.gz>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<diff>} ) ] do_fork: T ) (command.Simple blame_tok: <gunzip> more_env: [] words: [{<gunzip>} {<-c>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'files/'> (${ Id.VSub_Name X) <.gz>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<diff-OLD>} ) ] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'^-'>)} {<diff>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-c>} {<2->}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<PREFIX>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <look> more_env: [] words: [ {<look>} {(DQ (${ Id.VSub_Name PREFIX))} {<diff-OLD>} ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<diff-rm>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'^\\+'>)} {<diff>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-c>} {<2->}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<diff-add>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <comm> more_env: [] words: [{<comm>} {<-23>} {<diff-OLD>} {<diff-rm>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<->} {<diff-add>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<diff-NEW>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [ {(${ Id.VSub_Name SHA256)} {<-q>} {<diff-NEW>} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } {<Id.Lit_Equals '='>} {(${ Id.VSub_Name Y)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {<diff-NEW>} {<'files/'> (${ Id.VSub_Name Y)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <gzip> more_env: [] words: [{<gzip>} {<-n>} {<'files/'> (${ Id.VSub_Name Y)}] redirects: [] do_fork: T ) ] spids: [8782 8807] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {<diff-NEW>} {(${ Id.VSub_Name Y) <.bad>}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} {(${ Id.VSub_Name X) <-> (${ Id.VSub_Name Y) <.gz>} {<diff>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<diff-OLD>} {<diff-NEW>} {<diff-add>} {<diff-rm>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {(${ Id.VSub_Name QUIETREDIR)} ) ] ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <done.>)}] redirects: [] do_fork: T ) ] spids: [8425 8436] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <'|'>)}] redirects: [(Redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<tINDEX.new>})] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<Y>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {(DQ <'files/'> (${ Id.VSub_Name Y) <.gz>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name Y)}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] spids: [8927 8946] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<filelist>})] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [{<Id.Lit_LBracket '['>} {<-s>} {<filelist>} {<Id.Lit_RBracket ']'>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ <'Fetching '> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<filelist>} ) ] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {<-d>} {(SQ <' '>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) <' '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name NDEBUG)} {(DQ <'metadata files... '>)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <lam> more_env: [] words: [ {<lam>} {<-s>} {(DQ (${ Id.VSub_Name FETCHDIR) <'/m/'>)} {<->} {<-s>} {(DQ <.gz>)} ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<filelist>} ) ] do_fork: T ) (command.Simple blame_tok: <xargs> more_env: [] words: [ {<xargs>} {(${ Id.VSub_Name XARGST)} {(${ Id.VSub_Name PHTTPGET)} {(${ Id.VSub_Name SERVERNAME)} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {(${ Id.VSub_Name QUIETREDIR)} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<Y>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name Y) <.gz>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <failed.>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [9090 9106] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <gunzip> more_env: [] words: [{<gunzip>} {<-c>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(${ Id.VSub_Name Y) <.gz>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [{(${ Id.VSub_Name SHA256)} {<-q>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } {<Id.Lit_Equals '='>} {(${ Id.VSub_Name Y)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {(${ Id.VSub_Name Y) <.gz>} {<'files/'> (${ Id.VSub_Name Y) <.gz>} ] redirects: [] do_fork: T ) ] spids: [9124 9162] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'metadata is corrupt.'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<filelist>} ) ] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <done.>)}] redirects: [] do_fork: T ) ] spids: [8975 8986] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <'|'>)} {<tINDEX.new>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<filelist>})] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<X>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <fetch_metadata_sanity> more_env: [] words: [{<fetch_metadata_sanity>} {(${ Id.VSub_Name X)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [(Redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<filelist>})] ) (command.Pipeline children: [ (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <'|'>)} {<tINDEX.present>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<oldfiles>})] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <'|'>)} {<tINDEX.new>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <comm> more_env: [] words: [{<comm>} {<-13>} {<->} {<oldfiles>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <lam> more_env: [] words: [{<lam>} {<-s>} {(DQ <'files/'>)} {<->} {<-s>} {(DQ <.gz>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <xargs> more_env: [] words: [{<xargs>} {<rm>} {<-f>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<patchlist>} {<filelist>} {<oldfiles>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {(${ Id.VSub_Name TINDEXHASH)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {<tINDEX.new>} {<tINDEX.present>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {<tag.new>} {<tag>}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_filter_metadata_components> name: fetch_filter_metadata_components body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'METAHASH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'METAHASH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'METAHASH='> name:METAHASH) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <look> more_env: [] words: [{<look>} {(DQ ($ Id.VSub_Number 1) <'|'>)} {<tINDEX.present>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <'|'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <gunzip> more_env: [] words: [{<gunzip>} {<-c>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'files/'> (${ Id.VSub_Name METAHASH) <.gz>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 1) <.all>} ) ] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [C] iterable: (for_iter.Words words:[{(${ Id.VSub_Name COMPONENTS)}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <look> more_env: [] words: [ {<look>} { (DQ (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name C)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {(SQ <'/'>)} {(SQ <'|'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) <'|'> ) } {($ Id.VSub_Number 1) <.all>} ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 1)} ) ] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {($ Id.VSub_Number 1) <.all>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_filter_metadata> name: fetch_filter_metadata body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <fetch_filter_metadata_components> more_env: [] words: [{<fetch_filter_metadata_components>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<3->} {<-d>} {(SQ <'|'>)} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-e>} {(SQ <'s,/|d|,|d|,'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-e>} {(SQ <'s,/|-|,|-|,'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 1) <.tmp>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [X] iterable: (for_iter.Words words:[{(${ Id.VSub_Name IGNOREPATHS)}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-E>} {(DQ <'^'> (${ Id.VSub_Name X))} {($ Id.VSub_Number 1) <.tmp>} ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <comm> more_env: [] words: [{<comm>} {<-13>} {<->} {($ Id.VSub_Number 1) <.tmp>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 1)} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {($ Id.VSub_Number 1) <.tmp>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_filter_kernel_names> name: fetch_filter_kernel_names body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<Id.Lit_Other '^'> <'/boot/'> ($ Id.VSub_Number 2)} {($ Id.VSub_Number 1)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(DQ <'s,/boot/'> ($ Id.VSub_Number 2) <','> (${ Id.VSub_Name KERNELDIR) <',g'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<->} {($ Id.VSub_Number 1)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 1) <.tmp>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {($ Id.VSub_Number 1) <.tmp>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-d>} {<'/boot/'> ($ Id.VSub_Number 2)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-v>} {<Id.Lit_Other '^'> <'/boot/'> ($ Id.VSub_Number 2)} {($ Id.VSub_Number 1)} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 1) <.tmp>} ) ] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {($ Id.VSub_Number 1) <.tmp>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) ] spids: [9770 9784] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_inspect_system> name: fetch_inspect_system body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<.err>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'Inspecting system... '>)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 3)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<filelist>})] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<F>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-e>} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ (${ Id.VSub_Name F) <'|-||||||'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] spids: [9920 9939] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-r>} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Cannot read file: '> (${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F) ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/stderr'>} ) ] do_fork: T ) (command.Simple blame_tok: <touch> more_env: [] words: [{<touch>} {<.err>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [9958 9977] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-L>} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name F) <'|L|'>)}] redirects: [] do_fork: T ) (command.Sentence child: (command.Simple blame_tok: <stat> more_env: [] words: [ {<stat>} {<-n>} {<-f>} {(SQ <'%d-%i|%u|%g|%Mp%Lp|%Of|'>)} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F)} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <readlink> more_env: [] words: [ {<readlink>} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F)} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] spids: [10017 10034] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name F) <'|f|'>)}] redirects: [] do_fork: T ) (command.Sentence child: (command.Simple blame_tok: <stat> more_env: [] words: [ {<stat>} {<-n>} {<-f>} {(SQ <'%d-%i|%u|%g|%Mp%Lp|%Of|'>)} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F)} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <sha256> more_env: [] words: [ {<sha256>} {<-q>} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F)} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] spids: [10081 10098] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-d>} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name F) <'|d|'>)}] redirects: [] do_fork: T ) (command.Sentence child: (command.Simple blame_tok: <stat> more_env: [] words: [ {<stat>} {<-f>} {(SQ <'%d-%i|%u|%g|%Mp%Lp|%Of|'>)} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F)} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] spids: [10147 10164] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Unknown file type: '> (${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F) ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/stderr'>} ) ] do_fork: T ) (command.Simple blame_tok: <touch> more_env: [] words: [{<touch>} {<.err>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [(Redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<filelist>})] ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-k>} {<3> <Id.Lit_Comma ','> <3>} {<-t>} {(SQ <'|'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 2) <.tmp>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<filelist>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [{<Id.Lit_LBracket '['>} {<-f>} {<.err>} {<Id.Lit_RBracket ']'>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})] spids: [10271 10282] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <cut> more_env: [] words: [ {<cut>} {<-f>} {<1> <Id.Lit_Comma ','> <3>} {<-d>} {(SQ <'|'>)} {($ Id.VSub_Number 2) <.tmp>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-k>} {<1> <Id.Lit_Comma ','> <1>} {<-t>} {(SQ <'|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-s>} {<-u>} {<-k>} {<2> <Id.Lit_Comma ','> <2>} {<-t>} {(SQ <'|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <join> more_env: [] words: [ {<join>} {<-1>} {<2>} {<-2>} {<3>} {<-t>} {(SQ <'|'>)} {<->} {($ Id.VSub_Number 2) <.tmp>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <awk> more_env: [] words: [ {<awk>} {<-F>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\|'> ch:'|')} {<-v>} {<Id.Lit_VarLike 'OFS='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\|'> ch: '|' ) } { (SQ <'{\n'> <'\t\t if (($2 == $3) || ($4 == "-"))\n'> <'\t\t\tprint $3,$4,$5,$6,$7,$8,$9,""\n'> <'\t\t else\n'> <'\t\t\tprint $3,$4,$5,$6,$7,$8,$9,$2\n'> <'\t\t}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 2)} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {($ Id.VSub_Number 2) <.tmp>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <done.>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_filter_mergechanges> name: fetch_filter_mergechanges body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [F] iterable: (for_iter.Words words:[{($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Pipeline children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [X] iterable: (for_iter.Words words:[{(${ Id.VSub_Name MERGECHANGES)}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-E>} {(DQ <'^'> (${ Id.VSub_Name X))} {(${ Id.VSub_Name F)} ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <cut> more_env: [] words: [ {<cut>} {<-f>} {<1> <Id.Lit_Comma ','> <2> <Id.Lit_Comma ','> <7>} {<-d>} {(SQ <'|'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name F) <-values>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <comm> more_env: [] words: [ {<comm>} {<-13>} {($ Id.VSub_Number 1) <-values>} {($ Id.VSub_Number 2) <-values>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <fgrep> more_env: [] words: [{<fgrep>} {(SQ <'|f|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 2) <-paths>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<X>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <look> more_env: [] words: [ {<look>} {(DQ (${ Id.VSub_Name X) <'|'>)} {($ Id.VSub_Number 1) <-values>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <head> more_env: [] words: [{<head>} {<-1>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 2) <-paths>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 3)} ) ] ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {($ Id.VSub_Number 1) <-values>} {($ Id.VSub_Number 2) <-values>} {($ Id.VSub_Number 2) <-paths>} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_filter_unmodified_notpresent> name: fetch_filter_unmodified_notpresent body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [X] iterable: (for_iter.Words words:[{(${ Id.VSub_Name UPDATEIFUNMODIFIED)}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(DQ <'^'> (${ Id.VSub_Name X))} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(DQ <'^'> (${ Id.VSub_Name X))} {($ Id.VSub_Number 3)}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <cut> more_env: [] words: [ {<cut>} {<-f>} {<1> <Id.Lit_Comma ','> <2> <Id.Lit_Comma ','> <7>} {<-d>} {(SQ <'|'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 1) <-values>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [X] iterable: (for_iter.Words words:[{(${ Id.VSub_Name UPDATEIFUNMODIFIED)}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(DQ <'^'> (${ Id.VSub_Name X))} {($ Id.VSub_Number 2)}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <cut> more_env: [] words: [ {<cut>} {<-f>} {<1> <Id.Lit_Comma ','> <2> <Id.Lit_Comma ','> <7>} {<-d>} {(SQ <'|'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 2) <-values>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <comm> more_env: [] words: [ {<comm>} {<-13>} {($ Id.VSub_Number 1) <-values>} {($ Id.VSub_Number 2) <-values>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-t>} {(SQ <'|'>)} {<-k>} {<1> <Id.Lit_Comma ','> <1>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<mlines.tmp>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)} {($ Id.VSub_Number 4)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <join> more_env: [] words: [{<join>} {<-v>} {<2>} {<-t>} {(SQ <'|'>)} {<->} {<mlines.tmp>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<mlines>})] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {($ Id.VSub_Number 1) <-values>} {($ Id.VSub_Number 2) <-values>} {<mlines.tmp>} ] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <comm> more_env: [] words: [{<comm>} {<-13>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [ {<cut>} {<-f>} {<1> <Id.Lit_Comma ','> <2> <Id.Lit_Comma ','> <7>} {<-d>} {(SQ <'|'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <fgrep> more_env: [] words: [{<fgrep>} {(SQ <'|-|'>)}] redirects: [(Redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<mlines>})] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [X] iterable: (for_iter.Words words: [{($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)} {($ Id.VSub_Number 3)}] ) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <sort> more_env: [] words: [ {<sort>} {<-t>} {(SQ <'|'>)} {<-k>} {<1> <Id.Lit_Comma ','> <1>} {(${ Id.VSub_Name X)} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name X) <.tmp>} ) ] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<mlines>} ) ] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <join> more_env: [] words: [ {<join>} {<-v>} {<2>} {<-t>} {(SQ <'|'>)} {<->} {(${ Id.VSub_Name X) <.tmp>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name X)} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {(${ Id.VSub_Name X) <.tmp>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <fgrep> more_env: [] words: [{<fgrep>} {<-v>} {(SQ <'|-|'>)} {<mlines>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<modifiedfiles>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<mlines>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_filter_allowadd> name: fetch_filter_allowadd body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1> <Id.Lit_Comma ','> <2>} {<-d>} {(SQ <'|'>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 1)} ) ] do_fork: T ) (command.Simple blame_tok: <fgrep> more_env: [] words: [{<fgrep>} {(SQ <'|-'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<filesnotpresent>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name ALLOWADD)} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <yes>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Pipeline children: [ (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 2)} ) ] do_fork: T ) (command.Simple blame_tok: <join> more_env: [] words: [{<join>} {<-v>} {<1>} {<-t>} {(SQ <'|'>)} {<->} {<filesnotpresent>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 2) <.tmp>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {($ Id.VSub_Number 2) <.tmp>} {($ Id.VSub_Number 2)}] redirects: [] do_fork: T ) ] spids: [11226 11244] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 1)} ) ] do_fork: T ) (command.Simple blame_tok: <join> more_env: [] words: [{<join>} {<-v>} {<1>} {<-t>} {(SQ <'|'>)} {<->} {<filesnotpresent>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 1) <.tmp>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {($ Id.VSub_Number 1) <.tmp>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<filesnotpresent>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_filter_allowdelete> name: fetch_filter_allowdelete body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [X] iterable: (for_iter.Words words:[{($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1-2>} {<-d>} {(SQ <'|'>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(${ Id.VSub_Name X)} ) ] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name X) <.nodes>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name ALLOWDELETE)} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <yes>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <comm> more_env: [] words: [ {<comm>} {<-23>} {($ Id.VSub_Number 1) <.nodes>} {($ Id.VSub_Number 2) <.nodes>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 1) <.badnodes>} ) ] do_fork: T ) ] spids: [11419 11437] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 1) <.badnodes>} ) ] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Pipeline children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<X>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <look> more_env: [] words: [{<look>} {(DQ (${ Id.VSub_Name X) <'|'>)} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 1) <.badnodes>} ) ] ) (command.Simple blame_tok: <comm> more_env: [] words: [{<comm>} {<-13>} {<->} {($ Id.VSub_Number 1)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 1) <.tmp>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {($ Id.VSub_Number 1) <.tmp>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {($ Id.VSub_Number 1) <.badnodes>} {($ Id.VSub_Number 1) <.nodes>} {($ Id.VSub_Number 2) <.nodes>} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_filter_modified_metadata> name: fetch_filter_modified_metadata body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [X] iterable: (for_iter.Words words:[{($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1-6>} {<-d>} {(SQ <'|'>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(${ Id.VSub_Name X)} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name X) <.metadata>} ) ] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name KEEPMODIFIEDMETADATA)} {<Id.Lit_Equals '='>} {(DQ <yes>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <comm> more_env: [] words: [ {<comm>} {<-13>} {($ Id.VSub_Number 1) <.metadata>} {($ Id.VSub_Number 2) <.metadata>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<keepmeta>} ) ] do_fork: T ) ] spids: [11613 11630] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<keepmeta>})] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 3) <.remove>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 3) <.add>} ) ] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<LINE>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'NODE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NODE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NODE='> name:NODE) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ (${ Id.VSub_Name LINE))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1-2>} {<-d>} {(SQ <'|'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <look> more_env: [] words: [{<look>} {(DQ (${ Id.VSub_Name NODE) <'|'>)} {($ Id.VSub_Number 3)}] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 3) <.remove>} ) ] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <look> more_env: [] words: [{<look>} {(DQ (${ Id.VSub_Name NODE) <'|'>)} {($ Id.VSub_Number 3)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<7->} {<-d>} {(SQ <'|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <lam> more_env: [] words: [{<lam>} {<-s>} {(DQ (${ Id.VSub_Name LINE) <'|'>)} {<->}] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 3) <.add>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) ] right: <Id.KW_Done done> ) redirects: [(Redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<keepmeta>})] ) (command.Pipeline children: [ (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {($ Id.VSub_Number 3) <.remove>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <comm> more_env: [] words: [{<comm>} {<-13>} {<->} {($ Id.VSub_Number 3)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>} {<->} {($ Id.VSub_Number 3) <.add>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 3) <.tmp>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {($ Id.VSub_Number 3) <.tmp>} {($ Id.VSub_Number 3)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<keepmeta>} {($ Id.VSub_Number 1) <.metadata>} {($ Id.VSub_Number 2) <.metadata>} {($ Id.VSub_Number 3) <.add>} {($ Id.VSub_Number 3) <.remove>} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_filter_uptodate> name: fetch_filter_uptodate body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <comm> more_env: [] words: [{<comm>} {<-23>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 1) <.tmp>} ) ] do_fork: T ) (command.Simple blame_tok: <comm> more_env: [] words: [{<comm>} {<-13>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 2) <.tmp>} ) ] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {($ Id.VSub_Number 1) <.tmp>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {($ Id.VSub_Number 2) <.tmp>} {($ Id.VSub_Number 2)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_files_premerge> name: fetch_files_premerge body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-s>} {($ Id.VSub_Number 1)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ <'Fetching files from '> (${ Id.VSub_Name OLDRELNUM) <' for merging... '>) } ] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <fgrep> more_env: [] words: [{<fgrep>} {(SQ <'|f|'>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 1)} ) ] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<3>} {<-d>} {(SQ <'|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<files.wanted>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<Y>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {(DQ <'files/'> (${ Id.VSub_Name Y) <.gz>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name Y)}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] spids: [12027 12046] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<files.wanted>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<filelist>} ) ] ) (command.Pipeline children: [ (command.Simple blame_tok: <lam> more_env: [] words: [ {<lam>} {<-s>} {(DQ (${ Id.VSub_Name OLDFETCHDIR) <'/f/'>)} {<->} {<-s>} {(DQ <.gz>)} ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<filelist>} ) ] do_fork: T ) (command.Simple blame_tok: <xargs> more_env: [] words: [ {<xargs>} {(${ Id.VSub_Name XARGST)} {(${ Id.VSub_Name PHTTPGET)} {(${ Id.VSub_Name SERVERNAME)} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {(${ Id.VSub_Name QUIETREDIR)} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<Y>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name Y) <.gz>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <failed.>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [12139 12155] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <gunzip> more_env: [] words: [{<gunzip>} {<-c>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(${ Id.VSub_Name Y) <.gz>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [{(${ Id.VSub_Name SHA256)} {<-q>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } {<Id.Lit_Equals '='>} {(${ Id.VSub_Name Y)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {(${ Id.VSub_Name Y) <.gz>} {<'files/'> (${ Id.VSub_Name Y) <.gz>} ] redirects: [] do_fork: T ) ] spids: [12173 12211] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ (${ Id.VSub_Name Y) <' has incorrect hash.'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<filelist>} ) ] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <done.>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<filelist>} {<files.wanted>}] redirects: [] do_fork: T ) ] spids: [11939 11950] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_files_prepare> name: fetch_files_prepare body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'Preparing to download files... '>)}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [X] iterable: (for_iter.Words words: [{($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)} {($ Id.VSub_Number 3)}] ) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <cut> more_env: [] words: [ {<cut>} {<-f>} {<1> <Id.Lit_Comma ','> <2> <Id.Lit_Comma ','> <7>} {<-d>} {(SQ <'|'>)} ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(${ Id.VSub_Name X)} ) ] do_fork: T ) (command.Simple blame_tok: <fgrep> more_env: [] words: [{<fgrep>} {(SQ <'|f|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1> <Id.Lit_Comma ','> <3>} {<-d>} {(SQ <'|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name X) <.hashes>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <'|'>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 3) <.hashes>} ) ] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<HASH>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {<'files/'> (${ Id.VSub_Name HASH) <.gz>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name HASH)}] redirects: [] do_fork: T ) ] spids: [12437 12454] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<files.wanted>} ) ] ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <comm> more_env: [] words: [ {<comm>} {<-12>} {($ Id.VSub_Number 1) <.hashes>} {($ Id.VSub_Number 2) <.hashes>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-k>} {<1> <Id.Lit_Comma ','> <1>} {<-t>} {(SQ <'|'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<unmodified.files>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<LINE>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'F='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'F='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'F='> name:F) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ (${ Id.VSub_Name LINE))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'HASH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'HASH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HASH='> name:HASH) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ (${ Id.VSub_Name LINE))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <'|'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {<'files/'> (${ Id.VSub_Name HASH) <.gz>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)] spids: [12595 12610] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <cp> more_env: [] words: [ {<cp>} {(DQ (${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F))} {<tmpfile>} ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <sha256> more_env: [] words: [{<sha256>} {<-q>} {<tmpfile>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(${ Id.VSub_Name HASH)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'File changed while FreeBSD Update running: '> (${ Id.VSub_Name F) ) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [12639 12663] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <gzip> more_env: [] words: [{<gzip>} {<-c>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<tmpfile>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'files/'> (${ Id.VSub_Name HASH) <.gz>} ) ] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<tmpfile>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 2) <.hashes>} ) ] ) (command.Pipeline children: [ (command.Simple blame_tok: <sort> more_env: [] words: [ {<sort>} {<-k>} {<1> <Id.Lit_Comma ','> <1>} {<-t>} {(SQ <'|'>)} {($ Id.VSub_Number 3) <.hashes>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <join> more_env: [] words: [ {<join>} {<-t>} {(SQ <'|'>)} {<-o>} {<2.2> <Id.Lit_Comma ','> <1.2>} {<->} {<unmodified.files>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <fetch_make_patchlist> more_env: [] words: [{<fetch_make_patchlist>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<patchlist>})] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<unmodified.files>} {($ Id.VSub_Number 1) <.hashes>} {($ Id.VSub_Number 2) <.hashes>} {($ Id.VSub_Number 3) <.hashes>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <done.>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_files> name: fetch_files body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-s>} {<patchlist>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ <'Fetching '> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<patchlist>} ) ] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {<-d>} {(SQ <' '>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) <' '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(${ Id.VSub_Name NDEBUG)} {(DQ <patches.> (${ Id.VSub_Name DDSTATS))} ] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {(SQ <'|'>)} {(SQ <->)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<patchlist>} ) ] do_fork: T ) (command.Simple blame_tok: <lam> more_env: [] words: [{<lam>} {<-s>} {(DQ (${ Id.VSub_Name PATCHDIR) <'/'>)} {<->}] redirects: [] do_fork: T ) (command.Simple blame_tok: <xargs> more_env: [] words: [ {<xargs>} {(${ Id.VSub_Name XARGST)} {(${ Id.VSub_Name PHTTPGET)} {(${ Id.VSub_Name SERVERNAME)} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {(${ Id.VSub_Name STATSREDIR)} ) ] do_fork: T ) (command.Simple blame_tok: <fetch_progress> more_env: [] words: [{<fetch_progress>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <done.>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'Applying patches... '>)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {(SQ <'|'>)} {(SQ <' '>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<patchlist>} ) ] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<X>} {<Y>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {(DQ (${ Id.VSub_Name X) <-> (${ Id.VSub_Name Y))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Sentence child: (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) terminator: <Id.Op_Semi _> ) ] spids: [13001 13022] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <gunzip> more_env: [] words: [{<gunzip>} {<-c>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'files/'> (${ Id.VSub_Name X) <.gz>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<OLD>} ) ] do_fork: T ) (command.Simple blame_tok: <bspatch> more_env: [] words: [ {<bspatch>} {<OLD>} {<NEW>} {(${ Id.VSub_Name X) <-> (${ Id.VSub_Name Y)} ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [ {(${ Id.VSub_Name SHA256)} {<-q>} {<NEW>} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } {<Id.Lit_Equals '='>} {(${ Id.VSub_Name Y)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {<NEW>} {<'files/'> (${ Id.VSub_Name Y)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <gzip> more_env: [] words: [{<gzip>} {<-n>} {<'files/'> (${ Id.VSub_Name Y)}] redirects: [] do_fork: T ) ] spids: [13064 13089] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} {<diff>} {<OLD>} {<NEW>} {(${ Id.VSub_Name X) <-> (${ Id.VSub_Name Y)} ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {(${ Id.VSub_Name QUIETREDIR)} ) ] ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <done.>)}] redirects: [] do_fork: T ) ] spids: [12833 12844] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<Y>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {(DQ <'files/'> (${ Id.VSub_Name Y) <.gz>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name Y)}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] spids: [13167 13186] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<files.wanted>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<filelist>} ) ] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [{<Id.Lit_LBracket '['>} {<-s>} {<filelist>} {<Id.Lit_RBracket ']'>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ <'Fetching '> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<filelist>} ) ] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {<-d>} {(SQ <' '>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) <' '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name NDEBUG)} {(DQ <'files... '>)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <lam> more_env: [] words: [ {<lam>} {<-s>} {(DQ (${ Id.VSub_Name FETCHDIR) <'/f/'>)} {<->} {<-s>} {(DQ <.gz>)} ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<filelist>} ) ] do_fork: T ) (command.Simple blame_tok: <xargs> more_env: [] words: [ {<xargs>} {(${ Id.VSub_Name XARGST)} {(${ Id.VSub_Name PHTTPGET)} {(${ Id.VSub_Name SERVERNAME)} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {(${ Id.VSub_Name QUIETREDIR)} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<Y>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name Y) <.gz>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <failed.>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [13327 13343] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <gunzip> more_env: [] words: [{<gunzip>} {<-c>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(${ Id.VSub_Name Y) <.gz>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [{(${ Id.VSub_Name SHA256)} {<-q>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } {<Id.Lit_Equals '='>} {(${ Id.VSub_Name Y)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {(${ Id.VSub_Name Y) <.gz>} {<'files/'> (${ Id.VSub_Name Y) <.gz>} ] redirects: [] do_fork: T ) ] spids: [13361 13399] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ (${ Id.VSub_Name Y) <' has incorrect hash.'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<filelist>} ) ] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <done.>)}] redirects: [] do_fork: T ) ] spids: [13212 13223] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<files.wanted>} {<filelist>} {<patchlist>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_create_manifest> name: fetch_create_manifest body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-L>} {(DQ (${ Id.VSub_Name BDHASH) <-install>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-r>} {(${ Id.VSub_Name BDHASH) <'-install/'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {(${ Id.VSub_Name BDHASH) <-install>}] redirects: [] do_fork: T ) ] spids: [13488 13504] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Pipeline children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-s>} {<modifiedfiles>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} {(DQ <'The following files are affected by updates, '>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'but no changes have'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'been downloaded because the files have been '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'modified locally:'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {<modifiedfiles>}] redirects: [] do_fork: T ) ] spids: [13533 13544] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$PAGER'> more_env: [] words: [{($ Id.VSub_DollarName PAGER)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<modifiedfiles>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-s>} {<INDEX-PRESENT>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-s>} {<INDEX-NEW>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) ] ops: [<Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<INDEX-PRESENT>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'No updates needed to update system to '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ (${ Id.VSub_Name RELNUM) <-p> (${ Id.VSub_Name RELPATCHNUM) <.>)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] spids: [13604 13630] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<INDEX-PRESENT>} ) ] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<INDEX-PRESENT.flist>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}] redirects: [(Redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<INDEX-NEW>})] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<INDEX-NEW.flist>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <comm> more_env: [] words: [{<comm>} {<-23>} {<INDEX-PRESENT.flist>} {<INDEX-NEW.flist>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<files.removed>})] do_fork: T ) (command.Simple blame_tok: <comm> more_env: [] words: [{<comm>} {<-13>} {<INDEX-PRESENT.flist>} {<INDEX-NEW.flist>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<files.added>})] do_fork: T ) (command.Simple blame_tok: <comm> more_env: [] words: [{<comm>} {<-12>} {<INDEX-PRESENT.flist>} {<INDEX-NEW.flist>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<files.updated>})] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<INDEX-PRESENT.flist>} {<INDEX-NEW.flist>}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-s>} {<files.removed>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'The following files will be removed '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'as part of updating to '> (${ Id.VSub_Name RELNUM) <-p> (${ Id.VSub_Name RELPATCHNUM) <':'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {<files.removed>}] redirects: [] do_fork: T ) ] spids: [13784 13795] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$PAGER'> more_env: [] words: [{($ Id.VSub_DollarName PAGER)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<files.removed>}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-s>} {<files.added>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'The following files will be added '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'as part of updating to '> (${ Id.VSub_Name RELNUM) <-p> (${ Id.VSub_Name RELPATCHNUM) <':'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {<files.added>}] redirects: [] do_fork: T ) ] spids: [13847 13858] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$PAGER'> more_env: [] words: [{($ Id.VSub_DollarName PAGER)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<files.added>}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-s>} {<files.updated>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'The following files will be updated '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'as part of updating to '> (${ Id.VSub_Name RELNUM) <-p> (${ Id.VSub_Name RELPATCHNUM) <':'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {<files.updated>}] redirects: [] do_fork: T ) ] spids: [13910 13921] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$PAGER'> more_env: [] words: [{($ Id.VSub_DollarName PAGER)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<files.updated>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.ShAssignment left: <Id.Lit_VarLike 'MDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MDIR='> name:MDIR) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <mktemp> more_env: [] words: [{<mktemp>} {<-d>} {<install.XXXXXX>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {<INDEX-PRESENT>} {(${ Id.VSub_Name MDIR) <'/INDEX-OLD'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {<INDEX-NEW>} {(${ Id.VSub_Name MDIR) <'/INDEX-NEW'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <ln> more_env: [] words: [{<ln>} {<-s>} {(${ Id.VSub_Name MDIR)} {(${ Id.VSub_Name BDHASH) <-install>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_warn_eol> name: fetch_warn_eol body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'NOWTIME='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NOWTIME='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NOWTIME='> name:NOWTIME) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <date> more_env: [] words: [{<date>} {(DQ <'+%s'>)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {<lasteolwarn>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'LASTWARN='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LASTWARN='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LASTWARN='> name:LASTWARN) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {<lasteolwarn>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] spids: [14070 14081] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'LASTWARN='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LASTWARN='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LASTWARN='> name:LASTWARN) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <expr> more_env: [] words: [{<expr>} {(${ Id.VSub_Name NOWTIME)} {<->} {<63072000>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name EOLTIME)} {<-lt>} {(${ Id.VSub_Name NOWTIME)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLessDash '<<-'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'WARNING: '> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<-sr>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <' HAS PASSED ITS END-OF-LIFE DATE.\n'> <'Any security issues discovered after '> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <date> more_env: [] words: [{<date>} {<-r>} {(${ Id.VSub_Name EOLTIME)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <'\n'> <'will not have been corrected.\n'> ] ) ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [14121 14138] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SINCEWARN='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SINCEWARN='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SINCEWARN='> name:SINCEWARN) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <expr> more_env: [] words: [ {<expr>} {(${ Id.VSub_Name NOWTIME)} {<->} {(${ Id.VSub_Name LASTWARN)} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'TIMELEFT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TIMELEFT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TIMELEFT='> name:TIMELEFT) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <expr> more_env: [] words: [ {<expr>} {(${ Id.VSub_Name EOLTIME)} {<->} {(${ Id.VSub_Name NOWTIME)} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name TIMELEFT)} {<-gt>} {<7884000>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})] spids: [14233 14248] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name TIMELEFT)} {<-gt>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <expr> more_env: [] words: [ {<expr>} {(${ Id.VSub_Name SINCEWARN)} { (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\*'> ch: '*' ) } {<3>} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})] spids: [14268 14297] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name TIMELEFT)} {<-lt>} {<604800>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'UNIT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'UNIT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UNIT='> name:UNIT) op: assign_op.Equal rhs: {(DQ <day>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SIZE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SIZE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SIZE='> name:SIZE) op: assign_op.Equal rhs: {<86400>} ) ] redirects: [] ) ] spids: [14313 14328] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name TIMELEFT)} {<-lt>} {<2678400>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'UNIT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'UNIT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UNIT='> name:UNIT) op: assign_op.Equal rhs: {(DQ <week>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SIZE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SIZE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SIZE='> name:SIZE) op: assign_op.Equal rhs: {<604800>} ) ] redirects: [] ) ] spids: [14341 14356] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'UNIT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'UNIT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UNIT='> name:UNIT) op: assign_op.Equal rhs: {(DQ <month>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SIZE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SIZE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SIZE='> name:SIZE) op: assign_op.Equal rhs: {<2678400>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'NUM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NUM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NUM='> name:NUM) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <expr> more_env: [] words: [ {<expr>} {(${ Id.VSub_Name TIMELEFT)} {<'/'>} {(${ Id.VSub_Name SIZE)} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name NUM)} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<1>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'UNIT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'UNIT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UNIT='> name:UNIT) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name UNIT) <s>)} ) ] redirects: [] ) ] spids: [14408 14424] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLessDash '<<-'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'WARNING: '> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<-sr>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <' is approaching its End-of-Life date.\n'> <'It is strongly recommended that you upgrade to a newer\n'> <'release within the next '> (${ Id.VSub_Name NUM) <' '> (${ Id.VSub_Name UNIT) <'.\n'> ] ) ) ] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name NOWTIME)}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<lasteolwarn>})] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fetch_run> name: fetch_run body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.Simple blame_tok: <workdir_init> more_env: [] words: [{<workdir_init>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_pick_server_init> more_env: [] words: [{<fetch_pick_server_init>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <fetch_pick_server> more_env: [] words: [{<fetch_pick_server>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <fetch_key> more_env: [] words: [{<fetch_key>}] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <fetch_pick_server> more_env: [] words: [{<fetch_pick_server>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <fetch_tag> more_env: [] words: [{<fetch_tag>}] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <fetch_pick_server> more_env: [] words: [{<fetch_pick_server>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_tagsanity> more_env: [] words: [{<fetch_tagsanity>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_metadata> more_env: [] words: [{<fetch_metadata>} {<INDEX-NEW>} {<INDEX-OLD>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_filter_metadata> more_env: [] words: [{<fetch_filter_metadata>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_filter_metadata> more_env: [] words: [{<fetch_filter_metadata>} {<INDEX-OLD>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <fetch_filter_kernel_names> more_env: [] words: [{<fetch_filter_kernel_names>} {<INDEX-NEW>} {(${ Id.VSub_Name KERNCONF)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <fetch_filter_kernel_names> more_env: [] words: [{<fetch_filter_kernel_names>} {<INDEX-OLD>} {(${ Id.VSub_Name KERNCONF)}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_inspect_system> more_env: [] words: [{<fetch_inspect_system>} {<INDEX-OLD>} {<INDEX-PRESENT>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <fetch_filter_unmodified_notpresent> more_env: [] words: [ {<fetch_filter_unmodified_notpresent>} {<INDEX-OLD>} {<INDEX-PRESENT>} {<INDEX-NEW>} {<'/dev/null'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <fetch_filter_allowadd> more_env: [] words: [{<fetch_filter_allowadd>} {<INDEX-PRESENT>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <fetch_filter_allowdelete> more_env: [] words: [{<fetch_filter_allowdelete>} {<INDEX-PRESENT>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <fetch_filter_modified_metadata> more_env: [] words: [{<fetch_filter_modified_metadata>} {<INDEX-OLD>} {<INDEX-PRESENT>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <fetch_filter_uptodate> more_env: [] words: [{<fetch_filter_uptodate>} {<INDEX-PRESENT>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_files_prepare> more_env: [] words: [{<fetch_files_prepare>} {<INDEX-OLD>} {<INDEX-PRESENT>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_files> more_env: [] words: [{<fetch_files>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_create_manifest> more_env: [] words: [{<fetch_create_manifest>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_warn_eol> more_env: [] words: [{<fetch_warn_eol>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <upgrade_guess_components> name: upgrade_guess_components body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name STRICTCOMPONENTS))} {<Id.Lit_Equals '='>} {(DQ <no>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <fetch_filter_metadata_components> more_env: [] words: [{<fetch_filter_metadata_components>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'Inspecting system... '>)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1-3>} {<-d>} {(SQ <'|'>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<INDEX-ALL>} ) ] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {(SQ <'|'>)} {(SQ <' '>)}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<C>} {<S>} {<F>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-e>} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F) } {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'+ '> (${ Id.VSub_Name C) <'|'> (${ Id.VSub_Name S)) } ] redirects: [] do_fork: T ) ] spids: [15003 15020] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'= '> (${ Id.VSub_Name C) <'|'> (${ Id.VSub_Name S))} ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <uniq> more_env: [] words: [{<uniq>} {<-c>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-E>} {(SQ <'s,^ +,,'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<compfreq>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {(SQ <' = '>)} {<compfreq>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1> <Id.Lit_Comma ','> <3>} {<-d>} {(SQ <' '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-k>} {<2> <Id.Lit_Comma ','> <2>} {<-t>} {(SQ <' '>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<compfreq.total>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {(SQ <' + '>)} {<compfreq>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1> <Id.Lit_Comma ','> <3>} {<-d>} {(SQ <' '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-k>} {<2> <Id.Lit_Comma ','> <2>} {<-t>} {(SQ <' '>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<compfreq.present>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <join> more_env: [] words: [ {<join>} {<-t>} {(SQ <' '>)} {<-1>} {<2>} {<-2>} {<2>} {<compfreq.present>} {<compfreq.total>} ] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<S>} {<P>} {<T>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name P)} {<-gt>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <expr> more_env: [] words: [ {<expr>} {(${ Id.VSub_Name T)} {<'/'>} {<2>} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name S)}] redirects: [] do_fork: T ) ] spids: [15215 15242] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<comp.present>} ) ] ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <' '>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<compfreq.total>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<comp.total>} ) ] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<INDEX-ALL>} {<compfreq>} {<compfreq.total>} {<compfreq.present>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <done.>)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'KCOMP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KCOMP='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KCOMP='> name:KCOMP) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name KERNCONF)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {(SQ <A-Z>)} {(SQ <a-z>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-E>} { (DQ <'^kernel'> <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name KCOMP) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) ) } {<comp.total>} ] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<comp.present>} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-qE>} {(DQ <'^kernel'> <Id.Lit_BadBackslash '\\'> <'|'>)} {<comp.total>} ] redirects: [] do_fork: T ) (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-qE>} { (DQ <'^kernel'> <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name KCOMP) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') ) } {<comp.total>} ] redirects: [] do_fork: T ) ] ops: [] ) ] ops: [<Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLessDash '<<-'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'\n'> <'WARNING: This system is running a '> <Id.Right_DoubleQuote '"'> (${ Id.VSub_Name KCOMP) <Id.Right_DoubleQuote '"'> <' kernel, which is not a\n'> <'kernel configuration distributed as part of FreeBSD '> (${ Id.VSub_Name RELNUM) <'.\n'> < 'This kernel will not be updated: you MUST update the kernel manually\n' > <'before running '> <Id.Right_DoubleQuote '"'> ($ Id.VSub_Number 0) <' install'> <Id.Right_DoubleQuote '"'> <'.\n'> ] ) ) ] do_fork: T ) ] spids: [15389 15425] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<comp.present>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<comp.present.tmp>} ) ] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {<comp.present.tmp>} {<comp.present>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <comm> more_env: [] words: [{<comm>} {<-13>} {<comp.present>} {<comp.total>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<comp.absent>} ) ] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'The following components of FreeBSD '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'seem to be installed:'>)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {(SQ <'|'>)} {(SQ <'/'>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<comp.present>} ) ] do_fork: T ) (command.Simple blame_tok: <fmt> more_env: [] words: [{<fmt>} {<-72>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'The following components of FreeBSD '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'do not seem to be installed:'>)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {(SQ <'|'>)} {(SQ <'/'>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<comp.absent>} ) ] do_fork: T ) (command.Simple blame_tok: <fmt> more_env: [] words: [{<fmt>} {<-72>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <continuep> more_env: [] words: [{<continuep>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'COMPONENTS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COMPONENTS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPONENTS='> name:COMPONENTS) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {(SQ <'|'>)} {(SQ <'/'>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<comp.present>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<comp.present.tmp>} ) ] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<C>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'COMPONENTS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COMPONENTS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'COMPONENTS='> name: COMPONENTS ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name COMPONENTS) <' '> (${ Id.VSub_Name C))} ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<comp.present.tmp>} ) ] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<comp.present>} {<comp.present.tmp>} {<comp.absent>} {<comp.total>}] redirects: [] do_fork: T ) ] spids: [14893 14912] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <upgrade_guess_new_kernel> name: upgrade_guess_new_kernel body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name STRICTCOMPONENTS))} {<Id.Lit_Equals '='>} {(DQ <no>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'METAHASH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'METAHASH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'METAHASH='> name:METAHASH) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <look> more_env: [] words: [ {<look>} {(DQ ($ Id.VSub_Number 1) <'|'>)} {<tINDEX.present>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <'|'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <gunzip> more_env: [] words: [{<gunzip>} {<-c>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'files/'> (${ Id.VSub_Name METAHASH) <.gz>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 1) <.all>} ) ] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [C] iterable: (for_iter.Words words:[{(${ Id.VSub_Name COMPONENTS)}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name C)} {<Id.Lit_Equals '='>} {(DQ <'kernel/'> (${ Id.VSub_Name KCOMP))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-qE>} { (DQ <'^kernel'> <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name KCOMP) <Id.Lit_BadBackslash '\\'> <'|'> ) } {($ Id.VSub_Number 1) <.all>} ] redirects: [] do_fork: T ) ] ops: [] ) ] ops: [<Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'COMPONENTS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COMPONENTS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'COMPONENTS='> name: COMPONENTS ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name COMPONENTS) <' kernel/generic'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'NKERNCONF='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NKERNCONF='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NKERNCONF='> name: NKERNCONF ) op: assign_op.Equal rhs: {(DQ <GENERIC>)} ) ] redirects: [] ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLessDash '<<-'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'\n'> <'WARNING: This system is running a '> <Id.Right_DoubleQuote '"'> (${ Id.VSub_Name KCOMP) <Id.Right_DoubleQuote '"'> <' kernel, which is not a\n'> < 'kernel configuration distributed as part of FreeBSD ' > (${ Id.VSub_Name RELNUM) <'.\n'> <'As part of upgrading to FreeBSD '> (${ Id.VSub_Name RELNUM) <', this kernel will be\n'> <'replaced with a '> <Id.Right_DoubleQuote '"'> <generic> <Id.Right_DoubleQuote '"'> <' kernel.\n'> ] ) ) ] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <continuep> more_env: [] words: [{<continuep>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [15814 15857] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {($ Id.VSub_Number 1) <.all>}] redirects: [] do_fork: T ) ] spids: [15718 15737] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <upgrade_oldall_to_oldnew> name: upgrade_oldall_to_oldnew body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 1)} ) ] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 1) <.paths>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 2)} ) ] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <comm> more_env: [] words: [{<comm>} {<-13>} {($ Id.VSub_Number 1) <.paths>} {<->}] redirects: [] do_fork: T ) (command.Simple blame_tok: <lam> more_env: [] words: [{<lam>} {<->} {<-s>} {(DQ <'|-||||||'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<->} {($ Id.VSub_Number 1)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 1) <.tmp>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {($ Id.VSub_Number 1) <.tmp>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <comm> more_env: [] words: [{<comm>} {<-23>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 1) <.tmp>} ) ] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {($ Id.VSub_Number 1) <.tmp>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 1)} ) ] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 1) <.paths>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-k>} {<1> <Id.Lit_Comma ','> <1>} {<-t>} {(SQ <'|'>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 2)} ) ] do_fork: T ) (command.Simple blame_tok: <join> more_env: [] words: [{<join>} {<-t>} {(SQ <'|'>)} {<->} {($ Id.VSub_Number 1) <.paths>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 2) <.tmp>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {($ Id.VSub_Number 1) <.paths>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {($ Id.VSub_Number 2) <.tmp>} {($ Id.VSub_Number 2)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {($ Id.VSub_Number 2)} {($ Id.VSub_Number 3)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <samef> name: samef body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'X='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'X='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'X='> name:X) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-E>} {(SQ <'s/\\$FreeBSD.*\\$/$FreeBSD$/'>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 1)} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [{(${ Id.VSub_Name SHA256)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Y='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Y='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Y='> name:Y) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-E>} {(SQ <'s/\\$FreeBSD.*\\$/$FreeBSD$/'>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 2)} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [{(${ Id.VSub_Name SHA256)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName X)} {<Id.Lit_Equals '='>} {($ Id.VSub_DollarName Y)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Sentence child: (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<0>} ) terminator: <Id.Op_Semi _> ) ] spids: [16280 16293] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Sentence child: (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>}) terminator: <Id.Op_Semi _> ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <upgrade_merge> name: upgrade_merge body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-s>} {($ Id.VSub_Number 1)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Pipeline children: [ (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 1) <-paths>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-rf>} {<'merge/'>}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<F>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'D='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'D='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'D='> name:D) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <dirname> more_env: [] words: [{<dirname>} {(${ Id.VSub_Name F)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {<'merge/old/'> (${ Id.VSub_Name D)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [ {<mkdir>} {<-p>} {<'merge/'> (${ Id.VSub_Name OLDRELNUM) <'/'> (${ Id.VSub_Name D)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [ {<mkdir>} {<-p>} {<'merge/'> (${ Id.VSub_Name RELNUM) <'/'> (${ Id.VSub_Name D)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {<'merge/new/'> (${ Id.VSub_Name D)}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 1) <-paths>} ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<F>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'V='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'V='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'V='> name:V) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <look> more_env: [] words: [ {<look>} {(DQ (${ Id.VSub_Name F) <'|'>)} {($ Id.VSub_Number 2)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<7>} {<-d>} {(SQ <'|'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <gunzip> more_env: [] words: [{<gunzip>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'files/'> (${ Id.VSub_Name V) <.gz>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'merge/old/'> (${ Id.VSub_Name F)} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple blame_tok: <look> more_env: [] words: [ {<look>} {(DQ (${ Id.VSub_Name F) <'|'>)} {($ Id.VSub_Number 1)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <fgrep> more_env: [] words: [{<fgrep>} {<-q>} {(DQ <'|f|'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'V='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'V='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'V='> name:V) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <look> more_env: [] words: [ {<look>} {(DQ (${ Id.VSub_Name F) <'|'>)} {($ Id.VSub_Number 1)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<3>} {<-d>} {(SQ <'|'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <gunzip> more_env: [] words: [{<gunzip>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'files/'> (${ Id.VSub_Name V) <.gz>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'merge/'> (${ Id.VSub_Name OLDRELNUM) <'/'> (${ Id.VSub_Name F) } ) ] do_fork: T ) ] spids: [16536 16560] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple blame_tok: <look> more_env: [] words: [ {<look>} {(DQ (${ Id.VSub_Name F) <'|'>)} {($ Id.VSub_Number 3)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [ {<cut>} {<-f>} {<1> <Id.Lit_Comma ','> <2> <Id.Lit_Comma ','> <7>} {<-d>} {(SQ <'|'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <fgrep> more_env: [] words: [{<fgrep>} {<-q>} {(DQ <'|f|'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'V='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'V='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'V='> name:V) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <look> more_env: [] words: [ {<look>} {(DQ (${ Id.VSub_Name F) <'|'>)} {($ Id.VSub_Number 3)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<7>} {<-d>} {(SQ <'|'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <gunzip> more_env: [] words: [{<gunzip>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'files/'> (${ Id.VSub_Name V) <.gz>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'merge/'> (${ Id.VSub_Name RELNUM) <'/'> (${ Id.VSub_Name F) } ) ] do_fork: T ) ] spids: [16626 16669] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 1) <-paths>} ) ] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'Attempting to automatically merge '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'changes in files...'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<failed.merges>} ) ] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<F>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {<'merge/'> (${ Id.VSub_Name RELNUM) <'/'> (${ Id.VSub_Name F) } {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] spids: [16790 16810] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {<'merge/'> (${ Id.VSub_Name OLDRELNUM) <'/'> (${ Id.VSub_Name F) } {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <cp> more_env: [] words: [ {<cp>} {<'merge/'> (${ Id.VSub_Name RELNUM) <'/'> (${ Id.VSub_Name F)} {<'merge/new/'> (${ Id.VSub_Name F)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] spids: [16832 16852] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(${ Id.VSub_Name F)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <'/etc/spwd.db'> pattern: (pat.Words words: [ {<'/etc/spwd.db'>} {<'/etc/pwd.db'>} {<'/etc/login.conf.db'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <cp> more_env: [] words: [ {<cp>} {<'merge/old/'> (${ Id.VSub_Name F)} {<'merge/new/'> (${ Id.VSub_Name F)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <merge> more_env: [] words: [ {<merge>} {<-p>} {<-L>} {(DQ <'current version'>)} {<-L>} {(DQ (${ Id.VSub_Name OLDRELNUM))} {<-L>} {(DQ (${ Id.VSub_Name RELNUM))} {<'merge/old/'> (${ Id.VSub_Name F)} {<'merge/'> (${ Id.VSub_Name OLDRELNUM) <'/'> (${ Id.VSub_Name F) } {<'merge/'> (${ Id.VSub_Name RELNUM) <'/'> (${ Id.VSub_Name F) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'merge/new/'> (${ Id.VSub_Name F)} ) (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(${ Id.VSub_Name F)}] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<failed.merges>} ) ] do_fork: T ) ] spids: [16932 17006] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 1) <-paths>} ) ] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' done.'>)}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<F>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <samef> more_env: [] words: [ {<samef>} {<'merge/old/'> (${ Id.VSub_Name F)} {<'merge/'> (${ Id.VSub_Name OLDRELNUM) <'/'> (${ Id.VSub_Name F) } ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <cp> more_env: [] words: [ {<cp>} {<'merge/'> (${ Id.VSub_Name RELNUM) <'/'> (${ Id.VSub_Name F)} {<'merge/new/'> (${ Id.VSub_Name F)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] spids: [17071 17090] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLessDash '<<-'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'\n'> <'The following file could not be merged automatically: '> (${ Id.VSub_Name F) <'\n'> <'Press Enter to edit this file in '> (${ Id.VSub_Name EDITOR) <' and resolve the conflicts\n'> <'manually...\n'> ] ) ) ] do_fork: T ) (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<dummy>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/tty'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [ {(${ Id.VSub_Name EDITOR)} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <pwd> more_env: [] words: [{<pwd>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <'/merge/new/'> (${ Id.VSub_Name F) } ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/tty'>} ) ] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<failed.merges>} ) ] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<failed.merges>}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<F>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {<'merge/old/'> (${ Id.VSub_Name F)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {<'merge/new/'> (${ Id.VSub_Name F)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <samef> more_env: [] words: [ {<samef>} {<'merge/old/'> (${ Id.VSub_Name F)} {<'merge/new/'> (${ Id.VSub_Name F)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] spids: [17203 17245] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {<'merge/old/'> (${ Id.VSub_Name F)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {<'merge/'> (${ Id.VSub_Name OLDRELNUM) <'/'> (${ Id.VSub_Name F) } {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <samef> more_env: [] words: [ {<samef>} {<'merge/old/'> (${ Id.VSub_Name F)} {<'merge/'> (${ Id.VSub_Name OLDRELNUM) <'/'> (${ Id.VSub_Name F) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] spids: [17263 17314] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {<'merge/new/'> (${ Id.VSub_Name F)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLessDash '<<-'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'\n'> < 'The following file will be removed, as it no longer exists in\n' > <'FreeBSD '> (${ Id.VSub_Name RELNUM) <': '> (${ Id.VSub_Name F) <'\n'> ] ) ) ] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <continuep> more_env: [] words: [{<continuep>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/tty'>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] spids: [17328 17344] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLessDash '<<-'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'\n'> <'The following changes, which occurred between FreeBSD '> (${ Id.VSub_Name OLDRELNUM) <' and\n'> <'FreeBSD '> (${ Id.VSub_Name RELNUM) <' have been merged into '> (${ Id.VSub_Name F) <':\n'> ] ) ) ] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <diff> more_env: [] words: [ {<diff>} {<-U>} {<5>} {<-L>} {(DQ <'current version'>)} {<-L>} {(DQ <'new version'>)} {<'merge/old/'> (${ Id.VSub_Name F)} {<'merge/new/'> (${ Id.VSub_Name F)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <true> more_env: [] words: [{<true>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <continuep> more_env: [] words: [{<continuep>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/tty'>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 1) <-paths>} ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<F>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {<'merge/new/'> (${ Id.VSub_Name F)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'V='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'V='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'V='> name:V) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [ {(${ Id.VSub_Name SHA256)} {<-q>} {<'merge/new/'> (${ Id.VSub_Name F)} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <gzip> more_env: [] words: [{<gzip>} {<-c>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'merge/new/'> (${ Id.VSub_Name F)} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'files/'> (${ Id.VSub_Name V) <.gz>} ) ] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ (${ Id.VSub_Name F) <'|'> (${ Id.VSub_Name V))} ] redirects: [] do_fork: T ) ] spids: [17484 17498] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 1) <-paths>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<newhashes>} ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<F>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <look> more_env: [] words: [{<look>} {(DQ (${ Id.VSub_Name F) <'|'>)} {($ Id.VSub_Number 3)}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 1) <-paths>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 3) <-oldlines>} ) ] ) (command.Simple blame_tok: <join> more_env: [] words: [ {<join>} {<-t>} {(SQ <'|'>)} {<-o>} {<1.1> <Id.Lit_Comma ','> <1.2> <Id.Lit_Comma ','> <1.3> <Id.Lit_Comma ','> <1.4> <Id.Lit_Comma ','> <1.5> <Id.Lit_Comma ','> <1.6> <Id.Lit_Comma ','> <2.2> <Id.Lit_Comma ','> <1.8> } {($ Id.VSub_Number 3) <-oldlines>} {<newhashes>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 3) <-newlines>} ) ] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {($ Id.VSub_Number 3) <-oldlines>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <comm> more_env: [] words: [{<comm>} {<-13>} {<->} {($ Id.VSub_Number 3)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<->} {($ Id.VSub_Number 3) <-newlines>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 3) <.tmp>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {($ Id.VSub_Number 3) <.tmp>} {($ Id.VSub_Number 3)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {($ Id.VSub_Number 1) <-paths>} {<newhashes>} {($ Id.VSub_Number 3) <-oldlines>} {($ Id.VSub_Number 3) <-newlines>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-rf>} {<'merge/'>}] redirects: [] do_fork: T ) ] spids: [16334 16345] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <upgrade_run> name: upgrade_run body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.Simple blame_tok: <workdir_init> more_env: [] words: [{<workdir_init>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_pick_server_init> more_env: [] words: [{<fetch_pick_server_init>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <fetch_pick_server> more_env: [] words: [{<fetch_pick_server>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <fetch_key> more_env: [] words: [{<fetch_key>}] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <fetch_pick_server> more_env: [] words: [{<fetch_pick_server>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <fetch_tag> more_env: [] words: [{<fetch_tag>}] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <fetch_pick_server> more_env: [] words: [{<fetch_pick_server>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_tagsanity> more_env: [] words: [{<fetch_tagsanity>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_metadata> more_env: [] words: [{<fetch_metadata>} {<INDEX-OLD>} {<INDEX-ALL>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <upgrade_guess_components> more_env: [] words: [{<upgrade_guess_components>} {<INDEX-ALL>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_filter_metadata> more_env: [] words: [{<fetch_filter_metadata>} {<INDEX-OLD>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_filter_metadata> more_env: [] words: [{<fetch_filter_metadata>} {<INDEX-ALL>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<INDEX-OLD>} {<INDEX-ALL>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-OLD.tmp>})] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {<INDEX-OLD.tmp>} {<INDEX-OLD>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<INDEX-ALL>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'OLDRELNUM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OLDRELNUM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OLDRELNUM='> name:OLDRELNUM) op: assign_op.Equal rhs: {(${ Id.VSub_Name RELNUM)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'RELNUM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'RELNUM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RELNUM='> name:RELNUM) op: assign_op.Equal rhs: {(${ Id.VSub_Name TARGETRELEASE)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'OLDFETCHDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OLDFETCHDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OLDFETCHDIR='> name:OLDFETCHDIR) op: assign_op.Equal rhs: {(${ Id.VSub_Name FETCHDIR)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'FETCHDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FETCHDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FETCHDIR='> name:FETCHDIR) op: assign_op.Equal rhs: {(${ Id.VSub_Name RELNUM) <'/'> (${ Id.VSub_Name ARCH)} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <fetch_tag> more_env: [] words: [{<fetch_tag>}] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <fetch_pick_server> more_env: [] words: [{<fetch_pick_server>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_metadata> more_env: [] words: [{<fetch_metadata>} {<INDEX-ALL>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <upgrade_guess_new_kernel> more_env: [] words: [{<upgrade_guess_new_kernel>} {<INDEX-ALL>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_filter_metadata> more_env: [] words: [{<fetch_filter_metadata>} {<INDEX-ALL>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <upgrade_oldall_to_oldnew> more_env: [] words: [{<upgrade_oldall_to_oldnew>} {<INDEX-OLD>} {<INDEX-ALL>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <fetch_filter_kernel_names> more_env: [] words: [{<fetch_filter_kernel_names>} {<INDEX-NEW>} {(${ Id.VSub_Name NKERNCONF)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <fetch_filter_kernel_names> more_env: [] words: [{<fetch_filter_kernel_names>} {<INDEX-OLD>} {(${ Id.VSub_Name KERNCONF)}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_inspect_system> more_env: [] words: [{<fetch_inspect_system>} {<INDEX-OLD>} {<INDEX-PRESENT>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <fetch_filter_mergechanges> more_env: [] words: [{<fetch_filter_mergechanges>} {<INDEX-OLD>} {<INDEX-PRESENT>} {<tomerge-old>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <fetch_filter_unmodified_notpresent> more_env: [] words: [ {<fetch_filter_unmodified_notpresent>} {<INDEX-OLD>} {<INDEX-PRESENT>} {<INDEX-NEW>} {<tomerge-old>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <fetch_filter_allowadd> more_env: [] words: [{<fetch_filter_allowadd>} {<INDEX-PRESENT>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <fetch_filter_allowdelete> more_env: [] words: [{<fetch_filter_allowdelete>} {<INDEX-PRESENT>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <fetch_filter_modified_metadata> more_env: [] words: [{<fetch_filter_modified_metadata>} {<INDEX-OLD>} {<INDEX-PRESENT>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <fetch_filter_uptodate> more_env: [] words: [{<fetch_filter_uptodate>} {<INDEX-PRESENT>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <fetch_files_premerge> more_env: [] words: [{<fetch_files_premerge>} {<tomerge-old>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_files_prepare> more_env: [] words: [{<fetch_files_prepare>} {<INDEX-OLD>} {<INDEX-PRESENT>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'PATCHDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PATCHDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATCHDIR='> name:PATCHDIR) op: assign_op.Equal rhs: {<to-> (${ Id.VSub_Name RELNUM) <'/'> (${ Id.VSub_Name ARCH) <'/bp'>} ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_files> more_env: [] words: [{<fetch_files>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <upgrade_merge> more_env: [] words: [{<upgrade_merge>} {<tomerge-old>} {<INDEX-PRESENT>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_create_manifest> more_env: [] words: [{<fetch_create_manifest>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <touch> more_env: [] words: [{<touch>} {(${ Id.VSub_Name BDHASH) <'-install/kernelfirst'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'To install the downloaded upgrades, run '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ($ Id.VSub_Number 0) <' install'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <.> ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <install_verify> name: install_verify body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_At '@')}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<2> <Id.Lit_Comma ','> <7>} {<-d>} {(SQ <'|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'^f'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <'|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<filelist>})] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<HASH>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {<'files/'> (${ Id.VSub_Name HASH) <.gz>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'Update files missing -- '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'this should never happen.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Re-run \''> ($ Id.VSub_Number 0) <' fetch\'.'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [18495 18512] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [(Redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<filelist>})] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<filelist>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <install_unschg> name: install_unschg body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_At '@')}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<filelist>})] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.AndOr children: [ (command.Pipeline children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<F>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-e>} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F) } {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] spids: [18621 18640] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F)} ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<filelist>} ) ] ) (command.Simple blame_tok: <xargs> more_env: [] words: [{<xargs>} {<chflags>} {<noschg>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<filelist>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <backup_kernel_finddir> name: backup_kernel_finddir body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'CNT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CNT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CNT='> name:CNT) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <true> more_env: [] words: [{<true>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} {($ Id.VSub_DollarName BASEDIR) <'/'> ($ Id.VSub_DollarName BACKUPKERNELDIR) } {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [18728 18743] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-d>} {($ Id.VSub_DollarName BASEDIR) <'/'> ($ Id.VSub_DollarName BACKUPKERNELDIR) } {<-a>} {<-e>} {($ Id.VSub_DollarName BASEDIR) <'/'> ($ Id.VSub_DollarName BACKUPKERNELDIR) <'/.freebsd-update'> } {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [18763 18787] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'CNT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CNT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CNT='> name:CNT) op: assign_op.Equal rhs: { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike CNT) right: {<Id.Lit_Digits 1>} ) right: <Id.Right_DollarDParen _> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName CNT)} {<-gt>} {<9>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Could not find valid backup dir ('> ($ Id.VSub_DollarName BASEDIR) <'/'> ($ Id.VSub_DollarName BACKUPKERNELDIR) <')'> ) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [18818 18831] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'BACKUPKERNELDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BACKUPKERNELDIR='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'BACKUPKERNELDIR='> name: BACKUPKERNELDIR ) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName BACKUPKERNELDIR)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-Ee>} {(SQ <'s/[0-9]$//'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'BACKUPKERNELDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BACKUPKERNELDIR='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'BACKUPKERNELDIR='> name: BACKUPKERNELDIR ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name BACKUPKERNELDIR) (${ Id.VSub_Name CNT))} ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <backup_kernel> name: backup_kernel body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName BACKUPKERNEL)} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<yes>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})] spids: [18926 18940] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <backup_kernel_finddir> more_env: [] words: [{<backup_kernel_finddir>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-d>} {($ Id.VSub_DollarName BASEDIR) <'/'> ($ Id.VSub_DollarName BACKUPKERNELDIR) } {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-fr>} {($ Id.VSub_DollarName BASEDIR) <'/'> ($ Id.VSub_DollarName BACKUPKERNELDIR)} ] redirects: [] do_fork: T ) ] spids: [18972 18985] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <mkdir> more_env: [] words: [ {<mkdir>} {<-p>} {($ Id.VSub_DollarName BASEDIR) <'/'> ($ Id.VSub_DollarName BACKUPKERNELDIR)} ] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <mtree> more_env: [] words: [ {<mtree>} {<-cdn>} {<-p>} {(DQ (${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name KERNELDIR))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mtree> more_env: [] words: [ {<mtree>} {<-Ue>} {<-p>} {(DQ (${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name BACKUPKERNELDIR))} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <touch> more_env: [] words: [ {<touch>} {($ Id.VSub_DollarName BASEDIR) <'/'> ($ Id.VSub_DollarName BACKUPKERNELDIR) <'/.freebsd-update'> } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Could not create kernel backup directory'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [19068 19081] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-f>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName BACKUPKERNELSYMBOLFILES)} {<Id.Lit_Equals '='>} {<yes>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'FINDFILTER='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FINDFILTER='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FINDFILTER='> name:FINDFILTER) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) ] spids: [19118 19131] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'FINDFILTER='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FINDFILTER='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FINDFILTER='> name:FINDFILTER) op: assign_op.Equal rhs: {(DQ <'-a ! -name *.debug -a ! -name *.symbols'>)} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Subshell left: <Id.Op_LParen _> child: (command.AndOr children: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name KERNELDIR)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <find> more_env: [] words: [ {<find>} {<.>} {<-type>} {<f>} {($ Id.VSub_DollarName FINDFILTER)} {<-exec>} {<cp>} {<-pl>} {(SQ <'{}'>)} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name BACKUPKERNELDIR) <'/'> (SQ <'{}'>) } {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\;'> ch:';')} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) right: <Id.Right_Subshell _> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<Id.Lit_Other '+'> <f>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <install_from_index> name: install_from_index body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <sort> more_env: [] words: [ {<sort>} {<-k>} {<1> <Id.Lit_Comma ','> <1>} {<-t>} {(SQ <'|'>)} {($ Id.VSub_Number 1)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {(SQ <'|'>)} {(SQ <' '>)}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [ {<read>} {<FPATH>} {<TYPE>} {<OWNER>} {<GROUP>} {<PERM>} {<FLAGS>} {<HASH>} {<LINK>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(${ Id.VSub_Name TYPE)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <d> pattern: (pat.Words words:[{<d>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <install> more_env: [] words: [ {<install>} {<-d>} {<-o>} {(${ Id.VSub_Name OWNER)} {<-g>} {(${ Id.VSub_Name GROUP)} {<-m>} {(${ Id.VSub_Name PERM)} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name FPATH)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <f> pattern: (pat.Words words:[{<f>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name LINK))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <gunzip> more_env: [] words: [{<gunzip>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'files/'> (${ Id.VSub_Name HASH) <.gz>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name HASH)} ) ] do_fork: T ) (command.Simple blame_tok: <install> more_env: [] words: [ {<install>} {<-S>} {<-o>} {(${ Id.VSub_Name OWNER)} {<-g>} {(${ Id.VSub_Name GROUP)} {<-m>} {(${ Id.VSub_Name PERM)} {(${ Id.VSub_Name HASH)} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name FPATH)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {(${ Id.VSub_Name HASH)}] redirects: [] do_fork: T ) ] spids: [19352 19367] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <ln> more_env: [] words: [ {<ln>} {<-f>} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name LINK)} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name FPATH)} ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <L> pattern: (pat.Words words:[{<L>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <ln> more_env: [] words: [ {<ln>} {<-sfh>} {(${ Id.VSub_Name HASH)} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name FPATH)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {(SQ <'|'>)} {(SQ <' '>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 1)} ) ] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [ {<read>} {<FPATH>} {<TYPE>} {<OWNER>} {<GROUP>} {<PERM>} {<FLAGS>} {<HASH>} {<LINK>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name TYPE)} {<Id.Lit_Equals '='>} {(DQ <f>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name FLAGS)} {<Id.Lit_Equals '='>} {(DQ <0>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) ] ops: [<Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <chflags> more_env: [] words: [ {<chflags>} {(${ Id.VSub_Name FLAGS)} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name FPATH)} ] redirects: [] do_fork: T ) ] spids: [19549 19585] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] ops: [<Id.Op_Pipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <install_delete> name: install_delete body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 2)} ) ] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<newfiles>})] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <sort> more_env: [] words: [ {<sort>} {<-k>} {<1> <Id.Lit_Comma ','> <1>} {<-t>} {(SQ <'|'>)} {($ Id.VSub_Number 1)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <join> more_env: [] words: [{<join>} {<-t>} {(SQ <'|'>)} {<-v>} {<1>} {<->} {<newfiles>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-r>} {<-k>} {<1> <Id.Lit_Comma ','> <1>} {<-t>} {(SQ <'|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1> <Id.Lit_Comma ','> <2>} {<-d>} {(SQ <'|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {(SQ <'|'>)} {(SQ <' '>)}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<killfiles>})] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<FPATH>} {<TYPE>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(${ Id.VSub_Name TYPE)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <d> pattern: (pat.Words words:[{<d>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <rmdir> more_env: [] words: [ {<rmdir>} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name FPATH)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <f> pattern: (pat.Words words:[{<f>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name FPATH)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <L> pattern: (pat.Words words:[{<L>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name FPATH)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [(Redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<killfiles>})] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<newfiles>} {<killfiles>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <install_files> name: install_files body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {($ Id.VSub_Number 1) <'/kerneldone'>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-OLD'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<INDEX-OLD>} ) ] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-NEW'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<INDEX-NEW>} ) ] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <backup_kernel> more_env: [] words: [{<backup_kernel>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <install_from_index> more_env: [] words: [{<install_from_index>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <install_delete> more_env: [] words: [{<install_delete>} {<INDEX-OLD>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-s>} {<INDEX-OLD>} {<-o>} {<-s>} {<INDEX-NEW>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <kldxref> more_env: [] words: [{<kldxref>} {<-R>} {(${ Id.VSub_Name BASEDIR) <'/boot/'>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] spids: [19967 19984] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <touch> more_env: [] words: [{<touch>} {($ Id.VSub_Number 1) <'/kerneldone'>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {($ Id.VSub_Number 1) <'/kernelfirst'>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-s>} {<INDEX-OLD>} {<-o>} {<-s>} {<INDEX-NEW>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLessDash '<<-'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'\n'> < 'Kernel updates have been installed. Please reboot and run\n' > <Id.Right_DoubleQuote '"'> ($ Id.VSub_Number 0) <' install'> <Id.Right_DoubleQuote '"'> <' again to finish installing updates.\n'> ] ) ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] spids: [20019 20048] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [19865 19879] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {($ Id.VSub_Number 1) <'/worlddone'>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-NEW'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'^[^|]+\\|d\\|'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<INDEX-NEW>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <install_from_index> more_env: [] words: [{<install_from_index>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-NEW'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'^[^|]+\\|d\\|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'^/libexec/ld-elf[^|]*\\.so\\.[0-9]+\\|'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<INDEX-NEW>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <install_from_index> more_env: [] words: [{<install_from_index>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-NEW'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'^[^|]+\\|d\\|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'^/libexec/ld-elf[^|]*\\.so\\.[0-9]+\\|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'^[^|]*/lib/[^|]*\\.so\\.[0-9]+\\|'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<INDEX-NEW>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <install_from_index> more_env: [] words: [{<install_from_index>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-OLD'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'^[^|]+\\|d\\|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'^/libexec/ld-elf[^|]*\\.so\\.[0-9]+\\|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'^[^|]*/lib/[^|]*\\.so\\.[0-9]+\\|'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<INDEX-OLD>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-NEW'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'^[^|]+\\|d\\|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'^/libexec/ld-elf[^|]*\\.so\\.[0-9]+\\|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'^[^|]*/lib/[^|]*\\.so\\.[0-9]+\\|'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<INDEX-NEW>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <install_from_index> more_env: [] words: [{<install_from_index>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <install_delete> more_env: [] words: [{<install_delete>} {<INDEX-OLD>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name BASEDIR) <'/etc/master.passwd'>} {<-nt>} {(${ Id.VSub_Name BASEDIR) <'/etc/spwd.db'>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name BASEDIR) <'/etc/master.passwd'>} {<-nt>} {(${ Id.VSub_Name BASEDIR) <'/etc/pwd.db'>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <pwd_mkdb> more_env: [] words: [ {<pwd_mkdb>} {<-d>} {(${ Id.VSub_Name BASEDIR) <'/etc'>} {(${ Id.VSub_Name BASEDIR) <'/etc/master.passwd'>} ] redirects: [] do_fork: T ) ] spids: [20392 20430] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name BASEDIR) <'/etc/login.conf'>} {<-nt>} {(${ Id.VSub_Name BASEDIR) <'/etc/login.conf.db'>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <cap_mkdb> more_env: [] words: [{<cap_mkdb>} {(${ Id.VSub_Name BASEDIR) <'/etc/login.conf'>}] redirects: [] do_fork: T ) ] spids: [20456 20475] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <touch> more_env: [] words: [{<touch>} {($ Id.VSub_Number 1) <'/worlddone'>}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-NEW'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'^[^|]*/lib/[^|]*\\.so\\.[0-9]+\\|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<newfiles>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-OLD'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-E>} {(SQ <'^[^|]*/lib/[^|]*\\.so\\.[0-9]+\\|'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <join> more_env: [] words: [{<join>} {<-v>} {<1>} {<->} {<newfiles>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-q>} {<.>}] redirects: [] do_fork: T ) ] ops: [ <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> ] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLessDash '<<-'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'\n'> < 'Completing this upgrade requires removing old shared object files.\n' > < 'Please rebuild all installed 3rd party software (e.g., programs\n' > <'installed from the ports tree) and then run '> <Id.Right_DoubleQuote '"'> ($ Id.VSub_Number 0) <' install'> <Id.Right_DoubleQuote '"'> <'\n'> <'again to finish installing updates.\n'> ] ) ) ] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<newfiles>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] spids: [20556 20623] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<newfiles>}] redirects: [] do_fork: T ) ] spids: [20082 20096] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-NEW'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'^[^|]+\\|d\\|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'^[^|]*/lib/[^|]*\\.so\\.[0-9]+\\|'>)}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-NEW>})] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-OLD'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'^[^|]+\\|d\\|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'^[^|]*/lib/[^|]*\\.so\\.[0-9]+\\|'>)}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-OLD>})] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <install_delete> more_env: [] words: [{<install_delete>} {<INDEX-OLD>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-NEW'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'^[^|]+\\|d\\|'>)}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-NEW>})] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-OLD'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'^[^|]+\\|d\\|'>)}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-OLD>})] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <install_delete> more_env: [] words: [{<install_delete>} {<INDEX-OLD>} {<INDEX-NEW>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<INDEX-OLD>} {<INDEX-NEW>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <install_setup_rollback> name: install_setup_rollback body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name BDHASH) <'-install/kernelfirst'>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {(${ Id.VSub_Name BDHASH) <'-install/kernelfirst'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {(${ Id.VSub_Name BDHASH) <'-install/kerneldone'>}] redirects: [] do_fork: T ) ] spids: [20868 20882] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name BDHASH) <'-install/worlddone'>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {(${ Id.VSub_Name BDHASH) <'-install/worlddone'>}] redirects: [] do_fork: T ) ] spids: [20904 20918] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-L>} {(${ Id.VSub_Name BDHASH) <-rollback>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {(${ Id.VSub_Name BDHASH) <-rollback>} {(${ Id.VSub_Name BDHASH) <'-install/rollback'>} ] redirects: [] do_fork: T ) ] spids: [20933 20947] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {(${ Id.VSub_Name BDHASH) <-install>} {(${ Id.VSub_Name BDHASH) <-rollback>} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <install_run> name: install_run body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'Installing updates...'>)}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <install_verify> more_env: [] words: [ {<install_verify>} {(${ Id.VSub_Name BDHASH) <'-install/INDEX-OLD'>} {(${ Id.VSub_Name BDHASH) <'-install/INDEX-NEW'>} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <install_unschg> more_env: [] words: [ {<install_unschg>} {(${ Id.VSub_Name BDHASH) <'-install/INDEX-OLD'>} {(${ Id.VSub_Name BDHASH) <'-install/INDEX-NEW'>} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <install_files> more_env: [] words: [{<install_files>} {(${ Id.VSub_Name BDHASH) <-install>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <install_setup_rollback> more_env: [] words: [{<install_setup_rollback>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' done.'>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <rollback_setup_rollback> name: rollback_setup_rollback body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-L>} {(${ Id.VSub_Name BDHASH) <'-rollback/rollback'>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {(${ Id.VSub_Name BDHASH) <'-rollback/rollback'>} {<rollback-tmp>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-r>} {(${ Id.VSub_Name BDHASH) <'-rollback/'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {(${ Id.VSub_Name BDHASH) <-rollback>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {<rollback-tmp>} {(${ Id.VSub_Name BDHASH) <-rollback>}] redirects: [] do_fork: T ) ] spids: [21102 21116] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-r>} {(${ Id.VSub_Name BDHASH) <'-rollback/'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {(${ Id.VSub_Name BDHASH) <-rollback>}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <rollback_files> name: rollback_files body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-NEW'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'/lib/.*\\.so\\.[0-9]+\\|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<INDEX-NEW.libs.flist>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-OLD'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'/lib/.*\\.so\\.[0-9]+\\|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-k>} {<1> <Id.Lit_Comma ','> <1>} {<-t>} {(SQ <'|'>)} {<->}] redirects: [] do_fork: T ) (command.Simple blame_tok: <join> more_env: [] words: [{<join>} {<-t>} {(SQ <'|'>)} {<-v>} {<1>} {<->} {<INDEX-NEW.libs.flist>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-OLD>})] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <install_from_index> more_env: [] words: [{<install_from_index>} {<INDEX-OLD>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-OLD'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'/lib/.*\\.so\\.[0-9]+\\|'>)}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-OLD>})] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-NEW'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'/lib/.*\\.so\\.[0-9]+\\|'>)}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-NEW>})] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <install_from_index> more_env: [] words: [{<install_from_index>} {<INDEX-OLD>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <install_delete> more_env: [] words: [{<install_delete>} {<INDEX-NEW>} {<INDEX-OLD>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-OLD'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'/lib/.*\\.so\\.[0-9]+\\|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-k>} {<1> <Id.Lit_Comma ','> <1>} {<-t>} {(SQ <'|'>)} {<->}] redirects: [] do_fork: T ) (command.Simple blame_tok: <join> more_env: [] words: [{<join>} {<-t>} {(SQ <'|'>)} {<->} {<INDEX-NEW.libs.flist>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-OLD>})] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <install_from_index> more_env: [] words: [{<install_from_index>} {<INDEX-OLD>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-OLD'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'/lib/.*\\.so\\.[0-9]+\\|'>)}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-OLD>})] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-NEW'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'/lib/.*\\.so\\.[0-9]+\\|'>)}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-NEW>})] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <install_delete> more_env: [] words: [{<install_delete>} {<INDEX-NEW>} {<INDEX-OLD>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-OLD'>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-OLD>})] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-NEW'>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-NEW>})] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <install_from_index> more_env: [] words: [{<install_from_index>} {<INDEX-OLD>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <install_delete> more_env: [] words: [{<install_delete>} {<INDEX-NEW>} {<INDEX-OLD>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-s>} {<INDEX-OLD>} {<-o>} {<-s>} {<INDEX-NEW>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <kldxref> more_env: [] words: [{<kldxref>} {<-R>} {<'/boot/'>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] spids: [21618 21635] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<INDEX-OLD>} {<INDEX-NEW>} {<INDEX-NEW.libs.flist>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <rollback_run> name: rollback_run body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'Uninstalling updates...'>)}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-L>} {(${ Id.VSub_Name BDHASH) <-install>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-r>} {(${ Id.VSub_Name BDHASH) <'-install/'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {(${ Id.VSub_Name BDHASH) <-install>}] redirects: [] do_fork: T ) ] spids: [21696 21710] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <install_verify> more_env: [] words: [ {<install_verify>} {(${ Id.VSub_Name BDHASH) <'-rollback/INDEX-NEW'>} {(${ Id.VSub_Name BDHASH) <'-rollback/INDEX-OLD'>} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <install_unschg> more_env: [] words: [ {<install_unschg>} {(${ Id.VSub_Name BDHASH) <'-rollback/INDEX-NEW'>} {(${ Id.VSub_Name BDHASH) <'-rollback/INDEX-OLD'>} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <rollback_files> more_env: [] words: [{<rollback_files>} {(${ Id.VSub_Name BDHASH) <-rollback>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <rollback_setup_rollback> more_env: [] words: [{<rollback_setup_rollback>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' done.'>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <IDS_compare> name: IDS_compare body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <cut> more_env: [] words: [ {<cut>} {<-f>} {<1-5> <Id.Lit_Comma ','> <7-8>} {<-d>} {(SQ <'|'>)} {($ Id.VSub_Number 1)} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 1) <.noflags>} ) ] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [ {<sort>} {<-k>} {<1> <Id.Lit_Comma ','> <1>} {<-t>} {(SQ <'|'>)} {($ Id.VSub_Number 1) <.noflags>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 1) <.sorted>} ) ] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <cut> more_env: [] words: [ {<cut>} {<-f>} {<1-5> <Id.Lit_Comma ','> <7-8>} {<-d>} {(SQ <'|'>)} {($ Id.VSub_Number 2)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <comm> more_env: [] words: [{<comm>} {<-13>} {($ Id.VSub_Number 1) <.noflags>} {<->}] redirects: [] do_fork: T ) (command.Simple blame_tok: <fgrep> more_env: [] words: [{<fgrep>} {<-v>} {(SQ <'|-|||||'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-k>} {<1> <Id.Lit_Comma ','> <1>} {<-t>} {(SQ <'|'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <join> more_env: [] words: [{<join>} {<-t>} {(SQ <'|'>)} {($ Id.VSub_Number 1) <.sorted>} {<->}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<INDEX-NOTMATCHING>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [X] iterable: (for_iter.Words words:[{(${ Id.VSub_Name IDSIGNOREPATHS)}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(DQ <'^'> (${ Id.VSub_Name X))} {<INDEX-NOTMATCHING>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <comm> more_env: [] words: [{<comm>} {<-13>} {<->} {<INDEX-NOTMATCHING>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<INDEX-NOTMATCHING.tmp>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {<INDEX-NOTMATCHING.tmp>} {<INDEX-NOTMATCHING>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'IFS='> (SQ <'|'>)}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [ {<read>} {<FPATH>} {<TYPE>} {<OWNER>} {<GROUP>} {<PERM>} {<HASH>} {<LINK>} {<P_TYPE>} {<P_OWNER>} {<P_GROUP>} {<P_PERM>} {<P_HASH>} {<P_LINK>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name TYPE))} {<Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name P_TYPE))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name FPATH) <' is a '>)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name P_TYPE))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <f> pattern: (pat.Words words:[{<f>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'regular file, '>)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <d> pattern: (pat.Words words:[{<d>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'directory, '>)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <L> pattern: (pat.Words words:[{<L>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'symlink, '>)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'but should be a '>)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name TYPE))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <f> pattern: (pat.Words words:[{<f>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'regular file.'>)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <d> pattern: (pat.Words words:[{<d>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <directory.>)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <L> pattern: (pat.Words words:[{<L>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <symlink.>)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] spids: [22096 22119] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name OWNER))} {<Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name P_OWNER))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ (${ Id.VSub_Name FPATH) <' is owned by user id '> (${ Id.VSub_Name P_OWNER) <', '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'but should be owned by user id '> (${ Id.VSub_Name OWNER) <.>)} ] redirects: [] do_fork: T ) ] spids: [22284 22307] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name GROUP))} {<Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name P_GROUP))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ (${ Id.VSub_Name FPATH) <' is owned by group id '> (${ Id.VSub_Name P_GROUP) <', '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'but should be owned by group id '> (${ Id.VSub_Name GROUP) <.>) } ] redirects: [] do_fork: T ) ] spids: [22345 22368] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name PERM))} {<Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name P_PERM))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name TYPE))} {<Id.Lit_Equals '='>} {(DQ <L>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) ] ops: [<Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ (${ Id.VSub_Name FPATH) <' has '> (${ Id.VSub_Name P_PERM) <' permissions, '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'but should have '> (${ Id.VSub_Name PERM) <' permissions.'>)} ] redirects: [] do_fork: T ) ] spids: [22418 22462] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name HASH))} {<Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name P_HASH))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name TYPE))} {<Id.Lit_Equals '='>} {(DQ <L>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ (${ Id.VSub_Name FPATH) <' is a symlink to '> (${ Id.VSub_Name P_HASH) <', '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'but should be a symlink to '> (${ Id.VSub_Name HASH) <.> ) } ] redirects: [] do_fork: T ) ] spids: [22526 22545] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name TYPE))} {<Id.Lit_Equals '='>} {(DQ <f>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ (${ Id.VSub_Name FPATH) <' has SHA256 hash '> (${ Id.VSub_Name P_HASH) <', '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'but should have SHA256 hash '> (${ Id.VSub_Name HASH) <.> ) } ] redirects: [] do_fork: T ) ] spids: [22578 22597] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [22500 22523] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<INDEX-NOTMATCHING>} ) ] ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 1) <.noflags>} {($ Id.VSub_Number 1) <.sorted>} {($ Id.VSub_Number 2)} {<INDEX-NOTMATCHING>} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <IDS_run> name: IDS_run body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.Simple blame_tok: <workdir_init> more_env: [] words: [{<workdir_init>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_pick_server_init> more_env: [] words: [{<fetch_pick_server_init>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <fetch_pick_server> more_env: [] words: [{<fetch_pick_server>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <fetch_key> more_env: [] words: [{<fetch_key>}] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <fetch_pick_server> more_env: [] words: [{<fetch_pick_server>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <fetch_tag> more_env: [] words: [{<fetch_tag>}] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <fetch_pick_server> more_env: [] words: [{<fetch_pick_server>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_tagsanity> more_env: [] words: [{<fetch_tagsanity>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_metadata> more_env: [] words: [{<fetch_metadata>} {<INDEX-OLD>} {<INDEX-ALL>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_filter_metadata> more_env: [] words: [{<fetch_filter_metadata>} {<INDEX-OLD>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_filter_metadata> more_env: [] words: [{<fetch_filter_metadata>} {<INDEX-ALL>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<INDEX-OLD>} {<INDEX-ALL>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-ALL.tmp>})] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {<INDEX-ALL.tmp>} {<INDEX-ALL>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<INDEX-OLD>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <fetch_filter_kernel_names> more_env: [] words: [{<fetch_filter_kernel_names>} {<INDEX-ALL>} {(${ Id.VSub_Name KERNCONF)}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_inspect_system> more_env: [] words: [{<fetch_inspect_system>} {<INDEX-ALL>} {<INDEX-PRESENT>} {<'/dev/null'>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <IDS_compare> more_env: [] words: [{<IDS_compare>} {<INDEX-ALL>} {<INDEX-PRESENT>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <get_params> name: get_params body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <init_params> more_env: [] words: [{<init_params>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <parse_cmdline> more_env: [] words: [{<parse_cmdline>} {($ Id.VSub_At '@')}] redirects: [] do_fork: T ) (command.Simple blame_tok: <parse_conffile> more_env: [] words: [{<parse_conffile>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <default_params> more_env: [] words: [{<default_params>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <cmd_fetch> name: cmd_fetch body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-t>} {<0>} {<-a>} {($ Id.VSub_DollarName NOTTYOK)} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_Number 0)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <' fetch should not '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'be run non-interactively.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Run '> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_Number 0)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <' cron instead.'> ) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [22952 22973] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <fetch_check_params> more_env: [] words: [{<fetch_check_params>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <fetch_run> more_env: [] words: [{<fetch_run>}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ops: [<Id.Op_DPipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <cmd_cron> name: cmd_cron body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <fetch_check_params> more_env: [] words: [{<fetch_check_params>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sleep> more_env: [] words: [ {<sleep>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <jot> more_env: [] words: [{<jot>} {<-r>} {<1>} {<0>} {<3600>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.ShAssignment left: <Id.Lit_VarLike 'TMPFILE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TMPFILE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TMPFILE='> name:TMPFILE) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <mktemp> more_env: [] words: [{<mktemp>} {<'/tmp/freebsd-update.XXXXXX'>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ops: [<Id.Op_DPipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <fetch_run> more_env: [] words: [{<fetch_run>}] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TMPFILE)} ) ] do_fork: T ) ] ops: [] ) (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-q>} {(DQ <'No updates needed'>)} {(${ Id.VSub_Name TMPFILE)} ] redirects: [] do_fork: T ) ] ops: [] ) (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name VERBOSELEVEL)} {<Id.Lit_Equals '='>} {(DQ <debug>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <mail> more_env: [] words: [ {<mail>} {<-s>} { (DQ (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <hostname> more_env: [] words: [{<hostname>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <' security updates'> ) } {(${ Id.VSub_Name MAILTO)} ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(${ Id.VSub_Name TMPFILE)} ) ] do_fork: T ) ] spids: [23093 23140] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {(${ Id.VSub_Name TMPFILE)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <cmd_upgrade> name: cmd_upgrade body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <upgrade_check_params> more_env: [] words: [{<upgrade_check_params>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <upgrade_run> more_env: [] words: [{<upgrade_run>}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ops: [<Id.Op_DPipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <cmd_install> name: cmd_install body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <install_check_params> more_env: [] words: [{<install_check_params>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <install_run> more_env: [] words: [{<install_run>}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ops: [<Id.Op_DPipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <cmd_rollback> name: cmd_rollback body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <rollback_check_params> more_env: [] words: [{<rollback_check_params>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <rollback_run> more_env: [] words: [{<rollback_run>}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ops: [<Id.Op_DPipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <cmd_IDS> name: cmd_IDS body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <IDS_check_params> more_env: [] words: [{<IDS_check_params>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <IDS_run> more_env: [] words: [{<IDS_run>}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ops: [<Id.Op_DPipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <export> more_env: [] words: [ {<export>} {<Id.Lit_VarLike 'PATH='> <'/sbin'> <Id.Lit_Colon ':'> <'/bin'> <Id.Lit_Colon ':'> <'/usr/sbin'> <Id.Lit_Colon ':'> <'/usr/bin'> <Id.Lit_Colon ':'> (${ Id.VSub_Name PATH) } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName PAGER))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PAGER='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PAGER='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PAGER='> name:PAGER) op: assign_op.Equal rhs: {<'/usr/bin/more'>} ) ] redirects: [] ) ] spids: [23306 23319] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<Id.Lit_VarLike 'LC_ALL='> <C>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <get_params> more_env: [] words: [{<get_params>} {($ Id.VSub_At '@')}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [COMMAND] iterable: (for_iter.Words words:[{(${ Id.VSub_Name COMMANDS)}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <cmd_> more_env: [] words: [{<cmd_> (${ Id.VSub_Name COMMAND)}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] )