Repo OpenAI Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals Pals P

Singkatnya

  • Sebuah repositori Hugging Face berbahaya yang menyamar sebagai model Filter Privasi OpenAI mencapai posisi #1 trending di platform tersebut.
  • Malware tersebut tercatat sekitar 244.000 unduhan dan 667 suka dalam waktu kurang dari 18 jam sebelum dihapus.
  • Repositori tersebut mengirimkan infostealer enam tahap yang mengumpulkan password browser, token Discord, kunci dompet crypto, dan kredensial SSH dari mesin Windows—kemudian secara diam-diam mengirim semuanya ke server yang dikendalikan penyerang.

OpenAI merilis Privacy Filter pada akhir April—sebuah model kecil dengan bobot terbuka yang dibangun untuk mendeteksi dan secara otomatis menyunting informasi pribadi yang dapat diidentifikasi dari teks. Model ini tersedia di Hugging Face dengan lisensi Apache 2.0 dan dengan cepat menarik perhatian pengembang. Seseorang menyadarinya. Dalam beberapa hari, sebuah akun palsu bernama “Open-OSS” mempublikasikan repositori yang hampir identik bernama privacy-filter. Kartu model tersebut disalin kata demi kata dari OpenAI. Satu-satunya perbedaan di file “readme”: instruksi untuk mengkloning repo dan menjalankan file bernama start.bat di Windows, atau loader.py di Linux dan Mac. Dalam 18 jam, repo palsu tersebut mencapai posisi #1 di halaman trending Hugging Face—mengumpulkan sekitar 244.000 unduhan dan 667 suka. HiddenLayer, perusahaan keamanan AI yang menandai kampanye ini, menemukan bahwa 657 dari 667 suka berasal dari akun yang cocok dengan pola penamaan bot otomatis yang dapat diprediksi.

Jumlah unduhan tersebut hampir pasti dibesar-besarkan dengan cara yang sama. Bukti sosial buatan untuk membuat umpan terlihat nyata. Bagaimana malware tersebut benar-benar bekerja Malware tersebut pada dasarnya bekerja seperti pil beracun yang dibungkus lapisan permen yang sangat meyakinkan. Skrip loader.py dibuka dengan output pelatihan model palsu—bilah kemajuan, dataset sintetis, nama kelas dummy—dirancang agar terlihat seperti loader AI nyata sedang berjalan. Di balik layar, ia diam-diam menonaktifkan pemeriksaan keamanan, menarik perintah yang dienkode dari situs paste JSON publik (trik pintar: tidak perlu memperbarui repositori saat payload berubah), dan mengirim perintah tersebut ke PowerShell yang berjalan sepenuhnya tersembunyi di latar belakang. Pengguna Windows tidak melihat apa-apa. 

Perintah itu mengunduh skrip kedua dari domain yang meniru API analitik blockchain. Skrip tersebut mengunduh malware sebenarnya—infostealer buatan khusus yang ditulis dalam Rust—menambahkannya ke daftar pengecualian Windows Defender, lalu meluncurkannya dengan hak istimewa tingkat SYSTEM melalui tugas terjadwal yang langsung menghapus dirinya setelah dijalankan. Seluruh rantai berjalan dan membersihkan dirinya sendiri, hampir tidak meninggalkan jejak. Payload terakhir sangat lengkap. Ia mengambil semua yang disimpan di Chrome dan Firefox—password tersimpan, cookie sesi, riwayat browser, kunci enkripsi, semuanya. Ia menargetkan akun Discord, frase seed dompet cryptocurrency, kunci SSH, kredensial FTP, dan mengambil tangkapan layar dari semua monitor. Kemudian mengemas semuanya sebagai bundle JSON terkompresi dan mengirimkannya ke server yang dikendalikan penyerang. Tidak perlu kami memberitahu apa yang bisa dilakukan hacker dengan semua informasi itu nanti. Malware ini juga memeriksa apakah dijalankan di mesin virtual atau sandbox keamanan, dan diam-diam keluar jika mendeteksi salah satunya. Dirancang untuk berjalan sekali di target nyata, mencuri semuanya, dan menghilang. Mengapa ini lebih besar dari sekadar satu repo Ini bukan insiden terisolasi. Ini bagian dari pola. HiddenLayer mengidentifikasi enam repositori tambahan di bawah akun Hugging Face terpisah bernama “anthfu,” diunggah pada akhir April, menggunakan loader berbahaya yang sama persis yang mengarah ke server perintah yang sama. Repositori tersebut menyamar sebagai model seperti Qwen3, DeepSeek, dan Bonsai untuk menarik pengembang AI. Infrastruktur itu sendiri—sebuah domain bernama api.eth-fastscan.org—juga diamati menghosting sampel malware terpisah yang mengirim sinyal ke server perintah. HiddenLayer percaya bahwa hubungan antara kedua kampanye ini “mungkin terkait” dan memperingatkan bahwa infrastruktur yang sama saja tidak membuktikan satu operator tunggal. Ini adalah contoh serangan rantai pasokan terhadap komunitas pengembang AI. Penyerang tidak membobol OpenAI atau Hugging Face. Mereka hanya mempublikasikan tampilan yang meyakinkan, memanipulasi algoritma trending dengan bot, dan menunggu pengembang melakukan sisanya. Playbook serupa juga menimpa perpustakaan JavaScript Lottie Player pada 2024, yang menyebabkan satu pengguna kehilangan 10 Bitcoin (senilai lebih dari $700.000 saat itu). Bagaimana jika Anda mengunduhnya? Jika Anda mengkloning Open-OSS/privacy-filter di mesin Windows dan menjalankan file apa pun dari situ, Anda harus menganggap perangkat tersebut sudah sepenuhnya terkompromi. Jangan masuk ke akun apa pun dari mesin itu sebelum melakukan wipe.

Setelah itu, ubah semua kredensial yang disimpan di browser Anda—password, cookie sesi, token OAuth. Pindahkan dana crypto apa pun ke dompet baru yang dibuat di perangkat bersih secepatnya dan anggap frase seed telah dicuri. Karena juga mengakses informasi Discord Anda, dan layanan tersebut sangat otomatis, Anda harus membatalkan sesi Discord dan mengatur ulang password tersebut. Kunci SSH atau kredensial FTP di mesin itu harus dianggap hangus. Repositori tersebut sekarang sudah dihapus. Huggingface belum mengungkapkan langkah-langkah penyaringan tambahan apa pun yang berencana mereka terapkan untuk repositori trending. Hingga saat ini, tujuh repositori berbahaya yang dikonfirmasi dari kampanye ini telah diidentifikasi. Berapa banyak lagi yang ada—atau pernah ada sebelum terdeteksi—masih belum diketahui.

BTC0,33%
Lihat Asli
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
  • Hadiah
  • Komentar
  • Posting ulang
  • Bagikan
Komentar
Tambahkan komentar
Tambahkan komentar
Tidak ada komentar
  • Sematkan