(cherry picked from commit 115c30ea40b209e64c300d928f5a97e03203aac1)
(cherry picked from commit 5bdf0fc0fff9fb1cdf6dfcef47de427a00ad281c)
(cherry picked from commit d92404f351cca80174d44a843dfdd97e57360752)