(cherry picked from commit ed5c0dde) (cherry picked from commit b3d14817) (cherry picked from commit b4329c84) (cherry picked from commit 294c3801)