(cherry picked from commit 54de063890)
54de063890
(cherry picked from commits 8f05e26198 and cce7797a75)
8f05e26198
cce7797a75