;ELC   
;;; Compiled by nelhage@localhost.localdomain on Tue Dec 13 12:19:22 2005
;;; from file /home/nelhage/Desktop/bbdb-2.34/lisp/bbdb.el
;;; in Emacs version 22.0.50.7
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.
(if (and (boundp 'emacs-version)
	 (< (aref emacs-version (1- (length emacs-version))) ?A)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.29")))
    (error "`bbdb.el' was compiled for Emacs 19.29 or later"))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(byte-code "\301\302!\210\301\303!\210\304B\305\306!\210\307B\310\311!\210\312B\313\314!\207" [current-load-list require timezone cl bbdb-version (lambda (#1=#:defconst-tmp-var) (defconst bbdb-version #1#)) "2.34" bbdb-version-date (lambda (#2=#:defconst-tmp-var) (defconst bbdb-version-date #2#)) "$Date: 2002/01/15 22:53:47 $" bbdb-file-format (lambda (#3=#:defconst-tmp-var) (defconst bbdb-file-format #3#)) 6] 2)
#@146 A cons of two elements: the version read, and the version to write.
nil if the database was read in and is to be written in the current
version.
(defvar bbdb-file-format-migration nil (#$ . 1013))
#@191 Should BBDB allow entries with duplicate names.
This may lead to confusion when doing completion.  If non-nil, it will
prompt the users on how to merge records when duplicates are detected.
(defvar bbdb-no-duplicates-p nil (#$ . 1217))
(byte-code "\300\301!\204 \301\302M\210\303\304M\210\300\305!\204 \305\306M\210\300\307!\204\" \307\310M\210\300\311!\204, \311\312M\210\300\313!\2047 \314\313\315\"\210\300\207" [fboundp unless (macro . #[(bool &rest forms) "\302\303	BBB\207" [bool forms if nil] 4]) when (macro . #[(bool &rest forms) "\302\303	BE\207" [bool forms if progn] 4]) save-current-buffer save-excursion mapc mapcar with-current-buffer (macro . #[(buf &rest body) "\302\303D	BB\207" [buf body save-current-buffer set-buffer] 3]) defvaralias defalias #[(&rest args) "\300\207" [nil] 1]] 3)
(defalias 'string> '(macro . #[(a b) "\302\303\304	E\305	EED\207" [a b not or string= string<] 6]))
(byte-code "\300\301!\204\n \301\302M\210\300\207" [fboundp set-keymap-prompt ignore] 2)
#@72 Submit a bug report, with pertinent information to the BBDB info list.
(defalias 'bbdb-submit-bug-report #[nil "\302\303!\210\304 \210\305\306\307P\310\311\312\313\314\315\"\316\"\317C#\320\211\321&\210\322\323!\211\2030 db\210\324c\210\325	!\210)eb\210\326\327!\207" [bbdb-version backtrace require reporter delete-other-windows reporter-submit-bug-report "bbdb-info@lists.sourceforge.net" "BBDB " append (emacs-version bbdb-version-date bbdb-file-format bbdb-no-duplicates-p) sort apropos-internal "^bbdb" #[(symbol) "\301!\207" [symbol user-variable-p] 2] #[(v1 v2) "\302\303\"\302\304	\"\231\207" [v1 v2 format "%s" "%s"] 4] features nil "Please change the Subject header to a concise bug description.\nIn this report, remember to cover the basics, that is, what you expected to\nhappen and what in fact did happen.  Please remove these\ninstructions from your message." get-buffer-create "*Backtrace*" "\n\n" insert-buffer-substring mail-position-on-field "Subject"] 10 (#$ . 2222) nil])
(byte-code "\300\301\302\217\210\303\304!\203 \305\306!\204! \307\310M\210\311\312M\210\313\314M\210\315\316M\210\317\320\300\321\322\323\322\324&\210\325\320\326\327#\210\317\330\300\331\322\320%\210\317\332\300\333\322\320%\210\317\334\300\335\322\320%\210\317\336\300\337\322\334%\210\325\336\326\340#\210\317\341\300\342\322\320%\210\317\343\300\344\322\320%\210\317\345\300\346\322\343%\210\317\347\300\350\322\320%\210\317\351\300\352\322\347%\210\325\351\326\353#\210\317\354\300\355\322\351%\210\325\354\326\356#\210\317\357\300\360\322\351%\210\325\357\326\361#\210\317\362\300\363\322\347%\210\325\362\326\364#\210\317\365\300\366\322\320%\210\325\365\326\367#\210\317\370\300\371\322\320%\210\317\372\300\373\322\370\374\375&\210\325\372\326\376#\210\317\377\300\201@ \322\370%\210\325\377\326\201A #\210\317\201B \300\201C \322\370\374\201D &\210\325\201B \326\201E #\210\317\201F \300\201G \322\370\374\201H &\210\303\201I !\204'\201J \201K !\2031\325\201F \326\201L #\210\317\201M \300\201N \322\370\374\201O &\210\303\201P !\204T\201J \201Q !\203p\303\201R !\204f\201J \201S !\203p\325\201M \326\201T #\210\315\201U \201V \201W \201X \201Y \201Z \201[ \201\\ \201] &	\207" [nil (byte-code "\300\301!\207" [require custom] 2) ((error)) featurep custom fboundp custom-declare-variable defgroup (macro . #[(&rest args) "\300\207" [nil] 1]) defcustom (macro . #[(var value doc &rest args) "\303	\nF\207" [var value doc defvar] 4]) defface (macro . #[(var value doc &rest args) "\301D\207" [var make-face] 2]) define-widget (macro . #[(&rest args) "\300\207" [nil] 1]) custom-declare-group bbdb "The Insidious Big Brother Database." :group news mail put custom-loads ("bbdb-hooks" "bbdb-com") bbdb-hooks "Hooks run at various times by the BBDB" bbdb-record-display "Variables that affect the display of BBDB records" bbdb-record-creation "Variables that affect the creation of BBDB records" bbdb-noticing-records "Variables that affect the noticing of new authors" ("bbdb-hooks") bbdb-record-use "Variables that affect the use of BBDB records" bbdb-database "Variables that affect the database as a whole" bbdb-saving "Variables that affect saving of the BBDB" bbdb-mua-specific "MUA-specific customizations" bbdb-mua-specific-gnus "Gnus-specific BBDB customizations" ("bbdb-gnus") bbdb-mua-specific-gnus-scoring "Gnus-specific scoring BBDB customizations" ("bbdb-gnus") bbdb-mua-specific-gnus-splitting "Gnus-specific splitting BBDB customizations" ("bbdb-gnus") bbdb-mua-specific-vm "VM-specific BBDB customizations" ("bbdb-vm") bbdb-phone-dialing "Customizations for phone number dialing" ("bbdb-com") bbdb-utilities "Customize BBDB Utilities" bbdb-utilities-finger "Customizations for fingering from within the BBDB" :prefix "bbdb-finger" ("bbdb-com") bbdb-utilities-ftp "Customizations for using FTP sites stored in BBDB records." ("bbdb-ftp") bbdb-utilities-print "Customizations for printing the BBDB." "bbdb-print" ("bbdb-print") bbdb-utilities-supercite "Customizations for using Supercite with the BBDB." "bbdb/sc" supercite locate-library "supercite" ("bbdb-sc") bbdb-utilities-server "Customizations for interfacing with the BBDB from external programs." "bbdb/srv" gnuserv "gnuserv" itimer "itimer" ("bbdb-srv") bbdb-alist-with-header group "My group" :match bbdb-alist-with-header-match :value-to-internal #[(widget value) "\205	 @AD\207" [value] 2] :value-to-external #[(widget value) "\205 \302@C\211A@)\"\207" [value x append] 4]] 10)
(defalias 'bbdb-alist-with-header-match #[(widget value) "\302\303\304	#\"\207" [widget value widget-group-match widget-apply :value-to-internal] 6])
#@55 *The name of the Insidious Big Brother Database file.
(custom-declare-variable 'bbdb-file '"~/.bbdb" '(#$ . -6862) :group 'bbdb-database :type 'file)
#@376 *The remote file to save the database to.
When this is non-nil, it should be a file name.
When BBDB reads `bbdb-file', it checks this file,
 and if it is newer, downloads it.
When BBDB writes `bbdb-file', it also writes this file.

This feature allows one to keep the database in one place while using
different computers, thus reducing the need for merging different files.
(custom-declare-variable 'bbdb-file-remote 'nil '(#$ . -7019) :group 'bbdb-database :type '(choice (const :tag "none" nil) (file :tag "remote file name")))
#@107 *Should the `bbdb-file-remote' file be saved whenever the database is saved?
When nil, you will be asked.
(custom-declare-variable 'bbdb-file-remote-save-always 't '(#$ . -7557) :group 'bbdb-database :type 'boolean)
(byte-code "\300\301!\204 \302\301\303\"\210\300\207" [fboundp primep defalias #[(num) "\304!\305\306	\203  \nW\203  \307\n\"\310U?\nT\202 	+\207" [num prime nu lim sqrt 2 t mod 0] 3]] 3)
#@268 *The size of the bbdb hashtable.
BBDB hashtable is an obarray, so this must be a prime integer.
Set this to a prime number (much) larger than the size of your database
before loading it.
If you change this variable outside `customize',
you should reload `bbdb-file'.
(custom-declare-variable 'bbdb-hashtable-size '1021 '(#$ . -7978) :group 'bbdb-database :type 'integer :set #[(symb val) "\302!\204\f \303\304	#\210	L\210\305\306!\203 \306 \210\207" [val symb primep error "`%s' must be prime, not %s" fboundp bbdb-records] 4])
#@107 *The default area code to use when prompting for a new phone number.
This must be a number, not a string.
(custom-declare-variable 'bbdb-default-area-code 'nil '(#$ . -8518) :group 'bbdb-record-creation :type '(choice (const :tag "none" nil) (integer :tag "Area code" :value "312")))
#@333 *The default domain to append when prompting for a new net address.
If the address entered does not contain `[@%!]', `@bbdb-default-domain'
will be appended to it.

The address will not be altered if bbdb-default-domain remains at its
default value of nil, or if one provides a prefix argument to the
bbdb-insert-new-field command.
(custom-declare-variable 'bbdb-default-domain 'nil '(#$ . -8809) :group 'bbdb-record-creation :type '(choice (const :tag "none" nil) (string :tag "Domain" :value nil)))
#@555 *Set this to nil if you want to enter phone numbers that aren't the same
syntax as those in North America (that is, [[1] nnn] nnn nnnn ['x' n*]).
If this is true, then some error checking is done so that you can't enter
incorrect phone numbers, and all phone numbers are pretty-printed the same
way.  European phone numbers don't have as strict a syntax, however, so
this is a harder problem for them (on which I am punting).

You can have both styles of phone number in your database by providing a
prefix argument to the bbdb-insert-new-field command.
(custom-declare-variable 'bbdb-north-american-phone-numbers-p 't '(#$ . -9317) :group 'bbdb-record-creation :type 'boolean)
#@70 *Whether bbdb mode should be `electric' like `electric-buffer-list'.
(custom-declare-variable 'bbdb-electric-p 'nil '(#$ . -10001) :group 'bbdb-record-display :type 'boolean)
#@155 *This is the value of `case-fold-search' used by `bbdb' and friends.
This variable lets the case-sensitivity of ^S and of the bbdb
commands be different.
(custom-declare-variable 'bbdb-case-fold-search '(default-value 'case-fold-search) '(#$ . -10183) :group 'bbdb :type 'boolean)
#@454 *If this is t, then VM, MH, and RMAIL will automatically create new bbdb
records for people you receive mail from.  If this is a function name
or lambda, then it is called with no arguments to decide whether an
entry should be automatically created.  You can use this to, for example,
not create records for messages which have reached you through a
particular mailing list, or to only create records automatically if
the mail has a particular subject.
(custom-declare-variable 'bbdb/mail-auto-create-p 't '(#$ . -10471) :group 'bbdb-noticing-records :type '(choice (const :tag "Automatically create" t) (const :tag "Prompt before creating" prompt) (const :tag "Do not automatically create" nil) (function :tag "Create with function" bbdb-)))
#@558 *If this is t, then GNUS will automatically create new bbdb
records for people you receive mail from.  If this is a function name
or lambda, then it is called with no arguments to decide whether an
entry should be automatically created.  You can use this to, for
example, create or not create messages which have a particular
subject.  If you want to autocreate messages based on the current
newsgroup, it's probably a better idea to set this variable to t or
nil from your `gnus-select-group-hook' (for Gnus - use
gnus-Select-group-hook for GNUS) instead.
(custom-declare-variable 'bbdb/news-auto-create-p 'nil '(#$ . -11221) :group 'bbdb-noticing-records :type '(choice (const :tag "Automatically create" t) (const :tag "Prompt before creating" prompt) (const :tag "Do not automatically create" nil) (function :tag "Create with function" bbdb-)))
#@433 *If this is true, then BBDB will not prompt you when it notices a
name change, that is, when the "real name" in a message doesn't correspond
to a record already in the database with the same network address.  As in,
"John Smith <jqs@frob.com>" versus "John Q. Smith <jqs@frob.com>".
Normally you will be asked if you want to change it.
If set to a number it is the nuber of seconds to sit for while displaying the
mismatch message.
(custom-declare-variable 'bbdb-quiet-about-name-mismatches 'nil '(#$ . -12077) :group 'bbdb-noticing-records :type '(choice (const :tag "Prompt for name changes" nil) (const :tag "Do not prompt for name changes" t)))
#@123 *If this is true, then when bbdb notices a name change, it will ask you
if you want both names to map to the same record.
(custom-declare-variable 'bbdb-use-alternate-names 't '(#$ . -12733) :group 'bbdb-noticing-records :type '(choice (const :tag "Ask to use alternate names field" t) (const :tag "Use alternate names field without asking" nil)))
#@270 *If this is true, then nothing will attempt to change the bbdb database
implicitly, and you will be prevented from doing it explicitly.  If you have
more than one emacs running at the same time, you might want to arrange for
this to be set to t in all but one of them.
(custom-declare-variable 'bbdb-readonly-p 'nil '(#$ . -13088) :group 'bbdb-database :type '(choice (const :tag "Database is read-only" t) (const :tag "Database is writable" nil)))
#@225 Regexp matching continental zip codes.
Addresses with zip codes matching the regexp will be formated using
`bbdb-format-address-continental'.  The regexp should match zip codes
of the form CH-8052, NL-2300RA, and SE-132 54.
(custom-declare-variable 'bbdb-continental-zip-regexp '"^\\s *[A-Z][A-Z]?\\s *-\\s *[0-9][0-9][0-9]" '(#$ . 13544) :group 'bbdb-record-display :type 'regexp)
#@274 *If this variable is true and the BBDB file is noticed to have changed on
disk, it will be automatically reverted without prompting you first.  Otherwise
you will be asked. (But if the file has changed and you hae made changes in
memory as well, you will always be asked.)
(custom-declare-variable 'bbdb-auto-revert-p 'nil '(#$ . -13933) :group 'bbdb-saving :type '(choice (const :tag "Revert unchanged database without prompting" t) (const :tag "Ask before reverting database")))
#@136 *If this is true, then the BBDB will notice when its auto-save file is
newer than the file is was read from, and will offer to revert.
(custom-declare-variable 'bbdb-notice-auto-save-file 'nil '(#$ . -14421) :group 'bbdb-saving :type '(choice (const :tag "Check auto-save file" t) (const :tag "Do not check auto-save file" nil)))
#@147 If true, display a continuously-updating bbdb window while in VM, MH,
RMAIL, or GNUS.  If 'horiz, stack the window horizontally if there is room.
(custom-declare-variable 'bbdb-use-pop-up 't '(#$ . 14758) :group 'bbdb-record-display :type '(choice (const :tag "Automatic BBDB window, stacked vertically" t) (const :tag "Automatic BBDB window, stacked horizontally" 'horiz) (const :tag "No Automatic BBDB window" nil)))
#@68 *Desired number of lines in a VM/MH/RMAIL/GNUS pop-up bbdb window.
(custom-declare-variable 'bbdb-pop-up-target-lines '5 '(#$ . -15183) :group 'bbdb-record-display :type 'integer)
#@502 *Controls the behaviour of `bbdb-complete-name'.  If nil, completion is
done across the set of all full-names and user-ids in the bbdb-database;
if the symbol 'name, completion is done on names only; if the symbol 'net,
completion is done on network addresses only; if it is 'primary, then
completion is done only across the set of primary network addresses (the
first address in the list of addresses for a given user).  If it is
'primary-or-name, completion is done across primaries and real names.
(custom-declare-variable 'bbdb-completion-type 'nil '(#$ . -15370) :group 'bbdb-record-use :type '(choice (const :tag "Complete across names and net addresses" nil) (const :tag "Complete across names" name) (const :tag "Complete across net addresses" net) (const :tag "Complete across primary net addresses" primary) (const :tag "Complete across names and primary net addresses" primary-or-name)))
#@180 *Whether `bbdb-complete-name' (\<mail-mode-map>\[bbdb-complete-name]
in mail-mode) will update the *BBDB* buffer
to display the record whose email address has just been inserted.
(custom-declare-variable 'bbdb-completion-display-record 't '(#$ . -16276) :group 'bbdb-record-use :type '(choice (const :tag "Update the BBDB buffer" t) (const :tag "Don't update the BBDB buffer" nil)))
#@275 *A regular expression identifying the addresses that belong to you.
If a message from an address matching this is seen, the BBDB record for
the To: line will be shown instead of the one for the From: line.  If
this is nil, it will default to the value of (user-login-name).
(custom-declare-variable 'bbdb-user-mail-names 'nil '(#$ . -16666) :group 'bbdb-noticing-records :type (list 'choice '(const :tag "Use value of (user-login-name)" nil) (list 'regexp :tag "Pattern matching your addresses" (or (user-login-name) "address"))))
#@609 *If this is true, then when the Insidious Big Brother Database notices
a new email address for a person, it will automatically add it to the list
of addresses.  If it is nil, you will be asked whether to add it.  If it is
the symbol 'never (really, if it is any non-t, non-nil value which is no
function name) then new network addresses will never be automatically added
nor the user will be asked.

When set to a function name the function should return one of these values.

See also the variable `bbdb-new-nets-always-primary' for control of whether
the addresses go at the front of the list or the back.
(custom-declare-variable 'bbdb-always-add-addresses 'nil '(#$ . -17204) :group 'bbdb-noticing-records :type '(choice (const :tag "Automatically add new addresses" t) (const :tag "Ask before adding new addresses" nil) (const :tag "Never add new addresses" never)))
#@367 *If this is true, then when the Insidious Big Brother Database adds a new
address to a record, it will always add it to the front of the list of
addresses, making it the primary address.  If this is nil, you will be asked.
If it is the symbol 'never (really, if it is any non-t, non-nil value) then
new network addresses will always be added at the end of the list.
(custom-declare-variable 'bbdb-new-nets-always-primary 'nil '(#$ . -18083) :group 'bbdb-noticing-records :type '(choice (const :tag "New address automatically made primary" t) (const :tag "Ask before making new address primary" nil) (const :tag "Never make new address primary" never)))
#@119 *Specifies which package should be used to send mail.
Should be 'vm, 'mh, 'mail, or 'message (or nil, meaning guess.)
(custom-declare-variable 'bbdb-send-mail-style 'nil '(#$ . -18743) :group 'bbdb-record-use :type '(choice (const :tag "Use VM to send mail" vm) (const :tag "Use MH-E to send mail" mh) (const :tag "Use send-mail mode to send mail" mail) (const :tag "Use Message to send mail" message) (const :tag "Use Mew to send mail" mew) (const :tag "Use compose-mail to send mail" compose-mail) (const :tag "Guess which package to use" nil)))
#@243 *If t, then certain actions will cause the BBDB to ask you whether
you wish to save the database.  If nil, then the offer to save will never
be made.  If not t and not nil, then any time it would ask you, it will
just save it without asking.
(custom-declare-variable 'bbdb-offer-save 't '(#$ . -19298) :group 'bbdb-saving :type '(choice (const :tag "Offer to save the database" t) (const :tag "Never offer to save the database" nil) (const :tag "Save database without asking" savenoprompt)))
#@508 *Whether caching of the message->bbdb-record association should be used
for the interfaces which support it (VM, MH, and RMAIL).  This can speed
things up a lot.  One implication of this variable being true is that the
`bbdb-notice-hook' will not be called each time a message is selected, but
only the first time.  Likewise, if selecting a message would generate a
question (whether to add an address, change the name, etc) you will only
be asked that question the very first time the message is selected.
(custom-declare-variable 'bbdb-message-caching-enabled 't '(#$ . -19797) :group 'bbdb :type '(choice (const :tag "Enable caching" t) (const :tag "Disable caching" nil)))
#@215 *If this is true, bbdb will suppress all its informational messages and
queries. Be very very certain you want to set this, because it will suppress
prompting to alter record names, assign names to addresses, etc.
(custom-declare-variable 'bbdb-silent-running 'nil '(#$ . -20481) :group 'bbdb :type '(choice (const :tag "Run silently" t) (const :tag "Disable silent running" nil)))
#@59 *Hook or hooks invoked when the *BBDB* buffer is created.
(custom-declare-variable 'bbdb-mode-hook 'nil '(#$ . -20869) :group 'bbdb-hooks :type 'hook)
#@94 *Hook or hooks invoked after the `bbdb-list-buffer' is filled in.
Invoked with no arguments.
(custom-declare-variable 'bbdb-list-hook 'nil '(#$ . -21026) :group 'bbdb-hooks :type 'hook)
#@479 *Hook or hooks invoked each time a new BBDB record is created.  Invoked
with one argument, the new record.  This is called *before* the record is
added to the database.  Note that `bbdb-change-hook' will be called as well.

Hook functions can use the variable `bbdb-update-address-class' to determine
the class of an email address according to `bbdb-get-addresses-headers' and
the variable `bbdb-update-address-header' is set to the header the email
address was extracted from.
(custom-declare-variable 'bbdb-create-hook ''bbdb-creation-date-hook '(#$ . -21219) :group 'bbdb-hooks :type 'hook)
#@261 *Hook or hooks invoked each time a BBDB record is altered.  Invoked with
one argument, the record.  This is called *before* the bbdb-database buffer
is modified.  Note that if a new bbdb record is created, both this hook and
`bbdb-create-hook' will be called.
(custom-declare-variable 'bbdb-change-hook ''bbdb-timestamp-hook '(#$ . -21820) :group 'bbdb-hooks :type 'hook)
#@368 *Hook or hooks invoked each time a BBDB record is altered.  Invoked with
one argument, the record.  This is called *after* the bbdb-database buffer
is modified, so if you want to modify the record each time it is changed,
you should use the `bbdb-change-hook' instead.  Note that if a new bbdb
record is created, both this hook and `bbdb-create-hook' will be called.
(custom-declare-variable 'bbdb-after-change-hook 'nil '(#$ . -22199) :group 'bbdb-hooks :type 'hook)
#@1285 *If this is non-nil, it should be a function of one arg: a network address
string.  Whenever the Insidious Big Brother Database "notices" a message,
the corresponding network address will be passed to this function first, as
a kind of "filter" to do whatever transformations upon it you like before
it is compared against or added to the database.  For example: it is the case
that CS.CMU.EDU is a valid return address for all mail originating at a
machine in the .CS.CMU.EDU domain.  So, if you wanted all such addresses to
be canonically hashed as user@CS.CMU.EDU, instead of as user@host.CS.CMU.EDU,
you might set this variable to a function like this:

 (setq bbdb-canonicalize-net-hook
       '(lambda (addr)
          (cond ((string-match "\\`\\([^@]+@\\).*\\.\\(CS\\.CMU\\.EDU\\)\\'"
                               addr)
                 (concat (substring addr (match-beginning 1) (match-end 1))
                         (substring addr (match-beginning 2) (match-end 2))))
                (t addr))))

You could also use this function to rewrite UUCP-style addresses into domain-
style addresses, or any number of things.

This function will be called repeatedly until it returns a value EQ to the
value passed in.  So multiple rewrite rules might apply to a single address.
(custom-declare-variable 'bbdb-canonicalize-net-hook 'nil '(#$ . -22675) :group 'bbdb-hooks :type 'function)
#@677 *If this is non-nil, redundant network addresses will be ignored.
If a record has an address of the form foo@baz.com, setting this to t
will cause subsequently-noticed addresses like foo@bar.baz.com to be
ignored (since we already have a more general form of that address.)
This is similar in function to one of the possible uses of the variable
`bbdb-canonicalize-net-hook' but is somewhat more automatic.  (This
can't quite be implemented in terms of the canonicalize-net-hook because
it needs access to the database to determine whether an address is
redundant, and the canonicalize-net-hook is purely a textual manipulation
which is performed before any database access.)
(custom-declare-variable 'bbdb-canonicalize-redundant-nets-p 't '(#$ . -24075) :group 'bbdb-noticing-records :type '(choice (const :tag "Ignore redundant addresses" t) (const :tag "Don't ignore redundant addresses" nil)))
#@1209 *Hook or hooks invoked each time a BBDB record is "noticed", that is,
each time it is displayed by the news or mail interfaces.  Invoked with
one argument, the new record.  The record need not have been modified for
this to be called - use `bbdb-change-hook' for that.  You can use this to,
for example, add something to the notes field based on the subject of the
current message.  It is up to your hook to determine whether it is running
in GNUS, VM, MH, or RMAIL, and to act appropriately.

Also note that `bbdb-change-hook' will NOT be called as a result of any
modifications you may make to the record inside this hook.

Hook functions can use the variable `bbdb-update-address-class' to determine
the class of an email address according to `bbdb-get-addresses-headers' and
the variable `bbdb-update-address-header' is set to the header the email
address was extracted from.

Beware that if the variable `bbdb-message-caching-enabled' is true (a good
idea) then when you are using VM, MH, or RMAIL, this hook will be called only
the first time that message is selected.  (The GNUS interface does not use
caching.)  When debugging the value of this hook, it is a good idea to set
caching-enabled to nil.
(custom-declare-variable 'bbdb-notice-hook 'nil '(#$ . -24981) :group 'bbdb-hooks :type 'hook)
#@172 *Hook or hooks invoked (with no arguments) just after the Insidious Big
Brother Database is read in.  Note that this can be called more than once if
the BBDB is reverted.
(custom-declare-variable 'bbdb-after-read-db-hook 'nil '(#$ . -26291) :group 'bbdb-hooks :type 'hook)
#@229 *Hook or hooks invoked when the BBDB code is first loaded.

WARNING:  This hook will be run the first time you traverse the Custom menus
          for the BBDB.  As a result, nothing slow should be added to
          this hook.
(custom-declare-variable 'bbdb-load-hook 'nil '(#$ . -26571) :group 'bbdb-hooks :type 'hook)
#@134 *Hook or hooks invoked (with no arguments) when the Insidious Big Brother
Database initialization function `bbdb-initialize' is run.
(custom-declare-variable 'bbdb-initialize-hook 'nil '(#$ . -26899) :group 'bbdb-hooks :type 'hook)
#@53 Keymap for Insidious Big Brother Database listings.
(defvar bbdb-mode-map nil (#$ . 27137))
#@53 Keymap for Insidious Big Brother Database searching
(defvar bbdb-mode-search-map nil (#$ . 27235))
#@604 Whether to record changed records in variable `bbdb-changed-records'.

If this is false, the BBDB will cease to remember which records are changed
as the change happens.  It will still remember that records have been changed,
so the file will still be saved, but the changed records list, and the `!!'
in the *BBDB* buffer modeline that it depends on, will no longer be updated.

You should bind this variable, not set it; the `!!' is a useful user-
interface feature, and should only be suppressed when changes need to be
automatically made to BBDB records which the user will not care directly
about.
(defvar bbdb-suppress-changed-records-recording nil (#$ . 27341))
(byte-code "\301B\302\301!\204 \303\301\304\"\210\305B\302\305!\204 \303\305\304\"\210\306B\302\306!\204- \303\306\304\"\210\307B\302\307!\204< \303\307\304\"\210\310B\302\310!\204K \303\310\304\"\210\311B\302\311!\204Z \303\311\304\"\210\312B\302\312!\204i \303\312\304\"\210\313B\302\313!\204x \303\313\304\"\210\314B\302\314!\204\207 \303\314\315\"\210\304\207" [current-load-list bbdb-records default-boundp set-default nil bbdb-changed-records bbdb-end-marker bbdb-hashtable bbdb-propnames bbdb-message-cache bbdb-showing-changed-ones bbdb-modified-p bbdb-debug t] 3)
(defalias 'bbdb-debug '(macro . #[(&rest body) "\301\302\303\304\305BEE\207" [body and bbdb-debug let ((debug-on-error t)) progn] 6]))
(byte-code "\301B\302\301!\204 \303\301\304\"\210\304\207" [current-load-list bbdb-force-dialog-boxes default-boundp set-default nil] 3)
(defalias 'bbdb-y-or-n-p #[(prompt) "\203  \302\303!\203  \302\304!\203 \305\306 !\204 \304\306 !\210\303\202! \307	!\310\311!\210\207" [bbdb-force-dialog-boxes prompt fboundp yes-or-no-p-dialog-box raise-frame frame-visible-p selected-frame y-or-n-p message " "] 3])
(defalias 'bbdb-yes-or-no-p #[(prompt) "\203 \302\303!\203 \303\202 \304	!\305\306!\210\207" [bbdb-force-dialog-boxes prompt fboundp yes-or-no-p-dialog-box yes-or-no-p message " "] 3])
#@68 Like `invoke-hooks', but invokes the given hook with one argument.
(defalias 'bbdb-invoke-hook #[(hook arg) "\302!\205, J\211\205, :\203) @\303=\204) \205, @	!\210A\211\202 	!\207" [hook arg boundp lambda] 3 (#$ . 29345)])
#@130 If HOOK is nil, return nil.  If it is t, return t.  Otherwise,
return the value of funcalling it with the rest of the arguments.
(defalias 'bbdb-invoke-hook-for-value #[(hook &rest args) "\302=\203 \302\207\303=\203 \303\207\304!\203 \305	\"\207\207" [hook args nil t functionp apply] 3 (#$ . 29586)])
#@301 Make two functions, one for each slot.  The functions are:
        CONC-NAME + SLOT     and   CONC-NAME + `set-' + SLOT
The first one is to be used to read the element named in SLOT, and the
second is used to set it.  Also make a constant
        CONC-NAME + `length'
that holds the number of slots.
(defalias 'bbdb-defstruct '(macro . #[(conc-name &rest slots) "\306!\307\310	G	\203F \f\311\306	@!P!\311\312\306	@!Q!\313\314\315\316\317FF\313\320\315\321\317\322\257F*D\244	AT\202 \f\323\311\324P!\nEC\244\325\f+B\207" [conc-name slots L i body setname symbol-name nil 0 intern "set-" defmacro (vector) list 'aref vector (vector value) 'aset value defconst "length" progn readname] 10 (#$ . 29903)]))
(defalias 'bbdb-record-firstname '(macro . #[(vector) "\301\302E\207" [vector aref 0] 3]))
(defalias 'bbdb-record-set-firstname '(macro . #[(vector value) "\302\303	F\207" [vector value aset 0] 4]))
(defalias 'bbdb-record-lastname '(macro . #[(vector) "\301\302E\207" [vector aref 1] 3]))
(defalias 'bbdb-record-set-lastname '(macro . #[(vector value) "\302\303	F\207" [vector value aset 1] 4]))
(defalias 'bbdb-record-aka '(macro . #[(vector) "\301\302E\207" [vector aref 2] 3]))
(defalias 'bbdb-record-set-aka '(macro . #[(vector value) "\302\303	F\207" [vector value aset 2] 4]))
(defalias 'bbdb-record-company '(macro . #[(vector) "\301\302E\207" [vector aref 3] 3]))
(defalias 'bbdb-record-set-company '(macro . #[(vector value) "\302\303	F\207" [vector value aset 3] 4]))
(defalias 'bbdb-record-phones '(macro . #[(vector) "\301\302E\207" [vector aref 4] 3]))
(defalias 'bbdb-record-set-phones '(macro . #[(vector value) "\302\303	F\207" [vector value aset 4] 4]))
(defalias 'bbdb-record-addresses '(macro . #[(vector) "\301\302E\207" [vector aref 5] 3]))
(defalias 'bbdb-record-set-addresses '(macro . #[(vector value) "\302\303	F\207" [vector value aset 5] 4]))
(defalias 'bbdb-record-net '(macro . #[(vector) "\301\302E\207" [vector aref 6] 3]))
(defalias 'bbdb-record-set-net '(macro . #[(vector value) "\302\303	F\207" [vector value aset 6] 4]))
(defalias 'bbdb-record-raw-notes '(macro . #[(vector) "\301\302E\207" [vector aref 7] 3]))
(defalias 'bbdb-record-set-raw-notes '(macro . #[(vector value) "\302\303	F\207" [vector value aset 7] 4]))
(defalias 'bbdb-record-cache '(macro . #[(vector) "\301\302E\207" [vector aref 8] 3]))
(defalias 'bbdb-record-set-cache '(macro . #[(vector value) "\302\303	F\207" [vector value aset 8] 4]))
(byte-code "\301B\302\303!\210\304\305\306\307#\210\304\310\306\311#\207" [current-load-list bbdb-record-length (lambda (#1=#:defconst-tmp-var) (defconst bbdb-record-length #1#)) 9 put company field-separator "; " notes "\n"] 4)
(defalias 'bbdb-phone-location '(macro . #[(vector) "\301\302E\207" [vector aref 0] 3]))
(defalias 'bbdb-phone-set-location '(macro . #[(vector value) "\302\303	F\207" [vector value aset 0] 4]))
(defalias 'bbdb-phone-area '(macro . #[(vector) "\301\302E\207" [vector aref 1] 3]))
(defalias 'bbdb-phone-set-area '(macro . #[(vector value) "\302\303	F\207" [vector value aset 1] 4]))
(defalias 'bbdb-phone-exchange '(macro . #[(vector) "\301\302E\207" [vector aref 2] 3]))
(defalias 'bbdb-phone-set-exchange '(macro . #[(vector value) "\302\303	F\207" [vector value aset 2] 4]))
(defalias 'bbdb-phone-suffix '(macro . #[(vector) "\301\302E\207" [vector aref 3] 3]))
(defalias 'bbdb-phone-set-suffix '(macro . #[(vector value) "\302\303	F\207" [vector value aset 3] 4]))
(defalias 'bbdb-phone-extension '(macro . #[(vector) "\301\302E\207" [vector aref 4] 3]))
(defalias 'bbdb-phone-set-extension '(macro . #[(vector value) "\302\303	F\207" [vector value aset 4] 4]))
(byte-code "\301B\302\303!\207" [current-load-list bbdb-phone-length (lambda (#1=#:defconst-tmp-var) (defconst bbdb-phone-length #1#)) 5] 2)
(defalias 'bbdb-address-location '(macro . #[(vector) "\301\302E\207" [vector aref 0] 3]))
(defalias 'bbdb-address-set-location '(macro . #[(vector value) "\302\303	F\207" [vector value aset 0] 4]))
(defalias 'bbdb-address-streets '(macro . #[(vector) "\301\302E\207" [vector aref 1] 3]))
(defalias 'bbdb-address-set-streets '(macro . #[(vector value) "\302\303	F\207" [vector value aset 1] 4]))
(defalias 'bbdb-address-city '(macro . #[(vector) "\301\302E\207" [vector aref 2] 3]))
(defalias 'bbdb-address-set-city '(macro . #[(vector value) "\302\303	F\207" [vector value aset 2] 4]))
(defalias 'bbdb-address-state '(macro . #[(vector) "\301\302E\207" [vector aref 3] 3]))
(defalias 'bbdb-address-set-state '(macro . #[(vector value) "\302\303	F\207" [vector value aset 3] 4]))
(defalias 'bbdb-address-zip '(macro . #[(vector) "\301\302E\207" [vector aref 4] 3]))
(defalias 'bbdb-address-set-zip '(macro . #[(vector value) "\302\303	F\207" [vector value aset 4] 4]))
(defalias 'bbdb-address-country '(macro . #[(vector) "\301\302E\207" [vector aref 5] 3]))
(defalias 'bbdb-address-set-country '(macro . #[(vector value) "\302\303	F\207" [vector value aset 5] 4]))
(byte-code "\301B\302\303!\207" [current-load-list bbdb-address-length (lambda (#1=#:defconst-tmp-var) (defconst bbdb-address-length #1#)) 6] 2)
(defalias 'bbdb-cache-namecache '(macro . #[(vector) "\301\302E\207" [vector aref 0] 3]))
(defalias 'bbdb-cache-set-namecache '(macro . #[(vector value) "\302\303	F\207" [vector value aset 0] 4]))
(defalias 'bbdb-cache-sortkey '(macro . #[(vector) "\301\302E\207" [vector aref 1] 3]))
(defalias 'bbdb-cache-set-sortkey '(macro . #[(vector value) "\302\303	F\207" [vector value aset 1] 4]))
(defalias 'bbdb-cache-marker '(macro . #[(vector) "\301\302E\207" [vector aref 2] 3]))
(defalias 'bbdb-cache-set-marker '(macro . #[(vector value) "\302\303	F\207" [vector value aset 2] 4]))
(defalias 'bbdb-cache-deleted-p '(macro . #[(vector) "\301\302E\207" [vector aref 3] 3]))
(defalias 'bbdb-cache-set-deleted-p '(macro . #[(vector value) "\302\303	F\207" [vector value aset 3] 4]))
(byte-code "\301B\302\303!\207" [current-load-list bbdb-cache-length (lambda (#1=#:defconst-tmp-var) (defconst bbdb-cache-length #1#)) 4] 2)
(defalias 'bbdb-record-name-1 #[(record) "\303H\304\304H\305H\211G\304V\203% 	G\304V\203! \n\306	Q\202& \n\202& 	*I\207" [record lname fname 8 0 1 " "] 6])
(put 'bbdb-record-name-1 'byte-optimizer 'byte-compile-inline-expand)
(defalias 'bbdb-record-name #[(record) "\303H\304H\2063 \211\303H\304\304H\305H\211G\304V\203/ 	G\304V\203+ \n\306	Q\2020 \n\2020 	*I)\207" [record lname fname 8 0 1 " "] 7])
(defalias 'bbdb-record-sortkey #[(record) "\301H\302H\206 \301H\302\302H\303H\304HQ\227I\207" [record 8 1 0 3] 6])
(defalias 'bbdb-record-marker '(macro . #[(record) "\301\302DD\207" [record bbdb-cache-marker bbdb-record-cache] 3]))
(defalias 'bbdb-record-deleted-p '(macro . #[(record) "\301\302DD\207" [record bbdb-cache-deleted-p bbdb-record-cache] 3]))
(defalias 'bbdb-record-set-deleted-p '(macro . #[(record val) "\302\303D	E\207" [record val bbdb-cache-set-deleted-p bbdb-record-cache] 3]))
(defalias 'bbdb-record-set-namecache '(macro . #[(record newval) "\302\303D	E\207" [record newval bbdb-cache-set-namecache bbdb-record-cache] 3]))
(defalias 'bbdb-record-set-sortkey '(macro . #[(record newval) "\302\303D	E\207" [record newval bbdb-cache-set-sortkey bbdb-record-cache] 3]))
(defalias 'bbdb-record-set-marker '(macro . #[(record newval) "\302\303D	E\207" [record newval bbdb-cache-set-marker bbdb-record-cache] 3]))
(defalias 'bbdb-record-notes #[(record) "\301H:\203 \302\301H\236A\207\301H\207" [record 7 notes] 3])
(defalias 'bbdb-record-getprop #[(record property) "\302>\203 \303\304\"\210\305=\203 	\306H\207	\307H:\203# 	\307H\236A\207\310=\2053 	\307H;\2053 	\307H\207" [property record (name address addresses phone phones net aka AKA) error "bbdb: cannot access the %s field this way" company 3 7 notes] 3])
#@122 Get the N-th element (or all if nil) of the notes FIELD of the REC.
If the note is absent, returns a zero length string.
(defalias 'bbdb-get-field #[(rec field &optional nn) "\304	\"\206 \305\203 \306\n\307\"8\202 \n)\207" [rec field note nn bbdb-record-getprop "" split-string " ,;	\n\f"] 4 (#$ . 37770)])
(defalias 'bbdb-record-putprop #[(record property newval) "\304>\203 \305\306\"\210\307=\203 	\310	\310\nII\210\202\227 \311=\2031 	\312H:\2041 	\312\nI\210\202v 	\312H<\204B 	\312\311	\312HBCI\210	\312H\236\211\203d \n\203W \n\241\210\202u 	\312\313	\312H\"I\210\202u \n\203u 	\312\314	\312H\nBC\"I\210)	\312H:\203\227 	\312HA\204\227 	\312H@@\311=\203\227 	\312	\312H@AI\210\315	\307=\"\210\n\207" [property record newval old (name address addresses phone phones net aka AKA) error "bbdb: cannot annotate the %s field this way" company 3 notes 7 delq append bbdb-change-record] 7])
(defalias 'bbdb-record-set-notes #[(record newval) "\302H:\203 \303\304	#\207\302	I\210\305\306\"\207" [record newval 7 bbdb-record-putprop notes bbdb-change-record nil] 4])
(defalias 'bbdb-phone-string #[(phone) "G\301U\203 \302H\207\302H;\203 \303\304!\210\302H\305U\204' \306\307\302H\"\202( \310\301H\305U\204< \306\311\301H\312H#\202= \313\314H\203T \314H\305U\204T \306\315\314H\"\202U \316Q\207" [phone 2 1 error "doubleplus ungood: euronumbers unwork" 0 format "(%03d) " "" "%03d-%04d" 3 "" 4 " x%d" ""] 6])
(byte-code "\300\301\302\"\300\207" [defalias bbdb-address-zip-string bbdb-address-zip] 3)
1
(defalias 'bbdb-record-lessp '(macro . #[(record1 record2) "\302\303D\303	DE\207" [record1 record2 string< bbdb-record-sortkey] 4]))
(defalias 'bbdb-subint '(macro . #[(string match-number) "\302\303\304	D\305	DFD\207" [string match-number string-to-int substring match-beginning match-end] 6]))
(byte-code "\300\301!\203 \302\301M\210\202 \303\302\304\"\210\300\207" [fboundp display-error bbdb-display-error defalias #[(msg stream) "\301\302A@\"\207" [msg message "Error: %s"] 3]] 3)
(defalias 'bbdb-error-retry '(macro . #[(form) "\301\302\303\304\305\306\307\310E\311FEE\207" [form catch '--bbdb-error-retry-- while 't condition-case --c-- throw '--bbdb-error-retry-- (error (ding) (let ((cursor-in-echo-area t)) (bbdb-display-error --c-- nil) (sit-for 2)))] 9]))
#@55 *Default list of labels for Address and Phone fields.
(custom-declare-variable 'bbdb-default-label-list ''("Home" "Office" "Mobile" "Other") '(#$ . -40089) :group 'bbdb-record-creation :type '(repeat string))
#@34 *List of labels for Phone field.
(custom-declare-variable 'bbdb-phones-label-list 'bbdb-default-label-list '(#$ . -40304) :group 'bbdb-record-creation :type '(repeat string))
#@36 *List of labels for Address field.
(custom-declare-variable 'bbdb-addresses-label-list 'bbdb-default-label-list '(#$ . -40485) :group 'bbdb-record-creation :type '(repeat string))
#@55 Figure out a completion list for the specified FIELD.
(defalias 'bbdb-label-completion-list #[(field) "\302\303\304\305\"!!\203 \306\303\304\307\"!!\207	\207" [field bbdb-default-label-list boundp intern format "bbdb-%s-label-list" eval "bbdb-%s-label-list"] 5 (#$ . 40671)])
#@57 Figure out a default from the completion list for FIELD
(defalias 'bbdb-label-completion-default #[(field) "\301\302\303\304\"!!\203 \305\302\303\306\"!!\207\307!@\207" [field boundp intern format "bbdb-default-%s-label" eval "bbdb-default-%s-label" bbdb-label-completion-list] 5 (#$ . 40956)])
#@55 Figure out a completion list for the specified FIELD.
(defalias 'bbdb-data-completion-list #[(field) "\302\303\304\305\"!!\203 \306\303\304\307\"!!\207	\207" [field bbdb-default-label-list boundp intern format "bbdb-%s-data-list" eval "bbdb-%s-data-list"] 5 (#$ . 41261)])
#@57 Figure out a default from the completion list for FIELD
(defalias 'bbdb-data-completion-default #[(field) "\301\302\303\304\"!!\203 \305\302\303\306\"!!\207\307!@\207" [field boundp intern format "bbdb-default-%s-data" eval "bbdb-default-%s-data" bbdb-label-completion-list] 5 (#$ . 41543)])
(byte-code "\301B\302\301!\204 \303\301\304\"\210\304\207" [current-load-list bbdb-buffer default-boundp set-default nil] 3)
(defalias 'bbdb-buffer #[nil "\203\f \303!\203\f \207	\203 \304	\n\"\203 \305	\n\306\211$\210\307\n\310\"\211\207" [bbdb-buffer bbdb-file-remote bbdb-file buffer-live-p file-newer-than-file-p copy-file t find-file-noselect nowarn] 5])
(defalias 'bbdb-with-db-buffer '(macro . #[(&rest body) "\302\303\304\300!\203 \203 \305\306\307\310\311	BBDEC\202 	BB\207" [bbdb-debug body with-current-buffer (bbdb-buffer) boundp let ((w (and bbdb-debug (get-buffer-window (buffer-name (get-buffer bbdb-file)))))) save-excursion save-window-excursion (and w (select-window w))] 8]))
#@80 Lose leading and trailing whitespace.  Also remove all properties
from string.
(defalias 'bbdb-string-trim #[(string) "\301\302\"\203 \303\225\304O\301\305\"\203 \303\211\224O\306\303G\304$\210\207" [string string-match "\\`[ 	\n]+" 0 nil "[ 	\n]+\\'" set-text-properties] 5 (#$ . 42553)])
(put 'bbdb-string-trim 'byte-optimizer 'byte-compile-inline-expand)
#@58 Reads a string, trimming whitespace and text properties.
(defalias 'bbdb-read-string #[(prompt &optional default completions) "\203 \304	\305\211\n\306B%\2029 \307	\n\"\310\311\"\203\" \306\225\305O\310\312\"\203/ \306\211\224O\313\306G\305$\210)\310\311\"\203G \306\225\305O\310\312\"\203T \306\211\224O\313\306G\305$\210)\207" [completions prompt default string completing-read nil 0 read-string string-match "\\`[ 	\n]+" "[ 	\n]+\\'" set-text-properties] 7 (#$ . 42928)])
#@133 The format for the timestamp to be used in the creation-date and
timestamp fields.  See the documentation for `format-time-string'.
(custom-declare-variable 'bbdb-time-display-format '"%d %b %Y" '(#$ . 43433) :group 'bbdb :type 'string)
#@193 Convert a date from the BBDB internal format to the format
determined by FORMAT (or `bbdb-time-display-format' if FORMAT not
present).  Returns a string containing the date in the new format.
(defalias 'bbdb-time-convert #[(date &optional format) "\305\306\"\307\n\206 \310\311\211\211\312	\211AA)@!\312	\211A@)!\312	@!&\")\207" [date parts format bbdb-time-display-format x bbdb-split "-" format-time-string encode-time 0 string-to-int] 11 (#$ . 43677)])
(byte-code "\300\301\302\"\300\207" [defalias bbdb-format-record-timestamp bbdb-time-convert] 3)
1
(byte-code "\300\301\302\"\300\207" [defalias bbdb-format-record-creation-date bbdb-time-convert] 3)
1
#@54 Bind this to t to quiet things down - do not set it!
(defconst bbdb-gag-messages nil (#$ . 44348))
(byte-code "\301B\302\303!\207" [current-load-list bbdb-buffer-name (lambda (#1=#:defconst-tmp-var) (defconst bbdb-buffer-name #1#)) "*BBDB*"] 2)
#@1310 *An alist describing each display layout.
The format of an element is (LAYOUT-NAME OPTION-ALIST).

Currently there are three different layout types, which are `one-line',
`multi-line' and `full-multi-line'.   OPTION-ALIST specifies the options
for the layout.  Valid options are:

                           ------- Availability --------
    Format                  one-line        multi-line
--------------------------------------------------------
 (toggle . BOOL)                 +               +
 (order . FIELD-LIST)            +               +
 (omit . FIELD-LIST)             +               +
 (name-end . INTEGER)            +               -
 (indention . INTEGER)           -               +

- toggle: controls if this layout is included when toggeling the display
  layout
- order: defines a user specific order for the fields, while t is a place
  holder for all remaining fields
- omit: is a list of fields which should not be displayed or t to exclude all
  fields except those listed in the order option
- name-end: sets the column where the name should end in one-line layout
- indention: sets the level of indetion for multi-line display.

Additionally there are two layouts derived from multi-line, which are
full-multi-line and pop-up-multi-line and supporting the same layout
options.
(custom-declare-variable 'bbdb-display-layout-alist ''((one-line (order phones mail-alias net notes) (name-end . 24) (toggle . t)) (multi-line (indention . 14) (toggle . t)) (pop-up-multi-line (indention . 14))) '(#$ . -44603) :group 'bbdb :type `(repeat (cons :tag "Layout Definition" (choice :tag "Layout type" (const one-line) (const multi-line) (const full-multi-line) (symbol)) (set :tag "Properties" (cons :tag "Order" (const :tag "List of fields to order by" order) (repeat (choice (const phone) (const address) (const net) (const AKA) (const notes) (symbol :tag "other") (const :tag "Remaining fields" t)))) (choice :tag "Omit" :value (omit) (cons :tag "List of fields to omit" (const :tag "Fields not to display" omit) (repeat (choice (const phone) (const address) (const net) (const AKA) (const notes) (symbol :tag "other")))) (const :tag "Exclude all fields except those listed in the order property" t)) (cons :tag "Indentation" :value (indention . 14) (const :tag "Level of indentation for multi-line layout" indention) (number :tag "Column")) (cons :tag "End of name field" :value (name-end . 24) (const :tag "The column where the name should end in a one-line layout" name-end) (number :tag "Column")) (cons :tag "Toggle" (const :tag "The layout is included when toggling display layout" toggle) boolean)))))
#@30 *The default display layout.
(custom-declare-variable 'bbdb-display-layout 'nil '(#$ . -47242) :group 'bbdb :type '(choice (const one-line) (const multi-line) (const full-multi-line) (symbol)))
#@67 *The default display layout pop-up BBDB buffers, i.e. mail, news.
(custom-declare-variable 'bbdb-pop-up-display-layout 'nil '(#$ . -47442) :group 'bbdb :type '(choice (const one-line) (const multi-line) (const full-multi-line) (symbol)))
(defalias 'bbdb-display-layout-get-option #[(layout option) "<\203	 \202 \305	\"\306\211\205 \305\f\"\211\205 \nA*\207" [layout bbdb-display-layout-alist option-value layout-spec option assoc nil] 4])
#@623 *Display BBDB records in full or in brief.
Set this to t to make the `bbdb-display-records' commands default to
displaying one line per record instead of a full listing.  Set this to a
list of some of the symbols '(address phone net notes) to select those
fields to be left out of the listing (you can't leave out the name field).

This is the default state for `bbdb' and friends.  You can have a
different default for when the BBDB buffer is automatically updated by the
mail and news interfaces by setting the variable `bbdb-pop-up-elided-display'.
If that variable is unbound, this variable will be consulted instead.
(custom-declare-variable 'bbdb-elided-display 'nil '(#$ . -47898) :group 'bbdb-record-display :type '(choice (const :tag "Display one line per record" t) (const :tag "Display records in their entirety" nil) (sexp :tag "Display only specific fields" :value (address phone net notes))))
#@639 *Set this to t if to make the pop-up BBDB buffer default to displaying
one line per record instead of a full listing.  Set this to a list of some
of the symbols '(address phone net notes) to select those fields to be left
out of the listing (you can't leave out the name field).

The default state for Meta-x bbdb and friends is controlled by the variable
`bbdb-elided-display'; this variable (`bbdb-pop-up-elided-display') is the
default for when the BBDB buffer is automatically updated by the mail and
news interfaces.  If `bbdb-pop-up-elided-display' is unbound, then
`bbdb-elided-display' will be consulted instead by mail and news.
(defvar bbdb-pop-up-elided-display nil (#$ . -48812))
bbdb-pop-up-elided-display
(defalias 'bbdb-elided-display-sanity-setup #[nil "\2039 \306=\203 \307\310\311!\210<\2037 \312\313\314\312\"\211\2032 \314\315\n\"\2042 \n\315B\nAB\241\210)\310\316!\210\313\f\205~ \f\306=\203I \307\310\317!\210\f<\203{ \320\313\314\320\"\211\203n \314\315\n\"\204n \n\321\315\fB\322D\nA\"\241\210)\323\314\307\"\"\310\324!\210\313\211\207" [bbdb-elided-display bbdb-display-layout l bbdb-display-layout-alist bbdb-pop-up-elided-display bbdb-pop-up-display-layout t one-line bbdb-warn "Use the variable `bbdb-display-layout' instead of `bbdb-elided-display'!" multi-line nil assoc omit "Use variable `bbdb-display-layout' and `bbdb-display-layout-alist' instead of `bbdb-elided-display'!" "Use the variable `bbdb-pop-up-display-layout' instead of `bbdb-pop-up-elided-display'!" pop-up-multi-line append (toggle . t) delete "Use variable `bbdb-pop-up-display-layout' and `bbdb-display-layout-alist' instead of `bbdb-pop-up-elided-display'!"] 4 nil nil])
#@719 Alist of address identifying and address formatting functions.
The key is an identifying function which accepts an address.  The
associated value is a formatting function which inserts the formatted
address in the current buffer.  If the identifying function returns
non-nil, the formatting function is called.  When nil is used as the
car, then the associated formatting function will always be called.
Therefore you should always have (nil . bbdb-format-address-default) as
the last element in the alist.

All functions should take two arguments, the address and an indentation.
The indentation argument may be optional.

This alist is used in `bbdb-format-address'.

See also `bbdb-address-print-formatting-alist'.
(custom-declare-variable 'bbdb-address-formatting-alist ''((bbdb-address-is-continental . bbdb-format-address-continental) (nil . bbdb-format-address-default)) '(#$ . 50512) :group 'bbdb-record-display :type '(repeat (cons function function)))
#@255 Return non-nil if the address ADDR is a continental address.
This is done by comparing the zip code to `bbdb-continental-zip-regexp'.

This is a possible identifying function for
`bbdb-address-formatting-alist' and
`bbdb-address-print-formatting-alist'.
(defalias 'bbdb-address-is-continental #[(addr) "\302	\303H\"\207" [bbdb-continental-zip-regexp addr string-match 4] 4 (#$ . 51481)])
#@144 Insert street subfields of address ADDR in current buffer.
This may be used by formatting functions listed in
`bbdb-address-formatting-alist'.
(defalias 'bbdb-format-streets #[(addr indent) "\301\302\303H\"\207" [addr mapc #[(str) "j\210	\302\261\207" [indent str "\n"] 2] 1] 4 (#$ . 51877)])
#@355 Insert formated continental address ADDR in current buffer.
This format is used in western Europe, for example.

This function is a possible formatting function for
`bbdb-address-formatting-alist'.

The result looks like this:
       location: street
                 street
                 ...
                 zip city, state
                 country
(defalias 'bbdb-format-address-continental #[(addr &optional indent) "\206 \306\307\310\"\311\\\307	\n\312H\"c\210\313\n\"\210\n\314H\n\311H\n\315H\211G\312V\204= G\312V\204= \fG\312V\203t j\210\211G\312V\203S G\312V\203S \316\202T \317G\312V\204c G\312V\203n \fG\312V\203n \320\202o \321\f\322\261\210+\n\323H\211G\312U?\205\212 j\210\324\261+\207" [indent fmt addr z s c 14 format " %%%ds: " 3 0 bbdb-format-streets 2 4 " " "" ", " "" "\n" 5 "\n" str] 7 (#$ . 52180)])
#@355 Insert formated address ADDR in current buffer.
This is the default format; it is used in the US, for example.

This function is a possible formatting function for
`bbdb-address-formatting-alist'.

The result looks like this:
       location: street
                 street
                 ...
                 city, state  zip
                 country
(defalias 'bbdb-format-address-default #[(addr &optional indent) "\206 \306\307\310\"\311\\\307	\n\312H\"c\210\313\n\"\210\n\314H\n\311H\n\315H\211G\312V\204= G\312V\204= \fG\312V\203t j\210\211G\312V\203S \fG\312V\203S \316\202T \317\fG\312V\204c \fG\312V\203n G\312V\203n \320\202o \321\322\261\210+\n\323H\211G\312U?\205\212 j\210\324\261+\207" [indent fmt addr z s c 14 format " %%%ds: " 3 0 bbdb-format-streets 2 4 ", " "" "  " "" "\n" 5 "\n" str] 7 (#$ . 53037)])
#@502 Call appropriate formatting function for address ADDR.

If optional second argument PRINTING is non-nil, this uses the alist
`bbdb-address-print-formatting-alist' to determine how the address is to
formatted and inserted into the current buffer. This is used by
`bbdb-print-format-record'.

If second argument PRINTING is nil, this uses the alist
`bbdb-address-formatting-alist' to determine how the address is to
formatted and inserted into the current buffer.  This is used by
`bbdb-format-record'.
(defalias 'bbdb-format-address #[(addr &optional printing indent) "\203 	\202	 \n\211\211@@)\203% \211@@)!\204% A\211\202 \205B \2038 \211@A)!\202B \211@A)\")\207" [printing bbdb-address-print-formatting-alist bbdb-address-formatting-alist alist x addr indent] 4 (#$ . 53892)])
(defalias 'bbdb-format-record-name-company #[(record) "\304!\206 \305\306H`\211c\210\307	`\310\311$\210\n\205* \312c\210`\nc\210\307	`\310\313$+\207" [record start company name bbdb-record-name "???" 3 put-text-property bbdb-field (name) " - " (company)] 6])
#@55 Return a formatted phone number for one-line display.
(defalias 'bbdb-format-record-one-line-phones #[(layout record phone) "`\302\303	\304H\"c\210\305`\306\301	\211\307HE$\210`\302\310	\307H\"c\210\305`\306\301	D$)\207" [start phone format "%s " 1 put-text-property bbdb-field 0 "(%s)"] 8 (#$ . 54963)])
#@55 Return a formatted list of nets for one-line display.
(defalias 'bbdb-format-record-one-line-net #[(layout record net) "`	c\210\302`\303\301	D$)\207" [start net put-text-property bbdb-field] 6 (#$ . 55278)])
(defalias 'bbdb-format-record-layout-one-line #[(layout record field-list) "\306!\210\307	\304\"\206\f \310\311\211\212`\312 \210`)\nZ\313Z\fV\2032 \314\f\\\315\\\n\316\317$\210\320c\210\321c\210\fj\210+\311\211\211\211\211\211'()*+\203+@*\322\323\324*!P!)\325)!\203o \326)D!'\202v \327*\"''\203\n'<\204\206 'C'\322\330\331	*#!('\203`'@\325(!\203\254 (	#\210\202\370 \330\332\"c\210*\333=\203\305 \314`\334\335D$\210\202\370 *\336=\203\330 \314`\334\337D$\210\202\370 *\340>\203\354 \314`\334*D$\210\202\370 \314`\334\341*DD$\210'A\211'\203\220 \342c\210\202\220 \343c\210+A\211+\204N .\344\345!\210\346c\207" [record layout end start name-end value bbdb-format-record-name-company bbdb-display-layout-get-option 40 nil beginning-of-line -1 put-text-property -4 invisible t "..." " " intern "bbdb-record-" symbol-name fboundp eval bbdb-record-getprop format "bbdb-format-record-%s-%s" "%s" addresses bbdb-field address phones phone (name net aka) property ", " "; " backward-delete-char 2 "\n" values formatfun contentfun field field-list] 8])
(defalias 'bbdb-format-record-layout-multi-line #[(layout record field-list) "\306!\210\307c\210\310H\311\n\312\"\206 \313\314\315\"\316\2115	;\203( \301	BC6\205\2606@5`5\317=\203\216 \320H\316\2117\211\203\210 @`\314\f\321H\"\2117\322!\323\261\210\324`\325\326\211\321HE$\210\324\2117G\\\325\326\316E$\210A\211\204J +\316\202\2465\327=\203\346 \330H\316\21187\2119\203\340 9@8`\314\f8\321H\"7\3318\316#\210\324`\325\3328\211\321HE$\210\324\2117G\\\325\3328\316E$\2109A\2119\204\244 +\316\202\2465\333=\203\334H\211\203\314\f\335\"\336\337\340#\341\261\210)\324`\325\342$\210\202\2465\343=\2038\344H\211#\203-\314\f\345\"\336\337#\346#\347\261\210)\324`\325\350$\210\202\246\3515	\"\314\f\352\"G\316\211:;\211<\203\233\314\f5\"c\210`;\353\314\3545\"!:\355:!\203t:<A!c\210\202y<Ac\210\212\214;`S}\210;Tb\210\356\357\316\360#\203\227\361\362\"c\210\202\206*\363c\210\324`\325\364<D$\210,6A\2116\204- \316-\207" [record notes layout indent fmt start bbdb-format-record-name-company "\n" 7 bbdb-display-layout-get-option indention 14 format " %%%ds: " nil phones 4 0 bbdb-phone-string "\n" put-text-property bbdb-field phone addresses 5 bbdb-format-address address net 6 "net" mapconcat identity ", " "\n" (net) aka 2 "AKA" ", " "\n" (aka) assoc "" intern "bbdb-format-record-%s" fboundp search-forward "\n" t make-string 32 "\n" property field field-list loc addr addrs notefun p note] 9])
(byte-code "\300\301\302\"\300\207" [defalias bbdb-format-record-layout-full-multi-line bbdb-format-record-layout-multi-line] 3)
1
(byte-code "\300\301\302\"\300\207" [defalias bbdb-format-record-layout-pop-up-multi-line bbdb-format-record-layout-multi-line] 3)
1
#@241 Insert a formatted version of RECORD into the current buffer.
LAYOUT can be `one-line' for one-line layout and
`multi-line' for multi-line layout.
For compatibility reasons one might alos write t for one-line and nil for
multi-line layout.
(defalias 'bbdb-format-record #[(record &optional layout) "\203 \306\n\307H\310H\203 \311\312!\210)\313=\203 \314\2024 \306=\203' \315\2024 9\2030 \2024 \311\316\"\317\f\"\320\321\"!\320\322\"\"\323\324\n\325H\211#;\203V \326\202[ \327\330#\")\"$\313\211%&\331!!\203s !\n\"!\331\"!\203\201 \"\n\"\"!\203\265 \"\203\222 \306\">\203\265 !<\204\236 \313$\202\265 !\203\265 \332!@$\"$!A\211!\204\243 \"\204\301 $&\202\306\">\204\317 \"&\202\333\"!\"\332\313\327\334$\"\"$\"\203\"@\306=\203\367 \323$&\"&\202\377 \"@&B&\"A\211\"\204\344 \335\336\337\"!%\331%!\203!%\n&#\202%\311\340\".\207" [bbdb-debug debug-on-error record layout bbdb-display-layout-alist layout-spec t 8 3 error "plus ungood: formatting deleted record" nil multi-line one-line "Unknown layout `%s'" assoc bbdb-display-layout-get-option omit order append (phones addresses net aka) 7 (notes) mapcar #[(r) "@\207" [r] 1] functionp delete reverse #[(f) "	>?\205 \207" [f order-list] 2] intern format "bbdb-format-record-layout-%s" "No format function for layout `%s'!" omit-list order-list raw-notes all-fields format-function field-list] 6 (#$ . 58368)])
(defalias 'bbdb-frob-mode-line #[(n) "\304V\203& \305\306\307	\"\203 \310\311	\"\202 \312\313\314\315\316\317 G#D\320\257\202' \321\322\211\207" [n bbdb-buffer-name mode-line-buffer-identification mode-line-modified 0 24 string-match "^\\*\\(.+\\)\\*$" match-string 1 "BBDB" ": " 10 format "%d/%d" bbdb-records (bbdb-showing-changed-ones " !!" "   ") ("- Insidious Big Brother Database v" bbdb-version " " mode-line-modified "-") (bbdb-readonly-p "--%%%%-" (bbdb-modified-p "--**-" "-----"))] 8])
(defalias 'bbdb-display-records-1 #[(records &optional append layout) "\203 @:\204 \306 \210	\206 \n\307\310\"p\311\211@@%&\220&q\210\f\2042 \312 \210\f\203d \211'\203X '@@\236\203O \313'@\"'A\211'\204> \314\"\315\316\")\317\320!\210\317\321!\210\317\322!\210\311\211\323 (')'\203\231 )\204\231 '@@(>)'A\211'\204\202 )+\324G!\210*\204\261 +\204\261 \325\326!\210\327 \210\317\330!\210\311\311\211,-.\203\321 \331/\330 ,)\3310\203.\203\356 \331/@@,>\204\355 \332\333!\210)\334@8`\311\223\210\335@@@A@\"\210A\211\204\330 **?\205+?\205\325\336!\221\210&q\210\f\203@\203@\236\337p!121\203?\3401\33428\"\210*\341 \210\212\342\343!\210)\344\311!\210\331-%q,\207" [records layout bbdb-display-layout first temp-buffer-show-hook temp-buffer-setup-hook bbdb-elided-display-sanity-setup mapcar #[(x) "	\302 E\207" [x layout make-marker] 3] nil bbdb-undisplay-records delq append sort #[(x y) "\302@!\302	@!\231\207" [x y bbdb-record-sortkey] 3] make-local-variable mode-line-buffer-identification mode-line-modified bbdb-showing-changed-ones bbdb-changed-records bbdb-frob-mode-line message "Formatting..." bbdb-mode bbdb-records t error "record doubleplus unpresent!" 2 bbdb-format-record "Formatting...done." get-buffer-window set-window-start bbdbq run-hooks bbdb-list-hook set-buffer-modified-p b bbdb-buffer-name rest changed done bbdb-gag-messages bbdb-silent-running prs buffer-read-only bbdb-debug debug-on-error truncate-lines window cons] 5])
(defalias 'bbdb-undisplay-records #[nil "\306!\307	!\205 \212	q\210\310\211\310\211\311 \210\312\313\310!))\207" [bbdb-buffer-name bbdb-display-buffer bbdb-showing-changed-ones mode-line-modified bbdb-records buffer-read-only get-buffer bufferp nil erase-buffer t set-buffer-modified-p] 3])
(byte-code "\301B\302\303!\207" [current-load-list bbdb-inside-electric-display (lambda (#1=#:defconst-tmp-var) (defconst bbdb-inside-electric-display #1#)) nil] 2)
(defalias 'electric-bbdb-display-records #[(records) "\304\305!\210\306\307\306\211\212\310\213\210,\311\312!\210\203 \313!\210)\306\207" [bbdb-electric-execute-me bbdb-electric-completed-normally buffer bbdb-inside-electric-display require electric nil t ((byte-code "\303\213\210\304\305!!\211q\210\n\204 \306\307!\210\310\311\215\210\312	!\207" [bbdb-buffer-name buffer bbdb-gag-messages ((bbdb-display-records-1 records)) window-buffer Electric-pop-up-window message "<<< Press Space to bury the Insidious Big Brother Database list >>>" Done (byte-code "\300\301\215\210\202  " [Blow-off-the-error (byte-code "\301\302\216\303\304\215\210\305)\301\207" [bbdb-electric-completed-normally nil ((byte-code "\203\f \301\302\303\"\210\202 \304 \210\305\306!\210\301\307\303\"\210\301\207" [bbdb-electric-completed-normally throw Done t ding message "BBDB-Quit" Blow-off-the-error] 3)) electric-bbdb-list-select (byte-code "\300\301\302\303#\207" [Electric-command-loop electric-bbdb-list-select "-> " t] 4) t] 2)] 2) bury-buffer] 4)) message " " eval] 3])
#@63 Exit the `electric-command-loop' and evaluate the given form.
(defalias 'bbdb-electric-throw-to-execute #[(form-to-execute) "\303\301!\204\n \304\305!\210\306\307\310\306\"\207" [form-to-execute bbdb-electric-execute-me bbdb-electric-completed-normally boundp error "plusungood: electrical short" t throw electric-bbdb-list-select] 3 (#$ . 63394)])
(defalias 'bbdb-done-command #[nil "\300\301\302\"\207" [throw electric-bbdb-list-select t] 3 nil nil])
(defalias 'bbdb-bury-buffer #[nil "\203 \301 \207\302 \207" [bbdb-inside-electric-display bbdb-done-command bury-buffer] 1 nil nil])
(defalias 'bbdb-display-records #[(records &optional layout) "\306!\n\203 	\204 \307\310\311#\210\312\f!\202L \313\f\314#\210\204) \307\315\316#\210?\205L 	?\205L \317\320\321\322!\203I \203E \323\202J \324\202J \325!!)\207" [bbdb-buffer-name bbdb-window bbdb-electric-p bbdb-mode-map records layout get-buffer-window define-key " " bbdb-done-command electric-bbdb-display-records bbdb-display-records-1 nil " " undefined message substitute-command-keys one-window-p t "Type \\[delete-other-windows] to unshow the bbdb-list window." "Type \\[switch-to-buffer] RET to unshow the bbdb-list window." "Type \\[switch-to-buffer-other-window] RET to restore old contents of the bbdb-list window." bbdb-inside-electric-display bbdb-gag-messages pop-up-windows] 4])
(defalias 'bbdbq #[nil "\301\302\303 \304\"!\205 \305\306\302\303 \307\"G\246H!\210\306\310!)\207" [v zerop logand random 31 ["Don't suspect your neighbor: report him!" "fnord" "Consume -- Be Silent -- Die" "Love Big Brother" "Lee Harvey Oswald acted alone" "ALL YOUR BASE ARE BELONG TO US" "War is Peace" "Freedom is Slavery" "Ignorance is Strength" "Proles and animals are free"] message 255 " "] 5])
(defalias 'bbdb-hashtable '(macro . #[nil "\300\207" [(bbdb-with-db-buffer (bbdb-records nil t) bbdb-hashtable)] 1]))
(defalias 'bbdb-changed-records #[nil "r\301 q\210\302\303\304\"\210)\207" [bbdb-changed-records bbdb-buffer bbdb-records nil t] 3])
(defalias 'bbdb-build-name '(macro . #[(f l) "\302\303\304\305D\306E	\303\304\305	D\306E\307\310	FFFD\207" [f l downcase if = length 0 concat " "] 11]))
(defalias 'bbdb-remove! #[(e l) "\204 \207\211A	\203' 	@=\203 	A\241\210\202  		A\211\204 \n@=\2033 \nA\2024 \n*\207" [l n ret e] 3])
(defalias 'bbdb-remove-memq-duplicates #[(l) "\303\211\303\211B\211\n\203# \n@	>\204 \n@\303B\241\nA\211\204 	A*\207" [tail ret l nil] 4])
(defalias 'bbdb-gethash '(macro . #[(name &optional ht) "\302\303	\206 \304ED\207" [name ht symbol-value intern-soft (bbdb-hashtable)] 4]))
(defalias 'bbdb-puthash '(macro . #[(name record &optional ht) "\303\304\305	\206	 \306EDC\307\304\310\n\311EEE\207" [name ht record let sym intern (bbdb-hashtable) set cons (and (boundp sym) (symbol-value sym))] 7]))
(defalias 'bbdb-remhash '(macro . #[(name record &optional ht) "\303\304\305	\206	 \306EDC\307\304\310\304\311\n\312\304DEEEE\207" [name ht record let s intern-soft (bbdb-hashtable) and set bbdb-remove! symbol-value] 10]))
#@538 Find bbdb records matching NAME and NET.

This is a more stringent version of bbdb-search-simple, which I am
not inclined to modify for fear of damaging other code that currently
relies on it. BBDB internals should be migrated to use this function
to identify which record is referred to by a name/net combination,
since search-simple has been overloaded with other functionality.

The name comes from
http://www.mozilla.org/blue-sky/misc/199805/intertwingle.html, which
any budding BBDB hacker should be at least vaguely familiar with.
(defalias 'bbdb-search-intertwingle #[(name net) "\305\306!\210\203 \227\202 \307	\203 	\227\202 \310\311	\227r\312 q\210\305\313\306\"\210\n)\"J\313\211\203K \314\f@!\227\230\203D \315\303\f@\"\210\fA\211\2044 *\207" [name net bbdb-hashtable recs net-recs bbdb-records t "" "" intern-soft bbdb-buffer nil bbdb-record-name add-to-list] 6 (#$ . 66458)])
(put 'bbdb-search-intertwingle 'byte-optimizer 'byte-compile-inline-expand)
#@55 name is a string; net is a string or list of strings.
(defalias 'bbdb-search-simple #[(name net) "G\306=\203	 \307	G\306=\203 \307\310\311!\210\205X \312\227r\313 q\210\310\307\311\"\210\n)\"J\307\f\203V \f@\227\314!\206D \315H\206D \316\227\230\203O \317\fC\"\fA)\202. *	;\203q \312	\227r\313 q\210\310\307\311\"\210\n)\"J\202\227 \307	\203\225 \204\225 \312	@\227r\313 q\210\310\307\311\"\210\n)\"J	A\211\204w )\307\211\203\247 \204\275 \203\262 @\206\205@\202\203@\203\357 @=\203\346 \307\211\202\313 A\211\204\320 \203\374 A\202\377 \210*\202\275 +\207" [name net bbdb-hashtable answer recs n-rec 0 nil bbdb-records t intern-soft bbdb-buffer bbdb-record-name 3 "" append ret net-recs name-recs nets name-rec] 7 (#$ . 67445)])
(put 'bbdb-search-simple 'byte-optimizer 'byte-compile-inline-expand)
#@147 Given a record whose net field is a comma-separated string, convert it to
a list of strings (the new way of doing things.)  Returns the new list.
(defalias 'bbdb-net-convert #[(record) "\301\302\301H\303\"I\207" [record 6 bbdb-split ","] 5 (#$ . 68335)])
#@87 Return a list by splitting STRING at SEPARATORS.
The inverse function of `bbdb-join'.
(defalias 'bbdb-split #[(string separators) "\306\307P\212\310\311!q\210\312 \210c\210eb\210\306w\210\313\306w\210m\204< `\306	\306w\210`\314\306x\210`{\nB\fb\210*\202 \312 \210)\n\237*\207" [separators not-separators result string p begin nil "^" get-buffer-create " *split*" erase-buffer " 	\n" " 	\n"] 3 (#$ . 68598)])
#@115 Join a LIST to a string where the list elements are separated by SEPARATOR.
The inverse function of `bbdb-split'.
(defalias 'bbdb-join #[(list separator) "\205	 \302\303	#\207" [list separator mapconcat identity] 4 (#$ . 69026)])
#@107 Insert the record in the appropriate hashtables.  This must be called
while the .bbdb buffer is selected.
(defalias 'bbdb-hash-record #[(record) "\211\306H\307\307H\310H\211G\307V\203' 	G\307V\203# \n\311	Q\202( \n\202( 	*I)\312H\313H\314H\211G\307V\203Y \315\227\"\211\316!\205U JBL\210)G\307V\203x \315\227\"\211\316!\205t JBL\210)\f\203\234 \315\f@\227\"\211\316!\205\221 JBL\210)\fA\211\204| \205\301 \315@\227\"\211\316!\205\265 JBL\210)A\211\204\240 \317,\207" [record lname fname net aka company 8 0 1 " " 3 2 6 intern boundp nil name bbdb-hashtable sym] 7 (#$ . 69265)])
(put 'bbdb-hash-record 'byte-optimizer 'byte-compile-inline-expand)
#@35 Internal variable.  Do not touch.
(defvar inside-bbdb-records nil (#$ . 69977))
#@74 *The list of functions added to `local-write-file-hooks' in `bbdb-file'.
(defvar bbdb-write-file-hooks '(bbdb-write-file-hook-fn) (#$ . -70063))
#@222 Return a list of all bbdb records; read in and parse the db if necessary.
This also notices if the disk file has changed out from under us, unless
optional arg DONT-CHECK-DISK is non-nil (which is faster, but hazardous.)
(defalias 'bbdb-records #[(&optional dont-check-disk already-in-db-buffer) "\203 \306\307\310!\210)\306\n\203 p\202 \311 \312r\fq\210\204q \313\f!\204q 7\203A \314\f!\204A \315\316!\210\306\317\306\211\"\210\202q \320\314\f!\203L \321\202M \322!\203f \3238!\204^ \307\3248\"\210\317\306\211\"\210\202q \314\f!\203q \325\306\211\"\210\326\327 \236\204\257 \330\326!\210\312\330\331!\210\312\330\332!\210\312\330\333!\210\312\330\334!\210\312\330\335!\210\336\337\3409\"\210\341:\342\"\314 ;<=\206*edU\203\324 \343\344>\"c\210\345 \210\346 \312\202*\204\341 ?\204\341 \315\347!\210\345 \210@\203\"\350\351 A\"\203\"\320\352!\203\353A!\210\354p!\210\355\356!\210\357\351 !\210\315\360!\210\361\362!\210\202\312\363\364\217\210\312\326 )\202*\365\342\"\210\366 ,\207" [inside-bbdb-records debug-on-error already-in-db-buffer shut-up buf dont-check-disk t error "catastrophic: bbdb-records recursed" bbdb-buffer nil verify-visited-file-modtime buffer-modified-p message "BBDB has changed on disk, reverting..." revert-buffer bbdb-yes-or-no-p "BBDB has changed on disk; flush your changes and revert? " "BBDB has changed on disk; revert? " file-exists-p "bbdb: file %s no longer exists!!" bbdb-save-db bbdb-records buffer-local-variables make-local-variable bbdb-changed-records bbdb-end-marker bbdb-hashtable bbdb-propnames revert-buffer-function bbdb-revert-buffer mapc #[(ff) "\301\302\"\207" [ff add-hook local-write-file-hooks] 3] make-vector 0 format ";;; file-version: %d\n" bbdb-flush-all-caches point-marker "Parsing BBDB..." file-newer-than-file-p make-auto-save-file-name "BBDB auto-save file is newer; recover it? " recover-file bury-buffer auto-save-mode 1 delete-file "Auto-save mode is ON in BBDB buffer.  Suggest you save it soon." sleep-for 2 (byte-code "\300\301 !\207" [delete-file make-auto-save-file-name] 2) ((file-error)) fillarray parse-bbdb-internal bbdb-auto-revert-p bbdb-file bbdb-write-file-hooks bbdb-hashtable-size bbdb-modified-p bbdb-readonly-p buffer-read-only bbdb-file-format bbdb-silent-running bbdb-notice-auto-save-file buffer-file-name] 3 (#$ . 70215)])
(defalias 'bbdb-revert-buffer #[(arg noconfirm) "\304 \210\305!\203\f \306 \210\307\310\n\")\207" [bbdb-buffer-name revert-buffer-function arg noconfirm kill-all-local-variables get-buffer bbdb-undisplay-records nil revert-buffer] 3])
(defalias 'parse-bbdb-internal #[nil "\203 \306\307\310!\210)~\210eb\210g\311=\204! \312\313\314\315#\203! \316u\210\212\317\320\314\306#\2037 \315\225Sb\210\321\322\323\324 !\")\212\317\325\314\306#\205I \326\327\224\327\225{!@)\211\204~ \330 \203] \306\331\332!\210)\333\212\317\334\314\306#\203n \327y\210\202q \327b\210\335\336\337\"!\210)\340\f!\210)W\203\250 /\203\236 /@U\204\275 \331\336\341/@#!\210\202\275 \342!B/\202\275 V\203\270 \331\3430#\210\202\275 \211B/)\203\345 \306m\204\322 \344\345!\204\322 \331\346!\210\212\214~\210\212\347\350\314\306#+\203\344 \331\351!\210)/@U\203\362 \352\353 !\207\352\354\353 !!1/AU\203\355\3141\"\210\356/@/A\"\2101)\207" [bbdb-debug debug-on-error bbdb-propnames v modp bbdb-file-format t message "Parsing BBDB... (reading...)" 91 search-forward "\n[" nil 0 -1 re-search-backward "^;+[ 	]*user-fields:[ 	]*(" mapcar #[(x) "\301!C\207" [x symbol-name] 2] read point-marker "^;+[ 	]*file-version:[ 	]*\\([0-9]+\\)[ 	]*$" read-from-string 1 buffer-modified-p error "bbdb corrupted: no file-version line" 2 "^;" insert-before-markers format ";;; file-version: %d\n" set-buffer-modified-p "BBDB file format has changed on disk from %d to %d!" bbdb-migration-query "BBDB version %s doesn't understand file format version %s." looking-at "[[]" "no following bracket: bbdb corrupted" search-backward "\n[" "bbdb corrupted: records before point" parse-bbdb-frobnicate parse-bbdb-read bbdb-migrate bbdb-migrate-rewrite-all bbdb-migrate-update-file-version bbdb-file-format-migration bbdb-version newrecs] 6])
(defalias 'parse-bbdb-read #[nil "`d}\210\304\211\305 \306eb\210\307c\210db\210\310c\210eb\210\311p!eb\210\312\313!\210db\210\312\314!\210\315\n!\210+)\207" [records inhibit-quit modp buffer-read-only nil buffer-modified-p t "(\n" "\n)" read delete-char 2 -2 set-buffer-modified-p] 4])
(defalias 'parse-bbdb-frobnicate #[(records) "eb\210\306\307!\203 \310y\210\202 ~\210\203 \311\312\313!\210)\n\314\nB\211\314&A\203\332A@\211&\315\316'\314\"I\317\320 I\210\310y\210&\321H\322\323!&\324H\322\325!()*\211+\203\204 +@\326H\211,*\235\204z \327-\206q .,C\"\211-*)+A\211+\204[ )\203\262 )@\326H\211,(\235\204\250 \327/\206\237 .,C\"\211/())A\211)\204\211 ,0\203\327 \330&!\2111\205\312 \3311\2272\"J\2113\203\326 \312\3321\"\210*&\211&\211&\315H\326&\326H&\310H4\2115G\326V\2034G\326V\2035\3334Q\2025\2024*I)&\334H&\317H&\335H678\2111G\326V\203E\3361\2272\"\2119&\3379!\205A9JBL\210)8G\326V\203g\3368\2272\"\2119&\3379!\205c9JBL\210)7\203\220\3367@\2272\"\2119&\3379!\205\2039JBL\210)7A\2117\204l6\205\272\3366@\2272\"\2119&\3379!\205\2549JBL\210)6A\2116\204\225\314,\210)A\203' \311A\203\326\306\340!\204\326\341\342`\"\210)\202' \fA+\320 :\343\344!\210\203\361\311\312\345!\210)\207" [bbdb-debug debug-on-error records bbdb-records head rest looking-at "[ 	\n\f]*;" 1 t message "Parsing BBDB... (frobnicating...)" nil 8 make-vector 2 point-marker 4 bbdb-label-completion-list "phones" 5 "addresses" 0 append bbdb-record-name intern-soft "Duplicate BBDB record encountered: %s" " " 3 6 intern boundp "[[]" error "bbdb corrupted: junk between records at %s" run-hooks bbdb-after-read-db-hook "Parsing BBDB... (frobnicating...done)" record bbdb-cache-length al as pl ps l bbdb-phones-label-list bbdb-default-label-list bbdb-addresses-label-list bbdb-no-duplicates-p name bbdb-hashtable tmp lname fname net aka company sym bbdb-end-marker] 8])
#@62 Returns a regexp matching the address of the logged-in user.
(defalias 'bbdb-user-mail-names '(macro . #[nil "\300\207" [(or bbdb-user-mail-names (setq bbdb-user-mail-names (concat "\\b" (regexp-quote (user-login-name)) "\\b")))] 1 (#$ . 76384)]))
#@59 This is just for `bbdb-write-file-hooks'.  Keep it there.
(defalias 'bbdb-write-file-hook-fn #[nil "\306\211\307\n!\211\203 rq\210\306\310\306!\210))\205/ \204* \311\312\313\"!\205/ \314ed#\207" [bbdb-modified-p bbdb-changed-records bbdb-buffer-name buf bbdb-showing-changed-ones bbdb-file-remote nil get-buffer set-buffer-modified-p y-or-n-p format "Save the remote BBDB file %s too? " write-region bbdb-file-remote-save-always] 5 (#$ . 76638)])
(defalias 'bbdb-delete-record-internal #[(record) "\306H\307H\204\f \310\311!\210r\312 q\210	\204 \n>\204 \nB>\211\204, \310\313\"\210\314\"\306H\307H\fA\203E \fA@\306H\307H\202F |\210\315!\316H\307H\317H\211G\320V\203{ \321\227\"\211\203z \322J\"L\210)G\320V\203\233 \321\227\"\211\203\232 \322J\"L\210)\203\302 \321@\227\"\211\203\270 \322J\"L\210)A\211\204\240 \203\351 \321@\227\"\211\203\337 \322J\"L\210)A\211\204\307 ,\306H\323\324I\210\325\211*\207" [record bbdb-suppress-changed-records-recording bbdb-changed-records bbdb-records tail bbdb-end-marker 8 2 error "bbdb: marker unpresent" bbdb-buffer "bbdb: unfound %s" delq bbdb-record-name 3 6 0 intern-soft bbdb-remove! 1 nil t nets aka company name bbdb-hashtable s bbdb-modified-p] 6])
#@115 Inserts the RECORD into the list of RECORDS, in order.
Assumes the list is already sorted.  Returns the new head.
(defalias 'bbdb-insert-sorted #[(record records) "\203 \306\n>\203 \307\310\n\"\210)\311B\211\fA\2030 \312\fA@!\312\n!\231\2030 \fA\211\202 \f\n\fAB\241\210A*\207" [bbdb-debug debug-on-error record records rest top t error "doubleplus ununique: - %s" nil bbdb-record-sortkey] 4 (#$ . 77939)])
(defalias 'bbdb-insert-record-internal #[(record unmigrated) "\306H\307H\204 \306H\307\310 I\210r\311 q\210	\204# \n>\204# \nB\312\306H\313\314I\210\315\f\"\f>A@\211\203C \306H\307H\202E b\210\306H`\203y \312 eU\203d \316\317\"\210U\204x \320\321!\204x \316\322\"\210)\306\314I\210!\203\211 !\306\314I\210\323\324!\206\221 !\325\"\210\307H\314\223\210\306I\210\211\211\306H\326\326H\313H\"\211#G\326V\203\323 \"G\326V\203\316 #\327\"Q\202\325 #\202\325 \"*I)\330H\307H\331H$%&\211'G\326V\203	\332'\227(\"\211)\333)!\205)JBL\210)&G\326V\203*\332&\227(\"\211)\333)!\205&)JBL\210)%\203R\332%@\227(\"\211)\333)!\205E)JBL\210)%A\211%\204/$\205{\332$@\227(\"\211)\333)!\205m)JBL\210)$A\211$\204W\314,\210+\210*\312\211*)\207" [record bbdb-suppress-changed-records-recording bbdb-changed-records print-escape-newlines bbdb-records next 8 2 make-marker bbdb-buffer t 1 nil bbdb-insert-sorted error "doubleplus ungood: inserting at point-min (%s)" looking-at "[[]" "doubleplus ungood: not inserting before a record (%s)" insert-before-markers prin1-to-string "\n" 0 " " 3 6 intern boundp bbdb-end-marker point cache bbdb-debug debug-on-error unmigrated lname fname net aka company name bbdb-hashtable sym bbdb-modified-p] 8])
(defalias 'bbdb-overwrite-record-internal #[(record unmigrated) "r\306 q\210\204 	\n>\204 	\nB\307\f\203) 	\f@=\204) \fA\211\204 \f\2042 \310\311	\"\210	\312H\203i \307\313HeX\203P \310\314\313H\"\210\313Hb\210`U\204h \315\316!\204h \310\317`\"\210)\313Hb\210	\312\320I\210\203 \312\320I\210\321\206\206 	!\322\261\210`\fA\203\233 \fA@\312H\313H\202\235 |\210	\312I\210\203\314 \307\fA\203\274 \fA@\312H\313H\202\276 	\312H\313HX\203\313 \310\323!\210)\307	,\207" [bbdb-suppress-changed-records-recording record bbdb-changed-records bbdb-records tail print-escape-newlines bbdb-buffer t error "bbdb: unfound %s" 8 2 "doubleplus ungood: cache marker is %s" looking-at "[[]" "doubleplus ungood: not inserting before a record (%s)" nil prin1-to-string "\n" "doubleplus ungood: overwrite unworks" cache bbdb-debug debug-on-error bbdb-end-marker unmigrated bbdb-modified-p] 5])
#@11 hands off
(defvar inside-bbdb-change-record nil (#$ . 80606))
#@158 Internal variable; hands off.
Set to t by the BBDB when inside the `bbdb-notice-hook'.

Calls to the `bbdb-change-hook' are suppressed when this is non-nil.
(defvar inside-bbdb-notice-hook nil (#$ . 80675))
#@176 Update the database after a change to the given record.  Second arg
NEED-TO-SORT is whether the name has changed.  You still need to worry
about updating the name hash-table.
(defalias 'bbdb-change-record #[(record need-to-sort) "\203 	\207\306\307\204 \310\311	\"\210\f\203& \306	\312H\313H\203% \314\315!\210)AU\2047 \316\317	!\211!\210	\320 >\203\215 \204] \321	\n\"\210\f\203\244 \306	\320 >\204Y \314\322!\210)\202\244 \323	!\210\f\203s \306	\320 >\203r \314\324!\210)\325	\n\"\210\f\203\244 \306	\320 >\204\211 \314\326!\210)\202\244 \325	\n\"\210\f\203\244 \306	\320 >\204\243 \314\327!\210)\306\310\330	\"\210	*\207" [inside-bbdb-change-record record unmigrated inside-bbdb-notice-hook bbdb-debug debug-on-error t nil bbdb-invoke-hook bbdb-change-hook 8 3 error "bbdb: changing deleted record" bbdb-unmigrate-record bbdb-copy-thing bbdb-records bbdb-overwrite-record-internal "Overwrite in change doesn't work" bbdb-delete-record-internal "Delete in need-sort change doesn't work" bbdb-insert-record-internal "Insert in need-sort change doesn't work" "Insert in change doesn't work" bbdb-after-change-hook bbdb-file-format-migration bbdb-file-format need-to-sort bbdb-modified-p] 3 (#$ . 80889)])
#@166 Copy a thing.  Handles vectors, strings, markers, numbers, conses,
lists, symbols, and nil.  Raises an error if it finds something it
doesn't know how to deal with.
(defalias 'bbdb-copy-thing #[(thing) "\304!\203( \305\306G\307\"\211GW\203% 	\n\310\nH!I\210\nT\211\202 	*\207;\2031 \311!\207\312!\203; \313!\207\247\203B \207:\203Q \310@!\310A!B\207<\203u \305\307\211GW\203r \314\310\n8!C\"\nT\211\202[ *\2079\203| \207\307=\203\204 \307\207\315\316\317!\"\207" [thing newvec i newlist vectorp 0 make-vector nil bbdb-copy-thing copy-sequence markerp copy-marker append error "Don't know how to copy %s" prin1-to-string] 6 (#$ . 82121)])
(defalias 'bbdb-propnames '(macro . #[nil "\300\207" [(bbdb-with-db-buffer bbdb-propnames)] 1]))
(defalias 'bbdb-set-propnames #[(newval) "r\302 q\210~\210eb\210g\303=\204 \304\305\306\307#\210\310\311\306\312#\203/ \307\225Sb\210`\306\210`|\210\202B \310\313\306\312#\203; \307\225b\210\314\315!\210\316u\210\317\320\321	\"p\"\210	)\207" [newval bbdb-propnames bbdb-buffer 91 search-forward "\n[" nil 0 re-search-backward "^[ 	]*;+[ 	]*user-fields:[ 	]*(" t "^[ 	]*;.*\n" insert-before-markers ";;; user-fields: \n" -1 prin1 mapcar #[(x) "\301@!\207" [x intern] 2]] 4])
#@3832 Major mode for viewing and editing the Insidious Big Brother Database.
Letters no longer insert themselves.  Numbers are prefix arguments.
You can move around using the usual cursor motion commands.
\<bbdb-mode-map>
\[bbdb-add-or-remove-mail-alias]	 Add new mail alias to visible records or remove it.
\[bbdb-edit-current-field]	 Edit the field on the current line.
\[bbdb-record-edit-notes]	 Edit the `notes' field for the current record.
\[bbdb-delete-current-field-or-record]	 Delete the field on the current line.  If the current line is the
	 first line of a record, then delete the entire record.
\[bbdb-insert-new-field]	 Insert a new field into the current record.  Note that this
	 will let you add new fields of your own as well.
\[bbdb-transpose-fields]	 Swap the field on the current line with the previous field.
\[bbdb-dial]	 Play dial tones for the phone number on the current line.
\[bbdb-next-record], \[bbdb-prev-record]	 Move to the next or the previous displayed record, respectively.
\[bbdb-create]	 Create a new record.
\[bbdb-toggle-records-display-layout]	 Toggle whether the current record is displayed in a one-line
	 listing, or a full multi-line listing.
\[bbdb-apply-next-command-to-all-records]\[bbdb-elide-record]	 Do that for all displayed records.
\[bbdb-refile-record]	 Merge the contents of the current record with some other, and then
	 delete the current record.  See this command's documentation.
\[bbdb-omit-record]	 Remove the current record from the display without deleting it from
	 the database.  This is often a useful thing to do before using one
	 of the `*' commands.
\[bbdb]	 Search for records in the database (on all fields).
\[bbdb-net]	 Search for records by net address.
\[bbdb-company]	 Search for records by company.
\[bbdb-notes]	 Search for records by note.
\[bbdb-name]	 Search for records by name.
\[bbdb-changed]	 Display records that have changed since the database was saved.
\[bbdb-send-mail]	 Compose mail to the person represented by the current record.
\[bbdb-apply-next-command-to-all-records]\[bbdb-send-mail]	 Compose mail to everyone whose record is displayed.
\[bbdb-finger]	 Finger the net address of the current record.
\[bbdb-ftp]	 FTP to the curent records's `ftp' field.
\[bbdb-apply-next-command-to-all-records]\[bbdb-finger]	 Finger the net address of all displayed records.
\[bbdb-save-db]	 Save the BBDB file to disk.
\[bbdb-print]	 Create a TeX file containing a pretty-printed version of all the
	 records in the database.
\[bbdb-apply-next-command-to-all-records]\[bbdb-print]	 Do that for the displayed records only.
\[other-window]	 Move to another window.
\[bbdb-info]	 Read the Info documentation for BBDB.
\[bbdb-help]	 Display a one line command summary in the echo area.
\[bbdb-www]	 Visit Web sites listed in the `www' field(s) of the current record.
\[bbdb-whois]	 run whois on the current record.

For address completion using the names and net addresses in the database:
	 in Sendmail mode, type \<mail-mode-map>\[bbdb-complete-name].
	 in Message mode, type \<message-mode-map>\[bbdb-complete-name].

Variables of note:
	 bbdb-always-add-addresses
	 bbdb-auto-revert-p
	 bbdb-canonicalize-redundant-nets-p
	 bbdb-case-fold-search
	 bbdb-completion-type
	 bbdb-default-area-code
	 bbdb-default-domain
	 bbdb-electric-p
	 bbdb-display-layout
	 bbdb-file
	 bbdb-message-caching-enabled
	 bbdb-new-nets-always-primary
	 bbdb-north-american-phone-numbers-p
	 bbdb-notice-auto-save-file
	 bbdb-offer-save
	 bbdb-pop-up-display-layout
	 bbdb-pop-up-target-lines
	 bbdb-quiet-about-name-mismatches
	 bbdb-readonly-p
	 bbdb-use-alternate-names
	 bbdb-use-pop-up
	 bbdb-user-mail-names
	 bbdb/mail-auto-create-p
	 bbdb/news-auto-create-p

There are numerous hooks.  M-x apropos ^bbdb.*hook RET

The keybindings, more precisely:
\{bbdb-mode-map}
(defalias 'bbdb-mode #[nil "\303\304\305\n!\210\306\307!\207" [major-mode mode-name bbdb-mode-map bbdb-mode "BBDB" use-local-map run-hooks bbdb-mode-hook] 2 (#$ . 83373)])
#@60 Move the cursor to the first line of the next BBDB record.
(defalias 'bbdb-next-record #[(p) "\301W\203 \302[!\207\303u\210\301V\203* \304\305\303\306#\204# \307 \210\310\311!\210S\211\202 \307 \207" [p 0 bbdb-prev-record nil re-search-forward "^[^ 	\n]" t beginning-of-line error "no next record"] 5 (#$ . 87384) "p"])
#@64 Move the cursor to the first line of the previous BBDB record.
(defalias 'bbdb-prev-record #[(p) "\301W\203 \302[!\207\301V\205$ \303\304\305\306#\204 \307\310!\210S\211\202\f \207" [p 0 bbdb-next-record re-search-backward "^[^ 	\n]" nil t error "no previous record"] 5 (#$ . 87717) "p"])
(defalias 'bbdb-maybe-update-display #[(bbdb-record) "\212\300\213)\207" [((byte-code "\305!p\211\205 \306\216q\210\214\f\236\205 \307 **\207" [bbdb-buffer-name b w bbdb-record bbdb-records get-buffer-window ((set-buffer b)) bbdb-redisplay-records] 3))] 1])
#@249 *The default separator inserted by `bbdb-annotate-notes'.
This is used for notes which do not have `field-separator' property set.
E.g., if you want URLs to be separated by newlines, you can put
  (put 'www 'field-separator "\n")
into your .emacs.
(custom-declare-variable 'bbdb-notes-default-separator '", " '(#$ . -88285) :group 'bbdb-noticing-records :type 'string)
#@182 Add an annotation to a record.
Adds (or replaces, when the fourth argument REPLACE is non-nil)
an ANNOTATION to the note FIELDNAME in BBDB-RECORD.
Called by `bbdb-auto-notes-hook'.
(defalias 'bbdb-annotate-notes #[(bbdb-record annotation &optional fieldname replace) "\204 \306\307!\210	\310\311\n\"\203 \n\312\225\313O\310\314\n\"\203$ \n\312\211\224O\315\312\nG\313\n$\210\n)\316>\203: \306\317\"\210\204@ \305\320>\204f \321\322!r\323 q\210\f)\"\204f \324\325r\323 q\210\f)\322!CC\"!\210\326\"\206n \327\310\311\n\"\203| \n\312\225\313O\310\314\n\"\203\211 \n\312\211\224O\315\312\nG\313\n$\210\n)	\330\230\206\240 \310\331	!\"?\205\306 \332\204\262 \333\230\203\266 	\202\301 \334N\206\277 	Q#\210\335!)\207" [bbdb-record annotation string fieldname bbdb-propnames notes error "unperson" string-match "\\`[ 	\n]+" 0 nil "[ 	\n]+\\'" set-text-properties (name address addresses phone phones net aka AKA) "bbdb: cannot annotate the %s field this way" (notes company) assoc symbol-name bbdb-buffer bbdb-set-propnames append bbdb-record-getprop "" "" regexp-quote bbdb-record-putprop "" field-separator bbdb-maybe-update-display replace bbdb-notes-default-separator] 6 (#$ . 88661)])
#@69 Offer to save the Insidious Big Brother Database if it is modified.
(defalias 'bbdb-offer-save #[nil "\205	 \301\302=!\207" [bbdb-offer-save bbdb-save-db t] 3 (#$ . 89882)])
#@197 *If non-nil, then when `bbdb-save-db' is asking you whether to save the db,
it will time out to `yes' after this many seconds.  This only works if the
function `y-or-n-p-with-timeout' is defined.
(custom-declare-variable 'bbdb-save-db-timeout 'nil '(#$ . -90065) :group 'bbdb-save :type '(choice (const :tag "Don't time out" nil) (integer :tag "Time out after this many seconds" 5)))
#@32 Save the DB if it is modified.
(defalias 'bbdb-save-db #[(&optional prompt-first mention-if-not-saved) "r\304 q\210\305 \2035 \2030 	\203 \306\307!\202- \n\203* \310\311!\203* \311\312\n\313#\202- \306\314!\2035 \315 \202< \205< \316\317!)\207" [prompt-first bbdb-readonly-p bbdb-save-db-timeout mention-if-not-saved bbdb-buffer buffer-modified-p bbdb-y-or-n-p "Save the BBDB, even though it's supposedly read-only? " fboundp y-or-n-p-with-timeout "Save the BBDB now? " t "Save the BBDB now? " save-buffer message "BBDB not saved"] 4 (#$ . 90455) (list nil t)])
#@48 Strips garbage from the user full name string.
(defalias 'bbdb-clean-username #[(string) "\302\303\"\203. \302\304\"\203 \305\225\306O\302\307\"\203# \305\211\224O\310\305G\306$\210)\207\311\302\312\"\203= \305\225\306O\302\313\"\203M \305\211\224O\202= \302\314\"\203n \305\315\224\206] \316\224O\317\315\225\206g \316\225\306OQ\202M \302\320\"\203\213 \305\316\224O\302\321\"\203\213 \305\211\224O\202{ )\207" [string case-fold-search string-match "[@%!]" "\\`[ 	\n]+" 0 nil "[ 	\n]+\\'" set-text-properties t "\\`[^a-z]+" "\\(\\W+\\([Xx]\\|[Ee]xt\\.?\\)\\W*[-0-9]+\\|[^a-z]+\\)\\'" "\\(	\\|  +\\|\\(\\.\\)[^ 	_]\\|_+\\)" 2 1 " " "[^ 	]\\([ 	]*\\((\\| -\\| #\\)\\)" "\\(\\W+\\([Xx]\\|[Ee]xt\\.?\\)\\W*[-0-9]+\\|[^a-z]+\\)\\'"] 5 (#$ . 91026)])
#@163 A list of all the buffers which have stuff on their `bbdb-message-cache'
local variable.  When we re-parse the `bbdb-file', we need to flush all of
these caches.
(defvar bbdb-buffers-with-message-caches nil (#$ . 91810))
(defalias 'notice-buffer-with-cache #[(buffer) "	>\206& 	\211\203  \303\n@!\204 \304\n@	\"\nA\211\204\f )	B\211\207" [buffer bbdb-buffers-with-message-caches rest buffer-name delq] 4])
#@231 alist of (MESSAGE-KEY BBDB-RECORDS) cached in order to avoid updating
messages each time they are visited.  This is used by all MUAs, while the
MESSAGE-KEY is specific to the MUA and the cache is local for each MUA or MUA
folder.
(defvar bbdb-message-cache nil (#$ . 92230))
(make-variable-buffer-local 'bbdb-message-cache)
#@111 Return cached BBDB records for MESSAGE-KEY.
If not present or when the records have been modified return nil.
(defalias 'bbdb-message-cache-lookup #[(message-key) "\305 \210\205  	\n\236\306\211\203 \fA\307\310\f\"\210?\205 \f*\207" [bbdb-message-caching-enabled message-key bbdb-message-cache invalid records bbdb-records nil mapc #[(record) "\302H\303H\205 \304\211\207" [record invalid 8 3 t] 2]] 4 (#$ . 92561)])
#@81 Cache the BBDB-RECORDS for a message identified by MESSAGE-KEY and
return them.
(defalias 'bbdb-encache-message #[(message-key bbdb-records) "\203 \303\304	\nB\"\203 \305p!\210\n\207" [bbdb-message-caching-enabled message-key bbdb-records add-to-list bbdb-message-cache notice-buffer-with-cache] 4 (#$ . 92994)])
#@35 Remove an element form the cache.
(defalias 'bbdb-decache-message #[(message-key) "\205 \303\304	\n\"\n\"\207" [bbdb-message-caching-enabled message-key bbdb-message-cache delq assoc] 4 (#$ . 93316)])
(defalias 'bbdb-flush-all-caches #[nil "\203 \304\n\203 \305\306!\210)\212\n\205) \307\n@!\203! \n@q\210\310\nA\211\204 \310)\207" [bbdb-debug debug-on-error bbdb-buffers-with-message-caches bbdb-message-cache t message "Flushing BBDB caches" buffer-name nil] 3])
(byte-code "\301B\302\303!\207" [current-load-list bbdb-name-gubbish (lambda (#1=#:defconst-tmp-var) (defconst bbdb-name-gubbish #1#)) "[-,. 	/\\]+\\([JjSs]r\\.?\\|V?\\(I\\.?\\)+V?\\)\\W*\\'"] 2)
#@64 divide the string into a first name and a last name, cleverly.
(defalias 'bbdb-divide-name #[(string) "\305\306\"\203 \307\211\224O\310\305\"\211\203% \n\f\310O\307\211\224O\305\311\n\"\203@ \n\307\211\224O\n\312\224\310O\f\206; \313PD\202C \314D+\207" [string case-fold-search str bbdb-name-gubbish gubbish string-match "\\W+\\([Xx]\\|[Ee]xt\\.?\\)\\W*[-0-9]+\\'" 0 nil " +\\(\\([^ ]+ *- *\\)?[^ ]+\\)\\'" 1 "" ""] 5 (#$ . 93994)])
(defalias 'bbdb-check-alternate-name #[(possible-name record) "\305	\306H\211\205- \n\227\305\203+ \f@\227\232\203$ @\305\211\202 A\211\204 *)\207" [aka record possible-name match down-name nil 2] 3])
(defalias 'bbdb-canonicalize-address #[(net) "	!\211=\203  \207" [net bbdb-canonicalize-net-hook] 3])
#@270 Returns non-nil if NET represents a sub-domain of one of the OLD-NETS.
The returned value is the address which makes this one redundant.
For example, "foo@bar.baz.com" is redundant w.r.t. "foo@baz.com",
and "foo@quux.bar.baz.com" is redundant w.r.t. "foo@bar.baz.com".
(defalias 'bbdb-net-redundant-p #[(net old-nets) "\306\204U 	\203U 	@\307\310\n\"\211\205 \n\311O\205$ \nT\306O\f\2058 \2058 \312\313\f!\314\313!\315\260\211\203N \203N \307\"\203N \n-	A\202 )\207" [redundant-addr old-nets old host-index name host nil string-match "@" 0 "\\`" regexp-quote "@.*\\." "\\'" host-regexp net] 6 (#$ . 94769)])
#@464 Fills the record corresponding to the sender with as much info as possible.
A record may be created by this; a record or nil is returned.
If `bbdb-readonly-p' is true, then a record will never be created.
If CREATE-P is true, then a record may be created, otherwise it won't.
If PROMPT-TO-CREATE-P is true, then the user will be asked for confirmation
before the record is created, otherwise it is created without confirmation
(assuming that CREATE-P is true).  
(defalias 'bbdb-annotate-message-sender #[(from &optional loudly create-p prompt-to-create-p) ":\203	 \202\f \306!\211@	A@\n\232\203 \307\f\2037 \310\n\311\232\203, \312\313!\210\314\232\2036 \312\315!\210)\203D @\203D \316!\307\211\211G\317=\203R \307G\317=\203[ \307\320\310!\210\n\205\257 \321\n\227r\322 q\210\320\307\310\"\210A)\"J\307BCC\203\254 C@D\n\227\323D!\206\225 D\324H\206\225 \325\227\230\203\243 \326CDC\"BCAC)\202z B*;\203\311 \321\227r\322 q\210\320\307\310\"\210A)\"J\202\364 \307B\203\361 B\204\361 \321@\227r\322 q\210\320\307\310\"\210A)\"JBA\211\204\320 B)\307EF\211G\203F\204G\203G@\206bF\205bF@\202bG\203`G@FHIH\203LH@I=\203C\307\211HGIE\202(HA\211H\204-G\203YGAG\202\\I\210*\202E-\206\204\n\307\211G\317=\203s\307G\317=\203|\307\320\310!\210\n\205\320\321\n\227r\322 q\210\320\307\310\"\210A)\"J\307BCC\203\315C@D\n\227\323D!\206\266D\324H\206\266\325\227\230\203\304\326CDC\"BCAC)\202\233B*;\203\352\321\227r\322 q\210\320\307\310\"\210A)\"J\202\307B\203B\204\321@\227r\322 q\210\320\307\310\"\210A)\"JBA\211\204\361B)\307EF\211G\203%F\204;G\2030G@\206\203F\205\203F@\202\203G\203\201G@FHIH\203mH@I=\203d\307\211HGIE\202IHA\211H\204NG\203zGAG\202}I\210*\202;E-\307\n\307\211\211JKLMNOPO\203\242\323O!K\307\211QRO\203\365\n\203\365\n\227\211RK\205\276K\227\232\204\365O\327HQQ\203\365RQ@\227\232\203\354\310J\307Q\330\331\nK$\210\332\333!\210\202\310QA\211Q\204\315*O\204^S\204^T\203^\n\204\203^J\204^\n\203!\n;\203/\n\334\230\203/\335\336\"\203/\337\340\317\"!\341U!\203C\342\343\344\n\206>\"!\205H\345V\307\"\211O??NO\203^O\346\345W\307\"I\210J\206fO??\205V\f\203~\310O\346H\324H\203}\312\347!\210)\n\203R\n\205\210\n\227K\205\220K\227\232\204RX\203\241\350\nO\"\204R\351\n!\307Y\211Z@MZA@LM\227O\317H\211Y\205\303Y\227\232\205\330L\227O\352H\211Y\205\327Y\227\232*\204RS\204R[\203K\203[\247\203\366[\202\367\333\\]\204\\\317U\204\330\353\323O!\n#\210\332\\!\210)\202RN\204?]\204?K\2044\342\343\354\nO\327H@#!\202<\342\343\355K\n#!\203\374\356PK\203\247X\203\247KO\333H\235\204\247]\203jO\333KO\333HBI\210\202\247\342\343\357K\"!\203\203O\333KO\333HBI\210\202\247\321K\227r\322 q\210\320\307\310\"\210A)\"\211^\203\246^\360O^J\"L\210)O\346H\317\307I\210O\317MI\210O\352LI\210\f\203\322\310M\204\321L\204\321\312\361!\210)\362\323O!\227r\322 q\210\320\307\310\"\210A)\"\211_O\363_!\205\365_JBL\210)\202RK\203RX\203RKO\333H\235\204R]\204R\342\343\364\nK#!\203R\356PO\333\nO\333HBI\210\362\n\227r\322 q\210\320\307\310\"\210A)\"\211_O\363_!\205N_JBL\210)`\203c\365O\327H\"\206b\203\321S\204\321O\327H\204\251O\327CI\210\362\227r\322 q\210\320\307\310\"\210A)\"\211_O\363_!\205\232_JBL\210)P\204\321\310P\202\321O\327H\227\307ab\211c\203\321a\204\321bc@\227\230acA\211c\204\272a+\204\321dd\366d!\203\347d dd\310=\203\362\310\202hd\203\373\307\202h\367\232?\205h\343\370\"\371\372O\327H\373#\374\375 !ef\211gGfG\\\376\\eV\203:f\317\211egGZ\377Z]O\201l Pf\342gf\201m Q!\203K\310\202g\342\343\201n \323O!\"!\203f\201o \n\307\307\211\211&O\307+)\203\321h\204|\342\343\201p \"!\202\210h\310=\203\207\310\202\210\307iO\327i\203\233O\327HB\202\242O\327HC\244I\210\362\227r\322 q\210\320\307\310\"\210A)\"\211_O\363_!\205\304_JBL\210)P\204\320\310P)\f\203\350\310P\203\347S\203\347\312\201q !\210)j\203'P\203']\204'P\356=\203\330\201r \323O!\"\210\202'\323O!\203 \330\201s \323O!#\210\202'\330\201t \"\210N\2036\201u \201v O\"\210P\203F\201w OP\356=\"\210\310k\201u \201x O\"\210)O.\n\207" [from data name net bbdb-debug debug-on-error mail-extract-address-components nil t "" error "mail-extr returned \"\" as name" "" "mail-extr returned \"\" as net" bbdb-canonicalize-address 0 bbdb-records intern-soft bbdb-buffer bbdb-record-name 3 "" append 6 message "Ignoring bogon %s's name \"%s\" to avoid name-clash with \"%s\"" sit-for 2 "" string-match "^[^@]+" bbdb-clean-username match-string bbdb-invoke-hook-for-value bbdb-y-or-n-p format "%s is not in the db.  Add? " make-vector 8 "nasty nasty deleted record nasty." bbdb-check-alternate-name bbdb-divide-name 1 "name mismatch: \"%s\" changed to \"%s\"" "Assign name \"%s\" to address \"%s\"? " "Change name \"%s\" to \"%s\"? " sort "Keep name \"%s\" as an AKA? " bbdb-remove! "bbdb: should have a name by now" intern boundp "Make \"%s\" an alternate for \"%s\"? " bbdb-net-redundant-p functionp "???" "Add address \"%s\" to \"" mapconcat identity ", " window-width minibuffer-window 15 20 bbdb-canonicalize-net-hook bbdb-hashtable answer recs n-rec ret net-recs name-recs nets name-rec bogon-mode old-name lname fname created-p record change-p old-net down-name bbdb-readonly-p create-p prompt-to-create-p bbdb-record-length bbdb-cache-length bbdb-use-alternate-names tmp fullname bbdb-quiet-about-name-mismatches sit-for-secs bbdb-silent-running s sym bbdb-canonicalize-redundant-nets-p match new rest-net bbdb-always-add-addresses w the-next-bit the-first-bit bbdb-new-nets-always-primary front-p loudly inside-bbdb-notice-hook "..." "\"? " "Create a new record for %s? " bbdb-create-internal "Make \"%s\" the primary address? " "doubleplus ungood: how did we change anything in readonly mode?" "noticed \"%s\"" "noticed %s's address \"%s\"" "noticed naked address \"%s\"" bbdb-invoke-hook bbdb-create-hook bbdb-change-record bbdb-notice-hook] 9 (#$ . 95409)])
#@397 Find the largest window on the screen, and split it, displaying the
*BBDB* buffer in the bottom 'bbdb-pop-up-target-lines' lines (unless
the *BBDB* buffer is already visible, in which case do nothing.)

If 'bbdb-use-pop-up' is the symbol 'horiz, and the first window
matching HORIZ-PREDICATE is sufficiently wide (> 100 columns) then
the window will be split vertically rather than horizontally.
(defalias 'bbdb-pop-up-bbdb-buffer #[(&optional horiz-predicate) "p\306	!?\205\214 \n\307=\203 \203 \310!\204\210 \311 \211\f\312!\211\f=\204> \313!\313!V\203! \202! \314!\210\313!Z\315Z\313!T]Z^\316\317V\203e \202g \"\210)\320>\203t eb\210\314\321 !\210\322\323\324	!!\210)\314\f!\210+q\210\322)\207" [b bbdb-buffer-name bbdb-use-pop-up horiz-predicate first-window tallest-window get-buffer-window horiz bbdb-pop-up-bbdb-buffer-horizontally selected-window previous-window window-height select-window 1 split-window 0 (gnus-Group-mode gnus-Subject-mode gnus-Article-mode) next-window nil switch-to-buffer get-buffer-create window window-min-height bbdb-pop-up-target-lines size major-mode pop-up-windows] 5 (#$ . 101629)])
(defalias 'bbdb-pop-up-bbdb-buffer-horizontally #[(predicate) "\306 \307X?\205S \310 \311\n!\211\204! \312\n!\211=\203 	?\206+ \313\n!\307X?\205R p\314\n!\210\315\316!\210\314\312\n!!\210\311\317\320!!\210)\314!\210\fq\210)\321+\207" [first-window got-it window predicate b pop-up-windows frame-width 112 selected-window nil next-window window-width select-window split-window-horizontally 80 switch-to-buffer get-buffer-create t bbdb-buffer-name] 3])
#@141 Return string describing the version of the BBDB that is running.
When called interactively with a prefix argument, insert string at point.
(defalias 'bbdb-version #[(&optional arg) "\304\305	#\203 \306\n!c\202 t\203 \306\n!\202 \n)\207" [bbdb-version bbdb-version-date version-string arg format "BBDB version %s (%s)" message] 4 (#$ . 103265) "P"])
(defalias 'bbdb-record-lessp-fn #[(record1 record2) "\302!\302	!\231\207" [record1 record2 bbdb-record-sortkey] 3])
(defalias 'bbdb-resort-database #[nil "\306\301 !r\307 q\210\310	\311\"	\232?\205k \312\313!\210eb\210g\314=\204. \315\316\317\320#\203. \321u\210`\n|\210\322p\322\317\211	\211\203d @\211\323H\f\323\317I\210\324@!\210\f\323I\210\325c\210A\211\204D -\326 \210\327\330!*\207" [records bbdb-records bbdb-end-marker cache record inhibit-quit copy-sequence bbdb-buffer sort bbdb-record-lessp-fn message "DANGER!  BBDB was mis-sorted; it's being fixed..." 91 search-forward "\n[" nil 0 -1 t 8 prin1 10 kill-all-local-variables error "the BBDB was mis-sorted: it has been repaired." standard-output print-escape-newlines] 6])
#@54 The alist which maps features to insinuationn forms.
(defvar bbdb-init-forms '((Gnus (add-hook 'gnus-Startup-hook 'bbdb-insinuate-gnus)) (gnus (add-hook 'gnus-startup-hook 'bbdb-insinuate-gnus)) (mh-e (add-hook 'mh-folder-mode-hook 'bbdb-insinuate-mh)) (rmail (add-hook 'rmail-mode-hook 'bbdb-insinuate-rmail)) (sendmail (add-hook 'mail-setup-hook 'bbdb-insinuate-sendmail)) (vm-old (add-hook 'vm-load-hook 'bbdb-insinuate-vm)) (vm (progn (eval-after-load "vm" '(bbdb-insinuate-vm)))) (message (add-hook 'message-setup-hook 'bbdb-insinuate-message)) (reportmail (add-hook 'reportmail-load-hook 'bbdb-insinuate-reportmail)) (sc (add-hook 'sc-load-hook 'bbdb-insinuate-sc)) (supercite (add-hook 'sc-load-hook 'bbdb-insinuate-sc)) (w3 (add-hook 'w3-load-hook 'bbdb-insinuate-w3))) (#$ . 104382))
#@1379 *Initialize the BBDB.  One or more of the following symbols can be
passed as arguments to initiate the appropriate insinuations.

 Initialization of mail/news readers:

   Gnus       Initialize BBDB support for the Gnus version 3.14 or
              older.
   gnus       Initialize BBDB support for the Gnus mail/news reader
              version 3.15 or newer.  If you pass the `gnus' symbol,
              you should probably also pass the `message' symbol.
   mh-e       Initialize BBDB support for the MH-E mail reader.
   rmail      Initialize BBDB support for the RMAIL mail reader.
   sendmail   Initialize BBDB support for sendmail (M-x mail).
   vm         Initialize BBDB support for the VM mail reader.
              NOTE: For the VM insinuation to work properly, you must
              either call `bbdb-initialize' with the `vm' symbol from
              within your VM initialization file ("~/.vm") or you
              must call `bbdb-insinuate-vm' manually from within your
              VM initialization file.

 Initialization of miscellaneous package:

   message    Initialize BBDB support for Message mode.
   reportmail Initialize BBDB support for the Reportmail mail
              notification package.
   sc or      Initialize BBDB support for the Supercite message
   supercite  citation package.
   w3         Initialize BBDB support for Web browsers.
(defalias 'bbdb-initialize #[(&rest to-insinuate) "\305\306M\210\307\310!\210\203E @\211\n\236A\203< \311	!\204( \312\313	!!\2034 \314\211A@)!\210\202A \315\316	\"\210\202A \315\317	\"\210*\202 \320\321\322\"\210\320\323\324\"\210\320\325\326\"\210\327\330!\207" [to-insinuate feature bbdb-init-forms init x advertized-bbdb-delete-current-field-or-record bbdb-delete-current-field-or-record require bbdb-autoloads featurep locate-library symbol-name eval bbdb-warn "cannot locate feature `%s'" "don't know how to insinuate `%s'" autoload mail-strip-quoted-names "mail-utils" mail-fetch-field "mail-utils" mail-extract-address-components "mail-extr" run-hooks bbdb-initialize-hook] 4 (#$ . -105183)])
(byte-code "\204+ \303\300!\210\304\305!\203 \305\306\"\210\307\310\311#\210\307\312\313#\210\307\314\315#\210\307\316\317#\210	\204\320 \321	!\210\307	\322\300#\210\307	\323\324#\210\307	\325\326#\210\307	\327\330#\210\307	\331\332#\210\307	\333\334#\210\307	\335\336#\210\307	\337\336#\210\307	\340\341#\210\307	\342\343#\210\307	\344\343#\210\307	\345\346#\210\307	\347\350#\210\307	\351\352#\210\307	\353\354#\210\307	\355\356#\210\307	\357\360#\210\307	\361\362#\210\307	\363\364#\210\307	\365\366#\210\307	\367\370#\210\307	\371\372#\210\307	\373\374#\210\307	\375\376#\210\307	\377\201@ #\210\307	\201A \201B #\210\307	\201C \201D #\210\307	\201E \201F #\210\307	\201G \201H #\210\307	\201I \201J #\210\307	\201K \201L #\210\307	\201M \201N #\210\201O \201P \n\"\203/\201Q \201R M\210\201S \201T M\210\303\207" [bbdb-mode-search-map bbdb-mode-map emacs-version define-prefix-command fboundp set-keymap-prompt "(Search [n]ame, [c]ompany, net [a]ddress, n[o]tes)?" define-key [(n)] bbdb-name [(c)] bbdb-company [(a)] bbdb-net [(o)] bbdb-notes make-keymap suppress-keymap [(S)] [(*)] bbdb-apply-next-command-to-all-records [(a)] bbdb-add-or-remove-mail-alias [(e)] bbdb-edit-current-field [(n)] bbdb-next-record [(p)] bbdb-prev-record [(d)] bbdb-delete-current-field-or-record [(control k)] [(control o)] bbdb-insert-new-field [(s)] bbdb-save-db [(control x) (control s)] [(r)] bbdb-refile-record [(t)] bbdb-toggle-records-display-layout [(T)] bbdb-display-record-completely [(o)] bbdb-omit-record [(59)] bbdb-record-edit-notes [(m)] bbdb-send-mail "\344" bbdb-dial [(f)] bbdb-finger [(F)] bbdb-ftp [(i)] bbdb-info [(63)] bbdb-help [(q)] bbdb-bury-buffer [(control x) (control t)] bbdb-transpose-fields [(w)] bbdb-www [(W)] bbdb-whois [(P)] bbdb-print [(h)] other-window [(=)] delete-other-windows [(c)] bbdb-create [(C)] bbdb-changed [(b)] bbdb string-match "XEmacs\\|Lucid" bbdb-warn warn bbdb-display-completion-list bbdb-xemacs-display-completion-list] 4)
#@68 Call this function to hook BBDB into sendmail (that is, M-x mail).
(defalias 'bbdb-insinuate-sendmail #[nil "\301\302\303#\207" [mail-mode-map define-key "\211" bbdb-complete-name] 4 (#$ . 109252)])
#@54 Call this function to hook BBDB into `message-mode'.
(defalias 'bbdb-insinuate-message #[nil "\301\302\303#\207" [message-mode-map define-key "\211" bbdb-complete-name] 4 (#$ . 109458)])
(defalias 'safe-require '(macro . #[(thing) "\301\302\303D\304F\207" [thing condition-case nil require (file-error nil)] 4]))
(defalias 'bbdb-warn #[(&rest args) "\301\302!\210\303\304\"\207" [args beep 1 apply message] 3])
#@98 *Should the *BBDB* buffer be fontified?
This variable has no effect if set outside of customize.
(custom-declare-variable 'bbdb-gui '(not (null window-system)) '(#$ . -109878) :group 'bbdb :type 'boolean :set #[(symb val) "	L\210	\203 \302\303\304\"\207\305\303\304\"\207" [symb val add-hook bbdb-list-hook bbdb-fontify-buffer remove-hook] 3])
(byte-code "\300\301!\210\302\303\304\"\210\302\305\306\"\210\307\310!\207" [provide bbdb make-obsolete-variable bbdb-elided-display bbdb-display-layout bbdb-pop-up-elided-display bbdb-pop-up-display-layout run-hooks bbdb-load-hook] 3)
