(cherry picked from commit 0ccf4b0fe16a8c879a560f2a612a3185eb2df72b) (cherry picked from commit cb806988d72bde1f9837c9e0fb82a3a6c032542c) (cherry picked from commit 37d1f8c81eeee79b1ef5ce6316afbcdbc76acd8e)
(cherry picked from commit 0ccf4b0fe16a8c879a560f2a612a3185eb2df72b) (cherry picked from commit cb806988d72bde1f9837c9e0fb82a3a6c032542c) (cherry picked from commit 37d1f8c81eeee79b1ef5ce6316afbcdbc76acd8e)