

from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_tf_available,
    is_torch_available,
    is_vision_available,
)


__A			:					Dict						=			{
    'configuration_efficientformer': [
        'EFFICIENTFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP',
        'EfficientFormerConfig',
    ]
}

try:
    if not is_vision_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    __A			:					Optional[int]						=			['EfficientFormerImageProcessor']

try:
    if not is_torch_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    __A			:					Optional[int]						=			[
        'EFFICIENTFORMER_PRETRAINED_MODEL_ARCHIVE_LIST',
        'EfficientFormerForImageClassification',
        'EfficientFormerForImageClassificationWithTeacher',
        'EfficientFormerModel',
        'EfficientFormerPreTrainedModel',
    ]

try:
    if not is_tf_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    __A			:					Dict						=			[
        'TF_EFFICIENTFORMER_PRETRAINED_MODEL_ARCHIVE_LIST',
        'TFEfficientFormerForImageClassification',
        'TFEfficientFormerForImageClassificationWithTeacher',
        'TFEfficientFormerModel',
        'TFEfficientFormerPreTrainedModel',
    ]

if TYPE_CHECKING:
    from .configuration_efficientformer import EFFICIENTFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP, EfficientFormerConfig

    try:
        if not is_vision_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .image_processing_efficientformer import EfficientFormerImageProcessor

    try:
        if not is_torch_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .modeling_efficientformer import (
            EFFICIENTFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
            EfficientFormerForImageClassification,
            EfficientFormerForImageClassificationWithTeacher,
            EfficientFormerModel,
            EfficientFormerPreTrainedModel,
        )
    try:
        if not is_tf_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .modeling_tf_efficientformer import (
            TF_EFFICIENTFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
            TFEfficientFormerForImageClassification,
            TFEfficientFormerForImageClassificationWithTeacher,
            TFEfficientFormerModel,
            TFEfficientFormerPreTrainedModel,
        )

else:
    import sys

    __A			:					Optional[Any]						=			_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)

from __future__ import annotations

def a__       (			A_,	A_   ):






  '''simple docstring'''





  if b == 0:
    return (1, 0)
  ((__magic_name__)	,       (__magic_name__))								=			extended_euclid(A_,	a % b   )
  __magic_name__								=			a // b
  return (y, x - k * y)

def a__       (			A_,	A_,	A_,	A_   ):






  '''simple docstring'''





  ((__magic_name__)	,       (__magic_name__))								=			extended_euclid(A_,	A_   )
  __magic_name__								=			na * na
  __magic_name__								=			ra * x * na + ra * y * na
  return (n % m + m) % m

def a__       (			A_,	A_   ):






  '''simple docstring'''





  ((__magic_name__)	,       (__magic_name__))								=			extended_euclid(A_,	A_   )
  if b < 0:
    __magic_name__								=			(b % n + n) % n
  return b

def a__       (			A_,	A_,	A_,	A_   ):






  '''simple docstring'''





  __magic_name__	,       __magic_name__								=			invert_modulo(A_,	A_   ), invert_modulo(A_,	A_   )
  __magic_name__								=			na * na
  __magic_name__								=			ra * x * na + ra * y * na
  return (n % m + m) % m


if __name__ == "__main__":
    from doctest import testmod

    testmod(name='chinese_remainder_theorem', verbose=True)
    testmod(name='chinese_remainder_theorem2', verbose=True)
    testmod(name='invert_modulo', verbose=True)
    testmod(name='extended_euclid', verbose=True)

