From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Brand Subject: Re: [ANN] Lazy cache synchronization Date: Wed, 26 Feb 2014 14:33:50 +0100 Message-ID: References: <87ppmh1lq3.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a1139b8765eca0004f34f4186 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:52850) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WIecV-0000Lr-2I for emacs-orgmode@gnu.org; Wed, 26 Feb 2014 08:33:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WIecS-0000Sl-Lt for emacs-orgmode@gnu.org; Wed, 26 Feb 2014 08:33:54 -0500 Received: from mail-qa0-x230.google.com ([2607:f8b0:400d:c00::230]:62100) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WIecS-0000Sc-F5 for emacs-orgmode@gnu.org; Wed, 26 Feb 2014 08:33:52 -0500 Received: by mail-qa0-f48.google.com with SMTP id o15so2229001qap.7 for ; Wed, 26 Feb 2014 05:33:51 -0800 (PST) In-Reply-To: <87ppmh1lq3.fsf@gmail.com> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Nicolas Goaziou Cc: Org Mode List --001a1139b8765eca0004f34f4186 Content-Type: text/plain; charset=ISO-8859-1 Hi Nicolas On Thu, Feb 20, 2014 at 11:08 PM, Nicolas Goaziou wrote: > I just pushed an update for parser cache. The related commit release_8.2.5h-642-geed0500 commit eed0500913a3534a32abfd5864cf674d9d0cdf64 Author: Nicolas Goaziou Date: Fri Jan 31 01:14:44 2014 +0100 org-element: Implement lazy cache synchronization on master is a regression for find-file of an Org file containing the header * Definition of <<>> and <<>> Michael --001a1139b8765eca0004f34f4186 Content-Type: text/plain; charset=US-ASCII; name="Backtrace.txt" Content-Disposition: attachment; filename="Backtrace.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hs4md2pk0 RGVidWdnZXIgZW50ZXJlZC0tTGlzcCBlcnJvcjogKHdyb25nLXR5cGUtYXJndW1lbnQgaGFzaC10 YWJsZS1wIG5pbCkKICBnZXRoYXNoKChoZWFkbGluZSAoOnJhdy12YWx1ZSAiU3VtbWFyeSBvZiA8 PDxmb28+Pj4gYW5kIDw8PGJhcj4+PiIgOmJlZ2luIDEgOmVuZCAzOCA6cHJlLWJsYW5rIDAgOmNv bnRlbnRzLWJlZ2luIG5pbCA6Y29udGVudHMtZW5kIG5pbCA6bGV2ZWwgMSA6cHJpb3JpdHkgbmls IDp0YWdzIG5pbCA6dG9kby1rZXl3b3JkIG5pbCA6dG9kby10eXBlIG5pbCA6cG9zdC1ibGFuayAw IDpmb290bm90ZS1zZWN0aW9uLXAgbmlsIDphcmNoaXZlZHAgbmlsIDpjb21tZW50ZWRwIG5pbCA6 Q0FURUdPUlkgbmlsIDp0aXRsZSAiU3VtbWFyeSBvZiA8PDxmb28+Pj4gYW5kIDw8PGJhcj4+PiIp KSBuaWwpCiAgKGFuZCAob3JnLWVsZW1lbnQtLWNhY2hlLWFjdGl2ZS1wKSAoZ2V0aGFzaCBlbGVt ZW50IG9yZy1lbGVtZW50LS1jYWNoZS1vYmplY3RzKSkKICAobGV0KiAoKHJlc3RyaWN0aW9uIChv cmctZWxlbWVudC1yZXN0cmljdGlvbiB0eXBlKSkgKHBhcmVudCBlbGVtZW50KSAoY2FuZGlkYXRl cyAocXVvdGUgaW5pdGlhbCkpIChjYWNoZSAoYW5kIChvcmctZWxlbWVudC0tY2FjaGUtYWN0aXZl LXApIChnZXRoYXNoIGVsZW1lbnQgb3JnLWVsZW1lbnQtLWNhY2hlLW9iamVjdHMpKSkgb2JqZWN0 cy1kYXRhIG5leHQpIChwcm9nMSAoY2F0Y2ggKHF1b3RlIGV4aXQpICh3aGlsZSB0IChpZiBuZXh0 IG5pbCAobGV0ICgoZGF0YSAuLi4pKSAoaWYgZGF0YSAoc2V0cSBjYW5kaWRhdGVzIC4uLikgKHNl dHEgY2FjaGUgLi4uKSkpKSAoaWYgKG9yIG5leHQgKGVxIChxdW90ZSBpbml0aWFsKSBjYW5kaWRh dGVzKSkgKHByb2duIChzZXRxIGNhbmRpZGF0ZXMgKG9yZy1lbGVtZW50LS1nZXQtbmV4dC1vYmpl Y3QtY2FuZGlkYXRlcyByZXN0cmljdGlvbiBjYW5kaWRhdGVzKSkgKHNldGNhciAoY2RyIG9iamVj dHMtZGF0YSkgY2FuZGlkYXRlcykpKSAobGV0ICgoY2xvc2VzdCAoYW5kIGNhbmRpZGF0ZXMgLi4u KSkpIChpZiAob3IgKG5vdCBjbG9zZXN0KSAoPiAuLi4gb3JpZ2luKSkgKGNhdGNoIChxdW90ZSBm b3VuZCkgKHByb2duIC4uLikpIChnb3RvLWNoYXIgKGNkciBjbG9zZXN0KSkgKHNldHEgbmV4dCAo ZnVuY2FsbCAuLi4pKSAobGV0KiAoLi4uKSAoc2V0Y2RyIC4uLiAuLi4pKSkpIChsZXQgKChjYmVn IChvcmctZWxlbWVudC1wcm9wZXJ0eSA6Y29udGVudHMtYmVnaW4gbmV4dCkpIChjZW5kIChvcmct ZWxlbWVudC1wcm9wZXJ0eSA6Y29udGVudHMtZW5kIG5leHQpKSAob2JqLWVuZCAob3JnLWVsZW1l bnQtcHJvcGVydHkgOmVuZCBuZXh0KSkpIChjb25kICgoPD0gb2JqLWVuZCBvcmlnaW4pIChnb3Rv LWNoYXIgb2JqLWVuZCkpICgob3IgLi4uIC4uLiAuLi4pIChvcmctZWxlbWVudC1wdXQtcHJvcGVy dHkgbmV4dCA6cGFyZW50IHBhcmVudCkgKHRocm93IC4uLiBuZXh0KSkgKHQgKGdvdG8tY2hhciBj YmVnKSAobmFycm93LXRvLXJlZ2lvbiAuLi4gY2VuZCkgKG9yZy1lbGVtZW50LXB1dC1wcm9wZXJ0 eSBuZXh0IDpwYXJlbnQgcGFyZW50KSAoc2V0cSBwYXJlbnQgbmV4dCByZXN0cmljdGlvbiAuLi4g bmV4dCBuaWwgb2JqZWN0cy1kYXRhIG5pbCBjYW5kaWRhdGVzIC4uLikpKSkpKSAob3JnLWVsZW1l bnQtLWNhY2hlLXB1dCBlbGVtZW50IGNhY2hlKSkpCiAgKGxldCogKChvcmlnaW4gKHBvaW50KSkg KGVsZW1lbnQgKG9yIGVsZW1lbnQgKG9yZy1lbGVtZW50LWF0LXBvaW50KSkpICh0eXBlIChvcmct ZWxlbWVudC10eXBlIGVsZW1lbnQpKSkgKGNvbmQgKChsZXQgKChwb3N0IChvcmctZWxlbWVudC1w cm9wZXJ0eSA6cG9zdC1hZmZpbGlhdGVkIGVsZW1lbnQpKSkgKGFuZCBwb3N0ICg8IG9yaWdpbiBw b3N0KSkpIChiZWdpbm5pbmctb2YtbGluZSkgKGxldCAoKGNhc2UtZm9sZC1zZWFyY2ggdCkpIChs b29raW5nLWF0IG9yZy1lbGVtZW50LS1hZmZpbGlhdGVkLXJlKSkgKGNvbmQgKChub3QgKG1lbWJl ci1pZ25vcmUtY2FzZSAobWF0Y2gtc3RyaW5nIDEpIG9yZy1lbGVtZW50LXBhcnNlZC1rZXl3b3Jk cykpICh0aHJvdyAocXVvdGUgb2JqZWN0cy1mb3JiaWRkZW4pIGVsZW1lbnQpKSAoKDwgKG1hdGNo LWVuZCAwKSBvcmlnaW4pIChuYXJyb3ctdG8tcmVnaW9uIChtYXRjaC1lbmQgMCkgKGxpbmUtZW5k LXBvc2l0aW9uKSkpICgoYW5kIChtYXRjaC1iZWdpbm5pbmcgMikgKD49IG9yaWdpbiAobWF0Y2gt YmVnaW5uaW5nIDIpKSAoPCBvcmlnaW4gKG1hdGNoLWVuZCAyKSkpIChuYXJyb3ctdG8tcmVnaW9u IChtYXRjaC1iZWdpbm5pbmcgMikgKG1hdGNoLWVuZCAyKSkpICh0ICh0aHJvdyAocXVvdGUgb2Jq ZWN0cy1mb3JiaWRkZW4pIGVsZW1lbnQpKSkgKHNldHEgdHlwZSAocXVvdGUga2V5d29yZCkpKSAo KGVxIHR5cGUgKHF1b3RlIGl0ZW0pKSAobGV0ICgodGFnIChvcmctZWxlbWVudC1wcm9wZXJ0eSA6 dGFnIGVsZW1lbnQpKSkgKGlmIChub3QgdGFnKSAodGhyb3cgKHF1b3RlIG9iamVjdHMtZm9yYmlk ZGVuKSBlbGVtZW50KSAoYmVnaW5uaW5nLW9mLWxpbmUpIChzZWFyY2gtZm9yd2FyZCB0YWcgKGxp bmUtZW5kLXBvc2l0aW9uKSkgKGdvdG8tY2hhciAobWF0Y2gtYmVnaW5uaW5nIDApKSAoaWYgKGFu ZCAoPj0gb3JpZ2luIC4uLikgKDwgb3JpZ2luIC4uLikpIChuYXJyb3ctdG8tcmVnaW9uIChwb2lu dCkgKG1hdGNoLWVuZCAwKSkgKHRocm93IChxdW90ZSBvYmplY3RzLWZvcmJpZGRlbikgZWxlbWVu dCkpKSkpICgobWVtcSB0eXBlIChxdW90ZSAoaGVhZGxpbmUgaW5saW5ldGFzaykpKSAoZ290by1j aGFyIChvcmctZWxlbWVudC1wcm9wZXJ0eSA6YmVnaW4gZWxlbWVudCkpIChza2lwLWNoYXJzLWZv cndhcmQgIiogIikgKGlmIChhbmQgKD49IG9yaWdpbiAocG9pbnQpKSAoPCBvcmlnaW4gKGxpbmUt ZW5kLXBvc2l0aW9uKSkpIChuYXJyb3ctdG8tcmVnaW9uIChwb2ludCkgKGxpbmUtZW5kLXBvc2l0 aW9uKSkgKHRocm93IChxdW90ZSBvYmplY3RzLWZvcmJpZGRlbikgZWxlbWVudCkpKSAoKG1lbXEg dHlwZSAocXVvdGUgKHBhcmFncmFwaCB0YWJsZS1yb3cgdmVyc2UtYmxvY2spKSkgKGxldCAoKGNi ZWcgKG9yZy1lbGVtZW50LXByb3BlcnR5IDpjb250ZW50cy1iZWdpbiBlbGVtZW50KSkgKGNlbmQg KG9yZy1lbGVtZW50LXByb3BlcnR5IDpjb250ZW50cy1lbmQgZWxlbWVudCkpKSAoaWYgKGFuZCBj YmVnIGNlbmQgKD49IG9yaWdpbiBjYmVnKSAob3IgKDwgb3JpZ2luIGNlbmQpIChhbmQgLi4uIC4u LikpKSAobmFycm93LXRvLXJlZ2lvbiBjYmVnIGNlbmQpICh0aHJvdyAocXVvdGUgb2JqZWN0cy1m b3JiaWRkZW4pIGVsZW1lbnQpKSkpICgoZXEgdHlwZSAocXVvdGUga2V5d29yZCkpIChpZiAobm90 IChtZW1iZXIgKG9yZy1lbGVtZW50LXByb3BlcnR5IDprZXkgZWxlbWVudCkgb3JnLWVsZW1lbnQt ZG9jdW1lbnQtcHJvcGVydGllcykpICh0aHJvdyAocXVvdGUgb2JqZWN0cy1mb3JiaWRkZW4pIGVs ZW1lbnQpIChiZWdpbm5pbmctb2YtbGluZSkgKHNlYXJjaC1mb3J3YXJkICI6IikgKGlmIChhbmQg KD49IG9yaWdpbiAocG9pbnQpKSAoPCBvcmlnaW4gKGxpbmUtZW5kLXBvc2l0aW9uKSkpIChuYXJy b3ctdG8tcmVnaW9uIChwb2ludCkgKGxpbmUtZW5kLXBvc2l0aW9uKSkgKHRocm93IChxdW90ZSBv YmplY3RzLWZvcmJpZGRlbikgZWxlbWVudCkpKSkgKChlcSB0eXBlIChxdW90ZSBwbGFubmluZykp IChwcm9nbiAobGV0ICgoLS1kb2xpc3QtdGFpbC0tIChxdW90ZSAuLi4pKSBwKSAod2hpbGUgLS1k b2xpc3QtdGFpbC0tIChzZXRxIHAgKGNhciAtLWRvbGlzdC10YWlsLS0pKSAobGV0ICguLi4pIChp ZiAuLi4gLi4uKSkgKHNldHEgLS1kb2xpc3QtdGFpbC0tIChjZHIgLS1kb2xpc3QtdGFpbC0tKSkp KSkgKHRocm93IChxdW90ZSBvYmplY3RzLWZvcmJpZGRlbikgZWxlbWVudCkpICh0ICh0aHJvdyAo cXVvdGUgb2JqZWN0cy1mb3JiaWRkZW4pIGVsZW1lbnQpKSkgKGdvdG8tY2hhciAocG9pbnQtbWlu KSkgKGxldCogKChyZXN0cmljdGlvbiAob3JnLWVsZW1lbnQtcmVzdHJpY3Rpb24gdHlwZSkpIChw YXJlbnQgZWxlbWVudCkgKGNhbmRpZGF0ZXMgKHF1b3RlIGluaXRpYWwpKSAoY2FjaGUgKGFuZCAo b3JnLWVsZW1lbnQtLWNhY2hlLWFjdGl2ZS1wKSAoZ2V0aGFzaCBlbGVtZW50IG9yZy1lbGVtZW50 LS1jYWNoZS1vYmplY3RzKSkpIG9iamVjdHMtZGF0YSBuZXh0KSAocHJvZzEgKGNhdGNoIChxdW90 ZSBleGl0KSAod2hpbGUgdCAoaWYgbmV4dCBuaWwgKGxldCAoLi4uKSAoaWYgZGF0YSAuLi4gLi4u KSkpIChpZiAob3IgbmV4dCAoZXEgLi4uIGNhbmRpZGF0ZXMpKSAocHJvZ24gKHNldHEgY2FuZGlk YXRlcyAuLi4pIChzZXRjYXIgLi4uIGNhbmRpZGF0ZXMpKSkgKGxldCAoKGNsb3Nlc3QgLi4uKSkg KGlmIChvciAuLi4gLi4uKSAoY2F0Y2ggLi4uIC4uLikgKGdvdG8tY2hhciAuLi4pIChzZXRxIG5l eHQgLi4uKSAobGV0KiAuLi4gLi4uKSkpIChsZXQgKChjYmVnIC4uLikgKGNlbmQgLi4uKSAob2Jq LWVuZCAuLi4pKSAoY29uZCAoLi4uIC4uLikgKC4uLiAuLi4gLi4uKSAodCAuLi4gLi4uIC4uLiAu Li4pKSkpKSAob3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBlbGVtZW50IGNhY2hlKSkpKQogIChzYXZl LXJlc3RyaWN0aW9uICh3aWRlbikgKGxldCogKChvcmlnaW4gKHBvaW50KSkgKGVsZW1lbnQgKG9y IGVsZW1lbnQgKG9yZy1lbGVtZW50LWF0LXBvaW50KSkpICh0eXBlIChvcmctZWxlbWVudC10eXBl IGVsZW1lbnQpKSkgKGNvbmQgKChsZXQgKChwb3N0IChvcmctZWxlbWVudC1wcm9wZXJ0eSA6cG9z dC1hZmZpbGlhdGVkIGVsZW1lbnQpKSkgKGFuZCBwb3N0ICg8IG9yaWdpbiBwb3N0KSkpIChiZWdp bm5pbmctb2YtbGluZSkgKGxldCAoKGNhc2UtZm9sZC1zZWFyY2ggdCkpIChsb29raW5nLWF0IG9y Zy1lbGVtZW50LS1hZmZpbGlhdGVkLXJlKSkgKGNvbmQgKChub3QgKG1lbWJlci1pZ25vcmUtY2Fz ZSAuLi4gb3JnLWVsZW1lbnQtcGFyc2VkLWtleXdvcmRzKSkgKHRocm93IChxdW90ZSBvYmplY3Rz LWZvcmJpZGRlbikgZWxlbWVudCkpICgoPCAobWF0Y2gtZW5kIDApIG9yaWdpbikgKG5hcnJvdy10 by1yZWdpb24gKG1hdGNoLWVuZCAwKSAobGluZS1lbmQtcG9zaXRpb24pKSkgKChhbmQgKG1hdGNo LWJlZ2lubmluZyAyKSAoPj0gb3JpZ2luIC4uLikgKDwgb3JpZ2luIC4uLikpIChuYXJyb3ctdG8t cmVnaW9uIChtYXRjaC1iZWdpbm5pbmcgMikgKG1hdGNoLWVuZCAyKSkpICh0ICh0aHJvdyAocXVv dGUgb2JqZWN0cy1mb3JiaWRkZW4pIGVsZW1lbnQpKSkgKHNldHEgdHlwZSAocXVvdGUga2V5d29y ZCkpKSAoKGVxIHR5cGUgKHF1b3RlIGl0ZW0pKSAobGV0ICgodGFnIChvcmctZWxlbWVudC1wcm9w ZXJ0eSA6dGFnIGVsZW1lbnQpKSkgKGlmIChub3QgdGFnKSAodGhyb3cgKHF1b3RlIG9iamVjdHMt Zm9yYmlkZGVuKSBlbGVtZW50KSAoYmVnaW5uaW5nLW9mLWxpbmUpIChzZWFyY2gtZm9yd2FyZCB0 YWcgKGxpbmUtZW5kLXBvc2l0aW9uKSkgKGdvdG8tY2hhciAobWF0Y2gtYmVnaW5uaW5nIDApKSAo aWYgKGFuZCAuLi4gLi4uKSAobmFycm93LXRvLXJlZ2lvbiAuLi4gLi4uKSAodGhyb3cgLi4uIGVs ZW1lbnQpKSkpKSAoKG1lbXEgdHlwZSAocXVvdGUgKGhlYWRsaW5lIGlubGluZXRhc2spKSkgKGdv dG8tY2hhciAob3JnLWVsZW1lbnQtcHJvcGVydHkgOmJlZ2luIGVsZW1lbnQpKSAoc2tpcC1jaGFy cy1mb3J3YXJkICIqICIpIChpZiAoYW5kICg+PSBvcmlnaW4gKHBvaW50KSkgKDwgb3JpZ2luIChs aW5lLWVuZC1wb3NpdGlvbikpKSAobmFycm93LXRvLXJlZ2lvbiAocG9pbnQpIChsaW5lLWVuZC1w b3NpdGlvbikpICh0aHJvdyAocXVvdGUgb2JqZWN0cy1mb3JiaWRkZW4pIGVsZW1lbnQpKSkgKCht ZW1xIHR5cGUgKHF1b3RlIChwYXJhZ3JhcGggdGFibGUtcm93IHZlcnNlLWJsb2NrKSkpIChsZXQg KChjYmVnIChvcmctZWxlbWVudC1wcm9wZXJ0eSA6Y29udGVudHMtYmVnaW4gZWxlbWVudCkpIChj ZW5kIChvcmctZWxlbWVudC1wcm9wZXJ0eSA6Y29udGVudHMtZW5kIGVsZW1lbnQpKSkgKGlmIChh bmQgY2JlZyBjZW5kICg+PSBvcmlnaW4gY2JlZykgKG9yIC4uLiAuLi4pKSAobmFycm93LXRvLXJl Z2lvbiBjYmVnIGNlbmQpICh0aHJvdyAocXVvdGUgb2JqZWN0cy1mb3JiaWRkZW4pIGVsZW1lbnQp KSkpICgoZXEgdHlwZSAocXVvdGUga2V5d29yZCkpIChpZiAobm90IChtZW1iZXIgKG9yZy1lbGVt ZW50LXByb3BlcnR5IDprZXkgZWxlbWVudCkgb3JnLWVsZW1lbnQtZG9jdW1lbnQtcHJvcGVydGll cykpICh0aHJvdyAocXVvdGUgb2JqZWN0cy1mb3JiaWRkZW4pIGVsZW1lbnQpIChiZWdpbm5pbmct b2YtbGluZSkgKHNlYXJjaC1mb3J3YXJkICI6IikgKGlmIChhbmQgKD49IG9yaWdpbiAuLi4pICg8 IG9yaWdpbiAuLi4pKSAobmFycm93LXRvLXJlZ2lvbiAocG9pbnQpIChsaW5lLWVuZC1wb3NpdGlv bikpICh0aHJvdyAocXVvdGUgb2JqZWN0cy1mb3JiaWRkZW4pIGVsZW1lbnQpKSkpICgoZXEgdHlw ZSAocXVvdGUgcGxhbm5pbmcpKSAocHJvZ24gKGxldCAoKC0tZG9saXN0LXRhaWwtLSAuLi4pIHAp ICh3aGlsZSAtLWRvbGlzdC10YWlsLS0gKHNldHEgcCAuLi4pIChsZXQgLi4uIC4uLikgKHNldHEg LS1kb2xpc3QtdGFpbC0tIC4uLikpKSkgKHRocm93IChxdW90ZSBvYmplY3RzLWZvcmJpZGRlbikg ZWxlbWVudCkpICh0ICh0aHJvdyAocXVvdGUgb2JqZWN0cy1mb3JiaWRkZW4pIGVsZW1lbnQpKSkg KGdvdG8tY2hhciAocG9pbnQtbWluKSkgKGxldCogKChyZXN0cmljdGlvbiAob3JnLWVsZW1lbnQt cmVzdHJpY3Rpb24gdHlwZSkpIChwYXJlbnQgZWxlbWVudCkgKGNhbmRpZGF0ZXMgKHF1b3RlIGlu aXRpYWwpKSAoY2FjaGUgKGFuZCAob3JnLWVsZW1lbnQtLWNhY2hlLWFjdGl2ZS1wKSAoZ2V0aGFz aCBlbGVtZW50IG9yZy1lbGVtZW50LS1jYWNoZS1vYmplY3RzKSkpIG9iamVjdHMtZGF0YSBuZXh0 KSAocHJvZzEgKGNhdGNoIChxdW90ZSBleGl0KSAod2hpbGUgdCAoaWYgbmV4dCBuaWwgKGxldCAu Li4gLi4uKSkgKGlmIChvciBuZXh0IC4uLikgKHByb2duIC4uLiAuLi4pKSAobGV0ICguLi4pIChp ZiAuLi4gLi4uIC4uLiAuLi4gLi4uKSkgKGxldCAoLi4uIC4uLiAuLi4pIChjb25kIC4uLiAuLi4g Li4uKSkpKSAob3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBlbGVtZW50IGNhY2hlKSkpKSkKICAoc2F2 ZS1leGN1cnNpb24gKHNhdmUtcmVzdHJpY3Rpb24gKHdpZGVuKSAobGV0KiAoKG9yaWdpbiAocG9p bnQpKSAoZWxlbWVudCAob3IgZWxlbWVudCAob3JnLWVsZW1lbnQtYXQtcG9pbnQpKSkgKHR5cGUg KG9yZy1lbGVtZW50LXR5cGUgZWxlbWVudCkpKSAoY29uZCAoKGxldCAoKHBvc3QgLi4uKSkgKGFu ZCBwb3N0ICg8IG9yaWdpbiBwb3N0KSkpIChiZWdpbm5pbmctb2YtbGluZSkgKGxldCAoKGNhc2Ut Zm9sZC1zZWFyY2ggdCkpIChsb29raW5nLWF0IG9yZy1lbGVtZW50LS1hZmZpbGlhdGVkLXJlKSkg KGNvbmQgKChub3QgLi4uKSAodGhyb3cgLi4uIGVsZW1lbnQpKSAoKDwgLi4uIG9yaWdpbikgKG5h cnJvdy10by1yZWdpb24gLi4uIC4uLikpICgoYW5kIC4uLiAuLi4gLi4uKSAobmFycm93LXRvLXJl Z2lvbiAuLi4gLi4uKSkgKHQgKHRocm93IC4uLiBlbGVtZW50KSkpIChzZXRxIHR5cGUgKHF1b3Rl IGtleXdvcmQpKSkgKChlcSB0eXBlIChxdW90ZSBpdGVtKSkgKGxldCAoKHRhZyAuLi4pKSAoaWYg KG5vdCB0YWcpICh0aHJvdyAuLi4gZWxlbWVudCkgKGJlZ2lubmluZy1vZi1saW5lKSAoc2VhcmNo LWZvcndhcmQgdGFnIC4uLikgKGdvdG8tY2hhciAuLi4pIChpZiAuLi4gLi4uIC4uLikpKSkgKCht ZW1xIHR5cGUgKHF1b3RlIChoZWFkbGluZSBpbmxpbmV0YXNrKSkpIChnb3RvLWNoYXIgKG9yZy1l bGVtZW50LXByb3BlcnR5IDpiZWdpbiBlbGVtZW50KSkgKHNraXAtY2hhcnMtZm9yd2FyZCAiKiAi KSAoaWYgKGFuZCAoPj0gb3JpZ2luIC4uLikgKDwgb3JpZ2luIC4uLikpIChuYXJyb3ctdG8tcmVn aW9uIChwb2ludCkgKGxpbmUtZW5kLXBvc2l0aW9uKSkgKHRocm93IChxdW90ZSBvYmplY3RzLWZv cmJpZGRlbikgZWxlbWVudCkpKSAoKG1lbXEgdHlwZSAocXVvdGUgKHBhcmFncmFwaCB0YWJsZS1y b3cgdmVyc2UtYmxvY2spKSkgKGxldCAoKGNiZWcgLi4uKSAoY2VuZCAuLi4pKSAoaWYgKGFuZCBj YmVnIGNlbmQgLi4uIC4uLikgKG5hcnJvdy10by1yZWdpb24gY2JlZyBjZW5kKSAodGhyb3cgLi4u IGVsZW1lbnQpKSkpICgoZXEgdHlwZSAocXVvdGUga2V5d29yZCkpIChpZiAobm90IChtZW1iZXIg Li4uIG9yZy1lbGVtZW50LWRvY3VtZW50LXByb3BlcnRpZXMpKSAodGhyb3cgKHF1b3RlIG9iamVj dHMtZm9yYmlkZGVuKSBlbGVtZW50KSAoYmVnaW5uaW5nLW9mLWxpbmUpIChzZWFyY2gtZm9yd2Fy ZCAiOiIpIChpZiAoYW5kIC4uLiAuLi4pIChuYXJyb3ctdG8tcmVnaW9uIC4uLiAuLi4pICh0aHJv dyAuLi4gZWxlbWVudCkpKSkgKChlcSB0eXBlIChxdW90ZSBwbGFubmluZykpIChwcm9nbiAobGV0 ICguLi4gcCkgKHdoaWxlIC0tZG9saXN0LXRhaWwtLSAuLi4gLi4uIC4uLikpKSAodGhyb3cgKHF1 b3RlIG9iamVjdHMtZm9yYmlkZGVuKSBlbGVtZW50KSkgKHQgKHRocm93IChxdW90ZSBvYmplY3Rz LWZvcmJpZGRlbikgZWxlbWVudCkpKSAoZ290by1jaGFyIChwb2ludC1taW4pKSAobGV0KiAoKHJl c3RyaWN0aW9uIChvcmctZWxlbWVudC1yZXN0cmljdGlvbiB0eXBlKSkgKHBhcmVudCBlbGVtZW50 KSAoY2FuZGlkYXRlcyAocXVvdGUgaW5pdGlhbCkpIChjYWNoZSAoYW5kIChvcmctZWxlbWVudC0t Y2FjaGUtYWN0aXZlLXApIChnZXRoYXNoIGVsZW1lbnQgb3JnLWVsZW1lbnQtLWNhY2hlLW9iamVj dHMpKSkgb2JqZWN0cy1kYXRhIG5leHQpIChwcm9nMSAoY2F0Y2ggKHF1b3RlIGV4aXQpICh3aGls ZSB0IChpZiBuZXh0IG5pbCAuLi4pIChpZiAuLi4gLi4uKSAobGV0IC4uLiAuLi4pIChsZXQgLi4u IC4uLikpKSAob3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBlbGVtZW50IGNhY2hlKSkpKSkpCiAgKGNh dGNoIChxdW90ZSBvYmplY3RzLWZvcmJpZGRlbikgKHNhdmUtZXhjdXJzaW9uIChzYXZlLXJlc3Ry aWN0aW9uICh3aWRlbikgKGxldCogKChvcmlnaW4gKHBvaW50KSkgKGVsZW1lbnQgKG9yIGVsZW1l bnQgKG9yZy1lbGVtZW50LWF0LXBvaW50KSkpICh0eXBlIChvcmctZWxlbWVudC10eXBlIGVsZW1l bnQpKSkgKGNvbmQgKChsZXQgKC4uLikgKGFuZCBwb3N0IC4uLikpIChiZWdpbm5pbmctb2YtbGlu ZSkgKGxldCAoLi4uKSAobG9va2luZy1hdCBvcmctZWxlbWVudC0tYWZmaWxpYXRlZC1yZSkpIChj b25kICguLi4gLi4uKSAoLi4uIC4uLikgKC4uLiAuLi4pICh0IC4uLikpIChzZXRxIHR5cGUgKHF1 b3RlIGtleXdvcmQpKSkgKChlcSB0eXBlIChxdW90ZSBpdGVtKSkgKGxldCAoLi4uKSAoaWYgLi4u IC4uLiAuLi4gLi4uIC4uLiAuLi4pKSkgKChtZW1xIHR5cGUgKHF1b3RlIC4uLikpIChnb3RvLWNo YXIgKG9yZy1lbGVtZW50LXByb3BlcnR5IDpiZWdpbiBlbGVtZW50KSkgKHNraXAtY2hhcnMtZm9y d2FyZCAiKiAiKSAoaWYgKGFuZCAuLi4gLi4uKSAobmFycm93LXRvLXJlZ2lvbiAuLi4gLi4uKSAo dGhyb3cgLi4uIGVsZW1lbnQpKSkgKChtZW1xIHR5cGUgKHF1b3RlIC4uLikpIChsZXQgKC4uLiAu Li4pIChpZiAuLi4gLi4uIC4uLikpKSAoKGVxIHR5cGUgKHF1b3RlIGtleXdvcmQpKSAoaWYgKG5v dCAuLi4pICh0aHJvdyAuLi4gZWxlbWVudCkgKGJlZ2lubmluZy1vZi1saW5lKSAoc2VhcmNoLWZv cndhcmQgIjoiKSAoaWYgLi4uIC4uLiAuLi4pKSkgKChlcSB0eXBlIChxdW90ZSBwbGFubmluZykp IChwcm9nbiAobGV0IC4uLiAuLi4pKSAodGhyb3cgKHF1b3RlIG9iamVjdHMtZm9yYmlkZGVuKSBl bGVtZW50KSkgKHQgKHRocm93IChxdW90ZSBvYmplY3RzLWZvcmJpZGRlbikgZWxlbWVudCkpKSAo Z290by1jaGFyIChwb2ludC1taW4pKSAobGV0KiAoKHJlc3RyaWN0aW9uIChvcmctZWxlbWVudC1y ZXN0cmljdGlvbiB0eXBlKSkgKHBhcmVudCBlbGVtZW50KSAoY2FuZGlkYXRlcyAocXVvdGUgaW5p dGlhbCkpIChjYWNoZSAoYW5kIC4uLiAuLi4pKSBvYmplY3RzLWRhdGEgbmV4dCkgKHByb2cxIChj YXRjaCAocXVvdGUgZXhpdCkgKHdoaWxlIHQgLi4uIC4uLiAuLi4gLi4uKSkgKG9yZy1lbGVtZW50 LS1jYWNoZS1wdXQgZWxlbWVudCBjYWNoZSkpKSkpKSkKICBvcmctZWxlbWVudC1jb250ZXh0KCkK ICAobGV0ICgob2JqIChvcmctZWxlbWVudC1jb250ZXh0KSkpIChpZiAobWVtcSAob3JnLWVsZW1l bnQtdHlwZSBvYmopIChxdW90ZSAocmFkaW8tdGFyZ2V0IHRhcmdldCkpKSAocHJvZ24gKGFkZC10 by1saXN0IChxdW90ZSBydG4pIChkb3duY2FzZSAob3JnLWVsZW1lbnQtcHJvcGVydHkgOnZhbHVl IG9iaikpKSkpKQogICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgcmUgbmlsIHQpIChiYWNrd2Fy ZC1jaGFyKSAobGV0ICgob2JqIChvcmctZWxlbWVudC1jb250ZXh0KSkpIChpZiAobWVtcSAob3Jn LWVsZW1lbnQtdHlwZSBvYmopIChxdW90ZSAocmFkaW8tdGFyZ2V0IHRhcmdldCkpKSAocHJvZ24g KGFkZC10by1saXN0IChxdW90ZSBydG4pIChkb3duY2FzZSAob3JnLWVsZW1lbnQtcHJvcGVydHkg OnZhbHVlIG9iaikpKSkpKSkKICAoc2F2ZS1leGN1cnNpb24gKGdvdG8tY2hhciAocG9pbnQtbWlu KSkgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZCByZSBuaWwgdCkgKGJhY2t3YXJkLWNoYXIpIChs ZXQgKChvYmogKG9yZy1lbGVtZW50LWNvbnRleHQpKSkgKGlmIChtZW1xIChvcmctZWxlbWVudC10 eXBlIG9iaikgKHF1b3RlIChyYWRpby10YXJnZXQgdGFyZ2V0KSkpIChwcm9nbiAoYWRkLXRvLWxp c3QgKHF1b3RlIHJ0bikgKGRvd25jYXNlIChvcmctZWxlbWVudC1wcm9wZXJ0eSA6dmFsdWUgb2Jq KSkpKSkpKSBydG4pCiAgKGxldCAoKHJlIChpZiByYWRpbyBvcmctcmFkaW8tdGFyZ2V0LXJlZ2V4 cCBvcmctdGFyZ2V0LXJlZ2V4cCkpIHJ0bikgKHNhdmUtZXhjdXJzaW9uIChnb3RvLWNoYXIgKHBv aW50LW1pbikpICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgcmUgbmlsIHQpIChiYWNrd2FyZC1j aGFyKSAobGV0ICgob2JqIChvcmctZWxlbWVudC1jb250ZXh0KSkpIChpZiAobWVtcSAob3JnLWVs ZW1lbnQtdHlwZSBvYmopIChxdW90ZSAocmFkaW8tdGFyZ2V0IHRhcmdldCkpKSAocHJvZ24gKGFk ZC10by1saXN0IChxdW90ZSBydG4pIChkb3duY2FzZSAuLi4pKSkpKSkgcnRuKSkKICBvcmctYWxs LXRhcmdldHMocmFkaW8pCiAgKG9yZy1tYWtlLXRhcmdldC1saW5rLXJlZ2V4cCAob3JnLWFsbC10 YXJnZXRzIChxdW90ZSByYWRpbykpKQogIChzZXRxIG9yZy10YXJnZXQtbGluay1yZWdleHAgKG9y Zy1tYWtlLXRhcmdldC1saW5rLXJlZ2V4cCAob3JnLWFsbC10YXJnZXRzIChxdW90ZSByYWRpbykp KSkKICAocHJvZ24gKHNldHEgb3JnLXRhcmdldC1saW5rLXJlZ2V4cCAob3JnLW1ha2UtdGFyZ2V0 LWxpbmstcmVnZXhwIChvcmctYWxsLXRhcmdldHMgKHF1b3RlIHJhZGlvKSkpKSAob3JnLXJlc3Rh cnQtZm9udC1sb2NrKSkKICAoaWYgKG1lbXEgKHF1b3RlIHJhZGlvKSBvcmctYWN0aXZhdGUtbGlu a3MpIChwcm9nbiAoc2V0cSBvcmctdGFyZ2V0LWxpbmstcmVnZXhwIChvcmctbWFrZS10YXJnZXQt bGluay1yZWdleHAgKG9yZy1hbGwtdGFyZ2V0cyAocXVvdGUgcmFkaW8pKSkpIChvcmctcmVzdGFy dC1mb250LWxvY2spKSkKICBvcmctdXBkYXRlLXJhZGlvLXRhcmdldC1yZWdleHAoKQogIChsZXQg KChkZWxheS1tb2RlLWhvb2tzIHQpKSAob3V0bGluZS1tb2RlKSAoc2V0cSBtYWpvci1tb2RlIChx dW90ZSBvcmctbW9kZSkpIChzZXRxIG1vZGUtbmFtZSAiT3JnIikgKHByb2duIChpZiAoZ2V0IChx dW90ZSBvdXRsaW5lLW1vZGUpIChxdW90ZSBtb2RlLWNsYXNzKSkgKHB1dCAocXVvdGUgb3JnLW1v ZGUpIChxdW90ZSBtb2RlLWNsYXNzKSAoZ2V0IChxdW90ZSBvdXRsaW5lLW1vZGUpIChxdW90ZSBt b2RlLWNsYXNzKSkpKSAoaWYgKGtleW1hcC1wYXJlbnQgb3JnLW1vZGUtbWFwKSBuaWwgKHNldC1r ZXltYXAtcGFyZW50IG9yZy1tb2RlLW1hcCAoY3VycmVudC1sb2NhbC1tYXApKSkgKGxldCAoKHBh cmVudCAoY2hhci10YWJsZS1wYXJlbnQgb3JnLW1vZGUtc3ludGF4LXRhYmxlKSkpIChpZiAoYW5k IHBhcmVudCAobm90IChlcSBwYXJlbnQgKHN0YW5kYXJkLXN5bnRheC10YWJsZSkpKSkgbmlsIChz ZXQtY2hhci10YWJsZS1wYXJlbnQgb3JnLW1vZGUtc3ludGF4LXRhYmxlIChzeW50YXgtdGFibGUp KSkpIChpZiAob3IgKGFiYnJldi10YWJsZS1nZXQgb3JnLW1vZGUtYWJicmV2LXRhYmxlIDpwYXJl bnRzKSAoZXEgb3JnLW1vZGUtYWJicmV2LXRhYmxlIGxvY2FsLWFiYnJldi10YWJsZSkpIG5pbCAo YWJicmV2LXRhYmxlLXB1dCBvcmctbW9kZS1hYmJyZXYtdGFibGUgOnBhcmVudHMgKGxpc3QgbG9j YWwtYWJicmV2LXRhYmxlKSkpKSAodXNlLWxvY2FsLW1hcCBvcmctbW9kZS1tYXApIChzZXQtc3lu dGF4LXRhYmxlIG9yZy1tb2RlLXN5bnRheC10YWJsZSkgKHNldHEgbG9jYWwtYWJicmV2LXRhYmxl IG9yZy1tb2RlLWFiYnJldi10YWJsZSkgKGlmIChmZWF0dXJlcCAocXVvdGUgeGVtYWNzKSkgKGlm IChib3VuZHAgKHF1b3RlIG91dGxpbmUtbW9kZS1tZW51LWhlYWRpbmcpKSAocHJvZ24gKGVhc3kt bWVudS1yZW1vdmUgb3V0bGluZS1tb2RlLW1lbnUtaGVhZGluZykgKGVhc3ktbWVudS1yZW1vdmUg b3V0bGluZS1tb2RlLW1lbnUtc2hvdykgKGVhc3ktbWVudS1yZW1vdmUgb3V0bGluZS1tb2RlLW1l bnUtaGlkZSkpKSAoZGVmaW5lLWtleSBvcmctbW9kZS1tYXAgW21lbnUtYmFyIGhlYWRpbmdzXSAo cXVvdGUgdW5kZWZpbmVkKSkgKGRlZmluZS1rZXkgb3JnLW1vZGUtbWFwIFttZW51LWJhciBoaWRl XSAocXVvdGUgdW5kZWZpbmVkKSkgKGRlZmluZS1rZXkgb3JnLW1vZGUtbWFwIFttZW51LWJhciBz aG93XSAocXVvdGUgdW5kZWZpbmVkKSkpIChvcmctbG9hZC1tb2R1bGVzLW1heWJlKSAoZWFzeS1t ZW51LWFkZCBvcmctb3JnLW1lbnUpIChlYXN5LW1lbnUtYWRkIG9yZy10YmwtbWVudSkgKG9yZy1p bnN0YWxsLWFnZW5kYS1maWxlcy1tZW51KSAoaWYgb3JnLWRlc2NyaXB0aXZlLWxpbmtzIChhZGQt dG8taW52aXNpYmlsaXR5LXNwZWMgKHF1b3RlIChvcmctbGluaykpKSkgKGFkZC10by1pbnZpc2li aWxpdHktc3BlYyAocXVvdGUgKG9yZy1jd2lkdGgpKSkgKGFkZC10by1pbnZpc2liaWxpdHktc3Bl YyAocXVvdGUgKG9yZy1oaWRlLWJsb2NrIC4gdCkpKSAoaWYgKGZlYXR1cmVwIChxdW90ZSB4ZW1h Y3MpKSAocHJvZ24gKG9yZy1zZXQtbG9jYWwgKHF1b3RlIGxpbmUtbW92ZS1pZ25vcmUtaW52aXNp YmxlKSB0KSkpIChvcmctc2V0LWxvY2FsIChxdW90ZSBvdXRsaW5lLXJlZ2V4cCkgb3JnLW91dGxp bmUtcmVnZXhwKSAob3JnLXNldC1sb2NhbCAocXVvdGUgb3V0bGluZS1sZXZlbCkgKHF1b3RlIG9y Zy1vdXRsaW5lLWxldmVsKSkgKHNldHEgYmlkaS1wYXJhZ3JhcGgtZGlyZWN0aW9uIChxdW90ZSBs ZWZ0LXRvLXJpZ2h0KSkgKGlmIChhbmQgb3JnLWVsbGlwc2lzIChmYm91bmRwIChxdW90ZSBzZXQt ZGlzcGxheS10YWJsZS1zbG90KSkgKGJvdW5kcCAocXVvdGUgYnVmZmVyLWRpc3BsYXktdGFibGUp KSAoZmJvdW5kcCAocXVvdGUgbWFrZS1nbHlwaC1jb2RlKSkpIChwcm9nbiAoaWYgb3JnLWRpc3Bs YXktdGFibGUgbmlsIChzZXRxIG9yZy1kaXNwbGF5LXRhYmxlIChtYWtlLWRpc3BsYXktdGFibGUp KSkgKHNldC1kaXNwbGF5LXRhYmxlLXNsb3Qgb3JnLWRpc3BsYXktdGFibGUgNCAodmNvbmNhdCAo bWFwY2FyIChmdW5jdGlvbiAobGFtYmRhIC4uLiAuLi4pKSAoaWYgKHN0cmluZ3Agb3JnLWVsbGlw c2lzKSBvcmctZWxsaXBzaXMgIi4uLiIpKSkpIChzZXRxIGJ1ZmZlci1kaXNwbGF5LXRhYmxlIG9y Zy1kaXNwbGF5LXRhYmxlKSkpIChvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMtZm9yLXRhZ3Mp IChvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMpIChvcmctc2V0LWZvbnQtbG9jay1kZWZhdWx0 cykgKGlmIChhbmQgb3JnLXRhZy1mYWNlcyAobm90IG9yZy10YWdzLXNwZWNpYWwtZmFjZXMtcmUp KSAocHJvZ24gKG9yZy1zZXQtdGFnLWZhY2VzIChxdW90ZSBvcmctdGFnLWZhY2VzKSBvcmctdGFn LWZhY2VzKSkpIChvcmctc2V0LWxvY2FsIChxdW90ZSBjYWxjLWVtYmVkZGVkLW9wZW4tbW9kZSkg IiMgIikgKG1vZGlmeS1zeW50YXgtZW50cnkgNjQgInciKSAobW9kaWZ5LXN5bnRheC1lbnRyeSAz NCAiXCIiKSAoaWYgb3JnLXN0YXJ0dXAtdHJ1bmNhdGVkIChzZXRxIHRydW5jYXRlLWxpbmVzIHQp KSAoaWYgb3JnLXN0YXJ0dXAtaW5kZW50ZWQgKHByb2duIChyZXF1aXJlIChxdW90ZSBvcmctaW5k ZW50KSkgKG9yZy1pbmRlbnQtbW9kZSAxKSkpIChvcmctc2V0LWxvY2FsIChxdW90ZSBmb250LWxv Y2stdW5mb250aWZ5LXJlZ2lvbi1mdW5jdGlvbikgKHF1b3RlIG9yZy11bmZvbnRpZnktcmVnaW9u KSkgKG9yZy1zZXQtbG9jYWwgKHF1b3RlIG9yZy10YWJsZS1tYXktbmVlZC11cGRhdGUpIHQpIChv cmctYWRkLWhvb2sgKHF1b3RlIGJlZm9yZS1jaGFuZ2UtZnVuY3Rpb25zKSAocXVvdGUgb3JnLWJl Zm9yZS1jaGFuZ2UtZnVuY3Rpb24pIG5pbCAocXVvdGUgbG9jYWwpKSAob3JnLWFkZC1ob29rIChx dW90ZSBraWxsLWJ1ZmZlci1ob29rKSAocXVvdGUgb3JnLWNoZWNrLXJ1bm5pbmctY2xvY2spIG5p bCAocXVvdGUgbG9jYWwpKSAob3JnLW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzKSAob3JnLXVw ZGF0ZS1yYWRpby10YXJnZXQtcmVnZXhwKSAob3JnLXNldC1sb2NhbCAocXVvdGUgaW5kZW50LWxp bmUtZnVuY3Rpb24pIChxdW90ZSBvcmctaW5kZW50LWxpbmUpKSAob3JnLXNldC1sb2NhbCAocXVv dGUgaW5kZW50LXJlZ2lvbi1mdW5jdGlvbikgKHF1b3RlIG9yZy1pbmRlbnQtcmVnaW9uKSkgKG9y Zy1zZXR1cC1maWxsaW5nKSAob3JnLXNldHVwLWNvbW1lbnRzLWhhbmRsaW5nKSAob3JnLWVsZW1l bnQtY2FjaGUtcmVzZXQpIChvcmctc2V0LWxvY2FsIChxdW90ZSBiZWdpbm5pbmctb2YtZGVmdW4t ZnVuY3Rpb24pIChxdW90ZSBvcmctYmFja3dhcmQtZWxlbWVudCkpIChvcmctc2V0LWxvY2FsIChx dW90ZSBlbmQtb2YtZGVmdW4tZnVuY3Rpb24pIChxdW90ZSBvcmctZm9yd2FyZC1lbGVtZW50KSkg KG9yZy1zZXQtbG9jYWwgKHF1b3RlIG5leHQtZXJyb3ItZnVuY3Rpb24pIChxdW90ZSBvcmctb2Nj dXItbmV4dC1tYXRjaCkpIChpZiBvcmctZW5mb3JjZS10b2RvLWRlcGVuZGVuY2llcyAoYWRkLWhv b2sgKHF1b3RlIG9yZy1ibG9ja2VyLWhvb2spIChxdW90ZSBvcmctYmxvY2stdG9kby1mcm9tLWNo aWxkcmVuLW9yLXNpYmxpbmdzLW9yLXBhcmVudCkpIChyZW1vdmUtaG9vayAocXVvdGUgb3JnLWJs b2NrZXItaG9vaykgKHF1b3RlIG9yZy1ibG9jay10b2RvLWZyb20tY2hpbGRyZW4tb3Itc2libGlu Z3Mtb3ItcGFyZW50KSkpIChpZiBvcmctZW5mb3JjZS10b2RvLWNoZWNrYm94LWRlcGVuZGVuY2ll cyAoYWRkLWhvb2sgKHF1b3RlIG9yZy1ibG9ja2VyLWhvb2spIChxdW90ZSBvcmctYmxvY2stdG9k by1mcm9tLWNoZWNrYm94ZXMpKSAocmVtb3ZlLWhvb2sgKHF1b3RlIG9yZy1ibG9ja2VyLWhvb2sp IChxdW90ZSBvcmctYmxvY2stdG9kby1mcm9tLWNoZWNrYm94ZXMpKSkgKG9yZy1zZXQtbG9jYWwg KHF1b3RlIGFsaWduLW1vZGUtcnVsZXMtbGlzdCkgKHF1b3RlICgob3JnLWluLWJ1ZmZlci1zZXR0 aW5ncyAocmVnZXhwIC4gIl4jXFwrW0EtWl9dKzpcXChcXHMtKlxcKVxcUy0rIikgKG1vZGVzIHF1 b3RlIChvcmctbW9kZSkpKSkpKSAob3JnLXNldC1sb2NhbCAocXVvdGUgaW1lbnUtY3JlYXRlLWlu ZGV4LWZ1bmN0aW9uKSAocXVvdGUgb3JnLWltZW51LWdldC10cmVlKSkgKGlmIChvciAoZmVhdHVy ZXAgKHF1b3RlIHhlbWFjcykpIChub3QgKGJvdW5kcCAocXVvdGUgb3V0bGluZS1pc2VhcmNoLW9w ZW4taW52aXNpYmxlLWZ1bmN0aW9uKSkpKSAob3JnLWFkZC1ob29rIChxdW90ZSBpc2VhcmNoLW1v ZGUtZW5kLWhvb2spIChxdW90ZSBvcmctaXNlYXJjaC1lbmQpIChxdW90ZSBhcHBlbmQpIChxdW90 ZSBsb2NhbCkpIChvcmctc2V0LWxvY2FsIChxdW90ZSBvdXRsaW5lLWlzZWFyY2gtb3Blbi1pbnZp c2libGUtZnVuY3Rpb24pIChmdW5jdGlvbiAobGFtYmRhICgmcmVzdCBpZ25vcmUpIChvcmctc2hv dy1jb250ZXh0IChxdW90ZSBpc2VhcmNoKSkpKSkgKG9yZy1hZGQtaG9vayAocXVvdGUgaXNlYXJj aC1tb2RlLWVuZC1ob29rKSAocXVvdGUgb3JnLWZpeC1lbGxpcHNpcy1hdC1ib2wpIChxdW90ZSBh cHBlbmQpIChxdW90ZSBsb2NhbCkpKSAuLi4pCiAgKHByb2duIChtYWtlLWxvY2FsLXZhcmlhYmxl IChxdW90ZSBkZWxheS1tb2RlLWhvb2tzKSkgKGxldCAoKGRlbGF5LW1vZGUtaG9va3MgdCkpIChv dXRsaW5lLW1vZGUpIChzZXRxIG1ham9yLW1vZGUgKHF1b3RlIG9yZy1tb2RlKSkgKHNldHEgbW9k ZS1uYW1lICJPcmciKSAocHJvZ24gKGlmIChnZXQgKHF1b3RlIG91dGxpbmUtbW9kZSkgKHF1b3Rl IG1vZGUtY2xhc3MpKSAocHV0IChxdW90ZSBvcmctbW9kZSkgKHF1b3RlIG1vZGUtY2xhc3MpIChn ZXQgKHF1b3RlIG91dGxpbmUtbW9kZSkgKHF1b3RlIG1vZGUtY2xhc3MpKSkpIChpZiAoa2V5bWFw LXBhcmVudCBvcmctbW9kZS1tYXApIG5pbCAoc2V0LWtleW1hcC1wYXJlbnQgb3JnLW1vZGUtbWFw IChjdXJyZW50LWxvY2FsLW1hcCkpKSAobGV0ICgocGFyZW50IChjaGFyLXRhYmxlLXBhcmVudCBv cmctbW9kZS1zeW50YXgtdGFibGUpKSkgKGlmIChhbmQgcGFyZW50IChub3QgKGVxIHBhcmVudCAu Li4pKSkgbmlsIChzZXQtY2hhci10YWJsZS1wYXJlbnQgb3JnLW1vZGUtc3ludGF4LXRhYmxlIChz eW50YXgtdGFibGUpKSkpIChpZiAob3IgKGFiYnJldi10YWJsZS1nZXQgb3JnLW1vZGUtYWJicmV2 LXRhYmxlIDpwYXJlbnRzKSAoZXEgb3JnLW1vZGUtYWJicmV2LXRhYmxlIGxvY2FsLWFiYnJldi10 YWJsZSkpIG5pbCAoYWJicmV2LXRhYmxlLXB1dCBvcmctbW9kZS1hYmJyZXYtdGFibGUgOnBhcmVu dHMgKGxpc3QgbG9jYWwtYWJicmV2LXRhYmxlKSkpKSAodXNlLWxvY2FsLW1hcCBvcmctbW9kZS1t YXApIChzZXQtc3ludGF4LXRhYmxlIG9yZy1tb2RlLXN5bnRheC10YWJsZSkgKHNldHEgbG9jYWwt YWJicmV2LXRhYmxlIG9yZy1tb2RlLWFiYnJldi10YWJsZSkgKGlmIChmZWF0dXJlcCAocXVvdGUg eGVtYWNzKSkgKGlmIChib3VuZHAgKHF1b3RlIG91dGxpbmUtbW9kZS1tZW51LWhlYWRpbmcpKSAo cHJvZ24gKGVhc3ktbWVudS1yZW1vdmUgb3V0bGluZS1tb2RlLW1lbnUtaGVhZGluZykgKGVhc3kt bWVudS1yZW1vdmUgb3V0bGluZS1tb2RlLW1lbnUtc2hvdykgKGVhc3ktbWVudS1yZW1vdmUgb3V0 bGluZS1tb2RlLW1lbnUtaGlkZSkpKSAoZGVmaW5lLWtleSBvcmctbW9kZS1tYXAgW21lbnUtYmFy IGhlYWRpbmdzXSAocXVvdGUgdW5kZWZpbmVkKSkgKGRlZmluZS1rZXkgb3JnLW1vZGUtbWFwIFtt ZW51LWJhciBoaWRlXSAocXVvdGUgdW5kZWZpbmVkKSkgKGRlZmluZS1rZXkgb3JnLW1vZGUtbWFw IFttZW51LWJhciBzaG93XSAocXVvdGUgdW5kZWZpbmVkKSkpIChvcmctbG9hZC1tb2R1bGVzLW1h eWJlKSAoZWFzeS1tZW51LWFkZCBvcmctb3JnLW1lbnUpIChlYXN5LW1lbnUtYWRkIG9yZy10Ymwt bWVudSkgKG9yZy1pbnN0YWxsLWFnZW5kYS1maWxlcy1tZW51KSAoaWYgb3JnLWRlc2NyaXB0aXZl LWxpbmtzIChhZGQtdG8taW52aXNpYmlsaXR5LXNwZWMgKHF1b3RlIChvcmctbGluaykpKSkgKGFk ZC10by1pbnZpc2liaWxpdHktc3BlYyAocXVvdGUgKG9yZy1jd2lkdGgpKSkgKGFkZC10by1pbnZp c2liaWxpdHktc3BlYyAocXVvdGUgKG9yZy1oaWRlLWJsb2NrIC4gdCkpKSAoaWYgKGZlYXR1cmVw IChxdW90ZSB4ZW1hY3MpKSAocHJvZ24gKG9yZy1zZXQtbG9jYWwgKHF1b3RlIGxpbmUtbW92ZS1p Z25vcmUtaW52aXNpYmxlKSB0KSkpIChvcmctc2V0LWxvY2FsIChxdW90ZSBvdXRsaW5lLXJlZ2V4 cCkgb3JnLW91dGxpbmUtcmVnZXhwKSAob3JnLXNldC1sb2NhbCAocXVvdGUgb3V0bGluZS1sZXZl bCkgKHF1b3RlIG9yZy1vdXRsaW5lLWxldmVsKSkgKHNldHEgYmlkaS1wYXJhZ3JhcGgtZGlyZWN0 aW9uIChxdW90ZSBsZWZ0LXRvLXJpZ2h0KSkgKGlmIChhbmQgb3JnLWVsbGlwc2lzIChmYm91bmRw IChxdW90ZSBzZXQtZGlzcGxheS10YWJsZS1zbG90KSkgKGJvdW5kcCAocXVvdGUgYnVmZmVyLWRp c3BsYXktdGFibGUpKSAoZmJvdW5kcCAocXVvdGUgbWFrZS1nbHlwaC1jb2RlKSkpIChwcm9nbiAo aWYgb3JnLWRpc3BsYXktdGFibGUgbmlsIChzZXRxIG9yZy1kaXNwbGF5LXRhYmxlIChtYWtlLWRp c3BsYXktdGFibGUpKSkgKHNldC1kaXNwbGF5LXRhYmxlLXNsb3Qgb3JnLWRpc3BsYXktdGFibGUg NCAodmNvbmNhdCAobWFwY2FyIChmdW5jdGlvbiAuLi4pIChpZiAuLi4gb3JnLWVsbGlwc2lzICIu Li4iKSkpKSAoc2V0cSBidWZmZXItZGlzcGxheS10YWJsZSBvcmctZGlzcGxheS10YWJsZSkpKSAo b3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25zLWZvci10YWdzKSAob3JnLXNldC1yZWdleHBzLWFu ZC1vcHRpb25zKSAob3JnLXNldC1mb250LWxvY2stZGVmYXVsdHMpIChpZiAoYW5kIG9yZy10YWct ZmFjZXMgKG5vdCBvcmctdGFncy1zcGVjaWFsLWZhY2VzLXJlKSkgKHByb2duIChvcmctc2V0LXRh Zy1mYWNlcyAocXVvdGUgb3JnLXRhZy1mYWNlcykgb3JnLXRhZy1mYWNlcykpKSAob3JnLXNldC1s b2NhbCAocXVvdGUgY2FsYy1lbWJlZGRlZC1vcGVuLW1vZGUpICIjICIpIChtb2RpZnktc3ludGF4 LWVudHJ5IDY0ICJ3IikgKG1vZGlmeS1zeW50YXgtZW50cnkgMzQgIlwiIikgKGlmIG9yZy1zdGFy dHVwLXRydW5jYXRlZCAoc2V0cSB0cnVuY2F0ZS1saW5lcyB0KSkgKGlmIG9yZy1zdGFydHVwLWlu ZGVudGVkIChwcm9nbiAocmVxdWlyZSAocXVvdGUgb3JnLWluZGVudCkpIChvcmctaW5kZW50LW1v ZGUgMSkpKSAob3JnLXNldC1sb2NhbCAocXVvdGUgZm9udC1sb2NrLXVuZm9udGlmeS1yZWdpb24t ZnVuY3Rpb24pIChxdW90ZSBvcmctdW5mb250aWZ5LXJlZ2lvbikpIChvcmctc2V0LWxvY2FsIChx dW90ZSBvcmctdGFibGUtbWF5LW5lZWQtdXBkYXRlKSB0KSAob3JnLWFkZC1ob29rIChxdW90ZSBi ZWZvcmUtY2hhbmdlLWZ1bmN0aW9ucykgKHF1b3RlIG9yZy1iZWZvcmUtY2hhbmdlLWZ1bmN0aW9u KSBuaWwgKHF1b3RlIGxvY2FsKSkgKG9yZy1hZGQtaG9vayAocXVvdGUga2lsbC1idWZmZXItaG9v aykgKHF1b3RlIG9yZy1jaGVjay1ydW5uaW5nLWNsb2NrKSBuaWwgKHF1b3RlIGxvY2FsKSkgKG9y Zy1tYWNyby1pbml0aWFsaXplLXRlbXBsYXRlcykgKG9yZy11cGRhdGUtcmFkaW8tdGFyZ2V0LXJl Z2V4cCkgKG9yZy1zZXQtbG9jYWwgKHF1b3RlIGluZGVudC1saW5lLWZ1bmN0aW9uKSAocXVvdGUg b3JnLWluZGVudC1saW5lKSkgKG9yZy1zZXQtbG9jYWwgKHF1b3RlIGluZGVudC1yZWdpb24tZnVu Y3Rpb24pIChxdW90ZSBvcmctaW5kZW50LXJlZ2lvbikpIChvcmctc2V0dXAtZmlsbGluZykgKG9y Zy1zZXR1cC1jb21tZW50cy1oYW5kbGluZykgKG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0KSAob3Jn LXNldC1sb2NhbCAocXVvdGUgYmVnaW5uaW5nLW9mLWRlZnVuLWZ1bmN0aW9uKSAocXVvdGUgb3Jn LWJhY2t3YXJkLWVsZW1lbnQpKSAob3JnLXNldC1sb2NhbCAocXVvdGUgZW5kLW9mLWRlZnVuLWZ1 bmN0aW9uKSAocXVvdGUgb3JnLWZvcndhcmQtZWxlbWVudCkpIChvcmctc2V0LWxvY2FsIChxdW90 ZSBuZXh0LWVycm9yLWZ1bmN0aW9uKSAocXVvdGUgb3JnLW9jY3VyLW5leHQtbWF0Y2gpKSAoaWYg b3JnLWVuZm9yY2UtdG9kby1kZXBlbmRlbmNpZXMgKGFkZC1ob29rIChxdW90ZSBvcmctYmxvY2tl ci1ob29rKSAocXVvdGUgb3JnLWJsb2NrLXRvZG8tZnJvbS1jaGlsZHJlbi1vci1zaWJsaW5ncy1v ci1wYXJlbnQpKSAocmVtb3ZlLWhvb2sgKHF1b3RlIG9yZy1ibG9ja2VyLWhvb2spIChxdW90ZSBv cmctYmxvY2stdG9kby1mcm9tLWNoaWxkcmVuLW9yLXNpYmxpbmdzLW9yLXBhcmVudCkpKSAoaWYg b3JnLWVuZm9yY2UtdG9kby1jaGVja2JveC1kZXBlbmRlbmNpZXMgKGFkZC1ob29rIChxdW90ZSBv cmctYmxvY2tlci1ob29rKSAocXVvdGUgb3JnLWJsb2NrLXRvZG8tZnJvbS1jaGVja2JveGVzKSkg KHJlbW92ZS1ob29rIChxdW90ZSBvcmctYmxvY2tlci1ob29rKSAocXVvdGUgb3JnLWJsb2NrLXRv ZG8tZnJvbS1jaGVja2JveGVzKSkpIChvcmctc2V0LWxvY2FsIChxdW90ZSBhbGlnbi1tb2RlLXJ1 bGVzLWxpc3QpIChxdW90ZSAoKG9yZy1pbi1idWZmZXItc2V0dGluZ3MgKHJlZ2V4cCAuICJeI1xc K1tBLVpfXSs6XFwoXFxzLSpcXClcXFMtKyIpIChtb2RlcyBxdW90ZSAob3JnLW1vZGUpKSkpKSkg KG9yZy1zZXQtbG9jYWwgKHF1b3RlIGltZW51LWNyZWF0ZS1pbmRleC1mdW5jdGlvbikgKHF1b3Rl IG9yZy1pbWVudS1nZXQtdHJlZSkpIChpZiAob3IgKGZlYXR1cmVwIChxdW90ZSB4ZW1hY3MpKSAo bm90IChib3VuZHAgKHF1b3RlIG91dGxpbmUtaXNlYXJjaC1vcGVuLWludmlzaWJsZS1mdW5jdGlv bikpKSkgKG9yZy1hZGQtaG9vayAocXVvdGUgaXNlYXJjaC1tb2RlLWVuZC1ob29rKSAocXVvdGUg b3JnLWlzZWFyY2gtZW5kKSAocXVvdGUgYXBwZW5kKSAocXVvdGUgbG9jYWwpKSAob3JnLXNldC1s b2NhbCAocXVvdGUgb3V0bGluZS1pc2VhcmNoLW9wZW4taW52aXNpYmxlLWZ1bmN0aW9uKSAoZnVu Y3Rpb24gKGxhbWJkYSAoJnJlc3QgaWdub3JlKSAob3JnLXNob3ctY29udGV4dCAocXVvdGUgaXNl YXJjaCkpKSkpIChvcmctYWRkLWhvb2sgKHF1b3RlIGlzZWFyY2gtbW9kZS1lbmQtaG9vaykgKHF1 b3RlIG9yZy1maXgtZWxsaXBzaXMtYXQtYm9sKSAocXVvdGUgYXBwZW5kKSAocXVvdGUgbG9jYWwp KSkgLi4uKSkKICBvcmctbW9kZSgpCiAgc2V0LWF1dG8tbW9kZS0wKG9yZy1tb2RlIG5pbCkKICBz ZXQtYXV0by1tb2RlKCkKICBub3JtYWwtbW9kZSh0KQogIGFmdGVyLWZpbmQtZmlsZShuaWwgdCkK ICBmaW5kLWZpbGUtbm9zZWxlY3QtMSgjPGJ1ZmZlciB4Lm9yZz4gIi96L3gub3JnIiBuaWwgbmls ICJ+L3oveC5vcmciICgzMTY0MzQwIDM2KSkKICBmaW5kLWZpbGUtbm9zZWxlY3QoIi96L3gub3Jn IiBuaWwgbmlsIHQpCiAgZmluZC1maWxlKCIvei94Lm9yZyIgdCkKICBjYWxsLWludGVyYWN0aXZl bHkoZmluZC1maWxlIG5pbCBuaWwpCg== --001a1139b8765eca0004f34f4186--