


'''simple docstring'''






import torch
from torch import nn

from ...configuration_utils import ConfigMixin, register_to_config
from ...models import ModelMixin




class 		a__    (							a__    ,    a__  ):





							'''simple docstring'''






							@register_to_config
							def __init__(		self ,   *,
							    lowerCamelCase_ = 4 ,   lowerCamelCase_ = 7_68 ,   lowerCamelCase_ ,   lowerCamelCase_ ,   )	->							int:
														super().__init__()

														lowerCAmelCase__	       =     nn.Parameter(torch.zeros(lowerCamelCase_       )       )

														# parameters for additional clip time embeddings
														lowerCAmelCase__	       =     nn.Linear(lowerCamelCase_ ,   lowerCamelCase_       )
														lowerCAmelCase__	       =     nn.Linear(lowerCamelCase_ ,   lowerCamelCase_       )

														# parameters for encoder hidden states
														lowerCAmelCase__	       =     clip_extra_context_tokens
														lowerCAmelCase__	       =     nn.Linear(
														    lowerCamelCase_ ,   self.clip_extra_context_tokens * cross_attention_dim       )
														lowerCAmelCase__	       =     nn.Linear(lowerCamelCase_ ,   lowerCamelCase_       )
														lowerCAmelCase__	       =     nn.LayerNorm(lowerCamelCase_       )







							def   __SCREAMING_SNAKE_CASE							(		self ,   *, lowerCamelCase_ ,   lowerCamelCase_ ,   lowerCamelCase_ ,   lowerCamelCase_       )	->							List[str]:
														if do_classifier_free_guidance:
																					# Add the classifier free guidance embeddings to the image embeddings
																					lowerCAmelCase__	       =     image_embeddings.shape[0]
																					lowerCAmelCase__	       =     self.learned_classifier_free_guidance_embeddings.unsqueeze(0       )
																					lowerCAmelCase__	       =     classifier_free_guidance_embeddings.expand(
																					    lowerCamelCase_ ,   -1       )
																					lowerCAmelCase__	       =     torch.cat([classifier_free_guidance_embeddings, image_embeddings] ,   dim=0       )

														# The image embeddings batch size and the text embeddings batch size are equal
														assert image_embeddings.shape[0] == prompt_embeds.shape[0]

														lowerCAmelCase__	       =     prompt_embeds.shape[0]

														# "Specifically, we modify the architecture described in Nichol et al. (2021) by projecting and
														# adding CLIP embeddings to the existing timestep embedding, ...
														lowerCAmelCase__	       =     self.embedding_proj(lowerCamelCase_       )
														lowerCAmelCase__	       =     self.clip_image_embeddings_project_to_time_embeddings(lowerCamelCase_       )
														lowerCAmelCase__	       =     time_projected_image_embeddings + time_projected_prompt_embeds

														# ... and by projecting CLIP embeddings into four
														# extra tokens of context that are concatenated to the sequence of outputs from the GLIDE text encoder"
														lowerCAmelCase__	       =     self.clip_extra_context_tokens_proj(lowerCamelCase_       )
														lowerCAmelCase__	       =     clip_extra_context_tokens.reshape(lowerCamelCase_ ,   -1 ,   self.clip_extra_context_tokens       )
														lowerCAmelCase__	       =     clip_extra_context_tokens.permute(0 ,   2 ,   1       )

														lowerCAmelCase__	       =     self.encoder_hidden_states_proj(lowerCamelCase_       )
														lowerCAmelCase__	       =     self.text_encoder_hidden_states_norm(lowerCamelCase_       )
														lowerCAmelCase__	       =     torch.cat([clip_extra_context_tokens, text_encoder_hidden_states] ,   dim=1       )

														return text_encoder_hidden_states, additive_clip_time_embeddings



'''simple docstring'''






def  _snake_case       (					A = 10			,   A = 22	)						->   int:
							lowerCAmelCase__	       =     range(1			,   A	)
							lowerCAmelCase__	       =     range(1			,   A	)
							return sum(
							    1 for power in powers for base in bases if len(str(base**power	)	) == power	)


if __name__ == "__main__":
		print(f"""{solution(10, 22) = }""")