PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /usr/share/emacs/24.3/lisp/url
Viewing File: /usr/share/emacs/24.3/lisp/url/url-dav.elc
;ELC ;;; Compiled by mockbuild@buildfarm01-new.corp.cloudlinux.com on Tue Nov 11 12:50:52 2025 ;;; from file /builddir/build/BUILD/emacs-24.3/lisp/url/url-dav.el ;;; in Emacs version 24.3.1 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301!\210\300\302!\210\300\303!\207" [require xml url-util url-handlers] 2) #@33 List of supported DAV versions. (defvar url-dav-supported-protocols '(1 2) (#$ . 646)) #@73 Return a list of the elements occurring in both of the lists L1 and L2. (defalias 'url-intersection #[(l1 l2) "\204\207\303\n\203'\n@\235\203\n\211A@ B\202\n\211A@\210\202 \237)\207" [l2 result l1 nil] 2 (#$ . 739)]) #@90 Return WebDAV protocol version supported by URL. Returns nil if WebDAV is not supported. (defalias 'url-dav-supported-p #[(url) "\302\303\304 !\305\"\"\207" [url-dav-supported-protocols url url-intersection plist-get url-http-options dav] 5 (#$ . 978)]) #@46 Return the text data from the XML node NODE. (defalias 'url-dav-node-text #[(node) "\302\303\211\211AA*\304#\207" [node x mapconcat #[(txt) ";\203\207\301\207" [txt ""] 1] " "] 5 (#$ . 1239)]) (defconst url-dav-datatype-attribute 'urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/dt) (defalias 'url-dav-process-integer-property #[(node) "\301\302\303!!!\207" [node truncate string-to-number url-dav-node-text] 4]) (defalias 'url-dav-process-number-property #[(node) "\301\302!!\207" [node string-to-number url-dav-node-text] 3]) #@206 List of regular expressions matching ISO 8601 dates. 1st regular expression matches the date. 2nd regular expression matches the time. 3rd regular expression matches the (optional) timezone specification. (defconst url-dav-iso8601-regexp (byte-code "\306\307\310\311\n     \312\313\314R\315P  \260\f \260P\316Q\317P\316P\315PE.\207" [dash colon 4digit 2digit date-fullyear date-month "-?" ":?" "\\([0-9][0-9][0-9][0-9]\\)" "\\([0-9][0-9]\\)" "\\(\\.[0-9]+\\)?" "[-+]\\(" "\\):" "Z" "T" "^" date-mday time-hour time-minute time-second time-secfrac time-numoffset time-offset partial-time full-date full-time date-time] 6) (#$ . 1781)) (defalias 'url-dav-process-date-property #[(node) "\306\307!\210@A@\3108\311\f!\312\211\312\211\312\211 !\312\211\"#\312\211$%\312\211&'\313 #\203\301\314\315\316 \"!$\314\315\310 \"!#\314\315\317 \"!\"\320\225\313\n #\203\301\314\315\316 \"! \314\315\310 \"!\314\315\317 \"!\314\315\321 \"\206\206\322!!\320\225\313 #\203\234\315\316 \"'\323\324\325'\203\250\326\202\251\327#\210 \"#$%&'\257 \204\313\330 !\203\332\331\332\"\202\345\323\324\333\f\211@) $\210.\207" [url-dav-iso8601-regexp date-re time-re tz-re node date-string require parse-time 2 url-dav-node-text nil string-match string-to-number match-string 1 3 0 4 "0" url-debug dav "Parsed iso8601%s date" "tz" "" parse-time-string apply encode-time "Unable to decode date (%S) (%s)" re-start time seconds minute hour fractional-seconds day month year day-of-week dst tz] 10]) (defalias 'url-dav-process-boolean-property #[(node) "\301\302!!\303U?\207" [node string-to-number url-dav-node-text 0] 3]) (defalias 'url-dav-process-uri-property #[(node) "\301\302!!\207" [node url-generic-parse-url url-dav-node-text] 3]) #@45 Find a function to parse the XML node NODE. (defalias 'url-dav-find-parser #[(node) "\211@)\302N\206,\303\304\305\211@)\"!\306 !\204 \307\202*\310\211@)\302 #\210 )\207" [node fn dav-parser intern format "url-dav-process-%s" fboundp url-dav-node-text put] 5 (#$ . 3645)]) (defalias 'url-dav-dispatch-node '(macro . #[(node) "\301\302DE\207" [node funcall url-dav-find-parser] 3])) (defalias 'url-dav-process-DAV:prop #[(node) "\211\211AA*\306\211\211\211\211\204\307\310!\210\203\234@\311\211A@)\236\243\2062\312!\306 \313>\203C\314!\202\211 \315=\203P\316!\202\211 \317>\203]\320!\202\211 \321=\203j\322!\202\211 \323=\203w\324!\202\211 \325=\204\203\326\327\330 #\210\331!!\332\f\211@) #A\211\204\f-\207" [node x handler-func value props node-type nil error "No child nodes in DAV:prop" intern "unknown" (dateTime\.iso8601tz dateTime\.iso8601 dateTime\.tz dateTime\.rfc1123 dateTime date) url-dav-process-date-property int url-dav-process-integer-property (number float) url-dav-process-number-property boolean url-dav-process-boolean-property uri url-dav-process-uri-property unknown url-debug dav "Unknown data type in url-dav-process-prop: %s" url-dav-find-parser plist-put children url-dav-datatype-attribute] 6]) (defalias 'url-dav-process-DAV:supportedlock #[(node) "\211\211AA*\306\211\211\211\203m @;\204f @\211@)\307=\203f\310 @\211\211AA*\236\311 @\211\211AA*\236 \203f\n\203f \211\211AA*@\211@)\n\211\211AA*@\211@)\211 B\fB A\211\204\f,\207" [node x type scope results children nil DAV:lockentry DAV:lockscope DAV:locktype] 5]) (defalias 'url-dav-process-subnode-property #[(node) "\302\303\304\305\211\211AA*\"\"\207" [node x delq nil mapcar car-safe] 7]) (byte-code "\300\301\302\"\210\300\303\304\"\210\300\305\304\"\210\300\306\304\"\210\300\307\302\"\210\300\310\311\"\210\300\312\311\"\210\300\313\314\"\210\300\315\314\"\207" [defalias url-dav-process-DAV:depth url-dav-process-integer-property url-dav-process-DAV:resourcetype url-dav-process-subnode-property url-dav-process-DAV:locktype url-dav-process-DAV:lockscope url-dav-process-DAV:getcontentlength url-dav-process-DAV:getlastmodified url-dav-process-date-property url-dav-process-DAV:creationdate url-dav-process-DAV:iscollection url-dav-process-boolean-property url-dav-process-DAV:ishidden] 3) (defalias 'url-dav-process-DAV:locktoken #[(node) "\302\303\304\305\211\211AA*\"\"\207" [node x delq nil mapcar #[(n) ";\203\207\301!!\207" [n url-dav-find-parser] 2]] 7]) (defalias 'url-dav-process-DAV:owner #[(node) "\302\303\304\305\211\211AA*\"\"\207" [node x delq nil mapcar #[(n) ";\203\207\301!!\207" [n url-dav-find-parser] 2]] 7]) (defalias 'url-dav-process-DAV:activelock #[(node) "\211\211AA*\304\211\203- @<\203& @\211@)\305 @! @!B\nB A\211\204\n*\207" [node x results children nil url-dav-find-parser] 4]) (defalias 'url-dav-process-DAV:lockdiscovery #[(node) "\211\211AA*\304\211\2031 @;\204* @\211@)\305=\203*\306 @! @!\nB A\211\204\n*\207" [node x results children nil DAV:activelock url-dav-find-parser] 3]) (defalias 'url-dav-process-DAV:status #[(node) "\302!\303\304 \"\203\305\306\307 \"!\202\310)\207" [node status url-dav-node-text string-match "\\`[ \n]*HTTP/[0-9.]+ \\([0-9]+\\)" string-to-number match-string 1 500] 4]) (defalias 'url-dav-process-DAV:propstat #[(node) "\211\211AA*\305\211\211\204\306\307!\210\310\311\f\236!\311\f\236!\310\312\f\236!\312\f\236!\313 \312\n#\211+\207" [node x status props children nil error "No child nodes in DAV:propstat" url-dav-find-parser DAV:prop DAV:status plist-put] 5]) (defalias 'url-dav-process-DAV:response #[(node) "\211\211AA*\305\211\211\204\306\307!\210\310\f\236\311\f\236\211\204%\306\312!\210 \204-\306\313!\210\314 ! !\314\n!\n!\211 +B\207" [node x href propstat children nil error "No child nodes in DAV:response" DAV:propstat DAV:href "No href in DAV:response" "No propstat in DAV:response" url-dav-find-parser] 4]) (defalias 'url-dav-process-DAV:multistatus #[(node) "\211\211AA*\304\211\203 \305 @! @!\nB A\211\204\n*\207" [node x results children nil url-dav-find-parser] 3]) #@154 Parse a WebDAV response from BUFFER, interpreting it relative to URL. The buffer must have been retrieved by HTTP or HTTPS and contain an XML document. (defalias 'url-dav-process-response #[(buffer url) "\306\211\n\203>\307\216r\nq\210 b\210\310`d\311#\210\212\312\313\306\314#\203'\315\316!\210\202)\f \203=\317\320 \"\203=\321`d\306\211\322%* @\211@)\323=\203T\324 @! @!\202s\325\326\327#\210\324 @! @!\330\331#)BC*\207" [overall-status tree buffer url-http-end-of-headers url-http-response-status url-http-content-type nil ((kill-buffer buffer)) indent-rigidly -1000 re-search-forward " ?\n" t replace-match "" string-match "\\`\\(text\\|application\\)/xml" xml-parse-region symbol-qnames DAV:multistatus url-dav-find-parser url-debug dav "Got back singleton response for URL(%S)" plist-put DAV:status node url properties] 7 (#$ . 7878)]) #@673 Perform WebDAV operation METHOD on URL. Return the parsed responses. Automatically creates an XML request body if TAG is non-nil. BODY is the XML document fragment to be enclosed by <TAG></TAG>. DEPTH is how deep the request should propagate. Default is 0, meaning it should apply only to URL. A negative number means to use `Infinity' for the depth. Not all WebDAV servers support this depth though. HEADERS is an assoc list of extra headers to send in the request. NAMESPACES is an assoc list of (NAMESPACE . EXPANSION), and these are added to the <TAG> element. The DAV=DAV: namespace is automatically added to this list, so most requests can just pass in nil. (defalias 'url-dav-request #[(url method tag body &optional depth headers namespaces) "\206\306\211\306W\203\307\202\310!\311\312 \"\204 \313 B\314B\315\nBB\f\205F\316\317\320!\321\322\323 \324#\325\326\320!\325\260\n\327\330!\"+\207" [depth namespaces headers url-request-extra-headers method url-request-method 0 "Infinity" int-to-string assoc "DAV" ("DAV" . "DAV:") "Depth" ("Content-type" . "text/xml") "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n" "<" symbol-name " " mapconcat #[(ns) "\301@\302A\303\260\207" [ns "xmlns:" "='" "'"] 5] "\n " ">\n" "</" url-dav-process-response url-retrieve-synchronously tag body url-request-data url] 11 (#$ . 8755)]) #@218 Return properties for URL, up to DEPTH levels deep. Returns an assoc list, where the key is the filename (possibly a full URI), and the value is a standard property list of DAV property names (ie: DAV:resourcetype). (defalias 'url-dav-get-properties #[(url &optional attributes depth namespaces) "\304\305\306 \203\307\310 \311#\202\312\n\313 &\207" [url attributes depth namespaces url-dav-request "PROPFIND" DAV:propfind mapconcat #[(attr) "\301\302!\303Q\207" [attr "<DAV:prop><" symbol-name "/></DAV:prop>"] 3] "\n " " <DAV:allprop/>" nil] 8 (#$ . 10131)]) #@67 Return whether STATUS was the result of a successful DAV request. (defalias 'url-dav-http-success-p '(macro . #[(status) "\301\302\303\304BB\305BB\306BB\207" [status = / or (500) (100) (2)] 5 (#$ . 10708)])) #@333 URL used as contact information when creating locks in DAV. This will be used as the contents of the DAV:owner/DAV:href tag to identify the owner of a LOCK when requesting it. This will be shown to other users when the DAV:lockdiscovery property is requested, so make sure you are comfortable with it leaking to the outside world. (defvar url-dav-lock-identifier (concat "mailto:" user-mail-address) (#$ . 10924)) #@362 Request a lock on URL. If EXCLUSIVE is non-nil, get an exclusive lock. Optional 3rd argument DEPTH says how deep the lock should go, default is 0 (lock only the resource and none of its children). Returns a cons-cell of (SUCCESSFUL-RESULTS . FAILURE-RESULTS). SUCCESSFUL-RESULTS is a list of (URL STATUS locktoken). FAILURE-RESULTS is a list of (URL STATUS). (defalias 'url-dav-lock-resource #[(url exclusive &optional depth) "\203\306\202 \307\310\311\312\313\314 \315\316\260 \317\211\317\211\317\211\320 \321\322\n!\323&\324 !\204>\325 ! \203\203 \211A@\326\f\211A@ \"\327\f\330\"\206Z\331\211\206a\331\332\245\333U\203v \334EB\202> DB\202>.B\207" [exclusive url-dav-lock-identifier body response result child-url "<DAV:exclusive/>" "<DAV:shared/>" " <DAV:lockscope>" "</DAV:lockscope>\n" " <DAV:locktype> <DAV:write/> </DAV:locktype>\n" " <DAV:owner>\n" " <DAV:href>" "</DAV:href>\n" " </DAV:owner>\n" nil url-dav-request "LOCK" DAV:lockinfo (("Timeout" . "Infinite")) vectorp url-generic-parse-url url-expand-file-name plist-get DAV:status 500 100 2 "huh" child-status failures successes url depth] 10 (#$ . 11346)]) #@50 Return an assoc list of all active locks on URL. (defalias 'url-dav-active-locks #[(url &optional depth) "\306\307 #\310\211\211\211\211\311!\204\312!\203\266\211A@\211\211A@\310\313 \314\"\2069\315\316\245\317U\203\246\313 \320\"\211\203\246 \203\246\321 @\236\203\235\321 @\236A\322 @\236A\211\310\211\203\234@\310\211\203\222@B BA\211\204|*A\211\204l, \211A@\210\202I \203\323\f\" B\nB\202\n.\207" [url depth results child-results child-url child url-dav-get-properties (DAV:lockdiscovery) nil vectorp url-generic-parse-url plist-get DAV:status 500 100 2 DAV:lockdiscovery DAV:locktoken DAV:owner url-expand-file-name properties response owners tokens token --dolist-tail-- owner] 7 (#$ . 12540)]) #@101 Release the lock on URL represented by LOCK-TOKEN. Returns t if the lock was successfully released. (defalias 'url-dav-unlock-resource #[(url lock-token) "\306\307\310QBC\311\312\313\f!\312 \203*\314\216r q\210\206#\315\316\245\317U*-\207" [lock-token url-request-extra-headers url-request-method url-request-data url buffer "Lock-Token" "<" ">" "UNLOCK" nil url-retrieve-synchronously ((kill-buffer buffer)) 500 100 2 result url-http-response-status] 4 (#$ . 13327)]) (defalias 'url-dav-file-attributes-mode-string #[(properties) "\306\307\310\"\311\312\"\311\313\"\314\232\315\311\316\">\317\320%\n\2033%\321\322I\210%\323\322I\210%\324\322I\210 \203=%\325\326I\210\f\203S%\327\330I\210%\331\330I\210%\332\330I\210 \203\240 @ A @\211&\333=\203\225 A\211'\334=\203z%\335\336I\210\202\221'\337=\203\212%\340\336I\210\202\221\341\342\343 A#\210)\202\234\341\342\344 @#\210)\202S%.\207" [properties lock readable directory-p executable-p supported-locks make-string 10 45 plist-get DAV:supportedlock http://apache\.org/dav/props/executable "T" DAV:collection DAV:resourcetype t nil 1 114 4 7 0 100 3 120 6 9 DAV:write DAV:shared 5 119 DAV:exclusive 2 url-debug dav "Unrecognized DAV:lockscope (%S)" "Unrecognized DAV:locktype (%S)" modes #1=#:val #2=#:val] 8]) (autoload 'url-http-head-file-attributes "url-http") (defalias 'url-dav-file-attributes #[(url &optional id-format) "\304!\211@A)\211\203E\305\n\306\"\206\307\310\245\311U\203E\312\305\n\313\">\205&\314\315\316\211\317\305\n\320\"\305\n\320\"\305\n\321\"\206:\316\322\n!\317\211\211\257\f\202I\323 \")\207" [url x properties id-format url-dav-get-properties plist-get DAV:status 500 100 2 DAV:collection DAV:resourcetype t 1 0 nil DAV:getlastmodified DAV:getcontentlength url-dav-file-attributes-mode-string url-http-head-file-attributes] 13]) #@99 Save OBJ as URL using WebDAV. URL must be a fully qualified URL. OBJ may be a buffer or a string. (defalias 'url-dav-save-resource #[(url obj &optional content-type lock-token) "\306\211\211\307\310!\203rq\210\311 )\202 ;\203\202 \312\313!\2034\314\315\316QB B\317\206;\320B B\321!\211\203Z\322\216r q\210\206T\323\324\245\325U*\f-\207" [obj url-request-data url-request-method url-request-extra-headers result buffer nil "PUT" bufferp buffer-string error "Invalid object to url-dav-save-resource" "If" "(<" ">)" "Content-type" "application/octet-stream" url-retrieve-synchronously ((kill-buffer buffer)) 500 100 2 lock-token content-type url url-http-response-status] 7 (#$ . 15198)]) #@134 Delete the WebDAV collection URL. If optional second argument RECURSIVE is non-nil, then delete all files in the collection as well. (defalias 'url-dav-delete-directory #[(url &optional recursive lock-token) "\305\211\211\306\n\307\310# \204G\310U\204\311\312\313\314\nE\"\210\315\n\316\305\211\317\f\2050\320\321\f\322QBC&\323\324\"\210+\305\207" [props status url recursive lock-token nil url-dav-get-properties (DAV:getcontenttype) 1 signal file-error "Removing directory" "directory not empty" url-dav-request "DELETE" -1 "If" "(<" ">)" mapc #[(result) "\302A\303\"\211\206 \304\305\245\306U?\205\307\310\311\312@ F\"\207" [result status plist-get DAV:status 500 100 2 signal file-error "Removing directory" "Error removing"] 7]] 10 (#$ . 15924)]) #@24 Delete file named URL. (defalias 'url-dav-delete-file #[(url &optional lock-token) "\305\211\306\n!\307 \211@A)\310\"\311=\203\312\313\314\315\nE\"\210\316\n\317\305\211\320\f\205/\321\322\f\323QBC&\324\325 \"\210*\305\207" [status props url x lock-token nil url-dav-get-properties plist-get DAV:resourcetype DAV:collection signal file-error "Removing old name" "is a collection" url-dav-request "DELETE" -1 "If" "(<" ">)" mapc #[(result) "\302A\303\"\211\206 \304\305\245\306U?\205\307\310\311\312@ F\"\207" [result status plist-get DAV:status 500 100 2 signal file-error "Removing old name" "Error removing"] 7]] 11 (#$ . 16701)]) #@391 Return a list of names of files in URL. There are three optional arguments: If FULL is non-nil, return absolute URLs. Otherwise return names that are relative to the specified URL. If MATCH is non-nil, mention only file names that match the regexp MATCH. If NOSORT is non-nil, the list is not sorted--its order is unpredictable. NOSORT is useful if you plan to sort the result yourself. (defalias 'url-dav-directory-files #[(url &optional full match nosort files-only) "\306\307\310#\311\211\211\312!\211G\310U\203%\313!\204%\314\315\316\317E\"\210 \203\201 \211A@\211\211A@\320 \321\"\322=\203C\204%\323\f \"\204U\324\f!G\311O\325\326\f\"\203a\f\327\330O\203n\325\f\"\203%\f\331\230\204%\f\230\204%\f\nB\202%\203\212\n\202\216\332\n\333\"-\207" [url parsed-url files child-props child-url properties url-dav-get-properties (DAV:resourcetype) 1 nil url-generic-parse-url url-dav-file-directory-p signal file-error "Opening directory" "not a directory" plist-get DAV:resourcetype DAV:collection url-expand-file-name url-unhex-string string-match "/$" 0 -1 "" sort string-lessp files-only full match nosort] 7 (#$ . 17356)]) #@51 Return t if URL names an existing DAV collection. (defalias 'url-dav-file-directory-p #[(url) "\303\304\"\211@A)\305\306\n\307\"\235\205\310)\207" [url x properties url-dav-get-properties (DAV:resourcetype) DAV:collection plist-get DAV:resourcetype t] 5 (#$ . 18531)]) #@59 Create the directory DIR and any nonexistent parent dirs. (defalias 'url-dav-make-directory #[(url &optional parents) "\306\307\306\310 !\306\f\203B\311\216r\fq\210\312=\203\"\313\202A\314=\204A\315=\204A\316=\204A\317=\204A\210* -\207" [url-request-extra-headers url-request-method url-request-data url buffer result nil "MKCOL" url-retrieve-synchronously ((kill-buffer buffer)) 201 t 403 405 409 415 url-http-response-status] 2 (#$ . 18811)]) (defalias 'url-dav-rename-file #[(oldname newname &optional overwrite) "\306 \"\203\306\n\"\204\307\310\311 \nE\"\210\312\211\312\313 !\314\n!\211\203E\203>\247\203E\315\316\317\n\"!\204E\307\320\321\nD\"\210\203N\322 B\323\nB B\324 \325\312\211\203b\326\202c\327 &\330\331\f\"\210-\332\207" [url-handler-regexp oldname newname headers props status string-match signal file-error "Cannot rename between different URL backends" nil url-dav-file-directory-p url-http-file-exists-p yes-or-no-p format "File %s already exists; rename to it anyway? " file-already-exists "File already exists" ("Overwrite" . "T") "Destination" url-dav-request "MOVE" -1 0 mapc #[(result) "\304A\305\"\211\206 \306\307\245\310U?\205\311\312\313\n F\"\207" [result status oldname newname plist-get DAV:status 500 100 2 signal file-error "Renaming"] 7] t directory-p exists-p overwrite] 8]) #@115 Return a list of all completions of file name FILE in URL. These are all file names in URL which begin with FILE. (defalias 'url-dav-file-name-all-completions #[(file url) "\302\303\304 \305Q#\207" [url file url-dav-directory-files nil "^" ".*"] 6 (#$ . 20192)]) #@231 Complete file name FILE in URL. Returns the longest string common to all file names in URL that start with FILE. If there is only one and FILE matches it exactly, returns t. Returns nil if URL contains no name starting with FILE. (defalias 'url-dav-file-name-completion #[(file url) "\306 \"\307\211\204\307\202\210 G\310U\203! @\230\203!\311\202\210\312 \313\"G\311\307\211\203\201 @GW\203\201\314 @\315TOP\307 \307\211\203m@\316 \"\204d\311A\211\204U*\f\203y\307\211\2023T\2021 @\315O,*\207" [file url result matches failed regexp url-dav-file-name-all-completions nil 1 t sort #[(a b) "G GV\207" [a b] 2] "^" 0 string-match searching n potential --dolist-tail--] 5 (#$ . 20463)]) (defalias 'url-dav-register-handler #[(op) "\301\302\303\304\305\"!#\207" [op put url-file-handlers intern-soft format "url-dav-%s"] 7]) (mapc 'url-dav-register-handler nil) (defalias 'url-dav-vc-registered #[(url) "\301\302\"\205\303\304!\305\"\205\306\307\305#\210\310\207" [url string-match "\\`https?" plist-get url-http-options dav vc-file-setprop vc-backend t] 4]) (provide 'url-dav)