
    ,hV                        U d dl Z d dlZd dlmZmZ d dlmZ d dlm	Z	mZm
Z
mZ d dlmZmZ d dlmZmZ d dlmZmZmZmZmZmZ d dlmZ d d	lmZmZmZmZm Z m!Z!m"Z"m#Z#mZm$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ d d
l,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@ d dlAmBZBmCZCmDZD er<d dlEmFZFmGZG d dlHmIZI d dlJmKZK d dlLmMZMmNZNmOZO e+eMeNeOf   ZPeeef   ZQe+eReSef   ZTe+eUeVf   ZWdede+eU   fdZXdede+eU   fdZYdede+eV   fdZZdede+eV   fdZ[h dZ\h dZ]dede^fdZ_dZ`dedeRfdZadedeRfdZbdedeSfd ZcdedeSfd!Zddgd&Zedhd'Zfdhd(Zgdid)Zhdjd*Zidkd+Zjdkd,Zkdkd-Zldedd.fd/Zmdede eef   fd0Zndede$e   fd1Zodede(ed2f   fd3Zpdede'e   fd4Zqdede"e   fd5Zrdedee   fd6Zsded"d#d$d%defd7Ztded"d#de-fd8Zudedefd9Zvdedefd:Zwdedefd;Zxdedefd<Zydedefd=Zzdedefd>Z{dedefd?Z|dedefd@Z}dedefdAZ~dedefdBZdede8fdCZdedefdDZdedefdEZdFedeegef   fdGZdldHZdldIZdldJZdldKZded$d%defdLZ e*dM      ZdFe)e   deegef   fdNZdFe)e   deege)e   f   fdOZdede)e   fdPZdeddQfdRZdede&eU   fdSZ e*dTe%U      ZdVe)e   d$e)d%   dee(ed2f   gef   fdWZdXe)dY   d$e)d%   deege eUef   f   fdZZ G d[ d\      ZeeaetgfeetgfeUeX eejd]       eekd^       eeld_       eeid`da      gfeVeZ eejd]       eekd^       eeld_       eeid`da      gfe^e_gfeReagfeSec eeedbdcd      gfee~gfee4gfe	e3gfe
e6gfee5gfeemgfeengfeeogfeepgfeeqgfeergfeesgfe-eugfeevgfee|gfee}gfeexgfeeygfeezgfee{gfgZe$e(e)e   e$e   f      ede<   dFe)e   d$e)d%   de#e8ddf   fdfZy)m    N)OrderedDictdeque)Hashable)datedatetimetime	timedelta)DecimalDecimalException)EnumIntEnum)IPv4AddressIPv4InterfaceIPv4NetworkIPv6AddressIPv6InterfaceIPv6Network)Path)TYPE_CHECKINGAnyCallableDequeDict
ForwardRef	FrozenSet	Generatorr   List
NamedTuplePatternSetTupleTypeTypeVarUnion)UUID)warn)errors)
parse_dateparse_datetimeparse_duration
parse_time)	AnyCallableall_literal_valuesdisplay_as_type	get_classis_callable_typeis_literal_typeis_namedtupleis_none_typeis_typeddict)almost_equal_floatslenient_issubclasssequence_like)Literal	TypedDict)
BaseConfig)
ModelField)ConstrainedDecimalConstrainedFloatConstrainedIntvreturnc                    t        | t              rt        | t              r| j                  S | S t        | t        t
        t        f      rt        |       S t        | t        t        f      r| j                         S t        j                         N)
isinstancestrr   valuefloatintr
   bytes	bytearraydecoder'   StrErrorr?   s    X/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/pydantic/v1/validators.pystr_validatorrN   <   sf    !Sa77NH	AsG,	-1v	Ay)	*xxzoo    c                 n    t        | t              rt        | t              s| S t        j                         rB   )rC   rD   r   r'   rK   rL   s    rM   strict_str_validatorrQ   K   s'    !S*Q"5
//
rO   c                 ,   t        | t              r| S t        | t              rt        |       S t        | t              r| j	                         S t        | t
        t        t        f      rt        |       j	                         S t        j                         rB   )
rC   rH   rI   rD   encoderF   rG   r
   r'   
BytesErrorrL   s    rM   bytes_validatorrU   Q   sj    !U	Ay	!Qx	As	xxz	AsG,	-1v}}!!rO   c                     t        | t              r| S t        | t              rt        |       S t        j                         rB   )rC   rH   rI   r'   rT   rL   s    rM   strict_bytes_validatorrW   ^   s3    !U	Ay	!Qx!!rO   >   0fnnoofffalser   >   1tyonyestrue   c                 (   | du s| du r| S t        | t              r| j                         } t        | t              r| j	                         } 	 | t
        v ry| t        v ry	 t        j                         # t        $ r t        j                         w xY wNTF)
rC   rH   rJ   rD   lower	BOOL_TRUE
BOOL_FALSE	TypeErrorr'   	BoolErrorrL   s    rM   bool_validatorrl   k   s    DyAJ!UHHJ!SGGI!	>
?  


  !  !s   A3 A3 3Bi  c                 (   t        | t              r
| du s| du s| S t        | t        t        t        f      r&t        |       t        kD  rt        j                         	 t        |       S # t        t        t        f$ r t        j                         w xY wrf   )rC   rG   rD   rH   rI   lenmax_str_intr'   IntegerErrorrj   
ValueErrorOverflowErrorrL   s    rM   int_validatorrs      s}    !S19U
 !c5),-#a&;2F!!##$1vz=1 $!!##$s   
A( ()Bc                 ^    t        | t              r
| du s| du s| S t        j                         rf   )rC   rG   r'   rp   rL   s    rM   strict_int_validatorru      s,    !S19U




rO   c                     t        | t              r| S 	 t        |       S # t        t        f$ r t	        j
                         w xY wrB   )rC   rF   rj   rq   r'   
FloatErrorrL   s    rM   float_validatorrx      sB    !U"Qxz" "!!"	   
 $Ac                 N    t        | t              r| S t        j                         rB   )rC   rF   r'   rw   rL   s    rM   strict_float_validatorr{      s     !U



rO   fieldr;   configr:   c                     t        |j                  dd       }||j                  }|du r>t        j                  |       st        j
                  |       rt        j                         | S )Nallow_inf_nanF)getattrtype_r   mathisnanisinfr'   NumberNotFiniteError)r?   r|   r}   r   s       rM   float_finite_validatorr      sU    EKK$?M,,4::a=DJJqM))++HrO   c                     |j                   }|j                  \t        |       t        |j                        z  dz  }t        |d      s,t        |d      s t	        j
                  |j                        | S )Nrd   g        g      ?)multiple_of)r   r   rF   r5   r'   NumberNotMultipleError)r?   r|   
field_typemods       rM   number_multiple_validatorr      se    $)KKJ)Ahz5566:"3,5Hc5R//J<R<RSSHrO   c                    |j                   }|j                  /| |j                  kD  s t        j                  |j                        |j                  /| |j                  k\  s t        j
                  |j                        |j                  /| |j                  k  s t        j                  |j                        |j                  /| |j                  k  s t        j                  |j                        | S Nlimit_value)
r   gtr'   NumberNotGtErrorgeNumberNotGeErrorltNumberNotLtErrorleNumberNotLeError)r?   r|   r   s      rM   number_size_validatorr      s    $)KKJ}} Z]]):%%*--@@		"1
+=%%*--@@}} Z]]):%%*--@@}} jmm);%%*--@@HrO   c                 h    | |j                   k7  r"t        j                  | |j                   g      | S )zValidate ``const`` fields.

    The value provided for a ``const`` field must be equal to the default value
    of the field. This is to support the keyword of the same name in JSON
    Schema.
    given	permitted)defaultr'   WrongConstantError)r?   r|   s     rM   constant_validatorr      s.     	EMM''aEMM?KKHrO   c                     t        |       }|j                  }||k  rt        j                  |      |j                  }|||kD  rt        j
                  |      | S r   )rn   min_anystr_lengthr'   AnyStrMinLengthErrormax_anystr_lengthAnyStrMaxLengthError)r?   r}   v_len
min_length
max_lengths        rM   anystr_length_validatorr      s]    FE))Jz))jAA))J%*"4))jAAHrO   c                 "    | j                         S rB   )striprL   s    rM   anystr_strip_whitespacer          779rO   c                 "    | j                         S rB   )upperrL   s    rM   anystr_upperr      r   rO   c                 "    | j                         S rB   )rg   rL   s    rM   anystr_lowerr      r   rO   AnyOrderedDictc                     t        | t              r| S 	 t        |       S # t        t        f$ r t	        j
                         w xY wrB   )rC   r   rj   rq   r'   	DictErrorrL   s    rM   ordered_dict_validatorr      sC    ![!!1~z" !  !ry   c                     t        | t              r| S 	 t        |       S # t        t        f$ r t	        j
                         w xY wrB   )rC   dictrj   rq   r'   r   rL   s    rM   dict_validatorr      sB    !T!Awz" !  !ry   c                 z    t        | t              r| S t        |       rt        |       S t        j                         rB   )rC   listr7   r'   	ListErrorrL   s    rM   list_validatorr     s1    !T	q	Aw  rO   .c                 z    t        | t              r| S t        |       rt        |       S t        j                         rB   )rC   tupler7   r'   
TupleErrorrL   s    rM   tuple_validatorr     1    !U	q	Qx!!rO   c                 z    t        | t              r| S t        |       rt        |       S t        j                         rB   )rC   setr7   r'   SetErrorrL   s    rM   set_validatorr     s/    !S	q	1voorO   c                 z    t        | t              r| S t        |       rt        |       S t        j                         rB   )rC   	frozensetr7   r'   FrozenSetErrorrL   s    rM   frozenset_validatorr   !  s2    !Y	q	|##%%rO   c                 z    t        | t              r| S t        |       rt        |       S t        j                         rB   )rC   r   r7   r'   
DequeErrorrL   s    rM   deque_validatorr   *  r   rO   c                     	 |j                  |       }|j
                  r|j                  S |S # t        $ r* t        j                  t	        |j                               w xY w)N)enum_values)r   rq   r'   EnumMemberErrorr   use_enum_valuesrE   )r?   r|   r}   enum_vs       rM   enum_member_validatorr   3  s[    DQ "116<<=v=  D$$ekk1BCCDs	   - 3A c                    	 t        | t              rt        |       } n0t        | t        t        f      r	 t        | j                               } t        | t              st        j                         t        |j                  dd       }|r%| j                  |k7  rt        j                  |      | S # t        $ r t        |       } Y {w xY w# t        $ r t        j                         w xY w)N)rH   _required_version)required_version)rC   rD   r%   rH   rI   rJ   rq   r'   	UUIDErrorr   r   versionUUIDVersionError)r?   r|   r   s      rM   uuid_validatorr   <  s    !aQAE9-."$ a  u{{,?FAII)99%%7GHHH  " qM"  !  !s(   2C B2 2C
C 	C

C C+c                 J   t        | t              r| S t        | t        t        f      r| j	                         } t        |       j                         } 	 t        |       } | j                         st        j                         | S # t        $ r t        j                         w xY wrB   )rC   r
   rH   rI   rJ   rD   r   r   r'   DecimalError	is_finiteDecimalIsNotFiniteErrorrL   s    rM   decimal_validatorr   T  s    !W	Ay)	*HHJAA$AJ ;;=,,..H  $!!##$s   B B"c                 N    t        | t              r| S t        j                         rB   )rC   r   r'   HashableErrorrL   s    rM   hashable_validatorr   g  s     !X



  rO   c                     t        | t              r| S 	 t        |       S # t        $ r t        j                         w xY wrB   )rC   r   rq   r'   IPv4AddressErrorrL   s    rM   ip_v4_address_validatorr   n  >    ![!(1~ (%%''(   
 =c                     t        | t              r| S 	 t        |       S # t        $ r t        j                         w xY wrB   )rC   r   rq   r'   IPv6AddressErrorrL   s    rM   ip_v6_address_validatorr   x  r   r   c                     t        | t              r| S 	 t        |       S # t        $ r t        j                         w xY w)z
    Assume IPv4Network initialised with a default ``strict`` argument

    See more:
    https://docs.python.org/library/ipaddress.html#ipaddress.IPv4Network
    )rC   r   rq   r'   IPv4NetworkErrorrL   s    rM   ip_v4_network_validatorr     @     ![!(1~ (%%''(r   c                     t        | t              r| S 	 t        |       S # t        $ r t        j                         w xY w)z
    Assume IPv6Network initialised with a default ``strict`` argument

    See more:
    https://docs.python.org/library/ipaddress.html#ipaddress.IPv6Network
    )rC   r   rq   r'   IPv6NetworkErrorrL   s    rM   ip_v6_network_validatorr     r   r   c                     t        | t              r| S 	 t        |       S # t        $ r t        j                         w xY wrB   )rC   r   rq   r'   IPv4InterfaceErrorrL   s    rM   ip_v4_interface_validatorr     ?    !]#*Q *''))*r   c                     t        | t              r| S 	 t        |       S # t        $ r t        j                         w xY wrB   )rC   r   rq   r'   IPv6InterfaceErrorrL   s    rM   ip_v6_interface_validatorr     r   r   c                     t        | t              r| S 	 t        |       S # t        $ r t        j                         w xY wrB   )rC   r   rj   r'   	PathErrorrL   s    rM   path_validatorr     s=    !T!Aw !  !r   c                 R    | j                         st        j                  |       | S )N)path)existsr'   PathNotExistsErrorrL   s    rM   path_exists_validatorr     s!    88:''Q//HrO   c                 H    t        |       r| S t        j                  |       )z
    Perform a simple check if the value is callable.

    Note: complete matching of argument type hints and return types is not performed
    rE   )callabler'   CallableErrorrL   s    rM   callable_validatorr    s!     {


Q
''rO   c                 R    t        | t              r| S t        j                  |       Nr  )rC   r   r'   	EnumErrorrL   s    rM   enum_validatorr	    s"    !T



##rO   c                 R    t        | t              r| S t        j                  |       r  )rC   r   r'   IntEnumErrorrL   s    rM   int_enum_validatorr    s"    !W


A
&&rO   r   c                 r    t        |       D ci c]  }|| c}dt        dt        ffd}|S c c}w )Nr?   r@   c                 d    	 |    S # t         t        f$ r t        j                  |       w xY w)Nr   )KeyErrorrj   r'   r   )r?   allowed_choicespermitted_choicess    rM   literal_validatorz1make_literal_validator.<locals>.literal_validator  s>    	R"1%%)$ 	R++!?PQQ	Rs    '/)r-   r   )r   r?   r  r  r  s      @@rM   make_literal_validatorr    sG    *51
 &77q!t7ORS RS R  8s   
4c                 l   t        |       }|j                  j                  |j                  j                  n|j                  }||k  rt	        j
                  |      |j                  j                  |j                  j                  n|j                  }|||kD  rt	        j                  |      | S r   )	rn   r   r   r   r'   r   r   r   r   )r?   r|   r}   r   r   r   s         rM   constr_length_validatorr    s    FE+0;;+A+A+M''SYSkSkJz))jAA+0;;+A+A+M''SYSkSkJ%*"4))jAAHrO   c                 r    |j                   j                  xs |j                  }|r| j                         } | S rB   )r   strip_whitespacer   r   )r?   r|   r}   r  s       rM   constr_strip_whitespacer     s0    {{33Uv7U7UGGIHrO   c                 r    |j                   j                  xs |j                  }|r| j                         } | S rB   )r   to_upperr   r   )r?   r|   r}   r   s       rM   constr_upperr    s/    KK  7F$7$7EGGIHrO   c                 r    |j                   j                  xs |j                  }|r| j                         } | S rB   )r   to_lowerr   rg   )r?   r|   r}   rg   s       rM   constr_lowerr    s/    KK  7F$7$7EGGIHrO   c                     | | S 	 |j                  |       S # t        $ r t        j                         t        $ r t        j
                         w xY wrB   )
json_loadsrq   r'   	JsonErrorrj   JsonTypeError)r?   r}   s     rM   validate_jsonr#    sW    y%  ## !   %""$$%s	    :ATc                 ,     dt         dt        f fd}|S )Nr?   r@   c                 L    t        |       r| S t        j                        )N)expected_arbitrary_type)rC   r'   ArbitraryTypeErrorr?   r   s    rM   arbitrary_type_validatorz?make_arbitrary_type_validator.<locals>.arbitrary_type_validator'  s#    aH''FFrO   )r   r$  )r   r*  s   ` rM   make_arbitrary_type_validatorr+  &  s!    GC GA G
 $#rO   c                 :     dt         dt        t           f fd}|S )Nr?   r@   c                 L    t        |       r| S t        j                        )N)expected_class)r6   r'   SubclassErrorr)  s    rM   class_validatorz-make_class_validator.<locals>.class_validator0  s#    a'H""%88rO   )r   r"   r$  )r   r0  s   ` rM   make_class_validatorr1  /  s"    93 947 9
 rO   c                 N    t        | t              r| S t        j                         rB   )rC   typer'   
