id;4UddlZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl mZddlmZddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ddl%m&Z&m'Z(dd l)m*Z*dd lm+Z+m,Z,m-Z-dd l.m/Z/dd l0m1Z1dd l2m3Z3m4Z4m5Z5m6Z6ddl7m8Z8m9Z9m:Z:m;Z;mZ>ddl?m@Z@ddlAmBZBmCZCddlDmEZEdZFerddlGmHZHeeIeIfZJneKZJeLeMeNe(jOdddZPe3e!eNdfeQd<ejRdZSe3eeIeQd<ejRdZTe3eeIeQd<ejUdZVe3eIeQd<ee@gedfZWe!edeeIfZXGd d!e6d"#ZYGd$d%e ed&ZZGd'd&ej[Z\Gd(deJe+Z]Gd)d*e]Z^d+e@d,dfd-Z_Gd.d/eZZ`Gd0d1e`ZaGd2d3e`ZbGd4d5eZZcGd6d7ecZdGd8d9ecZeGd:d;ej[ZfGd<d=efZgGd>d?egZhGd@dAeeZiGdBdCe\ZjGdDdEe\ZkGdFdGe-ZlGdHdIe eeZeeZZmGdJdKe ee\ee\ZnGdLdMe,eeIeZfZodNeId,eIfdOZpdNeId,eIfdPZqdNeId,eIfdQZrdS)RN)contextmanager)wraps)Path)MappingProxyType) TYPE_CHECKINGAny AwaitableCallable ContainerDict GeneratorIterableIteratorListMappingOptionalPatternSetSizedTupleTypeUnioncast)URL __version__)hdrs)AbstractMatchInfoAbstractRouter AbstractView)DEBUG) HttpVersion11)FinalHandlerPathLike TypedDict) HTTPExceptionHTTPExpectationFailed HTTPForbiddenHTTPMethodNotAllowed HTTPNotFound) FileResponse)Request)ResponseStreamResponse)AbstractRouteDef) UrlDispatcherUrlMappingMatchInfoAbstractResourceResource PlainResourceDynamicResource AbstractRoute ResourceRouteStaticResourceView) Application.. YARL_VERSIONz$^[0-9A-Za-z!#\$%&'\*\+\-\.\^_`\|~]+$HTTP_METHOD_REz*(\{[_a-zA-Z][^{}]*(?:\{[^{}]*\}[^{}]*)*\})ROUTE_RE/PATH_SEPr2ceZdZUeed<eed<eeed<eed<eed<eedfed<ded <eed <d ed <eed <dS) _InfoDictpath formatterpattern directoryprefixr7routesr;appdomainAbstractRuleMatchingrulehttp_exceptionN) __name__ __module__ __qualname__str__annotations__rrrr'N/opt/cloudlinux/venv/lib/python3.11/site-packages/aiohttp/web_urldispatcher.pyrDrD[s IIINNN S\OOO KKK C( ))))  KKK    !!!!!!rVrDF)totalcdeZdZdddeeddfdZedeefdZeej defdZ ej dede fd Z ej d e defd Zej d eddfd Zej defdZddZej dedefdZdS)r3Nnamer[returnc||_dSN_nameselfr[s rW__init__zAbstractResource.__init__os  rVc|jSr^r_rbs rWr[zAbstractResource.namer zrVcdS)zWExposes the resource's canonical path. For example '/foo/bar/{name}' NrUres rW canonicalzAbstractResource.canonicalvrVkwargsc dS)z2Construct url for resource with additional params.NrU)rbrjs rWurl_forzAbstractResource.url_forrirVrequestc KdS)zWResolve resource. Return (UrlMappingMatchInfo, allowed_methods) pair. NrUrbrms rWresolvezAbstractResource.resolve rVrIcdS)zWAdd a prefix to processed URLs. Required for subapplications support. NrUrbrIs rW add_prefixzAbstractResource.add_prefixrirVcdSz;Return a dict with additional info useful for introspectionNrUres rWget_infozAbstractResource.get_inforirVcdSr^rUres rWfreezezAbstractResource.freezes rVrEcdS)z Perform a raw match against pathNrUrbrEs rW raw_matchzAbstractResource.raw_matchrirVr\N)rPrQrRrrSrcpropertyr[abcabstractmethodrhrrlr-_ResolverprtrDrwryboolr|rUrVrWr3r3ns04 hsmX 3   X  AAAAAA  W             J)JJJJ     /c/d//////rVr3r7c leZdZddddedeeeefdee dee ddf dZ e defd Z e defd Ze ejdeefd Ze dee fd Zejdefd ZejdededefdZdeddfdZdS)r7Nexpect_handlerresourcemethodhandlerrrr\c|t}tj|s Jd||}t|st |dt|s J|tj|rntj |rtj dtnrt|trt|t rnGtj dtt#|dt$dt&ffd }||}||_||_||_||_dS)NzCoroutine is expected, got z is not allowed HTTP methodz6Bare generators are deprecated, use @coroutine wrapperz-Bare functions are deprecated, use async onesrmr\cZK|}tj|r|d{VS|Sr^)asyncio iscoroutine)rmresult old_handlers rWhandler_wrapperz/AbstractRoute.__init__..handler_wrappers@$W--&v..(!'<<<<<<' rV)_default_expect_handlerriscoroutinefunctionupperr?match ValueErrorcallableinspectisgeneratorfunctionwarningswarnDeprecationWarning isinstancetype issubclassr rr-r/_method_handler_expect_handler _resource)rbrrrrrrs @rWrczAbstractRoute.__init__s  !4N*    < < ; ; ; < < <##F++ ECCCDD D  ))')))  &w / / &   ( 1 1 & MK"     & & &:g|+L+L &  MBDV   7^^ w >     ^  "K%G  -!rVc|jSr^)rres rWrzAbstractRoute.method |rVc|jSr^)rres rWrzAbstractRoute.handlers }rVcdS)z8Optional route's name, always equals to resource's name.NrUres rWr[zAbstractRoute.namerirVc|jSr^)rres rWrzAbstractRoute.resources ~rVcdSrvrUres rWrwzAbstractRoute.get_inforirVargsrjcdS)/Construct url for route with additional params.NrUrbrrjs rWrlzAbstractRoute.url_forrirVrmc@K||d{VdSr^)rros rWhandle_expect_headerz"AbstractRoute.handle_expect_headers2""7+++++++++++rV)rPrQrRrSrr$rr r_ExpectHandlerr3rcr~rrrrr[rrDrwrrlr-rrUrVrWr7r7s 48/3 0"0"0"0"w\ 2230" !0 0" +, 0" 0"0"0"0"dXXGhsmGGGXG(#34X J)JJJJ >S>C>C>>>>,',d,,,,,,rVcLeZdZdeeefdeffd ZedefdZ edefdZ ede fdZ ede efdZdefd Zeded fd ZddZeddZed d dedfdZddZdeffd ZxZS)r2 match_dictroutect|||_g|_d|_d|_dSNF)superrc_route_apps _current_app_frozen)rbrr __class__s rWrczUrlMappingMatchInfo.__init__s< $$$ (* 37 rVr\c|jjSr^)rrres rWrzUrlMappingMatchInfo.handlers {""rVc|jSr^)rres rWrzUrlMappingMatchInfo.routes {rVc|jjSr^)rrres rWrz"UrlMappingMatchInfo.expect_handlers {//rVcdSr^rUres rWrOz"UrlMappingMatchInfo.http_exceptiontrVc4|jSr^)rrwres rWrwzUrlMappingMatchInfo.get_infos{##%%%rV)r;.c*t|jSr^)tuplerres rWappszUrlMappingMatchInfo.appssTZ   rVrKr;Nc|jrtd|j||_|jd|dS)Nz-Cannot change apps stack after .freeze() callr)r RuntimeErrorrrinsertrbrKs rWadd_appzUrlMappingMatchInfo.add_app sK < PNOO O   $ #D  !S!!!!!rVc|j}|J|Sr^)rrs rW current_appzUrlMappingMatchInfo.current_apps rV)NNNc#Ktr1||jvr(td|j||j}||_ dV||_dS#||_wxYw)Nz1Expected one of the following apps {!r}, got {!r})r!rrformatr)rbrKprevs rWset_current_appz#UrlMappingMatchInfo.set_current_apps  $*$$"GNN C   % EEE $D   D  $ $ $ $s A A cd|_dS)NT)rres rWryzUrlMappingMatchInfo.freeze)s  rVc\dtd|jdS)Nz )r__repr__rrbrs rWrzUrlMappingMatchInfo.__repr__,s.AUWW--//AA4;AAAArV)rKr;r\N)r\r;r})rPrQrRr rSr7rcr~r$rrrrrr'rOrDrwrrrrrr rryr __classcell__rs@rWr2r2s4S>-####X#}X0000X0 7X&)&&&&!e./!!!X!""""X  %= %Y?O5P % % %^ %B#BBBBBBBBBBrVcPeZdZdeddffd ZedefdZdefdZxZ S)MatchInfoErrorrOr\Nc~||_tit|jdSr^) _exceptionrrc SystemRouterbrOrs rWrczMatchInfoError.__init__1s4( [99:::::rVc|jSr^)rres rWrOzMatchInfoError.http_exception5 rVcVd|jj|jjS)Nz)rrstatusreasonres rWrzMatchInfoError.__repr__9s)(// O "DO$:   rV) rPrQrRr'rcr~rOrSrrrs@rWrr0s;};;;;;;; X #        rVrrmr\cK|jtjd}|jt krM|dkr"|jdd{VdStd|zdS)zDefault handler for Expect header. Just send "100 Continue" to client. raise HTTPExpectationFailed if value of header is not "100-continue" z 100-continuesHTTP/1.1 100 Continue NzUnknown Expect: %s)text) headersgetrEXPECTversionr"lowerwriterwriter()rmexpects rWrr?s _ b 1 1F-'' <<>>^ + +.&&'GHH H H H H H H H H H'-AF-JKKK K ('rVc eZdZdddeeddffdZdddedeeee fd ee dd fd Z dd Z de defdZejdedeeeeffdZdefdZdeefdZxZS)r4NrZr[r\cZt|g|_dS)NrZ)rrc_routes)rbr[rs rWrczResource.__init__Ns) d###,. rVrrrrr8c|jD]E}|j|ks|jtjkr#t d|Ft ||||}|||S)NzOAdded route will never be executed, method {route.method} is already registered)rr)rrrMETH_ANYrrr8register_route)rbrrr route_objs rW add_routezResource.add_routeRs  I6))Y-=-N-N"!!'i!8!8.O"&'4WWW  I&&&rVrc~t|ts Jd||j|dS)Nz)Instance of Route class is required, got )rr8rappendrbrs rWrzResource.register_routefs[ =   A A @u @ @ A A A E"""""rVrmcKt}||jj}|d|fS|jD]M}|j}||||jks|tjkrt|||fcSNd|fSr^) set_matchrel_urlraw_pathrraddrrr2)rbrmallowed_methodsrr route_methods rWrpzResource.resolvels$'EE[[!9::  ( ( ) )I$+L    - - -w~--1N1N+J BBOTTTT2O( (rVrEcdSr^rUr{s rWrzResource._match|s rVc*t|jSr^lenrres rW__len__zResource.__len__4<   rVc*t|jSr^)iterrres rW__iter__zResource.__iter__sDL!!!rV)rr8r\N)rPrQrRrrSrcrrr r$rrrr-rrprrr rintrrr7rrrs@rWr4r4Msi04/// ///////48 tL)723 !0   (#### )W)))))   3 8DcN#;    !!!!!"(=1""""""""rVr4ceZdZdddedeeddffdZedefdZddZd eddfd Z dedee eeffd Z dede fd Z defd ZdefdZdefdZxZS)r5NrZrEr[r\ct||r|dsJ||_dS)NrZrA)rrc startswith_path)rbrEr[rs rWrczPlainResource.__init__sF d###/4??3///// rVc|jSr^r res rWrhzPlainResource.canonicalrfrVc&|js d|_dSdS)NrArres rWryzPlainResource.freezes!z DJJJ  rVrIc|dsJ|drJt|dksJ||jz|_dSNrAr)r endswithrr rss rWrtzPlainResource.add_prefixsY  %%%%%??3'''''6{{Qdj( rVc |j|kriSdSr^rr{s rWrzPlainResource._matchs :  I4rVc|j|kSr^rr{s rWr|zPlainResource.raw_matchszT!!rVcd|jiS)NrErres rWrwzPlainResource.get_infos ##rVc8tj|jdSNTrEencoded)rbuildr res rWrlzPlainResource.url_forsydj$7777rVcJ|j d|jzdznd}d|d|jdS)N'' rzsTY%%B555 5555rVr})rPrQrRrSrrcr~rhryrtr rrr|rDrwrrlrrrs@rWr5r5sb;?S8C=D 3X)))))) 38DcN#;"c"d""""$)$$$$888886#66666666rVr5ceZdZejdZejdZdZdddede eddffd Z e defd Z d eddfd Z dede eeeffd ZdedefdZdefdZdedefdZdefdZxZS)r6z#\{(?P[_a-zA-Z][_a-zA-Z0-9]*)\}z.\{(?P[_a-zA-Z][_a-zA-Z0-9]*):(?P.+)\}z[^{}/]+NrZrEr[r\ct|d}d}t|D]}|j|}|rP|d|d|jz }|d|dzdzz }o|j |}|rA|djdi| z }|d|dzdzz }d|vsd|vrtd|d |d t|}||z }|tj|z } tj|}n-#tj$r}td |d |dd}~wwxYw|jt&sJ|d sJ||_||_dS)NrZrz (?P<{}>{})var{}z(?P<{var}>{re})zInvalid path 'z'['z']z Bad pattern 'z': rArU)rrcr@splitDYN fullmatchrgroupGOOD DYN_WITH_RE groupdictr _requote_pathreescapecompileerrorrGr rB_pattern _formatter) rbrEr[rGrFpartrcompiledexcrs rWrczDynamicResource.__init__s d### NN4(( ' 'DH&&t,,E <..u{{5/A/A49MMMS5;;u#5#55;; $..t44E 3,3HHeoo6G6GHHHS5;;u#5#55;; d{{cTkk !C$!C!C4!C!C!CDDD &&D  I ry &GG Jz'**HHx J J J>W>>>>??T I J**844444##C(((((  #sE//F>FFc|jSr^r1res rWrhzDynamicResource.canonicalrrVrIc|dsJ|drJt|dksJtjtj||jjz|_||jz|_dSr) r rrr,r.r-r0rGr1rss rWrtzDynamicResource.add_prefixs~  %%%%%??3'''''6{{Q 29V#4#4t}7L#LMM  4?2rVc|j|}|dSd|DS)Nc4i|]\}}|t|SrU) _unquote_path).0keyvalues rW z*DynamicResource._match..s3.8c5]5))rV)r0r&r*items)rbrErs rWrzDynamicResource._matchsX ''-- =4z+DynamicResource.url_for..s$)V)V)V1![^^)V)V)VrVTr)r1 format_mapr?rr)rbrBurls rWrlzDynamicResource.url_forsCo(()V)V )V)V)VWWyc40000rVcf|j d|jzdznd}d||jS)Nrrrz$)r[rF)r[rr1ras rWrzDynamicResource.__repr__sB)-)>sTY%%B5<<=   rV)rPrQrRr,r.r%r)r(rSrrcr~rhrtr rrr|rDrwrrlrrrs@rWr6r6s "*; < *>""""" d###$V,,  s* rVc|jSr^)rNres rWrhzPrefixResource.canonicalrrVc|dsJ|drJt|dksJ||jz|_|jdz|_dSr)r rrrNrOrss rWrtzPrefixResource.add_prefix sg  %%%%%??3'''''6{{Q ,  s* rVcdSrrUrss rWr|zPrefixResource.raw_matchsurV) rPrQrRrSrrcr~rhrtrr|rrs@rWrLrLs=A+++s+Xc]+d++++++3X++++++rVrLcBeZdZdZddddddddededeed eed ed e d e d e ddffdZ ddde ee fd ee de fdZededefdZdefdZdeddfdZdedefdZdefdZdeefdZdedefdZde defdZdefdZ xZ!S) r9rGNFr[r chunk_size show_indexfollow_symlinksappend_versionrIrHr[rrVrWrXrYr\ct|| t|}t|dr9tt jt|}|}| stdn-#ttf$r} td|d| d} ~ wwxYw||_ ||_ ||_||_||_||_t%d|j||t%d|j||d |_dS) NrZ~zNot a directoryzNo directory exists at 'rGETrHEAD)r\r])rrcrrSr osrE expanduserrpis_dirrFileNotFoundError _directory _show_index _chunk_size_follow_symlinksr_append_versionr8_handler) rbrIrHr[rrVrWrXrYr/rs rWrczStaticResource.__init__so d+++ QYI9~~((-- E !3!3C NN!C!CDD !))++I##%% 4 !2333 4!:. Q Q QD DDDEE5 P Q#%% /--!t|T." d>    sB!CC2C--C2)rYfilenamec||j}t|trt|}|d}t j|jd}tdkr|| ddz }n||z }|r |j | }|j s||j n#tt f$r|cYSwxYw|rt|d5}|}dddn #1swxYwY||}||j|i}|S|S)NrATrr%%25rb)rfrrrSlstriprrrNr>replacerbjoinpathrpre relative_torrais_fileopenread_get_file_hash with_query VERSION_KEY)rbrhrYrIfilepathf file_byteshs rWrlzStaticResource.url_for@s  !!1N h % % %8}}H??3''iT\4888 & ((e444CC.C   ?33H==EEGG,:((999 12     !! ]]4((*A!"J***************'' 33nnd&6%:;;  s% A CC/.C/D<<EE byte_arrayctj}||tj|}|dS)Nascii)hashlibsha256updatebase64urlsafe_b64encodedigestdecode)r}mb64s rWrvzStaticResource._get_file_hashfsK N   &qxxzz22zz'"""rVc,|j|j|jdS)N)rHrIrJ)rbrNrres rWrwzStaticResource.get_infoms ll   rVrcvd|jvrtdtd|||j|jd<dS)NOPTIONSzOPTIONS route was set alreadyr)rrr8r)rbrs rWset_options_routez StaticResource.set_options_routetsK  $ $>?? ?"/ wT5I# # #  YrVrmcdK|jj}|j}t|j}||js||jkrdtfS||vrd|fSdt|t|jdzdi}t||j||fS)Nrhr) rrrrrr rOrNr:rr2)rbrmrErrrs rWrpzStaticResource.resolve{s'dl++t}-- $$,2F2F;   ( (( ( -S5F5F5J5L5L0M"N"NO #J V0DEEWWrVc*t|jSr^rres rWrzStaticResource.__len__rrVcNt|jSr^)rrvaluesres rWrzStaticResource.__iter__sDL''))***rVcK|jd} t|}|jrt|j|}|js||jnm#ttf$r}t|d}~wt$rt$r3}|j j|t|d}~wwxYw|rV|jrA t%||dS#t($rtwxYwt|rt-||jSt)Nrhz text/html)r content_type)rV) match_inforanchorr)rbrqrprerrrrar+ ExceptionrKlogger exceptionr`rcr._directory_as_htmlPermissionErrorrsr,rd)rbrmrrhryr/s rWrgzStaticResource._handles$Z0 ,G}}H &$oo%//99AACCH( 6$$T_555-. , , ,..e +     , , , K  ( ( / / /..e + , ??    &*#!44X>>['***'//)*$oo%      T5EFFF F s0A1BC-B##C-:.C((C- #D00E ryc|sJ||j}d|}d|d}g}|}t |D]}||j}|jdz|z} |r |jd} n|j} |d | | d d |} d |d| d } d |d } d | d| d}|S)Nz Index of /z

