(command.CommandList children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<Id.Lit_VarLike '_Dbg_bogus_file='> (SQ <' A really bogus file'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-A>} {<_Dbg_file2canonic>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike '_Dbg_file2canonic='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_Dbg_file2canonic='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_Dbg_file2canonic='> name:_Dbg_file2canonic) op: assign_op.Equal rhs: {(ShArrayLiteral left:<Id.Op_LParen _> words:[] right:<Id.Right_ShArrayLiteral _>)} ) ] redirects: [] ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-A>} {<_Dbg_fileinfo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-A>} {<_Dbg_filenames>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <_Dbg_filecache_reset> name: _Dbg_filecache_reset body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike '_Dbg_filenames='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_Dbg_filenames='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_Dbg_filenames='> name:_Dbg_filenames) op: assign_op.Equal rhs: { (ShArrayLiteral left: <Id.Op_LParen _> words: [] right: <Id.Right_ShArrayLiteral _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_Dbg_fileinfo='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_Dbg_fileinfo='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_Dbg_fileinfo='> name:_Dbg_fileinfo) op: assign_op.Equal rhs: { (ShArrayLiteral left: <Id.Op_LParen _> words: [] right: <Id.Right_ShArrayLiteral _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_Dbg_file2canonic='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_Dbg_file2canonic='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_Dbg_file2canonic='> name: _Dbg_file2canonic ) op: assign_op.Equal rhs: { (ShArrayLiteral left: <Id.Op_LParen _> words: [] right: <Id.Right_ShArrayLiteral _> ) } ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <_Dbg_filecache_reset> more_env: [] words: [{<_Dbg_filecache_reset>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <_Dbg_check_line> name: _Dbg_check_line body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_Pound '#')} right: {<Id.Lit_Digits 2>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-i>} {<Id.Lit_VarLike 'line_number='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<Id.Lit_VarLike 'filename='> (DQ ($ Id.VSub_Number 2))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-i>} {<max_line>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'max_line='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'max_line='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'max_line='> name:max_line) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <_Dbg_get_maxline> more_env: [] words: [{<_Dbg_get_maxline>} {(DQ ($ Id.VSub_DollarName filename))}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_QMark '?')} right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <_Dbg_errmsg> more_env: [] words: [ {<_Dbg_errmsg>} { (DQ <'internal error getting number of lines in '> ($ Id.VSub_DollarName filename) ) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [193 208] ) ] 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.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Great left: ($ Id.Lit_ArithVarLike line_number) right: ($ Id.Lit_ArithVarLike max_line) ) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: ($ Id.Lit_ArithVarLike _Dbg_set_basename) right: <Id.Op_DRightParen _> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'filename='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'filename='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'filename='> name:filename) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name filename> var_name: filename suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <_Dbg_errmsg> more_env: [] words: [ {<_Dbg_errmsg>} {(DQ <'Line '> ($ Id.VSub_DollarName line_number) <' is too large.'>)} { (DQ <'File '> ($ Id.VSub_DollarName filename) <' has only '> ($ Id.VSub_DollarName max_line) <' lines.'> ) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [228 243] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <_Dbg_file_not_read_in> name: _Dbg_file_not_read_in body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<-r>} {<Id.Lit_VarLike 'filename='> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <_Dbg_adjust_filename> more_env: [] words: [{<_Dbg_adjust_filename>} {(DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <_Dbg_errmsg> more_env: [] words: [ {<_Dbg_errmsg>} { (DQ <'File '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ($ Id.VSub_DollarName filename) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' not found in read-in files.'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <_Dbg_errmsg> more_env: [] words: [{<_Dbg_errmsg>} {(DQ <'See \'info files\' for a list of known files and'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <_Dbg_errmsg> more_env: [] words: [{<_Dbg_errmsg>} {(DQ <'\'load\' to read in a file.'>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <_Dbg_get_maxline> name: _Dbg_get_maxline body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_Pound '#')} right: {<Id.Lit_Digits 1>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<-1>} ) ] ops: [<Id.Op_DAmp _>] ) (command.AndOr children: [ (command.Simple blame_tok: <_Dbg_set_source_array_var> more_env: [] words: [{<_Dbg_set_source_array_var>} {(DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_QMark '?')} ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<-r>} {<Id.Lit_VarLike 'line_count_cmd='> (DQ <'line_count='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'{#'> ($ Id.VSub_DollarName _Dbg_source_array_var) <'[@]}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {($ Id.VSub_DollarName line_count_cmd)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (DQ <'typeset last_line; last_line='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'{'> (${ Id.VSub_Name _Dbg_source_array_var) <'['> ($ Id.VSub_DollarName line_count) <']}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-i>} {<Id.Lit_VarLike 'last_not_null='> <0>}] redirects: [] do_fork: T ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike line_count) right: (arith_expr.Binary op_id: Id.Arith_Minus left: ($ Id.Lit_ArithVarLike line_count) right: ($ Id.Lit_ArithVarLike last_line_is_null) ) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName line_count)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_QMark '?')} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <_Dbg_get_source_line> name: _Dbg_get_source_line body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-i>} {<lineno>}] 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.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_Pound '#')} right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lineno='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lineno='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lineno='> name:lineno) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _Dbg_frame_last_lineno)} ) ] redirects: [] ) ] spids: [500 514] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lineno='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lineno='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lineno='> name:lineno) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<filename>}] 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.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_Pound '#')} right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'filename='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'filename='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'filename='> name:filename) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName _Dbg_frame_last_filename))} ) ] redirects: [] ) ] spids: [539 554] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'filename='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'filename='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'filename='> name:filename) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <_Dbg_readin_if_new> more_env: [] words: [{<_Dbg_readin_if_new>} {(DQ ($ Id.VSub_DollarName filename))}] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName _Dbg_set_highlight)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName _Dbg_highlight_array_var)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (DQ <'typeset -i count='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'{#'> ($ Id.VSub_DollarName _Dbg_highlight_array_var) <'[@]}'> ) } ] 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.DParen left: <Id.Op_DLeftParen _> child: ($ Id.Lit_ArithVarLike count) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (DQ <'_Dbg_source_line='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'{'> ($ Id.VSub_DollarName _Dbg_highlight_array_var) <'[lineno]}'> ) } ] redirects: [] do_fork: T ) ] spids: [617 628] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (DQ <'_Dbg_source_line='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'{'> ($ Id.VSub_DollarName _Dbg_source_array_var) <'['> ($ Id.VSub_DollarName lineno) <']}'> ) } ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [582 603] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (DQ <'_Dbg_source_line='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'{'> ($ Id.VSub_DollarName _Dbg_source_array_var) <'['> ($ Id.VSub_DollarName lineno) <']}'> ) } ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <_Dbg_is_file> name: _Dbg_is_file 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.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_Pound '#')} right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <_Dbg_errmsg> more_env: [] words: [ {<_Dbg_errmsg>} {(DQ <'Internal debug error _Dbg_is_file(): null file to find'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [695 710] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<Id.Lit_VarLike 'find_file='> (DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<try_find_file>}] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {($ Id.VSub_DollarName find_file)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <_Dbg_errmsg> more_env: [] words: [ {<_Dbg_errmsg>} {(DQ <'Internal debug error _Dbg_is_file(): file argument null'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [748 760] ) ] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name find_file> var_name: find_file suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 1>} ) right: <Id.Arith_RBrace _> ) } right: {(SQ <'/'>)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'try_find_file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'try_find_file='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'try_find_file='> name: try_find_file ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <_Dbg_expand_filename> more_env: [] words: [ {<_Dbg_expand_filename>} {(DQ ($ Id.VSub_DollarName find_file))} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name _Dbg_filenames> var_name: _Dbg_filenames bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName try_find_file)} ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName try_find_file))}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [824 841] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [785 807] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name find_file> var_name: find_file suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 1>} ) right: <Id.Arith_RBrace _> ) } right: {(SQ <.>)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'try_find_file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'try_find_file='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'try_find_file='> name: try_find_file ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <_Dbg_expand_filename> more_env: [] words: [ {<_Dbg_expand_filename>} { (DQ (${ Id.VSub_Name _Dbg_init_cwd) <'/'> ($ Id.VSub_DollarName find_file) ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name _Dbg_filenames> var_name: _Dbg_filenames bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName try_find_file)} ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName try_find_file))}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [906 923] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [859 881] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<-i>} {<Id.Lit_VarLike 'n='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name _Dbg_dir> var_name: _Dbg_dir prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-i>} {<i>}] redirects: [] do_fork: T ) (command.ForExpr keyword: <Id.KW_For for> init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: ($ Id.Lit_ArithVarLike n) ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike i) ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<Id.Lit_VarLike 'basename='> (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name _Dbg_dir> var_name: _Dbg_dir bracket_op: (bracket_op.ArrayIndex expr:($ Id.Lit_ArithVarLike i)) right: <Id.Right_DollarBrace '}'> ) ) } ] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName basename)} right: {(SQ <'\\$cdir'>)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'basename='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'basename='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'basename='> name: basename ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _Dbg_cdir)} ) ] redirects: [] ) ] spids: [1010 1026] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName basename)} right: {(SQ <'\\$cwd'>)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'basename='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'basename='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'basename='> name: basename ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <pwd> more_env: [] words: [{<pwd>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) ] spids: [1033 1049] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'try_find_file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'try_find_file='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'try_find_file='> name: try_find_file ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName basename) <'/'> ($ Id.VSub_DollarName find_file) ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_f child: {(DQ ($ Id.VSub_DollarName try_find_file))} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName try_find_file))}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [1069 1083] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <_Dbg_readin> name: _Dbg_readin body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<filename>}] 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.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_Pound '#')} right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'filename='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'filename='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'filename='> name:filename) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} ) ] redirects: [] ) ] spids: [1147 1160] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <_Dbg_frame_file> more_env: [] words: [{<_Dbg_frame_file>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'filename='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'filename='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'filename='> name:filename) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName _Dbg_frame_filename))} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-i>} {<Id.Lit_VarLike 'line_count='> <0>}] redirects: [] do_fork: T ) (command.Sentence child: (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-i>} {<next>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike 'next='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'next='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'next='> name:next) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name _Dbg_filenames> var_name: _Dbg_filenames prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_Dbg_source_array_var='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_Dbg_source_array_var='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_Dbg_source_array_var='> name: _Dbg_source_array_var ) op: assign_op.Equal rhs: {(DQ <_Dbg_source_> (${ Id.VSub_Name next))} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName _Dbg_set_highlight)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_Dbg_highlight_array_var='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_Dbg_highlight_array_var='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_Dbg_highlight_array_var='> name: _Dbg_highlight_array_var ) op: assign_op.Equal rhs: {(DQ <_Dbg_highlight_> (${ Id.VSub_Name next))} ) ] redirects: [] ) ] spids: [1221 1233] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<filevar>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<source_array>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-ri>} {<Id.Lit_VarLike 'NOT_SMALLFILE='> <1000>}] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {($ Id.VSub_DollarName filename)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName filename)} right: {(DQ ($ Id.VSub_DollarName _Dbg_bogus_file))} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (DQ (${ Id.VSub_Name _Dbg_source_array_var) <'[0]='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ($ Id.VSub_DollarName Dbg_EXECUTION_STRING) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ) } ] redirects: [] do_fork: T ) ] spids: [1268 1294] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'fullname='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'fullname='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fullname='> name:fullname) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <_Dbg_resolve_expand_filename> more_env: [] words: [ {<_Dbg_resolve_expand_filename>} {(DQ ($ Id.VSub_DollarName filename))} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_r child: {($ Id.VSub_DollarName fullname)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<-r>} {<Id.Lit_VarLike 'progress_prefix='> (DQ <'Reading '> ($ Id.VSub_DollarName filename)) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '_Dbg_file2canonic['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '_Dbg_file2canonic['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '_Dbg_file2canonic['> name: _Dbg_file2canonic index: {($ Id.VSub_DollarName filename)} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName fullname))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '_Dbg_file2canonic['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '_Dbg_file2canonic['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '_Dbg_file2canonic['> name: _Dbg_file2canonic index: {($ Id.VSub_DollarName fullname)} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName fullname))} ) ] redirects: [] ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-ri>} {<Id.Lit_VarLike 'BIGFILE='> <30000>}] 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: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'line_count='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'line_count='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'line_count='> name: line_count ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ (${ Id.VSub_Name fullname))} ) ] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: ($ Id.Lit_ArithVarLike line_count) right: ($ Id.Lit_ArithVarLike NOT_SMALLFILE) ) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <_Dbg_msg_nocr> more_env: [] words: [ {<_Dbg_msg_nocr>} {(DQ (${ Id.VSub_Name progress_prefix) <' '>)} ] redirects: [] do_fork: T ) ] spids: [1418 1433] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [1381 1399] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <builtin> more_env: [] words: [ {<builtin>} {<readarray>} {<-t>} {<-O>} {<1>} {<-c>} {($ Id.VSub_DollarName BIGFILE)} {<-C>} { (DQ <'_Dbg_progess_show '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (${ Id.VSub_Name progress_prefix) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' '> (${ Id.VSub_Name line_count) ) } {($ Id.VSub_DollarName _Dbg_source_array_var)} ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName fullname))} ) ] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName _Dbg_set_highlight)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'opts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'opts='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'opts='> name:opts) op: assign_op.Equal rhs: {(DQ <'--bg='> (${ Id.VSub_Name _Dbg_set_highlight))} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName _Dbg_set_style)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'opts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'opts='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'opts='> name: opts ) op: assign_op.Equal rhs: {(DQ <'--style='> (${ Id.VSub_Name _Dbg_set_style))} ) ] redirects: [] ) ] spids: [1518 1530] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'highlight_cmd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'highlight_cmd='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'highlight_cmd='> name: highlight_cmd ) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name _Dbg_libdir) <'/lib/term-highlight.py '> ($ Id.VSub_DollarName opts) <' '> ($ Id.VSub_DollarName fullname) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'tempfile='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tempfile='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'tempfile='> name: tempfile ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <Id.VSub_DollarName '$highlight_cmd'> more_env: [] words: [{($ Id.VSub_DollarName highlight_cmd)}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {<Id.Lit_Digits 0>} right: {($ Id.VSub_QMark '?')} ) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <builtin> more_env: [] words: [ {<builtin>} {<readarray>} {<-t>} {<-O>} {<1>} {<-c>} {($ Id.VSub_DollarName BIGFILE)} {<-C>} { (DQ <'_Dbg_progess_show '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (${ Id.VSub_Name progress_prefix) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' '> (${ Id.VSub_Name line_count) ) } {($ Id.VSub_DollarName _Dbg_highlight_array_var)} ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName tempfile))} ) ] do_fork: T ) ] spids: [1566 1581] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_r child: {($ Id.VSub_DollarName tempfile)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {($ Id.VSub_DollarName tempfile)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] spids: [1494 1506] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Great left: ($ Id.Lit_ArithVarLike line_count) right: ($ Id.Lit_ArithVarLike BIGFILE) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.Simple blame_tok: <_Dbg_progess_done> more_env: [] words: [{<_Dbg_progess_done>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] spids: [1323 1335] ) ] 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: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<-r>} {<Id.Lit_VarLike 'line_count_cmd='> (DQ <'line_count='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'{#'> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name _Dbg_source_array_var> var_name: _Dbg_source_array_var bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) <'}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {($ Id.VSub_DollarName line_count_cmd)}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: ($ Id.Lit_ArithVarLike line_count) right: ($ Id.Lit_ArithVarLike NOT_SMALLFILE) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.Simple blame_tok: <_Dbg_msg> more_env: [] words: [{<_Dbg_msg>} {(DQ <done.>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.Sentence child: (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '_Dbg_filenames['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '_Dbg_filenames['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '_Dbg_filenames['> name: _Dbg_filenames index: {($ Id.VSub_DollarName fullname)} ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _Dbg_source_array_var)} ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <_Dbg_readin_if_new> name: _Dbg_readin_if_new body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_Pound '#')} right: {<Id.Lit_Digits 1>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<Id.Lit_VarLike 'filename='> (DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <_Dbg_set_source_array_var> more_env: [] words: [{<_Dbg_set_source_array_var>} {(DQ ($ Id.VSub_DollarName filename))}] 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName fullname))} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <_Dbg_readin> more_env: [] words: [{<_Dbg_readin>} {(DQ ($ Id.VSub_DollarName filename))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<Id.Lit_VarLike 'rc='> ($ Id.VSub_QMark '?')}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<Id.Lit_Other '+'> <xv>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_QMark '?')} right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName rc)} ) ] ops: [<Id.Op_DAmp _>] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {($ Id.VSub_DollarName fullname)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DAmp _>] ) (command.AndOr children: [ (command.Simple blame_tok: <_Dbg_set_source_array_var> more_env: [] words: [{<_Dbg_set_source_array_var>} {(DQ ($ Id.VSub_DollarName filename))}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_QMark '?')} ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [1789 1803] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <_Dbg_set_source_array_var> name: _Dbg_set_source_array_var body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_Pound '#')} right: {<Id.Lit_Digits 1>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<Id.Lit_VarLike 'filename='> (DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{($ Id.VSub_DollarName filename)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<2>} ) ] ops: [<Id.Op_DAmp _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'fullname='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'fullname='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fullname='> name:fullname) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name _Dbg_file2canonic> var_name: _Dbg_file2canonic bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName filename)}) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{($ Id.VSub_DollarName fullname)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name _Dbg_filenames> var_name: _Dbg_filenames bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName filename)}) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'fullname='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'fullname='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fullname='> name:fullname) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName filename))} ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{($ Id.VSub_DollarName fullname)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<2>} ) ] ops: [<Id.Op_DAmp _>] ) (command.ShAssignment left: <Id.Lit_VarLike '_Dbg_source_array_var='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_Dbg_source_array_var='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_Dbg_source_array_var='> name: _Dbg_source_array_var ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name _Dbg_filenames> var_name: _Dbg_filenames bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName fullname)}) 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.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName _Dbg_set_highlight)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_Dbg_highlight_array_var='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_Dbg_highlight_array_var='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_Dbg_highlight_array_var='> name: _Dbg_highlight_array_var ) op: assign_op.Equal rhs: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name _Dbg_source_array_var> var_name: _Dbg_source_array_var suffix_op: (suffix_op.PatSub pat: {<_Dbg_source_>} replace: {<_Dbg_highlight_>} replace_mode: Id.Undefined_Tok slash_tok: <Id.VOp2_Slash _> ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] redirects: [] ) ] spids: [2008 2020] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_Dbg_source_array_var='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_Dbg_source_array_var='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_Dbg_source_array_var='> name: _Dbg_source_array_var ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name _Dbg_filenames> var_name: _Dbg_filenames bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName fullname)}) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {($ Id.VSub_DollarName _Dbg_source_array_var)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<2>} ) ] ops: [<Id.Op_DAmp _>] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) ] )