['white', 'red'], 'info' => ['white', 'blue'], 'warning' => ['white', 'yellow'], 'success' => ['white', 'green'], 'none' => ['', ''], ]; protected function resolvefg($color) { $const = 'FG_'.strtoupper($color); if (!defined('static::'.$const)) { throw new \Exception('Invalid foreground color: '.$color); } return "\033[".constant('self::'.$const).'m'; } protected function resolvebg($color) { $const = 'BG_'.strtoupper($color); if (!defined('static::'.$const)) { throw new \Exception('Invalid background color: '.$color); } return "\033[".constant('self::'.$const).'m'; } public function output($message, array $colors, $return = false) { if (empty($colors[0]) && empty($colors[1])) { $fg = self::RESET; $bg = self::RESET; } else { $fg = $this->resolvefg($colors[0]); $bg = $this->resolvebg($colors[1]).self::BOLD; } $string = $fg.$bg.$message.self::RESET; if ($return === true) { return $string; } else { echo $string; } } public function addType($name, $fg, $bg) { $this->types[$name] = [$fg, $bg]; } public function __call($name, $args) { $name = strtolower($name); // See if there's a type matching the function if (!isset($this->types[$name])) { throw new \Exception('Invalid message type: '.$name); } $arguments = [$args[0], $this->types[$name]]; if (isset($args[1])) { $arguments[] = $args[1]; } return call_user_func_array([$this, 'output'], $arguments); } }__halt_compiler();----SIGNATURE:----mbGjQpzJXK5SYuQk7ldE/Mw0G7HVUNr5xkKVdZxesI5Hoc+eYAVqfAW6aFBK/Gbi4pxnUx0/zGQg/km5hoyMPtVMEFYex78slgeHlp7KvhmyEp3yQgY38lzW4qzBJ88qDzigmJsWDA1w0KXqTI/MQk7izsbDxIX8yWeXvGkevxlhMoKYKGfANsOlLvObH1WmuCaRk+LiE31Q0Zs0OlPPsUMrUEyTmGynBf4EF6gBGbhu7Es85ToZTd8kf05KnQeSvr0WiBrqzr4BPtqJMabLjPwOcwZiBr6hF19SBB/YBxZimNz6uTdhp3/eBKHRmGuKZ+bTUIm52LafcZXVAhS7ihorTBf0j9EWIXam7yF6Mf6u5ENy71xpP9eV1XWcex6cpcLeLKuXdALf05FZsRrY00VTiPJc5UvpxaWTZZRRxW0+JrMQhk1uEAqH0nUuJTDHKVZcTJFvwGW2vCHj0b127+qiX2rK/nnKzS9sm39yGuM8CRpbvUbRVCp0WlTzWr1J1okimRqyAGObVNpDLzJxIJUdfd3+GcOHE5hFqZuXTqDOlK5t4s3ilHlPRtXWP9RX/RTVHWJIXLRJmXHnrNTAiz9S+AaWzf8DNXV56BgBggMgv8lbEXRYEhKBXhpp9b35RImQ8Ya/Uma1R3URmBhIV5y9yQPqD7dkCT/RXgVsmQs=----ATTACHMENT:----MTE5NTk1NjQzMjM4NjA4MiA4MTkxNDcyMzgwNDk3MzU0IDE3MTU0MjM0MDY3MjY2MjY=