
'''simple docstring'''

from __future__ import annotations







def __A  (    lowerCAmelCase_ ,       lowerCAmelCase_ ,       lowerCAmelCase_       ):
     assert (
         c % greatest_common_divisor(lowerCAmelCase_ ,       lowerCAmelCase_       ) == 0
     )  # greatest_common_divisor(a,b) function implemented below
     ((_UpperCAmelCase)  ,     (_UpperCAmelCase)  ,     (_UpperCAmelCase))					:  Any         =    extended_gcd(lowerCAmelCase_ ,       lowerCAmelCase_       )  # extended_gcd(a,b) function implemented below
     _UpperCAmelCase					:  Any         =    c / d
     return (r * x, r * y)







def __A  (    lowerCAmelCase_ ,       lowerCAmelCase_ ,       lowerCAmelCase_ ,       lowerCAmelCase_ = 2       ):
     ((_UpperCAmelCase)  ,     (_UpperCAmelCase))					:  Any         =    diophantine(lowerCAmelCase_ ,       lowerCAmelCase_ ,       lowerCAmelCase_       )  # Initial value
     _UpperCAmelCase					:  List[Any]         =    greatest_common_divisor(lowerCAmelCase_ ,       lowerCAmelCase_       )
     _UpperCAmelCase					:  Optional[Any]         =    a // d
     _UpperCAmelCase					:  Any         =    b // d

     for i in range(lowerCAmelCase_       ):
          _UpperCAmelCase					:  List[Any]         =    xa + i * q
          _UpperCAmelCase					:  Any         =    ya - i * p
          print(lowerCAmelCase_ ,       lowerCAmelCase_       )







def __A  (    lowerCAmelCase_ ,       lowerCAmelCase_       ):
     if a < b:
          _UpperCAmelCase  ,     _UpperCAmelCase					:  Any         =    b, a

     while a % b != 0:
          _UpperCAmelCase  ,     _UpperCAmelCase					:  Dict         =    b, a % b

     return b







