;ELC   
;;; Compiled
;;; in Emacs version 26.3
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.

;;; This file does not contain utf-8 non-ASCII characters,
;;; and so can be loaded in Emacs versions earlier than 23.

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


(byte-code "\300\301!\210\302\303\304\305\306\307\310\311&\210\312\313\314\315\316DD\317\320\321\310\303&\210\312\322\314\315\323DD\324\320\325\310\303&\210\326\322\327\330#\210\326\322\331\332#\207" [require epg custom-declare-group plstore nil "Searchable, partially encrypted, persistent plist store" :version "24.1" :group files custom-declare-variable plstore-select-keys funcall function #[0 "\300\207" [silent] 1] "Control whether or not to pop up the key selection dialog.\n\nIf t, always asks user to select recipients.\nIf nil, query user only when a file's default recipients are not\nknown (i.e. `plstore-encrypt-to' is not locally set in the buffer\nvisiting a plstore file).\nIf neither t nor nil, doesn't ask user." :type (choice (const :tag "Ask always" t) (const :tag "Ask when recipients are not set" nil) (const :tag "Don't ask" silent)) plstore-encrypt-to #[0 "\300\207" [nil] 1] "Recipient(s) used for encrypting secret entries.\nMay either be a string or a list of strings.  If it is nil,\nsymmetric encryption will be used." (choice (const nil) (repeat :tag "Recipient(s)" string)) put safe-local-variable #[257 "\211;\206 \211<\205 \3002 \301\302\"\210\3030\207" [safe mapc #[257 "\211;?\205\n \300\301\302\"\207" [throw safe nil] 4 "\n\n(fn ELT)"] t] 4 "\n\n(fn VAL)"] permanent-local t] 8)
(defvar plstore-encoded nil)
(put 'plstore-encoded 'permanent-local t)
(defvar plstore-cache-passphrase-for-symmetric-encryption nil)
(defvar plstore-passphrase-alist nil)
#@31 

(fn CONTEXT KEY-ID PLSTORE)
(defalias 'plstore-passphrase-callback-function #[771 "\2034 \302\303!!\304	\"\305\306A!\2063 \204! C\262	B\307\310\311\312!\"!\262\306!\241\210\211\207\307\310\311\312!\"!\207" [plstore-cache-passphrase-for-symmetric-encryption plstore-passphrase-alist file-truename plstore-get-file assoc nil copy-sequence read-passwd format "Passphrase for PLSTORE %s: " plstore--get-buffer] 11 (#$ . 1903)])
#@49 

(fn CONTEXT WHAT CHAR CURRENT TOTAL HANDBACK)
(defalias 'plstore-progress-callback-function #[1542 "U\203 \300\301\"\207\300\302\303V\203\" \304\305!\245\306_!\202# \303#\207" [message "%s...done" "%s...%d%%" 0 floor float 100] 13 (#$ . 2350)])
#@12 

(fn ARG)
(defalias 'plstore--get-buffer #[257 "\211\300H\207" [0] 3 (#$ . 2613)])
#@12 

(fn ARG)
(defalias 'plstore--get-alist #[257 "\211\300H\207" [1] 3 (#$ . 2703)])
#@12 

(fn ARG)
(defalias 'plstore--get-encrypted-data #[257 "\211\300H\207" [2] 3 (#$ . 2792)])
#@12 

(fn ARG)
(defalias 'plstore--get-secret-alist #[257 "\211\300H\207" [3] 3 (#$ . 2890)])
#@12 

(fn ARG)
(defalias 'plstore--get-merged-alist #[257 "\211\300H\207" [4] 3 (#$ . 2986)])
#@19 

(fn ARG BUFFER)
(defalias 'plstore--set-buffer #[514 "\300I\207" [0] 5 (#$ . 3082)])
#@18 

(fn ARG PLIST)
(defalias 'plstore--set-alist #[514 "\300I\207" [1] 5 (#$ . 3177)])
#@27 

(fn ARG ENCRYPTED-DATA)
(defalias 'plstore--set-encrypted-data #[514 "\300I\207" [2] 5 (#$ . 3270)])
#@25 

(fn ARG SECRET-ALIST)
(defalias 'plstore--set-secret-alist #[514 "\300I\207" [3] 5 (#$ . 3381)])
#@25 

(fn ARG MERGED-ALIST)
(defalias 'plstore--set-merged-alist #[514 "\300I\207" [4] 5 (#$ . 3488)])
#@12 

(fn ARG)
(defalias 'plstore-get-file #[257 "\300\301!!\207" [buffer-file-name plstore--get-buffer] 4 (#$ . 3595)])
#@72 

(fn &optional BUFFER ALIST ENCRYPTED-DATA SECRET-ALIST MERGED-ALIST)
(defalias 'plstore--make #[1280 "\300%\207" [vector] 11 (#$ . 3719)])
#@16 

(fn PLSTORE)
(defalias 'plstore--init-from-buffer #[257 "eb\210\300\301!\205. \302y\210\303\304\305 !\"\210\306 \210\302u\210\300\307!\203+ \302y\210\310\304\305 !\"\210\311!\207" [looking-at ";;; public entries" nil plstore--set-alist read point-marker forward-sexp ";;; secret entries" plstore--set-encrypted-data plstore--merge-secret] 5 (#$ . 3871)])
#@60 Create a plstore instance associated with FILE.

(fn FILE)
(defalias 'plstore-open #[257 "\302!\303!\206 \304\305\306\"!\307!rq\210\310 \210\3111' \312\313!)0\202+ \210\202, \210\302!\314\315!\210\316!\210)\207" [coding-system-for-read buffer-file-name file-truename find-buffer-visiting generate-new-buffer format " plstore %s" plstore--make erase-buffer (error) raw-text insert-file-contents set-buffer-modified-p nil plstore--init-from-buffer] 6 (#$ . 4237)])
#@70 Replace current data in PLSTORE with the file on disk.

(fn PLSTORE)
(defalias 'plstore-revert #[257 "r\300!q\210\301\302\211\"\210\303!)\207" [plstore--get-buffer revert-buffer t plstore--init-from-buffer] 4 (#$ . 4717)])
#@51 Destroy a plstore instance PLSTORE.

(fn PLSTORE)
(defalias 'plstore-close #[257 "\300\301!!\207" [kill-buffer plstore--get-buffer] 4 (#$ . 4948)])
#@16 

(fn PLSTORE)
(defalias 'plstore--merge-secret #[257 "\300!\301\211\211\211\211\211\302\303\304!!\"\210\305!\262\205p @\262A\262A\262\306@\"\262A\262\203i \307\310\311\312@!\313\301OP!\"\262\211\203W \211@\240\210\314@A@#\262AA\262\2029 \241\210\202 \207" [plstore--get-secret-alist nil plstore--set-merged-alist copy-tree plstore--get-alist plstore--get-merged-alist assoc plist-member intern ":secret-" symbol-name 1 plist-put] 15 (#$ . 5103)])
#@16 

(fn PLSTORE)
(defalias 'plstore--decrypt #[257 "\301!\205Y \302\303!\304\305\306B\"\210\307\310\311\312\313!\"B\"\210\3141/ \315\301!\"\211\2620\202F \316\313!\"\211\203= \211\304\241\210\210\317@A\"\262\210\320\321!@\"\210\322!\210\323\304\"\266\202\207" [plstore-passphrase-alist plstore--get-encrypted-data epg-make-context OpenPGP nil epg-context-set-passphrase-callback plstore-passphrase-callback-function epg-context-set-progress-callback plstore-progress-callback-function format "Decrypting %s" plstore-get-file (error) epg-decrypt-string assoc signal plstore--set-secret-alist read-from-string plstore--merge-secret plstore--set-encrypted-data] 10 (#$ . 5596)])
#@40 

(fn ENTRY KEYS SKIP-IF-SECRET-FOUND)
(defalias 'plstore--match #[771 "\300\301\211\211\211\203[ @\262A@\262\302A\"\262\235\204R \203L \303\304\305!\306\301OP!\262\307A\"\203C \310\262\202R \301\262\301\262\202R \301\262\301\262AA\262\202 \207" [t nil plist-get intern ":secret-" symbol-name 1 plist-member secret] 13 (#$ . 6294)])
#@74 Perform search on PLSTORE with KEYS.
KEYS is a plist.

(fn PLSTORE KEYS)
(defalias 'plstore-find #[514 "\300\211\211\211\211\211\301!\262\203Y @\262A\262\302\303#\262\304=\203, \303\262\202\f \203\f A\262\211\203P \305\306\307@!\"\203H \303\262\300\262\211AA\262\2024 B\262\202\f \203\214 \300\262\310!\210\301!\262\203\214 @\262A\262\302\300#\262\203k B\262\202k \237\207" [nil plstore--get-merged-alist plstore--match t secret string-match "\\`:secret-" symbol-name plstore--decrypt] 12 (#$ . 6664)])
#@55 Get an entry with NAME in PLSTORE.

(fn PLSTORE NAME)
(defalias 'plstore-get #[514 "\300\301!\"\302A\262\211\2034 \303\304\305@!\"\203, \306!\210\300\301!\"\262\302\262\202 \211AA\262\202 \207" [assoc plstore--get-merged-alist nil string-match "\\`:secret-" symbol-name plstore--decrypt] 8 (#$ . 7220)])
#@163 Put an entry with NAME in PLSTORE.
KEYS is a plist containing non-secret data.
SECRET-KEYS is a plist containing secret data.

(fn PLSTORE NAME KEYS SECRET-KEYS)
(defalias 'plstore-put #[1028 "\300\211\211\211\203 \301!\210\203: \302\303\304@!\305\300OP!\262\306\307#\262\306@A@#\262AA\262\202 \203` \302\303\304@!\305\300OP!\262\306@A@#\262AA\262\202: \310\311\n!\"\262\203u \241\210\202\203 \312B\311!B\"\210\203\252 \310\313\n!\"\262\203\234 \241\210\202\252 \314B\313!B\"\210\315!\207" [nil plstore--decrypt intern ":secret-" symbol-name 1 plist-put t assoc plstore--get-alist plstore--set-alist plstore--get-secret-alist plstore--set-secret-alist plstore--merge-secret] 13 (#$ . 7546)])
#@60 Delete an entry with NAME from PLSTORE.

(fn PLSTORE NAME)
(defalias 'plstore-delete #[514 "\300\301!\"\211\203 \302\303\301!\"\"\210\300\304!\"\262\211\203, \305\303\304!\"\"\210\300\306!\"\262\211\205B \307\303\306!\"\"\207" [assoc plstore--get-alist plstore--set-alist delq plstore--get-secret-alist plstore--set-secret-alist plstore--get-merged-alist plstore--set-merged-alist] 9 (#$ . 8307)])
#@16 

(fn PLSTORE)
(defalias 'plstore--insert-buffer #[257 "\304\305\306!!\261\210\307!\205\201 \310\311!\312<\203 \202# ;\205# C\312\313!\n>\2046 \314\315\316D\"\210\211\317\320I\266\321\322B\"\210\323\305\307!!\320=\204^ \204h \324\300p\"\204h \325\326#\202r \205r \327\"#\262db\210\330\305!\261)\266\204\207" [plstore-encrypt-to pp-escape-newlines cl-struct-epg-context-tags plstore-select-keys ";;; public entries -*- mode: plstore -*- \n" pp-to-string plstore--get-alist plstore--get-secret-alist epg-make-context OpenPGP nil type-of signal wrong-type-argument epg-context 4 t epg-context-set-passphrase-callback plstore-passphrase-callback-function epg-encrypt-string local-variable-p epa-select-keys "Select recipients for encryption.\nIf no one is selected, symmetric encryption will be performed.  " epg-list-keys ";;; secret entries\n"] 12 (#$ . 8732)])
#@68 Save the contents of PLSTORE associated with a FILE.

(fn PLSTORE)
(defalias 'plstore-save #[257 "r\300!q\210\301 \210\302!\210\303 )\207" [plstore--get-buffer erase-buffer plstore--insert-buffer save-buffer] 3 (#$ . 9633)])
#@16 

(fn PLSTORE)
(defalias 'plstore--encode #[257 "\300!\210\301!\302\303\304\305\306\307\310!\311\"\312\313%\314!\315#\316Q\207" [plstore--decrypt plstore--get-merged-alist "(" mapconcat make-byte-code 257 "\301!\262\302@\300\"AA\211\2037 \303\304\305@!\"\203/ \211A\306\307\310\305@!\311\225\312OP!\"\240\210\211AA\262\202 \313!\207" vconcat vector [copy-sequence assoc string-match "\\`:secret-" symbol-name plist-get intern ":" 0 nil prin1-to-string] 11 "\n\n(fn ENTRY)" plstore--get-alist "\n" ")"] 10 (#$ . 9866)])
#@15 

(fn STRING)
(defalias 'plstore--decode #[257 "\300!@\211\301\211\211\203n @@;\204 \302\303\"\210@A\262\203g \304\305\306@!\"\203_ \307@@\"\262\211\204C @@C\262\211B\262\211\310A\311\312\306@!\313\225\301OP!A@#\241\210A\314\240\210AA\262\202 A\262\202 \315\301\301$\207" [read-from-string nil error "Invalid PLSTORE format %s" string-match "\\`:secret-" symbol-name assoc plist-put intern ":" 0 t plstore--make] 14 (#$ . 10407)])
(defalias 'plstore--write-contents-functions #[0 "\205> \301\302 !\303 \304\305\306\307\310!\311\"\312$\216\313\314!\210\315\316!r\211q\210\304\305\317\307\310!\320\"\312$\216\321!\210\322\302 \314#\210*\210)\323\266\202\207" [plstore-encoded plstore--decode buffer-string buffer-file-name make-byte-code 0 "\301\300!\210\302\303!\207" vconcat vector [set-visited-file-name set-buffer-modified-p nil] 2 set-visited-file-name nil generate-new-buffer " *temp*" "\301\300!\205	 \302\300!\207" [buffer-name kill-buffer] plstore--insert-buffer write-region t] 9])
#@40 Show the original form of this buffer.
(defalias 'plstore-mode-original #[0 "\205! \301 \203 \302\303!\203 \304 \210\305 \210\306\307 !\210\310\311!\210\311\211\207" [plstore-encoded buffer-modified-p y-or-n-p "Save buffer before reading the original form? " save-buffer erase-buffer insert-file-contents-literally buffer-file-name set-buffer-modified-p nil] 2 (#$ . 11440) nil])
#@39 Show the decoded form of this buffer.
(defalias 'plstore-mode-decoded #[0 "?\2050 \301 \203 \302\303!\203 \304 \210\305p!\306!\210\307 \210\310\311!c\210\312!c\210\313\314!\210\315\211\262\207" [plstore-encoded buffer-modified-p y-or-n-p "Save buffer before decoding? " save-buffer plstore--make plstore--init-from-buffer erase-buffer substitute-command-keys ";;; You are looking at the decoded form of the PLSTORE file.\n;;; To see the original form content, do \\[plstore-mode-toggle-display]\n\n" plstore--encode set-buffer-modified-p nil t] 3 (#$ . 11830) nil])
#@76 Toggle the display mode of PLSTORE between the original and decoded forms.
(defalias 'plstore-mode-toggle-display #[0 "\203 \301 \207\302 \207" [plstore-encoded plstore-mode-original plstore-mode-decoded] 1 (#$ . 12409) nil])
(defvar plstore-mode-hook nil)
(byte-code "\300\301N\204\f \302\300\301\303#\210\304\305!\204 \302\305\306\307#\210\300\207" [plstore-mode-hook variable-documentation put "Hook run after entering PLSTORE mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" boundp plstore-mode-map definition-name plstore-mode] 4)
(defvar plstore-mode-map (make-sparse-keymap))
(byte-code "\301\302N\204 \303\301\302\304\305!#\210\306\307!\204 \303\307\310\311#\210\312\313 !\210\307\302N\204- \303\307\302\304\314!#\210\306\300!\204B \303\300\310\311#\210\315\316\300\317\"\210!\210\300\302N\204P \303\300\302\304\320!#\210\303\311\321\322#\207" [plstore-mode-abbrev-table plstore-mode-map variable-documentation put purecopy "Keymap for `plstore-mode'." boundp plstore-mode-syntax-table definition-name plstore-mode (lambda (#1=#:def-tmp-var) (defvar plstore-mode-syntax-table #1#)) make-syntax-table "Syntax table for `plstore-mode'." (lambda (#1#) (defvar plstore-mode-abbrev-table #1#)) define-abbrev-table nil "Abbrev table for `plstore-mode'." derived-mode-parent emacs-lisp-mode] 5)
#@237 Major mode for editing PLSTORE files.

In addition to any hooks its parent mode `emacs-lisp-mode' might have run,
this mode runs the hook `plstore-mode-hook', as the final or penultimate step
during initialization.

\{plstore-mode-map}
(defalias 'plstore-mode #[0 "\306\300!\210\307\310 \210\311\312\310\313N\203 \314\311\313\310\313N#\210\315!\204' \316\317 \"\210\320\f!\211\2035 \211\321 =\203; \322\f\323 \"\210\210\324\325\"\204R %=\204R \326\325%C#\210\327!\210\330\f!\210%\306\331!\210\332\333\334\"\210\335\336\337#\210\340\341!\203x \307\202{ \342 \210)\343\344!\207" [delay-mode-hooks major-mode mode-name plstore-mode-map plstore-mode-syntax-table plstore-mode-abbrev-table make-local-variable t emacs-lisp-mode plstore-mode "PLSTORE" mode-class put keymap-parent set-keymap-parent current-local-map char-table-parent standard-syntax-table set-char-table-parent syntax-table abbrev-table-get :parents abbrev-table-put use-local-map set-syntax-table plstore-encoded add-hook write-contents-functions plstore--write-contents-functions define-key "" plstore-mode-toggle-display called-interactively-p any plstore-mode-decoded run-mode-hooks plstore-mode-hook local-abbrev-table] 5 (#$ . 13803) nil])
(provide 'plstore)