z

rAz#
  • {name}
  • )rIr[z
      {}
     z z z z z z ) r`rrrbas_posixiterdirsortedrNr[rrjoin)rbryrelative_path_to_dirindex_ofh1 index_list dir_index_filerel_pathfile_url file_nameulbodyhead_strhtmls rWrz!StaticResource._directory_as_htmls     '33DODDMMOO6 466 #H # # # $$&& I&&  E((99BBDDH|c)H4H||~~ '$z,,, !J   5<< y=      % %dii &;&; < <-"-----@X@@@5(55d555 rVcr|j d|jzdznd}d||j|jS)Nrrz/ {directory!r}>)r[rErH)r[rrNrbras rWrzStaticResource.__repr__sG(, (=sTY$$2@GGDLDOH   rV)"rPrQrRrxrSr%rrrrrcrrrrl staticmethodbytesrvrDrwr$rr-rrprrr7rr/rgrrrrs@rWr9r9s@K#37$ %$$ $ $ $ $ sm $ !0 $ $ $ $ $  $ $ $ $ $ $ T*. $$$T "$! $ $$$$L#5#S###\#  )      T     XW X X X X X!!!!!+(=1++++$W$$$$$L"4"C""""H #        rVr9ceZdZdeddddffd Zdeddffd Zded edefd Zdefd Z d e de fd Z de fdZdeefdZdefdZxZS)PrefixedSubAppResourcerIrKr;r\Nct|||_|jD]}||dSr^)rrc_approuter resourcesrt)rbrIrKrrs rWrczPrefixedSubAppResource.__init__s`      ,,.. ( (H    ' ' ' ' ( (rVct||jjD]}||dSr^)rrtrrr)rbrIrrs rWrtz!PrefixedSubAppResource.add_prefixs\ 6""" (2244 ( (H    ' ' ' ' ( (rVrrjc td)Nz3.url_for() is not supported by sub-application rootrrs rWrlzPrefixedSubAppResource.url_forsSTTTrVc |j|jdS)N)rKrI)rrNres rWrwzPrefixedSubAppResource.get_infosyDL999rVrmcK|jj|js%|jj|jkrdt fS|jj|d{V}| |jt|j tr |j j }nt }||fSr^)rIrr rOrNrrrrprrrOr*rrbrmrmethodss rWrpzPrefixedSubAppResource.resolves $// >>  $ 44; 9+33G<<<<<<<< 49%%% j/1E F F  /?GGeeG7""rVcXt|jjSr^)rrrrJres rWrzPrefixedSubAppResource.__len__s!49#**,,---rVcXt|jjSr^)rrrrJres rWrzPrefixedSubAppResource.__iter__s!DI$++--...rVcDd|j|jS)Nz, {app!r}>)rIrK)rrNrres rWrzPrefixedSubAppResource.__repr__s)=DDz$Domain.validation../s3NN4<))!,,NNNNNNrVzDomain not validP:) rrS TypeErrorrstriprrrraw_hostallr$port)rbrLrIs` rWrzDomain.validation%s&#&& 2011 1s##))++ 5566 6 f__344 4)f$%%|'''NNNNcl6H6H6M6MNNNNN 1/00 0 8r>>< ,+++++rVrmcK|jtj}|sdS||Sr)rrrHOST match_domain)rbrmhosts rWrz Domain.match5s>""49-- 5  &&&rVrc<||jkSr^)rrrbrs rWrzDomain.match_domain;szz||t|++rVcd|jiS)NrLrres rWrwzDomain.get_info>s$,''rV)rPrQrRr,r.rrSrcr~rhrr-rrrrDrwrrs@rWrrsbj566G/s/t//////3X,,,,,, '7't'''' ,,,,,,()((((((((rVrcteZdZejdZdeddffd ZedefdZ dede fdZ xZ S) MaskDomainz(?!-)[a-z\d\*-]{1,63}(? {app!r}>)rK)rrres rWrzMatchedSubAppResource.__repr__ks6==$)=LLLrV)rPrQrRrMrcr~rSrhrDrwr-rrprrUrVrWrrRs1 $ $3$$$X$6)6666 #W # # # # #M#MMMMMMrVrc eZdZdZdddedeeeefde de e ddf fd Z defd Z ede efd Zd ed edefdZdefdZxZS)r8zA route with resourceNrrrrrr\cRt||||dS)Nr)rrc)rbrrrrrs rWrczResourceRoute.__init__rs9  GNX      rVcPd|j|j|jS)Nz3 {handler!r})rrr)rrrrres rWrzResourceRoute.__repr__~s-DKK;L   rVc,|jdS|jjSr^)rr[res rWr[zResourceRoute.names > !4~""rVrrjc8|jJ|jj|i|S)r)rrlrs rWrlzResourceRoute.url_fors*~)))%t~%t6v666rVcF|jJ|jSr^)rrwres rWrwzResourceRoute.get_infos$~)))~&&(((rV)rPrQrR__doc__rSrr$rr r3rrrcrr~r[rrlrDrwrrs@rWr8r8os 48      w\ 223  #  !0           #    #hsm###X# 7S7C7C7777 ))))))))))rVr8ceZdZdeddffd ZdededefdZede efdZ de fd Z d e defd Zedefd Zedefd ZdefdZxZS)rrOr\Ncxttj|j||_dSr^)rrcrrrg_http_exceptionrs rWrczSystemRoute.__init__s/  555-rVrrjc td)Nz).url_for() is not allowed for SystemRouterrs rWrlzSystemRoute.url_forsFGGGrVcdSr^rUres rWr[zSystemRoute.namerrVcd|jiS)NrOrres rWrwzSystemRoute.get_infos $"677rVrmcK|jr^rros rWrgzSystemRoute._handles""rVc|jjSr^)rrres rWrzSystemRoute.status#**rVc|jjSr^)rrres rWrzSystemRoute.reasonrrVc.d|S)Nz*re)rres rWrzSystemRoute.__repr__s;BBBMMMrV)rPrQrRr'rcrSrrlr~rr[rDrwr-r/rgrrrrrrs@rWrrsU.}.......HSHCHCHHHHhsmX8)8888#W#####++++X+++++X+N#NNNNNNNNrVrc@eZdZdefdZdeedeffdZddZdS)r:r\cK|jjtjvr|t ||jjd}|||d{V}|Sr^)rmrrMETH_ALL_raise_allowed_methodsgetattrr)rbrresps rW_iterz View._iters < dm 3 3  ' ' ) ) ):A $,%++--t; ;  >  ' ' ) ) )VXX~~~~~~ rVNcN|Sr^)r __await__res rWr zView.__await__szz||%%'''rVchfdtjD}tjj|)NcXh|]&}t|$|'SrU)hasattrr)r;rrbs rW z.View._raise_allowed_methods..s0PPPwtQWWYY7O7OP1PPPrV)rrr*rmr)rbrs` rWrzView._raise_allowed_methodss3PPPPdmPPP"4<#6HHHrVr}) rPrQrRr/rr rr rrUrVrWr:r:sp ^    (9S$%>?((((IIIIIIrVr:c^eZdZdeeddfdZdefdZdeefdZ de de fdZ dS) ResourcesViewrr\Nc||_dSr^ _resources)rbrs rWrczResourcesView.__init__s #rVc*t|jSr^)rrres rWrzResourcesView.__len__s4?###rVc#$K|jEd{VdSr^rres rWrzResourcesView.__iter__s&?"""""""""rVrc||jvSr^rrbrs rW __contains__zResourcesView.__contains__s4?**rV) rPrQrRrr3rcrrrrobjectrrrUrVrWrrs$$'7"8$T$$$$$$$$$#(#34####+V+++++++rVrcZeZdZdeefdZdefdZdee fdZ de de fdZ dS) RoutesViewrc\g|_|D]!}|D]}|j|"dSr^)rr)rbrrrs rWrczRoutesView.__init__sO,. ! + +H! + + ##E**** + + +rVr\c*t|jSr^rres rWrzRoutesView.__len__rrVc#$K|jEd{VdSr^rres rWrzRoutesView.__iter__s&<rVrc||jvSr^rrs rWrzRoutesView.__contains__s $$rVN)rPrQrRrr3rcrrrr7rrrrrUrVrWrrs+$'7"8++++ !!!!! (=1    %&%T%%%%%%rVrceZdZejdZd1fd ZdedefdZ de e fdZ de fdZd edefd Zd e defd Zdefd ZdefdZdee effdZd eddfdZddde d ee defdZdddde de deee e!fd ee dee"de#f dZ$dddddddde de%d ee dee"de deded edefd!Z&de ded"e'de#fd#Z(de ded"e'de#fd$Z)dd%d&de ded ee d'ed"e'de#f d(Z*de ded"e'de#fd)Z+de ded"e'de#fd*Z,de ded"e'de#fd+Z-de ded"e'de#fd,Z.de de e!d"e'de#fd-Z/d1fd. Z0d/e1e2de3e#fd0Z4xZ5S)2r1z[.:-]r\Ncdtg|_i|_dSr^)rrcr_named_resourcesrs rWrczUrlDispatcher.__init__s. 24=?rVrmc K|j}t}|jD]+}||d{V\}}||cS||z},|rt t ||St t Sr^)rrrrprr*r+)rbrmrrrralloweds rWrpzUrlDispatcher.resolves$'EE + +H(0(8(8(A(A"A"A"A"A"A"A J%!!!!7*  2!"6v"O"OPP P!,..11 1rVc*t|jSr^)rr"res rWrzUrlDispatcher.__iter__sD)***rVc*t|jSr^)rr"res rWrzUrlDispatcher.__len__s4()))rVrc||jvSr^r"rs rWrzUrlDispatcher.__contains__s4000rVr[c|j|Sr^r(ras rW __getitem__zUrlDispatcher.__getitem__s$T**rVc*t|jSr^)rrres rWrzUrlDispatcher.resources sT_---rVc*t|jSr^)rrres rWrJzUrlDispatcher.routes s$/***rVc*t|jSr^)rr"res rWnamed_resourceszUrlDispatcher.named_resourcess 5666rVc6t|ts Jd||jrtd|j}||j|}|D]_}tj|rtd|d| s"td |`||j vr.td ||j |||j |<|j |dS)Nz4Instance of AbstractResource class is required, got z.Cannot register a resource into frozen router.zIncorrect 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})rr3frozenrr[ NAME_SPLIT_REr$keyword iskeywordr isidentifierrr"rr)rbrr[rBr2s rWregister_resourcezUrlDispatcher.register_resourcesp &   O O N( N N O O O ; QOPP P}  &,,T22E  $T**$)))) ((**$128 t,,, ..4fT4;PQU;V.W.W+3D !$ ' x(((((rVrZrEc|r$|dstd|jrB|jd}|j|kr*||rt t |Sd|vsSd|vsOt|s5tt||}| ||St||}| ||S)NrAz)path should be started with / or be emptyr"r#rZ) r rrr[r|rr4r@searchr5r+r5r6)rbrEr[rs rW add_resourcezUrlDispatcher.add_resource3s  J,, JHII I ? 0r*H}$$););D)A)A$Hh///t sd{{hood.C.C{$]4%8%8tDDDH  " "8 , , ,O"4d333 x(((rV)r[rrrrc`|||}||||S)NrZr)r9r)rbrrErr[rrs rWrzUrlDispatcher.add_routeCs7$$T$55!!&'.!QQQrVrTFrUrIrVrWrXrYc |dsJ|dr |dd}t||||||||} || | S)z^Add static files view. prefix - url prefix path - folder with files rANr7rU)r rr9r5) rbrIrEr[rrVrWrXrYrs rW add_staticzUrlDispatcher.add_staticOs$  %%%%% ??3   !CRC[F!  )!!+)     x(((rVrjc 6|jtj||fi|S)z(Shortcut for add_route with method HEAD.)rr METH_HEADrbrErrjs rWadd_headzUrlDispatcher.add_headq"t~dndGFFvFFFrVc 6|jtj||fi|S)z+Shortcut for add_route with method OPTIONS.)rr METH_OPTIONSr?s rW add_optionszUrlDispatcher.add_optionsus#t~d/wII&IIIrVT)r[ allow_headrEc |||}|r|jtj|fi||jtj|fi|S)zShortcut for add_route with method GET. If allow_head is true, another route is added allowing head requests to the same endpoint. rZ)r9rrr>METH_GET)rbrErr[rErjrs rWadd_getzUrlDispatcher.add_getysc$$T$55  B H t~w A A& A A A!x!$-CCFCCCrVc 6|jtj||fi|S)z(Shortcut for add_route with method POST.)rr METH_POSTr?s rWadd_postzUrlDispatcher.add_postrArVc 6|jtj||fi|S)z'Shortcut for add_route with method PUT.)rrMETH_PUTr?s rWadd_putzUrlDispatcher.add_puts"t~dmT7EEfEEErVc 6|jtj||fi|S)z)Shortcut for add_route with method PATCH.)rr METH_PATCHr?s rW add_patchzUrlDispatcher.add_patchs"t~dotWGGGGGrVc 6|jtj||fi|S)z*Shortcut for add_route with method DELETE.)rr METH_DELETEr?s rW add_deletezUrlDispatcher.add_deletes#t~d.gHHHHHrVc 6|jtj||fi|S)z?Shortcut for add_route with ANY methods for a class-based view.)rrrr?s rWadd_viewzUrlDispatcher.add_views$t~dmT7EEfEEErVct|jD]}|dSr^)rryr)rbrrs rWryzUrlDispatcher.freezesE   H OO      rVrJcdg}|D]*}|||+|S)zAppend routes to route table. Parameter should be a sequence of RouteDef objects. Returns a list of registered AbstractRoute instances. )extendregister)rbrJregistered_routes route_defs rW add_routeszUrlDispatcher.add_routessD ? ?I  $ $Y%7%7%=%= > > > >  rVr})6rPrQrRr,r.r1rcr-r2rprrSrrrrrrr3r*rrrrJrr.r5rr4r9rr$rr rr7rr%r<rr@rDrHrKrNrQrTrVryrr0rr]rrs@rWr1r1sBJx((M@@@@@@ 2W21D2222 +(3-++++*****1V11111++(8++++.=....+ ++++7.>)>!?7777)*:)t))))B@Dx},#37 R R R R Rw\ 223 R sm R!0 R  R R R R"#37$ %$      sm  !0          DGSG7GcGmGGGGJJgJJJJJJ# DDDDD sm D  DD DDDD&GSG7GcGmGGGGFCF'FSF]FFFFHcHGHsH}HHHHIsIWII IIIIFF"&|"4F@CF FFFF  !*:!; !]@S ! ! ! ! ! ! ! !rVr1r=cztdkr|dd}tj|djS)NrjrlrmFr)r>rprrrr=s rWrErEs8f c5)) 9% / / / 88rVc8tj|djSr)rrrEr_s rWr:r:s 9% . . . 33rVcXt|}d|vr|dd}|S)Nrlrm)rErp)r=rs rWr+r+s2  F e||s++ MrV)srrrrrr2r^r,r contextlibr functoolsrpathlibrtypesrtypingrrr r r r r rrrrrrrrrrrryarlrr yarl_versionrrrrr helpersr!httpr"typedefsr#r$r%r&web_exceptionsr'r(r)r*r+web_fileresponser, web_requestr- web_responser.r/ web_routedefr0__all__web_appr;rSBaseDictdictrmaprr$r>rTr.r?r@r-rBrrrDr3ABCr7r2rrr4r5r6rLr9rrMrrrr8rr:rrr1rEr:r+rUrVrWrwso   %%%%%%"""""",21111111@@@@@@@@@@999999999999+***** 22222222****** $$$$$$CH~HHH',uSS6Hl6H6M6Mbqb6Q-R-R'S'S eE#s(O$SSS&0bj+''gcl#!+ 1!!% !ry~~%*%%%7)Yt_45 /0#c(: ;""""" """"&,/,/,/,/,/uh7,/,/,/^M,M,M,M,M,CGM,M,M,`@B@B@B@B@B($5@B@B@BF      (     L7 Lt L L L L7"7"7"7"7"7"7"7"x&6&6&6&6&6H&6&6&6RI I I I I hI I I X%2E E E E E ^E E E P) ) ) ) ) ^) ) ) X     37   %(%(%(%(%( !%(%(%(P 6 6 6 6 6 6 6 6 MMMMM2MMM:!)!)!)!)!)M!)!)!)HNNNNN-NNN<IIIII<III( + + + + +E8$45yAQ7R + + +%%%%%/=1I%%%"M!M!M!M!M!NGC1A,A$BM!M!M!`9s9s9999 444444rV