
    N jk                       % 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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rS SKJrJr  S SKJrJrJrJr  S SKJr  S SKJrJr  S SKJr  S SKJrJrJrJ r J!r!J"r"  S SK#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.J/r/  S SK0J1r1  S SK2J3r3  S SK4J5r5  S SK6J7r8  S SK9J:r:J;r;  S SK<J=r=  S SK>J?r?J@r@  S SKAJBrB  S SKCJDrD  S SKEJFrF  SSKGJHrH  SSKIJJrJ  SSKJJKrKJLrLJMrMJNrNJOrOJPrPJQrQJRrRJSrSJTrTJUrUJVrVJWrWJXrXJYrYJZrZJ[r[J\r\J]r]J^r^J_r_J`r`JaraJbrbJcrcJdrdJereJfrfJgrgJhrhJiriJjrjJkrkJlrlJmrmJnrnJoroJprpJqrqJrrrJsrsJtrtJuruJvrvJwrwJxrxJyryJzrzJ{r{J|r|J}r}J~r~  SSKJr  / SQr\	GR                  " \5      r " S S\5      rS\\\4   4S jr\"\.\\$R                  \\$R                  \\$R                  \(R                  4   rSrS r0 \$GR                  \mGR                   _\$GR"                  \mGR$                  _\$GR&                  \mGR(                  _\$GR*                  \mGR,                  _\$GR.                  \mGR0                  _\$GR2                  \mGR4                  _\$GR6                  \mGR8                  _\$GR:                  \mGR<                  _\$GR>                  \mGR@                  _\$GRB                  \mGRD                  _\$GRF                  \mGRH                  _\$GRJ                  \mGRL                  _\$GR                  \mGRN                  _\$GRP                  \mGRR                  _\$GRT                  \mGRV                  _\$GRX                  \mGRZ                  _\$GR\                  \mGR^                  _\$GR`                  \mGRb                  0Er\" \5      r\$GRh                  \`GRj                  \$GRl                  \`GRn                  \$GRp                  \`GRr                  \$GRt                  \`GRv                  \$GRx                  \`GRz                  \$GR|                  \`GR|                  \$GR~                  \`GR                  0r\" \5      r\$GR                  \bGR                  \$GR                  \bGR                  \$GR                  \bGR                  \$GR                  \bGR                  0r\" \5      r\GR                  \GR                  \GR                  \GR                  \GR                  \GR                  \GR                  \GR                  \
