From a37872ee31cbf6b1de382cf3ad65dec2f8155ad7 Mon Sep 17 00:00:00 2001
From: marco <marco@5a81b35b-ba03-0410-adc8-b2c5c5119f08>
Date: Mon, 28 Jun 2010 07:04:23 +0000
Subject: [PATCH] protect PDBReader against immature end of line

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2465 5a81b35b-ba03-0410-adc8-b2c5c5119f08
---
 modules/io/src/mol/pdb_reader.cc          |  39 ++-
 modules/io/src/mol/pdb_reader.hh          |   1 +
 modules/io/tests/testfiles/pdb/faulty.pdb | 398 +++++++++-------------
 3 files changed, 194 insertions(+), 244 deletions(-)

diff --git a/modules/io/src/mol/pdb_reader.cc b/modules/io/src/mol/pdb_reader.cc
index 21db6adf0..2beabcb98 100644
--- a/modules/io/src/mol/pdb_reader.cc
+++ b/modules/io/src/mol/pdb_reader.cc
@@ -279,17 +279,30 @@ void PDBReader::ClearState()
   strand_list_.clear();
 }
 
+bool PDBReader::EnsureLineLength(const StringRef& line, size_t size)
+{
+  if (line.length()<size) {
+    if (PDB::Flags() & PDB::SKIP_FAULTY_RECORDS) {
+      return false;
+    }    
+    throw IOException(str(format("premature end of line %d") %line_num_));
+  }  
+  return true;
+}
+
 bool PDBReader::ParseAtomIdent(const StringRef& line, int line_num, 
                                char& chain_name,  StringRef& res_name,
                                mol::ResNum& resnum, StringRef& atom_name, 
                                char& alt_loc, const StringRef& record_type)
 {
+  if (!this->EnsureLineLength(line, 27)) {
+    return false;
+  }
   chain_name=line[21];
   if (restrict_chains_.size()>0 &&
     restrict_chains_.find(chain_name)==String::npos) {
     return false;
   }
-
   std::pair<bool, int> a_num=line.substr(6, 5).ltrim().to_int();
   if (!a_num.first) {
     if (PDB::Flags() & PDB::SKIP_FAULTY_RECORDS) {
@@ -325,6 +338,9 @@ bool PDBReader::ParseAtomIdent(const StringRef& line, int line_num,
 void PDBReader::ParseAnisou(const StringRef& line, int line_num, 
                             mol::EntityHandle& ent)
 {
+  if (!this->EnsureLineLength(line, 77)) {
+    return;
+  }  
   char chain_name=0;
   char alt_loc=0;
   StringRef res_name, atom_name;
@@ -372,13 +388,15 @@ void PDBReader::ParseAnisou(const StringRef& line, int line_num,
   aprop.anisou/=10000;
   aprop.has_anisou=true;
   atom.SetAtomProps(aprop);
-  return;  
 }
 
 void PDBReader::ParseAndAddAtom(const StringRef& line, int line_num,
                                 mol::EntityHandle& ent, 
                                 const StringRef& record_type)
 {
+  if (!this->EnsureLineLength(line, 59)) {
+    return;
+  }
   mol::XCSEditor editor=ent.RequestXCSEditor(mol::BUFFERED_EDIT);
   char alt_loc=0;
   char chain_name=0;
@@ -558,9 +576,15 @@ void PDBReader::ParseAndAddAtom(const StringRef& line, int line_num,
 
 void PDBReader::ParseHelixEntry(const StringRef& line)
 {
+  if (!this->EnsureLineLength(line, 38)) {
+    return;
+  }
   std::pair<bool, int>  start_num=line.substr(21, 4).ltrim().to_int();
   std::pair<bool, int>  end_num=line.substr(33, 4).ltrim().to_int();
   if (!start_num.first || !end_num.first) {
+    if (PDB::Flags() & PDB::SKIP_FAULTY_RECORDS) {
+      return;
+    }    
     throw IOException(str(format("invalid helix entry on line %d") % line_num_));
   }
   LOGN_DEBUG("making helix entry: " << start_num.second << ", " 
@@ -577,12 +601,19 @@ void PDBReader::ParseHelixEntry(const StringRef& line)
 
 void PDBReader::ParseStrandEntry(const StringRef& line)
 {
+  if (!this->EnsureLineLength(line, 38)) {
+    return;
+  }  
   std::pair<bool, int>  start_num=line.substr(22, 4).ltrim().to_int();
   std::pair<bool, int>  end_num=line.substr(33, 4).ltrim().to_int();
   if (!start_num.first || !end_num.first) {
-    throw IOException(str(format("invalid strand entry on line %d") % line_num_));
+    if (PDB::Flags() & PDB::SKIP_FAULTY_RECORDS) {
+      return;
+    }
+    throw IOException(str(format("invalid strand entry on line %d")%line_num_));
   }
-  LOGN_DEBUG("making strand entry: " << start_num.second << ", " << line[26] << " " << end_num.second << " " << line[37]);
+  LOGN_DEBUG("making strand entry: " << start_num.second << ", " << line[26] 
+             << " " << end_num.second << " " << line[37]);
   HSEntry hse = {to_res_num(start_num.second, line[26]),
                  to_res_num(end_num.second, line[37]),
                  line.substr(21,1).str()};
diff --git a/modules/io/src/mol/pdb_reader.hh b/modules/io/src/mol/pdb_reader.hh
index 41f7ffb21..c2a624105 100644
--- a/modules/io/src/mol/pdb_reader.hh
+++ b/modules/io/src/mol/pdb_reader.hh
@@ -65,6 +65,7 @@ private:
   void ParseHelixEntry(const StringRef& line);
   void ParseStrandEntry(const StringRef& line);
   void Init(const boost::filesystem::path& loc);
+  bool EnsureLineLength(const StringRef& line, size_t size);
   mol::ChainHandle curr_chain_;
   mol::ResidueHandle curr_residue_;
   int chain_count_;
diff --git a/modules/io/tests/testfiles/pdb/faulty.pdb b/modules/io/tests/testfiles/pdb/faulty.pdb
index 508c1adeb..5264ddde2 100644
--- a/modules/io/tests/testfiles/pdb/faulty.pdb
+++ b/modules/io/tests/testfiles/pdb/faulty.pdb
@@ -1,243 +1,161 @@
-ATOM      1  N   GLU A   7       6.454 -37.820  25.751  1.00 96.94           N  
-ATOM      2  CA  GLU A   7       5.179 -37.470  26.444  1.00 97.55           C  
-ATOM      3  C   GLU A   7       4.114 -38.549  26.169  1.00 95.35           C  
-ATOM      4  O   GLU A   7       2.935 -38.208  26.124  1.00 96.69           O  
-ATOM      5  CB  GLU A   7       4.634 -36.100  25.944  1.00  0.67           C  
-ATOM      6  CG  GLU A   7       5.358 -34.778  26.389  1.00  0.49           C  
-ATOM      7  CD  GLU A   7       6.885 -34.761  26.247  1.00  0.50           C  
-ATOM      8  OE1 GLU A   7       7.463 -34.965  25.124  1.00  0.37           O  
-ATOM      9  OE2 GLU A   7       7.497 -34.485  27.300  1.00  0.26           O  
-ATOM     10  N   THR A   8       4.492 -39.827  26.028  1.00 90.05           N  
-ATOM     11  CA  THR A   8       3.484 -40.849  25.744  1.00 83.73           C  
-ATOM     12  C   THR A   8       3.735 -42.304  26.157  1.00 78.84           C  
-ATOM     13  O   THR A   8       4.703 -42.665  26.840  1.00 78.68           O  
-ATOM     14  CB  THR A   8       3.187 -40.947  24.253  1.00 84.56           C  
-ATOM     15  OG1 THR A   8       4.298 -41.584  23.614  1.00 85.69           O  
-ATOM     16  CG2 THR A   8       2.970 -39.552  23.612  1.00 85.14           C  
-ATOM     17  N   LEU A   9       2.811 -43.122  25.656  1.00 72.64           N  
-ATOM     18  CA  LEU A   9       2.703 -44.568  25.834  1.00 66.76           C  
-ATOM     19  C   LEU A   9       3.546 -45.368  24.842  1.00 64.33           C  
-ATOM     20  O   LEU A   9       3.905 -46.508  25.121  1.00 62.09           O  
-ATOM     21  CB  LEU A   9       1.223 -44.963  25.657  1.00 65.80           C  
-ATOM     22  CG  LEU A   9       0.610 -46.358  25.903  1.00 64.44           C  
-ATOM     23  CD1 LEU A   9      -0.843 -46.338  25.384  1.00 63.51           C  
-ATOM     24  CD2 LEU A   9       1.381 -47.478  25.214  1.00 61.51           C  
-ATOM     25  N   GLY A  10       3.816 -44.793  23.670  1.00 62.12           N  
-ATOM     26  CA  GLY A  10       4.629 -45.474  22.675  1.00 58.01           C  
-ATOM     27  C   GLY A  10       6.062 -45.502  23.162  1.00 56.36           C  
-ATOM     28  O   GLY A  10       6.898 -46.270  22.681  1.00 54.65           O  
-ATOM     29  N   GLU A  11       6.340 -44.653  24.141  1.00 56.33           N  
-ATOM     30  CA  GLU A  11       7.663 -44.579  24.722  1.00 55.95           C  
-ATOM     31  C   GLU A  11       7.938 -45.806  25.579  1.00 55.88           C  
-ATOM     32  O   GLU A  11       9.094 -46.232  25.716  1.00 55.08           O  
-ATOM     33  CB  GLU A  11       7.770 -43.327  25.553  1.00 57.29           C  
-ATOM     34  CG  GLU A  11       7.705 -42.070  24.740  1.00 57.86           C  
-ATOM     35  CD  GLU A  11       7.798 -40.866  25.626  1.00 58.56           C  
-ATOM     36  OE1 GLU A  11       6.764 -40.526  26.238  1.00 60.29           O  
-ATOM     37  OE2 GLU A  11       8.901 -40.287  25.734  1.00 56.40           O  
-ATOM     38  N   LYS A  12       6.873 -46.363  26.157  1.00 55.11           N  
-ATOM     39  CA  LYS A  12       6.983 -47.575  26.970  1.00 55.08           C  
-ATOM     40  C   LYS A  12       7.337 -48.712  26.015  1.00 54.46           C  
-ATOM     41  O   LYS A  12       8.163 -49.577  26.329  1.00 53.65           O  
-ATOM     42  CB  LYS A  12       5.654 -47.906  27.665  1.00 56.31           C  
-ATOM     43  CG  LYS A  12       5.691 -49.231  28.437  1.00 59.45           C  
-ATOM     44  CD  LYS A  12       4.301 -49.761  28.797  1.00 62.66           C  
-ATOM     45  CE  LYS A  12       3.671 -49.059  29.994  1.00 64.01           C  
-ATOM     46  NZ  LYS A  12       2.255 -49.524  30.212  1.00 65.47           N  
-ATOM     47  N   TRP A  13       6.698 -48.684  24.846  1.00 52.82           N  
-ATOM     48  CA  TRP A  13       6.905 -49.681  23.809  1.00 51.62           C  
-ATOM     49  C   TRP A  13       8.347 -49.671  23.315  1.00 52.83           C  
-ATOM     50  O   TRP A  13       8.982 -50.733  23.187  1.00 52.24           O  
-ATOM     51  CB  TRP A  13       5.948 -49.419  22.634  1.00 50.03           C  
-ATOM     52  CG  TRP A  13       6.316 -50.151  21.361  1.00 46.71           C  
-ATOM     53  CD1 TRP A  13       6.068 -51.463  21.066  1.00 45.25           C  
-ATOM     54  CD2 TRP A  13       7.087 -49.632  20.267  1.00 43.46           C  
-ATOM     55  NE1 TRP A  13       6.643 -51.792  19.862  1.00 45.10           N  
-ATOM     56  CE2 TRP A  13       7.276 -50.688  19.351  1.00 42.98           C  
-ATOM     57  CE3 TRP A  13       7.640 -48.379  19.977  1.00 43.38           C  
-ATOM     58  CZ2 TRP A  13       7.999 -50.531  18.167  1.00 41.50           C  
-ATOM     59  CZ3 TRP A  13       8.361 -48.222  18.798  1.00 42.28           C  
-ATOM     60  CH2 TRP A  13       8.533 -49.295  17.908  1.00 42.13           C  
-ATOM     61  N   LYS A  14       8.863 -48.472  23.046  1.00 53.47           N  
-ATOM     62  CA  LYS A  14      10.228 -48.320  22.537  1.00 54.31           C  
-ATOM     63  C   LYS A  14      11.280 -48.867  23.508  1.00 54.74           C  
-ATOM     64  O   LYS A  14      12.215 -49.573  23.109  1.00 52.47           O  
-ATOM     65  CB  LYS A  14      10.514 -46.846  22.230  1.00 54.16           C  
-ATOM     66  CG  LYS A  14      11.794 -46.600  21.439  1.00 54.10           C  
-ATOM     67  CD  LYS A  14      11.672 -47.066  19.990  1.00 54.49           C  
-ATOM     68  CE  LYS A  14      12.933 -46.721  19.198  1.00 54.62           C  
-ATOM     69  NZ  LYS A  14      12.876 -47.120  17.759  1.00 55.24           N  
-ATOM     70  N   SER A  15      11.120 -48.549  24.786  1.00 55.42           N  
-ATOM     71  CA  SER A  15      12.061 -49.020  25.787  1.00 57.62           C  
-ATOM     72  C   SER A  15      12.004 -50.536  25.852  1.00 57.91           C  
-ATOM     73  O   SER A  15      13.036 -51.214  25.885  1.00 57.62           O  
-ATOM     74  CB  SER A  15      11.713 -48.432  27.146  1.00 57.98           C  
-ATOM     75  OG  SER A  15      11.610 -47.022  27.052  1.00 61.01           O  
-ATOM     76  N   ARG A  16      10.788 -51.070  25.858  1.00 58.35           N  
-ATOM     77  CA  ARG A  16      10.640 -52.507  25.916  1.00 58.65           C  
-ATOM     78  C   ARG A  16      11.337 -53.084  24.705  1.00 57.82           C  
-ATOM     79  O   ARG A  16      12.108 -54.026  24.828  1.00 58.53           O  
-ATOM     80  CB  ARG A  16       9.165 -52.908  25.945  1.00 60.32           C  
-ATOM     81  CG  ARG A  16       9.003 -54.364  26.300  1.00 64.12           C  
-ATOM     82  CD  ARG A  16       7.604 -54.750  26.757  1.00 67.72           C  
-ATOM     83  NE  ARG A  16       7.552 -56.206  26.885  1.00 70.70           N  
-ATOM     84  CZ  ARG A  16       6.446 -56.920  27.077  1.00 71.55           C  
-ATOM     85  NH1 ARG A  16       5.261 -56.322  27.179  1.00 70.60           N  
-ATOM     86  NH2 ARG A  16       6.529 -58.246  27.124  1.00 70.94           N  
-ATOM     87  N   LEU A  17      11.078 -52.500  23.539  1.00 56.70           N  
-ATOM     88  CA  LEU A  17      11.705 -52.948  22.304  1.00 56.56           C  
-ATOM     89  C   LEU A  17      13.237 -52.963  22.448  1.00 57.65           C  
-ATOM     90  O   LEU A  17      13.878 -53.992  22.234  1.00 56.98           O  
-ATOM     91  CB  LEU A  17      11.301 -52.021  21.151  1.00 54.98           C  
-ATOM     92  CG  LEU A  17      12.001 -52.268  19.810  1.00 53.12           C  
-ATOM     93  CD1 LEU A  17      11.640 -53.642  19.288  1.00 51.84           C  
-ATOM     94  CD2 LEU A  17      11.606 -51.196  18.811  1.00 51.17           C  
-ATOM     95  N   ASN A  18      13.814 -51.815  22.812  1.00 58.96           N  
-ATOM     96  CA  ASN A  18      15.266 -51.685  22.996  1.00 60.57           C  
-ATOM     97  C   ASN A  18      15.822 -52.727  23.969  1.00 61.50           C  
-ATOM     98  O   ASN A  18      16.930 -53.251  23.778  1.00 62.00           O  
-ATOM     99  CB  ASN A  18      15.627 -50.299  23.548  1.00 61.49           C  
-ATOM    100  CG  ASN A  18      15.347 -49.175  22.568  1.00 61.94           C  
-ATOM    101  OD1 ASN A  18      15.587 -49.304  21.371  1.00 62.22           O  
-ATOM    102  ND2 ASN A  18      14.858 -48.051  23.083  1.00 62.68           N  
-ATOM    103  N   ALA A  19      15.048 -53.006  25.017  1.00 61.30           N  
-ATOM    104  CA  ALA A  19      15.428 -53.959  26.055  1.00 61.43           C  
-ATOM    105  C   ALA A  19      15.415 -55.420  25.617  1.00 61.91           C  
-ATOM    106  O   ALA A  19      15.821 -56.295  26.377  1.00 62.49           O  
-ATOM    107  CB  ALA A  19      14.519 -53.791  27.258  1.00 60.59           C  
-ATOM    108  N   LEU A  20      14.948 -55.683  24.403  1.00 62.10           N  
-ATOM    109  CA  LEU A  20      14.877 -57.048  23.896  1.00 62.72           C  
-ATOM    110  C   LEU A  20      16.237 -57.645  23.558  1.00 63.39           C  
-ATOM    111  O   LEU A  20      17.183 -56.925  23.236  1.00 64.48           O  
-ATOM    112  CB  LEU A  20      13.975 -57.101  22.653  1.00 61.55           C  
-ATOM    113  CG  LEU A  20      12.526 -57.588  22.792  1.00 60.24           C  
-ATOM    114  CD1 LEU A  20      11.852 -56.953  23.996  1.00 59.76           C  
-ATOM    115  CD2 LEU A  20      11.770 -57.260  21.508  1.00 59.38           C  
-ATOM    116  N   GLY A  21      16.327 -58.970  23.650  1.00 63.68           N  
-ATOM    117  CA  GLY A  21      17.558 -59.652  23.303  1.00 64.00           C  
-ATOM    118  C   GLY A  21      17.614 -59.701  21.786  1.00 65.03           C  
-ATOM    119  O   GLY A  21      16.583 -59.620  21.121  1.00 64.86           O  
-ATOM    120  N   LYS A  22      18.806 -59.831  21.222  1.00 66.35           N  
-ATOM    121  CA  LYS A  22      18.933 -59.869  19.773  1.00 67.91           C  
-ATOM    122  C   LYS A  22      18.007 -60.890  19.136  1.00 67.14           C  
-ATOM    123  O   LYS A  22      17.352 -60.612  18.135  1.00 67.57           O  
-ATOM    124  CB  LYS A  22      20.379 -60.153  19.366  1.00 69.87           C  
-ATOM    125  CG  LYS A  22      21.318 -58.980  19.634  1.00 74.37           C  
-ATOM    126  CD  LYS A  22      22.506 -58.961  18.666  1.00 77.88           C  
-ATOM    127  CE  LYS A  22      23.170 -57.586  18.646  1.00 79.43           C  
-ATOM    128  NZ  LYS A  22      22.177 -56.491  18.334  1.00 80.61           N  
-ATOM    129  N   SER A  23      17.953 -62.073  19.729  1.00 66.45           N  
-ATOM    130  CA  SER A  23      17.119 -63.149  19.219  1.00 65.20           C  
-ATOM    131  C   SER A  23      15.637 -62.814  19.419  1.00 63.72           C  
-ATOM    132  O   SER A  23      14.827 -62.947  18.500  1.00 62.52           O  
-ATOM    133  CB  SER A  23      17.485 -64.448  19.939  1.00 66.47           C  
-ATOM    134  OG  SER A  23      16.898 -65.574  19.310  1.00 69.50           O  
-ATOM    135  N   GLU A  24      15.291 -62.379  20.625  1.00 62.62           N  
-ATOM    136  CA  GLU A  24      13.915 -62.014  20.945  1.00 62.53           C  
-ATOM    137  C   GLU A  24      13.435 -60.990  19.916  1.00 60.48           C  
-ATOM    138  O   GLU A  24      12.334 -61.105  19.367  1.00 59.43           O  
-ATOM    139  CB  GLU A  24      13.844 -61.393  22.348  1.00 65.58           C  
-ATOM    140  CG  GLU A  24      14.189 -62.341  23.504  1.00 71.04           C  
-ATOM    141  CD  GLU A  24      14.427 -61.606  24.832  1.00 73.84           C  
-ATOM    142  OE1 GLU A  24      15.569 -61.142  25.075  1.00 74.67           O  
-ATOM    143  OE2 GLU A  24      13.468 -61.482  25.630  1.00 74.26           O  
-ATOM    144  N   PHE A  25      14.288 -60.000  19.660  1.00 57.78           N  
-ATOM    145  CA  PHE A  25      14.017 -58.921  18.720  1.00 54.47           C  
-ATOM    146  C   PHE A  25      13.617 -59.356  17.320  1.00 54.56           C  
-ATOM    147  O   PHE A  25      12.612 -58.892  16.787  1.00 55.48           O  
-ATOM    148  CB  PHE A  25      15.231 -58.013  18.600  1.00 52.50           C  
-ATOM    149  CG  PHE A  25      15.030 -56.880  17.653  1.00 48.01           C  
-ATOM    150  CD1 PHE A  25      14.326 -55.757  18.045  1.00 44.37           C  
-ATOM    151  CD2 PHE A  25      15.487 -56.965  16.344  1.00 47.94           C  
-ATOM    152  CE1 PHE A  25      14.072 -54.728  17.155  1.00 45.25           C  
-ATOM    153  CE2 PHE A  25      15.236 -55.936  15.440  1.00 48.17           C  
-ATOM    154  CZ  PHE A  25      14.523 -54.812  15.851  1.00 45.51           C  
-ATOM    155  N   GLN A  26      14.406 -60.221  16.702  1.00 54.81           N  
-ATOM    156  CA  GLN A  26      14.069 -60.675  15.354  1.00 56.62           C  
-ATOM    157  C   GLN A  26      12.709 -61.369  15.299  1.00 55.95           C  
-ATOM    158  O   GLN A  26      11.930 -61.142  14.369  1.00 56.22           O  
-ATOM    159  CB  GLN A  26      15.149 -61.618  14.812  1.00 56.74           C  
-ATOM    160  CG  GLN A  26      16.439 -60.911  14.453  1.00 59.77           C  
-ATOM    161  CD  GLN A  26      16.238 -59.840  13.397  1.00 61.16           C  
-ATOM    162  OE1 GLN A  26      16.867 -58.771  13.451  1.00 62.66           O  
-ATOM    163  NE2 GLN A  26      15.367 -60.117  12.425  1.00 60.14           N  
-ATOM    164  N   ILE A  27      12.443 -62.218  16.291  1.00 54.93           N  
-ATOM    165  CA  ILE A  27      11.186 -62.952  16.381  1.00 53.33           C  
-ATOM    166  C   ILE A  27      10.042 -61.957  16.462  1.00 52.36           C  
-ATOM    167  O   ILE A  27       9.065 -62.051  15.714  1.00 53.26           O  
-ATOM    168  CB  ILE A  27      11.146 -63.859  17.652  1.00 54.56           C  
-ATOM    169  CG1 ILE A  27      12.023 -65.096  17.439  1.00 54.91           C  
-ATOM    170  CG2 ILE A  27       9.701 -64.267  17.981  1.00 53.13           C  
-ATOM    171  CD1 ILE A  27      11.984 -66.086  18.603  1.00 54.48           C  
-ATOM    172  N   TYR A  28      10.176 -61.000  17.372  1.00 49.67           N  
-ATOM    173  CA  TYR A  28       9.151 -59.994  17.561  1.00 48.25           C  
-ATOM    174  C   TYR A  28       8.911 -59.169  16.305  1.00 48.03           C  
-ATOM    175  O   TYR A  28       7.773 -59.014  15.864  1.00 49.18           O  
-ATOM    176  CB  TYR A  28       9.528 -59.073  18.714  1.00 46.01           C  
-ATOM    177  CG  TYR A  28       8.594 -57.898  18.857  1.00 46.44           C  
-ATOM    178  CD1 TYR A  28       9.019 -56.602  18.539  1.00 47.32           C  
-ATOM    179  CD2 TYR A  28       7.280 -58.078  19.295  1.00 44.93           C  
-ATOM    180  CE1 TYR A  28       8.158 -55.513  18.654  1.00 45.43           C  
-ATOM    181  CE2 TYR A  28       6.408 -56.998  19.413  1.00 45.02           C  
-ATOM    182  CZ  TYR A  28       6.854 -55.718  19.094  1.00 46.59           C  
-ATOM    183  OH  TYR A  28       6.008 -54.640  19.245  1.00 47.02           O  
-ATOM    184  N   LYS A  29       9.989 -58.650  15.729  1.00 46.50           N  
-ATOM    185  CA  LYS A  29       9.916 -57.822  14.531  1.00 46.77           C  
-ATOM    186  C   LYS A  29       8.982 -58.352  13.431  1.00 48.08           C  
-ATOM    187  O   LYS A  29       8.412 -57.583  12.645  1.00 48.13           O  
-ATOM    188  CB  LYS A  29      11.325 -57.627  13.971  1.00 45.75           C  
-ATOM    189  CG  LYS A  29      11.386 -56.763  12.744  1.00 45.83           C  
-ATOM    190  CD  LYS A  29      12.814 -56.549  12.299  1.00 47.30           C  
-ATOM    191  CE  LYS A  29      12.846 -55.834  10.964  1.00 50.92           C  
-ATOM    192  NZ  LYS A  29      14.225 -55.467  10.550  1.00 54.78           N  
-ATOM    193  N   LYS A  30       8.811 -59.664  13.367  1.00 48.15           N  
-ATOM    194  CA  LYS A  30       7.947 -60.205  12.339  1.00 48.84           C  
-ATOM    195  C   LYS A  30       6.761 -60.996  12.881  1.00 48.11           C  
-ATOM    196  O   LYS A  30       6.147 -61.773  12.151  1.00 49.27           O  
-ATOM    197  CB  LYS A  30       8.774 -61.068  11.390  1.00 49.21           C  
-ATOM    198  CG  LYS A  30       9.923 -60.315  10.757  1.00 54.01           C  
-ATOM    199  CD  LYS A  30      10.145 -60.794   9.333  1.00 59.17           C  
-ATOM    200  CE  LYS A  30      11.184 -59.969   8.597  1.00 61.01           C  
-ATOM    201  NZ  LYS A  30      11.316 -60.461   7.188  1.00 64.26           N  
-ATOM    202  N   SER A  31       6.417 -60.793  14.147  1.00 45.08           N  
-ATOM    203  CA  SER A  31       5.304 -61.531  14.718  1.00 44.39           C  
-ATOM    204  C   SER A  31       3.942 -61.084  14.224  1.00 44.10           C  
-ATOM    205  O   SER A  31       3.526 -59.950  14.460  1.00 44.46           O  
-ATOM    206  CB  SER A  31       5.322 -61.440  16.236  1.00 43.25           C  
-ATOM    207  OG  SER A  31       6.464 -62.073  16.762  1.00 47.60           O  
-ATOM    208  N   GLY A  32       3.247 -61.992  13.548  1.00 42.16           N  
-ATOM    209  CA  GLY A  32       1.919 -61.695  13.058  1.00 41.22           C  
-ATOM    210  C   GLY A  32       1.821 -60.534  12.096  1.00 42.88           C  
-ATOM    211  O   GLY A  32       0.758 -59.930  11.969  1.00 43.49           O  
-ATOM    212  N   ILE A  33       2.906 -60.199  11.410  1.00 43.54           N  
-ATOM    213  CA  ILE A  33       2.820 -59.092  10.470  1.00 43.84           C  
-ATOM    214  C   ILE A  33       2.488 -59.658   9.099  1.00 44.87           C  
-ATOM    215  O   ILE A  33       2.280 -60.863   8.947  1.00 45.15           O  
-ATOM    216  CB  ILE A  33       4.144 -58.278  10.382  1.00 42.67           C  
-ATOM    217  CG1 ILE A  33       5.234 -59.091   9.689  1.00 40.85           C  
-ATOM    218  CG2 ILE A  33       4.600 -57.881  11.774  1.00 43.10           C  
-ATOM    219  CD1 ILE A  33       6.504 -58.313   9.461  1.00 39.17           C  
-ATOM    220  N   GLN A  34       2.428 -58.784   8.107  1.00 45.91           N  
-ATOM    221  CA  GLN A  34       2.140 -59.197   6.749  1.00 47.95           C  
-ATOM    222  C   GLN A  34       3.456 -59.060   6.014  1.00 48.80           C  
-ATOM    223  O   GLN A  34       4.146 -58.043   6.147  1.00 49.79           O  
-ATOM    224  CB  GLN A  34       1.091 -58.281   6.132  1.00 49.55           C  
-ATOM    225  CG  GLN A  34      -0.018 -59.017   5.416  1.00 54.33           C  
-ATOM    226  CD  GLN A  34      -1.197 -58.110   5.091  1.00 56.69           C  
-ATOM    227  OE1 GLN A  34      -1.835 -57.569   5.998  1.00 57.02           O  
-ATOM    228  NE2 GLN A  34      -1.491 -57.934   3.795  1.00 55.48           N  
-ATOM    229  N   GLU A  35       3.809 -60.094   5.259  1.00 48.55           N  
-ATOM    230  CA  GLU A  35       5.050 -60.118   4.491  1.00 47.79           C  
-ATOM    231  C   GLU A  35       4.782 -60.258   3.000  1.00 46.91           C  
-ATOM    232  O   GLU A  35       3.712 -60.715   2.589  1.00 47.83           O  
-ATOM    233  CB  GLU A  35       5.910 -61.293   4.932  1.00 47.12           C  
-ATOM    234  CG  GLU A  35       6.762 -61.031   6.132  1.00 51.25           C  
-ATOM    235  CD  GLU A  35       7.906 -60.086   5.827  1.00 54.45           C  
-ATOM    236  OE1 GLU A  35       8.855 -60.015   6.644  1.00 52.88           O  
-ATOM    237  OE2 GLU A  35       7.849 -59.411   4.772  1.00 56.73           O  
-ATOM    238  N   VAL A  36       5.766 -59.871   2.199  1.00 45.46           N  
-ATOM    239  CA  VAL A  36       5.687 -59.976   0.744  1.00 44.41           C  
-ATOM    240  C   VAL A  36       6.674 -61.063   0.344  1.00 43.54           C  
+S
+SH
+SHE
+SHEE
+SHEET
+SHEET 
+SHEET  
+SHEET   
+SHEET    
+SHEET    1
+SHEET    1 
+SHEET    1  
+SHEET    1   
+SHEET    1   A
+SHEET    1   A 
+SHEET    1   A 7
+SHEET    1   A 7 
+SHEET    1   A 7 A
+SHEET    1   A 7 AL
+SHEET    1   A 7 ALA
+SHEET    1   A 7 ALA 
+SHEET    1   A 7 ALA A
+SHEET    1   A 7 ALA A 
+SHEET    1   A 7 ALA A  
+SHEET    1   A 7 ALA A  5
+SHEET    1   A 7 ALA A  53
+SHEET    1   A 7 ALA A  53 
+SHEET    1   A 7 ALA A  53  
+SHEET    1   A 7 ALA A  53  A
+SHEET    1   A 7 ALA A  53  AL
+SHEET    1   A 7 ALA A  53  ALA
+SHEET    1   A 7 ALA A  53  ALA 
+SHEET    1   A 7 ALA A  53  ALA A
+SHEET    1   A 7 ALA A  53  ALA A 
+SHEET    1   A 7 ALA A  53  ALA A  
+SHEET    1   A 7 ALA A  53  ALA A  5
+SHEET    1   A 7 ALA A  53  ALA A  57
+SHEET    1   A 7 ALA A  53  ALA A  57 
+SHEET    1   A 7 ALA A  53  ALA A  57  
+SHEET    1   A 7 ALA A  53  ALA A  57  0
+SHEET    1   A 7 ALA A  53  ALA A  57  0 
+SHEET    1   A 7 ALA A  53  ALA A  57  0  
+SHEET    1   A 7 ALA A  53  ALA A  57  0   
+SHEET    1   A 7 ALA A  53  ALA A  57  0    
+SHEET    1   A 7 ALA A  53  ALA A  57  0     
+SHEET    1   A 7 ALA A  53  ALA A  57  0      
+SHEET    1   A 7 ALA A  53  ALA A  57  0       
+SHEET    1   A 7 ALA A  53  ALA A  57  0        
+SHEET    1   A 7 ALA A  53  ALA A  57  0         
+SHEET    1   A 7 ALA A  53  ALA A  57  0          
+SHEET    1   A 7 ALA A  53  ALA A  57  0           
+SHEET    1   A 7 ALA A  53  ALA A  57  0            
+SHEET    1   A 7 ALA A  53  ALA A  57  0             
+SHEET    1   A 7 ALA A  53  ALA A  57  0              
+SHEET    1   A 7 ALA A  53  ALA A  57  0               
+SHEET    1   A 7 ALA A  53  ALA A  57  0                
+SHEET    1   A 7 ALA A  53  ALA A  57  0                 
+SHEET    1   A 7 ALA A  53  ALA A  57  0                  
+SHEET    1   A 7 ALA A  53  ALA A  57  0                   
+SHEET    1   A 7 ALA A  53  ALA A  57  0                    
+SHEET    1   A 7 ALA A  53  ALA A  57  0                     
+SHEET    1   A 7 ALA A  53  ALA A  57  0                      
+SHEET    1   A 7 ALA A  53  ALA A  57  0                       
+SHEET    1   A 7 ALA A  53  ALA A  57  0                        
+SHEET    1   A 7 ALA A  53  ALA A  57  0                         
+SHEET    1   A 7 ALA A  53  ALA A  57  0                          
+SHEET    1   A 7 ALA A  53  ALA A  57  0                           
+SHEET    1   A 7 ALA A  53  ALA A  57  0                            
+SHEET    1   A 7 ALA A  53  ALA A  57  0                             
+SHEET    1   A 7 ALA A  53  ALA A  57  0                              
+SHEET    1   A 7 ALA A  53  ALA A  57  0                               
+SHEET    1   A 7 ALA A  53  ALA A  57  0                                
+SHEET    1   A 7 ALA A  53  ALA A  57  0                                 
+SHEET    1   A 7 ALA A  53  ALA A  57  0                                  
+SHEET    1   A 7 ALA A  53  ALA A  57  0                                   
+SHEET    1   A 7 ALA A  53  ALA A  57  0                                    
+SHEET    1   A 7 ALA A  53  ALA A  57  0                                     
+SHEET    1   A 7 ALA A  53  ALA A  57  0                                      
+SHEET    1   A 7 ALA A  53  ALA A  57  0                                       
+H
+HE
+HEL
+HELI
+HELIX
+HELIX 
+HELIX  
+HELIX   
+HELIX    
+HELIX    1
+HELIX    1 
+HELIX    1  
+HELIX    1   
+HELIX    1   1
+HELIX    1   1 
+HELIX    1   1 A
+HELIX    1   1 AR
+HELIX    1   1 ARG
+HELIX    1   1 ARG 
+HELIX    1   1 ARG A
+HELIX    1   1 ARG A 
+HELIX    1   1 ARG A  
+HELIX    1   1 ARG A   
+HELIX    1   1 ARG A   1
+HELIX    1   1 ARG A   15
+HELIX    1   1 ARG A   15 
+HELIX    1   1 ARG A   15  
+HELIX    1   1 ARG A   15  G
+HELIX    1   1 ARG A   15  GL
+HELIX    1   1 ARG A   15  GLU
+HELIX    1   1 ARG A   15  GLU 
+HELIX    1   1 ARG A   15  GLU A
+HELIX    1   1 ARG A   15  GLU A 
+HELIX    1   1 ARG A   15  GLU A  
+HELIX    1   1 ARG A   15  GLU A   
+HELIX    1   1 ARG A   15  GLU A   2
+HELIX    1   1 ARG A   15  GLU A   28
+HELIX    1   1 ARG A   15  GLU A   28 
+HELIX    1   1 ARG A   15  GLU A   28  
+HELIX    1   1 ARG A   15  GLU A   28  1
+HELIX    1   1 ARG A   15  GLU A   28  1 
+HELIX    1   1 ARG A   15  GLU A   28  1  
+HELIX    1   1 ARG A   15  GLU A   28  1   
+HELIX    1   1 ARG A   15  GLU A   28  1    
+HELIX    1   1 ARG A   15  GLU A   28  1     
+HELIX    1   1 ARG A   15  GLU A   28  1      
+HELIX    1   1 ARG A   15  GLU A   28  1       
+HELIX    1   1 ARG A   15  GLU A   28  1        
+HELIX    1   1 ARG A   15  GLU A   28  1         
+HELIX    1   1 ARG A   15  GLU A   28  1          
+HELIX    1   1 ARG A   15  GLU A   28  1           
+HELIX    1   1 ARG A   15  GLU A   28  1            
+HELIX    1   1 ARG A   15  GLU A   28  1             
+HELIX    1   1 ARG A   15  GLU A   28  1              
+HELIX    1   1 ARG A   15  GLU A   28  1               
+HELIX    1   1 ARG A   15  GLU A   28  1                
+HELIX    1   1 ARG A   15  GLU A   28  1                 
+HELIX    1   1 ARG A   15  GLU A   28  1                  
+HELIX    1   1 ARG A   15  GLU A   28  1                   
+HELIX    1   1 ARG A   15  GLU A   28  1                    
+HELIX    1   1 ARG A   15  GLU A   28  1                     
+HELIX    1   1 ARG A   15  GLU A   28  1                      
+HELIX    1   1 ARG A   15  GLU A   28  1                       
+HELIX    1   1 ARG A   15  GLU A   28  1                        
+HELIX    1   1 ARG A   15  GLU A   28  1                         
+HELIX    1   1 ARG A   15  GLU A   28  1                          
+HELIX    1   1 ARG A   15  GLU A   28  1                           
+HELIX    1   1 ARG A   15  GLU A   28  1                            
+HELIX    1   1 ARG A   15  GLU A   28  1                             
+HELIX    1   1 ARG A   15  GLU A   28  1                              
+HELIX    1   1 ARG A   15  GLU A   28  1                               
+HELIX    1   1 ARG A   15  GLU A   28  1                                
+HELIX    1   1 ARG A   15  GLU A   28  1                                 
+HELIX    1   1 ARG A   15  GLU A   28  1                                  
+HELIX    1   1 ARG A   15  GLU A   28  1                                  1
+HELIX    1   1 ARG A   15  GLU A   28  1                                  14
+HELIX    1   1 ARG A   15  GLU A   28  1                                  14 
+HELIX    1   1 ARG A   15  GLU A   28  1                                  14  
+HELIX    1   1 ARG A   15  GLU A   28  1                                  14
 ATOM    241  O   VAL A  36       7.822 -61.026   0.770  1.00 44.33           O  
 ATOM    242  CB  VAL A  36       6.125 -58.659   0.048  1.00 45.53           C 
 ATOM    243  CG1 VAL A  36       6.258 -58.879  -1.447  1.00 44.30           C
-- 
GitLab