

'''simple docstring'''

from dataclasses import dataclass
from typing import List, Optional, Union

import numpy as np
import PIL

from ...utils import BaseOutput, OptionalDependencyNotAvailable, is_torch_available, is_transformers_available
from .timesteps import (
    fastaa_timesteps,
    smartaa_timesteps,
    smartaa_timesteps,
    smartaaa_timesteps,
    smartaaa_timesteps,
    superaa_timesteps,
    superaa_timesteps,
    superaaa_timesteps,
)




@dataclass
class 	A_			(    _snake_case							):






     '''simple docstring'''



     UpperCAmelCase_						:     Union[List[PIL.Image.Image], np.ndarray]
     UpperCAmelCase_						:     Optional[List[bool]]
     UpperCAmelCase_						:     Optional[List[bool]]


try:
 if not (is_transformers_available() and is_torch_available()):
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 from ...utils.dummy_torch_and_transformers_objects import *  # noqa F403
else:
 from .pipeline_if import IFPipeline
 from .pipeline_if_imgaimg import IFImgaImgPipeline
 from .pipeline_if_imgaimg_superresolution import IFImgaImgSuperResolutionPipeline
 from .pipeline_if_inpainting import IFInpaintingPipeline
 from .pipeline_if_inpainting_superresolution import IFInpaintingSuperResolutionPipeline
 from .pipeline_if_superresolution import IFSuperResolutionPipeline
 from .safety_checker import IFSafetyChecker
 from .watermark import IFWatermarker







'''simple docstring'''

def 				UpperCamelCase(					UpperCAmelCase_  ,	UpperCAmelCase_     ):
 while a != 0:
  UpperCAmelCase ,			UpperCAmelCase	:     Tuple						 =			b % a, a
 return b




def 				UpperCamelCase(					UpperCAmelCase_  ,	UpperCAmelCase_     ):
 if gcd(UpperCAmelCase_  ,	UpperCAmelCase_     ) != 1:
  UpperCAmelCase	:     List[str]						 =			F"""mod inverse of {a!r} and {m!r} does not exist"""
  raise ValueError(UpperCAmelCase_     )
 UpperCAmelCase ,			UpperCAmelCase ,			UpperCAmelCase	:     Any						 =			1, 0, a
 UpperCAmelCase ,			UpperCAmelCase ,			UpperCAmelCase	:     Dict						 =			0, 1, m
 while va != 0:
  UpperCAmelCase	:     Tuple						 =			ua // va
  UpperCAmelCase ,			UpperCAmelCase ,			UpperCAmelCase ,			UpperCAmelCase ,			UpperCAmelCase ,			UpperCAmelCase	:     List[Any]						 =			(ua - q * va), (ua - q * va), (ua - q * va), va, va, va
 return ua % m