ClassErrorrL   s    rM   any_class_validatorr5  8  s     !T



rO   zLiteral[None]c                 2    | | S t        j                         rB   )r'   NotNoneErrorrL   s    rM   none_validatorr8  >  s    y



rO   c                     t        | t              r| S t        |       }	 t        j                  |      S # t        j
                  $ r t        j                         w xY wrB   )rC   r   rN   recompileerrorr'   PatternError)r?   	str_values     rM   pattern_validatorr?  D  sQ    !Wa I$zz)$$88 $!!##$s	   4 (ANamedTupleT)boundnamedtuple_clsc                      ddl m}  | | j                         _        dt        t
        df   dt        f fd}|S )Nr   )create_model_from_namedtuple
__config__
__module__values.r@   c                     j                   }t        |       t        |      kD  rt        j                  t        |            t	        t        ||             }t	         di |      } di |S )Nr    )__annotations__rn   r'   ListMaxLengthErrorr   zip)rH  annotationsdict_valuesvalidated_dict_valuesNamedTupleModelrB  s       rM   namedtuple_validatorz7make_namedtuple_validator.<locals>.namedtuple_validator_  sh    %55v;[))++K8HII&*3{F+C&D04_5S{5S0T6 566rO   )pydantic.v1.annotated_typesrD  rG  __pydantic_model__r!   r   r@  )rB  r}   rD  rR  rQ  s   `   @rM   make_namedtuple_validatorrU  S  sO     I2!,,O
 )8N%7U38_ 7 7  rO   typeddict_clsr9   c                     ddl m}  || || j                        | _        dddt        t
        t        f   ffd}|S )Nr   )create_model_from_typeddictrE  rH  r9   r@   c                 F    j                  |       j                  d      S )NT)exclude_unset)	parse_objr   )rH  TypedDictModels    rM   typeddict_validatorz5make_typeddict_validator.<locals>.typeddict_validatorx  s"    ''/4444HHrO   )rS  rX  rG  rT  r   rD   r   )rV  r}   rX  r]  r\  s       @rM   make_typeddict_validatorr^  l  sR     H0 ++N
 (6M$IK IDcN I rO   c            	       @    e Zd ZdddedededdfdZd	ed
   defdZ	y)IfConfigFignored_value	validatorconfig_attr_namesrb  r@   Nc                .    || _         || _        || _        y rB   )rc  rd  rb  )selfrc  rb  rd  s       rM   __init__zIfConfig.__init__  s    "!2*rO   r}   r:   c                 D     t         fd j                  D              S )Nc              3   R   K   | ]  }t        |      d j                  hv   y wrB   )r   rb  ).0namer}   rf  s     rM   	<genexpr>z!IfConfig.check.<locals>.<genexpr>  s(     nt764(t7I7I0JJns   $')anyrd  )rf  r}   s   ``rM   checkzIfConfig.check  s    nW[WmWmnnnrO   )
