(cherry picked from commit d4966246e68dbdcdab45ec5c5141362834d74425)
(cherry picked from commit a5529df3e1a4c08a120e8c05203a7d885b0fe8d8)
(cherry picked from commit 030187ff75c64c40017cda2fa98ef2b3c01f0bd5)