الشرح من جريفباتش ---------------------------------------------------------------------------- Explanation from @griffpatch