From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Kaushal Modi Newsgroups: gmane.emacs.devel Subject: Re: Default share/ and lisp/ directories? Date: Tue, 20 Feb 2018 20:27:01 +0000 Message-ID: References: <31b4fa70-3cbf-4d75-8d62-4f27c8272d49@default> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="94eb2c001d38bc16590565aaa22b" X-Trace: blaine.gmane.org 1519158324 12149 195.159.176.226 (20 Feb 2018 20:25:24 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 20 Feb 2018 20:25:24 +0000 (UTC) Cc: Emacs developers To: Drew Adams Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Feb 20 21:25:19 2018 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eoETT-0002Zb-LG for ged-emacs-devel@m.gmane.org; Tue, 20 Feb 2018 21:25:15 +0100 Original-Received: from localhost ([::1]:57647 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eoEVV-0007GU-RI for ged-emacs-devel@m.gmane.org; Tue, 20 Feb 2018 15:27:21 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:59344) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eoEVP-0007GK-4F for emacs-devel@gnu.org; Tue, 20 Feb 2018 15:27:16 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eoEVN-0008Ae-Kx for emacs-devel@gnu.org; Tue, 20 Feb 2018 15:27:15 -0500 Original-Received: from mail-yw0-x236.google.com ([2607:f8b0:4002:c05::236]:32855) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eoEVN-0008AO-Eg for emacs-devel@gnu.org; Tue, 20 Feb 2018 15:27:13 -0500 Original-Received: by mail-yw0-x236.google.com with SMTP id l200so2367863ywb.0 for ; Tue, 20 Feb 2018 12:27:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=5VihJER0UIW9YD14SxYDqiIdbeAuS70wraEXz00PmYw=; b=db+TjjjockcYJ0WrpR6iNPxbR47b14hCXTjzVJLW/DxK4MyXJnDHwpqvIEAtaVGSfc K0FvExhSPgB7+EgWoCalF1i4F7c6Ve4BJkM8OSwABnx2cH3n0HPafxuWtrKIgv02LZ5h DUEFsutCmGW8+gb3NFCn0Lm2MIahYvgQd+F6GtRzl0o7OYaa/wCKt9qhFsDZICcnfODq IU8vmeDugV9DBee2WWVs1CGDiPEXP4uQE3m2uuWqfttcmxcrVlP0kta4kEfSpPv3EIj+ a3t63iOSH7JIW/OZ4x+foi0cpDPy2dfMhCkbXYTYuPRk9S5T6zSkvRb43CsVFEtTxut6 uRJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=5VihJER0UIW9YD14SxYDqiIdbeAuS70wraEXz00PmYw=; b=dQK93kfsgq9JgOjI1guPsFh3FBUbeD7cFhJ/6GY4qqcnByi0PDLA7z3Ajxb81wpA/g uiNtqp7XUBDRRWrBsgqZ0vg6ozpHDEjzxAZBzYC6qCm7sG0Z/ylzOic97WH60iqMMVwo 6QmjrZJYTOAF0OQWofLMWNrsbWHw7b0F9vrzZE7jUozHAhJqoVekEr7aGF4PcEWVC7Bg 5QdQN/6E2N52lN14p3daUk3Terh6PsF6PNAL6USMdhtXLtVClsk0exm0uh1MYeW76xOL GS6BF2fqF1D+ExLdY3v3YHG/KZMJPg0GKvDFrufwySlUs4axYX8uHbGsTz6YepKaSuek UvRQ== X-Gm-Message-State: APf1xPBczR208eWVYJuO5drq+O8P6pgPWbcYMrGwIsBqcODTciw065va c2L1Z/oMbWkosQAmaGbWRwprtBCeV5LJuzjhyoA= X-Google-Smtp-Source: AH8x227Xcad1m6I+BGT1CmVM9dc47olfU9pkf175+e+hb9sK8diUVMnWzE4A2WQzxJIYFXHJBMmwvo5llu6KQRDIkhs= X-Received: by 10.129.177.9 with SMTP id p9mr729816ywh.15.1519158432632; Tue, 20 Feb 2018 12:27:12 -0800 (PST) In-Reply-To: <31b4fa70-3cbf-4d75-8d62-4f27c8272d49@default> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4002:c05::236 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:222946 Archived-At: --94eb2c001d38bc16590565aaa22b Content-Type: text/plain; charset="UTF-8" On Tue, Feb 20, 2018 at 1:48 PM Drew Adams wrote: > Suggestion: use functions for manipulating file/dir names. > > Use (file-name-directory (directory-file-name (expand-file-name file))) > Thank you. I was aware of that, but was just being plain lazy.. I didn't consider refactoring my whole config to fix that until now[1], so thanks :) Here's the improved code: (let* ((bin-dir (when (and invocation-directory (file-exists-p invocation-directory)) (file-truename invocation-directory))) (prefix-dir (when bin-dir ;Because bin-dir = prefix-dir + "bin/" (file-name-directory (directory-file-name bin-dir)))) (share-dir (when (and prefix-dir (file-exists-p prefix-dir)) (file-name-as-directory (expand-file-name "share" prefix-dir)))) (emacs-dir (when (and share-dir (file-exists-p share-dir)) (file-name-as-directory (expand-file-name "emacs" share-dir)))) (version-dir (when emacs-dir ;; Possibility where the lisp dir is something like ;; ../emacs/26.0.50/lisp/. If `emacs-version' is x.y.z.w, ;; remove the ".w" portion. Though, this is not needed ;; for emacs 26+, and also will do nothing in that case. ;; http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=22b2207471807bda86534b4faf1a29b3a6447536 (let* ((version (replace-regexp-in-string "\\([0-9]+\\.[0-9]+\\.[0-9]+\\).*" "\\1" emacs-version)) (version-dir-1 (file-name-as-directory (expand-file-name version emacs-dir)))) (if (file-exists-p version-dir-1) version-dir-1 ;; Possibility where the lisp dir is something like ;; ../emacs/25.2/lisp/. If `emacs-version' is x.y.z, ;; remove the ".z" portion. (setq version (replace-regexp-in-string "\\([0-9]+\\.[0-9]+\\).*" "\\1" emacs-version)) (setq version-dir-1 (file-name-as-directory (expand-file-name version emacs-dir))) (when (file-exists-p version-dir-1) version-dir-1))))) (lisp-dir (file-name-as-directory (expand-file-name "lisp" version-dir)))) (defvar modi/default-share-directory (when (file-exists-p share-dir) share-dir) "Share directory for this Emacs installation.") (defvar modi/default-lisp-directory (when (file-exists-p lisp-dir) lisp-dir) "Directory containing lisp files for the Emacs installation. This value must match the path to the lisp/ directory of the Emacs installation. If Emacs is installed using --prefix=\"${PREFIX_DIR}\" this value would typically be \"${PREFIX_DIR}/share/emacs//lisp/\".")) I think it would be useful to include the share/ and lisp/ dirs stored in some variable in emacs core, just like invocation-directory. [1]: https://github.com/kaushalmodi/.emacs.d/commit/64b0c3fbf3372bd96a32d1f24d9adeb9112abd08 -- Kaushal Modi --94eb2c001d38bc16590565aaa22b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxkaXYgZGlyPSJsdHIiPk9u IFR1ZSwgRmViIDIwLCAyMDE4IGF0IDE6NDggUE0gRHJldyBBZGFtcyAmbHQ7PGEgaHJlZj0ibWFp bHRvOmRyZXcuYWRhbXNAb3JhY2xlLmNvbSI+ZHJldy5hZGFtc0BvcmFjbGUuY29tPC9hPiZndDsg d3JvdGU6PGJyPjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1h cmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDox ZXgiPlN1Z2dlc3Rpb246IHVzZSBmdW5jdGlvbnMgZm9yIG1hbmlwdWxhdGluZyBmaWxlL2RpciBu YW1lcy48YnI+DQo8YnI+DQpVc2UgKGZpbGUtbmFtZS1kaXJlY3RvcnkgKGRpcmVjdG9yeS1maWxl LW5hbWUgKGV4cGFuZC1maWxlLW5hbWUgZmlsZSkpKTxicj48L2Jsb2NrcXVvdGU+PGRpdj48YnI+ PC9kaXY+PGRpdj5UaGFuayB5b3UuIEkgd2FzIGF3YXJlIG9mIHRoYXQsIGJ1dCB3YXMganVzdCBi ZWluZyBwbGFpbiBsYXp5Li4gSSBkaWRuJiMzOTt0IGNvbnNpZGVyIHJlZmFjdG9yaW5nIG15IHdo b2xlIGNvbmZpZyB0byBmaXggdGhhdCB1bnRpbCBub3dbMV0sIHNvIHRoYW5rcyA6KTxicj48YnI+ SGVyZSYjMzk7cyB0aGUgaW1wcm92ZWQgY29kZTo8YnI+PGJyPihsZXQqICgoYmluLWRpciAod2hl biAoYW5kIGludm9jYXRpb24tZGlyZWN0b3J5PGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGZpbGUtZXhpc3RzLXAgaW52b2NhdGlvbi1kaXJl Y3RvcnkpKTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChmaWxlLXRydWVu YW1lIGludm9jYXRpb24tZGlyZWN0b3J5KSkpPGJyPsKgwqDCoMKgwqDCoCAocHJlZml4LWRpciAo d2hlbiBiaW4tZGlywqDCoMKgwqDCoMKgwqAgO0JlY2F1c2UgYmluLWRpciA9IHByZWZpeC1kaXIg KyAmcXVvdDtiaW4vJnF1b3Q7PGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKGZpbGUtbmFtZS1kaXJlY3RvcnkgKGRpcmVjdG9yeS1maWxlLW5hbWUgYmluLWRpcikp KSk8YnI+wqDCoMKgwqDCoMKgIChzaGFyZS1kaXIgKHdoZW4gKGFuZCBwcmVmaXgtZGlyPGJyPsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChm aWxlLWV4aXN0cy1wIHByZWZpeC1kaXIpKTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSAoZXhwYW5kLWZpbGUtbmFtZSAmcXVv dDtzaGFyZSZxdW90OyBwcmVmaXgtZGlyKSkpKTxicj7CoMKgwqDCoMKgwqAgKGVtYWNzLWRpciAo d2hlbiAoYW5kIHNoYXJlLWRpcjxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoZmlsZS1leGlzdHMtcCBzaGFyZS1kaXIpKTxicj7CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoZmlsZS1uYW1lLWFzLWRpcmVjdG9y eSAoZXhwYW5kLWZpbGUtbmFtZSAmcXVvdDtlbWFjcyZxdW90OyBzaGFyZS1kaXIpKSkpPGJyPsKg wqDCoMKgwqDCoCAodmVyc2lvbi1kaXIgKHdoZW4gZW1hY3MtZGlyPGJyPsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA7OyBQb3NzaWJpbGl0eSB3aGVyZSB0aGUgbGlz cCBkaXIgaXMgc29tZXRoaW5nIGxpa2U8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIDs7IC4uL2VtYWNzLzI2LjAuNTAvbGlzcC8uwqAgSWYgYGVtYWNzLXZlcnNp b24mIzM5OyBpcyB4Lnkuei53LDxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgOzsgcmVtb3ZlIHRoZSAmcXVvdDsudyZxdW90OyBwb3J0aW9uLsKgIFRob3VnaCwg dGhpcyBpcyBub3QgbmVlZGVkPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCA7OyBmb3IgZW1hY3MgMjYrLCBhbmQgYWxzbyB3aWxsIGRvIG5vdGhpbmcgaW4gdGhh dCBjYXNlLjxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOzsg PGEgaHJlZj0iaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvZW1hY3MuZ2l0L2NvbW1p dC8/aWQ9MjJiMjIwNzQ3MTgwN2JkYTg2NTM0YjRmYWYxYTI5YjNhNjQ0NzUzNiI+aHR0cDovL2dp dC5zYXZhbm5haC5nbnUub3JnL2NnaXQvZW1hY3MuZ2l0L2NvbW1pdC8/aWQ9MjJiMjIwNzQ3MTgw N2JkYTg2NTM0YjRmYWYxYTI5YjNhNjQ0NzUzNjwvYT48YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIChsZXQqICgodmVyc2lvbiAocmVwbGFjZS1yZWdleHAtaW4t c3RyaW5nICZxdW90O1xcKFswLTldK1xcLlswLTldK1xcLlswLTldK1xcKS4qJnF1b3Q7ICZxdW90 O1xcMSZxdW90OyBlbWFjcy12ZXJzaW9uKSk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHZlcnNpb24tZGlyLTEgKGZpbGUtbmFtZS1h cy1kaXJlY3RvcnkgKGV4cGFuZC1maWxlLW5hbWUgdmVyc2lvbiBlbWFjcy1kaXIpKSkpPGJyPsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGlmIChmaWxlLWV4 aXN0cy1wIHZlcnNpb24tZGlyLTEpPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2ZXJzaW9uLWRpci0xPGJyPsKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDs7IFBvc3NpYmlsaXR5IHdoZXJlIHRo ZSBsaXNwIGRpciBpcyBzb21ldGhpbmcgbGlrZTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA7OyAuLi9lbWFjcy8yNS4yL2xpc3AvLsKgIElmIGBl bWFjcy12ZXJzaW9uJiMzOTsgaXMgeC55LnosPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDs7IHJlbW92ZSB0aGUgJnF1b3Q7LnomcXVvdDsgcG9y dGlvbi48YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKHNldHEgdmVyc2lvbiAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICZxdW90O1xcKFswLTld K1xcLlswLTldK1xcKS4qJnF1b3Q7ICZxdW90O1xcMSZxdW90OyBlbWFjcy12ZXJzaW9uKSk8YnI+ wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHNldHEg dmVyc2lvbi1kaXItMSAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSAoZXhwYW5kLWZpbGUtbmFtZSB2 ZXJzaW9uIGVtYWNzLWRpcikpKTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAod2hlbiAoZmlsZS1leGlzdHMtcCB2ZXJzaW9uLWRpci0xKTxicj7C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmVy c2lvbi1kaXItMSkpKSkpPGJyPsKgwqDCoMKgwqDCoCAobGlzcC1kaXIgKGZpbGUtbmFtZS1hcy1k aXJlY3RvcnkgKGV4cGFuZC1maWxlLW5hbWUgJnF1b3Q7bGlzcCZxdW90OyB2ZXJzaW9uLWRpcikp KSk8YnI+wqAgKGRlZnZhciBtb2RpL2RlZmF1bHQtc2hhcmUtZGlyZWN0b3J5ICh3aGVuIChmaWxl LWV4aXN0cy1wIHNoYXJlLWRpcik8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2hhcmUtZGly KTxicj7CoMKgwqAgJnF1b3Q7U2hhcmUgZGlyZWN0b3J5IGZvciB0aGlzIEVtYWNzIGluc3RhbGxh dGlvbi4mcXVvdDspPGJyPsKgIChkZWZ2YXIgbW9kaS9kZWZhdWx0LWxpc3AtZGlyZWN0b3J5ICh3 aGVuIChmaWxlLWV4aXN0cy1wIGxpc3AtZGlyKTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGlz cC1kaXIpPGJyPsKgwqDCoCAmcXVvdDtEaXJlY3RvcnkgY29udGFpbmluZyBsaXNwIGZpbGVzIGZv ciB0aGUgRW1hY3MgaW5zdGFsbGF0aW9uLjxicj48YnI+VGhpcyB2YWx1ZSBtdXN0IG1hdGNoIHRo ZSBwYXRoIHRvIHRoZSBsaXNwLyBkaXJlY3Rvcnkgb2YgdGhlPGJyPkVtYWNzIGluc3RhbGxhdGlv bi7CoCBJZiBFbWFjcyBpcyBpbnN0YWxsZWQgdXNpbmc8YnI+LS1wcmVmaXg9XCZxdW90OyR7UFJF RklYX0RJUn1cJnF1b3Q7IHRoaXMgdmFsdWUgd291bGQgdHlwaWNhbGx5IGJlPGJyPlwmcXVvdDsk e1BSRUZJWF9ESVJ9L3NoYXJlL2VtYWNzLyZsdDtWRVJTSU9OJmd0Oy9saXNwL1wmcXVvdDsuJnF1 b3Q7KSk8YnI+PGJyPkkgdGhpbmsgaXQgd291bGQgYmUgdXNlZnVsIHRvIGluY2x1ZGUgdGhlIHNo YXJlLyBhbmQgbGlzcC8gZGlycyBzdG9yZWQgaW4gc29tZSB2YXJpYWJsZSBpbiBlbWFjcyBjb3Jl LCBqdXN0IGxpa2UgaW52b2NhdGlvbi1kaXJlY3RvcnkuIDxicj48YnI+WzFdOjxhIGhyZWY9Imh0 dHBzOi8vZ2l0aHViLmNvbS9rYXVzaGFsbW9kaS8uZW1hY3MuZC9jb21taXQvNjRiMGMzZmJmMzM3 MmJkOTZhMzJkMWYyNGQ5YWRlYjkxMTJhYmQwOCI+aHR0cHM6Ly9naXRodWIuY29tL2thdXNoYWxt b2RpLy5lbWFjcy5kL2NvbW1pdC82NGIwYzNmYmYzMzcyYmQ5NmEzMmQxZjI0ZDlhZGViOTExMmFi ZDA4PC9hPiA8YnI+PC9kaXY+PC9kaXY+PC9kaXY+LS0gPGJyPjxkaXYgZGlyPSJsdHIiIGNsYXNz PSJnbWFpbF9zaWduYXR1cmUiIGRhdGEtc21hcnRtYWlsPSJnbWFpbF9zaWduYXR1cmUiPjxwIGRp cj0ibHRyIj5LYXVzaGFsIE1vZGk8L3A+DQo8L2Rpdj4NCg== --94eb2c001d38bc16590565aaa22b--