from typing import List


def normalize_and_dedupe_emails(emails: List[str]) -> List[str]:
    """Normalize emails by trimming/lowercasing and dedupe while preserving order."""
    seen = set()
    result = []

    for email in emails:
        normalized = email.strip().lower()
        if not normalized or normalized in seen:
            continue
        seen.add(normalized)
        result.append(normalized)

    return result


if __name__ == "__main__":
    sample1 = ["  Alice@example.com ", "bob@EXAMPLE.com", "", "alice@EXAMPLE.com"]
    sample2 = ["  ", "John@Mail.com", "john@mail.com", " jane@mail.com "]

    print(normalize_and_dedupe_emails(sample1))
    print(normalize_and_dedupe_emails(sample2))
