From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: yyoncho Newsgroups: gmane.emacs.bugs Subject: bug#31138: Native json slower than json.el Date: Sun, 24 Mar 2019 22:57:58 +0200 Message-ID: References: <87sh806xwa.fsf@chapu.is> <834lkf7ely.fsf@gnu.org> <878t9own1p.fsf@chapu.is> <838t9o4hvl.fsf@gnu.org> <83r2ayovkx.fsf@gnu.org> <83pnqiormy.fsf@gnu.org> <83lg15pvzr.fsf@gnu.org> <83k1gppu73.fsf@gnu.org> <83ftrdprmj.fsf@gnu.org> <83d0mhpn99.fsf@gnu.org> <83zhplo25s.fsf@gnu.org> <83va09nwg3.fsf@gnu.org> <83tvftne0j.fsf@gnu.org> <40DA9396-044E-4D00-946E-42B776B51BFA@gnu.org> <83r2awnw0w.fsf@gnu.org> <83d0mgnn31.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="0000000000006189270584dd58c5" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="84851"; mail-complaints-to="usenet@blaine.gmane.org" Cc: =?UTF-8?Q?S=C3=A9bastien?= Chapuis , 31138@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Mar 24 22:14:33 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1h8ARs-000LyB-Hq for geb-bug-gnu-emacs@m.gmane.org; Sun, 24 Mar 2019 22:14:32 +0100 Original-Received: from localhost ([127.0.0.1]:60816 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h8ARr-0002Yw-HO for geb-bug-gnu-emacs@m.gmane.org; Sun, 24 Mar 2019 17:14:31 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:46653) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h8ARg-0001rz-JF for bug-gnu-emacs@gnu.org; Sun, 24 Mar 2019 17:14:21 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h8ACu-0004jx-4s for bug-gnu-emacs@gnu.org; Sun, 24 Mar 2019 16:59:05 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:43633) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h8ACs-0004iu-BY for bug-gnu-emacs@gnu.org; Sun, 24 Mar 2019 16:59:04 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1h8ACs-0003h2-79 for bug-gnu-emacs@gnu.org; Sun, 24 Mar 2019 16:59:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: yyoncho Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 24 Mar 2019 20:59:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31138 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: moreinfo Original-Received: via spool by 31138-submit@debbugs.gnu.org id=B31138.155346109714127 (code B ref 31138); Sun, 24 Mar 2019 20:59:02 +0000 Original-Received: (at 31138) by debbugs.gnu.org; 24 Mar 2019 20:58:17 +0000 Original-Received: from localhost ([127.0.0.1]:57177 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h8AC8-0003fl-Uw for submit@debbugs.gnu.org; Sun, 24 Mar 2019 16:58:17 -0400 Original-Received: from mail-qk1-f194.google.com ([209.85.222.194]:36377) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h8AC6-0003fX-JH for 31138@debbugs.gnu.org; Sun, 24 Mar 2019 16:58:15 -0400 Original-Received: by mail-qk1-f194.google.com with SMTP id k130so4186188qke.3 for <31138@debbugs.gnu.org>; Sun, 24 Mar 2019 13:58:14 -0700 (PDT) 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=qLq7ymcZ1a66v4z+CihkkPyc1YaPM4sBG4r9zWtjQKM=; b=FPHUQ0pM3yFm0vZPXUfk040/VLPvBrZkMgAuOmGCHAolUmdmakNXm7TqcCWvdNJ6AY RUpoEuUMUCc0G8iDb8Z+xdTSXIDQWbJzUYBvvIe6wSqkqH50LWAvk91UaAQV3XecZCx6 GOzCMQ/pccWxd0FrokO1Wd22TqZtaI/CPIvo1mdZFS7A8YeYbKaaV3QWUKBV6EBPMuI1 8mZ4tINgALjvqWt86LDvbV8dmfR68mtRoWtQ/4OEbW4d7Yq9qi8PNQTCPHeJQU//hdfX 0mq4AxFRopH1YysLER/S4oWWpnRI6JP2mur2mR/ffhfHkJTtuo4GCVtlw4IsDZ26/659 a8oQ== 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=qLq7ymcZ1a66v4z+CihkkPyc1YaPM4sBG4r9zWtjQKM=; b=anGrvRXAhB3avJInO3t0v7EmZwdmPD0uLYXwspBFzhcnD0rCgmsIjwUeSb4+tyW9NA 8tlsZoJvi92yuVQZKWSHPQPHfycl9cdJOXB7EALLkLimG52wElTiXiXp5efChF5puflE MYID+ofBUlkpia/iYtyZXdixU0MF8kWKsPD43ClZUWCpYkqWUS9bjXDPKekj/yavkz1+ QD0U/84U8oR4RJQGWv2LzutkVHuPxI3f3wG7tJTOEdGWyM0gzaUF8qHko15nO3wBJ5Jc bLBNYq9HnX/RaglmVEr8PY67L9g3bM5Pq+e1/1T7T9LWo4uq0wp3hC/cSmo2K44sdLa6 1lrg== X-Gm-Message-State: APjAAAVRytCGgOnnZi3eaifPuzQV3bytn7+uMmkPJS05OvgQJ0NCBEWY DYAzgFvfS6mWC+QPs+ZrSDrHPsfWuK36tFXUc+c= X-Google-Smtp-Source: APXvYqwD1/BRRzZA98nDIfGQvyEQtouNfCWp+4u1750gvH4lkH/683LO4QNwDV7KFDI5HhkhS8jwPchuQMcfE3IbpL8= X-Received: by 2002:a37:4c08:: with SMTP id z8mr16798041qka.32.1553461088978; Sun, 24 Mar 2019 13:58:08 -0700 (PDT) In-Reply-To: <83d0mgnn31.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:156719 Archived-At: --0000000000006189270584dd58c5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Eli, >From what I can see the Qbuffer_list_update_hook is called. - command-execute 865 92% - call-interactively 865 92% - funcall-interactively 865 92% - eval-defun 865 92% - apply 865 92% - edebug-eval-defun 865 92% - eval 865 92% - progn 865 92% - message 865 92% - benchmark-run 865 92% - let 865 92% - list 865 92% - benchmark-elapse 865 92% - let 865 92% - ignore 865 92% - json-parse-string 596 63% - run-hooks 303 32% - doom-modeline-update-persp-name 116 12% - get-current-persp 110 11% get-frame-persp 96 10% + window-persp-set-p 4 0% # 1 0% + doom-modeline-set-selected-window 7 0= % - # 268 28% + spacemacs/useful-buffer-p 245 26% + # 17 1% + replace-buffer-in-windows 21 2% + ... 74 7% I want to share some observations: 1. The hooks are not called initially, I am not sure what triggers them. This makes the json parsing extremely slow(100 times) 2. Even without the hooks, the JSON parsing is slower than the emacs -q native parsing when I am running my setup. This will require additional investigation. Thanks, Ivan On Sun, Mar 24, 2019 at 8:28 PM Eli Zaretskii wrote: > > From: yyoncho > > Date: Sun, 24 Mar 2019 20:24:35 +0200 > > Cc: S=C3=A9bastien Chapuis , > > 31138@debbugs.gnu.org > > > > Before starting to test the patch I saw that Fget_buffer_create is > running Qbuffer_list_update_hook - do we > > need to do a similar thing for it too? > > Maybe, but let's first see if the patch as I sent is already producing > some positive effect, shall we? > --0000000000006189270584dd58c5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9Imx0ciI+SGkgRWxpLDxkaXY+PGJyPjwvZGl2PjxkaXY+ RnJvbSB3aGF0IEkgY2FuIHNlZSB0aGUgUWJ1ZmZlcl9saXN0X3VwZGF0ZV9ob29rIGlzIGNhbGxl ZC48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PjxkaXY+LSBjb21tYW5kLWV4ZWN1dGXCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoDg2NcKgIDkyJTwvZGl2PjxkaXY+wqAtIGNhbGwtaW50ZXJhY3RpdmVsecKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgODY1wqAgOTIlPC9kaXY+PGRpdj7CoCAtIGZ1bmNhbGwtaW50ZXJhY3RpdmVsecKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg ODY1wqAgOTIlPC9kaXY+PGRpdj7CoCDCoC0gZXZhbC1kZWZ1bsKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg ODY1wqAgOTIlPC9kaXY+PGRpdj7CoCDCoCAtIGFwcGx5wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqA4NjXCoCA5MiU8L2Rpdj48ZGl2PsKgIMKgIMKgLSBlZGVidWctZXZhbC1kZWZ1bsKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDg2 NcKgIDkyJTwvZGl2PjxkaXY+wqAgwqAgwqAgLSBldmFswqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg ODY1wqAgOTIlPC9kaXY+PGRpdj7CoCDCoCDCoCDCoC0gcHJvZ27CoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCA4NjXCoCA5MiU8L2Rpdj48ZGl2PsKgIMKgIMKgIMKgIC0gbWVzc2FnZcKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgODY1wqAgOTIlPC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoC0gYmVuY2htYXJrLXJ1bsKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IDg2NcKgIDkyJTwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAgLSBsZXTCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoDg2NcKgIDkyJTwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAgwqAtIGxpc3TCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoDg2NcKgIDkyJTwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAgwqAgLSBiZW5jaG1hcmst ZWxhcHNlwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgODY1wqAgOTIlPC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoCDCoCDCoC0gbGV0wqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgODY1wqAgOTIlPC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoCDCoCDCoCAtIGlnbm9yZcKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIDg2NcKgIDkyJTwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAtIGpzb24t cGFyc2Utc3RyaW5nwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgNTk2wqAgNjMlPC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAtIHJ1bi1ob29r c8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgMzAzwqAgMzIlPC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC0gZG9vbS1t b2RlbGluZS11cGRhdGUtcGVyc3AtbmFtZcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDExNsKgIDEy JTwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLSBnZXQtY3VycmVudC1wZXJz cMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgMTEwwqAgMTElPC9k aXY+PGRpdj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGdldC1mcmFtZS1wZXJzcMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgOTbCoCAxMCU8L2Rp dj48ZGl2PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKyB3aW5kb3ctcGVyc3Atc2V0LXDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDTCoCDCoDAlPC9kaXY+ PGRpdj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCMmbHQ7Y29tcGlsZWQgMHgxNTk0 ZGE4NmViMjUmZ3Q7wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAxwqAgwqAwJTwvZGl2 PjxkaXY+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqArIGRvb20tbW9kZWxpbmUtc2V0LXNlbGVj dGVkLXdpbmRvd8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDfCoCDCoDAlPC9kaXY+PGRpdj7C oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAtICMmbHQ7Y29tcGlsZWQgMHgxNTk0ZGEyYjRhMzkmZ3Q7 wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMjY4wqAgMjglPC9kaXY+PGRpdj7CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCsgc3BhY2VtYWNzL3VzZWZ1bC1idWZmZXItcMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDI0NcKgIDI2JTwvZGl2PjxkaXY+wqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqArICMmbHQ7bGFtYmRhIDB4ODVhOWUxMmVlNDkwMzAyJmd0O8KgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgMTfCoCDCoDElPC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCArIHJlcGxhY2UtYnVmZmVyLWluLXdpbmRvd3PCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCAyMcKgIMKgMiU8L2Rpdj48ZGl2PisgLi4uwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgNzTCoCDCoDclPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5J IHdhbnQgdG8gc2hhcmUgc29tZSBvYnNlcnZhdGlvbnM6PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRp dj4xLiBUaGUgaG9va3MgYXJlIG5vdCBjYWxsZWQgaW5pdGlhbGx5LCBJIGFtIG5vdCBzdXJlIHdo YXQgdHJpZ2dlcnMgdGhlbS4gVGhpcyBtYWtlcyB0aGUganNvbsKgcGFyc2luZyBleHRyZW1lbHkg c2xvdygxMDAgdGltZXMpPC9kaXY+PGRpdj4yLiBFdmVuIHdpdGhvdXQgdGhlIGhvb2tzLCB0aGUg SlNPTiBwYXJzaW5nIGlzIHNsb3dlciB0aGFuIHRoZSBlbWFjcyAtcSBuYXRpdmUgcGFyc2luZyB3 aGVuIEkgYW0gcnVubmluZyBteSBzZXR1cC4gVGhpcyB3aWxsIHJlcXVpcmUgYWRkaXRpb25hbCBp bnZlc3RpZ2F0aW9uLsKgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5UaGFua3MsPC9kaXY+PC9k aXY+PGRpdj5JdmFuPC9kaXY+PC9kaXY+PC9kaXY+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3Rl Ij48ZGl2IGRpcj0ibHRyIiBjbGFzcz0iZ21haWxfYXR0ciI+T24gU3VuLCBNYXIgMjQsIDIwMTkg YXQgODoyOCBQTSBFbGkgWmFyZXRza2lpICZsdDs8YSBocmVmPSJtYWlsdG86ZWxpekBnbnUub3Jn IiB0YXJnZXQ9Il9ibGFuayI+ZWxpekBnbnUub3JnPC9hPiZndDsgd3JvdGU6PGJyPjwvZGl2Pjxi bG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowcHggMHB4IDBweCAw LjhleDtib3JkZXItbGVmdDoxcHggc29saWQgcmdiKDIwNCwyMDQsMjA0KTtwYWRkaW5nLWxlZnQ6 MWV4Ij4mZ3Q7IEZyb206IHl5b25jaG8gJmx0OzxhIGhyZWY9Im1haWx0bzp5eW9uY2hvQGdtYWls LmNvbSIgdGFyZ2V0PSJfYmxhbmsiPnl5b25jaG9AZ21haWwuY29tPC9hPiZndDs8YnI+DQomZ3Q7 IERhdGU6IFN1biwgMjQgTWFyIDIwMTkgMjA6MjQ6MzUgKzAyMDA8YnI+DQomZ3Q7IENjOiBTw6li YXN0aWVuIENoYXB1aXMgJmx0OzxhIGhyZWY9Im1haWx0bzpzZWJhc3RpZW5AY2hhcHUuaXMiIHRh cmdldD0iX2JsYW5rIj5zZWJhc3RpZW5AY2hhcHUuaXM8L2E+Jmd0OywgPGJyPg0KJmd0O8KgIMKg IMKgIMKgPGEgaHJlZj0ibWFpbHRvOjMxMTM4QGRlYmJ1Z3MuZ251Lm9yZyIgdGFyZ2V0PSJfYmxh bmsiPjMxMTM4QGRlYmJ1Z3MuZ251Lm9yZzwvYT48YnI+DQomZ3Q7IDxicj4NCiZndDsgQmVmb3Jl IHN0YXJ0aW5nIHRvIHRlc3QgdGhlIHBhdGNoIEkgc2F3IHRoYXQgRmdldF9idWZmZXJfY3JlYXRl IGlzIHJ1bm5pbmcgUWJ1ZmZlcl9saXN0X3VwZGF0ZV9ob29rIC0gZG8gd2U8YnI+DQomZ3Q7IG5l ZWQgdG8gZG8gYSBzaW1pbGFyIHRoaW5nIGZvciBpdCB0b28/PGJyPg0KPGJyPg0KTWF5YmUsIGJ1 dCBsZXQmIzM5O3MgZmlyc3Qgc2VlIGlmIHRoZSBwYXRjaCBhcyBJIHNlbnQgaXMgYWxyZWFkeSBw cm9kdWNpbmc8YnI+DQpzb21lIHBvc2l0aXZlIGVmZmVjdCwgc2hhbGwgd2U/PGJyPg0KPC9ibG9j a3F1b3RlPjwvZGl2Pg0K --0000000000006189270584dd58c5--