(cherry picked from commit 8ddf75b4fb1d7b54a795c1dc70bf480a5f049603) (cherry picked from commit dbf96ce6987d4361b4135124b81cb40b269366c5) (cherry picked from commit 3291d145fade85cef2830b9d28fe1c90e154ba9c)