(command.CommandList children: [ (command.CommandList children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: { (single_quoted left: <Id.Left_SingleQuoteC "$'"> tokens: [<Id.Char_Literals ' '> <Id.Char_OneChar '\\t'> <Id.Char_OneChar '\\r'>] ) } spids: [36] ) (assign_pair lhs: (sh_lhs_expr.Name name:VERSION) op: assign_op.Equal rhs: {<5.1.2-bashcached>} spids: [43] ) ] ) terminator: <Id.Op_Semi _> ) (C {<export>} {<Id.Lit_VarLike 'LANG='> <C>}) ] ) (C {<trap>} {(SQ <'exit 0'>)} {<INT>} {<TERM>}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.WordTest w:{(DQ ($ Id.VSub_DollarName '$SOCAT_VERSION'))}) ) terminator: <Id.Op_Semi _> ) ] action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:send) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children:[(C {<mktemp>} {<-u>})]) ) ) } spids: [77] ) ] ) terminator: <Id.Op_Semi _> ) (C {<mkfifo>} {<-m>} {<600>} {(DQ ($ Id.VSub_DollarName '$send'))}) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:recv) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children:[(C {<mktemp>} {<-u>})]) ) ) } spids: [98] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (C {<mkfifo>} {<-m>} {<600>} {(DQ ($ Id.VSub_DollarName '$recv'))}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.WhileUntil keyword: <Id.KW_While while> cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_p child: {(DQ ($ Id.VSub_DollarName '$recv'))} ) ) terminator: <Id.Op_Semi _> ) ] body: (command.DoGroup children: [ (command.Sentence child: (command.Simple words: [{<cat>} {(DQ ($ Id.VSub_DollarName '$recv'))}] redirects: [ (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {</dev/null>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) ) terminator: <Id.Op_Amp _> ) (command.Sentence child: (C {<trap>} {(SQ <'rm -f "$recv" "$send"'>)} {<EXIT>}) terminator: <Id.Op_Semi _> ) (command.WhileUntil keyword: <Id.KW_While while> cond: [(command.Sentence child:(C {<read>} {<-ra>} {<cmd>}) terminator:<Id.Op_Semi _>)] body: (command.DoGroup children: [ (command.Sentence child: (command.Case to_match: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>}) ) ) } arms: [ (case_arm pat_list: [ {<Id.KW_Set set>} {<add>} {<replace>} {<append>} {<prepend>} {<cas>} ] action: [ (command.Sentence child: (command.WhileUntil keyword: <Id.KW_While while> cond: [ (command.Sentence child: (C {<true>}) terminator: <Id.Op_Semi _> ) ] body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [ {<printf>} {(SQ <'recv=%q send=%q cmd=%q\\n'>)} {(DQ ($ Id.VSub_DollarName '$recv'))} {(DQ ($ Id.VSub_DollarName '$send'))} { (DQ (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.WholeArray op_id: Id.Arith_Star ) ) ) } ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: { (DQ ($ Id.VSub_DollarName '$BASHCACHED_PIPE') ) } ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {</dev/null>} ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] ) ] ) ) terminator: <Id.Op_Semi _> ) (command.Simple words: [ {<head>} {<-c>} { (DQ (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 4>}) ) suffix_op: (suffix_op.Unary op_id: Id.VTest_Hyphen arg_word: {<0>} ) ) ) } ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$send'))} ) ] ) ] spids: [181 192 260 -1] ) (case_arm pat_list: [{<quit>}] action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit>)] spids: [263 264 267 -1] ) (case_arm pat_list: [{(SQ )}] spids: [269 271 273 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.WhileUntil keyword: <Id.KW_While while> cond: [ (command.Sentence child: (C {<true>}) terminator: <Id.Op_Semi _> ) ] body: (command.DoGroup children: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [ {<printf>} {(SQ <'recv=%q send=%q cmd=%q\\n'>)} {(DQ ($ Id.VSub_DollarName '$recv'))} {(DQ ($ Id.VSub_DollarName '$send'))} { (DQ (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.WholeArray op_id: Id.Arith_Star ) ) ) } ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: { (DQ ($ Id.VSub_DollarName '$BASHCACHED_PIPE') ) } ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {</dev/null>} ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] ) terminator: <Id.Op_Semi _> ) ] ) ) ] spids: [275 276 323 -1] ) ] ) terminator: <Id.Op_Semi _> ) ] ) ) ] spids: [63 74] ) ] else_action: [ (command.Sentence child: (command.ShFunction name: help body: (command.BraceGroup children: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [{<tail>} {<-n> <Id.Lit_Other '+'> <2>}] redirects: [ (redir.Redir op: <Id.Redir_Less '<'> fd: -1 arg_word: {(DQ ($ Id.VSub_Number '$0'))} ) ] ) (C {<head>} {<-n11>}) (C {<cut>} {<-c3->}) ] negated: F ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Exit exit>) terminator: <Id.Op_Semi _> ) ] ) ) terminator: <Id.Op_Semi _> ) (command.ShFunction name: version body: (command.BraceGroup children: [ (command.Sentence child: (C {<echo>} {($ Id.VSub_DollarName '$VERSION')}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Exit exit>) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: license body: (command.BraceGroup children: [ (command.Sentence child: (C {<curl>} { (SQ < 'https://raw.githubusercontent.com/MakeNowJust/bashcached/master/LICENSE.MIT.md' > ) } ) terminator: <Id.Op_Semi _> ) (command.Sentence child:(C {<echo>}) terminator:<Id.Op_Semi _>) (command.Sentence child: (C {<curl>} { (SQ < 'https://raw.githubusercontent.com/MakeNowJust/bashcached/master/LICENSE.%F0%9F%8D%A3.md' > ) } ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Exit exit>) terminator: <Id.Op_Semi _> ) ] ) ) (command.ForEach iter_name: v iter_words: [{(DQ ($ Id.VSub_At '$@'))}] do_arg_iter: F body: (command.DoGroup children: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$v')} right: {<--> <Id.Lit_Other '*'>} ) ) (C {<eval>} { (DQ (braced_var_sub token: <Id.VSub_Name v> suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{<Id.Lit_Digits 2>}) ) ) ) } ) ] ) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:unique) op: assign_op.Equal rhs: {<1>} spids: [462] ) (assign_pair lhs: (sh_lhs_expr.Name name:before) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [(C {<printf>} {(SQ <'%(%s)T'>)} {<-1>})] ) ) } spids: [465] ) ] ) (C {<declare>} {<-A>} {<Id.Lit_VarLike 'flags='> (sh_array_literal left:<Id.Op_LParen _>)} {<Id.Lit_VarLike 'exptime='> (sh_array_literal left:<Id.Op_LParen _>)} {<Id.Lit_VarLike 'casUnique='> (sh_array_literal left:<Id.Op_LParen _>)} {<Id.Lit_VarLike 'data='> (sh_array_literal left:<Id.Op_LParen _>)} ) (command.ShFunction name: cache_has body: (command.BraceGroup children: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:t) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name exptime> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ Id.VSub_Number '$1')}) ) ) } spids: [509] ) ] ) (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.WordTest w:{($ Id.VSub_DollarName '$t')}) right: (bool_expr.LogicalOr left: (bool_expr.Binary op_id: Id.BoolBinary_eq left: {($ Id.VSub_DollarName '$t')} right: {<0>} ) right: (bool_expr.Binary op_id: Id.BoolBinary_gt left: {($ Id.VSub_DollarName '$t')} right: {($ Id.VSub_DollarName '$time')} ) ) ) ) ] ) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: cache_update body: (command.BraceGroup children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: data index: (arith_expr.ArithWord w:{($ Id.VSub_Number '$1')}) ) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [555] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.WordTest w:{($ Id.VSub_Number '$3')}) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: casUnique index: (arith_expr.ArithWord w:{($ Id.VSub_Number '$1')}) ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$3'))} spids: [571] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: casUnique index: (arith_expr.ArithWord w:{($ Id.VSub_Number '$1')}) ) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: (sh_lhs_expr.Name name:unique) ) ) } spids: [582] ) ] ) ] ) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: cache_set body: (command.BraceGroup children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: flags index: (arith_expr.ArithWord w:{($ Id.VSub_Number '$1')}) ) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [603] ) (assign_pair lhs: (sh_lhs_expr.IndexedName name: exptime index: (arith_expr.ArithWord w:{($ Id.VSub_Number '$1')}) ) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.TernaryOp cond: (arith_expr.Binary op_id: Id.Arith_DAmp left: (arith_expr.Binary op_id: Id.Arith_Less left: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>}) right: (arith_expr.ArithWord w:{($ Id.VSub_Number '$3')}) ) right: (arith_expr.Binary op_id: Id.Arith_LessEqual left: (arith_expr.ArithWord w:{($ Id.VSub_Number '$3')}) right: (arith_expr.ArithWord w:{<Id.Lit_Digits 2592000>}) ) ) true_expr: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.ArithWord w:{($ Id.VSub_Number '$3')}) right: (arith_expr.VarRef token:<Id.Lit_ArithVarLike time>) ) false_expr: (arith_expr.ArithWord w:{($ Id.VSub_Number '$3')}) ) ) } spids: [608] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (C {<cache_update>} {(DQ ($ Id.VSub_Number '$1'))} {(DQ ($ Id.VSub_Number '$4'))} {(DQ ($ Id.VSub_Number '$5'))} ) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: cache_get body: (command.BraceGroup children: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {<cache_has>} {(DQ ($ Id.VSub_Number '$1'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:d) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name data> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ Id.VSub_Number '$1')}) ) ) ) } spids: [677] ) ] ) (C {<printf>} { (single_quoted left: <Id.Left_SingleQuoteC "$'"> tokens: [ <Id.Char_Literals 'VALUE %s %s %s%s'> <Id.Char_OneChar '\\r'> <Id.Char_OneChar '\\n'> ] ) } {(DQ ($ Id.VSub_Number '$1'))} { (DQ (braced_var_sub token: <Id.VSub_Name flags> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ Id.VSub_Number '$1')}) ) ) ) } { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {<echo>} {<-n>} {(DQ ($ Id.VSub_DollarName '$d'))}) (C {<base64>} {<-d>}) (C {<wc>} {<-c>}) ] negated: F ) ] ) ) ) } { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.WordTest w:{($ Id.VSub_Number '$2')}) ) (C {<echo>} { (DQ <' '> (braced_var_sub token: <Id.VSub_Name casUnique> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {($ Id.VSub_Number '$1')} ) ) ) ) } ) ] ) ] ) ) ) } ) (command.Pipeline children: [ (C {<echo>} {<-n>} {(DQ ($ Id.VSub_DollarName '$d'))}) (C {<base64>} {<-d>}) ] negated: F ) (C {<echo>} {<-e>} {(SQ <'\\r'>)}) ] ) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: cache_delete body: (command.BraceGroup children: [ (command.Sentence child: (C {<unset>} {(DQ <'flags['> ($ Id.VSub_Number '$1') <']'>)} {(DQ <'exptime['> ($ Id.VSub_Number '$1') <']'>)} {(DQ <'casUnique['> ($ Id.VSub_Number '$1') <']'>)} {(DQ <'data['> ($ Id.VSub_Number '$1') <']'>)} ) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: read_data body: (command.BraceGroup children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:d) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {<head>} {<-c>} {(DQ ($ Id.VSub_Number '$1'))} {(DQ ($ Id.VSub_DollarName '$send'))} ) (C {<base64>}) ] negated: F ) ] ) ) ) } spids: [838] ) ] ) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: base64_cat body: (command.BraceGroup children: [ (command.Sentence child: (command.Pipeline children: [ (C {<cat>} { (command_sub left_token: <Id.Left_ProcSubIn '<('> command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {<echo>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))}) (C {<base64>} {<-d>}) ] negated: F ) ] ) ) } { (command_sub left_token: <Id.Left_ProcSubIn '<('> command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {<echo>} {<-n>} {(DQ ($ Id.VSub_Number '$2'))}) (C {<base64>} {<-d>}) ] negated: F ) ] ) ) } ) (C {<base64>}) ] negated: F ) terminator: <Id.Op_Semi _> ) ] ) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BASHCACHED_PIPE) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children:[(C {<mktemp>} {<-u>})]) ) ) } spids: [912] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child:(C {<export>} {<BASHCACHED_PIPE>}) terminator:<Id.Op_Semi _>) (C {<mkfifo>} {<-m>} {<600>} {(DQ ($ Id.VSub_DollarName '$BASHCACHED_PIPE'))}) (C {<trap>} {(SQ <'rm -f "$BASHCACHED_PIPE"'>)} {<EXIT>}) (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: (arith_expr.ArithWord w: { (braced_var_sub token: <Id.VSub_Name check> suffix_op: (suffix_op.Unary op_id:Id.VTest_Hyphen arg_word:{<60>}) ) } ) right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>}) ) ) (command.WhileUntil keyword: <Id.KW_While while> cond: [(command.Sentence child:(C {<echo>}) terminator:<Id.Op_Semi _>)] body: (command.DoGroup children: [ (command.Sentence child: (C {<sleep>} { (DQ (braced_var_sub token: <Id.VSub_Name check> suffix_op: (suffix_op.Unary op_id:Id.VTest_Hyphen arg_word:{<60>}) ) ) } ) terminator: <Id.Op_Semi _> ) ] ) redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$BASHCACHED_PIPE'))} ) ] ) ] ) terminator: <Id.Op_Amp _> ) (command.Sentence child: (command.Pipeline children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: [(command.Sentence child:(C {<true>}) terminator:<Id.Op_Semi _>)] body: (command.DoGroup children: [ (command.Sentence child: (C {<cat>} {(DQ ($ Id.VSub_DollarName '$BASHCACHED_PIPE'))}) terminator: <Id.Op_Semi _> ) ] ) ) (command.WhileUntil keyword: <Id.KW_While while> cond: [ (command.Sentence child: (C {<read>} {<-r>} {<line>}) terminator: <Id.Op_Semi _> ) ] body: (command.DoGroup children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cmd) op: assign_op.Equal rhs: {(SQ )} spids: [1023] ) (assign_pair lhs: (sh_lhs_expr.Name name:recv) op: assign_op.Equal rhs: {(SQ )} spids: [1027] ) (assign_pair lhs: (sh_lhs_expr.Name name:send) op: assign_op.Equal rhs: (word.Empty) spids: [1031] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (C {<eval>} {(DQ ($ Id.VSub_DollarName '$line'))}) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cmd) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [{($ Id.VSub_DollarName '$cmd')}] ) } spids: [1041] ) (assign_pair lhs: (sh_lhs_expr.Name name:time) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [(C {<printf>} {(SQ <'%(%s)T'>)} {<-1>})] ) ) } spids: [1046] ) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: (arith_expr.Binary op_id: Id.Arith_Minus left: (arith_expr.VarRef token:<Id.Lit_ArithVarLike time>) right: (arith_expr.VarRef token:<Id.Lit_ArithVarLike before>) ) right: (arith_expr.ArithWord w: { (braced_var_sub token: <Id.VSub_Name check> suffix_op: (suffix_op.Unary op_id: Id.VTest_Hyphen arg_word: {<60>} ) ) } ) ) ) (command.ForEach iter_name: k iter_words: [ { (DQ (braced_var_sub token: <Id.VSub_Name exptime> prefix_op: (Id.VSub_Bang) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Pipeline children: [ (C {<cache_has>} {($ Id.VSub_DollarName '$k')}) ] negated: T ) (C {<cache_delete>} {($ Id.VSub_DollarName '$k')}) ] ) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:before) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$time')} spids: [1116] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Unary op_id: Id.BoolUnary_p child: {($ Id.VSub_DollarName '$recv')} ) ) ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.Sentence child: (command.Case to_match: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>}) ) ) } arms: [ (case_arm pat_list: [{<Id.KW_Set set>}] action: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<read_data>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 4>} ) ) ) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) terminator: <Id.Op_Semi _> ) (C {<cache_set>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) ) } { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 2>}) ) ) } { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 3>}) ) ) } {(DQ ($ Id.VSub_DollarName '$d'))} ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 5>} ) ) ) } right: {<noreply>} ) ) (command.Simple words: [{<echo>} {<-e>} {(DQ <STORED> <Id.Lit_Other '\\'> <r>)}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$recv'))} ) ] ) ] ) ] spids: [1147 1148 1224 -1] ) (case_arm pat_list: [{<add>}] action: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<read_data>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 4>} ) ) ) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) terminator: <Id.Op_Semi _> ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe] children: [ (command.Pipeline children: [ (C {<cache_has>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 1>} ) ) ) } ) ] negated: T ) (C {<cache_set>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) ) } { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 2>}) ) ) } { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 3>}) ) ) } {(DQ ($ Id.VSub_DollarName '$d'))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:result) op: assign_op.Equal rhs: {<STORED>} spids: [1289] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:result) op: assign_op.Equal rhs: {<NOT_STORED>} spids: [1294] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 5>} ) ) ) } right: {<noreply>} ) ) (command.Simple words: [ {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$result') <Id.Lit_Other '\\'> <r> ) } ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$recv'))} ) ] ) ] ) ] spids: [1227 1228 1328 -1] ) (case_arm pat_list: [{<replace>}] action: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<read_data>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 4>} ) ) ) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) terminator: <Id.Op_Semi _> ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe] children: [ (C {<cache_has>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) ) } ) (C {<cache_set>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) ) } { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 2>}) ) ) } { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 3>}) ) ) } {(DQ ($ Id.VSub_DollarName '$d'))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:result) op: assign_op.Equal rhs: {<STORED>} spids: [1391] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:result) op: assign_op.Equal rhs: {<NOT_STORED>} spids: [1396] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 5>} ) ) ) } right: {<noreply>} ) ) (command.Simple words: [ {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$result') <Id.Lit_Other '\\'> <r> ) } ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$recv'))} ) ] ) ] ) ] spids: [1331 1332 1430 -1] ) (case_arm pat_list: [{<append>}] action: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<read_data>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 4>} ) ) ) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) terminator: <Id.Op_Semi _> ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe] children: [ (C {<cache_has>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) ) } ) (C {<cache_update>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) ) } { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {<base64_cat>} { (DQ (braced_var_sub token: <Id.VSub_Name data> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { < Id.Lit_Digits 1 > } ) ) ) } ) ) ) ) } {(DQ ($ Id.VSub_DollarName '$d'))} ) ] ) ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:result) op: assign_op.Equal rhs: {<STORED>} spids: [1500] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:result) op: assign_op.Equal rhs: {<NOT_STORED>} spids: [1505] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 5>} ) ) ) } right: {<noreply>} ) ) (command.Simple words: [ {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$result') <Id.Lit_Other '\\'> <r> ) } ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$recv'))} ) ] ) ] ) ] spids: [1433 1434 1539 -1] ) (case_arm pat_list: [{<prepend>}] action: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<read_data>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 4>} ) ) ) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) terminator: <Id.Op_Semi _> ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe] children: [ (C {<cache_has>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) ) } ) (C {<cache_update>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) ) } { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {<base64_cat>} {(DQ ($ Id.VSub_DollarName '$d'))} { (DQ (braced_var_sub token: <Id.VSub_Name data> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { < Id.Lit_Digits 1 > } ) ) ) } ) ) ) ) } ) ] ) ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:result) op: assign_op.Equal rhs: {<STORED>} spids: [1609] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:result) op: assign_op.Equal rhs: {<NOT_STORED>} spids: [1614] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 5>} ) ) ) } right: {<noreply>} ) ) (command.Simple words: [ {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$result') <Id.Lit_Other '\\'> <r> ) } ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$recv'))} ) ] ) ] ) ] spids: [1542 1543 1648 -1] ) (case_arm pat_list: [{<cas>}] action: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<read_data>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 4>} ) ) ) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) terminator: <Id.Op_Semi _> ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (C {<cache_has>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 1>} ) ) ) } ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:result) op: assign_op.Equal rhs: {<NOT_FOUND>} spids: [1686] ) ] ) ] spids: [1670 1684] ) ] else_action: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_eq left: { (braced_var_sub token: <Id.VSub_Name casUnique> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { < Id.Lit_Digits 1 > } ) ) ) } ) ) ) } right: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 5>} ) ) ) } ) ) (C {<cache_set>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 1>} ) ) ) } { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 2>} ) ) ) } { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 3>} ) ) ) } {(DQ ($ Id.VSub_DollarName '$d'))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:result) op: assign_op.Equal rhs: {<STORED>} spids: [1749] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:result) op: assign_op.Equal rhs: {<EXISTS>} spids: [1754] ) ] ) ] ) terminator: <Id.Op_Semi _> ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 6>} ) ) ) } right: {<noreply>} ) ) (command.Simple words: [ {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$result') <Id.Lit_Other '\\'> <r> ) } ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$recv'))} ) ] ) ] ) ] spids: [1651 1652 1791 -1] ) (case_arm pat_list: [{<get>}] action: [ (command.Subshell command_list: (command.CommandList children: [ (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (sh_lhs_expr.Name name:i) right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: (arith_expr.VarRef token: <Id.Lit_ArithVarLike i> ) right: (arith_expr.ArithWord w: { (braced_var_sub token: <Id.VSub_Name cmd> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id: Id.Lit_At ) ) } ) ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: (sh_lhs_expr.Name name:i) ) body: (command.DoGroup children: [ (command.Sentence child: (C {<cache_get>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {($ Id.VSub_DollarName '$i')} ) ) ) } ) terminator: <Id.Op_Semi _> ) ] ) ) (C {<echo>} {<-e>} {(SQ <'END\\r'>)}) ] ) redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$recv'))} ) ] ) ] spids: [1794 1795 1852 -1] ) (case_arm pat_list: [{<gets>}] action: [ (command.Subshell command_list: (command.CommandList children: [ (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (sh_lhs_expr.Name name:i) right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: (arith_expr.VarRef token: <Id.Lit_ArithVarLike i> ) right: (arith_expr.ArithWord w: { (braced_var_sub token: <Id.VSub_Name cmd> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id: Id.Lit_At ) ) } ) ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: (sh_lhs_expr.Name name:i) ) body: (command.DoGroup children: [ (command.Sentence child: (C {<cache_get>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {($ Id.VSub_DollarName '$i')} ) ) ) } {<1>} ) terminator: <Id.Op_Semi _> ) ] ) ) (C {<echo>} {<-e>} {(SQ <'END\\r'>)}) ] ) redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$recv'))} ) ] ) ] spids: [1855 1856 1915 -1] ) (case_arm pat_list: [{<delete>}] action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe] children: [ (C {<cache_has>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) ) } ) (C {<cache_delete>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:result) op: assign_op.Equal rhs: {<DELETED>} spids: [1944] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:result) op: assign_op.Equal rhs: {<NOT_FOUND>} spids: [1949] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 2>} ) ) ) } right: {<noreply>} ) ) (command.Simple words: [ {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$result') <Id.Lit_Other '\\'> <r> ) } ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$recv'))} ) ] ) ] ) ] spids: [1918 1919 1983 -1] ) (case_arm pat_list: [{<incr>}] action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe] children: [ (C {<cache_has>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:result) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.ArithWord w: { (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {<echo>} {<-n>} { (DQ (braced_var_sub token: <Id.VSub_Name data > bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { (braced_var_sub token: < Id.VSub_Name cmd > bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { < Id.Lit_Digits 1 > } ) ) ) } ) ) ) ) } ) (C {<base64>} {<-d>}) ] negated: F ) ] ) ) } ) right: (arith_expr.ArithWord w: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 2>} ) ) suffix_op: (suffix_op.Unary op_id: Id.VTest_Hyphen arg_word: {<0>} ) ) } ) ) ) } spids: [2000] ) ] ) (C {<cache_update>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) ) } { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {<echo>} {<-n>} {($ Id.VSub_DollarName '$result')} ) (C {<base64>}) ] negated: F ) ] ) ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:result) op: assign_op.Equal rhs: {<NOT_FOUND>} spids: [2069] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 3>} ) ) ) } right: {<noreply>} ) ) (command.Simple words: [ {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$result') <Id.Lit_Other '\\'> <r> ) } ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$recv'))} ) ] ) ] ) ] spids: [1986 1987 2103 -1] ) (case_arm pat_list: [{<decr>}] action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe] children: [ (C {<cache_has>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:result) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: (arith_expr.ArithWord w: { (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {<echo>} {<-n>} { (DQ (braced_var_sub token: <Id.VSub_Name data > bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { (braced_var_sub token: < Id.VSub_Name cmd > bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { < Id.Lit_Digits 1 > } ) ) ) } ) ) ) ) } ) (C {<base64>} {<-d>}) ] negated: F ) ] ) ) } ) right: (arith_expr.ArithWord w: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 2>} ) ) suffix_op: (suffix_op.Unary op_id: Id.VTest_Hyphen arg_word: {<0>} ) ) } ) ) ) } spids: [2120] ) ] ) (C {<cache_update>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) ) } { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {<echo>} {<-n>} {($ Id.VSub_DollarName '$result')} ) (C {<base64>}) ] negated: F ) ] ) ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:result) op: assign_op.Equal rhs: {<NOT_FOUND>} spids: [2189] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 3>} ) ) ) } right: {<noreply>} ) ) (command.Simple words: [ {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$result') <Id.Lit_Other '\\'> <r> ) } ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$recv'))} ) ] ) ] ) ] spids: [2106 2107 2223 -1] ) (case_arm pat_list: [{<touch>}] action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe] children: [ (C {<cache_has>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) ) } ) (C {<cache_set>} { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) ) } { (DQ (braced_var_sub token: <Id.VSub_Name flags> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 1>} ) ) ) } ) ) ) ) } { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 2>}) ) ) } { (DQ (braced_var_sub token: <Id.VSub_Name data> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 1>} ) ) ) } ) ) ) ) } { (braced_var_sub token: <Id.VSub_Name casUnique> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 1>} ) ) ) } ) ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:result) op: assign_op.Equal rhs: {<TOUCHED>} spids: [2300] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:result) op: assign_op.Equal rhs: {<NOT_FOUND>} spids: [2305] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {<Id.Lit_Digits 3>} ) ) ) } right: {<noreply>} ) ) (command.Simple words: [ {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$result') <Id.Lit_Other '\\'> <r> ) } ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$recv'))} ) ] ) ] ) ] spids: [2226 2227 2339 -1] ) (case_arm pat_list: [{<flush_all>}] action: [ (command.ForEach iter_name: k iter_words: [ { (DQ (braced_var_sub token: <Id.VSub_Name exptime> prefix_op: (Id.VSub_Bang) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: exptime index: (arith_expr.ArithWord w: {($ Id.VSub_DollarName '$k')} ) ) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.VarRef token: <Id.Lit_ArithVarLike time> ) right: (arith_expr.ArithWord w: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { < Id.Lit_Digits 1 > } ) ) suffix_op: (suffix_op.Unary op_id: Id.VTest_Hyphen arg_word: {<0>} ) ) } ) ) ) } spids: [2364] ) ] ) terminator: <Id.Op_Semi _> ) ] ) ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (braced_var_sub token: <Id.VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id: Id.Node_UnaryMinus child: (arith_expr.ArithWord w: {<Id.Lit_Digits 1>} ) ) ) ) } right: {<noreply>} ) ) (command.Simple words: [{<echo>} {<-e>} {(DQ <OK> <Id.Lit_Other '\\'> <r>)}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$recv'))} ) ] ) ] ) ] spids: [2342 2343 2420 -1] ) (case_arm pat_list: [{<version>}] action: [ (command.Sentence child: (command.Simple words: [ {<echo>} {<-e>} { (DQ <'VERSION '> ($ Id.VSub_DollarName '$VERSION') <Id.Lit_Other '\\'> <r> ) } ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$recv'))} ) ] ) terminator: <Id.Op_Amp _> ) ] spids: [2423 2424 2442 -1] ) ] ) terminator: <Id.Op_Semi _> ) ] ) ) ] negated: F ) terminator: <Id.Op_Amp _> ) (C {<socat>} { (DQ (braced_var_sub token: <Id.VSub_Name protocol> suffix_op: (suffix_op.Unary op_id:Id.VTest_Hyphen arg_word:{<tcp>}) ) <'-listen:'> (braced_var_sub token: <Id.VSub_Name port> suffix_op: (suffix_op.Unary op_id:Id.VTest_Hyphen arg_word:{<25252>}) ) <',reuseaddr,fork'> ) } {<system> <Id.Lit_Other ':'> (DQ ($ Id.VSub_Number '$0'))} ) ] ) ] )