(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:tid)
          op: Equal
          rhs: {(DQ ('sshd_config match'))}
          spids: [7]
        )
      ]
      spids: [7]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:pidfile)
          op: Equal
          rhs: {($ VSub_Name '$OBJ') (/remote_pid)}
          spids: [13]
        )
      ]
      spids: [13]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:fwdport) op:Equal rhs:{(3301)} spids:[17])]
      spids: [17]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:fwd)
          op: Equal
          rhs: {(DQ ('-L ') ($ VSub_Name '$fwdport') (':127.0.0.1:') ($ VSub_Name '$PORT'))}
          spids: [20]
        )
      ]
      spids: [20]
    )
    (SimpleCommand
      words: [{(echo)} {(DQ ('ExitOnForwardFailure=yes'))}]
      redirects: [
        (Redir
          op_id: Redir_DGreat
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/ssh_config)}
          spids: [35]
        )
      ]
    )
    (SimpleCommand
      words: [{(echo)} {(DQ ('ExitOnForwardFailure=yes'))}]
      redirects: [
        (Redir
          op_id: Redir_DGreat
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/ssh_proxy)}
          spids: [46]
        )
      ]
    )
    (FuncDef
      name: start_client
      body: 
        (BraceGroup
          children: [
            (C {(rm)} {(-f)} {($ VSub_Name '$pidfile')})
            (Sentence
              child: 
                (SimpleCommand
                  words: [
                    {(${ VSub_Name SSH)}
                    {(-q)}
                    {(-) ($ VSub_Name '$p')}
                    {($ VSub_Name '$fwd')}
                    {(DQ ($ VSub_At '$@'))}
                    {(somehost)}
                    {(exec)}
                    {(sh)}
                    {(-c)}
                    {(EscapedLiteralPart token:<Lit_EscapedChar "\\'">) 
                      (DQ ('echo ') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) 
                        (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (' > ') ($ VSub_Name '$pidfile') ('; exec sleep 100')
                      ) (EscapedLiteralPart token:<Lit_EscapedChar "\\'">)
                    }
                  ]
                  redirects: [
                    (Redir
                      op_id: Redir_DGreat
                      fd: -1
                      arg_word: {($ VSub_Name '$TEST_REGRESS_LOGFILE')}
                      spids: [104]
                    )
                    (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[107])
                  ]
                )
              terminator: <Op_Amp '&'>
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:client_pid)
                  op: Equal
                  rhs: {($ VSub_Bang '$!')}
                  spids: [113]
                )
              ]
              spids: [113]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:n) op:Equal rhs:{(0)} spids:[121])]
              spids: [121]
            )
            (While
              cond: [
                (Sentence
                  child: (C {(test)} {(KW_Bang '!')} {(-f)} {($ VSub_Name '$pidfile')})
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (C {(sleep)} {(1)})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:n)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(expr)} {($ VSub_Name '$n')} {(Lit_Other '+')} {(1)})
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [146 154]
                              )
                            }
                          spids: [145]
                        )
                      ]
                      spids: [145]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: (C {(test)} {($ VSub_Name '$n')} {(-gt)} {(60)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(kill)} {($ VSub_Name '$client_pid')})
                            (C {(fatal)} {(DQ ('timeout waiting for background ssh'))})
                          ]
                          spids: [-1 168]
                        )
                      ]
                      spids: [-1 183]
                    )
                  ]
                  spids: [137 186]
                )
            )
          ]
          spids: [56]
        )
      spids: [52 55]
    )
    (FuncDef
      name: stop_client
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:pid)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(cat)} {($ VSub_Name '$pidfile')})])
                        left_token: <Left_Backtick '`'>
                        spids: [200 204]
                      )
                    }
                  spids: [199]
                )
              ]
              spids: [199]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Name '$pid'))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(kill)} {($ VSub_Name '$pid')})]
                  spids: [-1 222]
                )
              ]
              spids: [-1 230]
            )
            (C {(wait)})
          ]
          spids: [196]
        )
      spids: [192 195]
    )
    (C {(cp)} {($ VSub_Name '$OBJ') (/sshd_proxy)} {($ VSub_Name '$OBJ') (/sshd_proxy_bak)})
    (SimpleCommand
      words: [{(echo)} {(DQ ('PermitOpen 127.0.0.1:1'))}]
      redirects: [
        (Redir
          op_id: Redir_DGreat
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/sshd_config)}
          spids: [252]
        )
      ]
    )
    (SimpleCommand
      words: [{(echo)} {(DQ ('Match Address 127.0.0.1'))}]
      redirects: [
        (Redir
          op_id: Redir_DGreat
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/sshd_config)}
          spids: [262]
        )
      ]
    )
    (SimpleCommand
      words: [{(echo)} {(DQ ('PermitOpen 127.0.0.1:') ($ VSub_Name '$PORT'))}]
      redirects: [
        (Redir
          op_id: Redir_DGreat
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/sshd_config)}
          spids: [273]
        )
      ]
    )
    (SimpleCommand
      words: [{(grep)} {(-v)} {(AuthorizedKeysFile)} {($ VSub_Name '$OBJ') (/sshd_proxy_bak)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/sshd_proxy)}
          spids: [287]
        )
      ]
    )
    (SimpleCommand
      words: [{(echo)} {(DQ ('AuthorizedKeysFile /dev/null'))}]
      redirects: [
        (Redir
          op_id: Redir_DGreat
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/sshd_proxy)}
          spids: [298]
        )
      ]
    )
    (SimpleCommand
      words: [{(echo)} {(DQ ('PermitOpen 127.0.0.1:1'))}]
      redirects: [
        (Redir
          op_id: Redir_DGreat
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/sshd_proxy)}
          spids: [308]
        )
      ]
    )
    (SimpleCommand
      words: [{(echo)} {(DQ ('Match user ') ($ VSub_Name '$USER'))}]
      redirects: [
        (Redir
          op_id: Redir_DGreat
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/sshd_proxy)}
          spids: [319]
        )
      ]
    )
    (SimpleCommand
      words: [
        {(echo)}
        {(DQ ('AuthorizedKeysFile /dev/null ') ($ VSub_Name '$OBJ') ('/authorized_keys_%u'))}
      ]
      redirects: [
        (Redir
          op_id: Redir_DGreat
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/sshd_proxy)}
          spids: [331]
        )
      ]
    )
    (SimpleCommand
      words: [{(echo)} {(DQ ('Match Address 127.0.0.1'))}]
      redirects: [
        (Redir
          op_id: Redir_DGreat
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/sshd_proxy)}
          spids: [341]
        )
      ]
    )
    (SimpleCommand
      words: [{(echo)} {(DQ ('PermitOpen 127.0.0.1:') ($ VSub_Name '$PORT'))}]
      redirects: [
        (Redir
          op_id: Redir_DGreat
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/sshd_proxy)}
          spids: [352]
        )
      ]
    )
    (C {(start_sshd)})
    (ForEach
      iter_name: p
      iter_words: [{(${ VSub_Name SSH_PROTOCOLS)}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (C {(trace)} {(DQ ('match permitopen localhost proto ') ($ VSub_Name '$p'))})
            (C {(start_client)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)})
            (AndOr
              children: [
                (C {(${ VSub_Name SSH)} {(-q)} {(-) ($ VSub_Name '$p')} {(-p)} {($ VSub_Name '$fwdport')} 
                  {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(somehost)} {(true)}
                )
                (C {(fail)} {(DQ ('match permitopen permit proto ') ($ VSub_Name '$p'))})
              ]
              op_id: Op_DPipe
            )
            (C {(stop_client)})
          ]
          spids: [378 433]
        )
      spids: [372 376]
    )
    (ForEach
      iter_name: p
      iter_words: [{(${ VSub_Name SSH_PROTOCOLS)}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (C {(trace)} {(DQ ('match permitopen proxy proto ') ($ VSub_Name '$p'))})
            (C {(start_client)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_proxy)})
            (AndOr
              children: [
                (C {(${ VSub_Name SSH)} {(-q)} {(-) ($ VSub_Name '$p')} {(-p)} {($ VSub_Name '$fwdport')} 
                  {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(somehost)} {(true)}
                )
                (C {(fail)} {(DQ ('match permitopen deny proto ') ($ VSub_Name '$p'))})
              ]
              op_id: Op_DAmp
            )
            (C {(stop_client)})
          ]
          spids: [450 505]
        )
      spids: [444 448]
    )
    (C {(cp)} {(/dev/null)} {($ VSub_Name '$OBJ') (/authorized_keys_) ($ VSub_Name '$USER')})
    (ForEach
      iter_name: t
      iter_words: [{(${ VSub_Name SSH_KEYTYPES)}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (SimpleCommand
              words: [{(printf)} {(SQ <'permitopen="127.0.0.1:'>) ($ VSub_Name '$PORT') (SQ <'" '>)}]
              redirects: [
                (Redir
                  op_id: Redir_DGreat
                  fd: -1
                  arg_word: {($ VSub_Name '$OBJ') (/authorized_keys_) ($ VSub_Name '$USER')}
                  spids: [543]
                )
              ]
            )
            (SimpleCommand
              words: [{(cat)} {($ VSub_Name '$OBJ') (/) ($ VSub_Name '$t') (.pub)}]
              redirects: [
                (Redir
                  op_id: Redir_DGreat
                  fd: -1
                  arg_word: {($ VSub_Name '$OBJ') (/authorized_keys_) ($ VSub_Name '$USER')}
                  spids: [557]
                )
              ]
            )
          ]
          spids: [530 563]
        )
      spids: [524 528]
    )
    (ForEach
      iter_name: p
      iter_words: [{(${ VSub_Name SSH_PROTOCOLS)}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (C {(trace)} {(DQ ('match permitopen proxy w/key opts proto ') ($ VSub_Name '$p'))})
            (C {(start_client)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_proxy)})
            (AndOr
              children: [
                (C {(${ VSub_Name SSH)} {(-q)} {(-) ($ VSub_Name '$p')} {(-p)} {($ VSub_Name '$fwdport')} 
                  {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(somehost)} {(true)}
                )
                (C {(fail)} {(DQ ('match permitopen deny w/key opt proto ') ($ VSub_Name '$p'))})
              ]
              op_id: Op_DAmp
            )
            (C {(stop_client)})
          ]
          spids: [576 631]
        )
      spids: [570 574]
    )
    (ForEach
      iter_name: p
      iter_words: [{(${ VSub_Name SSH_PROTOCOLS)}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (C {(trace)} {(DQ ('match permitopen localhost proto ') ($ VSub_Name '$p'))})
            (C {(start_client)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)})
            (AndOr
              children: [
                (C {(${ VSub_Name SSH)} {(-q)} {(-) ($ VSub_Name '$p')} {(-p)} {($ VSub_Name '$fwdport')} 
                  {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(somehost)} {(true)}
                )
                (C {(fail)} {(DQ ('match permitopen permit proto ') ($ VSub_Name '$p'))})
              ]
              op_id: Op_DPipe
            )
            (C {(stop_client)})
          ]
          spids: [651 706]
        )
      spids: [645 649]
    )
    (C {(cp)} {($ VSub_Name '$OBJ') (/sshd_proxy_bak)} {($ VSub_Name '$OBJ') (/sshd_proxy)})
    (SimpleCommand
      words: [
        {(echo)}
        {(DQ ('PermitOpen 127.0.0.1:1 127.0.0.1:') ($ VSub_Name '$PORT') (' 127.0.0.2:2'))}
      ]
      redirects: [
        (Redir
          op_id: Redir_DGreat
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/sshd_proxy)}
          spids: [725]
        )
      ]
    )
    (SimpleCommand
      words: [{(echo)} {(DQ ('Match User ') ($ VSub_Name '$USER'))}]
      redirects: [
        (Redir
          op_id: Redir_DGreat
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/sshd_proxy)}
          spids: [736]
        )
      ]
    )
    (SimpleCommand
      words: [{(echo)} {(DQ ('PermitOpen 127.0.0.1:1 127.0.0.1:2'))}]
      redirects: [
        (Redir
          op_id: Redir_DGreat
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/sshd_proxy)}
          spids: [746]
        )
      ]
    )
    (ForEach
      iter_name: p
      iter_words: [{(${ VSub_Name SSH_PROTOCOLS)}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (C {(trace)} {(DQ ('match permitopen proxy w/key opts proto ') ($ VSub_Name '$p'))})
            (C {(start_client)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_proxy)})
            (AndOr
              children: [
                (C {(${ VSub_Name SSH)} {(-q)} {(-) ($ VSub_Name '$p')} {(-p)} {($ VSub_Name '$fwdport')} 
                  {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(somehost)} {(true)}
                )
                (C {(fail)} {(DQ ('match override permitopen proto ') ($ VSub_Name '$p'))})
              ]
              op_id: Op_DAmp
            )
            (C {(stop_client)})
          ]
          spids: [765 820]
        )
      spids: [759 763]
    )
    (C {(cp)} {($ VSub_Name '$OBJ') (/sshd_proxy_bak)} {($ VSub_Name '$OBJ') (/sshd_proxy)})
    (SimpleCommand
      words: [
        {(echo)}
        {(DQ ('PermitOpen 127.0.0.1:1 127.0.0.1:') ($ VSub_Name '$PORT') (' 127.0.0.2:2'))}
      ]
      redirects: [
        (Redir
          op_id: Redir_DGreat
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/sshd_proxy)}
          spids: [839]
        )
      ]
    )
    (SimpleCommand
      words: [{(echo)} {(DQ ('Match User NoSuchUser'))}]
      redirects: [
        (Redir
          op_id: Redir_DGreat
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/sshd_proxy)}
          spids: [849]
        )
      ]
    )
    (SimpleCommand
      words: [{(echo)} {(DQ ('PermitOpen 127.0.0.1:1 127.0.0.1:2'))}]
      redirects: [
        (Redir
          op_id: Redir_DGreat
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/sshd_proxy)}
          spids: [859]
        )
      ]
    )
    (ForEach
      iter_name: p
      iter_words: [{(${ VSub_Name SSH_PROTOCOLS)}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (C {(trace)} {(DQ ('nomatch permitopen proxy w/key opts proto ') ($ VSub_Name '$p'))})
            (C {(start_client)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_proxy)})
            (AndOr
              children: [
                (C {(${ VSub_Name SSH)} {(-q)} {(-) ($ VSub_Name '$p')} {(-p)} {($ VSub_Name '$fwdport')} 
                  {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(somehost)} {(true)}
                )
                (C {(fail)} {(DQ ('nomatch override permitopen proto ') ($ VSub_Name '$p'))})
              ]
              op_id: Op_DPipe
            )
            (C {(stop_client)})
          ]
          spids: [881 936]
        )
      spids: [875 879]
    )
  ]
)