https://www.cnblogs.com/haimishasha/p/5609261.html
The translation is detailed enough, take it slow!