
    i                     $   % S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKJrJ	r	J
r
JrJrJrJr  S SKJr  S SKJs  Jr  S SKJs  Js  Jr  S SKJs  Js  Jr  S SKrS SKJs  Jr  S SKJr  S SKJr  S SK J!r"  S SK#J$r$J%r&  S SK'J(r(  S SK)J*r*  S S	K+J,r-  S S
KJ.r.  S SKJ!r!J,r/J0r0J1r1  S SK2J3r3  S SK4J5r5  S SK6J7r7  \Rp                  " \95      r:\Rv                  \<S'    " S S\Rz                  5      r= " S S\R|                  5      r>S\R$                  R~                  0r@ " S S\R                  5      rA " S S\R                  5      rB S&S\R                  S\\
\D\E4      S\R                  4S jjrGS\R                  S\R                  4S jrHSSS.S \R                  S!\\D\R                  \D   \R                  4   S"\\
\D\4      S\\
\D\E4      SS4
S# jjrKSS$.S!\\D\R                  \D   \R                  4   S"\\
\D\4      S\R                  4S% jjrLg)'    N)AnyCallableDictListOptionalTupleUnion)delegate)NamedDataStoreOutput)CompileSpec)_DialectNamespaceops)BackendOpOverload)EdgeOpOverload)LoweredBackendModule)SerializeError)r   r   SCHEMA_VERSIONSchemaVersion)load_verifier)symbolic_shapes)
NodeSourcelogc                     ^  \ rS rSrS\R
                  S\\R                     SS4U 4S jjrS\	\
\\\R                  R                  \R                  R                   4   S\
4U 4S jjrS	\R$                  R&                  SS4U 4S
 jjrS	\R$                  R&                  S\\R,                     4U 4S jjrS	\R$                  R&                  S\\
