(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