(cherry picked from commit 867381b8b51fa21fa2b8f071f508f3d39cc9c1f0) (cherry picked from commit f763489364416bb6866adc4f4a96012dd2ca1bd0) (cherry picked from commit 067a9ddeb8feff1f724856f0054930c55219f76b)