Sædvanligvis benyttes matematiske [[kompartmentmodel]]ler og [[differentialligning]]er til beskrivelse af lægemidlets vandring i organismen.
==Nogle af variablerne i farmakokinetikken==
Vidste dyu at, din mor er en luder!!luderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluderluder