          pt_y1 = max([pnt[1] for pnt in rotated])
          width = pt_x1 - pt_x
          height = pt_y1 - pt_y
  
          face.x = int(pt_x)
          face.y = int(pt_y)
          face.w = int(width)
          face.h = int(height)
          return face
  
      def _rotate_image_by_angle(self, image, angle):
          """ Rotate an image by a given angle.
              From: https://stackoverflow.com/questions/22041699 """
 
</s> remove         face.x = pnt_x
        face.w = width
        face.y = pnt_y
        face.h = height
        face.landmarks_xy = self._extractor.get_landmarks(frame_index, face_index, aligner)
 </s> add         face.left = pnt_x
        face.width = width
        face.top = pnt_y
        face.height = height
        face._landmarks_xy = self._extractor.get_landmarks(frame_index, face_index, aligner) </s> remove         face = DetectedFace(x=0, w=width, y=0, h=height)
 </s> add         face = DetectedFace(left=0, width=width, top=0, height=height) </s> remove         face.landmarks_xy = ((face.landmarks_xy - center) * scale) + center
 </s> add         face._landmarks_xy = ((face.landmarks_xy - center) * scale) + center </s> remove     def load_aligned(self, image, size=256, dtype=None, centering="head", force=False):
 </s> add     def load_aligned(self,
                     image: Optional[np.ndarray],
                     size: int = 256,
                     dtype: Optional[str] = None,
                     centering: "CenteringType" = "head",
                     coverage_ratio: float = 1.0,
                     force: bool = False,
                     is_aligned: bool = False,
                     is_legacy: bool = False) -> None: </s> remove             y_center = (face.top + face.bottom) / 2.0 - face.h * 0.12
            scale = (face.w + face.h) * self.reference_scale
 </s> add             y_center = (face.top + face.bottom) / 2.0 - face.height * 0.12
            scale = (face.width + face.height) * self.reference_scale
        face.left = int(pt_x)
        face.top = int(pt_y)
        face.width = int(width)
        face.height = int(height)
          pt_y1 = max([pnt[1] for pnt in rotated])
          width = pt_x1 - pt_x
          height = pt_y1 - pt_y
  
        face.left = int(pt_x)
        face.top = int(pt_y)
        face.width = int(width)
        face.height = int(height)
        face.left = int(pt_x)
        face.top = int(pt_y)
        face.width = int(width)
        face.height = int(height)
        face.left = int(pt_x)
        face.top = int(pt_y)
        face.width = int(width)
        face.height = int(height)
        face.left = int(pt_x)
        face.top = int(pt_y)
        face.width = int(width)
        face.height = int(height)
          return face
  
      def _rotate_image_by_angle(self, image, angle):
          """ Rotate an image by a given angle.
              From: https://stackoverflow.com/questions/22041699 """
keep keep keep keep replace replace replace replace keep keep keep keep keep
 lib.align updates:
  - alignments.py
    - Add typed dicts for imported alignments
    - Explicitly check for presence of thumb value in alignments dict
    - linting
  - detected_face.py
    - Typing
    - Linting
    - Legacy support for pre-aligned face
    - Update dependencies to new property names 
plugins/extract/detect/_base.py