(cherry picked from commit 35aa381710151210a732d5a2416bf04526d372eb)
(cherry picked from commit 91d9b5c2e6500936e7b21ff8bc5f75f458916423) (cherry picked from commit 8a50270d24df15e5ea0597b738be64b9693ca043)
(cherry picked from commit 8a1687245f104851c2a279b418d1c583377ae618)