(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:tid)
          op: Equal
          rhs: {(DQ ('connect to ssh.com server'))}
          spids: [7]
        )
      ]
      spids: [7]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ (X) (${ VSub_Name TEST_COMBASE))} {(Lit_Other '=')} {(DQ (X))} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(fatal)} {(SQ <'$TEST_COMBASE is not set'>)})]
          spids: [-1 36]
        )
      ]
      spids: [-1 45]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:VERSIONS)
          op: Equal
          rhs: 
            {
              (DQ ('\n') ('\t2.0.12\n') ('\t2.0.13\n') ('\t2.1.0\n') ('\t2.2.0\n') ('\t2.3.0\n') 
                ('\t2.4.0\n') ('\t3.0.0\n') ('\t3.1.0\n') ('\t3.2.0\n') ('\t3.2.2\n') ('\t3.2.3\n') ('\t3.2.5\n') ('\t3.2.9\n') 
                ('\t3.2.9.1\n') ('\t3.3.0')
              )
            }
          spids: [48]
        )
      ]
      spids: [48]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SRC)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(dirname)} {(${ VSub_Name SCRIPT)})])
                left_token: <Left_Backtick '`'>
                spids: [76 82]
              )
            }
          spids: [75]
        )
      ]
      spids: [75]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ('#*:\n') ('\t# Port and ListenAddress are not used.\n') ('\tQuietMode\t\t\tyes\n') 
                ('\tPort\t\t\t\t4343\n') ('\tListenAddress\t\t\t127.0.0.1\n') ('\tUserConfigDirectory\t\t') (${ VSub_Name OBJ) ('/%U\n') 
                ('\tCiphers\t\t\t\tAnyCipher\n') ('\tPubKeyAuthentication\t\tyes\n') ('\t#AllowedAuthentications\t\tpublickey\n') 
                ('\tAuthorizationFile\t\tauthorization\n') ('\tHostKeyFile\t\t\t') (${ VSub_Name SRC) ('/dsa_ssh2.prv\n') ('\tPublicHostKeyFile\t\t') 
                (${ VSub_Name SRC) ('/dsa_ssh2.pub\n') ('\tRandomSeedFile\t\t\t') (${ VSub_Name OBJ) ('/random_seed\n') 
                ('\tMaxConnections\t\t\t0\n') ('\tPermitRootLogin\t\t\tyes\n') ('\tVerboseMode\t\t\tno\n') ('\tCheckMail\t\t\tno\n') 
                ('\tSsh1Compatibility\t\tno\n')
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [90]
        )
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/sshd2_config)}
          spids: [94]
        )
      ]
    )
    (SimpleCommand
      words: [{(sed)} {(DQ ('s/HostKeyAlias.*/HostKeyAlias ssh2-localhost-with-alias/'))}]
      redirects: [
        (Redir
          op_id: Redir_Less
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/ssh_config)}
          spids: [146]
        )
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/ssh_config_com)}
          spids: [151]
        )
      ]
    )
    (C {(rm)} {(-f)} {(${ VSub_Name OBJ) (/dsa)} {(${ VSub_Name OBJ) (/dsa.pub)})
    (C {(${ VSub_Name SSHKEYGEN)} {(-q)} {(-N)} {(SQ )} {(-t)} {(dsa)} {(-f)} {(${ VSub_Name OBJ) (/dsa)})
    (C {(mkdir)} {(-p)} {(${ VSub_Name OBJ) (/) (${ VSub_Name USER)})
    (C {(cp)} {(/dev/null)} {(${ VSub_Name OBJ) (/) (${ VSub_Name USER) (/authorization)})
    (ForEach
      iter_name: t
      iter_words: [{(rsa)} {(dsa)}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (SimpleCommand
              words: [
                {(${ VSub_Name SSHKEYGEN)}
                {(-e)}
                {(-f)}
                {(${ VSub_Name OBJ) (/) ($ VSub_Name '$t') (.pub)}
              ]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(${ VSub_Name OBJ) (/) (${ VSub_Name USER) (/) ($ VSub_Name '$t') (.com)}
                  spids: [254]
                )
              ]
            )
            (SimpleCommand
              words: [{(echo)} {(Key)} {($ VSub_Name '$t') (.com)}]
              redirects: [
                (Redir
                  op_id: Redir_DGreat
                  fd: -1
                  arg_word: {(${ VSub_Name OBJ) (/) (${ VSub_Name USER) (/authorization)}
                  spids: [275]
                )
              ]
            )
            (SimpleCommand
              words: [{(echo)} {(IdentityFile)} {(${ VSub_Name OBJ) (/) ($ VSub_Name '$t')}]
              redirects: [
                (Redir
                  op_id: Redir_DGreat
                  fd: -1
                  arg_word: {(${ VSub_Name OBJ) (/ssh_config_com)}
                  spids: [297]
                )
              ]
            )
          ]
          spids: [236 304]
        )
      spids: [230 234]
    )
    (Subshell
      child: 
        (CommandList
          children: [
            (C {(printf)} {(SQ <'ssh2-localhost-with-alias,127.0.0.1,::1 '>)})
            (C {(${ VSub_Name SSHKEYGEN)} {(-if)} {(${ VSub_Name SRC) (/dsa_ssh2.pub)})
          ]
        )
      redirects: [
        (Redir
          op_id: Redir_DGreat
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/known_hosts)}
          spids: [333]
        )
      ]
      spids: [310 331]
    )
    (ForEach
      iter_name: v
      iter_words: [{(${ VSub_Name VERSIONS)}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:sshd2)
                  op: Equal
                  rhs: {(${ VSub_Name TEST_COMBASE) (/) (${ VSub_Name v) (/sshd2)}
                  spids: [356]
                )
              ]
              spids: [356]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-x)} {(${ VSub_Name sshd2)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(ControlFlow token:<ControlFlow_Continue continue>)]
                  spids: [-1 382]
                )
              ]
              spids: [-1 388]
            )
            (C {(trace)} {(DQ ('sshd2 ') (${ VSub_Name v))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:PROXY)
                  op: Equal
                  rhs: 
                    {
                      (DQ ('proxycommand ') (${ VSub_Name sshd2) (' -qif ') (${ VSub_Name OBJ) 
                        ('/sshd2_config 2> /dev/null')
                      )
                    }
                  spids: [401]
                )
              ]
              spids: [401]
            )
            (C {(${ VSub_Name SSH)} {(-qF)} {(${ VSub_Name OBJ) (/ssh_config_com)} {(-o)} 
              {(DQ (${ VSub_Name PROXY))} {(dummy)} {(exit)} {(0)}
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-ne)} {(0)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(fail)} {(DQ ('ssh connect to sshd2 ') (${ VSub_Name v) (' failed'))})]
                  spids: [-1 454]
                )
              ]
              spids: [-1 468]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ciphers)
                  op: Equal
                  rhs: {(DQ ('3des-cbc blowfish-cbc arcfour'))}
                  spids: [472]
                )
              ]
              spids: [472]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:macs)
                  op: Equal
                  rhs: {(DQ (hmac-md5))}
                  spids: [478]
                )
              ]
              spids: [478]
            )
            (Case
              to_match: {($ VSub_Name '$v')}
              arms: [
                (case_arm
                  pat_list: [{(2.4.) (Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:ciphers)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$ciphers') (' cast128-cbc'))}
                          spids: [496]
                        )
                      ]
                      spids: [496]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:macs)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$macs') (' hmac-sha1 hmac-sha1-96 hmac-md5-96'))}
                          spids: [503]
                        )
                      ]
                      spids: [503]
                    )
                  ]
                  spids: [491 493 510 -1]
                )
                (case_arm
                  pat_list: [{(3.) (Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:ciphers)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$ciphers') (' aes128-cbc cast128-cbc'))}
                          spids: [518]
                        )
                      ]
                      spids: [518]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:macs)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$macs') (' hmac-sha1 hmac-sha1-96 hmac-md5-96'))}
                          spids: [525]
                        )
                      ]
                      spids: [525]
                    )
                  ]
                  spids: [513 515 532 -1]
                )
              ]
              spids: [484 488 535]
            )
            (ForEach
              iter_name: m
              iter_words: [{($ VSub_Name '$macs')}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (ForEach
                      iter_name: c
                      iter_words: [{($ VSub_Name '$ciphers')}]
                      do_arg_iter: False
                      body: 
                        (DoGroup
                          children: [
                            (C {(trace)} 
                              {
                                (DQ ('sshd2 ') (${ VSub_Name v) (' cipher ') ($ VSub_Name '$c') (' mac ') 
                                  ($ VSub_Name '$m')
                                )
                              }
                            )
                            (C {(verbose)} 
                              {
                                (DQ ('test ') (${ VSub_Name tid) (': sshd2 ') (${ VSub_Name v) 
                                  (' cipher ') ($ VSub_Name '$c') (' mac ') ($ VSub_Name '$m')
                                )
                              }
                            )
                            (C {(${ VSub_Name SSH)} {(-c)} {($ VSub_Name '$c')} {(-m)} 
                              {($ VSub_Name '$m')} {(-qF)} {(${ VSub_Name OBJ) (/ssh_config_com)} {(-o)} {(DQ (${ VSub_Name PROXY))} {(dummy)} {(exit)} {(0)}
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-ne)} {(0)} 
                                          {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(fail)} 
                                      {
                                        (DQ ('ssh connect to sshd2 ') (${ VSub_Name v) (' with ') 
                                          ($ VSub_Name '$c') (/) ($ VSub_Name '$m') (' failed')
                                        )
                                      }
                                    )
                                  ]
                                  spids: [-1 645]
                                )
                              ]
                              spids: [-1 663]
                            )
                          ]
                          spids: [563 666]
                        )
                      spids: [559 561]
                    )
                  ]
                  spids: [551 669]
                )
              spids: [547 549]
            )
          ]
          spids: [353 671]
        )
      spids: [347 351]
    )
    (C {(rm)} {(-rf)} {(${ VSub_Name OBJ) (/) (${ VSub_Name USER)})
    (ForEach
      iter_name: i
      iter_words: [
        {(sshd_config_proxy)}
        {(ssh_config_proxy)}
        {(random_seed)}
        {(sshd2_config)}
        {(dsa.pub)}
        {(dsa)}
        {(ssh_config_com)}
      ]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [(C {(rm)} {(-f)} {(${ VSub_Name OBJ) (/) ($ VSub_Name '$i')})]
          spids: [709 722]
        )
      spids: [691 707]
    )
  ]
)