          total_rows = int(total_faces / self.row_length) + 1
          for idx in range(total_rows):
              face_idx = idx * self.row_length
              row_faces = self.faces[face_idx:face_idx + self.row_length]
              if not row_faces:
                  break
 
</s> remove             logger.debug("No face to delete")
 </s> add             logger.debug("No face to delete: (frame: '%s', idx %s)", frame, idx) </s> remove             dst_folder = os.path.join(output_folder, idx)
 </s> add             dst_folder = os.path.join(output_folder, str(idx)) </s> remove         for frame in items_output:
            idx = frame[frame.rfind("_") + 1:frame.rfind(".")]
 </s> add         for frame, idx in items_output: </s> remove         processor = self.alignments.yield_original_index_reverse
        for idx in processor(alignments, number_alignments):
 </s> add         for idx in self.alignments.yield_original_index_reverse(alignments, number_alignments):
            logger.trace("Building row %s", idx)
          total_rows = int(total_faces / self.row_length) + 1
          for idx in range(total_rows):
            logger.trace("Building row %s", idx)
              face_idx = idx * self.row_length
              row_faces = self.faces[face_idx:face_idx + self.row_length]
              if not row_faces:
                  break
keep add keep keep keep keep
 Add Face Hashes to Alignments (#550)

* Convert main scripts to use face hashes

* Alignment tool: Use hashes, add logging, add face rename function

* More logging. Update Manual tool to work with hashing 
tools/lib_alignments/jobs_manual.py