
    Xi;                       S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SKJr  S SK	J
r
  S SK	Jr  S SK	Jr  S SK	Jr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  / SQr\R4                  " \\R8                  S9r\R<                  r\R>                  rSr Sr!Sr" " S S\#5      r$ " S S\$5      r% " S S\%5      r&\&" 5       r' " S S\%5      r( " S S\(5      r) " S  S!\%5      r* " S" S#\%5      r+ " S$ S%\%5      r, " S& S'\%5      r- " S( S)\%5      r. " S* S+\%5      r/ " S, S-\$5      r0 " S. S/\05      r1 " S0 S1\15      r2 " S2 S3\25      r3 " S4 S5\25      r4 " S6 S7\15      r5 " S8 S9\55      r6 " S: S;\55      r7 " S< S=\15      r8 " S> S?\%5      r9 " S@ SA\+5      r: " SB SC\+5      r; " SD SE\+5      r< " SF SG\+5      r= " SH SI\+5      r> " SJ SK\+5      r? " SL SM\+5      r@ " SN SO\+5      rA " SP SQ\+5      rB " SR SS\+5      rC " ST SU\+5      rD " SV SW\+5      rE " SX SY\+5      rF " SZ S[\+5      rG0 \R                  R                  \(" 5       _\R                  R                  \)" 5       _\R                  R                  \*" 5       _\R                  R                  \+" 5       _\R                  R                  \," 5       _\R                  R                  \-" 5       _\R                  R                  \." 5       _\R                  R                  \(" 5       _\R                  R                  \/" 5       _\R                  R                  \2" 5       _\R                  R                  \5" 5       _\R                  R                  \8" 5       _\R                  R                  \:" 5       _\R                  R                  \;" 5       _\R                  R                  \<" 5       _\R                  R                  \=" 5       _\R                  R                  \>" 5       _\R                  R                  \?" 5       \R                  R                  \@" 5       \R                  R                  \A" 5       \R                  R                  \B" 5       \R                  R                  \C" 5       \R                  R                  \D" 5       \R                  R                  \E" 5       \R                  R                  \F" 5       \R                  R                  \G" 5       0	Erc\R                  R                  \6" 5       \R                  R                  \7" 5       \R                  R                  \3" 5       \R                  R                  \4" 5       \R                  R                  \8" 5       \R                  R                  \9" 5       0rh\cR                  5        HD  rj\jR                  c  M  \jR                  R                  R                  rd\dc  M7  \d\h;  d  M?  \j\h\d'   MF     \m" S\5       V s/ s H  o PM     sn u
  rnrorprqrrrsrtrurvrw\x" S]5      ry " S^ S_\#5      rz " S` Sa\#5      r{ " Sb Sc\#5      r|\|" 5       r}Sd\~4Se jrgs  sn f )f    N)debug)error)eoo)asSeekableStream)isEndOfStream)peekIntoStreamreadFromStream)_MISSING)PyAsn1Error)base)char)tag)tagmap)univ)useful)StreamingDecoderDecoderdecode)flags   d      c                   D    \ rS rSrSr  SS jr  SS jr\S 5       rSr	g)AbstractPayloadDecoder-   Nc                 6    [         R                  " SU< 35      e)zdDecode value with fixed byte length.

The decoder is allowed to consume as many bytes as necessary.
z&SingleItemDecoder not implemented for r   r   	self	substrateasn1SpectagSetlengthstate	decodeFunsubstrateFunoptionss	            C/app/.venv/lib/python3.13/site-packages/pyasn1/codec/ber/decoder.pyvalueDecoder#AbstractPayloadDecoder.valueDecoder0   s     f VWW    c                 6    [         R                  " SU< 35      e)zcDecode value with undefined length.

The decoder is allowed to consume as many bytes as necessary.
z3Indefinite length mode decoder not implemented for r   r   s	            r)   indefLenValueDecoder+AbstractPayloadDecoder.indefLenValueDecoder:   s     [a cddr,   c                     SU;  a  XS'   U$ )N
asn1Object )r1   r(   s     r)   _passAsn1Object&AbstractPayloadDecoder._passAsn1ObjectD   s    w&$.L!r,   r2   NNNNN)
__name__
__module____qualname____firstlineno__protoComponentr*   r.   staticmethodr3   __static_attributes__r2   r,   r)   r   r   -   s8    N 6:26X >B:>e  r,   r   c                   *    \ rS rSr\S 5       rS rSrg)AbstractSimplePayloadDecoderL   c              #   :   #    [        XU5       H  nUv   M	     g 7fNr	   )r1   r!   r$   r(   chunks        r)   substrateCollector/AbstractSimplePayloadDecoder.substrateCollectorM   s     #Iw?EK @s   c                     UR                  S5      (       a  U$ Uc  U R                  R                  X2S9$ U[        L a  U$ UR                  U5      $ )Nnativer#   )getr:   clonenoValuer    r"   r#   valuer(   s        r)   _createComponent-AbstractSimplePayloadDecoder._createComponentR   sR    ;;x  L&&,,U,BBgO>>%((r,   r2   N)r6   r7   r8   r9   r;   rC   rM   r<   r2   r,   r)   r>   r>   L   s     )r,   r>   c                   T    \ rS rSr\R
                  " S5      r  SS jr  SS jrSr	g)RawPayloadDecoder]    Nc              +      #    U(       a)  U R                   " X#S40 UD6n	U" XXH5       H  n
