(cherry picked from commit b92a65a23f8d586d30336c79596ee8a73e6c2dad)
(cherry picked from commit d77b4e486d)
(cherry picked from commit cd94894a0dc06227fd76eb684706f50fcfea6de3)
(cherry picked from commit b82f351c90)
(cherry picked from commit f3ff341d23)
(cherry picked from commit db55136898)