Merge branch 'develop'
update some type mismatch
Merge branch 'master' into develop
seperate hash_code into different file