U
v   M	     g U" XX440 UD6 H  nUv   M	     g 7f)NrR   )rM   r    r!   r"   r#   r$   r%   r&   r'   r(   r1   rB   rL   s               r)   r*   RawPayloadDecoder.valueDecoder`   sY      ..xOwOJ%jVM N yFNgNEK Os   AA	c              +      #    U(       a)  U R                   " X#S40 UD6n	U" XXH5       H  n
U
v   M	     g  U" XX44SS0UD6 H  nU[        R                  L a    g Uv   M     M.  7f)NrR   TallowEoo)rM   r   endOfOctetsrT   s               r)   r.   &RawPayloadDecoder.indefLenValueDecodero   s      ..xOwOJ%jVM N ".!.%,. COO+. s   A A"r2   r5   
r6   r7   r8   r9   r   Anyr:   r*   r.   r<   r2   r,   r)   rP   rP   ]   s*    XXb\N 6:26  >B:>r,   rP   c                   F    \ rS rSr\R
                  " S5      r  SS jrSrg)IntegerPayloadDecoder   r   Nc              +   R  #    US   R                   [        R                  :w  a  [        R                  " S5      e[        XU5       H  n	[        U	[        5      (       d  M  U	v   M      W	(       a  [        R                  [        U	5      SSS9n
OSn
U R                  " X#U
40 UD6v   g 7f)Nr   Simple tag format expectedbigT)signed)	tagFormatr   tagFormatSimpler   r   r
   
isinstanceSubstrateUnderrunErrorint
from_bytesbytesrM   )r    r!   r"   r#   r$   r%   r&   r'   r(   rB   rL   s              r)   r*   "IntegerPayloadDecoder.valueDecoder   s     
 !9#"5"55##$@AA#Iw?E%!788 @ NN5<tNDE E##HeGwGGs   AB' AB'r2   r5   )	r6   r7   r8   r9   r   Integerr:   r*   r<   r2   r,   r)   r]   r]      s    \\!_N 6:26Hr,   r]   c                   >    \ rS rSr\R
                  " S5      rS rSrg)BooleanPayloadDecoder   r   c                 V    [         R                  " XX#=(       a    S=(       d    S40 UD6$ )N   r   )r]   rM   rK   s        r)   rM   &BooleanPayloadDecoder._createComponent   s.    $55FKa$41A8?A 	Ar,   r2   N)	r6   r7   r8   r9   r   Booleanr:   rM   r<   r2   r,   r)   rm   rm      s    \\!_NAr,   rm   c                   X    \ rS rSr\R
                  " S5      rSr  SS jr  SS jr	Sr
g)BitStringPayloadDecoder   r2   TNc              +     #    U(       a-  U R                   " X#[        40 UD6n	U" XXH5       H  n
U
v   M	     g U(       d  [        R                  " S5      e[	        U5       H  n
[        U
[        5      (       d  M  U
v   M      W
(       a  [        R                  " S5      eUS   R                  [        R                  :X  a  [        USU5       H  n[        U[        5      (       d  M  Uv   M      [        W5      nUS:  a  [        R                  " SU-  5      e[        XS-
  U5       H  n
[        U
[        5      (       d  M  U
v   M      U R                  R                  U
SUS9nU R                   " X#U40 UD6v   g U R                  (       d-  [        R                  " SU R                  R                   -  5      e["        (       a  [#        S	5        U R$                  nU R                  R                  S
SS9nUR'                  5       nUR'                  5       U-
  U:  a  U" XR                  4SU0UD6 H  n[        U[        5      (       d  M  Uv   M      WS   nUS:  a  [        R                  " SU-  5      eU R                  R                  USS  SXS9nUR'                  5       U-
  U:  a  M  U R                   " X#U40 UD6v   g 7f)NzEmpty BIT STRING substrater   rp      Trailing bits overflow %sT)internalFormatpadding*Constructed encoding form prohibited at %s$assembling constructed serializationr,   ry   r'   ry   prependrz   )rM   rJ   r   r   r   re   rf   rc   r   rd   r
   ordr:   fromOctetStringsupportConstructedForm	__class__r6   LOGrC   tell)r    r!   r"   r#   r$   r%   r&   r'   r(   r1   rB   trailingBitsrL   	bitStringcurrent_position	components                   r)   r*   $BitStringPayloadDecoder.valueDecoder   s    
 ..xTGTJ%jVM N ##$@AA"9-E%!788 . ##$@AA!9#"5"55 .y!W El,BCC&& !F |,La''/,>  (	A:wGe%;<<K H ''77dL 8 BE ''%K7KK**## %,.2nn.E.E%F G G 367 ..''77D7Q	$>>+nn!11F:&22AM	 i)?@@#O	 %Q<La''/,>  ++;;!"d! < I nn!11F:$ ##HiK7KKs(   A3K9A)K&AKDKA!K.Kc              +   8  #    U(       a-  U R                   " X#[        40 UD6n	U" XXH5       H  n
U
v   M	     g U R                  nU R                  R	                  SSS9n U" XR                  4USS.UD6 H3  nU[
        R                  L a    O[        U[        5      (       d  M/  Uv   M5     W[
        R                  L a  ODUS   nUS:  a  [        R                  " SU-  5      eU R                  R	                  USS  SXS	9nM  U R                   " X#U40 UD6v   g 7f)
Nr,   Tr}   r'   rW   r   rw   rx   rp   r~   )rM   rJ   rC   r:   r   r   rX   re   rf   r   r   )r    r!   r"   r#   r$   r%   r&   r'   r(   r1   rB   r   r   r   s                 r)   r.   ,BitStringPayloadDecoder.indefLenValueDecoder   s>    
 ..xTGTJ%jVM N  ..''77D7Q	&22.AM!.%,.	 /i)?@@#O. COO+$Q<La''/,>  ++;;!"d! < I+ 4 ##HiK7KKs   BD#A7Dr5   )r6   r7   r8   r9   r   	BitStringr:   r   r*   r.   r<   r2   r,   r)   rt   rt      s5    ^^B'N! 6:26NLb >B:>,Lr,   rt   c                   X    \ rS rSr\R
                  " S5      rSr  SS jr  SS jr	Sr
g)	OctetStringPayloadDecoderi,  rR   TNc              +   (  #    U(       a-  U R                   " X#[        40 UD6n	U" XXH5       H  n
U
v   M	     g US   R                  [        R                  :X  aE  [        XU5       H  n
[        U
[        5      (       d  M  U
v   M      U R                   " X#W
40 UD6v   g U R                  (       d-  [        R                  " SU R                  R                  -  5      e[        (       a  [        S5        U R                  nSnUR                  5       nUR                  5       U-
  U:  aU  U" XR                   4SU0UD6 H  n[        U[        5      (       d  M  Uv   M      UW-  nUR                  5       U-
  U:  a  MU  U R                   " X#U40 UD6v   g 7f)Nr   r{   r|   r,   r'   )rM   rJ   rc   r   rd   r
   re   rf   r   r   r   r   r6   r   rC   r   r:   )r    r!   r"   r#   r$   r%   r&   r'   r(   r1   rB   headeroriginal_positionr   s                 r)   r*   &OctetStringPayloadDecoder.valueDecoder0  s     ..xTGTJ%jVM N !9#"5"55'	7Ce%;<<K D ''%K7KK**##$PSWSaSaSjSj$jkk367 ..%NN,nn!22V;&22AM	 i)?@@#O	 iF nn!22V; ##HfHHHs   A8F>CF$F;Fc              +     #    U(       a;  XpR                   La-  U R                  " X#[        40 UD6n	U" XXH5       H  n
U
v   M	     g U R                   nSn U" XR                  4USS.UD6 H1  n[	        U[
        5      (       a  Uv   U[        R                  L d  M1    O   W[        R                  L a  OX-  nMe  U R                  " X#U40 UD6v   g 7f)Nr,   Tr   )rC   rM   rJ   r:   re   rf   r   rX   )r    r!   r"   r#   r$   r%   r&   r'   r(   r1   rB   r   r   s                r)   r.   .OctetStringPayloadDecoder.indefLenValueDecoder]  s      L0G0GG..xTGTJ%jVM N  ..&22.AM!.%,.	 i)?@@#O/. COO+F " ##HfHHHs   BC5Cr2   r5   )r6   r7   r8   r9   r   OctetStringr:   r   r*   r.   r<   r2   r,   r)   r   r   ,  s6    %%b)N! 6:26+I\ >B:>"Ir,   r   c                   F    \ rS rSr\R
                  " S5      r  SS jrSrg)NullPayloadDecoderi  rR   Nc              +   F  #    US   R                   [        R                  :w  a  [        R                  " S5      e[        XU5       H  n	[        U	[        5      (       d  M  U	v   M      U R                  " X#S40 UD6n
W	(       a  [        R                  " SU-  5      eU
v   g 7f)Nr   r`   rR   z&Unexpected %d-octet substrate for Null)	rc   r   rd   r   r   r
   re   rf   rM   )r    r!   r"   r#   r$   r%   r&   r'   r(   rB   r   s              r)   r*   NullPayloadDecoder.valueDecoder  s     
 !9#"5"55##$@AA#Iw?E%!788 @ ))(BJ'J	##$Lv$UVVs   AB! AB!r2   r5   )	r6   r7   r8   r9   r   Nullr:   r*   r<   r2   r,   r)   r   r     s    YYr]N 6:26r,   r   c                   F    \ rS rSr\R
                  " S5      r  SS jrSrg)ObjectIdentifierPayloadDecoderi  r2   Nc              +     #    US   R                   [        R                  :w  a  [        R                  " S5      e[        XU5       H  n	[        U	[        5      (       d  M  U	v   M      W	(       d  [        R                  " S5      eSn
Sn[        U	5      nX:  a  X   nUS-  nUS:  a  X4-  n
OUS:  a  UnSnSnUS:  ai  US-  nU[        :  a  [        R                  " S[        U4-  5      eUS-  US	-  -   nX:  a  [        R                  " S
U
< 35      eX   nUS-  nUS:  a  Mi  XS-  U-   4-  n
OUS:X  a  [        R                  " S5      eX:  a  M  SU
S   s=::  a  S::  a	  O  OSU
-   n
OZSU
S   s=::  a  S::  a  O  OSU
S   S-
  4U
SS  -   n
O6U
S   S:  a  SU
S   S-
  4U
SS  -   n
O[        R                  " SU	S   -  5      eU R                  " X#U
40 UD6v   g 7f)Nr   r`   Empty substrater2   rp      zEOID arc exceeds maximum continuation octets limit (%d) at position %drw      !Short substrate for sub-OID past z"Invalid octet 0x80 in OID encoding'   )r   (   O   P      zMalformed first OID octet: %src   r   rd   r   r   r
   re   rf   lenMAX_OID_ARC_CONTINUATION_OCTETSrM   )r    r!   r"   r#   r$   r%   r&   r'   r(   rB   oidindexsubstrateLensubId	nextSubIdcontinuationOctetCounts                   r)   r*   +ObjectIdentifierPayloadDecoder.valueDecoder  s/     !9#"5"55##$@AA#Iw?E%!788 @ ##$5665z"LEQJEs{x!	)*&3&*a/*-0OO#//-0OQV/WX  #aZI,<=E,#::EHJ  !&IQJE  3& !y022#
 ''(LMM= "B A"*C3q6Rc!frk"SW,CVr\c!frk"SW,C##$CeAh$NOO##HcEWEEs   AG" CG")-G"B
G"r5   )	r6   r7   r8   r9   r   ObjectIdentifierr:   r*   r<   r2   r,   r)   r   r     s     **2.N 6:26;Fr,   r   c                   F    \ rS rSr\R
                  " S5      r  SS jrSrg)RelativeOIDPayloadDecoderi  r2   Nc              +     #    US   R                   [        R                  :w  a  [        R                  " S5      e[        XU5       H  n	[        U	[        5      (       d  M  U	v   M      W	(       d  [        R                  " S5      eSn
Sn[        U	5      nX:  a  X   nUS-  nUS:  a  X4-  n
OUS:  a  UnSnSnUS:  ai  US-  nU[        :  a  [        R                  " S[        U4-  5      eUS-  US	-  -   nX:  a  [        R                  " S
U
< 35      eX   nUS-  nUS:  a  Mi  XS-  U-   4-  n
OUS:X  a  [        R                  " S5      eX:  a  M  U R                  " X#U
40 UD6v   g 7f)Nr   r`   r   r2   rp   r   zNRELATIVE-OID arc exceeds maximum continuation octets limit (%d) at position %drw   r   r   z+Invalid octet 0x80 in RELATIVE-OID encodingr   )r    r!   r"   r#   r$   r%   r&   r'   r(   rB   reloidr   r   r   r   r   s                   r)   r*   &RelativeOIDPayloadDecoder.valueDecoder  s     !9#"5"55##$@AA#Iw?E%!788 @ ##$5665z"LEQJEs{("!	)*&3&*a/*-0OO#//-0OQV/WX  #aZI,<=E,#::EKM  !&IQJE  3& QJ)355#
 ''(UVV= "@ ##HfHHHs   AE/ CE/)-E/E/r5   )	r6   r7   r8   r9   r   RelativeOIDr:   r*   r<   r2   r,   r)   r   r     s     %%b)N 6:261Ir,   r   c                   D    \ rS rSr\R
                  " 5       r  SS jrSrg)RealPayloadDecoderi  Nc              +     #    US   R                   [        R                  :w  a  [        R                  " S5      e[        XU5       H  n	[        U	[        5      (       d  M  U	v   M      W	(       d  U R                  " X#S40 UD6v   g U	S   n
U	SS  n	U
S-  (       Ga3  U	(       d  [        R                  " S5      e[        (       a  [        S5        U
S-  S-   nUS	:X  a
  U	S   nU	SS  n	U	S U XS  pU(       a  U	(       d  [        R                  " S
5      eUS   S-  =(       a    S=(       d    SnU(       a  US-  nXS   -  nUSS  nU(       a  M  U
S	-	  S-  nUS:  a  [        R                  " S5      eUS:X  a  US-  nOUS:X  a  US	-  nSnU	(       a  US-  nXS   -  nU	SS  n	U	(       a  M  U
S-  (       a  U* nU
S-	  S-  nUSU-  -  nUSU4nOU
S-  (       a.  [        (       a  [        S5        U
S-  =(       a    S=(       d    SnOU
S-  S:X  a  U	(       d  [        R                  " S5      e[        (       a  [        S5         U
S-  S:X  a  [        U	5      SS4nO\U
S-  S:X  a  [        U	5      nOGU
S-  S:X  a  [        U	5      nO2[        R                  " SU
-  5      e[        R                  " SU
-  5      eU R                  " X#U40 UD6v   g ! [         a    [        R                  " S5      ef = f7f)Nr   r`   g        rp   r   zIncomplete floating-point valuezdecoding binary encoded REAL      zReal exponent screwedr   r   zIllegal Real base@   zdecoding infinite REALz-infinf   zdecoding character encoded REAL
   zUnknown NR (tag %s)zBad character Real syntaxzUnknown encoding (tag %s))rc   r   rd   r   r   r
   re   rf   rM   r   rg   float
ValueError)r    r!   r"   r#   r$   r%   r&   r'   r(   rB   foneoebpsfrL   s                     r)   r*   RealPayloadDecoder.valueDecoder  s	     !9#"5"55##$@AA#Iw?E%!788 @ ''#III1Xab	99''(IJJs23daAAv!Hab	bq	59U''(?@@1#(qAaU
V "
 a$A1u''(;<<AvQaQAa1Xab	 %
 DyBq4BbLA1IE$Ys,-I(&1EE$Y!^''(IJJs568s? ZQ/E#X_!%LE#X_!%LE  66-2  ..+b0  ##HeGwGG  22/ sW   AK2 C+K2AK2+BK2K K2K /K20K K2K 0K2!K//K2r2   r5   )	r6   r7   r8   r9   r   Realr:   r*   r<   r2   r,   r)   r   r     s    YY[N 6:26hHr,   r   c                       \ rS rSrSrSrg)!AbstractConstructedPayloadDecoderi  Nr2   )r6   r7   r8   r9   r:   r<   r2   r,   r)   r   r     s    Nr,   r   c                   R    \ rS rSrSrSrS rS r  S	S jr  S
S jr	  S
S jr
Srg)ConstructedPayloadDecoderBasei  Nc                     [         erA   NotImplementedError)r    r1   idxs      r)   _getComponentTagMap1ConstructedPayloadDecoderBase._getComponentTagMap      !!r,   c                     [         erA   r   )r    r1   r#   r   s       r)   _getComponentPositionByType9ConstructedPayloadDecoderBase._getComponentPositionByType  r   r,   c           	   +     #    S n/ n[        5       nUR                  5       n	US:X  d  UR                  5       X-   :  a  U" U40 UD6 H  n
[        U
[        5      (       d  M  U
v   M      US:X  a  W
[        R
                  L a  OUR                  W
5        UR                  U
R                  5        [        U5      S:  a  U R                  nOU R                  nUR                  [        R                  " UR                  R                  /UR                   Q76 S9nUS:X  a  M  UR                  5       X-   :  a  M  ["        (       a  [#        SU-  5        [%        U5       H  u  pUR'                  XSSSS9  M     Uv   g 7f)Nr   rp   rG   z@guessed %r container type (pass `asn1Spec` to guide the decoder)FverifyConstraints	matchTagsmatchConstraints)setr   re   rf   r   rX   appendaddr#   r   protoRecordComponentprotoSequenceComponentrI   r   TagSetbaseTag	superTagsr   	enumeratesetComponentByPosition)r    r!   r#   r&   r$   r(   r1   
componentscomponentTypesr   r   r:   r   s                r)   _decodeComponentsSchemaless9ConstructedPayloadDecoderBase._decodeComponentsSchemaless  so     

%NN,linn.1B1KK&y<G<	i)?@@#O = |	S__ <i(y//0 >"Q&!%!:!: "&!<!<'-- zz."7"7"?"?S&BRBRS . J+ linn.1B1KK6 3 '( ) (
3NC--"'% .  4 s   AE< B>E< E<8AE<c              +     #    US   R                   [        R                  :w  a  [        R                  " S5      eUR                  5       n	U(       ah  Ub  UR                  5       n
O?U R                  b  U R                  R                  US9n
OU R                  U R                  4n
U" XXH5       H  nUv   M	     g Uc  U R                  " U4X6US.UD6 H  n
[        U
[        5      (       d  M  U
v   M      UR                  5       X-   :  ac  [        (       aX  [        XS9 H  n[        U[        5      (       d  M  Uv   M      [        S[        W5      [         R"                  " U5      4-  5        W
v   g UR                  5       n
U
R%                  5         U R'                  X5      nUR(                  [*        R,                  R(                  [*        R.                  R(                  4;   Ga,  UR0                  nUR(                  [*        R.                  R(                  :H  nU(       + =(       a    UR2                  (       + n[        (       aA  [        SU(       + =(       a    S=(       d    S	< S
U=(       a    S=(       d    S	< SU< S35        [5        5       nSnUR                  5       U	-
  U:  Gad  U(       d  S nOvU(       a  UR6                  nOb U(       a  UU   R8                  nOJUU   R:                  (       d  UU   R<                  (       a  UR?                  U5      nOUU   R8                  n U" UU40 UD6 H  n[        U[        5      (       d  M  Uv   M      U(       dn  U(       ag  U(       a  URC                  WRD                  5      nODUU   R:                  (       d  UU   R<                  (       a  URG                  WRD                  U5      nU
RI                  UWSSSS9  URK                  U5        US-  nUR                  5       U	-
  U:  a  GMd  [        (       a  [        SU-  5        U(       Ga  URL                  RO                  U5      (       d-  [        R                  " SU
RP                  RR                  -  5      eURT                  (       GaC  URW                  S0 5      n[        (       a7  [        S5        URY                  5        H  u  nn[        U< SU< 35        M     U(       d  URW                  SS5      (       Ga  [[        UR\                  5       GH  u  nnUR^                  (       d  M  UR:                  (       a"  U
Ra                  U5      Rb                  (       d  MM  U
Re                  UR^                  Rf                  5      n UU   n[        (       a  [        SU< SU< 35        U
Ra                  U5      nUR(                  [*        Rj                  R(                  [*        Rl                  R(                  4;   af  [[        U5       HT  u  nn[o        UU   Rq                  5       5      nU" U4SU0UD6 H  n[        U[        5      (       d  M  Uv   M      WUU'   MV     GMO  [o        U
Ra                  U5      Rq                  5       5      nU" U4SU0UD6 H  n[        U[        5      (       d  M  Uv   M      U
RI                  UW5        GM     OU
Rr                  nU(       a.  [        R                  " S U
RP                  RR                   S!35      eOUR0                  n[        (       a  [        S"U-  5        SnUR                  5       U	-
  U:  a]  U" UU40 UD6 H  n[        U[        5      (       d  M  Uv   M      U
RI                  UWSSSS9  US-  nUR                  5       U	-
  U:  a  M]  U
v   g ! [@         a    [        R                  " SU< 35      ef = f! [h         a    [        (       a  [        SU
RP                  RR                  < SURf                  < SU
RP                  RR                  < SUR^                  Rf                  < S3	5        UR^                  RY                  5        H  u  nn[        U< SU< 35        M      UR^                  U   n GN! [h         a     [        (       a  [        SU< 35          GM  f = ff = f7f)#Nr   Constructed tag format expectedrG   r#   r&   r$   )contextz)Unused trailing %d octets encountered: %s	decoding non-rR   deterministic SET type  chosen by type ID Excessive components decoded at Fr   rp   seen component indices %s,ASN.1 object %s has uninitialized components	openTypesuser-specified open types map: -> decodeOpenTypes%default open types map of component "." governed by component "":/failed to resolve open type by governing value resolved open type  by governing value r"   ASN.1 object  is inconsistent+decoding type %r chosen by given `asn1Spec`):rc   r   tagFormatConstructedr   r   r   rI   r:   r   r   r   re   rf   r   r
   r   r   hexdumpclearr3   typeIdr   SequenceSetcomponentTypehasOptionalOrDefaultr   tagMapUniquer1   
isOptionalisDefaultedgetTagMapNearPosition
IndexErrorgetPositionByTypeeffectiveTagSetgetPositionNearTyper   r   requiredComponentsissubsetr   r6   hasOpenTypesrH   itemsr   
namedTypesopenTypegetComponentByPositionisValuegetComponentByNamenameKeyErrorSetOf
SequenceOfr   asOctetsisInconsistent)r    r!   r"   r#   r$   r%   r&   r'   r(   r   r1   rB   trailingr  	isSetTypeisDeterministicseenIndicesr   r  r   r   kv	namedTypegoverningValuer   containerValueposcontainerElementstreaminconsistencys                                  r)   r*   *ConstructedPayloadDecoderBase.valueDecoder  s     !9#":"::##$EFF%NN,#%^^-
$$0!0066f6E
 "668S8SS
%jVM N ">>.&,!.%,.
 j*@AA$$	. ~~"3"<<3$29$N%h0FGG"*N %O CHu}}X'>G@ @ A ^^%
&&z;??t}}33TXX__EE!//J 488??:I"+mSJ4S4S0SOs''2F8b8):M:SQS:S  %KC.."%66?!$(M$.$;$;M*,6sO,F,FM'_77:c?;V;V,6,L,LS,QM -7sO,F,FM "+9m!Ow!OI!)-CDD' "P ': (::9;T;TU#C33z#7R7R(<<Y=V=VX[\11&+#e 2  $qS .."%66?V s/+=>!44==kJJ++%'1';';'D'DEF F +++ 'K <Is<=$-OO$5DAqa 34 %6 !GKK0A5$I$I.7
8M8M.NNC#,#5#5 ((33J<]<]^a<b<j<j (-7-J-J ) 2 2 7 7.N-+4^+D0  #s #2:N%L !M .8-N-Ns-SN-44$(JJ$5$5t7M7M9O  O >G(6>8$9C)9 .>nS>Q>Z>Z>\-]F5>v5dPX5d\c5d	+5iAW+X+X2;O 6e ;DN3$7>8 *:*:[:[\_:`:i:i:k)l1:61`H1`X_1`I'1)=S'T'T.7 2a !+ A A#y Q /OD !+ 9 9 ++'
(<(<(E(E'FFVWY Y !
 %22MsAMQRC.."%66?!*9m!Ow!OI!)-CDD' "P 11&+#e 2  q .."%66? U & #//DLN x $, -#&3$'/9/C/C/L/L/8~~/9/C/C/L/L/8/A/A/F/F)H %I 1:0B0B0H0H0J1(+!Q,?(@ 1K!-/8/A/A./QH'/ !-'*s(+:H-K )L$,	!-!-s   C&c,Ac8Fc^2 c9^2 c^2 '!cB=cE:c_B?cAc0C c47c-c2%_cB-cbc$c>c?ccccc              +     #    US   R                   [        R                  :w  a  [        R                  " S5      eUbh  Ub  UR                  5       n	O?U R                  b  U R                  R                  US9n	OU R                  U R                  4n	U" XXH5       H  n
U
v   M	     g UcE  U R                  " U4X6US.[        USS9D6 H  n	[        U	[        5      (       d  M  U	v   M      W	v   g UR                  5       n	U	R                  5         U R                  X5      nUR                  [         R"                  R                  [         R$                  R                  4;   Ga`  U	R&                  nU	R                  [         R$                  R                  :H  nU(       + =(       a    UR(                  (       + n[*        (       aA  [+        SU(       + =(       a    S=(       d    S	< S
U=(       a    S=(       d    S	< SU< S35        [-        5       nSn [/        U5      U::  a  S nOrU(       a  UR0                  nO^ U(       a  X   R2                  nOGX   R4                  (       d  X   R6                  (       a  UR9                  U5      nOX   R2                  n U" X4SS0UD6 H1  n[        U[        5      (       a  Uv   U[<        R>                  L d  M1    O   W[<        R>                  L a  OU(       dl  U(       ae  U(       a  URA                  URB                  5      nOBX   R4                  (       d  X   R6                  (       a  URE                  URB                  U5      nU	RG                  UUSSSS9  URI                  U5        US-  nGMw  [*        (       a  [+        SU-  5        U(       Ga  URJ                  RM                  U5      (       d-  [        R                  " SU	RN                  RP                  -  5      eURR                  (       Ga|  URU                  S0 5      n[*        (       a7  [+        S5        URW                  5        H  u  nn[+        U< SU< 35        M     U(       d  URU                  SS5      (       Ga  [Y        URZ                  5       GH  u  nnUR\                  (       d  M  UR4                  (       a"  U	R_                  U5      R`                  (       d  MM  U	Rc                  UR\                  Rd                  5      n UU   n[*        (       a  [+        SU< SU< 35        U	R_                  U5      nUR                  [         Rh                  R                  [         Rj                  R                  4;   a  [Y        U5       Ho  u  nn[m        UU   Ro                  5       5      nU" U4S U0[        USS9D6 H1  n[        U[        5      (       a  Uv   U[<        R>                  L d  M1    O   UUU'   Mq     GMj  [m        U	R_                  U5      Ro                  5       5      nU" U4S U0[        USS9D6 HE  n[        U[        5      (       a  Uv   U[<        R>                  L a    GM  U	RG                  UU5        MG     GM     OU	Rp                  nU(       a.  [        R                  " S!U	RN                  RP                   S"35      eOUR&                  n[*        (       a  [+        S#U-  5        Sn U" UU4SS0UD6 H1  n[        U[        5      (       a  Uv   U[<        R>                  L d  M1    O   W[<        R>                  L a  OU	RG                  UUSSSS9  US-  nMo  U	v   g ! [:         a    [        R                  " SU	< 35      ef = f! [f         a    [*        (       a  [+        SU	RN                  RP                  < SURd                  < SU	RN                  RP                  < SUR\                  Rd                  < S3	5        UR\                  RW                  5        H  u  nn[+        U< SU< 35        M      UR\                  U   n GNB! [f         a     [*        (       a  [+        SU< 35          GM  f = ff = f7f)$Nr   r   rG   r   TrW   r   r   rR   r   r   r   r   r   rW   Fr   rp   r   r   r   r   r   r   r  r  r  r  r  r  r  r"   r  r	  r
  )9rc   r   r  r   r   rI   r:   r   r   r   dictre   rf   r  r3   r  r   r  r  r  r  r   r   r   r  r1   r  r  r  r  r   rX   r  r  r  r   r   r  r  r   r6   r  rH   r  r   r  r   r!  r"  r#  r$  r%  r&  r'  r   r(  r)  )r    r!   r"   r#   r$   r%   r&   r'   r(   r1   rB   r  r+  r,  r-  r   r   r   r.  r/  r0  r1  r   r2  r3  r4  r5  r6  r  s                                r)   r.   2ConstructedPayloadDecoderBase.indefLenValueDecoder  s     !9#":"::##$EFF##%^^-
$$0!0066f6E
 "668S8SS
%jVM N ">>C&,!C%)'D%AC
 j*@AA$$	C ^^%
&&z;??t}}33TXX__EE#11J"))TXX__<I"+mSJ4S4S0SOs''2F8b8):M:SQS:S  %KCz?c)#H)66H*'1'A'AH'_77:?;V;V'1'G'G'LH (2'A'AH "+9!Y!YQX!YI!)-CDD' COO3 "Z /&: (::9;T;TU#33z7R7R(<<Y=V=VX[\11&+#e 2  $qa d s/+=>!44==kJJ++%'1';';'D'DEF F *** 'K <Is<=$-OO$5DAqa 34 %6 !GKK0A5$I$I.7
8M8M.NNC#,#5#5 ((33J<]<]^a<b<j<j (-7-J-J ) 2 2 7 7.N-+4^+D0  #s #2:N%L !M .8-N-Ns-SN-44$(JJ$5$5t7M7M9O  O >G(6>8$9C)9 .>nS>Q>Z>Z>\-]F5>v 6_PX 6_AEgX\A]6_	+5iAW+X+X2;O+4+G,16_ ;DN3$7>8  *:*:[:[\_:`:i:i:k)l1:6 2[H 2[=A'TX=Y2[I'1)=S'T'T.7'0COO'C(-$.$E$Ec9$U2[} /OR %/$=$=M$#//+J,@,@,I,I+JJZ[] ] %22MsAMQRC!*!="L;?"LCJ"LI ")-CDD' COO3"L /11&+#e 2  q) , C & #//DNP F $, -#&3$'/9/C/C/L/L/8~~/9/C/C/L/L/8/A/A/F/F)H %I 1:0B0B0H0H0J1(+!Q,?(@ 1K!-/8/A/A./QH'/ !-'*s(+:H-K )L$,	!-!-s   Ca6 Ea63] a6	7]  a6] 9a6H1a6>^Ca6%D=a6&7a6%^a6B-a33aa6$a/)a3*a6.a//a33a6r2   )NNNr5   )r6   r7   r8   r9   r   r   r   r   r   r*   r.   r<   r2   r,   r)   r   r     sD    !"" 591h 6:26[| >B:>ir,   r   c                   X    \ rS rSr\R
                  " 5       r\R                  " 5       rSr	g)"SequenceOrSequenceOfPayloadDecoderi  r2   N)
r6   r7   r8   r9   r   r  r   r'  r   r<   r2   r,   r)   r=  r=    s    ==?!__.r,   r=  c                   6    \ rS rSr\R
                  " 5       rSrg)SequencePayloadDecoderi  r2   N)r6   r7   r8   r9   r   r  r:   r<   r2   r,   r)   r?  r?    s    ]]_Nr,   r?  c                   6    \ rS rSr\R
                  " 5       rSrg)SequenceOfPayloadDecoderi  r2   N)r6   r7   r8   r9   r   r'  r:   r<   r2   r,   r)   rA  rA        __&Nr,   rA  c                   X    \ rS rSr\R
                  " 5       r\R                  " 5       rSr	g)SetOrSetOfPayloadDecoderi  r2   N)
r6   r7   r8   r9   r   r  r   r&  r   r<   r2   r,   r)   rD  rD    s    88:!ZZ\r,   rD  c                   6    \ rS rSr\R
                  " 5       rSrg)SetPayloadDecoderi  r2   N)r6   r7   r8   r9   r   r  r:   r<   r2   r,   r)   rF  rF    s    XXZNr,   rF  c                   6    \ rS rSr\R
                  " 5       rSrg)SetOfPayloadDecoderi  r2   N)r6   r7   r8   r9   r   r&  r:   r<   r2   r,   r)   rH  rH    s    ZZ\Nr,   rH  c                   R    \ rS rSr\R
                  " 5       r  SS jr  SS jrSr	g)ChoicePayloadDecoderi  Nc           	   +     #    Uc  U R                   R                  US9n	OUR                  5       n	U(       a  U" XXH5       H  n
U
v   M	     g U R                  X5      nU	R                  U:X  aQ  [        (       a  [	        SU< S35        U" XR
                  40 UD6 H  n[        U[        5      (       d  M  Uv   M      OR[        (       a  [	        SU< S35        U" XR
                  X4U40 UD6 H  n[        U[        5      (       d  M  Uv   M      WR                  n[        (       a  [	        SU< SU< 35        U	R                  XSSSSS9  U	v   g 7f)	NrG   r   z as explicitly tagged CHOICEz as untagged CHOICEdecoded component , effective tag set Fr   r   r   	innerFlag)
r:   rI   r3   r#   r   componentTagMapre   rf   r  setComponentByType)r    r!   r"   r#   r$   r%   r&   r'   r(   r1   rB   r   r  s                r)   r*   !ChoicePayloadDecoder.valueDecoder  sK     ,,22&2AJ ")J%jVM N &&z;&sIJ&99F=DF	i)?@@#OF s@A&996&$&	 i)?@@#O	& $333	?[\%%#e	 	& 	
 s   B/E5AEA
Ec           
   +   &  #    Uc  U R                   R                  US9n	OUR                  5       n	U(       a  U" XXH5       H  n
U
v   M	     g U R                  X5      nU	R                  U:H  n[        (       a&  [	        SU< SU=(       a    S=(       d    S< S35         U(       a&  U" XR
                  R                  40 [        USS9D6nO'U" XR
                  R                  X4U40 [        USS9D6nU Hw  n[        U[        5      (       a  Uv   U[        R                  L a    OJUR                  n[        (       a  [	        S	U< S
U< 35        U	R                  XSSSSS9  U(       a  Mw    O   U(       a  W[        R                  L a  OM  U	v   g 7f)NrG   r   z as zexplicitly unztagged CHOICETr9  rL  rM  FrN  )r:   rI   r3   r#   r   r  r  r:  re   rf   r   rX   r  rQ  )r    r!   r"   r#   r$   r%   r&   r'   r(   r1   rB   isTaggediteratorr   r  s                  r)   r.   )ChoicePayloadDecoder.indefLenValueDecoder  s     ,,22&2AJ ")J%jVM N &&z;$$.32]:d:< = $77DD47T24
 %77DDEK-1'D-IK &	i)?@@#O/"+";";3 )?< = --#&+#e#	 .   x- &0 yCOO;K N s   E%F+&Fr2   r5   )
r6   r7   r8   r9   r   Choicer:   r*   r.   r<   r2   r,   r)   rJ  rJ    s)    [[]N 6:261h >B:>?r,   rJ  c                   R    \ rS rSr\R
                  " 5       r  SS jr  SS jrSr	g)AnyPayloadDecoderi  Nc              +     #    Uc  Sn	O:UR                   [        R                  L a  X2R                  ;  n	OX2R                  :g  n	U	(       a  UR
                  n
UR                  5       nUR                  U
[        R                  5        XKU
-
  -  n[        (       aO  [        X5       H  n[        U[        5      (       d  M  Uv   M      [        S[        R                  " W5      -  5        U(       a,  U" U R                   " X#["        40 UD6XU5       H  nUv   M	     g [%        XU5       H  n[        U[        5      (       d  M  Uv   M      U R                   " X#W40 UD6v   g 7f)NTz&decoding as untagged ANY, substrate %s)r   r   TagMaptagMapr#   markedPositionr   seekosSEEK_SETr   r   re   rf   r   r  rM   rJ   r
   )r    r!   r"   r#   r$   r%   r&   r'   r(   
isUntaggedfullPositioncurrentPositionrB   s                r)   r*   AnyPayloadDecoder.valueDecoder  s7     J6==06J  ??2J$33L'nn.ONN<544Fs+I>E!%)?@@# ?   ==/0 1 %))(GOwOw0 0
 #Iw?E%!788 @ ##HeGwGGs   B7E=A?E Ec              +      #    Uc  Sn	O:UR                   [        R                  L a  X2R                  ;   n	OX2R                  :H  n	U	(       a  Sn
[
        (       a  [        S5        OUR                  nUR                  5       nUR                  U[        R                  5        [        XU-
  U5       H  n
[        U
[        5      (       d  M  U
v   M      [
        (       a"  [        S[        R                  " W
5      -  5        U R                   nU(       aL  XpR"                  La>  U R$                  " X#[&        40 UD6nU" UW
U-   U[)        U
5      -   U5       H  n
U
v   M	     g [
        (       a  [        S5        U R"                  n U" X4USS.UD6 H1  n[        U[        5      (       a  Uv   U[*        R,                  L d  M1    O   W[*        R,                  L a  OW
U-  n
M\  U(       a  W
v   g U R$                  " X#W
40 UD6v   g 7f)NFr,   zdecoding as tagged ANYz-decoding as untagged ANY, header substrate %sr|   Tr   )r   r   r\  r]  r#   r   r^  r   r_  r`  ra  r
   re   rf   r   r  r:   rC   rM   rJ   r   r   rX   )r    r!   r"   r#   r$   r%   r&   r'   r(   rU  rB   rc  rd  r1   r   s                  r)   r.   &AnyPayloadDecoder.indefLenValueDecoderG  s     H6==00H 0HEs,- %33L'nn.ONN<5'	\3QSZ[e%;<<K \ sCemmTYFZZ[ &&L0G0GG..'6-46J &	 16CJ3FQQ 367 ..&.6B!.%,.	 i)?@@#O/. COO+YE " K ''%K7KKs   CG>C0G><AG>r2   r5   rZ   r2   r,   r)   rZ  rZ    s,    XXZN 6:26'HT >B:>ILr,   rZ  c                   6    \ rS rSr\R
                  " 5       rSrg)UTF8StringPayloadDecoderi  r2   N)r6   r7   r8   r9   r   
UTF8Stringr:   r<   r2   r,   r)   ri  ri    rB  r,   ri  c                   6    \ rS rSr\R
                  " 5       rSrg)NumericStringPayloadDecoderi  r2   N)r6   r7   r8   r9   r   NumericStringr:   r<   r2   r,   r)   rl  rl        '')Nr,   rl  c                   6    \ rS rSr\R
                  " 5       rSrg)PrintableStringPayloadDecoderi  r2   N)r6   r7   r8   r9   r   PrintableStringr:   r<   r2   r,   r)   rp  rp        ))+Nr,   rp  c                   6    \ rS rSr\R
                  " 5       rSrg)TeletexStringPayloadDecoderi  r2   N)r6   r7   r8   r9   r   TeletexStringr:   r<   r2   r,   r)   rt  rt    rn  r,   rt  c                   6    \ rS rSr\R
                  " 5       rSrg)VideotexStringPayloadDecoderi  r2   N)r6   r7   r8   r9   r   VideotexStringr:   r<   r2   r,   r)   rw  rw    s    ((*Nr,   rw  c                   6    \ rS rSr\R
                  " 5       rSrg)IA5StringPayloadDecoderi  r2   N)r6   r7   r8   r9   r   	IA5Stringr:   r<   r2   r,   r)   rz  rz        ^^%Nr,   rz  c                   6    \ rS rSr\R
                  " 5       rSrg)GraphicStringPayloadDecoderi  r2   N)r6   r7   r8   r9   r   GraphicStringr:   r<   r2   r,   r)   r~  r~    rn  r,   r~  c                   6    \ rS rSr\R
                  " 5       rSrg)VisibleStringPayloadDecoderi  r2   N)r6   r7   r8   r9   r   VisibleStringr:   r<   r2   r,   r)   r  r    rn  r,   r  c                   6    \ rS rSr\R
                  " 5       rSrg)GeneralStringPayloadDecoderi  r2   N)r6   r7   r8   r9   r   GeneralStringr:   r<   r2   r,   r)   r  r    rn  r,   r  c                   6    \ rS rSr\R
                  " 5       rSrg)UniversalStringPayloadDecoderi  r2   N)r6   r7   r8   r9   r   UniversalStringr:   r<   r2   r,   r)   r  r    rr  r,   r  c                   6    \ rS rSr\R
                  " 5       rSrg)BMPStringPayloadDecoderi  r2   N)r6   r7   r8   r9   r   	BMPStringr:   r<   r2   r,   r)   r  r    r|  r,   r  c                   6    \ rS rSr\R
                  " 5       rSrg)ObjectDescriptorPayloadDecoderi  r2   N)r6   r7   r8   r9   r   ObjectDescriptorr:   r<   r2   r,   r)   r  r    s    ,,.Nr,   r  c                   6    \ rS rSr\R
                  " 5       rSrg)GeneralizedTimePayloadDecoderi  r2   N)r6   r7   r8   r9   r   GeneralizedTimer:   r<   r2   r,   r)   r  r    s    ++-Nr,   r  c                   6    \ rS rSr\R
                  " 5       rSrg)UTCTimePayloadDecoderi  r2   N)r6   r7   r8   r9   r   UTCTimer:   r<   r2   r,   r)   r  r    s    ^^%Nr,   r  r   )r   r   c                   V    \ rS rSr\r\" 5       rSr\	r	\
r
\\4S jrSSS\SS4S jrSrg)SingleItemDecoderi  Tc                     U[         La  UOU R                  U l        U[         La  UOU R                  U l        0 U l        0 U l        g rA   )r   TAG_MAP_tagMapTYPE_MAP_typeMap	_tagCache_tagSetCache)r    r]  typeMapignoreds       r)   __init__SingleItemDecoder.__init__  s;    !'x!7vT\\#*(#: r,   Nc              +   j  #    UR                  SS5      n	U	[        :  a  [        R                  " S[        -  5      eU	S-   US'   UR	                  SS5      n
[
        (       a  [        S[        R                  XTU4-  5        U
(       a  U R                  (       a  [        USU5       H  n[        U[        5      (       d  M  Uv   M      W[        :X  a)  [
        (       a  [        S	5        [        R                  v   g UR                  S
[         R"                  5        U R$                  nU R&                  nU R(                  nU R*                  n[,        nUR/                  5       Ul        U[2        LGaJ  U[4        L a  Sn[        USU5       H  n[        U[        5      (       d  M  Uv   M      [7        W5      n UU   nUc&  U(       a   UU   nO[:        R>                  " SU5      nOUU-   n[@        n[
        (       a  [        SU-  5        U[@        L GaS  [        USU5       H  n[        U[        5      (       d  M  Uv   M      [7        W5      nUS:  a  UnOUS:  a  US-  nU[B        :  a  [        R                  " SU[B        4-  5      e[        UUU5       H  n[        U[        5      (       d  M  Uv   M      [E        W5      n[G        U5      U:w  a*  [        R                  " U< S[G        U5      < SU< 35      eSnU H  nUS-  nUU-  nM     US-  nOSnUS:X  a'  U R                  (       d  [        R                  " S5      e[H        n[
        (       a  [        SU-  5        U[H        L a  Uc  [J        nO[L        nU[J        L a   X   nU(       a  [N        nO XS S    nU(       a  [N        nO[P        n[
        (       a  [        SU=(       a    URR                  RT                  =(       d    S< SU[N        L =(       a    S =(       d    S!< 35        [        R                  RW                  US L =(       a    S"=(       d     URX                  RR                  RT                  5        U[L        L Gap  URR                  [Z        R\                  L Ga   X#   n[
        (       a  [        S#5        UR^                  Ra                  5        H-  u  nn [        S$U< S%U RR                  RT                  < 35        M/     URb                  (       aV  [        S&5        URb                  Ra                  5        H-  u  nn [        S$U< S%U RR                  RT                  < 35        M/     [        S'US L =(       a    S=(       d    URe                  5       < S(U< 35        OPX2Rf                  :X  d  X2Rh                  ;   a0  Un[
        (       a"  [        S)URR                  RT                  -  5        OS nUbK   UURj                     n[
        (       a  [        S*URj                  < 35        U(       a	  Un[N        nO[P        nOS n[P        n[
        (       a  [        SU[N        L =(       a    URR                  RT                  =(       d    S< S,U[N        L =(       a    S =(       d    S!< 35        [        R                  RW                  US L =(       a    S"=(       d    URR                  RT                  5        U[N        L Ga  UR                  S-S5      (       d
  U(       d  S. nUR/                  5       n"US:X  a=  WRn                  " XX4[H        X40 UD6 H  n[        U[        5      (       d  M  Uv   M      OWRp                  " XX4[H        X40 UD6 H  n[        U[        5      (       d  M  Uv   M      UR/                  5       U"-
  n#U(       d  U#U:w  a  [        S/U#< S0U< S135      eU(       a  U#U:  a  [        S/U#< S2U< S135      e[
        (       ax  [        SURR                  RT                  < S3URR                  RT                  < S4[        U[r        Rt                  5      =(       a    URw                  5       =(       d    U< S535        [2        nGOCU[P        L a  U(       aO  US   Rx                  [:        Rz                  :X  a.  US   R|                  [:        R~                  :w  a  [        n[N        nOS nU R                  n[
        (       aQ  [        SU=(       a    URR                  RT                  =(       d    S< S6U[N        L =(       a    S =(       d    S7< 35        U[        L a?  U R                  n[
        (       a"  [        S8URR                  RT                  -  5        [N        nU[        L a  [        R                  " U< S9U< 35      eU[2        La  GMJ  [
        (       a:  [        R                  R	                  5         [        S:[        R                  -  5        Uv   g ! [8         a    UnUS-  nUS-  nUS-  nUS:X  a}  SnSnSn [        USU5       H  n[        U[        5      (       d  M  Uv   M      W(       d  [        R                  " S5      e[7        U5      nUS-  nUS-  nUUS-  -  nUS-  (       d  OMv  [:        R<                  " UUUS9nU(       a  UUU'    G	Nf = f! [8         a    [:        R>                  " SU5      nX?U'    G	N
f = f! [8         a    S n GNzf = f! [8         a    S n GNwf = f! [8         a    S n GNf = f! [8         aw    [:        R>                  " URf                  Rl                  URf                  Rl                  5      n! UU!   n[
        (       a  [        S+U!< 35         GN! [8         a    S n  GNf = ff = f7f);N_nestingLevelr   z0ASN.1 structure nesting depth exceeds limit (%d)rp   rW   FzWdecoder called at scope %s with state %d, working with up to %s octets of substrate: %sr   zend-of-octets sentinel foundTr          z'Short octet stream on long tag decodingrw   r   r   )tagClassrc   tagIdr2   z$tag decoded into %s, decoding lengthz+BER length field size %d exceeds limit (%d)<z at r   r   z6Indefinite length encoding not supported by this codeczvalue length decoded into %dzcodec z<none>z% chosen by a built-in type, decoding rL   zas explicit tag?z!candidate ASN.1 spec is a map of:z  r   zbut neither of: znew candidate ASN.1 spec is z, chosen by zcandidate ASN.1 spec is %sz6value decoder chosen for an ambiguous type by type ID zvalue decoder chosen by base z  chosen by ASN.1 spec, decoding recursiveFlagc              3      #    U v   g7f)a  Legacy hack to keep the recursiveFlag=False option supported.

The decode(..., substrateFun=userCallback) option was introduced in 0.1.4 as a generalization
of the old recursiveFlag=False option. Users should pass their callback instead of using
recursiveFlag.
Nr2   )r1   
_substrate_length_optionss       r)   r'   0SingleItemDecoder.__call__.<locals>.substrateFun7  s      )(s   zRead z bytes instead of expected r  z bytes are more than expected z yields type z	, value:
z
...z chosen, decoding z
as failurezcodec %s chosen, decoding valuez not in asn1Spec: z%decoder left scope %s, call completed)ErH   MAX_NESTING_DEPTHr   r   popr   r   scopesupportIndefLengthr
   re   rf   EOO_SENTINELr   rX   r_  r`  SEEK_CURr  r  r  r  rJ   r   r^  stStopstDecodeTagr   r%  r   Tagr   stDecodeLengthMAX_LENGTH_OCTETSlistr   stGetValueDecoderstGetValueDecoderByTagstGetValueDecoderByAsn1SpecstDecodeValuestTryAsExplicitTagr   r6   pushr:   r   r\  presentTypesr  	skipTypesprettyPrintTyper#   r]  r  r   r.   r*   r   Asn1ItemprettyPrintrc   r  r  tagClassUniversalrawPayloadDecoderdefaultErrorStatestDumpRawValuedefaultRawDecoderstErrorCondition)$r    r!   r"   r#   r$   r%   r&   r'   r(   r  rW   eoo_candidater]  r  tagCachetagSetCacherL   
isShortTag	firstByte
firstOctetlastTag
integerTagr  rc   r  lengthOctetIdxintegerBytesizeencodedLengthlengthOctetconcreteDecoder
chosenSpecr/  
baseTagSetr   	bytesReads$                                       r)   __call__SingleItemDecoder.__call__  s    
  OQ7,,##BEVV  $11#4 ;;z513 UI>? @
 //!/	1g!Fm-CDD'' "G ,367oo% r2;;/-->>''#,>>#3	 6!#!
!/	1g!FI!)-CDD' "G !^
&7&z2GN >!=%0%<F "%B!8 %v-F&3>GH&"0Aw"GJ!*.DEE(( #H !_
#'F#%%,D//#//I $&7M9 9  *8	4)Q%m5KLL"// *R %)$7M=)T1#::-13}3EvN  F'41+- (5 AID  FR<(?(?++,dee)36?@))#2E 8E" ..+&,nO
 #)E/*0*<
 ' - 23_  NDapazaz  bD  bD  NP  HP  NP  RW  [h  Rh  Rt  mt  RI  xI  RI  J  KKK$$_%<%D%yHfHfHpHpHyHyz33%%6*%-%5

 s?@-5-B-B-H-H-JMJ
AKK<P<P QR .K $-- 23191C1C1I1I1K
A #J@T@T$U V 2Lj\`N`Nmem  ONq{  rL  rL  rN  ON  PV  W  X.&OO2K!)Js88;M;M;V;VVW "&J)3*1*2C2C*D3^h^o^o qr '#- - !3 '+O.E3Q^H^  IFcrc|c|  dF  dF  IR  JR  IR  TY  ]j  Tj  Tv  ov  TK  zK  TK  L  MKK$$Z4%7%?C%`:CWCWC`C`a%{{?D99,) %.NN$4!R<!0!E!E%",= "; 3:"; &e-CDD"'K"; "1!=!=%",= "; 3:"; &e-CDD"'K"; !* 03D DI'I,?)GPRXY[ [%)f*<)JSU[\^ ^ 3&00995??;S;S!%7OE<M<M<OXSXXZ [ **q	++s/G/GGq	**c.C.CC&7O)E '+O 22E3/:poNgNgNpNp:|t|:|  D  HU  U  a  Za  q  eq  q  r  s&"&"8"839O<U<U<^<^^_%((''06A ]	 6!d	 3KKOO7%++EFO	   #7!+J)D0H *T 1I&-E}%*
)* !"/=iG/T#-k;Q#R#R*5$5 0U $/&+&B&B$M'" !" *-[)9J*a/N!aKE!j4&78E#-#4 %! #$ "gg!)YeG "/6,G#7T  ( =%(ZZG%<F6<
3=p   +&*O+ $ /*./$ $ *%)
*> $ 3%(ZZ
0A0A0I0IJL]L]LeLe%f
3.4Z.@O"s #$U V' 3.2O33s8  B9n3?Cn3!n35h :
n3k
 
A*n38A3n3/Cn3k6 n3l	 !C)n3l En3!3l/ D9n39n3H(n39A
n3AkA1kn3kn3
%k3/n32k33n36ln3ln3	ln3ln3l,(n3+l,,n3/A	n09nn3n,'n0(n3+n,,n00n3)r  r  r  r  )r6   r7   r8   r9   r  r  rZ  r  r  r  r  r   r  r  r  r<   r2   r,   r)   r  r    sB    ()+GH&  ,0Tddr,   r  c                   ,    \ rS rSrSr\rSS jrS rSr	g)r   i  a  Create an iterator that turns BER/CER/DER byte stream into ASN.1 objects.

On each iteration, consume whatever BER/CER/DER serialization is
available in the `substrate` stream-like object and turns it into
one or more, possibly nested, ASN.1 objects.

Parameters
----------
substrate: :py:class:`file`, :py:class:`io.BytesIO`
    BER/CER/DER serialization in form of a byte stream

Keyword Args
------------
asn1Spec: :py:class:`~pyasn1.type.base.PyAsn1Item`
    A pyasn1 type object to act as a template guiding the decoder.
    Depending on the ASN.1 structure being decoded, `asn1Spec` may
    or may not be required. One of the reasons why `asn1Spec` may
    me required is that ASN.1 structure is encoded in the *IMPLICIT*
    tagging mode.

Yields
------
: :py:class:`~pyasn1.type.base.PyAsn1Item`, :py:class:`~pyasn1.error.SubstrateUnderrunError`
    Decoded ASN.1 object (possibly, nested) or
    :py:class:`~pyasn1.error.SubstrateUnderrunError` object indicating
    insufficient BER/CER/DER serialization on input to fully recover ASN.1
    objects from it.

    In the latter case the caller is advised to ensure some more data in
    the input stream, then call the iterator again. The decoder will resume
    the decoding process using the newly arrived data.

    The `context` property of :py:class:`~pyasn1.error.SubstrateUnderrunError`
    object might hold a reference to the partially populated ASN.1 object
    being reconstructed.

Raises
------
~pyasn1.error.PyAsn1Error, ~pyasn1.error.EndOfStreamError
    `PyAsn1Error` on deserialization error, `EndOfStreamError` on
     premature stream closure.

Examples
--------
Decode BER serialisation without ASN.1 schema

.. code-block:: pycon

    >>> stream = io.BytesIO(
    ...    b'0      ')
    >>>
    >>> for asn1Object in StreamingDecoder(stream):
    ...     print(asn1Object)
    >>>
    SequenceOf:
     1 2 3

Decode BER serialisation with ASN.1 schema

.. code-block:: pycon

    >>> stream = io.BytesIO(
    ...    b'0      ')
    >>>
    >>> schema = SequenceOf(componentType=Integer())
    >>>
    >>> decoder = StreamingDecoder(stream, asn1Spec=schema)
    >>> for asn1Object in decoder:
    ...     print(asn1Object)
    >>>
    SequenceOf:
     1 2 3
Nc                 j    U R                   " S0 UD6U l        [        U5      U l        X l        X0l        g )Nr2   )SINGLE_ITEM_DECODER_singleItemDecoderr   r  	_asn1Specr  )r    r!   r"   r(   s       r)   r  StreamingDecoder.__init__  s.    "&":":"EW"E*95!r,   c              #     #     U R                   " U R                  U R                  40 U R                  D6 H  nUv   M	     [	        U R                  5       H  n[        U[        5      (       a  S v     O   W(       a  g M|  7frA   )r  r  r  r  r   re   rf   )r    r1   rB   s      r)   __iter__StreamingDecoder.__iter__  su     "55OOT^^F7;}}F
  F 't7e%;<<	 8  s   A>B )r  r  r  r  rA   )
r6   r7   r8   r9   __doc__r  r  r  r  r<   r2   r,   r)   r   r     s    HT , r,   r   c                   @    \ rS rSrSr\r\SS j5       r\	S 5       r
Srg)r   i  zfCreate a BER decoder object.

Parse BER/CER/DER octet-stream into one, possibly nested, ASN.1 object.
Nc                 @  ^ [        U5      nSU;   a  US   mSU4S jjnXCS'   U R                  " X40 UD6nU HF  n[        U[        5      (       a  [        R                  " S5      e [        [        U5      5      nXg4s  $    g! [        R                   a    Sn N f = f)a7  Turns BER/CER/DER octet stream into an ASN.1 object.

Takes BER/CER/DER octet-stream in form of :py:class:`bytes`
and decode it into an ASN.1 object
(e.g. :py:class:`~pyasn1.type.base.PyAsn1Item` derivative) which
may be a scalar or an arbitrary nested structure.

Parameters
----------
substrate: :py:class:`bytes`
    BER/CER/DER octet-stream to parse

Keyword Args
------------
asn1Spec: :py:class:`~pyasn1.type.base.PyAsn1Item`
    A pyasn1 type object (:py:class:`~pyasn1.type.base.PyAsn1Item`
    derivative) to act as a template guiding the decoder.
    Depending on the ASN.1 structure being decoded, `asn1Spec` may or
    may not be required. Most common reason for it to require is that
    ASN.1 structure is encoded in *IMPLICIT* tagging mode.

substrateFun: :py:class:`Union[
        Callable[[pyasn1.type.base.PyAsn1Item, bytes, int],
                 Tuple[pyasn1.type.base.PyAsn1Item, bytes]],
        Callable[[pyasn1.type.base.PyAsn1Item, io.BytesIO, int, dict],
                 Generator[Union[pyasn1.type.base.PyAsn1Item,
                                 pyasn1.error.SubstrateUnderrunError],
                           None, None]]
    ]`
    User callback meant to generalize special use cases like non-recursive or
    partial decoding. A 3-arg non-streaming variant is supported for backwards
    compatiblilty in addition to the newer 4-arg streaming variant.
    The callback will receive the uninitialized object recovered from substrate
    as 1st argument, the uninterpreted payload as 2nd argument, and the length
    of the uninterpreted payload as 3rd argument. The streaming variant will
    additionally receive the decode(..., **options) kwargs as 4th argument.
    The non-streaming variant shall return an object that will be propagated
    as decode() return value as 1st item, and the remainig payload for further
    decode passes as 2nd item.
    The streaming variant shall yield an object that will be propagated as
    decode() return value, and leave the remaining payload in the stream.

Returns
-------
: :py:class:`tuple`
    A tuple of :py:class:`~pyasn1.type.base.PyAsn1Item` object
    recovered from BER/CER/DER substrate and the unprocessed trailing
    portion of the `substrate` (may be empty)

Raises
------
: :py:class:`~pyasn1.error.PyAsn1Error`
    :py:class:`~pyasn1.error.SubstrateUnderrunError` on insufficient
    input or :py:class:`~pyasn1.error.PyAsn1Error` on decoding error.

Examples
--------
Decode BER/CER/DER serialisation without ASN.1 schema

.. code-block:: pycon

   >>> s, unprocessed = decode(b'0      ')
   >>> str(s)
   SequenceOf:
    1 2 3

Decode BER/CER/DER serialisation with ASN.1 schema

.. code-block:: pycon

   >>> seq = SequenceOf(componentType=Integer())
   >>> s, unprocessed = decode(
        b'0     ', asn1Spec=seq)
   >>> str(s)
   SequenceOf:
    1 2 3

r'   Nc              3     >#     T" XX#5      nU H  nUv   M	     g! [          a^  nUR                  R                  (       a  e [        U[        R
                  5      (       d   e[        R                  TXU5      n SnANqSnAff = f7f)a2  Support both 0.4 and 0.5 style APIs.

substrateFun API has changed in 0.5 for use with streaming decoders. To stay backwards compatible,
we first try if we received a streaming user callback. If that fails,we assume we've received a
non-streaming v0.4 user callback and convert it for streaming on the fly
N)	TypeError__traceback__tb_nextre   ioBytesIOr   _callSubstrateFunV4asV5)r1   r!   r$   r(   substrate_gen_valuerL   origSubstrateFuns          r)   substrateFunWrapper-Decoder.__call__.<locals>.substrateFunWrapperE  s|     u$4ZF$\M +EK + ! u++33%i<<<<$+$C$CDTV`ms$tMus+   B	 B
BAA?:B?BBzShort substrate on inputr,   rA   )r   STREAMING_DECODERre   rf   r   nextr
   EndOfStreamError)	clsr!   r"   r(   r  streamingDecoderr1   tailr  s	           @r)   r  Decoder.__call__  s    ` %Y/	W$&~6 & ':N#00,#*, +J*&<==223MNNN956
 ## + )) s   (BBBc              #      #    UR                  5       nUS:X  a  [        U5      nU " XU5      u  pVUR                  U5      nUR                  5         UR	                  U* [
        R                  5        Uv   g 7f)Nr   )readr   writetruncater_  r`  r  )substrateFunV4r1   r!   r$   substrate_bytesrL   nextSubstratenbytess           r)   r  Decoder._callSubstrateFunV4asV5i  sd     #..*R<)F-j6R/w,s   A4A6r2   rA   )r6   r7   r8   r9   r  r   r  classmethodr  r;   r  r<   r2   r,   r)   r   r     s8     )v$ v$p  r,   r   attrc                     SSS.R                  U 5      =n(       a-  [        R                  " U  SU S3[        SS9  [	        5       U   $ [        U 5      e)Nr  r  )r]  r  z is deprecated. Please use z	 instead.r   )
stacklevel)rH   warningswarnDeprecationWarningglobalsAttributeError)r
  newAttrs     r)   __getattr__r    sU    &:>BB4HHwH9')LN`mnoy!!

r,   )r  r`  sysr  pyasn1r   r   pyasn1.codec.berr   pyasn1.codec.streamingr   r   r   r
   pyasn1.compatr   pyasn1.errorr   pyasn1.typer   r   r   r   r   r   __all__registerLoggeer6   DEBUG_DECODERr   rJ   rf   r   r  r  objectr   r>   rP   r  r]   rm   rt   r   r   r   r   r   r   r   r=  r?  rA  rD  rF  rH  rJ  rZ  ri  rl  rp  rt  rw  rz  r~  r  r  r  r  r  r  r  rk   r#   rr   r   r   r   r   r   
Enumeratedr   r  r  rX  rj  rm  rq  ru  rx  r{  r  r  r  r  r  r  r  r  r  r  r&  r'  r[   r  valuestypeDecoderr:   r   ranger  r  r  r  r  r  r  r  r  r  ri   r  r  r   r   r   strr  )xs   0r)   <module>r%     sW   
 	 
      3 0 1 1 " $      
385+>+>?
,,55  #%    V >)#9 )"&4 &R &' H8 H0A1 A@L: @LFSI < SIl5 .>F%A >FB4I < 4InkH5 kH\(> C$E CL/)F /
%? %'A '*< *
 0  "2 "u8 upuL4 uLr'8 '*"; *,$= ,*"; *+#< +&7 &*"; **"; **"; *,$= ,&7 &
/%> /.$= .&5 &LL.0LL.0 	NN24 	68	
 	II(* 	  "@"B 	68 	OO13 	II(* 	MM<> 	HHOO-/ 	KK,. 	OO46 	:<  	!>!@!" 	:<#$ 	 < >%& 	NN24:<:<:<!>!@NN24
""$B$D
!!#@#B
NN029B 	HHOO&(JJ*,MM02OO46KK,.HHOO&( >>#K!!-++55<<&"8*HV	 $  Ry!y!Ay!		 V}v vr`v `FIf ID 
c M "s   	Y