;ELC   
;;; Compiled
;;; in Emacs version 30.1
;;; with all optimizations.


#@47 Stop unloading of the Common Lisp extensions.
(byte-code "\300\301!\210\300\302!\210\300\303!\207" [require cl-lib macroexp gv] 2)
(defalias 'cl-unload-function #[0 "\300\301!\302\207" [message "Cannot unload the feature `cl'" t] 3 (#$ . 83)])#@23 

(fn FUN &rest ARGS)
(byte-code "\300\211\203N \211@\301\302\303\304\"!\305#\210\306\211\203= \211@N\2038 \302\303\304\"!N\2048 \307\302\303\304\"!N#\210\210A\202 \210\310\302\303\304\"!\311#\266A\202 \210\312\211\203{ \211@\211:\203d \211A@\262\202j \302\303\304\"!\313\305#\210\314\311#\266A\202P \207" [(float-negative-epsilon float-epsilon least-negative-normalized-float least-positive-normalized-float least-negative-float least-positive-float most-negative-float most-positive-float) defvaralias intern format "cl-%s" nil (saved-value saved-variable-comment) put make-obsolete-variable "27.1" ((get* . cl-get) (random* . cl-random) (rem* . cl-rem) (mod* . cl-mod) (round* . cl-round) (truncate* . cl-truncate) (ceiling* . cl-ceiling) (floor* . cl-floor) (rassoc* . cl-rassoc) (assoc* . cl-assoc) (member* . cl-member) (delete* . cl-delete) (remove* . cl-remove) (defsubst* . cl-defsubst) (sort* . cl-sort) (function* . cl-function) (defmacro* . cl-defmacro) (defun* . cl-defun) (mapcar* . cl-mapcar) remprop getf tailp list-length nreconc revappend concatenate subseq random-state-p make-random-state signum isqrt lcm gcd notevery notany every some mapcon mapl maplist map equalp coerce tree-equal nsublis sublis nsubst-if-not nsubst-if nsubst subst-if-not subst-if subsetp nset-exclusive-or set-exclusive-or nset-difference set-difference nintersection intersection nunion union rassoc-if-not rassoc-if assoc-if-not assoc-if member-if-not member-if merge stable-sort search mismatch count-if-not count-if count position-if-not position-if position find-if-not find-if find nsubstitute-if-not nsubstitute-if nsubstitute substitute-if-not substitute-if substitute delete-duplicates remove-duplicates delete-if-not delete-if remove-if-not remove-if replace fill reduce compiler-macroexpand define-compiler-macro assert check-type typep deftype defstruct callf2 callf letf* letf rotatef shiftf remf psetf (define-setf-method . define-setf-expander) the locally multiple-value-setq multiple-value-bind symbol-macrolet macrolet progv psetq do-all-symbols do-symbols do* do loop return-from return block etypecase typecase ecase case load-time-value eval-when destructuring-bind gentemp pairlis acons subst adjoin copy-list ldiff list* tenth ninth eighth seventh sixth fifth fourth third endp rest second first svref copy-seq evenp oddp minusp plusp floatp-safe declaim proclaim nth-value multiple-value-call multiple-value-apply multiple-value-list values-list values pushnew decf incf) defalias make-obsolete] 9)
(defalias 'cl--wrap-in-nil-block #[385 "\300\301\302\"E\207" [cl-block nil apply] 7 (#$ . 332)])#@20 

(fn &rest SPECS)
(byte-code "\300\301\302\303#\210\300\304\302\303#\207" [advice-add dolist :around cl--wrap-in-nil-block dotimes] 4)
(defalias 'cl--pass-args-to-cl-declare #[128 "\300\301B!\207" [macroexpand cl-declare] 4 (#$ . 2977)])
(advice-add 'declare :after 'cl--pass-args-to-cl-declare)
(defvar cl-closure-vars nil)
(defvar cl--function-convert-cache nil)#@239 Special macro-expander for special cases of (function F).
The two cases that are handled are:
- closure-conversion of lambda expressions for `lexical-let'.
- renaming of F when it's a function defined via `cl-labels' or `labels'.

(fn F)#@10 

(fn F)#@10 

(fn X)
(defalias 'cl--function-convert #[257 "\302\303!\210\211@=\203 A\207\211\242\304=\203\226 \305\306AA\"	\203\207 \307	\"\203\207 \305\310	\"\311	\"\312@;\204= @\242\313=\203L \314\211A\262\242DB\262\202/ \315\316	!@\317\320#\210\321\322\323\324\325\237\"\321\326\321\327\330\304\324A@\"\325\"BBDE\305\331	\"\332\244BBBC\"BBB\207\304A@BB\330DB\207\333!\207" [cl--function-convert-cache cl-closure-vars require cl-macs lambda mapcar #[257 "\301\"\207" [macroexpand-all-environment macroexpand-all] 4 (#$ . 3593)] cl--expr-contains-any cl-gensym cl-pairlis nil interactive quote put last used t list 'lambda '(&rest --cl-rest--) append cl-sublis 'apply 'function function #[257 "\300\301E\207" [list 'quote] 4 (#$ . 3607)] ('--cl-rest--) cl--labels-convert] 20 (#$ . 3350)])#@159 Like `let', but lexically scoped.
The main visible difference is that lambdas inside BODY will create
lexical closures as in Common Lisp.

(fn BINDINGS BODY)
(defalias 'lexical-let '(macro . #[385 "\302\303\"\304\305\302\306\"BB\307\310B	B\"\311!@\312N\204: \313\314\302\315\"\316\302\317\"\320\302\321	\"\"EC\"B\202K \316\302\322\"\323\324\314\302\325\"\"BF)\207" [cl-closure-vars macroexpand-all-environment mapcar #[257 "\211:\204 C\301\302\303@\"!B\211@\304L\210\211@A@@E\207" [cl-closure-vars make-symbol format "--cl-%s--" [bad-lexical-ref]] 6 (#$ . 3607)] macroexpand-all cl-symbol-macrolet #[257 "\211@\300\3018DD\207" [symbol-value 2] 5 (#$ . 3607)] function cl--function-convert last used progn append #[257 "\300\3018D\207" [defvar 2] 4 (#$ . 3607)] let #[257 "\3008A@D\207" [2] 3 (#$ . 3607)] cl-sublis #[257 "\3008\301\3008E\207" [2 quote] 5 (#$ . 3607)] #[257 "\3008\301\302\303@\"DD\207" [2 make-symbol format "--%s--"] 6 (#$ . 3607)] setf apply #[257 "\300\3018DA@D\207" [symbol-value 2] 4 (#$ . 3607)]] 13 (#$ . 4427)]))#@264 Like `let*', but lexically scoped.
The main visible difference is that lambdas inside BODY, and in
successive bindings within BINDINGS, will create lexical closures
as in Common Lisp.  This is similar to the behavior of `let*' in
Common Lisp.

(fn BINDINGS BODY)
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put lexical-let lisp-indent-function 1 put edebug-form-spec let] 5)
(defalias 'lexical-let* '(macro . #[385 "\204 \300B\207\301!\262\203\" \302\211A\262\242CBB\262C\202 @\207" [progn reverse lexical-let] 5 (#$ . 5503)]))#@461 Make temporary overriding function definitions.
This is an analogue of a dynamically scoped `let' that operates on the function
cell of FUNCs rather than their value cell.
If you want the Common-Lisp style of `flet', you should use `cl-flet'.
The FORMs are evaluated with the specified function definitions in place,
then the definitions are undone (the FUNCs go back to their previous
definitions, or lack thereof).

(fn ((FUNC ARGLIST BODY...) ...) FORM...)
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put lexical-let* lisp-indent-function 1 put edebug-form-spec let] 5)
(defalias 'flet '(macro . #[385 "\300\301\302\"BB\207" [letf mapcar #[257 "\211@K\242\302=\204 \211@\236A\203 \303\304!\210\305\306A@\307@AABBED\310 \203H @\311N\2038 \303\312\313@!\"\210\314\301!\203H @\315\316\"B	B\317\320@DDD\207" [macroexpand-all-environment byte-compile-function-environment macro error "Use `labels', not `flet', to rebind macro names" cl-function lambda cl-block macroexp-compiling-p byte-compile "Byte-compiling a redefinition of `%s' will not work - use `labels' instead" symbol-name boundp eval t symbol-function quote] 7 (#$ . 3607)]] 6 (#$ . 6066)]))#@181 Make temporary function bindings.
Like `cl-labels' except that the lexical scoping is handled via `lexical-let'
rather than relying on `lexical-binding'.

(fn BINDINGS &rest BODY)#@29 

(fn &rest CL-LABELS-ARGS)
(byte-code "\300\301\302\303#\304\301\305\306#\210\307\301\310\311#\207" [function-put flet lisp-indent-function 1 put edebug-form-spec cl-flet make-obsolete "use either `cl-flet' or `cl-letf'." "24.3"] 5)
(defalias 'labels '(macro . #[385 "\301\211\211\2037 \211@\302\303\304@\"!\211B\262\305\306ABDB\262\211B\262@\307\310\"BB\262\266A\202 \210\311\312\313BBBB\"\207" [macroexpand-all-environment nil make-symbol format "--cl-%s--" cl-function lambda make-closure #[128 "\211@	=\203 	\300D\207\302\300BB\207" [V0 cl--labels-magic funcall] 4 (#$ . 7443)] macroexpand-all lexical-let setq] 12 (#$ . 7258)]))#@17 

(fn CL-GV DO)#@12 

(fn EXP)
(byte-code "\300\301\302\303#\304\301\305\306#\210\307\301\310\311#\207" [function-put labels lisp-indent-function 1 put edebug-form-spec cl-flet make-obsolete cl-labels "24.3"] 5)
(defalias 'cl--gv-adapt #[514 "@A@\300\211C\203= \301@!\203) \211\211A\262\242\211A\262\242B\242B\240\210\202 \211A\262\242\211A\262\242DB\262\202 \302\303\242\3048\"\305\306\f#\"\"\207" [nil macroexp-copyable-p macroexp-let* cl-sublis 4 make-closure #[257 "\302!\203\n \211\202 \303\304!\305\306\3018@B\300\242B\307\3018\"=\203\" \207\310DC\"\207" [V0 V1 macroexp-copyable-p make-symbol "v" cl-sublis 2 3 macroexp-let*] 6 (#$ . 8128)]] 14 (#$ . 8107)])#@537 Define a `setf' method.
This method shows how to handle `setf's to places of the form
(NAME ARGS...).  The argument forms ARGS are bound according to
ARGLIST, as if NAME were going to be expanded as a macro, then
the BODY forms are executed and must return a list of five elements:
a temporary-variables list, a value-forms list, a store-variables list
(of length one), a store-form, and an access-form.

See `gv-define-expander', and `gv-define-setter' for better and
simpler ways to define setf-methods.

(fn NAME ARGLIST &rest BODY)
(defalias 'define-setf-expander '(macro . #[642 "\300\301@;\205 \302\303D\304\211A\262\242FC\305\306\307\310	B\311\300\nB\312BBEDEC\"B\207" [progn append put quote 'setf-documentation gv-define-expander cl-function lambda do cl--gv-adapt (do)] 14 (#$ . 8814)]))#@984 Define a `setf' method.
This macro is an easy-to-use substitute for `define-setf-expander'
that works well for simple place forms.

In the simple `defsetf' form, `setf's of the form (setf (NAME
ARGS...) VAL) are transformed to function or macro calls of the
form (FUNC ARGS... VAL).  For example:

  (defsetf aref aset)

You can replace this form with `gv-define-simple-setter'.

Alternate form: (defsetf NAME ARGLIST (STORE) BODY...).

Here, the above `setf' call is expanded by binding the argument
forms ARGS according to ARGLIST, binding the value form VAL to
STORE, then executing BODY, which must return a Lisp form that
does the necessary `setf' operation.  Actually, ARGLIST and STORE
may be bound to temporary variables which are introduced
automatically to preserve proper execution order of the arguments.
For example:

  (defsetf nth (n x) (v) \=`(setcar (nthcdr ,n ,x) ,v))

You can replace this form with `gv-define-setter'.

(fn NAME [FUNC | ARGLIST (STORE) BODY...])
(byte-code "\300\301\302\303#\210\304\301\305\306#\300\207" [put define-setf-expander edebug-form-spec (&define name cl-lambda-list cl-declarations-or-string def-body) function-put lisp-indent-function defun] 4)
(defalias 'defsetf '(macro . #[642 "<\203) \211:\203) \300\301\302\303\304D\305\301\306	@\"	ABBD\307BBBEE\207\310@F\207" [gv-define-expander lambda (do &rest args) gv--defsetter quote cl-function append (do args) gv-define-simple-setter] 14 (#$ . 9628)]))#@286 Define a `setf'-like modify macro.
If NAME is called, it combines its PLACE argument with the other
arguments from ARGLIST using FUNC.  For example:

  (define-modify-macro incf (&optional (n 1)) +)

You can replace this macro with `gv-letplace'.

(fn NAME ARGLIST FUNC &optional DOC)
(byte-code "\300\301\302\303#\210\304\301\305\306#\307\310\311\312#\207" [put defsetf edebug-form-spec (&define name [&or [symbolp &optional stringp] [cl-lambda-list (symbolp)]] cl-declarations-or-string def-body) function-put lisp-indent-function defun make-obsolete get-setf-method gv-letplace "24.3"] 5)
(defalias 'define-modify-macro '(macro . #[1027 "\300>\203\n \301\302!\210\303\304!\210\305\306!\307B\310>\203# \311\202$ \312\313\314	D\315\f!BBBB\257\207" [&key error "&key not allowed in define-modify-macro" require cl-macs make-symbol "--cl-place--" cl-defmacro &rest cl-list* list #'cl-callf quote cl--arglist-args] 15 (#$ . 11096)]))#@30 

(fn X &optional Y &rest Z)
(byte-code "\300\301\302\303#\210\304\301\305\306#\307\310\311\312#\210\313\310\311\314#\210\315\316\317\312#\210\320\211\203= \211@\316N\2038 \317N\2048 \300\317\316N#\210\210A\202 \210\321\316\317\314#\210\307\322\323\312#\210\313\322\323\314#\207" [put define-modify-macro edebug-form-spec (&define name cl-lambda-list symbolp &optional stringp) function-put lisp-indent-function defun defalias cl-macroexpand macroexpand nil make-obsolete "24.3" defvaralias cl-macro-environment macroexpand-all-environment (saved-value saved-variable-comment) make-obsolete-variable cl-macroexpand-all macroexpand-all] 8)
(defalias 'cl-not-hash-table #[641 "\300\301\302\206 D\"\207" [signal wrong-type-argument cl-hash-table-p] 7 (#$ . 12046)])
(make-obsolete 'cl-not-hash-table nil "24.3")
(defvar cl-builtin-gethash (symbol-function 'gethash))
(make-obsolete-variable 'cl-builtin-gethash nil "24.3")
(defvar cl-builtin-remhash (symbol-function 'remhash))
(make-obsolete-variable 'cl-builtin-remhash nil "24.3")
(defvar cl-builtin-clrhash (symbol-function 'clrhash))
(make-obsolete-variable 'cl-builtin-clrhash nil "24.3")
(defvar cl-builtin-maphash (symbol-function 'maphash))#@18 

(fn ITEM LIST)
(byte-code "\300\301\302\303#\210\304\305\306\302#\210\307\305\306\303#\210\304\310\311\302#\210\307\310\311\303#\210\304\312\313\302#\210\307\312\313\303#\210\304\314\315\302#\210\307\314\315\303#\210\304\316\317\302#\210\307\316\317\303#\210\304\320\321\302#\210\307\320\321\303#\210\304\322\323\302#\210\307\322\323\303#\210\304\324\325\302#\210\307\324\325\303#\210\304\326\327\302#\210\307\326\327\303#\210\304\330\331\302#\210\307\330\331\303#\210\304\332\333\302#\210\307\332\333\303#\210\304\334\335\302#\210\307\334\335\303#\210\304\336\337\302#\210\307\336\337\303#\210\304\340\341\302#\210\307\340\341\303#\207" [make-obsolete-variable cl-builtin-maphash nil "24.3" defalias cl-map-keymap map-keymap make-obsolete cl-copy-tree copy-tree cl-gethash gethash cl-puthash puthash cl-remhash remhash cl-clrhash clrhash cl-maphash maphash cl-make-hash-table make-hash-table cl-hash-table-p hash-table-p cl-hash-table-count hash-table-count cl-map-keymap-recursively cl--map-keymap-recursively cl-map-intervals cl--map-intervals cl-map-extents cl--map-overlays cl-set-getf cl--set-getf] 4)
(defalias 'cl-maclisp-member #[514 "\211\203 @\232\204 A\202  \207" [] 4 (#$ . 13256)])#@38 

(fn X NAME ACCESSOR PRED-FORM POS)
(make-obsolete 'cl-maclisp-member 'member "24.3")
(defalias 'cl-struct-setf-expander #[1285 "\300\301!\300\302!CCC\303\304\205' \305\306\307\f#\310\311\312#DEC\313N@\314=\203< \315\n	F\202b \316	\317X\203Y \nS\211\262\f\320Y\203_ \321D\262\202F \322\n\nEEC\"BD\257\207" [make-symbol "--cl-x--" "--cl-store--" progn append or cl-subst cl-x error format "%s storing a non-%s" cl-struct-type vector aset setcar 5 0 cdr nthcdr] 19 (#$ . 14463)])
(byte-code "\300\301\302\303#\210\304\305!\210\306\307!\207" [make-obsolete cl-struct-setf-expander nil "24.3" provide cl run-hooks cl-load-hook] 4)
