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/emacs-lisp
Viewing File: /usr/share/emacs/24.3/lisp/emacs-lisp/pcase.elc
;ELC ;;; Compiled by mockbuild@buildfarm01-new.corp.cloudlinux.com on Tue Nov 11 12:52:37 2025 ;;; from file /builddir/build/BUILD/emacs-24.3/lisp/emacs-lisp/pcase.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. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (require 'macroexp) (defconst pcase--memoize (make-hash-table :weakness 'key :test 'eq)) (defconst pcase--dontcare-upats '(t _ pcase--dontcare)) (byte-code "\300\301\302\303#\210\300\304\302\305#\207" [put pcase-UPAT edebug-form-spec (&or symbolp ("or" &rest pcase-UPAT) ("and" &rest pcase-UPAT) ("`" pcase-QPAT) ("guard" form) ("let" pcase-UPAT form) ("pred" &or lambda-expr (functionp &rest form) sexp) sexp) pcase-QPAT (&or ("," pcase-UPAT) (pcase-QPAT . pcase-QPAT) sexp)] 4) #@1645 Perform ML-style pattern matching on EXP. CASES is a list of elements of the form (UPATTERN CODE...). UPatterns can take the following forms: _ matches anything. SELFQUOTING matches itself. This includes keywords, numbers, and strings. SYMBOL matches anything and binds it to SYMBOL. (or UPAT...) matches if any of the patterns matches. (and UPAT...) matches if all the patterns match. `QPAT matches if the QPattern QPAT matches. (pred PRED) matches if PRED applied to the object returns non-nil. (guard BOOLEXP) matches if BOOLEXP evaluates to non-nil. (let UPAT EXP) matches if EXP matches UPAT. If a SYMBOL is used twice in the same pattern (i.e. the pattern is "non-linear"), then the second occurrence is turned into an `eq'uality test. QPatterns can take the following forms: (QPAT1 . QPAT2) matches if QPAT1 matches the car and QPAT2 the cdr. ,UPAT matches if the UPattern UPAT matches. STRING matches if the object is `equal' to STRING. ATOM matches if the object is `eq' to ATOM. QPatterns for vectors are not implemented yet. PRED can take the form FUNCTION in which case it gets called with one argument. (FUN ARG1 .. ARGN) in which case it gets called with an N+1'th argument which is the value being matched. A PRED of the form FUNCTION is equivalent to one of the form (FUNCTION). PRED patterns can refer to variables bound earlier in the pattern. E.g. you can match pairs where the cdr is larger than the car with a pattern like `(,a . ,(pred (< a))) or, with more checks: `(,(and a (pred numberp)) . ,(and (pred numberp) (pred (< a)))) (fn EXP &rest CASES) (defalias 'pcase '(macro . #[385 "\302@\"@\232\203 \211A@)\232\203 \211\211AA)\202:\211\203(\303\304!\210\305\"\306@BB#\210\211\262\207" [pcase--memoize x gethash message "pcase-memoize: equal first branch, yet different" pcase--expand puthash] 10 (#$ . 1041)])) (byte-code "\300\301\302\303#\210\300\301\304\305#\207" [put pcase lisp-indent-function 1 edebug-form-spec (form &rest (pcase-UPAT body))] 4) (defalias 'pcase--let* #[514 "\204\301!\207\302\211@@)!\203\303@C\304A\"\"\207\211A\262@\305\211A@)@\304\"D\306B\"\207" [x macroexp-progn pcase--trivial-upat-p macroexp-let* pcase--let* pcase--expand ((pcase--dontcare nil))] 10 "\n\n(fn BINDINGS BODY)"]) #@188 Like `let*' but where you can use `pcase' patterns for bindings. BODY should be an expression, and BINDINGS should be a list of bindings of the form (UPAT EXP). (fn BINDINGS &rest BODY) (defalias 'pcase-let* '(macro . #[385 "\301\"\211@\232\203\211A\202\302\"\303B#\210\211\262\207" [pcase--memoize gethash pcase--let* puthash] 8 (#$ . 3392)])) (byte-code "\300\301\302\303#\210\300\301\304\305#\207" [put pcase-let* lisp-indent-function 1 edebug-form-spec ((&rest (pcase-UPAT &optional form)) body)] 4) #@195 Like `let' but where you can use `pcase' patterns for bindings. BODY should be a list of expressions, and BINDINGS should be a list of bindings of the form (UPAT EXP). (fn BINDINGS &rest BODY) (defalias 'pcase-let '(macro . #[385 "A\204 \301BB\207\302\302\262\211\203Z\211@\211@>\203*\303\304!ABB\262\202S\305@!\2039\211B\262\202S\303\306\307G\"!\211ABB\262@DB\262\210A\266\202\202\210\310\237\301BBE\207" [pcase--dontcare-upats pcase-let* nil make-symbol "_" pcase--trivial-upat-p format "x%d" let] 9 (#$ . 3918)])) (byte-code "\300\301\302\303#\210\300\301\304\305#\207" [put pcase-let lisp-indent-function 1 edebug-form-spec pcase-let*] 4) (defalias 'pcase-dolist '(macro . #[385 "\300@!\203 \301BB\207\302\303!\301AB\304@DCBBE\207" [pcase--trivial-upat-p dolist make-symbol "x" pcase-let*] 8 "\n\n(fn SPEC &rest BODY)"])) (byte-code "\300\301\302\303#\210\300\301\304\305#\207" [put pcase-dolist lisp-indent-function 1 edebug-form-spec ((pcase-UPAT form) body)] 4) (defalias 'pcase--trivial-upat-p #[257 "\2119\205 \211>?\207" [pcase--dontcare-upats] 3 "\n\n(fn UPAT)"]) (defalias 'pcase--expand #[514 "\300!\203 \211\202\301\302!\303C\303C\304\305\306\307\310\"\311\"\312\313%\303C\314\315\304\316\317\307\310   #\320\"\321\322% \"!\211\203]\211@\211@>\204V\211@\323=\204V\324\325@\"\210A\266\202\202<\210\326@\"\266\205=\203o\211\202v\326DC\"\207" [macroexp-copyable-p make-symbol "val" nil make-byte-code 514 "\211C\301@\236\211\204 \303@\"\301@E\301@B\240\210\211\262\202\205\211@A\211@A\211@\2119\204c\304\305\306\300@G\"!\300\307\310\311\" BBD\300@B\240\210\312\240\210\310\313\"B\241\210\211AA)\240\210\262\314@!\240\210\310\315\316\317\320\321\f!\322\"\323\324%\"\312BB\262\266\205\262\207" vconcat vector [x pcase-codegen make-symbol format "pcase-%d" lambda mapcar car funcall cdr copy-sequence make-byte-code 257 "\211@\300@\236\300\301\300@\"\240\210\211A\207" vconcat vector [delq] 6 "\n\n(fn PA)"] 17 "\n\n(fn CODE VARS)" pcase--u mapcar 257 "\303\300@BB\304\305\306\307\310\301\302#\311\"\312\313%D\207" [match make-byte-code 257 "\302\301@>\204\301\302\301@B\240\210\303\302A!\203\304\202\300\302A\"\207" vconcat vector [pcase--small-branch-p pcase-codegen] 4 "\n\n(fn VARS)"] 10 "\n\n(fn CASE)" pcase--dontcare message "Redundant pcase pattern: %S" macroexp-let*] 18 "\n\n(fn EXP CASES)"]) (defalias 'pcase-codegen #[514 "\300\301\302\"BB\207" [let mapcar #[257 "\211@AD\207" [] 3 "\n\n(fn B)"]] 6 "\n\n(fn CODE VARS)"]) (defalias 'pcase--small-branch-p #[257 "\211G\300U\205*\211@:?\206*\301@\211\203&\211@\211:\203\302\262A\266\202\202\210\211\262\207" [1 t nil] 5 "\n\n(fn CODE)"]) (defalias 'pcase--if #[771 "\211\300=\203\207\300=\203\301 \210\207\302#\207" [:pcase--dontcare debug macroexp-if] 7 "\n\n(fn TEST THEN ELSE)"]) (defalias 'pcase--upat #[257 "\211\242\301=\203\211\211A@)\207\302D\207" [x \, \`] 3 "\n\n(fn QPATTERN)"]) #@320 Expand matcher for rules BRANCHES. Each BRANCH has the form (MATCH CODE . VARS) where CODE is the code generator for that branch. VARS is the set of vars already bound by earlier matches. MATCH is the pattern that needs to be matched, of the form: (match VAR . UPAT) (and MATCH ...) (or MATCH ...) (fn BRANCHES) (defalias 'pcase--u #[257 "\300\301\"\211\262\205\211@\211@A\211@A\302C A$\266\205\207" [delq nil pcase--u1] 11 (#$ . 6934)]) (defalias 'pcase--and #[514 "\211\203\n\300BB\207\207" [and] 5 "\n\n(fn MATCH MATCHES)"]) (defconst pcase-mutually-exclusive-predicates '((symbolp . integerp) (symbolp . numberp) (symbolp . consp) (symbolp . arrayp) (symbolp . stringp) (symbolp . byte-code-function-p) (integerp . consp) (integerp . arrayp) (integerp . stringp) (integerp . byte-code-function-p) (numberp . consp) (numberp . arrayp) (numberp . stringp) (numberp . byte-code-function-p) (consp . arrayp) (consp . stringp) (consp . byte-code-function-p) (arrayp . stringp) (arrayp . byte-code-function-p) (stringp . byte-code-function-p))) (defalias 'pcase--split-match #[771 "\211@\301=\203W\211A@)=\204\211B\207\211\211AA)\211\242\302>\203?\303@\304\305\306\307\310\311 !\312\"\313\314%A\"B#\202V\211AA)!\211@\206MA\206SB\262\207\211@\315>\203\360\316\211@\317=\203k\320\202l\321@\317=\203w\321\202x\320A\211\203\253\211@\303  #\211@=\204\225\211@B\262\211A=\204\243\211AB\262\210A\266\202\202z\210\211>\203\266\211\202\315\204\276\202\315A\204\310@\202\315@\237B>\203\327\202\356\204\337\202\356A\204\351@\202\356@\237BB\207\322\323\"\207" [x match (or and) pcase--split-match mapcar make-byte-code 257 "\301\300BB\207" vconcat vector [match] 4 "\n\n(fn ALT)" (or and) nil or :pcase--fail :pcase--succeed error "Uknown MATCH %s"] 16 "\n\n(fn SYM SPLITTER MATCH)"]) (defalias 'pcase--split-rest #[771 "\300\211\211\203=\211@\211@A\301  #\211@\302=\204$\211@BB\262\211A\302=\2044\211ABB\262\266A\266\202\202\210\237\237B\207" [nil pcase--split-match :pcase--fail] 13 "\n\n(fn SYM SPLITTER REST)"]) (defalias 'pcase--split-consp #[771 "\211\242\302=\203,\211\211A@):\203,\211\211A@)\303\304\305@!BB\304\305A!BBE\306B\207\211\242\302=\2037\306\307B\207\211\242\310=\205[\311\211A@)B \235\204X\211\211A@)\311B \235\205[\306\307B\207" [x pcase-mutually-exclusive-predicates \` and match pcase--upat :pcase--fail nil pred consp] 11 "\n\n(fn SYMA SYMD PAT)"]) (defalias 'pcase--split-equal #[514 "\211\242\301=\203\211\211A@)\232\203\302\303B\207\211\242\301=\203!\303\304B\207\211\242\305=\205K\211\211A@)9\205K\211\211A@)\306N\205K\211\211A@)!\205K\302\304B\207" [x \` :pcase--succeed :pcase--fail nil pred side-effect-free] 4 "\n\n(fn ELEM PAT)"]) (defalias 'pcase--split-member #[514 "\211\242\301=\203\211\211A@)\235\203\302\207\211\242\301=\203\303\302B\207\211\242\304=\205b\211\211A@)9\205b\211\211A@)\305N\205b\211\211A@)\306\211\203Y\211@!\204R\302\262A\266\202\202C\210\262\205b\307\302B\207" [x \` nil :pcase--fail pred side-effect-free t :pcase--succeed] 8 "\n\n(fn ELEMS PAT)"]) (defalias 'pcase--split-pred #[514 "\302C\232\203\303\304B\202\265@\305=\203F\242\305=\203F\211A@)\211A@)B \235\204@\211A@)\211A@)B \235\203F\304\302B\202\265@\305=\205\265\242\306=\205\265\211A@)9\205\265\211A@)9\204|\211A@);\204|\211A@)\247\205\265\211A@)\307N\205\265\310\311\312\313\314\315\316   #\317\"\320\321%D\322\311\323\310EDC\217\205\265\211@@\203\262\302\304B\202\265\304\302B\207" [x pcase-mutually-exclusive-predicates nil :pcase--succeed :pcase--fail pred \` side-effect-free #1=#:err funcall make-byte-code 0 "\302\300\211A@)\301\211A@)!C\240\207" vconcat vector [x] 4 "\n\n(fn)" error #[257 "\300\207" [nil] 2 "\n\n(fn IGNORED)"]] 14 "\n\n(fn UPAT PAT)"]) #@65 Check which of the symbols VARS appear in SEXP. (fn VARS SEXP) (defalias 'pcase--fgrep #[514 "\300:\203+\301\211A\262@\"\211\203'\211@\211>\204 \211B\262A\266\202\202\210\202>\203<>\204<B\262\211\207" [nil pcase--fgrep] 7 (#$ . 10828)]) (defalias 'pcase--self-quoting-p #[257 "\300!\206 \211\247\206 \211;\207" [keywordp] 3 "\n\n(fn UPAT)"]) (defalias 'pcase--mark-used #[257 "\2119\205\n\300\301\302#\207" [put pcase-used t] 5 "\n\n(fn SYM)"]) (put 'pcase--mark-used 'byte-optimizer 'byte-compile-inline-expand) #@192 Return code that runs CODE (with VARS) if MATCHES match. Otherwise, it defers to REST which is a list of branches of the form (ELSE-MATCH ELSE-CODE . ELSE-VARS). (fn MATCHES CODE VARS REST) (defalias 'pcase--u1 #[1028 "C\211@\204 !\202\353\211@@\301=\203\302!\202\353\211@@\303=\203.\304@A$\202\353\211@\211@@)\305=\203N\304\306@\211@A)@A\"$\202\353\211@\211@@)\307=\203o\211@\211@A)\211\211@@)\310=\205s\211@\211A@)\311\211\203\331\211\203\330\211@\211@\310=\203\314\211A@)=\203\314\211\211AA)\211\242\312=\205\272\211\211A@)\250\206\272\211\211A@)9\206\272\211\211A@);\262\203\314\211\211AA)B\262\202\321\211B\262A\266\202\202z\210\204\350\313\314!\210\302!\202jG\315V\203,\304\310\307\237BBB@AB  \204\n \202(\316A\203\307\237B\202@\n@A\"\f\fBB\nB$\202j\304\211A\262@@AB  \204J\313\314!\210 \202i\316A\203X\307 B\202[@\n@A\"\f\fBB\nB$\266\204\202\353\211@\211@@)\310=\203\343\211@\211@A\240\210@\211@A\211@CA\211\317>\203\241\304@\n\n\n$\202\336\211\320=\203\253\321\202\336\211\242\322>\203{\211@\323=\203\307@\2119\205\305\324\325\326#\266\327@\330\331\332\333\334!\335\"\336\337% #\211@A\340@\323=\203\375\211A@)9\203\375\211A@)@D\202g\211A@)\341\342\343\"\"\342\330\331\344\333\334!\345\"\336\346%\"@\347=\203'\202Y@>\203A\350\351!\211\n@DB\262 \240\266\352!\203R\353\354D\n@E\202Y\306\n@C\"\204a\211\202e\355E\266\204\304 @$\302!#\266\203\202\336\356!\203\241@\2119\205\215\324\325\326#\266\357@@\f\f\f&\202\336\2119\203\351@\2119\205\262\324\325\326#\266\211\236\204\316\304@\n@B B\n$\202\336\304\310@\323\360 \236ADF@B\n\n\n$\202\336\211\242\361=\203^\3628\211 \236\211\203\211A\202&\341\342\343\f\"\"\342\330\331\344\333\334!\345\"\336\363%\"\211\203#\364\"\202$\266\202\266\202\365!\2032\211\2025\350\366!\304\310A@BB @B\f\f\f$=\203R\211\202Y\364DC\"\266\203\202\336\211\242\312=\203\212@\2119\205q\324\325\326#\266\357@\211A@)@\f\f\f&\202\336\211\242\307=\203o\211AG\315V\326\203\340A\211\203\337\211@\356!\204\330\211\242\312=\203\325\211\211A@)9\204\330\211\211A@)\250\204\330\311\211\262\204\330\211\211A@);\204\330\311\262A\266\202\202\235\210\2035\342\367A\"\327@\330\331\332\333\334!\370\"\336\337%\f#\211@A@\2119\205 \324\325\326#\266\340\203\371\202\372 @\373DE\304@$\302!#\266\204\202j\304\310@\211A@)BB @B\f\f\306\342\330\331\374\333\334$\375\"\376\377% \211AA)\"\"$\266\202\202\336\211\242\305=\203\233\304\306\342\330\331\201@\333\334 !\201A\"\336\377%A\"@\"\n\n\n$\202\336\211\242\201B=\203\330\304\310@\211A@)BBC\330\331\201C\333\334 !\201D\"\201E\201F%\n\305\n@B  BBC$\202\336\313\201G\"\266\205\202\353\313\201H@@\"\207" [x :pcase--fail pcase--u :pcase--succeed pcase--u1 and append or match nil \` error "Please avoid it" 1 pcase--and (t _) pcase--dontcare :pcase--dontcare (guard pred) pred put pcase-used t pcase--split-rest make-byte-code 257 "\301\300\"\207" vconcat vector [pcase--split-pred] 4 "\n\n(fn PAT)" pcase--if pcase--fgrep mapcar car "\211\300\236AD\207" [] "\n\n(fn VAR)" guard make-symbol "x" functionp funcall function let* pcase--self-quoting-p pcase--q1 eq let 2 "\n\n(fn V)" macroexp-let* macroexp-copyable-p "sym" #[257 "\211:\203\f\211\211A@)\207\207" [x] 2 "\n\n(fn X)"] [pcase--split-member] memq member quote "\304\305\303@BB\300@BB\301\302BB\207" [and match] 5 "\n\n(fn UPAT)" "\301\300@BB\207" [match] not "\301\300!\207" [pcase--u] 3 "\n\n(fn VARS)" "Unknown upattern `%s'" "Incorrect MATCH %s"] 28 (#$ . 11378)]) #@216 Return code that runs CODE if SYM matches QPAT and if MATCHES match. Otherwise, it defers to REST which is a list of branches of the form (OTHER_MATCH OTHER-CODE . OTHER-VARS). (fn SYM QPAT MATCHES CODE VARS REST) (defalias 'pcase--q1 #[1542 "\242\300=\203 \301\302!\207\303!\203\301\304!\207\305!\203\301\306!\207:\203\216\307\310!\307\311!\312\313\314\315\316\317\"\320\"\321\322%#\211@A\323\324\325 @!BB\324\325A!BB BB  $\326\327 D\330\331 \332N\205w \333DDC \332N\205\206 \334DDC\"\"\335!#\207\250\204\2359\204\235;\203\346\312\313\314\336\316\317 !\337\"\340\322%#\211@A\326;\203\303\341\n\nE\202\327\204\317\342\nD\202\327\343\n\344 DE\323   $\335!#\207\301\345\"\207" [\, error "Can't use `,UPATTERN" floatp "Floating point patterns not supported" vectorp "Vector QPatterns not implemented yet" make-symbol "xcar" "xcdr" pcase--split-rest make-byte-code 257 "\302\300\301#\207" vconcat vector [pcase--split-consp] 5 "\n\n(fn PAT)" pcase--u1 match pcase--upat pcase--if consp macroexp-let* append pcase-used car cdr pcase--u "\301\300\"\207" [pcase--split-equal] 4 equal null eq quote "Unknown QPattern %s"] 20 (#$ . 15140)]) (provide 'pcase)