def __A  (    lowerCAmelCase_ ,       lowerCAmelCase_       ):
     assert a >= 0 and b >= 0

     if b == 0:
          _UpperCAmelCase  ,     _UpperCAmelCase  ,     _UpperCAmelCase					:  Union[str, Any]         =    a, 1, 0
     else:
          ((_UpperCAmelCase)  ,     (_UpperCAmelCase)  ,     (_UpperCAmelCase))					:  List[Any]         =    extended_gcd(lowerCAmelCase_ ,       a % b       )
          _UpperCAmelCase					:  Optional[int]         =    q
          _UpperCAmelCase					:  Optional[Any]         =    p - q * (a // b)

     assert a % d == 0 and b % d == 0
     assert d == a * x + b * y

     return (d, x, y)


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

   testmod(name='''diophantine''', verbose=True)
   testmod(name='''diophantine_all_soln''', verbose=True)
   testmod(name='''extended_gcd''', verbose=True)
   testmod(name='''greatest_common_divisor''', verbose=True)



import argparse

import torch
from flax.training.checkpoints import restore_checkpoint

from transformers import FNetConfig, FNetForPreTraining
from transformers.utils import logging


logging.set_verbosity_info()






def       __lowerCamelCase		(						lowerCAmelCase__	,  lowerCAmelCase__	,  lowerCAmelCase__	):
       # Initialise PyTorch model
       lowerCAmelCase__     	=					FNetConfig.from_json_file(lowerCAmelCase__	)
       print(F"""Building PyTorch model from configuration: {config}"""	)
       lowerCAmelCase__     	=					FNetForPreTraining(lowerCAmelCase__	)

       lowerCAmelCase__     	=					restore_checkpoint(lowerCAmelCase__	,  lowerCAmelCase__	)
       lowerCAmelCase__     	=					checkpoint_dict['target']

       # Embeddings
       # Position IDs
       lowerCAmelCase__     	=					fnet_pretraining_model.state_dict()

       lowerCAmelCase__     	=					state_dict['fnet.embeddings.position_ids']
       lowerCAmelCase__     	=					{'fnet.embeddings.position_ids': position_ids}
       # Embedding Layers
       lowerCAmelCase__     	=					torch.tensor(
           pretrained_model_params['encoder']['embedder']['word']['embedding']	)
       lowerCAmelCase__     	=					torch.tensor(
           pretrained_model_params['encoder']['embedder']['position']['embedding'][0]	)
       lowerCAmelCase__     	=					torch.tensor(
           pretrained_model_params['encoder']['embedder']['type']['embedding']	)
       lowerCAmelCase__     	=					torch.tensor(
           pretrained_model_params['encoder']['embedder']['hidden_mapping_in']['kernel']	).T
       lowerCAmelCase__     	=					torch.tensor(
           pretrained_model_params['encoder']['embedder']['hidden_mapping_in']['bias']	)
       lowerCAmelCase__     	=					torch.tensor(
           pretrained_model_params['encoder']['embedder']['layer_norm']['scale']	)
       lowerCAmelCase__     	=					torch.tensor(
           pretrained_model_params['encoder']['embedder']['layer_norm']['bias']	)

       # Encoder Layers
       for layer in range(config.num_hidden_layers	):
              lowerCAmelCase__     	=					torch.tensor(
                  pretrained_model_params['encoder'][F"""encoder_{layer}"""]['mixing_layer_norm']['scale']	)
              lowerCAmelCase__     	=					torch.tensor(
                  pretrained_model_params['encoder'][F"""encoder_{layer}"""]['mixing_layer_norm']['bias']	)

              lowerCAmelCase__     	=					torch.tensor(
                  pretrained_model_params['encoder'][F"""feed_forward_{layer}"""]['intermediate']['kernel']	).T
              lowerCAmelCase__     	=					torch.tensor(
                  pretrained_model_params['encoder'][F"""feed_forward_{layer}"""]['intermediate']['bias']	)

              lowerCAmelCase__     	=					torch.tensor(
                  pretrained_model_params['encoder'][F"""feed_forward_{layer}"""]['output']['kernel']	).T
              lowerCAmelCase__     	=					torch.tensor(
                  pretrained_model_params['encoder'][F"""feed_forward_{layer}"""]['output']['bias']	)

              lowerCAmelCase__     	=					torch.tensor(
                  pretrained_model_params['encoder'][F"""encoder_{layer}"""]['output_layer_norm']['scale']	)
              lowerCAmelCase__     	=					torch.tensor(
                  pretrained_model_params['encoder'][F"""encoder_{layer}"""]['output_layer_norm']['bias']	)

       # Pooler Layers
       lowerCAmelCase__     	=					torch.tensor(pretrained_model_params['encoder']['pooler']['kernel']	).T
       lowerCAmelCase__     	=					torch.tensor(pretrained_model_params['encoder']['pooler']['bias']	)

       # Masked LM Layers
       lowerCAmelCase__     	=					torch.tensor(
           pretrained_model_params['predictions_dense']['kernel']	).T
       lowerCAmelCase__     	=					torch.tensor(
           pretrained_model_params['predictions_dense']['bias']	)
       lowerCAmelCase__     	=					torch.tensor(
           pretrained_model_params['predictions_layer_norm']['scale']	)
       lowerCAmelCase__     	=					torch.tensor(
           pretrained_model_params['predictions_layer_norm']['bias']	)
       lowerCAmelCase__     	=					torch.tensor(
           pretrained_model_params['encoder']['embedder']['word']['embedding']	)
       lowerCAmelCase__     	=					torch.tensor(
           pretrained_model_params['predictions_output']['output_bias']	)
       lowerCAmelCase__     	=					torch.tensor(pretrained_model_params['predictions_output']['output_bias']	)

       # Seq Relationship Layers
       lowerCAmelCase__     	=					torch.tensor(
           pretrained_model_params['classification']['output_kernel']	)
       lowerCAmelCase__     	=					torch.tensor(
           pretrained_model_params['classification']['output_bias']	)

       # Load State Dict
       fnet_pretraining_model.load_state_dict(lowerCAmelCase__	)

       # Save PreTrained
       print(F"""Saving pretrained model to {save_path}"""	)
       fnet_pretraining_model.save_pretrained(lowerCAmelCase__	)


if __name__ == "__main__":
    lowerCAmelCase__							= argparse.ArgumentParser()
    # Required parameters
    parser.add_argument(
        '--flax_checkpoint_path', default=None, type=str, required=True, help='Path to the TensorFlow checkpoint path.'
    )
    parser.add_argument(
        '--fnet_config_file',
        default=None,
        type=str,
        required=True,
        help=(
            'The config json file corresponding to the pre-trained FNet model. \n'
            'This specifies the model architecture.'
        ),
    )
    parser.add_argument('--save_path', default=None, type=str, required=True, help='Path to the output model.')
    lowerCAmelCase__							= parser.parse_args()
    convert_flax_checkpoint_to_pytorch(args.flax_checkpoint_path, args.fnet_config_file, args.save_path)
