+
    TŎi                       a  RO t~0 t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHtHtHtHtHtHtHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t) ^ RI*H+t+H,t- ^RI.H/t/ ^RIH0t0H1t1H2t2 ^R	I3H4t4 ^R
I5H6t6 ^RI7H8t8H9t9 ^RI:H;t;H<t<H=t=H>t>H?t? ^RI@HAtA ^RIBHCtC ^RIDHEtEHFtF ^RIGHHtH RPtI]'       d   ^RIJHKtK ]]L]L3,          tMM]NtM]P                  RQ8  d%   ]P                  P                  R4      '       d   ]Q3M]P                  RR8  d   ]R3MRStS]T! ]U! ]V]-P                  ! R4      R,          4      4      tX] ^ k ]P                  ! R4      tZ] ^k ]P                  ! R 4      t[] ^k ]P                  ! R!4      t]] ^k ]
P                  ! 4       R"8H  t_] ^k ]]C.]]!]F,          ,          3,          t`]%]!R,          ]#]L,          3,          ta]P                  ! ]P                  R#R$7      tc ! R% R&]'R'R(7      td ! R) R]$]R,          4      te ! R* R]P                  4      tg ! R+ R]M]04      th ! R, R-]h4      tiR. R/ ltj ! R0 R]e4      tk ! R1 R]k4      tl ! R2 R]k4      tm ! R3 R4]e4      tn ! R5 R]n4      to ! R6 R7]n4      tp ! R8 R9]P                  4      tq ! R: R;]q4      tr ! R< R=]r4      ts ! R> R?]p4      tt ! R@ R]g4      tu ! RA RB]g4      tv ! RC R]24      tw ! RD RE]$]]e,          ]]e,          4      tx ! RF RG]$]]g,          ]]g,          4      ty ! RH R]1]]L]e3,          4      tzRI RJ lt{RK RL lt|RM RN lt}R# )T    N)wraps)Path)MappingProxyType)TYPE_CHECKINGAny	AwaitableCallable	ContainerDictFinal	GeneratorIterableIteratorListMappingNoReturnOptionalPatternSetSizedTupleType	TypedDictUnioncast)URL__version__)hdrs)AbstractMatchInfoAbstractRouterAbstractView)DEBUG)HttpVersion11)HandlerPathLike)HTTPExceptionHTTPExpectationFailedHTTPForbiddenHTTPMethodNotAllowedHTTPNotFound)FileResponseRequest)ResponseStreamResponse)AbstractRouteDefUrlDispatcherUrlMappingMatchInfoAbstractResourceResourcePlainResourceDynamicResourceAbstractRouteResourceRouteStaticResourceView)Applicationwin32.:N   Nz$^[0-9A-Za-z!#\$%&'\*\+\-\.\^_`\|~]+$z*(\{[_a-zA-Z][^{}]*(?:\{[^{}]*\}[^{}]*)*\})/WindowsT)quotec                   ,   a  ] tR t^jt o V 3R ltRtV tR# )	_InfoDictc                   < V ^8  d   Qh/ S[ ;R&   S[ ;R&   S[S[ ,          ;R&   S[;R&   S[ ;R&   S[S[ R3,          ;R&   R;R	&   S[ ;R
&   R;R&   S[;R&   # )r>   path	formatterpattern	directoryprefixr7   routesr;   appdomainAbstractRuleMatchingrulehttp_exception)strr   r   r   r&   )format__classdict__s   "h/Users/ahmad/.openclaw/workspace/scripts/.venv/lib/python3.14/site-packages/aiohttp/web_urldispatcher.py__annotate___InfoDict.__annotate__j   s     
I  N  S\	  O  K  C())  
  K  !    "!!      N)__name__
