(cherry picked from commit 51af8d367de94689770f57c64bea3b244d7755f6) (cherry picked from commit d21ef79707a0f32939d9a5af4fed2d9f5fe6f2ec) (cherry picked from commit db325c053c6ef3ee8731d7273d1d92da7e5deee7)
(cherry picked from commit 51af8d367de94689770f57c64bea3b244d7755f6) (cherry picked from commit d21ef79707a0f32939d9a5af4fed2d9f5fe6f2ec) (cherry picked from commit db325c053c6ef3ee8731d7273d1d92da7e5deee7)