GR                  \$GR                  \GR                  \GR                  \GR                  \GR                  \GR                  \GR                  \$GR                  \$GR                  \$GR                  \$GR                  \$GR                  \$GR                  \GR                  \GR                  \GR                  \GR                  \GR                  1r\" S! \ 5       5      (       a  \" S"5      e\ " S# S$5      5       r\ " S% S&5      5       r " S' S(\5      rS\QS)\$GR                  4S* jrS+\\v   S)\\S,4   4S- jrS.\\v   S)\\S,4   4S/ jrS0\mS)\$GR                  4S1 jrS2\vS)\4S3 jrS4\"\$R                  \$R                  \$R                  \#GR                  4   4S5 jrS4\"\\$R                  4   S)\v4S6 jrS4\"\\$R                  4   S)\t4S7 jrS4\"\\$R                  4   S)\p4S8 jrS9\$GR                  S)\y4S: jrSq\!S;   \S<'   S=\.4S> jrS?G\ S@\S)\.4SA jGr\4SB\!\   SC\S)G\ 4SD jjGrSE\"\G\\4   \\S,4   G\ 4   4SF jGrSG\#GR                  SHG\S)\!\   4SI jGrSG\!\   S)\#GR                  4SJ jGrSK\#GR                  SL\@4SM jGrSN\\#GR                  \B4   S)\G\\l4   4SO jGr	SP Gr
\ " SQ SR5      5       Gr " SS STG\5      GrSU GrSV\$GR                  R                  4SW jGr\  " SX SYG\SZ95       Gr\  " S[ S\G\SZ95       Gr\  " S] S;G\SZ95       Gr\  " S^ S_G\SZ95       Gr " S` Sa\GR*                  5      GrSb GrSc\S)G\ 4Sd jGrS\4Se\(R                  Sf\!\G\\4      SC\S)\4Sg jjGrSh GrSi GrSj\SkG\ S)\4Sl jGr S}SmSn.SB\So\!\G\\4      S)\(R                  4Sp jjjGrS)\\U\G\G\4   4   4Sq jGr S}Sr\RSs\!G\G\      S)\R4St jjGr  " Su Sv5      Gr!SwG\\   SxG\G\!   4Sy jGr"Sz Gr#0 Gr$\G\\   G\G\!   4   \S{'   0 Gr%\G\G\G\!   4   \S|'   g)~    N)
namedtupleOrderedDict)CallableIterableIteratorSequence)contextmanager)	dataclassfield)Enum)	AnnotatedAnycastfinalOptionalUnion)&_enable_graph_inputs_of_type_nn_module)load_verifier)
FakeTensorFakeTensorMode)_ConstantAttributeType)symbolic_shapes)
NodeSource)_pytree)treespec_dumpstreespec_loads)int_oo)
prefix_strSymT)ValueRanges)CapturedTraceback)
has_triton   )remove_proxy_from_state_dict   )schema)4ArgumentArgumentKindBufferMutationSpecComplexValueConstantValueCustomObjArgumentDeviceExportedProgramGradientToParameterSpecGradientToUserInputSpecGraphGraphArgumentGraphModuleGraphSignature	InputSpecInputToBufferSpecInputToConstantInputSpecInputToCustomObjSpecInputTokenSpecInputToParameterSpecInputToTensorConstantSpecLayoutLossOutputSpecMemoryFormatModuleCallEntryModuleCallSignatureNamedArgumentNamedTupleDefNodeOptionalTensorArgument
OutputSpecOutputTokenSpecParameterMutationSpecRangeConstraint
ScalarTypeSCHEMA_VERSIONSchemaVersionSymBoolSymBoolArgumentSymExprSymExprHintSymFloatSymFloatArgumentSymIntSymIntArgumentTensorArgument
TensorMetaTokenArgumentTREESPEC_VERSIONUserInputMutationSpecUserInputSpecUserOutputSpec)_Union)	serializeGraphModuleSerializerExportedProgramSerializerGraphModuleDeserializerExportedProgramDeserializerc                       \ rS rSrSrg)SerializeErrorp    N)__name__
__module____qualname____firstlineno____static_attributes__rd       n/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/torch/_export/serde/serialize.pyrb   rb   p   s    rj   rb   dc                 n    U R                  5        VVs0 s H  u  pUR                  U_M     snn$ s  snnf N)itemsvalue)rl   kvs      rk   _reverse_maprs   t   s*    #$779-941AGGQJ9---s   1;c              #   j   #    U  H)  n[        U[        R                  R                  5      v   M+     g 7frn   )
isinstancetorch_ops
OpOverload).0ops     rk   	<genexpr>r|      s$     @xz"ejj++,,x   13z0_SYM_OPS should not contain OpOverload instancesc                   >    \ rS rSr% \\S'   \\S'   \\S'   \\S'   Srg)SerializedArtifact   exported_program
state_dict	constantsexample_inputsrd   N)re   rf   rg   rh   bytes__annotations__ri   rd   rj   rk   r   r      s    rj   r   c                   >    \ rS rSr% \\S'   \\S'   \\S'   \\S'   Srg)_SerializedProgram   r   r   r   r   rd   N)re   rf   rg   rh   r.   r   r   ri   rd   rj   rk   r   r      s    %%rj   r   c                   0    \ rS rSrSrS rS rS rS rSr	g)	LazyMap   z
Dictionary class for deferred instantiation of node metadata values.
Purpose is to avoid creation of symbolic-shape tensors before relevant shape guards are parsed.
c                 0    0 U l         [        5       U l        g rn   )mapset	evaluatedselfs    rk   __init__LazyMap.__init__   s    rj   c                      X R                   U'   g rn   )r   )r   rq   rr   s      rk   __setitem__LazyMap.__setitem__   s    rj   c                     U R                   U   nXR                  ;   a  U$ U R                  R                  U5        U" 5       U R                   U'   U R                   U   $ rn   )r   r   add)r   rq   outs      rk   __getitem__LazyMap.__getitem__   sM    hhqkJ1exx{rj   c                 6    U R                   R                  5       $ rn   )r   __repr__r   s    rk   r   LazyMap.__repr__   s    xx  ""rj   )r   r   N)
re   rf   rg   rh   __doc__r   r   r   r   ri   rd   rj   rk   r   r      s    
#rj   r   returnc                     U R                   c  [        R                  " U R                  S9$ [        R                  " U R                  U R                   S9$ )N)typer   index)r   rw   devicer   )rl   s    rk   deserialize_devicer     s7    ww||((<<QVV17733rj   sizes.c                     U  H+  nUR                   S:w  d  M  [        SUR                    35      e   [        S U  5       5      $ )Nas_intOnly as_int is supported, got c              3   8   #    U  H  oR                   v   M     g 7frn   r   )rz   sym_int_sizes     rk   r|   #deserialize_size.<locals>.<genexpr>  s     ?$$   r   AssertionErrortuple)r   r   s     rk   deserialize_sizer   
  sG    ( #A,BSBSAT!UVV  ????rj   stridesc                     U  H+  nUR                   S:w  d  M  [        SUR                    35      e   [        S U  5       5      $ )Nr   r   c              3   8   #    U  H  oR                   v   M     g 7frn   r   )rz   sym_int_strides     rk   r|   %deserialize_stride.<locals>.<genexpr>  s     EW>&&Wr   r   )r   r   s     rk   deserialize_strider     sG    !(* #A.BUBUAV!WXX " EWEEErj   stc                     [         U    $ rn   )_SERIALIZE_TO_TORCH_DTYPE)r   s    rk   deserialize_scalar_typer     s    $R((rj   offsetc                 j    U R                   S:w  a  [        SU R                    35      eU R                  $ )Nr   r   )r   r   r   )r   s    rk   deserialize_storage_offsetr     s/    {{h=fkk]KLL==rj   sc                     [        U [        R                  [        R                  [        R                  45      (       a  U R
                  R                  n [        R                  R                  R                  U 5      $ rn   )rv   rw   rR   rL   rP   nodeexprsympyprintingreprsreprr   s    rk   _print_sympyr   "  sJ    !ellEMM5>>BCCFFKK>>$$Q''rj   c           	         [        U [        R                  [        R                  [
        45      (       Ga  [        R                  " U 5      (       a  [        R                  " [        U 5      S9$ [        U [        R                  [        R                  45      (       d!  [        S[        U 5      R                   35      eU R                  R                  c&  [        R                  " [        [        U 5      5      S9$ [        R                  " [        [        U 5      [         R                  " U R                  R                  S9S9S9$ [#        SU  S[        U 5       S35      e)Nr   zexpected SymInt or Symbol, got as_exprhintz,SymInt should be either symbol or int, got `` of type ``)rv   rw   rR   r   Symbolintr   is_concrete_intcreater   r   re   r   r   rN   r   rO   rb   r   s    rk   serialize_sym_intr   (  s   !ellELL#677**1--==A//a%,,!=>>$5d1g6F6F5GH  vv{{"}}W\!_-EFF}}#$Q(//qvv{{C  :1#[a	QRS
 	
rj   c           	         [        U [        R                  [        R                  [
        45      (       Ga  [        R                  " U 5      (       a  [        R                  " [        U 5      S9$ [        U [        R                  [        R                  45      (       d!  [        S[        U 5      R                   35      eU R                  R                  c&  [        R                  " [        [        U 5      5      S9$ [        R                  " [        [        U 5      [         R                  " U R                  R                  S9S9S9$ [#        SU  S[        U 5       S35      e)Nas_floatz!expected SymFloat or Symbol, got r   r   z0SymFloat should be either symbol or float, got `r   r   )rv   rw   rP   r   r   floatr   is_concrete_floatr   r   r   re   r   r   rN   r   rO   rb   r   s    rk   serialize_sym_floatr   @  s   !ennellE:;;,,Q//??E!H55a%..%,,!?@@$7Q8H8H7IJ  vv{{"w|A/GHH#$Q(//E  >qcTRSWIUVW
 	
rj   c                 :   [        U [        R                  [        45      (       a\  [        R
                  " U 5      (       a  [        R                  " [        U 5      S9$ [        R                  " [        [        U 5      S9S9$ [        SU  S[        U 5       S35      e)Nas_bool)expr_strr   z.SymBool should be either symbol or bool, got `r   r   )rv   rw   rL   boolr   is_concrete_boolr   rN   r   rb   r   r   s    rk   serialize_sym_boolr   X  sy    !emmT*++++A..>>$q'22>>'<?*KLL<QC{4PQ7)STU
 	
rj   tc                    [        [        U R                     U R                   Vs/ s H  n[	        U5      PM     snU R
                  [        U R                  R                  U R                  R                  S9U R                  5        Vs/ s H  n[	        U5      PM     sn[	        U R                  5       5      [        U R                     S9$ s  snf s  snf )z&
Extract a TensorMeta describing `t`.
r   )dtyper   requires_gradr   r   storage_offsetlayout)rU   _TORCH_TO_SERIALIZE_DTYPEr   shaper   r   r-   r   r   r   strider   _TORCH_TO_SERIALIZE_LAYOUTr   )r   r   s     rk   serialize_tensor_metar   d  s     '0-.WW5W #W5oo188==?/0xxz:z!"1%z:()9)9);<)!((3 5 ;s   C
Cr_   _CURRENT_DESERIALIZERfake_tensorc                     [        U [        R                  R                  5      n[	        U 5      n[
        R                  " [        U5      [        S9R                  S5      n[        X144$ )Nclsutf-8)rv   rw   nn	Parameterr   jsondumps_dataclass_to_dictEnumEncoderencode_reconstruct_fake_tensor)r   is_parametertensor_metatensor_meta_bytess       rk   _reduce_fake_tensorr  v  sW    k588+=+=>L'4K

;'[fWo  $&7%FFFrj   serialized_tensor_metar   c                 
   [         R                  " U R                  S5      5      n[        [        U5      n[
        c  [        S5      e[
        R                  U5      nU(       a  [        R                  R                  U5      nU$ )Nr   z)Need access to current deserializer state)r   loadsdecode_dict_to_dataclassrU   r   r   deserialize_tensor_metarw   r   r   )r  r   json_tensor_metar   r   s        rk   r   r     sk     zz"8"?"?"HI$Z1ABK$HII'??LKhh((5rj   artifactpickle_protocolc                 b   U c  g[         [        R                  ;   a  [        S5      e [        R                  " [         [
        5        [        R                  " 5       n[        R                  " XUS9  UR                  5       [        R                  [         	 $ ! [        R                  [         	 f = f)Nrj   z0Refusing to stomp on existing FakeTensor reducer)r
  )r   copyregdispatch_tabler   pickler  ioBytesIOrw   savegetvalue)r	  r
  buffers      rk   serialize_torch_artifactr    s}     W+++OPP/z#67 	

8_E "":.G"":.s   AB B.
serializedc                 
   [        U [        [        45      (       a  U $ [        U 5      S:X  a  0 $ [        R
                  " U 5      nUR                  S5         [        R                  " USS9n[        U[        [        45      (       d!  [        S[        U5      R                   35      eU$ ! [         aN  nUR                  S5        [        R                  " USS9n[        R                  S[        U5      US9   S nANS nAff = f)Nr   T)weights_onlyFz\Fallback to weights_only=False succeeded. Loaded object of type %s after initial failure: %s)exc_infozexpected tuple or dict, got )rv   dictr   lenr  r  seekrw   load	Exceptionlogwarningr   r   re   )r  r  r	  es       rk   deserialize_torch_artifactr!    s     *tUm,,
:!	ZZ
#F
KKN

::f48 h..;DN<S<S;TUVVO  
A::f59AN	 	 	

s   B* *
D4AC==Dvaladjustc                    U [         R                  [        4;   a  g U [         R                  * [        * 4;   a  g [        U [         R                  5      (       a  [        U 5      $ [        R                  S[        U 5      U U5        US:X  a  [        R                  " U 5      $ US:X  a  [        R                  " U 5      $ [        SU 35      e)NztExport constraints cannot be non-integer expressions. Found type %s, and value %s. We will attempt to %s this value.floorceilzGot invalid adjustment )r   oor   rv   Integerr   r  r  r   mathr%  r&  RuntimeError)r"  r#  s     rk   _sympy_int_to_intr+    s    
uxx  
y6'""#u}}%%3x KK	 	S	 zz#	6	yy~4VH=>>rj   c                     U c  U$ U [         * [         4;   a  U $ U [        R                  :X  a  [         $ U [        R                  * :X  a  [         * $ [        R                  " U 5      $ rn   )r   r)  infr   r(  )r"  defaults     rk   _int_to_sympy_intr/    sT    
{
w

dhh
txxiw==rj   symsym_typec                 P    [        [        U 5      [        [        U   5      S  5      $ rn   )r   strr  r   )r0  r1  s     rk   _symbol_indexr4    s#    s3xJx013455rj   range_constraintsc                     U R                  5        VVs0 s HC  u  p[        U5      [        [        UR                  S5      [        UR
                  S5      5      _ME     snn$ s  snnf )Nr&  r%  )ro   r3  rH   r+  lowerupper)r5  rq   rr   s      rk   serialize_range_constraintsr9    sd     &++-
 .DA	 	Aaggv.aggw/
 	
 .  s   A
A"c                    [        U [        R                  R                  5      (       a  U R                  $ [        U 5      [        ;   a!  [        [        U 5         R                  U 5      $ [        S[        U 5       35      e)NzCannot find schema for )	rv   rw   rx   ry   _schemar   _serialization_registry	op_schemar*  )targets    rk   _get_schema_from_targetr?    sa    &%**//00~~	f0	0&tF|4>>vFF
0f?
@@rj   c                      \ rS rSr% \" \S9r\\   \S'   \" \S9r	\\   \S'   \" \S9r
\\   \S'   \" \S9r\\\4   \S'   \" \S9r\\\4   \S'   \" \S9r\\\4   \S'   \" \S9r\\\4   \S	'   S
r\\S'   \" \S9r\\\4   \S'   Srg)
GraphStatei   )default_factoryinputsoutputsnodestensor_valuessym_int_valuessym_bool_valuessym_float_valuesFis_single_tensor_returncustom_obj_valuesrd   N)re   rf   rg   rh   r   listrC  r'   r   rD  rE  rC   r  rF  r3  rU   rG  rR   rH  rL   rI  rP   rJ  r   rK  r,   ri   rd   rj   rk   rA  rA     s    "48FDN8#D9GT(^9d3E4:3+0+FM4Z(F(-d(CNDf%C*/*EOT#w,'E,1$,Gd3=)G$)T)6;D6QtC!223Qrj   rA  c                       \ rS rSrS rSrg)Finali  c                     U H1  n[        U[        5      (       d  M  [        SUR                   S35      e   [        R                  XU[        U5      5      $ )Nztype 'z ' is not an acceptable base type)rv   rN  	TypeErrorre   r   __new__r  )metaclsnamebases	classdictbs        rk   rQ  Final.__new__  sK    A!U##&4T UVV  ||G5$y/BBrj   rd   N)re   rf   rg   rh   rQ  ri   rd   rj   rk   rN  rN    s    Crj   rN  c                     / SQnU HA  n[        X5      (       d  M  [        X5      (       d  M'  [        X5      [        X5      :w  d  MA    g   g)N)num_cpu_threads	num_warps
num_stagesnum_ctasFT)hasattrgetattr)configentry_metadatametadata_attrsattrs       rk   is_metadata_matchedrc    s@    ON6  W^%B%Bv$(EE  rj   r   c                    U R                   [        R                  R                  R                  La  [        SU R                    35      e[        5       (       d  [        S5      eSSKJn  SSK	J
n  [        U R                  S   [        5      (       d$  [        S[        U R                  S   5       35      e[        R                  R                  R                  R!                  U R                  S   5      n[        X15      nU(       a  UR"                  OUn[%        US5      (       at  UR&                  n[)        UR+                  5       5      S	:w  a%  [        S
[)        UR+                  5       5       35      e[-        [/        UR1                  5       5      5      S   nO[%        US5      (       aq  UR2                  n[)        UR+                  5       5      S	:w  a%  [        S[)        UR+                  5       5       35      e[-        [/        UR1                  5       5      5      nO[        SUR4                   35      e[)        UR+                  5       5      S	:X  a$  U[-        [/        UR1                  5       5      5      4$ [        XR5      =(       a+    [%        US5      =(       a    [)        UR6                  5      S:  nU(       Ga  0 n	UR6                   Hm  n
U
[)        UR8                  5      :  d  M  UR8                  U
   nU R                  R;                  S0 5      n[        U[<        5      (       d  M`  X;   d  Mg  X   X'   Mo     UR6                   Vs/ s H)  nUR8                  U   U	;   d  M  XR8                  U      PM+     nn/ nU HP  n[        U[>        [        [@        45      (       a  URC                  U5        M6  URC                  [E        U5      5        MR     / nURG                  5        H  u  nn[H        RJ                  " SU5      nU(       d  M&  / nU H:  nUS;   a  URC                  US:H  5        M   URC                  [A        U5      5        M<     UU:X  d  Mp  URC                  UU45        M     O[O        URG                  5       5      n[)        U5      S:X  a2  [        SUR4                   S[O        UR+                  5       5       35      e[)        U5      S	:X  a
  UUS   S	   4$ U(       ai  U H>  u  nnURP                  nURR                   H  n[U        UU5      (       d  M  UU4s  s  $    M@     [        SUR4                   SU(       a  SOS S35      e[        SUR4                   SU(       a  SOS SU VVs/ s H  u  nnUPM
     snn 35      es  snf ! [L         aD     URC                  [        U5      5         GM  ! [L         a    URC                  U5          GM  f = ff = fs  snnf )Nz/expected triton_kernel_wrapper_functional, got z+triton required to serialize triton kernelsr   )	Autotuner)JITFunction
kernel_idxz#expected kernel_idx to be int, got device_cachesr%   z%expected exactly 1 device cache, got cachez"expected exactly 1 cache key, got z#kernel caches not found for kernel 
constexprskwargsz\('constexpr',\s*([^)]+)\))TrueFalserl  z[couldn't find a kernel cache entry with metadata matching the autotuner configs for kernel z. Available cache keys: z2Multiple cache entries found for autotuned kernel  zwith same constexpr valueszwith no constexprz* and couldn't disambiguate using configs. z6Multiple cache entries found for non-autotuned kernel z0. This should not happen. Available cache keys: )+r>  rw   _higher_order_opstriton_kernel_wrap triton_kernel_wrapper_functionalr   r"   triton.runtime.autotunerre  triton.runtime.jitrf  rv   rk  r   r   kernel_side_table
get_kernelfnr]  rh  r  keysnextitervaluesri  re   rj  	arg_namesgetr  r   r   appendr3  ro   refindall
ValueErrorrL  metadataconfigsrc  )r   re  rf  kernelis_autotuneractual_kernelcachesri  has_constexprsconstexpr_valsconstexpr_idx
param_namekwargs_dictidxexpected_valuesnormalized_expectedr"  matching_entriessig_keycache_entryconstexpr_matchesconstexpr_valuesmatch_sig_keyr`  r_  key_s                               rk   !get_triton_kernel_and_cache_entryr    s   &&99ZZ	[ =dkk]K
 	
 <<JKK2.dkk,/551$t{{<7P2Q1RS
 	
 $$77IITTL!F f0L!-FII6M}o..,,v{{}" 7FKKM8J7KL  T&--/*+A.		(	($$v{{}" 4S5G4HI  T&--/*+1-2H2H1IJ
 	

 5::<Ad4#7888 	=. 	.M<0	.(()A-  *55Ms=#:#:;;*44]C
"kkooh;k400!05@5L2 6 %//	
 0&&s+~=	 9N22378/	 	 
 !"C#c5122#**3/ $**3s84 # $)KKM G[ "

+H' R  
 $& .E 11(//@?,33E%LA / $'::$++Wk,BC+ %2.  .
!ijw  kA  kA  jB B%%)%**,%7$8:
 	
 !.q1!444%5!Hk(11N ..&v~>>(+55 ) &6 @AWAW@XXY/=+CVW X89
 	
 
@AWAW@XXY+9'?R
S T9L\9]L\&#q#L\9]8^	` U
L  * ?? 0 7 7E
 C C#- ? 0 7 7 > >??P :^s<   V#V.V3W"
WV::W	WW	Wc                   L   \ rS rSrS\R
                  S\\R                     4S jr\	S 5       r
S\R                  R                  4S jrS\R                  R                  4S jrS	\4S
 jrS\R                  R                  4S jrS rS	\\R                  R                     4S jrS	\4S jrS\R                  R                  S	\\\4   4S jrS\\\      S	\\\\\4         4S jrS\R8                  S	\4S jrS	\\   4S jr S;S\S	\\   4S jjr S	\\   4S jr!S	\"4S jr#S	\"4S jr$S	\"4S jr%S	\"4S jr&S;S\\   S	\'4S jjr(S	\)4S jr*S	\+4S  jr,S	\-4S! jr.S	\+4S" jr/S#\R`                  S	\04S$ jr1S#\Rd                  S	\24S% jr3S&\R
                  S	\44S' jr5S(\Rl                  S	\'4S) jr7S*\8Rr                  S	\4S+ jr:S,\Rv                  S	\;4S- jr<S\\R                     S	\\   4S. jr=S\R                  R                  S	\\'   4S/ jr>S\R                  R                  S	\\'   4S0 jr?S1\S2\S	\'4S3 jr@S\R                  R                  S	\\)   4S4 jrAS5\R                  R                  S	\C4S6 jrDS7\\\4   4S8 jrES5\R                  R                  S	\B4S9 jrFS:rGg)<r]   i  graph_signaturemodule_call_graphc                 d    [        5       U l        Xl        X l        0 U l        0 U l        0 U l        g rn   )rA  graph_stater  r  custom_objsduplicate_getitem_nodestreespec_namedtuple_fields)r   r  r  s      rk   r   GraphModuleSerializer.__init__  s2    
 &<.!2=?79$DF'rj   c              #   n   #    U R                   n[        5       U l          S v   Xl         g ! Xl         f = f7frn   )r  rA  r   saveds     rk   save_graph_state&GraphModuleSerializer.save_graph_state  s.       %<	%$us   5* 525r   c           
      N   UR                   S:w  a  [        SUR                    35      eUR                  S   n[        R	                  SUR
                  U5        [        U[        R                  5      (       a0  [        R                  " U R                  UR
                  U5      S9nGOY[        U[        R                  5      (       a0  [        R                  " U R                  UR
                  U5      S9nGO
[        U[        R                  5      (       a  [        S5      e[        U[        [         ["        [$        ['        S 5      45      (       a  U R)                  U5      nO[        U[*        R,                  5      (       ae  UR.                  n[        R                  " [-        UR
                  US9S	9nU R1                  U5      U R2                  R4                  UR
                  '   O[        S
UR                  S    35      eU R2                  R6                  R9                  U5        g )Nplaceholderzexpected placeholder op, got r"  z[handle_placeholder] %s: %s	as_tensor
as_sym_intz,SymFloat graph input is not implemented yet.rS  	class_fqnas_custom_objz Unimplemented graph input type: )r{   r   metar  debugrS  rv   rw   Tensorr'   r   serialize_tensor_outputrR   serialize_sym_int_outputrP   r   r   r3  r   r   serialize_inputepr,   r  serialize_script_obj_metar  rK  rC  r}  )r   r   r"  graph_inputr  s        rk   handle_placeholder(GraphModuleSerializer.handle_placeholder  s   77m# #@	!JKKii		/C@c5<<(("//66tyy#FK U\\**"//88CHK U^^,, !OPPc4eT$Z@AA..s3KR1122I"///TYY)TK ..s3 ..tyy9 !#CDIIeDTCU!VWW&&{3rj   c                    UR                   S:w  a  [        SUR                    35      e[        UR                  5      S:w  a!  [        S[        UR                  5       35      eUR                  S   n[        R                  SUR                  U5        [        U[        R                  R                  5      (       a3  SU R                  l        U R                  U5      /U R                  l        g [        U[        [         45      (       d  [        S[#        U5       35      eU Vs/ s H  o0R                  U5      PM     snU R                  l        g s  snf )	Noutputzexpected output op, got r%   z(FX.Node's args should have one arg, got r   z[handle_output] %s: %sTzexpected tuple or list, got )r{   r   r  argsr  r  rS  rv   rw   fxrC   r  rJ  r  rD  r   rL  r   )r   r   	node_argsargs       rk   handle_output#GraphModuleSerializer.handle_output  s
   77h #;DGG9!EFFtyy>Q :3tyy>:JK  IIaL			*DIIyAi//7;D4(,(<(<Y(G'HD$i%77$'CDOCT%UVVMV'WYc(<(<S(AY'WD$'Ws   %Er   c                     [        U[        5      (       a  U$ UR                  R                  S5      (       a-  UR                  R	                  SS5      nU SUR
                   3$ UR                   SUR
                   3$ )Nz
torch._opsz	torch.ops.)rv   r3  rf   
startswithreplacere   )r   r>  modules      rk   serialize_operator(GraphModuleSerializer.serialize_operator  sx    fc""M)),77 &&..|[IFXQv/00''(&//):;;rj   c           
      @  ^  UR                   S:w  a  [        SUR                    35      eUR                  R                  S5      n[        R                  SUR                  UR                  UR                  UR                  U5        UR                  [        R                  L a  g UR                  [        ;   dA  Ub  [        U[        R                  [        R                   [        R"                  45      (       a  [%        UR                  5      S:w  a!  [        S[%        UR                  5       35      e['        UR                  T R)                  UR                  5      T R+                  UR                  UR                  5      T R-                  UR                  U5      /T R/                  U5      S9nG	O2[        UR                  [        R0                  R2                  5      (       a  ['        UR                  T R)                  UR                  5      T R5                  UR                  UR                  UR                  5      T R7                  U5      T R/                  U5      S9nGO[        UR                  [        R0                  R8                  5      (       Ga  S[:        4S	 jnUR                  [        R<                  R>                  L Ga  [A        UR                  5      nUR                  S   R                  n[C        URD                  RF                  U5      (       d  [        S
U 35      e[I        URD                  RF                  U5      nURJ                  US'   S US'   / nUS   b  [        US   [L        5      (       a  US    Hx  n	[        U	[        RN                  R&                  5      (       a;  [        U	R                  R                  SS 5      [P        RR                  5      (       a  Mg  URU                  U	5        Mz     XS'   U 4S jn
['        UR                  T R)                  UR                  5      T RW                  XQR                  5      U
" U5      T R/                  U5      SS9nGOxUR                  [        R<                  RX                  RZ                  L Ga$  []        U5      u  pUR^                  nUR                  S   n[        U[`        5      (       d!  [        S[c        U5      Rd                   35      eURg                  5       n/ nURh                   Vs1 s H"  nURj                  (       d  M  UR                  iM$     nnSnSnSn[        UR                  S   [`        5      (       d$  [        S[c        UR                  S   5       35      eUR                  S   Rm                  5        HD  u  nnUU;   a  SnM  U(       a  [        S5      eUU;   a  URU                  U5        UU4-  nUS-  nMF     [        UR                  S   [@        5      (       d$  [        S[c        UR                  S   5       35      eURn                  Rd                   SURp                   3nUUR                  S   S   UURr                  S.n[C        US5      (       a  URt                  US'   [C        US5      (       aG  [        URv                  [:        5      (       a  [y        URv                  5      US'   OURv                  US'   [C        US5      (       a  URz                  US'   [C        US5      (       a  UR|                  US'   [C        US5      (       a  UR~                  US'   URh                   Vs/ s H"  nURj                  (       a  M  UR                  PM$     snUS '   [I        [I        US!S 5      S"S 5      nUba  URh                   Vs/ s HE  nURj                  (       a  M  [        UR                  UR                  UR                  5      5      PMG     snUS#'   OFURh                   Vs/ s H+  nURj                  (       a  M  [        UR                  5      PM-     snUS#'   ['        UR                  T R)                  UR                  5      T RW                  UU5      T R                  U5      T R/                  U5      U" U5      S9nGO"['        UR                  T R)                  UR                  5      T RW                  UR                  UR                  5      T R                  U5      T R/                  U5      U" U5      S9nGO[c        UR                  5      [        ;   Gap  [c        UR                  5      [        ;  a!  [        [c        UR                  5       S$35      e[        [c        UR                  5         nUR                  5       nUR                  UR                  5      n[        U[        5      (       a  [        U[        5      (       d7  [        S%[c        U5      Rd                   S&[c        U5      Rd                   35      eS'U;   d  S'U;   a  [        S(U< S&U< 35      e['        UR                  S)U S'U 3T R5                  UR                  UR                  UR                  5      T R7                  U5      T R/                  U5      S9nO[        S*UR                   S+35      eT R                  R                  RU                  U5        g s  snf s  snf s  snf s  snf ),Ncall_functionzexpected call_function op, got r"  z-[handle_call_function] %s: %s(%s, {%s}) -> %sr   z#expected no kwargs for sym op, got )rS  r>  rC  rD  r  r   c                 @   [        U R                  [        R                  R                  5      (       d+  [        S[        U R                  5      R                   35      eU R                  R                  SS 5      nUS L=(       a    [        U[        R                  5      $ )Nz"expected HigherOrderOperator, got r"  )rv   r>  rw   rx   HigherOrderOperatorr   r   re   r  r|  r  )r   meta_vals     rk   _is_hop_single_tensor_returnPGraphModuleSerializer.handle_call_function.<locals>._is_hop_single_tensor_return3  su    !$++uzz/M/MNN(<T$++=N=W=W<XY   99==5t+R
8U\\0RRrj   z&owning_module does not have attribute r%   r#   c                    > U R                   R                  SS 5      n/ n[        U5       H6  u  p4TR                  X5      nUR	                  TR                  XT5      5        M8     [        R                  " US9/$ )Nr"  
as_tensors)r  r|  	enumerate_output_node_name_at_indexr}  r  r'   r   )r   r  tensor_argsr  r  rS  r   s         rk   serialize_tensor_list_outputPGraphModuleSerializer.handle_call_function.<locals>.serialize_tensor_list_output\  sj    #yy}}UD9H"$K%.x%8	#>>tI#**4+G+G+ST &9 %OO{CDDrj   F)rS  r>  rC  rD  r  is_hop_single_tensor_returnz"expected meta_val to be dict, got rd   rk  z*expected kwargs['kwargs'] to be dict, got Tz/non-constexpr args found after constexpr arg(s)gridzexpected grid to be list, got r  )rS  r  output_indicesrZ  rY  sharedshared_memory_bytes
tile_widthtile_heightbase_pekernel_param_namessrc	signaturekernel_param_typesz* is not supported in export serialization.z.expected namespace and op_name to be str, got z and :z2namespace and op_name should not contain ':', got #zSerializing z is not supported)Ir{   r   r  r|  r  r  rS  r>  r  rk  operatorgetitem_SYM_OPSrv   rw   rR   rL   rP   r  rC   r  serialize_sym_op_inputsserialize_outputserialize_metadatarx   ry   serialize_inputsserialize_outputsr  r   ro  aoti_call_delegaterL  r]  graphowning_moduler^  	aoti_pathr   r  r  r,   r}  serialize_hoo_inputsrp  rq  r  r  r  r   re   rw  paramsis_constexprro   rv  hashrZ  rY  r  r   r  r  r  r3  
annotationserialize_hoo_outputsr<  	namespace
to_op_namerb   r  rE  )r   r   r  ex_noder  serializable_argslowered_module_namelowered_moduleserializable_weight_nodesweight_noder  r  kernel_cache_entrykernel_cache_metadataoutput_keysr  pconstexpr_keysfound_constexprargs_newirq   rr   kernel_name_with_hash
kwargs_newcompiled_signaturehandlerr  op_names   `                            rk   handle_call_function*GraphModuleSerializer.handle_call_function  s	   77o% #B477)!LMM99=='		;IIKKIIKK	
 ;;(***;;(" 8ellEMM5>>%RSS4;;1$$9#dkk:J9KL  YY..t{{;33DKKK..tyy(CD006G UZZ%:%:;;YY..t{{;,,T[[$))T[[Q..t4006G UZZ%C%CDDSd S {{e55HHH$(O! ,099Q<+<+<#tzz779LMM(@AT@UV  "))A)ACV!W'5'?'?!!$ (,!!$,.)$Q'3
%a((9 9 (9'; &k588==AAj',,00=r?S?SG G %188E (< ,Ea(E 224;;?445FT8>!44T:05 **==^^_ .Ot-T*(:(C(C%99U+!(D11(<T(^=T=T<UV  'mmo!#28--!R-Q1>>&!&&-!R"'!$++h"7>>(DT$++V^J_E`Dab  !KK1779DAq N**. &,M  K'&--a0$HFA! :$ "$++f"5t<<(8dkk&>Q9R8ST 
 yy))*!,A,F,F+GH & 2 KK/2&4!6!@!@	
 02CDD-== 01 0(;;!"7">">EE<?188=
#89 =R<X<X
#89 0,??/D/O/OJ|,0-@@0E0Q0QJ}-0)<<,A,I,IJy) %+MM4$1qFAFFM4
/0 &-.t<k4&" &1 "(8!.A ~~ J.221661<<HI!.8J34 4:==83@a)ALL)=8J34 224;;?44XzJ 66t<!44T:0LT0R 224;;?44TYYL 66t<!44T:0LT0R $++"99DKK (??$DKK())ST  .d4;;.?@G))+I((5Gi--Z5M5M$DT)_E]E]D^^cdhipdqdzdzc{|  i3'>$HUZ[bZef  YY9+Qwi0,,T[[$))T[[Q..t4006G !<}<M!NOO%%g.G "S~488s0   l7l,lll3l%l>lc                 D    [         R                  SUR                  5        g )Nz[handle_get_attr] %s)r  r  rS  )r   r   s     rk   handle_get_attr%GraphModuleSerializer.handle_get_attr  s    		($))4rj   c                    S nUR                    Hl  nUR                  [        R                  La  [	        U S35      eX$R
                  S   :X  d  MB  Uc  UnMI  UR                  U R                  UR                  '   Mn     U$ )Nz is not a getitem noder%   )usersr>  r  r  r   r  rS  r  )r   r   r   	user_nodeusers        rk   _output_node_at_index+GraphModuleSerializer._output_node_at_index  sv    	JJD{{("2"22$v-C%DEE		!$$ $I ?HnnD00;  rj   c                 d    U R                  X5      nUc  UR                   SU 3$ UR                  $ )N_unused_)r  rS  )r   r   r   r  s       rk   r  0GraphModuleSerializer._output_node_name_at_index  s7    ..t;	ii[00>>!rj   c           	         0 nUR                   R                  S5      =n(       a  X2S'   UR                   R                  S5      =n(       aJ  S nUR                  5        VVs/ s H  u  pgU SU" U5       3PM     nnn[        R	                  U5      US'   UR                   R                  S5      =n	(       aD  U	 V
s/ s H  n
U
S    SU R                  U
S   5       3PM!     nn
[        R	                  U5      US'   UR                   R                  S5      =n(       a!  [        R	                  [        U5      5      US'   UR                   R                  S	5      =n(       a   [        R                  " U5      US	'   SUR                   ;   a7  UR                   S   n[        R                  " U R                  U5      5      US'   U$ s  snnf s  sn
f ! [         a!  n[        S
UR                   SU 35      UeS nAff = f)Nstack_tracenn_module_stackc                    [        U [        5      (       a  [        U 5      S:w  aF  [        U [        5      (       a  [        U 5      OSn[        S[	        U 5      R
                   SU 35      eU u  p#[        U[        5      (       d!  [        S[	        U5      R
                   35      e[        U[        5      (       d!  [        S[	        U5      R
                   35      eUS-   U-   $ )Nr#   zN/Az expected tuple of length 2, got z of length zexpected path to be str, got zexpected ty to be str, got ,)rv   r   r  r   r   re   r3  )r"  val_lenpathtys       rk   export_nn_module_stackHGraphModuleSerializer.serialize_metadata.<locals>.export_nn_module_stack!  s    !#u--SQ*4S%*@*@c#heG(:49;M;M:NkZaYbc  !$,,(7T
8K8K7LM  ""c**(5d2h6G6G5HI  czB&rj   r!  source_fn_stackr   r%   torch_fncustomz-Failed to serialize custom metadata for node z with error 	from_node)r  r|  ro   ST_DELIMITERjoinr  rL  r   r   r  rb   rS  _serialize_from_node)r   r   retr  r  r%  rq   rr   nn_module_listsource_fn_st	source_fnsource_fn_listr(  r)  r   r*  s                   rk   r  (GraphModuleSerializer.serialize_metadata  s   ))--66;6!,"iimm,=>>?>'* @O?T?T?V?Vtq1#Q-a012?V   &2%6%6~%FC!"99==):;;<; ".!-I Q<.$"9"9)A,"G!HI!-   &2%6%6~%FC!"yy}}Z0080*//X?C
OYY]]8,,6, $

6 2H $))#		+.I#zz$*C*CI*NOC
9  $CDII;l[\Z]^s$   !G;&G	!G 
G9G44G9r*  c                     Uc  gU Vs/ s H*  n[        U[        5      (       d  M  UR                  5       PM,     sn$ s  snf )z[
Serialize from_node metadata from a list of NodeSource objects to a list of dictionaries.
N)rv   r   to_dict)r   r*  node_sources      rk   r-  *GraphModuleSerializer._serialize_from_nodeS  sI       )
(+z2 "K!(
 	
 
s   ==script_obj_metac                 j    [         R                  SU5        [        UR                  UR                  S9$ )Nz[serialize_script_obj_meta] %sr  )r  r  r,   rS  r  r   r8  s     rk   r  /GraphModuleSerializer.serialize_script_obj_metab  s2     			2OD  %%%//
 	
rj   c           	         [        U[        R                  R                  5      (       a0  UR                  R
                   Vs/ s H  o3R                  PM     nnOPU[        ;  a  [        SU S35      e[        [        R                  " U5      R                  R                  5       5      n/ n[        XB5       H<  u  pcUR                  [!        UU R#                  U5      [$        R&                  S95        M>     U$ s  snf )Nzop z is not in _SYM_OPSrS  r  kind)rv   rw   rx   ry   r;  	argumentsrS  r  r   rL  inspectr  
parametersrw  zipr}  rA   r  r(   
POSITIONAL)r   r{   r  r  
args_namesserialized_args	args_names          rk   r  -GraphModuleSerializer.serialize_sym_op_inputsk  s    b%**//00.0jj.B.BC.Bs((.BJCJ!$s2$.A%BCCg//3>>CCEFJ!*3NI""",,S1%00 4  Ds   C9Nr>  c           
         S n/ n[        U[        R                  R                  R                  5      (       a  US   nUS   nUR                  Xg5      nOa[        U[        R                  R                  /[        5       Q75      (       d!  [        S[        U5      R                   35      e[        U5      nUc  [        S5      eU=(       d    0 n[        UR                  5       H  u  pU	R                  U;   aZ  UR!                  [#        U	R                  U R%                  X9R                     U	R                  5      [&        R(                  S95        Mo  U	R*                  (       d_  U[-        U5      :  aP  UR!                  [#        U	R                  U R%                  X(   U	R                  5      [&        R.                  S95        M  M     U$ )Nr   r%   z6expected OpOverload or registered extension type, got zschema should not be Noner=  )rv   rw   ro  	torchbindCallTorchBindr&   rx   ry   _registered_extension_typesr   r   re   r?  r  r?  rS  r}  rA   r  r(   KEYWORD
kwarg_onlyr  rC  )
r   r>  r  rk  r&   rE  objmethodr	  
schema_args
             rk   r  &GraphModuleSerializer.serialize_inputs}  s    fe55??MMNNq'C!WF]]3/F..O1L1NO  %LTRX\MbMbLcd  -V4F> !<==2&v'7'78MA&(&&!'__ 00"??3Z__ *11  **q3t9}&&!'__ 00*//J)44 - 90 rj   c                 @   U Vs/ s H+  n[        SU R                  U5      [        R                  S9PM-     nnUR	                  UR                  5        VVs/ s H-  u  pS[        UU R                  U5      [        R                  S9PM/     snn5        U$ s  snf s  snnf )z=
For serializing HOO inputs since HOOs do not have a schema.
 r=  )rA   r  r(   rC  extendro   rL  )r   r  rk  arC  rS  s         rk   r  *GraphModuleSerializer.serialize_hoo_inputs  s     	
  T11!4<;R;R 	 	 
 	  &||~  .GD ,,Q/%--
  .		
 !
s   2B4B
c                 f    [        U5      [        L =(       d    [        U[        R                  5      $ rn   )r   r   rv   rw   rR   r   r  s     rk   is_inductor_sym_int_arg-GraphModuleSerializer.is_inductor_sym_int_arg  s#    
 CyC@:c5<<#@@rj   c                     [        U5      [        L =(       dN    [        U[        R                  R
                  5      =(       a#    UR                  U R                  R                  ;   $ rn   )	r   r   rv   rw   r  rC   rS  r  rG  rX  s     rk   is_sym_int_arg$GraphModuleSerializer.is_sym_int_arg  sG    CyC 
sEHHMM* <D,,;;;	
rj   c                     [        U[        5      =(       dN    [        U[        R                  R                  5      =(       a#    UR
                  U R                  R                  ;   $ rn   )rv   r   rw   r  rC   rS  r  rI  rX  s     rk   is_sym_float_arg&GraphModuleSerializer.is_sym_float_arg  sE    #u% 
sEHHMM* >D,,===	
rj   c                     [        U[        5      =(       dN    [        U[        R                  R                  5      =(       a#    UR
                  U R                  R                  ;   $ rn   )rv   r   rw   r  rC   rS  r  rH  rX  s     rk   is_sym_bool_arg%GraphModuleSerializer.is_sym_bool_arg  sE    #t$ 
sEHHMM* =D,,<<<	
rj   arg_typec           
      ~#  ^ ^ SS K Js  Jn  UR                  UR                  4m[        U[        R                  R                  5      (       Gab  UR                  S:X  Ga  [        UR                  [        5      (       d+  [        S[        UR                  5      R                   35      e[        UR                   R"                  UR                  5      n[        U[        R$                  5      (       a  ['        S5      e[        U[        R                  R(                  5      (       aP  T R+                  5          T R-                  U5      nS S S 5        [.        R0                  " [3        UR                  WS9S9$ [        U5      R                  S:X  aO  [        USS 5      n[        US	S 5      nUc  [        S
5      eUc  [        S5      e[.        R0                  " U SU 3S9$ ['        SUR                   S[        U5       35      eT R5                  U5      (       a0  [.        R0                  " [6        R0                  " UR8                  S9S9$ T R;                  U5      (       a0  [.        R0                  " [<        R0                  " UR8                  S9S9$ T R?                  U5      (       a0  [.        R0                  " [@        R0                  " UR8                  S9S9$ [        URB                  S   [D        RF                  5      (       a=  [.        R0                  " [G        UR8                  URB                  S   RH                  S9S9$ UR8                  T RJ                  ;   a4  T RJ                  UR8                     n[.        R0                  " [M        US9S9$ [.        R0                  " [M        UR8                  S9S9$ [        UT5      (       a9  URO                  5       n	U	c  [        S5      e[.        R0                  " [M        U	S9S9$ [        XRP                  5      (       ax  URO                  5       n	U	c  [        S5      eURS                  5       n
U
RU                  5       RW                  5       nU
T RX                  U	'   [.        R0                  " [G        X5      S9$ [        U[        RZ                  5      (       a/  [.        R0                  " [6        R0                  " [        U5      S9S9$ [        U[        R\                  5      (       a/  [.        R0                  " [<        R0                  " [        U5      S9S9$ [        U5      [^        L a  [.        R0                  " US9$ [        U5      [        L a  [.        R0                  " US9$ [        U5      [`        L a  [.        R0                  " US9$ [        U5      [b        L a  [.        R0                  " US9$ [        U5      [d        L a0  [.        R0                  " [g        URh                  URj                  S9S9$ Uc  [.        R0                  " SS 9$ [        U[l        5      (       an  0 nURo                  5        HD  u  p[        U[        5      (       d  ['        S![        U5       35      eT Rq                  U5      X'   MF     [.        R0                  " US"9$ [        U[r        [t        45      (       Ga  [w        U5      S:X  Ga  UGb  [        U[        Rx                  5      (       a  UR{                  5       n[        U[        R|                  5      (       d!  [        S#[        U5      R                   35      eUR{                  5       n[        U[        Rx                  5      (       a  UR{                  5       n[        U[        R~                  5      (       a  [.        R0                  " / S$9$ [        U[        R                  5      (       a  [.        R0                  " / S%9$ [        U[        R                  5      (       a  [.        R0                  " / S&9$ [        U[        R                  5      (       a  [.        R0                  " / S'9$ [        U[        R                  5      (       a  [.        R0                  " / S(9$ ['        S)U S*35      e[        R                  S+5        [.        R0                  " / S(9$ [        S, U 5       5      (       a  [.        R0                  " [s        U5      S$9$ [        S- U 5       5      (       a  [.        R0                  " [s        U5      S%9$ [        S. U 5       5      (       a  [.        R0                  " [s        U5      S&9$ [        S/ U 5       5      (       a  [.        R0                  " [s        U5      S'9$ [        U 4S0 jU 5       5      (       a  / nU H  n[        U[        RZ                  5      (       a.  UR                  [6        R0                  " [        U5      S95        MP  [        U5      [`        L d  Md  UR                  [6        R0                  " US95        M     [.        R0                  " US19$ [        S2 U 5       5      (       a@  [.        R0                  " U Vs/ s H   n[<        R0                  " [        U5      S9PM"     snS39$ [        U 4S4 jU 5       5      (       a  / nU H  n[        U[        R                  R                  5      (       a/  UR                  [6        R0                  " UR8                  S95        M[  [        U5      [`        L d  Mo  UR                  [6        R0                  " US95        M     [.        R0                  " US19$ [        U 4S5 jU 5       5      (       a  / nU H  n[        U[        R                  R                  5      (       a/  UR                  [<        R0                  " UR8                  S95        M[  [        U[b        5      (       d  Mr  UR                  [<        R0                  " US95        M     [.        R0                  " US39$ [        U 4S6 jU 5       5      (       a  / nU H  n[        U[        R                  R                  5      (       a/  UR                  [@        R0                  " UR8                  S95        M[  [        U[^        5      (       d  Mr  UR                  [@        R0                  " US95        M     [.        R0                  " US79$ [        S8 U 5       5      (       a\  / nU H@  nUR                  S:X  a  ['        S5      eUR                  [M        UR8                  S95        MB     [.        R0                  " US(9$ [        S9 U 5       5      (       a  [        S: U 5       5      (       ax  / nU H\  n/ nU H@  nUR                  S:X  a  ['        S5      eUR                  [M        UR8                  S95        MB     UR                  U5        M^     [.        R0                  " US;9$ [        S< U 5       5      (       a*  S= n[.        R0                  " [s        [        UU5      5      S>9$ [        U4S? jU 5       5      (       a:  [.        R0                  " U Vs/ s H  n[M        URO                  5       S9PM     snS(9$ [        U4S@ jU 5       5      (       a-  U4SA jn[.        R0                  " [s        [        UU5      5      S>9$ [        SB U 5       5      (       a.  [.        R0                  " U Vs/ s H  n[s        U5      PM     snSC9$ ['        SDU Vs/ s H  n[        U5      PM     sn 35      e[        U[        R                  5      (       a  [.        R0                  " [        U   SE9$ [        U[        R                  5      (       a0  [.        R0                  " [        UR                  UR                  SF9SG9$ [        U[        R                  5      (       a  [.        R0                  " [        U   SH9$ [        U[        R                  5      (       a  [.        R0                  " [        U   SI9$ [        U[        R                  R                  5      (       a  UR                  SJ5      (       a  UR                  SK5      (       d  ['        SLU SM35      eSN[w        T RX                  5       3nUT RX                  U'   URU                  5       RW                  5       n[.        R0                  " [G        UU5      S9$ [        U[        R                  R                  [        R                  R                  45      (       a#  [.        R0                  " T R                  U5      SO9$ ['        SP[        U5       SQU 35      e! , (       d  f       GNX= fs  snf s  snf s  snf s  snf )RNr   get_attrz#expected arg.target to be str, got z?getattr nodes containing tensors should not appear in the graph)rS  r  )as_graphLoweredBackendModulemodule_name
backend_idzmodule_name should not be Nonezbackend_id should not be None-	as_stringzUnsupported getattr attribute z with type: as_namer  as_sym_floatas_sym_boolr"  r  r  rS  r  zBuffer must have valid namer   r   r   )realimag)
as_complexTas_nonezDict keys must be strings, got )as_string_to_argumentzexpected ListType, got )as_bools)as_ints)	as_floats)
as_stringsr  zEmpty list with type z nyi.zUnsure how to serialize the given empty list, as we don't know what is the type of this argument. Serializing it as a tensor list by default.c              3   D   #    U  H  n[        U5      [        L v   M     g 7frn   )r   r   rz   rU  s     rk   r|   8GraphModuleSerializer.serialize_input.<locals>.<genexpr>|  s     0Cq47d?C    c              3   D   #    U  H  n[        U5      [        L v   M     g 7frn   r   r   r  s     rk   r|   r  ~       1ST!W^Sr  c              3   D   #    U  H  n[        U5      [        L v   M     g 7frn   )r   r   r  s     rk   r|   r    s     3s!T!W%sr  c              3   D   #    U  H  n[        U5      [        L v   M     g 7frn   )r   r3  r  s     rk   r|   r    r  r  c              3   F   >#    U  H  nTR                  U5      v   M     g 7frn   )rY  rz   rU  r   s     rk   r|   r    s     BcT11!44c   !)as_sym_intsc              3   V   #    U  H  n[        U[        R                  5      v   M!     g 7frn   )rv   rw   rP   r  s     rk   r|   r    s     @CqZ5>>22Cs   '))as_sym_floatsc              3   F   >#    U  H  nTR                  U5      v   M     g 7frn   )r\  r  s     rk   r|   r    s     9ST((++Sr  c              3   F   >#    U  H  nTR                  U5      v   M     g 7frn   )r_  r  s     rk   r|   r    s     ;s!T**1--sr  c              3   F   >#    U  H  nTR                  U5      v   M     g 7frn   )rb  r  s     rk   r|   r    s     :cT))!,,cr  )as_sym_boolsc              3   j   #    U  H)  n[        U[        R                  R                  5      v   M+     g 7frn   rv   rw   r  rC   r  s     rk   r|   r    s"     ?3aZ588==113r}   c              3   N   #    U  H  n[        U[        [        45      v   M     g 7frn   )rv   rL  r   r  s     rk   r|   r    s     ?3aZD%=113s   #%c              3   F   #    U  H  n[        S  U 5       5      v   M     g7f)c              3   j   #    U  H)  n[        U[        R                  R                  5      v   M+     g 7frn   r  rz   r   s     rk   r|   BGraphModuleSerializer.serialize_input.<locals>.<genexpr>.<genexpr>  s"     @%QJq%((--00%r}   N)all)rz   inners     rk   r|   r    s"      HNQU@%@@@cs   !)as_nested_tensorsc              3      #    U  H4  n[        U[        R                  R                  [	        S 5      45      v   M6     g 7frn   )rv   rw   r  rC   r   r  s     rk   r|   r    s+     MAZEHHMM4:#>??s   <>c                     U c  [         R                  " SS9$ [        U [        R                  R
                  5      (       a%  [         R                  " [        U R                  S9S9$ [        SU  35      eNTrx  rt  r  z!Unsupported list/tuple argument: )	rD   r   rv   rw   r  rC   rT   rS  rb   rU  s    rk   serialize_optional_tensor_argsMGraphModuleSerializer.serialize_input.<locals>.serialize_optional_tensor_args  sc    y5<<TJJ#Auxx}}555<<&4!&&&A   -/PQRPS-TUUrj   )as_optional_tensorsc              3   <   >#    U  H  n[        UT5      v   M     g 7frn   )rv   rz   rU  inductor_tensor_bufferss     rk   r|   r    s     ISZ#:;;Ss   c              3   X   >#    U  H  n[        U/ TQ[        S 5      P75      v   M!     g 7frn   )rv   r   r  s     rk   r|   r    s.      OR!
1D 7DdDEEss   '*c                    > U c  [         R                  " SS9$ [        U T5      (       a)  [         R                  " [        U R	                  5       S9S9$ [        SU  35      er  )rD   r   rv   rT   get_namerb   )rU  r  s    rk   r  r    s_    y5<<TJJ#A'>??5<<&4!**,&G   -/PQRPS-TUUrj   c              3   t   #    U  H.  n[        U[        5      =(       a    [        S  U 5       5      v   M0     g7f)c              3   D   #    U  H  n[        U5      [        L v   M     g 7frn   r  rz   xs     rk   r|   r    s     ,GQT!W^Qr  N)rv   r   r  r  s     rk   r|   r    s.      QTA
1e$G,GQ,G)GGQTs   68)as_int_listsz&Unsupported list/tuple argument type: )as_scalar_typer   )	as_device)as_memory_format)	as_layout__getstate____setstate__z!Unable to serialize custom class z7. Please define serialization methods via def_pickle()._custom_obj_)as_operatorzUnsupported argument type: z with schema arg_type )Ytorch._inductor.ir	_inductorirBufferReinterpretViewrv   rw   r  rC   r{   r>  r3  r   r   re   r^  r  r  r  rb   r3   r  serialize_graphr'   r   r2   r\  rS   rS  r_  rQ   rb  rM   r  r  r,   r  r  rT   r  TorchBindObjectget_real_obj_typequalified_namer  rR   rP   r   r   r   complexr*   ru  rv  r  ro   r  rL  r   r  OptionalTypegetElementTypeListTypeBoolTypeIntType	FloatType
StringType
TensorTyper  r  r  r}  r   r   r   r   r-   r   memory_format!_TORCH_TO_SERIALIZE_MEMORY_FORMATr   r   _CScriptObject_has_methodrx   ry   r  r  )r   r  rd  inductor_irrb  r  ri  rj  
dedup_namearg_namearg_valr  serialized_dictr  rp   	elem_typerz  rU  r?  nested_arguments
inner_listinner_argumentsr   r  r   custom_obj_namer  s   `                         @rk   r  %GraphModuleSerializer.serialize_input  s   00 ''#

 c588==))vv#!#**c22(=d3::>N>W>W=XY  syy66

CdELL11(Y   ehh&:&:;;..0 $ 4 4T : 1#??!.CJJe!L  $Z((,BB #*$t"DK!(|T!BJ"*,-MNN!),-LMM#??}Aj\5RSS(8LQUVZQ[P\]  $$S))-44SXXF  &&s++!1!8!8!J  %%c** / 6 6sxx H  CHHUOR-A-ABB"3 XX%1J1J# 
 T999!99#((C
Z1PQQSXX1NOO455
 ||~H$%BCC??^-JKK8899 ||~H$%BCC&&(G668I)0DX&??1B81WXXU\\**
 ??n.C.CCPSH.UVVU^^,,
 ??-44SXF  #Y$??3//#Y#??S11#Y#??#..#Y%??C00#Y'!??'SXXCHHE  [??400T"" O!iik
!#s++(+J4PS9+)VWW'+';';E'B$ * ??IIdE]++3x1}'!(E,>,>??#+#:#:#<%h??,5d8n6M6M5NO  !) 7 7 9I!)U-?-?@@$-$<$<$>	!)U^^<<';;#Iu}}=='r::#Iu??'<<#Iu/?/?@@'"==#Iu/?/?@@'"== -/DYKu-UVV KKF
 $??b990C000S	::1S111tCy993s333c;;1S111$s)<<BcBBB A!!U\\22n&;&;CF&KLaCn&;&;1&EF	 
  6::@C@@@TW"XTWq#3#:#:3q6#JTW"X  9S999A!!UXX]]33n&;&;AFF&KLaCn&;&;1&EF	 
  6::;s;;;A!!UXX]]33&6&=&=aff&MN#Au--&6&=&=q&IJ	 
  V<<:c:::A!!UXX]]33o&<&<QVV&LM#At,,o&<&<Q&GH	 
  F;;?3???	Attz),]  $$^%@A   )<<?3???C HNQH E E $& "%J&(O *77j0"0 a#  (..~499/MN !+ %++O< #&  9IJJMMMMV  (,S1OQT-U(V  ISIIIKNO3aAJJL A3O   OR  V  (,S1OQT-U(V   QT    c4JcT!Wc4JKK$<s=Ss!d1gs=S<TU  U[[))??2KC2PQQU\\**??V-STTU0011??!B3!G  U\\**??-G-LMMUXX2233//OON33$7u => >  !-S1A1A-B,CDO03D_-		224I??/K  ejj33UZZ5S5STUU??t/F/Fs/KLL -d3i[8NxjY A	 10x #YP  P. 5K >Ts+   6AF)'AF+;!AF0AF57AF:
F
AF(c                     XR                   R                  ;   a  [        SU< S35      e[        U5      U R                   R                  U'   [	        US9$ )Nname z already in tensor_valuesrt  )r  rF  r   r   rT   r   rS  r  s      rk   r  -GraphModuleSerializer.serialize_tensor_output  sO    ##111 50I!JKK/DX/N&&t,4((rj   c                     XR                   R                  ;   a  [        SU< S35      e[        U5      U R                   R                  U'   [        R
                  " US9$ )Nr  z already in sym_int_valuesrn  )r  rG  r   r   rS   r   r  s      rk   r  .GraphModuleSerializer.serialize_sym_int_output  sU    ##222 50J!KLL0A(0K''-$$T22rj   c                     XR                   R                  ;   a  [        SU< S35      e[        U5      U R                   R                  U'   [        R
                  " US9$ )Nr  z already in sym_float_valuesrn  )r  rI  r   r   rQ   r   r  s      rk   serialize_sym_float_output0GraphModuleSerializer.serialize_sym_float_output%  sU    ##444 50L!MNN2Eh2O))$/&&t44rj   c                     XR                   R                  ;   a  [        SU< S35      e[        U5      U R                   R                  U'   [        R
                  " US9$ )Nr  z already in sym_bool_valuesrn  )r  rH  r   r   rM   r   r  s      rk   serialize_sym_bool_output/GraphModuleSerializer.serialize_sym_bool_output+  sU    ##333 50K!LMM1CH1M((.%%d33rj   specc           	      L   [         R                  SU5        UR                  [        R                  R
                  :X  Ga  [        UR                  [        R                  5      (       Ga  [        UR                  R                  5      [        L a*  [        R                  " UR                  R                  S9nGO<[        UR                  R                  5      [        L a)  [        R                  " UR                  R                  S9nO[        UR                  R                  5      [        L a)  [        R                  " UR                  R                  S9nO[        UR                  R                  5      [         L a)  [        R                  " UR                  R                  S9nOOUR                  R                  c  [        R                  " SS9nO#[#        SUR                  R                   S	35      e[$        R                  " ['        UR                  R(                  US
9S9$ [$        R                  " [+        U R-                  UR                  5      S9S9$ UR                  [        R                  R.                  :X  a  UR0                  c  [3        S5      e[        UR                  [        R4                  5      (       d+  [3        S[        UR                  5      R6                   35      e[$        R                  " [9        [5        UR                  R(                  S9UR0                  S9S9$ UR                  [        R                  R:                  :X  a  UR0                  c  [3        S5      e[        UR                  [        R4                  5      (       d+  [3        S[        UR                  5      R6                   35      eUR<                  c  [3        S5      e[$        R                  " [?        [5        UR                  R(                  S9UR0                  UR<                  S9S9$ UR                  [        R                  R@                  :X  a  UR0                  c  [3        S5      e[        UR                  [        R4                  5      (       d+  [3        S[        UR                  5      R6                   35      e[$        R                  " [C        [5        UR                  R(                  S9UR0                  S9S9$ UR                  [        R                  RD                  :X  a  UR0                  c  [3        S5      e[        UR                  [        RF                  5      (       d+  [3        S[        UR                  5      R6                   35      e[$        R                  " [I        [G        UR                  R(                  UR                  RJ                  S9UR0                  S9S9$ UR                  [        R                  RL                  :X  a  [        UR                  [        RN                  5      (       d+  [3        S[        UR                  5      R6                   35      e[$        R                  " [Q        [O        UR                  R(                  S9S9S 9$ [3        S!U 35      e)"Nz[serialize_input_spec] %sr   r   rl  r   Trx  zUnhandled constant input z to serializerS  rp   )constant_inputr  )
user_inputz,spec.target should not be None for PARAMETERexpected TensorArgument, got rt  r  parameter_name)	parameterz)spec.target should not be None for BUFFERz-spec.persistent should not be None for BUFFER)r  buffer_name
persistent)r  z2spec.target should not be None for CONSTANT_TENSOR)r  tensor_constant_name)tensor_constantz-spec.target should not be None for CUSTOM_OBJz expected CustomObjArgument, got r  )r  r  )
custom_objexpected TokenArgument, got tokenUnknown argument kind: ))r  r  r>  r  	InputKind
USER_INPUTrv   r  ConstantArgumentr   rp   r   r+   r   r   r3  r   rb   r5   r7   rS  rY   serialize_argument_spec	PARAMETERr>  r   rT   re   r:   BUFFERr  r6   CONSTANT_TENSORr;   
CUSTOM_OBJr,   r8   r  TOKENrV   r9   )r   r  constant_specs      rk   serialize_input_spec*GraphModuleSerializer.serialize_input_spec1  s   		-t499///$((B$7$788'3.$1$8$8$OM$((..)T1$1$8$8$PM$((..)S0$1$8$8488>>$RM$((..)U2$1$8$8$((..$QMXX^^+$1$8$8$FM(3DHHNN3C=Q  !''#;!XX]]-$  !'',1M1Mdhh1WX  YY",,000{{"$%STTdhh(9(9::$3DN4K4K3LM  ##.&DHHMM:#';;  YY",,---{{"$%PQQdhh(9(9::$3DN4K4K3LM  &$%TUU##(&DHHMM: $#  YY",,666{{"$H  dhh(9(9::$3DN4K4K3LM  ## 9&DHHMM:)-!  YY",,111{{"$%TUUdhh(<(<==$6tDHH~7N7N6OP  ##/)!XX]]dhh6H6H %)KK	  YY",,,,,dhh(8(899$24>3J3J2KL  ##$%488==9  !#:4&!ABBrj   c                    [         R                  SU5        UR                  [        R                  R
                  :X  a4  [        R                  " [        U R                  UR                  5      S9S9$ UR                  [        R                  R                  :X  a  [        UR                  [        R                  5      (       d+  [        S[        UR                  5      R                    35      e[        R                  " [#        [        UR                  R$                  S9S9S9$ UR                  [        R                  R&                  :X  a  UR(                  c  [        S5      e[        UR                  [        R                  5      (       d+  [        S[        UR                  5      R                    35      e[        R                  " [+        [        UR                  R$                  S9UR(                  S9S	9$ UR                  [        R                  R,                  :X  a  UR(                  c  [        S
5      e[        UR                  [        R                  5      (       d+  [        S[        UR                  5      R                    35      e[        R                  " [/        [        UR                  R$                  S9UR(                  S9S9$ UR                  [        R                  R0                  :X  a  UR(                  c  [        S5      e[        UR                  [        R                  5      (       d+  [        S[        UR                  5      R                    35      e[        R                  " [3        [        UR                  R$                  S9UR(                  S9S9$ UR                  [        R                  R4                  :X  a  UR(                  c  [        S5      e[        UR                  [        R                  5      (       d+  [        S[        UR                  5      R                    35      e[        R                  " [7        [        UR                  R$                  S9UR(                  S9S9$ UR                  [        R                  R8                  :X  a  UR(                  c  [        S5      e[        UR                  [        R                  5      (       d+  [        S[        UR                  5      R                    35      e[        R                  " [;        [        UR                  R$                  S9UR(                  S9S9$ UR                  [        R                  R<                  :X  a  [        UR                  [        R>                  5      (       d+  [        S[        UR                  5      R                    35      e[        R                  " [A        [?        UR                  R$                  S9S9S9$ [        SU 35      e)Nz[serialize_output_spec] %sr  )user_outputr  rt  )loss_outputz2spec.target should not be None for BUFFER_MUTATION)r  r  )buffer_mutationz5spec.target should not be None for PARAMETER_MUTATIONr  )parameter_mutationz8spec.target should not be None for GRADIENT_TO_PARAMETER)gradient_to_parameterz9spec.target should not be None for GRADIENT_TO_USER_INPUT)r  user_input_name)gradient_to_user_inputz6spec.target should not be None for USER_INPUT_MUTATION)user_input_mutationr  r  r  )!r  r  r>  r  
OutputKindUSER_OUTPUTrE   r   rZ   r  r  LOSS_OUTPUTrv   rT   r   r   re   r=   rS  BUFFER_MUTATIONr>  r)   PARAMETER_MUTATIONrG   GRADIENT_TO_PARAMETERr/   GRADIENT_TO_USER_INPUTr0   USER_INPUT_MUTATIONrX   r   rV   rF   )r   r  s     rk   serialize_output_spec+GraphModuleSerializer.serialize_output_spec  s   		.599111$$*t/K/KDHH/UV  YY"--333dhh(9(9::$3DN4K4K3LM  $$*~488==/QR  YY"--777{{"$H  dhh(9(9::$3DN4K4K3LM  $$ 2&DHHMM: $!  YY"--:::{{"$K  dhh(9(9::$3DN4K4K3LM  $$#8&DHHMM:#';;$  YY"--==={{"$N  dhh(9(9::$3DN4K4K3LM  $$&=&DHHMM:#';;'  YY"-->>>{{"$O  dhh(9(9::$3DN4K4K3LM  $$'>&DHHMM:$(KK(  YY"--;;;{{"$L  dhh(9(9::$3DN4K4K3LM  $$$9&DHHMM:$(KK%  YY"-----dhh(8(899$24>3J3J2KL  $$%%488==9  !#:4&!ABBrj   sigc           	          [         R                  S5        [        UR                   Vs/ s H  o R	                  U5      PM     snUR
                   Vs/ s H  o R                  U5      PM     snS9$ s  snf s  snf )Nz
[serialize_signature]input_specsoutput_specs)r  r  r4   r  r  r  r  )r   r  r   s      rk   serialize_signature)GraphModuleSerializer.serialize_signature  sd    		+,?BO!2215OADAQAQRAQA44Q7AQR
 	
ORs   A2A7
r  c                    [        U[        R                  5      (       a%  [        R                  " [        UR
                  S9S9$ [        U[        R                  5      (       a0  [        R                  " [        R                  " UR
                  S9S9$ [        U[        R                  5      (       a0  [        R                  " [        R                  " UR
                  S9S9$ [        U[        R                  5      (       a  U R                  UR                  5      $ [        U[        R                  5      (       a0  [        R                  " [        UR
                  UR                  S9S9$ [        S5      e)	Nrt  r  rn  r  rp  r  r  TODO)rv   r  rT   r'   r   rS  rS   rQ   r  r  rp   r,   r  r   r   r  s     rk   r  -GraphModuleSerializer.serialize_argument_spec  s    a**++??^-HII2,,--??n.C.CAFF.STT2..//??0@0G0GPQPVPV0WXX2..//''002//00??/QVVq{{S  !((rj   treespecc                 p   ^ ^ S[         R                  SS 4U U4S jjm[        U[        5      nT" U5        U$ )Ntsr   c           	      ^  > U R                   c  g U R                   [        L d%  [        R                  " U R                   5      (       a  [        R                  U R
                     R                  nUTR                  ;   af  TR                  U   R                  nX R
                  R                  :w  a3  [        SU R
                   SU R
                  R                   SU S35      eO*[        U R
                  R                  S9TR                  U'   U R                  5        H  nT" U5        M     g )Nz%The given TreeSpec's namedtuple type z was found to have field names z6 but somehow previously was found to have field names r  )field_names)r   r   pytreeis_namedtuple_classSUPPORTED_SERIALIZED_TYPEScontextserialized_type_namer  r&  _fieldsrb   rB   children)r$  r+  r&  childr   store_namedtuple_fieldss       rk   r/  IGraphModuleSerializer.serialize_treespec.<locals>.store_namedtuple_fields  s   wwww*$(B(B277(K(K'-'H'HJJ(&& % (4+J+JJ"&"A"A,#!k   #jj&8&88,CBJJ< P==?ZZ=O=O<P QTT_S``ac  9 &"**2D2DE 334HI '. 'rj   )r'  TreeSpecr   rW   )r   r"  serialized_treespecr/  s   `  @rk   serialize_treespec(GraphModuleSerializer.serialize_treespec  s=    	/ 	/D 	/ 	/2 -X7GH)""rj   module_call_signaturec           	         [         R                  SU5        [        UR                   Vs/ s H  o R	                  U5      PM     snUR
                   Vs/ s H  o R	                  U5      PM     snU R                  UR                  5      U R                  UR                  5      UR                  =n(       a  US9$ S S9$ s  snf s  snf )Nz$[serialize_module_call_signature] %srC  rD  in_specout_specforward_arg_names)
r  r  r@   rC  r  rD  r3  r8  r9  r:  r   r5  r  namess       rk   serialize_module_call_signature5GraphModuleSerializer.serialize_module_call_signature1  s     			8:OP"9N9U9U9UA,,Q/9U :O9V9V9VA,,Q/9V ++,A,I,IJ,,-B-K-KL#8#J#JJ%J
 	
 RV
 	
s   B?C
c           	          [         R                  S5        U Vs/ s HC  n[        UR                  UR                  (       a  U R                  UR                  5      OS S9PME     sn$ s  snf )Nz
[serialize_module_call_graph]fqnr  )r  r  r?   rA  r  r=  r   r  entrys      rk   serialize_module_call_graph1GraphModuleSerializer.serialize_module_call_graphC  sh     			34 +

 + II  88I +

 
	
 

s   A
A'c                 	   S[         S[        4S jnUR                  S:X  a?  [        UR                  [
        R                  R                  /[        5       Q75      (       d8  [        SUR                   S[        UR                  5      R                   35      e[        UR                  5      nUR                  n[        U5      S:X  a  / $ UR                  S   nU" UR                  5      (       a\  / n[!        U5       H6  u  pxU R#                  X5      n	UR%                  U R'                  X5      5        M8     [(        R*                  " US	9/$ [        U5      S
:X  a  U R-                  UR.                  U5      /$ / n
[!        [1        XT5      5       GH  u  nu  pUc  [        UR2                  [
        R4                  [
        R6                  45      (       d+  [        S[        UR2                  5      R                   35      eU
R%                  [(        R*                  " SS95        M  [        U[8        5      (       a  [        UR2                  [
        R4                  [
        R6                  45      (       d+  [        S[        UR2                  5      R                   35      eU R#                  X5      n	U
R%                  U R-                  X5      5        GMB  [        U[:        5      (       Ga   [        UR2                  [
        R<                  5      (       a7  [        UR2                  R?                  5       [
        R6                  5      (       d+  [        S[        UR2                  5      R                   35      eU RA                  X5      nUc  [        SU 35      e/ n[!        U5       H<  u  pUc  M
  U R#                  X5      nUR%                  U R'                  UU5      5        M>     U
R%                  [(        R*                  " US	95        GMx  [        U[B        [D        [F        [H        45      (       a5  U R#                  X5      nU
R%                  U R-                  UU5      5        GM  [K        S[        U5       SURM                  5        35      e   U
$ )a  For a given node, return the dataclass representing its output values.

[NOTE: Multiple outputs] We handle aggregates differently than FX. For
FX, it looks like:

    x = call_function("multiple_return", ...)
    element0 = call_function(getitem, x, 0)
    foo = call_function("use_output", element0)

We do not want the intermediate `getitem` call, so our serialized thing looks like:

    element0, element1, element2 = call_function("multiple_return", ...)
    foo = call_function("use_output", element0)

We want names to be consistent across these two schemes, so that we can
mostly reuse the names coming from FX. This function computes a mapping from
the FX representation to our representation, preserving the names.
r>  r   c                     [        U 5      nUR                  n[        U5      S:w  a  gUS   R                  n[	        U[
        R                  5      =(       a(    [	        UR                  5       [
        R                  5      $ )Nr%   Fr   )	r?  returnsr  	real_typerv   rw   r  r  r  )r>  r&   rH  return_types       rk   _is_single_tensor_list_returnNGraphModuleSerializer.serialize_outputs.<locals>._is_single_tensor_list_returng  sg    ,V4FnnG7|q !!*..Kk5>>: z**,e.>.>@ rj   r  zIexpected call_function with OpOverload or registered extension type, got z with r   r"  r  r%   z)expected OptionalType or TensorType, got Trx  z/expected ListType with TensorType element, got 6user_node should not be None for list output at index zUnhandled output type z from node )'r   r   r{   rv   r>  rw   rx   ry   rK  r   r   re   r?  rH  r  r  r  r  r}  r  r'   r   r  rS  rB  rI  r  r  r   rL  r  r  r  r   rR   r   rP   r  format_node)r   r   rK  r&   rH  r  r  r  r  rS  output_argumentsreturn_schemar  r  r	  msub_user_node_nameuser_node_names                     rk   r  'GraphModuleSerializer.serialize_outputsS  s   (		# 		$ 		 GG&ejj33T6Q6ST  !wwivd4;;&7&@&@%AC 
 )5..w<1I99U# )55K&x0	66tA""4#?#?#KL 1 OO{;<<\Q))$))X>?? *3C4J*K&C&$|!!++e.@.@%BRBR-S  )CDI`I`DaDjDjCkl 
 !''(EFD*--!!++e.@.@%BRBR-S  )CDI`I`DaDjDjCkl  66tA ''(=(=d(IJD$'' }66GG"%//>>@%BRBR  )I$}OfOfJgJpJpIqr  !66tA	$(PQTPUV  %dODAy )-)H)H)V&KK < <=OQR ST	 ,
 !''4(HID3x"@AA!%!@!@!K ''(=(=nd(ST ,T$ZLDDTDTDVCWX a +Lh  rj   c                 H   UR                   S   n[        U[        5      (       Ga4  / n[        U5       GH   u  pEU R	                  X5      n[        U[
        5      (       a  Uc  [        SU 35      e/ n[        U5       Hm  u  p[        U	[        R                  5      (       d  [        S[        U	5       S35      eU R                  Xh5      n
UR                  U R                  X5      5        Mo     UR                  [        R                  " US95        M  Ub  UR                   OUR                    SU 3n
UR                  U R#                  X5      5        GM#     U$ [        U[$        5      (       a  / nUR'                  5        Hm  u  p[        U[        R                  5      (       d  [        S[        U5       S35      eU R                  X5      n
UR                  U R                  X5      5        Mo     [        R                  " US9/$ U R#                  UR                   U5      /$ )z>
For serializing HOO outputs since HOOs do not have a schema.
r"  rM  z Serialize list output with type z nyir  r  )r  rv   r   r  r  rL  r   rw   r  rb   r   r  r}  r  r'   r   rS  r  r  ro   )r   r   r  rD  r	  element_meta_valr  tensorsjrQ  rS  r  r  r  s                 rk   r  +GraphModuleSerializer.serialize_hoo_outputs  s    99U#h&&G'0':# 66t?	.55 (,TUVTWX  !G )*: ;)!U\\::"0"B47)4 P#   $>>yLt'C'CD'LM !< NN8??g#FG
 %0 " $		{(1#6  NN4#8#8#PQ7 (;: N$''K%^^-	!$55(:4:,dK  66tA""4#?#?#KL . OO{;<<))$))X>??rj   rS  r  c                    Uc  [         R                  " SS9$ [        U[        R                  5      (       a#  [         R                  " U R                  X5      S9$ [        U[        [        R                  45      (       a#  [         R                  " U R                  X5      S9$ [        U[        [        R                  45      (       aC  [        U[        5      (       a  [        S5      e[         R                  " U R                  X5      S9$ [        U[        [        R                  45      (       a#  [         R                  " U R                  X5      S9$ [!        SU 35      e)	NTrx  r  rr  z1meta_val should not be bool when returning SymIntr  rp  zUnable to serialize output )r'   r   rv   rw   r  r  r   rL   r  r   rR   r   r  r   rP   r  rb   r  s      rk   r  &GraphModuleSerializer.serialize_output  s    ??400h--??66tF  4"788?? ::4J  3"566(D))$G  ??88H  5%.."9::??!<<TL 
 :8*EFFrj   c                    UR                   S   n0 nUR                   HM  nUR                  [        R                  La  [        SU SU S35      eUR                  X4R                  S   '   MO     [        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$ )Nr"  z
User node z of z is incorrectr%   r  )r  r  r>  r  r  r   rS  r  r  r}  r  )
r   r   r  idx_to_namer  r  r  arg_listr	  rV  s
             rk   _handle_getitem_users+GraphModuleSerializer._handle_getitem_users#  s    99U#JJD{{("2"22$z$tD6%OPP(,		K		!%	   )FC %&*ii[#>  * #,X#6AOO,,[^=MN $7 rj   graph_modulec                 p   [        U[        R                  R                  5      (       d!  [	        S[        U5      R                   35      e[        R                  SUR                  SS95        UR                  R                   H#  n [        U SUR                   35      " U5        M%     ['        U R(                  R*                  U R(                  R                  U R(                  R,                  U R(                  R.                  U R(                  R0                  U R(                  R2                  U R(                  R4                  U R(                  R6                  U R(                  R8                  S	9	$ ! [         a;  n[        SU SUR!                  5        S["        R$                  " 5        35      UeS nAff = f)
Nzexpected GraphModule, got z[serialize_graph]

%sF)print_outputhandle_zFailed serializing node z in graph: 
 Original exception )	rC  rE  rF  rG  rI  rH  rK  rD  rJ  )rv   rw   r  r3   r   r   re   r  r  print_readabler  rE  r^  r{   r  rb   rN  	traceback
format_excr1   r  rC  rF  rG  rI  rH  rK  rD  rJ  )r   ra  r   r   s       rk   r  %GraphModuleSerializer.serialize_graph>  s   ,(<(<== ,T,-?-H-H,IJ  			%|'B'BPU'B'V	
 !&&,,Dy1248 - ##**""((**88++::!-->> ,,<<"..@@$$,,$($4$4$L$L

 
	
  $.tfK@P@P@R?SSijsj~j~  kA  jB  Cs   E00
F5:6F00F5r  c                     0 nUR                  S5      =n(       a2  [        R                  SU5         [        R                  " U5      US'   U$ U$ ! [
         a  n[        SU 35      UeS nAff = f)Nr)  z%
[serialize_graph_module_metadata] %sz9Failed to serialize custom metadata for graph with error )r|  r  r  r   r   r  rb   )r   r  r.  r)  r   s        rk   serialize_graph_module_metadata5GraphModuleSerializer.serialize_graph_module_metadata[  sy    XXh''6'II>G $

6 2H 
s
  $OPQsSs   A 
A-A((A-c                    [         R                  S5        U R                  U5      n[        UU R	                  U R
                  5      U R                  U R                  5      U R                  UR                  5      U R                  S9$ )Nz
[serialize])r  r  r  r  r  )r  r  r  r3   r  r  rD  r  rk  r  r  )r   ra  r  s      rk   r\   GraphModuleSerializer.serializeh  ss    		/"$$\2..t/C/CD">>t?U?UV99,:K:KL'+'F'F
 	
rj   )r  r  r  r  r  r  rn   )Hre   rf   rg   rh   r  ExportGraphSignaturerL  r?   r   r	   r  rw   r  rC   r  r  r3  r  r  r  r   r  r  r  r  r   r   r-  r,   r  rA   r  r  r  r   rY  r\  r_  rb  r'   r  rT   r  rS   r  rQ   r  r  r5   r  rE   r  r4   r  ArgumentSpecr  r'  r1  r3  r@   r=  rD  r  r  r  r_  r3   r1   r  rk  r\   ri   rd   rj   rk   r]   r]     s   
G00
G   2 23
G % %4uxx}} 4:X%((-- X$	<C 	<w/ w/r5HUXX]]4K " "8uxx}} 8c3h 8t
!$z"23
	$tCH~&	'

!33
	
43F , 	11
 
m	1fD4G ,Ad A
T 

t 

d 
wXc] wh wr	) )3. 35<L 54> 4aC aC) aCFdC"-- dCJ dCL
r'>'> 
> 
) )X ) #6?? #s #@
%'%;%;
	
$
!%b&8&8!9
	o	
 z ehhmm z X z x2@%((-- 2@DN 2@hGS GC GH G@%((-- D<P 6
EHH,@,@ 
U 
:DcN 

ehh&:&: 

{ 

rj   r]   )	metaclassc                   d    \ rS rSrS\4S\\\\4      S\4S jjr	S\
R                  S\4S jrS	rg)
r^   iu  Nopset_versionr
  c                     0 U l         U(       a  U R                   R                  U5        SU R                   ;  a+  [        R                  R	                  5       U R                   S'   X l        g Naten)rs  updaterw   r  _get_max_operator_versionr
  )r   rs  r
  s      rk   r   "ExportedProgramSerializer.__init__w  sT    
 .0%%m4+++).)K)K)MDv&.rj   r   r   c           
      `   UR                  5         [        UR                  UR                  5      nUR	                  UR
                  5      n[        UR                  5      nUR                  R                  5       nUR                  R                  5        H  u  pgXe;   a  [        SU< S35      eXuU'   M      [        UU R                  U[        [         S   [         S   S9UR"                   Vs/ s H  oR$                  PM     sn[&        R(                  UR*                  S9n	[-        U	[/        UR1                  5       5      5        [3        UR4                  SS9n
[7        U	[9        XR:                  5      [9        XPR:                  5      [9        UR<                  U R:                  5      5      $ s  snf )	z;
Args:
    exported_program: Exported Program to serialize
zconstant name z already exists in constantsr   r%   )majorminorra  rs  r5  schema_version	verifierstorch_versionguards_codeF)in_place)validater]   r  r  r\   ra  r9  r5  r  copyr   ro   r   r.   rs  rK   rJ   r  dialectrw   __version___guards_codecanonicalizer   rw  r$   r   r   r  r
  r   )r   r   gm_serializerserialized_graph_moduleserialized_range_constraintsr   nr   rr   serialized_epnew_state_dicts              rk   r\   #ExportedProgramSerializer.serialize  s   
 	!!#-,,.>.P.P
 #0"9"9:J:W:W"X'B..(
$ %2$=$=$B$B$D	$..446DA~$~aU:V%WXXaL 7
 (0,,:($Q'$Q' +;*D*DE*DQyy*DE++(55
 	]C	(8$9: 6''%
 "$^5I5IJ$Y0D0DE$ //1E1E	
 	
 Fs   .F+)rs  r
  )re   rf   rg   rh   DEFAULT_PICKLE_PROTOCOLr   r  r3  r   r   r  r.   r   r\   ri   rd   rj   rk   r^   r^   u  sH     376/S#X// /3
"*<*< 3
AS 3
rj   r^   c                      \ rS rSr\R
                   " S S5      5       rSGS jr\S\	S   4S j5       r
S\4S	 jrS\4S
 jr SHS\S\\\\\4      S\R(                  4S jjrS\S\\\R,                  4   4S jrS\S\\\R2                  4   4S jrS\S\\\R6                  4   4S jrS\S\4S jrS\ S\!R@                  4S jr"S\\\RF                  RH                  \4      4S jr%S\&S\RF                  RL                  4S jr'S\$S\(SS4S jr)S\*S\!RT                  4S jr+S\,S\!RX                  4S jr-S \.S\!R^                  4S! jr0  SIS"\1S#\\2\\Rf                  4   \44   S$\\2\\54   \44   S%\\\6\6\Rf                  S&4   \2\\54   4   \44      S'\\2\\7Rp                  4      S\4S( jjr9S)\S*\RF                  RH                  4S+ jr:S, r;S\$4S- jr<S.\=\>   4S/ jr?S0\@S\54S1 jrAS0\BS\54S2 jrCS3 rDS\$S*\RF                  RH                  4S4 jrES\$S*\RF                  RH                  4S5 jrFS*\RF                  RH                  S6\\G\H\I4   S7\S8\2\\54   4S9 jrJS*\RF                  RH                  S8\2\\54   4S: jrKS\$S*\RF                  RH                  SS4S; jrLS<\2\\4   S\2\\54   4S= jrMS>\\=\2\\54         S\\=\N      4S? jrOS@\@S\!R                  4SA jrQSB\RS\!R                  4SC jrSSD\=\T   S\=\!R                     4SE jrUSFrVg)Jr_   i  c                   b   \ rS rSr% \R
                  R                  \S'   \R                  \S'   \
\R                     \S'   \\\R                  4   \S'   \\\\R"                  \R$                  R&                  4   4   \S'   \\\4   \S'   \\\\R"                  S4   \\\4   4      \S	'   S
rg)GraphModuleDeserializer.Resulti  ra  r  r  names_to_symbolsr   r   .r   rd   N)re   rf   rg   rh   rw   r  r3   r   r  ro  rL  r?   r  r3  r   r   r   r  r   r   r   r   r   r   ri   rd   rj   rk   Resultr    s    hh****** 2 233sELL011eELL%((2D2D$DEEFF3344 uU\\3->'?c3h'O!PQQrj   r  r   Nc                     0 U l         [        5       U l        [        R                  R                  5       U l        [        R                  R                  5       U l	        g rn   )
serialized_name_to_noder   serialized_name_to_metarw   r  r1   r  r   Moduler  r   s    rk   r    GraphModuleDeserializer.__init__  s8    AC$07	$XX^^%
hhoo'rj   c              #     #    U R                   U R                  U R                  U R                  U R                  4n[
        R                  R                  5       U l         [
        R                  R                  5       U l        0 U l        [        5       U l        [        5       U l         S v   Uu  U l         U l        U l        U l        U l        g ! Uu  U l         U l        U l        U l        U l        f = f7frn   )r  r  r  r  unbacked_symbolsrw   r  r1   r   r  r   r   r  s     rk   save_graph_module)GraphModuleDeserializer.save_graph_module  s      JJKK((((!!
 XX^^%
hhoo'')$'.y$365		 
,,%
,,%s   B%C4(C ,"C4#C11C4serialized_targetc                 f    UR                  S5      u  p#USS  n[        U   nUR                  U5      $ )Nr  r%   )split_deserialization_registryfrom_op_name)r   r  r  r  r  s        rk   deserialize_extension_operator6GraphModuleDeserializer.deserialize_extension_operator  s;    .44S9	abM	+I6##G,,rj   c                    UR                  S5      (       a  [        nUR                  S5      SS  nOUR                  S5      (       a  [        nUR                  S5      SS  nOZUR                  S5      (       a  [        nUR                  S5      SS  nO)UR                  S5      (       a  U R                  U5      $ U$ UnU H"  n[        XE5      (       d  Us  $ [        XE5      nM$     U$ )N	_operatorr  r%   rw   r)  r  )r  r  r  rw   r)  r  r]  r^  )r   r  r  serialized_target_namesr>  rS  s         rk   deserialize_operator,GraphModuleDeserializer.deserialize_operator  s    ''
 
 F&7&=&=c&B12&F#))'22F&7&=&=c&B12&F#))&11F&7&=&=c&B12&F#))#..667HII$$+D6(((( .	 ,
 rj   r   r   c           	        ^   SS[         R                  S[        [        [        [
        [        4      S[         R                  4U 4S jjjn[         R                  " U0 T R                  ET R                  ES9nU" XB5      $ )zl
Parses and does bottom-up processing of sympy.Expr nodes,
populating ShapeEnv & caching symbols as needed.
r0  r   r   c                   > U R                   (       d"  U R                  (       d  U R                  (       a  U $ [        U 5      nU R                   H  nTR                  U5        M     UTR                  ;   a  TR                  U   n OU TR                  U'   [        U [        R                  5      (       aU  [        R                  " U [        R                  [        R                  45      (       a  TR                  R!                  U 5        Ub5  U TR"                  R$                  ;  a  TR"                  R'                  X5        TR(                  R+                  U5      =n(       a/  TR"                  R-                  U UR.                  UR0                  S9  [        U [        R                  5      (       a+  [2        R4                  " SS9TR"                  R6                  U '   U $ )N)compiler_mincompiler_maxr%   )skip)
is_Integeris_Float
is_Booleanr3  r  _parse_sym_exprsymbol_name_to_symbolrv   r   r   r   symbol_is_typer   UNBACKED_INTUNBACKED_FLOATr  r   	shape_envbacked_var_to_valadd_backed_var_to_valsymbol_name_to_ranger|  constrain_symbol_ranger7  r8  r!   extractvar_to_stack)r0  r   r   r  vrr   s        rk   _process_sym_exprBGraphModuleDeserializer._parse_sym_expr.<locals>._process_sym_expr	  sh    ~~
 s888C((- $ t99944X>C;>D..x8!#u||449W9Wd//1D1DE: : --11#6#4>>3S3S(SNN88C2266x@@2@NN99%'XX%'XX :  c5<<007H7P7PVW7XDNN//4Jrj   )localsrn   )
r   Exprr   r   r   r   r   sympifysympy_functionsr  )r   r   r   r  r   s   `    rk   r  'GraphModuleDeserializer._parse_sym_expr	  s     HL!	!	#+E#tU2B,C#D!	ZZ!	 !	F }}Id**Id.H.HI
 !,,rj   r   c                 >   UR                   nUR                  S:X  a  UR                  c  S nOSUR                  R                  S:w  a#  [        SUR                  R                  < 35      eUR                  R                   nU R	                  UR
                  U5      nU R                  R                  XCS9$ UR                  S:X  a5  [        U5      [        La!  [        S[        U5      R                   35      eU$ [        SUR                   SUR                    35      e)Nr   r   z!expected hint type 'as_int', got r   zexpected int, got zSymInt has invalid field type  with value )rp   r   r   r   r  r   r  create_symintnoder   re   rb   r   r   r"  r   r0  s        rk   deserialize_sym_int+GraphModuleDeserializer.deserialize_sym_int5	  s    gg66Yxx88==H,(;CHHMM;LM  xx~~&&s||T:C>>33C3CCVVxCy#$'9$s):L:L9M%NOOJ 0QWWIN rj   c                    UR                   nUR                  S:X  a^  UR                  (       a  UR                  R                  OS nU R	                  UR
                  U5      nU R                  R                  XCS9$ UR                  S:X  a8  [        U[        5      (       d!  [        S[        U5      R                   35      eU$ [        SUR                   SUR                    35      e)Nr   r   r   zexpected float, got z SymFloat has invalid field type r  )rp   r   r   r   r  r   r  create_symfloatnoderv   r   r   re   rb   r  s        rk   deserialize_sym_float-GraphModuleDeserializer.deserialize_sym_floatL	  s    gg66Y(+388$$dD&&s||T:C>>55c5EEVVz!c5))$';DI<N<N;O%PQQJ 2166(,qwwiP rj   c                    UR                   nUR                  S:X  a6  U R                  UR                  5      nU R                  R                  U5      $ UR                  S:X  a8  [        U[        5      (       d!  [        S[        U5      R                   35      eU$ [        SUR                   SUR                    35      e)Nr   r   zexpected bool, got zSymBool has invalid field type r  )rp   r   r  r   r  create_symboolnoderv   r   r   re   rb   )r   r   r"  r   s       rk   deserialize_sym_bool,GraphModuleDeserializer.deserialize_sym_bool[	  s    gg66Y''5D>>44T::VVy c4(($':49;M;M:N%OPPJ 1!&&aggYO rj   r   c                 n  ^  T R                      [        [        [        R                  " [        U 4S jUR                   5       5      [        U 4S jUR                   5       5      [        UR                  5      [        UR                     UR                  S95      sS S S 5        $ ! , (       d  f       g = f)Nc              3   F   >#    U  H  nTR                  U5      v   M     g 7frn   r  rz   r"  r   s     rk   r|   BGraphModuleDeserializer.deserialize_tensor_meta.<locals>.<genexpr>q	  s!     UCTC$22377CTr  c              3   F   >#    U  H  nTR                  U5      v   M     g 7frn   r  r  s     rk   r|   r  r	  s!     WCVC$22377CVr  )r   r   r   )fake_tensor_moder   r   rw   empty_stridedr   r   r   r   r   r   r   r   )r   r   s   ` rk   r  /GraphModuleDeserializer.deserialize_tensor_metai	  s     ""##U;CTCTUUW;CVCVWW-k.@.@A3K4E4EF"-";";	 #""s   BB&&
B4r8  c                 T    [         R                  " UR                  UR                  S9$ )Nr  )r  r,   rS  r  r:  s     rk   deserialize_script_obj_meta3GraphModuleDeserializer.deserialize_script_obj_metay	  s)     ## %%%//
 	
rj   c                    UR                   S:X  a#  U R                  UR                  R                     $ UR                   S:X  a#  U R                  UR                  R
                     $ UR                   S:X  a#  U R                  UR                  R
                     $ UR                   S:X  a#  U R                  UR                  R
                     $ UR                   S:X  a  UR                  $ UR                   S:X  a  UR                  $ UR                   S:X  a  UR                  $ UR                   S:X  a  g [        S	U 35      e)
Nr  r  rs  rq  r   r   r   ry  z"Unable to deserialize output node )r   r  r  rS  r  ro  rs  rq  r   r   r   rb   )r   r  s     rk   deserialize_graph_output0GraphModuleDeserializer.deserialize_graph_output	  s
   ;;+%//0@0@0E0EFF[[L(//0A0A0I0IJJ[[M)//0B0B0J0JKK[[N*//0C0C0K0KLL[[H$== [[J&??"[[I%>>![[I% #EfX!NOOrj   serialized_graphc           	        ^  [         R                  S5        UR                  R                  5        H1  u  p#[         R                  SX#5        U4U 4S jjT R                  U'   M3     UR
                  R                  5        H1  u  p$[         R                  SX$5        U4U 4S jjT R                  U'   M3     UR                  R                  5        H1  u  p%[         R                  SX%5        U4U 4S jjT R                  U'   M3     UR                  R                  5        H1  u  p&[         R                  SX&5        U4U 4S	 jjT R                  U'   M3     UR                  R                  5        H1  u  p'[         R                  S
U5        U4U 4S jjT R                  U'   M3     [         R                  S5        [        UR                  5       GH  u  p[         R                  SU	5        U	R                  S;   aJ  U	R                  R                  n
T R                  R                  U
5      nXl        T R!                  X5        Mv  U	R                  S:X  a}  U	R                  R                  S:X  aJ  U	R                  R"                  n
T R                  R                  U
5      nXl        T R!                  X5        M  [%        SU	R                   S35      eU	R                  S;   au  T R&                  R(                  U   R*                  R                  =(       d    SU 3n
T R                  R                  U
5      nT R-                  U	5      UR.                  S'   GM  [%        SU	 35      e   UR0                   H0  n T R3                  UR4                  5      nT R7                  X5        M2     / nUR>                   H9  n[         R                  SU5        URA                  T RC                  U5      5        M;     URD                  (       a,  [G        U5      S:w  a  [I        S[G        U5       35      eUS   nO[K        U5      nT R                  RM                  U5      nURD                  (       a*  URN                  S   R.                  S   UR.                  S'   O,[K        S URN                  S    5       5      UR.                  S'   T R                  R0                   Hg  nUR.                  RQ                  S5      =nc  M#  [R        RT                  " UST RV                  T RX                  SS 9=n(       d  MX  UUR.                  S!'   Mi     [G        T RX                  5      S:w  a.  [I        S"[G        T RX                  5       S#T RX                   35      eT R                  $ ! [8         a*  n[%        SU S[:        R<                  " 5        35      UeS nAff = f)$Nz
[deserialize_graph]z([deserialize_tensor_meta] %s (input): %sc                 &   > TR                  U 5      $ rn   )r  rr   r   s    rk   <lambda>;GraphModuleDeserializer.deserialize_graph.<locals>.<lambda>	  s    t'C'CA'Frj   z$[deserialize_sym_int] %s (input): %sc                 &   > TR                  U 5      $ rn   r  r  s    rk   r  r  	  s    (@(@(Crj   z&[deserialize_sym_float] %s (input): %sc                 &   > TR                  U 5      $ rn   )r  r  s    rk   r  r  	  s    $*D*DQ*Grj   z%[deserialize_sym_bool] %s (input): %sc                 &   > TR                  U 5      $ rn   )r  r  s    rk   r  r  	  s    )B)B1)Erj   z [deserialize_script_obj_meta] %sc                 &   > TR                  U 5      $ rn   )r  r  s    rk   r  r  	  s    $*J*J1*Mrj   z
[deserialize graph nodes]z[deserialize input] %s)r  r  r  ro  z Deserializing a constant symint z as an input)r   r   r   ry  rm  r  r"  zInvalid input type zFailed deserializing node re  z[deserialize output] %sr%   z5expected single output for single_tensor_return, got r   c              3      #    U  H?  n[        U[        R                  R                  5      (       a  UR                  S    OUv   MA     g7f)r"  N)rv   rw   r  rC   r  )rz   r  s     rk   r|   <GraphModuleDeserializer.deserialize_graph.<locals>.<genexpr>	  s8      ,.C $.c588==#A#AsJ.s   AA	rd   T)r  pendingsimplifyunbacked_bindingsz"expected no unbacked symbols, got : )-r  r  rF  ro   r  rG  rI  rH  rK  r  rC  r   rp   rS  r  r  sync_fx_nodero  rb   r  r  r  deserialize_inputr  rE  r  r>  deserialize_noder  rg  rh  rD  r}  r  rJ  r  r   r   r  r  r|  r    _free_unbacked_symbols_with_pathr  r  )r   r  rS  tensor_valuesym_int_valuesym_float_valuesym_bool_valuer8  r	  input_	node_nameplaceholder_nodeserialized_noder>  r   rD  r  output_noder   r"  r  s   `                    rk   deserialize_graph)GraphModuleDeserializer.deserialize_graph	  s   		)* #3"@"@"F"F"HDII@$U%F ((. #I $4#B#B#H#H#JDII<dR&C ((. $K &6%F%F%L%L%N!DII>V(G ((. &O %5$D$D$J$J$L DII=tT'E ((. %M &6%G%G%M%M%O!DII8/J(M ((. &P 			/0"#3#:#:;IAII.7{{<<"LL--	#'::#9#9)#D  )2%!!)>,<<$$	1 & 4 4I'+zz'='=i'H$ -6)%%iB(:6<<.U   !  !NN66q9==BBOA3i	#'::#9#9)#D /3/E/Ef/M %%e,$':6(%CDDA <F  055O22?3I3IJ%%o>  6 &..FII/8NN488@A / 337|q $KCPWL>Z  ajGGnGjj''033&1&6&6q&9&>&>u&EKU#&+ ,&++A., 'KU# JJ$$Dyy}}U++8%4%U%U"nn 11!& !  2C		-. % t$$%* 4S9N9N5O4PPRSWShShRij  zz_  $00AAWXaXlXlXnWops   4,V
W%V<<Wr  r>  c           
         S[         4S jnU[        ;   d2  U[        R                  R                  R
                  R                  :X  a  UR                  (       a  UR                  O"UR                  S   R                  R                  nU R                  UR                  5      nU R                  R                  SX%0 U5      nU R                  X5        GOU[        R                   R"                  R$                  L a  ['        S5      e[)        U[        R*                  R,                  5      (       Ga  U R/                  UR                  5      u  pWU R1                  UR2                  5      n/ UQUR5                  5       Q7 H[  n	[)        U	[        R6                  R8                  5      (       d  M.  U	R:                  S:X  d  M@  U	R<                  R?                  U5        M]     UR                  (       a  UR                  nOn[A        UR                  5      S:X  aS  [C        UR                  S   S5      (       a5  [E        US	S
5      (       a#  UR                  S   RF                  R                  OS nU R                  R                  SX%Xt5      nU RI                  X5        UR<                  R?                  U5        GO[)        U[        R*                  RJ                  /[M        5       Q75      (       a  UR                  (       a  UR                  nO2U" U5      (       a#  UR                  S   RF                  R                  OS nU RO                  X!5      u  pWU R                  R                  SX%Xt5      nU RI                  X5        OD[)        U[P        5      (       a  SU S3S-   S-   S-   OSn
['        U
SU S[S        U5       S3-   5      eUR<                  R?                  U R1                  UR2                  5      5        [T        RW                  SUR                  URX                  URZ                  UR\                  UR<                  R_                  S5      5        U[        R                  R                  R`                  R                  L a  [)        URZ                  S   =n[         5      (       d_  UR<                  S   n[)        U[        Rb                  5      (       a1  U Rd                  Rg                  URh                  Rj                  SU5        OU[        R                  R                  Rl                  R                  L aj  URZ                  S   R<                  S   n[)        U[        Rn                  5      (       a/  U Rd                  Rq                  URh                  Rj                  5        UR:                  S;  a!  SUR<                  ;  a  0 UR<                  S'   g g g )Nr   c                     [        U 5      nUR                  n[        U5      S:H  =(       a'    [        US   R                  [
        R                  5      $ )Nr%   r   )r?  rH  r  rv   rI  rw   r  )r>  r&   rH  s      rk   _is_single_tensor_returnJGraphModuleDeserializer.deserialize_node.<locals>._is_single_tensor_return
  sG    ,V4FnnGw<1$ 
$$e&6&6* rj   r   r  z_deserialize nyi for torch._higher_order_ops.triton_kernel_wrap.triton_kernel_wrapper_functionalrf  r%   r  r  TzWe failed to resolve z to an operator. z]If it's a custom op/custom triton op, this is usually because the custom op is not registeredzU when deserializing. Please import the custom op to register it before deserializing.z+ Otherwise, please file an issue on github.rS  z" Unsupported target type for node r  r  z)[deserialize_node] %s: %s(%s, {%s}) -> %sr"  )r  r  r  )9r   r  rw   opsrv  itemr.  rS  rD  rp   ro  deserialize_sym_op_inputsrC  r  create_nodedeserialize_sym_op_outputsro  rp  rq  rb   rv   rx   r  deserialize_hoo_inputsdeserialize_metadatar  rz  r  rC   r{   r  rw  r  r]  r^  r  deserialize_outputsry   rK  deserialize_inputsr3  r   r  r  r>  r  rk  r|  _assert_scalarrL   r  guard_or_defer_runtime_assertr   r   sym_constrain_range_for_sizerR   _constrain_range_for_size)r   r  r>  r  rS  r  fx_noderk  r  r  _additional_msgr  r   r0  s                 rk   r  (GraphModuleDeserializer.deserialize_node
  s   	 	 hyy~~""**+ #''  $$$,,Q/55== 
 11/2H2HIDjj,,_fBPTUG++OE&&99ZZ[ !q  

 > >??667M7MNLD001I1IJH.t.fmmo.a//ADDJ4F FFMM(+ /  ##&++ ?223q8 7 7 :KHH1NPTUU $++A.88==   jj,,vG $$_>LL)UZZ**K-H-JK
 
 ##&++ 077 $++A.88==   226KLDjj,,vG $$_> fc** ,F83DEuvmn DD   !66Gr$v,WXYZ 
 	D55o6N6NOP		7LLNNLLNNLLU#	
 UYY^^22:::gll1o5s==xxdEMM22NN@@		G uyy~~BBJJJ,,q/&&u-C#u||,,88G JJ77!5.0GLL*+ 6 8rj   r	  c           	      p   [         R                  SU5        UR                  S:X  aQ  [        R                  " [        R
                  R                  U R                  UR                  R                  5      S S9$ UR                  S:X  ar  [        R                  " [        R
                  R                  [        R                  " UR                  R                  R                  S9UR                  R                  S9$ UR                  S:X  a  [        R                  " [        R
                  R                  [        R                  " UR                   R                  R                  S9UR                   R"                  UR                   R$                  S9$ UR                  S:X  ar  [        R                  " [        R
                  R&                  [        R                  " UR(                  R                  R                  S9UR(                  R*                  S9$ UR                  S	:X  a  [        R                  " [        R
                  R,                  [        R.                  " UR0                  R                  R                  UR0                  R                  R2                  S
9UR0                  R4                  S9$ UR                  S:X  a^  [        R                  " [        R
                  R6                  [        R8                  " UR:                  R                  R                  S9S S9$ UR                  S:X  ax  [        R                  " [        R
                  R                  [        R<                  " UR>                  R                  U RA                  UR>                  RB                  5      S9S S9$ [E        SU 35      e)Nz[deserialize_input_spec] %sr  r>  r  r>  r  rt  r  )r>  r  r>  r  r  r  r  r  r  r  zUnknown input spec )#r  r  r   r  r5   r  r  deserialize_argument_specr  r  r  rT   r  rS  r  r  r  r  r  r  r  r  r  r,   r  r  r  r   rV   r  r  r  deserialize_constant_inputrp   r   )r   r	  s     rk   deserialize_input_spec.GraphModuleDeserializer.deserialize_input_spec
  s   		/366\!<<\\,,221<<3C3CD 
 VV{"<<\\++%%1;;??+?+?@{{11 
 VVx<<\\((%%188<<+<+<=xx++88..	  VV((<<\\11%%1+<+<+@+@+E+EF((== 
 VV|#<<\\,,(())..!,,:J:J:T:T ||33  VVw<<\\''$$!''++*:*:; 
 VV''<<\\,,''))..99!:J:J:P:PQ   !#6qc!:;;rj   oc                    [         R                  SU5        UR                  S:X  aQ  [        R                  " [        R
                  R                  U R                  UR                  R                  5      S S9$ UR                  S:X  a^  [        R                  " [        R
                  R                  [        R                  " UR                  R                  R                  S9S S9$ UR                  S:X  ar  [        R                  " [        R
                  R                  [        R                  " UR                  R                  R                  S9UR                  R                   S9$ UR                  S:X  ar  [        R                  " [        R
                  R"                  [        R                  " UR$                  R                  R                  S9UR$                  R&                  S9$ UR                  S:X  ar  [        R                  " [        R
                  R(                  [        R                  " UR*                  R                  R                  S9UR*                  R&                  S9$ UR                  S	:X  ar  [        R                  " [        R
                  R,                  [        R                  " UR.                  R                  R                  S9UR.                  R0                  S9$ UR                  S
:X  ar  [        R                  " [        R
                  R2                  [        R                  " UR4                  R                  R                  S9UR4                  R0                  S9$ UR                  S:X  a^  [        R                  " [        R
                  R6                  [        R8                  " UR:                  R                  R                  S9S S9$ [=        SU 35      e)Nz[deserialize_output_spec] %sr  r  r  rt  r  r  r	  r  r  r  zUnknown output spec )r  r  r   r  rE   r  r  r  r  r  r  rT   r  rS  r  r  r  r  r  r  r  r	  r  r  r
  r  r  r   rV   r  r   )r   r  s     rk   deserialize_output_spec/GraphModuleDeserializer.deserialize_output_spec
  s   		0!466]"==]]..221==3D3DE 
 VV}$==]]..%%1==+<+<+A+AB 
 VV((==]]22%%1+<+<+@+@+E+EF((44 
 VV++==]]55%%1+?+?+C+C+H+HI++:: 
 VV..==]]88%%1+B+B+F+F+K+KL..== 
 VV//==]]99%%1+C+C+G+G+L+LM//?? 
 VV,,==]]66%%1+@+@+D+D+I+IJ,,<< 
 VVw==]](($$!''++*:*:;  !#7s!;<<rj   r  c           	         [         R                  S5        [        R                  " UR                   Vs/ s H  o R                  U5      PM     snUR                   Vs/ s H  o0R                  U5      PM     snS9$ s  snf s  snf )Nz
[deserialize_signature]r  )r  r  r  ro  r  r  r  r  )r   r  r	  r  s       rk   deserialize_signature-GraphModuleDeserializer.deserialize_signature   sj    		-.&&ADQA44Q7QCFCSCSTCSa66q9CST
 	
QTs   A=B
r  serialized_state_dictr   r   .r  c           
         [         b  [        S5      eU q  [        R                  S5        [        R
                  " SS9U l        [        SSU R                  S9U l        0 S[        R                  R                  R                  R                  _S[        R                  R                  R                  R                  _S	[        R                  R                  R                  R                  _S
[        R                  R                  R                  R                   _S[        R                  R                  R                  R"                  _S[        R                  R                  R                  R$                  _S[        R                  R                  R                  R&                  _S[        R                  R                  R                  R(                  _S[        R                  R                  R                  R*                  _S[        R                  R                  R                  R,                  _S[        R                  R                  R                  R.                  _S[        R                  R                  R                  R0                  _S[        R                  R                  R                  R2                  _S[        R                  R                  R                  R4                  _S[        R                  R                  R                  R6                  _S[        R                  R                  R                  R8                  _S[        R                  R                  R                  R:                  _[        R                  R                  R                  R<                  [        R                  R                  R                  R>                  [        R                  R                  R                  R@                  [        R                  R                  R                  RB                  [        R                  R                  R                  RD                  S.EU l#        0 U l$        [K        U5      U l&        U RO                  URP                  5      U l(        0 U l)        [U        5       U l+        Su  pgS [X        RZ                  [X        R\                  4 5       u  pU(       a  UR_                  5        H  u  pUR`                  n[        Rb                  " [e        U[f        * 5      URh                  5      U RR                  U
'   U
Rk                  U5      (       a$  [m        U
[o        U5      S  5      n[q        Xm5      nM  U
Rk                  U	5      (       d  M  [m        U
[o        U	5      S  5      n[q        X}5      nM     [s        US-   5       H"  nU R                  =Rt                  S-  sl:        M$     [s        US-   5       H"  nU R                  =Rv                  S-  sl;        M$     Ub   [o        U5      S:  a  [K        U5      U l<        OS U l<        U R{                  UR|                  5        [        U Rx                  5         U R                  UR                  5      nS S S 5        [        R                  " U R                  U R|                  5      n0 nUR                  R                  S5      =n(       a  [        R                  " U5      US'   [        US5      (       a;  0 US'   UR                  R_                  5        H  u  nnUR                  US   U'   M     UUlL        [        R                  UU RP                  WU RH                  [K        U5      U RL                  U Rx                  S9S q $ ! , (       d  f       GN= f! S q f = f) Nz$_CURRENT_DESERIALIZER is already setz
[deserialize]T)assume_static_by_defaultF)allow_fallback_kernelsallow_non_fake_inputsr  FloorDivModularIndexingWhere	PythonModModCleanDiv	CeilToInt
FloorToIntCeilDivLShiftRShiftPowByNaturalFloatPowFloatTrueDiv
IntTrueDiv!IsNonOverlappingAndDenseIndicatorTruncToFloat)
TruncToInt
RoundToIntRoundDecimalToFloatIdentity)r?  c              3   4   #    U  H  n[         U   v   M     g 7frn   )r   r  s     rk   r|   6GraphModuleDeserializer.deserialize.<locals>.<genexpr>F  s      @'O!
1'Os   r%   r   r)  r  )ra  r  r  r  r   r   r   )Or   r   r  r  r   ShapeEnvr  r   r  rw   utils_sympy	functionsr)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r=  r>  r  r  r!  r   r"  r  r  r   r  r   r  r  ro   r7  r    r/  r   r8  r  r   r  maxrangeunbacked_symfloat_counterunbacked_symint_counterr   r  r  r   deserialize_module_call_graphr  r  _create_graph_module_for_exportr  r  r|  r   r  r]  r  r&  r  r_   r  )r   r  r$  r   r   r  count_unbacked_symfloatcount_unbacked_symintunbacked_symfloat_prefixunbacked_symint_prefixrq   r  r7  r	  r  r  ra  r  r)  type_fieldss                        rk   deserialize#GraphModuleDeserializer.deserialize  s(    !, !GHH $h	)II'(,55tTDN$2',&*..%D!
$
 EKK..88AA$ "5;;#5#5#?#?#O#O$ ++55;;$ U[[//99CC$ u{{))3377$ EKK..88AA$ U[[//99CC$ ekk00::EE$ 5;;--77??$ %++,,66==$ %++,,66==$   2 2 < < I I!$" EKK..88AA#$$  2 2 < < I I%$& ekk00::EE'$( 4U[[5G5G5Q5Q5s5s)$*  2 2 < < I I+$, $kk00::EE#kk00::EE % 2 2 < < I I ;;--77??!KK..88AA5$D 8 CED&7	BDN!77'11DN )+D% %(ED!=C:#@(,(;(;T=N=N'O@<$ $1779EAHHE3B3N3N)%&92884D--a0 ||$<==#&>"?"A BC256M2Q/&<==#&<"="? @A034I0M- : 2Q6788A=8 8014566!;6 6 )c..AA.E&@&P#&*#""#:#@#@A78K8KL$($F$F+==%! M ==dkk4::VLD099==hGGvG!%F!3X.0LMM5712 -GGMMO@F@R@RD56u= P $L*11).."3!%!;!;56KL..#22 2  %)!5 ML4 %)!s,   U?^> C(^> ^,D^> ,
^;6^> >_rS  r  c                     XR                   ;   a  [        SU S35      eXl        X R                   U'   SUR                  ;   a  [	        SU S35      eU R
                  U   UR                  S'   g )NzNode z& has already been deserialized before.r"  zfx_node z already has 'val' in meta)r  rb   rS  r  r   r  )r   rS  r  s      rk   r  $GraphModuleDeserializer.sync_fx_node  sp    /// 5.T!UVV-4$$T*GLL  8D61K!LMM"::4@Urj   c                 .   ^  [        U 4S jU 5       5      $ )Nc              3   Z   >#    U  H   nTR                  UR                  5      v   M"     g 7frn   )r  r  )rz   inputr   s     rk   r|   DGraphModuleDeserializer.deserialize_sym_op_inputs.<locals>.<genexpr>  s#     KF5T++EII66Fs   (+)r   )r   rC  s   ` rk   r	  1GraphModuleDeserializer.deserialize_sym_op_inputs  s    KFKKKrj   c                     [        U5      R                  nUR                   Vs0 s H  oDR                  UR                  _M     nnUR                   Vs0 s H)  nUR                  U R                  UR                  5      _M+     nn/ n[        5       nU GH  n	U	R                  U;   a  XiR                     n
XYR                     nU[        R                  :X  a  UR                  U
5        MW  U[        R                  :X  a5  [        R                  " U	R                  5      (       d  XU	R                  '   M  U	R                  5       (       + =(       a    U	R                  (       + nU(       a  UR                  XiR                     5        M  [        R                  " U	R                  5      (       a  U	R                  (       a  [!        SU	R                   S35      e[#        U5      S:  a2  [        5       nUR%                  ['        UR)                  5       5      5        UR                  XiR                     5        GM  U	R                  U;   d  GM  XiR                     XR                  '   GM     [+        U5      U4$ s  snf s  snf )Nzschema_arg z should not be kwarg_onlyr   )r?  r?  rC  rS  r>  r  r  r   r(   rC  r}  rL  keyword	iskeywordhas_default_valuerM  r   r  rT  rL  rz  r   )r   r>  r  schema_argsrX  argument_kindsactual_argsr  rk  rP  r  r>  is_positionals                rk   r  *GraphModuleDeserializer.deserialize_inputs  s   -f5??>M>T>TU>TU**ejj0>TU )//
/ JJ..uyy99/ 	 
 (3%J+-!//2%oo6<222KK$\111':K:KOO; ; /2:??+ 0022P:;P;P7P  K89"":??33(((%joo%66OP  v;?(]FKKV]]_ 56K89??k1.9//.JF??+= &> T{F""M V
s    I60I;rC  c                     / n0 nU Hf  nUR                   S:w  a)  U R                  UR                  5      X4R                   '   M<  UR                  U R                  UR                  5      5        Mh     [	        U5      U4$ )z?
For deserializing HOO inputs since HOOs do not have a schema.
rS  )rS  r  r  r}  r   )r   rC  r  rk  r  s        rk   r  .GraphModuleDeserializer.deserialize_hoo_inputs  sk     F{{b &*&<&<VZZ&H{{#D226::>?	 
 dV$$rj   inpc           	      	  ^ ^ TR                   nTR                  nUS:X  a  g US:X  a#  T R                  TR                  R                     $ US:X  a  [
        TR                     $ US:X  a  [        TR                     $ US:X  a  [        TR                     $ US:X  a  [        U[        5      (       d!  [        S[        U5      R                   35      eT R                  5          T R!                  UR"                  5        [$        R&                  " T R(                  T R"                  5      nS S S 5        T R(                  R+                  UR                  W5        T R"                  R-                  SUR                  UR                  S	9$ US
:X  a  [/        TR0                  5      $ US:X  a  TR2                  $ US:X  a  TR4                  $ US:X  a  TR6                  $ US:X  a  TR8                  $ US:X  a4  [;        TR<                  R>                  TR<                  R@                  5      $ US:X  a  T RC                  TRD                  5      $ US:X  a  T RC                  TRF                  5      $ US:X  a  T RC                  TRH                  5      $ [        U[J        5      (       aI  US:X  a5  URM                  5        VVs0 s H  u  pVUT RO                  U5      _M     snn$ [Q        SU 35      e[        U[R        5      (       Ga  [U        U5      S:X  a  / $ US:X  a+  U Vs/ s H  nT R                  UR                     PM     nnU$ US;   a  [S        U5      $ US:X  a  U V	s/ s H  n	[W        U	5      PM     sn	$ US:X  a=  U V
Vs/ s H-  n
U
 Vs/ s H  nT R                  UR                     PM     snPM/     snn
$ US;   a"  U Vs/ s H  nT RC                  U5      PM     sn$ US:X  a  UU 4S jn[S        [Y        X5      5      $ [Q        ST 35      eUS:X  aj  TRZ                  R                  T R                  ;   a#  T R                  TRZ                  R                     $ T R\                  TRZ                  R                     $ US:X  a  T R_                  TR`                  5      $ [Q        ST 35      e! , (       d  f       GN= fs  snnf s  snf s  sn	f s  snf s  snn
f s  snf ) Nry  r  r  r  r  rg  zexpected GraphArgument, got rf  rt  r  r   r   r   rm  rw  r  rq  rs  rz  zUnknown dict type: r   r  )r|  r}  r{  r~  r  r  )r  r  r  r  c                    > U R                   S:X  a  g U R                   S:X  a#  TR                  U R                  R                     $ [	        ST 35      e)Nry  r  Unhandled argument )r   r  rp   rS  rb   )rU  rf  r   s    rk    deserialize_optional_tensor_argsSGraphModuleDeserializer.deserialize_input.<locals>.deserialize_optional_tensor_args  sJ    vv*#;.#;;AGGLLII,/B3%-HIIrj   ri  r  r  )1rp   r   r  r  rS  r   r  !_SERIALIZE_TO_TORCH_MEMORY_FORMATr  _SERIALIZE_TO_TORCH_LAYOUTr  rv   r2   r   re   r  r  r  r  rK  r  register_moduler
  r   r  r   r   r   rm  r  rw  ru  rv  deserialize_sym_argumentr  rq  rs  r  ro   r  rb   rL  r  r   r   r  r   r  r  )r   rf  rp   typ_	submodulerq   rr   r  resultdimsr  rj  s   ``          rk   r  )GraphModuleDeserializer.deserialize_input  sg   		xx9 [ //0B0BCC%%,S-?-?@@''4S5I5IJJ[ -cmm<<Ze]33$24;3G3G2HI  '')&&u{{3>>t{{DJJW	 * KK''

I>::))

ZZ *  
 [ %cmm44X::Z<<Y;;[ == \!3>>..0C0CDD\!00@@^#001A1ABB]"00AAt$$..AFO411!44OO$':4&%ABBt$$5zQ	%LQRES$66sxx@ERKKE{"'056d66,, ',&+
 HRRzT11#((;zR&+  IIFKLes55c:eLL..J C @HII$':3%%@AA_$  %%)E)EE33C4E4E4J4JKK>>#"3"3"8"899]",,S__== #6se!<==U *)< P S 7 S
 Ms=   "AR(4R:#S S:
S#S
'S<S(
R7
Sc                 j   UR                   S:X  a  [        UR                  5      $ UR                   S:X  a  [        UR                  5      $ UR                   S:X  a  [        UR                  5      $ UR                   S:X  a  [        UR                  5      $ UR                   S:X  a  g [        SU S35      e)Nr   r   rm  r   ry  zUnhandled constant argument z to deserialize)
r   r   r   r   r   r3  rm  r   r   rb   )r   rf  s     rk   r  2GraphModuleDeserializer.deserialize_constant_input#  s    88xszz?"XX#&&XX$s}}%%XX"$$XX" #?uO!TUUrj   c                 >   [        U[        5      (       aF  UR                  S:X  a  UR                  $ UR                  S:X  a  U R                  UR
                     $ O[        U[        5      (       aF  UR                  S:X  a  UR                  $ UR                  S:X  a  U R                  UR
                     $ OZ[        U[        5      (       aE  UR                  S:X  a  UR                  $ UR                  S:X  a  U R                  UR
                     $ [        SU 35      e)Nr   ro  r   r   z Unknown symbolic argument type: )rv   rS   r   r   r  ro  rQ   r   rM   r   rb   )r   sym_args     rk   ro  0GraphModuleDeserializer.deserialize_sym_argument1  s    g~..||x'~~%*33GOODD +!122||z)'''*33GOODD +11||y(&*33GOODD?yIJJrj   c                 j    U R                  UR                  S   R                  R                  U5        g )Nr   )r  rD  rp   ro  )r   r  r  s      rk   r  2GraphModuleDeserializer.deserialize_sym_op_outputsC  s)    /11!4::BBGLrj   c                   ^  [        UR                  5      S:X  a  g [        UR                  5      S:X  aM  SUR                  ;   a=  [        USS5      (       d+  UR                  S   R                  S:w  a  U 4S jnU" X5      $ [        UR                  5      S:X  aQ  UR                  S   R                  S:X  a4  T R                  UR                  S   R                  R                  U5        g [        UR                  5      S:X  ak  [        UR                  S   R                  [        [        [        45      (       a4  T R                  UR                  S   R                  R                  U5        g [        UR                  5      S:X  ad  UR                  S   R                  S:X  aG  S UR                  S	'   UR                  T R                   R#                  UR                  5       S
35        g T R%                  X5        g )Nr   r%   ztorch.ops.higher_orderr  Try  c                   > / nS nU R                   S   R                  S:X  a  U R                   S   R                  nOP[        U R                   S   R                  [
        [        [        45      (       a  U R                   S   R                  nTR                  U R                  5      nUc  [        S5      eTR                  X!USU5        [        U5      UR                  S'   UTR                  UR                  '   g )Nr   r  zarg should not be Noner"  )rD  r   r  rv   rp   rS   rM   rQ   r  r  r   generate_getitemr   r  r  rS  )r  r  r  r  deserialized_metadatar   s        rk   #_deserialize_hop_with_single_returnXGraphModuleDeserializer.deserialize_outputs.<locals>._deserialize_hop_with_single_returnR  s    &("**1-22kA)11!4>>C#++A.44#_6FG  *11!4::C(,(A(A#,,)% ;()ABB%%haAVW&+HoU#=D,,W\\:rj   r  r"  _unused)r  rD  r>  r^  r   r  r  rS  rv   rp   rS   rM   rQ   ro  r  _renamer  _target_to_strdeserialize_multiple_outputs)r   r  r  r  s   `   rk   r  +GraphModuleDeserializer.deserialize_outputsF  s   &&'1, ''(A-(O,B,BBO-JDQQ''*//9<* 7PP ''(A-''*//;>o55a8BBGGQ(()Q.:##A&,,_.>?4
 4
 o55a8>>FFP''(A-''*//9< #'GLLOOtzz88HIQR))/Crj   r  r  r  c                    [        U[        5      (       a  UR                  nO[[        U[        5      (       a  UR                  nO9[        U[
        5      (       a  UR                  nO[        S[        U5       35      eU R                  R                  S[        R                  X$4US9nU R                  Xg5        UR                  U R                  U   5        UR                  R!                  U5        g )Nz+generate_getitem got unknown argument type r  rt  )rv   rT   rS  rS   ro  rQ   r   r   r  r
  r  r  r  r}  r  r  rw  )r   r  r  r  r  r  rS  individual_outputs           rk   r~  (GraphModuleDeserializer.generate_getitem  s     c>**88D^,,;;D-..;;D =d3i[I  !JJ22N	 3 
 	$244T:; 	%%&;<rj   c                    [        U5       GH  u  pV[        U[        [        [        45      (       a  U R                  XXeU5        M;  [        U[        5      (       d!  [        S[        U5      R                   35      eUR                  S;   a  U R                  XUR                  XT5        M  UR                  S;   a  U R                  R                  S[        R                  X%45      nUR                  / 5        U R!                  US   XvR                  U5        UR"                  R%                  U5        US   UR"                  S'   GM=  UR                  S:X  ai  U R                  R                  S[        R                  X%4SS9nUR                  S 5        S UR"                  S'   UR"                  R%                  U5        GM  ['        S	U 35      e   g )
Nexpected Argument, got )r  r  rq  )r  r  r  r|  r}  r~  r{  r  r  r?  r"  ry  rt  z Unimplemented node output type: )r  rv   rT   rS   rQ   r~  r'   r   r   re   rp   r  r
  r  r  r}  generate_getitemsr  rw  NotImplementedError)	r   r  r  r  r  r  r  list_outputr  s	            rk   r  )GraphModuleDeserializer.generate_getitems  s    "$HC#@PQRR%%s1F c8,,$'>tCy?Q?Q>R%STTxxFF%%syy#  	 	 #jj44#$$N
 #&&RL+yy:O   ''(=>*22,  'Y&$(JJ$:$:#$$N"	 %; %! %04!&&u-!&&--.CD),LSE*RSS[ (rj   c                    U R                  UR                  5      n/ n[        UR                  5      S:X  a  [	        UR                  S   R
                  [        5      (       d8  [        S[        UR                  S   R
                  5      R                   35      e[	        UR                  S   R
                  S   [        5      (       d;  [        S[        UR                  S   R
                  S   5      R                   35      eU R                  UUUR                  S   R                  U5        OU R                  XBUR                  U5        [        U5      UR                  S'   X R                  UR                   '   g )Nr%   r   expected list, got r  r"  )r  r  r  rD  rv   rp   rL  r   r   re   rT   r  r  r   r  r  rS  )r   r  r  r  r  s        rk   r  4GraphModuleDeserializer.deserialize_multiple_outputs  sX    !% 9 9/:R:R S !&&'1,o55a8>>EE$)$/F/Fq/I/O/O*P*Y*Y)Z[  o55a8>>qA>RR$3D9P9PQR9S9Y9YZ[9\4]4f4f3gh  ""''*55%	 ""?#:#:<Q
 $HoU5<$$W\\2rj   r  c                   ^ ^^ 0 nUR                  S5      =n(       a  X2S'   S[        4U 4S jjnUR                  S5      =n(       a3  S mS m[        UU4S jUR                  [        5       5       5      nXbS'   UR                  S5      =n(       aM  / nUR                  [        5       H.  n	U	R                  S	5      u  pUR                  X" U5      45        M0     XS'   UR                  S
5      =n(       a!  [        UR                  [        5      5      US
'   UR                  S5      =n(       a  [        R                  " U5      US'   UR                  S5      =n(       a(  T R                  [        R                  " U5      5      US'   U$ )Nr  r  c                 Z  > S nU R                  S5      (       a%  [        R                  nU R                  S5      SS  nOBU R                  S5      (       a  [        nU R                  S5      SS  nOTR	                  U 5      $ UnU H"  n[        X45      (       d  U s  $ [        X45      nM$     U$ )Nztorch.nnr  r#   rw   r%   )r  rw   r   r  r  r]  r^  )r  r  r  r>  rS  r   s        rk   deserialize_meta_funcKGraphModuleDeserializer.deserialize_metadata.<locals>.deserialize_meta_func  s    F ++J77*;*A*A#*Fqr*J'"--g66*;*A*A#*Fqr*J'001BCCF/v,,,,$V2F	 0
 Mrj   r  c                     XU44$ rn   rd   )r  r#  r$  s      rk   import_nn_module_stackLGraphModuleDeserializer.deserialize_metadata.<locals>.import_nn_module_stack  s    2J&rj   c                 4   / nSu  p#Su  pE[        U 5       HE  u  pgXt;   a  US-  nM  Xu;   a  US-  nM  US:X  d  M%  US:X  d  M-  UR                  XU 5        US-   nMG     UR                  XS  5        [        U5      S:w  a  [        S[        U5       35      eU$ )N)r   r   )z[(z)]r%   r!  r      z/expected metadata_split to return 3 parts, got )r  r}  r  r   )r  r   startr  rU  rV  endcs           rk   metadata_splitDGraphModuleDeserializer.deserialize_metadata.<locals>.metadata_split  s    !'1FCvQQca1f

8##67 #a 2 

8F+,s8q=(I#c(T  
rj   c              3   :   >#    U  H  nT" T" U5      6 v   M     g 7frn   rd   )rz   r  r  r  s     rk   r|   ?GraphModuleDeserializer.deserialize_metadata.<locals>.<genexpr>)  s"      #CD 't(<=Cs   r'  r!  r(  r)  r*  )
r|  r3  r  r  r+  r}  r   r   r  _deserialize_from_node)r   r  r.  r  r  nn_module_stack_strr  source_fn_st_strr0  source_fn_strrS  
target_strtorch_fn_str
custom_strfrom_node_strr  r  s   `              @@rk   r  ,GraphModuleDeserializer.deserialize_metadata  ss    ",,}55;5!,	S 	& #+,,/@"AAA'& # #/55lC# O &5!"'||,=>>>L!1!7!7!E#0#6#6s#; ##T+@+L$MN "F &2!"#<<
33<3#L$6$6|$DEC
O!h//:/ JJz2CM$LL55=5#::4::m;TUC
rj   from_node_datac                     Uc  g[        U[        5      (       d!  [        S[        U5      R                   35      eU Vs/ s H   n[
        R                  " U5      =nc  M  UPM"     sn$ s  snf )z0
Deserialize from_node metadata from JSON data.
Nr  )rv   rL  r   r   re   r   
_from_dict)r   r  fn_dictr6  s       rk   r  .GraphModuleDeserializer._deserialize_from_nodeB  ss     !.$// #6tN7K7T7T6U!VWW *
))44W== )
 	
 
s   A) A)r  c                 V   [         R                  SU5        UR                  S:X  a(  [        R                  " UR
                  R                  S9$ UR                  S:X  a(  [        R                  " UR                  R                  S9$ UR                  S:X  a(  [        R                  " UR                  R                  S9$ UR                  S:X  a8  [        R                  " UR                  R                  U R                  U5      S9$ [        R                  " SU R                  U5      S9$ )	Nz[deserialize_argument_spec] %sr  rt  r  rq  r  r  rS  )r  r  r   r  rT   r  rS  rS   r  ro  rQ   rq  r  r  r  r   s     rk   r  1GraphModuleDeserializer.deserialize_argument_specT  s    		2A666[ $$!++*:*:;;VV|#$$!,,*>*>??VV~%&&ANN,B,BCCVV&&&__))1G1G1J  &&Bd6L6LQ6OPPrj   r5  c           	      d   [         R                  " UR                   Vs/ s H  o R                  U5      PM     snUR                   Vs/ s H  o R                  U5      PM     sn[        UR                  5      [        UR                  5      UR                  =n(       a  US9$ S S9$ s  snf s  snf )Nr7  )	r  r@   rC  r  rD  r   r8  r9  r:  r;  s       rk   !deserialize_module_call_signature9GraphModuleDeserializer.deserialize_module_call_signaturec  s     %%;P;W;W;Wa..q1;W <Q;X;X;Xa..q1;X ##8#@#@A#$9$B$BC#8#J#JJ%J
 	
 RV
 	
s   B(	B-
r  c           	          [         R                  S5        U Vs/ s HN  n[        R                  " UR                  UR
                  (       a  U R                  UR
                  5      OS S9PMP     sn$ s  snf )Nz 
[deserialize_module_call_graph]r@  )r  r  r  r?   rA  r  r  rB  s      rk   rJ  5GraphModuleDeserializer.deserialize_module_call_grapht  sn     			56 +

 + II  ::5??K +

 
	
 

s   AA2)r   r   r  r  r  r  r  r  r  r  r  r  r  )r   Nrn   )NN)Wre   rf   rg   rh   dataclassesr
   r  r   r	   r   r  r3  r  r  r   r   r   r   r   r   r  r  rR   rw   r  rP   r  rL   r  rU   r   r  r,   r  r  r  rC   r  r1   r  r   r  r5   r  rE   r  r4   ro  r"  r3   r  r  r   r   r   r   r    rR  r  r	  r  rL  rA   r  r'   r  r+   r  ro  r  r  rT   rS   rQ   r~  r  r  r  r   r  rp  r  r@   r  r?   rJ  ri   rd   rj   rk   r_   r_     s   R R R( 8D>  0- -c 4 HL/-/-#+E#tU2B,C#D/-	/-bV c5<<6G0H .x E%:O4P g %emm8K2L  
 
0
			
P(5PSAS;T2U P({% {EHHNN {zB1 B1h B14 B1H3<	 3<bll 3<j3= 3= 3=j
 
B<S<S 
 QUv)!,v)  %T#u||*;%<e%CDv) c3h./	v)
 !%ellC/0$sCx.@A5HI
v) 'tC1L1L,L'MNv) 
v)pA Auxx}} AL(#$ (#T%T--@ %^>X ^># ^>@Vm V VK$M$ M M8D4 8D%((-- 8Dt= = >>3CCD	=
 =  $CH~=<4T 4T
  $CH~4Tl"=#"=.3hhmm"=	"=HHT#s(^ HS#X HT
&tDcN';<
	$z"	#
$Q8 Q Q
%8
			
"
!%o!6
	b  	!
rj   c                   x   \ rS rSrSS\\\\4      4S jjrS\\\	R                  4   S\\\R                  4   S\\R                  \
4   4S jr SS	S
.S\S\\\\R"                  4   \4   S\\\\R"                  4   \4   S\\\\\R"                  S4   \\\4   4   \4      S\R                  4
S jjjrSrg)r`   i  Nexpected_opset_versionc                     0 U l         U(       a  U R                   R                  U5        SU R                   ;  a,  [        R                  R	                  5       U R                   S'   g g ru  )r  rw  rw   r  rx  )r   r  s     rk   r   $ExportedProgramDeserializer.__init__  sR    68#!''../EF44427((2T2T2VD''/ 5rj   r  r  r   c                     [         R                  S5        0 nUR                  5        HO  u  pEUR                  U5      =n(       a  [         R                  SXE5        XSU'   M9  [         R	                  SU5        MQ     U$ )Nz 
[deserialize_range_constraints]z([deserialize_range_constraints] %s -> %sz;Symbol %s did not appear in the graph that was deserialized)r  r  ro   r|  r  )r   r  r  r5  rq   rr   symbols          rk   deserialize_range_constraints9ExportedProgramDeserializer.deserialize_range_constraints  ss    
 			56(..0DA.22155v5		DaK,-&)QST 1 ! rj   F_unsafe_skip_version_checkr   r   r   r   .c                :   [        U[        5      (       d!  [        S[        U5      R                   35      eUR
                  nUR                  [        S   :w  aG  UR                  S:X  a  UR                  S:X  d'  U(       d   [        SUR
                   S[         S35      eUR                  R                  5        VVs0 s HN  u  pxU[        R                  " [        UR                  [         * 5      [        UR"                  [         5      5      _MP     n	nn[%        5       R'                  UR(                  UUUU	5      n
U R+                  U	U
R,                  5      n[.        R                  " U
R(                  U
R(                  R0                  U
R2                  U
R4                  UU
R6                  U
R8                  U
R:                  UR<                   Vs/ s H  n[?        U5      PM     snS9	nUR@                  Ul!        [D        RG                  SU5        U$ s  snnf s  snf )Nexpected ExportedProgram, got r   zSerialized schema version z+ does not match our current schema version r  )	rootr  r  r   r5  r  r   r   r  z
[deserialize]: %s)$rv   r.   r   r   re   r~  r{  rJ   r|  rb   r5  ro   r   r    r/  min_valr   max_valr_   rR  ra  r  r  r  r  r  r   r  r   r   r  r   r  r  r  r  )r   r   r   r   r   r  versionrq   rr   r  resr5  rr  s                rk   rR  'ExportedProgramDeserializer.deserialize  s    *O<< 06F1G1P1P0QR  #11 ==N1--MMQ7==A#5-$01A1P1P0Q RAAO@PPQS  )::@@B 

 C	 **!!))fW5!!))V4  C 	  
 &'33)) 
 !>>   

 ##!!""((MM~~/!33--mm1A1K1KL1KA}Q'1KL

 /::		'0A 
8 Ms   >AHH)r  rn   )re   rf   rg   rh   r   r  r3  r   r   r   r    r   r   r  r.   r   rw   r  r   r   r   r  rR  ri   rd   rj   rk   r`   r`     s   WxS#X/G W!"3(C(C#CD!  $C$56! 
ellK'	(	!0 ; $);); $sELL01589; c5<</0%78	;
 !%ellC/0$sCx.@A5HI
; 
		; ;rj   r`   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )r   i  c                    > [        U[        5      (       a  UR                  $ [        U[        5      (       a%  [        R
                  " U5      R                  S5      $ [        TU ]!  U5      $ Nr   )	rv   r   rp   r   base64	b64encoder  superr.  )r   rN  	__class__s     rk   r.  EnumEncoder.default  sR    c4  99c5!!##C(//88ws##rj   rd   )re   rf   rg   rh   r.  ri   __classcell__)r  s   @rk   r   r     s    $ $rj   r   c           
      X   [        U [        5      (       a!  U R                  [        U R                  5      0$ [
        R                  " U 5      (       aN  [
        R                  " U 5       Vs0 s H,  nUR                  [        [        XR                  5      5      _M.     sn$ [        U [        5      (       a  U  Vs/ s H  n[        U5      PM     sn$ [        U [        5      (       a  [        S U  5       5      $ [        U [        5      (       a/  U R                  5        VVs0 s H  u  p4U[        U5      _M     snn$ [        U [        5      (       aI  U [        R                   :X  a  gU [        R                   * :X  a  g[        R"                  " U 5      (       a  gU $ U $ s  snf s  snf s  snnf )Nc              3   8   #    U  H  n[        U5      v   M     g 7frn   )r   r  s     rk   r|   %_dataclass_to_dict.<locals>.<genexpr>  s     8Cq'**Cr   Infinityz	-InfinityNaN)rv   r[   r   r   rp   r  is_dataclassrQ  rS  r^  rL  r   r  ro   r   r)  r-  isnan)rN  fr  rq   rr   s        rk   r   r     sQ   #v,SYY788		!	!#	&	& !'',
, FF&wsFF';<<,
 	
 
C		/23s!"1%s33	C		8C888	C		58YY[A[TQ%a(([AA	C		$((?TXXIZZ__J
)

 4 Bs   *3F9F! F&rN  c                 f    [         R                  " [        U 5      [        SS9R	                  S5      $ )NF)r   	allow_nanr   )r   r   r   r   r   )rN  s    rk   _to_json_bytesr    s+    ::(-;%PWW rj   r   rs  c                    [        U R                  5         [        X5      R                  U 5      nS S S 5        [	        WR
                  [        5      (       d+  [        S[        UR
                  5      R                   35      e[        UR
                  5      n[        UUR                  UR                  UR                  5      nU$ ! , (       d  f       N= f)Nr  )r   r   r^   r\   rv   r   r.   r   r   re   r  r   r   r   )r   rs  r
  serialized_program
json_bytesr	  s         rk   r\   r\     s    
 
00@0O0O	P6

)$
% 	 
Q (99?KK,T2D2U2U-V-_-_,`a
 	
   2 C CDJ!%%$$))	H O! 
Q	Ps   C
Cc                     [        U [        5      (       a  [        [        U S 5      nUb  U$ [        U [        R
                  5      (       a  [        U R                  5      $ U $ rn   )rv   r3  r^  r&   typing
ForwardRef_resolve_schema_cls__forward_arg__)r   resolveds     rk   r  r    sQ    #s63-O#v(())"3#6#677Jrj   c           	      L   [        U 5      n [        U [        5      (       a  [        SU  S35      e[        R
                  " U 5      [        L a  [        U R                  U5      $ [        R
                  " U 5      [        R                  :X  ar  [        S 5      [        R                  " U 5      ;   aO  Uc  g [        R                  " U 5      n[        U5      S:w  a  [        S[        U5       35      e[        US   U5      $ [        U [        5      (       Ga/  [        U [        5      (       Ga  [        U[        5      (       d!  [        S[        U5      R                    35      e[        U5      S:w  a  [        S[        U5       35      e[#        [%        UR'                  5       5      5      n[#        [%        UR)                  5       5      5      n[        U[        5      (       d!  [        S	[        U5      R                    35      e[        R*                  " U [-        [.        5      S
9nXS   nU R0                  " S0 U[        Xd5      0D6$ [2        R4                  " U 5      (       ap  0 n[        R*                  " U [-        [.        5      S
9n[2        R6                  " U 5       H*  nUR8                  n	X;  a  M  [        XY   X   5      n
XU	'   M,     U " S0 UD6$ [        U[:        5      (       aF  [        U5      S:X  a  U$ [        R                  " U 5      S   nU Vs/ s H  n[        X5      PM     sn$ [        U[        5      (       aH  [        R                  " U 5      S   nUR=                  5        VVs0 s H  u  pU[        X5      _M     snn$ U [>        L a  [?        U5      $ U$ s  snf s  snnf )NzUnresolved class type: 'z'.r#   zexpected 2 type args, got r   zexpected dict, got r%   zexpected dict with 1 key, got zexpected str key, got )globalnsrd   ) r  rv   r3  r   r  
get_originr   r  
__origin__r   r   get_argsr  
issubclassr[   r  re   rx  ry  rw  rz  get_type_hintsvarsr&   r   r  r  rQ  rS  rL  ro   r   )r   dataty_argsr  _value
type_hints
field_typerQ  r  rS  new_field_objd_typerl   v_typerq   rr   s                   rk   r  r  )  s   
c
"C#s7uB?@@*!#..$77-$t*PS@T2T<//#&w<1 #=c'l^!LMM!'!*d33	C		:c6#:#:$%% #6tDz7J7J6K!LMMt9> #A#d)!MNNT$))+&'d4;;=)*%%% #9$u+:N:N9O!PQQ**3fF
&
zzLU$6z$JKLL		!	!#	&	&**3fF
 ##C(A66D.z/?LM(4L ) }V}	D$		t9>K%a(7;<t!"6-t<<	D$		%a(=AZZ\J\TQ%f00\JJ	T{K = Ks   N)N r   artifact_bytesc                 j    UR                  S5      n[        R                  " U5      n[        X5      nU$ r  )r  r   r  r  )r   r  artifact_strartifact_dictartifact_dataclasss        rk   _bytes_to_dataclassr  \  s1    !((1LJJ|,M+C?rj   Fr  r  c                >   [        U R                  [        5      (       d+  [        S[	        U R                  5      R
                   35      e[        [        U R                  5      n[        U5      R                  UU R                  U R                  U R                  US9$ )Nzexpected bytes, got r  )rv   r   r   r   r   re   r  r.   r`   rR  r   r   r   )r	  r  r  serialized_exported_programs       rk   rR  rR  c  s     h//77"4(A(A#B#K#K"LM
 	
 #622# ''=>JJ##= K  rj   c                   ^ ^^^^^ S[         4S jmU4S jmUUU 4S jnU" TR                  5      n[        U5      [        TR                  5      :w  a-  [        S[        TR                  5       S[        U5       35      e0 mUU4S jnU4S jnT  H  nT" Xh5        M     U H  n	U	R                   H  n
T" Xj5        M     M      U H(  n	U	R
                   H  nT" XxR                  5        M     M*     U H  n
T" Xz5        M     U H  n	U	R                  R                  5         M     [        [        TR                  R                  5       [        R                  " S	5      S
95      n[        [        TR                  R                  5       [        R                  " S	5      S
95      n[        [        TR                   R                  5       [        R                  " S	5      S
95      n[        [        TR"                  R                  5       [        R                  " S	5      S
95      n[        [        TR$                  R                  5       [        R                  " S	5      S
95      nS	nU H  nUR
                   H  nUR                  nUR&                  S:X  d  M!  [)        UR*                  R,                  R
                  UR*                  R,                  R                  UR*                  R,                  T5      u  UR*                  l        nSU 3UR*                  l        US-  nM     M     [1        T UUUUUUTR2                  US9	mTT4$ )NrU  c                    U R                   S:X  a  g U R                   S:X  a  U R                  $ U R                   S:X  a  U R                  $ U R                   S:X  a  g U R                   S:X  a  g U R                   S:X  a  g U R                   S:X  a  g U R                   S:X  a  g U R                   S	:X  a  g U R                   S
:X  a  g U R                   S:X  a  U R                  $ U R                   S:X  a  U R                  $ U R                   S:X  a  U R
                  $ U R                   S:X  a  U R                  $ U R                   S:X  a  g U R                   S:X  a  g U R                   S:X  a  g U R                   S:X  a  g U R                   S:X  a  g U R                   S:X  a  g U R                   S:X  a  U R                  $ U R                   S:X  a  U R                  $ U R                   S:X  a  g U R                   S:X  a  U R                  $ U R                   S:X  a  U R                  $ U R                   S:X  a  g U R                   S:X  a  g U R                   S:X  a  g U R                   S:X  a  U R                  $ [        SU  35      e)Nry  r  r  r   r|  r   r}  rm  r~  rw  r  r  rq  r  r  r  r  r  r   r{  rs  r  rg  r  r  r  r  rz  r  z+Unknown input type to the ExportedProgram: )r   r  r  r  r  rq  r  rs  r  r  r  r  r   r  s    rk   _get_argument*_canonicalize_graph.<locals>._get_argument|  s   66YVV{";;VV|#<<VVxVVy VVz!VV{"VV{"VV|#VV|#VV|#<<VV}$== VV~%>>!VV&??"VV''VV))VV{"VV{"VVy VVz!VV}$== VV~%>>!VVz!VV,,(((VV&??"VV}$VV~%VV..VV**&&& #Nqc!RSSrj   c                    > [        U[        5      (       d!  [        S[        U5      R                   35      e[
        R                  " U T" U5      5        g )Nr  )rv   r'   r   r   re   r'  tree_map)r  rU  r  s     rk   for_args%_canonicalize_graph.<locals>.for_args  sA    !X&& #:47;K;K:L!MNN=+,rj   c                   >^ ^^^^^^^^ [          " S S5      5       n[        5       m0 m0 m/ m0 m/ nS[        [           4S jmT H  nUU4S jnT" XC5        M     [	        T 5       H5  u  mnUUU4S jnUR
                   H  nT" Xg5        M     U" / S5      TT'   M7     [	        T 5       H6  u  mnUUUUUU4S jn	UR                   H  nT" XR                  5        M     M8     UU4S	 jn
UUU4S
 jmT H  nT" X5        M     S[        4UUUU 4S jjnTR                  5        H   u  mnUR                  S:X  d  M  U" T5        M"     [        T5      S:  Ga  [        R                  " T5      u    nmT T   nUR
                   H  nT" X5        M     UR                  U5        TT;  a  [        ST S35      eTT   R                    H_  nTU   nUR                  S::  a  [        SUR                   35      eU=R                  S-  sl
        UR                  S:X  d  MW  U" U5        Ma     TT   R                   R#                  5         [        T5      S:  a  GM  U$ )Nc                   0    \ rS rSr% \\   \S'   \\S'   Srg)6_canonicalize_graph.<locals>.sort_nodes.<locals>.Edgesi  outsinsrd   N)re   rf   rg   rh   rL  r   r   ri   rd   rj   rk   Edgesr
    s    s)OHrj   r  r   c                    U c  g [        U [        5      (       a  U R                  $ [        U [        [        [
        45      (       a;  U R                  S:X  a  U R                  $ U R                  S;   a  g [        SU  35      e[        U [        5      (       aE  U R                  S:X  a  U R                  R                  $ U R                  S:X  a  g [        SU  35      e[        U [        5      (       a  U R                  $ [        SU  35      e)Nro  )r   r   r   Unknown argument type: r  ry  zUnknown optional tensor type: )rv   rT   rS  rS   rM   rQ   r   ro  r   rD   r  r,   r  s    rk   r  9_canonicalize_graph.<locals>.sort_nodes.<locals>.get_name  s    y!^,,vvAAQRSS66Y&99$VV@@(+B1#)FGGA56666[(;;+++VVy((+I!)MNNA011vv$'>qc%BCCrj   c                 H   > T" U 5      =n(       a  TR                  U5        g g rn   )r   )rU  r   r  graph_inputss     rk   	add_input:_canonicalize_graph.<locals>.sort_nodes.<locals>.add_input  s%     #1# $$Q' $rj   c                 \   > T" U 5      =n(       a  UT;   a  [        SU< S35      eTTU'   g g )Nsymbol z already in def_table)r   )rU  r   	def_tabler  r  s     rk   add_def8_canonicalize_graph.<locals>.sort_nodes.<locals>.add_def  s<     #1#I~,wqe;P-QRR#&IaL $rj   r   c                    > T" U 5      =n(       a`  UT;   a  g UT;  a  UT;  a  [        SU< S35      eg TU   nTU   R                  R                  T5        TT   =R                  S-  sl        g g )Nr  z! not in def_table or graph_inputsr%   )r   r  r}  r  )	rU  r   r  r   r  edgesr  r  r  s	      rk   add_edge9_canonicalize_graph.<locals>.sort_nodes.<locals>.add_edge  s     #1#I~	)L0"0")!.O P#  #A,C#JOO**3/#JNNa'N $rj   c                 n   > T" U 5      =n(       a%  UT;   a  [        SU< S35      e[        T5      TU'   g g )Nr  z already in rank)r   r  )rU  r   r  ranks     rk   add_rank9_canonicalize_graph.<locals>.sort_nodes.<locals>.add_rank  s@    QKq9(71%7G)HIId)Q  rj   c                 :   > T" U 5      nU(       a  UT;  a  TU   $ g)Nr?  rd   )rU  r   r   r  r  s     rk   get_rank9_canonicalize_graph.<locals>.sort_nodes.<locals>.get_rank  s"    AQi'Awrj   r  c                    > UU4S jnTU    nUR                    Vs/ s H   o3R                  U" UR                  5      4PM"     nn[        R                  " TUR
                  X@45        g s  snf )Nc                 *   >^ / mT" UU4S jU 5        T$ )Nc                 2   > TR                  T" U 5      5      $ rn   )r}  )r  r#  rankss    rk   r  c_canonicalize_graph.<locals>.sort_nodes.<locals>.add_candidate.<locals>.get_ranks.<locals>.<lambda>   s    5<<#<rj   rd   )r	  r(  r  r#  s    @rk   	get_ranksQ_canonicalize_graph.<locals>.sort_nodes.<locals>.add_candidate.<locals>.get_ranks  s    <a@rj   )rC  rS  r  heapqheappushr>  )	r  r*  r   rU  	args_rank
candidatesr  r#  rE  s	        rk   add_candidate>_canonicalize_graph.<locals>.sort_nodes.<locals>.add_candidate  sX    
 :D=A[[I[&&)AEE"23[IINN:Y'DE Js   'A)zidx z not in edgesze.ins should be > 0, got r%   )r
   r   r   r3  r  rD  rC  r  r   ro   r  r  r,  heappopr}  r   r  clear)rE  r  r.  r	  r  r   r  r  r  r  r   r0  r   r  r/  r  r  r  r#  r  r  r  r   r  sorted_inputss   `             @@@@@@@@rk   
sort_nodes'_canonicalize_graph.<locals>.sort_nodes  s4   		 	 
	 "%$&	"$IK
!	D8C= 	D0 A( Y"  #5)IC' \\$ " r1E#J * #5)IC( ( [[55) !! *&	$	 AX! 	Fs 	F 	F kkmFCuuzc" $ *o!j1IAq#:D\\% "JJt%$tC5%>??c
$K55A:(+DQUUG)LMM
55A:!$' ( #JOO!!# *o!" 
rj   z	expected z sorted nodes, got c                   > U4S jnU c  g [        U [        5      (       a#  U" U R                  TR                  5      U l        g [        U [        5      (       a4  U R
                  S:X  a#  U" U R                  TR                  5      U l        g g [        U [        5      (       a4  U R
                  S:X  a#  U" U R                  TR                  5      U l        g g [        U [        5      (       a4  U R
                  S:X  a#  U" U R                  TR                  5      U l        g g [        U [        5      (       a#  U" U R                  TR                  5      U l        g [        SU  35      e)Nc                    > S[        T5       3nU T;   a  [        SU < S35      eUTU '   X;  a  [        SU < S35      eUR                  U 5      X'   U$ )Nr  z	arg_name z already in name_tablez not in values)r  r   pop)r  rz  new_name
name_tables      rk   r  8_canonicalize_graph.<locals>.rename_def.<locals>._renameH  sk    3z?+,H:%$y<R%STT#+Jx %$yN%KLL%zz(3FOrj   ro  r  )rv   rT   rS  rF  rS   r   ro  rG  rQ   rI  rM   rH  r,   rK  r   )rU  r  r  r;  s     rk   
rename_def'_canonicalize_graph.<locals>.rename_defG  s   	 9a((QVVU%8%89AF>**vv"#AIIu/C/CD	 #+,,vv"#AIIu/E/EF	 #?++vv"#AIIu/D/DE	 #,--QVVU%<%<=AF #:1#!>??rj   c                 `  > U c  g [        U [        5      (       a,  TR                  U R                  U R                  5      U l        g [        U [        [
        45      (       a=  U R                  S:X  a,  TR                  U R                  U R                  5      U l        g g [        U [        5      (       a=  U R                  S:X  a,  TR                  U R                  U R                  5      U l        g g [        U [        5      (       a[  U R                  S:X  aJ  TR                  U R                  R                  U R                  R                  5      U R                  l        g g [        U [        5      (       a,  TR                  U R                  U R                  5      U l        g [        SU  35      e)Nro  r  r  )rv   rT   r|  rS  rS   rQ   r   ro  rM   rD   r  r,   r   )rU  r;  s    rk   replace_use(_canonicalize_graph.<locals>.replace_used  s-   9a((^^AFFAFF3AFN,<=>>vv"&NN199aii@	 #?++vv"&NN199aii@	 #122vv$#->>!++2B2BAKKDTDT#U  %,--^^AFFAFF3AF #:1#!>??rj   r   r  rg  _gr%   )	rC  rD  rE  rF  rG  rI  rH  rJ  rK  )r'   rE  r  r   rD  rC  r  r  r3  r  sortedrF  ro   r  
itemgetterrG  rI  rH  rK  r   _canonicalize_graphrg  r  rS  r1   rJ  )r4  sorted_outputsr  r   r5  sorted_nodesr=  r@  r	  r  r  sorted_tensor_valuessorted_sym_int_valuessorted_sym_float_valuessorted_sym_bool_valuessorted_custom_obj_valuescounterr   rU  r  r  r  r;  s   ` ``                @@@rk   rF  rF  y  s   <T <T~-
|| ekk*L
<C,,EKK())<S=N<OP
 	

 "$J@:@&   AZ#   A[%%(      	

 
  u""((*0C0CA0FG !u##))+1D1DQ1GH #u%%++-83F3Fq3IJ "u$$**,(2E2Ea2HI  $u&&,,.H4G4G4JK 
 GAAvv#&9JJ$$++JJ$$,,JJ$$	'#

 ! %'wi.

1   *,0. % = =2
E *rj   r  r   c                 |  ^^ [         R                  " U 5      n U=(       d
    [        5       n[        [	        U R
                  R                  5       [        R                  " S5      S95      n[        [	        U R                  R                  5       [        R                  " S5      S95      n[	        U R                  5      n[	        U R                  R                  S S9nU R                  R                  nU R                  R                  n[        UR                   5      [        UR"                  5      :w  a7  [%        S[        UR                   5       S[        UR"                  5       35      e[        UR&                  5      [        UR(                  5      :w  a7  [%        S[        UR&                  5       S[        UR(                  5       35      eS[*        [,        [.        [0           [,        4   4S	 jnS[*        [,        [.        [0           [,        4   4S
 jn	[	        [3        [5        UR                   UR"                  5      5      US9n
[        U
5      S:  a  [5        S U
 5       6 u  pOSnSn[	        [3        [5        UR&                  UR(                  5      5      U	S9n[5        S U 5       6 u  p[7        XXq5      u  nmU4S jnUU4S jnU H  mU" T5        M     U H  mU" T5        M     [9        [;        U[=        [?        U5      [?        U5      S9US9UUU R@                  U RB                  U RD                  US9$ )a3  
Normalize a serialized ExportedProgram, so that different eager program which
shares the same semantics can get a single representation on disk.

This function canonicalizes an ExportedProgram by:

1. Sorting nodes in topological order.
2. Rename nodes to have unique names.
3. Remove unstable fields.
4. Aggregate the above program fields.
5. Recurse in subgraphs.

Args:
    ep (ExportedProgram): The ExportedProgram to canonicalize.
    constants (Optional[set[str]]): Set of constants names

Returns:
    ExportedProgram: The canonicalized exported program.
r   rB  c                     U R                   $ rn   )rA  )r  s    rk   r  canonicalize.<locals>.<lambda>  s    PQPUPUrj   zgraph.inputs length z! != signature.input_specs length zgraph.outputs length z" != signature.output_specs length r   c                    U u  nu  p#[        U[        5      (       d!  [        S[        U5      R                   35      eUR                  S:X  a  SS U4$ UR                  S:X  a  SUR
                  R                  U4$ UR                  S:X  a  SUR                  R                  U4$ UR                  S:X  a  S	UR                  R                  U4$ UR                  S
:X  a  SUR                  R                  U4$ UR                  S:X  a  SS U4$ UR                  S:X  a  SUR                  R                  U4$ [        SU 35      e)Nexpected InputSpec, got r     r  r%   r  r#   r  r  r     r  r   r     Unknown input type: )rv   r5   r   r   re   r  r  r  r  r  r  r  r  r  rS  )rf  r  _argr  s       rk   
rank_input canonicalize.<locals>.rank_input  s1   \d$	** #;DJ<O<O;P!QRR99$dC<YY+%dnn33S88YY("dkk--s22YY++d**??DDYY,&doo55s::YY'!dC<YY**d))..33 #7v!>??rj   c                 `   U u  nu  p#[        U[        5      (       d!  [        S[        U5      R                   35      eUR                  S:X  a  SS U4$ UR                  S:X  a  SS U4$ UR                  S:X  a  SUR
                  R                  U4$ UR                  S:X  a  SUR                  R                  U4$ UR                  S	:X  a  S
UR                  R                  U4$ UR                  S:X  a  SS U4$ UR                  S:X  a  SS U4$ UR                  S:X  a  SS U4$ [        SU 35      e)Nexpected OutputSpec, got r  rU  r  r  r%   r  r#   r	  rT  r  rV  r  r  r  r   Unknown output type: )
rv   rE   r   r   re   r  r  r  r  r	  )r   r  rX  r  s       rk   rank_output!canonicalize.<locals>.rank_output  s8   \d$
++ #<T$Z=P=P<Q!RSS99%dC<YY-'dC<YY..d--<<cAAYY++d**66;;YY11d00??DDYY22dC<YY//dC<YY'!dC< #8!?@@rj   c              3   *   #    U  H	  u  pUv   M     g 7frn   rd   rz   r  r	  s      rk   r|   canonicalize.<locals>.<genexpr>  s     *F:1:   rd   c              3   *   #    U  H	  u  pUv   M     g 7frn   rd   ra  s      rk   r|   rb  !  s     (Evsrc  c                 j  > [        U [        5      (       d!  [        S[        U 5      R                   35      eU R                  S:X  Ga&  U R
                  R                  nUR                  S:X  a!  UR                  nTUR                     Ul        g UR                  S:X  aP  UR                  nUR                  S:X  a  TUR                     Ul
        g UR                  S:X  a  g [        SU 35      eUR                  S:X  aP  UR                  nUR                  S:X  a  TUR                     Ul
        g UR                  S	:X  a  g [        S
U 35      eUR                  S;   a  g [        SU 35      eU R                  S:X  a+  U R                  R                  nTUR                     Ul        g U R                  S:X  a+  U R                  R                  nTUR                     Ul        g U R                  S:X  a+  U R                  R                  nTUR                     Ul        g U R                  S:X  a+  U R                  R                  nTUR                     Ul        g U R                  S:X  a+  U R                   R                  nTUR                     Ul        g U R                  S:X  a  g [        SU  35      e)NrS  r  r  r  ro  r   Unknown sym_int type: rq  r   Unknown sym_float type: )ry  r   r   r   rm  r  rW  r  r  r  r  r  r  )rv   r5   r   r   re   r  r  r  rS  r  ro  rq  r  r  r  r  r  )r  r  r   r   r  t_custom_objtokreplace_tables          rk   replace_input#canonicalize.<locals>.replace_input'  s>   $	** #;DJ<O<O;P!QRR99$//%%Cxx;&MM&qvv.\)NN66Y& -aii 8AIVVx'(+A!)EFF^+$$66Y& -aii 8AIVVz)(+CA3)GHH   $';C5%ABBYY+%""A"166*AFYY("A"166*AFYY++$$((A"166*AFYY,&??..L -l.?.? @LYY'!**..C$SXX.CHYY** #7v!>??rj   c                   > [        T	[        5      (       d!  [        S[        T	5      R                   35      eT	R                  S:X  Ga&  T	R
                  R                  nUR                  S:X  a!  UR                  nTUR                     Ul        g UR                  S:X  aP  UR                  nUR                  S:X  a  TUR                     Ul
        g UR                  S:X  a  g [        SU 35      eUR                  S:X  aP  UR                  nUR                  S:X  a  TUR                     Ul
        g UR                  S	:X  a  g [        S
U 35      eUR                  S;   a  g [        SU 35      eT	R                  S:X  a+  T	R                  R                  nTUR                     Ul        g T	R                  S:X  a+  T	R                  R                  nTUR                     Ul        g T	R                  S:X  a+  T	R                  R                  nTUR                     Ul        g T	R                  S:X  a+  T	R                  R                  nTUR                     Ul        g T	R                  S:X  aI  T	R                   nTUR                  R                     UR                  l        TUR"                     Ul        g T	R                  S:X  aI  T	R$                  nTUR                  R                     UR                  l        TUR"                     Ul        g T	R                  S:X  a+  T	R&                  R                  nTUR                     Ul        g [        ST	 35      e)Nr\  r  r  r  ro  r   rf  rq  r   rg  )ry  r   r   r   rm  rW  r  r  r  r	  r  r  r  r]  )rv   rE   r   r   re   r  r  r  rS  r  ro  rq  r  r  r  r	  r  r
  r  r  )
r   r  r   r   r  guri  rj  r  s
           rk   replace_output$canonicalize.<locals>.replace_output_  s   $
++ #<T$Z=P=P<Q!RSS99%""&&Cxx;&MM&qvv.\)NN66Y& -aii 8AIVVx'(+A!)EFF^+$$66Y& -aii 8AIVVz)(+CA3)GHHVV$';C5%ABBYY-'  $$A"166*AFYY++$$((A"166*AFYY..''++A"166*AFYY11**..A"166*AFYY22++A&quuzz2AEEJ -a.?.? @AYY//((A&quuzz2AEEJ -a.?.? @AYY'!**..C$SXX.CH #8!?@@rj   r  )r  r  r  r}  )#r  deepcopyr   r  rD  rs  ro   r  rE  r5  r  ra  r  r  r  r  rC  r  r   rD  r  r   r   r   r3  r  rB  rF  r.   r3   r4   rL  r~  r  r  )r  r   rs  r5  r  r  r  r  rY  r^  
sorted_insr4  r  sorted_outsrG  r  sorted_graphrk  rp  rj  r  s                      @@rk   r  r    s   , 
r	B#,suI 0 0 6 6 8h>Q>QRS>TUVMr##))+1D1DQ1GH (Kr@@oV))IOO!!E
5<<C	 5 566"3u||#4"55VWZ[d[p[pWqVrs
 	
 5==S!7!788#C$6#77YZ]^g^t^tZuYvw
 	
@5hsmS!89 @*AE#x}c"9: A. #ellI$9$9:;J :%(*F:*F%G"{#emmY%;%;<=;K $'(E(E#F N"5u#L-6@p4Al d  t   $ -!,/ 0
 $+((,,&& rj   c                       \ rS rSrSr\S\4S j5       r\S\4S j5       r\S\4S j5       r	\S\
R                  4S j5       rS	rg
)ExtensionHandleri  z.
Base class for handling extension operators.
r   c                 2    [        U R                   S35      e)Nz  namespace() must be implementedr  r  r   s    rk   r  ExtensionHandler.namespace      !S]]O3S"TUUrj   c                 2    [        U R                   S35      eNz op_name() must be implementedry  r   r{   s     rk   r  ExtensionHandler.to_op_name      !S]]O3Q"RSSrj   rS  c                 2    [        U R                   S35      er}  ry  )r   rS  s     rk   r  ExtensionHandler.from_op_name  r  rj   c                 2    [        U R                   S35      e)Nz  op_schema() must be implementedry  r~  s     rk   r=  ExtensionHandler.op_schema  r{  rj   rd   N)re   rf   rg   rh   r   classmethodr3  r  r  r  rw   FunctionSchemar=  ri   rd   rj   rk   rw  rw    s     V# V V Ts T T T T T Ve22 V Vrj   rw  op_typeextension_handlerc                 F   [        U[        5      (       d  [        SU S35      eU [        ;   a  [        U  S35      e[	        U [
        5      (       d!  [        S[        U 5      R                   35      eU R                  R                  S5      (       d   U R                  R                  S5      (       a  [        SU R                   S35      eUR                  5       [        ;   a  [        S	UR                  5       < S
35      eU[        U '   U[        UR                  5       '   g)zJRegister custom de/serialization method for a node with non-standard type.zExpected ExtensionHandler, got r  z is already registered.zop_type must be a type, got rw   builtinszop_type module z, should not start with 'torch' or 'builtins'z
namespace z is already registeredN)r  rw  r   r<  rv   r   re   rf   r  r  r  )r  r  s     rk   register_extensionr    s"   
 ')9::>?P>QQRSTT))y(?@AAgt$$;DM<R<R;STUU$$W--1C1C1N1N2 2 g0011]^
 	
 ""$(AA*44699OP
 	
 (9G$?P/99;<rj   c                  <    [        [        R                  5       5      $ rn   )r   r<  rw  rd   rj   rk   rK  rK    s    (--/00rj   r<  r  rn   (&  r  r  r  r  r,  r@  r  r   r\  loggingr)  r  r~  rg  r  collectionsr   r   collections.abcr   r   r   r   
contextlibr	   r
   r   enumr   r   r   r   r   r   r   r   rw   torch.export.exported_programexportr   r  torch._export.non_strict_utilsr   torch._export.verifierr   torch._subclasses.fake_tensorr   r   torch.fx._symbolic_tracer   torch.fx.experimentalr   torch.fx.tracebackr   torch.utilsr   r'  torch.utils._pytreer   r   torch.utils._sympy.numbersr   torch.utils._sympy.symbolr   r   torch.utils._sympy.value_rangesr    torch.utils._tracebackr!   torch.utils._tritonr"   rC  r$   rS  r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   unionr[   __all__	getLoggerre   r  r*  rb   r  rs   r   r   r   MetaTyper  r+  uint8BYTEint8CHARuint16UINT16int16SHORTint32INTint64LONGfloat16HALFfloat32FLOATfloat64DOUBLE	complex32COMPLEXHALF	complex64COMPLEXFLOAT
complex128COMPLEXDOUBLEBOOLbfloat16BFLOAT16float8_e4m3fnFLOAT8E4M3FNfloat8_e5m2
FLOAT8E5M2float8_e4m3fnuzFLOAT8E4M3FNUZfloat8_e5m2fnuzFLOAT8E5M2FNUZr   r   
sparse_coo	SparseCoo
sparse_csr	SparseCsr
sparse_csc	SparseCsc
sparse_bsr	SparseBsr
sparse_bsc	SparseBsc_mkldnnstridedStridedr   rm  contiguous_formatContiguousFormatchannels_lastChannelsLastchannels_last_3dChannelsLast3dpreserve_formatPreserveFormatr  rl  eqnelegeltgtnegpostruncsym_notmulr   subfloordivmodpowsym_int	sym_floatsym_itesym_maxsym_minsym_sqrttruedivand_or_lshiftrshiftr  anyr   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r  r   r   r   r  r   r   r  r3  r!  r+  r/  r   r4  r9  r?  rA  r   rN  rc  r  r  r]   r^   r_   r`   JSONEncoderr   r   r  r\   r  r  r  rR  rF  r   r  rw  r  rK  r<  r  rd   rj   rk   <module>r     s	         	      	   / B B % (  ? ?   * * Q 0 D ; 1 ) ) > - 6 7 4 * 0 5 5 5 5 5 5 5 5 5 5 5 5 5 5l  !	\ 	.DdO . 	LL		NN	MM	  	KK	JJ
 
LL*## 
KK!!	
 
KK 
KK 
MM:?? 
MM:## 
MM:$$ 
OOZ++ 
OOZ,, 
j.. 
JJ
 
NNJ'' 
00  
z,,!" 
:44#$ 
:44% , ))BC  
f&&	f&&	f&&	f&&	f&&	MM6>>	MM6>>  **DE  
\::	22	L77	<66	% ! %11R$S ! KKKKKKKKKKKKLLLLJJ	MMLLLLLLLLLL	MM	OO	MM	MM	MM	NNMMLLOOOO7> @x@@@
K
LL      #d #24& 4U\\ 4@HV, @sCx @F 0 FU38_ F)
 )u{{ )v # (E%,,u~~uzzQR (
sELL01 
f 
0
5!67 
H 
0	
%emm 34 	
 	
U\\ j  >B x 9: AGZ G!15" 5L/sm/.1/
/.d38neCHou<=4?5:: ?s ?x} ?6
8C= 
ejj 
6u|| 6t 6	ELL+56		#
	A 	R 	R 	RCD CVEHHMM Vr z
e z
 z
z- A
% A
 A
H G
 G
 G
T& TE T Tn$$"" $6   /32((DcN+  	00fS % C  8<  %	 $T#s(^4
 ,@
5$sCx. !@H
 :>nn$,SX$6nnbV V,Q#YQ,-Q21 DF d3i.>)??@ E?A 4T*:%; ;< Arj   