__name__rG  __qualname__r,   rD   r   rg  r"   boolrn  rJ  rO   rM   r`  r`  ~  sC    ]b ++ +3 +WZ +gk +
oD. o4 orO   r`  r   r   r   r   r   r   Tra  _VALIDATORSc           
   #     K   ddl m}m} | t        u s| t        u ry | j
                  }|t        k(  s	|t        k(  ry t        |       r	t         y | t        u s| t        j                  u r	t         y | t        u s| t        u r	t         y t!        |       r	t"         y t%        |       rt'        |        y  ||       r || |      E d {    y | t(        u r	t*         y | t,        u r	t.         y t1        |       rt2         t5        | |       y t7        |       rt9        | |       y t;        |       }|/|t        urt=        |t>              rtA        |       y tB         y tD        D ]P  \  }}	 tG        | |      r>|D ]7  }t=        |tH              r!|jK                  |      s%|jL                   4| 9  y R |jT                  rtW        |        y tY        | d      rt[        d| j\                   dt^               tQ        d	|  d
      7 L# tN        $ r tQ        d| dtS        |        d      w xY ww)Nr   )is_builtin_dataclassmake_dataclass_validatorzerror checking inheritance of z (type: )__pydantic_core_schema__z+Mixing V1 and V2 models is not supported. `z` is a V2 model.zno validator found for z), see `arbitrary_types_allowed` in Config)0pydantic.v1.dataclassesrt  ru  r   object	__class__r   r#   r3   r8  r   r:  r?  r   CollectionsHashabler   r0   r  r1   r  r   r	  r   r  r2   r   rU  r4   r^  r/   rC   r3  r1  r5  rr  
issubclassr`  rn  rc  rj   RuntimeErrorr.   arbitrary_types_allowedr+  hasattrr&   ro  UserWarning)	r   r}   rt  ru  	type_typeclass_val_type
validatorsr?   s	            rM   find_validatorsr    sD     W|uIJ)w"6E5BJJ.E%88    u$U++E"+E6:::}  U'v66E&uf55uFFD!9&v.. 	 &% + l*
	l%*#  A!!X.776?"#++-   +l %%+E22545>u~~>NN^_alm4UG;deffU 	;D  	l!?yQ`afQgPhhijkk	ls2   C
