From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29681 invoked by alias); 18 Apr 2015 16:34:02 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 34928 Received: (qmail 23246 invoked from network); 18 Apr 2015 16:33:47 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU autolearn=ham version=3.3.2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=thequod.de; h= content-type:content-type:subject:subject:mime-version :user-agent:from:from:date:date:message-id:received:received; s= postfix2; t=1429374822; bh=Ta2eak174dqjEihdXnb8pB6gIIkpuZvAV8Mrl 7BXbGo=; b=vVHlt+7xkLiMqqciDWJKfKZtFsO434SJJJ367WTjsUVegU7TBseWW iaxHZUiBjjSeHWCLMtCLSOKRN6u2xQYp8dujYbB/dnoQB15+7jmjRv9qR01k4Cov 2o7KoS0klh6g7r2rK4gIyB0hps8bULNeqzEt6IW0hSI3yIoXGBxKJk= Message-ID: <55328765.7090602@thequod.de> Date: Sat, 18 Apr 2015 18:33:41 +0200 From: Daniel Hahler User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: Zsh Hackers' List Subject: Completion for pip Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="mt9cvepuwOCfJmqUNWEjP36kJmWaJVnnL" --mt9cvepuwOCfJmqUNWEjP36kJmWaJVnnL Content-Type: multipart/mixed; boundary="------------040002040801050202060904" This is a multi-part message in MIME format. --------------040002040801050202060904 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi, some time ago I've adopted an existing completion script for pip, which has been removed from https://github.com/zsh-users/zsh-completions (in https://github.com/zsh-users/zsh-completions/commit/890f3701). I've also looked at oh-my-zsh's plugin (https://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/pip/_pip),= where I've adopted the idea to provide the list of installable packages from. I've enhanced it to provide completion for installable packages (both using the PyPI's simple and XMLRPC interface), and made it use pip's completion interface to get the list of un-installable packages. There are other fixes, like for completing filenames with "pip install -r". It is currently maintained at: https://gist.github.com/blueyed/54a257c411310a28805a I am attaching the current revision (cbd8ec9a). I would appreciate feedback on it and then think it would be nice to have it included in Zsh itself. zsh-users/zsh-completions's policy is to not provide completion scripts, if upstream does so - but pip's distributed completion is very limited: % pip completion --zsh # pip zsh completion start function _pip_completion { local words cword read -Ac words read -cn cword reply=3D( $( COMP_WORDS=3D"$words[*]" \ COMP_CWORD=3D$(( cword-1 )) \ PIP_AUTO_COMPLETE=3D1 $words[1] ) ) } compctl -K _pip_completion pip # pip zsh completion end Thanks, Daniel. --------------040002040801050202060904 Content-Type: text/plain; charset=UTF-8; name="_pip.zsh" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="_pip.zsh" I2NvbXBkZWYgLVAgcGlwWzAtOS5dIwojCiMgQ29tcGxldGlvbiBzY3JpcHQgZm9yIHBpcCAo aHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL3BpcCkuCiMKIyBUYWtlbiBmcm9tIGh0dHBz Oi8vZ2l0aHViLmNvbS96c2gtdXNlcnMvenNoLWNvbXBsZXRpb25zL2NvbW1pdC84OTBmMzcw MQojICh3aGVyZSBpdCBnb3QgcmVtb3ZlZCkuICBPcmlnaW5hbCBzb3VyY2U6CiMgaHR0cHM6 Ly9naXRodWIuY29tL3RlY2hub2xpemUvenNoLWNvbXBsZXRpb24tZnVuY3MuCiMKIyBDdXJy ZW50bHkgbWFpbnRhaW5lZCBpbiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9ibHVleWVkLzU0 YTI1N2M0MTEzMTBhMjg4MDVhLgoKbG9jYWwgcmV0PTEgc3RhdGUKCiMgU2V0dXAgJHB5dGhv biwgYmFzZWQgb24gcGlwIHZlcnNpb24gZnJvbSB3b3JkWzFdLgojIE11c3QgZ2V0IGRvbmUg ZWFybHksIG90aGVyd2lzZSAkd29yZHMgbWlnaHQgaGF2ZSBiZWVuIGNoYW5nZWQgYWxyZWFk eS4KbG9jYWwgcHl0aG9uIHBpcApwaXA9JHt3b3Jkc1sxXX0KcHl0aG9uPSR7JHtwaXB9L3Bp cC9weXRob259CltbICRweXRob24gPT0gJHBpcCBdXSAmJiBweXRob249cHl0aG9uCgoKIyBU aGUgaW5kZXgoZXMpIHRvIHVzZS4gIFRoZSBzaW1wbGUgaW5kZXggb25seSBwcm92aWRlcyBh IGZ1bGwgbGlzdCwgd2hpbGUKIyB0aGUgeG1scnBjIGluZGV4IGNhbiBiZSBxdWVyaWVkIGJ5 ICJsYXN0IHVwZGF0ZWQgaW4iLgojIFRoaXMgc2hvdWxkIGJlIHByb2JhYmx5IG1hZGUgY29u ZmlndXJhYmxlIHRocm91Z2ggenN0eWxlIGFuZCB0aGVuIGJlIHVzZWQKIyBpbiB0aGUgY2Fj aGUgbmFtZS4KIyBGb3IgdGhlIHhtbHJwYyBpbmRleCwgdGhlICJkYXlzIiBjb3VsZCBiZSBt YWRlIGNvbmZpZ3VyYWJsZQp0eXBlc2V0IC1hIFpTSF9QSVBfSU5ERVhFUyBaU0hfUElQX1hN TFJQQ19JTkRFWEVTCiMgWlNIX1BJUF9JTkRFWEVTPShodHRwczovL3B5cGkucHl0aG9uLm9y Zy9zaW1wbGUvKQpaU0hfUElQX1hNTFJQQ19JTkRFWEVTPShodHRwczovL3B5cGkucHl0aG9u Lm9yZy9weXBpKQpsb2NhbCBaU0hfUElQX1hNTFJQQ19JTkRFWF9EQVlTPTM2NQoKCiMgR2V0 IGFsbCBwYWNrYWdlcyBmcm9tIChyZW1vdGUpIFpTSF9QSVBfSU5ERVhFUy4KX3BpcF9hbGwo KSB7CiAgX3BpcF9zZXRfY2FjaGVfcG9saWN5CiAgaWYgKCAhICgoICQrX3pzaF9hbGxfcGtn cyApKSB8fCBfY2FjaGVfaW52YWxpZCBwaXBfYWxscGtncyApICYmCiAgICAhIF9yZXRyaWV2 ZV9jYWNoZSBwaXBfYWxscGtnczsKICB0aGVuCiAgICB0eXBlc2V0IC1hIC1nIF96c2hfYWxs X3BrZ3MKICAgIF96c2hfYWxsX3BrZ3M9KCkKCiAgICAjIEJ1aWxkIFhNTFBDIHJlcXVlc3Qg dG8gcHlwaS5weXRob24ub3JnIHRvIGdldCBhIGxpc3Qgb2YgcGFja2FnZXMgdXBkYXRlZAog ICAgIyBpbiB0aGUgbGFzdCB5ZWFyLiAgVGhpcyBpcyBtZWFudCB0byByZWR1Y2UgdGhlIG51 bWJlciBvZiBwYWNrYWdlcy4KICAgIGxvY2FsIHRzXzF5ZWFyPSQoZGF0ZSArJXMgLWQgQCQo KCAkKGRhdGUgKyVzKSAtIDg2NDAwICogWlNIX1BJUF9YTUxSUENfSU5ERVhfREFZUyApKSkK ICAgIGxvY2FsIHhtbF9yZXE9Ijw/eG1sIHZlcnNpb249JzEuMCc/PjxtZXRob2RDYWxsPjxt ZXRob2ROYW1lPnVwZGF0ZWRfcmVsZWFzZXM8L21ldGhvZE5hbWU+PHBhcmFtcz48cGFyYW0+ PHZhbHVlPjxpbnQ+JHt0c18xeWVhcn08L2ludD48L3ZhbHVlPjwvcGFyYW0+PC9wYXJhbXM+ PC9tZXRob2RDYWxsPiIKCiAgICBmb3IgeG1scnBjX2luZGV4IGluICRaU0hfUElQX1hNTFJQ Q19JTkRFWEVTOyBkbwogICAgICBfenNoX2FsbF9wa2dzKz0oICQoZWNobyAkeG1sX3JlcSB8 IGN1cmwgLXMgLWQgQC0gLUggIkNvbnRlbnQtVHlwZTogdGV4dC94bWwiICR4bWxycGNfaW5k ZXggXAogICAgICAgIHwgc2VkIC1uICcvXjx2YWx1ZT48c3RyaW5nPi9wJyB8IHNlZCAtbiAn MX4yIHMvXjx2YWx1ZT48c3RyaW5nPi8vcCcgfCBzZWQgLW4gJ3MvPFwvc3RyaW5nPjxcL3Zh bHVlPiQvL3AnIFwKICAgICAgICB8IHRyICdcbicgJyAnKSApCiAgICBkb25lCgogICAgZm9y IGluZGV4IGluICRaU0hfUElQX0lOREVYRVM7IGRvCiAgICAgICMgQWxsIHBhY2thZ2VzLCBt b3JlIHRoYW4gNTQwMDAhCiAgICAgIF96c2hfYWxsX3BrZ3MrPSggJChjdXJsIC1zICRpbmRl eCBcCiAgICAgICAgfCBzZWQgLW4gJy88YSBocmVmLyBzLy4qPlwoW148XVx7MSxcfVwpLiov XDEvcCcgXAogICAgICAgIHwgdHIgJ1xuJyAnICcpICkKICAgIGRvbmUKICAgIF9zdG9yZV9j YWNoZSBwaXBfYWxscGtncyBfenNoX2FsbF9wa2dzCiAgZmkKfQoKIyBHZXQgaW5zdGFsbGVk IHBhY2thZ2VzLCB1c2luZyBwaXBzIGNvbXBsZXRpb24gaW50ZXJmYWNlLgpfcGlwX2luc3Rh bGxlZCgpIHsKICBfcGlwX3NldF9jYWNoZV9wb2xpY3kKCiAgaWYgKCAhICgoICQrX3pzaF9p bnN0YWxsZWRfcGtncyApKSB8fCBfY2FjaGVfaW52YWxpZCBwaXBfaW5zdGFsbGVkcGtncyAp ICYmCiAgICAhIF9yZXRyaWV2ZV9jYWNoZSBwaXBfaW5zdGFsbGVkcGtnczsKICB0aGVuCiAg ICB0eXBlc2V0IC1hIC1nIF96c2hfaW5zdGFsbGVkX3BrZ3MKICAgICMgX3pzaF9pbnN0YWxs ZWRfcGtncz0oJCgkcGlwIGZyZWV6ZSB8IGN1dCAtZCAnPScgLWYgMSkpCiAgICBfenNoX2lu c3RhbGxlZF9wa2dzPSgkKENPTVBfV09SRFM9InBpcCB1bmluc3RhbGwiIENPTVBfQ1dPUkQ9 IjIiIFBJUF9BVVRPX0NPTVBMRVRFPTEgJHBpcCkpCiAgICBfc3RvcmVfY2FjaGUgcGlwX2lu c3RhbGxlZHBrZ3MgX3pzaF9pbnN0YWxsZWRfcGtncwogIGZpCn0KIApfcGlwX3NldF9jYWNo ZV9wb2xpY3koKSB7CiAgbG9jYWwgY2FjaGVfcG9saWN5CiAgenN0eWxlIC1zICI6Y29tcGxl dGlvbjoke2N1cmNvbnRleHR9OiIgY2FjaGUtcG9saWN5IGNhY2hlX3BvbGljeQogIGlmIFtb IC16ICIkY2FjaGVfcG9saWN5IiBdXTsgdGhlbgogICAgenN0eWxlICI6Y29tcGxldGlvbjok e2N1cmNvbnRleHR9OiIgY2FjaGUtcG9saWN5IF9waXBfY2FjaGluZ19wb2xpY3kKICBmaQp9 CgpfcGlwX2NhY2hpbmdfcG9saWN5KCkgewogIGlmIFtbICR7MTp0fSA9PSBwaXBfYWxscGtn cyBdXTsgdGhlbgogICAgIyByZWJ1aWxkIGlmIGNhY2hlIGlzIG1vcmUgdGhhbiB0d28gd2Vl a3Mgb2xkCiAgICBsb2NhbCAtYSBvbGRwCiAgICBvbGRwPSggIiQxIihObSsxNCkgKQogICAg KCggJCNvbGRwICkpCgogIGVsc2UgICMgcGlwX2luc3RhbGxlZHBrZ3MKICAgICMgQ29tcGFy ZSBjYWNoZSBmaWxlJ3MgdGltZXN0YW1wIHRvIHRoZSBtb3N0IHJlY2VudGx5IG1vZGlmaWVk IHN5cy5wYXRoIGVudHJ5LgogICAgIyBUaGlzIGdldHMgY2hhbmdlZC90b3VjaGVkIHdoZW4g aW5zdGFsbGluZyByZW1vdmluZyBwYWNrYWdlcy4KICAgIGxvY2FsIG5ld2VzdF9zeXNfcGF0 aD0kKCRweXRob24gLWMgJwppbXBvcnQgc3lzCmZyb20gb3MucGF0aCBpbXBvcnQgZXhpc3Rz LCBnZXRtdGltZQpwcmludChzb3J0ZWQoc3lzLnBhdGgsIGtleT1sYW1iZGEgeDogZXhpc3Rz KHgpIGFuZCBnZXRtdGltZSh4KSlbLTFdKScpCiAgICBbWyAkbmV3ZXN0X3N5c19wYXRoIC1u dCAkMSBdXQogIGZpCn0KCgpsb2NhbCAtYSBjb21tb25fb3BzCmNvbW1vbl9vcHM9KAogIHst aCwtLWhlbHB9IltzaG93IGhlbHBdIgogIHstdiwtLXZlcmJvc2V9IltnaXZlIG1vcmUgb3V0 cHV0XSIKICB7LVYsLS12ZXJzaW9ufSJbc2hvdyB2ZXJzaW9uIGFuZCBleGl0XSIKICB7LXEs LS1xdWlldH0iW2dpdmUgbGVzcyBvdXRwdXRdIgogICItLWxvZz1bbG9nIGZpbGUgd2hlcmUg YSBjb21wbGV0ZSByZWNvcmQgd2lsbCBiZSBrZXB0XTpmaWxlIgogICItLXByb3h5PVtzcGVj aWZ5IGEgcHJveHkgaW4gdGhlIGZvcm0gdXNlcjpwYXNzd2RAcHJveHkuc2VydmVyOnBvcnRd OnByb3h5IgogICItLXRpbWVvdXQ9W3NldCB0aGUgc29ja2V0IHRpbWVvdXQgKGRlZmF1bHQg MTUgc2Vjb25kcyldOnNlY29uZCIKICAiLS1leGlzdHMtYWN0aW9uPVtkZWZhdWx0IGFjdGlv biB3aGVuIGEgcGF0aCBhbHJlYWR5IGV4aXN0czogKHMpd2l0Y2gsIChpKWdub3JlLCAodylp cGUsIChiKWFja3VwXTphY3Rpb24iCiAgIi0tY2VydD1bcGF0aCB0byBhbHRlcm5hdGUgQ0Eg YnVuZGxlXTpwYXRoIgopCgpfZGlyZWN0b3JpZXMgKCkgewogIF93YW50ZWQgZGlyZWN0b3Jp ZXMgZXhwbCBkaXJlY3RvcnkgX3BhdGhfZmlsZXMgLS8gIiRAIiAtCn0KCl9yZXF1aXJlbWVu dHNfZmlsZSAoKSB7CiAgIyBQcmVmZXIgcmVxdWlyZW1lbnQqIGFuZCAqLnR4dCBwYXR0ZXJu LiBUaGlzIHNob3VsZCBmYWxsIGJhY2sgdG8gImFsbCBmaWxlcyIsIGFjY29yZGluZyB0byB0 aGUgZmlsZS1wYXR0ZXJucyBzdHlsZS4KICBfd2FudGVkIGZpbGVzIGV4cGwgZmlsZSBfZmls ZXMgLWcgJ3JlcXVpcmVtZW50KicgLWcgJyoudHh0JyAiJEAiIC0KfQoKdHlwZXNldCAtQSBv cHRfYXJncwpfYXJndW1lbnRzIFwKICAnOnN1YmNvbW1hbmQ6LT5zdWJjb21tYW5kJyBcCiAg JGNvbW1vbl9vcHMgXAogICcqOjpvcHRpb25zOi0+b3B0aW9ucycgJiYgcmV0PTAKCmNhc2Ug JHN0YXRlIGluCiAgc3ViY29tbWFuZCkKICAgIGxvY2FsIC1hIHN1YmNvbW1hbmRzCiAgICBz dWJjb21tYW5kcz0oCiAgICAgICJpbnN0YWxsOmluc3RhbGwgcGFja2FnZXMiCiAgICAgICJ1 bmluc3RhbGw6dW5pbnN0YWxsIHBhY2thZ2VzIgogICAgICAiZnJlZXplOnB1dCBhbGwgY3Vy cmVudGx5IGluc3RhbGxlZCBwYWNrYWdlcyIKICAgICAgImxpc3Q6bGlzdCBpbnN0YWxsZWQg cGFja2FnZXMiCiAgICAgICJzaG93OnNob3cgaW5mb3JtYXRpb24gYWJvdXQgaW5zdGFsbGVk IHBhY2thZ2VzIgogICAgICAic2VhcmNoOnNlYXJjaCBweXBpIgogICAgICAid2hlZWw6YnVp bGQgd2hlZWxzIGZyb20geW91ciByZXF1aXJlbWVudHMiCiAgICAgICJ6aXA6emlwIGRpdmlk dWFsIHBhY2thZ2VzIgogICAgICAidW56aXA6dW56aXAgdW5kaXZpZHVhbCBwYWNrYWdlcyIK ICAgICAgImJ1bmRsZTpjcmVhdGUgcHlidW5kbGUiCiAgICAgICJoZWxwOnNob3cgYXZhaWxh YmxlIGNvbW1hbmRzIgogICAgKQoKICAgIF9kZXNjcmliZSAtdCBzdWJjb21tYW5kcyAncGlw IHN1YmNvbW1hbmQnIHN1YmNvbW1hbmRzICYmIHJldD0wCiAgOzsKCiAgb3B0aW9ucykKICAg IGxvY2FsIC1hIGFyZ3MKICAgIGFyZ3M9KAogICAgICAkY29tbW9uX29wcwogICAgKQoKICAg IGxvY2FsIC1hIHBpX29wcwogICAgcGlfb3BzPSgKICAgICAgey1pLC0taW5kZXgtdXJsPX0i W2Jhc2UgVVJMIG9mIFB5dGhvbiBQYWNrYWdlIEluZGV4XTpVUkwiCiAgICAgICItLWV4dHJh LWluZGV4LXVybD1bZXh0cmEgVVJMcyBvZiBwYWNrYWdlIGluZGV4ZXMgdG8gdXNlIGluIGFk ZGl0aW9uIHRvIC0taW5kZXgtdXJsXTpVUkwiCiAgICAgICItLW5vLWluZGV4W2lnbm9yZSBw YWNrYWdlIGluZGV4IChvbmx5IGxvb2tpbmcgYXQgLS1maW5kLWxpbmtzIFVSTHMgaW5zdGVh ZCldIgogICAgICB7LWYsLS1maW5kLWxpbmtzPX0iW1VSTCB0byBsb29rIGZvciBwYWNrYWdl cyBhdF06VVJMIgogICAgICB7LU0sLS11c2UtbWlycm9yc30iW3VzZSB0aGUgUHlQSSBtaXJy b3JzIGFzIGEgZmFsbGJhY2sgaW4gY2FzZSB0aGUgbWFpbiBpbmRleCBpcyBkb3duXSIKICAg ICAgIi0tbWlycm9ycz1bc3BlY2lmaWMgbWlycm9yIFVSTHMgdG8gcXVlcnkgd2hlbiAtLXVz ZS1taXJyb3JzIGlzIHVzZWRdOlVSTCIKICAgICAgIi0tYWxsb3ctZXh0ZXJuYWw9W2FsbG93 IHRoZSBpbnN0YWxsYXRpb24gb2YgZXh0ZXJuYWxseSBob3N0ZWQgZmlsZXNdOnBhY2thZ2Ui CiAgICAgICItLWFsbG93LWFsbC1leHRlcm5hbFthbGxvdyB0aGUgaW5zdGFsbGF0aW9uIG9m IGFsbCBleHRlcm5hbGx5IGhvc3RlZCBmaWxlc10iCiAgICAgICItLW5vLWFsbG93LWV4dGVy bmFsW2Rpc2FsbG93IHRoZSBpbnN0YWxsYXRpb24gb2YgYWxsIGV4dGVybmFsbHkgaG9zdGVk IGZpbGVzXSIKICAgICAgIi0tYWxsb3ctaW5zZWN1cmU9W2FsbG93IHRoZSBpbnN0YWxsYXRp b24gb2YgaW5zZWN1cmUgYW5kIHVudmVyaWZpYWJsZSBmaWxlc106cGFja2FnZSIKICAgICAg Ii0tbm8tYWxsb3ctaW5zZWN1cmVbZGlzYWxsb3cgdGhlIGluc3RhbGxhdGlvbiBvZiBpbnNl Y3VyZSBhbmQgdW52ZXJpZmlhYmxlIGZpbGVzXSIKICAgICkKCiAgICBjYXNlICR3b3Jkc1sx XSBpbgogICAgICBpbnN0YWxsIHwgYnVuZGxlKQogICAgICAgIGFyZ3MrPSgKICAgICAgICAg IHstZSwtLWVkaXRhYmxlPX0iW2luc3RhbGwgYSBwYWNrYWdlIGRpcmVjdGx5IGZyb20gYSBj aGVja291dF06ZGlyZWN0b3J5IG9yIFZDUytSRVBPU19VUkxbQFJFVl0jZWdnPVBBQ0tBR0U6 X2ZpbGVzIC0vIgogICAgICAgICAgey1yLC0tcmVxdWlyZW1lbnQ9fSJbaW5zdGFsbCBhbGwg dGhlIHBhY2thZ2VzIGxpc3RlZCBpbiB0aGUgZ2l2ZW4gcmVxdWlyZW1lbnRzIGZpbGVdOnJl cXVpcmVtZW50cyBmaWxlOl9yZXF1aXJlbWVudHNfZmlsZSIKICAgICAgICAgIHstYiwtLWJ1 aWxkPX0iW3VucGFjayBwYWNrYWdlcyBpbnRvIERJUl06ZGlyZWN0b3J5Ol9kaXJlY3Rvcmll cyIKICAgICAgICAgIHstdCwtLXRhcmdldD19IltpbnN0YWxsIHBhY2thZ2VzIGludG8gRElS XTpkaXJlY3Rvcnk6X2RpcmVjdG9yaWVzIgogICAgICAgICAgey1kLC0tZG93bmxvYWQ9fSJb ZG93bmxvYWQgcGFja2FnZXMgaW50byBESVIgaW5zdGVhZCBvZiBpbnN0YWxsaW5nIHRoZW1d OmRpcmVjdG9yeTpfZGlyZWN0b3JpZXMiCiAgICAgICAgICAiLS1kb3dubG9hZC1jYWNoZT1b Y2FjaGUgZG93bmxvYWRlZCBwYWNrYWdlcyBpbiBESVJdOmRpcmVjdG9yeTpfZGlyZWN0b3Jp ZXMiCiAgICAgICAgICAiLS1zcmM9W2NoZWNrIG91dCAtLWVkaXRhYmxlIHBhY2thZ2VzIGlu dG8gRElSXTpkaXJlY3Rvcnk6X2RpcmVjdG9yaWVzIgogICAgICAgICAgey1VLC0tdXBncmFk ZX0iW3VwZ3JhZGUgYWxsIHBhY2thZ2VzIHRvIHRoZSBuZXdlc3QgYXZhaWxhYmxlIHZlcnNp b25dIgogICAgICAgICAgIi0tZm9yY2UtcmVpbnN0YWxsW3doZW4gdXBncmFkaW5nLCByZWlu c3RhbGwgYWxsIHBhY2thZ2VzIGV2ZW4gaWYgdGhleSBhcmUgYWxyZWFkeSB1cC10by1kYXRl XSIKICAgICAgICAgIHstSSwtLWlnbm9yZS1pbnN0YWxsZWR9IltpZ25vcmUgdGhlIGluc3Rh bGxlZCBwYWNrYWdlc10iCiAgICAgICAgICAiLS1uby1kZXBzW2Rvbid0IGluc3RhbGwgcGFj a2FnZSBkZXBlbmRlbmNpZXNdIgogICAgICAgICAgIi0tbm8taW5zdGFsbFtkb3dubG9hZCBh bmQgdW5wYWNrIGFsbCBwYWNrYWdlcywgYnV0IGRvbid0IGFjdHVhbGx5IGluc3RhbGwgdGhl bV0iCiAgICAgICAgICAiLS1uby1kb3dubG9hZFtkb24ndCBkb3dubG9hZCBhbnkgcGFja2Fn ZXMsIGp1c3QgaW5zdGFsbCB0aGUgb25lcyBhbHJlYWR5IGRvd25sb2FkZWRdIgogICAgICAg ICAgIi0taW5zdGFsbC1vcHRpb249W2V4dHJhIGFyZ3VtZW50cyB0byBiZSBzdXBwbGllZCB0 byB0aGUgc2V0dXAucHkgaW5zdGFsbCBjb21tYW5kXTpvcHRpb25zIgogICAgICAgICAgIi0t Z2xvYmFsLW9wdGlvbj1bRXh0cmEgZ2xvYmFsIG9wdGlvbnMgdG8gYmUgc3VwcGxpZWQgdG8g dGhlIHNldHVwLnB5IGNhbGwgYmVmb3JlIHRoZSBpbnN0YWxsIGNvbW1hbmRdOm9wdGlvbnMi CiAgICAgICAgICAiLS11c2VyW2luc3RhbGwgdXNpbmcgdGhlIHVzZXIgc2NoZW1lXSIKICAg ICAgICAgICItLWVnZ1tpbnN0YWxsIGFzIHNlbGYgY29udGFpbmVkIGVnZyBmaWxlLCBsaWtl IGVhc3lfaW5zdGFsbCBkb2VzXSIKICAgICAgICAgICItLXJvb3Q9W0luc3RhbGwgZXZlcnl0 aGluZyByZWxhdGl2ZSB0byB0aGlzIGFsdGVybmF0ZSByb290IGRpcmVjdG9yeV06ZGlyZWN0 b3J5Ol9kaXJlY3RvcmllcyIKICAgICAgICAgICItLXVzZS13aGVlbFtmaW5kIGFuZCBwcmVm ZXIgd2hlZWwgYXJjaGl2ZXMgd2hlbiBzZWFyY2hpbmcgaW5kZXhlcyBhbmQgZmluZC1saW5r cyBsb2NhdGlvbnNdIgogICAgICAgICAgIi0tcHJlW2luY2x1ZGUgcHJlLXJlbGVhc2UgYW5k IGRldmVsb3BtZW50IHZlcnNpb25zXSIKICAgICAgICAgICItLW5vLWNsZWFuW2Rvbid0IGNs ZWFuIHVwIGJ1aWxkIGRpcmVjdG9yaWVzXSIKICAgICAgICAgICc6cGFja2FnZSBuYW1lOi0+ cGtnc19hbGwnCgogICAgICAgICAgJHBpX29wcwogICAgICAgICkKICAgICAgOzsKCiAgICAg IHVuaW5zdGFsbCkKICAgICAgICBhcmdzKz0oCiAgICAgICAgICB7LXIsLS1yZXF1aXJlbWVu dD19IltpbnN0YWxsIGFsbCB0aGUgcGFja2FnZXMgbGlzdGVkIGluIHRoZSBnaXZlbiByZXF1 aXJlbWVudHMgZmlsZV06OnJlcXVpcmVtZW50cyBmaWxlOl9yZXF1aXJlbWVudHNfZmlsZSIK ICAgICAgICAgIHsteSwtLXllc30iW2Rvbid0IGFzayBmb3IgY29uZmlybWF0aW9uIG9mIHVu aW5zdGFsbCBkZWxldGlvbnNdIgogICAgICAgICAgJzppbnN0YWxsZWQgcGFja2FnZTotPnBr Z3NfaW5zdGFsbGVkJwogICAgICAgICkKICAgICAgOzsKCiAgICAgIGZyZWV6ZSkKICAgICAg ICBhcmdzKz0oCiAgICAgICAgICB7LXIsLS1yZXF1aXJlbWVudD19IltpbnN0YWxsIGFsbCB0 aGUgcGFja2FnZXMgbGlzdGVkIGluIHRoZSBnaXZlbiByZXF1aXJlbWVudHMgZmlsZV06OnJl cXVpcmVtZW50cyBmaWxlOl9yZXF1aXJlbWVudHNfZmlsZSIKICAgICAgICAgIHstZiwtLWZp bmQtbGlua3M9fSJbVVJMIHRvIGxvb2sgZm9yIHBhY2thZ2VzIGF0XTpVUkwiCiAgICAgICAg ICB7LWwsLS1sb2NhbH0iW0lmIGluIGEgdmlydHVhbGVudiB0aGF0IGhhcyBnbG9iYWwgYWNj ZXNzLCBkbyBub3QgbGlzdCBnbG9iYWxseS1pbnN0YWxsZWQgcGFja2FnZXNdIgogICAgICAg ICkKICAgICAgOzsKCiAgICAgIGxpc3QpCiAgICAgICAgYXJncys9KAogICAgICAgICAgey1v LC0tb3V0ZGF0ZWR9IltsaXN0IG91dGRhdGVkIHBhY2thZ2VzIChleGNsdWRpbmcgZWRpdGFi bGVzKV0iCiAgICAgICAgICB7LXUsLS11cHRvZGF0ZWR9IltsaXN0IHVwdG9kYXRlZCBwYWNr YWdlcyAoZXhjbHVkaW5nIGVkaXRhYmxlcyldIgogICAgICAgICAgey1lLC0tZWRpdGFibGV9 IltsaXN0IGVkaXRhYmxlIHByb2plY3RzXSIKICAgICAgICAgIHstbCwtLWxvY2FsfSJbSWYg aW4gYSB2aXJ0dWFsZW52IHRoYXQgaGFzIGdsb2JhbCBhY2Nlc3MsIGRvIG5vdCBsaXN0IGds b2JhbGx5LWluc3RhbGxlZCBwYWNrYWdlc10iCiAgICAgICAgICAiLS1wcmVbaW5jbHVkZSBw cmUtcmVsZWFzZSBhbmQgZGV2ZWxvcG1lbnQgdmVyc2lvbnNdIgogICAgICAgICAgJHBpX29w cwogICAgICAgICkKICAgICAgOzsKCiAgICAgIHNob3cpCiAgICAgICAgYXJncys9KAogICAg ICAgICAgey1mLC0tZmlsZXN9IltzaG93IHRoZSBmdWxsIGxpc3Qgb2YgaW5zdGFsbGVkIGZp bGVzIGZvciBlYWNoIHBhY2thZ2VdIgogICAgICAgICAgJzppbnN0YWxsZWQgcGFja2FnZTot PnBrZ3NfaW5zdGFsbGVkJwogICAgICAgICkKICAgICAgOzsKCiAgICAgIHNlYXJjaCkKICAg ICAgICBhcmdzKz0oCiAgICAgICAgICAiLS1pbmRleFtiYXNlIFVSTCBvZiBQeXRob24gUGFj a2FnZSBJbmRleF06VVJMIgogICAgICAgICkKICAgICAgOzsKCiAgICAgIHdoZWVsKQogICAg ICAgIGFyZ3MrPSgKICAgICAgICAgIHstdywtLXdoZWVsLWRpcj19IltidWlsZCB3aGVlbHMg aW50byBESVIsIHdoZXJlIHRoZSBkZWZhdWx0IGlzICc8Y3dkPi93aGVlbGhvdXNlJ106ZGly ZWN0b3J5Ol9kaXJlY3RvcmllcyIKICAgICAgICAgICItLXVzZS13aGVlbFtmaW5kIGFuZCBw cmVmZXIgd2hlZWwgYXJjaGl2ZXMgd2hlbiBzZWFyY2hpbmcgaW5kZXhlcyBhbmQgZmluZC1s aW5rcyBsb2NhdGlvbnNdIgogICAgICAgICAgIi0tYnVpbGQtb3B0aW9uPVtleHRyYSBhcmd1 bWVudHMgdG8gYmUgc3VwcGxpZWQgdG8gJ3NldHVwLnB5IGJkaXN0X3doZWVsJ106b3B0aW9u cyIKICAgICAgICAgIHstciwtLXJlcXVpcmVtZW50PX0iW2luc3RhbGwgYWxsIHRoZSBwYWNr YWdlcyBsaXN0ZWQgaW4gdGhlIGdpdmVuIHJlcXVpcmVtZW50cyBmaWxlXTo6cmVxdWlyZW1l bnRzIGZpbGU6X3JlcXVpcmVtZW50c19maWxlIgogICAgICAgICAgIi0tZG93bmxvYWQtY2Fj aGU9W2NhY2hlIGRvd25sb2FkZWQgcGFja2FnZXMgaW4gRElSXTpkaXJlY3Rvcnk6X2RpcmVj dG9yaWVzIgogICAgICAgICAgIi0tbm8tZGVwc1tkb24ndCBpbnN0YWxsIHBhY2thZ2UgZGVw ZW5kZW5jaWVzXSIKICAgICAgICAgIHstYiwtLWJ1aWxkPX0iW2RpcmVjdG9yeSB0byB1bnBh Y2sgcGFja2FnZXMgaW50byBhbmQgYnVpbGQgaW5dOmRpcmVjdG9yeTpfZGlyZWN0b3JpZXMi CiAgICAgICAgICAiLS1nbG9iYWwtb3B0aW9uPVtleHRyYSBnbG9iYWwgb3B0aW9ucyB0byBi ZSBzdXBwbGllZCB0byB0aGUgc2V0dXAucHkgY2FsbCBiZWZvcmUgdGhlICdiZGlzdF93aGVl bCcgY29tbWFuZF06b3B0aW9ucyIKICAgICAgICAgICItLXByZVtpbmNsdWRlIHByZS1yZWxl YXNlIGFuZCBkZXZlbG9wbWVudCB2ZXJzaW9uc10iCiAgICAgICAgICAiLS1uby1jbGVhbltk b24ndCBjbGVhbiB1cCBidWlsZCBkaXJlY3Rvcmllc10iCiAgICAgICAgICAkcGlfb3BzCiAg ICAgICAgKQogICAgICA7OwoKICAgICAgdW56aXAgfCB6aXApCiAgICAgICAgYXJncys9KAog ICAgICAgICAgIi0tdW56aXBbdW56aXAgYSBwYWNrYWdlXSIKICAgICAgICAgICItLW5vLXB5 Y1tkbyBub3QgaW5jbHVkZSAucHljIGZpbGVzIGluIHppcCBmaWxlc10iCiAgICAgICAgICB7 LWwsLS1saXN0fSJbbGlzdCB0aGUgcGFja2FnZXMgYXZhaWxhYmxlLCBhbmQgdGhlaXIgemlw IHN0YXR1c10iCiAgICAgICAgICAiLS1zb3J0LWZpbGVzW3dpdGggLS1saXN0LCBzb3J0IHBh Y2thZ2VzIGFjY29yZGluZyB0byBob3cgbWFueSBmaWxlcyB0aGV5IGNvbnRhaW5dIgogICAg ICAgICAgIi0tcGF0aD1bcmVzdHJpY3Qgb3BlcmF0aW9uIHRvIHRoZSBnaXZlbiBwYXRoc106 cGF0aHMiCiAgICAgICAgICB7LW4sLS1zaW11bGF0ZX0iW2RvIG5vdCBhY3R1YWxseSBwZXJm b3JtIHRoZSB6aXAvdW56aXAgb3BlcmF0aW9uXSIKICAgICAgICApCiAgICAgIDs7CiAgICBl c2FjCgogICAgX2FyZ3VtZW50cyAkYXJncyAmJiByZXQ9MAoKICAgICMgQWRkaXRpb25hbCBz dGF0ZSBmb3IgZXhwZW5zaXZlIGFjdGlvbnMuCiAgICBjYXNlICRzdGF0ZSBpbgogICAgICBw a2dzX2FsbCkKICAgICAgICAgIF9waXBfYWxsCiAgICAgICAgICBfd2FudGVkIF96c2hfYWxs X3BrZ3MgZXhwbCAncGFja2FnZXMnIGNvbXBhZGQgLWEgX3pzaF9hbGxfcGtncyAmJiByZXQ9 MAogICAgICAgIDs7CiAgICAgIHBrZ3NfaW5zdGFsbGVkKQogICAgICAgIF9waXBfaW5zdGFs bGVkCiAgICAgICAgX3dhbnRlZCBfenNoX2luc3RhbGxlZF9wa2dzIGV4cGwgJ2luc3RhbGxl ZCBwYWNrYWdlcycgY29tcGFkZCAtYSBfenNoX2luc3RhbGxlZF9wa2dzICYmIHJldD0wCiAg ICAgICAgOzsKICAgIGVzYWMKICA7Owplc2FjCgpyZXR1cm4gcmV0CgojIExvY2FsIFZhcmlh YmxlczoKIyBtb2RlOiBTaGVsbC1TY3JpcHQKIyBzaC1pbmRlbnRhdGlvbjogMgojIGluZGVu dC10YWJzLW1vZGU6IG5pbAojIHNoLWJhc2ljLW9mZnNldDogMgojIEVuZDoKIyB2aW06IGZ0 PXpzaCBzdz0yIHRzPTIgZXQK --------------040002040801050202060904-- --mt9cvepuwOCfJmqUNWEjP36kJmWaJVnnL Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iD8DBQFVModlfAK/hT/mPgARAjB/AKC27ieho3zrBAjPocwVNObvacV0ZgCfY88B Q8eqUEvGh0Tbz1oyKWoK520= =vJeV -----END PGP SIGNATURE----- --mt9cvepuwOCfJmqUNWEjP36kJmWaJVnnL--