__module____qualname____firstlineno____annotate_func____static_attributes____classdictcell__rR   s   @rS   rC   rC   j   s      rV   rC   F)totalc                     a  ] tR t^}t o RR/V 3R lR llt]V 3R lR l4       t]]P                  V 3R lR l4       4       t	]P                  V 3R	 lR
 l4       t
]P                  V 3R lR l4       t]P                  V 3R lR l4       t]P                  V 3R lR l4       tV 3R lR lt]P                  V 3R lR l4       tRtV tR# )r3   nameNc                4   < V ^8  d   QhRS[ S[,          RR/# r>   rb   returnNr   rP   )rQ   rR   s   "rS   rT   AbstractResource.__annotate__~   s        rV   c                   Wn         R # N_nameselfrb   s   &$rS   __init__AbstractResource.__init__~   s    
rV   c                0   < V ^8  d   QhRS[ S[,          /# r>   re   rf   )rQ   rR   s   "rS   rT   rg      s      hsm rV   c                    V P                   # ri   rj   rm   s   &rS   rb   AbstractResource.name       zzrV   c                    < V ^8  d   QhRS[ /# rq   rP   )rQ   rR   s   "rS   rT   rg      s      3 rV   c                    R# )zGExposes the resource's canonical path.

For example '/foo/bar/{name}'

NrW   rs   s   &rS   	canonicalAbstractResource.canonical       rV   c                &   < V ^8  d   QhRS[ RS[/# )r>   kwargsre   rP   r   )rQ   rR   s   "rS   rT   rg      s     A A A ArV   c                    R# )z2Construct url for resource with additional params.NrW   )rm   r}   s   &,rS   url_forAbstractResource.url_for   r{   rV   c                &   < V ^8  d   QhRS[ RS[/# r>   requestre   r-   _Resolve)rQ   rR   s   "rS   rT   rg      s      W  rV   c                   "   R# 5i)zGResolve resource.

Return (UrlMappingMatchInfo, allowed_methods) pair.
NrW   rm   r   s   &&rS   resolveAbstractResource.resolve           c                $   < V ^8  d   QhRS[ RR/# r>   rI   re   Nrw   )rQ   rR   s   "rS   rT   rg      s        rV   c                    R# )zGAdd a prefix to processed URLs.

Required for subapplications support.
NrW   rm   rI   s   &&rS   
add_prefixAbstractResource.add_prefix   r{   rV   c                    < V ^8  d   QhRS[ /# rq   rC   )rQ   rR   s   "rS   rT   rg           J J) JrV   c                    R# z;Return a dict with additional info useful for introspectionNrW   rs   s   &rS   get_infoAbstractResource.get_info   r{   rV   c                   < V ^8  d   QhRR/# r>   re   NrW   )rQ   rR   s   "rS   rT   rg      s       rV   c                    R # ri   rW   rs   s   &rS   freezeAbstractResource.freeze   s    rV   c                &   < V ^8  d   QhRS[ RS[/# r>   rE   re   rP   bool)rQ   rR   s   "rS   rT   rg      s     / /c /d /rV   c                    R# )z Perform a raw match against pathNrW   rm   rE   s   &&rS   	raw_matchAbstractResource.raw_match   r{   rV   rj   )rX   rY   rZ   r[   rn   propertyrb   abcabstractmethodry   r   r   r   r   r   r   r]   r^   r_   s   @rS   r3   r3   }   s             	A A 	  	  	J J  	/ /rV   c                   >  a  ] tR t^t o RRRR/V 3R lR llt]V 3R lR l4       t]V 3R lR	 l4       t]]P                  V 3R
 lR l4       4       t
]V 3R lR l4       t]P                  V 3R lR l4       t]P                  V 3R lR l4       tV 3R lR ltRtV tR# )r7   expect_handlerNresourcec          
      |   < V ^8  d   QhRS[ RS[S[S[S[,          3,          RS[S[,          RS[S[,          RR/# )r>   methodhandlerr   r   re   N)rP   r   r$   r   r!   r   _ExpectHandlerr3   )rQ   rR   s   "rS   rT   AbstractRoute.__annotate__   sW     5" 5"5" w\ 2235"
 !05" +,5" 
5"rV   c                 a Vf   \         p\        P                  ! V4      '       g=   \        P                  R8  d   \
        P                  ! V4      '       g   Q RV: 24       hVP                  4       p\        P                  V4      '       g   \        V R24      h\        V4      '       g   Q V4       h\        P                  ! V4      '       g2   \        P                  R8  d   \
        P                  ! V4      '       d   M\        P                  ! V4      '       d+   \        '       d   Q h\        P                  ! R\        4       Mc\!        V\"        4      '       d   \%        V\&        4      '       d   M6\        P                  ! R\        4       \)        V4      R V3R ll4       pVoTpWn        W n        W0n        W@n        R # )NzCoroutine is expected, got z is not allowed HTTP methodz6Bare generators are deprecated, use @coroutine wrapperz-Bare functions are deprecated, use async onesc                0    V ^8  d   QhR\         R\        /# r   r-   r/   )rQ   s   "rS   rT   ,AbstractRoute.__init__.<locals>.__annotate__   s      w > rV   c                    <"   S! V 4      p\         P                  ! V4      '       d   VG R j  xL
 p\        V\        4      '       g   Q hV#  L5iri   )asyncioiscoroutine
isinstancer/   )r   resultold_handlers   & rS   handler_wrapper/AbstractRoute.__init__.<locals>.handler_wrapper   sE     $W-&&v..#)\F!&.9999 *s   *AAA)      )_default_expect_handlerinspectiscoroutinefunctionsysversion_infor   upperHTTP_METHOD_REmatch
ValueErrorcallableisgeneratorfunctionr   warningswarnDeprecationWarningr   type
issubclassr!   r   _method_handler_expect_handler	_resource)rm   r   r   r   r   r   r   s   &&&$$ @rS   rn   AbstractRoute.__init__   sh    !4N**>::w&7+F+F~+V+V	<((:;	< 
 ##F++x'BCDD  )') &&w//w&7+F+Fw+O+O((11}uMMH" &&:g|+L+LMM?AS 7^  "K%G-!rV   c                    < V ^8  d   QhRS[ /# rq   rw   )rQ   rR   s   "rS   rT   r      s       rV   c                    V P                   # ri   )r   rs   s   &rS   r   AbstractRoute.method       ||rV   c                    < V ^8  d   QhRS[ /# rq   r$   )rQ   rR   s   "rS   rT   r      s       rV   c                    V P                   # ri   )r   rs   s   &rS   r   AbstractRoute.handler   s    }}rV   c                0   < V ^8  d   QhRS[ S[,          /# rq   rf   )rQ   rR   s   "rS   rT   r      s     G Ghsm GrV   c                    R# )z8Optional route's name, always equals to resource's name.NrW   rs   s   &rS   rb   AbstractRoute.name   r{   rV   c                0   < V ^8  d   QhRS[ S[,          /# rq   )r   r3   )rQ   rR   s   "rS   rT   r      s      (#34 rV   c                    V P                   # ri   )r   rs   s   &rS   r   AbstractRoute.resource   s    ~~rV   c                    < V ^8  d   QhRS[ /# rq   r   )rQ   rR   s   "rS   rT   r      r   rV   c                    R# r   rW   rs   s   &rS   r   AbstractRoute.get_info   r{   rV   c                ,   < V ^8  d   QhRS[ RS[ RS[/# r>   argsr}   re   r~   )rQ   rR   s   "rS   rT   r      s"     > >S >C >C >rV   c                    R# )/Construct url for route with additional params.NrW   rm   r   r}   s   &*,rS   r   AbstractRoute.url_for   r{   rV   c                6   < V ^8  d   QhRS[ RS[S[,          /# r   )r-   r   r/   )rQ   rR   s   "rS   rT   r      s      3 3' 3h~>V 3rV   c                @   "   V P                  V4      G R j  xL
 #  L5iri   )r   r   s   &&rS   handle_expect_header"AbstractRoute.handle_expect_header   s     ))'2222s   )r   r   r   r   )rX   rY   rZ   r[   rn   r   r   r   r   r   rb   r   r   r   r   r]   r^   r_   s   @rS   r7   r7      s     5"
 485" 045" 5"n     G  G   	J J 	> >3 3rV   c                   h  a a ] tR tRt oRtV3R lV 3R llt]V3R lR l4       t]V3R lR l4       t]V3R lR	 l4       t	]V3R
 lR l4       t
V3R lR lt]V3R lR l4       tV3R lR lt]V3R lR l4       t]P                  V3R lR l4       tV3R lR ltV3R lV 3R lltRtVtV ;t# )r2   i  c                @   < V ^8  d   QhRS[ S[S[3,          RS[RR/# )r>   
match_dictroutere   N)r   rP   r7   )rQ   rR   s   "rS   rT    UrlMappingMatchInfo.__annotate__  s*      4S> - D rV   c                \   < \         SV `  V4       W n        . V n        R V n        RV n        R # )NF)superrn   _route_apps_current_app_frozen)rm   r   r   	__class__s   &&&rS   rn   UrlMappingMatchInfo.__init__  s+    $(*
37rV   c                    < V ^8  d   QhRS[ /# rq   r   )rQ   rR   s   "rS   rT   r     s     # # #rV   c                .    V P                   P                  # ri   )r   r   rs   s   &rS   r   UrlMappingMatchInfo.handler  s    {{"""rV   c                    < V ^8  d   QhRS[ /# rq   )r7   )rQ   rR   s   "rS   rT   r     s      } rV   c                    V P                   # ri   )r   rs   s   &rS   r   UrlMappingMatchInfo.route  s    {{rV   c                    < V ^8  d   QhRS[ /# rq   )r   )rQ   rR   s   "rS   rT   r     s     0 0 0rV   c                .    V P                   P                  # ri   )r   r   rs   s   &rS   r   "UrlMappingMatchInfo.expect_handler  s    {{///rV   c                0   < V ^8  d   QhRS[ S[,          /# rq   )r   r&   )rQ   rR   s   "rS   rT   r     s       7 rV   c                    R # ri   rW   rs   s   &rS   rO   "UrlMappingMatchInfo.http_exception      rV   c                    < V ^8  d   QhRS[ /# rq   r   )rQ   rR   s   "rS   rT   r     s     & &) &rV   c                6    V P                   P                  4       # ri   )r   r   rs   s   &rS   r   UrlMappingMatchInfo.get_info  s    {{##%%rV   c                .   < V ^8  d   QhRS[ R,          /# )r>   re   )r;   .)r   )rQ   rR   s   "rS   rT   r      s     ! !e./ !rV   c                ,    \        V P                  4      # ri   )tupler   rs   s   &rS   appsUrlMappingMatchInfo.apps  s    TZZ  rV   c                "   < V ^8  d   QhRRRR/# r>   rK   r;   re   NrW   )rQ   rR   s   "rS   rT   r   #  s     " "= "T "rV   c                    V P                   '       d   \        R 4      hV P                  f   Wn        V P                  P	                  ^ V4       R# )z-Cannot change apps stack after .freeze() callN)r   RuntimeErrorr   r   insertrm   rK   s   &&rS   add_appUrlMappingMatchInfo.add_app#  s=    <<<NOO$ #

!S!rV   c                   < V ^8  d   QhRR/# )r>   re   r;   rW   )rQ   rR   s   "rS   rT   r   +  s      ] rV   c                *    V P                   pVf   Q hV# ri   )r   r  s   & rS   current_appUrlMappingMatchInfo.current_app*  s    
rV   c                "   < V ^8  d   QhRRRR/# r  rW   )rQ   rR   s   "rS   rT   r   1  s        }    rV   c                    \         '       d6   WP                  9  d&   \        R P                  V P                  V4      4      hWn        R# )z1Expected one of the following apps {!r}, got {!r}N)r"   r   r  rQ   r   r  s   &&rS   r  r  0  s=    5**$"GNN

C 
  rV   c                   < V ^8  d   QhRR/# r   rW   )rQ   rR   s   "rS   rT   r   ;  s       rV   c                    R V n         R# )TN)r   rs   s   &rS   r   UrlMappingMatchInfo.freeze;  s	    rV   c                    < V ^8  d   QhRS[ /# rq   rw   )rQ   rR   s   "rS   rT   r   >  s     B B# BrV   c                B   < R \         SV `  4        RV P                   R2# )z<MatchInfo z: >)r   __repr__r   rm   r   s   &rS   r'  UrlMappingMatchInfo.__repr__>  s%    UW-/04;;-qAArV   )r   r   r   r   )r   r   r   r   )rX   rY   rZ   r[   	__slots__rn   r   r   r   r   rO   r   r  r  r  setterr   r'  r]   r^   __classcell__r   rR   s   @@rS   r2   r2     s     >I  # #   0 0  & & ! !" "  
     B B BrV   c                   p   a a ] tR tRt oRtV3R lV 3R llt]V3R lR l4       tV3R lR ltRt	Vt
V ;t# )	MatchInfoErroriB  c                $   < V ^8  d   QhRS[ RR/# r>   rO   re   Nr&   )rQ   rR   s   "rS   rT   MatchInfoError.__annotate__F  s     ; ;} ; ;rV   c                Z   < Wn         \        SV `	  / \        V P                   4      4       R # ri   )
_exceptionr   rn   SystemRouterm   rO   r   s   &&rS   rn   MatchInfoError.__init__F  s     ([9:rV   c                    < V ^8  d   QhRS[ /# rq   r2  )rQ   rR   s   "rS   rT   r3  K  s       rV   c                    V P                   # ri   r5  rs   s   &rS   rO   MatchInfoError.http_exceptionJ      rV   c                    < V ^8  d   QhRS[ /# rq   rw   )rQ   rR   s   "rS   rT   r3  N       
 
# 
rV   c                v    R P                  V P                  P                  V P                  P                  4      # )z<MatchInfoError {}: {}>)rQ   r5  statusreasonrs   s   &rS   r'  MatchInfoError.__repr__N  s.    (//OO""DOO$:$:
 	
rV   r;  )rX   rY   rZ   r[   r*  rn   r   rO   r'  r]   r^   r,  r-  s   @@rS   r/  r/  B  s7     I; ;  
 
 
rV   r/  c                (    V ^8  d   QhR\         RR/# )r>   r   re   Nr,   )rQ   s   "rS   rT   rT   T  s     L L7 Lt LrV   c                L  "   V P                   P                  \        P                  R4      pV P                  \
        8X  d_   VP                  4       R8X  d7   V P                  P                  R4      G Rj  xL
  ^ V P                  n	        R# \        RV,          R7      hR#  L,5i)zDefault handler for Expect header.

Just send "100 Continue" to client.
raise HTTPExpectationFailed if value of header is not "100-continue"
 z100-continues   HTTP/1.1 100 Continue

NzUnknown Expect: %s)text)headersgetr   EXPECTversionr#   lowerwriterwriteoutput_sizer'   )r   expects   & rS   r   r   T  sy      __  b1F-'<<>^+..&&'GHHH)*GNN&'-AF-JKK (Hs   A3B$5B"6-B$c                      a a ] tR tRt oRR/V3R lV 3R llltRR/V3R lR lltV3R	 lR
 ltV3R lR lt]P                  V3R lR l4       t
V3R lR ltV3R lR ltRtVtV ;t# )r4   id  rb   Nc                4   < V ^8  d   QhRS[ S[,          RR/# rd   rf   )rQ   rR   s   "rS   rT   Resource.__annotate__e  s     0 0 0 0rV   c               b   < \         SV `  VR 7       / V n        RV n        \	        4       V n        R# )rb   N)r   rn   _routes
_any_routeset_allowed_methods)rm   rb   r   s   &$rS   rn   Resource.__init__e  s+    d#1337*-%rV   r   c                f   < V ^8  d   QhRS[ RS[S[S[,          S[3,          RS[S[,          RR/# )r>   r   r   r   re   r8   )rP   r   r   r!   r$   r   r   )rQ   rR   s   "rS   rT   rS  k  sG       tL)723
 !0 
rV   c                   V P                   P                  WP                  4      ;p'       d   \        R VP                   R24      h\        WWR7      pV P                  V4       V# )z+Added route will never be executed, method z is already registeredr   )rV  rI  rW  r  r   r8   register_route)rm   r   r   r   r   	route_objs   &&&$  rS   	add_routeResource.add_routek  si     LL$$V__==5=,, (  "&4W	I&rV   c                "   < V ^8  d   QhRRRR/# )r>   r   r8   re   NrW   )rQ   rR   s   "rS   rT   rS  }  s     + +O + +rV   c                   \        V\        4      '       g   Q R V: 24       hVP                  \        P                  8X  d   Wn        V P                  P                  VP                  4       WP                  VP                  &   R# )z)Instance of Route class is required, got N)	r   r8   r   r   METH_ANYrW  rY  addrV  rm   r   s   &&rS   r^  Resource.register_route}  sn    =
 
 	A6ui@	A 
 <<4==(#O!!%,,/%*U\\"rV   c                &   < V ^8  d   QhRS[ RS[/# r   r   )rQ   rR   s   "rS   rT   rS    s     + +W + +rV   c                .  "   V P                  VP                  P                  4      ;pf   R \        4       3# V P                  P                  VP                  V P                  4      ;p'       d   \        W#4      V P                  3# R V P                  3# 5iri   )
_matchrel_url	path_saferX  rV  rI  r   rW  r2   rY  )rm   r   r   r   s   &&  rS   r   Resource.resolve  sz     ++goo&?&?@@JI;LL$$W^^T__EE5E&z94;P;PPPT****s   A-B0%Bc                L   < V ^8  d   QhRS[ RS[S[S[ S[ 3,          ,          /# r   rP   r   r   )rQ   rR   s   "rS   rT   rS    s(      3 8DcN#; rV   c                    R # ri   rW   r   s   &&rS   rj  Resource._match  s    rV   c                    < V ^8  d   QhRS[ /# rq   int)rQ   rR   s   "rS   rT   rS         ! ! !rV   c                ,    \        V P                  4      # ri   lenrV  rs   s   &rS   __len__Resource.__len__      4<<  rV   c                .   < V ^8  d   QhRS[ R,          /# )r>   re   r8   )r   )rQ   rR   s   "rS   rT   rS    s     + +(?3 +rV   c                H    \        V P                  P                  4       4      # ri   iterrV  valuesrs   s   &rS   __iter__Resource.__iter__      DLL'')**rV   )rY  rW  rV  )rX   rY   rZ   r[   rn   r`  r^  r   r   r   rj  ry  r  r]   r^   r,  r-  s   @@rS   r4   r4   d  sq     0 0 0
 48 $+ ++ + 	 ! !+ + +rV   c                      a a ] tR tRt oRR/V3R lV 3R lllt]V3R lR l4       tV3R lR	 ltV3R
 lR ltV3R lR lt	V3R lR lt
V3R lR ltV3R lR ltV3R lR ltRtVtV ;t# )r5   i  rb   Nc                :   < V ^8  d   QhRS[ RS[S[ ,          RR/# r>   rE   rb   re   NrP   r   )rQ   rR   s   "rS   rT   PlainResource.__annotate__  s&      S 8C= D rV   c               v   < \         SV `  VR 7       V'       d   VP                  R4      '       g   Q hWn        R# )rU  r?   N)r   rn   
startswith_path)rm   rE   rb   r   s   &&$rS   rn   PlainResource.__init__  s/    d#4??3////
rV   c                    < V ^8  d   QhRS[ /# rq   rw   )rQ   rR   s   "rS   rT   r    s      3 rV   c                    V P                   # ri   r  rs   s   &rS   ry   PlainResource.canonical  ru   rV   c                   < V ^8  d   QhRR/# r   rW   )rQ   rR   s   "rS   rT   r    s       rV   c                <    V P                   '       g
   R V n         R# R# r?   Nr  rs   s   &rS   r   PlainResource.freeze  s    zzzDJ rV   c                $   < V ^8  d   QhRS[ RR/# r   rw   )rQ   rR   s   "rS   rT   r    s     ) ) ) )rV   c                    VP                  R 4      '       g   Q hVP                  R 4      '       d   Q h\        V4      ^8  g   Q hWP                  ,           V n        R# r  )r  endswithrx  r  r   s   &&rS   r   PlainResource.add_prefix  sL      %%%%??3''''6{Qjj(
rV   c                L   < V ^8  d   QhRS[ RS[S[S[ S[ 3,          ,          /# r   ro  )rQ   rR   s   "rS   rT   r    s(      3 8DcN#; rV   c                ,    V P                   V8X  d   / # R # ri   r  r   s   &&rS   rj  PlainResource._match  s    ::IrV   c                &   < V ^8  d   QhRS[ RS[/# r   r   )rQ   rR   s   "rS   rT   r    s     " "c "d "rV   c                     V P                   V8H  # ri   r  r   s   &&rS   r   PlainResource.raw_match  s    zzT!!rV   c                    < V ^8  d   QhRS[ /# rq   r   )rQ   rR   s   "rS   rT   r    s     $ $) $rV   c                    R V P                   /# )rE   r  rs   s   &rS   r   PlainResource.get_info  s    

##rV   c                    < V ^8  d   QhRS[ /# rq   )r   )rQ   rR   s   "rS   rT   r    s     8 8 8rV   c                F    \         P                  ! V P                  R R7      # TrE   encoded)r   buildr  rs   s   &rS   r   PlainResource.url_for  s    yydjj$77rV   c                    < V ^8  d   QhRS[ /# rq   rw   )rQ   rR   s   "rS   rT   r    s     6 6# 6rV   c                |    V P                   e   RV P                   ,           R,           MRpRV RV P                   R2# )N'' rF  z<PlainResource  r&  )rb   r  rl   s   & rS   r'  PlainResource.__repr__  s8    )-)>sTYY%B a

|155rV   r  )rX   rY   rZ   r[   rn   r   ry   r   r   rj  r   r   r   r'  r]   r^   r,  r-  s   @@rS   r5   r5     su     4  
   ) ) " "$ $8 86 6 6rV   c                     a a ] tR tRt o]P
                  ! R4      t]P
                  ! R4      tRtRR/V3R lV 3R lllt	]
V3R	 lR
 l4       tV3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lR ltRtVtV ;t# )r6   i  z#\{(?P<var>[_a-zA-Z][_a-zA-Z0-9]*)\}z.\{(?P<var>[_a-zA-Z][_a-zA-Z0-9]*):(?P<re>.+)\}z[^{}/]+rb   Nc                :   < V ^8  d   QhRS[ RS[S[ ,          RR/# r  r  )rQ   rR   s   "rS   rT   DynamicResource.__annotate__  s&      $  $S  $8C=  $D  $rV   c                 < \         S	V `  VR 7       Wn        RpRp\        P	                  V4       EFC  pV P
                  P                  V4      pV'       d[   VRP                  VP                  R4      V P                  4      ,          pVRVP                  R4      ,           R,           ,          pK  V P                  P                  V4      pV'       dP   VRP                  ! R/ VP                  4       B ,          pVRVP                  R4      ,           R,           ,          pK  RV9   g   RV9   d   \        RV RV R	24      h\        V4      pWE,          pV\        P                  ! V4      ,          pEKF  	   \        P                   ! V4      pTP$                  P'                  \(        4      '       g   Q hTP'                  R4      '       g   Q hYpn        Y@n        R#   \        P"                   d   p\        R
T RT 24      RhRp?ii ; i)rU  rF  z
(?P<{}>{})var{}z(?P<{var}>{re})zInvalid path 'z'['z']zBad pattern 'z': Nr?   rW   )r   rn   
_orig_pathROUTE_REsplitDYN	fullmatchrQ   groupGOODDYN_WITH_RE	groupdictr   _requote_pathreescapecompileerrorrG   r  PATH_SEP_pattern
_formatter)
rm   rE   rb   rG   rF   partr   compiledexcr   s
   &&$      rS   rn   DynamicResource.__init__  s   d#	NN4(DHH&&t,E<..u{{5/A499MMS5;;u#55;;	$$..t4E,33Heoo6GHHS5;;u#55;;	d{cTk >$s4&!CDD &DIryy&G% )(	Jzz'*H **84444##C(((( # xx 	J}WIS>?TI	Js   :G H
3HH
c                    < V ^8  d   QhRS[ /# rq   rw   )rQ   rR   s   "rS   rT   r    s      3 rV   c                    V P                   # ri   )r  rs   s   &rS   ry   DynamicResource.canonical  r=  rV   c                $   < V ^8  d   QhRS[ RR/# r   rw   )rQ   rR   s   "rS   rT   r    s     3 3 3 3rV   c                P   VP                  R 4      '       g   Q hVP                  R 4      '       d   Q h\        V4      ^8  g   Q h\        P                  ! \        P
                  ! V4      V P                  P                  ,           4      V n        WP                  ,           V n        R# r  )	r  r  rx  r  r  r  r  rG   r  r   s   &&rS   r   DynamicResource.add_prefix  st      %%%%??3''''6{Q

299V#4t}}7L7L#LM ??2rV   c                L   < V ^8  d   QhRS[ RS[S[S[ S[ 3,          ,          /# r   ro  )rQ   rR   s   "rS   rT   r    s(     
 
3 
8DcN#; 
rV   c                    V P                   P                  V4      pVf   R # VP                  4       P                  4        UUu/ uF  w  r4V\	        V4      bK  	  upp# u uppi ri   )r  r  r  items_unquote_path_safe)rm   rE   r   keyvalues   &&   rS   rj  DynamicResource._match  s]    ''-==B__=N=T=T=V
=VzsC#E**=V
 	
 
s   Ac                &   < V ^8  d   QhRS[ RS[/# r   r   )rQ   rR   s   "rS   rT   r    s     ' 'c 'd 'rV   c                     V P                   V8H  # ri   )r  r   s   &&rS   r   DynamicResource.raw_match  s    $&&rV   c                    < V ^8  d   QhRS[ /# rq   r   )rQ   rR   s   "rS   rT   r     s     H H) HrV   c                6    R V P                   RV P                  /# )rF   rG   )r  r  rs   s   &rS   r   DynamicResource.get_info   s    T__iGGrV   c                &   < V ^8  d   QhRS[ RS[/# )r>   partsre   r~   )rQ   rR   s   "rS   rT   r    s     1 1s 1s 1rV   c           
         V P                   P                  VP                  4        UUu/ uF  w  r#V\        V4      bK  	  upp4      p\        P
                  ! VR R7      # u uppi r  )r  
format_mapr  _quote_pathr   r  )rm   r  kvurls   &,   rS   r   DynamicResource.url_for  sM    oo(()V![^*;)VWyyc400 *Ws   A 
c                    < V ^8  d   QhRS[ /# rq   rw   )rQ   rR   s   "rS   rT   r         
 
# 
rV   c                    V P                   e   RV P                   ,           R,           MRpRP                  WP                  R7      # )Nr  r  rF  z$<DynamicResource {name} {formatter}>)rb   rF   )rb   rQ   r  rl   s   & rS   r'  DynamicResource.__repr__  s>    )-)>sTYY%B5<< = 
 	
rV   )r  r  r  )rX   rY   rZ   r[   r  r  r  r  r  rn   r   ry   r   rj  r   r   r   r'  r]   r^   r,  r-  s   @@rS   r6   r6     s     
**;
<C**NOKD $4  $  $D  3 3
 
' 'H H1 1
 
 
rV   c                      a a ] tR tRt oRR/V3R lV 3R lllt]V3R lR l4       tV3R lR	 ltV3R
 lR ltRt	Vt
V ;t# )PrefixResourcei  rb   Nc                :   < V ^8  d   QhRS[ RS[S[ ,          RR/# )r>   rI   rb   re   Nr  )rQ   rR   s   "rS   rT   PrefixResource.__annotate__  s&     + +s +Xc] +d +rV   c                 < V'       d   VP                  R 4      '       g   Q V4       hVR9   g   VP                  R 4      '       d   Q V4       h\        SV `  VR7       \	        V4      V n        V P
                  R ,           V n        R# )r?   rU  N)rF  r?   )r  r  r   rn   r  _prefix_prefix2)rm   rI   rb   r   s   &&$rS   rn   PrefixResource.__init__  sn    V..s33;V;3"&//#*>*>FF>d#$V,s*rV   c                    < V ^8  d   QhRS[ /# rq   rw   )rQ   rR   s   "rS   rT   r          3 rV   c                    V P                   # ri   )r  rs   s   &rS   ry   PrefixResource.canonical  r   rV   c                $   < V ^8  d   QhRS[ RR/# r   rw   )rQ   rR   s   "rS   rT   r    s     + + + +rV   c                    VP                  R 4      '       g   Q hVP                  R 4      '       d   Q h\        V4      ^8  g   Q hWP                  ,           V n        V P                  R ,           V n        R# r  )r  r  rx  r  r  r   s   &&rS   r   PrefixResource.add_prefix  s\      %%%%??3''''6{Q,s*rV   c                &   < V ^8  d   QhRS[ RS[/# )r>   rI   re   r   )rQ   rR   s   "rS   rT   r  !  s        rV   c                    R # FrW   r   s   &&rS   r   PrefixResource.raw_match!  s    rV   )r  r  )rX   rY   rZ   r[   rn   r   ry   r   r   r]   r^   r,  r-  s   @@rS   r  r    sC     +T + +  + +  rV   r  c                   6  a a ] tR tRt oRtRRRRRR$RRR	RR
R/V3R lV 3R llltR
R/V3R lR llt]V3R lR l4       tV3R lR lt	V3R lR lt
V3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lR  ltV3R! lR" ltR#tVtV ;t# )%r9   i'  r  rb   Nr   
chunk_size
show_indexFfollow_symlinksappend_versionc                n   < V ^8  d   QhRS[ RS[RS[S[ ,          RS[S[,          RS[RS[RS[RS[R	R
/	# )r>   rI   rH   rb   r   r  r   r  r  re   N)rP   r%   r   r   rt  r   )rQ   rR   s   "rS   rT   StaticResource.__annotate__*  sn     "2 "2"2 "2
 sm"2 !0"2 "2 "2 "2 "2 
"2rV   c          
       < \         S
V `  WR 7        \        V4      P                  4       P	                  RR7      pTP                  4       '       g   \        RT R24      hY n        Y`n	        YPn
        Ypn        Y@n        Yn        R\        RT P                  YR7      R	\        R	T P                  YR7      /T n        \#        T P                   4      T n        R#   \
         d   p	\        RT R24      T	hRp	?	ii ; i)
rU  T)strictr  z' does not existNz' is not a directoryGETr]  HEAD)r   rn   r   
expanduserr   FileNotFoundErrorr   is_dir
_directory_show_index_chunk_size_follow_symlinksr   _append_versionr8   _handlerV  rX  rY  )rm   rI   rH   rb   r   r  r   r  r  r  r   s   &&&$$$$$$ rS   rn   StaticResource.__init__*  s     	+	IY224<<D<II !!q+?@AA#%% /-- =t||T Md	
 !$DLL 1' ! 	Iq+;<=5H	Is   )C C8#C33C8c                <   < V ^8  d   QhRS[ RS[S[,          RS[/# )r>   filenamer  re   )r%   r   r   r   )rQ   rR   s   "rS   rT   r  N  s/     ' ' ' !	'
 
'rV   c                  Vf   V P                   p\        V4      P                  R4      p\        P                  ! V P
                  RR7      p\        R8  d   W1P                  RR4      ,          pMW1,          pV'       Ed'   V P                  P                  V4      p V P                  '       dU   \        \        P                  P                  V4      4      pVP                  V P                  4       VP!                  4       pM,VP!                  4       pVP                  V P                  4        VP'                  4       '       dc   VP)                  R4      ;_uu_ 4       pVP+                  4       pR R R 4       V P-                  X4      p	VP/                  V P0                  V	/4      pV# V#   \"        \$        3 d    Tu # i ; i  + '       g   i     L[; i)Nr?   Tr  %%25rb      )r  rP   lstripr   r  r  YARL_VERSIONreplacer  joinpathr  r   osrE   normpathrelative_tor   r   r
  is_fileopenread_get_file_hash
with_queryVERSION_KEY)
rm   r  r  r  unresolved_pathnormalized_pathfilepathf
file_byteshs
   &$$       rS   r   StaticResource.url_forN  sr    !!11Nx='',iiT\\48& ((e44C.C>"oo66x@O(((&*277+;+;O+L&MO#//@.668H.668H((9
 !! ]]4((A!"J )''
3nnd&6&6%:;

  12  
 )(s+   F* 0AF* +F* G*G ?G G	c                &   < V ^8  d   QhRS[ RS[/# )r>   
byte_arrayre   )bytesrP   )rQ   rR   s   "rS   rT   r  x  s     # #5 #S #rV   c                    \         P                  ! 4       pVP                  V 4       \        P                  ! VP                  4       4      pVP                  R 4      # )ascii)hashlibsha256updatebase64urlsafe_b64encodedigestdecode)r1  mb64s   &  rS   r&  StaticResource._get_file_hashw  s?    NN	&&qxxz2zz'""rV   c                    < V ^8  d   QhRS[ /# rq   r   )rQ   rR   s   "rS   rT   r  ~  s     
 
) 
rV   c                N    R V P                   RV P                  RV P                  /# )rH   rI   rJ   )r  r  rV  rs   s   &rS   r   StaticResource.get_info~  s'    dlldll
 	
rV   c                $   < V ^8  d   QhRS[ RR/# )r>   r   re   Nr   )rQ   rR   s   "rS   rT   r    s     - - -T -rV   c                    R V P                   9   d   \        R4      h\        R WV P                  R7      V P                   R &   V P                  P                  R 4       R# )OPTIONSzOPTIONS route was set alreadyr]  N)rV  r  r8   r   rY  re  )rm   r   s   &&rS   set_options_route StaticResource.set_options_route  sP    $>??"/wT5I5I#
Y 	!!),rV   c                &   < V ^8  d   QhRS[ RS[/# r   r   )rQ   rR   s   "rS   rT   r    s     X XW X XrV   c                  "   VP                   P                  pVP                  p\        P                  P                  V4      p\        '       d   VP                  R R4      pVP                  V P                  4      '       g   W@P                  8w  d   R\        4       3# V P                  pW59  d   RV3# R\        V\        V P                  4      ^,           R 4      /p\        W`P                   V,          4      V3# 5i)\r?   Nr  )rk  rl  r   r   rE   r!  
IS_WINDOWSr  r  r  r  rX  rY  r  rx  r2   rV  )rm   r   rE   r   	norm_pathallowed_methodsr   s   &&     rS   r   StaticResource.resolve  s     (( GG$$T*	:!))$4I##DMM22yLL7P;//((( "4T#dll:Ka:O:Q5R"ST
#JV0DEWWs   B C=A:C=c                    < V ^8  d   QhRS[ /# rq   rs  )rQ   rR   s   "rS   rT   r    ru  rV   c                ,    \        V P                  4      # ri   rw  rs   s   &rS   ry  StaticResource.__len__  r{  rV   c                0   < V ^8  d   QhRS[ S[,          /# rq   r   r7   )rQ   rR   s   "rS   rT   r    s     + +(=1 +rV   c                H    \        V P                  P                  4       4      # ri   r~  rs   s   &rS   r  StaticResource.__iter__  r  rV   c                &   < V ^8  d   QhRS[ RS[/# r   r   )rQ   rR   s   "rS   rT   r    s     
 
W 
 
rV   c                   "   VP                   R ,          pV P                  P                  V4      p\        P                  ! 4       pVP                  RV P                  V4      G Rj  xL
 #  L5i)r  N)
match_infor  r  r   get_running_looprun_in_executor_resolve_path_to_response)rm   r   r  r)  loops   &&   rS   r  StaticResource._handle  sa     %%j1//228<'')))$00/
 
 	
 
s   A$A-&A+'A-c                &   < V ^8  d   QhRS[ RS[/# )r>   r)  re   )r   r/   )rQ   rR   s   "rS   rT   r    s     !D !D !D. !DrV   c                |    V P                   '       dU   \        \        P                  P	                  V4      4      pVP                  V P                  4       VP                  4       pM,VP                  4       pVP                  V P                  4         VP                  4       '       d9   V P                  '       d   \        V P                  V4      RR7      # \        4       h \#        Y0P$                  R7      #   \        .\        O5 d   p\        4       ThRp?ii ; i  \          d   p\        4       ThRp?ii ; i)zFTake the unresolved path and query the file system to form a response.Nz	text/html)rG  content_type)r  )r  r   r   rE   r!  r"  r  r   r   CIRCULAR_SYMLINK_ERRORr*   r  r  r.   _directory_as_htmlr(   PermissionErrorr+   r  )rm   r)  r*  	file_pathr  s   &&   rS   rZ  (StaticResource._resolve_path_to_response  s   
	,$$$"&rww'7'7'H"I++DOO<+335	+335	%%doo6
	-!!####!44Y?%0 
 (/) " I2B2BCC) 434 	, .e+	,   	-/u,	-sM   C: AC: (+C: D  +D  =D  
D  :DDD D;+D66D;c                &   < V ^8  d   QhRS[ RS[/# )r>   dir_pathre   )r   rP   )rQ   rR   s   "rS   rT   r    s      4 C rV   c           	        VP                  4       '       g   Q hVP                  V P                  4      P                  4       pR\	        V4       2pRV R2p. pVP                  4       p\        V4       F  pVP                  V P                  4      P                  4       p\        V P                   RV 24      p	VP                  4       '       d   VP                   R2p
MVP                  p
VP                  RV	 R\	        V
4       R24       K  	  RP                  R	P                  V4      4      pR
V R	V R2pRV R2pRV R	V R2pV# )z"returns directory's index as html.z
Index of /z<h1>z</h1>r?   z<li><a href="z">z	</a></li>z<ul>
{}
</ul>
z<body>
z
</body>z<head>
<title>z</title>
</head>z<html>
z
</html>)r  r"  r  as_posixhtml_escapeiterdirsortedr  r  rb   appendrQ   join)rm   rf  relative_path_to_dirindex_ofh1
index_list	dir_index_filerel_pathquoted_file_url	file_nameulbodyhead_strhtmls   &&             rS   ra  !StaticResource._directory_as_html  sP       '33DOODMMO,@ ABCH:U#
$$&	I&E((9BBDH)T\\N!H:*FGO ||~~$zzl!,	!JJ	0;y3I2J)T ' %%dii
&;<"Rt9-$XJ.?@(2dV95rV   c                    < V ^8  d   QhRS[ /# rq   rw   )rQ   rR   s   "rS   rT   r    r  rV   c                    V P                   e   RV P                   ,           R,           MRpRP                  WP                  V P                  R7      # )Nr  rF  z/<StaticResource {name} {path} -> {directory!r}>)rb   rE   rH   )rb   rQ   r  r  rl   s   & rS   r'  StaticResource.__repr__  sE    (,		(=sTYY$2@GGLLDOO H 
 	
rV   )rY  r  r  r  r   r  rV  r     )rX   rY   rZ   r[   r(  rn   r   staticmethodr&  r   rE  r   ry  r  r  rZ  ra  r'  r]   r^   r,  r-  s   @@rS   r9   r9   '  s     K"2
 #"2 48"2 %"2 !"2 !&"2  %"2 "2H' *.	' 'R # #
 
- -X X$! !+ +
 
!D !DF @
 
 
rV   c                      a a ] tR tRt oV3R lV 3R lltV3R lV 3R lltV3R lR ltV3R lR	 ltV3R
 lR ltV3R lR lt	V3R lR lt
V3R lR ltV3R lR ltRtVtV ;t# )PrefixedSubAppResourcei  c                (   < V ^8  d   QhRS[ RRRR/# )r>   rI   rK   r;   re   Nrw   )rQ   rR   s   "rS   rT   #PrefixedSubAppResource.__annotate__  s"     . .s . .4 .rV   c                T   < \         SV `  V4       W n        V P                  V4       R # ri   )r   rn   _app_add_prefix_to_resources)rm   rI   rK   r   s   &&&rS   rn   PrefixedSubAppResource.__init__  s#     	%%f-rV   c                $   < V ^8  d   QhRS[ RR/# r   rw   )rQ   rR   s   "rS   rT   r    s     . . . .rV   c                H   < \         SV `  V4       V P                  V4       R # ri   )r   r   r  )rm   rI   r   s   &&rS   r   !PrefixedSubAppResource.add_prefix  s    6"%%f-rV   c                $   < V ^8  d   QhRS[ RR/# r   rw   )rQ   rR   s   "rS   rT   r    s     , ,s ,t ,rV   c                    V P                   P                  pVP                  4        F6  pVP                  V4       VP	                  V4       VP                  V4       K8  	  R # ri   )r  router	resourcesunindex_resourcer   index_resource)rm   rI   r  r   s   &&  rS   r  /PrefixedSubAppResource._add_prefix_to_resources  sP    !!((*H ##H-'!!(+ +rV   c                ,   < V ^8  d   QhRS[ RS[ RS[/# r   r~   )rQ   rR   s   "rS   rT   r  
  s'     R RS RC RC RrV   c                    \        R 4      h)z3.url_for() is not supported by sub-application rootr  r   s   &*,rS   r   PrefixedSubAppResource.url_for
  s    PQQrV   c                    < V ^8  d   QhRS[ /# rq   r   )rQ   rR   s   "rS   rT   r    s     : :) :rV   c                6    R V P                   RV P                  /# )rK   rI   )r  r  rs   s   &rS   r   PrefixedSubAppResource.get_info  s    tyy(DLL99rV   c                &   < V ^8  d   QhRS[ RS[/# r   r   )rQ   rR   s   "rS   rT   r    s     # #W # #rV   c                *  "   V P                   P                  P                  V4      G R j  xL
 pVP                  V P                   4       \	        VP
                  \        4      '       d   VP
                  P                  pW#3# \        4       pW#3#  Le5iri   )	r  r  r   r  r   rO   r)   rL  rX  rm   r   rW  methodss   &&  rS   r   PrefixedSubAppResource.resolve  s{     99++33G<<
499%j//1EFF //??G "" eG"" =s   )BBA&Bc                    < V ^8  d   QhRS[ /# rq   rs  )rQ   rR   s   "rS   rT   r    s     . . .rV   c                \    \        V P                  P                  P                  4       4      # ri   )rx  r  r  rJ   rs   s   &rS   ry  PrefixedSubAppResource.__len__  s     499##**,--rV   c                0   < V ^8  d   QhRS[ S[,          /# rq   rR  )rQ   rR   s   "rS   rT   r    s     / /(=1 /rV   c                \    \        V P                  P                  P                  4       4      # ri   )r  r  r  rJ   rs   s   &rS   r  PrefixedSubAppResource.__iter__  s     DII$$++-..rV   c                    < V ^8  d   QhRS[ /# rq   rw   )rQ   rR   s   "rS   rT   r    r?  rV   c                P    R P                  V P                  V P                  R7      # )z,<PrefixedSubAppResource {prefix} -> {app!r}>)rI   rK   )rQ   r  r  rs   s   &rS   r'  PrefixedSubAppResource.__repr__  s(    =DD<<TYY E 
 	
rV   r  )rX   rY   rZ   r[   rn   r   r  r   r   r   ry  r  r'  r]   r^   r,  r-  s   @@rS   r  r    sf     . .
. ., ,R R: :# #. ./ /
 
 
rV   r  c                      a  ] tR tRt o ]P
                  V 3R lR l4       t]P
                  V 3R lR l4       t]]P
                  V 3R lR l4       4       t	Rt
V tR	# )
rM   i%  c                &   < V ^8  d   QhRS[ RS[/# r   r-   r   )rQ   rR   s   "rS   rT   !AbstractRuleMatching.__annotate__'  s     @ @7 @t @rV   c                   "   R# 5i)z1Return bool if the request satisfies the criteriaNrW   r   s   &&rS   r   AbstractRuleMatching.match&  r   r   c                    < V ^8  d   QhRS[ /# rq   r   )rQ   rR   s   "rS   rT   r  +  r   rV   c                    R# r   rW   rs   s   &rS   r   AbstractRuleMatching.get_info*  r{   rV   c                    < V ^8  d   QhRS[ /# rq   rw   )rQ   rR   s   "rS   rT   r  0  s      3 rV   c                    R# )zReturn a strNrW   rs   s   &rS   ry   AbstractRuleMatching.canonical.  r{   rV   rW   N)rX   rY   rZ   r[   r   r   r   r   r   ry   r]   r^   r_   s   @rS   rM   rM   %  s]     @ @ 	J J   rV   rM   c                      a a ] tR tRt o]P
                  ! R4      tV3R lV 3R llt]V3R lR l4       t	V3R lR lt
V3R	 lR
 ltV3R lR ltV3R lR ltRtVtV ;t# )Domaini4  z(?!-)[a-z\d-]{1,63}(?<!-)c                $   < V ^8  d   QhRS[ RR/# r>   rL   re   Nrw   )rQ   rR   s   "rS   rT   Domain.__annotate__7  s     / /s /t /rV   c                P   < \         SV `  4        V P                  V4      V n        R # ri   )r   rn   
validation_domain)rm   rL   r   s   &&rS   rn   Domain.__init__7  s    v.rV   c                    < V ^8  d   QhRS[ /# rq   rw   )rQ   rR   s   "rS   rT   r  <  r  rV   c                    V P                   # ri   r  rs   s   &rS   ry   Domain.canonical;  r   rV   c                &   < V ^8  d   QhRS[ RS[ /# )r>   rL   re   rw   )rQ   rR   s   "rS   rT   r  ?  s     , , , ,rV   c                |  a  \        V\        4      '       g   \        R 4      hVP                  R4      P	                  4       pV'       g   \        R4      hRV9   d   \        R4      h\        RV,           4      pVP                  f   Q h\        ;QJ d8    V 3R lVP                  P                  R4       4       F  '       d   K   RM-	  RM)! V 3R lVP                  P                  R4       4       4      '       g   \        R	4      hVP                  ^P8X  d   VP                  # VP                   R
VP                   2# )zDomain must be strr=   zDomain cannot be emptyz://zScheme not supportedzhttp://c              3   Z   <"   T F   pSP                   P                  V4      x  K"  	  R # 5iri   )re_partr  ).0xrm   s   & rS   	<genexpr>$Domain.validation.<locals>.<genexpr>I  s%     N6M4<<))!,,6Ms   (+FTzDomain not valid:)r   rP   	TypeErrorrstriprL  r   r   raw_hostallr  port)rm   rL   r  s   f& rS   r  Domain.validation?  s    &#&&011s#))+566f_344)f$%||'''sNcll6H6H6MNsssNcll6H6H6MNNN/0088r><<,,q
++rV   c                &   < V ^8  d   QhRS[ RS[/# r   r  )rQ   rR   s   "rS   rT   r  O  s     ' '7 't 'rV   c                   "   VP                   P                  \        P                  4      pV'       g   R # V P	                  V4      # 5ir  )rH  rI  r   HOSTmatch_domain)rm   r   hosts   && rS   r   Domain.matchO  s4     ""499-  &&s   AAc                &   < V ^8  d   QhRS[ RS[/# r>   r  re   r   )rQ   rR   s   "rS   rT   r  U  s     , , , ,rV   c                <    VP                  4       V P                  8H  # ri   )rL  r  rm   r  s   &&rS   r  Domain.match_domainU  s    zz|t||++rV   c                    < V ^8  d   QhRS[ /# rq   r   )rQ   rR   s   "rS   rT   r  X  s     ( () (rV   c                    R V P                   /# )rL   r  rs   s   &rS   r   Domain.get_infoX  s    $,,''rV   r  )rX   rY   rZ   r[   r  r  r  rn   r   ry   r  r   r  r   r]   r^   r,  r-  s   @@rS   r  r  4  s_     jj56G/ /  , , ' ', ,( ( (rV   r  c                      a a ] tR tRt o]P
                  ! R4      tV3R lV 3R llt]V3R lR l4       t	V3R lR lt
R	tVtV ;t# )

MaskDomaini\  z(?!-)[a-z\d\*-]{1,63}(?<!-)c                $   < V ^8  d   QhRS[ RR/# r  rw   )rQ   rR   s   "rS   rT   MaskDomain.__annotate___  s     & &s &t &rV   c                   < \         SV `  V4       V P                  P                  R R4      P                  RR4      p\        P
                  ! V4      V n        R# )r=   z\.*z.*N)r   rn   r  r  r  r  _mask)rm   rL   maskr   s   && rS   rn   MaskDomain.__init___  sC     ||##C/77TBZZ%
rV   c                    < V ^8  d   QhRS[ /# rq   rw   )rQ   rR   s   "rS   rT   r  e  s     " "3 "rV   c                .    V P                   P                  # ri   )r  rG   rs   s   &rS   ry   MaskDomain.canonicald  s    zz!!!rV   c                &   < V ^8  d   QhRS[ RS[/# r  r   )rQ   rR   s   "rS   rT   r  h  s     6 6 6 6rV   c                <    V P                   P                  V4      R J# ri   )r  r  r  s   &&rS   r  MaskDomain.match_domainh  s    zz##D)55rV   )r  )rX   rY   rZ   r[   r  r  r  rn   r   ry   r  r]   r^   r,  r-  s   @@rS   r  r  \  sA     jj78G& &
 " "6 6 6rV   r  c                      a  ] tR tRt o V 3R lR lt]V 3R lR l4       tV 3R lR ltV 3R lR	 ltV 3R
 lR lt	Rt
V tR# )MatchedSubAppResourceil  c                (   < V ^8  d   QhRS[ RRRR/# )r>   rN   rK   r;   re   N)rM   )rQ   rR   s   "rS   rT   "MatchedSubAppResource.__annotate__m  s#      1  $ rV   c                V    \         P                  V 4       R V n        W n        Wn        R# )rF  N)r3   rn   r  r  _rule)rm   rN   rK   s   &&&rS   rn   MatchedSubAppResource.__init__m  s!    !!$'	
rV   c                    < V ^8  d   QhRS[ /# rq   rw   )rQ   rR   s   "rS   rT   r  t  s     $ $3 $rV   c                .    V P                   P                  # ri   )r  ry   rs   s   &rS   ry   MatchedSubAppResource.canonicals  s    zz###rV   c                    < V ^8  d   QhRS[ /# rq   r   )rQ   rR   s   "rS   rT   r  w  s     6 6) 6rV   c                6    R V P                   RV P                  /# )rK   rN   )r  r  rs   s   &rS   r   MatchedSubAppResource.get_infow  s    tyy&$**55rV   c                &   < V ^8  d   QhRS[ RS[/# r   r   )rQ   rR   s   "rS   rT   r  z  s     	# 	#W 	# 	#rV   c                  "   V P                   P                  V4      G R j  xL
 '       g   R \        4       3# V P                  P                  P                  V4      G R j  xL
 pVP                  V P                  4       \        VP                  \        4      '       d   VP                  P                  pW#3# \        4       pW#3#  L Lg5iri   )r  r   rX  r  r  r   r  r   rO   r)   rL  r  s   &&  rS   r   MatchedSubAppResource.resolvez  s     ZZ%%g...;99++33G<<
499%j//1EFF //??G "" eG"" /<s'   C
C	C
4C
 C!A&C
C
c                    < V ^8  d   QhRS[ /# rq   rw   )rQ   rR   s   "rS   rT   r    s     ; ;# ;rV   c                $    R V P                   : R2# )z<MatchedSubAppResource -> r&  r  rs   s   &rS   r'  MatchedSubAppResource.__repr__  s    +DII=::rV   )r  r  r  N)rX   rY   rZ   r[   rn   r   ry   r   r   r'  r]   r^   r_   s   @rS   r  r  l  sA       $ $6 6	# 	#; ;rV   r  c                      a a ] tR tRt oRtRR/V3R lV 3R llltV3R lR lt]V3R	 lR
 l4       tV3R lR lt	V3R lR lt
RtVtV ;t# )r8   i  zA route with resourcer   Nc          
      l   < V ^8  d   QhRS[ RS[S[S[S[,          3,          RS[RS[S[,          RR/# )r>   r   r   r   r   re   N)rP   r   r$   r   r!   r3   r   r   )rQ   rR   s   "rS   rT   ResourceRoute.__annotate__  sQ     

 



 w\ 223

 #	

 !0

 


rV   c               *   < \         SV `  WWCR 7       R# ))r   r   N)r   rn   )rm   r   r   r   r   r   s   &&&&$rS   rn   ResourceRoute.__init__  s     	N 	 	
rV   c                    < V ^8  d   QhRS[ /# rq   rw   )rQ   rR   s   "rS   rT   r    r?  rV   c                f    R P                  V P                  V P                  V P                  R7      # )z3<ResourceRoute [{method}] {resource} -> {handler!r})r   r   r   )rQ   r   r   r   rs   s   &rS   r'  ResourceRoute.__repr__  s.    DKK;; L 
 	
rV   c                0   < V ^8  d   QhRS[ S[,          /# rq   rf   )rQ   rR   s   "rS   rT   r    s     # #hsm #rV   c                N    V P                   f   R # V P                   P                  # ri   )r   rb   rs   s   &rS   rb   ResourceRoute.name  s    >>!~~"""rV   c                ,   < V ^8  d   QhRS[ RS[ RS[/# r   r~   )rQ   rR   s   "rS   rT   r    s"     7 7S 7C 7C 7rV   c                Z    V P                   f   Q hV P                   P                  ! V/ VB # )r   )r   r   r   s   &*,rS   r   ResourceRoute.url_for  s,    ~~)))~~%%t6v66rV   c                    < V ^8  d   QhRS[ /# rq   r   )rQ   rR   s   "rS   rT   r    s     ) )) )rV   c                V    V P                   f   Q hV P                   P                  4       # ri   )r   r   rs   s   &rS   r   ResourceRoute.get_info  s%    ~~)))~~&&((rV   rW   )rX   rY   rZ   r[   __doc__rn   r'  r   rb   r   r   r]   r^   r,  r-  s   @@rS   r8   r8     sS     

 48

 


 

 # #
7 7
) ) )rV   c                      a a ] tR tRt oV3R lV 3R lltV3R lR lt]V3R lR l4       tV3R lR	 ltV3R
 lR lt	]V3R lR l4       t
]V3R lR l4       tV3R lR ltRtVtV ;t# )r6  i  c                $   < V ^8  d   QhRS[ RR/# r1  r2  )rQ   rR   s   "rS   rT   SystemRoute.__annotate__  s     . .} . .rV   c                d   < \         SV `  \        P                  V P                  4       Wn        R # ri   )r   rn   r   rd  r  _http_exceptionr7  s   &&rS   rn   SystemRoute.__init__  s     5-rV   c                ,   < V ^8  d   QhRS[ RS[ RS[/# r   r~   )rQ   rR   s   "rS   rT   r    s'     H HS HC HC HrV   c                    \        R 4      h)z).url_for() is not allowed for SystemRouter  r   s   &*,rS   r   SystemRoute.url_for  s    FGGrV   c                0   < V ^8  d   QhRS[ S[,          /# rq   rf   )rQ   rR   s   "rS   rT   r    s      hsm rV   c                    R # ri   rW   rs   s   &rS   rb   SystemRoute.name  r
  rV   c                    < V ^8  d   QhRS[ /# rq   r   )rQ   rR   s   "rS   rT   r    s     8 8) 8rV   c                    R V P                   /# )rO   r  rs   s   &rS   r   SystemRoute.get_info  s     $"6"677rV   c                &   < V ^8  d   QhRS[ RS[/# r   r   )rQ   rR   s   "rS   rT   r    s     # #W # #rV   c                "   "   V P                   h5iri   r"  r   s   &&rS   r  SystemRoute._handle  s     """s   c                    < V ^8  d   QhRS[ /# rq   rs  )rQ   rR   s   "rS   rT   r         + + +rV   c                .    V P                   P                  # ri   )r  rA  rs   s   &rS   rA  SystemRoute.status      ##***rV   c                    < V ^8  d   QhRS[ /# rq   rw   )rQ   rR   s   "rS   rT   r    r(  rV   c                .    V P                   P                  # ri   )r  rB  rs   s   &rS   rB  SystemRoute.reason  r+  rV   c                    < V ^8  d   QhRS[ /# rq   rw   )rQ   rR   s   "rS   rT   r    s     N N# NrV   c                &    R P                  V R7      # )z*<SystemRoute {self.status}: {self.reason}>rs   )rQ   rs   s   &rS   r'  SystemRoute.__repr__  s    ;BBBMMrV   r"  )rX   rY   rZ   r[   rn   r   r   rb   r   r  rA  rB  r'  r]   r^   r,  r-  s   @@rS   r6  r6    s}     . .H H  8 8# # + + + +N N NrV   r6  c                   V   a  ] tR tRt o V 3R lR ltV 3R lR ltV 3R lR ltRtV tR	# )
r:   i  c                    < V ^8  d   QhRS[ /# rq   )r/   )rQ   rR   s   "rS   rT   View.__annotate__  s     	 	^ 	rV   c                V  "   V P                   P                  \        P                  9  d   V P	                  4        \        W P                   P                  P                  4       R 4      pVf   V P	                  4        V! 4       G R j  xL
 p\        V\        4      '       g   Q hV#  L5iri   )	r   r   r   METH_ALL_raise_allowed_methodsgetattrrL  r   r/   )rm   r   rets   &  rS   _iter
View._iter  s}     <<dmm3'')||2288:DA>'')Hn#~....
 s   BB)B'	B)c                6   < V ^8  d   QhRS[ RRS[3,          /# r   )r   r/   )rQ   rR   s   "rS   rT   r4    s      ( (9T4%?@ (rV   c                >    V P                  4       P                  4       # ri   )r:  	__await__rs   s   &rS   r>  View.__await__  s    zz|%%''rV   c                    < V ^8  d   QhRS[ /# rq   )r   )rQ   rR   s   "rS   rT   r4    s     I I IrV   c                    \         P                   Uu0 uF&  p\        WP                  4       4      '       g   K$  VkK(  	  pp\	        V P
                  P                  V4      hu upi ri   )r   r6  hasattrrL  r)   r   r   )rm   r<  rL  s   &  rS   r7  View._raise_allowed_methods  sF    &*mmPmwtWWY7O11mP"4<<#6#6HH Qs
   !A!A!rW   N)	rX   rY   rZ   r[   r:  r>  r7  r]   r^   r_   s   @rS   r:   r:     s%     	 	( (I IrV   c                   h   a  ] tR tRt o V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltR
tV t	R# )ResourcesViewi  c                4   < V ^8  d   QhRS[ S[,          RR/# )r>   r  re   Nr   r3   )rQ   rR   s   "rS   rT   ResourcesView.__annotate__  s!     $ $$'7"8 $T $rV   c                    Wn         R # ri   
_resources)rm   r  s   &&rS   rn   ResourcesView.__init__  s    #rV   c                    < V ^8  d   QhRS[ /# rq   rs  )rQ   rR   s   "rS   rT   rH    s     $ $ $rV   c                ,    \        V P                  4      # ri   )rx  rK  rs   s   &rS   ry  ResourcesView.__len__  s    4??##rV   c                0   < V ^8  d   QhRS[ S[,          /# rq   )r   r3   )rQ   rR   s   "rS   rT   rH    s     # #(#34 #rV   c              #  :   "   V P                    R j  xL
  R #  L5iri   rJ  rs   s   &rS   r  ResourcesView.__iter__  s     ??""   c                &   < V ^8  d   QhRS[ RS[/# r>   r   re   objectr   )rQ   rR   s   "rS   rT   rH    s     + +V + +rV   c                    WP                   9   # ri   rJ  rm   r   s   &&rS   __contains__ResourcesView.__contains__  s    ??**rV   rJ  N
rX   rY   rZ   r[   rn   ry  r  rZ  r]   r^   r_   s   @rS   rE  rE    s-     $ $$ $# #+ +rV   rE  c                   h   a  ] tR tRt o V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltR
tV t	R# )
RoutesViewi  c                0   < V ^8  d   QhRS[ S[,          /# )r>   r  rG  )rQ   rR   s   "rS   rT   RoutesView.__annotate__  s     + +$'7"8 +rV   c                n    . V n         V F'  pV F  pV P                   P                  V4       K   	  K)  	  R # ri   )rV  rm  )rm   r  r   r   s   &&  rS   rn   RoutesView.__init__  s/    ,.!H!##E* " "rV   c                    < V ^8  d   QhRS[ /# rq   rs  )rQ   rR   s   "rS   rT   r`    ru  rV   c                ,    \        V P                  4      # ri   rw  rs   s   &rS   ry  RoutesView.__len__  r{  rV   c                0   < V ^8  d   QhRS[ S[,          /# rq   rR  )rQ   rR   s   "rS   rT   r`    s        (=1  rV   c              #  :   "   V P                    R j  xL
  R #  L5iri   rV  rs   s   &rS   r  RoutesView.__iter__  s     <<rS  c                &   < V ^8  d   QhRS[ RS[/# )r>   r   re   rV  )rQ   rR   s   "rS   rT   r`    s     % %& %T %rV   c                    WP                   9   # ri   rh  rf  s   &&rS   rZ  RoutesView.__contains__  s    $$rV   rh  Nr\  r_   s   @rS   r^  r^    s-     + +! !   % %rV   r^  c                   f  a a ] tR tRt o]P
                  ! R4      tV3R lV 3R lltV3R lR ltV3R lR lt	V3R	 lR
 lt
V3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lR ltRR/V3R lR  lltRRR!R/V3R" lR# lltRRR!RR$RBR%R&R'R&R(R&/V3R) lR* lltV3R+ lR, ltV3R- lR. ltRRR/R0/V3R1 lR2 lltV3R3 lR4 ltV3R5 lR6 ltV3R7 lR8 ltV3R9 lR: ltV3R; lR< ltV3R= lV 3R> lltV3R? lR@ lt RAt!Vt"V ;t## )Cr1   i  z[.:-]c                   < V ^8  d   QhRR/# r   rW   )rQ   rR   s   "rS   rT   UrlDispatcher.__annotate__  s     J J$ JrV   c                \   < \         SV `  4        . V n        / V n        / V n        . V n        R # ri   )r   rn   rK  _named_resources_resource_index_matched_sub_app_resourcesr(  s   &rS   rn   UrlDispatcher.__init__  s-    24=?BDGI'rV   c                &   < V ^8  d   QhRS[ RS[/# r   )r-   r2   )rQ   rR   s   "rS   rT   ro  	  s     '. '.W '.1D '.rV   c                J  "   V P                   p\        4       pV P                   F.  pVP                  V4      G R j  xL
 w  rVVe   Vu # W6,          pK0  	  VP                  P
                  pV'       dq   VP                  VR4       F.  pVP                  V4      G R j  xL
 w  rVVe   Vu # W6,          pK0  	  VR8X  d   M$VP                  R4      ^ ,          ;'       g    RpKx  V'       d    \        \        VP                  V4      4      # \        \        4       4      #  L L5i)Nr?   rW   )rr  rX  rs  r   rk  rl  rI  
rpartitionr/  r)   r   r*   )	rm   r   resource_indexrL  r   r   allowedurl_part	candidates	   &&       rS   r   UrlDispatcher.resolve	  s    --$'E 77H(0(8(8(A"AJ%!!* 8 ??,,+//"=	,5,=,=g,F&F#
)%%#.O > 3**3/299cH!"6w~~"WXXln--5 #B 'Gs4   :D#D7D#5)D#D!A D# D#-3D#!D#c                0   < V ^8  d   QhRS[ S[,          /# rq   )r   rP   )rQ   rR   s   "rS   rT   ro  2  s     + +(3- +rV   c                ,    \        V P                  4      # ri   )r  rq  rs   s   &rS   r  UrlDispatcher.__iter__2  s    D))**rV   c                    < V ^8  d   QhRS[ /# rq   rs  )rQ   rR   s   "rS   rT   ro  5  s     * * *rV   c                ,    \        V P                  4      # ri   )rx  rq  rs   s   &rS   ry  UrlDispatcher.__len__5  s    4(())rV   c                &   < V ^8  d   QhRS[ RS[/# rU  rV  )rQ   rR   s   "rS   rT   ro  8  s     1 1V 1 1rV   c                    WP                   9   # ri   rq  rY  s   &&rS   rZ  UrlDispatcher.__contains__8  s    0000rV   c                &   < V ^8  d   QhRS[ RS[/# )r>   rb   re   )rP   r3   )rQ   rR   s   "rS   rT   ro  ;  s     + + +(8 +rV   c                (    V P                   V,          # ri   r  rl   s   &&rS   __getitem__UrlDispatcher.__getitem__;  s    $$T**rV   c                    < V ^8  d   QhRS[ /# rq   )rE  )rQ   rR   s   "rS   rT   ro  >  s     . .= .rV   c                ,    \        V P                  4      # ri   )rE  rK  rs   s   &rS   r  UrlDispatcher.resources>  s    T__--rV   c                    < V ^8  d   QhRS[ /# rq   )r^  )rQ   rR   s   "rS   rT   ro  A  s     + +
 +rV   c                ,    \        V P                  4      # ri   )r^  rK  rs   s   &rS   rJ   UrlDispatcher.routesA  s    $//**rV   c                6   < V ^8  d   QhRS[ S[S[3,          /# rq   )r   rP   r3   )rQ   rR   s   "rS   rT   ro  D  s     7 7.>)>!? 7rV   c                ,    \        V P                  4      # ri   )r   rq  rs   s   &rS   named_resourcesUrlDispatcher.named_resourcesD  s     5 566rV   c                $   < V ^8  d   QhRS[ RR/# r>   r   re   Nr3   )rQ   rR   s   "rS   rT   ro  G  s     %* %**: %*t %*rV   c                   \        V\        4      '       g   Q R V: 24       hV P                  '       d   \        R4      hVP                  pVe   V P
                  P                  V4      pV F_  p\        P                  ! V4      '       d   \        RV: R24      hVP                  4       '       d   KG  \        RP                  V4      4      h	  W P                  9   d,   \        RP                  W P                  V,          4      4      hWP                  V&   V P                  P                  V4       \        V\        4      '       d   V P                   P                  V4       R# V P#                  V4       R# )z4Instance of AbstractResource class is required, got z.Cannot register a resource into frozen router.NzIncorrect route name z/, python keywords cannot be used for route namezoIncorrect route name {!r}, the name should be a sequence of python identifiers separated by dash, dot or columnz'Duplicate {!r}, already handled by {!r})r   r3   frozenr  rb   NAME_SPLIT_REr  keyword	iskeywordr   isidentifierrQ   rq  rK  rm  r  rs  r  )rm   r   rb   r  r  s   &&   rS   register_resourceUrlDispatcher.register_resourceG  s[   &
 
 	OA(N	O 
 ;;;OPP}}&&,,T2E$$T**$/x 8) ) 
 ((**$1 28	   ,,, ..4fT;P;PQU;V.W  +3!!$'x(h 566++228<)rV   c                &   < V ^8  d   QhRS[ RS[/# rU  )r3   rP   )rQ   rR   s   "rS   rT   ro  n  s     	, 	,0@ 	,S 	,rV   c                    RVP                   ;p9   d/   VP                  R4      ^ ,          P                  R4      ^ ,          pVP                  R4      ;'       g    R# )z9Return a key to index the resource in the resource index.r  r?   )ry   	partitionrw  r  )rm   r   	index_keys   && rS   _get_resource_index_key%UrlDispatcher._get_resource_index_keyn  sU     2 2293 "++C03>>sCAFI$+++rV   c                $   < V ^8  d   QhRS[ RR/# r  r  )rQ   rR   s   "rS   rT   ro  y  s      K K'7 KD KrV   c                ~    V P                  V4      pV P                  P                  V. 4      P                  V4       R# )z%Add a resource to the resource index.N)r  rr  
setdefaultrm  rm   r   resource_keys   && rS   r  UrlDispatcher.index_resourcey  s5    33H= 	''b9@@JrV   c                $   < V ^8  d   QhRS[ RR/# r  r  )rQ   rR   s   "rS   rT   ro    s     < <)9 <d <rV   c                l    V P                  V4      pV P                  V,          P                  V4       R# )z*Remove a resource from the resource index.N)r  rr  remover  s   && rS   r  UrlDispatcher.unindex_resource  s+    33H=\*11(;rV   rb   Nc                <   < V ^8  d   QhRS[ RS[S[ ,          RS[/# )r>   rE   rb   re   )rP   r   r4   )rQ   rR   s   "rS   rT   ro    s&       x}  rV   c                  V'       d#   VP                  R 4      '       g   \        R4      hV P                  '       dL   V P                  R,          pVP                  V8X  d(   VP	                  V4      '       d   \        \        V4      # RV9   gB   RV9   g;   \        P                  V4      '       g    \        WR7      pV P                  V4       V# \        WR7      pV P                  V4       V# )r?   z)path should be started with / or be emptyr  r  rU  )r  r   rK  rb   r   r   r4   r  searchr5   r  r6   )rm   rE   rb   r   s   &&$ rS   add_resourceUrlDispatcher.add_resource  s    ,,HII???r*H}}$););D)A)AHh//tsd{hood.C.C$T5H""8,O"43x(rV   r   c                   < V ^8  d   QhRS[ RS[ RS[S[S[S[,          3,          RS[S[ ,          RS[S[,          RS[/# )r>   r   rE   r   rb   r   re   )rP   r   r$   r   r!   r   r   r7   )rQ   rR   s   "rS   rT   ro    sg     
R 
R
R 
R w\ 223	
R sm
R !0
R 

RrV   c               L    V P                  W$R 7      pVP                  WVR7      # )rU  r]  )r  r`  )rm   r   rE   r   rb   r   r   s   &&&&$$ rS   r`  UrlDispatcher.add_route  s-     $$T$5!!&.!QQrV   r  r   Fr  r  c                p   < V ^8  d   QhRS[ RS[RS[S[ ,          RS[S[,          RS[RS[RS[RS[R	S[/	# )
r>   rI   rE   rb   r   r  r   r  r  re   )rP   r%   r   r   rt  r   r3   )rQ   rR   s   "rS   rT   ro    sn           
 sm  !0          
 rV   c                   VP                  R4      '       g   Q hVP                  R4      '       d   VRR p\        VVVVVVVVR7      p	V P                  V	4       V	# )zFAdd static files view.

prefix - url prefix
path - folder with files

r?   N)rb   r   r  r   r  r  r  )r  r  r9   r  )
rm   rI   rE   rb   r   r  r   r  r  r   s
   &&&$$$$$$ rS   
add_staticUrlDispatcher.add_static  sl    $   %%%%??3CR[F!)!!+)	
 	x(rV   c                2   < V ^8  d   QhRS[ RS[RS[RS[/# r>   rE   r   r}   re   rP   r$   r   r7   )rQ   rR   s   "rS   rT   ro    /     G GS G7 Gc Gm GrV   c                F    V P                   ! \        P                  W3/ VB # )z(Shortcut for add_route with method HEAD.)r`  r   	METH_HEADrm   rE   r   r}   s   &&&,rS   add_headUrlDispatcher.add_head      ~~dnndFvFFrV   c                2   < V ^8  d   QhRS[ RS[RS[RS[/# r  r  )rQ   rR   s   "rS   rT   ro    s/     J J Jg J J JrV   c                F    V P                   ! \        P                  W3/ VB # )z+Shortcut for add_route with method OPTIONS.)r`  r   METH_OPTIONSr  s   &&&,rS   add_optionsUrlDispatcher.add_options  s    ~~d//I&IIrV   
allow_headTc                N   < V ^8  d   QhRS[ RS[RS[S[ ,          RS[RS[RS[/# )r>   rE   r   rb   r  r}   re   )rP   r$   r   r   r   r7   )rQ   rR   s   "rS   rT   ro    sS     D DD D
 smD D D 
DrV   c                   V P                  WR7      pV'       d#   VP                  ! \        P                  V3/ VB  VP                  ! \        P                  V3/ VB # )zShortcut for add_route with method GET.

If allow_head is true, another
route is added allowing head requests to the same endpoint.
rU  )r  r`  r   r  METH_GET)rm   rE   r   rb   r  r}   r   s   &&&$$, rS   add_getUrlDispatcher.add_get  sO     $$T$5t~~wA&A!!$--CFCCrV   c                2   < V ^8  d   QhRS[ RS[RS[RS[/# r  r  )rQ   rR   s   "rS   rT   ro    r  rV   c                F    V P                   ! \        P                  W3/ VB # )z(Shortcut for add_route with method POST.)r`  r   	METH_POSTr  s   &&&,rS   add_postUrlDispatcher.add_post  r  rV   c                2   < V ^8  d   QhRS[ RS[RS[RS[/# r  r  )rQ   rR   s   "rS   rT   ro    s/     F FC F' FS F] FrV   c                F    V P                   ! \        P                  W3/ VB # )z'Shortcut for add_route with method PUT.)r`  r   METH_PUTr  s   &&&,rS   add_putUrlDispatcher.add_put  s    ~~dmmTEfEErV   c                2   < V ^8  d   QhRS[ RS[RS[RS[/# r  r  )rQ   rR   s   "rS   rT   ro    s/     H Hc HG Hs H} HrV   c                F    V P                   ! \        P                  W3/ VB # )z)Shortcut for add_route with method PATCH.)r`  r   
METH_PATCHr  s   &&&,rS   	add_patchUrlDispatcher.add_patch  s    ~~dootGGGrV   c                2   < V ^8  d   QhRS[ RS[RS[RS[/# r  r  )rQ   rR   s   "rS   rT   ro    s/     I Is IW I I IrV   c                F    V P                   ! \        P                  W3/ VB # )z*Shortcut for add_route with method DELETE.)r`  r   METH_DELETEr  s   &&&,rS   
add_deleteUrlDispatcher.add_delete  s    ~~d..HHHrV   c                B   < V ^8  d   QhRS[ RS[S[,          RS[RS[/# r  )rP   r   r!   r   r7   )rQ   rR   s   "rS   rT   ro    s8     F FF"&|"4F@CF	FrV   c                F    V P                   ! \        P                  W3/ VB # )z?Shortcut for add_route with ANY methods for a class-based view.)r`  r   rd  r  s   &&&,rS   add_viewUrlDispatcher.add_view  s     ~~dmmTEfEErV   c                   < V ^8  d   QhRR/# r   rW   )rQ   rR   s   "rS   rT   ro    s       rV   c                j   < \         SV `  4        V P                   F  pVP                  4        K  	  R # ri   )r   r   rK  )rm   r   r   s   & rS   r   UrlDispatcher.freeze  s%    HOO (rV   c                F   < V ^8  d   QhRS[ S[,          RS[S[,          /# )r>   rJ   re   )r   r0   r   r7   )rQ   rR   s   "rS   rT   ro    s&     
! 
!*:!; 
!]@S 
!rV   c                \    . pV F#  pVP                  VP                  V 4      4       K%  	  V# )zAppend routes to route table.

Parameter should be a sequence of RouteDef objects.

Returns a list of registered AbstractRoute instances.
)extendregister)rm   rJ   registered_routes	route_defs   &&  rS   
add_routesUrlDispatcher.add_routes  s3     I$$Y%7%7%=>    rV   )rs  rq  rr  rK  r  )$rX   rY   rZ   r[   r  r  r  rn   r   r  ry  rZ  r  r  rJ   r  r  r  r  r  r  r`  r  r  r  r  r  r  r  r  r  r   r  r]   r^   r,  r-  s   @@rS   r1   r1     s    JJx(MJ J'. '.R+ +* *1 1+ +. .+ +7 7%* %*N	, 	,K K< <
t   
R #
R 48
R 
R 
 #  48  %  !  !&   %   DG GJ JD
 #D  D D&G GF FH HI IF F 

! 
! 
!rV   c                0    V ^8  d   QhR\         R\         /# r>   r  re   rw   )rQ   s   "rS   rT   rT     s     9 9s 9s 9rV   c                     \         R8  d   V P                  RR4      p \        P                  ! V RR7      P                  # )r  r  r  Fr  r  )r  r  r   r  raw_pathr  s   &rS   r  r    s1    fc5)99%/888rV   c                0    V ^8  d   QhR\         R\         /# r  rw   )rQ   s   "rS   rT   rT     s     9 9c 9c 9rV   c                 X    R V 9  d   V # V P                  RR4      P                  RR 4      # )r  z%2Fr?   r  )r  r  s   &rS   r  r    s-    
%==$,,UC88rV   c                0    V ^8  d   QhR\         R\         /# r  rw   )rQ   s   "rS   rT   rT     s        rV   c                 N    \        V 4      pR V 9   d   VP                  RR 4      pV# )r  r  )r  r  )r  r   s   & rS   r  r    s*     F
e|s+MrV   c                   V ^8  d   Qh/ ^ \         9   d"   \        \        \        R3,          ,          ;R&   ^\         9   d    \        \        \
        ,          ,          ;R&   ^\         9   d    \        \        \
        ,          ,          ;R&   ^\         9   d   \        \
        ,          ;R&   ^\         9   d   \        \        ,          ;R&   # )r>   .r  r   r  r  rJ  )__conditional_annotations__r   r   rt  r   rP   r   )rQ   s   "rS   rT   rT      s    

n T SeE#s(O$ So r gcl# s x %
 y ~ & %%* % B 9 8E$K 8C rV   )
r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   )r   
   )r      rW   )r  r   r   r8  	functoolsr5  r{  r   r  r   platformr  r   r   r   pathlibr   typesr   typingr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   yarlr   r   yarl_versionrF  r   r   r    r!   helpersr"   httpr#   typedefsr$   r%   web_exceptionsr&   r'   r(   r)   r*   web_fileresponser+   web_requestr-   web_responser.   r/   web_routedefr0   __all__web_appr;   rP   BaseDictdictr   r  OSErrorr  r`  r  maprt  r  r  r  r   r  r  r  systemrJ  r   r   partialrj  rC   r3   ABCr7   r2   r/  r   r4   r5   r6   r  r9   r  rM   r  r  r  r8   r6  r:   rE  r^  r1   r  r  r  rT   )r  s   @rS   <module>r     s   

        	  	 
    "     2 2  @ @   '  +   2 * $CH~HH '!cll&=&=g&F&F J,,w6,B  (-Sl6H6H6Mb6Q-R'S S&(jj+'  !#

1!  yy~ %"//+y8
 87)Yx/G%HHI/0#c(:;48"	 "&,/uh7 ,/^R3CGG R3j>B($5 >BB
( 
$L 1+ 1+l%6H %6PI
h I
X% 2M
^ M
`+
^ +
\377 %(! %(P6 6 ;2 ;:!)M !)HN- N<I< I(+E8$45yAQ7R +%/=1I %"F!NGC1A,A$B F!R99rV   