(cherry picked from commit db446330c3462e143c6dab498a771f19b9495c67)
(cherry picked from commit 57044cb716d33d01d19ed92003b7fb902964673b)
(cherry picked from commit 3d4feeff6b914f033204b0ae2913b23ea0479e26)