IHB+I92H,HAI%I  I)r?   Numberr|   r;   r}   r:   r@   r  )r?   r  r|   r;   r@   r  )r?   r   r|   r;   r@   r   )r?   StrBytesr}   r:   r@   r  )r?   r  r@   r  )r?   r  r|   r;   r}   r:   r@   r  )r   r:  collectionsr   r   collections.abcr   r{  r   r   r   r	   decimalr
   r   enumr   r   	ipaddressr   r   r   r   r   r   pathlibr   typingr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   uuidr%   warningsr&   pydantic.v1r'   pydantic.v1.datetime_parser(   r)   r*   r+   pydantic.v1.typingr,   r-   r.   r/   r0   r1   r2   r3   r4   pydantic.v1.utilsr5   r6   r7   typing_extensionsr8   r9   pydantic.v1.configr:   pydantic.v1.fieldsr;   pydantic.v1.typesr<   r=   r>   ConstrainedNumberr   rG   rF   r  rD   rH   r  rN   rQ   rU   rW   ri   rh   rq  rl   ro   rs   ru   rx   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r  r  r  r  r#  r$  r+  r1  r5  r8  r?  r@  rU  r^  r`  r   r   r   r   r   rr  rK  r  rJ  rO   rM   <module>r     s	    	 * ; 4 4 -  f f     &    ] ]
 
 
 U T4--VV02BNRS c*N3w&'FS%Z H S  U3Z  C E#J 
"s 
"uU| 
""c "eEl " 6
3	c d $ $S $S $& C  C  "s "u "c e 
!c !&6 !!c !d38n !!c !d3i !"s "uS#X " S  SX  &3 &9S> &"s "uSz ">S > >| >PT >c , 4 0  &!# !( !(s ({ ((s ({ ((s ({ ( (s ({ ( * * ** * *!c !d !S T 	(# 	(+ 	($c $d $'# '' '# (C5#:*> "	%S 	%, 	%3 	% CL$a $Xqc1f5E $Q HcUDG^,D 3 47  c  o  	$ 	$ 	$ m:6 % /3L/A uS#X,- 2$.2<.@seT#s(^#$$o o }345	!"#,.GH\>2\>2,.ACVW	
	 	,.GH\>2\>2,.ACVW	
	 
N=/
_h'=^bcde	N 	J<	J< !)*+	N	N
_=/$%&
_	N !"./0./0*+,*+,*+,*+,[.2T%S	49,-. .bEg9Eg"<0Eg{D$&'EgrO   