<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def draw(self, text1=None, text2=None, copyright=True, image=IMAGE_DEFAULT, rotate=30, opacity=0.08, compress=0, flatten=False, add=False):
 """ Draw watermark PDF file. Create watermark using either a reportlabs canvas or a PIL image. :param text1: str Text line 1 :param text2: str Text line 2 :param copyright: bool Draw copyright and year to canvas :param image: str Logo image to be used as base watermark :param rotate: int Degrees to rotate canvas by :param opacity: float Watermark opacity :param compress: bool Compress watermark contents (not entire PDF) :param flatten: bool Draw watermark with multiple layers or a single flattened layer :param add: bool Add watermark to original document :return: str Watermark PDF file full path """

        im_path = os.path.join(IMAGE_DIRECTORY, image)
        if os.path.isfile(im_path):
            image = im_path

        # Add to receipt
        if self.use_receipt:
            self.receipt.add('Text1', text1)
            self.receipt.add('Text2', text2)
            self.receipt.add('Image', os.path.basename(image))
            self.receipt.add('WM Opacity', str(int(opacity * 100)) + '%')
            self.receipt.add('WM Compression', compress)
            self.receipt.add('WM Flattening', flatten)

        co = CanvasConstructor(text1, text2, copyright, image, rotate, opacity, tempdir=self.tempdir)
        objects, rotate = co.img() if flatten else co.canvas()  # Run img constructor method if flatten is True

        # Draw watermark to file
        self.watermark = WatermarkDraw(objects, rotate=rotate, compress=compress, tempdir=self.tempdir,
                                       pagesize=Info(self.document_og).size, pagescale=True).write()

        if not add:
            return self.watermark
        else:
            self.add()
            return self.cleanup()