\
4   4U 4S jjrS\\\      4S jrS\\R:                     4S jrS	\R$                  R&                  S\\R,                     4S jrS\R$                  R@                  S\RB                  4U 4S jjr"S\\R:                     4S jr#S\R$                  R&                  S\
4S jr$Sr%U =r&$ )GraphModuleSerializer1   graph_signaturemodule_call_graphreturnNc                 2   > [         TU ]  X5        0 U l        g N)super__init__
state_dict)selfr   r   	__class__s      ^/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/executorch/exir/serde/serialize.pyr"   GraphModuleSerializer.__init__2   s    
 	<35    targetc                   > [        U[        5      (       a  U$ UR                  R                  S5      (       a-  UR                  R	                  SS5      nU SUR
                   3$ UR                  R                  S5      (       a-  UR                  R	                  SS5      nU SUR
                   3$ [        TU ]  U5      $ )Nzexecutorch.exir.dialects.edgez"executorch.exir.dialects.edge._ops!executorch.exir.dialects.edge.ops.z executorch.exir.dialects.backendz%executorch.exir.dialects.backend._ops$executorch.exir.dialects.backend.ops)
isinstancestr
__module__
startswithreplace__name__r!   serialize_operator)r$   r)   moduler%   s      r&   r4   (GraphModuleSerializer.serialize_operator:   s     fc""M))*IJJ &&..43F XQv/00))*LMM&&..76F XQv/00w)&11r(   nodec           	        > UR                   S:X  d   eUR                  [        R                  L a  [        R
                  " UR                  SU R                  UR                  5      U R                  U5      U R                  U5      S9nU R                  R                  R                  U5        g [        UR                  [        5      (       a  UR                  R                   c   e[        R
                  " UR                  U R#                  UR                  5      U R%                  UR                  R                   UR                  UR&                  5      U R)                  U5      U R                  U5      S9nU R                  R                  R                  U5        g UR                  [*        R,                  L a  [        R
                  " UR                  U R#                  UR                  5      U R/                  UR                  5      U R                  U5      U R                  U5      S9nU R                  R                  R                  U5        g [0        TU ]e  U5        g )Ncall_functionmemory.alloc)namer)   inputsoutputsmetadata)opr)   memoryallocschemaNoder;   serialize_alloc_inputsargsserialize_arbitrary_outputsserialize_metadatagraph_statenodesappendr.   r   _opr4   serialize_inputskwargsserialize_outputsr
   executorch_call_delegateserialize_call_delegate_inputsr!   handle_call_function)r$   r7   ex_noder%   s      r&   rQ   *GraphModuleSerializer.handle_call_functionW   s   ww/)));;&,,&kkYY%22499=88>006G ""))'2^44;;??...kkYY..t{{; ,,T[[__diiU..t4006	G ""))'2[[H===kkYY..t{{;::499E88>006G ""))'2$T*r(   c                    > [        UR                  [        5      (       a4  UR                  nUR                  Ul        [        TU ]  U5      nX!l        U$ [        TU ]  U5      nU$ r    )r.   r)   r   rK   r!   rN   )r$   r7   edge_opretr%   s       r&   rN   'GraphModuleSerializer.serialize_outputs   s[    dkk>22kkG "++DK'+D1C!K 
 '+D1C
r(   c                   > [         TU ]  U5      nSUR                  ;   a  UR                  S   n[        U5      US'   SUR                  ;   a7  UR                  S   n[        R
                  " U R                  U5      5      US'   U$ Ndebug_handle	from_node)r!   rG   metar/   jsondumps_make_from_node_json_acceptable)r$   r7   r\   rZ   r[   r%   s        r&   rG   (GraphModuleSerializer.serialize_metadata   sy    w)$/TYY&99^4L#&|#4D $))#		+.I $

4+O+OPY+Z [Dr(   r[   c                     Uc  gU Vs/ s H*  n[        U[        5      (       d  M  UR                  5       PM,     nnU$ s  snf )z[
Serialize from_node metadata from a list of NodeSource objects to a list of dictionaries.
N)r.   r   to_dict)r$   r[   node_sourcejson_acceptable_from_nodes       r&   r_   5GraphModuleSerializer._make_from_node_json_acceptable   sF     NW$i{[efqs}[~%:[%8%8%:i!$(( %@s   >>c           	      D   [        U5      S:X  d   eS[        R                  S[        R                  4S jn[        US   [        5      (       a/  US    Vs/ s H  n[        R                  " SU" U5      S9PM      sn$ [        R                  " SU" US   5      S9/$ s  snf )	z
Serialize the inputs to the memory.alloc function. Since there's no
specific spec, we jut serialize the inputs with a dummy name.
We serialize the AllocSpec into a string "size;dtype"
   
alloc_specr   c                     [         R                  R                  U S    S[        R                  U S      R
                   3S9$ )Nr   ;rg   	as_string)rB   Argumentcreateexport_serialize_TORCH_TO_SERIALIZE_DTYPEvalue)rh   s    r&   serialize_alloc_specJGraphModuleSerializer.serialize_alloc_inputs.<locals>.serialize_alloc_spec   sJ    ??))']O1-=-W-WXbcdXe-f-l-l,mn *  r(   r   
alloc_listr;   arg	alloc_arg)lenr@   	AllocSpecrB   rm   r.   listNamedArgument)r$   r<   rr   rv   s       r&   rD   ,GraphModuleSerializer.serialize_alloc_inputs   s     6{a	V-=-= 	&// 	
 fQi&& "!9$C $$,<PQT<UV$  $$$*>vay*I s   %Bc                    UR                   S   n[        U[        R                  5      (       a8  [        R
                  R                  U R                  UR                  U5      S9/$ 0 nUR                   H=  nUR                  [        R                  La  M"  UR                  X4R                  S   '   M?     [        U5       H  u  pVXS;  d  M  UR                   SU 3X5'   M!     / n[        U5       H(  u  pUR                  U R                  X8   U	5      5        M*     [!        U5      S:X  a  [        R
                  R                  US9/$ U V
s/ s H   n
[        R
                  R                  U
S9PM"     sn
$ s  sn
f )Nval)	as_tensorrg   _unused_)
as_tensors)r\   r.   torchTensorrB   rm   rn   serialize_tensor_outputr;   usersr)   operatorgetitemrE   	enumeraterJ   rx   )r$   r7   meta_validx_to_nameuseridx_arg_listielement_meta_valrv   s              r&   rF   1GraphModuleSerializer.serialize_arbitrary_outputs   sW   99U# h--&&"::499hO '   JJD{{("2"22(,		K		!% 
  )FC %&*ii[#>  * #,X#6AOO,,[^=MN $7
 x=AOO**h*?@@ FNNXcFOO**S*9XNNNs   'E8graph_modulec                 .   > Xl         [        TU ]	  U5      $ r    )original_graph_moduler!   serialize_graph)r$   r   r%   s     r&   r   %GraphModuleSerializer.serialize_graph   s    ;G"w&|44r(   c           	      J   US   nUSS  nU R                  U5      n[        R                  " UR                  [        R                  R                  US9S9nU/n[        U5       H;  u  pxUR                  [        R                  " SU 3U R                  U5      S95        M=     U$ )Nr   rg   rk   ru   delegate_arg_)	serialize_lowered_modulerB   r{   r)   rm   rn   r   rJ   serialize_input)	r$   rE   lowered_module_argdelegate_argsserialized_lowered_moduleserialized_lowered_module_argserialized_argsr   rv   s	            r&   rP   4GraphModuleSerializer.serialize_call_delegate_inputs   s     "!WQR$($A$ABT$U!(.(<(<#**&&1J&K)
%
 99.FA""$$(,$2F2Fs2K / r(   r   c           
         UR                   S:X  d   e[        UR                  [        5      (       d   eS[        S[        4S jn[        UR                  R                  UR                  5      n[        U[        5      (       d   eUR                   Vs/ s H)  n[        UR                  U" UR                  5      5      PM+     nn[        5       R                  UR                  5      n[        UR                   ["        R$                  5      (       d   eU" UR&                  5      nUR(                  (       aA  [*        R,                  " [.        R0                  " UR(                  5      [.        R2                  S9OS n[5        UR                   U" UR6                  5      U" UR8                  5      UUUR:                  US9n	[*        R,                  " [.        R0                  " U	5      [.        R2                  S9n
U
$ s  snf )Nget_attrbr   c                 L    [         R                  " U 5      R                  S5      $ )Nascii)base64	b64encodedecode)r   s    r&   serialize_bytesGGraphModuleSerializer.serialize_lowered_module.<locals>.serialize_bytes  s      ##A&--g66r(   cls)original_moduleoriginal_state_dictoriginal_constantsprocessed_bytescompile_specs
backend_idnamed_data_store)r?   r.   r)   r/   bytesgetattrgraphowning_moduleExirLoweredBackendModuler   r   keyrq   ExportedProgramSerializer	serializer   exported_programrB   ExportedProgramr   named_data_store_outputr]   r^   ro   _dataclass_to_dictEnumEncoderSerdeLoweredBackendModuler#   	constantsr   )r$   r   r   lowered_modulecsserialized_compile_specserialized_artifactserialized_processed_bytesr   r   json_lowered_modules              r&   r   .GraphModuleSerializer.serialize_lowered_module  s   !$$
222,33S9999	7u 	7 	7 !$$224F4M4M
 .*BCCCC %22#
2  9:2 	  #

 89CC**
 ->>@V@VWWWW%4^5S5S%T" Xf  X~  X~4::&6&I&I.JpJp&q  wG  wS  wS  T  DH$=/@@ /0C0N0N O./B/L/LM61%00-%
! #jj//0IJ ,,
 #"7#
s   0G6)r   r#   )'r3   r0   __qualname____firstlineno__epExportGraphSignaturer   ModuleCallEntryr"   r	   r/   r   r   r   _ops
OpOverloadHigherOrderOperatorr4   fxrC   rQ   rB   rm   rN   r   rG   r   r   r_   r{   rD   rF   GraphModuleGraphr   rP   r   __static_attributes____classcell__r%   s   @r&   r   r   1   s   6006   2 236 
	62JJ!!JJ**	,
2 
2:&+ &+4 &+Pehhmm V__8M uxx}} c3h 	)$zBR9S 	)	f""	#8*O *O$vBW *OX5EHH,@,@ 5V\\ 5	f""	#*-#588== -#S -# -#r(   r   c                   N    \ rS rSrS\R
                  S\R                  4S jrSr	g)r   i7  r   r   c                    [        U[        R                  5      (       d   e[        UR                  UR
                  5      nUR                  UR                  5      n[        R                  " UR                  5      n0 nUR                  R                  5        H	  u  pgXuU'   M     UR                  R                  5        H  u  phXe;  d   eXU'   M     0 n	[        US5      (       a*  UR                   V
s/ s H  oR                   PM     sn
U	S'   O [        US5      (       a  UR                   U	S'   ["        R                  " SUU R$                  U['        [(        S   [(        S   S9S.U	D6nUR*                  b!  [        R,                  " UR*                  5      nOSn[        R.                  " U[        R,                  " UR0                  5      [        R,                  " U5      U5      $ s  sn
f )	z;
Args:
    exported_program: Exported Program to serialize
	verifiersdialectr   rg   )majorminor)r   opset_versionrange_constraintsschema_versionr(    )r.   r   r   r   r   r   r   r   ro   serialize_range_constraintsr   custom_objsitemsr   hasattrr   r   rB   r   r   r   example_inputsserialize_torch_artifact_SerializedProgramr#   )r$   r   gm_serializerserialized_graph_moduleserialized_range_constraintsr   nctadditional_kwargsvserialized_epr   s                r&   r   #ExportedProgramSerializer.serialize8  s    *B,>,>????-,,.>.P.P
 #0"9"9:J:W:W"X'7'S'S..(
$ 	!--335DAaL 6$..446DA%%%aL 7 #[11#3#=#=.#=a		#=.k* %y11+;+C+Ci(.. 	
0,,:($Q'$Q'		
  	
 **6-FF //N !N22556F6Q6QR55i@	
 	
7.s   5G'r   N)
r3   r0   r   r   r   r   ro   r   r   r   r   r(   r&   r   r   7  s#    >
 " 2 2>
		,	,>
r(   r   zexecutorch.exir.memory.viewc                     ^  \ rS rSrS\S\4U 4S jjrS\4S jrS\R                  S\
SS4U 4S	 jjrS\R                  S
\R                  R                  SS4U 4S jjrS\\\4   S\\\4   4U 4S jjrS\\\\\4         S\\\      4S jrS\\R*                     4S jrS\R                  S
\R                  R                  SS4S jrS\\R*                     4S jrS\R*                  S\R                  R                  4S jrSrU =r$ )GraphModuleDeserializeri~  serialized_targetr   c                   > S[         S[        S[        4S jnUR                  S5      (       a  U" [        R                  U5      $ UR                  S5      (       a  U" [        R
                  U5      $ [        TU ]  U5      $ )Nr5   r   r   c                     UR                  S5      SS  nU nU H"  n[        X45      (       d  Us  $ [        X45      nM$     U$ )Nr,      )splitr   r   )r5   r   serialized_target_namesr)   r;   s        r&   find_operatorCGraphModuleDeserializer.deserialize_operator.<locals>.find_operator  sK    &7&=&=c&B12&F#F/v,,,,$V2F	 0
 Mr(   r+   r-   )r   r/   r1   exir_opsedgebackendr!   deserialize_operator)r$   r   r   r%   s      r&   r   ,GraphModuleDeserializer.deserialize_operator  s|    		"3 		 		PS 		 ''(KLL 0ABB))*PQQ !1!13DEEw+,=>>r(   c                 B   ^  [        U 4S jUR                   5       5      $ )Nc              3   Z   >#    U  H   nTR                  UR                  5      v   M"     g 7fr    deserialize_inputrv   .0inputr$   s     r&   	<genexpr>GGraphModuleDeserializer.deserialize_inputs_no_schema.<locals>.<genexpr>  s'      
;Q%D""599--;Q   (+)tupler<   )r$   serialized_nodes   ` r&   deserialize_inputs_no_schema4GraphModuleDeserializer.deserialize_inputs_no_schema  s#     
;J;Q;Q
 
 	
r(   r  r)   Nc                   > US:X  a  U R                  UR                  5      nU R                  R                  S[        R
                  U0 S5      nU R                  X5        UR                  R                  U R                  UR                  5      5        g U[        R                  L a  [        UR                  5      S:X  aA  UR                  S   R                  S:X  a$  UR                  S   R                   R"                  nOS nU R%                  UR                  5      nU R                  R                  SX#0 U5      nU R                  X5        UR                  R                  U R                  UR                  5      5        g ['        U[(        5      (       a  [*        R,                  " UR.                  5      (       a#  UR                  S   R                   R"                  OS nU R1                  UR.                  U5      u  p6U R                  R                  SX#Xe5      nU R3                  X5        UR                  R                  U R                  UR                  5      5        g ['        U[4        5      (       ay  U[6        ;   a
  [6        U   nO$[8        R;                  SU S35        S	 nX'l        UnU R?                  U5      nU R                  R                  SX#S S 5      nU R                  X5        g [@        TU ]  X5        g )
Nr:   r9   rA   rg   r   r   zCould not find operator z. Returning fake operator.c                     [        S5      e)NzFake op is not meant to be run.)NotImplementedError)xs    r&   fake_op9GraphModuleDeserializer.deserialize_node.<locals>.fake_op  s    -.OPPr(   )"deserialize_alloc_inputsr<   r   create_noder@   rA   deserialize_arbitrary_outputsr\   updatedeserialize_metadatar>   r
   rO   rx   r=   typerq   r;    deserialize_call_delegate_inputsr.   r   ro   _is_single_tensor_returnrK   deserialize_inputsdeserialize_outputsr/   _KNOWN_FUNCTIONS_MAPr   warningr3   r  r!   deserialize_node)	r$   r  r)   rE   fx_noder;   rM   r  r%   s	           r&   r"  (GraphModuleDeserializer.deserialize_node  s   ^#001G1GHDjj,,tRG ..HLL 9 9/:R:R STx888O++,1#++A.33{B '..q177<< 889O9OPDjj,,_fBPTUG..HLL 9 9/:R:R ST// $<<VZZHH  ''*0055 
  226::OLDjj,,vG $$_>LL 9 9/:R:R ST$$ ---f5
 .vh6PQQ $*  44_EDjj,,_fDRVWG..H 9r(   r#  c                    > [        UR                  [        5      (       a3  UR                  nUR                  Ul        [        TU ]  X5        X2l        g [        TU ]  X5        g r    )r.   r)   r   rK   r!   r  )r$   r  r#  rU   r%   s       r&   r  +GraphModuleDeserializer.deserialize_outputs  sK     gnnn55nnG %[[GNG'A$NG'Ar(   r>   c                    > [         TU ]  U5      nUR                  S5      =n(       a  [        U5      US'   UR                  S5      =n(       a(  U R	                  [
        R                  " U5      5      US'   U$ rY   )r!   r  getint_deserialize_from_noder]   loads)r$   r>   resrZ   from_node_strr%   s        r&   r  ,GraphModuleDeserializer.deserialize_metadata  sl    g*84#<<77<7"%l"3C$LL55=5#::4::m;TUC
r(   from_node_datac                     Uc  g[        U[        5      (       d   eU Vs/ s H  n[        R                  " U5      PM     sn$ s  snf )z<
Recursively deserialize from_node metadata from JSON data.
N)r.   rz   r   
_from_dict)r$   r/  fn_dicts      r&   r*  .GraphModuleDeserializer._deserialize_from_node  sC     !.$////>LMn7
%%g.nMMMs    Aserialized_inputsc                 f   S[         S[        R                  4S jnUS   R                  R                  S:X  d   e[        U5      S:X  a5  US   R                  S:X  a"  U" US   R                  R                  5      4nU$ U Vs/ s H  nU" UR                  R                  5      PM!     nnU4$ s  snf )Nserialized_alloc_specr   c                     U R                  S5      n[        U5      S:X  d   eUS   R                  S5      R                  S5      n[        S U 5       5      n[        R
                  [        US   5         nX44$ )Nrj      r   z(),c              3   F   #    U  H  oS :w  d  M
  [        U5      v   M     g7f) N)r)  )r  r  s     r&   r	  cGraphModuleDeserializer.deserialize_alloc_inputs.<locals>.deserialize_alloc_spec.<locals>.<genexpr>  s     J)>Ar'Q)>s   	!!rg   )r   rx   stripr  ro   _SERIALIZE_TO_TORCH_DTYPEr)  )r6  serialized_alloc_spec_elemsserialized_size_elemssizedtypes        r&   deserialize_alloc_specPGraphModuleDeserializer.deserialize_alloc_inputs.<locals>.deserialize_alloc_spec  s    *?*E*Ec*J'23q888+A.44T:@@E " J)>JJD$>>/23E = r(   r   rl   rg   rw   )r/   r@   ry   rv   r  rx   r;   rq   )r$   r4  rC  r,  serialized_inputalloc_specss         r&   r  0GraphModuleDeserializer.deserialize_alloc_inputs
  s    	!# 	!&BRBR 	! !#'',,;;;  !Q&+<Q+?+D+D+S)*;A*>*B*B*H*HIKCJ %6
$5  ##3#7#7#=#=>$5 	 
 ~	
s   &B.c                 R   [        UR                  5      S:X  a  g [        UR                  5      S:X  aP  UR                  S   R                  S:X  a3  U R                  UR                  S   R                  R
                  U5      $ [        UR                  5      S:X  az  [        UR                  S   R                  [        R                  [        R                  45      (       a4  U R                  UR                  S   R                  R                  U5        g U R                  X5        g )Nr   rg   r   )rx   r=   r  sync_fx_noder   r;   r.   rq   rB   SymIntArgumentSymBoolArgumentas_namedeserialize_multiple_outputs)r$   r  r#  s      r&   r  5GraphModuleDeserializer.deserialize_arbitrary_outputs%  s     &&'1, ''(A-''*//;>$$_%<%<Q%?%I%I%N%NPWXX(()Q.:##A&,,""F$:$:;4
 4
 o55a8>>FFP))/Cr(   c                 p   ^  US   nT R                  U5      nUSS  n[        U 4S jU 5       5      nU4U-   $ )Nr   rg   c              3   Z   >#    U  H   nTR                  UR                  5      v   M"     g 7fr    r  r  s     r&   r	  KGraphModuleDeserializer.deserialize_call_delegate_inputs.<locals>.<genexpr>@  s'      
;U%D""599--;Ur  )deserialize_lowered_moduler  )r$   r4  r   lowered_module_nodeserialized_delegate_inputsrE   s   `     r&   r  8GraphModuleDeserializer.deserialize_call_delegate_inputs:  sV     %6a$8!"==>WX%6qr%:" 
;U
 
 $%,,r(   r   c           	      j   UR                   R                  S:X  d   eUR                   R                  n[        R                  " U5      n[
        R                  " [        U5      nUR                  n[        R                  " UR                  5      nUR                   Vs/ s H5  n[        UR                  [        R                  " UR                  5      S9PM7     nn[        5       R!                  UR"                  [        R                  " UR$                  5      [        R                  " UR&                  5      S 5      n	UR(                  c  S n
O[
        R                  " [*        [        R                  " UR(                  5      5      n
/ nU
R,                   H7  nUR/                  [        R                  " UR1                  S5      5      5        M9     Xl        [3        U	UUUU
5      nU R4                  R7                  UR8                  U5        U R:                  R=                  UR8                  5      $ s  snf )Nrl   )r   rq   r   )rv   r  rq   r]   r+  ro   _dict_to_dataclassr   r   r   	b64decoder   r   delegate_CompileSpecr   ExportedProgramDeserializerdeserializer   r   r   r   r   buffersrJ   encoder   r5   register_moduler;   r   r   )r$   r   lowered_module_strr   r   r   r   r   r   r   r   new_buffersbufferr   s                 r&   rR  2GraphModuleDeserializer.deserialize_lowered_moduleE  s    -0055DDD:>>DD"jj);<$4$G$G%':%
! /99
 **+D+T+TU 0==
= !RVV63C3CBHH3MN= 	 

 67CC%556JJK6IIJ	
 %55=#/BBCWY]YcYcd}  eO  eO  ZP   QK*22""6#3#3FMM'4J#KL 3'2$1
 	##$A$F$FWzz""#@#E#EFF;
s   <H0r   )r3   r0   r   r   r/   r   r   r  rB   rC   r   r"  r   r   r  r   r  r   r   r   r*  r{   r  r  r  rR  r   r   r   s   @r&   r   r   ~  sS   ?c ?c ?(
s 
I: I:X I:RV I:VB%{{B5:XX]]B	B	T#s(^ 	S#X 		NXd4S>>R5S 	NX`aefpaqXr 	N$v?S?S:T 6D%{{D5:XX]]D	D*	-!%f&:&:!;	-)G-3-A-A)G	)G )Gr(   r   c                       \ rS rSr SS\R
                  S\\\\	R                  4   \4   S\\\\	R                  4   \4   S\\\\\	R                  S4   \\\4   4   \4      S\R
                  4
S	 jjrS
rg)rZ  iq  Nr   r#   r   r   .r   c                    [        U[        R                  5      (       d   eUR                  nUR                  [
        S   :w  a@  UR                  S:X  a  UR                  S:X  d   [        SUR                   S[
         S35      eUR                  R                  5        VVs0 s HY  u  pgU[        R                  " [        R                  " UR                  5      [        R                  " UR                  5      5      _M[     nnn[        5       R!                  UR"                  UUUU5      n	U R%                  UU	R&                  5      n
[(        R*                  R-                  5       nUR/                  S5        0 n[1        US5      (       a*  UR2                   Vs/ s H  n[5        U5      PM     snUS'   O)[1        US5      (       a  [5        UR6                  5      US'   [8        R                  " SU	R"                  U[8        R:                  " / / S	9U	R<                  U
U	R>                  U	R@                  U	RB                  S
.UD6nU	R"                  RD                  UR"                  l"        U	RF                  Ul$        U	R"                  RD                  RJ                   HT  nURL                  S:X  d  M  [O        UR"                  URP                  [S        U	R"                  URP                  5      5        MV     U$ s  snnf s  snf )Nr   zSerialized schema version + does not match our current schema version r,   r   r   r   verifier)input_specsoutput_specs)rootr   r   r#   r   r   r   r   r   )*r.   ro   r   r   r   r   r   r   r   r   r   ValueRanges_int_to_sympy_intmin_valmax_valr   r[  r   deserialize_range_constraintsnames_to_symbolsr   r   r   outputr   r   r   r   r   r   r#   r   r   r   r   	signature_graph_signaturerI   r?   setattrr)   r   )r$   r   r#   r   r   versionkr   symbol_name_to_ranger,  r   dummy_gr   r7   s                 r&   r[  'ExportedProgramDeserializer.deserializer  s    *,<,L,LMMMM"11 ==N1--MMQ7==A#5 ,-=-L-L,M N==K<LAO  )::@@B 

 C	 ** 22199= 22199=  C 	  
 &'33)) 
 !>>   

 ((.."r#[11*:*D*D.*DQa *D.k* %y11,9 ((-j) -- 

!!33QST~~/!33--mm

  

 /2.>.>.D.D%%+,/MM)$$**00Dww*$$11KKC,,dkk: 1  g 
..s   "A K1K7r   r    )r3   r0   r   r   ro   r   r	   r   r/   r   r   r   r   r   r   r   r[  r   r   r(   r&   rZ  rZ  q  s     H *::H  $sELL01589H  c5<</0%78	H 
 !%ellC/0$sCx.@A5HI
H  
		H  H r(   rZ  r   r   r   c                    [        U5      R                  U 5      n[        UR                  [        R
                  5      (       d   e[        R                  " [        R                  " UR                  5      [        R                  S9nUR                  S5      n[        R                  " UUR                  UR                  UR                  5      nU$ )Nr   utf-8)r   r   r.   r   rB   r   r]   r^   ro   r   r   r]  SerializedArtifactr#   r   r   )r   r   r   json_program
json_bytesartifacts         r&   r   r     s     4MBLL )::F<R<RSSSS::++,?,P,PQ((L $$W-J22&&%%**	H Or(   r~  c                 d   [        U R                  [        5      (       d   eU R                  R                  S5      n[        R
                  " U5      n[        R                  " [        R                  U5      n[        5       R                  UU R                  U R                  U R                  5      $ )Nrz  )r.   r   r   r   r]   r+  ro   rW  rB   r   rZ  r[  r#   r   r   )r~  exported_program_strexported_program_dictserialized_exported_programs       r&   r[  r[    s     h//7777#44;;GD JJ';<"2"E"E 5# '(44#	 r(   )extra_filesr   ep_savefr  c          
         [        U [        R                  5      (       d  [        S[	        [        5       35      e[        X5      n[        U[        [        R                  45      (       a  [        R                  " [        U5      5      n[        R                  " US5       n[        UR                  [        5      (       d   eUR                  SUR                  5        UR                  SUR                  5        UR                  SUR                   5        UR                  SUR"                  5        UR                  SSR%                  ['        [        [(        5      5      5        U(       a?  UR+                  5        H+  u  pgUR-                  S	5      nUR                  S
U 3U5        M-     S S S 5        g ! , (       d  f       g = f)Nz*save() expects an ExportedProgram but got w serialized_exported_program.jsonserialized_state_dict.ptserialized_constants.ptserialized_example_inputs.ptrt  r,   rz  zextra_files/)r.   r   r   	TypeErrorr  r   r/   osPathLikefspathzipfileZipFiler   r   writestrr#   r   r   joinmapr   r   r]  )	r  r  r  r   r~  zipfextra_file_namecontentencoded_contents	            r&   saver    sG    gr1122DT"XJOPP4=g4UH!c2;;'((IIc!f	C	 D(33U;;;;8(:S:ST0(2E2EF/1C1CD4h6M6MNi#c>*B!CD ,7,=,=,?(").."9_,=>P -@ 
!	 	 s   !DF55
G)r  c                   [        U [        [        R                  45      (       a  [        R                  " [        U 5      5      n U=(       d    0 n[
        R                  " U S5       nUR                  S5      R                  5       R                  S5      n[        U5      [        [        5      :X  d   eUS   [        [        S   5      :w  a  [        SU S[         S35      eS nS nS nS nUR                  5        GH  nUR                  UR                  5      n	UR                  S:X  a  U	nM3  UR                  S:X  a  [        S	5        U	nMR  UR                  S
:X  a  [        S	5        U	nMq  UR                  S:X  a  U	nM  UR                  S:X  a  U	nM  UR                  R!                  S5      (       a4  UR                  R                  SS5      S   n
U	R                  S5      X'   M  UR                  S:X  d  M  U	nGM     Uc   eUc   eUc   eUc   e["        R$                  " UUUU5      n['        U5      nUsS S S 5        $ ! , (       d  f       g = f)Nrrt  r,   r   zSerialized version re  r  zserialized_state_dict.jsonz"This version of file is deprecatedzserialized_constants.jsonr  r  r  /rg   rz  r  )r.   r/   r  r  r  r  r  readr   r   rx   r   RuntimeErrorinfolistfilenameprintr1   ro   r{  r[  )r  r  r  rt  r  serialized_state_dictserialized_constantsserialized_example_inputs	file_infofile_contentr  r~  r   s                r&   loadr    s?   
 !c2;;'((IIc!f#K	C	 D))I&--/55c:7|s>22221:^A.//%gY /""0!14  8<#150459!I99Y%7%78L!!%GG.:+##'CC:;(4%##'BB:;'3$##'AA(4%##'@@'3$##..}==$--33C;A>(4(;(;G(D%##'EE,8)' )* +666$000#///(444 //+%$)	 	 "q 
!	 	 s   'FI:A I
Ir    )Mr   ior]   loggingr   r  r  typingr   r   r   r   r   r   r	   executorch.exirexirexecutorch.exir.memoryr@   &executorch.exir.serde.export_serializeserdero   executorch.exir.serde.schemarB   r   torch.export.exported_programexportr   r   r
   ,executorch.exir._serialize._named_data_storer   +executorch.exir.backend.compile_spec_schemar   rY  executorch.exir.dialects._opsr   r   r   %executorch.exir.dialects.backend._opsr   "executorch.exir.dialects.edge._opsr   &executorch.exir.lowered_backend_moduler   r   r   r   r   r   torch._export.verifierr   torch.fx.experimentalr   torch.fx.tracebackr   	getLoggerr3   r   Logger__annotations__r   r   viewr   r   rZ  r   r/   r)  r{  r   r[  r  BytesIOr  r  r   r(   r&   <module>r     s3    	    	  D D D  ' ' A A - -  * * $ M M C = B  1 1 )''1W^^ 1C#,BB C#L?
 0 J J ?
F "4;;#3#3 
pG.FF pGfI "2"N"N I \ /3((DcN+ ((,11* -1.2QQS"++c"BJJ./Q $sCx.)	Q
 DcN+Q 
QF -1BS"++c"BJJ./B $sCx.)B 	Br(   