From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8771 invoked by alias); 7 Nov 2011 18:11:47 -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: 29895 Received: (qmail 8975 invoked from network); 7 Nov 2011 18:11:44 -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.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_LOW,T_DKIM_INVALID autolearn=ham version=3.3.2 Received-SPF: pass (ns1.primenet.com.au: SPF record at _spf.google.com designates 209.85.210.171 as permitted sender) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:sender:date:x-google-sender-auth:message-id:subject :from:to:cc:content-type; bh=yy6WXx9WOso5rx+jaSEw/uGiPBvG+PSJy393X1QCzZo=; b=SI1BFXLebOm8YoLZ40pzbgXZtP0Eb+9Vyiw3Q5J/VBrQbtJdSiGSSBF8ROgFU5ofgE K1LLz53lilQOC7U/ghEr9u7la4P0jYQW7x47SoRHJy6ruTwASydWRp+oSSZvGRjJpmX0 CMsTJDkmxIlvWZzQ50uQyoTVrkEL0tCyeMQGo= MIME-Version: 1.0 Sender: hakonrk@gmail.com Date: Mon, 7 Nov 2011 19:05:36 +0100 X-Google-Sender-Auth: gB5yBLa1VCphMBqDX3_OWAKMKoU Message-ID: Subject: New completion function (nmcli) and patch for _ffmpeg From: Haakon Riiser To: zsh-workers@zsh.org Cc: Peter.Stephenson@csr.com Content-Type: multipart/mixed; boundary=000e0cd4b0eede10c104b128e6c7 --000e0cd4b0eede10c104b128e6c7 Content-Type: text/plain; charset=UTF-8 Here's a new completion function for nmcli, the command line interface to Linux' Network Manager. I've tried to make it as complete as possible. It has been tested on version 0.8.5.92 that comes with Fedora 14. I have also tried to make it compatible with nmcli 0.9.0 and 0.9.1 (the latest version) by observing the differences in the man page. The man pages were almost unchanged, so it should work across all versions. Also, I've attached a patch for the FFmpeg completion function. Nothing major has changed, but there are a couple of fixes that are worth pushing upstream. -- Haakon --000e0cd4b0eede10c104b128e6c7 Content-Type: text/x-patch; charset=US-ASCII; name="_ffmpeg.patch" Content-Disposition: attachment; filename="_ffmpeg.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gupqxcbw0 SW5kZXg6IF9mZm1wZWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvenNoL3pzaC9Db21w bGV0aW9uL1VuaXgvQ29tbWFuZC9fZmZtcGVnLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUKZGlm ZiAtdSAtMSAtMCAtcjEuNSBfZmZtcGVnCi0tLSBfZmZtcGVnCTMgTWF5IDIwMTEgMTg6Mzg6NTYg LTAwMDAJMS41CisrKyBfZmZtcGVnCTcgTm92IDIwMTEgMTc6Mjc6MjkgLTAwMDAKQEAgLTE0LDIw ICsxNCwyNiBAQAogICAgIGFjb2RlY3M9KGNvcHkgJHskeyhNKSR7KGYpIiQoX2NhbGxfcHJvZ3Jh bSBhdWRpby1jb2RlY3MgJHdvcmRzWzFdIC1jb2RlY3MgMj4vZGV2L251bGwpIn06I1tbOnNwYWNl Ol1dW0RbOnNwYWNlOl1dW0VbOnNwYWNlOl1dQVtTWzpzcGFjZTpdXVtEWzpzcGFjZTpdXVtUWzpz cGFjZTpdXVtbOnNwYWNlOl1dW15bOnNwYWNlOl1dIyMqfS8vKCNiKT8/Pz8/Pz8/KFteWzpzcGFj ZTpdXSMjKSovJG1hdGNoWzFdfSkKICAgICBfd2FudGVkIGZmbXBlZy1hdWRpby1jb2RlY3MgZXhw bCAnZm9yY2UgYXVkaW8gY29kZWMgKCcnY29weScnIHRvIGNvcHkgc3RyZWFtKScgY29tcGFkZCAt YSBhY29kZWNzCiB9CiAKICgoICQrZnVuY3Rpb25zW19mZm1wZWdfdmNvZGVjc10gKSkgfHwgX2Zm bXBlZ192Y29kZWNzKCkgewogICAgIGxvY2FsIHZjb2RlY3MKICAgICB2Y29kZWNzPShjb3B5ICR7 JHsoTSkkeyhmKSIkKF9jYWxsX3Byb2dyYW0gdmlkZW8tY29kZWNzICR3b3Jkc1sxXSAtY29kZWNz IDI+L2Rldi9udWxsKSJ9OiNbWzpzcGFjZTpdXVtEWzpzcGFjZTpdXVtFWzpzcGFjZTpdXVZbU1s6 c3BhY2U6XV1bRFs6c3BhY2U6XV1bVFs6c3BhY2U6XV1bWzpzcGFjZTpdXVteWzpzcGFjZTpdXSMj Kn0vLygjYik/Pz8/Pz8/PyhbXls6c3BhY2U6XV0jIykqLyRtYXRjaFsxXX0pCiAgICAgX3dhbnRl ZCBmZm1wZWctdmlkZW8tY29kZWNzIGV4cGwgJ2ZvcmNlIHZpZGVvIGNvZGVjICgnJ2NvcHknJyB0 byBjb3B5IHN0cmVhbSknIGNvbXBhZGQgLWEgdmNvZGVjcwogfQogCisoKCAkK2Z1bmN0aW9uc1tf ZmZtcGVnX3Njb2RlY3NdICkpIHx8IF9mZm1wZWdfc2NvZGVjcygpIHsKKyAgICBsb2NhbCBzY29k ZWNzCisgICAgc2NvZGVjcz0oY29weSAkeyR7KE0pJHsoZikiJChfY2FsbF9wcm9ncmFtIHZpZGVv LWNvZGVjcyAkd29yZHNbMV0gLWNvZGVjcyAyPi9kZXYvbnVsbCkifTojW1s6c3BhY2U6XV1bRFs6 c3BhY2U6XV1bRVs6c3BhY2U6XV1TW1NbOnNwYWNlOl1dW0RbOnNwYWNlOl1dW1RbOnNwYWNlOl1d W1s6c3BhY2U6XV1bXls6c3BhY2U6XV0jIyp9Ly8oI2IpPz8/Pz8/Pz8oW15bOnNwYWNlOl1dIyMp Ki8kbWF0Y2hbMV19KQorICAgIF93YW50ZWQgZmZtcGVnLXZpZGVvLWNvZGVjcyBleHBsICdmb3Jj ZSB2aWRlbyBjb2RlYyAoJydjb3B5JycgdG8gY29weSBzdHJlYW0pJyBjb21wYWRkIC1hIHNjb2Rl Y3MKK30KKwogKCggJCtmdW5jdGlvbnNbX2ZmbXBlZ19mb3JtYXRzXSApKSB8fCBfZmZtcGVnX2Zv cm1hdHMoKSB7CiAgICAgbG9jYWwgZm9ybWF0cwogICAgIGZvcm1hdHM9KCR7KG91KSR7PSR7KHM6 LDopJHskeyhNKSR7KGYpIiQoX2NhbGxfcHJvZ3JhbSBmb3JtYXRzICR3b3Jkc1sxXSAtZm9ybWF0 cyAyPi9kZXYvbnVsbCkifTojW1s6c3BhY2U6XV1bRFs6c3BhY2U6XV1bRVs6c3BhY2U6XV1bWzpz cGFjZTpdXVteWzpzcGFjZTpdXSMjKn0vLygjYik/Pz8/KFteWzpzcGFjZTpdXSMjKSovJG1hdGNo WzFdfX19fSkKICAgICBfd2FudGVkIGZmbXBlZy1mb3JtYXRzIGV4cGwgJ2ZvcmNlIGZvcm1hdCcg Y29tcGFkZCAtYSBmb3JtYXRzCiB9CiAKICgoICQrZnVuY3Rpb25zW19mZm1wZWdfbGlzdF9waXhf Zm10c10gKSkgfHwgX2ZmbXBlZ19saXN0X3BpeF9mbXRzKCkgewogICAgIGVjaG8gLSAkeyR7JHso TSkkeyhmKSIkKF9jYWxsX3Byb2dyYW0gZm9ybWF0cyAkd29yZHNbMV0gLXBpeF9mbXRzIDI+L2Rl di9udWxsKSJ9OiNbSS5dW08uXVtILl1bUC5dW0IuXSBbXj1bOnNwYWNlOl1dKn0jKiB9JSUgKn0K IH0KIApAQCAtNzcsMjAgKzgzLDIxIEBACiAgICAgZmkKIAogICAgIHJldHVybiAkcmV0CiB9CiAK ICgoICQrZnVuY3Rpb25zW19mZm1wZWdfcmVnaXN0ZXJfbGFzdG9wdF92YWx1ZXNdICkpIHx8IF9m Zm1wZWdfcmVnaXN0ZXJfbGFzdG9wdF92YWx1ZXMoKSB7CiAgICAgaWYgKCggbGFzdG9wdF90YWtl c2FyZ3MgKSk7IHRoZW4KICAgICAgICAgbGFzdG9wdCs9IjokbGFzdG9wdF9kZXNjcmlwdGlvbjoi CiAgICAgICAgIGlmICgoICQjbGFzdG9wdF92YWx1ZXMgKSk7IHRoZW4KICAgICAgICAgICAgIGlm IFtbICRsYXN0b3B0X3R5cGUgPT0gZmxhZ3MgXV07IHRoZW4KKyAgICAgICAgICAgICAgICBsYXN0 b3B0PSIqJGxhc3RvcHQiCiAgICAgICAgICAgICAgICAgZmxhZ3R5cGU9JHske2xhc3RvcHQlJToq fSMtfQogICAgICAgICAgICAgICAgIGxhc3RvcHQrPSItPiRmbGFndHlwZSIKICAgICAgICAgICAg ICAgICBfZmZtcGVnX2ZsYWdzWyRmbGFndHlwZV09IiR7bGFzdG9wdF92YWx1ZXNbKl19IgogICAg ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGxhc3RvcHQrPSIoJHtsYXN0b3B0X3ZhbHVl c1sqXX0pIgogICAgICAgICAgICAgZmkKICAgICAgICAgZmkKICAgICBmaQogICAgIF9mZm1wZWdf YXJnc3BlY3MrPSRsYXN0b3B0CiB9CkBAIC0xMTgsMzIgKzEyNSwzOCBAQAogICAgICAgICAgICAg ZWxpZiBbWyAkbGFzdG9wdF9kZXNjcmlwdGlvbiA9PSBbXls6c3BhY2U6XV0jI1tbOnNwYWNlOl1d W1s6c3BhY2U6XV0qIF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgbG9jYWwgZXhhbXBsZT0ke2xh c3RvcHRfZGVzY3JpcHRpb24lJSAqfQogICAgICAgICAgICAgICAgIGV4YW1wbGU9JHtleGFtcGxl Ly86L1xcOn0KICAgICAgICAgICAgICAgICBsYXN0b3B0X2Rlc2NyaXB0aW9uPSR7bGFzdG9wdF9k ZXNjcmlwdGlvbiMjW15bOnNwYWNlOl1dIyNbWzpzcGFjZTpdXSMjfQogICAgICAgICAgICAgICAg IGxhc3RvcHRfZGVzY3JpcHRpb249JHtsYXN0b3B0X2Rlc2NyaXB0aW9uLy86L1xcOn0KICAgICAg ICAgICAgICAgICBpZiBbWyAkZXhhbXBsZSA9PSBmaWxlbmFtZSBdXTsgdGhlbgogICAgICAgICAg ICAgICAgICAgICBsYXN0b3B0X3Rha2VzYXJncz0wCiAgICAgICAgICAgICAgICAgICAgIGxhc3Rv cHQrPSI6JGxhc3RvcHRfZGVzY3JpcHRpb246X2ZpbGVzIgogICAgICAgICAgICAgICAgIGVsaWYg W1sgJGxhc3RvcHQgPT0gLVthc3ZdcHJlIF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgIGxh c3RvcHRfdGFrZXNhcmdzPTAKKyAgICAgICAgICAgICAgICAgICAgbGFzdG9wdD0iKiRsYXN0b3B0 IgogICAgICAgICAgICAgICAgICAgICBsYXN0b3B0Kz0iOiA6X2ZmbXBlZ19wcmVzZXRzIgogICAg ICAgICAgICAgICAgIGVsaWYgW1sgJGxhc3RvcHQgPT0gLWFjb2RlYyBdXTsgdGhlbgogICAgICAg ICAgICAgICAgICAgICBsYXN0b3B0X3Rha2VzYXJncz0wCiAgICAgICAgICAgICAgICAgICAgIGxh c3RvcHQrPSI6IDpfZmZtcGVnX2Fjb2RlY3MiCiAgICAgICAgICAgICAgICAgZWxpZiBbWyAkbGFz dG9wdCA9PSAtdmNvZGVjIF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgIGxhc3RvcHRfdGFr ZXNhcmdzPTAKICAgICAgICAgICAgICAgICAgICAgbGFzdG9wdCs9IjogOl9mZm1wZWdfdmNvZGVj cyIKKyAgICAgICAgICAgICAgICBlbGlmIFtbICRsYXN0b3B0ID09IC1zY29kZWMgXV07IHRoZW4K KyAgICAgICAgICAgICAgICAgICAgbGFzdG9wdF90YWtlc2FyZ3M9MAorICAgICAgICAgICAgICAg ICAgICBsYXN0b3B0Kz0iOiA6X2ZmbXBlZ19zY29kZWNzIgogICAgICAgICAgICAgICAgIGVsaWYg W1sgJGxhc3RvcHQgPT0gLWYgXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICAgbGFzdG9wdF90 YWtlc2FyZ3M9MAorICAgICAgICAgICAgICAgICAgICBsYXN0b3B0PSIqJGxhc3RvcHQiCiAgICAg ICAgICAgICAgICAgICAgIGxhc3RvcHQrPSI6IDpfZmZtcGVnX2Zvcm1hdHMiCiAgICAgICAgICAg ICAgICAgZWxpZiBbWyAkbGFzdG9wdCA9PSAtcGl4X2ZtdCBdXTsgdGhlbgogICAgICAgICAgICAg ICAgICAgICBsYXN0b3B0X3Rha2VzYXJncz0wCisgICAgICAgICAgICAgICAgICAgIGxhc3RvcHQ9 IiokbGFzdG9wdCIKICAgICAgICAgICAgICAgICAgICAgbGFzdG9wdCs9IjogOl9mZm1wZWdfcGl4 X2ZtdHMiCiAgICAgICAgICAgICAgICAgZWxpZiBbWyAkZXhhbXBsZSA9PSBiaXRzdHJlYW1fZmls dGVyIF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgIGxhc3RvcHRfdGFrZXNhcmdzPTAKICAg ICAgICAgICAgICAgICAgICAgbGFzdG9wdCs9IjogOl9mZm1wZWdfYnNmcyIKICAgICAgICAgICAg ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGxhc3RvcHRfdGFrZXNhcmdzPTEKICAgICAg ICAgICAgICAgICAgICAgbGFzdG9wdF9kZXNjcmlwdGlvbis9IiAoJGV4YW1wbGUpIgogICAgICAg ICAgICAgICAgIGZpCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbGFzdG9wdF90 YWtlc2FyZ3M9MAo= --000e0cd4b0eede10c104b128e6c7 Content-Type: application/octet-stream; name=_nmcli Content-Disposition: attachment; filename=_nmcli Content-Transfer-Encoding: base64 X-Attachment-Id: f_gups1bqb1 I2NvbXBkZWYgbm1jbGkKCmxvY2FsIGNvbnRleHQgc3RhdGUgbGluZQp0eXBlc2V0IC1BIG9wdF9h cmdzCgpsb2NhbCBCT0xEPSQnXGVbMW0nCmxvY2FsIE5PUk09JCdcZVttJwoKaWYgW1sgLXogJF9u bWNsaV92ZXJzaW9uIF1dOyB0aGVuCiAgX25tY2xpX3ZlcnNpb249IiR7IiQobm1jbGkgLS12ZXJz aW9uKSIjIyp2ZXJzaW9uIH0iCmZpCgooKCAkK2Z1bmN0aW9uc1tfbm1jbGlfaXNfcnVubmluZ10g KSkgfHwgX25tY2xpX2lzX3J1bm5pbmcoKSB7CiAgW1sgJChubWNsaSAtZiBydW5uaW5nIG5tKSAh PSAqJ25vdCBydW5uaW5nJyogXV0KfQoKKCggJCtmdW5jdGlvbnNbX25tY2xpX2Nvbl9pZHNdICkp IHx8IF9ubWNsaV9jb25faWRzKCkgewogIF9ubWNsaV9pc19ydW5uaW5nIHx8IHJldHVybgogIGxv Y2FsIC1hIGNvbl9pZHMKICBjb25faWRzPSgkeyhmKSIkKG5tY2xpIC1mIG5hbWUgY29uKSJ9KQog IGNvbl9pZHM9KCR7Y29uX2lkc1syLC0yXX0pCiAgY29uX2lkcz0oJHtjb25faWRzW0BdJSVcICMj fSkKICBjb21wYWRkIC1YICIke0JPTER9c2VsZWN0IGNvbm5lY3Rpb24ke05PUk19IiAtYSBjb25f aWRzCn0KCigoICQrZnVuY3Rpb25zW19ubWNsaV9jb25fdXVpZHNdICkpIHx8IF9ubWNsaV9jb25f dXVpZHMoKSB7CiAgX25tY2xpX2lzX3J1bm5pbmcgfHwgcmV0dXJuCiAgbG9jYWwgLWEgY29uX3V1 aWRzCiAgY29uX3V1aWRzPSgkeyhmKSIkKG5tY2xpIC1mIHV1aWQgY29uKSJ9KQogIGNvbl91dWlk cz0oJHtjb25fdXVpZHNbMiwtMl19KQogIGNvbl91dWlkcz0oJHtjb25fdXVpZHNbQF0lJVwgIyN9 KQogIGNvbXBhZGQgLVggIiR7Qk9MRH1zZWxlY3QgY29ubmVjdGlvbiR7Tk9STX0iIC1hIGNvbl91 dWlkcwp9CgooKCAkK2Z1bmN0aW9uc1tfbm1jbGlfaWZhY2VzXSApKSB8fCBfbm1jbGlfaWZhY2Vz KCkgewogIGxvY2FsIC1hIGNvbl9pZmFjZXMKICBjb25faWZhY2VzPSgkeyhmKSIkKGlmY29uZmln IC1hKSJ9KQogIGNvbl9pZmFjZXM9KCR7Y29uX2lmYWNlczojICp9KQogIGNvbl9pZmFjZXM9KCR7 Y29uX2lmYWNlcyUlICp9KQogIGNvbXBhZGQgLVggIiR7Qk9MRH1zZWxlY3QgaW50ZXJmYWNlJHtO T1JNfSIgLWEgY29uX2lmYWNlcwp9CiAKKCggJCtmdW5jdGlvbnNbX25tY2xpX29iamVjdHNdICkp IHx8IF9ubWNsaV9vYmplY3RzKCkgewogIGxvY2FsIC1hIG9iamVjdHNfYXJyYXkKICBvYmplY3Rz X2FycmF5PSgKICAgICdubTpOZXR3b3JrTWFuYWdlciBzdGF0dXMnCiAgICAnY29uOk5ldHdvcmtN YW5hZ2VyIGNvbm5lY3Rpb25zJwogICAgJ2RldjpkZXZpY2VzIG1hbmFnZWQgYnkgTmV0d29ya01h bmFnZXInCiAgKQogIF9kZXNjcmliZSAnbm1jbGkgb2JqZWN0JyBvYmplY3RzX2FycmF5Cn0KCigo ICQrZnVuY3Rpb25zW19ubWNsaV9ubV0gKSkgfHwgX25tY2xpX25tKCkgewogICAgbG9jYWwgLWEg bm1fYXJyYXkKICAgIG5tX2FycmF5PSgKICAgICAgICAnc3RhdHVzOnNob3cgb3ZlcmFsbCBzdGF0 dXMgb2YgTmV0d29ya01hbmFnZXInCiAgICAgICAgJ2VuYWJsZTpnZXQgc3RhdHVzIG9yIGVuYWJs ZS9kaXNhYmxlIG5ldHdvcmtpbmcnCiAgICAgICAgJ3NsZWVwOmdldCBzbGVlcCBzdGF0dXMgb3Ig cHV0IHRvIHNsZWVwL2F3YWtlIE5ldHdvcmtNYW5hZ2VyJwogICAgICAgICd3aWZpOmlucXVpcmUg b3Igc2V0IHN0YXR1cyBvZiBXaUZpIGluIE5ldHdvcmtNYW5hZ2VyJwogICAgICAgICd3d2FuOmlu cXVpcmUgb3Igc2V0IHN0YXR1cyBvZiBXV0FOIGluIE5ldHdvcmtNYW5hZ2VyJwogICAgKQogICAg X2Rlc2NyaWJlICdpbnF1aXJlIGFuZCBjaGFuZ2Ugc3RhdGUgb2YgTmV0d29ya01hbmFnZXInIG5t X2FycmF5Cn0KCigoICQrZnVuY3Rpb25zW19ubWNsaV9jb25dICkpIHx8IF9ubWNsaV9jb24oKSB7 CiAgICBsb2NhbCAtYSBjb25fYXJyYXkKICAgIGNvbl9hcnJheT0oCiAgICAgICAgJ2xpc3Q6bGlz dCBjb25maWd1cmVkIGNvbm5lY3Rpb25zJwogICAgICAgICdzdGF0dXM6cHJpbnQgc3RhdHVzIG9m IGFjdGl2ZSBjb25uZWN0aW9ucycKICAgICAgICAndXA6YWN0aXZhdGUgYSBjb25uZWN0aW9uJwog ICAgICAgICdkb3duOmRlYWN0aXZhdGUgYSBjb25uZWN0aW9uJwogICAgKQogICAgaWYgW1sgJF9u bWNsaV92ZXJzaW9uID09IDAuOS5bMS05XSogXV07IHRoZW4KICAgICAgICBjb25fYXJyYXlbNV09 ImRlbGV0ZTpkZWxldGUgYSBjb25uZWN0aW9uIgogICAgZmkKICAgIF9kZXNjcmliZSAiZ2V0IGlu Zm9ybWF0aW9uIGFib3V0IE5ldHdvcmtNYW5hZ2VyJ3MgY29ubmVjdGlvbnMiIGNvbl9hcnJheQp9 CgooKCAkK2Z1bmN0aW9uc1tfbm1jbGlfY29uX2xpc3RdICkpIHx8IF9ubWNsaV9jb25fbGlzdCgp IHsKICAgIGxvY2FsIC1hIGNvbl9saXN0X2FycmF5CiAgICBjb25fbGlzdF9hcnJheT0oCiAgICAg ICAgJ2lkOmdldCBkZXRhaWxzIG9uIGNvbm5lY3Rpb24gc3BlY2lmaWVkIGJ5IGlkJwogICAgICAg ICd1dWlkOmdldCBkZXRhaWxzIG9uIGNvbm5lY3Rpb24gc3BlY2lmaWVkIGJ5IHV1aWQnCiAgICAp CiAgICBpZiBbWyAkX25tY2xpX3ZlcnNpb24gPT0gMC44KiBdXTsgdGhlbgogICAgICAgIGNvbl9s aXN0X2FycmF5WzNdPSdzeXN0ZW06b25seSBsaXN0IHN5c3RlbSBjb25uZWN0aW9ucycKICAgICAg ICBjb25fbGlzdF9hcnJheVs0XT0ndXNlcjpvbmx5IGxpc3QgdXNlciBjb25uZWN0aW9ucycKICAg IGZpCiAgICBfZGVzY3JpYmUgJ2xpc3QgY29uZmlndXJlZCBjb25uZWN0aW9ucycgY29uX2xpc3Rf YXJyYXkKfQoKKCggJCtmdW5jdGlvbnNbX25tY2xpX2Nvbl91cF0gKSkgfHwgX25tY2xpX2Nvbl91 cCgpIHsKICAgIGxvY2FsIC1hIGNvbl91cF9hcnJheQogICAgY29uX3VwX2FycmF5PSgKICAgICAg ICAnaWQ6YWN0aXZhdGUgY29ubmVjdGlvbiBzcGVjaWZpZWQgYnkgaWQnCiAgICAgICAgJ3V1aWQ6 YWN0aXZhdGUgY29ubmVjdGlvbiBzcGVjaWZpZWQgYnkgdXVpZCcKICAgICkKICAgIF9kZXNjcmli ZSAnYWN0aXZhdGUgY29ubmVjdGlvbiBieSBpZCBvciB1dWlkJyBjb25fdXBfYXJyYXkKfQoKKCgg JCtmdW5jdGlvbnNbX25tY2xpX2Nvbl9kb3duXSApKSB8fCBfbm1jbGlfY29uX2Rvd24oKSB7CiAg ICBsb2NhbCAtYSBjb25fZG93bl9hcnJheQogICAgY29uX2Rvd25fYXJyYXk9KAogICAgICAgICdp ZDpkZWFjdGl2YXRlIGNvbm5lY3Rpb24gc3BlY2lmaWVkIGJ5IGlkJwogICAgICAgICd1dWlkOmRl YWN0aXZhdGUgY29ubmVjdGlvbiBzcGVjaWZpZWQgYnkgdXVpZCcKICAgICkKICAgIF9kZXNjcmli ZSAnZGVhY3RpdmF0ZSBjb25uZWN0aW9uIGJ5IGlkIG9yIHV1aWQnIGNvbl9kb3duX2FycmF5Cn0K CigoICQrZnVuY3Rpb25zW19ubWNsaV9jb25fZGVsZXRlXSApKSB8fCBfbm1jbGlfY29uX2RlbGV0 ZSgpIHsKICAgIGxvY2FsIC1hIGNvbl9kZWxldGVfYXJyYXkKICAgIGNvbl9kZWxldGVfYXJyYXk9 KAogICAgICAgICdpZDpkZWxldGUgY29ubmVjdGlvbiBzcGVjaWZpZWQgYnkgaWQnCiAgICAgICAg J3V1aWQ6ZGVsZXRlIGNvbm5lY3Rpb24gc3BlY2lmaWVkIGJ5IHV1aWQnCiAgICApCiAgICBfZGVz Y3JpYmUgJ2RlbGV0ZSBjb25uZWN0aW9uIGJ5IGlkIG9yIHV1aWQnIGNvbl9kZWxldGVfYXJyYXkK fQoKKCggJCtmdW5jdGlvbnNbX25tY2xpX2Nvbl91cF9leHRyYWFyZ3NdICkpIHx8IF9ubWNsaV9j b25fdXBfZXh0cmFhcmdzKCkgewogICAgbG9jYWwgLWEgY29uX3VwX2V4dHJhYXJnc19hcnJheQog ICAgY29uX3VwX2V4dHJhYXJnc19hcnJheT0oCiAgICAgICAgJ2lmYWNlOnJlcXVpcmUgYSBwYXJ0 aWN1bGFyIGludGVyZmFjZScKICAgICAgICAnYXA6cmVxdWlyZSBhIHNwZWNpZmljIGFjY2VzcyBw b2ludCcKICAgICAgICAnLS1ub3dhaXQ6ZG9uJyd0IHdhaXQgZm9yIGNvbW1hbmQgY29tcGxldGlv bicKICAgICAgICAnLS10aW1lb3V0OnNwZWNpZnkgaG93IGxvbmcgdG8gd2FpdCBmb3Igb3BlcmF0 aW9uIHRvIGNvbXBsZXRlJwogICAgKQogICAgX2Rlc2NyaWJlICdleHRyYSBvcHRpb25zIGZvciAi Y29uIHVwIicgY29uX3VwX2V4dHJhYXJnc19hcnJheQp9CgooKCAkK2Z1bmN0aW9uc1tfbm1jbGlf ZGV2X2Rpc2Nvbm5lY3RfZXh0cmFhcmdzXSApKSB8fCBfbm1jbGlfZGV2X2Rpc2Nvbm5lY3RfZXh0 cmFhcmdzKCkgewogICAgbG9jYWwgLWEgZGV2X2Rpc2Nvbm5lY3RfZXh0cmFhcmdzX2FycmF5CiAg ICBkZXZfZGlzY29ubmVjdF9leHRyYWFyZ3NfYXJyYXk9KAogICAgICAgICctLW5vd2FpdDpkb24n J3Qgd2FpdCBmb3IgY29tbWFuZCBjb21wbGV0aW9uJwogICAgICAgICctLXRpbWVvdXQ6c3BlY2lm eSBob3cgbG9uZyB0byB3YWl0IGZvciBvcGVyYXRpb24gdG8gY29tcGxldGUnCiAgICApCiAgICBf ZGVzY3JpYmUgJ2V4dHJhIG9wdGlvbnMgZm9yICJkZXYgZGlzY29ubmVjdCInIGRldl9kaXNjb25u ZWN0X2V4dHJhYXJnc19hcnJheQp9CgooKCAkK2Z1bmN0aW9uc1tfbm1jbGlfZGV2X3dpZmlfbGlz dF0gKSkgfHwgX25tY2xpX2Rldl93aWZpX2xpc3QoKSB7CiAgICBsb2NhbCAtYSBkZXZfd2lmaV9s aXN0X2FycmF5CiAgICBkZXZfd2lmaV9saXN0X2FycmF5PSgKICAgICAgICAnaWZhY2U6bGlzdCBB UHMgZm9yIGEgcGFydGljdWxhciBpbnRlcmZhY2UnCiAgICApCiAgICBpZiBbWyAkX25tY2xpX3Zl cnNpb24gPT0gMC44KiB8fCAkX25tY2xpX3ZlcnNpb24gPT0gMC45LjAqIF1dOyB0aGVuCiAgICAg ICAgZGV2X3dpZmlfbGlzdF9hcnJheVsyXSA9ICdod2FkZHI6bGlzdCBhIHNwZWNpZmljIEFQIGJ5 IE1BQyBhZGRyZXNzJwogICAgZWxpZiBbWyAkX25tY2xpX3ZlcnNpb24gPT0gMC45LlsxLTldKiBd XTsgdGhlbgogICAgICAgIGRldl93aWZpX2xpc3RfYXJyYXlbMl0gPSAnYnNzaWQ6bGlzdCBhIHNw ZWNpZmljIEFQIGJ5IEJTU0lEJwogICAgZmkKICAgIF9kZXNjcmliZSAnb3B0aW9ucyBmb3Igc3Bl Y2lmeWluZyB0aGUgQVAgdG8gbGlzdCcgZGV2X3dpZmlfbGlzdF9hcnJheQp9CgooKCAkK2Z1bmN0 aW9uc1tfbm1jbGlfZGV2XSApKSB8fCBfbm1jbGlfZGV2KCkgewogICAgbG9jYWwgLWEgZGV2X2Fy cmF5CiAgICBkZXZfYXJyYXk9KAogICAgICAgICdzdGF0dXM6cHJpbnQgc3RhdHVzIG9mIGRldmlj ZXMnCiAgICAgICAgJ2xpc3Q6Z2V0IGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGRldmljZXMn CiAgICAgICAgJ2Rpc2Nvbm5lY3Q6ZGlzY29ubmVjdCBkZXZpY2UgYW5kIHByZXZlbnQgaXQgZnJv bSBhdXRvbWF0aWNhbGx5IGFjdGl2YXRpbmcnCiAgICAgICAgJ3dpZmk6bGlzdCBhdmFpbGFibGUg V2lGaSBhY2Nlc3MgcG9pbnRzJwogICAgKQogICAgX2Rlc2NyaWJlICJnZXQgaW5mb3JtYXRpb24g YWJvdXQgZGV2aWNlcyIgZGV2X2FycmF5Cn0KCigoICQrZnVuY3Rpb25zW19ubWNsaV90cnVlZmFs c2VdICkpIHx8IF9ubWNsaV90cnVlZmFsc2UoKSB7CiAgICBjb21wYWRkIC1YICIke0JPTER9dXNl IHRydWUvZmFsc2UgdG8gbW9kaWZ5IChub3RoaW5nID0gcXVlcnkgc3RhdHVzKSR7Tk9STX0iIHRy dWUgZmFsc2UKfQoKKCggJCtmdW5jdGlvbnNbX25tY2xpX29ub2ZmXSApKSB8fCBfbm1jbGlfb25v ZmYoKSB7CiAgICBjb21wYWRkIC1YICIke0JPTER9dXNlIG9uL29mZiB0byBtb2RpZnkgKG5vdGhp bmcgPSBxdWVyeSBzdGF0dXMpJHtOT1JNfSIgb24gb2ZmCn0KCmxvY2FsIHcxPSIke3dvcmRzWyQj d29yZHMgLSAxXX0iCmxvY2FsIHcyPSIke3dvcmRzWyQjd29yZHMgLSAyXX0iCmxvY2FsIHczPSIk e3dvcmRzWyQjd29yZHMgLSAzXX0iCmxvY2FsIHc0PSIke3dvcmRzWyQjd29yZHMgLSA0XX0iCgpp ZiBbWyAkdzIgPT0gbm0gJiYgJHcxID09IChzbGVlcHxlbmFibGUpIF1dOyB0aGVuCiAgICBfbm1j bGlfdHJ1ZWZhbHNlICYmIHJldHVybgplbGlmIFtbICR3MiA9PSBubSAmJiAkdzEgPT0gKHdpZml8 d3dhbikgXV07IHRoZW4KICAgIF9ubWNsaV9vbm9mZiAmJiByZXR1cm4KZWxpZiBbWyAkdzEgPT0g bm0gXV07IHRoZW4KICAgIF9ubWNsaV9ubSAmJiByZXR1cm4KZWxpZiBbWyAkdzMgPT0gY29uICYm ICR3MiA9PSBsaXN0ICYmICR3MSA9PSBpZCBdXTsgdGhlbgogICAgX25tY2xpX2Nvbl9pZHMgJiYg cmV0dXJuCmVsaWYgW1sgJHczID09IGNvbiAmJiAkdzIgPT0gbGlzdCAmJiAkdzEgPT0gdXVpZCBd XTsgdGhlbgogICAgX25tY2xpX2Nvbl91dWlkcyAmJiByZXR1cm4KZWxpZiBbWyAkdzIgPT0gY29u ICYmICR3MSA9PSBsaXN0IF1dOyB0aGVuCiAgICBfbm1jbGlfY29uX2xpc3QgJiYgcmV0dXJuCmVs aWYgW1sgJHczID09IGNvbiAmJiAkdzIgPT0gKHVwfGRvd24pICYmICR3MSA9PSBpZCBdXTsgdGhl bgogICAgX25tY2xpX2Nvbl9pZHMgJiYgcmV0dXJuCmVsaWYgW1sgJF9ubWNsaV92ZXJzaW9uID09 IDAuOS5bMS05XSogJiYgJHczID09IGNvbiAmJiAkdzIgPT0gZGVsZXRlICYmICR3MSA9PSBpZCBd XTsgdGhlbgogICAgX25tY2xpX2Nvbl9pZHMgJiYgcmV0dXJuCmVsaWYgW1sgJHczID09IGNvbiAm JiAkdzIgPT0gKHVwfGRvd24pICYmICR3MSA9PSB1dWlkIF1dOyB0aGVuCiAgICBfbm1jbGlfY29u X3V1aWRzICYmIHJldHVybgplbGlmIFtbICRfbm1jbGlfdmVyc2lvbiA9PSAwLjkuWzEtOV0qICYm ICR3MyA9PSBjb24gJiYgJHcyID09IGRlbGV0ZSAmJiAkdzEgPT0gdXVpZCBdXTsgdGhlbgogICAg X25tY2xpX2Nvbl91dWlkcyAmJiByZXR1cm4KZWxpZiBbWyAkeyhwajpcMDopd29yZHN9ID09ICok J1wwY29uXDB1cFwwJyhpZHx1dWlkKSQnXDAnKiBdXTsgdGhlbgogICAgIGlmIFtbICR3MSA9PSBp ZmFjZSBdXTsgdGhlbgogICAgICAgICBfbm1jbGlfaWZhY2VzICYmIHJldHVybgogICAgIGVsaWYg W1sgJHcxID09IGFwIF1dOyB0aGVuCiAgICAgICAgIGNvbXBhZGQgLXggIiR7Qk9MRH1lbnRlciBN QUMgYWRkcmVzcyR7Tk9STX0iICYmIHJldHVybgogICAgIGVsaWYgW1sgJHcxID09IC0tdGltZW91 dCBdXTsgdGhlbgogICAgICAgICBjb21wYWRkIC14ICIke0JPTER9ZW50ZXIgdGltZW91dCR7Tk9S TX0iICYmIHJldHVybgogICAgIGVsc2UKICAgICAgICAgX25tY2xpX2Nvbl91cF9leHRyYWFyZ3Mg JiYgcmV0dXJuCiAgICAgZmkKZWxpZiBbWyAkdzIgPT0gY29uICYmICR3MSA9PSB1cCBdXTsgdGhl bgogICAgX25tY2xpX2Nvbl91cCAmJiByZXR1cm4KZWxpZiBbWyAkdzIgPT0gY29uICYmICR3MSA9 PSBkb3duIF1dOyB0aGVuCiAgICBfbm1jbGlfY29uX2Rvd24gJiYgcmV0dXJuCmVsaWYgW1sgJF9u bWNsaV92ZXJzaW9uID09IDAuOS5bMS05XSogJiYgJHcyID09IGNvbiAmJiAkdzEgPT0gZGVsZXRl IF1dOyB0aGVuCiAgICBfbm1jbGlfY29uX2RlbGV0ZSAmJiByZXR1cm4KZWxpZiBbWyAkdzEgPT0g Y29uIF1dOyB0aGVuCiAgICBfbm1jbGlfY29uICYmIHJldHVybgplbGlmIFtbICR3MyA9PSBkZXYg JiYgJHcyID09IChsaXN0fGRpc2Nvbm5lY3QpICYmICR3MSA9PSBpZmFjZSBdXTsgdGhlbgogICAg X25tY2xpX2lmYWNlcyAmJiByZXR1cm4KZWxpZiBbWyAkeyhwajpcMDopd29yZHN9ID09ICokJ1ww ZGV2XDBkaXNjb25uZWN0XDBpZmFjZVwwJyogXV07IHRoZW4KICAgICBpZiBbWyAkdzEgPT0gLS10 aW1lb3V0IF1dOyB0aGVuCiAgICAgICAgIGNvbXBhZGQgLXggIiR7Qk9MRH1lbnRlciB0aW1lb3V0 JHtOT1JNfSIgJiYgcmV0dXJuCiAgICAgZWxzZQogICAgICAgICBfbm1jbGlfZGV2X2Rpc2Nvbm5l Y3RfZXh0cmFhcmdzICYmIHJldHVybgogICAgIGZpCmVsaWYgW1sgJHcyID09IGRldiAmJiAkdzEg PT0gbGlzdCBdXTsgdGhlbgogICAgY29tcGFkZCBpZmFjZSAmJiByZXR1cm4KZWxpZiBbWyAkdzIg PT0gZGV2ICYmICR3MSA9PSBkaXNjb25uZWN0IF1dOyB0aGVuCiAgICBjb21wYWRkIGlmYWNlICYm IHJldHVybgplbGlmIFtbICR3NCA9PSBkZXYgJiYgJHczID09IHdpZmkgJiYgJHcyID09IGxpc3Qg JiYgJHcxID09IGlmYWNlIF1dOyB0aGVuCiAgICBfbm1jbGlfaWZhY2VzICYmIHJldHVybgplbGlm IFtbICR3NCA9PSBkZXYgJiYgJHczID09IHdpZmkgJiYgJHcyID09IGxpc3QgJiYgJHcxID09IGh3 YWRkciBdXTsgdGhlbgogICAgY29tcGFkZCAteCAiJHtCT0xEfWVudGVyIE1BQyBhZGRyZXNzJHtO T1JNfSIgJiYgcmV0dXJuCmVsaWYgW1sgJHczID09IGRldiAmJiAkdzIgPT0gd2lmaSAmJiAkdzEg PT0gbGlzdCBdXTsgdGhlbgogICAgX25tY2xpX2Rldl93aWZpX2xpc3QgJiYgcmV0dXJuCmVsaWYg W1sgJHcyID09IGRldiAmJiAkdzEgPT0gd2lmaSBdXTsgdGhlbgogICAgY29tcGFkZCBsaXN0ICYm IHJldHVybgplbGlmIFtbICR3MSA9PSBkZXYgXV07IHRoZW4KICAgIF9ubWNsaV9kZXYgJiYgcmV0 dXJuCmVsc2UKICAgIF9hcmd1bWVudHMgXAogICAgICB7JygtLXRlcnNlKS10JywnKC10KS0tdGVy c2UnfSdbdGVyc2Ugb3V0cHV0XScgXAogICAgICB7JygtLXByZXR0eSktcCcsJygtcCktLXByZXR0 eSd9J1twcmV0dHkgb3V0cHV0XScgXAogICAgICB7JygtLW1vZGUpLW0nLCcoLW0pLS1tb2RlJ30n W291dHB1dCBtb2RlXTpvdXRwdXQgbW9kZToodGFidWxhciBtdWx0aWxpbmUpJyBcCiAgICAgIHsn KC0tZmllbGRzKS1mJywnKC1mKS0tZmllbGRzJ30nW3NwZWNpZnkgZmllbGRzIHRvIG91dHB1dF06 IDotPmZpZWxkcycgXAogICAgICB7JygtLWVzY2FwZSktZScsJygtZSktLWVzY2FwZSd9J1tlc2Nh cGUgY29sdW1ucyBzZXBhcmF0b3JzIGluIHZhbHVlc106ZXNjYXBlIGNvbHVtbnMgc2VwYXJhdG9y cyBpbiB2YWx1ZXM6KHllcyBubyknIFwKICAgICAgeycoLS12ZXJzaW9uKS12JywnKC12KS0tdmVy c2lvbid9J1tzaG93IHByb2dyYW0gdmVyc2lvbl0nIFwKICAgICAgeycoLS1oZWxwKS1oJywnKC1o KS0taGVscCd9J1twcmludCB0aGlzIGhlbHBdJyBcCiAgICAgICcqOjpubWNsaSBvYmplY3Q6X25t Y2xpX29iamVjdHMnIFwKICAgICAgJiYgcmV0dXJuCmZpCgpbWyAiJHN0YXRlIiA9PSAiZmllbGRz IiBdXSAmJgogX3ZhbHVlcyAtcyAsICdmaWVsZHMgdG8gYmUgcHJpbnRlZCcgXAogICBhbGwgY29t bW9uIFwKICAgYXV0b2Nvbm5lY3QgZGJ1cy1wYXRoIGRldmljZSBuYW1lIG5ldC1lbmFibGVkIHJl YWRvbmx5IHJ1bm5pbmcgXAogICBzY29wZSBzdGF0ZSB0aW1lc3RhbXAgdGltZXN0YW1wLXJlYWwg dHlwZSB1dWlkIHdpZmkgd2lmaS1oYXJkd2FyZSBcCiAgIHd3YW4gd3dhbi1oYXJkd2FyZSBcCiAg ICYmIHJldHVybgo= --000e0cd4b0eede10c104b128e6c7--