Implement a function to identify the key safety hazards in a mine site operation video description or checklist.
The function receives one text string and returns the recognized hazard categories in order of their first appearance, with duplicates removed. Matching is case-insensitive and should recognize the aliases defined in the solution contract.
Input: A non-empty string containing a video description or checklist.
Output: A list of canonical hazard names. Return an empty list when no supported hazard is mentioned.
Examples:
"A haul truck is reversing near an unprotected edge." returns ["Vehicle collision", "Fall hazard"]."Dust observed. Dust requires respirator use." returns ["Dust exposure"].Constraints: Text length is at most 10^5 characters. Hazard mentions may use upper-, lower-, or mixed-case text.
def identify_hazards(text):