From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Andreas Rottmann Newsgroups: gmane.lisp.guile.devel Subject: [PATCH] Add implementation of SRFI-67 Date: Sat, 02 Oct 2010 00:06:43 +0200 Message-ID: <8762xllg98.fsf@delenn.lan> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: dough.gmane.org 1285970852 19590 80.91.229.12 (1 Oct 2010 22:07:32 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Fri, 1 Oct 2010 22:07:32 +0000 (UTC) To: Guile Development Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Sat Oct 02 00:07:31 2010 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1P1nl1-0001Uk-Ag for guile-devel@m.gmane.org; Sat, 02 Oct 2010 00:07:30 +0200 Original-Received: from localhost ([127.0.0.1]:38604 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1P1nl0-0000h3-1K for guile-devel@m.gmane.org; Fri, 01 Oct 2010 18:07:10 -0400 Original-Received: from [140.186.70.92] (port=38786 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1P1nks-0000e8-RY for guile-devel@gnu.org; Fri, 01 Oct 2010 18:07:04 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1P1nkr-0004I4-1c for guile-devel@gnu.org; Fri, 01 Oct 2010 18:07:02 -0400 Original-Received: from mailout-de.gmx.net ([213.165.64.23]:47791 helo=mail.gmx.net) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1P1nkq-0004Hz-07 for guile-devel@gnu.org; Fri, 01 Oct 2010 18:07:00 -0400 Original-Received: (qmail invoked by alias); 01 Oct 2010 22:06:57 -0000 Original-Received: from 83-215-154-5.hage.dyn.salzburg-online.at (EHLO nathot.lan) [83.215.154.5] by mail.gmx.net (mp001) with SMTP; 02 Oct 2010 00:06:57 +0200 X-Authenticated: #3102804 X-Provags-ID: V01U2FsdGVkX1/SFcMXFJbSMb0gHF0As6CNu2AUgUNoqWU3M/nNU/ xMqjeYeaKsmpj3 Original-Received: from localhost (localhost.localdomain [127.0.0.1]) by nathot.lan (Postfix) with ESMTP id 9FAF13A6BC for ; Sat, 2 Oct 2010 00:06:56 +0200 (CEST) Original-Received: from nathot.lan ([127.0.0.1]) by localhost (nathot.lan [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ey9f5ZbKElBY for ; Sat, 2 Oct 2010 00:06:45 +0200 (CEST) Original-Received: from delenn.lan (delenn.lan [192.168.3.11]) by nathot.lan (Postfix) with ESMTP id 4B9C03A6B9 for ; Sat, 2 Oct 2010 00:06:44 +0200 (CEST) Original-Received: by delenn.lan (Postfix, from userid 1000) id 0031974E40; Sat, 2 Oct 2010 00:06:43 +0200 (CEST) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) X-Y-GMX-Trusted: 0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:10980 Archived-At: --=-=-= Content-Type: attachment Content-Disposition: attachment; filename=srfi-67.patch Content-Transfer-Encoding: base64 RnJvbTogQW5kcmVhcyBSb3R0bWFubiA8YS5yb3R0bWFubkBnbXguYXQ+ClN1YmplY3Q6IEFkZCBp bXBsZW1lbnRhdGlvbiBvZiBTUkZJLTY3CgoqIG1vZHVsZS9zcmZpL3NyZmktNjcvY29tcGFyZS5z Y206IE5ldyBmaWxlOyByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YKICBTUkZJIDY3LgoqIG1v ZHVsZS9zcmZpL3NyZmktNjcuc2NtOiBOZXcgbW9kdWxlOyBpbmNsdWRlcyB0aGUgcmVmZXJuY2UK ICBpbXBsZW1lbnRhdGlvbi4KKiBtb2R1bGUvTWFrZWZpbGUuYW0gKFNSRklfU09VUkNFUyk6IEFk ZCBzcmZpL3NyZmktNjcuc2NtLgogIChOT0NPTVBfU09VUkNFUyk6IEFkZCBzcmZpL3NyZmktNjcv Y29tcGFyZS5zY20uCgoqIHRlc3Qtc3VpdGUvdGVzdHMvc3JmaS02Ny50ZXN0OiBOZXcgZmlsZS4K KiB0ZXN0LXN1aXRlL01ha2VmaWxlLmFtIChTQ01fVEVTVFMpOiBBZGQgdGVzdHMvc3JmaS02Ny50 ZXN0LgoKLS0tCiBkb2MvcmVmL3NyZmktbW9kdWxlcy50ZXhpICAgICAgIHwgICAgNyArCiBtb2R1 bGUvTWFrZWZpbGUuYW0gICAgICAgICAgICAgIHwgICAgMiArCiBtb2R1bGUvc3JmaS9zcmZpLTY3 LnNjbSAgICAgICAgIHwgICA4NyArKysKIG1vZHVsZS9zcmZpL3NyZmktNjcvY29tcGFyZS5zY20g fCAgNzA3ICsrKysrKysrKysrKysrKysrKysrKysKIHRlc3Qtc3VpdGUvTWFrZWZpbGUuYW0gICAg ICAgICAgfCAgICAxICsKIHRlc3Qtc3VpdGUvdGVzdHMvc3JmaS02Ny50ZXN0ICAgfCAxMjIxICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCAy MDI1IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3JlZi9z cmZpLW1vZHVsZXMudGV4aSBiL2RvYy9yZWYvc3JmaS1tb2R1bGVzLnRleGkKaW5kZXggMTA5NzU2 YS4uNWVmY2U5ZCAxMDA2NDQKLS0tIGEvZG9jL3JlZi9zcmZpLW1vZHVsZXMudGV4aQorKysgYi9k b2MvcmVmL3NyZmktbW9kdWxlcy50ZXhpCkBAIC00Nyw2ICs0Nyw3IEBAIGdldCB0aGUgcmVsZXZh bnQgU1JGSSBkb2N1bWVudHMgZnJvbSB0aGUgU1JGSSBob21lIHBhZ2UKICogU1JGSS01NTo6ICAg ICAgICAgICAgICAgICAgICAgUmVxdWlyaW5nIEZlYXR1cmVzLgogKiBTUkZJLTYwOjogICAgICAg ICAgICAgICAgICAgICBJbnRlZ2VycyBhcyBiaXRzLgogKiBTUkZJLTYxOjogICAgICAgICAgICAg ICAgICAgICBBIG1vcmUgZ2VuZXJhbCBgY29uZCcgY2xhdXNlCisqIFNSRkktNjc6OiAgICAgICAg ICAgICAgICAgICAgIENvbXBhcmUgcHJvY2VkdXJlcwogKiBTUkZJLTY5OjogICAgICAgICAgICAg ICAgICAgICBCYXNpYyBoYXNoIHRhYmxlcy4KICogU1JGSS04ODo6ICAgICAgICAgICAgICAgICAg ICAgS2V5d29yZCBvYmplY3RzLgogKiBTUkZJLTk4OjogICAgICAgICAgICAgICAgICAgICBBY2Nl c3NpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzLgpAQCAtNDA1Myw2ICs0MDU0LDEyIEBAIHN1Y2Nl c3MuICBTUkZJIDYxIGlzIGltcGxlbWVudGVkIGluIHRoZSBHdWlsZSBjb3JlOyB0aGVyZSdzIG5v IG1vZHVsZQogbmVlZGVkIHRvIGdldCBTUkZJLTYxIGl0c2VsZi4gIEV4dGVuZGVkIEBjb2Rle2Nv bmR9IGlzIGRvY3VtZW50ZWQgaW4KIEByZWZ7aWYgY29uZCBjYXNlLCwgU2ltcGxlIENvbmRpdGlv bmFsIEV2YWx1YXRpb259LgogCitAbm9kZSBTUkZJLTY3CitAc3Vic2VjdGlvbiBTUkZJLTY3IC0g Q29tcGFyZSBwcm9jZWR1cmVzCitAY2luZGV4IFNSRkktNjcKKworU2VlIEB1cmVme2h0dHA6Ly9z cmZpLnNjaGVtZXJzLm9yZy9zcmZpLTY3L3NyZmktNjcuaHRtbCwgdGhlCitzcGVjaWZpY2F0aW9u IG9mIFNSRkktNjd9LgogCiBAbm9kZSBTUkZJLTY5CiBAc3Vic2VjdGlvbiBTUkZJLTY5IC0gQmFz aWMgaGFzaCB0YWJsZXMKZGlmZiAtLWdpdCBhL21vZHVsZS9NYWtlZmlsZS5hbSBiL21vZHVsZS9N YWtlZmlsZS5hbQppbmRleCA2MTk3YTQzLi44MDYyZDVhIDEwMDY0NAotLS0gYS9tb2R1bGUvTWFr ZWZpbGUuYW0KKysrIGIvbW9kdWxlL01ha2VmaWxlLmFtCkBAIC0yNTYsNiArMjU2LDcgQEAgU1JG SV9TT1VSQ0VTID0gXAogICBzcmZpL3NyZmktNDIuc2NtIFwKICAgc3JmaS9zcmZpLTM5LnNjbSBc CiAgIHNyZmkvc3JmaS02MC5zY20gXAorICBzcmZpL3NyZmktNjcuc2NtIFwKICAgc3JmaS9zcmZp LTY5LnNjbSBcCiAgIHNyZmkvc3JmaS04OC5zY20gXAogICBzcmZpL3NyZmktOTguc2NtCkBAIC0z NTEsNiArMzUyLDcgQEAgTk9DT01QX1NPVVJDRVMgPQkJCQlcCiAgIGljZS05L3I2cnMtbGlicmFy aWVzLnNjbQkJCVwKICAgaWNlLTkvcXVhc2lzeW50YXguc2NtCQkJCVwKICAgc3JmaS9zcmZpLTQy L2VjLnNjbQkJCQlcCisgIHNyZmkvc3JmaS02Ny9jb21wYXJlLnNjbQkJCVwKICAgc3lzdGVtL2Jh c2UvbGFsci51cHN0cmVhbS5zY20JCQlcCiAgIHN5c3RlbS9yZXBsL2Rlc2NyaWJlLnNjbQkJCVwK ICAgc3htbC9zeG1sLW1hdGNoLnNzCQkJCVwKZGlmZiAtLWdpdCBhL21vZHVsZS9zcmZpL3NyZmkt Njcuc2NtIGIvbW9kdWxlL3NyZmkvc3JmaS02Ny5zY20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uOGNlOGRlMAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS9zcmZpL3NyZmkt Njcuc2NtCkBAIC0wLDAgKzEsODcgQEAKKzs7OyBzcmZpLTY3LnNjbSAtLS0gQ29tcGFyZSBQcm9j ZWR1cmVzCisKKzs7IENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKworOzsgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vcgorOzsgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYworOzsgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCis7OyB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKzs7IFRoaXMgbGli cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor OzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKzs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUgR05VCis7OyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorCis7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCis7OyBMaWNlbnNlIGFsb25nIHdpdGggdGhp cyBsaWJyYXJ5LiBJZiBub3QsIHNlZQorOzsgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgorCis7OzsgQ29tbWVudGFyeToKKworOzsgVGhpcyBtb2R1bGUgaXMgbm90IHlldCBkb2N1bWVu dGVkIGluIHRoZSBHdWlsZSBSZWZlcmVuY2UgTWFudWFsLgorCis7OzsgQ29kZToKKworKGRlZmlu ZS1tb2R1bGUgKHNyZmkgc3JmaS02NykKKyAgIzpleHBvcnQgKDwvPD0/CisgICAgICAgICAgICA8 Lzw/CisgICAgICAgICAgICA8PS88PT8KKyAgICAgICAgICAgIDw9Lzw/CisgICAgICAgICAgICA8 PT8KKyAgICAgICAgICAgIDw/CisgICAgICAgICAgICA9PworICAgICAgICAgICAgPi8+PT8KKyAg ICAgICAgICAgID4vPj8KKyAgICAgICAgICAgID49Lz49PworICAgICAgICAgICAgPj0vPj8KKyAg ICAgICAgICAgID49PworICAgICAgICAgICAgPj8KKyAgICAgICAgICAgIGJvb2xlYW4tY29tcGFy ZQorICAgICAgICAgICAgY2hhaW48PT8KKyAgICAgICAgICAgIGNoYWluPD8KKyAgICAgICAgICAg IGNoYWluPT8KKyAgICAgICAgICAgIGNoYWluPj0/CisgICAgICAgICAgICBjaGFpbj4/CisgICAg ICAgICAgICBjaGFyLWNvbXBhcmUKKyAgICAgICAgICAgIGNoYXItY29tcGFyZS1jaQorICAgICAg ICAgICAgY29tcGFyZS1ieTwKKyAgICAgICAgICAgIGNvbXBhcmUtYnk8PQorICAgICAgICAgICAg Y29tcGFyZS1ieT0vPAorICAgICAgICAgICAgY29tcGFyZS1ieT0vPgorICAgICAgICAgICAgY29t cGFyZS1ieT4KKyAgICAgICAgICAgIGNvbXBhcmUtYnk+PQorICAgICAgICAgICAgY29tcGxleC1j b21wYXJlCisgICAgICAgICAgICBjb25kLWNvbXBhcmUKKyAgICAgICAgICAgIGRlYnVnLWNvbXBh cmUKKyAgICAgICAgICAgIGRlZmF1bHQtY29tcGFyZQorICAgICAgICAgICAgaWYtbm90PT8KKyAg ICAgICAgICAgIGlmMworICAgICAgICAgICAgaWY8PT8KKyAgICAgICAgICAgIGlmPD8KKyAgICAg ICAgICAgIGlmPT8KKyAgICAgICAgICAgIGlmPj0/CisgICAgICAgICAgICBpZj4/CisgICAgICAg ICAgICBpbnRlZ2VyLWNvbXBhcmUKKyAgICAgICAgICAgIGt0aC1sYXJnZXN0CisgICAgICAgICAg ICBsaXN0LWNvbXBhcmUKKyAgICAgICAgICAgIGxpc3QtY29tcGFyZS1hcy12ZWN0b3IKKyAgICAg ICAgICAgIG1heC1jb21wYXJlCisgICAgICAgICAgICBtaW4tY29tcGFyZQorICAgICAgICAgICAg bm90PT8KKyAgICAgICAgICAgIG51bWJlci1jb21wYXJlCisgICAgICAgICAgICBwYWlyLWNvbXBh cmUKKyAgICAgICAgICAgIHBhaXItY29tcGFyZS1jYXIKKyAgICAgICAgICAgIHBhaXItY29tcGFy ZS1jZHIKKyAgICAgICAgICAgIHBhaXJ3aXNlLW5vdD0/CisgICAgICAgICAgICByYXRpb25hbC1j b21wYXJlCisgICAgICAgICAgICByZWFsLWNvbXBhcmUKKyAgICAgICAgICAgIHJlZmluZS1jb21w YXJlCisgICAgICAgICAgICBzZWxlY3QtY29tcGFyZQorICAgICAgICAgICAgc3RyaW5nLWNvbXBh cmUKKyAgICAgICAgICAgIHN0cmluZy1jb21wYXJlLWNpCisgICAgICAgICAgICBzeW1ib2wtY29t cGFyZQorICAgICAgICAgICAgdmVjdG9yLWNvbXBhcmUKKyAgICAgICAgICAgIHZlY3Rvci1jb21w YXJlLWFzLWxpc3QpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTI3KSkKKworKGluY2x1ZGUt ZnJvbS1wYXRoICJzcmZpL3NyZmktNjcvY29tcGFyZS5zY20iKQpkaWZmIC0tZ2l0IGEvbW9kdWxl L3NyZmkvc3JmaS02Ny9jb21wYXJlLnNjbSBiL21vZHVsZS9zcmZpL3NyZmktNjcvY29tcGFyZS5z Y20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFiMGU5NAotLS0gL2Rldi9u dWxsCisrKyBiL21vZHVsZS9zcmZpL3NyZmktNjcvY29tcGFyZS5zY20KQEAgLTAsMCArMSw3MDcg QEAKKzsgQ29weXJpZ2h0IChjKSAyMDA1IFNlYmFzdGlhbiBFZ25lciBhbmQgSmVucyBBeGVsIFN7 XG99Z2FhcmQuCis7IAorOyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKKzsgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCis7IGBgU29mdHdhcmUnJyks IHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwor OyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy Z2UsIHB1Ymxpc2gsCis7IGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworOyBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBT b2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKzsgdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgorOyAKKzsgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKKzsgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCis7IAorOyBUSEUgU09GVFdBUkUg SVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorOyBF WFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB TlRJRVMgT0YKKzsgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRSBBTkQKKzsgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9S UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQorOyBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF UyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCis7IE9GIENPTlRSQUNU LCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TgorOyBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRI RSBTT0ZUV0FSRS4KKzsgCis7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis7IAorOyBDb21wYXJlIHByb2NlZHVy ZXMgU1JGSSAocmVmZXJlbmNlIGltcGxlbWVudGF0aW9uKQorOyBTZWJhc3RpYW4uRWduZXJAcGhp bGlwcy5jb20sIEplbnNheGVsQHNvZWdhYXJkLm5ldAorOyBoaXN0b3J5IG9mIHRoaXMgZmlsZToK KzsgICBTRSwgMTQtT2N0LTIwMDQ6IGZpcnN0IHZlcnNpb24KKzsgICBTRSwgMTgtT2N0LTIwMDQ6 IDFzdCByZWRlc2lnbjogYXhpb21zIGZvciAnY29tcGFyZSBmdW5jdGlvbicKKzsgICBTRSwgMjkt T2N0LTIwMDQ6IDJuZCByZWRlc2lnbjogaGlnaGVyIG9yZGVyIHJldmVyc2UvbWFwL3JlZmluZS91 bml0ZQorOyAgIFNFLCAgMi1Ob3YtMjAwNDogM3JkIHJlZGVzaWduOiBtYWNyb3MgY29uZC9yZWZp bmUtY29tcGFyZSByZXBsYWNlIGguby5mJ3MKKzsgICBTRSwgMTAtTm92LTIwMDQ6IChpbSxyZSkg cmVwbGFjZWQgYnkgKHJlLGltKSBpbiBjb21wbGV4LWNvbXBhcmUKKzsgICBTRSwgMTEtTm92LTIw MDQ6IGNhc2UtY29tcGFyZSBieSBjYXNlIChub3QgYnkgY29uZCk7IHNlbGVjdC1jb21wYXJlIGFk ZGVkCis7ICAgU0UsIDEyLUphbi0yMDA1OiBwYWlyLWNvbXBhcmUtY2RyCis7ICAgU0UsIDE1LUZl Yi0yMDA1OiBzdHJpY3RlciB0eXBpbmcgZm9yIGNvbXBhcmUtPHR5cGU+OyBwYWlyd2lzZS1ub3Q9 PworOyAgIFNFLCAxNi1GZWItMjAwNTogY2FzZS1jb21wYXJlIC0+IGlmLWNvbXBhcmUgLT4gaWYz OyA8PyA8Lzw/IGNoYWluPD8gZXRjLgorOyAgIEpTLCAyNC1GZWItMjAwNTogc2VsZWN0aW9uLWNv bXBhcmUgYWRkZWQKKzsgICBTRSwgMjUtRmViLTIwMDU6IHNlbGVjdGlvbi1jb21wYXJlIC0+IGt0 aC1sYXJnZXN0IG1vZGlmaWVkOyBpZjw/IGV0Yy4KKzsgICBKUywgMjgtRmViLTIwMDU6IGt0aC1s YXJnZXN0IG1vZGlmaWVkIC0gaXMgInN0YWJsZSIgbm93Cis7ICAgU0UsIDI4LUZlYi0yMDA1OiBz aW1wbGlmaWVkIHBhaXJ3aXNlLW5vdD0/L2t0aC1sYXJnZXN0OyBtaW4vbWF4IGRlYnVnZ2VkCis7 ICAgU0UsIDA3LUFwci0yMDA1OiBjb21wYXJlLWJhc2VkIHR5cGUgY2hlY2tzIG1hZGUgZXhwbGlj aXQKKzsgICBTRSwgMTgtQXByLTIwMDU6IGFkZGVkIChyZWw/IGNvbXBhcmUpIGFuZCBlcT8tdGVz dAorOyAgIFNFLCAxNi1NYXktMjAwNTogbmFtaW5nIGNvbnZlbnRpb24gY2hhbmdlZDsgY29tcGFy ZS1ieTwgZXRjLiBvcHRpb25hbCB4IHkKKworOyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCis7IFJl ZmVyZW5jZSBJbXBsZW1lbnRhdGlvbgorOyA9PT09PT09PT09PT09PT09PT09PT09PT0KKzsKKzsg aW4gUjVSUyAoaW5jbHVkaW5nIGh5Z2llbmljIG1hY3JvcykKKzsgICsgU1JGSS0xNiAoY2FzZS1s YW1iZGEpIAorOyAgKyBTUkZJLTIzIChlcnJvcikgCis7ICArIFNSRkktMjcgKHJhbmRvbS1pbnRl Z2VyKQorCis7IEltcGxlbWVudGF0aW9uIHJlbWFya3M6Cis7ICAgKiBJbiBnZW5lcmFsLCB0aGUg ZW1waGFzaXMgb2YgdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBvbiBjb3JyZWN0bmVzcworOyAgICAg YW5kIHBvcnRhYmlsaXR5LCBub3Qgb24gZWZmaWNpZW5jeS4KKzsgICAqIFZhcmlhYmxlIGFyaXR5 IHByb2NlZHVyZXMgYXJlIGV4cHJlc3NlZCBpbiB0ZXJtcyBvZiBjYXNlLWxhbWJkYQorOyAgICAg aW4gdGhlIGhvcGUgdGhhdCB0aGlzIHdpbGwgcHJvZHVjZSBlZmZpY2llbnQgY29kZSBmb3IgdGhl IGNhc2UKKzsgICAgIHdoZXJlIHRoZSBhcml0eSBpcyBzdGF0aWNhbGx5IGtub3duIGF0IHRoZSBj YWxsIHNpdGUuCis7ICAgKiBJbiBwcm9jZWR1cmVzIHRoYXQgYXJlIHJlcXVpcmVkIHRvIHR5cGUt Y2hlY2sgdGhlaXIgYXJndW1lbnRzLAorOyAgICAgd2UgdXNlIChjb21wYXJlIHggeCkgZm9yIGV4 ZWN1dGluZyBleHRyYSBjaGVja3MuIFRoaXMgcmVsaWVzIG9uCis7ICAgICB0aGUgYXNzdW1wdGlv biB0aGF0IGVxPyBpcyB1c2VkIHRvIGNhdGNoIHRoaXMgY2FzZSBxdWlja2x5LgorOyAgICogQ2Fy ZSBoYXMgYmVlbiB0YWtlbiB0byByZWZlcmVuY2UgY29tcGFyaXNvbiBwcm9jZWR1cmVzIG9mIFI1 UlMKKzsgICAgIG9ubHkgYXQgdGhlIHRpbWUgdGhlIG9wZXJhdGlvbnMgaGVyZSBhcmUgYmVpbmcg ZGVmaW5lZC4gVGhpcworOyAgICAgbWFrZXMgaXQgcG9zc2libGUgdG8gcmVkZWZpbmUgdGhlc2Ug b3BlcmF0aW9ucywgaWYgbmVlZCBiZS4KKzsgICAqIEZvciB0aGUgc2FrZSBvZiBlZmZpY2llbmN5 LCBzb21lIGlubGluaW5nIGhhcyBiZWVuIGRvbmUgYnkgaGFuZC4KKzsgICAgIFRoaXMgaXMgbWFp bmx5IGV4cHJlc3NlZCBieSBtYWNyb3MgcHJvZHVjaW5nIGRlZmluZXMuCis7ICAgKiBJZGVudGlm aWVycyBvZiB0aGUgZm9ybSBjb21wYXJlOjxzb21ldGhpbmc+IGFyZSBwcml2YXRlLgorOworOyBI aW50cyBmb3IgbG93LWxldmVsIGltcGxlbWVudGF0aW9uOgorOyAgICogVGhlIGJhc2lzIG9mIHRo aXMgU1JGSSBhcmUgdGhlIGF0b21pYyBjb21wYXJlIHByb2NlZHVyZXMsIAorOyAgICAgaS5lLiBi b29sZWFuLWNvbXBhcmUsIGNoYXItY29tcGFyZSwgZXRjLiBhbmQgdGhlIGNvbmRpdGlvbmFscwor OyAgICAgaWYzLCBpZj0/LCBpZjw/IGV0Yy4sIGFuZCBkZWZhdWx0LWNvbXBhcmUuIFRoZXNlIHNo b3VsZCBtYWtlCis7ICAgICBvcHRpbWFsIHVzZSBvZiB0aGUgYXZhaWxhYmxlIHR5cGUgaW5mb3Jt YXRpb24uCis7ICAgKiBGb3IgdGhlIHNha2Ugb2Ygc3BlZWQsIHRoZSByZWZlcmVuY2UgaW1wbGVt ZW50YXRpb24gZG9lcyBub3QKKzsgICAgIHVzZSBhIExFVCB0byBzYXZlIHRoZSBjb21wYXJpc29u IHZhbHVlIGMgZm9yIHRoZSBFUlJPUiBjYWxsLgorOyAgICAgVGhpcyBjYW4gYmUgZml4ZWQgaW4g YSBsb3ctbGV2ZWwgaW1wbGVtZW50YXRpb24gYXQgbm8gY29zdC4KKzsgICAqIFR5cGUtY2hlY2tz IGJhc2VkIG9uIChjb21wYXJlIHggeCkgYXJlIG1hZGUgZXhwbGljaXQgYnkgdGhlCis7ICAgICBl eHByZXNzaW9uIChjb21wYXJlOmNoZWNrIHJlc3VsdCBjb21wYXJlIHggLi4uKS4KKzsgICAqIEVx PyBzaG91bGQgIGNhbiB1c2VkIHRvIHNwZWVkIHVwIGJ1aWx0LWluIGNvbXBhcmUgcHJvY2VkdXJl cywKKzsgICAgIGJ1dCBpdCBjYW4gb25seSBiZSB1c2VkIGFmdGVyIHR5cGUtY2hlY2tpbmcgYXQg bGVhc3Qgb25lIG9mCis7ICAgICB0aGUgYXJndW1lbnRzLgorCisoZGVmaW5lIChjb21wYXJlOmNo ZWNrZWQgcmVzdWx0IGNvbXBhcmUgLiBhcmdzKQorICAoZm9yLWVhY2ggKGxhbWJkYSAoeCkgKGNv bXBhcmUgeCB4KSkgYXJncykKKyAgcmVzdWx0KQorCisKKzsgMy1zaWRlZCBjb25kaXRpb25hbAor CisoZGVmaW5lLXN5bnRheCBpZjMKKyAgKHN5bnRheC1ydWxlcyAoKQorICAgICgoaWYzIGMgbGVz cyBlcXVhbCBncmVhdGVyKQorICAgICAoY2FzZSBjCisgICAgICAgKCgtMSkgbGVzcykKKyAgICAg ICAoKCAwKSBlcXVhbCkKKyAgICAgICAoKCAxKSBncmVhdGVyKQorICAgICAgIChlbHNlIChlcnJv ciAiY29tcGFyaXNvbiB2YWx1ZSBub3QgaW4gey0xLDAsMX0iKSkpKSkpCisKKworOyAyLXNpZGVk IGNvbmRpdGlvbmFscyBmb3IgY29tcGFyaXNvbnMKKworKGRlZmluZS1zeW50YXggY29tcGFyZTpp Zi1yZWw/CisgIChzeW50YXgtcnVsZXMgKCkKKyAgICAoKGNvbXBhcmU6aWYtcmVsPyBjLWNhc2Vz IGEtY2FzZXMgYyBjb25zZXF1ZW5jZSkKKyAgICAgKGNvbXBhcmU6aWYtcmVsPyBjLWNhc2VzIGEt Y2FzZXMgYyBjb25zZXF1ZW5jZSAoaWYgI2YgI2YpKSkKKyAgICAoKGNvbXBhcmU6aWYtcmVsPyBj LWNhc2VzIGEtY2FzZXMgYyBjb25zZXF1ZW5jZSBhbHRlcm5hdGUpCisgICAgIChjYXNlIGMKKyAg ICAgICAoYy1jYXNlcyBjb25zZXF1ZW5jZSkKKyAgICAgICAoYS1jYXNlcyBhbHRlcm5hdGUpCisg ICAgICAgKGVsc2UgICAgKGVycm9yICJjb21wYXJpc29uIHZhbHVlIG5vdCBpbiB7LTEsMCwxfSIp KSkpKSkKKworKGRlZmluZS1zeW50YXggaWY9PworICAoc3ludGF4LXJ1bGVzICgpCisgICAgKChp Zj0/IGFyZyAuLi4pCisgICAgIChjb21wYXJlOmlmLXJlbD8gKDApICgtMSAxKSBhcmcgLi4uKSkp KQorCisoZGVmaW5lLXN5bnRheCBpZjw/CisgIChzeW50YXgtcnVsZXMgKCkKKyAgICAoKGlmPD8g YXJnIC4uLikKKyAgICAgKGNvbXBhcmU6aWYtcmVsPyAoLTEpICgwIDEpIGFyZyAuLi4pKSkpCisK KyhkZWZpbmUtc3ludGF4IGlmPj8KKyAgKHN5bnRheC1ydWxlcyAoKQorICAgICgoaWY+PyBhcmcg Li4uKQorICAgICAoY29tcGFyZTppZi1yZWw/ICgxKSAoLTEgMCkgYXJnIC4uLikpKSkKKworKGRl ZmluZS1zeW50YXggaWY8PT8KKyAgKHN5bnRheC1ydWxlcyAoKQorICAgICgoaWY8PT8gYXJnIC4u LikKKyAgICAgKGNvbXBhcmU6aWYtcmVsPyAoLTEgMCkgKDEpIGFyZyAuLi4pKSkpCisKKyhkZWZp bmUtc3ludGF4IGlmPj0/CisgIChzeW50YXgtcnVsZXMgKCkKKyAgICAoKGlmPj0/IGFyZyAuLi4p CisgICAgIChjb21wYXJlOmlmLXJlbD8gKDAgMSkgKC0xKSBhcmcgLi4uKSkpKQorCisoZGVmaW5l LXN5bnRheCBpZi1ub3Q9PworICAoc3ludGF4LXJ1bGVzICgpCisgICAgKChpZi1ub3Q9PyBhcmcg Li4uKQorICAgICAoY29tcGFyZTppZi1yZWw/ICgtMSAxKSAoMCkgYXJnIC4uLikpKSkKKworCis7 IHByZWRpY2F0ZXMgZnJvbSBjb21wYXJlIHByb2NlZHVyZXMKKworKGRlZmluZS1zeW50YXggY29t cGFyZTpkZWZpbmUtcmVsPworICAoc3ludGF4LXJ1bGVzICgpCisgICAgKChjb21wYXJlOmRlZmlu ZS1yZWw/IHJlbD8gaWYtcmVsPykKKyAgICAgKGRlZmluZSByZWw/CisgICAgICAgKGNhc2UtbGFt YmRhCisJKCgpICAgICAgICAobGFtYmRhICh4IHkpIChpZi1yZWw/IChkZWZhdWx0LWNvbXBhcmUg eCB5KSAjdCAjZikpKQorCSgoY29tcGFyZSkgKGxhbWJkYSAoeCB5KSAoaWYtcmVsPyAoY29tcGFy ZSAgICAgICAgIHggeSkgI3QgI2YpKSkKKwkoKHggeSkgICAgICAgICAgICAgICAgICAgKGlmLXJl bD8gKGRlZmF1bHQtY29tcGFyZSB4IHkpICN0ICNmKSkKKwkoKGNvbXBhcmUgeCB5KQorCSAoaWYg KHByb2NlZHVyZT8gY29tcGFyZSkKKwkgICAgIChpZi1yZWw/IChjb21wYXJlIHggeSkgI3QgI2Yp CisJICAgICAoZXJyb3IgIm5vdCBhIHByb2NlZHVyZSAoRGlkIHlvdSBtZWFuIHJlbC9yZWw/Pyk6 ICIgY29tcGFyZSkpKSkpKSkpCisKKyhjb21wYXJlOmRlZmluZS1yZWw/ID0/ICAgIGlmPT8pCiso Y29tcGFyZTpkZWZpbmUtcmVsPyA8PyAgICBpZjw/KQorKGNvbXBhcmU6ZGVmaW5lLXJlbD8gPj8g ICAgaWY+PykKKyhjb21wYXJlOmRlZmluZS1yZWw/IDw9PyAgIGlmPD0/KQorKGNvbXBhcmU6ZGVm aW5lLXJlbD8gPj0/ICAgaWY+PT8pCisoY29tcGFyZTpkZWZpbmUtcmVsPyBub3Q9PyBpZi1ub3Q9 PykKKworCis7IGNoYWlucyBvZiBsZW5ndGggMworCisoZGVmaW5lLXN5bnRheCBjb21wYXJlOmRl ZmluZS1yZWwxL3JlbDI/CisgIChzeW50YXgtcnVsZXMgKCkKKyAgICAoKGNvbXBhcmU6ZGVmaW5l LXJlbDEvcmVsMj8gcmVsMS9yZWwyPyBpZi1yZWwxPyBpZi1yZWwyPykKKyAgICAgKGRlZmluZSBy ZWwxL3JlbDI/CisgICAgICAgKGNhc2UtbGFtYmRhCisJKCgpCisJIChsYW1iZGEgKHggeSB6KQor CSAgIChpZi1yZWwxPyAoZGVmYXVsdC1jb21wYXJlIHggeSkKKwkJICAgICAoaWYtcmVsMj8gKGRl ZmF1bHQtY29tcGFyZSB5IHopICN0ICNmKQorCQkgICAgIChjb21wYXJlOmNoZWNrZWQgI2YgZGVm YXVsdC1jb21wYXJlIHopKSkpCisJKChjb21wYXJlKQorCSAobGFtYmRhICh4IHkgeikKKwkgICAo aWYtcmVsMT8gKGNvbXBhcmUgeCB5KQorCQkoaWYtcmVsMj8gKGNvbXBhcmUgeSB6KSAjdCAjZikK KwkJKGNvbXBhcmU6Y2hlY2tlZCAjZiBjb21wYXJlIHopKSkpCisJKCh4IHkgeikKKwkgKGlmLXJl bDE/IChkZWZhdWx0LWNvbXBhcmUgeCB5KQorCSAgICAgICAoaWYtcmVsMj8gKGRlZmF1bHQtY29t cGFyZSB5IHopICN0ICNmKQorCSAgICAgICAoY29tcGFyZTpjaGVja2VkICNmIGRlZmF1bHQtY29t cGFyZSB6KSkpCisJKChjb21wYXJlIHggeSB6KQorCSAoaWYtcmVsMT8gKGNvbXBhcmUgeCB5KQor CSAgICAgICAoaWYtcmVsMj8gKGNvbXBhcmUgeSB6KSAjdCAjZikKKwkgICAgICAgKGNvbXBhcmU6 Y2hlY2tlZCAjZiBjb21wYXJlIHopKSkpKSkpKQorCisoY29tcGFyZTpkZWZpbmUtcmVsMS9yZWwy PyA8Lzw/ICAgaWY8PyAgaWY8PykKKyhjb21wYXJlOmRlZmluZS1yZWwxL3JlbDI/IDwvPD0/ICBp Zjw/ICBpZjw9PykKKyhjb21wYXJlOmRlZmluZS1yZWwxL3JlbDI/IDw9Lzw/ICBpZjw9PyBpZjw/ KQorKGNvbXBhcmU6ZGVmaW5lLXJlbDEvcmVsMj8gPD0vPD0/IGlmPD0/IGlmPD0/KQorKGNvbXBh cmU6ZGVmaW5lLXJlbDEvcmVsMj8gPi8+PyAgIGlmPj8gIGlmPj8pCisoY29tcGFyZTpkZWZpbmUt cmVsMS9yZWwyPyA+Lz49PyAgaWY+PyAgaWY+PT8pCisoY29tcGFyZTpkZWZpbmUtcmVsMS9yZWwy PyA+PS8+PyAgaWY+PT8gaWY+PykKKyhjb21wYXJlOmRlZmluZS1yZWwxL3JlbDI/ID49Lz49PyBp Zj49PyBpZj49PykKKworCis7IGNoYWlucyBvZiBhcmJpdHJhcnkgbGVuZ3RoCisKKyhkZWZpbmUt c3ludGF4IGNvbXBhcmU6ZGVmaW5lLWNoYWluLXJlbD8KKyAgKHN5bnRheC1ydWxlcyAoKQorICAg ICgoY29tcGFyZTpkZWZpbmUtY2hhaW4tcmVsPyBjaGFpbi1yZWw/IGlmLXJlbD8pCisgICAgIChk ZWZpbmUgY2hhaW4tcmVsPworICAgICAgIChjYXNlLWxhbWJkYQorCSgoY29tcGFyZSkKKwkgI3Qp CisJKChjb21wYXJlIHgxKQorCSAoY29tcGFyZTpjaGVja2VkICN0IGNvbXBhcmUgeDEpKQorCSgo Y29tcGFyZSB4MSB4MikKKwkgKGlmLXJlbD8gKGNvbXBhcmUgeDEgeDIpICN0ICNmKSkKKwkoKGNv bXBhcmUgeDEgeDIgeDMpCisJIChpZi1yZWw/IChjb21wYXJlIHgxIHgyKQorCQkgIChpZi1yZWw/ IChjb21wYXJlIHgyIHgzKSAjdCAjZikKKwkJICAoY29tcGFyZTpjaGVja2VkICNmIGNvbXBhcmUg eDMpKSkKKwkoKGNvbXBhcmUgeDEgeDIgLiB4MyspCisJIChpZi1yZWw/IChjb21wYXJlIHgxIHgy KQorCQkgIChsZXQgY2hhaW4/ICgoaGVhZCB4MikgKHRhaWwgeDMrKSkKKwkJICAgIChpZiAobnVs bD8gdGFpbCkKKwkJCSN0CisJCQkoaWYtcmVsPyAoY29tcGFyZSBoZWFkIChjYXIgdGFpbCkpCisJ CQkJIChjaGFpbj8gKGNhciB0YWlsKSAoY2RyIHRhaWwpKQorCQkJCSAoYXBwbHkgY29tcGFyZTpj aGVja2VkICNmIAorCQkJCQljb21wYXJlIChjZHIgdGFpbCkpKSkpCisJCSAgKGFwcGx5IGNvbXBh cmU6Y2hlY2tlZCAjZiBjb21wYXJlIHgzKykpKSkpKSkpCisKKyhjb21wYXJlOmRlZmluZS1jaGFp bi1yZWw/IGNoYWluPT8gIGlmPT8pCisoY29tcGFyZTpkZWZpbmUtY2hhaW4tcmVsPyBjaGFpbjw/ ICBpZjw/KQorKGNvbXBhcmU6ZGVmaW5lLWNoYWluLXJlbD8gY2hhaW4+PyAgaWY+PykKKyhjb21w YXJlOmRlZmluZS1jaGFpbi1yZWw/IGNoYWluPD0/IGlmPD0/KQorKGNvbXBhcmU6ZGVmaW5lLWNo YWluLXJlbD8gY2hhaW4+PT8gaWY+PT8pCisKKworOyBwYWlyd2lzZSBpbmVxdWFsaXR5CisKKyhk ZWZpbmUgcGFpcndpc2Utbm90PT8KKyAgKGxldCAoKD0gPSkgKDw9IDw9KSkKKyAgICAoY2FzZS1s YW1iZGEKKyAgICAgICgoY29tcGFyZSkKKyAgICAgICAjdCkKKyAgICAgICgoY29tcGFyZSB4MSkK KyAgICAgICAoY29tcGFyZTpjaGVja2VkICN0IGNvbXBhcmUgeDEpKQorICAgICAgKChjb21wYXJl IHgxIHgyKQorICAgICAgIChpZi1ub3Q9PyAoY29tcGFyZSB4MSB4MikgI3QgI2YpKQorICAgICAg KChjb21wYXJlIHgxIHgyIHgzKQorICAgICAgIChpZi1ub3Q9PyAoY29tcGFyZSB4MSB4MikKKyAg ICAgICAgICAgICAgICAgKGlmLW5vdD0/IChjb21wYXJlIHgyIHgzKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGlmLW5vdD0/IChjb21wYXJlIHgxIHgzKSAjdCAjZikKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICNmKQorCQkgKGNvbXBhcmU6Y2hlY2tlZCAjZiBjb21wYXJlIHgzKSkp CisgICAgICAoKGNvbXBhcmUgLiB4MSspCisgICAgICAgKGxldCB1bmVxdWFsPyAoKHggeDErKSAo biAobGVuZ3RoIHgxKykpICh1bmNoZWNrZWQ/ICN0KSkKKyAgICAgICAgIChpZiAoPCBuIDIpCisJ ICAgICAoaWYgKGFuZCB1bmNoZWNrZWQ/ICg9IG4gMSkpCisJCSAoY29tcGFyZTpjaGVja2VkICN0 IGNvbXBhcmUgKGNhciB4KSkKKwkJICN0KQorICAgICAgICAgICAgIChsZXQqICgoaS1waXZvdCAo cmFuZG9tLWludGVnZXIgbikpCisgICAgICAgICAgICAgICAgICAgICh4LXBpdm90IChsaXN0LXJl ZiB4IGktcGl2b3QpKSkKKyAgICAgICAgICAgICAgIChsZXQgc3BsaXQgKChpIDApICh4IHgpICh4 PCAnKCkpICh4PiAnKCkpKQorICAgICAgICAgICAgICAgICAoaWYgKG51bGw/IHgpCisgICAgICAg ICAgICAgICAgICAgICAoYW5kICh1bmVxdWFsPyB4PCAobGVuZ3RoIHg8KSAjZikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgKHVuZXF1YWw/IHg+IChsZW5ndGggeD4pICNmKSkKKyAgICAgICAg ICAgICAgICAgICAgIChpZiAoPSBpIGktcGl2b3QpCisgICAgICAgICAgICAgICAgICAgICAgICAg KHNwbGl0ICgrIGkgMSkgKGNkciB4KSB4PCB4PikKKyAgICAgICAgICAgICAgICAgICAgICAgICAo aWYzIChjb21wYXJlIChjYXIgeCkgeC1waXZvdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChzcGxpdCAoKyBpIDEpIChjZHIgeCkgKGNvbnMgKGNhciB4KSB4PCkgeD4pCisJCQkgICAg ICAoaWYgdW5jaGVja2VkPworCQkJCSAgKGFwcGx5IGNvbXBhcmU6Y2hlY2tlZCAjZiBjb21wYXJl IChjZHIgeCkpCisJCQkJICAjZikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzcGxp dCAoKyBpIDEpIChjZHIgeCkgeDwgKGNvbnMgKGNhciB4KSB4PikpKSkpKSkpKSkpKSkKKworCis7 IG1pbi9tYXgKKworKGRlZmluZSBtaW4tY29tcGFyZQorICAoY2FzZS1sYW1iZGEKKyAgICAoKGNv bXBhcmUgeDEpCisgICAgIChjb21wYXJlOmNoZWNrZWQgeDEgY29tcGFyZSB4MSkpCisgICAgKChj b21wYXJlIHgxIHgyKQorICAgICAoaWY8PT8gKGNvbXBhcmUgeDEgeDIpIHgxIHgyKSkKKyAgICAo KGNvbXBhcmUgeDEgeDIgeDMpCisgICAgIChpZjw9PyAoY29tcGFyZSB4MSB4MikKKyAgICAgICAg ICAgIChpZjw9PyAoY29tcGFyZSB4MSB4MykgeDEgeDMpCisgICAgICAgICAgICAoaWY8PT8gKGNv bXBhcmUgeDIgeDMpIHgyIHgzKSkpCisgICAgKChjb21wYXJlIHgxIHgyIHgzIHg0KQorICAgICAo aWY8PT8gKGNvbXBhcmUgeDEgeDIpCisgICAgICAgICAgICAoaWY8PT8gKGNvbXBhcmUgeDEgeDMp CisgICAgICAgICAgICAgICAgICAgKGlmPD0/IChjb21wYXJlIHgxIHg0KSB4MSB4NCkKKyAgICAg ICAgICAgICAgICAgICAoaWY8PT8gKGNvbXBhcmUgeDMgeDQpIHgzIHg0KSkKKyAgICAgICAgICAg IChpZjw9PyAoY29tcGFyZSB4MiB4MykKKyAgICAgICAgICAgICAgICAgICAoaWY8PT8gKGNvbXBh cmUgeDIgeDQpIHgyIHg0KQorICAgICAgICAgICAgICAgICAgIChpZjw9PyAoY29tcGFyZSB4MyB4 NCkgeDMgeDQpKSkpCisgICAgKChjb21wYXJlIHgxIHgyIC4geDMrKQorICAgICAobGV0IG1pbiAo KHhtaW4gKGlmPD0/IChjb21wYXJlIHgxIHgyKSB4MSB4MikpICh4cyB4MyspKQorICAgICAgIChp ZiAobnVsbD8geHMpCisgICAgICAgICAgIHhtaW4KKyAgICAgICAgICAgKG1pbiAoaWY8PT8gKGNv bXBhcmUgeG1pbiAoY2FyIHhzKSkgeG1pbiAoY2FyIHhzKSkKKyAgICAgICAgICAgICAgICAoY2Ry IHhzKSkpKSkpKQorCisoZGVmaW5lIG1heC1jb21wYXJlCisgIChjYXNlLWxhbWJkYQorICAgICgo Y29tcGFyZSB4MSkKKyAgICAgKGNvbXBhcmU6Y2hlY2tlZCB4MSBjb21wYXJlIHgxKSkKKyAgICAo KGNvbXBhcmUgeDEgeDIpCisgICAgIChpZj49PyAoY29tcGFyZSB4MSB4MikgeDEgeDIpKQorICAg ICgoY29tcGFyZSB4MSB4MiB4MykKKyAgICAgKGlmPj0/IChjb21wYXJlIHgxIHgyKQorICAgICAg ICAgICAgKGlmPj0/IChjb21wYXJlIHgxIHgzKSB4MSB4MykKKyAgICAgICAgICAgIChpZj49PyAo Y29tcGFyZSB4MiB4MykgeDIgeDMpKSkKKyAgICAoKGNvbXBhcmUgeDEgeDIgeDMgeDQpCisgICAg IChpZj49PyAoY29tcGFyZSB4MSB4MikKKyAgICAgICAgICAgIChpZj49PyAoY29tcGFyZSB4MSB4 MykKKyAgICAgICAgICAgICAgICAgICAoaWY+PT8gKGNvbXBhcmUgeDEgeDQpIHgxIHg0KQorICAg ICAgICAgICAgICAgICAgIChpZj49PyAoY29tcGFyZSB4MyB4NCkgeDMgeDQpKQorICAgICAgICAg ICAgKGlmPj0/IChjb21wYXJlIHgyIHgzKQorICAgICAgICAgICAgICAgICAgIChpZj49PyAoY29t cGFyZSB4MiB4NCkgeDIgeDQpCisgICAgICAgICAgICAgICAgICAgKGlmPj0/IChjb21wYXJlIHgz IHg0KSB4MyB4NCkpKSkKKyAgICAoKGNvbXBhcmUgeDEgeDIgLiB4MyspCisgICAgIChsZXQgbWF4 ICgoeG1heCAoaWY+PT8gKGNvbXBhcmUgeDEgeDIpIHgxIHgyKSkgKHhzIHgzKykpCisgICAgICAg KGlmIChudWxsPyB4cykKKyAgICAgICAgICAgeG1heAorICAgICAgICAgICAobWF4IChpZj49PyAo Y29tcGFyZSB4bWF4IChjYXIgeHMpKSB4bWF4IChjYXIgeHMpKQorICAgICAgICAgICAgICAgIChj ZHIgeHMpKSkpKSkpCisKKworOyBrdGgtbGFyZ2VzdAorCisoZGVmaW5lIGt0aC1sYXJnZXN0Cisg IChsZXQgKCg9ID0pICg8IDwpKQorICAgIChjYXNlLWxhbWJkYQorICAgICAgKChjb21wYXJlIGsg eDApCisgICAgICAgKGNhc2UgKG1vZHVsbyBrIDEpCisgICAgICAgICAoKDApICAoY29tcGFyZTpj aGVja2VkIHgwIGNvbXBhcmUgeDApKQorICAgICAgICAgKGVsc2UgKGVycm9yICJiYWQgaW5kZXgi IGspKSkpCisgICAgICAoKGNvbXBhcmUgayB4MCB4MSkKKyAgICAgICAoY2FzZSAobW9kdWxvIGsg MikKKyAgICAgICAgICgoMCkgKGlmPD0/IChjb21wYXJlIHgwIHgxKSB4MCB4MSkpCisgICAgICAg ICAoKDEpIChpZjw9PyAoY29tcGFyZSB4MCB4MSkgeDEgeDApKQorICAgICAgICAgKGVsc2UgKGVy cm9yICJiYWQgaW5kZXgiIGspKSkpCisgICAgICAoKGNvbXBhcmUgayB4MCB4MSB4MikKKyAgICAg ICAoY2FzZSAobW9kdWxvIGsgMykKKyAgICAgICAgICgoMCkgKGlmPD0/IChjb21wYXJlIHgwIHgx KQorICAgICAgICAgICAgICAgICAgICAgKGlmPD0/IChjb21wYXJlIHgwIHgyKSB4MCB4MikKKyAg ICAgICAgICAgICAgICAgICAgIChpZjw9PyAoY29tcGFyZSB4MSB4MikgeDEgeDIpKSkKKyAgICAg ICAgICgoMSkgKGlmMyAoY29tcGFyZSB4MCB4MSkKKyAgICAgICAgICAgICAgICAgICAoaWY8PT8g KGNvbXBhcmUgeDEgeDIpCisgICAgICAgICAgICAgICAgICAgICAgICAgIHgxCisgICAgICAgICAg ICAgICAgICAgICAgICAgIChpZjw9PyAoY29tcGFyZSB4MCB4MikgeDIgeDApKQorICAgICAgICAg ICAgICAgICAgIChpZjw9PyAoY29tcGFyZSB4MCB4MikgeDEgeDApCisgICAgICAgICAgICAgICAg ICAgKGlmPD0/IChjb21wYXJlIHgwIHgyKQorICAgICAgICAgICAgICAgICAgICAgICAgICB4MAor ICAgICAgICAgICAgICAgICAgICAgICAgICAoaWY8PT8gKGNvbXBhcmUgeDEgeDIpIHgyIHgxKSkp KQorICAgICAgICAgKCgyKSAoaWY8PT8gKGNvbXBhcmUgeDAgeDEpCisgICAgICAgICAgICAgICAg ICAgICAoaWY8PT8gKGNvbXBhcmUgeDEgeDIpIHgyIHgxKQorICAgICAgICAgICAgICAgICAgICAg KGlmPD0/IChjb21wYXJlIHgwIHgyKSB4MiB4MCkpKQorICAgICAgICAgKGVsc2UgKGVycm9yICJi YWQgaW5kZXgiIGspKSkpCisgICAgICAoKGNvbXBhcmUgayB4MCAuIHgxKykgOyB8eDErfCA+PSAx CisgICAgICAgKGlmIChub3QgKGFuZCAoaW50ZWdlcj8gaykgKGV4YWN0PyBrKSkpCisgICAgICAg ICAgIChlcnJvciAiYmFkIGluZGV4IiBrKSkKKyAgICAgICAobGV0ICgobiAoKyAxIChsZW5ndGgg eDErKSkpKQorICAgICAgICAgKGxldCBrdGggKChrICAgKG1vZHVsbyBrIG4pKQorICAgICAgICAg ICAgICAgICAgIChuICAgbikgIDsgPSB8eHwKKyAgICAgICAgICAgICAgICAgICAocmV2ICN0KSA7 IGFyZSB4PCwgeD0sIHg+IHJldmVyc2VkPworICAgICAgICAgICAgICAgICAgICh4ICAgKGNvbnMg eDAgeDErKSkpCisgICAgICAgICAgIChsZXQgKChwaXZvdCAobGlzdC1yZWYgeCAocmFuZG9tLWlu dGVnZXIgbikpKSkKKyAgICAgICAgICAgICAobGV0IHNwbGl0ICgoeCB4KSAoeDwgJygpKSAobjwg MCkgKHg9ICcoKSkgKG49IDApICh4PiAnKCkpIChuPiAwKSkKKyAgICAgICAgICAgICAgIChpZiAo bnVsbD8geCkKKyAgICAgICAgICAgICAgICAgICAoY29uZAorICAgICAgICAgICAgICAgICAgICAg KCg8IGsgbjwpCisgICAgICAgICAgICAgICAgICAgICAgKGt0aCBrIG48IChub3QgcmV2KSB4PCkp CisgICAgICAgICAgICAgICAgICAgICAoKDwgayAoKyBuPCBuPSkpCisgICAgICAgICAgICAgICAg ICAgICAgKGlmIHJldgorICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdC1yZWYgeD0gKC0g KC0gbj0gMSkgKC0gayBuPCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdC1yZWYg eD0gKC0gayBuPCkpKSkKKyAgICAgICAgICAgICAgICAgICAgIChlbHNlCisgICAgICAgICAgICAg ICAgICAgICAgKGt0aCAoLSBrICgrIG48IG49KSkgbj4gKG5vdCByZXYpIHg+KSkpCisgICAgICAg ICAgICAgICAgICAgKGlmMyAoY29tcGFyZSAoY2FyIHgpIHBpdm90KQorICAgICAgICAgICAgICAg ICAgICAgICAgKHNwbGl0IChjZHIgeCkgKGNvbnMgKGNhciB4KSB4PCkgKCsgbjwgMSkgeD0gbj0g eD4gbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAoc3BsaXQgKGNkciB4KSB4PCBuPCAoY29u cyAoY2FyIHgpIHg9KSAoKyBuPSAxKSB4PiBuPikKKyAgICAgICAgICAgICAgICAgICAgICAgIChz cGxpdCAoY2RyIHgpIHg8IG48IHg9IG49IChjb25zIChjYXIgeCkgeD4pICgrIG4+IDEpKSkpKSkp KSkpKSkKKworCis7IGNvbXBhcmUgZnVuY3Rpb25zIGZyb20gcHJlZGljYXRlcworCisoZGVmaW5l IGNvbXBhcmUtYnk8CisgIChjYXNlLWxhbWJkYQorICAgKChsdCkgICAgIChsYW1iZGEgKHggeSkg KGlmIChsdCB4IHkpIC0xIChpZiAobHQgeSB4KSAgMSAwKSkpKQorICAgKChsdCB4IHkpICAgICAg ICAgICAgICAgKGlmIChsdCB4IHkpIC0xIChpZiAobHQgeSB4KSAgMSAwKSkpKSkKKworKGRlZmlu ZSBjb21wYXJlLWJ5PgorICAoY2FzZS1sYW1iZGEKKyAgICgoZ3QpICAgICAobGFtYmRhICh4IHkp IChpZiAoZ3QgeCB5KSAxIChpZiAoZ3QgeSB4KSAgLTEgMCkpKSkKKyAgICgoZ3QgeCB5KSAgICAg ICAgICAgICAgIChpZiAoZ3QgeCB5KSAxIChpZiAoZ3QgeSB4KSAgLTEgMCkpKSkpCisKKyhkZWZp bmUgY29tcGFyZS1ieTw9CisgIChjYXNlLWxhbWJkYQorICAgKChsZSkgICAgIChsYW1iZGEgKHgg eSkgKGlmIChsZSB4IHkpIChpZiAobGUgeSB4KSAwIC0xKSAxKSkpCisgICAoKGxlIHggeSkgICAg ICAgICAgICAgICAoaWYgKGxlIHggeSkgKGlmIChsZSB5IHgpIDAgLTEpIDEpKSkpCisKKyhkZWZp bmUgY29tcGFyZS1ieT49CisgIChjYXNlLWxhbWJkYQorICAgKChnZSkgICAgIChsYW1iZGEgKHgg eSkgKGlmIChnZSB4IHkpIChpZiAoZ2UgeSB4KSAwIDEpIC0xKSkpCisgICAoKGdlIHggeSkgICAg ICAgICAgICAgICAoaWYgKGdlIHggeSkgKGlmIChnZSB5IHgpIDAgMSkgLTEpKSkpCisKKyhkZWZp bmUgY29tcGFyZS1ieT0vPAorICAoY2FzZS1sYW1iZGEKKyAgICgoZXEgbHQpICAgICAobGFtYmRh ICh4IHkpIChpZiAoZXEgeCB5KSAwIChpZiAobHQgeCB5KSAtMSAxKSkpKQorICAgKChlcSBsdCB4 IHkpICAgICAgICAgICAgICAgKGlmIChlcSB4IHkpIDAgKGlmIChsdCB4IHkpIC0xIDEpKSkpKQor CisoZGVmaW5lIGNvbXBhcmUtYnk9Lz4KKyAgKGNhc2UtbGFtYmRhCisgICAoKGVxIGd0KSAgICAg KGxhbWJkYSAoeCB5KSAoaWYgKGVxIHggeSkgMCAoaWYgKGd0IHggeSkgMSAtMSkpKSkKKyAgICgo ZXEgZ3QgeCB5KSAgICAgICAgICAgICAgIChpZiAoZXEgeCB5KSAwIChpZiAoZ3QgeCB5KSAxIC0x KSkpKSkKKworOyByZWZpbmUgYW5kIGV4dGVuZCBjb25zdHJ1Y3Rpb24KKworKGRlZmluZS1zeW50 YXggcmVmaW5lLWNvbXBhcmUKKyAgKHN5bnRheC1ydWxlcyAoKQorICAgICgocmVmaW5lLWNvbXBh cmUpCisgICAgIDApCisgICAgKChyZWZpbmUtY29tcGFyZSBjMSkKKyAgICAgYzEpCisgICAgKChy ZWZpbmUtY29tcGFyZSBjMSBjMiBjcyAuLi4pCisgICAgIChpZjMgYzEgLTEgKHJlZmluZS1jb21w YXJlIGMyIGNzIC4uLikgMSkpKSkKKworKGRlZmluZS1zeW50YXggc2VsZWN0LWNvbXBhcmUKKyAg KHN5bnRheC1ydWxlcyAoZWxzZSkKKyAgICAoKHNlbGVjdC1jb21wYXJlIHggeSBjbGF1c2UgLi4u KQorICAgICAobGV0ICgoeC12YWwgeCkgKHktdmFsIHkpKQorICAgICAgIChzZWxlY3QtY29tcGFy ZSAoeC12YWwgeS12YWwgY2xhdXNlIC4uLikpKSkKKyAgICA7IHVzZWQgaW50ZXJuYWxseTogKHNl bGVjdC1jb21wYXJlICh4IHkgY2xhdXNlIC4uLikpCisgICAgKChzZWxlY3QtY29tcGFyZSAoeCB5 KSkKKyAgICAgMCkKKyAgICAoKHNlbGVjdC1jb21wYXJlICh4IHkgKGVsc2UgYyAuLi4pKSkKKyAg ICAgKHJlZmluZS1jb21wYXJlIGMgLi4uKSkKKyAgICAoKHNlbGVjdC1jb21wYXJlICh4IHkgKHQ/ IGMgLi4uKSBjbGF1c2UgLi4uKSkKKyAgICAgKGxldCAoKHQ/LXZhbCB0PykpCisgICAgICAgKGxl dCAoKHR4ICh0Py12YWwgeCkpICh0eSAodD8tdmFsIHkpKSkKKyAgICAgICAgIChpZiB0eAorICAg ICAgICAgICAgIChpZiB0eSAocmVmaW5lLWNvbXBhcmUgYyAuLi4pIC0xKQorICAgICAgICAgICAg IChpZiB0eSAxIChzZWxlY3QtY29tcGFyZSAoeCB5IGNsYXVzZSAuLi4pKSkpKSkpKSkKKworKGRl ZmluZS1zeW50YXggY29uZC1jb21wYXJlCisgIChzeW50YXgtcnVsZXMgKGVsc2UpCisgICAgKChj b25kLWNvbXBhcmUpCisgICAgIDApCisgICAgKChjb25kLWNvbXBhcmUgKGVsc2UgY3MgLi4uKSkK KyAgICAgKHJlZmluZS1jb21wYXJlIGNzIC4uLikpCisgICAgKChjb25kLWNvbXBhcmUgKCh0eCB0 eSkgY3MgLi4uKSBjbGF1c2UgLi4uKQorICAgICAobGV0ICgodHgtdmFsIHR4KSAodHktdmFsIHR5 KSkKKyAgICAgICAoaWYgdHgtdmFsCisgICAgICAgICAgIChpZiB0eS12YWwgKHJlZmluZS1jb21w YXJlIGNzIC4uLikgLTEpCisgICAgICAgICAgIChpZiB0eS12YWwgMSAoY29uZC1jb21wYXJlIGNs YXVzZSAuLi4pKSkpKSkpCisKKworOyBSNVJTIGF0b21pYyB0eXBlcworCisoZGVmaW5lLXN5bnRh eCBjb21wYXJlOnR5cGUtY2hlY2sKKyAgKHN5bnRheC1ydWxlcyAoKQorICAgICgoY29tcGFyZTp0 eXBlLWNoZWNrIHR5cGU/IHR5cGUtbmFtZSB4KQorICAgICAoaWYgKG5vdCAodHlwZT8geCkpCisg ICAgICAgICAoZXJyb3IgKHN0cmluZy1hcHBlbmQgIm5vdCAiIHR5cGUtbmFtZSAiOiIpIHgpKSkK KyAgICAoKGNvbXBhcmU6dHlwZS1jaGVjayB0eXBlPyB0eXBlLW5hbWUgeCB5KQorICAgICAoYmVn aW4gKGNvbXBhcmU6dHlwZS1jaGVjayB0eXBlPyB0eXBlLW5hbWUgeCkKKyAgICAgICAgICAgIChj b21wYXJlOnR5cGUtY2hlY2sgdHlwZT8gdHlwZS1uYW1lIHkpKSkpKQorCisoZGVmaW5lLXN5bnRh eCBjb21wYXJlOmRlZmluZS1ieT0vPAorICAoc3ludGF4LXJ1bGVzICgpCisgICAgKChjb21wYXJl OmRlZmluZS1ieT0vPCBjb21wYXJlID0gPCB0eXBlPyB0eXBlLW5hbWUpCisgICAgIChkZWZpbmUg Y29tcGFyZQorICAgICAgIChsZXQgKCg9ID0pICg8IDwpKQorCSAobGFtYmRhICh4IHkpCisJICAg KGlmICh0eXBlPyB4KQorCSAgICAgICAoaWYgKGVxPyB4IHkpCisJCSAgIDAKKwkJICAgKGlmICh0 eXBlPyB5KQorCQkgICAgICAgKGlmICg9IHggeSkgMCAoaWYgKDwgeCB5KSAtMSAxKSkKKwkJICAg ICAgIChlcnJvciAoc3RyaW5nLWFwcGVuZCAibm90ICIgdHlwZS1uYW1lICI6IikgeSkpKQorCSAg ICAgICAoZXJyb3IgKHN0cmluZy1hcHBlbmQgIm5vdCAiIHR5cGUtbmFtZSAiOiIpIHgpKSkpKSkp KQorCisoZGVmaW5lIChib29sZWFuLWNvbXBhcmUgeCB5KQorICAoY29tcGFyZTp0eXBlLWNoZWNr IGJvb2xlYW4/ICJib29sZWFuIiB4IHkpCisgIChpZiB4IChpZiB5IDAgMSkgKGlmIHkgLTEgMCkp KQorCisoY29tcGFyZTpkZWZpbmUtYnk9LzwgY2hhci1jb21wYXJlIGNoYXI9PyBjaGFyPD8gY2hh cj8gImNoYXIiKQorCisoY29tcGFyZTpkZWZpbmUtYnk9LzwgY2hhci1jb21wYXJlLWNpIGNoYXIt Y2k9PyBjaGFyLWNpPD8gY2hhcj8gImNoYXIiKQorCisoY29tcGFyZTpkZWZpbmUtYnk9Lzwgc3Ry aW5nLWNvbXBhcmUgc3RyaW5nPT8gc3RyaW5nPD8gc3RyaW5nPyAic3RyaW5nIikKKworKGNvbXBh cmU6ZGVmaW5lLWJ5PS88IHN0cmluZy1jb21wYXJlLWNpIHN0cmluZy1jaT0/IHN0cmluZy1jaTw/ IHN0cmluZz8gInN0cmluZyIpCisKKyhkZWZpbmUgKHN5bWJvbC1jb21wYXJlIHggeSkKKyAgKGNv bXBhcmU6dHlwZS1jaGVjayBzeW1ib2w/ICJzeW1ib2wiIHggeSkKKyAgKHN0cmluZy1jb21wYXJl IChzeW1ib2wtPnN0cmluZyB4KSAoc3ltYm9sLT5zdHJpbmcgeSkpKQorCisoY29tcGFyZTpkZWZp bmUtYnk9LzwgaW50ZWdlci1jb21wYXJlID0gPCBpbnRlZ2VyPyAiaW50ZWdlciIpCisKKyhjb21w YXJlOmRlZmluZS1ieT0vPCByYXRpb25hbC1jb21wYXJlID0gPCByYXRpb25hbD8gInJhdGlvbmFs IikKKworKGNvbXBhcmU6ZGVmaW5lLWJ5PS88IHJlYWwtY29tcGFyZSA9IDwgcmVhbD8gInJlYWwi KQorCisoZGVmaW5lIChjb21wbGV4LWNvbXBhcmUgeCB5KQorICAoY29tcGFyZTp0eXBlLWNoZWNr IGNvbXBsZXg/ICJjb21wbGV4IiB4IHkpCisgIChpZiAoYW5kIChyZWFsPyB4KSAocmVhbD8geSkp CisgICAgICAocmVhbC1jb21wYXJlIHggeSkKKyAgICAgIChyZWZpbmUtY29tcGFyZSAocmVhbC1j b21wYXJlIChyZWFsLXBhcnQgeCkgKHJlYWwtcGFydCB5KSkKKyAgICAgICAgICAgICAgICAgICAg ICAocmVhbC1jb21wYXJlIChpbWFnLXBhcnQgeCkgKGltYWctcGFydCB5KSkpKSkKKworKGRlZmlu ZSAobnVtYmVyLWNvbXBhcmUgeCB5KQorICAoY29tcGFyZTp0eXBlLWNoZWNrIG51bWJlcj8gIm51 bWJlciIgeCB5KQorICAoY29tcGxleC1jb21wYXJlIHggeSkpCisKKworOyBSNVJTIGNvbXBvdW5k IGRhdGEgc3RydWN0dXJlczogZG90dGVkIHBhaXIsIGxpc3QsIHZlY3RvcgorCisoZGVmaW5lIChw YWlyLWNvbXBhcmUtY2FyIGNvbXBhcmUpCisgIChsYW1iZGEgKHggeSkKKyAgICAoY29tcGFyZSAo Y2FyIHgpIChjYXIgeSkpKSkKKworKGRlZmluZSAocGFpci1jb21wYXJlLWNkciBjb21wYXJlKQor ICAobGFtYmRhICh4IHkpCisgICAgKGNvbXBhcmUgKGNkciB4KSAoY2RyIHkpKSkpCisKKyhkZWZp bmUgcGFpci1jb21wYXJlCisgIChjYXNlLWxhbWJkYQorICAgIAorICAgIDsgZG90dGVkIHBhaXIK KyAgICAoKHBhaXItY29tcGFyZS1jYXIgcGFpci1jb21wYXJlLWNkciB4IHkpCisgICAgIChyZWZp bmUtY29tcGFyZSAocGFpci1jb21wYXJlLWNhciAoY2FyIHgpIChjYXIgeSkpCisgICAgICAgICAg ICAgICAgICAgICAocGFpci1jb21wYXJlLWNkciAoY2RyIHgpIChjZHIgeSkpKSkKKyAgICAKKyAg ICA7IHBvc3NpYmx5IGltcHJvcGVyIGxpc3RzCisgICAgKChjb21wYXJlIHggeSkKKyAgICAgKGNv bmQtY29tcGFyZSAKKyAgICAgICgoKG51bGw/IHgpIChudWxsPyB5KSkgMCkKKyAgICAgICgoKHBh aXI/IHgpIChwYWlyPyB5KSkgKGNvbXBhcmUgICAgICAgICAgICAgIChjYXIgeCkgKGNhciB5KSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhaXItY29tcGFyZSBjb21wYXJlIChjZHIg eCkgKGNkciB5KSkpCisgICAgICAoZWxzZSAgICAgICAgICAgICAgICAgIChjb21wYXJlIHggeSkp KSkKKyAgICAKKyAgICA7IGZvciBjb252ZW5pZW5jZQorICAgICgoeCB5KQorICAgICAocGFpci1j b21wYXJlIGRlZmF1bHQtY29tcGFyZSB4IHkpKSkpCisKKyhkZWZpbmUgbGlzdC1jb21wYXJlCisg IChjYXNlLWxhbWJkYQorICAgICgoY29tcGFyZSB4IHkgZW1wdHk/IGhlYWQgdGFpbCkKKyAgICAg KGNvbmQtY29tcGFyZQorICAgICAgKCgoZW1wdHk/IHgpIChlbXB0eT8geSkpIDApCisgICAgICAo ZWxzZSAoY29tcGFyZSAgICAgICAgICAgICAgKGhlYWQgeCkgKGhlYWQgeSkpCisgICAgICAgICAg ICAobGlzdC1jb21wYXJlIGNvbXBhcmUgKHRhaWwgeCkgKHRhaWwgeSkgZW1wdHk/IGhlYWQgdGFp bCkpKSkKKyAgICAKKyAgICA7IGZvciBjb252ZW5pZW5jZQorICAgICgoICAgICAgICB4IHkgZW1w dHk/IGhlYWQgdGFpbCkKKyAgICAgKGxpc3QtY29tcGFyZSBkZWZhdWx0LWNvbXBhcmUgeCB5IGVt cHR5PyBoZWFkIHRhaWwpKQorICAgICgoY29tcGFyZSB4IHkgICAgICAgICAgICAgICkKKyAgICAg KGxpc3QtY29tcGFyZSBjb21wYXJlICAgICAgICAgeCB5IG51bGw/IGNhciAgIGNkcikpCisgICAg KCggICAgICAgIHggeSAgICAgICAgICAgICAgKQorICAgICAobGlzdC1jb21wYXJlIGRlZmF1bHQt Y29tcGFyZSB4IHkgbnVsbD8gY2FyICAgY2RyKSkpKQorCisoZGVmaW5lIGxpc3QtY29tcGFyZS1h cy12ZWN0b3IKKyAgKGNhc2UtbGFtYmRhCisgICAgKChjb21wYXJlIHggeSBlbXB0eT8gaGVhZCB0 YWlsKQorICAgICAocmVmaW5lLWNvbXBhcmUKKyAgICAgIChsZXQgY29tcGFyZS1sZW5ndGggKCh4 IHgpICh5IHkpKQorICAgICAgICAoY29uZC1jb21wYXJlCisgICAgICAgICAoKChlbXB0eT8geCkg KGVtcHR5PyB5KSkgMCkKKyAgICAgICAgIChlbHNlIChjb21wYXJlLWxlbmd0aCAodGFpbCB4KSAo dGFpbCB5KSkpKSkKKyAgICAgIChsaXN0LWNvbXBhcmUgY29tcGFyZSB4IHkgZW1wdHk/IGhlYWQg dGFpbCkpKQorICAgIAorICAgIDsgZm9yIGNvbnZlbmllbmNlCisgICAgKCggICAgICAgIHggeSBl bXB0eT8gaGVhZCB0YWlsKQorICAgICAobGlzdC1jb21wYXJlLWFzLXZlY3RvciBkZWZhdWx0LWNv bXBhcmUgeCB5IGVtcHR5PyBoZWFkIHRhaWwpKQorICAgICgoY29tcGFyZSB4IHkgICAgICAgICAg ICAgICkKKyAgICAgKGxpc3QtY29tcGFyZS1hcy12ZWN0b3IgY29tcGFyZSAgICAgICAgIHggeSBu dWxsPyAgY2FyICBjZHIpKQorICAgICgoICAgICAgICB4IHkgICAgICAgICAgICAgICkKKyAgICAg KGxpc3QtY29tcGFyZS1hcy12ZWN0b3IgZGVmYXVsdC1jb21wYXJlIHggeSBudWxsPyAgY2FyICBj ZHIpKSkpCisKKyhkZWZpbmUgdmVjdG9yLWNvbXBhcmUKKyAgKGxldCAoKD0gPSkpCisgICAgKGNh c2UtbGFtYmRhCisgICAgICAoKGNvbXBhcmUgeCB5IHNpemUgcmVmKQorICAgICAgIChsZXQgKChu IChzaXplIHgpKSAobSAoc2l6ZSB5KSkpCisgICAgICAgICAocmVmaW5lLWNvbXBhcmUgCisgICAg ICAgICAgKGludGVnZXItY29tcGFyZSBuIG0pCisgICAgICAgICAgKGxldCBjb21wYXJlLXJlc3Qg KChpIDApKSA7IGNvbXBhcmUgeFtpLi5uLTFdIHlbaS4ubi0xXQorICAgICAgICAgICAgKGlmICg9 IGkgbikKKyAgICAgICAgICAgICAgICAwCisgICAgICAgICAgICAgICAgKHJlZmluZS1jb21wYXJl IChjb21wYXJlIChyZWYgeCBpKSAocmVmIHkgaSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjb21wYXJlLXJlc3QgKCsgaSAxKSkpKSkpKSkKKyAgICAgIAorICAgICAgOyBmb3Ig Y29udmVuaWVuY2UKKyAgICAgICgoICAgICAgICB4IHkgc2l6ZSByZWYpCisgICAgICAgKHZlY3Rv ci1jb21wYXJlIGRlZmF1bHQtY29tcGFyZSB4IHkgc2l6ZSAgICAgICAgICByZWYpKQorICAgICAg KChjb21wYXJlIHggeSAgICAgICAgICAgKQorICAgICAgICh2ZWN0b3ItY29tcGFyZSBjb21wYXJl ICAgICAgICAgeCB5IHZlY3Rvci1sZW5ndGggdmVjdG9yLXJlZikpCisgICAgICAoKCAgICAgICAg eCB5ICAgICAgICAgICApCisgICAgICAgKHZlY3Rvci1jb21wYXJlIGRlZmF1bHQtY29tcGFyZSB4 IHkgdmVjdG9yLWxlbmd0aCB2ZWN0b3ItcmVmKSkpKSkKKworKGRlZmluZSB2ZWN0b3ItY29tcGFy ZS1hcy1saXN0CisgIChsZXQgKCg9ID0pKQorICAgIChjYXNlLWxhbWJkYQorICAgICAgKChjb21w YXJlIHggeSBzaXplIHJlZikKKyAgICAgICAobGV0ICgobnggKHNpemUgeCkpIChueSAoc2l6ZSB5 KSkpCisgICAgICAgICAobGV0ICgobiAobWluIG54IG55KSkpCisgICAgICAgICAgIChsZXQgY29t cGFyZS1yZXN0ICgoaSAwKSkgOyBjb21wYXJlIHhbaS4ubi0xXSB5W2kuLm4tMV0KKyAgICAgICAg ICAgICAoaWYgKD0gaSBuKQorICAgICAgICAgICAgICAgICAoaW50ZWdlci1jb21wYXJlIG54IG55 KQorICAgICAgICAgICAgICAgICAocmVmaW5lLWNvbXBhcmUgKGNvbXBhcmUgKHJlZiB4IGkpIChy ZWYgeSBpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb21wYXJlLXJlc3Qg KCsgaSAxKSkpKSkpKSkKKyAgICAgIAorICAgICAgOyBmb3IgY29udmVuaWVuY2UKKyAgICAgICgo ICAgICAgICB4IHkgc2l6ZSByZWYpCisgICAgICAgKHZlY3Rvci1jb21wYXJlLWFzLWxpc3QgZGVm YXVsdC1jb21wYXJlIHggeSBzaXplICAgICAgICAgIHJlZikpCisgICAgICAoKGNvbXBhcmUgeCB5 ICAgICAgICAgICApCisgICAgICAgKHZlY3Rvci1jb21wYXJlLWFzLWxpc3QgY29tcGFyZSAgICAg ICAgIHggeSB2ZWN0b3ItbGVuZ3RoIHZlY3Rvci1yZWYpKQorICAgICAgKCggICAgICAgIHggeSAg ICAgICAgICAgKQorICAgICAgICh2ZWN0b3ItY29tcGFyZS1hcy1saXN0IGRlZmF1bHQtY29tcGFy ZSB4IHkgdmVjdG9yLWxlbmd0aCB2ZWN0b3ItcmVmKSkpKSkKKworCis7IGRlZmF1bHQgY29tcGFy ZQorCisoZGVmaW5lIChkZWZhdWx0LWNvbXBhcmUgeCB5KQorICAoc2VsZWN0LWNvbXBhcmUgCisg ICB4IHkKKyAgIChudWxsPyAgICAwKQorICAgKHBhaXI/ICAgIChkZWZhdWx0LWNvbXBhcmUgKGNh ciB4KSAoY2FyIHkpKQorCSAgICAgKGRlZmF1bHQtY29tcGFyZSAoY2RyIHgpIChjZHIgeSkpKQor ICAgKGJvb2xlYW4/IChib29sZWFuLWNvbXBhcmUgeCB5KSkKKyAgIChjaGFyPyAgICAoY2hhci1j b21wYXJlICAgIHggeSkpCisgICAoc3RyaW5nPyAgKHN0cmluZy1jb21wYXJlICB4IHkpKQorICAg KHN5bWJvbD8gIChzeW1ib2wtY29tcGFyZSAgeCB5KSkKKyAgIChudW1iZXI/ICAobnVtYmVyLWNv bXBhcmUgIHggeSkpCisgICAodmVjdG9yPyAgKHZlY3Rvci1jb21wYXJlIGRlZmF1bHQtY29tcGFy ZSB4IHkpKQorICAgKGVsc2UgKGVycm9yICJ1bnJlY29nbml6ZWQgdHlwZSBpbiBkZWZhdWx0LWNv bXBhcmUiIHggeSkpKSkKKworOyBOb3RlIHRoYXQgd2UgcGFzcyBkZWZhdWx0LWNvbXBhcmUgdG8g Y29tcGFyZS17cGFpcix2ZWN0b3J9IGV4cGxpY3RseS4KKzsgVGhpcyBtYWtlcyBzdXJlIHJlY3Vy c2lvbiBwcm9jZWVkcyB3aXRoIHRoaXMgZGVmYXVsdC1jb21wYXJlLCB3aGljaCAKKzsgbmVlZCBu b3QgYmUgdGhlIG9uZSBpbiB0aGUgbGV4aWNhbCBzY29wZSBvZiBjb21wYXJlLXtwYWlyLHZlY3Rv cn0uCisKKworOyBkZWJ1ZyBjb21wYXJlCisKKyhkZWZpbmUgKGRlYnVnLWNvbXBhcmUgYykKKyAg CisgIChkZWZpbmUgKGNoZWNrZWQtdmFsdWUgYyB4IHkpCisgICAgKGxldCAoKGMteHkgKGMgeCB5 KSkpCisgICAgICAoaWYgKG9yIChlcXY/IGMteHkgLTEpIChlcXY/IGMteHkgMCkgKGVxdj8gYy14 eSAxKSkKKyAgICAgICAgICBjLXh5CisgICAgICAgICAgKGVycm9yICJjb21wYXJlIHZhbHVlIG5v dCBpbiB7LTEsMCwxfSIgYy14eSAobGlzdCBjIHggeSkpKSkpCisgIAorICAoZGVmaW5lIChyYW5k b20tYm9vbGVhbikKKyAgICAoemVybz8gKHJhbmRvbS1pbnRlZ2VyIDIpKSkKKyAgCisgIChkZWZp bmUgcSA7ICh1IHYgdykgc3VjaCB0aGF0IHUgPD0gdiwgdiA8PSB3LCBhbmQgbm90IHUgPD0gdwor ICAgICcjKAorICAgICAgIDt4IDwgeSAgIHggPSB5ICAgeCA+IHkgICBbeCA8IHpdCisgICAgICAg MCAgICAgICAwICAgICAgIDAgICAgOyB5IDwgegorICAgICAgICAgICAgICAgMCAgICAoeiB5IHgp ICh6IHkgeCkgOyB5ID0gegorICAgICAgICAgICAgICAgMCAgICAoeiB5IHgpICh6IHkgeCkgOyB5 ID4gegorICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICA7eCA8IHkgICB4ID0geSAgIHgg PiB5ICAgW3ggPSB6XQorICAgICAgICAgICAgICAgKHkgeiB4KSAoeiB4IHkpICAgIDAgICAgOyB5 IDwgegorICAgICAgICAgICAgICAgKHkgeiB4KSAgICAwICAgICh4IHogeSkgOyB5ID0gegorICAg ICAgICAgICAgICAgMCAgICAoeSB4IHopICh4IHogeSkgOyB5ID4gegorICAgICAgICAgICAgICAg CisgICAgICAgICAgICAgICA7eCA8IHkgICB4ID0geSAgIHggPiB5ICAgW3ggPiB6XQorICAgICAg ICAgICAgICAgKHggeSB6KSAoeCB5IHopICAgIDAgICAgOyB5IDwgegorICAgICAgICAgICAgICAg KHggeSB6KSAoeCB5IHopICAgIDAgICAgOyB5ID0gegorICAgICAgICAgICAgICAgMCAgICAgICAw ICAgICAgIDAgICAgOyB5ID4gegorICAgICAgICAgICAgICAgKSkKKyAgCisgIChsZXQgKCh6PyAj ZikgKHogI2YpKSA7IHN0b3JlZCBlbGVtZW50IGZyb20gcHJldmlvdXMgY2FsbAorICAgIChsYW1i ZGEgKHggeSkKKyAgICAgIChsZXQgKChjLXh4IChjaGVja2VkLXZhbHVlIGMgeCB4KSkKKwkgICAg KGMteXkgKGNoZWNrZWQtdmFsdWUgYyB5IHkpKQorCSAgICAoYy14eSAoY2hlY2tlZC12YWx1ZSBj IHggeSkpCisJICAgIChjLXl4IChjaGVja2VkLXZhbHVlIGMgeSB4KSkpCisJKGlmIChub3QgKHpl cm8/IGMteHgpKQorCSAgICAoZXJyb3IgImNvbXBhcmUgZXJyb3I6IG5vdCByZWZsZXhpdmUiIGMg eCkpCisJKGlmIChub3QgKHplcm8/IGMteXkpKQorCSAgICAoZXJyb3IgImNvbXBhcmUgZXJyb3I6 IG5vdCByZWZsZXhpdmUiIGMgeSkpCisJKGlmIChub3QgKHplcm8/ICgrIGMteHkgYy15eCkpKQor CSAgICAoZXJyb3IgImNvbXBhcmUgZXJyb3I6IG5vdCBhbnRpLXN5bW1ldHJpYyIgYyB4IHkpKQor CShpZiB6PworCSAgICAobGV0ICgoYy14eiAoY2hlY2tlZC12YWx1ZSBjIHggeikpCisJCSAgKGMt enggKGNoZWNrZWQtdmFsdWUgYyB6IHgpKQorCQkgIChjLXl6IChjaGVja2VkLXZhbHVlIGMgeSB6 KSkKKwkJICAoYy16eSAoY2hlY2tlZC12YWx1ZSBjIHogeSkpKQorCSAgICAgIChpZiAobm90ICh6 ZXJvPyAoKyBjLXh6IGMtengpKSkKKwkJICAoZXJyb3IgImNvbXBhcmUgZXJyb3I6IG5vdCBhbnRp LXN5bW1ldHJpYyIgYyB4IHopKQorCSAgICAgIChpZiAobm90ICh6ZXJvPyAoKyBjLXl6IGMtenkp KSkKKwkJICAoZXJyb3IgImNvbXBhcmUgZXJyb3I6IG5vdCBhbnRpLXN5bW1ldHJpYyIgYyB5IHop KQorCSAgICAgIChsZXQgKChpamsgKHZlY3Rvci1yZWYgcSAoKyBjLXh5ICgqIDMgYy15eikgKCog OSBjLXh6KSAxMykpKSkKKwkJKGlmIChsaXN0PyBpamspCisJCSAgICAoYXBwbHkgZXJyb3IKKwkJ CSAgICJjb21wYXJlIGVycm9yOiBub3QgdHJhbnNpdGl2ZSIKKwkJCSAgIGMgCisJCQkgICAobWFw IChsYW1iZGEgKGkpIChjYXNlIGkgKCh4KSB4KSAoKHkpIHkpICgoeikgeikpKQorCQkJCWlqaykp KSkpCisJICAgIChzZXQhIHo/ICN0KSkKKwkoc2V0ISB6IChpZiAocmFuZG9tLWJvb2xlYW4pIHgg eSkpIDsgcmFuZG9taXplZCB0ZXN0aW5nCisJYy14eSkpKSkKZGlmZiAtLWdpdCBhL3Rlc3Qtc3Vp dGUvTWFrZWZpbGUuYW0gYi90ZXN0LXN1aXRlL01ha2VmaWxlLmFtCmluZGV4IGE0ODEyNjAuLjcx MDk0ZTQgMTAwNjQ0Ci0tLSBhL3Rlc3Qtc3VpdGUvTWFrZWZpbGUuYW0KKysrIGIvdGVzdC1zdWl0 ZS9NYWtlZmlsZS5hbQpAQCAtMTIxLDYgKzEyMSw3IEBAIFNDTV9URVNUUyA9IHRlc3RzLzAwLWlu aXRpYWwtZW52LnRlc3QJCVwKIAkgICAgdGVzdHMvc3JmaS0zOS50ZXN0CQkJXAogCSAgICB0ZXN0 cy9zcmZpLTQyLnRlc3QJCQlcCiAJICAgIHRlc3RzL3NyZmktNjAudGVzdAkJCVwKKwkgICAgdGVz dHMvc3JmaS02Ny50ZXN0CQkJXAogCSAgICB0ZXN0cy9zcmZpLTY5LnRlc3QJCQlcCiAJICAgIHRl c3RzL3NyZmktODgudGVzdAkJCVwKIAkgICAgdGVzdHMvc3JmaS00LnRlc3QJCQlcCmRpZmYgLS1n aXQgYS90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjcudGVzdCBiL3Rlc3Qtc3VpdGUvdGVzdHMvc3Jm aS02Ny50ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1YTQ0NzEKLS0t IC9kZXYvbnVsbAorKysgYi90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjcudGVzdApAQCAtMCwwICsx LDEyMjEgQEAKKzs7OyAtKi0gbW9kZTogc2NoZW1lOyBjb2Rpbmc6IHV0Zi04OyAtKi0KKworOzs7 IENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKzs7OyBD b3B5cmlnaHQgKGMpIDIwMDUgU2ViYXN0aWFuIEVnbmVyIGFuZCBKZW5zIEF4ZWwgU3tcb31nYWFy ZC4KKzs7OyAKKzs7OyBUaGlzIGNvZGUgaXMgYmFzZWQgb24gdGhlIGZpbGUgZXhhbXBsZXMuc2Nt IGluIHRoZSByZWZlcmVuY2UKKzs7OyBpbXBsZW1lbnRhdGlvbiBvZiBTUkZJLTY3LCBwcm92aWRl ZCB1bmRlciB0aGUgZm9sbG93aW5nIGxpY2Vuc2U6Cis7OzsKKzs7OyBQZXJtaXNzaW9uIGlzIGhl cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKKzs7 OyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp bGVzICh0aGUKKzs7OyBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKzs7OyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJp Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCis7OzsgZGlzdHJpYnV0 ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv Cis7OzsgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRv IGRvIHNvLCBzdWJqZWN0IHRvCis7OzsgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorOzs7IAor Ozs7IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IHNoYWxsIGJlCis7OzsgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0 aW9ucyBvZiB0aGUgU29mdHdhcmUuCis7OzsgCis7OzsgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE IGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKzs7OyBFWFBSRVNTIE9S IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YK Kzs7OyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO RAorOzs7IE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1Ig Q09QWVJJR0hUIEhPTERFUlMgQkUKKzs7OyBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP UiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCis7OzsgT0YgQ09OVFJBQ1Qs IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O Cis7OzsgV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBU SEUgU09GVFdBUkUuCis7OzsgCisKKyhkZWZpbmUtbW9kdWxlICh0ZXN0LXNyZmktNjcpCisgICM6 dXNlLW1vZHVsZSAodGVzdC1zdWl0ZSBsaWIpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTQy KQorICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS02NykpCisKKzsgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKworOyBUZXN0IGVuZ2luZQorOyA9PT09PT09PT09PQorOworOyBXZSB1c2UgYW4gZXh0ZW5k ZWQgdmVyc2lvbiBvZiB0aGUgdGhlIGNoZWNrZXIgb2YgU1JGSS00MiAod2l0aAorOyBGZWxpeCcg cmVkdWN0aW9uIG9uIGNvZGVzaXplKSBmb3IgcnVubmluZyBhIGJhdGNoIG9mIHRlc3RzIGZvcgor OyB0aGUgdmFyaW91cyBwcm9jZWR1cmVzIG9mICdjb21wYXJlLnNjbScuIE1vcmVvdmVyLCB3ZSB1 c2UgdGhlCis7IGNvbXByZWhlbnNpb25zIG9mIFNSRkktNDIgdG8gZ2VuZXJhdGUgZXhhbXBsZXMg c3lzdGVtYXRpY2FsbHkuCisKKzsgKG15LWNoZWNrIGV4cHIgPT4gZGVzaXJlZC1yZXN1bHQpCis7 ICAgZXZhbHVhdGVzIGV4cHIgYW5kIGNvbXBhcmVzIHRoZSB2YWx1ZSB3aXRoIGRlc2lyZWQtcmVz dWx0LgorCisoZGVmaW5lLXN5bnRheCBteS1jaGVjaworICAoc3ludGF4LXJ1bGVzICg9PikKKyAg ICAoKG15LWNoZWNrIGV4cHIgPT4gZGVzaXJlZC1yZXN1bHQpCisgICAgIChteS1jaGVjay1wcm9j ICdleHByIChsYW1iZGEgKCkgZXhwcikgZGVzaXJlZC1yZXN1bHQpKSkpCisKKyhkZWZpbmUgKG15 LWNoZWNrLXByb2MgZXhwciB0aHVuayBkZXNpcmVkLXJlc3VsdCkKKyAgKHBhc3MtaWYgZXhwciAo ZXF1YWw/ICh0aHVuaykgZGVzaXJlZC1yZXN1bHQpKSkKKworOyAobXktY2hlY2stZWMgPHF1YWxp Zmllcj4qIDxvaz8+IDxleHByPikKKzsgICAgcnVucyAoZXZlcnk/LWVjIDxxdWFsaWZpZXI+KiA8 b2s/PiksIGNvdW50aW5nIHRoZSB0aW1lcyA8b2s/PgorOyAgICBpcyBldmFsdWF0ZWQgYXMgYSBj b3JyZWN0IGV4YW1wbGUsIGFuZCBzdG9wcGluZyBhdCB0aGUgZmlyc3QKKzsgICAgY291bnRlciBl eGFtcGxlIGZvciB3aGljaCA8ZXhwcj4gcHJvdmlkZXMgdGhlIGFyZ3VtZW50LgorCisoZGVmaW5l LXN5bnRheCBteS1jaGVjay1lYworICAoc3ludGF4LXJ1bGVzIChuZXN0ZWQpCisgICAgKChteS1j aGVjay1lYyAobmVzdGVkIHExIC4uLikgcSBldGMxIGV0YzIgZXRjIC4uLikKKyAgICAgKG15LWNo ZWNrLWVjIChuZXN0ZWQgcTEgLi4uIHEpIGV0YzEgZXRjMiBldGMgLi4uKSkKKyAgICAoKG15LWNo ZWNrLWVjIHExIHEyICAgICAgICAgICAgIGV0YzEgZXRjMiBldGMgLi4uKQorICAgICAobXktY2hl Y2stZWMgKG5lc3RlZCBxMSBxMikgICAgZXRjMSBldGMyIGV0YyAuLi4pKQorICAgICgobXktY2hl Y2stZWMgb2s/IGV4cHIpCisgICAgIChteS1jaGVjay1lYyAobmVzdGVkKSBvaz8gZXhwcikpCisg ICAgKChteS1jaGVjay1lYyAobmVzdGVkIHEgLi4uKSBvaz8gZXhwcikKKyAgICAgKG15LWNoZWNr LWVjLXByb2MKKyAgICAgICcoZXZlcnk/LWVjIHEgLi4uIG9rPykKKyAgICAgIChsYW1iZGEgKCkK KyAgICAgICAgKGZpcnN0LWVjIAorICAgICAgICAgJ29rCisgICAgICAgICAobmVzdGVkIHEgLi4u KQorICAgICAgICAgKDpsZXQgb2sgb2s/KQorICAgICAgICAgKGlmIChub3Qgb2spKQorICAgICAg ICAgKGxpc3QgZXhwcikpKQorICAgICAgJ2V4cHIpKQorICAgICgobXktY2hlY2stZWMgcSBvaz8g ZXhwcikKKyAgICAgKG15LWNoZWNrLWVjIChuZXN0ZWQgcSkgb2s/IGV4cHIpKSkpCisKKyhkZWZp bmUgKG15LWNoZWNrLWVjLXByb2MgZXhwciB0aHVuayBhcmctY291bnRlci1leGFtcGxlKQorICAo cGFzcy1pZiBleHByIChlcXY/ICh0aHVuaykgJ29rKSkpCisKKzsgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKworOyBBYnN0cmFjdGlvbnMgZXRjLgorOyA9PT09PT09PT09PT09PT09PQorCisoZGVmaW5l IGNpIGludGVnZXItY29tcGFyZSkgOyB2ZXJ5IGZyZXF1ZW50bHkgdXNlZAorCis7IChyZXN1bHQt b2s/IGFjdHVhbCBkZXNpcmVkKQorOyAgIHRlc3RzIGlmIGFjdHVhbCBhbmQgZGVzaXJlZCBzcGVj aWZ5IHRoZSBzYW1lIG9yZGVyaW5nLgorCisoZGVmaW5lIChyZXN1bHQtb2s/IGFjdHVhbCBkZXNp cmVkKQorICAoZXF2PyBhY3R1YWwgZGVzaXJlZCkpCisKKzsgKG15LWNoZWNrLWNvbXBhcmUgY29t cGFyZSBpbmNyZWFzaW5nLWVsZW1lbnRzKQorOyAgICBldmFsdWF0ZXMgKGNvbXBhcmUgeCB5KSBm b3IgeCwgeSBpbiBpbmNyZWFzaW5nLWVsZW1lbnRzCis7ICAgIGFuZCBjaGVja3MgdGhlIHJlc3Vs dCBhZ2FpbnN0IC0xLCAwLCBvciAxIGRlcGVuZGluZyBvbgorOyAgICB0aGUgcG9zaXRpb24gb2Yg eCBhbmQgeSBpbiB0aGUgbGlzdCBpbmNyZWFzaW5nLWVsZW1lbnRzLgorCisoZGVmaW5lLXN5bnRh eCBteS1jaGVjay1jb21wYXJlCisgIChzeW50YXgtcnVsZXMgKCkKKyAgICAoKG15LWNoZWNrLWNv bXBhcmUgY29tcGFyZSBpbmNyZWFzaW5nLWVsZW1lbnRzKQorICAgICAobXktY2hlY2stZWMKKyAg ICAgICg6bGlzdCB4IChpbmRleCBpeCkgaW5jcmVhc2luZy1lbGVtZW50cykKKyAgICAgICg6bGlz dCB5IChpbmRleCBpeSkgaW5jcmVhc2luZy1lbGVtZW50cykKKyAgICAgIChyZXN1bHQtb2s/IChj b21wYXJlIHggeSkgKGNpIGl4IGl5KSkKKyAgICAgIChsaXN0IHggeSkpKSkpCisKKzsgc29ydGVk IGxpc3RzCisKKyhkZWZpbmUgbXktYm9vbGVhbnMgICAnKCNmICN0KSkKKyhkZWZpbmUgbXktY2hh cnMgICAgICAnKCNcYSAjXGIgI1xjKSkKKyhkZWZpbmUgbXktY2hhcnMtY2kgICAnKCNcYSAjXEIg I1xjICNcRCkpCisoZGVmaW5lIG15LXN0cmluZ3MgICAgJygiIiAiYSIgImFhIiAiYWIiICJiIiAi YmEiICJiYiIpKQorKGRlZmluZSBteS1zdHJpbmdzLWNpICcoIiIgImEiICJhQSIgIkFiIiAiQiIg ImJBIiAiQkIiKSkKKyhkZWZpbmUgbXktc3ltYm9scyAgICAnKGEgYWEgYWIgYiBiYSBiYikpCisK KyhkZWZpbmUgbXktcmVhbHMKKyAgKGFwcGVuZC1lYyAoOnJhbmdlIHhuIC02IDcpIAorICAgICAg ICAgICAgICg6bGV0IHggKC8geG4gMykpCisgICAgICAgICAgICAgKGxpc3QgeCAoKyB4IChleGFj dC0+aW5leGFjdCAoLyAxIDEwMCkpKSkpKQorCisoZGVmaW5lIG15LXJhdGlvbmFscworICAobGlz dC1lYyAoOmxpc3QgeCBteS1yZWFscykKKyAgICAgICAgICAgKGFuZCAoZXhhY3Q/IHgpIChyYXRp b25hbD8geCkpCisgICAgICAgICAgIHgpKQorCisoZGVmaW5lIG15LWludGVnZXJzCisgIChsaXN0 LWVjICg6bGlzdCB4IG15LXJlYWxzKQorICAgICAgICAgICAoaWYgKGFuZCAoZXhhY3Q/IHgpIChp bnRlZ2VyPyB4KSkpCisgICAgICAgICAgIHgpKQorCisoZGVmaW5lIG15LWNvbXBsZXhlcworICAo bGlzdC1lYyAoOmxpc3QgcmUteCBteS1yZWFscykKKyAgICAgICAgICAgKGlmIChpbmV4YWN0PyBy ZS14KSkKKyAgICAgICAgICAgKDpsaXN0IGltLXggbXktcmVhbHMpCisgICAgICAgICAgIChpZiAo aW5leGFjdD8gaW0teCkpCisgICAgICAgICAgIChtYWtlLXJlY3Rhbmd1bGFyIHJlLXggaW0teCkp KQorCisoZGVmaW5lIG15LWxpc3RzCisgICcoKCkgKDEpICgxIDEpICgxIDIpICgyKSAoMiAxKSAo MiAyKSkpCisKKyhkZWZpbmUgbXktdmVjdG9yLWFzLWxpc3RzCisgIChtYXAgbGlzdC0+dmVjdG9y IG15LWxpc3RzKSkKKworKGRlZmluZSBteS1saXN0LWFzLXZlY3RvcnMKKyAgJygoKSAoMSkgKDIp ICgxIDEpICgxIDIpICgyIDEpICgyIDIpKSkKKworKGRlZmluZSBteS12ZWN0b3JzCisgIChtYXAg bGlzdC0+dmVjdG9yIG15LWxpc3QtYXMtdmVjdG9ycykpCisKKyhkZWZpbmUgbXktbnVsbC1vci1w YWlycyAKKyAgJygoKQorICAgICgxKSAoMSAxKSAoMSAyKSAoMSAuIDEpICgxIC4gMikgCisgICAg KDIpICgyIDEpICgyIDIpICgyIC4gMSkgKDIgLiAyKSkpCisKKyhkZWZpbmUgbXktb2JqZWN0cwor ICAoYXBwZW5kIG15LW51bGwtb3ItcGFpcnMKKyAgICAgICAgICBteS1ib29sZWFucworICAgICAg ICAgIG15LWNoYXJzCisgICAgICAgICAgbXktc3RyaW5ncworICAgICAgICAgIG15LXN5bWJvbHMK KyAgICAgICAgICBteS1pbnRlZ2VycworICAgICAgICAgIG15LXZlY3RvcnMpKQorCis7ID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CisKKzsgVGhlIGNoZWNrcworOyA9PT09PT09PT09CisKKyhkZWZpbmUg KGNoZWNrOmlmMykKKyAgCisgIDsgYmFzaWMgZnVuY3Rpb25hbGl0eQorICAKKyAgKG15LWNoZWNr IChpZjMgLTEgJ24gJ3ogJ3ApID0+ICduKQorICAobXktY2hlY2sgKGlmMyAgMCAnbiAneiAncCkg PT4gJ3opCisgIChteS1jaGVjayAoaWYzICAxICduICd6ICdwKSA9PiAncCkKKyAgCisgIDsgY2hl Y2sgYXJndW1lbnRzIGFyZSBldmFsdWF0ZWQgb25seSBvbmNlCisgIAorICAobXktY2hlY2sgCisg ICAobGV0ICgoeCAtMSkpCisgICAgIChpZjMgKGxldCAoKHgwIHgpKSAoc2V0ISB4ICgrIHggMSkp IHgwKSAnbiAneiAncCkpCisgICA9PiAnbikKKyAgCisgIChteS1jaGVjayAKKyAgIChsZXQgKCh4 IC0xKSAoeSAwKSkgCisgICAgIChpZjMgKGxldCAoKHgwIHgpKSAoc2V0ISB4ICgrIHggMSkpIHgw KQorICAgICAgICAgIChiZWdpbiAoc2V0ISB5ICgrIHkgMSkpICAgeSkKKyAgICAgICAgICAoYmVn aW4gKHNldCEgeSAoKyB5IDEwKSkgIHkpCisgICAgICAgICAgKGJlZ2luIChzZXQhIHkgKCsgeSAx MDApKSB5KSkpCisgICA9PiAxKQorICAKKyAgKG15LWNoZWNrIAorICAgKGxldCAoKHggMCkgKHkg MCkpIAorICAgICAoaWYzIChsZXQgKCh4MCB4KSkgKHNldCEgeCAoKyB4IDEpKSB4MCkKKyAgICAg ICAgICAoYmVnaW4gKHNldCEgeSAoKyB5IDEpKSAgIHkpCisgICAgICAgICAgKGJlZ2luIChzZXQh IHkgKCsgeSAxMCkpICB5KQorICAgICAgICAgIChiZWdpbiAoc2V0ISB5ICgrIHkgMTAwKSkgeSkp KQorICAgPT4gMTApCisgIAorICAobXktY2hlY2sgCisgICAobGV0ICgoeCAxKSAoeSAwKSkgCisg ICAgIChpZjMgKGxldCAoKHgwIHgpKSAoc2V0ISB4ICgrIHggMSkpIHgwKQorICAgICAgICAgIChi ZWdpbiAoc2V0ISB5ICgrIHkgMSkpICAgeSkKKyAgICAgICAgICAoYmVnaW4gKHNldCEgeSAoKyB5 IDEwKSkgIHkpCisgICAgICAgICAgKGJlZ2luIChzZXQhIHkgKCsgeSAxMDApKSB5KSkpCisgICA9 PiAxMDApCisgIAorICApIDsgY2hlY2s6aWYzCisKKyhkZWZpbmUtc3ludGF4IG15LWNoZWNrLWlm MgorICAoc3ludGF4LXJ1bGVzICgpCisgICAgKChteS1jaGVjay1pZjIgaWYtcmVsPyByZWwpCisg ICAgIChiZWdpbgorICAgICAgIDsgY2hlY2sgcmVzdWx0CisgICAgICAgKG15LWNoZWNrIChpZi1y ZWw/IC0xICd5ZXMgJ25vKSA9PiAoaWYgKHJlbCAtMSAwKSAneWVzICdubykpCisgICAgICAgKG15 LWNoZWNrIChpZi1yZWw/ICAwICd5ZXMgJ25vKSA9PiAoaWYgKHJlbCAgMCAwKSAneWVzICdubykp CisgICAgICAgKG15LWNoZWNrIChpZi1yZWw/ICAxICd5ZXMgJ25vKSA9PiAoaWYgKHJlbCAgMSAw KSAneWVzICdubykpCisgICAgICAgCisgICAgICAgOyBjaGVjayByZXN1bHQgb2YgJ2xhdGVyYWxs eSBjaGFsbGVuZ2VkIGlmJworICAgICAgIChteS1jaGVjayAobGV0ICgoeCAjZikpIChpZi1yZWw/ IC0xIChzZXQhIHggI3QpKSB4KSA9PiAocmVsIC0xIDApKQorICAgICAgIChteS1jaGVjayAobGV0 ICgoeCAjZikpIChpZi1yZWw/ICAwIChzZXQhIHggI3QpKSB4KSA9PiAocmVsICAwIDApKQorICAg ICAgIChteS1jaGVjayAobGV0ICgoeCAjZikpIChpZi1yZWw/ICAxIChzZXQhIHggI3QpKSB4KSA9 PiAocmVsICAxIDApKQorICAgICAgIAorICAgICAgIDsgY2hlY2sgdGhhdCA8Yz4gaXMgZXZhbHVh dGVkIGV4YWN0bHkgb25jZQorICAgICAgIChteS1jaGVjayAobGV0ICgobiAwKSkgKGlmLXJlbD8g KGJlZ2luIChzZXQhIG4gKCsgbiAxKSkgLTEpICN0ICNmKSBuKSA9PiAxKQorICAgICAgIChteS1j aGVjayAobGV0ICgobiAwKSkgKGlmLXJlbD8gKGJlZ2luIChzZXQhIG4gKCsgbiAxKSkgIDApICN0 ICNmKSBuKSA9PiAxKQorICAgICAgIChteS1jaGVjayAobGV0ICgobiAwKSkgKGlmLXJlbD8gKGJl Z2luIChzZXQhIG4gKCsgbiAxKSkgIDEpICN0ICNmKSBuKSA9PiAxKQorICAgICAgIChteS1jaGVj ayAobGV0ICgobiAwKSkgKGlmLXJlbD8gKGJlZ2luIChzZXQhIG4gKCsgbiAxKSkgLTEpICN0KSBu KSA9PiAxKQorICAgICAgIChteS1jaGVjayAobGV0ICgobiAwKSkgKGlmLXJlbD8gKGJlZ2luIChz ZXQhIG4gKCsgbiAxKSkgIDApICN0KSBuKSA9PiAxKQorICAgICAgIChteS1jaGVjayAobGV0ICgo biAwKSkgKGlmLXJlbD8gKGJlZ2luIChzZXQhIG4gKCsgbiAxKSkgIDEpICN0KSBuKSA9PiAxKQor ICAgICAgICkpKSkKKworKGRlZmluZSAoY2hlY2s6aWZzKQorICAKKyAgKG15LWNoZWNrLWlmMiBp Zj0/ICAgICA9KQorICAobXktY2hlY2staWYyIGlmPD8gICAgIDwpCisgIChteS1jaGVjay1pZjIg aWY+PyAgICAgPikKKyAgKG15LWNoZWNrLWlmMiBpZjw9PyAgICA8PSkKKyAgKG15LWNoZWNrLWlm MiBpZj49PyAgICA+PSkKKyAgKG15LWNoZWNrLWlmMiBpZi1ub3Q9PyAobGFtYmRhICh4IHkpIChu b3QgKD0geCB5KSkpKQorICAKKyAgKSA7IGNoZWNrOmlmMgorCis7IDw/IGV0Yy4gbWFjcm9zCisK KyhkZWZpbmUtc3ludGF4IG15LWNoZWNrLWNoYWluMgorICAoc3ludGF4LXJ1bGVzICgpCisgICAg KChteS1jaGVjay1jaGFpbjIgcmVsPyByZWwpCisgICAgIChiZWdpbgorICAgICAgIDsgYWxsIGNo YWlucyBvZiBsZW5ndGggMgorICAgICAgIChteS1jaGVjayAocmVsPyBjaSAwIDApID0+IChyZWwg MCAwKSkKKyAgICAgICAobXktY2hlY2sgKHJlbD8gY2kgMCAxKSA9PiAocmVsIDAgMSkpCisgICAg ICAgKG15LWNoZWNrIChyZWw/IGNpIDEgMCkgPT4gKHJlbCAxIDApKQorICAgICAgIAorICAgICAg IDsgdXNpbmcgZGVmYXVsdC1jb21wYXJlCisgICAgICAgKG15LWNoZWNrIChyZWw/IDAgMCkgPT4g KHJlbCAwIDApKQorICAgICAgIChteS1jaGVjayAocmVsPyAwIDEpID0+IChyZWwgMCAxKSkKKyAg ICAgICAobXktY2hlY2sgKHJlbD8gMSAwKSA9PiAocmVsIDEgMCkpCisKKyAgICAgICA7IGFzIGEg Y29tYmluYXRvcgorICAgICAgIChteS1jaGVjayAoKHJlbD8gY2kpIDAgMCkgPT4gKHJlbCAwIDAp KQorICAgICAgIChteS1jaGVjayAoKHJlbD8gY2kpIDAgMSkgPT4gKHJlbCAwIDEpKQorICAgICAg IChteS1jaGVjayAoKHJlbD8gY2kpIDEgMCkgPT4gKHJlbCAxIDApKQorCisgICAgICAgOyB1c2lu ZyBkZWZhdWx0LWNvbXBhcmUgYXMgYSBjb21iaW5hdG9yCisgICAgICAgKG15LWNoZWNrICgocmVs PykgMCAwKSA9PiAocmVsIDAgMCkpCisgICAgICAgKG15LWNoZWNrICgocmVsPykgMCAxKSA9PiAo cmVsIDAgMSkpCisgICAgICAgKG15LWNoZWNrICgocmVsPykgMSAwKSA9PiAocmVsIDEgMCkpCisg ICAgICAgKSkpKQorCisoZGVmaW5lIChsaXN0LT5zZXQgeHMpIDsgeHMgYSBsaXN0IG9mIGludGVn ZXJzCisgIChpZiAobnVsbD8geHMpCisgICAgICAnKCkKKyAgICAgIChsZXQgKChtYXgteHMKKyAg ICAgICAgICAgICAobGV0IG1heC13aXRob3V0LWFwcGx5ICgobSAxKSAoeHMgeHMpKQorICAgICAg ICAgICAgICAgKGlmIChudWxsPyB4cykKKyAgICAgICAgICAgICAgICAgICBtCisgICAgICAgICAg ICAgICAgICAgKG1heC13aXRob3V0LWFwcGx5IChtYXggbSAoY2FyIHhzKSkgKGNkciB4cykpKSkp KQorICAgICAgICAobGV0ICgoaW4teHM/IChtYWtlLXZlY3RvciAoKyBtYXgteHMgMSkgI2YpKSkK KyAgICAgICAgICAoZG8tZWMgKDpsaXN0IHggeHMpICh2ZWN0b3Itc2V0ISBpbi14cz8geCAjdCkp CisgICAgICAgICAgKGxpc3QtZWMgKDp2ZWN0b3IgaW4/IChpbmRleCB4KSBpbi14cz8pCisgICAg ICAgICAgICAgICAgICAgKGlmIGluPykKKyAgICAgICAgICAgICAgICAgICB4KSkpKSkKKworKGRl ZmluZS1zeW50YXggYXJndW1lbnRzLXVzZWQgOyBzZXQgb2YgYXJndW1lbnRzIChpbnRlZ2VyLCA+ PTApIHVzZWQgaW4gY29tcGFyZQorICAoc3ludGF4LXJ1bGVzICgpCisgICAgKChhcmd1bWVudHMt dXNlZCAocmVsMS9yZWwyIGNvbXBhcmUgYXJnIC4uLikpCisgICAgIChsZXQgKCh1c2VkICcoKSkp CisgICAgICAgKHJlbDEvcmVsMiAobGFtYmRhICh4IHkpCisgICAgICAgICAgICAgICAgICAgIChz ZXQhIHVzZWQgKGNvbnMgeCAoY29ucyB5IHVzZWQpKSkKKyAgICAgICAgICAgICAgICAgICAgKGNv bXBhcmUgeCB5KSkKKyAgICAgICAgICAgICAgICAgIGFyZyAuLi4pCisgICAgICAgKGxpc3QtPnNl dCB1c2VkKSkpKSkKKworKGRlZmluZS1zeW50YXggbXktY2hlY2stY2hhaW4zCisgIChzeW50YXgt cnVsZXMgKCkKKyAgICAoKG15LWNoZWNrLWNoYWluMyByZWwxL3JlbDI/IHJlbDEgcmVsMikKKyAg ICAgKGJlZ2luICAgICAKKyAgICAgICA7IGFsbCBjaGFpbnMgb2YgbGVuZ3RoIDMKKyAgICAgICAo bXktY2hlY2sgKHJlbDEvcmVsMj8gY2kgMCAwIDApID0+IChhbmQgKHJlbDEgMCAwKSAocmVsMiAw IDApKSkKKyAgICAgICAobXktY2hlY2sgKHJlbDEvcmVsMj8gY2kgMCAwIDEpID0+IChhbmQgKHJl bDEgMCAwKSAocmVsMiAwIDEpKSkKKyAgICAgICAobXktY2hlY2sgKHJlbDEvcmVsMj8gY2kgMCAx IDApID0+IChhbmQgKHJlbDEgMCAxKSAocmVsMiAxIDApKSkKKyAgICAgICAobXktY2hlY2sgKHJl bDEvcmVsMj8gY2kgMSAwIDApID0+IChhbmQgKHJlbDEgMSAwKSAocmVsMiAwIDApKSkKKyAgICAg ICAobXktY2hlY2sgKHJlbDEvcmVsMj8gY2kgMSAxIDApID0+IChhbmQgKHJlbDEgMSAxKSAocmVs MiAxIDApKSkKKyAgICAgICAobXktY2hlY2sgKHJlbDEvcmVsMj8gY2kgMSAwIDEpID0+IChhbmQg KHJlbDEgMSAwKSAocmVsMiAwIDEpKSkKKyAgICAgICAobXktY2hlY2sgKHJlbDEvcmVsMj8gY2kg MCAxIDEpID0+IChhbmQgKHJlbDEgMCAxKSAocmVsMiAxIDEpKSkKKyAgICAgICAobXktY2hlY2sg KHJlbDEvcmVsMj8gY2kgMCAxIDIpID0+IChhbmQgKHJlbDEgMCAxKSAocmVsMiAxIDIpKSkKKyAg ICAgICAobXktY2hlY2sgKHJlbDEvcmVsMj8gY2kgMCAyIDEpID0+IChhbmQgKHJlbDEgMCAyKSAo cmVsMiAyIDEpKSkKKyAgICAgICAobXktY2hlY2sgKHJlbDEvcmVsMj8gY2kgMSAyIDApID0+IChh bmQgKHJlbDEgMSAyKSAocmVsMiAyIDApKSkKKyAgICAgICAobXktY2hlY2sgKHJlbDEvcmVsMj8g Y2kgMSAwIDIpID0+IChhbmQgKHJlbDEgMSAwKSAocmVsMiAwIDIpKSkKKyAgICAgICAobXktY2hl Y2sgKHJlbDEvcmVsMj8gY2kgMiAwIDEpID0+IChhbmQgKHJlbDEgMiAwKSAocmVsMiAwIDEpKSkK KyAgICAgICAobXktY2hlY2sgKHJlbDEvcmVsMj8gY2kgMiAxIDApID0+IChhbmQgKHJlbDEgMiAx KSAocmVsMiAxIDApKSkKKyAgICAgICAKKyAgICAgICA7IHVzaW5nIGRlZmF1bHQtY29tcGFyZQor ICAgICAgIChteS1jaGVjayAocmVsMS9yZWwyPyAwIDAgMCkgPT4gKGFuZCAocmVsMSAwIDApIChy ZWwyIDAgMCkpKQorICAgICAgIChteS1jaGVjayAocmVsMS9yZWwyPyAwIDAgMSkgPT4gKGFuZCAo cmVsMSAwIDApIChyZWwyIDAgMSkpKQorICAgICAgIChteS1jaGVjayAocmVsMS9yZWwyPyAwIDEg MCkgPT4gKGFuZCAocmVsMSAwIDEpIChyZWwyIDEgMCkpKQorICAgICAgIChteS1jaGVjayAocmVs MS9yZWwyPyAxIDAgMCkgPT4gKGFuZCAocmVsMSAxIDApIChyZWwyIDAgMCkpKQorICAgICAgICht eS1jaGVjayAocmVsMS9yZWwyPyAxIDEgMCkgPT4gKGFuZCAocmVsMSAxIDEpIChyZWwyIDEgMCkp KQorICAgICAgIChteS1jaGVjayAocmVsMS9yZWwyPyAxIDAgMSkgPT4gKGFuZCAocmVsMSAxIDAp IChyZWwyIDAgMSkpKQorICAgICAgIChteS1jaGVjayAocmVsMS9yZWwyPyAwIDEgMSkgPT4gKGFu ZCAocmVsMSAwIDEpIChyZWwyIDEgMSkpKQorICAgICAgIChteS1jaGVjayAocmVsMS9yZWwyPyAw IDEgMikgPT4gKGFuZCAocmVsMSAwIDEpIChyZWwyIDEgMikpKQorICAgICAgIChteS1jaGVjayAo cmVsMS9yZWwyPyAwIDIgMSkgPT4gKGFuZCAocmVsMSAwIDIpIChyZWwyIDIgMSkpKQorICAgICAg IChteS1jaGVjayAocmVsMS9yZWwyPyAxIDIgMCkgPT4gKGFuZCAocmVsMSAxIDIpIChyZWwyIDIg MCkpKQorICAgICAgIChteS1jaGVjayAocmVsMS9yZWwyPyAxIDAgMikgPT4gKGFuZCAocmVsMSAx IDApIChyZWwyIDAgMikpKQorICAgICAgIChteS1jaGVjayAocmVsMS9yZWwyPyAyIDAgMSkgPT4g KGFuZCAocmVsMSAyIDApIChyZWwyIDAgMSkpKQorICAgICAgIChteS1jaGVjayAocmVsMS9yZWwy PyAyIDEgMCkgPT4gKGFuZCAocmVsMSAyIDEpIChyZWwyIDEgMCkpKQorICAgICAgIAorICAgICAg IDsgYXMgYSBjb21iaW5hdG9yCisgICAgICAgKG15LWNoZWNrICgocmVsMS9yZWwyPyBjaSkgMCAw IDApID0+IChhbmQgKHJlbDEgMCAwKSAocmVsMiAwIDApKSkKKyAgICAgICAobXktY2hlY2sgKChy ZWwxL3JlbDI/IGNpKSAwIDAgMSkgPT4gKGFuZCAocmVsMSAwIDApIChyZWwyIDAgMSkpKQorICAg ICAgIChteS1jaGVjayAoKHJlbDEvcmVsMj8gY2kpIDAgMSAwKSA9PiAoYW5kIChyZWwxIDAgMSkg KHJlbDIgMSAwKSkpCisgICAgICAgKG15LWNoZWNrICgocmVsMS9yZWwyPyBjaSkgMSAwIDApID0+ IChhbmQgKHJlbDEgMSAwKSAocmVsMiAwIDApKSkKKyAgICAgICAobXktY2hlY2sgKChyZWwxL3Jl bDI/IGNpKSAxIDEgMCkgPT4gKGFuZCAocmVsMSAxIDEpIChyZWwyIDEgMCkpKQorICAgICAgICht eS1jaGVjayAoKHJlbDEvcmVsMj8gY2kpIDEgMCAxKSA9PiAoYW5kIChyZWwxIDEgMCkgKHJlbDIg MCAxKSkpCisgICAgICAgKG15LWNoZWNrICgocmVsMS9yZWwyPyBjaSkgMCAxIDEpID0+IChhbmQg KHJlbDEgMCAxKSAocmVsMiAxIDEpKSkKKyAgICAgICAobXktY2hlY2sgKChyZWwxL3JlbDI/IGNp KSAwIDEgMikgPT4gKGFuZCAocmVsMSAwIDEpIChyZWwyIDEgMikpKQorICAgICAgIChteS1jaGVj ayAoKHJlbDEvcmVsMj8gY2kpIDAgMiAxKSA9PiAoYW5kIChyZWwxIDAgMikgKHJlbDIgMiAxKSkp CisgICAgICAgKG15LWNoZWNrICgocmVsMS9yZWwyPyBjaSkgMSAyIDApID0+IChhbmQgKHJlbDEg MSAyKSAocmVsMiAyIDApKSkKKyAgICAgICAobXktY2hlY2sgKChyZWwxL3JlbDI/IGNpKSAxIDAg MikgPT4gKGFuZCAocmVsMSAxIDApIChyZWwyIDAgMikpKQorICAgICAgIChteS1jaGVjayAoKHJl bDEvcmVsMj8gY2kpIDIgMCAxKSA9PiAoYW5kIChyZWwxIDIgMCkgKHJlbDIgMCAxKSkpCisgICAg ICAgKG15LWNoZWNrICgocmVsMS9yZWwyPyBjaSkgMiAxIDApID0+IChhbmQgKHJlbDEgMiAxKSAo cmVsMiAxIDApKSkKKworICAgICAgIDsgYXMgYSBjb21iaW5hdG9yIHVzaW5nIGRlZmF1bHQtY29t cGFyZQorICAgICAgIChteS1jaGVjayAoKHJlbDEvcmVsMj8pIDAgMCAwKSA9PiAoYW5kIChyZWwx IDAgMCkgKHJlbDIgMCAwKSkpCisgICAgICAgKG15LWNoZWNrICgocmVsMS9yZWwyPykgMCAwIDEp ID0+IChhbmQgKHJlbDEgMCAwKSAocmVsMiAwIDEpKSkKKyAgICAgICAobXktY2hlY2sgKChyZWwx L3JlbDI/KSAwIDEgMCkgPT4gKGFuZCAocmVsMSAwIDEpIChyZWwyIDEgMCkpKQorICAgICAgICht eS1jaGVjayAoKHJlbDEvcmVsMj8pIDEgMCAwKSA9PiAoYW5kIChyZWwxIDEgMCkgKHJlbDIgMCAw KSkpCisgICAgICAgKG15LWNoZWNrICgocmVsMS9yZWwyPykgMSAxIDApID0+IChhbmQgKHJlbDEg MSAxKSAocmVsMiAxIDApKSkKKyAgICAgICAobXktY2hlY2sgKChyZWwxL3JlbDI/KSAxIDAgMSkg PT4gKGFuZCAocmVsMSAxIDApIChyZWwyIDAgMSkpKQorICAgICAgIChteS1jaGVjayAoKHJlbDEv cmVsMj8pIDAgMSAxKSA9PiAoYW5kIChyZWwxIDAgMSkgKHJlbDIgMSAxKSkpCisgICAgICAgKG15 LWNoZWNrICgocmVsMS9yZWwyPykgMCAxIDIpID0+IChhbmQgKHJlbDEgMCAxKSAocmVsMiAxIDIp KSkKKyAgICAgICAobXktY2hlY2sgKChyZWwxL3JlbDI/KSAwIDIgMSkgPT4gKGFuZCAocmVsMSAw IDIpIChyZWwyIDIgMSkpKQorICAgICAgIChteS1jaGVjayAoKHJlbDEvcmVsMj8pIDEgMiAwKSA9 PiAoYW5kIChyZWwxIDEgMikgKHJlbDIgMiAwKSkpCisgICAgICAgKG15LWNoZWNrICgocmVsMS9y ZWwyPykgMSAwIDIpID0+IChhbmQgKHJlbDEgMSAwKSAocmVsMiAwIDIpKSkKKyAgICAgICAobXkt Y2hlY2sgKChyZWwxL3JlbDI/KSAyIDAgMSkgPT4gKGFuZCAocmVsMSAyIDApIChyZWwyIDAgMSkp KQorICAgICAgIChteS1jaGVjayAoKHJlbDEvcmVsMj8pIDIgMSAwKSA9PiAoYW5kIChyZWwxIDIg MSkgKHJlbDIgMSAwKSkpCisgICAgICAgCisgICAgICAgOyB0ZXN0IGlmIGFsbCBhcmd1bWVudHMg YXJlIHR5cGUgY2hlY2tlZAorICAgICAgIChteS1jaGVjayAoYXJndW1lbnRzLXVzZWQgKHJlbDEv cmVsMj8gY2kgMCAxIDIpKSA9PiAnKDAgMSAyKSkKKyAgICAgICAobXktY2hlY2sgKGFyZ3VtZW50 cy11c2VkIChyZWwxL3JlbDI/IGNpIDAgMiAxKSkgPT4gJygwIDEgMikpCisgICAgICAgKG15LWNo ZWNrIChhcmd1bWVudHMtdXNlZCAocmVsMS9yZWwyPyBjaSAxIDIgMCkpID0+ICcoMCAxIDIpKQor ICAgICAgIChteS1jaGVjayAoYXJndW1lbnRzLXVzZWQgKHJlbDEvcmVsMj8gY2kgMSAwIDIpKSA9 PiAnKDAgMSAyKSkKKyAgICAgICAobXktY2hlY2sgKGFyZ3VtZW50cy11c2VkIChyZWwxL3JlbDI/ IGNpIDIgMCAxKSkgPT4gJygwIDEgMikpCisgICAgICAgKG15LWNoZWNrIChhcmd1bWVudHMtdXNl ZCAocmVsMS9yZWwyPyBjaSAyIDEgMCkpID0+ICcoMCAxIDIpKQorICAgICAgICkpKSkKKworKGRl ZmluZS1zeW50YXggbXktY2hlY2stY2hhaW4KKyAgKHN5bnRheC1ydWxlcyAoKQorICAgICgobXkt Y2hlY2stY2hhaW4gY2hhaW4tcmVsPyByZWwpCisgICAgIChiZWdpbgorICAgICAgIDsgdGhlIGNo YWluIG9mIGxlbmd0aCAwCisgICAgICAgKG15LWNoZWNrIChjaGFpbi1yZWw/IGNpKSA9PiAjdCkK KyAgICAgICAKKyAgICAgICA7IGEgY2hhaW4gb2YgbGVuZ3RoIDEKKyAgICAgICAobXktY2hlY2sg KGNoYWluLXJlbD8gY2kgMCkgPT4gI3QpCisgICAgICAgCisgICAgICAgOyBhbGwgY2hhaW5zIG9m IGxlbmd0aCAyCisgICAgICAgKG15LWNoZWNrIChjaGFpbi1yZWw/IGNpIDAgMCkgPT4gKHJlbCAw IDApKQorICAgICAgIChteS1jaGVjayAoY2hhaW4tcmVsPyBjaSAwIDEpID0+IChyZWwgMCAxKSkK KyAgICAgICAobXktY2hlY2sgKGNoYWluLXJlbD8gY2kgMSAwKSA9PiAocmVsIDEgMCkpCisgICAg ICAgCisgICAgICAgOyBhbGwgY2hhaW5zIG9mIGxlbmd0aCAzCisgICAgICAgKG15LWNoZWNrIChj aGFpbi1yZWw/IGNpIDAgMCAwKSA9PiAocmVsIDAgMCAwKSkKKyAgICAgICAobXktY2hlY2sgKGNo YWluLXJlbD8gY2kgMCAwIDEpID0+IChyZWwgMCAwIDEpKQorICAgICAgIChteS1jaGVjayAoY2hh aW4tcmVsPyBjaSAwIDEgMCkgPT4gKHJlbCAwIDEgMCkpCisgICAgICAgKG15LWNoZWNrIChjaGFp bi1yZWw/IGNpIDEgMCAwKSA9PiAocmVsIDEgMCAwKSkKKyAgICAgICAobXktY2hlY2sgKGNoYWlu LXJlbD8gY2kgMSAxIDApID0+IChyZWwgMSAxIDApKQorICAgICAgIChteS1jaGVjayAoY2hhaW4t cmVsPyBjaSAxIDAgMSkgPT4gKHJlbCAxIDAgMSkpCisgICAgICAgKG15LWNoZWNrIChjaGFpbi1y ZWw/IGNpIDAgMSAxKSA9PiAocmVsIDAgMSAxKSkKKyAgICAgICAobXktY2hlY2sgKGNoYWluLXJl bD8gY2kgMCAxIDIpID0+IChyZWwgMCAxIDIpKQorICAgICAgIChteS1jaGVjayAoY2hhaW4tcmVs PyBjaSAwIDIgMSkgPT4gKHJlbCAwIDIgMSkpCisgICAgICAgKG15LWNoZWNrIChjaGFpbi1yZWw/ IGNpIDEgMiAwKSA9PiAocmVsIDEgMiAwKSkKKyAgICAgICAobXktY2hlY2sgKGNoYWluLXJlbD8g Y2kgMSAwIDIpID0+IChyZWwgMSAwIDIpKQorICAgICAgIChteS1jaGVjayAoY2hhaW4tcmVsPyBj aSAyIDAgMSkgPT4gKHJlbCAyIDAgMSkpCisgICAgICAgKG15LWNoZWNrIChjaGFpbi1yZWw/IGNp IDIgMSAwKSA9PiAocmVsIDIgMSAwKSkKKyAgICAgICAKKyAgICAgICA7IGNoZWNrIGlmIGFsbCBh cmd1bWVudHMgYXJlIHVzZWQKKyAgICAgICAobXktY2hlY2sgKGFyZ3VtZW50cy11c2VkIChjaGFp bi1yZWw/IGNpIDApKSA9PiAnKDApKQorICAgICAgIChteS1jaGVjayAoYXJndW1lbnRzLXVzZWQg KGNoYWluLXJlbD8gY2kgMCAxKSkgPT4gJygwIDEpKQorICAgICAgIChteS1jaGVjayAoYXJndW1l bnRzLXVzZWQgKGNoYWluLXJlbD8gY2kgMSAwKSkgPT4gJygwIDEpKQorICAgICAgIChteS1jaGVj ayAoYXJndW1lbnRzLXVzZWQgKGNoYWluLXJlbD8gY2kgMCAxIDIpKSA9PiAnKDAgMSAyKSkKKyAg ICAgICAobXktY2hlY2sgKGFyZ3VtZW50cy11c2VkIChjaGFpbi1yZWw/IGNpIDAgMiAxKSkgPT4g JygwIDEgMikpCisgICAgICAgKG15LWNoZWNrIChhcmd1bWVudHMtdXNlZCAoY2hhaW4tcmVsPyBj aSAxIDIgMCkpID0+ICcoMCAxIDIpKQorICAgICAgIChteS1jaGVjayAoYXJndW1lbnRzLXVzZWQg KGNoYWluLXJlbD8gY2kgMSAwIDIpKSA9PiAnKDAgMSAyKSkKKyAgICAgICAobXktY2hlY2sgKGFy Z3VtZW50cy11c2VkIChjaGFpbi1yZWw/IGNpIDIgMCAxKSkgPT4gJygwIDEgMikpCisgICAgICAg KG15LWNoZWNrIChhcmd1bWVudHMtdXNlZCAoY2hhaW4tcmVsPyBjaSAyIDEgMCkpID0+ICcoMCAx IDIpKQorICAgICAgICkpKSkKKworKGRlZmluZSAoY2hlY2s6cHJlZGljYXRlcy1mcm9tLWNvbXBh cmUpCisgIAorICAobXktY2hlY2stY2hhaW4yID0/ICAgID0pCisgIChteS1jaGVjay1jaGFpbjIg PD8gICAgPCkKKyAgKG15LWNoZWNrLWNoYWluMiA+PyAgICA+KQorICAobXktY2hlY2stY2hhaW4y IDw9PyAgIDw9KQorICAobXktY2hlY2stY2hhaW4yID49PyAgID49KQorICAobXktY2hlY2stY2hh aW4yIG5vdD0/IChsYW1iZGEgKHggeSkgKG5vdCAoPSB4IHkpKSkpCisgIAorICAobXktY2hlY2st Y2hhaW4zIDwvPD8gICA8ICA8KQorICAobXktY2hlY2stY2hhaW4zIDwvPD0/ICA8ICA8PSkKKyAg KG15LWNoZWNrLWNoYWluMyA8PS88PyAgPD0gPCkKKyAgKG15LWNoZWNrLWNoYWluMyA8PS88PT8g PD0gPD0pCisgIAorICAobXktY2hlY2stY2hhaW4zID4vPj8gICA+ICA+KQorICAobXktY2hlY2st Y2hhaW4zID4vPj0/ICA+ICA+PSkKKyAgKG15LWNoZWNrLWNoYWluMyA+PS8+PyAgPj0gPikKKyAg KG15LWNoZWNrLWNoYWluMyA+PS8+PT8gPj0gPj0pCisgIAorICAobXktY2hlY2stY2hhaW4gY2hh aW49PyAgPSkKKyAgKG15LWNoZWNrLWNoYWluIGNoYWluPD8gIDwpCisgIChteS1jaGVjay1jaGFp biBjaGFpbj4/ICA+KQorICAobXktY2hlY2stY2hhaW4gY2hhaW48PT8gPD0pCisgIChteS1jaGVj ay1jaGFpbiBjaGFpbj49PyA+PSkKKyAgCisgICkgOyBjaGVjazpwcmVkaWNhdGVzLWZyb20tY29t cGFyZQorCis7IHBhaXJ3aXNlLW5vdD0/CisKKyhkZWZpbmUgcGFpcndpc2Utbm90PT86bG9uZy1z ZXF1ZW5jZXMKKyAgKGxldCAoKQorICAgIAorICAgIChkZWZpbmUgKGV4dHJlbWFsLXBpdm90LXNl cXVlbmNlIHIpCisgICAgICA7IFRoZSBleHRyZW1hbCBwaXZvdCBzZXF1ZW5jZSBvZiBvcmRlciBy IGlzIGEgCisgICAgICA7IHBlcm11dGF0aW9uIG9mIHswLi4yXihyKzEpLTJ9IHN1Y2ggdGhhdCB0 aGUKKyAgICAgIDsgbWlkZGxlIGVsZW1lbnQgaXMgbWluaW1hbCwgYW5kIHRoaXMgcHJvcGVydHkK KyAgICAgIDsgaG9sZHMgcmVjdXJzaXZlbHkgZm9yIGVhY2ggYmluYXJ5IHN1YmRpdmlzaW9uLgor ICAgICAgOyAgIFRoaXMgc2VxdWVuY2UgZXhwb3NlcyBhIG5haXZlIGltcGxlbWVudGF0aW9uIG9m CisgICAgICA7IHBhaXJ3aXNlLW5vdD0/IGNob3NpbmcgdGhlIG1pZGRsZSBlbGVtZW50IGFzIHBp dm90LgorICAgICAgKGlmICh6ZXJvPyByKQorICAgICAgICAgICcoMCkKKyAgICAgICAgICAobGV0 KiAoKHMgKGV4dHJlbWFsLXBpdm90LXNlcXVlbmNlICgtIHIgMSkpKQorICAgICAgICAgICAgICAg ICAobnMgKGxlbmd0aCBzKSkpCisgICAgICAgICAgICAoYXBwZW5kIChsaXN0LWVjICg6bGlzdCB4 IHMpICgrIHggMSkpCisgICAgICAgICAgICAgICAgICAgICcoMCkKKyAgICAgICAgICAgICAgICAg ICAgKGxpc3QtZWMgKDpsaXN0IHggcykgKCsgeCBucyAxKSkpKSkpCisgICAgCisgICAgKGxpc3Qg KGxpc3QtZWMgKDogaSA0MDk2KSBpKQorICAgICAgICAgIChsaXN0LWVjICg6IGkgNDA5NyAwIC0x KSBpKQorICAgICAgICAgIChsaXN0LWVjICg6IGkgNDA5OSkgKG1vZHVsbyAoKiAxMDAzIGkpIDQw OTkpKQorICAgICAgICAgIChleHRyZW1hbC1waXZvdC1zZXF1ZW5jZSAxMSkpKSkKKworKGRlZmlu ZSBwYWlyd2lzZS1ub3Q9PzpzaG9ydC1zZXF1ZW5jZXMKKyAgKGxldCAoKQorICAgIAorICAgIChk ZWZpbmUgKGNvbWJpbmF0aW9ucy9yZXBlYXRzIG4gbCkKKyAgICAgIDsgcmV0dXJuIGxpc3Qgb2Yg YWxsIHN1Ymxpc3RzIG9mIGwgb2Ygc2l6ZSBuLAorICAgICAgOyB0aGUgb3JkZXIgb2YgdGhlIGVs ZW1lbnRzIG9jY3VyIGluIHRoZSBzdWJsaXN0cyAKKyAgICAgIDsgb2YgdGhlIG91dHB1dCBpcyB0 aGUgc2FtZSBhcyBpbiB0aGUgaW5wdXQKKyAgICAgIChsZXQgKChsZW4gKGxlbmd0aCBsKSkpCisg ICAgICAgIChjb25kCisgICAgICAgICAgKCg9IG4gMCkgICAnKCkpCisgICAgICAgICAgKCg9IG4g MSkgICAobWFwIGxpc3QgbCkpCisgICAgICAgICAgKCg9IGxlbiAxKSAoZG8gKChyICcoKSAoY29u cyAoY2FyIGwpIHIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoaSBuICgtIGkgMSkpKQor ICAgICAgICAgICAgICAgICAgICAgICAoKD0gaSAwKSAobGlzdCByKSkpKQorICAgICAgICAgIChl bHNlICAgICAgKGFwcGVuZCAoY29tYmluYXRpb25zL3JlcGVhdHMgbiAoY2RyIGwpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobWFwIChsYW1iZGEgKGMpIChjb25zIChjYXIgbCkgYykp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbWJpbmF0aW9ucy9yZXBlYXRz ICgtIG4gMSkgbCkpKSkpKSkKKyAgICAKKyAgICAoZGVmaW5lIChwZXJtdXRhdGlvbnMgbCkKKyAg ICAgIDsgcmV0dXJuIGEgbGlzdCBvZiBhbGwgcGVybXV0YXRpb25zIG9mIGwKKyAgICAgIChsZXQg KChsZW4gKGxlbmd0aCBsKSkpCisgICAgICAgIChjb25kCisgICAgICAgICAgKCg9IGxlbiAwKSAn KCgpKSkKKyAgICAgICAgICAoKD0gbGVuIDEpIChsaXN0IGwpKQorICAgICAgICAgIChlbHNlICAg ICAgKGFwcGx5IGFwcGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXAgKGxhbWJk YSAocCkgKGluc2VydC1ldmVyeS13aGVyZSAoY2FyIGwpIHApKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHBlcm11dGF0aW9ucyAoY2RyIGwpKSkpKSkpKSAgICAgIAorICAgIAor ICAgIChkZWZpbmUgKGluc2VydC1ldmVyeS13aGVyZSB4IHhzKQorICAgICAgKGxldCBsb29wICgo cmVzdWx0ICcoKSkgKGJlZm9yZSAnKCkpIChhZnRlciAgeHMpKQorICAgICAgICAobGV0ICgobmV3 IChhcHBlbmQgYmVmb3JlIChjb25zIHggYWZ0ZXIpKSkpCisgICAgICAgICAgKGNvbmQKKyAgICAg ICAgICAgICgobnVsbD8gYWZ0ZXIpIChjb25zIG5ldyByZXN1bHQpKQorICAgICAgICAgICAgKGVs c2UgICAgICAgICAgKGxvb3AgKGNvbnMgbmV3IHJlc3VsdCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChhcHBlbmQgYmVmb3JlIChsaXN0IChjYXIgYWZ0ZXIpKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChjZHIgYWZ0ZXIpKSkpKSkpIAorICAgIAorICAgIChk ZWZpbmUgKHNlcXVlbmNlcyBuIG1heCkKKyAgICAgIChhcHBseSBhcHBlbmQKKyAgICAgICAgICAg ICAobWFwIHBlcm11dGF0aW9ucworICAgICAgICAgICAgICAgICAgKGNvbWJpbmF0aW9ucy9yZXBl YXRzIG4gKGxpc3QtZWMgKDogaSBtYXgpIGkpKSkpKQorICAgIAorICAgIChhcHBlbmQtZWMgKDog biA1KSAoc2VxdWVuY2VzIG4gNSkpKSkKKworKGRlZmluZSAoY29sbGlkaW5nLWNvbXBhcmUgeCB5 KQorICAoY2kgKG1vZHVsbyB4IDMpIChtb2R1bG8geSAzKSkpCisKKyhkZWZpbmUgKG5haXZlLXBh aXJ3aXNlLW5vdD0/IGNvbXBhcmUgLiB4cykKKyAgKGxldCAoKHhzIChsaXN0LT52ZWN0b3IgeHMp KSkKKyAgICAoZXZlcnk/LWVjICg6cmFuZ2UgaSAoLSAodmVjdG9yLWxlbmd0aCB4cykgMSkpCisg ICAgICAgICAgICAgICAoOmxldCB4cy1pICh2ZWN0b3ItcmVmIHhzIGkpKQorICAgICAgICAgICAg ICAgKDpyYW5nZSBqICgrIGkgMSkgKHZlY3Rvci1sZW5ndGggeHMpKQorICAgICAgICAgICAgICAg KDpsZXQgeHMtaiAodmVjdG9yLXJlZiB4cyBqKSkKKyAgICAgICAgICAgICAgIChub3Q9PyBjb21w YXJlIHhzLWkgeHMtaikpKSkKKworKGRlZmluZSAoY2hlY2s6cGFpcndpc2Utbm90PT8pCisgIAor ICA7IDAtYXJ5LCAxLWFyeQorICAobXktY2hlY2sgKHBhaXJ3aXNlLW5vdD0/IGNpKSAgID0+ICN0 KQorICAobXktY2hlY2sgKHBhaXJ3aXNlLW5vdD0/IGNpIDApID0+ICN0KQorICAKKyAgOyAyLWFy eQorICAobXktY2hlY2sgKHBhaXJ3aXNlLW5vdD0/IGNpIDAgMCkgPT4gI2YpCisgIChteS1jaGVj ayAocGFpcndpc2Utbm90PT8gY2kgMCAxKSA9PiAjdCkKKyAgKG15LWNoZWNrIChwYWlyd2lzZS1u b3Q9PyBjaSAxIDApID0+ICN0KQorICAKKyAgOyAzLWFyeQorICAobXktY2hlY2sgKHBhaXJ3aXNl LW5vdD0/IGNpIDAgMCAwKSA9PiAjZikKKyAgKG15LWNoZWNrIChwYWlyd2lzZS1ub3Q9PyBjaSAw IDAgMSkgPT4gI2YpCisgIChteS1jaGVjayAocGFpcndpc2Utbm90PT8gY2kgMCAxIDApID0+ICNm KQorICAobXktY2hlY2sgKHBhaXJ3aXNlLW5vdD0/IGNpIDEgMCAwKSA9PiAjZikKKyAgKG15LWNo ZWNrIChwYWlyd2lzZS1ub3Q9PyBjaSAxIDEgMCkgPT4gI2YpCisgIChteS1jaGVjayAocGFpcndp c2Utbm90PT8gY2kgMSAwIDEpID0+ICNmKQorICAobXktY2hlY2sgKHBhaXJ3aXNlLW5vdD0/IGNp IDAgMSAxKSA9PiAjZikKKyAgKG15LWNoZWNrIChwYWlyd2lzZS1ub3Q9PyBjaSAwIDEgMikgPT4g I3QpCisgIChteS1jaGVjayAocGFpcndpc2Utbm90PT8gY2kgMCAyIDEpID0+ICN0KQorICAobXkt Y2hlY2sgKHBhaXJ3aXNlLW5vdD0/IGNpIDEgMiAwKSA9PiAjdCkKKyAgKG15LWNoZWNrIChwYWly d2lzZS1ub3Q9PyBjaSAxIDAgMikgPT4gI3QpCisgIChteS1jaGVjayAocGFpcndpc2Utbm90PT8g Y2kgMiAwIDEpID0+ICN0KQorICAobXktY2hlY2sgKHBhaXJ3aXNlLW5vdD0/IGNpIDIgMSAwKSA9 PiAjdCkKKyAgCisgIDsgbi1hcnksIG4gbGFyZ2U6IFswLi5uLTFdLCBbbixuLTEuLjFdLCA1Xlsw Li45Nl0gbW9kIDk3CisgIChteS1jaGVjayAoYXBwbHkgcGFpcndpc2Utbm90PT8gY2kgKGxpc3Qt ZWMgKDogaSAxMCkgaSkpID0+ICN0KQorICAobXktY2hlY2sgKGFwcGx5IHBhaXJ3aXNlLW5vdD0/ IGNpIChsaXN0LWVjICg6IGkgMTAwKSBpKSkgPT4gI3QpCisgIChteS1jaGVjayAoYXBwbHkgcGFp cndpc2Utbm90PT8gY2kgKGxpc3QtZWMgKDogaSAxMDAwKSBpKSkgPT4gI3QpCisgIAorICAobXkt Y2hlY2sgKGFwcGx5IHBhaXJ3aXNlLW5vdD0/IGNpIChsaXN0LWVjICg6IGkgMTAgMCAtMSkgaSkp ID0+ICN0KQorICAobXktY2hlY2sgKGFwcGx5IHBhaXJ3aXNlLW5vdD0/IGNpIChsaXN0LWVjICg6 IGkgMTAwIDAgLTEpIGkpKSA9PiAjdCkKKyAgKG15LWNoZWNrIChhcHBseSBwYWlyd2lzZS1ub3Q9 PyBjaSAobGlzdC1lYyAoOiBpIDEwMDAgMCAtMSkgaSkpID0+ICN0KQorICAKKyAgKG15LWNoZWNr IChhcHBseSBwYWlyd2lzZS1ub3Q9PyBjaSAKKyAgICAgICAgICAgICAgICAgICAobGlzdC1lYyAo OiBpIDk3KSAobW9kdWxvICgqIDUgaSkgOTcpKSkKKyAgICAgICAgICAgID0+ICN0KQorICAKKyAg OyBidXJ5IGFub3RoZXIgY29weSBvZiA3MiA9IDVeNTAgbW9kIDk3IGluIDVeWzAuLjk2XSBtb2Qg OTcKKyAgKG15LWNoZWNrIChhcHBseSBwYWlyd2lzZS1ub3Q9PyBjaSAKKyAgICAgICAgICAgICAg ICAgICAoYXBwZW5kIChsaXN0LWVjICg6IGkgMCAyMykgKG1vZHVsbyAoKiA1IGkpIDk3KSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICcoNzIpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAobGlzdC1lYyAoOiBpIDIzIDk3KSAobW9kdWxvICgqIDUgaSkgOTcpKSkpCisgICAgICAgICAg ICA9PiAjZikKKyAgKG15LWNoZWNrIChhcHBseSBwYWlyd2lzZS1ub3Q9PyBjaSAKKyAgICAgICAg ICAgICAgICAgICAoYXBwZW5kIChsaXN0LWVjICg6IGkgMCA3NSkgKG1vZHVsbyAoKiA1IGkpIDk3 KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICcoNzIpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAobGlzdC1lYyAoOiBpIDc1IDk3KSAobW9kdWxvICgqIDUgaSkgOTcpKSkpCisgICAg ICAgICAgICA9PiAjZikKKyAgCisgIDsgY2hlY2sgaWYgYWxsIGFyZ3VtZW50cyBhcmUgdXNlZAor ICAobXktY2hlY2sgKGFyZ3VtZW50cy11c2VkIChwYWlyd2lzZS1ub3Q9PyBjaSAwKSkgPT4gJygw KSkKKyAgKG15LWNoZWNrIChhcmd1bWVudHMtdXNlZCAocGFpcndpc2Utbm90PT8gY2kgMCAxKSkg PT4gJygwIDEpKQorICAobXktY2hlY2sgKGFyZ3VtZW50cy11c2VkIChwYWlyd2lzZS1ub3Q9PyBj aSAxIDApKSA9PiAnKDAgMSkpCisgIChteS1jaGVjayAoYXJndW1lbnRzLXVzZWQgKHBhaXJ3aXNl LW5vdD0/IGNpIDAgMiAxKSkgPT4gJygwIDEgMikpCisgIChteS1jaGVjayAoYXJndW1lbnRzLXVz ZWQgKHBhaXJ3aXNlLW5vdD0/IGNpIDEgMiAwKSkgPT4gJygwIDEgMikpCisgIChteS1jaGVjayAo YXJndW1lbnRzLXVzZWQgKHBhaXJ3aXNlLW5vdD0/IGNpIDEgMCAyKSkgPT4gJygwIDEgMikpCisg IChteS1jaGVjayAoYXJndW1lbnRzLXVzZWQgKHBhaXJ3aXNlLW5vdD0/IGNpIDIgMCAxKSkgPT4g JygwIDEgMikpCisgIChteS1jaGVjayAoYXJndW1lbnRzLXVzZWQgKHBhaXJ3aXNlLW5vdD0/IGNp IDIgMSAwKSkgPT4gJygwIDEgMikpCisgIChteS1jaGVjayAoYXJndW1lbnRzLXVzZWQgKHBhaXJ3 aXNlLW5vdD0/IGNpIDAgMCAwIDEgMCAwIDAgMiAwIDAgMCAzKSkKKyAgICAgICAgICAgID0+ICco MCAxIDIgMykpCisgIAorICA7IEd1ZXNzIGlmIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBPKG4gbG9n IG4pOgorICA7ICAgVGhlIHRlc3QgaXMgcnVuIGZvciAyXmUgcGFpcndpc2UgdW5lcXVhbCBpbnB1 dHMsIGUgPj0gMSwKKyAgOyAgIGFuZCB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIHRoZSBjb21wYXJl IHByb2NlZHVyZSBpcyBjb3VudGVkLgorICA7ICAgICBhbGwgcGFpcnM6ICAgICAgICAgIEEgPSBC aW5vbWlhbFsyXmUsIDJdID0gMl4oMiBlIC0gMSkgKiAoMSAtIDJeLWUpLgorICA7ICAgICBkaXZp ZGUgYW5kIGNvbnF1ZXI6IEQgPSBlIDJeZS4KKyAgOyAgIFNpbmNlIGFuIGltcGxlbWVudGF0aW9u IGNhbiBiZSByYW5kb21pemVkLCB0aGUgYWN0dWFsIGNvdW50IG1heQorICA7ICAgYmUgYSByYW5k b20gbnVtYmVyLiBXZSBwdXQgYSB0aHJlc2hvbGQgYXQgMTAwIGUgMl5lIGFuZCBjaG9vc2UKKyAg OyAgIGUgc3VjaCB0aGF0IEEvRCA+PSAxNTAsIGkuZS4gZSA+PSAxMi4KKyAgOyAgICAgVGhlIHRl c3QgaXMgYXBwbGllZCB0byBzZXZlcmFsIGlucHV0cyB0aGF0IGFyZSBrbm93biB0byBjYXVzZQor ICA7ICAgdHJvdWJsZSBpbiBzaW1wbGlzdGljIHNvcnRpbmcgYWxnb3JpdGhtczogKDAuLjJeZS0x KSwgKDJeZSsxLDJeZS4uMSksCisgIDsgICBhIHBzZXVkby1yYW5kb20gcGVybXV0YXRpb24sIGFu ZCBhIHNlcXVlbmNlIHdpdGggYW4gZXh0cmVtYWwgcGl2b3QKKyAgOyAgIGF0IHRoZSBjZW50ZXIg b2YgZWFjaCBzdWJzZXF1ZW5jZS4KKyAgCisgIChteS1jaGVjay1lYyAKKyAgICg6bGlzdCBpbnB1 dCBwYWlyd2lzZS1ub3Q9Pzpsb25nLXNlcXVlbmNlcykKKyAgIChsZXQgKChjb21wYXJlcyAwKSkK KyAgICAgKGFwcGx5IHBhaXJ3aXNlLW5vdD0/IAorICAgICAgICAgICAgKGxhbWJkYSAoeCB5KQor ICAgICAgICAgICAgICAoc2V0ISBjb21wYXJlcyAoKyBjb21wYXJlcyAxKSkKKyAgICAgICAgICAg ICAgKGNpIHggeSkpCisgICAgICAgICAgICBpbnB1dCkKKyAgICAgOyAgICAgKGRpc3BsYXkgY29t cGFyZXMpIChuZXdsaW5lKQorICAgICAoPCBjb21wYXJlcyAoKiAxMDAgMTIgNDA5NikpKQorICAg KGxlbmd0aCBpbnB1dCkpCisgIAorICA7IGNoZWNrIG1hbnkgc2hvcnQgc2VxdWVuY2VzCisgIAor ICAobXktY2hlY2stZWMgCisgICAoOmxpc3QgaW5wdXQgcGFpcndpc2Utbm90PT86c2hvcnQtc2Vx dWVuY2VzKQorICAgKGVxPworICAgIChhcHBseSBwYWlyd2lzZS1ub3Q9PyBjb2xsaWRpbmctY29t cGFyZSBpbnB1dCkKKyAgICAoYXBwbHkgbmFpdmUtcGFpcndpc2Utbm90PT8gY29sbGlkaW5nLWNv bXBhcmUgaW5wdXQpKQorICAgaW5wdXQpCisgIAorICA7IGNoZWNrIGlmIHRoZSBhcmd1bWVudHMg YXJlIHVzZWQgZm9yIHNob3J0IHNlcXVlbmNlcworICAKKyAgKG15LWNoZWNrLWVjIAorICAgKDps aXN0IGlucHV0IHBhaXJ3aXNlLW5vdD0/OnNob3J0LXNlcXVlbmNlcykKKyAgIChsZXQgKChhcmdz ICcoKSkpCisgICAgIChhcHBseSBwYWlyd2lzZS1ub3Q9PyAKKyAgICAgICAgICAgIChsYW1iZGEg KHggeSkKKyAgICAgICAgICAgICAgKHNldCEgYXJncyAoY29ucyB4IChjb25zIHkgYXJncykpKQor ICAgICAgICAgICAgICAoY29sbGlkaW5nLWNvbXBhcmUgeCB5KSkKKyAgICAgICAgICAgIGlucHV0 KQorICAgICAoZXF1YWw/IChsaXN0LT5zZXQgYXJncykgKGxpc3QtPnNldCBpbnB1dCkpKQorICAg aW5wdXQpCisgIAorICApIDsgY2hlY2s6cGFpcndpc2Utbm90PT8KKworCis7IG1pbi9tYXgKKwor KGRlZmluZSBtaW4vbWF4OnNlcXVlbmNlcworICAoYXBwZW5kIHBhaXJ3aXNlLW5vdD0/OnNob3J0 LXNlcXVlbmNlcworICAgICAgICAgIHBhaXJ3aXNlLW5vdD0/Omxvbmctc2VxdWVuY2VzKSkKKwor KGRlZmluZSAoY2hlY2s6bWluL21heCkKKyAgCisgIDsgYWxsIGxpc3RzIG9mIGxlbmd0aCAxLDIs MworICAobXktY2hlY2sgKG1pbi1jb21wYXJlIGNpIDApID0+IDApCisgIChteS1jaGVjayAobWlu LWNvbXBhcmUgY2kgMCAwKSA9PiAwKQorICAobXktY2hlY2sgKG1pbi1jb21wYXJlIGNpIDAgMSkg PT4gMCkKKyAgKG15LWNoZWNrIChtaW4tY29tcGFyZSBjaSAxIDApID0+IDApCisgIChteS1jaGVj ayAobWluLWNvbXBhcmUgY2kgMCAwIDApID0+IDApCisgIChteS1jaGVjayAobWluLWNvbXBhcmUg Y2kgMCAwIDEpID0+IDApCisgIChteS1jaGVjayAobWluLWNvbXBhcmUgY2kgMCAxIDApID0+IDAp CisgIChteS1jaGVjayAobWluLWNvbXBhcmUgY2kgMSAwIDApID0+IDApCisgIChteS1jaGVjayAo bWluLWNvbXBhcmUgY2kgMSAxIDApID0+IDApCisgIChteS1jaGVjayAobWluLWNvbXBhcmUgY2kg MSAwIDEpID0+IDApCisgIChteS1jaGVjayAobWluLWNvbXBhcmUgY2kgMCAxIDEpID0+IDApCisg IChteS1jaGVjayAobWluLWNvbXBhcmUgY2kgMCAxIDIpID0+IDApCisgIChteS1jaGVjayAobWlu LWNvbXBhcmUgY2kgMCAyIDEpID0+IDApCisgIChteS1jaGVjayAobWluLWNvbXBhcmUgY2kgMSAy IDApID0+IDApCisgIChteS1jaGVjayAobWluLWNvbXBhcmUgY2kgMSAwIDIpID0+IDApCisgICht eS1jaGVjayAobWluLWNvbXBhcmUgY2kgMiAwIDEpID0+IDApCisgIChteS1jaGVjayAobWluLWNv bXBhcmUgY2kgMiAxIDApID0+IDApCisgIAorICAobXktY2hlY2sgKG1heC1jb21wYXJlIGNpIDAp ID0+IDApCisgIChteS1jaGVjayAobWF4LWNvbXBhcmUgY2kgMCAwKSA9PiAwKQorICAobXktY2hl Y2sgKG1heC1jb21wYXJlIGNpIDAgMSkgPT4gMSkKKyAgKG15LWNoZWNrIChtYXgtY29tcGFyZSBj aSAxIDApID0+IDEpCisgIChteS1jaGVjayAobWF4LWNvbXBhcmUgY2kgMCAwIDApID0+IDApCisg IChteS1jaGVjayAobWF4LWNvbXBhcmUgY2kgMCAwIDEpID0+IDEpCisgIChteS1jaGVjayAobWF4 LWNvbXBhcmUgY2kgMCAxIDApID0+IDEpCisgIChteS1jaGVjayAobWF4LWNvbXBhcmUgY2kgMSAw IDApID0+IDEpCisgIChteS1jaGVjayAobWF4LWNvbXBhcmUgY2kgMSAxIDApID0+IDEpCisgICht eS1jaGVjayAobWF4LWNvbXBhcmUgY2kgMSAwIDEpID0+IDEpCisgIChteS1jaGVjayAobWF4LWNv bXBhcmUgY2kgMCAxIDEpID0+IDEpCisgIChteS1jaGVjayAobWF4LWNvbXBhcmUgY2kgMCAxIDIp ID0+IDIpCisgIChteS1jaGVjayAobWF4LWNvbXBhcmUgY2kgMCAyIDEpID0+IDIpCisgIChteS1j aGVjayAobWF4LWNvbXBhcmUgY2kgMSAyIDApID0+IDIpCisgIChteS1jaGVjayAobWF4LWNvbXBh cmUgY2kgMSAwIDIpID0+IDIpCisgIChteS1jaGVjayAobWF4LWNvbXBhcmUgY2kgMiAwIDEpID0+ IDIpCisgIChteS1jaGVjayAobWF4LWNvbXBhcmUgY2kgMiAxIDApID0+IDIpCisgIAorICA7IGNo ZWNrIHRoYXQgdGhlIGZpcnN0IG1pbmltYWwgdmFsdWUgaXMgcmV0dXJuZWQKKyAgKG15LWNoZWNr IChtaW4tY29tcGFyZSAocGFpci1jb21wYXJlLWNhciBjaSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAnKDAgMSkgJygwIDIpICcoMCAzKSkKKyAgICAgICAgICAgID0+ICcoMCAxKSkKKyAgKG15 LWNoZWNrIChtYXgtY29tcGFyZSAocGFpci1jb21wYXJlLWNhciBjaSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAnKDAgMSkgJygwIDIpICcoMCAzKSkKKyAgICAgICAgICAgID0+ICcoMCAxKSkK KyAgCisgIDsgY2hlY2sgZm9yIG1hbnkgaW5wdXRzCisgIChteS1jaGVjay1lYyAKKyAgICg6bGlz dCBpbnB1dCBtaW4vbWF4OnNlcXVlbmNlcykKKyAgICg9IChhcHBseSBtaW4tY29tcGFyZSBjaSBp bnB1dCkKKyAgICAgIChhcHBseSBtaW4gKGFwcGx5IG1heCBpbnB1dCkgaW5wdXQpKQorICAgaW5w dXQpCisgIChteS1jaGVjay1lYyAKKyAgICg6bGlzdCBpbnB1dCBtaW4vbWF4OnNlcXVlbmNlcykK KyAgICg9IChhcHBseSBtYXgtY29tcGFyZSBjaSBpbnB1dCkKKyAgICAgIChhcHBseSBtYXggKGFw cGx5IG1pbiBpbnB1dCkgaW5wdXQpKQorICAgaW5wdXQpCisgIDsgTm90ZSB0aGUgc3R1cGlkIGV4 dHJhIGFyZ3VtZW50IGluIHRoZSBhcHBseSBmb3IKKyAgOyB0aGUgc3RhbmRhcmQgbWluL21heCBt YWtlcyBzdXJlIHRoZSBlbGVtZW50cyBhcmUKKyAgOyBpZGVudGljYWwgd2hlbiBhcHBseSB0cnVu Y2F0ZXMgdGhlIGFyZ2xpc3QuCisgIAorICApIDsgY2hlY2s6bWluL21heAorCisKKzsga3RoLWxh cmdlc3QKKworKGRlZmluZSBrdGgtbGFyZ2VzdDpzZXF1ZW5jZXMKKyAgcGFpcndpc2Utbm90PT86 c2hvcnQtc2VxdWVuY2VzKQorCisoZGVmaW5lIChuYWl2ZS1rdGgtbGFyZ2VzdCBjb21wYXJlIGsg LiB4cykKKyAgKGxldCAoKHZlYyAobGlzdC0+dmVjdG9yIHhzKSkpCisgICAgOyBidWJibGUgc29y dDogc2ltcGxlLCBzdGFibGUsIE8ofHhzfF4yKQorICAgIChkby1lYyAoOnJhbmdlIG4gKC0gKHZl Y3Rvci1sZW5ndGggdmVjKSAxKSkKKyAgICAgICAgICAgKDpyYW5nZSBpIDAgKC0gKC0gKHZlY3Rv ci1sZW5ndGggdmVjKSAxKSBuKSkKKyAgICAgICAgICAgKGlmPj8gKGNvbXBhcmUgKHZlY3Rvci1y ZWYgdmVjIGkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3ItcmVmIHZlYyAoKyBp IDEpKSkKKyAgICAgICAgICAgICAgICAgKGxldCAoKHZlYy1pICh2ZWN0b3ItcmVmIHZlYyBpKSkp CisgICAgICAgICAgICAgICAgICAgKHZlY3Rvci1zZXQhIHZlYyBpICh2ZWN0b3ItcmVmIHZlYyAo KyBpIDEpKSkKKyAgICAgICAgICAgICAgICAgICAodmVjdG9yLXNldCEgdmVjICgrIGkgMSkgdmVj LWkpKSkpCisgICAgKHZlY3Rvci1yZWYgdmVjIChtb2R1bG8gayAodmVjdG9yLWxlbmd0aCB2ZWMp KSkpKQorCisoZGVmaW5lIChjaGVjazprdGgtbGFyZ2VzdCkKKyAgCisgIDsgY2hlY2sgZXh0ZW5z aXZlbHkgYWdhaW5zdCBuYWl2ZS1rdGgtbGFyZ2VzdAorICAobXktY2hlY2stZWMgCisgICAoOmxp c3QgaW5wdXQga3RoLWxhcmdlc3Q6c2VxdWVuY2VzKQorICAgKDogayAoLSAtMiAobGVuZ3RoIGlu cHV0KSkgKCsgKGxlbmd0aCBpbnB1dCkgMikpCisgICAoPSAoYXBwbHkgbmFpdmUta3RoLWxhcmdl c3QgY29sbGlkaW5nLWNvbXBhcmUgayBpbnB1dCkKKyAgICAgIChhcHBseSBrdGgtbGFyZ2VzdCBj b2xsaWRpbmctY29tcGFyZSBrIGlucHV0KSkKKyAgIChsaXN0IGlucHV0IGspKQorICAKKyAgKSA7 Y2hlY2s6a3RoLWxhcmdlc3QKKworOyBjb21wYXJlLWJ5PCBldGMuIHByb2NlZHVyZXMKKworKGRl ZmluZSAoY2hlY2s6Y29tcGFyZS1mcm9tLXByZWRpY2F0ZXMpCisgIAorICAobXktY2hlY2stY29t cGFyZQorICAgKGNvbXBhcmUtYnk8IDwpCisgICBteS1pbnRlZ2VycykKKyAgCisgIChteS1jaGVj ay1jb21wYXJlCisgICAoY29tcGFyZS1ieT4gPikKKyAgIG15LWludGVnZXJzKQorICAKKyAgKG15 LWNoZWNrLWNvbXBhcmUKKyAgIChjb21wYXJlLWJ5PD0gPD0pCisgICBteS1pbnRlZ2VycykKKyAg CisgIChteS1jaGVjay1jb21wYXJlCisgICAoY29tcGFyZS1ieT49ID49KQorICAgbXktaW50ZWdl cnMpCisgIAorICAobXktY2hlY2stY29tcGFyZQorICAgKGNvbXBhcmUtYnk9LzwgPSA8KQorICAg bXktaW50ZWdlcnMpCisgIAorICAobXktY2hlY2stY29tcGFyZQorICAgKGNvbXBhcmUtYnk9Lz4g PSA+KQorICAgbXktaW50ZWdlcnMpCisgIAorICA7IHdpdGggZXhwbGljaXQgYXJndW1lbnRzCisK KyAgKG15LWNoZWNrLWNvbXBhcmUKKyAgIChsYW1iZGEgKHggeSkgKGNvbXBhcmUtYnk8IDwgeCB5 KSkKKyAgIG15LWludGVnZXJzKQorICAKKyAgKG15LWNoZWNrLWNvbXBhcmUKKyAgIChsYW1iZGEg KHggeSkgKGNvbXBhcmUtYnk+ID4geCB5KSkKKyAgIG15LWludGVnZXJzKQorICAKKyAgKG15LWNo ZWNrLWNvbXBhcmUKKyAgIChsYW1iZGEgKHggeSkgKGNvbXBhcmUtYnk8PSA8PSB4IHkpKQorICAg bXktaW50ZWdlcnMpCisgIAorICAobXktY2hlY2stY29tcGFyZQorICAgKGxhbWJkYSAoeCB5KSAo Y29tcGFyZS1ieT49ID49IHggeSkpCisgICBteS1pbnRlZ2VycykKKyAgCisgIChteS1jaGVjay1j b21wYXJlCisgICAobGFtYmRhICh4IHkpIChjb21wYXJlLWJ5PS88ID0gPCB4IHkpKQorICAgbXkt aW50ZWdlcnMpCisgIAorICAobXktY2hlY2stY29tcGFyZQorICAgKGxhbWJkYSAoeCB5KSAoY29t cGFyZS1ieT0vPiA9ID4geCB5KSkKKyAgIG15LWludGVnZXJzKQorICAKKyAgKSA7IGNoZWNrOmNv bXBhcmUtZnJvbS1wcmVkaWNhdGVzCisKKworKGRlZmluZSAoY2hlY2s6YXRvbWljKQorICAKKyAg KG15LWNoZWNrLWNvbXBhcmUgYm9vbGVhbi1jb21wYXJlICAgbXktYm9vbGVhbnMpCisgIAorICAo bXktY2hlY2stY29tcGFyZSBjaGFyLWNvbXBhcmUgICAgICBteS1jaGFycykKKyAgCisgIChteS1j aGVjay1jb21wYXJlIGNoYXItY29tcGFyZS1jaSAgIG15LWNoYXJzLWNpKQorICAKKyAgKG15LWNo ZWNrLWNvbXBhcmUgc3RyaW5nLWNvbXBhcmUgICAgbXktc3RyaW5ncykKKyAgCisgIChteS1jaGVj ay1jb21wYXJlIHN0cmluZy1jb21wYXJlLWNpIG15LXN0cmluZ3MtY2kpCisgIAorICAobXktY2hl Y2stY29tcGFyZSBzeW1ib2wtY29tcGFyZSAgICBteS1zeW1ib2xzKQorICAKKyAgKG15LWNoZWNr LWNvbXBhcmUgaW50ZWdlci1jb21wYXJlICAgbXktaW50ZWdlcnMpCisgIAorICAobXktY2hlY2st Y29tcGFyZSByYXRpb25hbC1jb21wYXJlICBteS1yYXRpb25hbHMpCisgIAorICAobXktY2hlY2st Y29tcGFyZSByZWFsLWNvbXBhcmUgICAgICBteS1yZWFscykKKyAgCisgIChteS1jaGVjay1jb21w YXJlIGNvbXBsZXgtY29tcGFyZSAgIG15LWNvbXBsZXhlcykKKyAgCisgIChteS1jaGVjay1jb21w YXJlIG51bWJlci1jb21wYXJlICAgIG15LWNvbXBsZXhlcykKKyAgCisgICkgOyBjaGVjazphdG9t aWMKKworKGRlZmluZSAoY2hlY2s6cmVmaW5lLXNlbGVjdC1jb25kKQorICAKKyAgOyByZWZpbmUt Y29tcGFyZQorICAKKyAgKG15LWNoZWNrLWNvbXBhcmUKKyAgIChsYW1iZGEgKHggeSkgKHJlZmlu ZS1jb21wYXJlKSkKKyAgICcoI2YpKQorICAKKyAgKG15LWNoZWNrLWNvbXBhcmUKKyAgIChsYW1i ZGEgKHggeSkgKHJlZmluZS1jb21wYXJlIChpbnRlZ2VyLWNvbXBhcmUgeCB5KSkpCisgICBteS1p bnRlZ2VycykKKyAgCisgIChteS1jaGVjay1jb21wYXJlCisgICAobGFtYmRhICh4IHkpCisgICAg IChyZWZpbmUtY29tcGFyZSAoaW50ZWdlci1jb21wYXJlIChjYXIgeCkgKGNhciB5KSkKKyAgICAg ICAgICAgICAgICAgICAgIChzeW1ib2wtY29tcGFyZSAgKGNkciB4KSAoY2RyIHkpKSkpCisgICAn KCgxIC4gYSkgKDEgLiBiKSAoMiAuIGIpICgyIC4gYykgKDMgLiBhKSAoMyAuIGMpKSkKKyAgCisg IChteS1jaGVjay1jb21wYXJlCisgICAobGFtYmRhICh4IHkpCisgICAgIChyZWZpbmUtY29tcGFy ZSAoaW50ZWdlci1jb21wYXJlIChjYXIgICB4KSAoY2FyICAgeSkpCisgICAgICAgICAgICAgICAg ICAgICAoc3ltYm9sLWNvbXBhcmUgIChjYWRyICB4KSAoY2FkciAgeSkpCisgICAgICAgICAgICAg ICAgICAgICAoc3RyaW5nLWNvbXBhcmUgIChjYWRkciB4KSAoY2FkZHIgeSkpKSkKKyAgICcoKDEg YSAiYSIpICgxIGIgImEiKSAoMSBiICJiIikgKDIgYiAiYyIpICgyIGMgImEiKSAoMyBhICJiIikg KDMgYyAiYiIpKSkKKyAgCisgIDsgc2VsZWN0LWNvbXBhcmUKKyAgCisgIChteS1jaGVjay1jb21w YXJlCisgICAobGFtYmRhICh4IHkpIChzZWxlY3QtY29tcGFyZSB4IHkpKQorICAgJygjZikpCisg IAorICAobXktY2hlY2stY29tcGFyZQorICAgKGxhbWJkYSAoeCB5KQorICAgICAoc2VsZWN0LWNv bXBhcmUgeCB5IAorICAgICAgICAgICAgICAgICAgICAgKGludGVnZXI/IChjaSB4IHkpKSkpCisg ICBteS1pbnRlZ2VycykKKyAgCisgIChteS1jaGVjay1jb21wYXJlCisgICAobGFtYmRhICh4IHkp CisgICAgIChzZWxlY3QtY29tcGFyZSB4IHkgCisgICAgICAgICAgICAgICAgICAgICAocGFpcj8g KGludGVnZXItY29tcGFyZSAoY2FyIHgpIChjYXIgeSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHN5bWJvbC1jb21wYXJlICAoY2RyIHgpIChjZHIgeSkpKSkpCisgICAnKCgxIC4gYSkg KDEgLiBiKSAoMiAuIGIpICgyIC4gYykgKDMgLiBhKSAoMyAuIGMpKSkKKyAgCisgIChteS1jaGVj ay1jb21wYXJlCisgICAobGFtYmRhICh4IHkpCisgICAgIChzZWxlY3QtY29tcGFyZSB4IHkgCisg ICAgICAgICAgICAgICAgICAgICAoZWxzZSAoaW50ZWdlci1jb21wYXJlIHggeSkpKSkKKyAgIG15 LWludGVnZXJzKQorICAKKyAgKG15LWNoZWNrLWNvbXBhcmUKKyAgIChsYW1iZGEgKHggeSkKKyAg ICAgKHNlbGVjdC1jb21wYXJlIHggeSAKKyAgICAgICAgICAgICAgICAgICAgIChlbHNlIChpbnRl Z2VyLWNvbXBhcmUgKGNhciB4KSAoY2FyIHkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg KHN5bWJvbC1jb21wYXJlICAoY2RyIHgpIChjZHIgeSkpKSkpCisgICAnKCgxIC4gYSkgKDEgLiBi KSAoMiAuIGIpICgyIC4gYykgKDMgLiBhKSAoMyAuIGMpKSkKKyAgCisgIChteS1jaGVjay1jb21w YXJlCisgICAobGFtYmRhICh4IHkpCisgICAgIChzZWxlY3QtY29tcGFyZSB4IHkKKyAgICAgICAg ICAgICAgICAgICAgIChzeW1ib2w/IChzeW1ib2wtY29tcGFyZSB4IHkpKQorICAgICAgICAgICAg ICAgICAgICAgKHN0cmluZz8gKHN0cmluZy1jb21wYXJlIHggeSkpKSkKKyAgICcoYSBiIGMgImEi ICJiIiAiYyIgMSkpIDsgaW1wbGljaXQgKGVsc2UgMCkKKyAgCisgIChteS1jaGVjay1jb21wYXJl CisgICAobGFtYmRhICh4IHkpCisgICAgIChzZWxlY3QtY29tcGFyZSB4IHkKKyAgICAgICAgICAg ICAgICAgICAgIChzeW1ib2w/IChzeW1ib2wtY29tcGFyZSB4IHkpKQorICAgICAgICAgICAgICAg ICAgICAgKGVsc2UgICAgKHN0cmluZy1jb21wYXJlIHggeSkpKSkKKyAgICcoYSBiIGMgImEiICJi IiAiYyIpKQorICAKKyAgOyB0ZXN0IGlmIGFyZ3VtZW50cyBhcmUgb25seSBldmFsdWF0ZWQgb25j ZQorICAKKyAgKG15LWNoZWNrCisgICAobGV0ICgobnggMCkgKG55IDApIChudCAwKSkKKyAgICAg KHNlbGVjdC1jb21wYXJlIChiZWdpbiAoc2V0ISBueCAoKyBueCAxKSkgMSkKKyAgICAgICAgICAg ICAgICAgICAgIChiZWdpbiAoc2V0ISBueSAoKyBueSAxKSkgMikKKyAgICAgICAgICAgICAgICAg ICAgICgobGFtYmRhICh6KSAoc2V0ISBudCAoKyBudCAgIDEpKSAjZikgMCkKKyAgICAgICAgICAg ICAgICAgICAgICgobGFtYmRhICh6KSAoc2V0ISBudCAoKyBudCAgMTApKSAjZikgMCkKKyAgICAg ICAgICAgICAgICAgICAgICgobGFtYmRhICh6KSAoc2V0ISBudCAoKyBudCAxMDApKSAjZikgMCkK KyAgICAgICAgICAgICAgICAgICAgIChlbHNlIDApKQorICAgICAobGlzdCBueCBueSBudCkpCisg ICA9PiAnKDEgMSAyMjIpKQorICAKKyAgOyBjb25kLWNvbXBhcmUKKyAgCisgIChteS1jaGVjay1j b21wYXJlCisgICAobGFtYmRhICh4IHkpIChjb25kLWNvbXBhcmUpKQorICAgJygjZikpCisgIAor ICAobXktY2hlY2stY29tcGFyZQorICAgKGxhbWJkYSAoeCB5KSAKKyAgICAgKGNvbmQtY29tcGFy ZSAKKyAgICAgICgoKGludGVnZXI/IHgpIChpbnRlZ2VyPyB5KSkgKGludGVnZXItY29tcGFyZSB4 IHkpKSkpCisgICBteS1pbnRlZ2VycykKKyAgCisgIChteS1jaGVjay1jb21wYXJlCisgICAobGFt YmRhICh4IHkpIAorICAgICAoY29uZC1jb21wYXJlIAorICAgICAgKCgocGFpcj8geCkgKHBhaXI/ IHkpKSAoaW50ZWdlci1jb21wYXJlIChjYXIgeCkgKGNhciB5KSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHN5bWJvbC1jb21wYXJlICAoY2RyIHgpIChjZHIgeSkpKSkpCisgICAnKCgx IC4gYSkgKDEgLiBiKSAoMiAuIGIpICgyIC4gYykgKDMgLiBhKSAoMyAuIGMpKSkKKyAgCisgICht eS1jaGVjay1jb21wYXJlCisgICAobGFtYmRhICh4IHkpCisgICAgIChjb25kLWNvbXBhcmUKKyAg ICAgIChlbHNlIChpbnRlZ2VyLWNvbXBhcmUgeCB5KSkpKQorICAgbXktaW50ZWdlcnMpCisgIAor ICAobXktY2hlY2stY29tcGFyZQorICAgKGxhbWJkYSAoeCB5KSAKKyAgICAgKGNvbmQtY29tcGFy ZSAKKyAgICAgIChlbHNlIChpbnRlZ2VyLWNvbXBhcmUgKGNhciB4KSAoY2FyIHkpKQorICAgICAg ICAgICAgKHN5bWJvbC1jb21wYXJlICAoY2RyIHgpIChjZHIgeSkpKSkpCisgICAnKCgxIC4gYSkg KDEgLiBiKSAoMiAuIGIpICgyIC4gYykgKDMgLiBhKSAoMyAuIGMpKSkKKyAgCisgIChteS1jaGVj ay1jb21wYXJlCisgICAobGFtYmRhICh4IHkpCisgICAgIChjb25kLWNvbXBhcmUgCisgICAgICAo KChzeW1ib2w/IHgpIChzeW1ib2w/IHkpKSAoc3ltYm9sLWNvbXBhcmUgeCB5KSkKKyAgICAgICgo KHN0cmluZz8geCkgKHN0cmluZz8geSkpIChzdHJpbmctY29tcGFyZSB4IHkpKSkpCisgICAnKGEg YiBjICJhIiAiYiIgImMiIDEpKSA7IGltcGxpY2l0IChlbHNlIDApCisgIAorICAobXktY2hlY2st Y29tcGFyZQorICAgKGxhbWJkYSAoeCB5KQorICAgICAoY29uZC1jb21wYXJlIAorICAgICAgKCgo c3ltYm9sPyB4KSAoc3ltYm9sPyB5KSkgKHN5bWJvbC1jb21wYXJlIHggeSkpCisgICAgICAoZWxz ZSAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWNvbXBhcmUgeCB5KSkpKQorICAgJyhhIGIg YyAiYSIgImIiICJjIikpCisgIAorICApIDsgY2hlY2s6cmVmaW5lLXNlbGVjdC1jb25kCisKKwor OyBXZSBkZWZpbmUgb3VyIG93biBsaXN0L3ZlY3RvciBkYXRhIHN0cnVjdHVyZQorOyBhcyAnKG15 LWxpc3QgeFsxXSAuLiB4W25dKSwgbiA+PSAwLCBpbiBvcmRlcgorOyB0byBtYWtlIHN1cmUgdGhl IGRlZmF1bHQgb3BzIGRvbid0IHdvcmsgb24gaXQuCisKKyhkZWZpbmUgKG15LWxpc3QtY2hlY2tl ZCBvYmopIAorICAoaWYgKGFuZCAobGlzdD8gb2JqKSAoZXF2PyAoY2FyIG9iaikgJ215LWxpc3Qp KQorICAgICAgb2JqCisgICAgICAoZXJyb3IgImV4cGVjdGVkIG15LWxpc3QgYnV0IHJlY2VpdmVk IiBvYmopKSkKKworKGRlZmluZSAobGlzdC0+bXktbGlzdCBsaXN0KSAoY29ucyAnbXktbGlzdCBs aXN0KSkKKyhkZWZpbmUgKG15LWVtcHR5PyB4KSAgICAgICAgKG51bGw/IChjZHIgKG15LWxpc3Qt Y2hlY2tlZCB4KSkpKQorKGRlZmluZSAobXktaGVhZCB4KSAgICAgICAgICAoY2FkciAobXktbGlz dC1jaGVja2VkIHgpKSkKKyhkZWZpbmUgKG15LXRhaWwgeCkgICAgICAgICAgKGNvbnMgJ215LWxp c3QgKGNkZHIgKG15LWxpc3QtY2hlY2tlZCB4KSkpKQorKGRlZmluZSAobXktc2l6ZSB4KSAgICAg ICAgICAoLSAobGVuZ3RoIChteS1saXN0LWNoZWNrZWQgeCkpIDEpKQorKGRlZmluZSAobXktcmVm IHggaSkgICAgICAgICAobGlzdC1yZWYgKG15LWxpc3QtY2hlY2tlZCB4KSAoKyBpIDEpKSkKKwor KGRlZmluZSAoY2hlY2s6ZGF0YS1zdHJ1Y3R1cmVzKQorICAKKyAgKG15LWNoZWNrLWNvbXBhcmUK KyAgIChwYWlyLWNvbXBhcmUtY2FyIGNpKQorICAgJygoMSAuIGIpICgyIC4gYSkgKDMgLiBjKSkp CisgIAorICAobXktY2hlY2stY29tcGFyZQorICAgKHBhaXItY29tcGFyZS1jZHIgY2kpCisgICAn KChiIC4gMSkgKGEgLiAyKSAoYyAuIDMpKSkKKyAgCisgIDsgcGFpci1jb21wYXJlCisgIAorICAo bXktY2hlY2stY29tcGFyZSBwYWlyLWNvbXBhcmUgbXktbnVsbC1vci1wYWlycykKKyAgCisgICht eS1jaGVjay1jb21wYXJlCisgICAobGFtYmRhICh4IHkpIChwYWlyLWNvbXBhcmUgY2kgeCB5KSkK KyAgIG15LW51bGwtb3ItcGFpcnMpCisgIAorICAobXktY2hlY2stY29tcGFyZQorICAgKGxhbWJk YSAoeCB5KSAocGFpci1jb21wYXJlIGNpIHN5bWJvbC1jb21wYXJlIHggeSkpCisgICAnKCgxIC4g YSkgKDEgLiBiKSAoMiAuIGIpICgyIC4gYykgKDMgLiBhKSkpCisgIAorICA7IGxpc3QtY29tcGFy ZQorICAKKyAgKG15LWNoZWNrLWNvbXBhcmUgbGlzdC1jb21wYXJlIG15LWxpc3RzKQorICAKKyAg KG15LWNoZWNrLWNvbXBhcmUKKyAgIChsYW1iZGEgKHggeSkgKGxpc3QtY29tcGFyZSBjaSB4IHkp KQorICAgbXktbGlzdHMpCisgIAorICAobXktY2hlY2stY29tcGFyZQorICAgKGxhbWJkYSAoeCB5 KSAobGlzdC1jb21wYXJlIHggeSBteS1lbXB0eT8gbXktaGVhZCBteS10YWlsKSkKKyAgIChtYXAg bGlzdC0+bXktbGlzdCBteS1saXN0cykpCisgIAorICAobXktY2hlY2stY29tcGFyZQorICAgKGxh bWJkYSAoeCB5KSAobGlzdC1jb21wYXJlIGNpIHggeSBteS1lbXB0eT8gbXktaGVhZCBteS10YWls KSkKKyAgIChtYXAgbGlzdC0+bXktbGlzdCBteS1saXN0cykpCisgIAorICA7IGxpc3QtY29tcGFy ZS1hcy12ZWN0b3IKKyAgCisgIChteS1jaGVjay1jb21wYXJlIGxpc3QtY29tcGFyZS1hcy12ZWN0 b3IgbXktbGlzdC1hcy12ZWN0b3JzKQorICAKKyAgKG15LWNoZWNrLWNvbXBhcmUKKyAgIChsYW1i ZGEgKHggeSkgKGxpc3QtY29tcGFyZS1hcy12ZWN0b3IgY2kgeCB5KSkKKyAgIG15LWxpc3QtYXMt dmVjdG9ycykKKyAgCisgIChteS1jaGVjay1jb21wYXJlCisgICAobGFtYmRhICh4IHkpIChsaXN0 LWNvbXBhcmUtYXMtdmVjdG9yIHggeSBteS1lbXB0eT8gbXktaGVhZCBteS10YWlsKSkKKyAgICht YXAgbGlzdC0+bXktbGlzdCBteS1saXN0LWFzLXZlY3RvcnMpKQorICAKKyAgKG15LWNoZWNrLWNv bXBhcmUKKyAgIChsYW1iZGEgKHggeSkgKGxpc3QtY29tcGFyZS1hcy12ZWN0b3IgY2kgeCB5IG15 LWVtcHR5PyBteS1oZWFkIG15LXRhaWwpKQorICAgKG1hcCBsaXN0LT5teS1saXN0IG15LWxpc3Qt YXMtdmVjdG9ycykpCisgIAorICA7IHZlY3Rvci1jb21wYXJlCisgIAorICAobXktY2hlY2stY29t cGFyZSB2ZWN0b3ItY29tcGFyZSBteS12ZWN0b3JzKQorICAKKyAgKG15LWNoZWNrLWNvbXBhcmUK KyAgIChsYW1iZGEgKHggeSkgKHZlY3Rvci1jb21wYXJlIGNpIHggeSkpCisgICBteS12ZWN0b3Jz KQorICAKKyAgKG15LWNoZWNrLWNvbXBhcmUKKyAgIChsYW1iZGEgKHggeSkgKHZlY3Rvci1jb21w YXJlIHggeSBteS1zaXplIG15LXJlZikpCisgICAobWFwIGxpc3QtPm15LWxpc3QgbXktbGlzdC1h cy12ZWN0b3JzKSkKKyAgCisgIChteS1jaGVjay1jb21wYXJlCisgICAobGFtYmRhICh4IHkpICh2 ZWN0b3ItY29tcGFyZSBjaSB4IHkgbXktc2l6ZSBteS1yZWYpKQorICAgKG1hcCBsaXN0LT5teS1s aXN0IG15LWxpc3QtYXMtdmVjdG9ycykpCisgIAorICA7IHZlY3Rvci1jb21wYXJlLWFzLWxpc3QK KyAgCisgIChteS1jaGVjay1jb21wYXJlIHZlY3Rvci1jb21wYXJlLWFzLWxpc3QgbXktdmVjdG9y LWFzLWxpc3RzKQorICAKKyAgKG15LWNoZWNrLWNvbXBhcmUKKyAgIChsYW1iZGEgKHggeSkgKHZl Y3Rvci1jb21wYXJlLWFzLWxpc3QgY2kgeCB5KSkKKyAgIG15LXZlY3Rvci1hcy1saXN0cykKKyAg CisgIChteS1jaGVjay1jb21wYXJlCisgICAobGFtYmRhICh4IHkpICh2ZWN0b3ItY29tcGFyZS1h cy1saXN0IHggeSBteS1zaXplIG15LXJlZikpCisgICAobWFwIGxpc3QtPm15LWxpc3QgbXktbGlz dHMpKQorICAKKyAgKG15LWNoZWNrLWNvbXBhcmUKKyAgIChsYW1iZGEgKHggeSkgKHZlY3Rvci1j b21wYXJlLWFzLWxpc3QgY2kgeCB5IG15LXNpemUgbXktcmVmKSkKKyAgIChtYXAgbGlzdC0+bXkt bGlzdCBteS1saXN0cykpCisgIAorICApIDsgY2hlY2s6ZGF0YS1zdHJ1Y3R1cmVzCisKKworKGRl ZmluZSAoY2hlY2s6ZGVmYXVsdC1jb21wYXJlKQorICAKKyAgKG15LWNoZWNrLWNvbXBhcmUgZGVm YXVsdC1jb21wYXJlIG15LW9iamVjdHMpCisgIAorICA7IGNoZWNrIGlmIGRlZmF1bHQtY29tcGFy ZSByZWZpbmVzIHBhaXItY29tcGFyZQorICAKKyAgKG15LWNoZWNrLWVjCisgICAoOmxpc3QgeCAo aW5kZXggaXgpIG15LW9iamVjdHMpCisgICAoOmxpc3QgeSAoaW5kZXggaXkpIG15LW9iamVjdHMp CisgICAoOmxldCBjLWNvYXJzZSAocGFpci1jb21wYXJlIHggeSkpCisgICAoOmxldCBjLWZpbmUg KGRlZmF1bHQtY29tcGFyZSB4IHkpKQorICAgKG9yIChlcXY/IGMtY29hcnNlIDApIChlcXY/IGMt ZmluZSBjLWNvYXJzZSkpCisgICAobGlzdCB4IHkpKQorICAKKyAgOyBjaGVjayBpZiBkZWZhdWx0 LWNvbXBhcmUgcGFzc2VzIG9uIGRlYnVnLWNvbXBhcmUKKyAgCisgIChteS1jaGVjay1jb21wYXJl IChkZWJ1Zy1jb21wYXJlIGRlZmF1bHQtY29tcGFyZSkgbXktb2JqZWN0cykKKyAgCisgICkgOyBj aGVjazpkZWZhdWx0LWNvbXBhcmUKKworCisoZGVmaW5lIChzb3J0LWJ5LWxlc3MgeHMgcHJlZCkg OyB0cml2aWFsIHF1aWNrc29ydAorICAoaWYgKG9yIChudWxsPyB4cykgKG51bGw/IChjZHIgeHMp KSkKKyAgICAgIHhzCisgICAgICAoYXBwZW5kIAorICAgICAgIChzb3J0LWJ5LWxlc3MgKGxpc3Qt ZWMgKDpsaXN0IHggKGNkciB4cykpCisJCQkgICAgICAoaWYgKHByZWQgeCAoY2FyIHhzKSkpIAor CQkJICAgICAgeCkgCisJCSAgICAgcHJlZCkKKyAgICAgICAobGlzdCAoY2FyIHhzKSkKKyAgICAg ICAoc29ydC1ieS1sZXNzIChsaXN0LWVjICg6bGlzdCB4IChjZHIgeHMpKQorCQkJICAgICAgKGlm IChub3QgKHByZWQgeCAoY2FyIHhzKSkpKQorCQkJICAgICAgeCkgCisJCSAgICAgcHJlZCkpKSkK KworKGRlZmluZSAoY2hlY2s6bW9yZS1leGFtcGxlcykKKyAgCisgIDsgZGVmaW5lIHJlY3Vyc2l2 ZSBvcmRlciBvbiB0cmVlIHR5cGUgKG5vZGVzIGFyZSBkb3R0ZWQgcGFpcnMpCisgIAorICAobXkt Y2hlY2stY29tcGFyZQorICAgKGxldHJlYyAoKGMgKGxhbWJkYSAoeCB5KQorICAgICAgICAgICAg ICAgICAoY29uZC1jb21wYXJlICgoKG51bGw/IHgpIChudWxsPyB5KSkgMCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoZWxzZSAocGFpci1jb21wYXJlIGMgYyB4IHkpKSkpKSkKKyAg ICAgYykKKyAgIChsaXN0ICcoKSAobGlzdCAnKCkpIChsaXN0ICcoKSAnKCkpIChsaXN0IChsaXN0 ICcoKSkpKQorICAgOycoKCkgKCgpIC4gKCkpICgoKSAuICgoKSAuICgpKSkgKCgoKSAuICgpKSAu ICgpKSkgICA7IENoaWNrZW4gY2FuJ3QgcGFyc2UgdGhpcyA/CisgICApCisgIAorICA7IHJlZGVm aW5lIGRlZmF1bHQtY29tcGFyZSB1c2luZyBzZWxlY3QtY29tcGFyZQorICAKKyAgKG15LWNoZWNr LWNvbXBhcmUKKyAgIChsZXRyZWMgKChjIChsYW1iZGEgKHggeSkKKyAgICAgICAgICAgICAgICAg KHNlbGVjdC1jb21wYXJlIHggeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG51 bGw/IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFpcj8gICAgKHBhaXIt Y29tcGFyZSAgICBjIGMgeCB5KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChi b29sZWFuPyAoYm9vbGVhbi1jb21wYXJlIHggeSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoY2hhcj8gICAgKGNoYXItY29tcGFyZSAgICB4IHkpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHN0cmluZz8gIChzdHJpbmctY29tcGFyZSAgeCB5KSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeW1ib2w/ICAoc3ltYm9sLWNvbXBhcmUgIHgg eSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnVtYmVyPyAgKG51bWJlci1j b21wYXJlICB4IHkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3Rvcj8g ICh2ZWN0b3ItY29tcGFyZSAgYyB4IHkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGVsc2UgKGVycm9yICJ1bnJlY29nbml6ZWQgdHlwZSBpbiBjIiB4IHkpKSkpKSkKKyAgICAg YykKKyAgIG15LW9iamVjdHMpCisgIAorICA7IHJlZGVmaW5lIGRlZmF1bHQtY29tcGFyZSB1c2lu ZyBjb25kLWNvbXBhcmUKKyAgCisgIChteS1jaGVjay1jb21wYXJlCisgICAobGV0cmVjICgoYyAo bGFtYmRhICh4IHkpCisgICAgICAgICAgICAgICAgIChjb25kLWNvbXBhcmUKKyAgICAgICAgICAg ICAgICAgICgoKG51bGw/ICAgIHgpIChudWxsPyAgICB5KSkgMCkKKyAgICAgICAgICAgICAgICAg ICgoKHBhaXI/ICAgIHgpIChwYWlyPyAgICB5KSkgKHBhaXItY29tcGFyZSAgICBjIGMgeCB5KSkK KyAgICAgICAgICAgICAgICAgICgoKGJvb2xlYW4/IHgpIChib29sZWFuPyB5KSkgKGJvb2xlYW4t Y29tcGFyZSB4IHkpKQorICAgICAgICAgICAgICAgICAgKCgoY2hhcj8gICAgeCkgKGNoYXI/ICAg IHkpKSAoY2hhci1jb21wYXJlICAgIHggeSkpCisgICAgICAgICAgICAgICAgICAoKChzdHJpbmc/ ICB4KSAoc3RyaW5nPyAgeSkpIChzdHJpbmctY29tcGFyZSAgeCB5KSkKKyAgICAgICAgICAgICAg ICAgICgoKHN5bWJvbD8gIHgpIChzeW1ib2w/ICB5KSkgKHN5bWJvbC1jb21wYXJlICB4IHkpKQor ICAgICAgICAgICAgICAgICAgKCgobnVtYmVyPyAgeCkgKG51bWJlcj8gIHkpKSAobnVtYmVyLWNv bXBhcmUgIHggeSkpCisgICAgICAgICAgICAgICAgICAoKCh2ZWN0b3I/ICB4KSAodmVjdG9yPyAg eSkpICh2ZWN0b3ItY29tcGFyZSAgYyB4IHkpKQorICAgICAgICAgICAgICAgICAgKGVsc2UgKGVy cm9yICJ1bnJlY29nbml6ZWQgdHlwZSBpbiBjIiB4IHkpKSkpKSkKKyAgICAgYykKKyAgIG15LW9i amVjdHMpCisgIAorICA7IGNvbXBhcmUgc3RyaW5ncyB3aXRoIGNoYXJhY3RlciBvcmRlciByZXZl cnNlZAorICAKKyAgKG15LWNoZWNrLWNvbXBhcmUKKyAgIChsYW1iZGEgKHggeSkKKyAgICAgKHZl Y3Rvci1jb21wYXJlLWFzLWxpc3QKKyAgICAgIChsYW1iZGEgKHggeSkgKGNoYXItY29tcGFyZSB5 IHgpKQorICAgICAgeCB5IHN0cmluZy1sZW5ndGggc3RyaW5nLXJlZikpCisgICAnKCIiICJiIiAi YmIiICJiYSIgImEiICJhYiIgImFhIikpCisKKyAgOyBleGFtcGxlcyBmcm9tIFNSRkkgdGV4dCBm b3IgPD8gZXRjLgorCisgIChteS1jaGVjayAoPj8gImxhdWdoIiAiTE9VRCIpID0+ICN0KQorICAo bXktY2hlY2sgKDw/IHN0cmluZy1jb21wYXJlLWNpICJsYXVnaCIgIkxPVUQiKSA9PiAjdCkKKyAg KG15LWNoZWNrIChzb3J0LWJ5LWxlc3MgJygxIGEgImIiKSAoPD8pKSA9PiAnKCJiIiBhIDEpKQor ICAobXktY2hlY2sgKHNvcnQtYnktbGVzcyAnKDEgYSAiYiIpICg+PykpID0+ICcoMSBhICJiIikp CisgIAorICApIDsgY2hlY2s6bW9yZS1leGFtcGxlcworCisKKzsgUmVhbCBsaWZlIGV4YW1wbGVz Cis7ID09PT09PT09PT09PT09PT09PQorCis7ICh1cGRhdGUvaW5zZXJ0IGNvbXBhcmUgeCBzKQor OyAgICBpbnNlcnRzIHggaW50byBsaXN0IHMsIG9yIHVwZGF0ZXMgYW4gZXF1aXZhbGVudCBlbGVt ZW50IGJ5IHguCis7ICAgICAgSXQgaXMgYXNzdW1lZCB0aGF0IHMgaXMgc29ydGVkIHdpdGggcmVz cGVjdCB0byBjb21wYXJlLAorOyAgICBpLmUuIChhcHBseSBjaGFpbjw9PyBjb21wYXJlIHMpLiBU aGUgcmVzdWx0IGlzIGEgbGlzdCB3aXRoIHgKKzsgICAgcmVwbGFjaW5nIHRoZSBmaXJzdCBlbGVt ZW50IHNbaV0gZm9yIHdoaWNoICg9PyBjb21wYXJlIHNbaV0geCksCis7ICAgIG9yIHdpdGggeCBp bnNlcnRlZCBpbiB0aGUgcHJvcGVyIHBsYWNlLgorOyAgICAgIFRoZSBhbGdvcml0aG0gdXNlcyBs aW5lYXIgaW5zZXJ0aW9uIGZyb20gdGhlIGZyb250LgorCisoZGVmaW5lIChpbnNlcnQvdXBkYXRl IGNvbXBhcmUgeCBzKSA7IGluc2VydCB4IGludG8gbGlzdCBzLCBvciB1cGRhdGUKKyAgKGlmIChu dWxsPyBzKQorICAgICAgKGxpc3QgeCkKKyAgICAgIChpZjMgKGNvbXBhcmUgeCAoY2FyIHMpKQor ICAgICAgICAgICAoY29ucyB4IHMpCisgICAgICAgICAgIChjb25zIHggKGNkciBzKSkKKyAgICAg ICAgICAgKGNvbnMgKGNhciBzKSAoaW5zZXJ0L3VwZGF0ZSBjb21wYXJlIHggKGNkciBzKSkpKSkp CisKKzsgKGluZGV4LWluLXZlY3RvciBjb21wYXJlIHZlYyB4KQorOyAgICBhbiBpbmRleCBpIHN1 Y2ggdGhhdCAoPT8gY29tcGFyZSB2ZWNbaV0geCksIG9yICNmIGlmIHRoZXJlIGlzIG5vbmUuCis7 ICAgICAgSXQgaXMgYXNzdW1lZCB0aGF0IHMgaXMgc29ydGVkIHdpdGggcmVzcGVjdCB0byBjb21w YXJlLAorOyAgICBpLmUuIChhcHBseSBjaGFpbjw9PyBjb21wYXJlICh2ZWN0b3ItPmxpc3Qgcykp LiBJZiB0aGVyZSBhcmUgCis7ICAgIHNldmVyYWwgZWxlbWVudHMgZXF1aXZhbGVudCB0byB4IHRo ZW4gaXQgaXMgdW5zcGVjaWZpZWQgd2hpY2gKKzsgICAgdGhlc2UgaXMgY2hvc2VuLgorOyAgICAg IFRoZSBhbGdvcml0aG0gdXNlcyBiaW5hcnkgc2VhcmNoLgorCisoZGVmaW5lIChpbmRleC1pbi12 ZWN0b3IgY29tcGFyZSB2ZWMgeCkKKyAgKGxldCBiaW5hcnktc2VhcmNoICgobG8gLTEpIChoaSAo dmVjdG9yLWxlbmd0aCB2ZWMpKSkKKyAgICA7IGludmFyaWFudDogdmVjW2xvXSA8IHggPCB2ZWNb aGldCisgICAgKGlmICg9PyAoLSBoaSBsbykgMSkKKyAgICAgICAgI2YKKyAgICAgICAgKGxldCAo KG1pIChxdW90aWVudCAoKyBsbyBoaSkgMikpKQorICAgICAgICAgIChpZjMgKGNvbXBhcmUgeCAo dmVjdG9yLXJlZiB2ZWMgbWkpKQorICAgICAgICAgICAgICAgKGJpbmFyeS1zZWFyY2ggbG8gbWkp CisgICAgICAgICAgICAgICBtaQorICAgICAgICAgICAgICAgKGJpbmFyeS1zZWFyY2ggbWkgaGkp KSkpKSkgIAorCisKKzsgUnVuIHRoZSBjaGVja3MgCis7ID09PT09PT09PT09PT09CisKKzsgY29t bWVudCBpbi9vdXQgYXMgbmVlZGVkCisod2l0aC10ZXN0LXByZWZpeCAiYXRvbWljIiAoY2hlY2s6 YXRvbWljKSkKKyh3aXRoLXRlc3QtcHJlZml4ICJpZjMiIChjaGVjazppZjMpKQorKHdpdGgtdGVz dC1wcmVmaXggImlmcyIgKGNoZWNrOmlmcykpCisod2l0aC10ZXN0LXByZWZpeCAicHJlZGljYXRl cy1mb3JtLWNvbXBhcmUiCisgIChjaGVjazpwcmVkaWNhdGVzLWZyb20tY29tcGFyZSkpCisod2l0 aC10ZXN0LXByZWZpeCAicGFpcndpc2Utbm90PT8iCisgIChjaGVjazpwYWlyd2lzZS1ub3Q9Pykp Cisod2l0aC10ZXN0LXByZWZpeCAibWluL21heCIKKyAgKGNoZWNrOm1pbi9tYXgpKQorKHdpdGgt dGVzdC1wcmVmaXggImt0aC1sYXJnZXN0IgorICAoY2hlY2s6a3RoLWxhcmdlc3QpKQorKHdpdGgt dGVzdC1wcmVmaXggImNvbXBhcmUtZnJvbS1wcmVkaWNhdGVzIgorICAoY2hlY2s6Y29tcGFyZS1m cm9tLXByZWRpY2F0ZXMpKQorKHdpdGgtdGVzdC1wcmVmaXggInJlZmluZS1zZWxlY3QtY29uZCIK KyAgKGNoZWNrOnJlZmluZS1zZWxlY3QtY29uZCkpCisod2l0aC10ZXN0LXByZWZpeCAiZGF0YS1z dHJ1Y3R1cmVzIgorICAoY2hlY2s6ZGF0YS1zdHJ1Y3R1cmVzKSkKKyh3aXRoLXRlc3QtcHJlZml4 ICJkZWZhdWx0LWNvbXBhcmUiCisgIChjaGVjazpkZWZhdWx0LWNvbXBhcmUpKQorKHdpdGgtdGVz dC1wcmVmaXggIm1vcmUtZXhhbXBsZXMiCisgIChjaGVjazptb3JlLWV4YW1wbGVzKSkKKwotLSAK dGc6ICg3MzNmZGVkLi4pIHQvc3JmaS02NyAoZGVwZW5kcyBvbjogbWFzdGVyIHQvc3JmaS00MikK --=-=-= Regards, Rotty -- Andreas Rottmann -- --=-=-=--