              retval.append((max(int(start), minframe), min(int(end), maxframe)))
          logger.debug("frame ranges: %s", retval)
          return retval
  
      def _load_extractor(self):
          """ Load the CV2-DNN Face Extractor Chain.
  
          For On-The-Fly conversion we use a CPU based extractor to avoid stacking the GPU.
          Results are poor.
  
 
</s> remove         retval = list()
 </s> add         retval = [] </s> remove     def remove_image(self):
 </s> add     def remove_image(self) -> None: </s> remove     def _get_detected_faces(self, filename, image):
 </s> add     def _get_detected_faces(self, filename: str, image: np.ndarray) -> List[DetectedFace]: </s> remove         logger.trace("Removing image for filename: '%s'", self._filename)
 </s> add         logger.trace("Removing image for filename: '%s'", self._filename)  # type: ignore </s> remove     def save_thread(self):
 </s> add     def save_thread(self) -> MultiThread:
    def _load_extractor(self) -> Optional[Extractor]:
              retval.append((max(int(start), minframe), min(int(end), maxframe)))
          logger.debug("frame ranges: %s", retval)
          return retval
  
    def _load_extractor(self) -> Optional[Extractor]:
          """ Load the CV2-DNN Face Extractor Chain.
  
          For On-The-Fly conversion we use a CPU based extractor to avoid stacking the GPU.
          Results are poor.
  
keep keep keep keep replace keep keep keep keep keep
 Bugfix: convert - Gif Writer
  - Fix non-launch error on Gif Writer
  - convert plugins - linting
  - convert/fs_media/preview/queue_manager - typing
  - Change convert items from dict to Dataclass 
scripts/convert.py