Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uyy24-00F1Bh-Nn for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Sep 2025 19:41:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uyy22-00AWSC-CG for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Sep 2025 19:41:35 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uyy20-00AWS2-Rg for pgsql-hackers@lists.postgresql.org; Wed, 17 Sep 2025 19:41:34 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by makus.postgresql.org with smtp (Exim 4.96) (envelope-from ) id 1uyy1t-000xTk-1y for pgsql-hackers@lists.postgresql.org; Wed, 17 Sep 2025 19:41:32 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1758138082; bh=L7FeLUw8tc7u2I1v8yMXZKinqLunu3WemhXTTMBtCeM=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=U2J7xYq4w/sbLOsml9xsZg9bVJlzOlI2a2aZal2uINclhPKly0SzNxPPdzJfl6oJd ajZ4V1iwwHf2tLjl0bxXRiIBdYmkeSTjs23+aipp9aXUeHUNh1uQaGeVk844C09tos mXqURZJLmanR5d3nquVBvwFUOv/89rw33LOrv//OSPGjmvMZoGvgUx4snMoMafGiNW ME4Yq5saYkBOG4b7nDib9u/6eBxK8ror7+mCQTWCkn1VDVc9qIfWQcKUqYiUY7+v98 QLVM44iPzxauA3cG04JJOfciij0yQW+4Byb3qCfTjekt1BMNg2uXpQ+J99Sis2vSdZ xZuu8ymjlWO/Q== Received: from [172.30.50.62] (debian11-template.l.postgrespro.ru [192.168.2.254]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: d.koval@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id EDB946082F; Wed, 17 Sep 2025 22:41:21 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------aOQKmOFJ5EUrBbox0o9APZc7" Message-ID: <35958a1a-9877-40dc-84cc-ce944342babe@postgrespro.ru> Date: Wed, 17 Sep 2025 22:41:22 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: jian he Cc: pgsql-hackers@lists.postgresql.org References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <2643645f-2a02-43de-9321-c995ab1b7ef8@postgrespro.ru> <57a94d8a-d7b6-4c5e-9001-be1cd403b172@postgrespro.ru> Content-Language: en-US From: Dmitry Koval In-Reply-To: X-KSMG-AntiPhishing: NotDetected, bases: 2025/09/17 18:16:00 X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2025/09/17 17:28:00 #27827804 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------aOQKmOFJ5EUrBbox0o9APZc7 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, Jiah He! 1. v57-0001-refactor-for-v57.no-cfbot Thanks, the patch make the code clearer. I added small correction in function check_partition_bounds_for_split_range. Before the patch, the old code contained the condition: --------------------------------- if (!defaultPart) { if (cmpval != 0) ... } else { if (cmpval < 0) ... } --------------------------------- The patch changed this to: --------------------------------- if (!defaultPart && cmpval != 0) ... else if (cmpval < 0) ... --------------------------------- This change is not equivalent to the old code, so it replaced with: --------------------------------- if (!defaultPart) { if (cmpval != 0) .... } else if (cmpval < 0) ... --------------------------------- 2. v57-0001-partition_split.sql-test-refactor-based-on-v57.no-cfbot >I grouped the permission-related tests together and >removed unnecessary CREATE ROLE commands. >overall readability improved, i think. Applied (I agree, readability improved). -- With best regards, Dmitry Koval Postgres Professional: http://postgrespro.com --------------aOQKmOFJ5EUrBbox0o9APZc7 Content-Type: text/plain; charset=UTF-8; name="v58-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.patch" Content-Disposition: attachment; filename*0="v58-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0NzlkZWM3ODFkODUzZWE3NDlkNDkxNDU0M2QwMTc3ZjdmZTM5MzMzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU3OjIyICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NTggMS8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIE1FUkdF IFBBUlRJVElPTlMgLi4uCiBjb21tYW5kCgpUaGlzIG5ldyBEREwgY29tbWFuZCBtZXJnZXMg c2V2ZXJhbCBwYXJ0aXRpb25zIGludG8gdGhlIG9uZSBwYXJ0aXRpb24gb2YgdGhlCnRhcmdl dCB0YWJsZS4gIFRoZSB0YXJnZXQgcGFydGl0aW9uIGlzIGNyZWF0ZWQgdXNpbmcgbmV3CmNy ZWF0ZVBhcnRpdGlvblRhYmxlKCkgZnVuY3Rpb24gd2l0aCBwYXJlbnQgcGFydGl0aW9uIGFz IHRoZSB0ZW1wbGF0ZS4KClRoaXMgY29tbWl0IGNvbXByaXNlcyBxdWl0ZSBuYWl2ZSBpbXBs ZW1lbnRhdGlvbiB3aGljaCB3b3JrcyBpbiBzaW5nbGUgcHJvY2VzcwphbmQgaG9sZHMgdGhl IEFDQ0VTUyBFWENMVVNJVkUgTE9DSyBvbiB0aGUgcGFyZW50IHRhYmxlIGR1cmluZyBhbGwg dGhlCm9wZXJhdGlvbnMgaW5jbHVkaW5nIHRoZSB0dXBsZSByb3V0aW5nLiAgVGhpcyBpcyB3 aHkgdGhpcyBuZXcgRERMIGNvbW1hbmQKY2FuJ3QgYmUgcmVjb21tZW5kZWQgZm9yIGxhcmdl IHBhcnRpdGlvbmVkIHRhYmxlcyB1bmRlciBhIGhpZ2ggbG9hZC4gIEhvd2V2ZXIsCnRoaXMg aW1wbGVtZW50YXRpb24gY29tZSBpbiBoYW5keSBpbiBjZXJ0YWluIGNhc2VzIGV2ZW4gYXMg aXMuCkFsc28sIGl0IGNvdWxkIGJlIHVzZWQgYXMgYSBmb3VuZGF0aW9uIGZvciBmdXR1cmUg aW1wbGVtZW50YXRpb25zIHdpdGggbGVzc2VyCmxvY2tpbmcgYW5kIHBvc3NpYmx5IHBhcmFs bGVsLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9jNzNhMTc0Ni0wY2QwLTZi ZGQtNmIyMy0zYWUwYjdjMGM1ODIlNDBwb3N0Z3Jlc3Byby5ydQpBdXRob3I6IERtaXRyeSBL b3ZhbApSZXZpZXdlZC1ieTogTWF0dGhpYXMgdmFuIGRlIE1lZW50LCBMYXVyZW56IEFsYmUs IFpoaWhvbmcgWXUsIEp1c3RpbiBQcnl6YnkKUmV2aWV3ZWQtYnk6IEFsdmFybyBIZXJyZXJh LCBSb2JlcnQgSGFhcywgU3RlcGhhbmUgVGFjaG9pcmVzLCBKaWFuIEhlCgpGaXhlcyAoc3Vt bWFyeSBpbmZvcm1hdGlvbikuCkF1dGhvcnM6IEFsZXhhbmRlciBLb3JvdGtvdiwgVGVuZGVy IFdhbmcsIFJpY2hhcmQgR3VvLCBEYWdmaW5uIElsbWFyaSBNYW5uc2FrZXIKQXV0aG9yczog RnVqaWkgTWFzYW8sIEppYW4gSGUKUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBLb3JvdGtvdiwg Um9iZXJ0IEhhYXMsIEp1c3RpbiBQcnl6YnksIFBhdmVsIEJvcmlzb3YKUmV2aWV3ZWQtYnk6 IE1hc2FoaWtvIFNhd2FkYQpSZXBvcnRlZC1ieTogQWxleGFuZGVyIExha2hpbiwgSnVzdGlu IFByeXpieSwgS3lvdGFybyBIb3JpZ3VjaGkKUmVwb3J0ZWQtYnk6IERhbmllbCBHdXN0YWZz c29uLCBUb20gTGFuZSwgTm9haCBNaXNjaAotLS0KIGRvYy9zcmMvc2dtbC9kZGwuc2dtbCAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTkgKwogZG9jL3NyYy9zZ21sL3JlZi9hbHRl cl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDEyNCArLQogc3JjL2JhY2tlbmQvY2F0YWxv Zy9kZXBlbmRlbmN5LmMgICAgICAgICAgICAgIHwgICA1MCArCiBzcmMvYmFja2VuZC9jYXRh bG9nL3BnX2NvbnN0cmFpbnQuYyAgICAgICAgICAgfCAgICAyICstCiBzcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgODkwICsrKysrKysrKysrKy0K IHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAgMjIg Ky0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8ICAx NDYgKysrCiBzcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jICAgICAgICAg fCAgMTk2ICsrKwogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAg ICAgIHwgICAxMCArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCAgICAgICAg ICAgICAgfCAgICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAg ICAgICAgICB8ICAgIDggKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAgICAg ICAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3Vu ZHMuaCAgICAgICAgIHwgICAgNiArCiAuLi4vaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlv bi1tZXJnZS5vdXQgICAgfCAgMjQzICsrKysKIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRp b25fc2NoZWR1bGUgICAgICAgICB8ICAgIDEgKwogc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNz L3BhcnRpdGlvbi1tZXJnZS5zcGVjIHwgICA2MiArCiAuLi4vdGVzdF9kZGxfZGVwYXJzZS9l eHBlY3RlZC9hbHRlcl90YWJsZS5vdXQgfCAgICA1ICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNl L3NxbC9hbHRlcl90YWJsZS5zcWwgICAgICB8ICAgIDMgKwogLi4uL3Rlc3RfZGRsX2RlcGFy c2UvdGVzdF9kZGxfZGVwYXJzZS5jICAgICAgIHwgICAgMyArCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQgfCAxMDk3ICsrKysrKysrKysrKysrKysr CiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgICAy ICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsICAgICAgfCAg NzkxICsrKysrKysrKysrKwogMjIgZmlsZXMgY2hhbmdlZCwgMzY1NyBpbnNlcnRpb25zKCsp LCAyNiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRp b24vZXhwZWN0ZWQvcGFydGl0aW9uLW1lcmdlLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tbWVyZ2Uuc3BlYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91 dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9t ZXJnZS5zcWwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvZGRsLnNnbWwKaW5kZXggNjViYzA3MGQyZS4uZGRiMTM3NmE2ZSAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbApA QCAtNDQ1MCw2ICs0NDUwLDI1IEBAIEFMVEVSIFRBQkxFIG1lYXN1cmVtZW50X3kyMDA2bTAy IEFERCBVTklRVUUgKGNpdHlfaWQsIGxvZ2RhdGUpOwogQUxURVIgSU5ERVggbWVhc3VyZW1l bnRfY2l0eV9pZF9sb2dkYXRlX2tleQogICAgIEFUVEFDSCBQQVJUSVRJT04gbWVhc3VyZW1l bnRfeTIwMDZtMDJfY2l0eV9pZF9sb2dkYXRlX2tleTsKIC4uLgorPC9wcm9ncmFtbGlzdGlu Zz4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlcmUgaXMgYWxzbyBhbiBv cHRpb24gZm9yIG1lcmdpbmcgbXVsdGlwbGUgdGFibGUgcGFydGl0aW9ucyBpbnRvCisgICAg IGEgc2luZ2xlIHBhcnRpdGlvbiB1c2luZyB0aGUKKyAgICAgPGxpbmsgbGlua2VuZD0ic3Fs LWFsdGVydGFibGUtbWVyZ2UtcGFydGl0aW9ucyI+PGNvbW1hbmQ+QUxURVIgVEFCTEUgLi4u IE1FUkdFIFBBUlRJVElPTlM8L2NvbW1hbmQ+PC9saW5rPi4KKyAgICAgVGhpcyBmZWF0dXJl IHNpbXBsaWZpZXMgdGhlIG1hbmFnZW1lbnQgb2YgcGFydGl0aW9uZWQgdGFibGVzIGJ5IGFs bG93aW5nCisgICAgIHVzZXJzIHRvIGNvbWJpbmUgcGFydGl0aW9ucyB0aGF0IGFyZSBubyBs b25nZXIgbmVlZGVkIGFzCisgICAgIHNlcGFyYXRlIGVudGl0aWVzLiAgSXQncyBpbXBvcnRh bnQgdG8gbm90ZSB0aGF0IHRoaXMgb3BlcmF0aW9uIGlzIG5vdAorICAgICBzdXBwb3J0ZWQg Zm9yIGhhc2gtcGFydGl0aW9uZWQgdGFibGVzIGFuZCBhY3F1aXJlcyBhbgorICAgICA8bGl0 ZXJhbD5BQ0NFU1MgRVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrLCB3aGljaCBjb3VsZCBpbXBh Y3QgaGlnaC1sb2FkCisgICAgIHN5c3RlbXMgZHVlIHRvIHRoZSBsb2NrJ3MgcmVzdHJpY3Rp dmUgbmF0dXJlLiAgRm9yIGV4YW1wbGUsIHdlIGNhbgorICAgICBtZXJnZSB0aHJlZSBtb250 aGx5IHBhcnRpdGlvbnMgaW50byBvbmUgcXVhcnRlciBwYXJ0aXRpb246Cis8cHJvZ3JhbWxp c3Rpbmc+CitBTFRFUiBUQUJMRSBtZWFzdXJlbWVudAorICAgIE1FUkdFIFBBUlRJVElPTlMg KG1lYXN1cmVtZW50X3kyMDA2bTAxLAorICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVt ZW50X3kyMDA2bTAyLAorICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVtZW50X3kyMDA2 bTAzKSBJTlRPIG1lYXN1cmVtZW50X3kyMDA2cTE7CiA8L3Byb2dyYW1saXN0aW5nPgogICAg IDwvcGFyYT4KICAgIDwvc2VjdDM+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Fs dGVyX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKaW5k ZXggODg2N2RhNmM2OS4uNWFjMWY1YzQyMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Jl Zi9hbHRlcl90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUu c2dtbApAQCAtMzcsNiArMzcsOCBAQCBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBBVFRB Q0ggUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f bmFtZTwvcmVwbGFjZWFibGU+IHsgRk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQg fQogQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgREVUQUNIIFBBUlRJVElPTiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBb IENPTkNVUlJFTlRMWSB8IEZJTkFMSVpFIF0KK0FMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgorICAg IE1FUkdFIFBBUlRJVElPTlMgKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0pIElOVE8gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4K IAogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YWN0aW9u PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCkBAIC0xMTU5LDE4ICsxMTYx LDExNCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgIDwvbGlzdGl0ZW0+CiAg ICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWFsdGVydGFi bGUtbWVyZ2UtcGFydGl0aW9ucyI+CisgICAgPHRlcm0+PGxpdGVyYWw+TUVSR0UgUEFSVElU SU9OUyAoPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwv cmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9u X25hbWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXSkgSU5UTyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD48L3Rl cm0+CisKKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIG1l cmdlcyBzZXZlcmFsIHBhcnRpdGlvbnMgb2YgdGhlIHRhcmdldCB0YWJsZSBpbnRvIGEgbmV3 IHBhcnRpdGlvbi4KKyAgICAgIEhhc2gtcGFydGl0aW9uZWQgdGFyZ2V0IHRhYmxlIGlzIG5v dCBzdXBwb3J0ZWQuCisgICAgICBJZiB0aGUgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4g cGFydGl0aW9uIGlzIG5vdCBpbiB0aGUKKyAgICAgIGxpc3Qgb2YgcGFydGl0aW9ucyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJs ZT4sCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25h bWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXToKKyAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAg ICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIEZvciByYW5nZS1wYXJ0 aXRpb25lZCB0YWJsZXMsIHRoZSByYW5nZXMgb2YgdGhlIHBhcnRpdGlvbnMKKyAgICAgICAg IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxh Y2VhYmxlPiwKKyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiwgWy4uLl0KKyAgICAgICAgIG11c3QgYmUgYWRq YWNlbnQgaW4gb3JkZXIgdG8gYmUgbWVyZ2VkLiBPdGhlcndpc2UsIGFuIGVycm9yIHdpbGwg YmUKKyAgICAgICAgIHJhaXNlZC4gVGhlIHJlc3VsdGluZyBjb21iaW5lZCByYW5nZSB3aWxs IGJlIHRoZSBuZXcgcGFydGl0aW9uIGJvdW5kCisgICAgICAgICBmb3IgdGhlIHBhcnRpdGlv biA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxh Y2VhYmxlPi4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAg PGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIEZvciBsaXN0LXBhcnRpdGlv bmVkIHRhYmxlcywgdGhlIHBhcnRpdGlvbiBib3VuZHMgb2YKKyAgICAgICAgIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwK KyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFt ZTI8L3JlcGxhY2VhYmxlPiwgWy4uLl0KKyAgICAgICAgIGFyZSBjb21iaW5lZCB0byBmb3Jt IHRoZSBuZXcgcGFydGl0aW9uIGJvdW5kIGZvcgorICAgICAgICAgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4uCisgICAgICAg IDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+Cisg ICAgICBJZiB0aGUgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gcGFydGl0aW9uIGlzIGlu IHRoZSBsaXN0IG9mIHBhcnRpdGlvbnMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAorICAgICAgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl06 CisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBh cmE+CisgICAgICAgICBUaGUgcGFydGl0aW9uIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICB3aWxsIGJlIHRo ZSBuZXcgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gcGFydGl0aW9uIG9mIHRoZSB0YXJn ZXQgdGFibGUuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAg IDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBUaGUgcGFydGl0aW9uIGJv dW5kIHNwZWNpZmljYXRpb25zIGZvciBhbGwgcGFydGl0aW9ucy0KKyAgICAgICAgIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxl PiwKKyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f bmFtZTI8L3JlcGxhY2VhYmxlPiwgWy4uLl0KKyAgICAgICAgIGNhbiBiZSBhcmJpdHJhcnku CisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXpl ZGxpc3Q+CisgICAgICBUaGUgbmV3IHBhcnRpdGlvbiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgY2FuIGhhdmUg dGhlIHNhbWUgbmFtZSBhcyBvbmUgb2YgdGhlIG1lcmdlZCBwYXJ0aXRpb25zLiBPbmx5IHNp bXBsZSwKKyAgICAgIG5vbi1wYXJ0aXRpb25lZCBwYXJ0aXRpb25zIGNhbiBiZSBtZXJnZWQu CisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBJZiBtZXJnZWQgcGFydGl0aW9u cyBoYXZlIGRpZmZlcmVudCBvd25lcnMsIGFuIGVycm9yIHdpbGwgYmUgZ2VuZXJhdGVkLgor ICAgICAgVGhlIG93bmVyIG9mIHRoZSBtZXJnZWQgcGFydGl0aW9ucyB3aWxsIGJlIHRoZSBv d25lciBvZiB0aGUgbmV3IHBhcnRpdGlvbi4KKyAgICAgIEl0IGlzIHRoZSB1c2VyJ3MgcmVz cG9uc2liaWxpdHkgdG8gc2V0dXAgPGFjcm9ueW0+QUNMPC9hY3JvbnltPiBvbiB0aGUKKyAg ICAgIG5ldyBwYXJ0aXRpb24uCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBU aGUgaW5kZXhlcyBhbmQgaWRlbnRpdHkgYXJlIGNyZWF0ZWQgbGF0ZXIsIGFmdGVyIG1vdmlu ZyB0aGUgZGF0YQorICAgICAgaW50byB0aGUgbmV3IHBhcnRpdGlvbi4KKyAgICAgIEV4dGVu ZGVkIHN0YXRpc3RpY3MgYXJlbid0IGNvcGllZCBmcm9tIHRoZSBwYXJlbnQgdGFibGUsIGZv ciBjb25zaXN0ZW5jeSB3aXRoCisgICAgICA8Y29tbWFuZD5DUkVBVEUgVEFCTEUgUEFSVElU SU9OIE9GPC9jb21tYW5kPi4KKyAgICAgIFRoZSBuZXcgcGFydGl0aW9uIHdpbGwgaW5oZXJp dCB0aGUgc2FtZSB0YWJsZSBhY2Nlc3MgbWV0aG9kLCBwZXJzaXN0ZW5jZQorICAgICAgdHlw ZSwgYW5kIHRhYmxlc3BhY2UgYXMgdGhlIHBhcmVudCB0YWJsZS4KKyAgICAgPC9wYXJhPgor ICAgICA8cGFyYT4KKyAgICAgIFdoZW4gcGFydGl0aW9ucyBhcmUgbWVyZ2VkLCBhbnkgaW5k aXZpZHVhbCBvYmplY3RzIGJlbG9uZ2luZyB0byB0aG9zZQorICAgICAgcGFydGl0aW9ucywg c3VjaCBhcyBjb25zdHJhaW50cyBvciBzdGF0aXN0aWNzLCB3aWxsIGJlIGRyb3BwZWQuIFRo aXMgb2NjdXJzCisgICAgICBiZWNhdXNlIDxjb21tYW5kPkFMVEVSIFRBQkxFIE1FUkdFIFBB UlRJVElPTlM8L2NvbW1hbmQ+IHVzZXMgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGl0c2VsZiBh cyB0aGUKKyAgICAgIHRlbXBsYXRlIHRvIGRlZmluZSB0aGVzZSBvYmplY3RzLgorICAgICA8 L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgSWYgbWVyZ2VkIHBhcnRpdGlvbnMgaGF2ZSBz b21lIG9iamVjdHMgZGVwZW5kZW50IG9uIHRoZW0sIHRoZSBjb21tYW5kIGNhbgorICAgICAg bm90IGJlIGRvbmUgKDxsaXRlcmFsPkNBU0NBREU8L2xpdGVyYWw+IGlzIG5vdCB1c2VkLCBh bmQgYW4gZXJyb3Igd2lsbAorICAgICAgYmUgcmV0dXJuZWQpLgorICAgICA8L3BhcmE+Cisg ICAgIDxub3RlPgorICAgICAgPHBhcmE+CisgICAgICAgTWVyZ2luZyBwYXJ0aXRpb25zIGFj cXVpcmVzIGFuIDxsaXRlcmFsPkFDQ0VTUyBFWENMVVNJVkU8L2xpdGVyYWw+IGxvY2sgb24K KyAgICAgICB0aGUgcGFyZW50IHRhYmxlLCBpbiBhZGRpdGlvbiB0byB0aGUgPGxpdGVyYWw+ QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4KKyAgICAgICBsb2NrcyBvbiB0aGUgdGFibGVz IGJlaW5nIG1lcmdlZCBhbmQgb24gdGhlIGRlZmF1bHQgcGFydGl0aW9uIChpZiBhbnkpLgor ICAgICAgPC9wYXJhPgorICAgICA8L25vdGU+CisgICAgIDxub3RlPgorICAgICAgPHBhcmE+ CisgICAgICAgPGNvbW1hbmQ+QUxURVIgVEFCTEUgTUVSR0UgUEFSVElUSU9OUzwvY29tbWFu ZD4gY3JlYXRlcyBhIG5ldyBwYXJ0aXRpb24gYW5kCisgICAgICAgbW92ZXMgZGF0YSBmcm9t IGFsbCBtZXJnaW5nIHBhcnRpdGlvbnMgaW50byBpdCwgd2hpY2ggY2FuIHRha2UgYSBsb25n IHRpbWUuCisgICAgICAgU28gaXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIHVzZSB0aGUgY29t bWFuZCB0byBtZXJnZSB2ZXJ5IGJpZyBwYXJ0aXRpb25zCisgICAgICAgd2l0aCBzbWFsbCBv bmVzLgorICAgICAgPC9wYXJhPgorICAgICA8L25vdGU+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCiAgIDwvdmFyaWFibGVsaXN0PgogICA8L3BhcmE+CiAKICAg PHBhcmE+CiAgICBBbGwgdGhlIGZvcm1zIG9mIDxjb21tYW5kPkFMVEVSIFRBQkxFPC9jb21t YW5kPiB0aGF0IGFjdCBvbiBhIHNpbmdsZSB0YWJsZSwKICAgIGV4Y2VwdCA8bGl0ZXJhbD5S RU5BTUU8L2xpdGVyYWw+LCA8bGl0ZXJhbD5TRVQgU0NIRU1BPC9saXRlcmFsPiwKLSAgIDxs aXRlcmFsPkFUVEFDSCBQQVJUSVRJT048L2xpdGVyYWw+LCBhbmQKLSAgIDxsaXRlcmFsPkRF VEFDSCBQQVJUSVRJT048L2xpdGVyYWw+IGNhbiBiZSBjb21iaW5lZCBpbnRvCisgICA8bGl0 ZXJhbD5BVFRBQ0ggUEFSVElUSU9OPC9saXRlcmFsPiwgPGxpdGVyYWw+REVUQUNIIFBBUlRJ VElPTjwvbGl0ZXJhbD4sCisgICBhbmQgPGxpdGVyYWw+TUVSR0UgUEFSVElUSU9OUzwvbGl0 ZXJhbD4sIGNhbiBiZSBjb21iaW5lZCBpbnRvCiAgICBhIGxpc3Qgb2YgbXVsdGlwbGUgYWx0 ZXJhdGlvbnMgdG8gYmUgYXBwbGllZCB0b2dldGhlci4gIEZvciBleGFtcGxlLCBpdAogICAg aXMgcG9zc2libGUgdG8gYWRkIHNldmVyYWwgY29sdW1ucyBhbmQvb3IgYWx0ZXIgdGhlIHR5 cGUgb2Ygc2V2ZXJhbAogICAgY29sdW1ucyBpbiBhIHNpbmdsZSBjb21tYW5kLiAgVGhpcyBp cyBwYXJ0aWN1bGFybHkgdXNlZnVsIHdpdGggbGFyZ2UKLSAgIHRhYmxlcywgc2luY2Ugb25s eSBvbmUgcGFzcyBvdmVyIHRoZSB0YWJsZSBuZWVkIGJlIG1hZGUuCisgICB0YWJsZXMsIHNp bmNlIG9ubHkgb25lIHBhc3Mgb3ZlciB0aGUgdGFibGUgbmVlZHMgdG8gYmUgbWFkZS4KICAg PC9wYXJhPgogCiAgIDxwYXJhPgpAQCAtMTQwOSw3ICsxNTA3LDE4IEBAIFdJVEggKCBNT0RV TFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3Jl cGxhY2VhYmxlPiwgUkVNCiAgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICAgIDxsaXN0 aXRlbT4KICAgICAgICA8cGFyYT4KLSAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRv IGF0dGFjaCBhcyBhIG5ldyBwYXJ0aXRpb24gb3IgdG8gZGV0YWNoIGZyb20gdGhpcyB0YWJs ZS4KKyAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGF0dGFjaCBhcyBhIG5ldyBw YXJ0aXRpb24gb3IgdG8gZGV0YWNoIGZyb20gdGhpcyB0YWJsZSwKKyAgICAgICAgb3IgdGhl IG5hbWUgb2YgdGhlIG5ldyBtZXJnZWQgcGFydGl0aW9uLgorICAgICAgIDwvcGFyYT4KKyAg ICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0 ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLXBhcm1zLXBhcnRpdGlvbi1uYW1lMSI+CisgICAg ICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUx PC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBuYW1lcyBvZiB0aGUg dGFibGVzIGJlaW5nIG1lcmdlZCBpbnRvIHRoZSBuZXcgcGFydGl0aW9uLgogICAgICAgIDwv cGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMTg0 Miw2ICsxOTUxLDEzIEBAIEFMVEVSIFRBQkxFIG1lYXN1cmVtZW50CiAgICAgREVUQUNIIFBB UlRJVElPTiBtZWFzdXJlbWVudF95MjAxNW0xMjsKIDwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJh PgogCisgIDxwYXJhPgorICAgVG8gbWVyZ2Ugc2V2ZXJhbCBwYXJ0aXRpb25zIGludG8gb25l IHBhcnRpdGlvbiBvZiB0aGUgdGFyZ2V0IHRhYmxlOgorPHByb2dyYW1saXN0aW5nPgorQUxU RVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxl c19lYXN0LCBzYWxlc19jZW50cmFsKQorICAgIElOVE8gc2FsZXNfYWxsOworPC9wcm9ncmFt bGlzdGluZz48L3BhcmE+CisKICA8L3JlZnNlY3QxPgogCiAgPHJlZnNlY3QxPgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL2RlcGVuZGVuY3kuYwppbmRleCA3ZGRlZDYzNGViLi5mMDY5YTQ2YTgzIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYworKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwpAQCAtMzE5LDYgKzMxOSw1NiBAQCBwZXJmb3Jt RGVsZXRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCXRhYmxlX2Nsb3NlKGRl cFJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiB9CiAKKy8qCisgKiBwZXJmb3JtRGVsZXRpb25D aGVjazogQ2hlY2sgd2hldGhlciBhIHNwZWNpZmljIG9iamVjdCBjYW4gYmUgc2FmZWx5IGRl bGV0ZWQuCisgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHBlcmZvcm0gYW55IGRlbGV0aW9u OyBpbnN0ZWFkLCBpdCByYWlzZXMgYW4gZXJyb3IKKyAqIGlmIHRoZSBvYmplY3QgY2Fubm90 IGJlIGRlbGV0ZWQgZHVlIHRvIGV4aXN0aW5nIGRlcGVuZGVuY2llcy4KKyAqCisgKiBJdCBj YW4gYmUgdXNlZnVsIHdoZW4geW91IG5lZWQgZGVsZXRlIHNvbWUgb2JqZWN0cyBsYXRlci4g IFNlZSBjb21tZW50cyBpbgorICogcGVyZm9ybURlbGV0aW9uIHRvby4KKyAqIFRoZSBiZWhh dmlvciBtdXN0IHNwZWNpZmllZCBhcyBEUk9QX1JFU1RSSUNULgorICovCit2b2lkCitwZXJm b3JtRGVsZXRpb25DaGVjayhjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsCisJCQkJCSBE cm9wQmVoYXZpb3IgYmVoYXZpb3IsIGludCBmbGFncykKK3sKKwlSZWxhdGlvbglkZXBSZWw7 CisJT2JqZWN0QWRkcmVzc2VzICp0YXJnZXRPYmplY3RzOworCisJQXNzZXJ0KGJlaGF2aW9y ID09IERST1BfUkVTVFJJQ1QpOworCisJZGVwUmVsID0gdGFibGVfb3BlbihEZXBlbmRSZWxh dGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCUFjcXVpcmVEZWxldGlvbkxvY2sob2Jq ZWN0LCAwKTsKKworCS8qCisJICogQ29uc3RydWN0IGEgbGlzdCBvZiBvYmplY3RzIHdlIHdh bnQgZGVsZXRlIGxhdGVyIChpZSwgdGhlIGdpdmVuIG9iamVjdAorCSAqIHBsdXMgZXZlcnl0 aGluZyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGRlcGVuZGVudCBvbiBpdCkuCisJICovCisJ dGFyZ2V0T2JqZWN0cyA9IG5ld19vYmplY3RfYWRkcmVzc2VzKCk7CisKKwlmaW5kRGVwZW5k ZW50T2JqZWN0cyhvYmplY3QsCisJCQkJCQkgREVQRkxBR19PUklHSU5BTCwKKwkJCQkJCSBm bGFncywKKwkJCQkJCSBOVUxMLAkvKiBlbXB0eSBzdGFjayAqLworCQkJCQkJIHRhcmdldE9i amVjdHMsCisJCQkJCQkgTlVMTCwJLyogbm8gcGVuZGluZ09iamVjdHMgKi8KKwkJCQkJCSAm ZGVwUmVsKTsKKworCS8qCisJICogQ2hlY2sgaWYgZGVsZXRpb24gaXMgYWxsb3dlZC4KKwkg Ki8KKwlyZXBvcnREZXBlbmRlbnRPYmplY3RzKHRhcmdldE9iamVjdHMsCisJCQkJCQkgICBi ZWhhdmlvciwKKwkJCQkJCSAgIGZsYWdzLAorCQkJCQkJICAgb2JqZWN0KTsKKworCS8qIEFu ZCBjbGVhbiB1cCAqLworCWZyZWVfb2JqZWN0X2FkZHJlc3Nlcyh0YXJnZXRPYmplY3RzKTsK KworCXRhYmxlX2Nsb3NlKGRlcFJlbCwgUm93RXhjbHVzaXZlTG9jayk7Cit9CisKIC8qCiAg KiBwZXJmb3JtTXVsdGlwbGVEZWxldGlvbnM6IFNpbWlsYXIgdG8gcGVyZm9ybURlbGV0aW9u LCBidXQgYWN0IG9uIG11bHRpcGxlCiAgKiBvYmplY3RzIGF0IG9uY2UuCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfY29uc3RyYWludC5jCmluZGV4IDYwMDJmZDAwMDIuLmVmODg4MmNiY2QgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCkBAIC04NzUsNyArODc1LDcgQEAg UmVsYXRpb25HZXROb3ROdWxsQ29uc3RyYWludHMoT2lkIHJlbGlkLCBib29sIGNvb2tlZCwg Ym9vbCBpbmNsdWRlX25vaW5oKQogCQkJCQkJCQkJCQkJCQkJIGZhbHNlKSkpOwogCQkJY29u c3RyLT5pc19lbmZvcmNlZCA9IHRydWU7CiAJCQljb25zdHItPnNraXBfdmFsaWRhdGlvbiA9 ICFjb25Gb3JtLT5jb252YWxpZGF0ZWQ7Ci0JCQljb25zdHItPmluaXRpYWxseV92YWxpZCA9 IHRydWU7CisJCQljb25zdHItPmluaXRpYWxseV92YWxpZCA9IGNvbkZvcm0tPmNvbnZhbGlk YXRlZDsKIAkJCWNvbnN0ci0+aXNfbm9faW5oZXJpdCA9IGNvbkZvcm0tPmNvbm5vaW5oZXJp dDsKIAkJCW5vdG51bGxzID0gbGFwcGVuZChub3RudWxscywgY29uc3RyKTsKIAkJfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCAzYmUyZTA1MWQzLi45YWFhMGM2N2ZiIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNzQxLDYgKzc0MSw4IEBAIHN0YXRp YyB2b2lkIEFURGV0YWNoQ2hlY2tOb0ZvcmVpZ25LZXlSZWZzKFJlbGF0aW9uIHBhcnRpdGlv bik7CiBzdGF0aWMgY2hhciBHZXRBdHRyaWJ1dGVDb21wcmVzc2lvbihPaWQgYXR0dHlwaWQs IGNvbnN0IGNoYXIgKmNvbXByZXNzaW9uKTsKIHN0YXRpYyBjaGFyIEdldEF0dHJpYnV0ZVN0 b3JhZ2UoT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpzdG9yYWdlbW9kZSk7CiAKK3N0YXRp YyB2b2lkIEFURXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFi bGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJICBQYXJ0aXRpb25DbWQgKmNt ZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKIAogLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICoJCURlZmluZVJlbGF0aW9uCkBAIC00ODM3LDYgKzQ4MzksMTAgQEAgQWx0ZXJUYWJs ZUdldExvY2tMZXZlbChMaXN0ICpjbWRzKQogCQkJCWNtZF9sb2NrbW9kZSA9IFNoYXJlVXBk YXRlRXhjbHVzaXZlTG9jazsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9NZXJnZVBhcnRp dGlvbnM6CisJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKKwkJCQli cmVhazsKKwogCQkJZGVmYXVsdDoJCQkvKiBvb3BzICovCiAJCQkJZWxvZyhFUlJPUiwgInVu cmVjb2duaXplZCBhbHRlciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJCSAoaW50KSBjbWQtPnN1 YnR5cGUpOwpAQCAtNTI3Miw2ICs1Mjc4LDExIEBAIEFUUHJlcENtZChMaXN0ICoqd3F1ZXVl LCBSZWxhdGlvbiByZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwKIAkJCS8qIE5vIGNvbW1hbmQt c3BlY2lmaWMgcHJlcCBuZWVkZWQgKi8KIAkJCXBhc3MgPSBBVF9QQVNTX01JU0M7CiAJCQli cmVhazsKKwkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQlBVFNpbXBsZVBlcm1pc3Np b25zKGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfUEFSVElUSU9ORURfVEFCTEUpOworCQkJLyog Tm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRlZCAqLworCQkJcGFzcyA9IEFUX1BBU1Nf TUlTQzsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgkJCQkvKiBvb3BzICovCiAJCQllbG9nKEVS Uk9SLCAidW5yZWNvZ25pemVkIGFsdGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkg Y21kLT5zdWJ0eXBlKTsKQEAgLTU2NjgsNiArNTY3OSwxNCBAQCBBVEV4ZWNDbWQoTGlzdCAq KndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQljYXNlIEFUX0RldGFjaFBhcnRp dGlvbkZpbmFsaXplOgogCQkJYWRkcmVzcyA9IEFURXhlY0RldGFjaFBhcnRpdGlvbkZpbmFs aXplKHJlbCwgKChQYXJ0aXRpb25DbWQgKikgY21kLT5kZWYpLT5uYW1lKTsKIAkJCWJyZWFr OworCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCWNtZCA9IEFUUGFyc2VUcmFuc2Zv cm1DbWQod3F1ZXVlLCB0YWIsIHJlbCwgY21kLCBmYWxzZSwgbG9ja21vZGUsCisJCQkJCQkJ CQkgIGN1cl9wYXNzLCBjb250ZXh0KTsKKwkJCUFzc2VydChjbWQgIT0gTlVMTCk7CisJCQlB c3NlcnQocmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJM RSk7CisJCQlBVEV4ZWNNZXJnZVBhcnRpdGlvbnMod3F1ZXVlLCB0YWIsIHJlbCwgKFBhcnRp dGlvbkNtZCAqKSBjbWQtPmRlZiwKKwkJCQkJCQkJICBjb250ZXh0KTsKKwkJCWJyZWFrOwog CQlkZWZhdWx0OgkJCQkvKiBvb3BzICovCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVk IGFsdGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgY21kLT5zdWJ0eXBlKTsKQEAg LTY3MDgsNiArNjcyNyw4IEBAIGFsdGVyX3RhYmxlX3R5cGVfdG9fc3RyaW5nKEFsdGVyVGFi bGVUeXBlIGNtZHR5cGUpCiAJCQlyZXR1cm4gIkRFVEFDSCBQQVJUSVRJT04iOwogCQljYXNl IEFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOgogCQkJcmV0dXJuICJERVRBQ0ggUEFSVElU SU9OIC4uLiBGSU5BTElaRSI7CisJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJcmV0 dXJuICJNRVJHRSBQQVJUSVRJT05TIjsKIAkJY2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCXJl dHVybiAiQUxURVIgQ09MVU1OIC4uLiBBREQgSURFTlRJVFkiOwogCQljYXNlIEFUX1NldElk ZW50aXR5OgpAQCAtMjAxOTcsNiArMjAyMTgsMzcgQEAgUXVldWVQYXJ0aXRpb25Db25zdHJh aW50VmFsaWRhdGlvbihMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBzY2FucmVsLAogCX0KIH0K IAorLyoKKyAqIGF0dGFjaFBhcnRpdGlvblRhYmxlOiBhdHRhY2ggYSBuZXcgcGFydGl0aW9u IHRvIHRoZSBwYXJ0aXRpb25lZCB0YWJsZQorICoKKyAqIHdxdWV1ZTogdGhlIEFMVEVSIFRB QkxFIHdvcmsgcXVldWU7IGNhbiBiZSBOVUxMIHdoZW4gbm90IHJ1bm5pbmcgYXMgcGFydAor ICogICBvZiBhbiBBTFRFUiBUQUJMRSBzZXF1ZW5jZS4KKyAqIHJlbDogcGFydGl0aW9uZWQg cmVsYXRpb247CisgKiBhdHRhY2hyZWw6IHJlbGF0aW9uIG9mIGF0dGFjaGVkIHBhcnRpdGlv bjsKKyAqIGJvdW5kOiBib3VuZHMgb2YgYXR0YWNoZWQgcmVsYXRpb24uCisgKi8KK3N0YXRp YyB2b2lkCithdHRhY2hQYXJ0aXRpb25UYWJsZShMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBy ZWwsIFJlbGF0aW9uIGF0dGFjaHJlbCwgUGFydGl0aW9uQm91bmRTcGVjICpib3VuZCkKK3sK KwkvKiBPSyB0byBjcmVhdGUgaW5oZXJpdGFuY2UuICBSZXN0IG9mIHRoZSBjaGVja3MgcGVy Zm9ybWVkIHRoZXJlICovCisJQ3JlYXRlSW5oZXJpdGFuY2UoYXR0YWNocmVsLCByZWwsIHRy dWUpOworCisJLyogVXBkYXRlIHRoZSBwZ19jbGFzcyBlbnRyeS4gKi8KKwlTdG9yZVBhcnRp dGlvbkJvdW5kKGF0dGFjaHJlbCwgcmVsLCBib3VuZCk7CisKKwkvKiBFbnN1cmUgdGhlcmUg ZXhpc3RzIGEgY29ycmVjdCBzZXQgb2YgaW5kZXhlcyBpbiB0aGUgcGFydGl0aW9uLiAqLwor CUF0dGFjaFBhcnRpdGlvbkVuc3VyZUluZGV4ZXMod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCk7 CisKKwkvKiBhbmQgdHJpZ2dlcnMgKi8KKwlDbG9uZVJvd1RyaWdnZXJzVG9QYXJ0aXRpb24o cmVsLCBhdHRhY2hyZWwpOworCisJLyoKKwkgKiBDbG9uZSBmb3JlaWduIGtleSBjb25zdHJh aW50cy4gIENhbGxlZSBpcyByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cAorCSAqIGZvciBw aGFzZSAzIGNvbnN0cmFpbnQgdmVyaWZpY2F0aW9uLgorCSAqLworCUNsb25lRm9yZWlnbktl eUNvbnN0cmFpbnRzKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwpOworfQorCiAvKgogICogQUxU RVIgVEFCTEUgPG5hbWU+IEFUVEFDSCBQQVJUSVRJT04gPHBhcnRpdGlvbi1uYW1lPiBGT1Ig VkFMVUVTCiAgKgpAQCAtMjAzOTgsMjMgKzIwNDUwLDggQEAgQVRFeGVjQXR0YWNoUGFydGl0 aW9uKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUGFydGl0aW9uQ21kICpjbWQsCiAJ Y2hlY2tfbmV3X3BhcnRpdGlvbl9ib3VuZChSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhdHRh Y2hyZWwpLCByZWwsCiAJCQkJCQkJICBjbWQtPmJvdW5kLCBwc3RhdGUpOwogCi0JLyogT0sg dG8gY3JlYXRlIGluaGVyaXRhbmNlLiAgUmVzdCBvZiB0aGUgY2hlY2tzIHBlcmZvcm1lZCB0 aGVyZSAqLwotCUNyZWF0ZUluaGVyaXRhbmNlKGF0dGFjaHJlbCwgcmVsLCB0cnVlKTsKLQot CS8qIFVwZGF0ZSB0aGUgcGdfY2xhc3MgZW50cnkuICovCi0JU3RvcmVQYXJ0aXRpb25Cb3Vu ZChhdHRhY2hyZWwsIHJlbCwgY21kLT5ib3VuZCk7Ci0KLQkvKiBFbnN1cmUgdGhlcmUgZXhp c3RzIGEgY29ycmVjdCBzZXQgb2YgaW5kZXhlcyBpbiB0aGUgcGFydGl0aW9uLiAqLwotCUF0 dGFjaFBhcnRpdGlvbkVuc3VyZUluZGV4ZXMod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCk7Ci0K LQkvKiBhbmQgdHJpZ2dlcnMgKi8KLQlDbG9uZVJvd1RyaWdnZXJzVG9QYXJ0aXRpb24ocmVs LCBhdHRhY2hyZWwpOwotCi0JLyoKLQkgKiBDbG9uZSBmb3JlaWduIGtleSBjb25zdHJhaW50 cy4gIENhbGxlZSBpcyByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cAotCSAqIGZvciBwaGFz ZSAzIGNvbnN0cmFpbnQgdmVyaWZpY2F0aW9uLgotCSAqLwotCUNsb25lRm9yZWlnbktleUNv bnN0cmFpbnRzKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwpOworCS8qIEF0dGFjaCBhIG5ldyBw YXJ0aXRpb24gdG8gdGhlIHBhcnRpdGlvbmVkIHRhYmxlLiAqLworCWF0dGFjaFBhcnRpdGlv blRhYmxlKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwsIGNtZC0+Ym91bmQpOwogCiAJLyoKIAkg KiBHZW5lcmF0ZSBwYXJ0aXRpb24gY29uc3RyYWludCBmcm9tIHRoZSBwYXJ0aXRpb24gYm91 bmQgc3BlY2lmaWNhdGlvbi4KQEAgLTIyMDYyLDMgKzIyMDk5LDgyMiBAQCBHZXRBdHRyaWJ1 dGVTdG9yYWdlKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqc3RvcmFnZW1vZGUpCiAKIAly ZXR1cm4gY3N0b3JhZ2U7CiB9CisKKworLyoKKyAqIGJ1aWxkRXhwcmVzc2lvbkV4ZWN1dGlv blN0YXRlczogYnVpbGQgdGhlIG5lZWRlZCBleHByZXNzaW9uIGV4ZWN1dGlvbiBzdGF0ZXMK KyAqIGZvciBuZXcgcGFydGl0aW9uIChuZXdQYXJ0UmVsKSBjaGVja3MgYW5kIGluaXRpYWxp emUgZXhwcmVzc2lvbnMgZm9yCisgKiBnZW5lcmF0ZWQgY29sdW1ucy4gQWxsIGV4cHJlc3Np b25zIHNob3VsZCBiZSBjcmVhdGVkIGluICJ0YWIiCisgKiAoQWx0ZXJlZFRhYmxlSW5mbyBz dHJ1Y3R1cmUpLgorICovCitzdGF0aWMgdm9pZAorYnVpbGRFeHByZXNzaW9uRXhlY3V0aW9u U3RhdGVzKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gbmV3UGFydFJlbCwgRVN0 YXRlICplc3RhdGUpCit7CisJLyoKKwkgKiBCdWlsZCB0aGUgbmVlZGVkIGV4cHJlc3Npb24g ZXhlY3V0aW9uIHN0YXRlcy4gSGVyZSwgd2UgZXhwZWN0IG9ubHkgTk9UCisJICogTlVMTCBh bmQgQ0hFQ0sgY29uc3RyYWludC4KKwkgKi8KKwlmb3JlYWNoX3B0cihOZXdDb25zdHJhaW50 LCBjb24sIHRhYi0+Y29uc3RyYWludHMpCisJeworCQlzd2l0Y2ggKGNvbi0+Y29udHlwZSkK KwkJeworCQkJY2FzZSBDT05TVFJfQ0hFQ0s6CisKKwkJCQkvKgorCQkJCSAqIFdlIGFscmVh ZHkgZXhwYW5kZWQgdmlydHVhbCBleHByZXNzaW9uIGluCisJCQkJICogY3JlYXRlVGFibGVD b25zdHJhaW50cy4KKwkJCQkgKi8KKwkJCQljb24tPnF1YWxzdGF0ZSA9IEV4ZWNQcmVwYXJl RXhwcigoRXhwciAqKSBjb24tPnF1YWwsIGVzdGF0ZSk7CisJCQkJYnJlYWs7CisJCQljYXNl IENPTlNUUl9OT1ROVUxMOgorCQkJCS8qIE5vdGhpbmcgdG8gZG8gaGVyZS4gKi8KKwkJCQli cmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBjb25z dHJhaW50IHR5cGU6ICVkIiwKKwkJCQkJIChpbnQpIGNvbi0+Y29udHlwZSk7CisJCX0KKwl9 CisKKwkvKiBFeHByZXNzaW9uIGFscmVhZHkgcGxhbm5lZCBpbiBjcmVhdGVUYWJsZUNvbnN0 cmFpbnRzICovCisJZm9yZWFjaF9wdHIoTmV3Q29sdW1uVmFsdWUsIGV4LCB0YWItPm5ld3Zh bHMpCisJCWV4LT5leHByc3RhdGUgPSBFeGVjSW5pdEV4cHIoKEV4cHIgKikgZXgtPmV4cHIs IE5VTEwpOworfQorCisvKgorICogZXZhbHVhdGVHZW5lcmF0ZWRFeHByZXNzaW9uc0FuZENo ZWNrQ29uc3RyYWludHM6IGV2YWx1YXRlIGFueSBnZW5lcmF0ZWQKKyAqIGV4cHJlc3Npb25z IGZvciAidGFiIiAoQWx0ZXJlZFRhYmxlSW5mbyBzdHJ1Y3R1cmUpIHdob3NlIGlucHV0cyBj b21lIGZyb20KKyAqIHRoZSBuZXcgdHVwbGUgKGluc2VydHNsb3QpIG9mIG5ldyBwYXJ0aXRp b24gKG5ld1BhcnRSZWwpLgorICovCitzdGF0aWMgdm9pZAorZXZhbHVhdGVHZW5lcmF0ZWRF eHByZXNzaW9uc0FuZENoZWNrQ29uc3RyYWludHMoQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAor CQkJCQkJCQkJCQkJUmVsYXRpb24gbmV3UGFydFJlbCwKKwkJCQkJCQkJCQkJCVR1cGxlVGFi bGVTbG90ICppbnNlcnRzbG90LAorCQkJCQkJCQkJCQkJRXhwckNvbnRleHQgKmVjb250ZXh0 KQoreworCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IGluc2VydHNsb3Q7CisKKwlmb3Jl YWNoX3B0cihOZXdDb2x1bW5WYWx1ZSwgZXgsIHRhYi0+bmV3dmFscykKKwl7CisJCWlmICgh ZXgtPmlzX2dlbmVyYXRlZCkKKwkJCWNvbnRpbnVlOworCisJCWluc2VydHNsb3QtPnR0c192 YWx1ZXNbZXgtPmF0dG51bSAtIDFdCisJCQk9IEV4ZWNFdmFsRXhwcihleC0+ZXhwcnN0YXRl LAorCQkJCQkJICAgZWNvbnRleHQsCisJCQkJCQkgICAmaW5zZXJ0c2xvdC0+dHRzX2lzbnVs bFtleC0+YXR0bnVtIC0gMV0pOworCX0KKworCWZvcmVhY2hfcHRyKE5ld0NvbnN0cmFpbnQs IGNvbiwgdGFiLT5jb25zdHJhaW50cykKKwl7CisJCXN3aXRjaCAoY29uLT5jb250eXBlKQor CQl7CisJCQljYXNlIENPTlNUUl9DSEVDSzoKKwkJCQlpZiAoIUV4ZWNDaGVjayhjb24tPnF1 YWxzdGF0ZSwgZWNvbnRleHQpKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCWVycmNv ZGUoRVJSQ09ERV9DSEVDS19WSU9MQVRJT04pLAorCQkJCQkJCWVycm1zZygiY2hlY2sgY29u c3RyYWludCBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGlzIHZpb2xhdGVkIGJ5IHNvbWUg cm93IiwKKwkJCQkJCQkJICAgY29uLT5uYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShu ZXdQYXJ0UmVsKSksCisJCQkJCQkJZXJydGFibGVjb25zdHJhaW50KG5ld1BhcnRSZWwsIGNv bi0+bmFtZSkpOworCQkJCWJyZWFrOworCQkJY2FzZSBDT05TVFJfTk9UTlVMTDoKKwkJCWNh c2UgQ09OU1RSX0ZPUkVJR046CisJCQkJLyogTm90aGluZyB0byBkbyBoZXJlICovCisJCQkJ YnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgY29u c3RyYWludCB0eXBlOiAlZCIsCisJCQkJCSAoaW50KSBjb24tPmNvbnR5cGUpOworCQl9CisJ fQorfQorCisvKgorICogZ2V0QXR0cmlidXRlc0xpc3Q6IGJ1aWxkIGEgbGlzdCBvZiBjb2x1 bW5zIChDb2x1bW5EZWYpIGJhc2VkIG9uIHBhcmVudF9yZWwKKyAqLworc3RhdGljIExpc3Qg KgorZ2V0QXR0cmlidXRlc0xpc3QoUmVsYXRpb24gcGFyZW50X3JlbCkKK3sKKwlBdHRyTnVt YmVyCXBhcmVudF9hdHRubzsKKwlUdXBsZURlc2MJbW9kZWxEZXNjOworCUxpc3QJICAgKmNv bExpc3QgPSBOSUw7CisKKwltb2RlbERlc2MgPSBSZWxhdGlvbkdldERlc2NyKHBhcmVudF9y ZWwpOworCisJZm9yIChwYXJlbnRfYXR0bm8gPSAxOyBwYXJlbnRfYXR0bm8gPD0gbW9kZWxE ZXNjLT5uYXR0czsKKwkJIHBhcmVudF9hdHRubysrKQorCXsKKwkJRm9ybV9wZ19hdHRyaWJ1 dGUgYXR0cmlidXRlID0gVHVwbGVEZXNjQXR0cihtb2RlbERlc2MsCisJCQkJCQkJCQkJCQkJ cGFyZW50X2F0dG5vIC0gMSk7CisJCUNvbHVtbkRlZiAgKmRlZjsKKworCQkvKiBJZ25vcmUg ZHJvcHBlZCBjb2x1bW5zIGluIHRoZSBwYXJlbnQuICovCisJCWlmIChhdHRyaWJ1dGUtPmF0 dGlzZHJvcHBlZCkKKwkJCWNvbnRpbnVlOworCisJCWRlZiA9IG1ha2VDb2x1bW5EZWYoTmFt ZVN0cihhdHRyaWJ1dGUtPmF0dG5hbWUpLCBhdHRyaWJ1dGUtPmF0dHR5cGlkLAorCQkJCQkJ CWF0dHJpYnV0ZS0+YXR0dHlwbW9kLCBhdHRyaWJ1dGUtPmF0dGNvbGxhdGlvbik7CisKKwkJ ZGVmLT5pc19ub3RfbnVsbCA9IGF0dHJpYnV0ZS0+YXR0bm90bnVsbDsKKworCQkvKiBDb3B5 IGlkZW50aXR5LiAqLworCQlkZWYtPmlkZW50aXR5ID0gYXR0cmlidXRlLT5hdHRpZGVudGl0 eTsKKworCQkvKiBDb3B5IGF0dGdlbmVyYXRlZC4gKi8KKwkJZGVmLT5nZW5lcmF0ZWQgPSBh dHRyaWJ1dGUtPmF0dGdlbmVyYXRlZDsKKworCQlkZWYtPnN0b3JhZ2UgPSBhdHRyaWJ1dGUt PmF0dHN0b3JhZ2U7CisKKwkJLyogTGlrZXdpc2UsIGNvcHkgY29tcHJlc3Npb24uICovCisJ CWlmIChDb21wcmVzc2lvbk1ldGhvZElzVmFsaWQoYXR0cmlidXRlLT5hdHRjb21wcmVzc2lv bikpCisJCQlkZWYtPmNvbXByZXNzaW9uID0KKwkJCQlwc3RyZHVwKEdldENvbXByZXNzaW9u TWV0aG9kTmFtZShhdHRyaWJ1dGUtPmF0dGNvbXByZXNzaW9uKSk7CisJCWVsc2UKKwkJCWRl Zi0+Y29tcHJlc3Npb24gPSBOVUxMOworCisJCS8qIEFkZCB0byBjb2x1bW4gbGlzdC4gKi8K KwkJY29sTGlzdCA9IGxhcHBlbmQoY29sTGlzdCwgZGVmKTsKKwl9CisKKwlyZXR1cm4gY29s TGlzdDsKK30KKworCisvKgorICogY3JlYXRlVGFibGVDb25zdHJhaW50czoKKyAqIGNyZWF0 ZSBjaGVjayBjb25zdHJhaW50cywgZGVmYXVsdCB2YWx1ZXMgYW5kIGdlbmVyYXRlZCB2YWx1 ZXMgZm9yIG5ld1JlbAorICogYmFzZWQgb24gcGFyZW50X3JlbC4gIHRhYiBpcyBwZW5kaW5n LXdvcmsgcXVldWUgZm9yIG5ld1JlbCwgd2UgbWF5IG5lZWQgaXQgaW4KKyAqIE1lcmdlUGFy dGl0aW9uc01vdmVSb3dzLgorICovCitzdGF0aWMgdm9pZAorY3JlYXRlVGFibGVDb25zdHJh aW50cyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsCisJCQkJCSAgIFJl bGF0aW9uIHBhcmVudF9yZWwsIFJlbGF0aW9uIG5ld1JlbCkKK3sKKwlUdXBsZURlc2MJdHVw bGVEZXNjOworCVR1cGxlQ29uc3RyICpjb25zdHI7CisJQXR0ck1hcCAgICAqYXR0bWFwOwor CUF0dHJOdW1iZXIJcGFyZW50X2F0dG5vOworCWludAkJCWNjbnVtOworCUxpc3QJICAgKkNv bnN0cmFpbnRzID0gTklMOworCUxpc3QJICAgKmNvb2tlZENvbnN0cmFpbnRzID0gTklMOwor CisJdHVwbGVEZXNjID0gUmVsYXRpb25HZXREZXNjcihwYXJlbnRfcmVsKTsKKwljb25zdHIg PSB0dXBsZURlc2MtPmNvbnN0cjsKKworCWlmICghY29uc3RyKQorCQlyZXR1cm47CisKKwkv KgorCSAqIENvbnN0cnVjdCBhIG1hcCBmcm9tIHRoZSBwYXJlbnQgcmVsYXRpb24ncyBhdHRu b3MgdG8gdGhlIGNoaWxkIHJlbCdzLgorCSAqIFRoaXMgcmUtY2hlY2tzIHR5cGUgbWF0Y2gg ZXRjLCBhbHRob3VnaCBpdCBzaG91bGRuJ3QgYmUgcG9zc2libGUgdG8KKwkgKiBoYXZlIGEg ZmFpbHVyZSBzaW5jZSBib3RoIHRhYmxlcyBhcmUgbG9ja2VkLgorCSAqLworCWF0dG1hcCA9 IGJ1aWxkX2F0dHJtYXBfYnlfbmFtZShSZWxhdGlvbkdldERlc2NyKG5ld1JlbCksCisJCQkJ CQkJCSAgIHR1cGxlRGVzYywKKwkJCQkJCQkJICAgZmFsc2UpOworCisJLyogQ3ljbGUgZm9y IGRlZmF1bHQgdmFsdWVzLiAqLworCWZvciAocGFyZW50X2F0dG5vID0gMTsgcGFyZW50X2F0 dG5vIDw9IHR1cGxlRGVzYy0+bmF0dHM7IHBhcmVudF9hdHRubysrKQorCXsKKwkJRm9ybV9w Z19hdHRyaWJ1dGUgYXR0cmlidXRlID0gVHVwbGVEZXNjQXR0cih0dXBsZURlc2MsCisJCQkJ CQkJCQkJCQkJcGFyZW50X2F0dG5vIC0gMSk7CisKKwkJLyogSWdub3JlIGRyb3BwZWQgY29s dW1ucyBpbiB0aGUgcGFyZW50LiAqLworCQlpZiAoYXR0cmlidXRlLT5hdHRpc2Ryb3BwZWQp CisJCQljb250aW51ZTsKKworCQkvKiBDb3B5IGRlZmF1bHQsIGlmIHByZXNlbnQgYW5kIGl0 IHNob3VsZCBiZSBjb3BpZWQuICovCisJCWlmIChhdHRyaWJ1dGUtPmF0dGhhc2RlZikKKwkJ eworCQkJTm9kZQkgICAqdGhpc19kZWZhdWx0ID0gTlVMTDsKKwkJCWJvb2wJCWZvdW5kX3do b2xlX3JvdzsKKwkJCUF0dHJOdW1iZXIJbnVtOworCQkJTm9kZQkgICAqZGVmOworCQkJTmV3 Q29sdW1uVmFsdWUgKm5ld3ZhbDsKKworCQkJaWYgKGF0dHJpYnV0ZS0+YXR0Z2VuZXJhdGVk ID09IEFUVFJJQlVURV9HRU5FUkFURURfVklSVFVBTCkKKwkJCQl0aGlzX2RlZmF1bHQgPSBi dWlsZF9nZW5lcmF0aW9uX2V4cHJlc3Npb24ocGFyZW50X3JlbCwgYXR0cmlidXRlLT5hdHRu dW0pOworCQkJZWxzZQorCQkJeworCQkJCXRoaXNfZGVmYXVsdCA9IFR1cGxlRGVzY0dldERl ZmF1bHQodHVwbGVEZXNjLCBhdHRyaWJ1dGUtPmF0dG51bSk7CisJCQkJaWYgKHRoaXNfZGVm YXVsdCA9PSBOVUxMKQorCQkJCQllbG9nKEVSUk9SLCAiZGVmYXVsdCBleHByZXNzaW9uIG5v dCBmb3VuZCBmb3IgYXR0cmlidXRlICVkIG9mIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCQkg YXR0cmlidXRlLT5hdHRudW0sIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcmVudF9yZWwp KTsKKwkJCX0KKworCQkJbnVtID0gYXR0bWFwLT5hdHRudW1zW3BhcmVudF9hdHRubyAtIDFd OworCQkJZGVmID0gbWFwX3ZhcmlhYmxlX2F0dG5vcyh0aGlzX2RlZmF1bHQsIDEsIDAsIGF0 dG1hcCwgSW52YWxpZE9pZCwgJmZvdW5kX3dob2xlX3Jvdyk7CisKKwkJCWlmIChmb3VuZF93 aG9sZV9yb3cgJiYgYXR0cmlidXRlLT5hdHRnZW5lcmF0ZWQgIT0gJ1wwJykKKwkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCisJCQkJCQllcnJtc2coImNhbm5vdCBjb252ZXJ0IHdob2xlLXJvdyB0YWJsZSByZWZl cmVuY2UiKSwKKwkJCQkJCWVycmRldGFpbCgiR2VuZXJhdGlvbiBleHByZXNzaW9uIGZvciBj b2x1bW4gXCIlc1wiIGNvbnRhaW5zIGEgd2hvbGUtcm93IHJlZmVyZW5jZSB0byB0YWJsZSBc IiVzXCIuIiwKKwkJCQkJCQkJICBOYW1lU3RyKGF0dHJpYnV0ZS0+YXR0bmFtZSksCisJCQkJ CQkJCSAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocGFyZW50X3JlbCkpKTsKKworCQkJLyog QWRkIGEgcHJlLWNvb2tlZCBkZWZhdWx0IGV4cHJlc3Npb24uICovCisJCQlTdG9yZUF0dHJE ZWZhdWx0KG5ld1JlbCwgbnVtLCBkZWYsIHRydWUpOworCisJCQkvKgorCQkJICogU3RvcmVk IGdlbmVyYXRlZCBjb2x1bW4gZXhwcmVzc2lvbnMgaW4gcGFyZW50X3JlbCBtaWdodAorCQkJ ICogcmVmZXJlbmNlIHRhYmxlb2lkLiAgbmV3UmVsLCBwYXJlbnRfcmVsIHRhYmxlb2lkIGNs ZWFyIGlzIG5vdAorCQkJICogdGhlIHNhbWUuIElmIHNvLCB0aGVzZSBzdG9yZWQgZ2VuZXJh dGVkIGNvbHVtbnMgcmVxdWlyZQorCQkJICogcmVjb21wdXRhdGlvbiBmb3IgbmV3UmVsIHdp dGhpbiBNZXJnZVBhcnRpdGlvbnNNb3ZlUm93cy4KKwkJCSAqLworCQkJaWYgKGF0dHJpYnV0 ZS0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5FUkFURURfU1RPUkVEKQorCQkJewor CQkJCW5ld3ZhbCA9IChOZXdDb2x1bW5WYWx1ZSAqKSBwYWxsb2MwKHNpemVvZihOZXdDb2x1 bW5WYWx1ZSkpOworCQkJCW5ld3ZhbC0+YXR0bnVtID0gbnVtOworCQkJCW5ld3ZhbC0+ZXhw ciA9IGV4cHJlc3Npb25fcGxhbm5lcigoRXhwciAqKSBkZWYpOworCQkJCW5ld3ZhbC0+aXNf Z2VuZXJhdGVkID0gKGF0dHJpYnV0ZS0+YXR0Z2VuZXJhdGVkICE9ICdcMCcpOworCQkJCXRh Yi0+bmV3dmFscyA9IGxhcHBlbmQodGFiLT5uZXd2YWxzLCBuZXd2YWwpOworCQkJfQorCQl9 CisJfQorCisJLyogQ3ljbGUgZm9yIENIRUNLIGNvbnN0cmFpbnRzLiAqLworCWZvciAoY2Nu dW0gPSAwOyBjY251bSA8IGNvbnN0ci0+bnVtX2NoZWNrOyBjY251bSsrKQorCXsKKwkJY2hh cgkgICAqY2NuYW1lID0gY29uc3RyLT5jaGVja1tjY251bV0uY2NuYW1lOworCQljaGFyCSAg ICpjY2JpbiA9IGNvbnN0ci0+Y2hlY2tbY2NudW1dLmNjYmluOworCQlib29sCQljY2VuZm9y Y2VkID0gY29uc3RyLT5jaGVja1tjY251bV0uY2NlbmZvcmNlZDsKKwkJYm9vbAkJY2Nub2lu aGVyaXQgPSBjb25zdHItPmNoZWNrW2NjbnVtXS5jY25vaW5oZXJpdDsKKwkJYm9vbAkJY2N2 YWxpZCA9IGNvbnN0ci0+Y2hlY2tbY2NudW1dLmNjdmFsaWQ7CisJCU5vZGUJICAgKmNjYmlu X25vZGU7CisJCWJvb2wJCWZvdW5kX3dob2xlX3JvdzsKKwkJQ29uc3RyYWludCAqY29uc3Ry OworCisJCS8qCisJCSAqIFBhcnRpdGlvbmVkIHRhYmxlIGNhbiBub3QgaGF2ZSBOTyBJTkhF UklUIGNoZWNrIGNvbnN0cmFpbnQgKHNlZQorCQkgKiBTdG9yZVJlbENoZWNrIGZ1bmN0aW9u KS4KKwkJICovCisJCUFzc2VydCghY2Nub2luaGVyaXQpOworCisJCWNjYmluX25vZGUgPSBt YXBfdmFyaWFibGVfYXR0bm9zKHN0cmluZ1RvTm9kZShjY2JpbiksCisJCQkJCQkJCQkJIDEs IDAsCisJCQkJCQkJCQkJIGF0dG1hcCwKKwkJCQkJCQkJCQkgSW52YWxpZE9pZCwgJmZvdW5k X3dob2xlX3Jvdyk7CisKKwkJLyoKKwkJICogRm9yIHRoZSBtb21lbnQgd2UgaGF2ZSB0byBy ZWplY3Qgd2hvbGUtcm93IHZhcmlhYmxlcyAoYXMgZm9yIExJS0UKKwkJICogYW5kIGluaGVy aXRhbmNlcykuCisJCSAqLworCQlpZiAoZm91bmRfd2hvbGVfcm93KQorCQkJZWxvZyhFUlJP UiwgIkNvbnN0cmFpbnQgXCIlc1wiIGNvbnRhaW5zIGEgd2hvbGUtcm93IHJlZmVyZW5jZSB0 byB0YWJsZSBcIiVzXCIuIiwKKwkJCQkgY2NuYW1lLAorCQkJCSBSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShwYXJlbnRfcmVsKSk7CisKKwkJY29uc3RyID0gbWFrZU5vZGUoQ29uc3RyYWlu dCk7CisJCWNvbnN0ci0+Y29udHlwZSA9IENPTlNUUl9DSEVDSzsKKwkJY29uc3RyLT5jb25u YW1lID0gcHN0cmR1cChjY25hbWUpOworCQljb25zdHItPmRlZmVycmFibGUgPSBmYWxzZTsK KwkJY29uc3RyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJY29uc3RyLT5pc19lbmZvcmNl ZCA9IGNjZW5mb3JjZWQ7CisJCWNvbnN0ci0+c2tpcF92YWxpZGF0aW9uID0gIWNjdmFsaWQ7 CisJCWNvbnN0ci0+aW5pdGlhbGx5X3ZhbGlkID0gY2N2YWxpZDsKKwkJY29uc3RyLT5pc19u b19pbmhlcml0ID0gY2Nub2luaGVyaXQ7CisJCWNvbnN0ci0+cmF3X2V4cHIgPSBOVUxMOwor CQljb25zdHItPmNvb2tlZF9leHByID0gbm9kZVRvU3RyaW5nKGNjYmluX25vZGUpOworCQlj b25zdHItPmxvY2F0aW9uID0gLTE7CisJCUNvbnN0cmFpbnRzID0gbGFwcGVuZChDb25zdHJh aW50cywgY29uc3RyKTsKKwl9CisKKwkvKiBpbnN0YWxsIGFsbCBDSEVDSyBjb25zdHJhaW50 cy4gKi8KKwljb29rZWRDb25zdHJhaW50cyA9IEFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMo bmV3UmVsLCBOSUwsIENvbnN0cmFpbnRzLAorCQkJCQkJCQkJCQkJICBmYWxzZSwgdHJ1ZSwg dHJ1ZSwgTlVMTCk7CisKKwkvKiBNYWtlIHRoZSBhZGRpdGlvbmFsIGNhdGFsb2cgY2hhbmdl cyB2aXNpYmxlICovCisJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKworCS8qCisJICog cGFyZW50X3JlbCBjaGVjayBjb25zdHJhaW50IGV4cHJlc3NzaW9uIG1heSByZWZlcmVuY2Ug dGFibGVvaWQsIHNvCisJICogbGF0ZXIgaW4gTWVyZ2VQYXJ0aXRpb25zTW92ZVJvd3MsIHdl IG5lZWQgZXZ1bGF0ZSB0aGUgY2hlY2sgY29uc3RyYWludAorCSAqIGFnYWluIGZvciB0aGUg bmV3UmVsLiBXZSBjYW4gY2hlY2sgd2VhdGhlciBjaGVjayBjb25zdHJhaW50IGNvbnRhaW4K KwkgKiB0YWJsZW9pZCByZWZlcmVuY2Ugb3Igbm90IHZpYSBwdWxsX3ZhcmF0dG5vcy4KKwkg Ki8KKwlmb3JlYWNoX3B0cihDb29rZWRDb25zdHJhaW50LCBjY29uLCBjb29rZWRDb25zdHJh aW50cykKKwl7CisJCWlmICghY2Nvbi0+c2tpcF92YWxpZGF0aW9uKQorCQl7CisJCQlOb2Rl CSAgICpxdWFsOworCQkJQml0bWFwc2V0ICAqYXR0bnVtcyA9IE5VTEw7CisKKwkJCUFzc2Vy dChjY29uLT5jb250eXBlID09IENPTlNUUl9DSEVDSyk7CisJCQlxdWFsID0gZXhwYW5kX2dl bmVyYXRlZF9jb2x1bW5zX2luX2V4cHIoY2Nvbi0+ZXhwciwgbmV3UmVsLCAxKTsKKwkJCXB1 bGxfdmFyYXR0bm9zKHF1YWwsIDEsICZhdHRudW1zKTsKKworCQkJLyoKKwkJCSAqIEFkZCBj aGVjayBvbmx5IGlmIGl0IGNvbnRhaW5zIHRhYmxlb2lkCisJCQkgKiAoVGFibGVPaWRBdHRy aWJ1dGVOdW1iZXIpLgorCQkJICovCisJCQlpZiAoYm1zX2lzX21lbWJlcihUYWJsZU9pZEF0 dHJpYnV0ZU51bWJlciAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCisJ CQkJCQkJICBhdHRudW1zKSkKKwkJCXsKKwkJCQlOZXdDb25zdHJhaW50ICpuZXdjb247CisK KwkJCQluZXdjb24gPSAoTmV3Q29uc3RyYWludCAqKSBwYWxsb2MwKHNpemVvZihOZXdDb25z dHJhaW50KSk7CisJCQkJbmV3Y29uLT5uYW1lID0gY2Nvbi0+bmFtZTsKKwkJCQluZXdjb24t PmNvbnR5cGUgPSBDT05TVFJfQ0hFQ0s7CisJCQkJbmV3Y29uLT5xdWFsID0gcXVhbDsKKwor CQkJCXRhYi0+Y29uc3RyYWludHMgPSBsYXBwZW5kKHRhYi0+Y29uc3RyYWludHMsIG5ld2Nv bik7CisJCQl9CisJCX0KKwl9CisKKwkvKiBEb24ndCBuZWVkIHRoZSBjb29rZWRDb25zdHJh aW50cyBhbnkgbW9yZS4gKi8KKwlsaXN0X2ZyZWVfZGVlcChjb29rZWRDb25zdHJhaW50cyk7 CisKKwkvKiBSZXByb2R1Y2Ugbm90LW51bGwgY29uc3RyYWludHMuICovCisJaWYgKGNvbnN0 ci0+aGFzX25vdF9udWxsKQorCXsKKwkJTGlzdAkgICAqbm5jb25zdHJhaW50czsKKworCQkv KgorCQkgKiBUaGUgImluY2x1ZGVfbm9pbmgiIGFyZ3VtZW50IGlzIGZhbHNlIGJlY2F1c2Ug YSBwYXJ0aXRpb25lZCB0YWJsZQorCQkgKiBjYW5ub3QgaGF2ZSBOTyBJTkhFUklUIGNvbnN0 cmFpbnQuCisJCSAqLworCQlubmNvbnN0cmFpbnRzID0gUmVsYXRpb25HZXROb3ROdWxsQ29u c3RyYWludHMoUmVsYXRpb25HZXRSZWxpZChwYXJlbnRfcmVsKSwKKwkJCQkJCQkJCQkJCQkg IGZhbHNlLCBmYWxzZSk7CisKKwkJQXNzZXJ0KGxpc3RfbGVuZ3RoKG5uY29uc3RyYWludHMp ID4gMCk7CisKKwkJLyoKKwkJICogV2UgYWxyZWFkeSBzZXQgcGdfYXR0cmlidXRlLmF0dG5v dG51bGwgaW4gY3JlYXRlUGFydGl0aW9uVGFibGUuIE5vCisJCSAqIG5lZWQgY2FsbCBzZXRf YXR0bm90bnVsbCBhZ2Fpbi4KKwkJICovCisJCUFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMo bmV3UmVsLCBOSUwsIG5uY29uc3RyYWludHMsIGZhbHNlLCB0cnVlLCB0cnVlLCBOVUxMKTsK Kwl9Cit9CisKKworLyoKKyAqIGNyZWF0ZVBhcnRpdGlvblRhYmxlOgorICoKKyAqIENyZWF0 ZSBhIG5ldyBwYXJ0aXRpb24gKG5ld1BhcnROYW1lKSBmb3IgcGFydGl0aW9uZWQgdGFibGUg KHBhcmVudF9yZWwpLgorICogb3duZXJJZCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBwYXJ0aXRp b24gb24gd2hpY2ggdGhlIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQsCisgKiBzbyBpdCBpcyBw YXNzZWQgc2VwYXJhdGVseS4gIFRoZSBuZXcgcGFydGl0aW9uIHdpbGwgaW5oZXJpdCB0aGUg YWNjZXNzIG1ldGhvZAorICogYW5kIHBlcnNpc3RlbmNlIHR5cGUgZnJvbSB0aGUgcGFyZW50 IHRhYmxlLgorICoKKyAqIHJldHVybnMgdGhlIGNyZWF0ZWQgcmVsYXRpb24gKGxvY2tlZCBp biBBY2Nlc3NFeGNsdXNpdmVMb2NrIG1vZGUpLgorICovCitzdGF0aWMgUmVsYXRpb24KK2Ny ZWF0ZVBhcnRpdGlvblRhYmxlKExpc3QgKip3cXVldWUsIFJhbmdlVmFyICpuZXdQYXJ0TmFt ZSwKKwkJCQkJIFJlbGF0aW9uIHBhcmVudF9yZWwsIE9pZCBvd25lcklkKQoreworCVJlbGF0 aW9uCW5ld1JlbDsKKwlPaWQJCQluZXdSZWxJZDsKKwlPaWQJCQlleGlzdGluZ1JlbGlkOwor CVR1cGxlRGVzYwlkZXNjcmlwdG9yOworCUxpc3QJICAgKmNvbExpc3QgPSBOSUw7CisJT2lk CQkJcmVsYW1JZDsKKwlPaWQJCQluYW1lc3BhY2VJZDsKKwlBbHRlcmVkVGFibGVJbmZvICpu ZXdfcGFydHJlbF90YWI7CisKKwkvKiBJZiBleGlzdGluZyByZWwgaXMgdGVtcCwgaXQgbXVz dCBiZWxvbmcgdG8gdGhpcyBzZXNzaW9uICovCisJaWYgKFJFTEFUSU9OX0lTX09USEVSX1RF TVAocGFyZW50X3JlbCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RF X1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQllcnJtc2coImNhbm5vdCBjcmVhdGUgYXMgcGFy dGl0aW9uIG9mIHRlbXBvcmFyeSByZWxhdGlvbiBvZiBhbm90aGVyIHNlc3Npb24iKSk7CisK KwkvKiBMb29rIHVwIGluaGVyaXRhbmNlIGFuY2VzdG9ycyBhbmQgZ2VuZXJhdGUgcmVsYXRp b24gc2NoZW1hLiAqLworCWNvbExpc3QgPSBnZXRBdHRyaWJ1dGVzTGlzdChwYXJlbnRfcmVs KTsKKworCS8qIENyZWF0ZSBhIHR1cGxlIGRlc2NyaXB0b3IgZnJvbSB0aGUgcmVsYXRpb24g c2NoZW1hLiAqLworCWRlc2NyaXB0b3IgPSBCdWlsZERlc2NGb3JSZWxhdGlvbihjb2xMaXN0 KTsKKworCS8qIExvb2sgdXAgdGhlIGFjY2VzcyBtZXRob2QgZm9yIG5ldyByZWxhdGlvbi4g Ki8KKwlyZWxhbUlkID0gKHBhcmVudF9yZWwtPnJkX3JlbC0+cmVsYW0gIT0gSW52YWxpZE9p ZCkgPyBwYXJlbnRfcmVsLT5yZF9yZWwtPnJlbGFtIDogSEVBUF9UQUJMRV9BTV9PSUQ7CisK KwkvKiBMb29rIHVwIHRoZSBuYW1lc3BhY2UgaW4gd2hpY2ggd2UgYXJlIHN1cHBvc2VkIHRv IGNyZWF0ZSB0aGUgcmVsYXRpb24uICovCisJbmFtZXNwYWNlSWQgPQorCQlSYW5nZVZhckdl dEFuZENoZWNrQ3JlYXRpb25OYW1lc3BhY2UobmV3UGFydE5hbWUsIE5vTG9jaywgJmV4aXN0 aW5nUmVsaWQpOworCWlmIChPaWRJc1ZhbGlkKGV4aXN0aW5nUmVsaWQpKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCWVy cm1zZygicmVsYXRpb24gXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwgbmV3UGFydE5hbWUtPnJl bG5hbWUpKTsKKworCS8qCisJICogV2UgaW50ZW5kZWQgdG8gY3JlYXRlIHRoZSBwYXJ0aXRp b24gd2l0aCB0aGUgc2FtZSBwZXJzaXN0ZW5jZSBhcyB0aGUKKwkgKiBwYXJlbnQgdGFibGUs IGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIHJlY2hlY2sgYmVjYXVzZSB0aGF0IG1pZ2h0IGJlCisJ ICogYWZmZWN0ZWQgYnkgdGhlIHNlYXJjaF9wYXRoLiAgSWYgdGhlIHBhcmVudCBpcyBwZXJt YW5lbnQsIHNvIG11c3QgYmUKKwkgKiBhbGwgb2YgaXRzIHBhcnRpdGlvbnMuCisJICovCisJ aWYgKHBhcmVudF9yZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgIT0gUkVMUEVSU0lTVEVO Q0VfVEVNUCAmJgorCQluZXdQYXJ0TmFtZS0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lT VEVOQ0VfVEVNUCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfV1JP TkdfT0JKRUNUX1RZUEUpLAorCQkJCWVycm1zZygiY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFy eSByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgcGVybWFuZW50IHJlbGF0aW9uIFwiJXNcIiIs CisJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcmVudF9yZWwpKSk7CisKKwkv KiBQZXJtYW5lbnQgcmVscyBjYW5ub3QgYmUgcGFydGl0aW9ucyBiZWxvbmdpbmcgdG8gdGVt cG9yYXJ5IHBhcmVudCAqLworCWlmIChuZXdQYXJ0TmFtZS0+cmVscGVyc2lzdGVuY2UgIT0g UkVMUEVSU0lTVEVOQ0VfVEVNUCAmJgorCQlwYXJlbnRfcmVsLT5yZF9yZWwtPnJlbHBlcnNp c3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ ZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQllcnJtc2coImNhbm5v dCBjcmVhdGUgYSBwZXJtYW5lbnQgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHRlbXBvcmFy eSByZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShw YXJlbnRfcmVsKSkpOworCisJLyogQ3JlYXRlIHRoZSByZWxhdGlvbi4gKi8KKwluZXdSZWxJ ZCA9IGhlYXBfY3JlYXRlX3dpdGhfY2F0YWxvZyhuZXdQYXJ0TmFtZS0+cmVsbmFtZSwKKwkJ CQkJCQkJCQluYW1lc3BhY2VJZCwKKwkJCQkJCQkJCQlwYXJlbnRfcmVsLT5yZF9yZWwtPnJl bHRhYmxlc3BhY2UsCisJCQkJCQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQlJbnZhbGlk T2lkLAorCQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJb3duZXJJZCwKKwkJCQkJ CQkJCQlyZWxhbUlkLAorCQkJCQkJCQkJCWRlc2NyaXB0b3IsCisJCQkJCQkJCQkJTklMLAor CQkJCQkJCQkJCVJFTEtJTkRfUkVMQVRJT04sCisJCQkJCQkJCQkJbmV3UGFydE5hbWUtPnJl bHBlcnNpc3RlbmNlLAorCQkJCQkJCQkJCWZhbHNlLAorCQkJCQkJCQkJCWZhbHNlLAorCQkJ CQkJCQkJCU9OQ09NTUlUX05PT1AsCisJCQkJCQkJCQkJKERhdHVtKSAwLAorCQkJCQkJCQkJ CXRydWUsCisJCQkJCQkJCQkJYWxsb3dTeXN0ZW1UYWJsZU1vZHMsCisJCQkJCQkJCQkJdHJ1 ZSwKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCU5VTEwpOworCisJLyoKKwkg KiBXZSBtdXN0IGJ1bXAgdGhlIGNvbW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBuZXdseS1j cmVhdGVkIHJlbGF0aW9uCisJICogdHVwbGUgdmlzaWJsZSBmb3Igb3BlbmluZy4KKwkgKi8K KwlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCisJLyoKKwkgKiBPcGVuIHRoZSBuZXcg cGFydGl0aW9uIHdpdGggbm8gbG9jaywgYmVjYXVzZSB3ZSBhbHJlYWR5IGhhdmUKKwkgKiBB Y2Nlc3NFeGNsdXNpdmVMb2NrIHBsYWNlZCB0aGVyZSBhZnRlciBjcmVhdGlvbi4KKwkgKi8K KwluZXdSZWwgPSB0YWJsZV9vcGVuKG5ld1JlbElkLCBOb0xvY2spOworCisJLyogRmluZCBv ciBjcmVhdGUgd29yayBxdWV1ZSBlbnRyeSBmb3IgbmV3bHkgY3JlYXRlZCB0YWJsZS4gKi8K KwluZXdfcGFydHJlbF90YWIgPSBBVEdldFF1ZXVlRW50cnkod3F1ZXVlLCBuZXdSZWwpOwor CisJLyogQ3JlYXRlIGNvbnN0cmFpbnRzLCBkZWZhdWx0IHZhbHVlcyBhbmQgZ2VuZXJhdGVk IHZhbHVlcyAqLworCWNyZWF0ZVRhYmxlQ29uc3RyYWludHMod3F1ZXVlLCBuZXdfcGFydHJl bF90YWIsIHBhcmVudF9yZWwsIG5ld1JlbCk7CisKKwkvKgorCSAqIE5lZWQgdG8gY2FsbCBD b21tYW5kQ291bnRlckluY3JlbWVudCwgc28gZnJlc2ggcmVsY2FjaGUgZW50cnkgaGF2ZQor CSAqIG5ld2x5IGluc3RhbGxlZCBjb25zdHJhaW50IGluZm8uCisJICovCisJQ29tbWFuZENv dW50ZXJJbmNyZW1lbnQoKTsKKworCXJldHVybiBuZXdSZWw7Cit9CisKKy8qCisgKiBNZXJn ZVBhcnRpdGlvbnNNb3ZlUm93czogc2NhbiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZCAobWVy Z2luZ1BhcnRpdGlvbnMpCisgKiBvZiB0aGUgcGFydGl0aW9uZWQgdGFibGUgYW5kIG1vdmUg cm93cyBpbnRvIHRoZSBuZXcgcGFydGl0aW9uCisgKiAobmV3UGFydFJlbCkuIFdlIGFsc28g dmVydGlmeSBjaGVjayBjb25zdHJhaW50cyBhZ2FpbnN0IHRoZXNlIHJvd3MuCisgKi8KK3N0 YXRpYyB2b2lkCitNZXJnZVBhcnRpdGlvbnNNb3ZlUm93cyhMaXN0ICoqd3F1ZXVlLCBMaXN0 ICptZXJnaW5nUGFydGl0aW9ucywgUmVsYXRpb24gbmV3UGFydFJlbCkKK3sKKwlDb21tYW5k SWQJbXljaWQ7CisJRVN0YXRlCSAgICplc3RhdGU7CisJQWx0ZXJlZFRhYmxlSW5mbyAqdGFi OworCUxpc3RDZWxsICAgKmx0YWI7CisKKwkvKiBUaGUgRlNNIGlzIGVtcHR5LCBzbyBkb24n dCBib3RoZXIgdXNpbmcgaXQuICovCisJaW50CQkJdGlfb3B0aW9ucyA9IFRBQkxFX0lOU0VS VF9TS0lQX0ZTTTsKKwlCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0ZTsJLyogc3RhdGUgb2YgYnVs ayBpbnNlcnRzIGZvciBwYXJ0aXRpb24gKi8KKwlUdXBsZVRhYmxlU2xvdCAqZHN0c2xvdDsK KworCS8qIEZpbmQgdGhlIHdvcmsgcXVldWUgZW50cnkgZm9yIG5ldyBwYXJ0aXRpb24gdGFi bGU6IG5ld1BhcnRSZWwuICovCisJdGFiID0gQVRHZXRRdWV1ZUVudHJ5KHdxdWV1ZSwgbmV3 UGFydFJlbCk7CisKKwkvKiBHZW5lcmF0ZSB0aGUgY29uc3RyYWludCBhbmQgZGVmYXVsdCBl eGVjdXRpb24gc3RhdGVzLiAqLworCWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsK KworCWJ1aWxkRXhwcmVzc2lvbkV4ZWN1dGlvblN0YXRlcyh0YWIsIG5ld1BhcnRSZWwsIGVz dGF0ZSk7CisKKwlteWNpZCA9IEdldEN1cnJlbnRDb21tYW5kSWQodHJ1ZSk7CisKKwkvKiBQ cmVwYXJlIGEgQnVsa0luc2VydFN0YXRlIGZvciB0YWJsZV90dXBsZV9pbnNlcnQuICovCisJ YmlzdGF0ZSA9IEdldEJ1bGtJbnNlcnRTdGF0ZSgpOworCisJLyogQ3JlYXRlIG5lY2Vzc2Fy eSB0dXBsZSBzbG90LiAqLworCWRzdHNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShuZXdQYXJ0 UmVsLCBOVUxMKTsKKworCWZvcmVhY2hfb2lkKG1lcmdpbmdfb2lkLCBtZXJnaW5nUGFydGl0 aW9ucykKKwl7CisJCUV4cHJDb250ZXh0ICplY29udGV4dDsKKwkJVHVwbGVUYWJsZVNsb3Qg KnNyY3Nsb3Q7CisJCVR1cGxlQ29udmVyc2lvbk1hcCAqdHVwbGVfbWFwOworCQlUYWJsZVNj YW5EZXNjIHNjYW47CisJCU1lbW9yeUNvbnRleHQgb2xkQ3h0OworCQlTbmFwc2hvdAlzbmFw c2hvdDsKKwkJUmVsYXRpb24JbWVyZ2luZ1BhcnRpdGlvbjsKKworCQllY29udGV4dCA9IEdl dFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKKworCQkvKgorCQkgKiBQYXJ0aXRpb24g aXMgYWxyZWFkeSBsb2NrZWQgaW4gdGhlIHRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdl CisJCSAqIGZ1bmN0aW9uLgorCQkgKi8KKwkJbWVyZ2luZ1BhcnRpdGlvbiA9IHRhYmxlX29w ZW4obWVyZ2luZ19vaWQsIE5vTG9jayk7CisKKwkJLyogQ3JlYXRlIHR1cGxlIHNsb3QgZm9y IG5ldyBwYXJ0aXRpb24uICovCisJCXNyY3Nsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShtZXJn aW5nUGFydGl0aW9uLCBOVUxMKTsKKworCQkvKgorCQkgKiBNYXAgY29tcHV0aW5nIGZvciBt b3ZpbmcgYXR0cmlidXRlcyBvZiBtZXJnZWQgcGFydGl0aW9uIHRvIG5ldworCQkgKiBwYXJ0 aXRpb24uCisJCSAqLworCQl0dXBsZV9tYXAgPSBjb252ZXJ0X3R1cGxlc19ieV9uYW1lKFJl bGF0aW9uR2V0RGVzY3IobWVyZ2luZ1BhcnRpdGlvbiksCisJCQkJCQkJCQkJICAgUmVsYXRp b25HZXREZXNjcihuZXdQYXJ0UmVsKSk7CisKKwkJLyogU2NhbiB0aHJvdWdoIHRoZSByb3dz LiAqLworCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3Qo KSk7CisJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4obWVyZ2luZ1BhcnRpdGlvbiwgc25hcHNo b3QsIDAsIE5VTEwpOworCisJCS8qCisJCSAqIFN3aXRjaCB0byBwZXItdHVwbGUgbWVtb3J5 IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxlCisJCSAqIHByb2R1Y2VkLCBz byB3ZSBkb24ndCBsZWFrIG1lbW9yeS4KKwkJICovCisJCW9sZEN4dCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQoZXN0YXRlKSk7CisKKwkJd2hp bGUgKHRhYmxlX3NjYW5fZ2V0bmV4dHNsb3Qoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24s IHNyY3Nsb3QpKQorCQl7CisJCQlUdXBsZVRhYmxlU2xvdCAqaW5zZXJ0c2xvdDsKKworCQkJ Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkJaWYgKHR1cGxlX21hcCkKKwkJCXsKKwkJ CQkvKiBOZWVkIHRvIHVzZSBtYXAgdG8gY29weSBhdHRyaWJ1dGVzLiAqLworCQkJCWluc2Vy dHNsb3QgPSBleGVjdXRlX2F0dHJfbWFwX3Nsb3QodHVwbGVfbWFwLT5hdHRyTWFwLCBzcmNz bG90LCBkc3RzbG90KTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlzbG90X2dldGFsbGF0 dHJzKHNyY3Nsb3QpOworCisJCQkJLyogQ29weSBhdHRyaWJ1dGVzIGRpcmVjdGx5LiAqLwor CQkJCWluc2VydHNsb3QgPSBkc3RzbG90OworCisJCQkJRXhlY0NsZWFyVHVwbGUoaW5zZXJ0 c2xvdCk7CisKKwkJCQltZW1jcHkoaW5zZXJ0c2xvdC0+dHRzX3ZhbHVlcywgc3Jjc2xvdC0+ dHRzX3ZhbHVlcywKKwkJCQkJICAgc2l6ZW9mKERhdHVtKSAqIHNyY3Nsb3QtPnR0c19udmFs aWQpOworCQkJCW1lbWNweShpbnNlcnRzbG90LT50dHNfaXNudWxsLCBzcmNzbG90LT50dHNf aXNudWxsLAorCQkJCQkgICBzaXplb2YoYm9vbCkgKiBzcmNzbG90LT50dHNfbnZhbGlkKTsK KworCQkJCUV4ZWNTdG9yZVZpcnR1YWxUdXBsZShpbnNlcnRzbG90KTsKKwkJCX0KKworCQkJ LyoKKwkJCSAqIENvbnN0cmFpbnRzIGFuZCBHRU5FUkFURUQgZXhwcmVzc2lvbnMgbWlnaHQg cmVmZXJlbmNlIHRoZQorCQkJICogdGFibGVvaWQgY29sdW1uLCBzbyBmaWxsIHR0c190YWJs ZU9pZCB3aXRoIHRoZSBkZXNpcmVkIHZhbHVlLgorCQkJICogKFdlIG11c3QgZG8gdGhpcyBl YWNoIHRpbWUsIGJlY2F1c2UgaXQgZ2V0cyBvdmVyd3JpdHRlbiB3aXRoCisJCQkgKiBuZXdy ZWwncyBPSUQgZHVyaW5nIHN0b3JpbmcuKQorCQkJICovCisJCQlpbnNlcnRzbG90LT50dHNf dGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKG5ld1BhcnRSZWwpOworCisJCQkvKgorCQkJ ICogTm93LCBldmFsdWF0ZSBhbnkgZ2VuZXJhdGVkIGV4cHJlc3Npb25zIHdob3NlIGlucHV0 cyBjb21lIGZyb20KKwkJCSAqIHRoZSBuZXcgdHVwbGUuICBXZSBhc3N1bWUgdGhlc2UgY29s dW1ucyB3b24ndCByZWZlcmVuY2UgZWFjaAorCQkJICogb3RoZXIsIHNvIHRoYXQgdGhlcmUn cyBubyBvcmRlcmluZyBkZXBlbmRlbmN5LgorCQkJICovCisJCQlldmFsdWF0ZUdlbmVyYXRl ZEV4cHJlc3Npb25zQW5kQ2hlY2tDb25zdHJhaW50cyh0YWIsIG5ld1BhcnRSZWwsCisJCQkJ CQkJCQkJCQkJCQlpbnNlcnRzbG90LCBlY29udGV4dCk7CisKKwkJCS8qIFdyaXRlIHRoZSB0 dXBsZSBvdXQgdG8gdGhlIG5ldyByZWxhdGlvbi4gKi8KKwkJCXRhYmxlX3R1cGxlX2luc2Vy dChuZXdQYXJ0UmVsLCBpbnNlcnRzbG90LCBteWNpZCwKKwkJCQkJCQkgICB0aV9vcHRpb25z LCBiaXN0YXRlKTsKKworCQkJUmVzZXRFeHByQ29udGV4dChlY29udGV4dCk7CisJCX0KKwor CQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ3h0KTsKKwkJdGFibGVfZW5kc2NhbihzY2Fu KTsKKwkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKKworCQlpZiAodHVwbGVfbWFw KQorCQkJZnJlZV9jb252ZXJzaW9uX21hcCh0dXBsZV9tYXApOworCisJCUV4ZWNEcm9wU2lu Z2xlVHVwbGVUYWJsZVNsb3Qoc3Jjc2xvdCk7CisJCXRhYmxlX2Nsb3NlKG1lcmdpbmdQYXJ0 aXRpb24sIE5vTG9jayk7CisJfQorCisJRnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRlKTsKKwlF eGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KGRzdHNsb3QpOworCUZyZWVCdWxrSW5zZXJ0 U3RhdGUoYmlzdGF0ZSk7CisKKwl0YWJsZV9maW5pc2hfYnVsa19pbnNlcnQobmV3UGFydFJl bCwgdGlfb3B0aW9ucyk7CisKKwkvKgorCSAqIFdlIGRvbid0IG5lZWQgcHJvY2VzcyB0aGlz IG5ld1BhcnRSZWwgc2luY2Ugd2UgYWxyZWFkeSBwcm9jZXNzZWQgaW4KKwkgKiBoZXJlLCBz byBkZWxldGUgdGhlIEFMVEVSIFRBQkxFIHF1ZXVlIG9mIGl0LgorCSAqLworCWZvcmVhY2go bHRhYiwgKndxdWV1ZSkKKwl7CisJCXRhYiA9IChBbHRlcmVkVGFibGVJbmZvICopIGxmaXJz dChsdGFiKTsKKwkJaWYgKHRhYi0+cmVsaWQgPT0gUmVsYXRpb25HZXRSZWxpZChuZXdQYXJ0 UmVsKSkKKwkJCSp3cXVldWUgPSBsaXN0X2RlbGV0ZV9jZWxsKCp3cXVldWUsIGx0YWIpOwor CX0KK30KKworLyoKKyAqIGRldGFjaFBhcnRpdGlvblRhYmxlOiBkZXRhY2ggcGFydGl0aW9u ICJjaGlsZF9yZWwiIGZyb20gcGFydGl0aW9uZWQgdGFibGUKKyAqICJwYXJlbnRfcmVsIiB3 aXRoIGRlZmF1bHQgcGFydGl0aW9uIGlkZW50aWZpZXIgImRlZmF1bHRQYXJ0T2lkIgorICov CitzdGF0aWMgdm9pZAorZGV0YWNoUGFydGl0aW9uVGFibGUoUmVsYXRpb24gcGFyZW50X3Jl bCwgUmVsYXRpb24gY2hpbGRfcmVsLCBPaWQgZGVmYXVsdFBhcnRPaWQpCit7CisJLyogUmVt b3ZlIHRoZSBwZ19pbmhlcml0cyByb3cgZmlyc3QuICovCisJUmVtb3ZlSW5oZXJpdGFuY2Uo Y2hpbGRfcmVsLCBwYXJlbnRfcmVsLCBmYWxzZSk7CisKKwkvKgorCSAqIERldGFjaGluZyB0 aGUgcGFydGl0aW9uIG1pZ2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1 cmUgd2UKKwkgKiBoYXZlIGEgdmFsaWQgc25hcHNob3QuCisJICovCisJUHVzaEFjdGl2ZVNu YXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisKKwkvKiBEbyB0aGUgZmluYWwg cGFydCBvZiBkZXRhY2hpbmcuICovCisJRGV0YWNoUGFydGl0aW9uRmluYWxpemUocGFyZW50 X3JlbCwgY2hpbGRfcmVsLCBmYWxzZSwgZGVmYXVsdFBhcnRPaWQpOworCisJUG9wQWN0aXZl U25hcHNob3QoKTsKK30KKworLyoKKyAqIEFMVEVSIFRBQkxFIDxuYW1lPiBNRVJHRSBQQVJU SVRJT05TIDxwYXJ0aXRpb24tbGlzdD4gSU5UTyA8cGFydGl0aW9uLW5hbWU+CisgKi8KK3N0 YXRpYyB2b2lkCitBVEV4ZWNNZXJnZVBhcnRpdGlvbnMoTGlzdCAqKndxdWV1ZSwgQWx0ZXJl ZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCisJCQkJCSAgUGFydGl0aW9uQ21kICpj bWQsIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCkKK3sKKwlSZWxhdGlvbglu ZXdQYXJ0UmVsOworCUxpc3QJICAgKm1lcmdpbmdQYXJ0aXRpb25zID0gTklMOworCU9pZAkJ CWRlZmF1bHRQYXJ0T2lkOworCU9pZAkJCWV4aXN0aW5nUmVsaWQ7CisJT2lkCQkJb3duZXJJ ZCA9IEludmFsaWRPaWQ7CisJT2lkCQkJc2F2ZV91c2VyaWQ7CisJaW50CQkJc2F2ZV9zZWNf Y29udGV4dDsKKwlpbnQJCQlzYXZlX25lc3RsZXZlbDsKKworCS8qCisJICogQ2hlY2sgb3du ZXJzaGlwIG9mIG1lcmdlZCBwYXJ0aXRpb25zIC0gcGFydGl0aW9ucyB3aXRoIGRpZmZlcmVu dCBvd25lcnMKKwkgKiBjYW5ub3QgYmUgbWVyZ2VkLiBBbHNvLCBjb2xsZWN0IHRoZSBPSURz IG9mIHRoZXNlIHBhcnRpdGlvbnMgZHVyaW5nIHRoZQorCSAqIGNoZWNrLgorCSAqLworCWZv cmVhY2hfbm9kZShSYW5nZVZhciwgbmFtZSwgY21kLT5wYXJ0bGlzdCkKKwl7CisJCVJlbGF0 aW9uCW1lcmdpbmdQYXJ0aXRpb247CisKKwkJLyoKKwkJICogV2UgYXJlIGdvaW5nIHRvIGRl dGFjaCBhbmQgcmVtb3ZlIHRoaXMgcGFydGl0aW9uLiAgV2UgYWxyZWFkeSB0b29rCisJCSAq IEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgbG9jayBvbiB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JN ZXJnZSwgc28gaGVyZSwKKwkJICogTm9Mb2NrIGlzIGZpbmUuCisJCSAqLworCQltZXJnaW5n UGFydGl0aW9uID0gdGFibGVfb3BlbnJ2X2V4dGVuZGVkKG5hbWUsIE5vTG9jaywgZmFsc2Up OworCQlBc3NlcnQoQ2hlY2tSZWxhdGlvbkxvY2tlZEJ5TWUobWVyZ2luZ1BhcnRpdGlvbiwg QWNjZXNzRXhjbHVzaXZlTG9jaywgZmFsc2UpKTsKKworCQlpZiAoT2lkSXNWYWxpZChvd25l cklkKSkKKwkJeworCQkJLyogRG8gdGhlIHBhcnRpdGlvbnMgYmVpbmcgbWVyZ2VkIGhhdmUg ZGlmZmVyZW50IG93bmVycz8gKi8KKwkJCWlmIChvd25lcklkICE9IG1lcmdpbmdQYXJ0aXRp b24tPnJkX3JlbC0+cmVsb3duZXIpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJZXJybXNnKCJwYXJ0 aXRpb25zIGJlaW5nIG1lcmdlZCBoYXZlIGRpZmZlcmVudCBvd25lcnMiKSk7CisJCX0KKwkJ ZWxzZQorCQkJb3duZXJJZCA9IG1lcmdpbmdQYXJ0aXRpb24tPnJkX3JlbC0+cmVsb3duZXI7 CisKKwkJLyogU3RvcmUgYSBuZXh0IG1lcmdpbmcgcGFydGl0aW9uIGludG8gdGhlIGxpc3Qu ICovCisJCW1lcmdpbmdQYXJ0aXRpb25zID0gbGFwcGVuZF9vaWQobWVyZ2luZ1BhcnRpdGlv bnMsCisJCQkJCQkJCQkJUmVsYXRpb25HZXRSZWxpZChtZXJnaW5nUGFydGl0aW9uKSk7CisK KwkJdGFibGVfY2xvc2UobWVyZ2luZ1BhcnRpdGlvbiwgTm9Mb2NrKTsKKwl9CisKKwkvKiBM b29rIHVwIGV4aXN0aW5nIHJlbGF0aW9uIGJ5IG5ldyBwYXJ0aXRpb24gbmFtZS4gKi8KKwlS YW5nZVZhckdldEFuZENoZWNrQ3JlYXRpb25OYW1lc3BhY2UoY21kLT5uYW1lLCBOb0xvY2ss ICZleGlzdGluZ1JlbGlkKTsKKworCS8qCisJICogQ2hlY2sgaWYgdGhpcyBuYW1lIGlzIGFs cmVhZHkgdGFrZW4uICBUaGlzIGhlbHBzIHVzIHRvIGRldGVjdCB0aGUKKwkgKiBzaXR1YXRp b24gd2hlbiBvbmUgb2YgdGhlIG1lcmdpbmcgcGFydGl0aW9ucyBoYXMgdGhlIHNhbWUgbmFt ZSBhcyB0aGUKKwkgKiBuZXcgcGFydGl0aW9uLiAgT3RoZXJ3aXNlLCB0aGlzIHdvdWxkIGZh aWwgbGF0ZXIgb24gYW55d2F5IGJ1dCBjYXRjaGluZworCSAqIHRoaXMgaGVyZSBhbGxvd3Mg dXMgdG8gZW1pdCBhIG5pY2VyIGVycm9yIG1lc3NhZ2UuCisJICovCisJaWYgKE9pZElzVmFs aWQoZXhpc3RpbmdSZWxpZCkpCisJeworCQlpZiAobGlzdF9tZW1iZXJfb2lkKG1lcmdpbmdQ YXJ0aXRpb25zLCBleGlzdGluZ1JlbGlkKSkKKwkJeworCQkJLyoKKwkJCSAqIFRoZSBuZXcg cGFydGl0aW9uIGhhcyB0aGUgc2FtZSBuYW1lIGFzIG9uZSBvZiBtZXJnaW5nCisJCQkgKiBw YXJ0aXRpb25zLgorCQkJICovCisJCQljaGFyCQl0bXBSZWxOYW1lW05BTUVEQVRBTEVOXTsK KworCQkJLyogR2VuZXJhdGUgdGVtcG9yYXJ5IG5hbWUuICovCisJCQlzcHJpbnRmKHRtcFJl bE5hbWUsICJtZXJnZS0ldS0lWC10bXAiLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksIE15UHJv Y1BpZCk7CisKKwkJCS8qCisJCQkgKiBSZW5hbWUgdGhlIGV4aXN0aW5nIHBhcnRpdGlvbiB3 aXRoIGEgdGVtcG9yYXJ5IG5hbWUsIGxlYXZpbmcgaXQKKwkJCSAqIGZyZWUgZm9yIHRoZSBu ZXcgcGFydGl0aW9uLiAgV2UgZG9uJ3QgbmVlZCB0byBjYXJlIGFib3V0IHRoaXMKKwkJCSAq IGluIHRoZSBmdXR1cmUgYmVjYXVzZSB3ZSdyZSBnb2luZyB0byBldmVudHVhbGx5IGRyb3Ag dGhlCisJCQkgKiBleGlzdGluZyBwYXJ0aXRpb24gYW55d2F5LgorCQkJICovCisJCQlSZW5h bWVSZWxhdGlvbkludGVybmFsKGV4aXN0aW5nUmVsaWQsIHRtcFJlbE5hbWUsIHRydWUsIGZh bHNlKTsKKworCQkJLyoKKwkJCSAqIFdlIG11c3QgYnVtcCB0aGUgY29tbWFuZCBjb3VudGVy IHRvIG1ha2UgdGhlIG5ldyBwYXJ0aXRpb24KKwkJCSAqIHR1cGxlIHZpc2libGUgZm9yIHJl bmFtZS4KKwkJCSAqLworCQkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwkJfQorCQll bHNlCisJCXsKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBM SUNBVEVfVEFCTEUpLAorCQkJCQllcnJtc2coInJlbGF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4 aXN0cyIsIGNtZC0+bmFtZS0+cmVsbmFtZSkpOworCQl9CisJfQorCisJZGVmYXVsdFBhcnRP aWQgPQorCQlnZXRfZGVmYXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRp dGlvbkRlc2MocmVsLCB0cnVlKSk7CisKKwkvKiBEZXRhY2ggYWxsIG1lcmdlZCBwYXJ0aXRp b25zICovCisJZm9yZWFjaF9vaWQobWVyZ2luZ1BhcnRpdGlvbk9pZCwgbWVyZ2luZ1BhcnRp dGlvbnMpCisJeworCQlSZWxhdGlvbgljaGlsZF9yZWw7CisKKwkJY2hpbGRfcmVsID0gdGFi bGVfb3BlbihtZXJnaW5nUGFydGl0aW9uT2lkLCBOb0xvY2spOworCisJCWRldGFjaFBhcnRp dGlvblRhYmxlKHJlbCwgY2hpbGRfcmVsLCBkZWZhdWx0UGFydE9pZCk7CisKKwkJdGFibGVf Y2xvc2UoY2hpbGRfcmVsLCBOb0xvY2spOworCX0KKworCS8qCisJICogUGVyZm9ybSBhIHBy ZWxpbWluYXJ5IGNoZWNrIHRvIGRldGVybWluZSB3aGV0aGVyIGl0J3Mgc2FmZSB0byBkcm9w IGFsbAorCSAqIG1lcmdpbmcgcGFydGl0aW9ucyBiZWZvcmUgd2UgYWN0dWFsbHkgZG8gc28g bGF0ZXIuIEFmdGVyIG1lcmdpbmcgcm93cworCSAqIGludG8gdGhlIG5ldyBwYXJ0aXRpb25z IHZpYSBNZXJnZVBhcnRpdGlvbnNNb3ZlUm93cywgYWxsIG9sZCBwYXJ0aXRpb25zCisJICog bmVlZCBiZSBkcm9wcGVkLiBIb3dldmVyLCBzaW5jZSB0aGUgZHJvcCBiZWhhdmlvciBpcyBE Uk9QX1JFU1RSSUNUIGFuZAorCSAqIHRoZSBtZXJnZSBwcm9jZXNzIChNZXJnZVBhcnRpdGlv bnNNb3ZlUm93cykgY2FuIGJlIHRpbWUtY29uc3VtaW5nLAorCSAqIHBlcmZvcm1pbmcgYW4g ZWFybHkgY2hlY2sgb24gdGhlIGRyb3AgZWxpZ2liaWxpdHkgb2Ygb2xkIHBhcnRpdGlvbnMg aXMKKwkgKiBwcmVmZXJhYmxlLgorCSAqLworCWZvcmVhY2hfb2lkKG1lcmdpbmdQYXJ0aXRp b25PaWQsIG1lcmdpbmdQYXJ0aXRpb25zKQorCXsKKwkJT2JqZWN0QWRkcmVzcyBvYmplY3Q7 CisKKwkJLyogR2V0IG9pZCBvZiB0aGUgbGF0ZXIgdG8gYmUgZHJvcHBlZCByZWxhdGlvbiAq LworCQlvYmplY3Qub2JqZWN0SWQgPSBtZXJnaW5nUGFydGl0aW9uT2lkOworCQlvYmplY3Qu Y2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJb2JqZWN0Lm9iamVjdFN1YklkID0g MDsKKworCQlwZXJmb3JtRGVsZXRpb25DaGVjaygmb2JqZWN0LCBEUk9QX1JFU1RSSUNULCBQ RVJGT1JNX0RFTEVUSU9OX0lOVEVSTkFMKTsKKwl9CisKKwkvKiBDcmVhdGUgdGFibGUgZm9y IG5ldyBwYXJ0aXRpb24sIHVzZSBwYXJ0aXRpb25lZCB0YWJsZSBhcyBtb2RlbC4gKi8KKwlB c3NlcnQoT2lkSXNWYWxpZChvd25lcklkKSk7CisJbmV3UGFydFJlbCA9IGNyZWF0ZVBhcnRp dGlvblRhYmxlKHdxdWV1ZSwgY21kLT5uYW1lLCByZWwsIG93bmVySWQpOworCisJLyoKKwkg KiBTd2l0Y2ggdG8gdGhlIHRhYmxlIG93bmVyJ3MgdXNlcmlkLCBzbyB0aGF0IGFueSBpbmRl eCBmdW5jdGlvbnMgYXJlIHJ1bgorCSAqIGFzIHRoYXQgdXNlci4gIEFsc28gbG9jayBkb3du IHNlY3VyaXR5LXJlc3RyaWN0ZWQgb3BlcmF0aW9ucyBhbmQKKwkgKiBhcnJhbmdlIHRvIG1h a2UgR1VDIHZhcmlhYmxlIGNoYW5nZXMgbG9jYWwgdG8gdGhpcyBjb21tYW5kLgorCSAqCisJ ICogTmVlZCB0byBkbyBpdCBhZnRlciBkZXRlcm1pbmUgbmFtZXNwYWNlIGluIGNyZWF0ZVBh cnRpdGlvblRhYmxlIGNhbGwuCisJICovCisJR2V0VXNlcklkQW5kU2VjQ29udGV4dCgmc2F2 ZV91c2VyaWQsICZzYXZlX3NlY19jb250ZXh0KTsKKwlTZXRVc2VySWRBbmRTZWNDb250ZXh0 KG93bmVySWQsCisJCQkJCQkgICBzYXZlX3NlY19jb250ZXh0IHwgU0VDVVJJVFlfUkVTVFJJ Q1RFRF9PUEVSQVRJT04pOworCXNhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVzdExldmVsKCk7 CisJUmVzdHJpY3RTZWFyY2hQYXRoKCk7CisKKwkvKiBDb3B5IGRhdGEgZnJvbSBtZXJnZWQg cGFydGl0aW9ucyB0byBuZXcgcGFydGl0aW9uLiAqLworCU1lcmdlUGFydGl0aW9uc01vdmVS b3dzKHdxdWV1ZSwgbWVyZ2luZ1BhcnRpdGlvbnMsIG5ld1BhcnRSZWwpOworCisJLyogRHJv cCB0aGUgY3VycmVudCBwYXJ0aXRpb25zIGJlZm9yZSBhdHRhY2hpbmcgdGhlIG5ldyBvbmUu ICovCisJZm9yZWFjaF9vaWQobWVyZ2luZ1BhcnRpdGlvbk9pZCwgbWVyZ2luZ1BhcnRpdGlv bnMpCisJeworCQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKworCQlvYmplY3Qub2JqZWN0SWQg PSBtZXJnaW5nUGFydGl0aW9uT2lkOworCQlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVs YXRpb25JZDsKKwkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKworCQlwZXJmb3JtRGVsZXRp b24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwgMCk7CisJfQorCisJbGlzdF9mcmVlKG1lcmdp bmdQYXJ0aXRpb25zKTsKKworCS8qCisJICogQXR0YWNoIGEgbmV3IHBhcnRpdGlvbiB0byB0 aGUgcGFydGl0aW9uZWQgdGFibGUuIHdxdWV1ZSA9IE5VTEw6CisJICogdmVyaWZpY2F0aW9u IGZvciBlYWNoIGNsb25lZCBjb25zdHJhaW50IGlzIG5vdCBuZWVkZWQuCisJICovCisJYXR0 YWNoUGFydGl0aW9uVGFibGUoTlVMTCwgcmVsLCBuZXdQYXJ0UmVsLCBjbWQtPmJvdW5kKTsK KworCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLworCXRhYmxlX2Nsb3NlKG5l d1BhcnRSZWwsIE5vTG9jayk7CisKKwkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4 ZWN1dGVkIGJ5IGluZGV4IGZ1bmN0aW9ucy4gKi8KKwlBdEVPWGFjdF9HVUMoZmFsc2UsIHNh dmVfbmVzdGxldmVsKTsKKworCS8qIFJlc3RvcmUgdXNlcmlkIGFuZCBzZWN1cml0eSBjb250 ZXh0LiAqLworCVNldFVzZXJJZEFuZFNlY0NvbnRleHQoc2F2ZV91c2VyaWQsIHNhdmVfc2Vj X2NvbnRleHQpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBi L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggOWZkNDhhY2IxZi4uYTQ2ZDZjNmVh NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55CkBAIC03NTUsNyArNzU1LDcgQEAgc3RhdGljIE5vZGUgKm1h a2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5v ZGUgKnF1ZXJ5KTsKIAlPUkRFUiBPUkRJTkFMSVRZIE9USEVSUyBPVVRfUCBPVVRFUl9QCiAJ T1ZFUiBPVkVSTEFQUyBPVkVSTEFZIE9WRVJSSURJTkcgT1dORUQgT1dORVIKIAotCVBBUkFM TEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFTU0lORyBQQVNTV09S RCBQQVRICisJUEFSQUxMRUwgUEFSQU1FVEVSIFBBUlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQ QVJUSVRJT05TIFBBU1NJTkcgUEFTU1dPUkQgUEFUSAogCVBFUklPRCBQTEFDSU5HIFBMQU4g UExBTlMgUE9MSUNZCiAJUE9TSVRJT04gUFJFQ0VESU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQ UkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKIAlQUklPUiBQUklWSUxFR0VTIFBST0NFRFVSQUwg UFJPQ0VEVVJFIFBST0NFRFVSRVMgUFJPR1JBTSBQVUJMSUNBVElPTgpAQCAtMjM2Nyw2ICsy MzY3LDcgQEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+c3VidHlwZSA9IEFUX0F0dGFjaFBh cnRpdGlvbjsKIAkJCQkJY21kLT5uYW1lID0gJDM7CiAJCQkJCWNtZC0+Ym91bmQgPSAkNDsK KwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5JTDsKIAkJCQkJY21kLT5jb25jdXJyZW50ID0gZmFs c2U7CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKIApAQCAtMjM4MSw2ICsyMzgyLDcg QEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+c3VidHlwZSA9IEFUX0RldGFjaFBhcnRpdGlv bjsKIAkJCQkJY21kLT5uYW1lID0gJDM7CiAJCQkJCWNtZC0+Ym91bmQgPSBOVUxMOworCQkJ CQljbWQtPnBhcnRsaXN0ID0gTklMOwogCQkJCQljbWQtPmNvbmN1cnJlbnQgPSAkNDsKIAkJ CQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOwogCkBAIC0yMzk0LDYgKzIzOTYsMjEgQEAgcGFy dGl0aW9uX2NtZDoKIAkJCQkJbi0+c3VidHlwZSA9IEFUX0RldGFjaFBhcnRpdGlvbkZpbmFs aXplOwogCQkJCQljbWQtPm5hbWUgPSAkMzsKIAkJCQkJY21kLT5ib3VuZCA9IE5VTEw7CisJ CQkJCWNtZC0+cGFydGxpc3QgPSBOSUw7CisJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZhbHNl OworCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CisJCQkJCSQkID0gKE5vZGUgKikgbjsK KwkJCQl9CisJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyAoKSBJ TlRPIDxwYXJ0aXRpb25fbmFtZT4gKi8KKwkJCXwgTUVSR0UgUEFSVElUSU9OUyAnKCcgcXVh bGlmaWVkX25hbWVfbGlzdCAnKScgSU5UTyBxdWFsaWZpZWRfbmFtZQorCQkJCXsKKwkJCQkJ QWx0ZXJUYWJsZUNtZCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFibGVDbWQpOworCQkJCQlQYXJ0 aXRpb25DbWQgKmNtZCA9IG1ha2VOb2RlKFBhcnRpdGlvbkNtZCk7CisKKwkJCQkJbi0+c3Vi dHlwZSA9IEFUX01lcmdlUGFydGl0aW9uczsKKwkJCQkJY21kLT5uYW1lID0gJDc7CisJCQkJ CWNtZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBhcnRsaXN0ID0gJDQ7CiAJCQkJCWNt ZC0+Y29uY3VycmVudCA9IGZhbHNlOwogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAJ CQkJCSQkID0gKE5vZGUgKikgbjsKQEAgLTI0MTAsNiArMjQyNyw3IEBAIGluZGV4X3BhcnRp dGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9BdHRhY2hQYXJ0aXRpb247CiAJCQkJ CWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJY21kLT5w YXJ0bGlzdCA9IE5JTDsKIAkJCQkJY21kLT5jb25jdXJyZW50ID0gZmFsc2U7CiAJCQkJCW4t PmRlZiA9IChOb2RlICopIGNtZDsKIApAQCAtMTc5MzAsNiArMTc5NDgsNyBAQCB1bnJlc2Vy dmVkX2tleXdvcmQ6CiAJCQl8IFBBUlNFUgogCQkJfCBQQVJUSUFMCiAJCQl8IFBBUlRJVElP TgorCQkJfCBQQVJUSVRJT05TCiAJCQl8IFBBU1NJTkcKIAkJCXwgUEFTU1dPUkQKIAkJCXwg UEFUSApAQCAtMTg1NTcsNiArMTg1NzYsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8 IFBBUlNFUgogCQkJfCBQQVJUSUFMCiAJCQl8IFBBUlRJVElPTgorCQkJfCBQQVJUSVRJT05T CiAJCQl8IFBBU1NJTkcKIAkJCXwgUEFTU1dPUkQKIAkJCXwgUEFUSApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV91dGlsY21kLmMKaW5kZXggZTk2YjM4YTU5ZC4uNTY0YmE1NWI2ZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk ZSAiY2F0YWxvZy9oZWFwLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgogI2luY2x1 ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wYXJ0aXRpb24u aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19j b2xsYXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKQEAgLTU4 LDYgKzU5LDggQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgogI2luY2x1ZGUg InBhcnNlci9wYXJzZV91dGlsY21kLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlci5oIgor I2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgiCisjaW5jbHVkZSAicGFydGl0 aW9uaW5nL3BhcnRkZXNjLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIK ICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgpA QCAtMzUwOSw2ICszNTEyLDEzNSBAQCB0cmFuc2Zvcm1SdWxlU3RtdChSdWxlU3RtdCAqc3Rt dCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiB9CiAKIAorLyoKKyAqIGNoZWNrUGFydGl0 aW9uCisgKiBDaGVjayB3aGV0aGVyIHBhcnRSZWxPaWQgaXMgYSBsZWFmIHBhcnRpdGlvbiBv ZiB0aGUgcGFyZW50IHRhYmxlIChyZWwpLgorICovCitzdGF0aWMgdm9pZAorY2hlY2tQYXJ0 aXRpb24oUmVsYXRpb24gcmVsLCBPaWQgcGFydFJlbE9pZCkKK3sKKwlSZWxhdGlvbglwYXJ0 UmVsOworCisJcGFydFJlbCA9IHRhYmxlX29wZW4ocGFydFJlbE9pZCwgTm9Mb2NrKTsKKwor CWlmIChwYXJ0UmVsLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9SRUxBVElPTikKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUp LAorCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHRhYmxlIiwgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocGFydFJlbCkpLAorCQkJCWVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJH RSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWIt cGFydGl0aW9ucyIpKTsKKworCWlmICghcGFydFJlbC0+cmRfcmVsLT5yZWxpc3BhcnRpdGlv bikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNU X1RZUEUpLAorCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0 aXRpb25lZCB0YWJsZSBcIiVzXCIiLAorCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShwYXJ0UmVsKSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSksCisJCQkJZXJyaGlu dCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFy dGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikpOworCisJaWYgKGdldF9wYXJ0 aXRpb25fcGFyZW50KHBhcnRSZWxPaWQsIGZhbHNlKSAhPSBSZWxhdGlvbkdldFJlbGlkKHJl bCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9U QUJMRSksCisJCQkJZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9u IG9mIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1l KHBhcnRSZWwpLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSwKKwkJCQllcnJoaW50 KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0 aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7CisKKwl0YWJsZV9jbG9zZShw YXJ0UmVsLCBOb0xvY2spOworfQorCisvKgorICogdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9y TWVyZ2UKKyAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9O UyBjb21tYW5kCisgKgorICogRG9lcyBzaW1wbGUgY2hlY2tzIGZvciBtZXJnZWQgcGFydGl0 aW9ucy4gQ2FsY3VsYXRlcyBib3VuZCBvZiByZXN1bHRpbmcKKyAqIHBhcnRpdGlvbi4KKyAq Lworc3RhdGljIHZvaWQKK3RyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlKENyZWF0ZVN0 bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqcGFydGNtZCkKK3sKKwlPaWQJCQlkZWZh dWx0UGFydE9pZDsKKwlPaWQJCQlwYXJ0T2lkOworCVJlbGF0aW9uCXBhcmVudCA9IGN4dC0+ cmVsOworCVBhcnRpdGlvbktleSBrZXk7CisJY2hhcgkJc3RyYXRlZ3k7CisJTGlzdENlbGwg ICAqbGlzdHB0ciwKKwkJCSAgICpsaXN0cHRyMjsKKwlib29sCQlpc0RlZmF1bHRQYXJ0ID0g ZmFsc2U7CisJTGlzdAkgICAqcGFydE9pZHMgPSBOSUw7CisKKwlrZXkgPSBSZWxhdGlvbkdl dFBhcnRpdGlvbktleShwYXJlbnQpOworCXN0cmF0ZWd5ID0gZ2V0X3BhcnRpdGlvbl9zdHJh dGVneShrZXkpOworCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9IQVNI KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9T VVBQT1JURUQpLAorCQkJCWVycm1zZygicGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQg dGFibGUgY2Fubm90IGJlIG1lcmdlZCIpKTsKKworCS8qIERvZXMgcGFydGl0aW9uZWQgdGFi bGUgKHBhcmVudCkgaGF2ZSBhIGRlZmF1bHQgcGFydGl0aW9uPyAqLworCWRlZmF1bHRQYXJ0 T2lkID0gZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRlc2MoUmVsYXRpb25HZXRQYXJ0aXRp b25EZXNjKHBhcmVudCwgdHJ1ZSkpOworCisJZm9yZWFjaChsaXN0cHRyLCBwYXJ0Y21kLT5w YXJ0bGlzdCkKKwl7CisJCVJhbmdlVmFyICAgKm5hbWUgPSAoUmFuZ2VWYXIgKikgbGZpcnN0 KGxpc3RwdHIpOworCisJCS8qIFBhcnRpdGlvbnMgaW4gdGhlIGxpc3Qgc2hvdWxkIGhhdmUg ZGlmZmVyZW50IG5hbWVzLiAqLworCQlmb3JfZWFjaF9jZWxsKGxpc3RwdHIyLCBwYXJ0Y21k LT5wYXJ0bGlzdCwgbG5leHQocGFydGNtZC0+cGFydGxpc3QsIGxpc3RwdHIpKQorCQl7CisJ CQlSYW5nZVZhciAgICpuYW1lMiA9IChSYW5nZVZhciAqKSBsZmlyc3QobGlzdHB0cjIpOwor CisJCQlpZiAoZXF1YWwobmFtZSwgbmFtZTIpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJCWVycm1zZygicGFy dGl0aW9uIHdpdGggbmFtZSBcIiVzXCIgaXMgYWxyZWFkeSB1c2VkIiwgbmFtZS0+cmVsbmFt ZSksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIG5hbWUyLT5sb2Nh dGlvbikpOworCQl9CisKKwkJLyoKKwkJICogU2VhcmNoIERFRkFVTFQgcGFydGl0aW9uIGlu IHRoZSBsaXN0LiBPcGVuIGFuZCBsb2NrIHBhcnRpdGlvbnMKKwkJICogYmVmb3JlIGNhbGN1 bGF0aW5nIHRoZSBib3VuZGFyeSBmb3IgcmVzdWx0aW5nIHBhcnRpdGlvbiwgd2UgYWxzbwor CQkgKiBjaGVjayBmb3Igb3duZXJzaGlwIGFsb25nIHRoZSB3YXkuICBXZSBuZWVkIHRvIHVz ZQorCQkgKiBBY2Nlc3NFeGNsdXNpdmVMb2NrIGhlcmUsIGJlY2F1c2UgdGhlc2UgbWVyZ2Vk IHBhcnRpdGlvbnMgd2lsbCBiZQorCQkgKiBkZXRhY2hlZCB0aGVuIGRyb3BwZWQgaW4gQVRF eGVjTWVyZ2VQYXJ0aXRpb25zLgorCQkgKi8KKwkJcGFydE9pZCA9IFJhbmdlVmFyR2V0UmVs aWRFeHRlbmRlZChuYW1lLCBBY2Nlc3NFeGNsdXNpdmVMb2NrLCAwLAorCQkJCQkJCQkJCSAg IFJhbmdlVmFyQ2FsbGJhY2tPd25zUmVsYXRpb24sCisJCQkJCQkJCQkJICAgTlVMTCk7CisJ CS8qIElzIGN1cnJlbnQgcGFydGl0aW9uIGEgREVGQVVMVCBwYXJ0aXRpb24/ICovCisJCWlm IChwYXJ0T2lkID09IGRlZmF1bHRQYXJ0T2lkKQorCQkJaXNEZWZhdWx0UGFydCA9IHRydWU7 CisKKwkJLyoKKwkJICogRXh0ZW5kZWQgY2hlY2sgYmVjYXVzZSB0aGUgc2FtZSBwYXJ0aXRp b24gY2FuIGhhdmUgZGlmZmVyZW50IG5hbWVzCisJCSAqIChmb3IgZXhhbXBsZSwgInBhcnRf bmFtZSIgYW5kICJwdWJsaWMucGFydF9uYW1lIikuCisJCSAqLworCQlmb3JlYWNoKGxpc3Rw dHIyLCBwYXJ0T2lkcykKKwkJeworCQkJT2lkCQkJY3VyT2lkID0gbGZpcnN0X29pZChsaXN0 cHRyMik7CisKKwkJCWlmIChjdXJPaWQgPT0gcGFydE9pZCkKKwkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9UQUJMRSksCisJCQkJCQllcnJt c2coInBhcnRpdGlvbiB3aXRoIG5hbWUgXCIlc1wiIGlzIGFscmVhZHkgdXNlZCIsIG5hbWUt PnJlbG5hbWUpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBuYW1l LT5sb2NhdGlvbikpOworCQl9CisKKwkJY2hlY2tQYXJ0aXRpb24ocGFyZW50LCBwYXJ0T2lk KTsKKworCQlwYXJ0T2lkcyA9IGxhcHBlbmRfb2lkKHBhcnRPaWRzLCBwYXJ0T2lkKTsKKwl9 CisKKwkvKiBBbGxvY2F0ZSBib3VuZCBvZiByZXN1bHRpbmcgcGFydGl0aW9uLiAqLworCUFz c2VydChwYXJ0Y21kLT5ib3VuZCA9PSBOVUxMKTsKKwlwYXJ0Y21kLT5ib3VuZCA9IG1ha2VO b2RlKFBhcnRpdGlvbkJvdW5kU3BlYyk7CisKKwkvKiBGaWxsIHBhcnRpdGlvbiBib3VuZC4g Ki8KKwlwYXJ0Y21kLT5ib3VuZC0+c3RyYXRlZ3kgPSBzdHJhdGVneTsKKwlwYXJ0Y21kLT5i b3VuZC0+bG9jYXRpb24gPSAtMTsKKwlwYXJ0Y21kLT5ib3VuZC0+aXNfZGVmYXVsdCA9IGlz RGVmYXVsdFBhcnQ7CisJaWYgKCFpc0RlZmF1bHRQYXJ0KQorCQljYWxjdWxhdGVfcGFydGl0 aW9uX2JvdW5kX2Zvcl9tZXJnZShwYXJlbnQsIHBhcnRjbWQtPnBhcnRsaXN0LAorCQkJCQkJ CQkJCQlwYXJ0T2lkcywgcGFydGNtZC0+Ym91bmQsCisJCQkJCQkJCQkJCWN4dC0+cHN0YXRl KTsKK30KKwogLyoKICAqIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10IC0KICAqCQlwYXJzZSBh bmFseXNpcyBmb3IgQUxURVIgVEFCTEUKQEAgLTM3ODYsNiArMzkxOCwyMCBAQCB0cmFuc2Zv cm1BbHRlclRhYmxlU3RtdChPaWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpzdG10LAogCQkJ CW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMsIGNtZCk7CiAJCQkJYnJlYWs7CiAKKwkJCWNh c2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJCXsKKwkJCQkJUGFydGl0aW9uQ21kICpwYXJ0 Y21kID0gKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZjsKKworCQkJCQlpZiAobGlzdF9sZW5n dGgocGFydGNtZC0+cGFydGxpc3QpIDwgMikKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJ CQkJZXJybXNnKCJsaXN0IG9mIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkIHNob3VsZCBpbmNs dWRlIGF0IGxlYXN0IHR3byBwYXJ0aXRpb25zIikpOworCisJCQkJCXRyYW5zZm9ybVBhcnRp dGlvbkNtZEZvck1lcmdlKCZjeHQsIHBhcnRjbWQpOworCQkJCQluZXdjbWRzID0gbGFwcGVu ZChuZXdjbWRzLCBjbWQpOworCQkJCQlicmVhazsKKwkJCQl9CisKIAkJCWRlZmF1bHQ6CiAK IAkJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3Vu ZHMuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKaW5kZXggODIy Y2Y0ZWM0NS4uNjBjMTAzNmNlOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9u aW5nL3BhcnRib3VuZHMuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJv dW5kcy5jCkBAIC00OTc4LDMgKzQ5NzgsMTk5IEBAIHNhdGlzZmllc19oYXNoX3BhcnRpdGlv bihQR19GVU5DVElPTl9BUkdTKQogCiAJUEdfUkVUVVJOX0JPT0wocm93SGFzaCAlIG1vZHVs dXMgPT0gcmVtYWluZGVyKTsKIH0KKworLyoKKyAqIGNoZWNrX3R3b19wYXJ0aXRpb25zX2Jv dW5kc19yYW5nZQorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgUkFOR0UgcGFydGl0aW9uaW5n KQorICoKKyAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNhbGN1bGF0ZV9wYXJ0 aXRpb25fYm91bmRfZm9yX21lcmdlKCkuCisgKiBUaGlzIGZ1bmN0aW9uIGNvbXBhcmVzIHVw cGVyIGJvdW5kIG9mIGZpcnN0X2JvdW5kIGFuZCBsb3dlciBib3VuZCBvZgorICogc2Vjb25k X2JvdW5kLiBUaGVzZSBib3VuZHMgc2hvdWxkIGJlIGVxdWFsLgorICoKKyAqIHBhcmVudDoJ CQlwYXJ0aXRpb25lZCB0YWJsZQorICogZmlyc3RfbmFtZToJCW5hbWUgb2YgZmlyc3QgcGFy dGl0aW9uCisgKiBmaXJzdF9ib3VuZDoJCWJvdW5kIG9mIGZpcnN0IHBhcnRpdGlvbgorICog c2Vjb25kX25hbWU6CQluYW1lIG9mIHNlY29uZCBwYXJ0aXRpb24KKyAqIHNlY29uZF9ib3Vu ZDoJYm91bmQgb2Ygc2Vjb25kIHBhcnRpdGlvbgorICogcHN0YXRlOgkJCXBvaW50ZXIgdG8g UGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluaW5nIGVycm9yIHBvc2l0aW9uCisgKi8K K3N0YXRpYyB2b2lkCitjaGVja190d29fcGFydGl0aW9uc19ib3VuZHNfcmFuZ2UoUmVsYXRp b24gcGFyZW50LAorCQkJCQkJCQkgIFJhbmdlVmFyICpmaXJzdF9uYW1lLAorCQkJCQkJCQkg IFBhcnRpdGlvbkJvdW5kU3BlYyAqZmlyc3RfYm91bmQsCisJCQkJCQkJCSAgUmFuZ2VWYXIg KnNlY29uZF9uYW1lLAorCQkJCQkJCQkgIFBhcnRpdGlvbkJvdW5kU3BlYyAqc2Vjb25kX2Jv dW5kLAorCQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkg a2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0aXRpb25SYW5n ZUJvdW5kICpmaXJzdF91cHBlcjsKKwlQYXJ0aXRpb25SYW5nZUJvdW5kICpzZWNvbmRfbG93 ZXI7CisJaW50CQkJY21wdmFsOworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElU SU9OX1NUUkFURUdZX1JBTkdFKTsKKworCWZpcnN0X3VwcGVyID0gbWFrZV9vbmVfcGFydGl0 aW9uX3Jib3VuZChrZXksIC0xLCBmaXJzdF9ib3VuZC0+dXBwZXJkYXR1bXMsIGZhbHNlKTsK KwlzZWNvbmRfbG93ZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIHNl Y29uZF9ib3VuZC0+bG93ZXJkYXR1bXMsIHRydWUpOworCisJLyoKKwkgKiBsb3dlcjE9ZmFs c2UgKHRoZSBzZWNvbmQgdG8gbGFzdCBhcmd1bWVudCkgZm9yIGNvcnJlY3QgY29tcGFyaXNv biBvZgorCSAqIGxvd2VyIGFuZCB1cHBlciBib3VuZHMuCisJICovCisJY21wdmFsID0gcGFy dGl0aW9uX3Jib3VuZF9jbXAoa2V5LT5wYXJ0bmF0dHMsCisJCQkJCQkJCSAga2V5LT5wYXJ0 c3VwZnVuYywKKwkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCSAgc2Vj b25kX2xvd2VyLT5kYXR1bXMsIHNlY29uZF9sb3dlci0+a2luZCwKKwkJCQkJCQkJICBmYWxz ZSwgZmlyc3RfdXBwZXIpOworCWlmIChjbXB2YWwpCisJeworCQlQYXJ0aXRpb25SYW5nZURh dHVtICpkYXR1bSA9IGxpbml0aWFsKHNlY29uZF9ib3VuZC0+bG93ZXJkYXR1bXMpOworCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RF RklOSVRJT04pLAorCQkJCWVycm1zZygiY2FuIG5vdCBtZXJnZSBwYXJ0aXRpb24gXCIlc1wi IHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCSAgIHNlY29uZF9uYW1l LT5yZWxuYW1lLCBmaXJzdF9uYW1lLT5yZWxuYW1lKSwKKwkJCQllcnJkZXRhaWwoImxvd2Vy IGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBi b3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJCSAgc2Vjb25kX25hbWUtPnJlbG5h bWUsIGZpcnN0X25hbWUtPnJlbG5hbWUpLAorCQkJCWVycmhpbnQoIkFMVEVSIFRBQkxFIC4u LiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJl IGFkamFjZW50LiIpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5s b2NhdGlvbikpOworCX0KK30KKworLyoKKyAqIGdldF9wYXJ0aXRpb25fYm91bmRfc3BlYwor ICoKKyAqIFJldHVybnMgdGhlIFBhcnRpdGlvbkJvdW5kU3BlYyBmb3IgdGhlIHBhcnRpdGlv biB3aXRoIHRoZSBnaXZlbiBPSUQgcGFydE9pZC4KKyAqLworc3RhdGljIFBhcnRpdGlvbkJv dW5kU3BlYyAqCitnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMoT2lkIHBhcnRPaWQpCit7CisJ SGVhcFR1cGxlCXR1cGxlOworCURhdHVtCQlkYXR1bTsKKwlib29sCQlpc251bGw7CisJUGFy dGl0aW9uQm91bmRTcGVjICpib3VuZHNwZWMgPSBOVUxMOworCisJLyogVHJ5IGZldGNoaW5n IHRoZSB0dXBsZSBmcm9tIHRoZSBjYXRjYWNoZSwgZm9yIHNwZWVkLiAqLworCXR1cGxlID0g U2VhcmNoU3lzQ2FjaGUxKFJFTE9JRCwgcGFydE9pZCk7CisJaWYgKCFIZWFwVHVwbGVJc1Zh bGlkKHR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHJl bGF0aW9uICV1IiwgcGFydE9pZCk7CisKKwlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihSRUxP SUQsIHR1cGxlLAorCQkJCQkJCUFudW1fcGdfY2xhc3NfcmVscGFydGJvdW5kLAorCQkJCQkJ CSZpc251bGwpOworCWlmIChpc251bGwpCisJCWVsb2coRVJST1IsICJwYXJ0aXRpb24gYm91 bmQgZm9yIHJlbGF0aW9uICV1IGlzIG51bGwiLAorCQkJIHBhcnRPaWQpOworCisJYm91bmRz cGVjID0gc3RyaW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pKTsKKworCWlm ICghSXNBKGJvdW5kc3BlYywgUGFydGl0aW9uQm91bmRTcGVjKSkKKwkJZWxvZyhFUlJPUiwg ImV4cGVjdGVkIFBhcnRpdGlvbkJvdW5kU3BlYyBmb3IgcmVsYXRpb24gJXUiLAorCQkJIHBh cnRPaWQpOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKKwlyZXR1cm4gYm91bmRzcGVj OworfQorCisvKgorICogY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UKKyAq CisgKiBDYWxjdWxhdGVzIHRoZSBib3VuZCBvZiBtZXJnZWQgcGFydGl0aW9uICJzcGVjIiBi eSB1c2luZyB0aGUgYm91bmRzIG9mCisgKiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZC4KKyAq CisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAqIHBhcnROYW1lczoJCW5hbWVz IG9mIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkCisgKiBwYXJ0T2lkczoJCU9pZHMgb2YgcGFy dGl0aW9ucyB0byBiZSBtZXJnZWQKKyAqIHNwZWMgKG91dCk6CQlib3VuZHMgc3BlY2lmaWNh dGlvbiBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbgorICogcHN0YXRlOgkJCXBvaW50ZXIgdG8g UGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluZSBlcnJvciBwb3NpdGlvbgorICovCit2 b2lkCitjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBwYXJl bnQsCisJCQkJCQkJCQlMaXN0ICpwYXJ0TmFtZXMsCisJCQkJCQkJCQlMaXN0ICpwYXJ0T2lk cywKKwkJCQkJCQkJCVBhcnRpdGlvbkJvdW5kU3BlYyAqc3BlYywKKwkJCQkJCQkJCVBhcnNl U3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0 aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kOworCisJQXNz ZXJ0KCFzcGVjLT5pc19kZWZhdWx0KTsKKworCXN3aXRjaCAoa2V5LT5zdHJhdGVneSkKKwl7 CisJCWNhc2UgUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFOgorCQkJeworCQkJCWludAkJCWk7 CisJCQkJUGFydGl0aW9uUmFuZ2VCb3VuZCAqKmxvd2VyX2JvdW5kczsKKwkJCQlpbnQJCQlu cGFydHMgPSBsaXN0X2xlbmd0aChwYXJ0T2lkcyk7CisJCQkJTGlzdAkgICAqYm91bmRzID0g TklMOworCisJCQkJbG93ZXJfYm91bmRzID0gKFBhcnRpdGlvblJhbmdlQm91bmQgKiopCisJ CQkJCXBhbGxvYzAobnBhcnRzICogc2l6ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKikpOwor CisJCQkJLyoKKwkJCQkgKiBDcmVhdGUgYXJyYXkgb2YgbG93ZXIgYm91bmRzIGFuZCBsaXN0 IG9mCisJCQkJICogUGFydGl0aW9uQm91bmRTcGVjLgorCQkJCSAqLworCQkJCWZvcmVhY2hf b2lkKHBhcnRvaWQsIHBhcnRPaWRzKQorCQkJCXsKKwkJCQkJYm91bmQgPSBnZXRfcGFydGl0 aW9uX2JvdW5kX3NwZWMocGFydG9pZCk7CisJCQkJCWkgPSBmb3JlYWNoX2N1cnJlbnRfaW5k ZXgocGFydG9pZCk7CisKKwkJCQkJbG93ZXJfYm91bmRzW2ldID0gbWFrZV9vbmVfcGFydGl0 aW9uX3Jib3VuZChrZXksIGksIGJvdW5kLT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisJCQkJCWJv dW5kcyA9IGxhcHBlbmQoYm91bmRzLCBib3VuZCk7CisJCQkJfQorCisJCQkJLyogU29ydCBh cnJheSBvZiBsb3dlciBib3VuZHMuICovCisJCQkJcXNvcnRfYXJnKGxvd2VyX2JvdW5kcywg bnBhcnRzLCBzaXplb2YoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKSwKKwkJCQkJCSAgcXNvcnRf cGFydGl0aW9uX3Jib3VuZF9jbXAsIGtleSk7CisKKwkJCQkvKiBSYW5nZXMgb2YgcGFydGl0 aW9ucyBzaG91bGQgYmUgYWRqYWNlbnQuICovCisJCQkJZm9yIChpID0gMTsgaSA8IG5wYXJ0 czsgaSsrKQorCQkJCXsKKwkJCQkJaW50CQkJaW5kZXggPSBsb3dlcl9ib3VuZHNbaV0tPmlu ZGV4OworCQkJCQlpbnQJCQlwcmV2X2luZGV4ID0gbG93ZXJfYm91bmRzW2kgLSAxXS0+aW5k ZXg7CisKKwkJCQkJY2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlKHBhcmVudCwK KwkJCQkJCQkJCQkJCQkgIChSYW5nZVZhciAqKSBsaXN0X250aChwYXJ0TmFtZXMsIHByZXZf aW5kZXgpLAorCQkJCQkJCQkJCQkJCSAgKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250 aChib3VuZHMsIHByZXZfaW5kZXgpLAorCQkJCQkJCQkJCQkJCSAgKFJhbmdlVmFyICopIGxp c3RfbnRoKHBhcnROYW1lcywgaW5kZXgpLAorCQkJCQkJCQkJCQkJCSAgKFBhcnRpdGlvbkJv dW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIGluZGV4KSwKKwkJCQkJCQkJCQkJCQkgIHBz dGF0ZSk7CisJCQkJfQorCisJCQkJLyoKKwkJCQkgKiBMb3dlciBib3VuZCBvZiBmaXJzdCBw YXJ0aXRpb24gaXMgdGhlIGxvd2VyIGJvdW5kIG9mIG1lcmdlZAorCQkJCSAqIHBhcnRpdGlv bi4KKwkJCQkgKi8KKwkJCQlzcGVjLT5sb3dlcmRhdHVtcyA9CisJCQkJCSgoUGFydGl0aW9u Qm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywgbG93ZXJfYm91bmRzWzBdLT5pbmRleCkp LT5sb3dlcmRhdHVtczsKKworCQkJCS8qCisJCQkJICogVXBwZXIgYm91bmQgb2YgbGFzdCBw YXJ0aXRpb24gaXMgdGhlIHVwcGVyIGJvdW5kIG9mIG1lcmdlZAorCQkJCSAqIHBhcnRpdGlv bi4KKwkJCQkgKi8KKwkJCQlzcGVjLT51cHBlcmRhdHVtcyA9CisJCQkJCSgoUGFydGl0aW9u Qm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywgbG93ZXJfYm91bmRzW25wYXJ0cyAtIDFd LT5pbmRleCkpLT51cHBlcmRhdHVtczsKKworCQkJCXBmcmVlKGxvd2VyX2JvdW5kcyk7CisJ CQkJbGlzdF9mcmVlKGJvdW5kcyk7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJY2FzZSBQQVJU SVRJT05fU1RSQVRFR1lfTElTVDoKKwkJCXsKKwkJCQkvKiBDb25zb2xpZGF0ZSBib3VuZHMg Zm9yIGFsbCBwYXJ0aXRpb25zIGluIHRoZSBsaXN0LiAqLworCQkJCWZvcmVhY2hfb2lkKHBh cnRvaWQsIHBhcnRPaWRzKQorCQkJCXsKKwkJCQkJYm91bmQgPSBnZXRfcGFydGl0aW9uX2Jv dW5kX3NwZWMocGFydG9pZCk7CisJCQkJCXNwZWMtPmxpc3RkYXR1bXMgPSBsaXN0X2NvbmNh dChzcGVjLT5saXN0ZGF0dW1zLCBib3VuZC0+bGlzdGRhdHVtcyk7CisJCQkJfQorCQkJCWJy ZWFrOworCQkJfQorCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBw YXJ0aXRpb24gc3RyYXRlZ3k6ICVkIiwKKwkJCQkgKGludCkga2V5LT5zdHJhdGVneSk7CisJ fQorfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3Jj L2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IDZiMjBhNDQwNGIuLjNlYzAzM2Q4 ZDggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9z cmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTI3NTAsNiArMjc1MCw3IEBAIG1h dGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCQkJCQkgICJPV05FUiBUTyIs ICJTRVQiLCAiVkFMSURBVEUgQ09OU1RSQUlOVCIsCiAJCQkJCSAgIlJFUExJQ0EgSURFTlRJ VFkiLCAiQVRUQUNIIFBBUlRJVElPTiIsCiAJCQkJCSAgIkRFVEFDSCBQQVJUSVRJT04iLCAi Rk9SQ0UgUk9XIExFVkVMIFNFQ1VSSVRZIiwKKwkJCQkJICAiTUVSR0UgUEFSVElUSU9OUyAo IiwKIAkJCQkJICAiT0YiLCAiTk9UIE9GIik7CiAJLyogQUxURVIgVEFCTEUgeHh4IEFERCAq LwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJBREQi KSkKQEAgLTMwMjMsNiArMzAyNCwxNSBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0 dGVybl9pZCwKIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55 LCAiREVUQUNIIiwgIlBBUlRJVElPTiIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSCgi Q09OQ1VSUkVOVExZIiwgIkZJTkFMSVpFIik7CiAKKwkvKiBBTFRFUiBUQUJMRSA8bmFtZT4g TUVSR0UgUEFSVElUSU9OUyAoICovCisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFC TEUiLCBNYXRjaEFueSwgIk1FUkdFIiwgIlBBUlRJVElPTlMiLCAiKCIpKQorCXsKKwkJc2V0 X2NvbXBsZXRpb25fcmVmZXJlbmNlKHByZXY0X3dkKTsKKwkJQ09NUExFVEVfV0lUSF9TQ0hF TUFfUVVFUlkoUXVlcnlfZm9yX3BhcnRpdGlvbl9vZl90YWJsZSk7CisJfQorCWVsc2UgaWYg KE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJNRVJHRSIsICJQQVJUSVRJ T05TIiwgIigqKSIpKQorCQlDT01QTEVURV9XSVRIKCJJTlRPIik7CisKIAkvKiBBTFRFUiBU QUJMRSA8bmFtZT4gT0YgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIs IE1hdGNoQW55LCAiT0YiKSkKIAkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlf Zm9yX2xpc3Rfb2ZfY29tcG9zaXRlX2RhdGF0eXBlcyk7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5k ZW5jeS5oCmluZGV4IDBlYTdjY2Y1MjQuLmY1NDIzMzQ5OWIgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv ZGVwZW5kZW5jeS5oCkBAIC0xMDcsNiArMTA3LDggQEAgZXh0ZXJuIHZvaWQgUmVsZWFzZURl bGV0aW9uTG9jayhjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QpOwogZXh0ZXJuIHZvaWQg cGVyZm9ybURlbGV0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIAkJCQkJCQlE cm9wQmVoYXZpb3IgYmVoYXZpb3IsIGludCBmbGFncyk7CiAKK2V4dGVybiB2b2lkIHBlcmZv cm1EZWxldGlvbkNoZWNrKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKKwkJCQkJCQkJ IERyb3BCZWhhdmlvciBiZWhhdmlvciwgaW50IGZsYWdzKTsKIGV4dGVybiB2b2lkIHBlcmZv cm1NdWx0aXBsZURlbGV0aW9ucyhjb25zdCBPYmplY3RBZGRyZXNzZXMgKm9iamVjdHMsCiAJ CQkJCQkJCQkgRHJvcEJlaGF2aW9yIGJlaGF2aW9yLCBpbnQgZmxhZ3MpOwogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmgKaW5kZXggODZhMjM2YmQ1OC4uYjFiMzMxNWZlNSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaApAQCAtOTY0LDEzICs5NjQsMTYgQEAgdHlwZWRlZiBzdHJ1Y3Qg UGFydGl0aW9uUmFuZ2VEYXR1bQogfSBQYXJ0aXRpb25SYW5nZURhdHVtOwogCiAvKgotICog UGFydGl0aW9uQ21kIC0gaW5mbyBmb3IgQUxURVIgVEFCTEUvSU5ERVggQVRUQUNIL0RFVEFD SCBQQVJUSVRJT04gY29tbWFuZHMKKyAqIFBhcnRpdGlvbkNtZCAtIGluZm8gZm9yIEFMVEVS IFRBQkxFL0lOREVYIEFUVEFDSC9ERVRBQ0ggUEFSVElUSU9OIGFuZCBmb3IKKyAqCSAgQUxU RVIgVEFCTEUgTUVSR0UgUEFSVElUSU9OUyBjb21tYW5kcwogICovCiB0eXBlZGVmIHN0cnVj dCBQYXJ0aXRpb25DbWQKIHsKIAlOb2RlVGFnCQl0eXBlOwotCVJhbmdlVmFyICAgKm5hbWU7 CQkJLyogbmFtZSBvZiBwYXJ0aXRpb24gdG8gYXR0YWNoL2RldGFjaCAqLworCVJhbmdlVmFy ICAgKm5hbWU7CQkJLyogbmFtZSBvZiBwYXJ0aXRpb24gdG8gYXR0YWNoL2RldGFjaC9tZXJn ZSAqLwogCVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQ7CS8qIEZPUiBWQUxVRVMsIGlmIGF0 dGFjaGluZyAqLworCUxpc3QJICAgKnBhcnRsaXN0OwkJLyogbGlzdCBvZiBwYXJ0aXRpb25z IHRvIGJlIG1lcmdlZCwgdXNlZCBpbgorCQkJCQkJCQkgKiBBTFRFUiBUQUJMRSBNRVJHRSBQ QVJUSVRJT05TICovCiAJYm9vbAkJY29uY3VycmVudDsKIH0gUGFydGl0aW9uQ21kOwogCkBA IC0yNDczLDYgKzI0NzYsNyBAQCB0eXBlZGVmIGVudW0gQWx0ZXJUYWJsZVR5cGUKIAlBVF9B dHRhY2hQYXJ0aXRpb24sCQkJLyogQVRUQUNIIFBBUlRJVElPTiAqLwogCUFUX0RldGFjaFBh cnRpdGlvbiwJCQkvKiBERVRBQ0ggUEFSVElUSU9OICovCiAJQVRfRGV0YWNoUGFydGl0aW9u RmluYWxpemUsIC8qIERFVEFDSCBQQVJUSVRJT04gRklOQUxJWkUgKi8KKwlBVF9NZXJnZVBh cnRpdGlvbnMsCQkJLyogTUVSR0UgUEFSVElUSU9OUyAqLwogCUFUX0FkZElkZW50aXR5LAkJ CQkvKiBBREQgSURFTlRJVFkgKi8KIAlBVF9TZXRJZGVudGl0eSwJCQkJLyogU0VUIGlkZW50 aXR5IGNvbHVtbiBvcHRpb25zICovCiAJQVRfRHJvcElkZW50aXR5LAkJCS8qIERST1AgSURF TlRJVFkgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3Ny Yy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCBhNGFmM2Y3MTdhLi45MGU4Y2RkZjhi IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0zMzcsNiArMzM3LDcgQEAgUEdfS0VZV09SRCgi cGFyYW1ldGVyIiwgUEFSQU1FVEVSLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJwYXJzZXIiLCBQQVJTRVIsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhcnRpYWwiLCBQQVJUSUFMLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJ0aXRpb24iLCBQQVJUSVRJT04s IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInBhcnRpdGlv bnMiLCBQQVJUSVRJT05TLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJwYXNzaW5nIiwgUEFTU0lORywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgicGFzc3dvcmQiLCBQQVNTV09SRCwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGF0aCIsIFBBVEgsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnRpdGlv bmluZy9wYXJ0Ym91bmRzLmggYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5k cy5oCmluZGV4IDA4M2I2ZTNhODguLmY2ZmMxMGQzNDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFydGl0 aW9uaW5nL3BhcnRib3VuZHMuaApAQCAtMTQzLDQgKzE0MywxMCBAQCBleHRlcm4gaW50CXBh cnRpdGlvbl9yYW5nZV9kYXR1bV9ic2VhcmNoKEZtZ3JJbmZvICpwYXJ0c3VwZnVuYywKIGV4 dGVybiBpbnQJcGFydGl0aW9uX2hhc2hfYnNlYXJjaChQYXJ0aXRpb25Cb3VuZEluZm8gYm91 bmRpbmZvLAogCQkJCQkJCQkgICBpbnQgbW9kdWx1cywgaW50IHJlbWFpbmRlcik7CiAKK2V4 dGVybiB2b2lkIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKFJlbGF0aW9u IHBhcmVudCwKKwkJCQkJCQkJCQkJCUxpc3QgKnBhcnROYW1lcywKKwkJCQkJCQkJCQkJCUxp c3QgKnBhcnRPaWRzLAorCQkJCQkJCQkJCQkJUGFydGl0aW9uQm91bmRTcGVjICpzcGVjLAor CQkJCQkJCQkJCQkJUGFyc2VTdGF0ZSAqcHN0YXRlKTsKKwogI2VuZGlmCQkJCQkJCS8qIFBB UlRCT1VORFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVk L3BhcnRpdGlvbi1tZXJnZS5vdXQgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFy dGl0aW9uLW1lcmdlLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li41ZjY0NzI2NzFiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4 cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQKQEAgLTAsMCArMSwyNDMgQEAKK1BhcnNlZCB0 ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmIg czJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiOiBCRUdJ TjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsK K3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxbWVyZzogQUxU RVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEw XzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQ REFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5n IC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+Citz dGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3Ms ICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFU RSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgICAgICAgCistLS0tLS0tLS0tLS0t Ky0tKy0tLS0tLS0tLS0tCit0cGFydF8wMF8yMCAgfCAxfHRleHQwMW1vZGlmCit0cGFydF8w MF8yMCAgfCA1fHRleHQwNSAgICAgCit0cGFydF8wMF8yMCAgfDE1fHRleHQxNSAgICAgCit0 cGFydF8yMF8zMCAgfDI1fHRleHQyNSAgICAgCit0cGFydF9kZWZhdWx0fDM1fHRleHQzNSAg ICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmIgczJpIHMyYyBz MWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmI6IEJFR0lOOworc3Rl cCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBz MmM6IENPTU1JVDsKK3N0ZXAgczFicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRB QkxFIFJFQUQ7CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElU SU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3Rl cCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFt b2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7Citz dGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6 IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJs ZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBp fHQgICAgICAgICAgCistLS0tLS0tLS0tLS0tKy0tKy0tLS0tLS0tLS0tCit0cGFydF8wMF8y MCAgfCAxfHRleHQwMW1vZGlmCit0cGFydF8wMF8yMCAgfCA1fHRleHQwNSAgICAgCit0cGFy dF8wMF8yMCAgfDE1fHRleHQxNSAgICAgCit0cGFydF8yMF8zMCAgfDI1fHRleHQyNSAgICAg Cit0cGFydF9kZWZhdWx0fDM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5n IHBlcm11dGF0aW9uOiBzMmIgczJpIHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMg czJzCitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFM VUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWJzOiBCRUdJ TiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMW1lcmc6IEFMVEVSIFRB QkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkg SU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUg dHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+ CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBz MmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZS T00gdHBhcnQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMi LCBpOwordGFibGVvaWQgICAgIHwgaXx0ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLSstLSst LS0tLS0tLS0tLQordHBhcnRfMDBfMjAgIHwgMXx0ZXh0MDFtb2RpZgordHBhcnRfMDBfMjAg IHwgNXx0ZXh0MDUgICAgIAordHBhcnRfMDBfMjAgIHwxNXx0ZXh0MTUgICAgIAordHBhcnRf MjBfMzAgIHwyNXx0ZXh0MjUgICAgIAordHBhcnRfZGVmYXVsdHwzNXx0ZXh0MzUgICAgIAor KDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicnIgczJpIHMyYyBzMWIg czFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElP TiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQg VkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWI6IEJF R0lOOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMg KHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJi OiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYn IHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBz MnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxF Q1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkgdGFibGVvaWQ6 OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQgICAgIHwgaXx0ICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0tLS0tLQordHBhcnRfMDBfMjAgIHwg MXx0ZXh0MDFtb2RpZgordHBhcnRfMDBfMjAgIHwgNXx0ZXh0MDUgICAgIAordHBhcnRfMDBf MjAgIHwxNXx0ZXh0MTUgICAgIAordHBhcnRfMjBfMzAgIHwyNXx0ZXh0MjUgICAgIAordHBh cnRfZGVmYXVsdHwzNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJt dXRhdGlvbjogczJicnIgczJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMy cworc3RlcCBzMmJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsK K3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0 ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQ RUFUQUJMRSBSRUFEOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBB UlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsK K3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4 dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlU Oworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAg czJzOiBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkg dGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQgICAg IHwgaXx0ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0tLS0tLQordHBhcnRf MDBfMjAgIHwgMXx0ZXh0MDFtb2RpZgordHBhcnRfMDBfMjAgIHwgNXx0ZXh0MDUgICAgIAor dHBhcnRfMDBfMjAgIHwxNXx0ZXh0MTUgICAgIAordHBhcnRfMjBfMzAgIHwyNXx0ZXh0MjUg ICAgIAordHBhcnRfZGVmYXVsdHwzNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKworCitzdGFy dGluZyBwZXJtdXRhdGlvbjogczJicnIgczJpIHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMx YyBzMmMgczJzCitzdGVwIHMyYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJM RSBSRUFEOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQw MScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFUSU9OIExF VkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJH RSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBf MjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0g J3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENP TU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7Citz dGVwIHMyczogU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHRwYXJ0IE9SREVS IEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgaTsKK3RhYmxlb2lk ICAgICB8IGl8dCAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0rLS0rLS0tLS0tLS0tLS0KK3Rw YXJ0XzAwXzIwICB8IDF8dGV4dDAxbW9kaWYKK3RwYXJ0XzAwXzIwICB8IDV8dGV4dDA1ICAg ICAKK3RwYXJ0XzAwXzIwICB8MTV8dGV4dDE1ICAgICAKK3RwYXJ0XzIwXzMwICB8MjV8dGV4 dDI1ICAgICAKK3RwYXJ0X2RlZmF1bHR8MzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKwor c3RhcnRpbmcgcGVybXV0YXRpb246IHMyYnMgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUg czFjIHMyYyBzMnMKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTEla QUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEn KTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxbWVyZzog QUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0 XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6 IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0 aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+ CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xh c3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09M TEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgICAgICAgCistLS0tLS0tLS0t LS0tKy0tKy0tLS0tLS0tLS0tCit0cGFydF8wMF8yMCAgfCAxfHRleHQwMW1vZGlmCit0cGFy dF8wMF8yMCAgfCA1fHRleHQwNSAgICAgCit0cGFydF8wMF8yMCAgfDE1fHRleHQxNSAgICAg Cit0cGFydF8yMF8zMCAgfDI1fHRleHQyNSAgICAgCit0cGFydF9kZWZhdWx0fDM1fHRleHQz NSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJzIHMyaSBz MmMgczFicnIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiczogQkVHSU4g SVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0 cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMx YnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMW1l cmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0 cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAg czJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8 d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxl dGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgdGFibGVvaWQ6OnJl Z2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0 IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQgICAgIHwgaXx0ICAgICAgICAgIAorLS0tLS0t LS0tLS0tLSstLSstLS0tLS0tLS0tLQordHBhcnRfMDBfMjAgIHwgMXx0ZXh0MDFtb2RpZgor dHBhcnRfMDBfMjAgIHwgNXx0ZXh0MDUgICAgIAordHBhcnRfMDBfMjAgIHwxNXx0ZXh0MTUg ICAgIAordHBhcnRfMjBfMzAgIHwyNXx0ZXh0MjUgICAgIAordHBhcnRfZGVmYXVsdHwzNXx0 ZXh0MzUgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicyBz MmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiczogQkVH SU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5U TyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVw IHMxYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxbWVy ZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRw YXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBz MnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3 YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0 ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVn Y2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQg Q09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgICAgICAgCistLS0tLS0t LS0tLS0tKy0tKy0tLS0tLS0tLS0tCit0cGFydF8wMF8yMCAgfCAxfHRleHQwMW1vZGlmCit0 cGFydF8wMF8yMCAgfCA1fHRleHQwNSAgICAgCit0cGFydF8wMF8yMCAgfDE1fHRleHQxNSAg ICAgCit0cGFydF8yMF8zMCAgfDI1fHRleHQyNSAgICAgCit0cGFydF9kZWZhdWx0fDM1fHRl eHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmIgczJp IHMyYyBzMWIgczFtZXJnIHMyYiBzMnUyIHMxYyBzMmMgczJzCitzdGVwIHMyYjogQkVHSU47 CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7Citz dGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMW1lcmc6IEFMVEVS IFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8y MCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1MjogVVBE QVRFIHRwYXJ0IFNFVCBpID0gMjEgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czFjOiBDT01NSVQ7CitzdGVwIHMydTI6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENP TU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBh cnQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOwor dGFibGVvaWQgICAgIHwgaXx0ICAgICAKKy0tLS0tLS0tLS0tLS0rLS0rLS0tLS0tCit0cGFy dF8wMF8yMCAgfCA1fHRleHQwNQordHBhcnRfMDBfMjAgIHwxNXx0ZXh0MTUKK3RwYXJ0XzIw XzMwICB8MjF8dGV4dDAxCit0cGFydF8yMF8zMCAgfDI1fHRleHQyNQordHBhcnRfZGVmYXVs dHwzNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYiBz MmkgczJjIHMxYiBzMW1lcmcgczJiIHMydTMgczFjIHMyYyBzMnMKK3N0ZXAgczJiOiBCRUdJ TjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsK K3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxbWVyZzogQUxU RVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEw XzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnUzOiBV UERBVEUgdHBhcnQgU0VUIGkgPSAxMSB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3Rl cCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1MzogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzog Q09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0 cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7 Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0KK3Rw YXJ0XzAwXzIwICB8IDV8dGV4dDA1Cit0cGFydF8wMF8yMCAgfDExfHRleHQwMQordHBhcnRf MDBfMjAgIHwxNXx0ZXh0MTUKK3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1Cit0cGFydF9kZWZh dWx0fDM1fHRleHQzNQorKDUgcm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0 aW9uL2lzb2xhdGlvbl9zY2hlZHVsZSBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25f c2NoZWR1bGUKaW5kZXggNWFmYWUzM2QzNy4uODU0MTU0NjY3OCAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9pc29s YXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCkBAIC0xMTAsNiArMTEwLDcgQEAgdGVzdDogcGFy dGl0aW9uLWtleS11cGRhdGUtMQogdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtMgogdGVz dDogcGFydGl0aW9uLWtleS11cGRhdGUtMwogdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUt NAordGVzdDogcGFydGl0aW9uLW1lcmdlCiB0ZXN0OiBwbHBnc3FsLXRvYXN0CiB0ZXN0OiBj bHVzdGVyLWNvbmZsaWN0CiB0ZXN0OiBjbHVzdGVyLWNvbmZsaWN0LXBhcnRpdGlvbgpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1tZXJnZS5zcGVj IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1tZXJnZS5zcGVjCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmYzYzVjZTJmYmYKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLW1lcmdlLnNw ZWMKQEAgLTAsMCArMSw2MiBAQAorIyBWZXJpZnkgdGhhdCBNRVJHRSBvcGVyYXRpb24gbG9j a3MgRE1MIG9wZXJhdGlvbnMgd2l0aCBwYXJ0aXRpb25lZCB0YWJsZQorCitzZXR1cAorewor ICBEUk9QIFRBQkxFIElGIEVYSVNUUyB0cGFydDsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0KGkg aW50LCB0IHRleHQpIHBhcnRpdGlvbiBieSByYW5nZShpKTsKKyAgQ1JFQVRFIFRBQkxFIHRw YXJ0XzAwXzEwIFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgx MCk7CisgIENSRUFURSBUQUJMRSB0cGFydF8xMF8yMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9S IFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzIwXzMw IFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworICBD UkVBVEUgVEFCTEUgdHBhcnRfZGVmYXVsdCBQQVJUSVRJT04gT0YgdHBhcnQgREVGQVVMVDsK KyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICg1LCAndGV4dDA1Jyk7CisgIElOU0VSVCBJ TlRPIHRwYXJ0IFZBTFVFUyAoMTUsICd0ZXh0MTUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQg VkFMVUVTICgyNSwgJ3RleHQyNScpOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDM1 LCAndGV4dDM1Jyk7Cit9CisKK3RlYXJkb3duCit7CisgIERST1AgVEFCTEUgdHBhcnQ7Cit9 CisKK3Nlc3Npb24gczEKK3N0ZXAgczFiCXsgQkVHSU47IH0KK3N0ZXAgczFicnIJeyBCRUdJ TiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOyB9CitzdGVwIHMxYnMJeyBCRUdJ TiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOyB9CitzdGVwIHMxbWVyZwl7IEFMVEVS IFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8y MCkgSU5UTyB0cGFydF8wMF8yMDsgfQorc3RlcCBzMWMJeyBDT01NSVQ7IH0KKworCitzZXNz aW9uIHMyCitzdGVwIHMyYgl7IEJFR0lOOyB9CitzdGVwIHMyYnJyCXsgQkVHSU4gSVNPTEFU SU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsgfQorc3RlcCBzMmJzCXsgQkVHSU4gSVNPTEFU SU9OIExFVkVMIFNFUklBTElaQUJMRTsgfQorc3RlcCBzMmkJeyBJTlNFUlQgSU5UTyB0cGFy dCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgfQorc3RlcCBzMnUJeyBVUERBVEUgdHBhcnQgU0VU IHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyB9CitzdGVwIHMydTIJeyBVUERBVEUg dHBhcnQgU0VUIGkgPSAyMSB3aGVyZSBpID0gMTsgfQorc3RlcCBzMnUzCXsgVVBEQVRFIHRw YXJ0IFNFVCBpID0gMTEgd2hlcmUgaSA9IDE7IH0KK3N0ZXAgczJjCXsgQ09NTUlUOyB9Citz dGVwIHMycwl7IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRF UiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7IH0KKworCisj IHMyIGluc2VydHMgcm93IGludG8gdGFibGUuIHMxIHN0YXJ0cyBNRVJHRSBQQVJUSVRJT05T IHRoZW4KKyMgczIgaXMgdHJ5aW5nIHRvIHVwZGF0ZSBpbnNlcnRlZCByb3cgYW5kIHdhaXRz IHVudGlsIHMxIGZpbmlzaGVzCisjIE1FUkdFIG9wZXJhdGlvbi4KKworcGVybXV0YXRpb24g czJiIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlv biBzMmIgczJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0 YXRpb24gczJiIHMyaSBzMmMgczFicyBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworCitw ZXJtdXRhdGlvbiBzMmJyciBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMy cworcGVybXV0YXRpb24gczJicnIgczJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMg czJjIHMycworcGVybXV0YXRpb24gczJicnIgczJpIHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1 IHMxYyBzMmMgczJzCisKK3Blcm11dGF0aW9uIHMyYnMgczJpIHMyYyBzMWIgczFtZXJnIHMy YiBzMnUgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMyYnMgczJpIHMyYyBzMWJyciBzMW1l cmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJicyBzMmkgczJjIHMxYnMg czFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKKworIyBUdXBsZSByb3V0aW5nIGJldHdlZW4g cGFydGl0aW9ucy4KK3Blcm11dGF0aW9uIHMyYiBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMy dTIgczFjIHMyYyBzMnMKKworIyBUdXBsZSByb3V0aW5nIGJldHdlZW4gbWVyZ2luZyBwYXJ0 aXRpb25zLgorcGVybXV0YXRpb24gczJiIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1MyBz MWMgczJjIHMycwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBh cnNlL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9k ZGxfZGVwYXJzZS9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKaW5kZXggNTBkMDM1NGEzNC4u YzQwM2MyZjU2OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBh cnNlL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfZGRsX2RlcGFyc2UvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0CkBAIC01Niw2ICs1Niwx MSBAQCBBTFRFUiBUQUJMRSBwYXJ0IERFVEFDSCBQQVJUSVRJT04gcGFydDI7CiBOT1RJQ0U6 ICBEREwgdGVzdDogdHlwZSBhbHRlciB0YWJsZSwgdGFnIEFMVEVSIFRBQkxFCiBOT1RJQ0U6 ICAgIHN1YmNvbW1hbmQ6IHR5cGUgREVUQUNIIFBBUlRJVElPTiBkZXNjIHRhYmxlIHBhcnQy CiBEUk9QIFRBQkxFIHBhcnQyOworQ1JFQVRFIFRBQkxFIHBhcnQyIFBBUlRJVElPTiBPRiBw YXJ0IEZPUiBWQUxVRVMgRlJPTSAoMTAwKSB0byAoMjAwKTsKK05PVElDRTogIERETCB0ZXN0 OiB0eXBlIHNpbXBsZSwgdGFnIENSRUFURSBUQUJMRQorQUxURVIgVEFCTEUgcGFydCBNRVJH RSBQQVJUSVRJT05TIChwYXJ0MSwgcGFydDIpIElOVE8gcGFydDE7CitOT1RJQ0U6ICBEREwg dGVzdDogdHlwZSBhbHRlciB0YWJsZSwgdGFnIEFMVEVSIFRBQkxFCitOT1RJQ0U6ICAgIHN1 YmNvbW1hbmQ6IHR5cGUgTUVSR0UgUEFSVElUSU9OUyBkZXNjIDxOVUxMPgogQUxURVIgVEFC TEUgcGFydCBBREQgUFJJTUFSWSBLRVkgKGEpOwogTk9USUNFOiAgRERMIHRlc3Q6IHR5cGUg YWx0ZXIgdGFibGUsIHRhZyBBTFRFUiBUQUJMRQogTk9USUNFOiAgICBzdWJjb21tYW5kOiB0 eXBlIEFERCBDT05TVFJBSU5UIChhbmQgcmVjdXJzZSkgZGVzYyBjb25zdHJhaW50IHBhcnRf YV9ub3RfbnVsbCBvbiB0YWJsZSBwYXJ0CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZGRsX2RlcGFyc2Uvc3FsL2FsdGVyX3RhYmxlLnNxbCBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9kZGxfZGVwYXJzZS9zcWwvYWx0ZXJfdGFibGUuc3FsCmluZGV4IDlhZDFjZjkw OGQuLjMxZTY5MTAwYTMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxf ZGVwYXJzZS9zcWwvYWx0ZXJfdGFibGUuc3FsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9kZGxfZGVwYXJzZS9zcWwvYWx0ZXJfdGFibGUuc3FsCkBAIC0zNSw2ICszNSw5IEBAIEFM VEVSIFRBQkxFIHBhcnQgQVRUQUNIIFBBUlRJVElPTiBwYXJ0MiBGT1IgVkFMVUVTIEZST00g KDEwMSkgdG8gKDIwMCk7CiBBTFRFUiBUQUJMRSBwYXJ0IERFVEFDSCBQQVJUSVRJT04gcGFy dDI7CiBEUk9QIFRBQkxFIHBhcnQyOwogCitDUkVBVEUgVEFCTEUgcGFydDIgUEFSVElUSU9O IE9GIHBhcnQgRk9SIFZBTFVFUyBGUk9NICgxMDApIHRvICgyMDApOworQUxURVIgVEFCTEUg cGFydCBNRVJHRSBQQVJUSVRJT05TIChwYXJ0MSwgcGFydDIpIElOVE8gcGFydDE7CisKIEFM VEVSIFRBQkxFIHBhcnQgQUREIFBSSU1BUlkgS0VZIChhKTsKIAogQUxURVIgVEFCTEUgcGFy ZW50IEFMVEVSIENPTFVNTiBhIFNFVCBOT1QgTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCmluZGV4IDE5 MzY2OWYyYmMuLjdkZTVkZGI4NzggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwpAQCAtMjk2LDYgKzI5Niw5 IEBAIGdldF9hbHRlcnRhYmxlX3N1YmNtZGluZm8oUEdfRlVOQ1RJT05fQVJHUykKIAkJCWNh c2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6CiAJCQkJc3RydHlwZSA9ICJERVRBQ0gg UEFSVElUSU9OIC4uLiBGSU5BTElaRSI7CiAJCQkJYnJlYWs7CisJCQljYXNlIEFUX01lcmdl UGFydGl0aW9uczoKKwkJCQlzdHJ0eXBlID0gIk1FUkdFIFBBUlRJVElPTlMiOworCQkJCWJy ZWFrOwogCQkJY2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCQlzdHJ0eXBlID0gIkFERCBJREVO VElUWSI7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bh cnRpdGlvbl9tZXJnZS5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MC4uM2U0MGFiZjM4YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dApAQCAtMCwwICsxLDEwOTcgQEAKKy0tCistLSBQ QVJUSVRJT05TX01FUkdFCistLSBUZXN0cyBmb3IgIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQ QVJUSVRJT05TIC4uLiIgY29tbWFuZAorLS0KK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uc19t ZXJnZV9zY2hlbWE7CitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMjsK K1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7Cist LQorLS0gQlkgUkFOR0UgcGFydGl0aW9uaW5nCistLQorLS0KKy0tIFRlc3QgZm9yIGVycm9y IGNvZGVzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJ TlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNh bGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19kZWMyMDIxIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIxLTEyLTMxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19t YXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAy MiAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBz YWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAo c2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByXzEgUEFSVElUSU9OIE9GIHNh bGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0w NC0xNScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl8yIFBBUlRJVElPTiBPRiBzYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTUnKSBUTyAoJzIwMjItMDUtMDEn KTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBE RUZBVUxUOworLS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIy IiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJ VElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElO VE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1l ICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUgMTogLi4uZSBNRVJHRSBQ QVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19mZWIyLi4u CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorLS0gRVJST1I6ICAic2FsZXNfYXByMjAyMiIgaXMgbm90IGEgdGFibGUK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIw MjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9h cHIyMDIyOworRVJST1I6ICAic2FsZXNfYXByMjAyMiIgaXMgbm90IGEgdGFibGUKK0hJTlQ6 ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0 aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMKKy0tIEVSUk9SOiAgY2FuIG5vdCBt ZXJnZSBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9u ICJzYWxlc19qYW4yMDIyIgorLS0gREVUQUlMOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9u ICJzYWxlc19tYXIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBh cnRpdGlvbiAic2FsZXNfamFuMjAyMiIKKy0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25zIHNh bGVzX2phbjIwMjIgYW5kIHNhbGVzX21hcjIwMjIpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIyKSBJTlRP IHNhbGVzX2phbl9tYXIyMDIyOworRVJST1I6ICBjYW4gbm90IG1lcmdlIHBhcnRpdGlvbiAi c2FsZXNfbWFyMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIi CitERVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGlz IG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19qYW4y MDIyIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmVz IHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LgorLS0gRVJST1I6ICBjYW4g bm90IG1lcmdlIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0 aXRpb24gInNhbGVzX2RlYzIwMjEiCistLSBERVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0 aXRpb24gInNhbGVzX2phbjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQg b2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorLS0gKHNwYWNlIGJldHdlZW4gc2VjdGlv bnMgc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNfamFuMjAyMikKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2RlYzIwMjEsIHNhbGVzX2phbjIwMjIs IHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZGVjX2phbl9mZWIyMDIyOworRVJST1I6ICBj YW4gbm90IG1lcmdlIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIgdG9nZXRoZXIgd2l0aCBw YXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitERVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0 aXRpb24gInNhbGVzX2phbjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQg b2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBN RVJHRSBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFk amFjZW50LgorLS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIy IiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJ VElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hLnNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworRVJS T1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVz ZWQKK0xJTkUgMTogLi4uZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxl c19tYXIyMDIyLCBwYXJ0aXRpb25zLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS1FUlJPUiwgc2FsZXNfYXBy XzIgYWxyZWFkeSBleGlzdHMKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJ VElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2phbjIwMjIpIElO VE8gc2FsZXNfYXByXzI7CitFUlJPUjogIHJlbGF0aW9uICJzYWxlc19hcHJfMiIgYWxyZWFk eSBleGlzdHMKK0NSRUFURSBWSUVXIGphbjIwMjJ2IGFzIFNFTEVDVCAqIEZST00gc2FsZXNf amFuMjAyMjsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNh bGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZGVjX2phbl9mZWIyMDIy OworRVJST1I6ICBjYW5ub3QgZHJvcCB0YWJsZSBzYWxlc19qYW4yMDIyIGJlY2F1c2Ugb3Ro ZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIHZpZXcgamFuMjAyMnYgZGVwZW5k cyBvbiB0YWJsZSBzYWxlc19qYW4yMDIyCitISU5UOiAgVXNlIERST1AgLi4uIENBU0NBREUg dG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorRFJPUCBWSUVXIGphbjIwMjJ2 OworLS0gTk8gRVJST1I6IHRlc3QgZm9yIGN1c3RvbSBwYXJ0aXRpb25zIG9yZGVyLCBzb3Vy Y2UgcGFydGl0aW9ucyBub3QgaW4gdGhlIHNlYXJjaF9wYXRoCitTRVQgc2VhcmNoX3BhdGgg PSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIsIHB1YmxpYzsKK0FMVEVSIFRBQkxFIHBhcnRp dGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKAorICBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19mZWIyMDIyLAorICBwYXJ0aXRpb25zX21l cmdlX3NjaGVtYS5zYWxlc19tYXIyMDIyLAorICBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5z YWxlc19qYW4yMDIyKSBJTlRPIHNhbGVzX2phbl9mZWJfbWFyMjAyMjsKK1NFVCBzZWFyY2hf cGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CitQUkVQQVJFIGdldF9w YXJ0aXRpb25faW5mbyhyZWdjbGFzc1tdKSBBUworU0VMRUNUICBjLm9pZDo6cGdfY2F0YWxv Zy5yZWdjbGFzcywKKyAgICAgICAgYy5yZWxwZXJzaXN0ZW5jZSwKKyAgICAgICAgYy5yZWxr aW5kLAorICAgICAgICBpLmluaGRldGFjaHBlbmRpbmcsCisgICAgICAgIHBnX2NhdGFsb2cu cGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorRlJPTSAgICBwZ19jYXRhbG9n LnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorV0hFUkUgICBjLm9pZCA9 IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gQU5ZKCQxKQorT1JERVIgQlkgcGdfY2F0 YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLAor ICAgICAgICAgYy5vaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiOworRVhFQ1VURSBn ZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKyAgICAgICAgICAgICAgICAg ICAgICBvaWQgICAgICAgICAgICAgICAgICAgICAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxr aW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHBy ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfamFuX2ZlYl9tYXIyMDIy IHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBW QUxVRVMgRlJPTSAoJzAxLTAxLTIwMjInKSBUTyAoJzA0LTAxLTIwMjInKQorIHNhbGVzX2Fw cjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwICAgICAgICAgICAg ICB8IHAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDQt MDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicpCisgc2FsZXNfZGVjMjAyMSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcxMi0wMS0yMDIxJykgVE8gKCcx Mi0zMS0yMDIxJykKKyBzYWxlc19vdGhlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IERFRkFVTFQKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0g QWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZSwgdGhlbiBtZXJnZSBwYXJ0aXRpb25z CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNh bGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21h cjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3Jhbmdl X3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRl KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAg IDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjIt MDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAo NCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAg ICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAy Mi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisg ICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVy JywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcy MDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwK KyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5k aScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAg JzIwMjItMDUtMDQnKTsKK1NFTEVDVCBwZ19jYXRhbG9nLnBnX2dldF9wYXJ0a2V5ZGVmKCdz YWxlc19yYW5nZSc6OnJlZ2NsYXNzKTsKKyBwZ19nZXRfcGFydGtleWRlZiAgCistLS0tLS0t LS0tLS0tLS0tLS0tLQorIFJBTkdFIChzYWxlc19kYXRlKQorKDEgcm93KQorCistLSBzaG93 IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2lu Zm8oJ3tzYWxlc19yYW5nZX0nKTsKKyAgICAgIG9pZCAgICAgIHwgcmVscGVyc2lzdGVuY2Ug fCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgIHBnX2dl dF9leHByICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIyIHwgcCAg ICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMg RlJPTSAoJzA0LTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjInKQorIHNhbGVzX2ZlYjIwMjIg fCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZB TFVFUyBGUk9NICgnMDItMDEtMjAyMicpIFRPICgnMDMtMDEtMjAyMicpCisgc2FsZXNfamFu MjAyMiB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBG T1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIyJykgVE8gKCcwMi0wMS0yMDIyJykKKyBzYWxl c19tYXIyMDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAzLTAxLTIwMjInKSBUTyAoJzA0LTAxLTIwMjInKQor IHNhbGVzX290aGVycyAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgREVGQVVMVAorKDUgcm93cykKKworLS0gY2hlY2sgc2NoZW1hLXF1YWxpZmll ZCBuYW1lIG9mIHRoZSBuZXcgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBN RVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19h cHIyMDIyKSBJTlRPIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2Fw cjIwMjI7CistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorRVhFQ1VURSBn ZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKyAgICAgICAgICAgICAgICAg ICAgICBvaWQgICAgICAgICAgICAgICAgICAgICAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxr aW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHBy ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIy IHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBW QUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjInKQorIHNhbGVzX2ph bjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwICAgICAgICAgICAg ICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDEt MDEtMjAyMicpIFRPICgnMDItMDEtMjAyMicpCisgc2FsZXNfb3RoZXJzICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBERUZBVUxUCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHBn X2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2ZlYl9tYXJfYXByMjAyMicgYW5k IHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9zY2hlbWEyJzsKKyAgICAgICAgc2No ZW1hbmFtZSAgICAgICAgfCAgICAgICB0YWJsZW5hbWUgICAgICAgfCAgICAgICAgICAgICAg aW5kZXhuYW1lICAgICAgICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIgfCBzYWxlc19m ZWJfbWFyX2FwcjIwMjIgfCBzYWxlc19mZWJfbWFyX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHgg fCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX2ZlYl9tYXJfYXByMjAyMl9zYWxl c19kYXRlX2lkeCBPTiBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9h cHIyMDIyIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgdGFi bGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6 OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgICAg ICAgICAgICAgICAgdGFibGVvaWQgICAgICAgICAgICAgICAgICAgIHwgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwg ICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDIt MTAtMjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIw MjIgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAg fCAwNC0zMC0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJf YXByMjAyMiB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAg IDc1MCB8IDA0LTEzLTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmVi X21hcl9hcHIyMDIyIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAg ICAgICAgMjUwIHwgMDQtMDctMjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxl c19mZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAg fCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEy LnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAg ICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAgICAgIDggfCBFcmljc3Nv biAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorIHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAgOSB8IE11 bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgcGFydGl0aW9u c19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAgICAgIDEx IHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyBwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAg ICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgor IHNhbGVzX2phbjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0y MDIyCisgc2FsZXNfamFuMjAyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAx LTI4LTIwMjIKKyBzYWxlc19qYW4yMDIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3 IHwgMDEtMDktMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAg ICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworLS0gVXNlIGluZGV4c2NhbiBmb3Ig dGVzdGluZyBpbmRleGVzCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CitFWFBMQUlOIChD T1NUUyBPRkYpIFNFTEVDVCAqIEZST00gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVz X2ZlYl9tYXJfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg SW5kZXggU2NhbiB1c2luZyBzYWxlc19mZWJfbWFyX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHgg b24gc2FsZXNfZmViX21hcl9hcHIyMDIyCisgICBJbmRleCBDb25kOiAoc2FsZXNfZGF0ZSA+ ICcwMS0wMS0yMDIyJzo6ZGF0ZSkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gcGFydGl0 aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB3aGVyZSBzYWxlc19k YXRlID4gJzIwMjItMDEtMDEnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFt ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisg ICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDIt MTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAg IDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAg fCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIg ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEy IHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAg ICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0y MDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUw IHwgMDQtMDctMjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAg ICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAg ICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoMTAgcm93cykKKworUkVTRVQg ZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIE1lcmdl IHNvbWUgcGFydGl0aW9ucyBpbnRvIERFRkFVTFQgcGFydGl0aW9uCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUg VkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAx JykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRP ICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIw MjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1 LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4 IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAx LTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMs ICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAg IDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjIt MDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAo NywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29u JywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAy Mi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisg ICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8n LCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcy MDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsK Ky0tIE1lcmdlIHBhcnRpdGlvbnMgKGluY2x1ZGUgREVGQVVMVCBwYXJ0aXRpb24pIGludG8g cGFydGl0aW9uIHdpdGggdGhlIHNhbWUKKy0tIG5hbWUKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIE1FUkdFIFBBUlRJVElPTlMKKyAgKHNhbGVzX2phbjIwMjIsIHNhbGVzX21hcjIwMjIs IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX290aGVycykgSU5UTyBzYWxlc19vdGhl cnM7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVycyBPUkRFUiBCWSBzYWxlc3BlcnNvbl9p ZDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAg ICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAgICA3IHwg TGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAg ICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIy CisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwg MDEtMjgtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAg ICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAg ICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAgICAgICAgICAgMTQgfCBTbWl0 aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDcgcm93cykKKwor LS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRp dGlvbl9pbmZvKCd7c2FsZXNfcmFuZ2V9Jyk7CisgICAgICBvaWQgICAgICB8IHJlbHBlcnNp c3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAgICAg ICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfYXByMjAy MiB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1Ig VkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJykKKyBzYWxlc19m ZWIyMDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzAzLTAxLTIwMjInKQorIHNh bGVzX290aGVycyAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAg ICAgIHwgREVGQVVMVAorKDMgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0t CistLSBUZXN0IGZvcjoKKy0tICAgKiBjb21wb3NpdGUgcGFydGl0aW9uIGtleTsKKy0tICAg KiBHRU5FUkFURUQgY29sdW1uOworLS0gICAqIGNvbHVtbiB3aXRoIERFRkFVTFQgdmFsdWUu CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2RhdGUgKHNhbGVzcGVyc29uX25hbWUgVkFSQ0hB UigzMCksIHNhbGVzX3llYXIgSU5ULCBzYWxlc19tb250aCBJTlQsIHNhbGVzX2RheSBJTlQs CisgIHNhbGVzX2RhdGUgVkFSQ0hBUigxMCkgR0VORVJBVEVEIEFMV0FZUyBBUworICAgIChM UEFEKHNhbGVzX3llYXI6OnRleHQsIDQsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfbW9u dGg6OnRleHQsIDIsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfZGF5Ojp0ZXh0LCAyLCAn MCcpKSBTVE9SRUQsCisgIHNhbGVzX2RlcGFydG1lbnQgVkFSQ0hBUigzMCkgREVGQVVMVCAn U2FsZXMgZGVwYXJ0bWVudCcpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfeWVhciwg c2FsZXNfbW9udGgsIHNhbGVzX2RheSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEsIDEyLCAxKSBU TyAoMjAyMiwgMSwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04g T0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAy LCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19k YXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpOworQ1JF QVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxV RVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwgTUFYVkFMVUUp OworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFy LCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjEs IDEyLCA3KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4KSwKKyAgKCdNYW5hZ2VyMycs IDIwMjIsIDEsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMiwgNCksCisgICgnTWFuYWdl cjInLCAyMDIyLCAxLCAyKSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDIsIDEpLAorICAoJ01h bmFnZXIxJywgMjAyMiwgMywgMyksCisgICgnTWFuYWdlcjInLCAyMDIyLCAzLCA0KSwKKyAg KCdNYW5hZ2VyMycsIDIwMjIsIDUsIDEpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywg KiBGUk9NIHNhbGVzX2RhdGU7CisgICB0YWJsZW9pZCAgICB8IHNhbGVzcGVyc29uX25hbWUg fCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwg c2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2RlYzIwMjIgfCBNYW5hZ2VyMSAgICAgICAgIHwg ICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNh bGVzIGRlcGFydG1lbnQKKyBzYWxlc19kZWMyMDIyIHwgTWFuYWdlcjIgICAgICAgICB8ICAg ICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxl cyBkZXBhcnRtZW50Cisgc2FsZXNfamFuMjAyMiB8IE1hbmFnZXIzICAgICAgICAgfCAgICAg ICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMg ZGVwYXJ0bWVudAorIHNhbGVzX2phbjIwMjIgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAg MjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRl cGFydG1lbnQKKyBzYWxlc19mZWIyMDIyIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIw MjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBh cnRtZW50Cisgc2FsZXNfZmViMjAyMiB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIy IHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0 bWVudAorIHNhbGVzX290aGVyICAgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8 ICAgICAgICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1l bnQKKyBzYWxlc19vdGhlciAgIHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAg ICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50 Cisgc2FsZXNfb3RoZXIgICB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDUgfCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAor KDkgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNfZGF0ZSBNRVJHRSBQQVJUSVRJT05TIChz YWxlc19qYW4yMDIyLCBzYWxlc19mZWIyMDIyKSBJTlRPIHNhbGVzX2phbl9mZWIyMDIyOwor SU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBz YWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDEs IDEwKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDIsIDEwKTsKK1NFTEVDVCB0YWJsZW9pZDo6 cmVnY2xhc3MsICogRlJPTSBzYWxlc19kYXRlOworICAgICB0YWJsZW9pZCAgICAgIHwgc2Fs ZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8 IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2RlYzIwMjIgICAg IHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAg ICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfZGVjMjAyMiAg ICAgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAg ICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmVi MjAyMiB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAg ICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9m ZWIyMDIyIHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8 ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFu X2ZlYjIwMjIgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAy IHwgICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19q YW5fZmViMjAyMiB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAg IDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVz X2phbl9mZWIyMDIyIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2Fs ZXNfamFuX2ZlYjIwMjIgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAg ICAgICAyIHwgICAgICAgIDEwIHwgMjAyMi4wMi4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyBz YWxlc19vdGhlciAgICAgICB8IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAor IHNhbGVzX290aGVyICAgICAgIHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAg ICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50 Cisgc2FsZXNfb3RoZXIgICAgICAgfCBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8 ICAgICAgICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1l bnQKKygxMSByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX2RhdGU7CistLQorLS0gVGVzdDog bWVyZ2UgcGFydGl0aW9ucyBvZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIHRyaWdnZXJzCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZ IEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdF IChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJU SVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JF QVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfMjAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZP UiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUy MF8zMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8g KDMwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTMwXzQwIFBBUlRJVElPTiBPRiBzYWxl c3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApOworSU5TRVJUIElOVE8gc2Fs ZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVO Q1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdV QUdFICdwbHBnc3FsJyBBUyAkQk9EWSQKK0JFR0lOCisgICAgUkFJU0UgTk9USUNFICd0cmln Z2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FS R1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAgICBSRVRVUk4gTlVMTDsKK0VO RDsKKyRCT0RZJDsKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9z dGF0ZW1lbnRfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxl CisgICAgRk9SIEVBQ0ggU1RBVEVNRU5UCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJf aW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworQ1JFQVRFIFRSSUdHRVIgc2Fs ZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisg ICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIFBST0NF RFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CistLSAyIHRy aWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5U TyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEwLCAnTWF5Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNh bGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZl bCA9IFJPVworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24g PSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dl ciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF8y MCBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxl KSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVwor QUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNwZW9wbGUx MF8yMCwgc2FsZXNwZW9wbGUyMF8zMCwgc2FsZXNwZW9wbGUzMF80MCkgSU5UTyBzYWxlc3Bl b3BsZTEwXzQwOworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0 ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgyMCwgJ1NtaXJub2Zm Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElO U0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNFOiAgdHJpZ2dlcihzYWxl c3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwg PSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5T RVJUIElOVE8gc2FsZXNwZW9wbGUxMF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworTk9USUNF OiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4g PSBBRlRFUiwgbGV2ZWwgPSBST1cKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUwMV8xMDsK KyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAxIHwgUG9pcm90CisoMSByb3cp CisKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUxMF80MDsKKyBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgIDEwIHwgTWF5CisgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyAg ICAgICAgICAgICAyMCB8IFNtaXJub2ZmCisgICAgICAgICAgICAgMzAgfCBGb3JkCisoNCBy b3dzKQorCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlOworRFJPUCBGVU5DVElPTiBhZnRlcl9p bnNlcnRfcm93X3RyaWdnZXIoKTsKKy0tCistLSBUZXN0OiBtZXJnZSBwYXJ0aXRpb25zIHdp dGggZGVsZXRlZCBjb2x1bW5zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVz cGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMw KSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUg c2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBG Uk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRlIHBhcnRpdGlvbnMgd2l0aCBzb21lIGRlbGV0 ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwKGQxIFZBUkNIQVIo MzApLCBzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUg VkFSQ0hBUigzMCkpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAoc2FsZXNwZXJz b25faWQgSU5UIFBSSU1BUlkgS0VZLCBkMiBJTlQsICBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTMwXzQwKHNhbGVzcGVyc29uX2lk IElOVCBQUklNQVJZIEtFWSwgZDMgREFURSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMw KSk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzIwIFZBTFVFUyAoJ2R1bW15IHZhbHVl IDEnLCAxOSwgJ0l2YW5vdicpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUyMF8zMCBWQUxV RVMgKDIwLCAxMDEsICdTbWlybm9mZicpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUzMF80 MCBWQUxVRVMgKDMxLCBub3coKSwgJ1BvcG92Jyk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3Bs ZTEwXzIwIERST1AgQ09MVU1OIGQxOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBE Uk9QIENPTFVNTiBkMjsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMzBfNDAgRFJPUCBDT0xV TU4gZDM7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVz cGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0FMVEVSIFRBQkxF IHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFM VUVTIEZST00gKDIwKSBUTyAoMzApOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNI IFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0 MCk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMKKyAgKDEsICdQb2lyb3QnKSwK KyAgKDEwLCAnTWF5JyksCisgICgzMCwgJ0ZvcmQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVv cGxlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzcGVvcGxlMTBfMjAsIHNhbGVzcGVvcGxlMjBf MzAsIHNhbGVzcGVvcGxlMzBfNDApIElOVE8gc2FsZXNwZW9wbGUxMF80MDsKK3NlbGVjdCAq IGZyb20gc2FsZXNwZW9wbGU7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1l IAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg MSB8IFBvaXJvdAorICAgICAgICAgICAgIDE5IHwgSXZhbm92CisgICAgICAgICAgICAgMTAg fCBNYXkKKyAgICAgICAgICAgICAyMCB8IFNtaXJub2ZmCisgICAgICAgICAgICAgMzEgfCBQ b3BvdgorICAgICAgICAgICAgIDMwIHwgRm9yZAorKDYgcm93cykKKworc2VsZWN0ICogZnJv bSBzYWxlc3Blb3BsZTAxXzEwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFt ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg IDEgfCBQb2lyb3QKKygxIHJvdykKKworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTEwXzQw OworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAg ICAgICAgICAxMCB8IE1heQorICAgICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyAgICAgICAg ICAgICAzMSB8IFBvcG92CisgICAgICAgICAgICAgMzAgfCBGb3JkCisoNSByb3dzKQorCitE Uk9QIFRBQkxFIHNhbGVzcGVvcGxlOworLS0KKy0tIFRlc3Q6IG1lcmdlIHN1Yi1wYXJ0aXRp b25zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQs IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVz X2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBU QUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVz X21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIy MDIyIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCks IHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdF IChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzAxXzEwIFBBUlRJ VElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDQtMTAnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzEwXzIwIFBB UlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTAn KSBUTyAoJzIwMjItMDQtMjAnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzIwXzMw IFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MjAnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFD SCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3Jhbmdl X3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRl KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAg IDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjIt MDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAo NCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAg ICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAy Mi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisg ICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVy JywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcy MDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwK KyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5k aScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAg JzIwMjItMDUtMDQnKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxl c19hcHIyMDIyIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJD Iiwgc2FsZXNwZXJzb25faWQ7CisgICAgICB0YWJsZW9pZCAgICAgICB8IHNhbGVzcGVyc29u X2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgc2FsZXNfYXByMjAyMl8wMV8xMCB8 ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0 LTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyXzAxXzEwIHwgICAgICAgICAgICAgMTEgfCBUcnVt cCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorIHNhbGVzX2FwcjIw MjJfMTBfMjAgfCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAg ICA3NTAgfCAwNC0xMy0yMDIyCisgc2FsZXNfYXByMjAyMl8yMF8zMCB8ICAgICAgICAgICAg ICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyg0 IHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzX2FwcjIwMjIgTUVSR0UgUEFSVElUSU9OUyAo c2FsZXNfYXByMjAyMl8wMV8xMCwgc2FsZXNfYXByMjAyMl8xMF8yMCwgc2FsZXNfYXByMjAy Ml8yMF8zMCkgSU5UTyBzYWxlc19hcHJfYWxsOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFz cywgKiBGUk9NIHNhbGVzX2FwcjIwMjIgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0 ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgIHRhYmxlb2lkICAgIHwgc2Fs ZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19hcHJfYWxsIHwgICAg ICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAt MjAyMgorIHNhbGVzX2Fwcl9hbGwgfCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAg ICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgc2FsZXNfYXByX2FsbCB8ICAgICAg ICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIw MjIKKyBzYWxlc19hcHJfYWxsIHwgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAg IHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorKDQgcm93cykKKworRFJPUCBUQUJMRSBz YWxlc19yYW5nZTsKKy0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KKy0tCistLSBU ZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQgR0VORVJBVEVEIEFM V0FZUyBBUyBJREVOVElUWSwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNh bGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0 ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdP c2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9u JywgJ05ldyBZb3JrJywgJ01hZHJpZCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Vhc3QgUEFS VElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScs ICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2NlbnRyYWwgUEFSVElUSU9O IE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lp dicpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlz dCBERUZBVUxUOworQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QyIChMSUtFIHNhbGVzX2xpc3Qp IFBBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf bm9yZDIgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QyIEZPUiBWQUxVRVMgSU4gKCdPc2xvJywg J1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3Ro ZXJzMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIgREVGQVVMVDsKK0NSRUFURSBUQUJMRSBz YWxlc19leHRlcm5hbCAoTElLRSBzYWxlc19saXN0KTsKK0NSRUFURSBUQUJMRSBzYWxlc19l eHRlcm5hbDIgKHZjaCBWQVJDSEFSKDUpKTsKKy0tIEVSUk9SOiAgInNhbGVzX2V4dGVybmFs IiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInNhbGVzX2xpc3Qi CitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3Qs IHNhbGVzX2Vhc3QsIHNhbGVzX2V4dGVybmFsKSBJTlRPIHNhbGVzX2FsbDsKK0VSUk9SOiAg InNhbGVzX2V4dGVybmFsIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFi bGUgInNhbGVzX2xpc3QiCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElP TlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25z CistLSBFUlJPUjogICJzYWxlc19leHRlcm5hbDIiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBw YXJ0aXRpb25lZCB0YWJsZSAic2FsZXNfbGlzdCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3Qg TUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNfZXh0ZXJu YWwyKSBJTlRPIHNhbGVzX2FsbDsKK0VSUk9SOiAgInNhbGVzX2V4dGVybmFsMiIgaXMgbm90 IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJzYWxlc19saXN0IgorSElOVDog IEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRp dGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucworLS0gRVJST1I6ICByZWxhdGlvbiAi c2FsZXNfbm9yZDIiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiAic2FsZXNfbGlz dCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2Vz dCwgc2FsZXNfbm9yZDIsIHNhbGVzX2Vhc3QpIElOVE8gc2FsZXNfYWxsOworRVJST1I6ICBy ZWxhdGlvbiAic2FsZXNfbm9yZDIiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiAi c2FsZXNfbGlzdCIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBj YW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMKK0RS T1AgVEFCTEUgc2FsZXNfZXh0ZXJuYWwyOworRFJPUCBUQUJMRSBzYWxlc19leHRlcm5hbDsK K0RST1AgVEFCTEUgc2FsZXNfbGlzdDI7CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CistLQor LS0gVGVzdDogQlkgTElTVCBwYXJ0aXRpb25pbmcsIE1FUkdFIFBBUlRJVElPTlMgd2l0aCBk YXRhCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQg R0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQs Cisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsK K0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzcGVyc29uX25hbWVfaWR4IE9OIHNhbGVz X2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzcGVyc29uX25hbWUpOworQ1JFQVRFIElOREVYIHNh bGVzX2xpc3Rfc2FsZXNfc3RhdGVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNh bGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxl c19saXN0IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNp bmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlz dCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2Vhc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVF UyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2NlbnRyYWwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAo J1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVy cyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNf bGlzdCAoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2Fs ZXNfZGF0ZSkgVkFMVUVTCisgICgnVHJ1bXAnLCAgICAnQmVqaW5nJywgICAgICAgICAxMDAw LCAnMjAyMi0wMy0wMScpLAorICAoJ1NtaXJub2ZmJywgJ05ldyBZb3JrJywgICAgICAgIDUw MCwgJzIwMjItMDMtMDMnKSwKKyAgKCdGb3JkJywgICAgICdTdC4gUGV0ZXJzYnVyZycsIDIw MDAsICcyMDIyLTAzLTA1JyksCisgICgnSXZhbm92JywgICAnV2Fyc2F3JywgICAgICAgICAg NzUwLCAnMjAyMi0wMy0wNCcpLAorICAoJ0RlZXYnLCAgICAgJ0xpc2JvbicsICAgICAgICAg IDI1MCwgJzIwMjItMDMtMDcnKSwKKyAgKCdQb2lyb3QnLCAgICdCZXJsaW4nLCAgICAgICAg IDEwMDAsICcyMDIyLTAzLTAxJyksCisgICgnTWF5JywgICAgICAnSGVsc2lua2knLCAgICAg ICAxMjAwLCAnMjAyMi0wMy0wNicpLAorICAoJ0xpJywgICAgICAgJ1ZsYWRpdm9zdG9rJywg ICAgMTE1MCwgJzIwMjItMDMtMDknKSwKKyAgKCdNYXknLCAgICAgICdIZWxzaW5raScsICAg ICAgIDEyMDAsICcyMDIyLTAzLTExJyksCisgICgnSGFsZGVyJywgICAnT3NsbycsICAgICAg ICAgICAgODAwLCAnMjAyMi0wMy0wMicpLAorICAoJ011bGxlcicsICAgJ01hZHJpZCcsICAg ICAgICAgIDY1MCwgJzIwMjItMDMtMDUnKSwKKyAgKCdTbWl0aCcsICAgICdLeWl2JywgICAg ICAgICAgICAzNTAsICcyMDIyLTAzLTEwJyksCisgICgnR2FuZGknLCAgICAnV2Fyc2F3Jywg ICAgICAgICAgMTUwLCAnMjAyMi0wMy0wOCcpLAorICAoJ1BsYXRvJywgICAgJ0xpc2Jvbics ICAgICAgICAgIDk1MCwgJzIwMjItMDMtMDUnKTsKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRo IGNvbmRpdGlvbnM6CitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3NhbGVzX2xpc3R9 Jyk7CisgICAgICBvaWQgICAgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRl dGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19jZW50cmFsIHwgcCAgICAgICAgICAg ICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdXYXJz YXcnLCAnQmVybGluJywgJ0t5aXYnKQorIHNhbGVzX2Vhc3QgICAgfCBwICAgICAgICAgICAg ICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ0Jlamlu ZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpCisgc2FsZXNfbm9yZCAgICB8IHAgICAgICAg ICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgn T3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpCisgc2FsZXNfd2VzdCAgICB8 IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFM VUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpCisgc2FsZXNfb3RoZXJz ICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZB VUxUCisoNSByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElP TlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2NlbnRyYWwpIElOVE8gc2FsZXNf YWxsOworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0 X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfbGlzdH0nKTsKKyAgICAgb2lkICAgICAgfCByZWxw ZXJzaXN0ZW5jZSB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Cisgc2FsZXNfYWxsICAgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlk JywgJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycsICdXYXJzYXcnLCAnQmVybGlu JywgJ0t5aXYnKQorIHNhbGVzX25vcmQgICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJz YnVyZycsICdIZWxzaW5raScpCisgc2FsZXNfb3RoZXJzIHwgcCAgICAgICAgICAgICAgfCBy ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IERFRkFVTFQKKygzIHJvd3MpCisKK1NFTEVD VCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19saXN0IE9SREVSIEJZIHRhYmxl b2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisgIHRh Ymxlb2lkICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8ICBzYWxlc19z dGF0ZSAgIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNhbGVzX2FsbCAgfCAgICAgICAgICAgICAgMSB8 IFRydW1wICAgICAgICAgICAgfCBCZWppbmcgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAz LTAxLTIwMjIKKyBzYWxlc19hbGwgIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAg ICAgIHwgTmV3IFlvcmsgICAgICAgfCAgICAgICAgICA1MDAgfCAwMy0wMy0yMDIyCisgc2Fs ZXNfYWxsICB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNhdyAg ICAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorIHNhbGVzX2FsbCAgfCAgICAg ICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCBMaXNib24gICAgICAgICB8ICAgICAg ICAgIDI1MCB8IDAzLTA3LTIwMjIKKyBzYWxlc19hbGwgIHwgICAgICAgICAgICAgIDYgfCBQ b2lyb3QgICAgICAgICAgIHwgQmVybGluICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMy0w MS0yMDIyCisgc2FsZXNfYWxsICB8ICAgICAgICAgICAgICA4IHwgTGkgICAgICAgICAgICAg ICB8IFZsYWRpdm9zdG9rICAgIHwgICAgICAgICAxMTUwIHwgMDMtMDktMjAyMgorIHNhbGVz X2FsbCAgfCAgICAgICAgICAgICAxMSB8IE11bGxlciAgICAgICAgICAgfCBNYWRyaWQgICAg ICAgICB8ICAgICAgICAgIDY1MCB8IDAzLTA1LTIwMjIKKyBzYWxlc19hbGwgIHwgICAgICAg ICAgICAgMTIgfCBTbWl0aCAgICAgICAgICAgIHwgS3lpdiAgICAgICAgICAgfCAgICAgICAg ICAzNTAgfCAwMy0xMC0yMDIyCisgc2FsZXNfYWxsICB8ICAgICAgICAgICAgIDEzIHwgR2Fu ZGkgICAgICAgICAgICB8IFdhcnNhdyAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgt MjAyMgorIHNhbGVzX2FsbCAgfCAgICAgICAgICAgICAxNCB8IFBsYXRvICAgICAgICAgICAg fCBMaXNib24gICAgICAgICB8ICAgICAgICAgIDk1MCB8IDAzLTA1LTIwMjIKKyBzYWxlc19u b3JkIHwgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgU3QuIFBldGVyc2J1 cmcgfCAgICAgICAgIDIwMDAgfCAwMy0wNS0yMDIyCisgc2FsZXNfbm9yZCB8ICAgICAgICAg ICAgICA3IHwgTWF5ICAgICAgICAgICAgICB8IEhlbHNpbmtpICAgICAgIHwgICAgICAgICAx MjAwIHwgMDMtMDYtMjAyMgorIHNhbGVzX25vcmQgfCAgICAgICAgICAgICAgOSB8IE1heSAg ICAgICAgICAgICAgfCBIZWxzaW5raSAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTExLTIw MjIKKyBzYWxlc19ub3JkIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwg T3NsbyAgICAgICAgICAgfCAgICAgICAgICA4MDAgfCAwMy0wMi0yMDIyCisoMTQgcm93cykK KworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzIGFmdGVyIG1lcmdpbmcg cGFydGl0aW9ucworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworRVhQTEFJTiAoQ09TVFMg T0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2FsbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJz YXcnOworICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIHNhbGVzX2FsbF9zYWxlc19zdGF0 ZV9pZHggb24gc2FsZXNfYWxsCisgICBJbmRleCBDb25kOiAoKHNhbGVzX3N0YXRlKTo6dGV4 dCA9ICdXYXJzYXcnOjp0ZXh0KQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19h bGwgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNh bGVzcGVyc29uX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2Rh dGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA0IHwgSXZhbm92 ICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgor ICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAg ICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDIgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZG KSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3 JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcg c2FsZXNfYWxsX3NhbGVzX3N0YXRlX2lkeCBvbiBzYWxlc19hbGwgc2FsZXNfbGlzdAorICAg SW5kZXggQ29uZDogKChzYWxlc19zdGF0ZSk6OnRleHQgPSAnV2Fyc2F3Jzo6dGV4dCkKKygy IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9 ICdXYXJzYXcnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVz X3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAg ICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5k aSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIy CisoMiByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNf bGlzdCBXSEVSRSBzYWxlc3BlcnNvbl9uYW1lID0gJ0l2YW5vdic7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAor ICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfYWxsX3NhbGVzcGVyc29uX25hbWVfaWR4 IG9uIHNhbGVzX2FsbCBzYWxlc19saXN0XzEKKyAgICAgICAgIEluZGV4IENvbmQ6ICgoc2Fs ZXNwZXJzb25fbmFtZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4dCkKKyAgIC0+ICBCaXRtYXAg SGVhcCBTY2FuIG9uIHNhbGVzX25vcmQgc2FsZXNfbGlzdF8yCisgICAgICAgICBSZWNoZWNr IENvbmQ6ICgoc2FsZXNwZXJzb25fbmFtZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4dCkKKyAg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBzYWxlc19ub3JkX3NhbGVzcGVyc29u X25hbWVfaWR4CisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKHNhbGVzcGVyc29uX25h bWUpOjp0ZXh0ID0gJ0l2YW5vdic6OnRleHQpCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBv biBzYWxlc19vdGhlcnMgc2FsZXNfbGlzdF8zCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgo c2FsZXNwZXJzb25fbmFtZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4dCkKKyAgICAgICAgIC0+ ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBzYWxlc19vdGhlcnNfc2FsZXNwZXJzb25fbmFtZV9p ZHgKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgoc2FsZXNwZXJzb25fbmFtZSk6OnRl eHQgPSAnSXZhbm92Jzo6dGV4dCkKKygxMSByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz X2xpc3QgV0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOworIHNhbGVzcGVyc29u X2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwg c2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQg fCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0w NC0yMDIyCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBz YWxlc19saXN0OworLS0KKy0tIFRyeSB0byBNRVJHRSBwYXJ0aXRpb25zIG9mIGFub3RoZXIg dGFibGUuCistLQorQ1JFQVRFIFRBQkxFIHQxIChpIGludCwgYSBpbnQsIGIgaW50LCBjIGlu dCkgUEFSVElUSU9OIEJZIFJBTkdFIChhLCBiKTsKK0NSRUFURSBUQUJMRSB0MXAxIFBBUlRJ VElPTiBPRiB0MSBGT1IgVkFMVUVTIEZST00gKDEsIDEpIFRPICgxLCAyKTsKK0NSRUFURSBU QUJMRSB0MiAoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIFJBTkdFICh0KTsKK0NSRUFU RSBUQUJMRSB0MnBhIFBBUlRJVElPTiBPRiB0MiBGT1IgVkFMVUVTIEZST00gKCdBJykgVE8g KCdDJyk7CitDUkVBVEUgVEFCTEUgdDMgKGkgaW50LCB0IHRleHQpOworLS0gRVJST1I6ICBy ZWxhdGlvbiAidDFwMSIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0MiIKK0FM VEVSIFRBQkxFIHQyIE1FUkdFIFBBUlRJVElPTlMgKHQxcDEsIHQycGEpIElOVE8gdDJwOwor RVJST1I6ICByZWxhdGlvbiAidDFwMSIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9u ICJ0MiIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25s eSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMKKy0tIEVSUk9S OiAgInQzIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInQyIgor QUxURVIgVEFCTEUgdDIgTUVSR0UgUEFSVElUSU9OUyAodDJwYSwgdDMpIElOVE8gdDJwOwor RVJST1I6ICAidDMiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSAi dDIiCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkg bWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zCitEUk9QIFRBQkxF IHQzOworRFJPUCBUQUJMRSB0MjsKK0RST1AgVEFCTEUgdDE7CistLQorLS0gQ2hlY2sgdGhl IHBhcnRpdGlvbiBpbmRleCBuYW1lIGlmIHRoZSBwYXJ0aXRpb24gbmFtZSBpcyB0aGUgc2Ft ZSBhcyBvbmUKKy0tIG9mIHRoZSBtZXJnZWQgcGFydGl0aW9ucy4KKy0tCitDUkVBVEUgVEFC TEUgdCAoaSBpbnQsIFBSSU1BUlkgS0VZKGkpKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOwor Q1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMik7CitDUkVBVEUgSU5ERVggdGlkeCBPTiB0KGkpOworQUxURVIg VEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8xXzIsIHRwXzBfMSkgSU5UTyB0cF8xXzI7 CistLSBJbmRleG5hbWUgdmFsdWVzIHNob3VsZCBiZSAndHBfMV8yX3BrZXknIGFuZCAndHBf MV8yX2lfaWR4Jy4KK1xkKyB0cF8xXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVGFi bGUgInBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnRwXzFfMiIKKyBDb2x1bW4gfCAgVHlwZSAg IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3RvcmFnZSB8IFN0YXRzIHRh cmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAg ICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBvZjogdCBGT1IgVkFM VUVTIEZST00gKDApIFRPICgyKQorUGFydGl0aW9uIGNvbnN0cmFpbnQ6ICgoaSBJUyBOT1Qg TlVMTCkgQU5EIChpID49IDApIEFORCAoaSA8IDIpKQorSW5kZXhlczoKKyAgICAidHBfMV8y X3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoaSkKKyAgICAidHBfMV8yX2lfaWR4IiBidHJl ZSAoaSkKK05vdC1udWxsIGNvbnN0cmFpbnRzOgorICAgICJ0X2lfbm90X251bGwiIE5PVCBO VUxMICJpIiAoaW5oZXJpdGVkKQorCitEUk9QIFRBQkxFIHQ7CistLQorLS0gVHJ5IHRvIE1F UkdFIHBhcnRpdGlvbnMgb2YgdGVtcG9yYXJ5IHRhYmxlLgorLS0KK0JFR0lOOworU0hPVyBz ZWFyY2hfcGF0aDsKKyAgICAgICAgICAgc2VhcmNoX3BhdGggICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEs IHB1YmxpYworKDEgcm93KQorCitDUkVBVEUgVEVNUCBUQUJMRSB0IChpIGludCkgUEFSVElU SU9OIEJZIFJBTkdFIChpKSBPTiBDT01NSVQgRFJPUDsKK0NSRUFURSBURU1QIFRBQkxFIHRw XzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFU RSBURU1QIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEp IFRPICgyKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzJfMyBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIEZST00gKDIpIFRPICgzKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzNfNCBQQVJU SVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDMpIFRPICg0KTsKK0FMVEVSIFRBQkxFIHQg TUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gcGdfdGVtcC50cF8wXzI7 CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMiwgdHBfMl8zKSBJTlRP IHBnX3RlbXAudHBfMF8zOworLS0gUGFydGl0aW9uIHNob3VsZCBiZSB0ZW1wb3JhcnkuCitF WEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3R9Jyk7CisgIG9pZCAgIHwgcmVscGVyc2lz dGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICBwZ19nZXRfZXhw ciAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzMgfCB0 ICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMykKKyB0cF8zXzQgfCB0ICAgICAgICAgICAgICB8IHIgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgzKSBUTyAoNCkKKygyIHJv d3MpCisKKy0tIEVSUk9SOiAgY2Fubm90IGNyZWF0ZSBhIHBlcm1hbmVudCByZWxhdGlvbiBh cyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0aW9uICJ0IgorQUxURVIgVEFCTEUgdCBN RVJHRSBQQVJUSVRJT05TICh0cF8wXzMsIHRwXzNfNCkgSU5UTyB0cF8wXzQ7CitFUlJPUjog IGNhbm5vdCBjcmVhdGUgYSBwZXJtYW5lbnQgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHRl bXBvcmFyeSByZWxhdGlvbiAidCIKK1JPTExCQUNLOworLS0KKy0tIFRyeSBtaXhpbmcgcGVy bWFuZW50IGFuZCB0ZW1wb3JhcnkgcGFydGl0aW9ucy4KKy0tCitCRUdJTjsKK1NFVCBzZWFy Y2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwZ190ZW1wLCBwdWJsaWM7CitD UkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUg VEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEp OworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgyKTsKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxw ZXJzaXN0ZW5jZSBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyBXSEVSRSBjLm9pZCA9ICd0 Jzo6cmVnY2xhc3M7Cisgb2lkIHwgcmVscGVyc2lzdGVuY2UgCistLS0tLSstLS0tLS0tLS0t LS0tLS0tCisgdCAgIHwgcAorKDEgcm93KQorCitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5m bygne3R9Jyk7CisgIG9pZCAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0 YWNocGVuZGluZyB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgIAorLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzEgfCBwICAgICAgICAgICAgICB8IHIgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSkKKyB0cF8x XzIgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9S IFZBTFVFUyBGUk9NICgxKSBUTyAoMikKKygyIHJvd3MpCisKK1NBVkVQT0lOVCBzOworU0VU IHNlYXJjaF9wYXRoID0gcGdfdGVtcCwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1Ymxp YzsKKy0tIENhbid0IG1lcmdlIHBlcnNpc3RlbnQgcGFydGl0aW9ucyBpbnRvIGEgdGVtcG9y YXJ5IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEs IHRwXzFfMikgSU5UTyB0cF8wXzI7CitFUlJPUjogIGNhbm5vdCBjcmVhdGUgYSB0ZW1wb3Jh cnkgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHBlcm1hbmVudCByZWxhdGlvbiAidCIKK1JP TExCQUNLIFRPIFNBVkVQT0lOVCBzOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19t ZXJnZV9zY2hlbWEsIHB1YmxpYzsKKy0tIENhbid0IG1lcmdlIHBlcnNpc3RlbnQgcGFydGl0 aW9ucyBpbnRvIGEgdGVtcG9yYXJ5IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgdCBNRVJHRSBQ QVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyBwZ190ZW1wLnRwXzBfMjsKK0VSUk9S OiAgY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2Yg cGVybWFuZW50IHJlbGF0aW9uICJ0IgorUk9MTEJBQ0s7CitCRUdJTjsKK1NFVCBzZWFyY2hf cGF0aCA9IHBnX3RlbXAsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CitDUkVB VEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFC TEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOwor Q1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEp IFRPICgyKTsKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxwZXJz aXN0ZW5jZSBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyBXSEVSRSBjLm9pZCA9ICd0Jzo6 cmVnY2xhc3M7Cisgb2lkIHwgcmVscGVyc2lzdGVuY2UgCistLS0tLSstLS0tLS0tLS0tLS0t LS0tCisgdCAgIHwgdAorKDEgcm93KQorCitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygn e3R9Jyk7CisgIG9pZCAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNo cGVuZGluZyB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyB0cF8wXzEgfCB0ICAgICAgICAgICAgICB8IHIgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSkKKyB0cF8xXzIg fCB0ICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMikKKygyIHJvd3MpCisKK1NFVCBzZWFyY2hfcGF0aCA9IHBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwZ190ZW1wLCBwdWJsaWM7CistLSBDYW4ndCBtZXJn ZSB0ZW1wb3JhcnkgcGFydGl0aW9ucyBpbnRvIGEgcGVyc2lzdGVudCBwYXJ0aXRpb24KK0FM VEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBf MF8yOworRVJST1I6ICBjYW5ub3QgY3JlYXRlIGEgcGVybWFuZW50IHJlbGF0aW9uIGFzIHBh cnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVsYXRpb24gInQiCitST0xMQkFDSzsKK0RFQUxMT0NB VEUgZ2V0X3BhcnRpdGlvbl9pbmZvOworLS0gQ2hlY2sgdGhlIG5ldyBwYXJ0aXRpb24gaW5o ZXJpdHMgcGFyZW50J3MgdGFibGVzcGFjZQorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9u c19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0NSRUFURSBUQUJMRSB0IChpIGludCBQUklNQVJZ IEtFWSBVU0lORyBJTkRFWCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpCisgIFBBUlRJ VElPTiBCWSBSQU5HRSAoaSkgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworQ1JFQVRF IFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgx KTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwg dHBfMV8yKSBJTlRPIHRwXzBfMjsKK1NFTEVDVCB0YWJsZW5hbWUsIHRhYmxlc3BhY2UgRlJP TSBwZ190YWJsZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzInKSBBTkQg c2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25zX21lcmdlX3NjaGVtYScKKyAgT1JERVIgQlkgdGFi bGVuYW1lIENPTExBVEUgIkMiLCB0YWJsZXNwYWNlIENPTExBVEUgIkMiOworIHRhYmxlbmFt ZSB8ICAgIHRhYmxlc3BhY2UgICAgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0K KyB0ICAgICAgICAgfCByZWdyZXNzX3RibHNwYWNlCisgdHBfMF8yICAgIHwgcmVncmVzc190 YmxzcGFjZQorKDIgcm93cykKKworU0VMRUNUIHRhYmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJs ZXNwYWNlIEZST00gcGdfaW5kZXhlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3Rw XzBfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hJworICBP UkRFUiBCWSB0YWJsZW5hbWUgQ09MTEFURSAiQyIsIGluZGV4bmFtZSBDT0xMQVRFICJDIiwg dGFibGVzcGFjZSBDT0xMQVRFICJDIjsKKyB0YWJsZW5hbWUgfCAgaW5kZXhuYW1lICB8ICAg IHRhYmxlc3BhY2UgICAgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLQorIHQgICAgICAgICB8IHRfcGtleSAgICAgIHwgcmVncmVzc190YmxzcGFjZQor IHRwXzBfMiAgICB8IHRwXzBfMl9wa2V5IHwgcmVncmVzc190YmxzcGFjZQorKDIgcm93cykK KworRFJPUCBUQUJMRSB0OworLS0gQ2hlY2sgdGhlIG5ldyBwYXJ0aXRpb24gaW5oZXJpdHMg cGFyZW50J3MgdGFibGUgYWNjZXNzIG1ldGhvZAorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0 aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0NSRUFURSBBQ0NFU1MgTUVUSE9EIHBhcnRp dGlvbnNfbWVyZ2VfaGVhcCBUWVBFIFRBQkxFIEhBTkRMRVIgaGVhcF90YWJsZWFtX2hhbmRs ZXI7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVVNJ TkcgcGFydGl0aW9uc19tZXJnZV9oZWFwOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJ T04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8x XzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitBTFRFUiBU QUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsK K1NFTEVDVCBjLnJlbG5hbWUsIGEuYW1uYW1lCitGUk9NIHBnX2NsYXNzIGMgSk9JTiBwZ19h bSBhIE9OIGMucmVsYW0gPSBhLm9pZAorV0hFUkUgYy5vaWQgSU4gKCd0Jzo6cmVnY2xhc3Ms ICd0cF8wXzInOjpyZWdjbGFzcykKK09SREVSIEJZIGMucmVsbmFtZSBDT0xMQVRFICJDIjsK KyByZWxuYW1lIHwgICAgICAgIGFtbmFtZSAgICAgICAgIAorLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICB8IHBhcnRpdGlvbnNfbWVyZ2VfaGVhcAorIHRw XzBfMiAgfCBwYXJ0aXRpb25zX21lcmdlX2hlYXAKKygyIHJvd3MpCisKK0RST1AgVEFCTEUg dDsKK0RST1AgQUNDRVNTIE1FVEhPRCBwYXJ0aXRpb25zX21lcmdlX2hlYXA7CistLSBUZXN0 IHBlcm1pc3Npb24gY2hlY2tzLiAgVGhlIHVzZXIgbmVlZHMgdG8gb3duIHRoZSBwYXJlbnQg dGFibGUgYW5kIGFsbAorLS0gdGhlIG1lcmdpbmcgcGFydGl0aW9ucyB0byBkbyB0aGUgbWVy Z2UuCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0NSRUFU RSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0dSQU5UIEFMTCBPTiBTQ0hF TUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2Vf YWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIFRP IHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJ T04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBp bnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJ VElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRw XzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK1NFVCBT RVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworLS0g RVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHQKK0FMVEVSIFRBQkxFIHQgTUVSR0Ug UEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworRVJST1I6ICBtdXN0 IGJlIG93bmVyIG9mIHRhYmxlIHQKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0FM VEVSIFRBQkxFIHQgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VU IFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7Cist LSBFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdHBfMF8xCitBTFRFUiBUQUJMRSB0 IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK0VSUk9S OiAgbXVzdCBiZSBvd25lciBvZiB0YWJsZSB0cF8wXzEKK1JFU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTjsKK0FMVEVSIFRBQkxFIHRwXzBfMSBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlv bl9tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0 aW9uX21lcmdlX2JvYjsKKy0tIEVSUk9SOiAgbXVzdCBiZSBvd25lciBvZiB0YWJsZSB0cF8x XzIKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElO VE8gdHBfMF8yOworRVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHRwXzFfMgorUkVT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQUxURVIgVEFCTEUgdHBfMV8yIE9XTkVSIFRP IHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJ T04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworLS0gT2s6CitBTFRFUiBUQUJMRSB0 IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1JFU0VU IFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0RST1AgVEFCTEUgdDsKKy0tIFRlc3Q6IHdlIGNh bid0IG1lcmdlIHBhcnRpdGlvbnMgd2l0aCBkaWZmZXJlbnQgb3duZXJzCitDUkVBVEUgVEFC TEUgdHBfMF8xKGkgaW50KTsKK0FMVEVSIFRBQkxFIHRwXzBfMSBPV05FUiBUTyByZWdyZXNz X3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0NSRUFURSBUQUJMRSB0cF8xXzIoaSBpbnQpOwor QUxURVIgVEFCTEUgdHBfMV8yIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2Jv YjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0FM VEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMSk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMV8yIEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDIpOworLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9u X21lcmdlX2FsaWNlJzoKK1xkdCB0cF8wXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2YgdGFibGVzCisgICAgICAgICBTY2hlbWEgICAgICAgICAgfCAgTmFtZSAg fCBUeXBlICB8ICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSB8IHRwXzBfMSB8IHRhYmxlIHwg cmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2UKKygxIHJvdykKKworLS0gT3duZXIgaXMg J3JlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYic6CitcZHQgdHBfMV8yCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgdGFibGVzCisgICAgICAgICBTY2hlbWEgICAg ICAgICAgfCAgTmFtZSAgfCBUeXBlICB8ICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIHwgdHBfMV8y IHwgdGFibGUgfCByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2IKKygxIHJvdykKKworLS0g RVJST1I6ICBwYXJ0aXRpb25zIGJlaW5nIG1lcmdlZCBoYXZlIGRpZmZlcmVudCBvd25lcnMK K0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8g dHBfMF8yOworRVJST1I6ICBwYXJ0aXRpb25zIGJlaW5nIG1lcmdlZCBoYXZlIGRpZmZlcmVu dCBvd25lcnMKK0RST1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitS RVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBGUk9NIHJlZ3Jl c3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9t ZXJnZV9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7Cist LSBUZXN0IGZvciBoYXNoIHBhcnRpdGlvbmVkIHRhYmxlCitDUkVBVEUgVEFCTEUgdCAoaSBp bnQpIFBBUlRJVElPTiBCWSBIQVNIKGkpOworQ1JFQVRFIFRBQkxFIHRwMSBQQVJUSVRJT04g T0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDApOworQ1JFQVRF IFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwg UkVNQUlOREVSIDEpOworLS0gRVJST1I6ICBwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25l ZCB0YWJsZSBjYW5ub3QgYmUgbWVyZ2VkCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElP TlMgKHRwMSwgdHAyKSBJTlRPIHRwMzsKK0VSUk9SOiAgcGFydGl0aW9uIG9mIGhhc2gtcGFy dGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIG1lcmdlZAorLS0gRVJST1I6ICBsaXN0IG9mIHBh cnRpdGlvbnMgdG8gYmUgbWVyZ2VkIHNob3VsZCBpbmNsdWRlIGF0IGxlYXN0IHR3byBwYXJ0 aXRpb25zCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwMSkgSU5UTyB0cDM7 CitFUlJPUjogIGxpc3Qgb2YgcGFydGl0aW9ucyB0byBiZSBtZXJnZWQgc2hvdWxkIGluY2x1 ZGUgYXQgbGVhc3QgdHdvIHBhcnRpdGlvbnMKK0RST1AgVEFCTEUgdDsKKy0tIFRlc3QgZm9y IG1lcmdlZCBwYXJ0aXRpb24gcHJvcGVydGllczoKKy0tICogU1RBVElTVElDUyBpcyBlbXB0 eQorLS0gKiBDT01NRU5UIGlzIGVtcHR5CistLSAqIERFRkFVTFRTIGFyZSB0aGUgc2FtZSBh cyBERUZBVUxUUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogU1RPUkFHRSBpcyB0aGUg c2FtZSBhcyBTVE9SQUdFIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBHRU5FUkFURUQg YW5kIENPTlNUUkFJTlRTIGFyZSB0aGUgc2FtZSBhcyBHRU5FUkFURUQgYW5kIENPTlNUUkFJ TlRTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBUUklHR0VSUyBhcmUgdGhlIHNhbWUg YXMgVFJJR0dFUlMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCitcc2V0IEhJREVfVE9BU1RfQ09N UFJFU1NJT04gZmFsc2UKK0NSRUFURSBUQUJMRSB0CisoaSBpbnQgTk9UIE5VTEwsCisgdCB0 ZXh0IFNUT1JBR0UgRVhURU5ERUQgQ09NUFJFU1NJT04gcGdseiBERUZBVUxUICdkZWZhdWx0 X3QnLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0w MS0wMScpIFNUT1JFRCkgUEFSVElUSU9OIEJZIFJBTkdFIChhYnMoaSkpOworQ09NTUVOVCBP TiBDT0xVTU4gdC5pIElTICd0MS5pJzsKK0NSRUFURSBUQUJMRSB0cF8wXzEKKyhpIGludCBO T1QgTlVMTCwKKyB0IHRleHQgU1RPUkFHRSBNQUlOIERFRkFVTFQgJ2RlZmF1bHRfdHBfMF8x JywKKyBiIGJpZ2ludCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDIt MDInKSBTVE9SRUQpOworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzBfMSBG T1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NPTU1FTlQgT04gQ09MVU1OIHRwXzBfMS5p IElTICd0cF8wXzEuaSc7CitDUkVBVEUgVEFCTEUgdHBfMV8yCisoaSBpbnQgTk9UIE5VTEws CisgdCB0ZXh0IFNUT1JBR0UgTUFJTiBERUZBVUxUICdkZWZhdWx0X3RwXzFfMicsCisgYiBi aWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAzLTAzJykgU1RP UkVEKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMik7CitDT01NRU5UIE9OIENPTFVNTiB0cF8xXzIuaSBJUyAndHBf MV8yLmknOworQ1JFQVRFIFNUQVRJU1RJQ1MgdF9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGks IGIgZnJvbSB0OworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBfMF8xX3N0YXQgKERFUEVOREVOQ0lF Uykgb24gaSwgYiBmcm9tIHRwXzBfMTsKK0NSRUFURSBTVEFUSVNUSUNTIHRwXzFfMl9zdGF0 IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0cF8xXzI7CitBTFRFUiBUQUJMRSB0IEFE RCBDT05TVFJBSU5UIHRfYl9jaGVjayBDSEVDSyAoYiA+IDApOworQUxURVIgVEFCTEUgdCBB REQgQ09OU1RSQUlOVCB0X2JfY2hlY2sxIENIRUNLIChiID4gMCkgTk9UIEVORk9SQ0VEOwor QUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2syIENIRUNLIChiID4gMCkg Tk9UIFZBTElEOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2Jfbm4gTk9UIE5V TEwgYiBOT1QgVkFMSUQ7CitJTlNFUlQgSU5UTyB0cF8wXzEoaSwgdCwgYikgVkFMVUVTKDAs IERFRkFVTFQsIDEpOworSU5TRVJUIElOVE8gdHBfMV8yKGksIHQsIGIpIFZBTFVFUygxLCBE RUZBVUxULCAyKTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rp b24oKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTCiskQk9EWSQKK0JF R0lOCisgIFJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdo ZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVW RUw7CisgIFJFVFVSTiBuZXc7CitFTkQ7CiskQk9EWSQ7CitDUkVBVEUgVFJJR0dFUiB0X2Jl Zm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0IEZPUiBFQUNIIFJP VworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0Jyk7CitDUkVBVEUg VFJJR0dFUiB0cF8wXzFfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJU IE9OIHRwXzBfMSBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9m dW5jdGlvbigndHBfMF8xJyk7CitDUkVBVEUgVFJJR0dFUiB0cF8xXzJfYmVmb3JlX2luc2Vy dF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwXzFfMiBGT1IgRUFDSCBST1cKKyAg RVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlvbigndHBfMV8yJyk7CitcZCsgdHBf MF8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFRhYmxlICJwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS50cF8wXzEiCisgQ29sdW1uIHwg IFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgICAgICBE ZWZhdWx0ICAgICAgICAgICAgICAgICAgICAgfCBTdG9yYWdlIHwgQ29tcHJlc3Npb24gfCBT dGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLQorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxh aW4gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgdHBfMF8xLmkKKyB0ICAgICAg fCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAnZGVmYXVsdF90cF8wXzEnOjp0 ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICB8IG1haW4gICAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAgICB8IAorIGIgICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCBub3Qg bnVsbCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgcGxhaW4gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgCisgZCAgICAgIHwg ZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAo JzAyLTAyLTIwMjInOjpkYXRlKSBzdG9yZWQgfCBwbGFpbiAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgxKQorUGFydGl0aW9uIGNvbnN0cmFpbnQ6ICgoYWJzKGkpIElTIE5PVCBOVUxMKSBBTkQg KGFicyhpKSA+PSAwKSBBTkQgKGFicyhpKSA8IDEpKQorQ2hlY2sgY29uc3RyYWludHM6Cisg ICAgInRfYl9jaGVjayIgQ0hFQ0sgKGIgPiAwKQorICAgICJ0X2JfY2hlY2sxIiBDSEVDSyAo YiA+IDApIE5PVCBFTkZPUkNFRAorICAgICJ0X2JfY2hlY2syIiBDSEVDSyAoYiA+IDApIE5P VCBWQUxJRAorU3RhdGlzdGljcyBvYmplY3RzOgorICAgICJwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYS50cF8wXzFfc3RhdCIgKGRlcGVuZGVuY2llcykgT04gaSwgYiBGUk9NIHRwXzBfMQor Tm90LW51bGwgY29uc3RyYWludHM6CisgICAgInRwXzBfMV9pX25vdF9udWxsIiBOT1QgTlVM TCAiaSIgKGluaGVyaXRlZCkKKyAgICAidF9iX25uIiBOT1QgTlVMTCAiYiIgKGluaGVyaXRl ZCkgTk9UIFZBTElECitUcmlnZ2VyczoKKyAgICB0X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdn ZXIgQkVGT1JFIElOU0VSVCBPTiB0cF8wXzEgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJ T04gdHJpZ2dlcl9mdW5jdGlvbigndCcpLCBPTiBUQUJMRSB0CisgICAgdHBfMF8xX2JlZm9y ZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF8wXzEgRk9SIEVBQ0gg Uk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigndHBfMF8xJykKKworQUxU RVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8w XzE7CitcZCsgdHBfMF8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS50cF8wXzEi CisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAg ICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgICAgICAgfCBTdG9yYWdlICB8IENv bXByZXNzaW9uIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAg ICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgCisg dCAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgJ2RlZmF1bHRfdCc6 OnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBleHRlbmRlZCB8IHBnbHog ICAgICAgIHwgICAgICAgICAgICAgIHwgCisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAg ICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgCisg ZCAgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFs d2F5cyBhcyAoJzAxLTAxLTIwMjInOjpkYXRlKSBzdG9yZWQgfCBwbGFpbiAgICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMikKK1BhcnRpdGlvbiBjb25zdHJhaW50OiAoKGFicyhpKSBJUyBOT1Qg TlVMTCkgQU5EIChhYnMoaSkgPj0gMCkgQU5EIChhYnMoaSkgPCAyKSkKK0NoZWNrIGNvbnN0 cmFpbnRzOgorICAgICJ0X2JfY2hlY2siIENIRUNLIChiID4gMCkKKyAgICAidF9iX2NoZWNr MSIgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQKKyAgICAidF9iX2NoZWNrMiIgQ0hFQ0sg KGIgPiAwKSBOT1QgVkFMSUQKK05vdC1udWxsIGNvbnN0cmFpbnRzOgorICAgICJ0X2lfbm90 X251bGwiIE5PVCBOVUxMICJpIiAoaW5oZXJpdGVkKQorICAgICJ0X2Jfbm4iIE5PVCBOVUxM ICJiIiAoaW5oZXJpdGVkKSBOT1QgVkFMSUQKK1RyaWdnZXJzOgorICAgIHRfYmVmb3JlX2lu c2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwXzBfMSBGT1IgRUFDSCBST1cg RVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCd0JyksIE9OIFRBQkxFIHQKKwor SU5TRVJUIElOVE8gdChpLCB0LCBiKSBWQUxVRVMoMSwgREVGQVVMVCwgMyk7CitOT1RJQ0U6 ICB0cmlnZ2VyKHQpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQkVGT1JFLCBs ZXZlbCA9IFJPVworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHQgT1JERVIg QlkgYjsKKyB0YWJsZW9pZCB8IGkgfCAgICAgICB0ICAgICAgICB8IGIgfCAgICAgZCAgICAg IAorLS0tLS0tLS0tLSstLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0rLS0tLS0tLS0tLS0tCisg dHBfMF8xICAgfCAwIHwgZGVmYXVsdF90cF8wXzEgfCAxIHwgMDEtMDEtMjAyMgorIHRwXzBf MSAgIHwgMSB8IGRlZmF1bHRfdHBfMV8yIHwgMiB8IDAxLTAxLTIwMjIKKyB0cF8wXzEgICB8 IDEgfCBkZWZhdWx0X3QgICAgICB8IDMgfCAwMS0wMS0yMDIyCisoMyByb3dzKQorCitEUk9Q IFRBQkxFIHQ7CitEUk9QIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKTsKK1xzZXQgSElE RV9UT0FTVF9DT01QUkVTU0lPTiB0cnVlCistLSBUZXN0IE1FUkdFIFBBUlRJVElPTlMgd2l0 aCBub3QgdmFsaWQgZm9yZWlnbiBrZXkgY29uc3RyYWludAorQ1JFQVRFIFRBQkxFIHQgKGkg SU5UIFBSSU1BUlkgS0VZKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxF IHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NS RUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoMik7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCksICgxKTsKK0NSRUFURSBUQUJMRSB0 X2ZrIChpIElOVCk7CitJTlNFUlQgSU5UTyB0X2ZrIFZBTFVFUyAoMSksICgyKTsKK0FMVEVS IFRBQkxFIHRfZmsgQUREIENPTlNUUkFJTlQgdF9ma19pX2ZrZXkgRk9SRUlHTiBLRVkgKGkp IFJFRkVSRU5DRVMgdCBOT1QgVkFMSUQ7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElP TlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKy0tIFNob3VsZCBiZSBOT1QgVkFM SUQgRk9SRUlHTiBLRVkKK1xkIHRwXzBfMgorICAgICAgVGFibGUgInBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hLnRwXzBfMiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVs bGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBu dWxsIHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikKK0lu ZGV4ZXM6CisgICAgInRwXzBfMl9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGkpCitSZWZl cmVuY2VkIGJ5OgorICAgIFRBQkxFICJ0X2ZrIiBDT05TVFJBSU5UICJ0X2ZrX2lfZmtleSIg Rk9SRUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMgdChpKSBOT1QgVkFMSUQKKworLS0gRVJST1I6 ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0X2ZrIiB2aW9sYXRlcyBmb3JlaWduIGtl eSBjb25zdHJhaW50ICJ0X2ZrX2lfZmtleSIKK0FMVEVSIFRBQkxFIHRfZmsgVkFMSURBVEUg Q09OU1RSQUlOVCB0X2ZrX2lfZmtleTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0 YWJsZSAidF9mayIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidF9ma19pX2Zr ZXkiCitERVRBSUw6ICBLZXkgKGkpPSgyKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAidCIu CitEUk9QIFRBQkxFIHRfZms7CitEUk9QIFRBQkxFIHQ7CistLSBUZXN0IE1FUkdFIFBBUlRJ VElPTlMgd2l0aCBub3QgZW5mb3JjZWQgZm9yZWlnbiBrZXkgY29uc3RyYWludAorQ1JFQVRF IFRBQkxFIHQgKGkgSU5UIFBSSU1BUlkgS0VZKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOwor Q1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMik7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCksICgxKTsKK0NS RUFURSBUQUJMRSB0X2ZrIChpIElOVCk7CitJTlNFUlQgSU5UTyB0X2ZrIFZBTFVFUyAoMSks ICgyKTsKK0FMVEVSIFRBQkxFIHRfZmsgQUREIENPTlNUUkFJTlQgdF9ma19pX2ZrZXkgRk9S RUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMgdCBOT1QgRU5GT1JDRUQ7CitBTFRFUiBUQUJMRSB0 IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKy0tIFNo b3VsZCBiZSBOT1QgRU5GT1JDRUQgRk9SRUlHTiBLRVkKK1xkIHRwXzBfMgorICAgICAgVGFi bGUgInBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnRwXzBfMiIKKyBDb2x1bW4gfCAgVHlwZSAg IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaSAgICAgIHwgaW50ZWdlciB8 ICAgICAgICAgICB8IG5vdCBudWxsIHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMikKK0luZGV4ZXM6CisgICAgInRwXzBfMl9wa2V5IiBQUklNQVJZIEtF WSwgYnRyZWUgKGkpCitSZWZlcmVuY2VkIGJ5OgorICAgIFRBQkxFICJ0X2ZrIiBDT05TVFJB SU5UICJ0X2ZrX2lfZmtleSIgRk9SRUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMgdChpKSBOT1Qg RU5GT1JDRUQKKworLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0X2Zr IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0X2ZrX2lfZmtleSIKK0FMVEVS IFRBQkxFIHRfZmsgQUxURVIgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleSBFTkZPUkNFRDsKK0VS Uk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidF9mayIgdmlvbGF0ZXMgZm9yZWln biBrZXkgY29uc3RyYWludCAidF9ma19pX2ZrZXkiCitERVRBSUw6ICBLZXkgKGkpPSgyKSBp cyBub3QgcHJlc2VudCBpbiB0YWJsZSAidCIuCitEUk9QIFRBQkxFIHRfZms7CitEUk9QIFRB QkxFIHQ7CistLSBUZXN0IGZvciByZWNvbXB1dGF0aW9uIG9mIHN0b3JlZCBnZW5lcmF0ZWQg Y29sdW1ucy4KK0NSRUFURSBUQUJMRSB0IChpIGludCwgdGFiX2lkIGludCBnZW5lcmF0ZWQg YWx3YXlzIGFzICh0YWJsZW9pZCkgc3RvcmVkKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOwor Q1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIGNjIENI RUNLKHRhYmxlb2lkIDw+IDEyMzQ1Njc4OSk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCks ICgxKTsKKy0tIFNob3VsZCBiZSAwIGJlY2F1c2UgcGFydGl0aW9uIGlkZW50aWZpZXIgZm9y IHJvdyB3aXRoIGk9MCBpcyBkaWZmZXJlbnQgZnJvbQorLS0gcGFydGl0aW9uIGlkZW50aWZp ZXIgZm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9 IDAgQU5EIHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hFUkUgaSA9IDEpOwor IGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisKKy0tICJ0YWJfaWQiIGNvbHVt biAoc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW4pIHdpdGggInRhYmxlb2lkIiBhdHRyaWJ1dGUg cmVxdWlyZXMKKy0tIHJlY29tcHV0YXRpb24gaGVyZS4KK0FMVEVSIFRBQkxFIHQgTUVSR0Ug UEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworLS0gU2hvdWxkIGJl IDEgYmVjYXVzZSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0wIGlzIHRo ZSBzYW1lIGFzCistLSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0xLgor U0VMRUNUIGNvdW50KCopIEZST00gdCBXSEVSRSBpID0gMCBBTkQgdGFiX2lkIElOIChTRUxF Q1QgdGFiX2lkIEZST00gdCBXSEVSRSBpID0gMSk7CisgY291bnQgCistLS0tLS0tCisgICAg IDEKKygxIHJvdykKKworRFJPUCBUQUJMRSB0OworLS0gVGVzdCBmb3IgZ2VuZXJhdGVkIGNv bHVtbnMgKGRpZmZlcmVudCBvcmRlciBvZiBjb2x1bW5zIGluIHBhcnRpdGlvbmVkIHRhYmxl CistLSBhbmQgcGFydGl0aW9ucykuCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQsIGcgaW50IEdF TkVSQVRFRCBBTFdBWVMgQVMgKGkgKyB0YWJsZW9pZDo6aW50KSkgUEFSVElUSU9OIEJZIFJB TkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8xIChnIGludCBHRU5FUkFURUQgQUxXQVlTIEFT IChpICsgdGFibGVvaWQ6OmludCksIGkgaW50KTsKK0NSRUFURSBUQUJMRSB0cF8yIChnIGlu dCBHRU5FUkFURUQgQUxXQVlTIEFTIChpICsgdGFibGVvaWQ6OmludCksIGkgaW50KTsKK0FM VEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xIEZPUiBWQUxVRVMgRlJPTSAoLTEp IFRPICgxMCk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMiBGT1IgVkFM VUVTIEZST00gKDEwKSBUTyAoMjApOworQUxURVIgVEFCTEUgdCBBREQgQ0hFQ0sgKGcgPiAw KTsKK0FMVEVSIFRBQkxFIHQgQUREIENIRUNLIChpID4gMCk7CitJTlNFUlQgSU5UTyB0IFZB TFVFUyAoNSksICgxNSk7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzEs IHRwXzIpIElOVE8gdHBfMTI7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMTYpOworLS0gRVJS T1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidHBfMTIiIHZpb2xhdGVzIGNoZWNrIGNvbnN0 cmFpbnQgInRfaV9jaGVjayIKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKTsKK0VSUk9SOiAg bmV3IHJvdyBmb3IgcmVsYXRpb24gInRwXzEyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50 ICJ0X2lfY2hlY2siCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoMCwgdmlydHVh bCkuCistLSBTaG91bGQgYmUgMyByb3dzOiAoNSksICgxNSksICgxNik6CitTRUxFQ1QgaSBG Uk9NIHQgT1JERVIgQlkgaTsKKyBpICAKKy0tLS0KKyAgNQorIDE1CisgMTYKKygzIHJvd3Mp CisKKy0tIFNob3VsZCBiZSAxIGJlY2F1c2UgZm9yIHRoZSBzYW1lIHRhYmxlb2lkICgxNSAr IHRhYmxlb2lkKSA9ICg1ICsgdGFibGVvaWQpICsgMTA6CitTRUxFQ1QgY291bnQoKikgRlJP TSB0IFdIRVJFIGkgPSAxNSBBTkQgZyBJTiAoU0VMRUNUIGcgKyAxMCBGUk9NIHQgV0hFUkUg aSA9IDUpOworIGNvdW50IAorLS0tLS0tLQorICAgICAxCisoMSByb3cpCisKK0RST1AgVEFC TEUgdDsKK1JFU0VUIHNlYXJjaF9wYXRoOworLS0KK0RST1AgU0NIRU1BIHBhcnRpdGlvbnNf bWVyZ2Vfc2NoZW1hOworRFJPUCBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90 ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggZmJmZmM2N2FlNi4uMmQzZjUw YTQzYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xMjMsNyArMTIz LDcgQEAgdGVzdDogcGxhbmNhY2hlIGxpbWl0IHBscGdzcWwgY29weTIgdGVtcCBkb21haW4g cmFuZ2VmdW5jcyBwcmVwYXJlIGNvbnZlcnNpb24gdHIKICMgVGhlIHN0YXRzIHRlc3QgcmVz ZXRzIHN0YXRzLCBzbyBub3RoaW5nIGVsc2UgbmVlZGluZyBzdGF0cyBhY2Nlc3MgY2FuIGJl IGluCiAjIHRoaXMgZ3JvdXAuCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IHBhcnRpdGlvbl9qb2lu IHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25zIGhhc2hfcGFydCBpbmRleGluZyBwYXJ0aXRp b25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxlc29ydCBleHBsYWluIGNvbXByZXNz aW9uIGNvbXByZXNzaW9uX2x6NCBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZSBudW1hCit0ZXN0 OiBwYXJ0aXRpb25fbWVyZ2UgcGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9w dGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9u X2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24gY29tcHJlc3Npb25fbHo0IG1l bW9pemUgc3RhdHMgcHJlZGljYXRlIG51bWEKIAogIyBldmVudF90cmlnZ2VyIGRlcGVuZHMg b24gY3JlYXRlX2FtIGFuZCBjYW5ub3QgcnVuIGNvbmN1cnJlbnRseSB3aXRoCiAjIGFueSB0 ZXN0IHRoYXQgcnVucyBEREwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Bh cnRpdGlvbl9tZXJnZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVy Z2Uuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmZmYjQ5ODYx MmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25f bWVyZ2Uuc3FsCkBAIC0wLDAgKzEsNzkxIEBACistLQorLS0gUEFSVElUSU9OU19NRVJHRQor LS0gVGVzdHMgZm9yICJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyAuLi4iIGNv bW1hbmQKKy0tCisKK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWE7CitD UkVBVEUgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMjsKK1NFVCBzZWFyY2hfcGF0 aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CisKKy0tCistLSBCWSBSQU5H RSBwYXJ0aXRpb25pbmcKKy0tCisKKy0tCistLSBUZXN0IGZvciBlcnJvciBjb2RlcworLS0K K0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3Bl cnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERB VEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfZGVjMjAyMSBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMS0xMi0wMScpIFRPICgnMjAyMS0xMi0zMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ph bjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRP ICgnMjAyMi0wNC0wMScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNw ZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91 bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByXzEgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xNScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl8yIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTUnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CisKK0NSRUFU RSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7 CisKKy0tIEVSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAic2FsZXNfZmViMjAyMiIgaXMg YWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05T IChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19mZWIyMDIyKSBJTlRPIHNh bGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0tIEVSUk9SOiAgInNhbGVzX2FwcjIwMjIiIGlzIG5v dCBhIHRhYmxlCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChz YWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIyMDIyKSBJTlRPIHNhbGVz X2ZlYl9tYXJfYXByMjAyMjsKKy0tIEVSUk9SOiAgY2FuIG5vdCBtZXJnZSBwYXJ0aXRpb24g InNhbGVzX21hcjIwMjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19qYW4yMDIy IgorLS0gREVUQUlMOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19tYXIyMDIy IiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNf amFuMjAyMiIKKy0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25zIHNhbGVzX2phbjIwMjIgYW5k IHNhbGVzX21hcjIwMjIpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJ T05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIyKSBJTlRPIHNhbGVzX2phbl9tYXIy MDIyOworLS0gRVJST1I6ICBjYW4gbm90IG1lcmdlIHBhcnRpdGlvbiAic2FsZXNfamFuMjAy MiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCistLSBERVRBSUw6 ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGlzIG5vdCBlcXVh bCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorLS0g KHNwYWNlIGJldHdlZW4gc2VjdGlvbnMgc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNfamFuMjAy MikKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2Rl YzIwMjEsIHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZGVjX2ph bl9mZWIyMDIyOworLS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIy MDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBB UlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hLnNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOwor LS1FUlJPUiwgc2FsZXNfYXByXzIgYWxyZWFkeSBleGlzdHMKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIs IHNhbGVzX2phbjIwMjIpIElOVE8gc2FsZXNfYXByXzI7CisKK0NSRUFURSBWSUVXIGphbjIw MjJ2IGFzIFNFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIp IElOVE8gc2FsZXNfZGVjX2phbl9mZWIyMDIyOworRFJPUCBWSUVXIGphbjIwMjJ2OworCist LSBOTyBFUlJPUjogdGVzdCBmb3IgY3VzdG9tIHBhcnRpdGlvbnMgb3JkZXIsIHNvdXJjZSBw YXJ0aXRpb25zIG5vdCBpbiB0aGUgc2VhcmNoX3BhdGgKK1NFVCBzZWFyY2hfcGF0aCA9IHBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMiwgcHVibGljOworQUxURVIgVEFCTEUgcGFydGl0aW9u c19tZXJnZV9zY2hlbWEuc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoCisgIHBhcnRp dGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2ZlYjIwMjIsCisgIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hLnNhbGVzX21hcjIwMjIsCisgIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVz X2phbjIwMjIpIElOVE8gc2FsZXNfamFuX2ZlYl9tYXIyMDIyOworU0VUIHNlYXJjaF9wYXRo ID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKworUFJFUEFSRSBnZXRfcGFy dGl0aW9uX2luZm8ocmVnY2xhc3NbXSkgQVMKK1NFTEVDVCAgYy5vaWQ6OnBnX2NhdGFsb2cu cmVnY2xhc3MsCisgICAgICAgIGMucmVscGVyc2lzdGVuY2UsCisgICAgICAgIGMucmVsa2lu ZCwKKyAgICAgICAgaS5pbmhkZXRhY2hwZW5kaW5nLAorICAgICAgICBwZ19jYXRhbG9nLnBn X2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKK0ZST00gICAgcGdfY2F0YWxvZy5w Z19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKK1dIRVJFICAgYy5vaWQgPSBp LmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9IEFOWSgkMSkKK09SREVSIEJZIHBnX2NhdGFs b2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywKKyAg ICAgICAgIGMub2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIjsKKworRVhFQ1VURSBn ZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKworRFJPUCBUQUJMRSBzYWxl c19yYW5nZTsKKworLS0KKy0tIEFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUsIHRo ZW4gbWVyZ2UgcGFydGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2Fs ZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19h bW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNf ZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFU RSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lO RyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1Nt aXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAw LCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEz JyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAn UG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3 NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDIt MjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAs ICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAg MzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0w My0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgx NCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNUIHBnX2NhdGFs b2cucGdfZ2V0X3BhcnRrZXlkZWYoJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MpOworCistLSBz aG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorRVhFQ1VURSBnZXRfcGFydGl0aW9u X2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKworLS0gY2hlY2sgc2NoZW1hLXF1YWxpZmllZCBu YW1lIG9mIHRoZSBuZXcgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJH RSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIy MDIyKSBJTlRPIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIw MjI7CisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitFWEVDVVRFIGdl dF9wYXJ0aXRpb25faW5mbygne3NhbGVzX3JhbmdlfScpOworCitTRUxFQ1QgKiBGUk9NIHBn X2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2ZlYl9tYXJfYXByMjAyMicgYW5k IHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9zY2hlbWEyJzsKKworU0VMRUNUIHRh Ymxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lk OjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisKKy0tIFVz ZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcworU0VUIGVuYWJsZV9zZXFzY2FuID0g T0ZGOworCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gcGFydGl0aW9uc19t ZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4g JzIwMjItMDEtMDEnOworU0VMRUNUICogRlJPTSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIu c2FsZXNfZmViX21hcl9hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7 CisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOwor CistLQorLS0gTWVyZ2Ugc29tZSBwYXJ0aXRpb25zIGludG8gREVGQVVMVCBwYXJ0aXRpb24K Ky0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2Fs ZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0 ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFy MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w My0wMScpIFRPICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vf c2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUp OworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAg ICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIy LTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAg KDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2Jywg ICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIw MjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAor ICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxl cicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAn MjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyks CisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2Fu ZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwg ICcyMDIyLTA1LTA0Jyk7CisKKy0tIE1lcmdlIHBhcnRpdGlvbnMgKGluY2x1ZGUgREVGQVVM VCBwYXJ0aXRpb24pIGludG8gcGFydGl0aW9uIHdpdGggdGhlIHNhbWUKKy0tIG5hbWUKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMKKyAgKHNhbGVzX2phbjIw MjIsIHNhbGVzX21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX290aGVy cykgSU5UTyBzYWxlc19vdGhlcnM7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzIE9S REVSIEJZIHNhbGVzcGVyc29uX2lkOworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25k aXRpb25zOgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsK KworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAq IGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAqIEdFTkVSQVRFRCBjb2x1bW47Cist LSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4KKy0tCitDUkVBVEUgVEFCTEUgc2Fs ZXNfZGF0ZSAoc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfeWVhciBJTlQs IHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2FsZXNfZGF0ZSBWQVJDSEFS KDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2FsZXNfeWVhcjo6dGV4dCwg NCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6dGV4dCwgMiwgJzAnKSB8fCAn LicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcwJykpIFNUT1JFRCwKKyAgc2FsZXNf ZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxlcyBkZXBhcnRtZW50JykKKyAg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5 KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2Rh dGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwgMSkgVE8gKDIwMjIsIDEsIDEpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZB TFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMiwgMSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00g KDIwMjIsIDIsIDEpIFRPICgyMDIyLCAzLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhl ciBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDMsIDEp IFRPIChNQVhWQUxVRSwgTUFYVkFMVUUsIE1BWFZBTFVFKTsKKworSU5TRVJUIElOVE8gc2Fs ZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2Fs ZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjEsIDEyLCA3KSwKKyAgKCdNYW5h Z2VyMicsIDIwMjEsIDEyLCA4KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDEsIDEpLAorICAo J01hbmFnZXIxJywgMjAyMiwgMiwgNCksCisgICgnTWFuYWdlcjInLCAyMDIyLCAxLCAyKSwK KyAgKCdNYW5hZ2VyMycsIDIwMjIsIDIsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMywg MyksCisgICgnTWFuYWdlcjInLCAyMDIyLCAzLCA0KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIs IDUsIDEpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfZGF0 ZTsKKworQUxURVIgVEFCTEUgc2FsZXNfZGF0ZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19q YW4yMDIyLCBzYWxlc19mZWIyMDIyKSBJTlRPIHNhbGVzX2phbl9mZWIyMDIyOworCitJTlNF UlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVz X21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMiwgMSwgMTAp LAorICAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworCitTRUxFQ1QgdGFibGVvaWQ6OnJl Z2NsYXNzLCAqIEZST00gc2FsZXNfZGF0ZTsKK0RST1AgVEFCTEUgc2FsZXNfZGF0ZTsKKwor LS0KKy0tIFRlc3Q6IG1lcmdlIHBhcnRpdGlvbnMgb2YgcGFydGl0aW9uZWQgdGFibGUgd2l0 aCB0cmlnZ2VycworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9p ZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJ VElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNw ZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgx KSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfMjAgUEFSVElUSU9OIE9G IHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitDUkVBVEUgVEFC TEUgc2FsZXNwZW9wbGUyMF8zMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVF UyBGUk9NICgyMCkgVE8gKDMwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTMwXzQwIFBB UlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApOwor CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CisKK0NS RUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpIFJF VFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMgJEJPRFkkCitCRUdJTgorICAg IFJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAl LCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7Cisg ICAgUkVUVVJOIE5VTEw7CitFTkQ7CiskQk9EWSQ7CisKK0NSRUFURSBUUklHR0VSIHNhbGVz cGVvcGxlX2FmdGVyX2luc2VydF9zdGF0ZW1lbnRfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VS VAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggU1RBVEVNRU5UCisgICAgRVhF Q1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScp OworCitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNlcnRfcm93X3RyaWdn ZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Blb3BsZQorICAgIEZPUiBFQUNI IFJPVworICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcign c2FsZXNwZW9wbGUnKTsKKworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cg KyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxMCwgJ01h eScpOworLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5U TyBzYWxlc3Blb3BsZTEwXzIwIFZBTFVFUyAoMTksICdJdmFub3YnKTsKKworQUxURVIgVEFC TEUgc2FsZXNwZW9wbGUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNwZW9wbGUxMF8yMCwgc2Fs ZXNwZW9wbGUyMF8zMCwgc2FsZXNwZW9wbGUzMF80MCkgSU5UTyBzYWxlc3Blb3BsZTEwXzQw OworCistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6 CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDIwLCAnU21pcm5vZmYnKTsKKy0t IDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNw ZW9wbGUxMF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVz cGVvcGxlMDFfMTA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMTBfNDA7CisKK0RST1Ag VEFCTEUgc2FsZXNwZW9wbGU7CitEUk9QIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJp Z2dlcigpOworCistLQorLS0gVGVzdDogbWVyZ2UgcGFydGl0aW9ucyB3aXRoIGRlbGV0ZWQg Y29sdW1ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJ TlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElP TiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9w bGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoMTApOworLS0gQ3JlYXRlIHBhcnRpdGlvbnMgd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1u czoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwKGQxIFZBUkNIQVIoMzApLCBzYWxl c3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigz MCkpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAoc2FsZXNwZXJzb25faWQgSU5U IFBSSU1BUlkgS0VZLCBkMiBJTlQsICBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsK K0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTMwXzQwKHNhbGVzcGVyc29uX2lkIElOVCBQUklN QVJZIEtFWSwgZDMgREFURSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CisKK0lO U0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfMjAgVkFMVUVTICgnZHVtbXkgdmFsdWUgMScsIDE5 LCAnSXZhbm92Jyk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTIwXzMwIFZBTFVFUyAoMjAs IDEwMSwgJ1NtaXJub2ZmJyk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTMwXzQwIFZBTFVF UyAoMzEsIG5vdygpLCAnUG9wb3YnKTsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF8y MCBEUk9QIENPTFVNTiBkMTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAgRFJPUCBD T0xVTU4gZDI7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTMwXzQwIERST1AgQ09MVU1OIGQz OworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVv cGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0FMVEVSIFRBQkxFIHNh bGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVT IEZST00gKDIwKSBUTyAoMzApOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBB UlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7 CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUworICAoMSwgJ1BvaXJvdCcpLAor ICAoMTAsICdNYXknKSwKKyAgKDMwLCAnRm9yZCcpOworCitBTFRFUiBUQUJMRSBzYWxlc3Bl b3BsZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc3Blb3BsZTEwXzIwLCBzYWxlc3Blb3BsZTIw XzMwLCBzYWxlc3Blb3BsZTMwXzQwKSBJTlRPIHNhbGVzcGVvcGxlMTBfNDA7CisKK3NlbGVj dCAqIGZyb20gc2FsZXNwZW9wbGU7CitzZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxlMDFfMTA7 CitzZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxlMTBfNDA7CisKK0RST1AgVEFCTEUgc2FsZXNw ZW9wbGU7CisKKy0tCistLSBUZXN0OiBtZXJnZSBzdWItcGFydGl0aW9ucworLS0KK0NSRUFU RSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9u YW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBB UlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFu MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w MS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8g KCcyMDIyLTA0LTAxJyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3Bl cnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3Vu dCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRl KTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzAxXzEwIFBBUlRJVElPTiBPRiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQt MTAnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzEwXzIwIFBBUlRJVElPTiBPRiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTAnKSBUTyAoJzIwMjIt MDQtMjAnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzIwXzMwIFBBUlRJVElPTiBP RiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMjAnKSBUTyAoJzIw MjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04g c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA1LTAxJyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIERFRkFVTFQ7CisKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19k YXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAs ICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAn KSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJ dmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUw LCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0x MScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAg J0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAy NTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAx LTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEy LCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAg IDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjIt MDUtMDQnKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2Fw cjIwMjIgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBz YWxlc3BlcnNvbl9pZDsKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBNRVJHRSBQQVJU SVRJT05TIChzYWxlc19hcHIyMDIyXzAxXzEwLCBzYWxlc19hcHIyMDIyXzEwXzIwLCBzYWxl c19hcHIyMDIyXzIwXzMwKSBJTlRPIHNhbGVzX2Fwcl9hbGw7CisKK1NFTEVDVCB0YWJsZW9p ZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19hcHIyMDIyIE9SREVSIEJZIHRhYmxlb2lkOjpy ZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFC TEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KKwor LS0KKy0tIFRlc3Q6IHNwZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcK Ky0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCBHRU5F UkFURUQgQUxXQVlTIEFTIElERU5USVRZLAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigz MCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBz YWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JF QVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVF UyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NSRUFURSBU QUJMRSBzYWxlc193ZXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4g KCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf ZWFzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywg J0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfY2VudHJhbCBQ QVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jlcmxp bicsICdLeWl2Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBz YWxlc19saXN0IERFRkFVTFQ7CisKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QyIChMSUtF IHNhbGVzX2xpc3QpIFBBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfbm9yZDIgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QyIEZPUiBWQUxVRVMg SU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfb3RoZXJzMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIgREVGQVVMVDsKKwor CitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwgKExJS0Ugc2FsZXNfbGlzdCk7CitDUkVB VEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwyICh2Y2ggVkFSQ0hBUig1KSk7CisKKy0tIEVSUk9S OiAgInNhbGVzX2V4dGVybmFsIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQg dGFibGUgInNhbGVzX2xpc3QiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJ VElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2V4dGVybmFsKSBJTlRPIHNh bGVzX2FsbDsKKy0tIEVSUk9SOiAgInNhbGVzX2V4dGVybmFsMiIgaXMgbm90IGEgcGFydGl0 aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJzYWxlc19saXN0IgorQUxURVIgVEFCTEUgc2Fs ZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxl c19leHRlcm5hbDIpIElOVE8gc2FsZXNfYWxsOworLS0gRVJST1I6ICByZWxhdGlvbiAic2Fs ZXNfbm9yZDIiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiAic2FsZXNfbGlzdCIK K0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwg c2FsZXNfbm9yZDIsIHNhbGVzX2Vhc3QpIElOVE8gc2FsZXNfYWxsOworCitEUk9QIFRBQkxF IHNhbGVzX2V4dGVybmFsMjsKK0RST1AgVEFCTEUgc2FsZXNfZXh0ZXJuYWw7CitEUk9QIFRB QkxFIHNhbGVzX2xpc3QyOworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLQorLS0gVGVz dDogQlkgTElTVCBwYXJ0aXRpb25pbmcsIE1FUkdFIFBBUlRJVElPTlMgd2l0aCBkYXRhCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQgR0VORVJB VEVEIEFMV0FZUyBBUyBJREVOVElUWSwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzAp LAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2Fs ZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKKworQ1JF QVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNwZXJzb25fbmFtZV9pZHggT04gc2FsZXNfbGlz dCBVU0lORyBidHJlZSAoc2FsZXNwZXJzb25fbmFtZSk7CitDUkVBVEUgSU5ERVggc2FsZXNf bGlzdF9zYWxlc19zdGF0ZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNf c3RhdGUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNf bGlzdCBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5r aScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX3dlc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3Qg Rk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19lYXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMg SU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBz YWxlc19jZW50cmFsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdX YXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMg UEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKKworSU5TRVJUIElOVE8gc2FsZXNf bGlzdCAoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2Fs ZXNfZGF0ZSkgVkFMVUVTCisgICgnVHJ1bXAnLCAgICAnQmVqaW5nJywgICAgICAgICAxMDAw LCAnMjAyMi0wMy0wMScpLAorICAoJ1NtaXJub2ZmJywgJ05ldyBZb3JrJywgICAgICAgIDUw MCwgJzIwMjItMDMtMDMnKSwKKyAgKCdGb3JkJywgICAgICdTdC4gUGV0ZXJzYnVyZycsIDIw MDAsICcyMDIyLTAzLTA1JyksCisgICgnSXZhbm92JywgICAnV2Fyc2F3JywgICAgICAgICAg NzUwLCAnMjAyMi0wMy0wNCcpLAorICAoJ0RlZXYnLCAgICAgJ0xpc2JvbicsICAgICAgICAg IDI1MCwgJzIwMjItMDMtMDcnKSwKKyAgKCdQb2lyb3QnLCAgICdCZXJsaW4nLCAgICAgICAg IDEwMDAsICcyMDIyLTAzLTAxJyksCisgICgnTWF5JywgICAgICAnSGVsc2lua2knLCAgICAg ICAxMjAwLCAnMjAyMi0wMy0wNicpLAorICAoJ0xpJywgICAgICAgJ1ZsYWRpdm9zdG9rJywg ICAgMTE1MCwgJzIwMjItMDMtMDknKSwKKyAgKCdNYXknLCAgICAgICdIZWxzaW5raScsICAg ICAgIDEyMDAsICcyMDIyLTAzLTExJyksCisgICgnSGFsZGVyJywgICAnT3NsbycsICAgICAg ICAgICAgODAwLCAnMjAyMi0wMy0wMicpLAorICAoJ011bGxlcicsICAgJ01hZHJpZCcsICAg ICAgICAgIDY1MCwgJzIwMjItMDMtMDUnKSwKKyAgKCdTbWl0aCcsICAgICdLeWl2JywgICAg ICAgICAgICAzNTAsICcyMDIyLTAzLTEwJyksCisgICgnR2FuZGknLCAgICAnV2Fyc2F3Jywg ICAgICAgICAgMTUwLCAnMjAyMi0wMy0wOCcpLAorICAoJ1BsYXRvJywgICAgJ0xpc2Jvbics ICAgICAgICAgIDk1MCwgJzIwMjItMDMtMDUnKTsKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdp dGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfbGlz dH0nKTsKKworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxl c193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19jZW50cmFsKSBJTlRPIHNhbGVzX2FsbDsKKwor LS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRp dGlvbl9pbmZvKCd7c2FsZXNfbGlzdH0nKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFz cywgKiBGUk9NIHNhbGVzX2xpc3QgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0 IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworLS0gVXNlIGluZGV4c2NhbiBmb3Ig dGVzdGluZyBpbmRleGVzIGFmdGVyIG1lcmdpbmcgcGFydGl0aW9ucworU0VUIGVuYWJsZV9z ZXFzY2FuID0gT0ZGOworCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2Fs ZXNfYWxsIFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CitTRUxFQ1QgKiBGUk9NIHNh bGVzX2FsbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworRVhQTEFJTiAoQ09TVFMg T0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fy c2F3JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdX YXJzYXcnOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3Qg V0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOworU0VMRUNUICogRlJPTSBzYWxl c19saXN0IFdIRVJFIHNhbGVzcGVyc29uX25hbWUgPSAnSXZhbm92JzsKKworUkVTRVQgZW5h YmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKworLS0KKy0tIFRyeSB0 byBNRVJHRSBwYXJ0aXRpb25zIG9mIGFub3RoZXIgdGFibGUuCistLQorQ1JFQVRFIFRBQkxF IHQxIChpIGludCwgYSBpbnQsIGIgaW50LCBjIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChh LCBiKTsKK0NSRUFURSBUQUJMRSB0MXAxIFBBUlRJVElPTiBPRiB0MSBGT1IgVkFMVUVTIEZS T00gKDEsIDEpIFRPICgxLCAyKTsKK0NSRUFURSBUQUJMRSB0MiAoaSBpbnQsIHQgdGV4dCkg UEFSVElUSU9OIEJZIFJBTkdFICh0KTsKK0NSRUFURSBUQUJMRSB0MnBhIFBBUlRJVElPTiBP RiB0MiBGT1IgVkFMVUVTIEZST00gKCdBJykgVE8gKCdDJyk7CitDUkVBVEUgVEFCTEUgdDMg KGkgaW50LCB0IHRleHQpOworCistLSBFUlJPUjogIHJlbGF0aW9uICJ0MXAxIiBpcyBub3Qg YSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgorQUxURVIgVEFCTEUgdDIgTUVSR0UgUEFS VElUSU9OUyAodDFwMSwgdDJwYSkgSU5UTyB0MnA7CistLSBFUlJPUjogICJ0MyIgaXMgbm90 IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJ0MiIKK0FMVEVSIFRBQkxFIHQy IE1FUkdFIFBBUlRJVElPTlMgKHQycGEsIHQzKSBJTlRPIHQycDsKKworRFJPUCBUQUJMRSB0 MzsKK0RST1AgVEFCTEUgdDI7CitEUk9QIFRBQkxFIHQxOworCisKKy0tCistLSBDaGVjayB0 aGUgcGFydGl0aW9uIGluZGV4IG5hbWUgaWYgdGhlIHBhcnRpdGlvbiBuYW1lIGlzIHRoZSBz YW1lIGFzIG9uZQorLS0gb2YgdGhlIG1lcmdlZCBwYXJ0aXRpb25zLgorLS0KK0NSRUFURSBU QUJMRSB0IChpIGludCwgUFJJTUFSWSBLRVkoaSkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7 CisKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9N ICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCitDUkVBVEUgSU5ERVggdGlkeCBPTiB0KGkpOwor QUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8xXzIsIHRwXzBfMSkgSU5UTyB0 cF8xXzI7CisKKy0tIEluZGV4bmFtZSB2YWx1ZXMgc2hvdWxkIGJlICd0cF8xXzJfcGtleScg YW5kICd0cF8xXzJfaV9pZHgnLgorXGQrIHRwXzFfMgorCitEUk9QIFRBQkxFIHQ7CisKKy0t CistLSBUcnkgdG8gTUVSR0UgcGFydGl0aW9ucyBvZiB0ZW1wb3JhcnkgdGFibGUuCistLQor QkVHSU47CitTSE9XIHNlYXJjaF9wYXRoOworQ1JFQVRFIFRFTVAgVEFCTEUgdCAoaSBpbnQp IFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgT04gQ09NTUlUIERST1A7CitDUkVBVEUgVEVNUCBU QUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7 CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBG Uk9NICgxKSBUTyAoMik7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8yXzMgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoMyk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8z XzQgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgzKSBUTyAoNCk7CisKK0FMVEVS IFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gcGdfdGVt cC50cF8wXzI7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMiwgdHBf Ml8zKSBJTlRPIHBnX3RlbXAudHBfMF8zOworCistLSBQYXJ0aXRpb24gc2hvdWxkIGJlIHRl bXBvcmFyeS4KK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7dH0nKTsKKy0tIEVSUk9S OiAgY2Fubm90IGNyZWF0ZSBhIHBlcm1hbmVudCByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2Yg dGVtcG9yYXJ5IHJlbGF0aW9uICJ0IgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05T ICh0cF8wXzMsIHRwXzNfNCkgSU5UTyB0cF8wXzQ7CitST0xMQkFDSzsKKworLS0KKy0tIFRy eSBtaXhpbmcgcGVybWFuZW50IGFuZCB0ZW1wb3JhcnkgcGFydGl0aW9ucy4KKy0tCitCRUdJ TjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwZ190ZW1w LCBwdWJsaWM7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAo aSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgyKTsKKworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJl Z2NsYXNzLCBjLnJlbHBlcnNpc3RlbmNlIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjIFdI RVJFIGMub2lkID0gJ3QnOjpyZWdjbGFzczsKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZv KCd7dH0nKTsKK1NBVkVQT0lOVCBzOworCitTRVQgc2VhcmNoX3BhdGggPSBwZ190ZW1wLCBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworLS0gQ2FuJ3QgbWVyZ2UgcGVyc2lz dGVudCBwYXJ0aXRpb25zIGludG8gYSB0ZW1wb3JhcnkgcGFydGl0aW9uCitBTFRFUiBUQUJM RSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKwor Uk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHM7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYSwgcHVibGljOworLS0gQ2FuJ3QgbWVyZ2UgcGVyc2lzdGVudCBwYXJ0 aXRpb25zIGludG8gYSB0ZW1wb3JhcnkgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdF IFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHBnX3RlbXAudHBfMF8yOworUk9M TEJBQ0s7CisKK0JFR0lOOworU0VUIHNlYXJjaF9wYXRoID0gcGdfdGVtcCwgcGFydGl0aW9u c19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElU SU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJ VElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCitTRUxFQ1QgYy5vaWQ6 OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVscGVyc2lzdGVuY2UgRlJPTSBwZ19jYXRhbG9n LnBnX2NsYXNzIGMgV0hFUkUgYy5vaWQgPSAndCc6OnJlZ2NsYXNzOworRVhFQ1VURSBnZXRf cGFydGl0aW9uX2luZm8oJ3t0fScpOworCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYSwgcGdfdGVtcCwgcHVibGljOworCistLSBDYW4ndCBtZXJnZSB0ZW1w b3JhcnkgcGFydGl0aW9ucyBpbnRvIGEgcGVyc2lzdGVudCBwYXJ0aXRpb24KK0FMVEVSIFRB QkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOwor Uk9MTEJBQ0s7CisKK0RFQUxMT0NBVEUgZ2V0X3BhcnRpdGlvbl9pbmZvOworCistLSBDaGVj ayB0aGUgbmV3IHBhcnRpdGlvbiBpbmhlcml0cyBwYXJlbnQncyB0YWJsZXNwYWNlCitTRVQg c2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworQ1JFQVRF IFRBQkxFIHQgKGkgaW50IFBSSU1BUlkgS0VZIFVTSU5HIElOREVYIFRBQkxFU1BBQ0UgcmVn cmVzc190YmxzcGFjZSkKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBUQUJMRVNQQUNFIHJl Z3Jlc3NfdGJsc3BhY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJ T04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgTUVS R0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworU0VMRUNUIHRh YmxlbmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX3RhYmxlcworICBXSEVSRSB0YWJsZW5hbWUg SU4gKCd0JywgJ3RwXzBfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5hbWUgQ09MTEFURSAiQyIsIHRhYmxlc3BhY2Ug Q09MTEFURSAiQyI7CitTRUxFQ1QgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRhYmxlc3BhY2Ug RlJPTSBwZ19pbmRleGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8yJykg QU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9zY2hlbWEnCisgIE9SREVSIEJZ IHRhYmxlbmFtZSBDT0xMQVRFICJDIiwgaW5kZXhuYW1lIENPTExBVEUgIkMiLCB0YWJsZXNw YWNlIENPTExBVEUgIkMiOworRFJPUCBUQUJMRSB0OworCistLSBDaGVjayB0aGUgbmV3IHBh cnRpdGlvbiBpbmhlcml0cyBwYXJlbnQncyB0YWJsZSBhY2Nlc3MgbWV0aG9kCitTRVQgc2Vh cmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworQ1JFQVRFIEFD Q0VTUyBNRVRIT0QgcGFydGl0aW9uc19tZXJnZV9oZWFwIFRZUEUgVEFCTEUgSEFORExFUiBo ZWFwX3RhYmxlYW1faGFuZGxlcjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9O IEJZIFJBTkdFIChpKSBVU0lORyBwYXJ0aXRpb25zX21lcmdlX2hlYXA7CitDUkVBVEUgVEFC TEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOwor Q1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEp IFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8x XzIpIElOVE8gdHBfMF8yOworU0VMRUNUIGMucmVsbmFtZSwgYS5hbW5hbWUKK0ZST00gcGdf Y2xhc3MgYyBKT0lOIHBnX2FtIGEgT04gYy5yZWxhbSA9IGEub2lkCitXSEVSRSBjLm9pZCBJ TiAoJ3QnOjpyZWdjbGFzcywgJ3RwXzBfMic6OnJlZ2NsYXNzKQorT1JERVIgQlkgYy5yZWxu YW1lIENPTExBVEUgIkMiOworRFJPUCBUQUJMRSB0OworRFJPUCBBQ0NFU1MgTUVUSE9EIHBh cnRpdGlvbnNfbWVyZ2VfaGVhcDsKKworLS0gVGVzdCBwZXJtaXNzaW9uIGNoZWNrcy4gIFRo ZSB1c2VyIG5lZWRzIHRvIG93biB0aGUgcGFyZW50IHRhYmxlIGFuZCBhbGwKKy0tIHRoZSBt ZXJnaW5nIHBhcnRpdGlvbnMgdG8gZG8gdGhlIG1lcmdlLgorQ1JFQVRFIFJPTEUgcmVncmVz c19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlv bl9tZXJnZV9ib2I7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworR1JBTlQgQUxMIE9OIFND SEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJn ZV9ib2I7CisKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25f bWVyZ2VfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5H RSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKKworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElP TiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CistLSBFUlJPUjogIG11c3QgYmUgb3du ZXIgb2YgdGFibGUgdAorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEs IHRwXzFfMikgSU5UTyB0cF8wXzI7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisK K0FMVEVSIFRBQkxFIHQgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOwor U0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7 CistLSBFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdHBfMF8xCitBTFRFUiBUQUJM RSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1JF U0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworQUxURVIgVEFCTEUgdHBfMF8xIE9XTkVS IFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUkla QVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworLS0gRVJST1I6ICBtdXN0IGJl IG93bmVyIG9mIHRhYmxlIHRwXzFfMgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05T ICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitSRVNFVCBTRVNTSU9OIEFVVEhPUkla QVRJT047CisKK0FMVEVSIFRBQkxFIHRwXzFfMiBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlv bl9tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0 aW9uX21lcmdlX2JvYjsKKy0tIE9rOgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05T ICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitSRVNFVCBTRVNTSU9OIEFVVEhPUkla QVRJT047CisKK0RST1AgVEFCTEUgdDsKKworLS0gVGVzdDogd2UgY2FuJ3QgbWVyZ2UgcGFy dGl0aW9ucyB3aXRoIGRpZmZlcmVudCBvd25lcnMKK0NSRUFURSBUQUJMRSB0cF8wXzEoaSBp bnQpOworQUxURVIgVEFCTEUgdHBfMF8xIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21l cmdlX2FsaWNlOworQ1JFQVRFIFRBQkxFIHRwXzFfMihpIGludCk7CitBTFRFUiBUQUJMRSB0 cF8xXzIgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworCitDUkVBVEUg VEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CisKK0FMVEVSIFRBQkxF IHQgQVRUQUNIIFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7 CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDIpOworCistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRpb25fbWVyZ2Vf YWxpY2UnOgorXGR0IHRwXzBfMQorLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX21l cmdlX2JvYic6CitcZHQgdHBfMV8yCisKKy0tIEVSUk9SOiAgcGFydGl0aW9ucyBiZWluZyBt ZXJnZWQgaGF2ZSBkaWZmZXJlbnQgb3duZXJzCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJ VElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKworRFJPUCBUQUJMRSB0Owor UkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgRlJPTSByZWdy ZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRp dGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOwor RFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworRFJPUCBST0xFIHJl Z3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKKworCistLSBUZXN0IGZvciBoYXNoIHBhcnRp dGlvbmVkIHRhYmxlCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBIQVNI KGkpOworQ1JFQVRFIFRBQkxFIHRwMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEgg KE1PRFVMVVMgMiwgUkVNQUlOREVSIDApOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04g T0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDEpOworCistLSBF UlJPUjogIHBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBt ZXJnZWQKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHAxLCB0cDIpIElOVE8g dHAzOworCistLSBFUlJPUjogIGxpc3Qgb2YgcGFydGl0aW9ucyB0byBiZSBtZXJnZWQgc2hv dWxkIGluY2x1ZGUgYXQgbGVhc3QgdHdvIHBhcnRpdGlvbnMKK0FMVEVSIFRBQkxFIHQgTUVS R0UgUEFSVElUSU9OUyAodHAxKSBJTlRPIHRwMzsKKworRFJPUCBUQUJMRSB0OworCisKKy0t IFRlc3QgZm9yIG1lcmdlZCBwYXJ0aXRpb24gcHJvcGVydGllczoKKy0tICogU1RBVElTVElD UyBpcyBlbXB0eQorLS0gKiBDT01NRU5UIGlzIGVtcHR5CistLSAqIERFRkFVTFRTIGFyZSB0 aGUgc2FtZSBhcyBERUZBVUxUUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogU1RPUkFH RSBpcyB0aGUgc2FtZSBhcyBTVE9SQUdFIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBH RU5FUkFURUQgYW5kIENPTlNUUkFJTlRTIGFyZSB0aGUgc2FtZSBhcyBHRU5FUkFURUQgYW5k IENPTlNUUkFJTlRTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBUUklHR0VSUyBhcmUg dGhlIHNhbWUgYXMgVFJJR0dFUlMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCitcc2V0IEhJREVf VE9BU1RfQ09NUFJFU1NJT04gZmFsc2UKKworQ1JFQVRFIFRBQkxFIHQKKyhpIGludCBOT1Qg TlVMTCwKKyB0IHRleHQgU1RPUkFHRSBFWFRFTkRFRCBDT01QUkVTU0lPTiBwZ2x6IERFRkFV TFQgJ2RlZmF1bHRfdCcsCisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMg YXMgKCcyMDIyLTAxLTAxJykgU1RPUkVEKSBQQVJUSVRJT04gQlkgUkFOR0UgKGFicyhpKSk7 CitDT01NRU5UIE9OIENPTFVNTiB0LmkgSVMgJ3QxLmknOworCitDUkVBVEUgVEFCTEUgdHBf MF8xCisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgTUFJTiBERUZBVUxUICdk ZWZhdWx0X3RwXzBfMScsCisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMg YXMgKCcyMDIyLTAyLTAyJykgU1RPUkVEKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJ VElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDT01NRU5UIE9OIENP TFVNTiB0cF8wXzEuaSBJUyAndHBfMF8xLmknOworCitDUkVBVEUgVEFCTEUgdHBfMV8yCiso aSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgTUFJTiBERUZBVUxUICdkZWZhdWx0 X3RwXzFfMicsCisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcy MDIyLTAzLTAzJykgU1RPUkVEKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0 cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitDT01NRU5UIE9OIENPTFVNTiB0 cF8xXzIuaSBJUyAndHBfMV8yLmknOworCitDUkVBVEUgU1RBVElTVElDUyB0X3N0YXQgKERF UEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHQ7CitDUkVBVEUgU1RBVElTVElDUyB0cF8wXzFf c3RhdCAoREVQRU5ERU5DSUVTKSBvbiBpLCBiIGZyb20gdHBfMF8xOworQ1JFQVRFIFNUQVRJ U1RJQ1MgdHBfMV8yX3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHRwXzFfMjsK KworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2sgQ0hFQ0sgKGIgPiAw KTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrMSBDSEVDSyAoYiA+ IDApIE5PVCBFTkZPUkNFRDsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2No ZWNrMiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRDsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNU UkFJTlQgdF9iX25uIE5PVCBOVUxMIGIgTk9UIFZBTElEOworCitJTlNFUlQgSU5UTyB0cF8w XzEoaSwgdCwgYikgVkFMVUVTKDAsIERFRkFVTFQsIDEpOworSU5TRVJUIElOVE8gdHBfMV8y KGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAyKTsKK0NSRUFURSBPUiBSRVBMQUNFIEZV TkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3Bs cGdzcWwnIEFTCiskQk9EWSQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBj YWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBU R19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgIFJFVFVSTiBuZXc7CitFTkQ7CiskQk9EWSQ7 CisKK0NSRUFURSBUUklHR0VSIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUg SU5TRVJUIE9OIHQgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJf ZnVuY3Rpb24oJ3QnKTsKK0NSRUFURSBUUklHR0VSIHRwXzBfMV9iZWZvcmVfaW5zZXJ0X3Jv d190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfMF8xIEZPUiBFQUNIIFJPVworICBFWEVD VVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF8wXzEnKTsKK0NSRUFURSBUUklH R0VSIHRwXzFfMl9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04g dHBfMV8yIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0 aW9uKCd0cF8xXzInKTsKKworXGQrIHRwXzBfMQorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJU SVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzE7CitcZCsgdHBfMF8xCisKK0lO U0VSVCBJTlRPIHQoaSwgdCwgYikgVkFMVUVTKDEsIERFRkFVTFQsIDMpOworU0VMRUNUIHRh Ymxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHQgT1JERVIgQlkgYjsKK0RST1AgVEFCTEUgdDsK K0RST1AgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigpOworXHNldCBISURFX1RPQVNUX0NP TVBSRVNTSU9OIHRydWUKKworCistLSBUZXN0IE1FUkdFIFBBUlRJVElPTlMgd2l0aCBub3Qg dmFsaWQgZm9yZWlnbiBrZXkgY29uc3RyYWludAorQ1JFQVRFIFRBQkxFIHQgKGkgSU5UIFBS SU1BUlkgS0VZKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBf MSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBU QUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7 CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCksICgxKTsKK0NSRUFURSBUQUJMRSB0X2ZrIChp IElOVCk7CitJTlNFUlQgSU5UTyB0X2ZrIFZBTFVFUyAoMSksICgyKTsKK0FMVEVSIFRBQkxF IHRfZmsgQUREIENPTlNUUkFJTlQgdF9ma19pX2ZrZXkgRk9SRUlHTiBLRVkgKGkpIFJFRkVS RU5DRVMgdCBOT1QgVkFMSUQ7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRw XzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKworLS0gU2hvdWxkIGJlIE5PVCBWQUxJRCBG T1JFSUdOIEtFWQorXGQgdHBfMF8yCistLSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24g dGFibGUgInRfZmsiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRfZmtfaV9m a2V5IgorQUxURVIgVEFCTEUgdF9mayBWQUxJREFURSBDT05TVFJBSU5UIHRfZmtfaV9ma2V5 OworCitEUk9QIFRBQkxFIHRfZms7CitEUk9QIFRBQkxFIHQ7CisKKy0tIFRlc3QgTUVSR0Ug UEFSVElUSU9OUyB3aXRoIG5vdCBlbmZvcmNlZCBmb3JlaWduIGtleSBjb25zdHJhaW50CitD UkVBVEUgVEFCTEUgdCAoaSBJTlQgUFJJTUFSWSBLRVkpIFBBUlRJVElPTiBCWSBSQU5HRSAo aSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEp OworQ1JFQVRFIFRBQkxFIHRfZmsgKGkgSU5UKTsKK0lOU0VSVCBJTlRPIHRfZmsgVkFMVUVT ICgxKSwgKDIpOworCitBTFRFUiBUQUJMRSB0X2ZrIEFERCBDT05TVFJBSU5UIHRfZmtfaV9m a2V5IEZPUkVJR04gS0VZIChpKSBSRUZFUkVOQ0VTIHQgTk9UIEVORk9SQ0VEOworQUxURVIg VEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7 CisKKy0tIFNob3VsZCBiZSBOT1QgRU5GT1JDRUQgRk9SRUlHTiBLRVkKK1xkIHRwXzBfMgor LS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0X2ZrIiB2aW9sYXRlcyBm b3JlaWduIGtleSBjb25zdHJhaW50ICJ0X2ZrX2lfZmtleSIKK0FMVEVSIFRBQkxFIHRfZmsg QUxURVIgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleSBFTkZPUkNFRDsKKworRFJPUCBUQUJMRSB0 X2ZrOworRFJPUCBUQUJMRSB0OworCisKKy0tIFRlc3QgZm9yIHJlY29tcHV0YXRpb24gb2Yg c3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zLgorQ1JFQVRFIFRBQkxFIHQgKGkgaW50LCB0YWJf aWQgaW50IGdlbmVyYXRlZCBhbHdheXMgYXMgKHRhYmxlb2lkKSBzdG9yZWQpIFBBUlRJVElP TiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJ T04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgQURE IENPTlNUUkFJTlQgY2MgQ0hFQ0sodGFibGVvaWQgPD4gMTIzNDU2Nzg5KTsKK0lOU0VSVCBJ TlRPIHQgVkFMVUVTICgwKSwgKDEpOworCistLSBTaG91bGQgYmUgMCBiZWNhdXNlIHBhcnRp dGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAgaXMgZGlmZmVyZW50IGZyb20KKy0t IHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxFQ1QgY291bnQo KikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJP TSB0IFdIRVJFIGkgPSAxKTsKKworLS0gInRhYl9pZCIgY29sdW1uIChzdG9yZWQgZ2VuZXJh dGVkIGNvbHVtbikgd2l0aCAidGFibGVvaWQiIGF0dHJpYnV0ZSByZXF1aXJlcworLS0gcmVj b21wdXRhdGlvbiBoZXJlLgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8w XzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CisKKy0tIFNob3VsZCBiZSAxIGJlY2F1c2UgcGFy dGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MCBpcyB0aGUgc2FtZSBhcworLS0g cGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgq KSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9N IHQgV0hFUkUgaSA9IDEpOworCitEUk9QIFRBQkxFIHQ7CisKKworLS0gVGVzdCBmb3IgZ2Vu ZXJhdGVkIGNvbHVtbnMgKGRpZmZlcmVudCBvcmRlciBvZiBjb2x1bW5zIGluIHBhcnRpdGlv bmVkIHRhYmxlCistLSBhbmQgcGFydGl0aW9ucykuCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQs IGcgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGkgKyB0YWJsZW9pZDo6aW50KSkgUEFSVElU SU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8xIChnIGludCBHRU5FUkFURUQg QUxXQVlTIEFTIChpICsgdGFibGVvaWQ6OmludCksIGkgaW50KTsKK0NSRUFURSBUQUJMRSB0 cF8yIChnIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpICsgdGFibGVvaWQ6OmludCksIGkg aW50KTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xIEZPUiBWQUxVRVMg RlJPTSAoLTEpIFRPICgxMCk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBf MiBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQUxURVIgVEFCTEUgdCBBREQgQ0hF Q0sgKGcgPiAwKTsKK0FMVEVSIFRBQkxFIHQgQUREIENIRUNLIChpID4gMCk7CitJTlNFUlQg SU5UTyB0IFZBTFVFUyAoNSksICgxNSk7CisKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElU SU9OUyAodHBfMSwgdHBfMikgSU5UTyB0cF8xMjsKKworSU5TRVJUIElOVE8gdCBWQUxVRVMg KDE2KTsKKy0tIEVSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRwXzEyIiB2aW9sYXRl cyBjaGVjayBjb25zdHJhaW50ICJ0X2lfY2hlY2siCitJTlNFUlQgSU5UTyB0IFZBTFVFUyAo MCk7CistLSBTaG91bGQgYmUgMyByb3dzOiAoNSksICgxNSksICgxNik6CitTRUxFQ1QgaSBG Uk9NIHQgT1JERVIgQlkgaTsKKy0tIFNob3VsZCBiZSAxIGJlY2F1c2UgZm9yIHRoZSBzYW1l IHRhYmxlb2lkICgxNSArIHRhYmxlb2lkKSA9ICg1ICsgdGFibGVvaWQpICsgMTA6CitTRUxF Q1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAxNSBBTkQgZyBJTiAoU0VMRUNUIGcgKyAx MCBGUk9NIHQgV0hFUkUgaSA9IDUpOworCitEUk9QIFRBQkxFIHQ7CisKKworUkVTRVQgc2Vh cmNoX3BhdGg7CisKKy0tCitEUk9QIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsK K0RST1AgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMjsKLS0gCjIuNDAuMS53aW5k b3dzLjEKCg== --------------aOQKmOFJ5EUrBbox0o9APZc7 Content-Type: text/plain; charset=UTF-8; name="v58-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.patch" Content-Disposition: attachment; filename*0="v58-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA1ZmI4NmUxMmY2NTRiYzFkZmI0NzgwOGNhNDk2OGY1OTFiMDkxZGZhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU4OjA5ICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NTggMi8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIFNQTElU IFBBUlRJVElPTiAuLi4gY29tbWFuZAoKVGhpcyBuZXcgRERMIGNvbW1hbmQgc3BsaXRzIGEg c2luZ2xlIHBhcnRpdGlvbiBpbnRvIHNldmVyYWwgcGFyaXRpdGlvbnMuCkp1c3QgbGlrZSBB TFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyAuLi4gY29tbWFuZCwgbmV3IHBhdGl0 aW9ucyBhcmUKY3JlYXRlZCB1c2luZyBjcmVhdGVQYXJ0aXRpb25UYWJsZSgpIGZ1bmN0aW9u IHdpdGggcGFyZW50IHBhcnRpdGlvbiBhcyB0aGUKdGVtcGxhdGUuCgpUaGlzIGNvbW1pdCBj b21wcmlzZXMgcXVpdGUgbmFpdmUgaW1wbGVtZW50YXRpb24gd2hpY2ggd29ya3MgaW4gc2lu Z2xlIHByb2Nlc3MKYW5kIGhvbGRzIHRoZSBBQ0NFU1MgRVhDTFVTSVZFIExPQ0sgb24gdGhl IHBhcmVudCB0YWJsZSBkdXJpbmcgYWxsIHRoZQpvcGVyYXRpb25zIGluY2x1ZGluZyB0aGUg dHVwbGUgcm91dGluZy4gIFRoaXMgaXMgd2h5IHRoaXMgbmV3IERETCBjb21tYW5kCmNhbid0 IGJlIHJlY29tbWVuZGVkIGZvciBsYXJnZSBwYXJ0aXRpb25lZCB0YWJsZXMgdW5kZXIgYSBo aWdoIGxvYWQuICBIb3dldmVyLAp0aGlzIGltcGxlbWVudGF0aW9uIGNvbWUgaW4gaGFuZHkg aW4gY2VydGFpbiBjYXNlcyBldmVuIGFzIGlzLgpBbHNvLCBpdCBjb3VsZCBiZSB1c2VkIGFz IGEgZm91bmRhdGlvbiBmb3IgZnV0dXJlIGltcGxlbWVudGF0aW9ucyB3aXRoIGxlc3Nlcgps b2NraW5nIGFuZCBwb3NzaWJseSBwYXJhbGxlbC4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vYzczYTE3NDYtMGNkMC02YmRkLTZiMjMtM2FlMGI3YzBjNTgyJTQwcG9zdGdy ZXNwcm8ucnUKQXV0aG9yOiBEbWl0cnkgS292YWwKUmV2aWV3ZWQtYnk6IE1hdHRoaWFzIHZh biBkZSBNZWVudCwgTGF1cmVueiBBbGJlLCBaaGlob25nIFl1LCBKdXN0aW4gUHJ5emJ5ClJl dmlld2VkLWJ5OiBBbHZhcm8gSGVycmVyYSwgUm9iZXJ0IEhhYXMsIFN0ZXBoYW5lIFRhY2hv aXJlcywgSmlhbiBIZQoKRml4ZXMgKHN1bW1hcnkgaW5mb3JtYXRpb24pLgpBdXRob3JzOiBB bGV4YW5kZXIgS29yb3Rrb3YsIFRlbmRlciBXYW5nLCBSaWNoYXJkIEd1bywgRGFnZmlubiBJ bG1hcmkgTWFubnNha2VyCkF1dGhvcnM6IEZ1amlpIE1hc2FvClJldmlld2VkLWJ5OiBBbGV4 YW5kZXIgS29yb3Rrb3YsIFJvYmVydCBIYWFzLCBKdXN0aW4gUHJ5emJ5LCBQYXZlbCBCb3Jp c292ClJldmlld2VkLWJ5OiBNYXNhaGlrbyBTYXdhZGEKUmVwb3J0ZWQtYnk6IEFsZXhhbmRl ciBMYWtoaW4sIEp1c3RpbiBQcnl6YnksIEt5b3Rhcm8gSG9yaWd1Y2hpClJlcG9ydGVkLWJ5 OiBEYW5pZWwgR3VzdGFmc3NvbiwgVG9tIExhbmUsIE5vYWggTWlzY2gKLS0tCiBkb2Mvc3Jj L3NnbWwvZGRsLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsKIGRvYy9z cmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbCAgICAgICAgICAgICB8ICAxMDMgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA0MzUgKysr KysKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAg MzggKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8 ICAxOTQgKy0KIHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgICAgICAg ICB8ICA2NjMgKysrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAg ICAgICAgICAgIHwgICAxOCArCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAg ICAgICAgICAgICAgfCAgIDEwICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgg ICAgICAgICAgICAgICAgfCAgIDIxICstCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0Lmgg ICAgICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9w YXJ0Ym91bmRzLmggICAgICAgICB8ICAgIDQgKwogc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0 aWxzLmggICAgICAgICAgICAgICAgIHwgICAgMiArCiAuLi4vaXNvbGF0aW9uL2V4cGVjdGVk L3BhcnRpdGlvbi1zcGxpdC5vdXQgICAgfCAgMjMwICsrKwogc3JjL3Rlc3QvaXNvbGF0aW9u L2lzb2xhdGlvbl9zY2hlZHVsZSAgICAgICAgIHwgICAgMSArCiBzcmMvdGVzdC9pc29sYXRp b24vc3BlY3MvcGFydGl0aW9uLXNwbGl0LnNwZWMgfCAgIDYyICsKIC4uLi90ZXN0X2RkbF9k ZXBhcnNlL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91dCB8ICAgIDUgKwogLi4uL3Rlc3RfZGRs X2RlcGFyc2Uvc3FsL2FsdGVyX3RhYmxlLnNxbCAgICAgIHwgICAgNCArCiAuLi4vdGVzdF9k ZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMgICAgICAgfCAgICAzICsKIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dCB8IDE2NDUgKysrKysrKysr KysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAg ICB8ICAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwg ICAgICB8IDExNDMgKysrKysrKysrKysrCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdCAgICAgICAgICAgICAgfCAgICAyICsKIDIyIGZpbGVzIGNoYW5nZWQsIDQ1NjggaW5z ZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1zcGxpdC5vdXQKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLXNwbGl0LnNwZWMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlv bl9zcGxpdC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9w YXJ0aXRpb25fc3BsaXQuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21s IGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCmluZGV4IGRkYjEzNzZhNmUuLmMyMjBhMWNiYzAg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv ZGRsLnNnbWwKQEAgLTQ0NzEsNiArNDQ3MSwyNSBAQCBBTFRFUiBUQUJMRSBtZWFzdXJlbWVu dAogICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVtZW50X3kyMDA2bTAzKSBJTlRPIG1l YXN1cmVtZW50X3kyMDA2cTE7CiA8L3Byb2dyYW1saXN0aW5nPgogICAgIDwvcGFyYT4KKwor ICAgIDxwYXJhPgorICAgICBTaW1pbGFybHkgdG8gbWVyZ2luZyBtdWx0aXBsZSB0YWJsZSBw YXJ0aXRpb25zLCB0aGVyZSBpcyBhbiBvcHRpb24gZm9yCisgICAgIHNwbGl0dGluZyBhIHNp bmdsZSBwYXJ0aXRpb24gaW50byBtdWx0aXBsZSB1c2luZyB0aGUKKyAgICAgPGxpbmsgbGlu a2VuZD0ic3FsLWFsdGVydGFibGUtc3BsaXQtcGFydGl0aW9uIj48Y29tbWFuZD5BTFRFUiBU QUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OPC9jb21tYW5kPjwvbGluaz4uCisgICAgIFRoaXMg ZmVhdHVyZSBjb3VsZCBjb21lIGluIGhhbmR5IHdoZW4gb25lIHBhcnRpdGlvbiBncm93cyB0 b28gYmlnCisgICAgIGFuZCBuZWVkcyB0byBiZSBzcGxpdCBpbnRvIG11bHRpcGxlLiAgSXQn cyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0CisgICAgIHRoaXMgb3BlcmF0aW9uIGlzIG5vdCBz dXBwb3J0ZWQgZm9yIGhhc2gtcGFydGl0aW9uZWQgdGFibGVzIGFuZCBhY3F1aXJlcworICAg ICBhbiA8bGl0ZXJhbD5BQ0NFU1MgRVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrLCB3aGljaCBj b3VsZCBpbXBhY3QgaGlnaC1sb2FkCisgICAgIHN5c3RlbXMgZHVlIHRvIHRoZSBsb2NrJ3Mg cmVzdHJpY3RpdmUgbmF0dXJlLiAgRm9yIGV4YW1wbGUsIHdlIGNhbiBzcGxpdAorICAgICB0 aGUgcXVhcnRlciBwYXJ0aXRpb24gYmFjayB0byBtb250aGx5IHBhcnRpdGlvbnM6Cis8cHJv Z3JhbWxpc3Rpbmc+CitBTFRFUiBUQUJMRSBtZWFzdXJlbWVudCBTUExJVCBQQVJUSVRJT04g bWVhc3VyZW1lbnRfeTIwMDZxMSBJTlRPCisgICAoUEFSVElUSU9OIG1lYXN1cmVtZW50X3ky MDA2bTAxIEZPUiBWQUxVRVMgRlJPTSAoJzIwMDYtMDEtMDEnKSBUTyAoJzIwMDYtMDItMDEn KSwKKyAgICBQQVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMDZtMDIgRk9SIFZBTFVFUyBGUk9N ICgnMjAwNi0wMi0wMScpIFRPICgnMjAwNi0wMy0wMScpLAorICAgIFBBUlRJVElPTiBtZWFz dXJlbWVudF95MjAwNm0wMyBGT1IgVkFMVUVTIEZST00gKCcyMDA2LTAzLTAxJykgVE8gKCcy MDA2LTA0LTAxJykpOworPC9wcm9ncmFtbGlzdGluZz4KKyAgICA8L3BhcmE+CisKICAgIDwv c2VjdDM+CiAKICAgIDxzZWN0MyBpZD0iZGRsLXBhcnRpdGlvbmluZy1kZWNsYXJhdGl2ZS1s aW1pdGF0aW9ucyI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxl LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKaW5kZXggNWFjMWY1 YzQyMy4uZDhlODM4M2IwNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90 YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbApAQCAt MzksNiArMzksMTAgQEAgQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgREVUQUNIIFBBUlRJ VElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3Jl cGxhY2VhYmxlPiBbIENPTkNVUlJFTlRMWSB8IEZJTkFMSVpFIF0KIEFMVEVSIFRBQkxFIFsg SUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxh Y2VhYmxlPgogICAgIE1FUkdFIFBBUlRJVElPTlMgKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0p IElOVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9y ZXBsYWNlYWJsZT4KK0FMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgorICAgIFNQTElUIFBBUlRJVElP TiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxh Y2VhYmxlPiBJTlRPCisgICAgICAgIChQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+IHsgRk9SIFZBTFVFUyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3Jl cGxhY2VhYmxlPiB8IERFRkFVTFQgfSwKKyAgICAgICAgIFBBUlRJVElPTiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4geyBG T1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91 bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9IFssIC4uLl0pCiAKIDxwaHJhc2U+ d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFjdGlvbjwvcmVwbGFjZWFi bGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIApAQCAtMTE2MSw2ICsxMTY1LDc5IEBAIFdJVEgg KCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVy YWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVu dHJ5PgogCisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtYWx0ZXJ0YWJsZS1zcGxpdC1wYXJ0 aXRpb24iPgorICAgIDx0ZXJtPjxsaXRlcmFsPlNQTElUIFBBUlRJVElPTiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBJTlRP IChQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lMTwvcmVwbGFjZWFibGU+IHsgRk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQg fSwgUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f bmFtZTI8L3JlcGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxU IH0gWywgLi4uXSk8L2xpdGVyYWw+PC90ZXJtPgorCisgICAgPGxpc3RpdGVtPgorICAgICA8 cGFyYT4KKyAgICAgIFRoaXMgZm9ybSBzcGxpdHMgYSBzaW5nbGUgcGFydGl0aW9uIG9mIHRo ZSB0YXJnZXQgdGFibGUgaW50byBuZXcKKyAgICAgIHBhcnRpdGlvbnMuIEhhc2gtcGFydGl0 aW9uZWQgdGFyZ2V0IHRhYmxlIGlzIG5vdCBzdXBwb3J0ZWQuIEJvdW5kcyBvZiBuZXcKKyAg ICAgIHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwIHdpdGggbmV3IGFuZCBleGlzdGlu ZyBwYXJ0aXRpb25zCisgICAgICAoZXhjZXB0IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+KS4KKyAgICAgIElmIHRoZSBzcGxp dCBwYXJ0aXRpb24gaXMgYSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiBwYXJ0aXRpb24s IG9uZSBvZgorICAgICAgdGhlIG5ldyBwYXJ0aXRpb25zIG11c3QgYmUgPGxpdGVyYWw+REVG QVVMVDwvbGl0ZXJhbD4uCisgICAgICBJbiBjYXNlIG9uZSBvZiB0aGUgbmV3IHBhcnRpdGlv bnMgaXMgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4sCisgICAgICBuZXcgcGFydGl0aW9u cyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBs YWNlYWJsZT4sCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0 aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4sIC4uLiBjYW4KKyAgICAgIGhhdmUgc3BhY2VzIGJl dHdlZW4gcGFydGl0aW9ucyBib3VuZHMuICBJZiB0aGUgcGFydGl0aW9uZWQgdGFibGUgZG9l cyBub3QKKyAgICAgIGhhdmUgYSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiBwYXJ0aXRp b24sIHRoZSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPgorICAgICAgcGFydGl0aW9uIGNh biBiZSBkZWZpbmVkIGFzIG9uZSBvZiB0aGUgbmV3IHBhcnRpdGlvbnMuCisgICAgIDwvcGFy YT4KKyAgICAgPHBhcmE+CisgICAgICBJbiBjYXNlIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBj b250YWluIGEgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4KKyAgICAgIHBhcnRpdGlvbiwg dGhlIGZvbGxvd2luZyBtdXN0IGJlIHRydWU6IHN1bSBib3VuZHMgb2YgbmV3IHBhcnRpdGlv bnMKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFt ZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiwgLi4uIHNob3VsZAorICAgICAgYmUg ZXF1YWwgdG8gdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4uCisgICAg ICBPbmUgb2YgdGhlIG5ldyBwYXJ0aXRpb25zIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAgIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiwgLi4u IGNhbiBoYXZlCisgICAgICB0aGUgc2FtZSBuYW1lIGFzIHRoZSBzcGxpdCBwYXJ0aXRpb24g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNl YWJsZT4KKyAgICAgICh0aGlzIGlzIHN1aXRhYmxlIGluIGNhc2Ugb2Ygc3BsaXR0aW5nIGEg PGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4KKyAgICAgIHBhcnRpdGlvbjogd2Ugc3BsaXQg aXQsIGJ1dCBhZnRlciBzcGxpdHRpbmcsIHdlIGhhdmUgYSBwYXJ0aXRpb24gd2l0aCB0aGUK KyAgICAgIHNhbWUgbmFtZSkuICBPbmx5IGEgc2ltcGxlLCBub24tcGFydGl0aW9uZWQgcGFy dGl0aW9uIGNhbiBiZSBzcGxpdC4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAg IE5ldyBwYXJ0aXRpb25zIHdpbGwgaGF2ZSB0aGUgc2FtZSBvd25lciBhcyB0aGUgcGFyZW50 IHBhcnRpdGlvbi4KKyAgICAgIEl0IGlzIHRoZSB1c2VyJ3MgcmVzcG9uc2liaWxpdHkgdG8g c2V0dXAgPGFjcm9ueW0+QUNMPC9hY3JvbnltPiBvbiBuZXcKKyAgICAgIHBhcnRpdGlvbnMu CisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgaW5kZXhlcyBhbmQgaWRl bnRpdHkgYXJlIGNyZWF0ZWQgbGF0ZXIsIGFmdGVyIG1vdmluZyB0aGUgZGF0YQorICAgICAg aW50byB0aGUgbmV3IHBhcnRpdGlvbnMuCisgICAgICBFeHRlbmRlZCBzdGF0aXN0aWNzIGFy ZW4ndCBjb3BpZWQgZnJvbSB0aGUgcGFyZW50IHRhYmxlLCBmb3IgY29uc2lzdGVuY3kgd2l0 aAorICAgICAgPGNvbW1hbmQ+Q1JFQVRFIFRBQkxFIFBBUlRJVElPTiBPRjwvY29tbWFuZD4u CisgICAgICBOZXcgcGFydGl0aW9ucyB3aWxsIGluaGVyaXQgdGhlIHNhbWUgdGFibGUgYWNj ZXNzIG1ldGhvZCwgcGVyc2lzdGVuY2UKKyAgICAgIHR5cGUsIGFuZCB0YWJsZXNwYWNlIGFz IHRoZSBwYXJlbnQgdGFibGUuCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBX aGVuIGEgcGFydGl0aW9uIGlzIHNwbGl0LCBhbnkgaW5kaXZpZHVhbCBvYmplY3RzIGJlbG9u Z2luZyB0byB0aGlzCisgICAgICBwYXJ0aXRpb24sIHN1Y2ggYXMgY29uc3RyYWludHMgb3Ig dGhlIHN0YXRpc3RpY3Mgd2lsbCBiZSBkcm9wcGVkLiBUaGlzIG9jY3VycworICAgICAgYmVj YXVzZSA8Y29tbWFuZD5BTFRFUiBUQUJMRSBTUExJVCBQQVJUSVRJT048L2NvbW1hbmQ+IHVz ZXMgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGl0c2VsZgorICAgICAgYXMgdGhlIHRlbXBsYXRl IHRvIGRlZmluZSB0aGVzZSBvYmplY3RzLgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgor ICAgICAgSWYgYSBzcGxpdCBwYXJ0aXRpb24gaGFzIHNvbWUgb2JqZWN0cyBkZXBlbmRlbnQg b24gaXQsIHRoZSBjb21tYW5kIGNhbgorICAgICAgbm90IGJlIGRvbmUgKDxsaXRlcmFsPkNB U0NBREU8L2xpdGVyYWw+IGlzIG5vdCB1c2VkLCBhbmQgYW4gZXJyb3Igd2lsbAorICAgICAg YmUgcmV0dXJuZWQpLgorICAgICA8L3BhcmE+CisgICAgIDxub3RlPgorICAgICAgPHBhcmE+ CisgICAgICAgU3BsaXQgcGFydGl0aW9uIGFjcXVpcmVzIGFuIDxsaXRlcmFsPkFDQ0VTUyBF WENMVVNJVkU8L2xpdGVyYWw+IGxvY2sgb24KKyAgICAgICB0aGUgcGFyZW50IHRhYmxlLCBp biBhZGRpdGlvbiB0byB0aGUgPGxpdGVyYWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4K KyAgICAgICBsb2NrIG9uIHRoZSB0YWJsZSBiZWluZyBzcGxpdC4KKyAgICAgIDwvcGFyYT4K KyAgICAgPC9ub3RlPgorICAgICA8bm90ZT4KKyAgICAgIDxwYXJhPgorICAgICAgIDxjb21t YW5kPkFMVEVSIFRBQkxFIFNQTElUIFBBUlRJVElPTjwvY29tbWFuZD4gY3JlYXRlcyBuZXcg cGFydGl0aW9ucyBhbmQKKyAgICAgICBtb3ZlcyBkYXRhIGZyb20gdGhlIHNwbGl0IHBhcnRp dGlvbiBpbnRvIHRoZW0sIHdoaWNoIGNhbiB0YWtlIGEgbG9uZworICAgICAgIHRpbWUuICBT byBpdCBpcyBub3QgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSBjb21tYW5kIGZvciBzcGxpdHRp bmcgYQorICAgICAgIHNtYWxsIGZyYWN0aW9uIG9mIHJvd3Mgb3V0IG9mIGEgdmVyeSBiaWcg cGFydGl0aW9uLgorICAgICAgPC9wYXJhPgorICAgICA8L25vdGU+CisgICAgPC9saXN0aXRl bT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtYWx0 ZXJ0YWJsZS1tZXJnZS1wYXJ0aXRpb25zIj4KICAgICA8dGVybT48bGl0ZXJhbD5NRVJHRSBQ QVJUSVRJT05TICg8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25h bWUxPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dKSBJTlRPIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+PC9saXRlcmFs PjwvdGVybT4KIApAQCAtMTI2NCw3ICsxMzQxLDggQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+ LCBSRU0KICAgIEFsbCB0aGUgZm9ybXMgb2YgPGNvbW1hbmQ+QUxURVIgVEFCTEU8L2NvbW1h bmQ+IHRoYXQgYWN0IG9uIGEgc2luZ2xlIHRhYmxlLAogICAgZXhjZXB0IDxsaXRlcmFsPlJF TkFNRTwvbGl0ZXJhbD4sIDxsaXRlcmFsPlNFVCBTQ0hFTUE8L2xpdGVyYWw+LAogICAgPGxp dGVyYWw+QVRUQUNIIFBBUlRJVElPTjwvbGl0ZXJhbD4sIDxsaXRlcmFsPkRFVEFDSCBQQVJU SVRJT048L2xpdGVyYWw+LAotICAgYW5kIDxsaXRlcmFsPk1FUkdFIFBBUlRJVElPTlM8L2xp dGVyYWw+LCBjYW4gYmUgY29tYmluZWQgaW50bworICAgPGxpdGVyYWw+U1BMSVQgUEFSVElU SU9OPC9saXRlcmFsPiwgYW5kIDxsaXRlcmFsPk1FUkdFIFBBUlRJVElPTlM8L2xpdGVyYWw+ CisgICBjYW4gYmUgY29tYmluZWQgaW50bwogICAgYSBsaXN0IG9mIG11bHRpcGxlIGFsdGVy YXRpb25zIHRvIGJlIGFwcGxpZWQgdG9nZXRoZXIuICBGb3IgZXhhbXBsZSwgaXQKICAgIGlz IHBvc3NpYmxlIHRvIGFkZCBzZXZlcmFsIGNvbHVtbnMgYW5kL29yIGFsdGVyIHRoZSB0eXBl IG9mIHNldmVyYWwKICAgIGNvbHVtbnMgaW4gYSBzaW5nbGUgY29tbWFuZC4gIFRoaXMgaXMg cGFydGljdWxhcmx5IHVzZWZ1bCB3aXRoIGxhcmdlCkBAIC0xNTA4LDcgKzE1ODYsNyBAQCBX SVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19s aXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgPGxpc3RpdGVtPgogICAgICAgIDxw YXJhPgogICAgICAgICBUaGUgbmFtZSBvZiB0aGUgdGFibGUgdG8gYXR0YWNoIGFzIGEgbmV3 IHBhcnRpdGlvbiBvciB0byBkZXRhY2ggZnJvbSB0aGlzIHRhYmxlLAotICAgICAgICBvciB0 aGUgbmFtZSBvZiB0aGUgbmV3IG1lcmdlZCBwYXJ0aXRpb24uCisgICAgICAgIG9yIHRoZSBu YW1lIG9mIHNwbGl0IHBhcnRpdGlvbiwgb3IgdGhlIG5hbWUgb2YgdGhlIG5ldyBtZXJnZWQg cGFydGl0aW9uLgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwv dmFybGlzdGVudHJ5PgpAQCAtMTUxOCw3ICsxNTk2LDggQEAgV0lUSCAoIE1PRFVMVVMgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFi bGU+LCBSRU0KICAgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICAgIDxsaXN0aXRlbT4K ICAgICAgICA8cGFyYT4KLSAgICAgICAgVGhlIG5hbWVzIG9mIHRoZSB0YWJsZXMgYmVpbmcg bWVyZ2VkIGludG8gdGhlIG5ldyBwYXJ0aXRpb24uCisgICAgICAgIFRoZSBuYW1lcyBvZiB0 aGUgdGFibGVzIGJlaW5nIG1lcmdlZCBpbnRvIHRoZSBuZXcgcGFydGl0aW9uIG9yIHNwbGl0 IGludG8KKyAgICAgICAgbmV3IHBhcnRpdGlvbnMuCiAgICAgICAgPC9wYXJhPgogICAgICAg PC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CkBAIC0xOTUxLDYgKzIwMzAsMjQg QEAgQUxURVIgVEFCTEUgbWVhc3VyZW1lbnQKICAgICBERVRBQ0ggUEFSVElUSU9OIG1lYXN1 cmVtZW50X3kyMDE1bTEyOwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAKKyAgPHBhcmE+ CisgICBUbyBzcGxpdCBhIHNpbmdsZSBwYXJ0aXRpb24gb2YgdGhlIHJhbmdlLXBhcnRpdGlv bmVkIHRhYmxlOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug U1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMyBJTlRPCisgICAoUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjMgRk9SIFZBTFVFUyBGUk9NICgnMjAyMy0wMi0wMScpIFRPICgn MjAyMy0wMy0wMScpLAorICAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIzIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjMtMDMtMDEnKSBUTyAoJzIwMjMtMDQtMDEnKSwKKyAgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMyBGT1IgVkFMVUVTIEZST00gKCcyMDIzLTA0LTAxJykgVE8gKCcyMDIz LTA1LTAxJykpOworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisKKyAgPHBhcmE+CisgICBU byBzcGxpdCBhIHNpbmdsZSBwYXJ0aXRpb24gb2YgdGhlIGxpc3QtcGFydGl0aW9uZWQgdGFi bGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBB UlRJVElPTiBzYWxlc19hbGwgSU5UTworICAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBW QUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICAgUEFSVElU SU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFk aXZvc3RvaycpLAorICAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4g KCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFy YT4KKwogICA8cGFyYT4KICAgIFRvIG1lcmdlIHNldmVyYWwgcGFydGl0aW9ucyBpbnRvIG9u ZSBwYXJ0aXRpb24gb2YgdGhlIHRhcmdldCB0YWJsZToKIDxwcm9ncmFtbGlzdGluZz4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggOWFhYTBjNjdmYi4uOWE1MmEzNmVkYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTc0Myw2ICs3NDMsOSBAQCBzdGF0 aWMgY2hhciBHZXRBdHRyaWJ1dGVTdG9yYWdlKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAq c3RvcmFnZW1vZGUpOwogCiBzdGF0aWMgdm9pZCBBVEV4ZWNNZXJnZVBhcnRpdGlvbnMoTGlz dCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJ CQkJCSAgUGFydGl0aW9uQ21kICpjbWQsIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29u dGV4dCk7CitzdGF0aWMgdm9pZCBBVEV4ZWNTcGxpdFBhcnRpdGlvbihMaXN0ICoqd3F1ZXVl LCBBbHRlcmVkVGFibGVJbmZvICp0YWIsCisJCQkJCQkJCSBSZWxhdGlvbiByZWwsIFBhcnRp dGlvbkNtZCAqY21kLAorCQkJCQkJCQkgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250 ZXh0KTsKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCURlZmluZVJlbGF0aW9uCkBAIC00ODQzLDYg KzQ4NDYsMTAgQEAgQWx0ZXJUYWJsZUdldExvY2tMZXZlbChMaXN0ICpjbWRzKQogCQkJCWNt ZF9sb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1c2l2ZUxvY2s7CiAJCQkJYnJlYWs7CiAKKwkJCWNh c2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVz aXZlTG9jazsKKwkJCQlicmVhazsKKwogCQkJZGVmYXVsdDoJCQkvKiBvb3BzICovCiAJCQkJ ZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBhbHRlciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJ CSAoaW50KSBjbWQtPnN1YnR5cGUpOwpAQCAtNTI4Myw2ICs1MjkwLDExIEBAIEFUUHJlcENt ZChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwKIAkJ CS8qIE5vIGNvbW1hbmQtc3BlY2lmaWMgcHJlcCBuZWVkZWQgKi8KIAkJCXBhc3MgPSBBVF9Q QVNTX01JU0M7CiAJCQlicmVhazsKKwkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCUFU U2ltcGxlUGVybWlzc2lvbnMoY21kLT5zdWJ0eXBlLCByZWwsIEFUVF9QQVJUSVRJT05FRF9U QUJMRSk7CisJCQkvKiBObyBjb21tYW5kLXNwZWNpZmljIHByZXAgbmVlZGVkICovCisJCQlw YXNzID0gQVRfUEFTU19NSVNDOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CQkJCS8qIG9vcHMg Ki8KIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgYWx0ZXIgdGFibGUgdHlwZTogJWQi LAogCQkJCSAoaW50KSBjbWQtPnN1YnR5cGUpOwpAQCAtNTY4Nyw2ICs1Njk5LDE0IEBAIEFU RXhlY0NtZChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsCiAJCQlBVEV4 ZWNNZXJnZVBhcnRpdGlvbnMod3F1ZXVlLCB0YWIsIHJlbCwgKFBhcnRpdGlvbkNtZCAqKSBj bWQtPmRlZiwKIAkJCQkJCQkJICBjb250ZXh0KTsKIAkJCWJyZWFrOworCQljYXNlIEFUX1Nw bGl0UGFydGl0aW9uOgorCQkJY21kID0gQVRQYXJzZVRyYW5zZm9ybUNtZCh3cXVldWUsIHRh YiwgcmVsLCBjbWQsIGZhbHNlLCBsb2NrbW9kZSwKKwkJCQkJCQkJCSAgY3VyX3Bhc3MsIGNv bnRleHQpOworCQkJQXNzZXJ0KGNtZCAhPSBOVUxMKTsKKwkJCUFzc2VydChyZWwtPnJkX3Jl bC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKTsKKwkJCUFURXhlY1Nw bGl0UGFydGl0aW9uKHdxdWV1ZSwgdGFiLCByZWwsIChQYXJ0aXRpb25DbWQgKikgY21kLT5k ZWYsCisJCQkJCQkJCSBjb250ZXh0KTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgkJCQkvKiBv b3BzICovCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGFsdGVyIHRhYmxlIHR5cGU6 ICVkIiwKIAkJCQkgKGludCkgY21kLT5zdWJ0eXBlKTsKQEAgLTY3MjksNiArNjc0OSw4IEBA IGFsdGVyX3RhYmxlX3R5cGVfdG9fc3RyaW5nKEFsdGVyVGFibGVUeXBlIGNtZHR5cGUpCiAJ CQlyZXR1cm4gIkRFVEFDSCBQQVJUSVRJT04gLi4uIEZJTkFMSVpFIjsKIAkJY2FzZSBBVF9N ZXJnZVBhcnRpdGlvbnM6CiAJCQlyZXR1cm4gIk1FUkdFIFBBUlRJVElPTlMiOworCQljYXNl IEFUX1NwbGl0UGFydGl0aW9uOgorCQkJcmV0dXJuICJTUExJVCBQQVJUSVRJT04iOwogCQlj YXNlIEFUX0FkZElkZW50aXR5OgogCQkJcmV0dXJuICJBTFRFUiBDT0xVTU4gLi4uIEFERCBJ REVOVElUWSI7CiAJCWNhc2UgQVRfU2V0SWRlbnRpdHk6CkBAIC0yMjkxOCwzICsyMjk0MCw0 MTYgQEAgQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJs ZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCS8qIFJlc3RvcmUgdXNlcmlkIGFuZCBzZWN1 cml0eSBjb250ZXh0LiAqLwogCVNldFVzZXJJZEFuZFNlY0NvbnRleHQoc2F2ZV91c2VyaWQs IHNhdmVfc2VjX2NvbnRleHQpOwogfQorCisKKy8qCisgKiBTdHJ1Y3Qgd2l0aCBjb250ZXh0 IG9mIG5ldyBwYXJ0aXRpb24gZm9yIGluc2VydGluZyByb3dzIGZyb20gc3BsaXQgcGFydGl0 aW9uCisgKi8KK3R5cGVkZWYgc3RydWN0IFNwbGl0UGFydGl0aW9uQ29udGV4dAoreworCUV4 cHJTdGF0ZSAgKnBhcnRxdWFsc3RhdGU7CS8qIGV4cHJlc3Npb24gZm9yIGNoZWNraW5nIHNs b3QgZm9yIHBhcnRpdGlvbgorCQkJCQkJCQkgKiAoTlVMTCBmb3IgREVGQVVMVCBwYXJ0aXRp b24pICovCisJQnVsa0luc2VydFN0YXRlIGJpc3RhdGU7CS8qIHN0YXRlIG9mIGJ1bGsgaW5z ZXJ0cyBmb3IgcGFydGl0aW9uICovCisJVHVwbGVUYWJsZVNsb3QgKmRzdHNsb3Q7CS8qIHNs b3QgZm9yIGluc2VydGluZyByb3cgaW50byBwYXJ0aXRpb24gKi8KKwlBbHRlcmVkVGFibGVJ bmZvICp0YWI7CQkvKiBzdHJ1Y3RvcmUgd2l0aCBnZW5lcmF0ZWQgY29sdW1uIGV4cHJlc3Np b25zCisJCQkJCQkJCSAqIGFuZCBjaGVjayBjb25zdHJhaW50IGV4cHJlc3NzaW9ucy4gKi8K KwlSZWxhdGlvbglwYXJ0UmVsOwkJLyogcmVsYXRpb24gZm9yIHBhcnRpdGlvbiAqLworfSBT cGxpdFBhcnRpdGlvbkNvbnRleHQ7CisKKy8qCisgKiBjcmVhdGVTcGxpdFBhcnRpdGlvbkNv bnRleHQ6IGNyZWF0ZSBjb250ZXh0IGZvciBwYXJ0aXRpb24gYW5kIGZpbGwgaXQKKyAqLwor c3RhdGljIFNwbGl0UGFydGl0aW9uQ29udGV4dCAqCitjcmVhdGVTcGxpdFBhcnRpdGlvbkNv bnRleHQoUmVsYXRpb24gcGFydFJlbCkKK3sKKwlTcGxpdFBhcnRpdGlvbkNvbnRleHQgKnBj OworCisJcGMgPSAoU3BsaXRQYXJ0aXRpb25Db250ZXh0ICopIHBhbGxvYzAoc2l6ZW9mKFNw bGl0UGFydGl0aW9uQ29udGV4dCkpOworCXBjLT5wYXJ0UmVsID0gcGFydFJlbDsKKworCS8q CisJICogUHJlcGFyZSBhIEJ1bGtJbnNlcnRTdGF0ZSBmb3IgdGFibGVfdHVwbGVfaW5zZXJ0 LiBUaGUgRlNNIGlzIGVtcHR5LCBzbworCSAqIGRvbid0IGJvdGhlciB1c2luZyBpdC4KKwkg Ki8KKwlwYy0+YmlzdGF0ZSA9IEdldEJ1bGtJbnNlcnRTdGF0ZSgpOworCisJLyogQ3JlYXRl IHR1cGxlIHNsb3QgZm9yIG5ldyBwYXJ0aXRpb24uICovCisJcGMtPmRzdHNsb3QgPSB0YWJs ZV9zbG90X2NyZWF0ZShwYy0+cGFydFJlbCwgTlVMTCk7CisKKwlyZXR1cm4gcGM7Cit9CisK Ky8qCisgKiBkZWxldGVTcGxpdFBhcnRpdGlvbkNvbnRleHQ6IGRlbGV0ZSBjb250ZXh0IGZv ciBwYXJ0aXRpb24KKyAqLworc3RhdGljIHZvaWQKK2RlbGV0ZVNwbGl0UGFydGl0aW9uQ29u dGV4dChTcGxpdFBhcnRpdGlvbkNvbnRleHQgKnBjLCBMaXN0ICoqd3F1ZXVlLCBpbnQgdGlf b3B0aW9ucykKK3sKKwlMaXN0Q2VsbCAgICpsdGFiOworCisJRXhlY0Ryb3BTaW5nbGVUdXBs ZVRhYmxlU2xvdChwYy0+ZHN0c2xvdCk7CisJRnJlZUJ1bGtJbnNlcnRTdGF0ZShwYy0+Ymlz dGF0ZSk7CisKKwl0YWJsZV9maW5pc2hfYnVsa19pbnNlcnQocGMtPnBhcnRSZWwsIHRpX29w dGlvbnMpOworCisJLyoKKwkgKiBXZSBkb24ndCBuZWVkIHByb2Nlc3MgdGhpcyBwYy0+cGFy dFJlbCBzbyBkZWxldGUgdGhlIEFMVEVSIFRBQkxFIHF1ZXVlCisJICogb2YgaXQuCisJICov CisJZm9yZWFjaChsdGFiLCAqd3F1ZXVlKQorCXsKKwkJQWx0ZXJlZFRhYmxlSW5mbyAqdGFi ID0gKEFsdGVyZWRUYWJsZUluZm8gKikgbGZpcnN0KGx0YWIpOworCisJCWlmICh0YWItPnJl bGlkID09IFJlbGF0aW9uR2V0UmVsaWQocGMtPnBhcnRSZWwpKQorCQkJKndxdWV1ZSA9IGxp c3RfZGVsZXRlX2NlbGwoKndxdWV1ZSwgbHRhYik7CisJfQorCisJcGZyZWUocGMpOworfQor CisvKgorICogU3BsaXRQYXJ0aXRpb25Nb3ZlUm93czogc2NhbiBzcGxpdCBwYXJ0aXRpb24g KHNwbGl0UmVsKSBvZiBwYXJ0aXRpb25lZCB0YWJsZQorICogKHJlbCkgYW5kIG1vdmUgcm93 cyBpbnRvIG5ldyBwYXJ0aXRpb25zLgorICoKKyAqIE5ldyBwYXJ0aXRpb25zIGRlc2NyaXB0 aW9uOgorICogcGFydGxpc3Q6IGxpc3Qgb2YgcG9pbnRlcnMgdG8gU2luZ2xlUGFydGl0aW9u U3BlYyBzdHJ1Y3R1cmVzLiAgSXQgY29udGFpbnMKKyAqIHRoZSBwYXJ0aXRpb24gc3BlY2lm aWNhdGlvbiBkZXRhaWxzIGZvciBhbGwgbmV3IHBhcnRpdGlvbnMuCisgKiBuZXdQYXJ0UmVs czogbGlzdCBvZiBSZWxhdGlvbnMsIG5ldyBwYXJ0aXRpb25zIGNyZWF0ZWQgaW4KKyAqIEFU RXhlY1NwbGl0UGFydGl0aW9uLgorICovCitzdGF0aWMgdm9pZAorU3BsaXRQYXJ0aXRpb25N b3ZlUm93cyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHNwbGl0UmVs LAorCQkJCQkgICBMaXN0ICpwYXJ0bGlzdCwgTGlzdCAqbmV3UGFydFJlbHMpCit7CisJLyog VGhlIEZTTSBpcyBlbXB0eSwgc28gZG9uJ3QgYm90aGVyIHVzaW5nIGl0LiAqLworCWludAkJ CXRpX29wdGlvbnMgPSBUQUJMRV9JTlNFUlRfU0tJUF9GU007CisJQ29tbWFuZElkCW15Y2lk OworCUVTdGF0ZQkgICAqZXN0YXRlOworCUxpc3RDZWxsICAgKmxpc3RwdHIsCisJCQkgICAq bGlzdHB0cjI7CisJVHVwbGVUYWJsZVNsb3QgKnNyY3Nsb3Q7CisJRXhwckNvbnRleHQgKmVj b250ZXh0OworCVRhYmxlU2NhbkRlc2Mgc2NhbjsKKwlTbmFwc2hvdAlzbmFwc2hvdDsKKwlN ZW1vcnlDb250ZXh0IG9sZEN4dDsKKwlMaXN0CSAgICpwYXJ0Q29udGV4dHMgPSBOSUw7CisJ VHVwbGVDb252ZXJzaW9uTWFwICp0dXBsZV9tYXA7CisJU3BsaXRQYXJ0aXRpb25Db250ZXh0 ICpkZWZhdWx0UGFydEN0eCA9IE5VTEwsCisJCQkgICAqcGM7CisKKwlteWNpZCA9IEdldEN1 cnJlbnRDb21tYW5kSWQodHJ1ZSk7CisKKwllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRl KCk7CisKKwlmb3Jib3RoKGxpc3RwdHIsIHBhcnRsaXN0LCBsaXN0cHRyMiwgbmV3UGFydFJl bHMpCisJeworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPSAoU2luZ2xlUGFydGl0aW9u U3BlYyAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJcGMgPSBjcmVhdGVTcGxpdFBhcnRpdGlv bkNvbnRleHQoKFJlbGF0aW9uKSBsZmlyc3QobGlzdHB0cjIpKTsKKworCQkvKiBGaW5kIHRo ZSB3b3JrIHF1ZXVlIGVudHJ5IGZvciBuZXcgcGFydGl0aW9uIHRhYmxlOiBuZXdQYXJ0UmVs LiAqLworCQlwYy0+dGFiID0gQVRHZXRRdWV1ZUVudHJ5KHdxdWV1ZSwgcGMtPnBhcnRSZWwp OworCisJCWJ1aWxkRXhwcmVzc2lvbkV4ZWN1dGlvblN0YXRlcyhwYy0+dGFiLCBwYy0+cGFy dFJlbCwgZXN0YXRlKTsKKworCQlpZiAoc3BzLT5ib3VuZC0+aXNfZGVmYXVsdCkKKwkJewor CQkJLyoKKwkJCSAqIFdlIHNob3VsZCBub3QgY3JlYXRlIHN0cnVjdHVyZSBmb3IgY2hlY2sg cGFydGl0aW9uIGNvbnN0cmFpbnQKKwkJCSAqIGZvciBuZXcgREVGQVVMVCBwYXJ0aXRpb24u CisJCQkgKi8KKwkJCWRlZmF1bHRQYXJ0Q3R4ID0gcGM7CisJCX0KKwkJZWxzZQorCQl7CisJ CQlMaXN0CSAgICpwYXJ0Q29uc3RyYWludDsKKworCQkJLyogQnVpbGQgZXhwcmVzc2lvbiBl eGVjdXRpb24gc3RhdGVzIGZvciBwYXJ0aXRpb24gY2hlY2sgcXVhbHMuICovCisJCQlwYXJ0 Q29uc3RyYWludCA9IGdldF9xdWFsX2Zyb21fcGFydGJvdW5kKHJlbCwgc3BzLT5ib3VuZCk7 CisJCQlwYXJ0Q29uc3RyYWludCA9CisJCQkJKExpc3QgKikgZXZhbF9jb25zdF9leHByZXNz aW9ucyhOVUxMLAorCQkJCQkJCQkJCQkJKE5vZGUgKikgcGFydENvbnN0cmFpbnQpOworCQkJ LyogTWFrZSBib29sZWFuIGV4cHJlc3Npb24gZm9yIEV4ZWNDaGVjaygpLiAqLworCQkJcGFy dENvbnN0cmFpbnQgPSBsaXN0X21ha2UxKG1ha2VfYW5kc19leHBsaWNpdChwYXJ0Q29uc3Ry YWludCkpOworCisJCQkvKgorCQkJICogTWFwIHRoZSB2YXJzIGluIHRoZSBjb25zdHJhaW50 IGV4cHJlc3Npb24gZnJvbSByZWwncyBhdHRub3MgdG8KKwkJCSAqIHNwbGl0UmVsJ3MuCisJ CQkgKi8KKwkJCXBhcnRDb25zdHJhaW50ID0gbWFwX3BhcnRpdGlvbl92YXJhdHRub3MocGFy dENvbnN0cmFpbnQsCisJCQkJCQkJCQkJCQkJIDEsIHNwbGl0UmVsLCByZWwpOworCisJCQlw Yy0+cGFydHF1YWxzdGF0ZSA9CisJCQkJRXhlY1ByZXBhcmVFeHByKChFeHByICopIGxpbml0 aWFsKHBhcnRDb25zdHJhaW50KSwgZXN0YXRlKTsKKwkJCUFzc2VydChwYy0+cGFydHF1YWxz dGF0ZSAhPSBOVUxMKTsKKwkJfQorCisJCS8qIFN0b3JlIHBhcnRpdGlvbiBjb250ZXh0IGlu dG8gbGlzdC4gKi8KKwkJcGFydENvbnRleHRzID0gbGFwcGVuZChwYXJ0Q29udGV4dHMsIHBj KTsKKwl9CisKKwllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsK KworCS8qIENyZWF0ZSBuZWNlc3NhcnkgdHVwbGUgc2xvdC4gKi8KKwlzcmNzbG90ID0gdGFi bGVfc2xvdF9jcmVhdGUoc3BsaXRSZWwsIE5VTEwpOworCisJLyoKKwkgKiBNYXAgY29tcHV0 aW5nIGZvciBtb3ZpbmcgYXR0cmlidXRlcyBvZiBzcGxpdCBwYXJ0aXRpb24gdG8gbmV3IHBh cnRpdGlvbgorCSAqIChmb3IgZmlyc3QgbmV3IHBhcnRpdGlvbiwgYnV0IG90aGVyIG5ldyBw YXJ0aXRpb25zIGNhbiB1c2UgdGhlIHNhbWUKKwkgKiBtYXApLgorCSAqLworCXBjID0gKFNw bGl0UGFydGl0aW9uQ29udGV4dCAqKSBsZmlyc3QobGlzdF9oZWFkKHBhcnRDb250ZXh0cykp OworCXR1cGxlX21hcCA9IGNvbnZlcnRfdHVwbGVzX2J5X25hbWUoUmVsYXRpb25HZXREZXNj cihzcGxpdFJlbCksCisJCQkJCQkJCQkgICBSZWxhdGlvbkdldERlc2NyKHBjLT5wYXJ0UmVs KSk7CisKKwkvKiBTY2FuIHRocm91Z2ggdGhlIHJvd3MuICovCisJc25hcHNob3QgPSBSZWdp c3RlclNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOworCXNjYW4gPSB0YWJsZV9iZWdp bnNjYW4oc3BsaXRSZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsKKworCS8qCisJICogU3dpdGNo IHRvIHBlci10dXBsZSBtZW1vcnkgY29udGV4dCBhbmQgcmVzZXQgaXQgZm9yIGVhY2ggdHVw bGUKKwkgKiBwcm9kdWNlZCwgc28gd2UgZG9uJ3QgbGVhayBtZW1vcnkuCisJICovCisJb2xk Q3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEdldFBlclR1cGxlTWVtb3J5Q29udGV4dChl c3RhdGUpKTsKKworCXdoaWxlICh0YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4sIEZvcndh cmRTY2FuRGlyZWN0aW9uLCBzcmNzbG90KSkKKwl7CisJCWJvb2wJCWZvdW5kID0gZmFsc2U7 CisJCVR1cGxlVGFibGVTbG90ICppbnNlcnRzbG90OworCisJCUNIRUNLX0ZPUl9JTlRFUlJV UFRTKCk7CisKKwkJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc3Jjc2xvdDsKKworCQkv KiBTZWFyY2ggcGFydGl0aW9uIGZvciBjdXJyZW50IHNsb3Qgc3Jjc2xvdC4gKi8KKwkJZm9y ZWFjaChsaXN0cHRyLCBwYXJ0Q29udGV4dHMpCisJCXsKKwkJCXBjID0gKFNwbGl0UGFydGl0 aW9uQ29udGV4dCAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJCS8qIHNraXAgREVGQVVMVCBw YXJ0aXRpb24gKi8KKwkJCWlmIChwYy0+cGFydHF1YWxzdGF0ZSAmJiBFeGVjQ2hlY2socGMt PnBhcnRxdWFsc3RhdGUsIGVjb250ZXh0KSkKKwkJCXsKKwkJCQlmb3VuZCA9IHRydWU7CisJ CQkJYnJlYWs7CisJCQl9CisJCX0KKwkJaWYgKCFmb3VuZCkKKwkJeworCQkJLyogVXNlIERF RkFVTFQgcGFydGl0aW9uIGlmIGl0IGV4aXN0cy4gKi8KKwkJCWlmIChkZWZhdWx0UGFydEN0 eCkKKwkJCQlwYyA9IGRlZmF1bHRQYXJ0Q3R4OworCQkJZWxzZQorCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfQ0hFQ0tfVklPTEFUSU9OKSwKKwkJCQkJCWVy cm1zZygiY2FuIG5vdCBmaW5kIHBhcnRpdGlvbiBmb3Igc3BsaXQgcGFydGl0aW9uIHJvdyIp LAorCQkJCQkJZXJydGFibGUoc3BsaXRSZWwpKTsKKwkJfQorCisJCWlmICh0dXBsZV9tYXAp CisJCXsKKwkJCS8qIE5lZWQgdG8gdXNlIG1hcCB0byBjb3B5IGF0dHJpYnV0ZXMuICovCisJ CQlpbnNlcnRzbG90ID0gZXhlY3V0ZV9hdHRyX21hcF9zbG90KHR1cGxlX21hcC0+YXR0ck1h cCwgc3Jjc2xvdCwgcGMtPmRzdHNsb3QpOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogRXh0 cmFjdCBkYXRhIGZyb20gb2xkIHR1cGxlLiAqLworCQkJc2xvdF9nZXRhbGxhdHRycyhzcmNz bG90KTsKKworCQkJLyogQ29weSBhdHRyaWJ1dGVzIGRpcmVjdGx5LiAqLworCQkJaW5zZXJ0 c2xvdCA9IHBjLT5kc3RzbG90OworCisJCQlFeGVjQ2xlYXJUdXBsZShpbnNlcnRzbG90KTsK KworCQkJbWVtY3B5KGluc2VydHNsb3QtPnR0c192YWx1ZXMsIHNyY3Nsb3QtPnR0c192YWx1 ZXMsCisJCQkJICAgc2l6ZW9mKERhdHVtKSAqIHNyY3Nsb3QtPnR0c19udmFsaWQpOworCQkJ bWVtY3B5KGluc2VydHNsb3QtPnR0c19pc251bGwsIHNyY3Nsb3QtPnR0c19pc251bGwsCisJ CQkJICAgc2l6ZW9mKGJvb2wpICogc3Jjc2xvdC0+dHRzX252YWxpZCk7CisKKwkJCUV4ZWNT dG9yZVZpcnR1YWxUdXBsZShpbnNlcnRzbG90KTsKKwkJfQorCisJCS8qCisJCSAqIENvbnN0 cmFpbnRzIGFuZCBHRU5FUkFURUQgZXhwcmVzc2lvbnMgbWlnaHQgcmVmZXJlbmNlIHRoZSB0 YWJsZW9pZAorCQkgKiBjb2x1bW4sIHNvIGZpbGwgdHRzX3RhYmxlT2lkIHdpdGggdGhlIGRl c2lyZWQgdmFsdWUuIChXZSBtdXN0IGRvCisJCSAqIHRoaXMgZWFjaCB0aW1lLCBiZWNhdXNl IGl0IGdldHMgb3ZlcndyaXR0ZW4gd2l0aCBuZXdyZWwncyBPSUQKKwkJICogZHVyaW5nIHN0 b3JpbmcuKQorCQkgKi8KKwkJaW5zZXJ0c2xvdC0+dHRzX3RhYmxlT2lkID0gUmVsYXRpb25H ZXRSZWxpZChwYy0+cGFydFJlbCk7CisKKwkJLyoKKwkJICogTm93LCBldmFsdWF0ZSBhbnkg Z2VuZXJhdGVkIGV4cHJlc3Npb25zIHdob3NlIGlucHV0cyBjb21lIGZyb20gdGhlCisJCSAq IG5ldyB0dXBsZS4gIFdlIGFzc3VtZSB0aGVzZSBjb2x1bW5zIHdvbid0IHJlZmVyZW5jZSBl YWNoIG90aGVyLCBzbworCQkgKiB0aGF0IHRoZXJlJ3Mgbm8gb3JkZXJpbmcgZGVwZW5kZW5j eS4KKwkJICovCisJCWV2YWx1YXRlR2VuZXJhdGVkRXhwcmVzc2lvbnNBbmRDaGVja0NvbnN0 cmFpbnRzKHBjLT50YWIsIHBjLT5wYXJ0UmVsLAorCQkJCQkJCQkJCQkJCQlpbnNlcnRzbG90 LCBlY29udGV4dCk7CisKKwkJLyogV3JpdGUgdGhlIHR1cGxlIG91dCB0byB0aGUgbmV3IHJl bGF0aW9uLiAqLworCQl0YWJsZV90dXBsZV9pbnNlcnQocGMtPnBhcnRSZWwsIGluc2VydHNs b3QsIG15Y2lkLAorCQkJCQkJICAgdGlfb3B0aW9ucywgcGMtPmJpc3RhdGUpOworCisJCVJl c2V0RXhwckNvbnRleHQoZWNvbnRleHQpOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRDeHQpOworCisJdGFibGVfZW5kc2NhbihzY2FuKTsKKwlVbnJlZ2lzdGVyU25hcHNo b3Qoc25hcHNob3QpOworCisJaWYgKHR1cGxlX21hcCkKKwkJZnJlZV9jb252ZXJzaW9uX21h cCh0dXBsZV9tYXApOworCisJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzcmNzbG90 KTsKKworCUZyZWVFeGVjdXRvclN0YXRlKGVzdGF0ZSk7CisKKwlmb3JlYWNoX3B0cihTcGxp dFBhcnRpdGlvbkNvbnRleHQsIHNwYywgcGFydENvbnRleHRzKQorCQlkZWxldGVTcGxpdFBh cnRpdGlvbkNvbnRleHQoc3BjLCB3cXVldWUsIHRpX29wdGlvbnMpOworfQorCisvKgorICog QUxURVIgVEFCTEUgPG5hbWU+IFNQTElUIFBBUlRJVElPTiA8cGFydGl0aW9uLW5hbWU+IElO VE8gPHBhcnRpdGlvbi1saXN0PgorICovCitzdGF0aWMgdm9pZAorQVRFeGVjU3BsaXRQYXJ0 aXRpb24oTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiBy ZWwsCisJCQkJCSBQYXJ0aXRpb25DbWQgKmNtZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0 ICpjb250ZXh0KQoreworCVJlbGF0aW9uCXNwbGl0UmVsOworCU9pZAkJCXNwbGl0UmVsT2lk OworCUxpc3RDZWxsICAgKmxpc3RwdHIsCisJCQkgICAqbGlzdHB0cjI7CisJYm9vbAkJaXNT YW1lTmFtZSA9IGZhbHNlOworCWNoYXIJCXRtcFJlbE5hbWVbTkFNRURBVEFMRU5dOworCUxp c3QJICAgKm5ld1BhcnRSZWxzID0gTklMOworCU9iamVjdEFkZHJlc3Mgb2JqZWN0OworCU9p ZAkJCWRlZmF1bHRQYXJ0T2lkOworCU9pZAkJCXNhdmVfdXNlcmlkOworCWludAkJCXNhdmVf c2VjX2NvbnRleHQ7CisJaW50CQkJc2F2ZV9uZXN0bGV2ZWw7CisKKwlkZWZhdWx0UGFydE9p ZCA9IGdldF9kZWZhdWx0X29pZF9mcm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0aW9u RGVzYyhyZWwsIHRydWUpKTsKKworCS8qCisJICogUGFydGl0aW9uIGlzIGFscmVhZHkgbG9j a2VkIGluIHRoZSB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JTcGxpdAorCSAqIGZ1bmN0aW9u LgorCSAqLworCXNwbGl0UmVsID0gdGFibGVfb3BlbnJ2KGNtZC0+bmFtZSwgTm9Mb2NrKTsK KworCXNwbGl0UmVsT2lkID0gUmVsYXRpb25HZXRSZWxpZChzcGxpdFJlbCk7CisKKwkvKiBD aGVjayBkZXNjcmlwdGlvbnMgb2YgbmV3IHBhcnRpdGlvbnMuICovCisJZm9yZWFjaF9ub2Rl KFNpbmdsZVBhcnRpdGlvblNwZWMsIHNwcywgY21kLT5wYXJ0bGlzdCkKKwl7CisJCU9pZAkJ CWV4aXN0aW5nUmVsaWQ7CisKKwkJLyogTG9vayB1cCBleGlzdGluZyByZWxhdGlvbiBieSBu ZXcgcGFydGl0aW9uIG5hbWUuICovCisJCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5h bWVzcGFjZShzcHMtPm5hbWUsIE5vTG9jaywgJmV4aXN0aW5nUmVsaWQpOworCisJCS8qCisJ CSAqIFRoaXMgd291bGQgZmFpbCBsYXRlciBvbiBhbnl3YXkgaWYgdGhlIHJlbGF0aW9uIGFs cmVhZHkgZXhpc3RzLiBCdXQKKwkJICogYnkgY2F0Y2hpbmcgaXQgaGVyZSB3ZSBjYW4gZW1p dCBhIG5pY2VyIGVycm9yIG1lc3NhZ2UuCisJCSAqLworCQlpZiAoZXhpc3RpbmdSZWxpZCA9 PSBzcGxpdFJlbE9pZCAmJiAhaXNTYW1lTmFtZSkKKwkJCS8qIE9uZSBuZXcgcGFydGl0aW9u IGNhbiBoYXZlIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLiAqLworCQkJaXNT YW1lTmFtZSA9IHRydWU7CisJCWVsc2UgaWYgKE9pZElzVmFsaWQoZXhpc3RpbmdSZWxpZCkp CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RB QkxFKSwKKwkJCQkJZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCBz cHMtPm5hbWUtPnJlbG5hbWUpKTsKKwl9CisKKwkvKiBEZXRhY2ggc3BsaXQgcGFydGl0aW9u LiAqLworCWRldGFjaFBhcnRpdGlvblRhYmxlKHJlbCwgc3BsaXRSZWwsIGRlZmF1bHRQYXJ0 T2lkKTsKKworCS8qCisJICogUGVyZm9ybSBhIHByZWxpbWluYXJ5IGNoZWNrIHRvIGRldGVy bWluZSB3aGV0aGVyIGl0J3Mgc2FmZSB0byBkcm9wCisJICogc3BsaXQgcGFydGl0aW9uIGJl Zm9yZSB3ZSBhY3R1YWxseSBkbyBzbyBsYXRlci4gQWZ0ZXIgbWVyZ2luZyByb3dzIGludG8K KwkgKiB0aGUgbmV3IHBhcnRpdGlvbnMgdmlhIFNwbGl0UGFydGl0aW9uTW92ZVJvd3MsIGFs bCBvbGQgcGFydGl0aW9ucyBuZWVkCisJICogYmUgZHJvcHBlZC4gSG93ZXZlciwgc2luY2Ug dGhlIGRyb3AgYmVoYXZpb3IgaXMgRFJPUF9SRVNUUklDVCBhbmQgdGhlCisJICogbWVyZ2Ug cHJvY2VzcyAoU3BsaXRQYXJ0aXRpb25Nb3ZlUm93cykgY2FuIGJlIHRpbWUtY29uc3VtaW5n LAorCSAqIHBlcmZvcm1pbmcgYW4gZWFybHkgY2hlY2sgb24gdGhlIGRyb3AgZWxpZ2liaWxp dHkgb2Ygb2xkIHBhcnRpdGlvbnMgaXMKKwkgKiBwcmVmZXJhYmxlLgorCSAqLworCW9iamVj dC5vYmplY3RJZCA9IHNwbGl0UmVsT2lkOworCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25S ZWxhdGlvbklkOworCW9iamVjdC5vYmplY3RTdWJJZCA9IDA7CisJcGVyZm9ybURlbGV0aW9u Q2hlY2soJm9iamVjdCwgRFJPUF9SRVNUUklDVCwgUEVSRk9STV9ERUxFVElPTl9JTlRFUk5B TCk7CisKKwkvKgorCSAqIElmIG5ldyBwYXJ0aXRpb24gaGFzIHRoZSBzYW1lIG5hbWUgYXMg c3BsaXQgcGFydGl0aW9uIHRoZW4gd2Ugc2hvdWxkCisJICogcmVuYW1lIHNwbGl0IHBhcnRp dGlvbiBmb3IgcmV1c2luZyBuYW1lLgorCSAqLworCWlmIChpc1NhbWVOYW1lKQorCXsKKwkJ LyoKKwkJICogV2UgbXVzdCBidW1wIHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUg c3BsaXQgcGFydGl0aW9uIHR1cGxlCisJCSAqIHZpc2libGUgZm9yIHJlbmFtaW5nLgorCQkg Ki8KKwkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwkJLyogUmVuYW1lIHBhcnRpdGlv bi4gKi8KKwkJc3ByaW50Zih0bXBSZWxOYW1lLCAic3BsaXQtJXUtJVgtdG1wIiwgUmVsYXRp b25HZXRSZWxpZChyZWwpLCBNeVByb2NQaWQpOworCQlSZW5hbWVSZWxhdGlvbkludGVybmFs KHNwbGl0UmVsT2lkLCB0bXBSZWxOYW1lLCB0cnVlLCBmYWxzZSk7CisKKwkJLyoKKwkJICog V2UgbXVzdCBidW1wIHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgc3BsaXQgcGFy dGl0aW9uIHR1cGxlCisJCSAqIHZpc2libGUgYWZ0ZXIgcmVuYW1pbmcuCisJCSAqLworCQlD b21tYW5kQ291bnRlckluY3JlbWVudCgpOworCX0KKworCS8qIENyZWF0ZSBuZXcgcGFydGl0 aW9ucyAobGlrZSBzcGxpdCBwYXJ0aXRpb24pLCB3aXRob3V0IGluZGV4ZXMuICovCisJZm9y ZWFjaF9ub2RlKFNpbmdsZVBhcnRpdGlvblNwZWMsIHNwcywgY21kLT5wYXJ0bGlzdCkKKwl7 CisJCVJlbGF0aW9uCW5ld1BhcnRSZWw7CisKKwkJbmV3UGFydFJlbCA9IGNyZWF0ZVBhcnRp dGlvblRhYmxlKHdxdWV1ZSwgc3BzLT5uYW1lLCByZWwsCisJCQkJCQkJCQkJICBzcGxpdFJl bC0+cmRfcmVsLT5yZWxvd25lcik7CisJCW5ld1BhcnRSZWxzID0gbGFwcGVuZChuZXdQYXJ0 UmVscywgbmV3UGFydFJlbCk7CisJfQorCisJLyoKKwkgKiBTd2l0Y2ggdG8gdGhlIHRhYmxl IG93bmVyJ3MgdXNlcmlkLCBzbyB0aGF0IGFueSBpbmRleCBmdW5jdGlvbnMgYXJlIHJ1bgor CSAqIGFzIHRoYXQgdXNlci4gIEFsc28gbG9jayBkb3duIHNlY3VyaXR5LXJlc3RyaWN0ZWQg b3BlcmF0aW9ucyBhbmQKKwkgKiBhcnJhbmdlIHRvIG1ha2UgR1VDIHZhcmlhYmxlIGNoYW5n ZXMgbG9jYWwgdG8gdGhpcyBjb21tYW5kLgorCSAqCisJICogTmVlZCB0byBkbyBpdCBhZnRl ciBkZXRlcm1pbmUgbmFtZXNwYWNlIGluIGNyZWF0ZVBhcnRpdGlvblRhYmxlIGNhbGwuCisJ ICovCisJR2V0VXNlcklkQW5kU2VjQ29udGV4dCgmc2F2ZV91c2VyaWQsICZzYXZlX3NlY19j b250ZXh0KTsKKwlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHNwbGl0UmVsLT5yZF9yZWwtPnJl bG93bmVyLAorCQkJCQkJICAgc2F2ZV9zZWNfY29udGV4dCB8IFNFQ1VSSVRZX1JFU1RSSUNU RURfT1BFUkFUSU9OKTsKKwlzYXZlX25lc3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZlbCgpOwor CVJlc3RyaWN0U2VhcmNoUGF0aCgpOworCisJLyogQ29weSBkYXRhIGZyb20gc3BsaXQgcGFy dGl0aW9uIHRvIG5ldyBwYXJ0aXRpb25zLiAqLworCVNwbGl0UGFydGl0aW9uTW92ZVJvd3Mo d3F1ZXVlLCByZWwsIHNwbGl0UmVsLCBjbWQtPnBhcnRsaXN0LCBuZXdQYXJ0UmVscyk7CisJ LyogS2VlcCB0aGUgbG9jayB1bnRpbCBjb21taXQuICovCisJdGFibGVfY2xvc2Uoc3BsaXRS ZWwsIE5vTG9jayk7CisKKwkvKiBBdHRhY2ggbmV3IHBhcnRpdGlvbnMgdG8gcGFydGl0aW9u ZWQgdGFibGUuICovCisJZm9yYm90aChsaXN0cHRyLCBjbWQtPnBhcnRsaXN0LCBsaXN0cHRy MiwgbmV3UGFydFJlbHMpCisJeworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPSAoU2lu Z2xlUGFydGl0aW9uU3BlYyAqKSBsZmlyc3QobGlzdHB0cik7CisJCVJlbGF0aW9uCW5ld1Bh cnRSZWwgPSAoUmVsYXRpb24pIGxmaXJzdChsaXN0cHRyMik7CisKKwkJLyoKKwkJICogd3F1 ZXVlID0gTlVMTDogdmVyaWZpY2F0aW9uIGZvciBlYWNoIGNsb25lZCBjb25zdHJhaW50IGlz IG5vdAorCQkgKiBuZWVkZWQuCisJCSAqLworCQlhdHRhY2hQYXJ0aXRpb25UYWJsZShOVUxM LCByZWwsIG5ld1BhcnRSZWwsIHNwcy0+Ym91bmQpOworCQkvKiBLZWVwIHRoZSBsb2NrIHVu dGlsIGNvbW1pdC4gKi8KKwkJdGFibGVfY2xvc2UobmV3UGFydFJlbCwgTm9Mb2NrKTsKKwl9 CisKKwkvKiBEcm9wIHNwbGl0IHBhcnRpdGlvbi4gKi8KKwlvYmplY3QuY2xhc3NJZCA9IFJl bGF0aW9uUmVsYXRpb25JZDsKKwlvYmplY3Qub2JqZWN0SWQgPSBzcGxpdFJlbE9pZDsKKwlv YmplY3Qub2JqZWN0U3ViSWQgPSAwOworCS8qIFByb2JhYmx5IERST1BfQ0FTQ0FERSBpcyBu b3QgbmVlZGVkLiAqLworCXBlcmZvcm1EZWxldGlvbigmb2JqZWN0LCBEUk9QX1JFU1RSSUNU LCAwKTsKKworCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5k ZXggZnVuY3Rpb25zLiAqLworCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2ZWwp OworCisJLyogUmVzdG9yZSB1c2VyaWQgYW5kIHNlY3VyaXR5IGNvbnRleHQuICovCisJU2V0 VXNlcklkQW5kU2VjQ29udGV4dChzYXZlX3VzZXJpZCwgc2F2ZV9zZWNfY29udGV4dCk7Cit9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueQppbmRleCBhNDZkNmM2ZWE2Li4yOTQxNmY2MGZkIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkKQEAgLTI1Nyw2ICsyNTcsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZp ZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwog CVBhcnRpdGlvbkVsZW0gKnBhcnRlbGVtOwogCVBhcnRpdGlvblNwZWMgKnBhcnRzcGVjOwog CVBhcnRpdGlvbkJvdW5kU3BlYyAqcGFydGJvdW5kc3BlYzsKKwlTaW5nbGVQYXJ0aXRpb25T cGVjICpzaW5nbGVwYXJ0c3BlYzsKIAlSb2xlU3BlYyAgICpyb2xlc3BlYzsKIAlQdWJsaWNh dGlvbk9ialNwZWMgKnB1YmxpY2F0aW9ub2JqZWN0c3BlYzsKIAlzdHJ1Y3QgU2VsZWN0TGlt aXQgKnNlbGVjdGxpbWl0OwpAQCAtNjQwLDYgKzY0MSw4IEBAIHN0YXRpYyBOb2RlICptYWtl UmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2Rl ICpxdWVyeSk7CiAldHlwZSA8cGFydGVsZW0+CXBhcnRfZWxlbQogJXR5cGUgPGxpc3Q+CQlw YXJ0X3BhcmFtcwogJXR5cGUgPHBhcnRib3VuZHNwZWM+IFBhcnRpdGlvbkJvdW5kU3BlYwor JXR5cGUgPHNpbmdsZXBhcnRzcGVjPglTaW5nbGVQYXJ0aXRpb25TcGVjCisldHlwZSA8bGlz dD4JCXBhcnRpdGlvbnNfbGlzdAogJXR5cGUgPGxpc3Q+CQloYXNoX3BhcnRib3VuZAogJXR5 cGUgPGRlZmVsdD4JCWhhc2hfcGFydGJvdW5kX2VsZW0KIApAQCAtNzcwLDcgKzc3Myw3IEBA IHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBM aXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJU0FWRVBPSU5UIFNDQUxBUiBTQ0hFTUEg U0NIRU1BUyBTQ1JPTEwgU0VBUkNIIFNFQ09ORF9QIFNFQ1VSSVRZIFNFTEVDVAogCVNFUVVF TkNFIFNFUVVFTkNFUwogCVNFUklBTElaQUJMRSBTRVJWRVIgU0VTU0lPTiBTRVNTSU9OX1VT RVIgU0VUIFNFVFMgU0VUT0YgU0hBUkUgU0hPVwotCVNJTUlMQVIgU0lNUExFIFNLSVAgU01B TExJTlQgU05BUFNIT1QgU09NRSBTT1VSQ0UgU1FMX1AgU1RBQkxFIFNUQU5EQUxPTkVfUAor CVNJTUlMQVIgU0lNUExFIFNLSVAgU01BTExJTlQgU05BUFNIT1QgU09NRSBTUExJVCBTT1VS Q0UgU1FMX1AgU1RBQkxFIFNUQU5EQUxPTkVfUAogCVNUQVJUIFNUQVRFTUVOVCBTVEFUSVNU SUNTIFNURElOIFNURE9VVCBTVE9SQUdFIFNUT1JFRCBTVFJJQ1RfUCBTVFJJTkdfUCBTVFJJ UF9QCiAJU1VCU0NSSVBUSU9OIFNVQlNUUklORyBTVVBQT1JUIFNZTU1FVFJJQyBTWVNJRCBT WVNURU1fUCBTWVNURU1fVVNFUgogCkBAIC0yMzU3LDYgKzIzNjAsMjMgQEAgYWx0ZXJfdGFi bGVfY21kczoKIAkJCXwgYWx0ZXJfdGFibGVfY21kcyAnLCcgYWx0ZXJfdGFibGVfY21kCXsg JCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAkJOwogCitwYXJ0aXRpb25zX2xpc3Q6CisJCQlT aW5nbGVQYXJ0aXRpb25TcGVjCQkJCQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJ fCBwYXJ0aXRpb25zX2xpc3QgJywnIFNpbmdsZVBhcnRpdGlvblNwZWMJeyAkJCA9IGxhcHBl bmQoJDEsICQzKTsgfQorCQk7CisKK1NpbmdsZVBhcnRpdGlvblNwZWM6CisJCQlQQVJUSVRJ T04gcXVhbGlmaWVkX25hbWUgUGFydGl0aW9uQm91bmRTcGVjCisJCQkJeworCQkJCQlTaW5n bGVQYXJ0aXRpb25TcGVjICpuID0gbWFrZU5vZGUoU2luZ2xlUGFydGl0aW9uU3BlYyk7CisK KwkJCQkJbi0+bmFtZSA9ICQyOworCQkJCQluLT5ib3VuZCA9ICQzOworCisJCQkJCSQkID0g bjsKKwkJCQl9CisJCTsKKwogcGFydGl0aW9uX2NtZDoKIAkJCS8qIEFMVEVSIFRBQkxFIDxu YW1lPiBBVFRBQ0ggUEFSVElUSU9OIDx0YWJsZV9uYW1lPiBGT1IgVkFMVUVTICovCiAJCQlB VFRBQ0ggUEFSVElUSU9OIHF1YWxpZmllZF9uYW1lIFBhcnRpdGlvbkJvdW5kU3BlYwpAQCAt MjQwMSw2ICsyNDIxLDIwIEBAIHBhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPmRlZiA9IChOb2Rl ICopIGNtZDsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KKwkJCS8qIEFMVEVSIFRB QkxFIDxuYW1lPiBTUExJVCBQQVJUSVRJT04gPHBhcnRpdGlvbl9uYW1lPiBJTlRPICgpICov CisJCQl8IFNQTElUIFBBUlRJVElPTiBxdWFsaWZpZWRfbmFtZSBJTlRPICcoJyBwYXJ0aXRp b25zX2xpc3QgJyknCisJCQkJeworCQkJCQlBbHRlclRhYmxlQ21kICpuID0gbWFrZU5vZGUo QWx0ZXJUYWJsZUNtZCk7CisJCQkJCVBhcnRpdGlvbkNtZCAqY21kID0gbWFrZU5vZGUoUGFy dGl0aW9uQ21kKTsKKworCQkJCQluLT5zdWJ0eXBlID0gQVRfU3BsaXRQYXJ0aXRpb247CisJ CQkJCWNtZC0+bmFtZSA9ICQzOworCQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJY21k LT5wYXJ0bGlzdCA9ICQ2OworCQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKKwkJCQkJ bi0+ZGVmID0gKE5vZGUgKikgY21kOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQog CQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IE1FUkdFIFBBUlRJVElPTlMgKCkgSU5UTyA8cGFy dGl0aW9uX25hbWU+ICovCiAJCQl8IE1FUkdFIFBBUlRJVElPTlMgJygnIHF1YWxpZmllZF9u YW1lX2xpc3QgJyknIElOVE8gcXVhbGlmaWVkX25hbWUKIAkJCQl7CkBAIC0xODAxNyw2ICsx ODA1MSw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgU0tJUAogCQkJfCBTTkFQU0hP VAogCQkJfCBTT1VSQ0UKKwkJCXwgU1BMSVQKIAkJCXwgU1FMX1AKIAkJCXwgU1RBQkxFCiAJ CQl8IFNUQU5EQUxPTkVfUApAQCAtMTg2NTcsNiArMTg2OTIsNyBAQCBiYXJlX2xhYmVsX2tl eXdvcmQ6CiAJCQl8IFNOQVBTSE9UCiAJCQl8IFNPTUUKIAkJCXwgU09VUkNFCisJCQl8IFNQ TElUCiAJCQl8IFNRTF9QCiAJCQl8IFNUQUJMRQogCQkJfCBTVEFOREFMT05FX1AKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4IDU2NGJhNTViNmQuLjk1ZDQ0ZmE3MWMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtMTM3LDcgKzEzNyw3IEBA IHN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbnN0cmFpbnRBdHRycyhDcmVhdGVTdG10Q29udGV4 dCAqY3h0LAogCQkJCQkJCQkJIExpc3QgKmNvbnN0cmFpbnRMaXN0KTsKIHN0YXRpYyB2b2lk IHRyYW5zZm9ybUNvbHVtblR5cGUoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgQ29sdW1uRGVm ICpjb2x1bW4pOwogc3RhdGljIHZvaWQgc2V0U2NoZW1hTmFtZShjb25zdCBjaGFyICpjb250 ZXh0X3NjaGVtYSwgY2hhciAqKnN0bXRfc2NoZW1hX25hbWUpOwotc3RhdGljIHZvaWQgdHJh bnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNt ZCAqY21kKTsKK3N0YXRpYyB2b2lkIHRyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10 Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kKTsKIHN0YXRpYyBMaXN0 ICp0cmFuc2Zvcm1QYXJ0aXRpb25SYW5nZUJvdW5kcyhQYXJzZVN0YXRlICpwc3RhdGUsIExp c3QgKmJsaXN0LAogCQkJCQkJCQkJCSAgIFJlbGF0aW9uIHBhcmVudCk7CiBzdGF0aWMgdm9p ZCB2YWxpZGF0ZUluZmluaXRlQm91bmRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqYmxp c3QpOwpAQCAtMzUxNSw5ICszNTE1LDExIEBAIHRyYW5zZm9ybVJ1bGVTdG10KFJ1bGVTdG10 ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIC8qCiAgKiBjaGVja1BhcnRpdGlv bgogICogQ2hlY2sgd2hldGhlciBwYXJ0UmVsT2lkIGlzIGEgbGVhZiBwYXJ0aXRpb24gb2Yg dGhlIHBhcmVudCB0YWJsZSAocmVsKS4KKyAqIGlzX21lcmdlOiB0cnVlIGluZGljYXRlcyB0 aGUgb3BlcmF0aW9uIGlzICJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyI7Cisg KiBmYWxzZSBpbmRpY2F0ZXMgdGhlIG9wZXJhdGlvbiBpcyAiQUxURVIgVEFCTEUgLi4uIFNQ TElUIFBBUlRJVElPTlMiLgogICovCiBzdGF0aWMgdm9pZAotY2hlY2tQYXJ0aXRpb24oUmVs YXRpb24gcmVsLCBPaWQgcGFydFJlbE9pZCkKK2NoZWNrUGFydGl0aW9uKFJlbGF0aW9uIHJl bCwgT2lkIHBhcnRSZWxPaWQsIGJvb2wgaXNfbWVyZ2UpCiB7CiAJUmVsYXRpb24JcGFydFJl bDsKIApAQCAtMzUyNywyNSArMzUyOSwxNzUgQEAgY2hlY2tQYXJ0aXRpb24oUmVsYXRpb24g cmVsLCBPaWQgcGFydFJlbE9pZCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQllcnJjb2RlKEVS UkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAogCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBh IHRhYmxlIiwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocGFydFJlbCkpLAotCQkJCWVycmhp bnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBh cnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucyIpKTsKKwkJCQlpc19tZXJnZQor CQkJCT8gZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9u bHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikKKwkJCQk6 IGVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT05TIGNhbiBvbmx5IHNw bGl0IHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucyIpKTsKIAogCWlmICgh cGFydFJlbC0+cmRfcmVsLT5yZWxpc3BhcnRpdGlvbikKIAkJZXJlcG9ydChFUlJPUiwKIAkJ CQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAogCQkJCWVycm1zZygiXCIl c1wiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSBcIiVzXCIiLAog CQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJ0UmVsKSwgUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocmVsKSksCi0JCQkJZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1FUkdF IFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1w YXJ0aXRpb25zIikpOworCQkJCWlzX21lcmdlCisJCQkJPyBlcnJoaW50KCJBTFRFUiBUQUJM RSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0 IGhhdmUgc3ViLXBhcnRpdGlvbnMiKQorCQkJCTogZXJyaGludCgiQUxURVIgVEFCTEUgLi4u IFNQTElUIFBBUlRJVElPTlMgY2FuIG9ubHkgc3BsaXQgcGFydGl0aW9ucyBkb24ndCBoYXZl IHN1Yi1wYXJ0aXRpb25zIikpOwogCiAJaWYgKGdldF9wYXJ0aXRpb25fcGFyZW50KHBhcnRS ZWxPaWQsIGZhbHNlKSAhPSBSZWxhdGlvbkdldFJlbGlkKHJlbCkpCiAJCWVyZXBvcnQoRVJS T1IsCiAJCQkJZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9UQUJMRSksCiAJCQkJZXJybXNn KCJyZWxhdGlvbiBcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uIFwiJXNc IiIsCiAJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcnRSZWwpLCBSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShyZWwpKSwKLQkJCQllcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4g TUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUg c3ViLXBhcnRpdGlvbnMiKSk7CisJCQkJaXNfbWVyZ2UKKwkJCQk/IGVycmhpbnQoIkFMVEVS IFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMg ZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucyIpCisJCQkJOiBlcnJoaW50KCJBTFRFUiBUQUJM RSAuLi4gU1BMSVQgUEFSVElUSU9OUyBjYW4gb25seSBzcGxpdCBwYXJ0aXRpb25zIGRvbid0 IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7CiAKIAl0YWJsZV9jbG9zZShwYXJ0UmVsLCBOb0xv Y2spOwogfQogCisvKgorICogdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yU3BsaXQKKyAqCQlB bmFseXplIHRoZSBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQKKyAq CisgKiBGb3IgZWFjaCBuZXcgcGFydGl0aW9uIHNwcy0+Ym91bmQgaXMgc2V0IHRvIHRoZSB0 cmFuc2Zvcm1lZCB2YWx1ZSBvZiBib3VuZC4KKyAqIERvZXMgY2hlY2tzIGZvciBib3VuZHMg b2YgbmV3IHBhcnRpdGlvbnMuCisgKi8KK3N0YXRpYyB2b2lkCit0cmFuc2Zvcm1QYXJ0aXRp b25DbWRGb3JTcGxpdChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKnBh cnRjbWQpCit7CisJUmVsYXRpb24JcGFyZW50ID0gY3h0LT5yZWw7CisJUGFydGl0aW9uS2V5 IGtleTsKKwljaGFyCQlzdHJhdGVneTsKKwlPaWQJCQlzcGxpdFBhcnRPaWQ7CisJT2lkCQkJ ZGVmYXVsdFBhcnRPaWQ7CisJaW50CQkJZGVmYXVsdF9pbmRleCA9IC0xOworCWJvb2wJCWlz U3BsaXRQYXJ0RGVmYXVsdDsKKwlMaXN0Q2VsbCAgICpsaXN0cHRyLAorCQkJICAgKmxpc3Rw dHIyOworCUxpc3QJICAgKnNwbGl0bGlzdDsKKworCXNwbGl0bGlzdCA9IHBhcnRjbWQtPnBh cnRsaXN0OworCWtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJc3Ry YXRlZ3kgPSBnZXRfcGFydGl0aW9uX3N0cmF0ZWd5KGtleSk7CisJZGVmYXVsdFBhcnRPaWQg PSBnZXRfZGVmYXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlvbkRl c2MocGFyZW50LCB0cnVlKSk7CisKKwkvKiBUcmFuc2Zvcm0gcGFydGl0aW9uIGJvdW5kcyBm b3IgYWxsIHBhcnRpdGlvbnMgaW4gdGhlIGxpc3Q6ICovCisJZm9yZWFjaF9ub2RlKFNpbmds ZVBhcnRpdGlvblNwZWMsIHNwcywgc3BsaXRsaXN0KQorCXsKKwkJY3h0LT5wYXJ0Ym91bmQg PSBOVUxMOworCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoY3h0LCBzcHMtPmJvdW5kKTsKKwkJ LyogQXNzaWduIHRyYW5zZm9ybWVkIHZhbHVlIG9mIHRoZSBwYXJ0aXRpb24gYm91bmQuICov CisJCXNwcy0+Ym91bmQgPSBjeHQtPnBhcnRib3VuZDsKKwl9CisKKwkvKgorCSAqIE9wZW4g YW5kIGxvY2sgcGFydGl0aW9uLCBjaGVjayBvd25lcnNoaXAgYWxvbmcgdGhlIHdheS4gV2Ug bmVlZCB0byB1c2UKKwkgKiBBY2Nlc3NFeGNsdXNpdmVMb2NrIGhlcmUsIGJlY2F1c2UgdGhp cyBzcGxpdCBwYXJ0aXRpb24gd2lsbCBiZSBkZXRhY2hlZAorCSAqIHRoZW4gZHJvcHBlZCBp biBBVEV4ZWNTcGxpdFBhcnRpdGlvbi4KKwkgKi8KKwlzcGxpdFBhcnRPaWQgPSBSYW5nZVZh ckdldFJlbGlkRXh0ZW5kZWQocGFydGNtZC0+bmFtZSwgQWNjZXNzRXhjbHVzaXZlTG9jaywK KwkJCQkJCQkJCQkJMCwgUmFuZ2VWYXJDYWxsYmFja093bnNSZWxhdGlvbiwKKwkJCQkJCQkJ CQkJTlVMTCk7CisKKwljaGVja1BhcnRpdGlvbihwYXJlbnQsIHNwbGl0UGFydE9pZCwgZmFs c2UpOworCisJc3dpdGNoIChzdHJhdGVneSkKKwl7CisJCWNhc2UgUEFSVElUSU9OX1NUUkFU RUdZX0xJU1Q6CisJCWNhc2UgUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFOgorCQkJeworCQkJ CWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRpb25TcGVjLCBzcHMsIHNwbGl0bGlzdCkKKwkJ CQl7CisJCQkJCWlmIChzcHMtPmJvdW5kLT5pc19kZWZhdWx0KQorCQkJCQl7CisJCQkJCQlp ZiAoZGVmYXVsdF9pbmRleCAhPSAtMSkKKwkJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJ CQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJ CQkJZXJybXNnKCJERUZBVUxUIHBhcnRpdGlvbiBzaG91bGQgYmUgb25lIiksCisJCQkJCQkJ CQlwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIHNwcy0+bmFtZS0+bG9jYXRpb24p KTsKKworCQkJCQkJZGVmYXVsdF9pbmRleCA9IGZvcmVhY2hfY3VycmVudF9pbmRleChzcHMp OworCQkJCQl9CisJCQkJfQorCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBQQVJUSVRJT05f U1RSQVRFR1lfSEFTSDoKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQllcnJtc2coInBhcnRpdGlvbiBvZiBo YXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBzcGxpdCIpKTsKKwkJCWJyZWFrOwor CisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBwYXJ0aXRpb24gc3Ry YXRlZ3k6ICVkIiwKKwkJCQkgKGludCkga2V5LT5zdHJhdGVneSk7CisJCQlicmVhazsKKwl9 CisKKwkvKiBpc1NwbGl0UGFydERlZmF1bHQ6IGlzIHRoZSBiZWluZyBzcGxpdCBwYXJ0aXRp b24gYSBERUZBVUxUIHBhcnRpdGlvbj8gKi8KKwlpc1NwbGl0UGFydERlZmF1bHQgPSAoZGVm YXVsdFBhcnRPaWQgPT0gc3BsaXRQYXJ0T2lkKTsKKworCWlmIChpc1NwbGl0UGFydERlZmF1 bHQgJiYgZGVmYXVsdF9pbmRleCA9PSAtMSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJZXJybXNnKCJj YW4gbm90IHNwbGl0IERFRkFVTFQgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCSAgIGdldF9y ZWxfbmFtZShzcGxpdFBhcnRPaWQpKSwKKwkJCQllcnJoaW50KCJUbyBzcGxpdCBERUZBVUxU IHBhcnRpdGlvbiBvbmUgb2YgdGhlIG5ldyBwYXJ0aXRpb24gbXN1dCBiZSBERUZBVUxUIiks CisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCAoKFNpbmdsZVBhcnRpdGlv blNwZWMgKikgbGluaXRpYWwoc3BsaXRsaXN0KSktPm5hbWUtPmxvY2F0aW9uKSk7CisKKwkv KgorCSAqIElmIHRoZSBwYXJ0aXRpb24gYmVpbmcgc3BsaXQgaXMgbm90IERFRkFVTFQgYW5k IERFRkFVTFQgcGFydGl0aW9uCisJICogZXhpc3RzLCB0aGVuIHRoZSByZXN1bHRpbmcgc3Bs aXQgcGFydGl0aW9ucyBjYW5ub3QgYmUgREVGQVVMVC4KKwkgKi8KKwlpZiAoIWlzU3BsaXRQ YXJ0RGVmYXVsdCAmJiAoZGVmYXVsdF9pbmRleCAhPSAtMSkgJiYgT2lkSXNWYWxpZChkZWZh dWx0UGFydE9pZCkpCisJeworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHNEZWYgPQorCQkJ KFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGlzdF9udGgoc3BsaXRsaXN0LCBkZWZhdWx0X2lu ZGV4KTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coImNhbiBub3Qgc3BsaXQgbm9uLURF RkFVTFQgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCSAgIGdldF9yZWxfbmFtZShzcGxpdFBh cnRPaWQpKSwKKwkJCQllcnJtc2coIm5ldyBwYXJ0aXRpb24gY2Fubm90IGJlIERFRkFVTFQg YmVjYXVzZSBERUZBVUxUIHBhcnRpdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLAorCQkJ CQkgICBnZXRfcmVsX25hbWUoZGVmYXVsdFBhcnRPaWQpKSwKKwkJCQlwYXJzZXJfZXJycG9z aXRpb24oY3h0LT5wc3RhdGUsIHNwc0RlZi0+bmFtZS0+bG9jYXRpb24pKTsKKwl9CisKKwlm b3JlYWNoKGxpc3RwdHIsIHNwbGl0bGlzdCkKKwl7CisJCU9pZAkJCW5zcGlkOworCQlTaW5n bGVQYXJ0aXRpb25TcGVjICpzcHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsZmlyc3Qo bGlzdHB0cik7CisJCVJhbmdlVmFyICAgKm5hbWUgPSBzcHMtPm5hbWU7CisKKwkJbnNwaWQg PSBSYW5nZVZhckdldENyZWF0aW9uTmFtZXNwYWNlKHNwcy0+bmFtZSk7CisKKwkJLyogUGFy dGl0aW9ucyBpbiB0aGUgbGlzdCBzaG91bGQgaGF2ZSBkaWZmZXJlbnQgbmFtZXMuICovCisJ CWZvcl9lYWNoX2NlbGwobGlzdHB0cjIsIHNwbGl0bGlzdCwgbG5leHQoc3BsaXRsaXN0LCBs aXN0cHRyKSkKKwkJeworCQkJT2lkCQkJbnNwaWQyOworCQkJU2luZ2xlUGFydGl0aW9uU3Bl YyAqc3BzMiA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChsaXN0cHRyMik7CisJ CQlSYW5nZVZhciAgICpuYW1lMiA9IHNwczItPm5hbWU7CisKKwkJCWlmIChlcXVhbChuYW1l LCBuYW1lMikpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9E VVBMSUNBVEVfVEFCTEUpLAorCQkJCQkJZXJybXNnKCJwYXJ0aXRpb24gd2l0aCBuYW1lIFwi JXNcIiBpcyBhbHJlYWR5IHVzZWQiLCBuYW1lLT5yZWxuYW1lKSwKKwkJCQkJCXBhcnNlcl9l cnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgbmFtZTItPmxvY2F0aW9uKSk7CisKKwkJCW5zcGlk MiA9IFJhbmdlVmFyR2V0Q3JlYXRpb25OYW1lc3BhY2Uoc3BzMi0+bmFtZSk7CisKKwkJCWlm IChuc3BpZDIgPT0gbnNwaWQgJiYgc3RyY21wKG5hbWUtPnJlbG5hbWUsIG5hbWUyLT5yZWxu YW1lKSA9PSAwKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVf RFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJCWVycm1zZygicGFydGl0aW9uIHdpdGggbmFtZSBc IiVzXCIgaXMgYWxyZWFkeSB1c2VkIiwgbmFtZS0+cmVsbmFtZSksCisJCQkJCQlwYXJzZXJf ZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIG5hbWUyLT5sb2NhdGlvbikpOworCQl9CisJfQor CisJLyogVGhlbiB3ZSBzaG91bGQgY2hlY2sgcGFydGl0aW9ucyB3aXRoIHRyYW5zZm9ybWVk IGJvdW5kcy4gKi8KKwljaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdChwYXJlbnQsIHNwbGl0 UGFydE9pZCwgc3BsaXRsaXN0LCBjeHQtPnBzdGF0ZSk7Cit9CisKKwogLyoKICAqIHRyYW5z Zm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlCiAgKgkJQW5hbHl6ZSB0aGUgQUxURVIgVEFCTEUg Li4uIE1FUkdFIFBBUlRJVElPTlMgY29tbWFuZApAQCAtMzYyMiw3ICszNzc0LDcgQEAgdHJh bnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFy dGl0aW9uQ21kICpwYXJ0Y21kKQogCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0 YXRlLCBuYW1lLT5sb2NhdGlvbikpOwogCQl9CiAKLQkJY2hlY2tQYXJ0aXRpb24ocGFyZW50 LCBwYXJ0T2lkKTsKKwkJY2hlY2tQYXJ0aXRpb24ocGFyZW50LCBwYXJ0T2lkLCB0cnVlKTsK IAogCQlwYXJ0T2lkcyA9IGxhcHBlbmRfb2lkKHBhcnRPaWRzLCBwYXJ0T2lkKTsKIAl9CkBA IC0zOTEwLDcgKzQwNjIsNyBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChPaWQgcmVsaWQs IEFsdGVyVGFibGVTdG10ICpzdG10LAogCQkJCXsKIAkJCQkJUGFydGl0aW9uQ21kICpwYXJ0 Y21kID0gKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZjsKIAotCQkJCQl0cmFuc2Zvcm1QYXJ0 aXRpb25DbWQoJmN4dCwgcGFydGNtZCk7CisJCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZCgm Y3h0LCBwYXJ0Y21kLT5ib3VuZCk7CiAJCQkJCS8qIGFzc2lnbiB0cmFuc2Zvcm1lZCB2YWx1 ZSBvZiB0aGUgcGFydGl0aW9uIGJvdW5kICovCiAJCQkJCXBhcnRjbWQtPmJvdW5kID0gY3h0 LnBhcnRib3VuZDsKIAkJCQl9CkBAIC0zOTMyLDYgKzQwODQsMjAgQEAgdHJhbnNmb3JtQWx0 ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3RtdCAqc3RtdCwKIAkJCQkJYnJl YWs7CiAJCQkJfQogCisJCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJCXsKKwkJCQkJ UGFydGl0aW9uQ21kICpwYXJ0Y21kID0gKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZjsKKwor CQkJCQlpZiAobGlzdF9sZW5ndGgocGFydGNtZC0+cGFydGxpc3QpIDwgMikKKwkJCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9E RUZJTklUSU9OKSwKKwkJCQkJCQkJZXJybXNnKCJsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNo b3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBwYXJ0aXRpb25zIikpOworCisJCQkJCXRyYW5z Zm9ybVBhcnRpdGlvbkNtZEZvclNwbGl0KCZjeHQsIHBhcnRjbWQpOworCQkJCQluZXdjbWRz ID0gbGFwcGVuZChuZXdjbWRzLCBjbWQpOworCQkJCQlicmVhazsKKwkJCQl9CisKIAkJCWRl ZmF1bHQ6CiAKIAkJCQkvKgpAQCAtNDM2MiwxMyArNDUyOCwxMyBAQCBzZXRTY2hlbWFOYW1l KGNvbnN0IGNoYXIgKmNvbnRleHRfc2NoZW1hLCBjaGFyICoqc3RtdF9zY2hlbWFfbmFtZSkK IAogLyoKICAqIHRyYW5zZm9ybVBhcnRpdGlvbkNtZAotICoJCUFuYWx5emUgdGhlIEFUVEFD SC9ERVRBQ0ggUEFSVElUSU9OIGNvbW1hbmQKKyAqCQlBbmFseXplIHRoZSBBVFRBQ0gvREVU QUNIL1NQTElUIFBBUlRJVElPTiBjb21tYW5kCiAgKgotICogSW4gY2FzZSBvZiB0aGUgQVRU QUNIIFBBUlRJVElPTiBjb21tYW5kLCBjeHQtPnBhcnRib3VuZCBpcyBzZXQgdG8gdGhlCi0g KiB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiBjbWQtPmJvdW5kLgorICogSW4gY2FzZSBvZiB0aGUg QVRUQUNIL1NQTElUIFBBUlRJVElPTiBjb21tYW5kLCBjeHQtPnBhcnRib3VuZCBpcyBzZXQg dG8gdGhlCisgKiB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiBib3VuZC4KICAqLwogc3RhdGljIHZv aWQKLXRyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0 aXRpb25DbWQgKmNtZCkKK3RyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4 dCAqY3h0LCBQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kKQogewogCVJlbGF0aW9uCXBhcmVu dFJlbCA9IGN4dC0+cmVsOwogCkBAIC00Mzc3LDkgKzQ1NDMsOSBAQCB0cmFuc2Zvcm1QYXJ0 aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQpCiAJ CWNhc2UgUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRToKIAkJCS8qIHRyYW5zZm9ybSB0aGUg cGFydGl0aW9uIGJvdW5kLCBpZiBhbnkgKi8KIAkJCUFzc2VydChSZWxhdGlvbkdldFBhcnRp dGlvbktleShwYXJlbnRSZWwpICE9IE5VTEwpOwotCQkJaWYgKGNtZC0+Ym91bmQgIT0gTlVM TCkKKwkJCWlmIChib3VuZCAhPSBOVUxMKQogCQkJCWN4dC0+cGFydGJvdW5kID0gdHJhbnNm b3JtUGFydGl0aW9uQm91bmQoY3h0LT5wc3RhdGUsIHBhcmVudFJlbCwKLQkJCQkJCQkJCQkJ CQkJIGNtZC0+Ym91bmQpOworCQkJCQkJCQkJCQkJCQkgYm91bmQpOwogCQkJYnJlYWs7CiAJ CWNhc2UgUkVMS0lORF9QQVJUSVRJT05FRF9JTkRFWDoKIApAQCAtNDM4Nyw3ICs0NTUzLDcg QEAgdHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRp dGlvbkNtZCAqY21kKQogCQkJICogQSBwYXJ0aXRpb25lZCBpbmRleCBjYW5ub3QgaGF2ZSBh IHBhcnRpdGlvbiBib3VuZCBzZXQuICBBTFRFUgogCQkJICogSU5ERVggcHJldmVudHMgdGhh dCB3aXRoIGl0cyBncmFtbWFyLCBidXQgbm90IEFMVEVSIFRBQkxFLgogCQkJICovCi0JCQlp ZiAoY21kLT5ib3VuZCAhPSBOVUxMKQorCQkJaWYgKGJvdW5kICE9IE5VTEwpCiAJCQkJZXJl cG9ydChFUlJPUiwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVG SU5JVElPTiksCiAJCQkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9uZWQg dGFibGUiLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3Vu ZHMuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKaW5kZXggNjBj MTAzNmNlOC4uZGFlYjI5ZDJjMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9u aW5nL3BhcnRib3VuZHMuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJv dW5kcy5jCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3JlbGF0aW9uLmgi CiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0u aCIKKyNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGFydGl0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19pbmhlcml0cy5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgpAQCAtNDk4NCwxNSArNDk4NSwyMyBAQCBzYXRpc2Zp ZXNfaGFzaF9wYXJ0aXRpb24oUEdfRlVOQ1RJT05fQVJHUykKICAqCiAgKiAoZnVuY3Rpb24g Zm9yIEJZIFJBTkdFIHBhcnRpdGlvbmluZykKICAqCi0gKiBUaGlzIGlzIGEgaGVscGVyIGZ1 bmN0aW9uIGZvciBjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZSgpLgorICog VGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgY2hlY2tfcGFydGl0aW9uc19mb3Jfc3Bs aXQoKSBhbmQKKyAqIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKCkuCiAg KiBUaGlzIGZ1bmN0aW9uIGNvbXBhcmVzIHVwcGVyIGJvdW5kIG9mIGZpcnN0X2JvdW5kIGFu ZCBsb3dlciBib3VuZCBvZgotICogc2Vjb25kX2JvdW5kLiBUaGVzZSBib3VuZHMgc2hvdWxk IGJlIGVxdWFsLgorICogc2Vjb25kX2JvdW5kLiBUaGVzZSBib3VuZHMgc2hvdWxkIGJlIGVx dWFsIGV4Y2VwdCB3aGVuCisgKiAiZGVmYXVsdFBhcnQgPT0gdHJ1ZSIgKHRoaXMgbWVhbnMg dGhhdCBvbmUgb2Ygc3BsaXQgcGFydGl0aW9ucyBpcyBERUZBVUxUKS4KKyAqIEluIHRoaXMg Y2FzZSB1cHBlciBib3VuZCBvZiBmaXJzdF9ib3VuZCBjYW4gYmUgbGVzcyB0aGFuIGxvd2Vy IGJvdW5kIG9mCisgKiBzZWNvbmRfYm91bmQgYmVjYXVzZSBzcGFjZSBiZXR3ZWVuIHRoZXNl IGJvdW5kcyB3aWxsIGJlIGluY2x1ZGVkIGluCisgKiBERUZBVUxUIHBhcnRpdGlvbi4KICAq CiAgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKICAqIGZpcnN0X25hbWU6CQluYW1l IG9mIGZpcnN0IHBhcnRpdGlvbgogICogZmlyc3RfYm91bmQ6CQlib3VuZCBvZiBmaXJzdCBw YXJ0aXRpb24KICAqIHNlY29uZF9uYW1lOgkJbmFtZSBvZiBzZWNvbmQgcGFydGl0aW9uCiAg KiBzZWNvbmRfYm91bmQ6CWJvdW5kIG9mIHNlY29uZCBwYXJ0aXRpb24KKyAqIGRlZmF1bHRQ YXJ0OgkJdHJ1ZSBpZiBvbmUgb2YgbmV3IHBhcnRpdGlvbnMgaXMgREVGQVVMVAorICogaXNf bWVyZ2U6ICAgICAgICB0cnVlIGluZGljYXRlcyB0aGUgb3BlcmF0aW9uIGlzIE1FUkdFIFBB UlRJVElPTlM7CisgKiAJCQkJCWZhbHNlIGluZGljYXRlcyB0aGUgb3BlcmF0aW9uIGlzIFNQ TElUIFBBUlRJVElPTi4KICAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3Ry dWN0IGZvciBkZXRlcm1pbmluZyBlcnJvciBwb3NpdGlvbgogICovCiBzdGF0aWMgdm9pZApA QCAtNTAwMSw2ICs1MDEwLDggQEAgY2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3Jhbmdl KFJlbGF0aW9uIHBhcmVudCwKIAkJCQkJCQkJICBQYXJ0aXRpb25Cb3VuZFNwZWMgKmZpcnN0 X2JvdW5kLAogCQkJCQkJCQkgIFJhbmdlVmFyICpzZWNvbmRfbmFtZSwKIAkJCQkJCQkJICBQ YXJ0aXRpb25Cb3VuZFNwZWMgKnNlY29uZF9ib3VuZCwKKwkJCQkJCQkJICBib29sIGRlZmF1 bHRQYXJ0LAorCQkJCQkJCQkgIGJvb2wgaXNfbWVyZ2UsCiAJCQkJCQkJCSAgUGFyc2VTdGF0 ZSAqcHN0YXRlKQogewogCVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlv bktleShwYXJlbnQpOwpAQCAtNTAyMiwxOCArNTAzMywyOCBAQCBjaGVja190d29fcGFydGl0 aW9uc19ib3VuZHNfcmFuZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJCQkJCQkgIGtleS0+cGFy dGNvbGxhdGlvbiwKIAkJCQkJCQkJICBzZWNvbmRfbG93ZXItPmRhdHVtcywgc2Vjb25kX2xv d2VyLT5raW5kLAogCQkJCQkJCQkgIGZhbHNlLCBmaXJzdF91cHBlcik7Ci0JaWYgKGNtcHZh bCkKKwlpZiAoKCFkZWZhdWx0UGFydCAmJiBjbXB2YWwpIHx8IChkZWZhdWx0UGFydCAmJiBj bXB2YWwgPCAwKSkKIAl7CiAJCVBhcnRpdGlvblJhbmdlRGF0dW0gKmRhdHVtID0gbGluaXRp YWwoc2Vjb25kX2JvdW5kLT5sb3dlcmRhdHVtcyk7CiAKLQkJZXJlcG9ydChFUlJPUiwKLQkJ CQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCi0JCQkJZXJy bXNnKCJjYW4gbm90IG1lcmdlIHBhcnRpdGlvbiBcIiVzXCIgdG9nZXRoZXIgd2l0aCBwYXJ0 aXRpb24gXCIlc1wiIiwKLQkJCQkJICAgc2Vjb25kX25hbWUtPnJlbG5hbWUsIGZpcnN0X25h bWUtPnJlbG5hbWUpLAotCQkJCWVycmRldGFpbCgibG93ZXIgYm91bmQgb2YgcGFydGl0aW9u IFwiJXNcIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiBc IiVzXCIiLAotCQkJCQkJICBzZWNvbmRfbmFtZS0+cmVsbmFtZSwgZmlyc3RfbmFtZS0+cmVs bmFtZSksCi0JCQkJZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMg cmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNlbnQuIiksCi0JCQkJ cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSk7CisJCWlmIChp c19tZXJnZSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZB TElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJZXJybXNnKCJjYW4gbm90IG1lcmdlIHBh cnRpdGlvbiBcIiVzXCIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJ CSAgIHNlY29uZF9uYW1lLT5yZWxuYW1lLCBmaXJzdF9uYW1lLT5yZWxuYW1lKSwKKwkJCQkJ ZXJyZGV0YWlsKCJsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGlzIG5vdCBlcXVh bCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCQkJICBz ZWNvbmRfbmFtZS0+cmVsbmFtZSwgZmlyc3RfbmFtZS0+cmVsbmFtZSksCisJCQkJCWVycmhp bnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0 aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LiIpLAorCQkJCQlwYXJzZXJfZXJycG9zaXRp b24ocHN0YXRlLCBkYXR1bS0+bG9jYXRpb24pKTsKKwkJZWxzZQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAor CQkJCQllcnJtc2coImNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uIFwiJXNcIiB0b2dldGhl ciB3aXRoIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJICAgc2Vjb25kX25hbWUtPnJlbG5h bWUsIGZpcnN0X25hbWUtPnJlbG5hbWUpLAorCQkJCQllcnJkZXRhaWwoImxvd2VyIGJvdW5k IG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBv ZiBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJCQkgIHNlY29uZF9uYW1lLT5yZWxuYW1lLCBm aXJzdF9uYW1lLT5yZWxuYW1lKSwKKwkJCQkJZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIFNQ TElUIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRq YWNlbnQuIiksCisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2Nh dGlvbikpOwogCX0KIH0KIApAQCAtNTEzNiw2ICs1MTU3LDggQEAgY2FsY3VsYXRlX3BhcnRp dGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJCQkJCQkJCQkJCSAg KFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIHByZXZfaW5kZXgpLAog CQkJCQkJCQkJCQkJCSAgKFJhbmdlVmFyICopIGxpc3RfbnRoKHBhcnROYW1lcywgaW5kZXgp LAogCQkJCQkJCQkJCQkJCSAgKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3Vu ZHMsIGluZGV4KSwKKwkJCQkJCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCQkJCQkJCSAgdHJ1 ZSwKIAkJCQkJCQkJCQkJCQkgIHBzdGF0ZSk7CiAJCQkJfQogCkBAIC01MTc0LDMgKzUxOTcs NjIxIEBAIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKFJlbGF0aW9uIHBh cmVudCwKIAkJCQkgKGludCkga2V5LT5zdHJhdGVneSk7CiAJfQogfQorCisvKgorICogY2hl Y2tfcGFydGl0aW9uc19ub3Rfb3ZlcmxhcF9saXN0CisgKgorICogKGZ1bmN0aW9uIGZvciBC WSBMSVNUIHBhcnRpdGlvbmluZykKKyAqCisgKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9u IGZvciBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdCgpLgorICogQ2hlY2tzIHRoYXQgdGhl IHZhbHVlcyBvZiB0aGUgbmV3IHBhcnRpdGlvbnMgZG8gbm90IG92ZXJsYXAuCisgKgorICog cGFyZW50OglwYXJ0aXRpb25lZCB0YWJsZQorICogcGFydHM6CWFycmF5IG9mIFNpbmdsZVBh cnRpdGlvblNwZWMgc3RydWN0cyB3aXRoIGluZm8gYWJvdXQgc3BsaXQgcGFydGl0aW9ucwor ICogbnBhcnRzOglzaXplIG9mIGFycmF5ICJwYXJ0cyIKKyAqLworc3RhdGljIHZvaWQKK2No ZWNrX3BhcnRpdGlvbnNfbm90X292ZXJsYXBfbGlzdChSZWxhdGlvbiBwYXJlbnQsCisJCQkJ CQkJCSAgU2luZ2xlUGFydGl0aW9uU3BlYyAqKnBhcnRzLAorCQkJCQkJCQkgIGludCBucGFy dHMsCisJCQkJCQkJCSAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBr ZXkgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXko cGFyZW50KTsKKwlpbnQJCQlpLAorCQkJCWo7CisJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3Bz MSwKKwkJCSAgICpzcHMyOworCUxpc3QJICAgKm92ZXJsYXA7CisKKwlBc3NlcnQoa2V5LT5z dHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisKKwlmb3IgKGkgPSAwOyBp IDwgbnBhcnRzOyBpKyspCisJeworCQlzcHMxID0gcGFydHNbaV07CisKKwkJZm9yIChqID0g aSArIDE7IGogPCBucGFydHM7IGorKykKKwkJeworCQkJc3BzMiA9IHBhcnRzW2pdOworCisJ CQkvKgorCQkJICogQ2FsY3VsYXRlIGludGVyc2VjdGlvbiBiZXR3ZWVuIHZhbHVlcyBvZiB0 d28gcGFydGl0aW9ucy4KKwkJCSAqLworCQkJb3ZlcmxhcCA9IGxpc3RfaW50ZXJzZWN0aW9u KHNwczEtPmJvdW5kLT5saXN0ZGF0dW1zLAorCQkJCQkJCQkJCXNwczItPmJvdW5kLT5saXN0 ZGF0dW1zKTsKKwkJCWlmIChsaXN0X2xlbmd0aChvdmVybGFwKSA+IDApCisJCQl7CisJCQkJ Q29uc3QJICAgKnZhbCA9IChDb25zdCAqKSBsZmlyc3QobGlzdF9oZWFkKG92ZXJsYXApKTsK KworCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9P QkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQllcnJtc2coIm5ldyBwYXJ0aXRpb24gXCIlc1wi IHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJ CQkJCQkgICBzcHMxLT5uYW1lLT5yZWxuYW1lLCBzcHMyLT5uYW1lLT5yZWxuYW1lKSwKKwkJ CQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbigoTm9kZSAqKSB2 YWwpKSk7CisJCQl9CisJCX0KKwl9Cit9CisKKy8qCisgKiBjaGVja19wYXJ0aXRpb25fYm91 bmRzX2Zvcl9zcGxpdF9yYW5nZQorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgUkFOR0UgcGFy dGl0aW9uaW5nKQorICoKKyAqIENoZWNrcyB0aGF0IGJvdW5kcyBvZiBuZXcgcGFydGl0aW9u ICJzcGVjIiBhcmUgaW5zaWRlIGJvdW5kcyBvZiBzcGxpdAorICogcGFydGl0aW9uICh3aXRo IE9pZCBzcGxpdFBhcnRPaWQpLiBJZiBmaXJzdD10cnVlICh0aGlzIG1lYW5zIHRoYXQgInNw ZWMiIGlzCisgKiB0aGUgZmlyc3Qgb2YgbmV3IHBhcnRpdGlvbnMpIHRoZW4gbG93ZXIgYm91 bmQgb2YgInNwZWMiIHNob3VsZCBiZSBlcXVhbCAob3IKKyAqIGdyZWF0ZXIgdGhhbiBvciBl cXVhbCBpbiBjYXNlIGRlZmF1bHRQYXJ0PXRydWUpIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0 CisgKiBwYXJ0aXRpb24uIElmIGxhc3Q9dHJ1ZSAodGhpcyBtZWFucyB0aGF0ICJzcGVjIiBp cyB0aGUgbGFzdCBvZiBuZXcKKyAqIHBhcnRpdGlvbnMpIHRoZW4gdXBwZXIgYm91bmQgb2Yg InNwZWMiIHNob3VsZCBiZSBlcXVhbCAob3IgbGVzcyB0aGFuIG9yCisgKiBlcXVhbCBpbiBj YXNlIGRlZmF1bHRQYXJ0PXRydWUpIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlv bi4KKyAqCisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAqIHJlbG5hbWU6CQkJ bmFtZSBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BlYzoJCQlib3VuZHMgc3BlY2lmaWNh dGlvbiBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BsaXRQYXJ0T2lkOglzcGxpdCBwYXJ0 aXRpb24gT2lkCisgKiBmaXJzdDoJCQl0cnVlIGluIGNhc2UgbmV3IHBhcnRpdGlvbiAic3Bl YyIgaXMgZmlyc3Qgb2YgbmV3IHBhcnRpdGlvbnMKKyAqIGxhc3Q6CQkJdHJ1ZSBpbiBjYXNl IG5ldyBwYXJ0aXRpb24gInNwZWMiIGlzIGxhc3Qgb2YgbmV3IHBhcnRpdGlvbnMKKyAqIGRl ZmF1bHRQYXJ0OgkJdHJ1ZSBpbiBjYXNlIG5ldyBwYXJ0aXRpb25zIGNvbnRhaW4gREVGQVVM VCBwYXJ0aXRpb24KKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0 IGZvciBkZXRlcm1pbmUgZXJyb3IgcG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQKK2NoZWNr X3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X3JhbmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJ CQkJCQkJCSAgIGNoYXIgKnJlbG5hbWUsCisJCQkJCQkJCQkgICBQYXJ0aXRpb25Cb3VuZFNw ZWMgKnNwZWMsCisJCQkJCQkJCQkgICBPaWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJICAg Ym9vbCBmaXJzdCwKKwkJCQkJCQkJCSAgIGJvb2wgbGFzdCwKKwkJCQkJCQkJCSAgIGJvb2wg ZGVmYXVsdFBhcnQsCisJCQkJCQkJCQkgICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFy dGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFy dGl0aW9uUmFuZ2VCb3VuZCAqbG93ZXIsCisJCQkgICAqdXBwZXI7CisJaW50CQkJY21wdmFs OworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdF KTsKKwlBc3NlcnQoc3BlYy0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdF KTsKKworCWxvd2VyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0xLCBzcGVj LT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisJdXBwZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJv dW5kKGtleSwgLTEsIHNwZWMtPnVwcGVyZGF0dW1zLCBmYWxzZSk7CisKKwkvKgorCSAqIEZp cnN0IGNoZWNrIGlmIHRoZSByZXN1bHRpbmcgcmFuZ2Ugd291bGQgYmUgZW1wdHkgd2l0aCBz cGVjaWZpZWQgbG93ZXIKKwkgKiBhbmQgdXBwZXIgYm91bmRzLiAgcGFydGl0aW9uX3Jib3Vu ZF9jbXAgY2Fubm90IHJldHVybiB6ZXJvIGhlcmUsIHNpbmNlCisJICogdGhlIGxvd2VyLWJv dW5kIGZsYWdzIGFyZSBkaWZmZXJlbnQuCisJICovCisJY21wdmFsID0gcGFydGl0aW9uX3Ji b3VuZF9jbXAoa2V5LT5wYXJ0bmF0dHMsCisJCQkJCQkJCSAga2V5LT5wYXJ0c3VwZnVuYywK KwkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCSAgbG93ZXItPmRhdHVt cywgbG93ZXItPmtpbmQsCisJCQkJCQkJCSAgdHJ1ZSwgdXBwZXIpOworCUFzc2VydChjbXB2 YWwgIT0gMCk7CisJaWYgKGNtcHZhbCA+IDApCisJeworCQkvKiBQb2ludCB0byBwcm9ibGVt YXRpYyBrZXkgaW4gdGhlIGxvd2VyIGRhdHVtcyBsaXN0LiAqLworCQlQYXJ0aXRpb25SYW5n ZURhdHVtICpkYXR1bSA9IGxpc3RfbnRoKHNwZWMtPmxvd2VyZGF0dW1zLCBjbXB2YWwgLSAx KTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09C SkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coImVtcHR5IHJhbmdlIGJvdW5kIHNwZWNp ZmllZCBmb3IgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCSAgIHJlbG5hbWUpLAorCQkJCWVy cmRldGFpbCgiU3BlY2lmaWVkIGxvd2VyIGJvdW5kICVzIGlzIGdyZWF0ZXIgdGhhbiBvciBl cXVhbCB0byB1cHBlciBib3VuZCAlcy4iLAorCQkJCQkJICBnZXRfcmFuZ2VfcGFydGJvdW5k X3N0cmluZyhzcGVjLT5sb3dlcmRhdHVtcyksCisJCQkJCQkgIGdldF9yYW5nZV9wYXJ0Ym91 bmRfc3RyaW5nKHNwZWMtPnVwcGVyZGF0dW1zKSksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgZXhwckxvY2F0aW9uKChOb2RlICopIGRhdHVtKSkpOworCX0KKworCS8qIE5l ZWQgdG8gY2hlY2sgZmlyc3QgYW5kIGxhc3QgcGFydGl0aW9ucyAoZnJvbSBzZXQgb2YgbmV3 IHBhcnRpdGlvbnMpICovCisJaWYgKGZpcnN0IHx8IGxhc3QpCisJeworCQlQYXJ0aXRpb25C b3VuZFNwZWMgKnNwbGl0X3NwZWMgPSBnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMoc3BsaXRQ YXJ0T2lkKTsKKwkJUGFydGl0aW9uUmFuZ2VEYXR1bSAqZGF0dW07CisKKwkJaWYgKGZpcnN0 KQorCQl7CisJCQlQYXJ0aXRpb25SYW5nZUJvdW5kICpzcGxpdF9sb3dlcjsKKworCQkJc3Bs aXRfbG93ZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIHNwbGl0X3Nw ZWMtPmxvd2VyZGF0dW1zLCB0cnVlKTsKKworCQkJY21wdmFsID0gcGFydGl0aW9uX3Jib3Vu ZF9jbXAoa2V5LT5wYXJ0bmF0dHMsCisJCQkJCQkJCQkJICBrZXktPnBhcnRzdXBmdW5jLAor CQkJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkJCSAgbG93ZXItPmRh dHVtcywgbG93ZXItPmtpbmQsCisJCQkJCQkJCQkJICB0cnVlLCBzcGxpdF9sb3dlcik7CisJ CQlpZiAoY21wdmFsICE9IDApCisJCQkJZGF0dW0gPSBsaXN0X250aChzcGVjLT5sb3dlcmRh dHVtcywgYWJzKGNtcHZhbCkgLSAxKTsKKworCQkJLyoKKwkJCSAqIFRoZSBsb3dlciBib3Vu ZCBvZiAic3BlYyIgbXVzdCBlcXVhbCB0byB0aGUgbG93ZXIgYm91bmQgb2YgdGhlCisJCQkg KiBzcGxpdCBwYXJ0aXRpb24uICBIb3dldmVyLCBpZiBvbmUgb2YgdGhlIG5ldyBwYXJ0aXRp b25zIGlzCisJCQkgKiBERUZBVUxULCB0aGVuIGl0IGlzIG9rIGZvciB0aGUgbmV3IHBhcnRp dGlvbidzIGxvd2VyIGJvdW5kIHRvCisJCQkgKiBiZSBncmVhdGVyIHRoYW4gdGhhdCBvZiB0 aGUgc3BsaXQgcGFydGl0aW9uLgorCQkJICovCisJCQlpZiAoIWRlZmF1bHRQYXJ0KQorCQkJ eworCQkJCWlmIChjbXB2YWwgIT0gMCkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQll cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJZXJy bXNnKCJsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGlzIG5vdCBlcXVhbCB0byBs b3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJCQkJICAgcmVs bmFtZSwKKwkJCQkJCQkJICAgZ2V0X3JlbF9uYW1lKHNwbGl0UGFydE9pZCkpLAorCQkJCQkJ CWVycmhpbnQoIiVzIHJlcXVpcmUgY29tYmluZWQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25z IG11c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbiIs CisJCQkJCQkJCQkiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMiKSwKKwkJCQkJ CQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oKE5vZGUgKikgZGF0 dW0pKSk7CisJCQl9CisJCQllbHNlIGlmIChjbXB2YWwgPCAwKQorCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiks CisJCQkJCQllcnJtc2coImxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbGVz cyB0aGFuIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJ CSAgIHJlbG5hbWUsCisJCQkJCQkJICAgZ2V0X3JlbF9uYW1lKHNwbGl0UGFydE9pZCkpLAor CQkJCQkJZXJyaGludCgiJXMgcmVxdWlyZSBjb21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRp dGlvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0 aW9uIiwKKwkJCQkJCQkJIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIiksCisJ CQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oKE5vZGUgKikg ZGF0dW0pKSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlQYXJ0aXRpb25SYW5nZUJvdW5kICpz cGxpdF91cHBlcjsKKworCQkJc3BsaXRfdXBwZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJv dW5kKGtleSwgLTEsIHNwbGl0X3NwZWMtPnVwcGVyZGF0dW1zLCBmYWxzZSk7CisKKwkJCWNt cHZhbCA9IHBhcnRpdGlvbl9yYm91bmRfY21wKGtleS0+cGFydG5hdHRzLAorCQkJCQkJCQkJ CSAga2V5LT5wYXJ0c3VwZnVuYywKKwkJCQkJCQkJCQkgIGtleS0+cGFydGNvbGxhdGlvbiwK KwkJCQkJCQkJCQkgIHVwcGVyLT5kYXR1bXMsIHVwcGVyLT5raW5kLAorCQkJCQkJCQkJCSAg ZmFsc2UsIHNwbGl0X3VwcGVyKTsKKwkJCWlmIChjbXB2YWwgIT0gMCkKKwkJCQlkYXR1bSA9 IGxpc3RfbnRoKHNwZWMtPnVwcGVyZGF0dW1zLCBhYnMoY21wdmFsKSAtIDEpOworCisJCQkv KgorCQkJICogVGhlIHVwcGVyIGJvdW5kIG9mICJzcGVjIiBtdXN0IGVxdWFsIHRvIHRoZSB1 cHBlciBib3VuZCBvZiB0aGUKKwkJCSAqIHNwbGl0IHBhcnRpdGlvbi4gIEhvd2V2ZXIsIGlm IG9uZSBvZiB0aGUgbmV3IHBhcnRpdGlvbnMgaXMKKwkJCSAqIERFRkFVTFQsIHRoZW4gaXQg aXMgb2sgZm9yIHRoZSBuZXcgcGFydGl0aW9uJ3MgdXBwZXIgYm91bmQgdG8KKwkJCSAqIGJl IGxlc3MgdGhhbiB0aGF0IG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24uCisJCQkgKi8KKwkJCWlm ICghZGVmYXVsdFBhcnQpCisJCQl7CisJCQkJaWYgKGNtcHZhbCAhPSAwKQorCQkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJ TklUSU9OKSwKKwkJCQkJCQllcnJtc2coInVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVz XCIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiBcIiVz XCIiLAorCQkJCQkJCQkgICByZWxuYW1lLAorCQkJCQkJCQkgICBnZXRfcmVsX25hbWUoc3Bs aXRQYXJ0T2lkKSksCisJCQkJCQkJZXJyaGludCgiJXMgcmVxdWlyZSBjb21iaW5lZCBib3Vu ZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBvZiB0 aGUgc3BsaXQgcGFydGl0aW9uIiwKKwkJCQkJCQkJCSJBTFRFUiBUQUJMRSAuLi4gTUVSR0Ug UEFSVElUSU9OUyIpLAorCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJM b2NhdGlvbigoTm9kZSAqKSBkYXR1bSkpKTsKKwkJCX0KKwkJCWVsc2UgaWYgKGNtcHZhbCA+ IDApCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCWVycm1zZygidXBwZXIgYm91bmQgb2YgcGFy dGl0aW9uIFwiJXNcIiBpcyBncmVhdGVyIHRoYW4gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFy dGl0aW9uIFwiJXNcIiIsCisJCQkJCQkJICAgcmVsbmFtZSwKKwkJCQkJCQkgICBnZXRfcmVs X25hbWUoc3BsaXRQYXJ0T2lkKSksCisJCQkJCQllcnJoaW50KCIlcyByZXF1aXJlIGNvbWJp bmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJv dW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24iLAorCQkJCQkJCQkiQUxURVIgVEFCTEUgLi4u IE1FUkdFIFBBUlRJVElPTlMiKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUs IGV4cHJMb2NhdGlvbigoTm9kZSAqKSBkYXR1bSkpKTsKKwkJfQorCX0KK30KKworLyoKKyAq IGNoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X2xpc3QKKyAqCisgKiAoZnVuY3Rp b24gZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nKQorICoKKyAqIENoZWNrcyB0aGF0IGJvdW5k cyBvZiBuZXcgcGFydGl0aW9uIGFyZSBpbnNpZGUgYm91bmRzIG9mIHNwbGl0IHBhcnRpdGlv bgorICogKHdpdGggT2lkIHNwbGl0UGFydE9pZCkuCisgKgorICogcGFyZW50OgkJCXBhcnRp dGlvbmVkIHRhYmxlCisgKiByZWxuYW1lOgkJCW5hbWUgb2YgdGhlIG5ldyBwYXJ0aXRpb24K KyAqIHNwZWM6CQkJYm91bmRzIHNwZWNpZmljYXRpb24gb2YgdGhlIG5ldyBwYXJ0aXRpb24K KyAqIHNwbGl0UGFydE9pZDoJc3BsaXQgcGFydGl0aW9uIE9pZAorICogcHN0YXRlOgkJCXBv aW50ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluZSBlcnJvciBwb3NpdGlv bgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcGFydGl0aW9uX2JvdW5kc19mb3Jfc3BsaXRf bGlzdChSZWxhdGlvbiBwYXJlbnQsIGNoYXIgKnJlbG5hbWUsCisJCQkJCQkJCQkgIFBhcnRp dGlvbkJvdW5kU3BlYyAqc3BlYywKKwkJCQkJCQkJCSAgT2lkIHNwbGl0UGFydE9pZCwKKwkJ CQkJCQkJCSAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgPSBS ZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCVBhcnRpdGlvbkRlc2MgcGFydGRl c2MgPSBSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocGFyZW50LCBmYWxzZSk7CisJUGFydGl0 aW9uQm91bmRJbmZvIGJvdW5kaW5mbyA9IHBhcnRkZXNjLT5ib3VuZGluZm87CisJaW50CQkJ d2l0aCA9IC0xOworCWJvb2wJCW92ZXJsYXAgPSBmYWxzZTsKKwlpbnQJCQlvdmVybGFwX2xv Y2F0aW9uID0gLTE7CisKKwlBc3NlcnQoa2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RS QVRFR1lfTElTVCk7CisJQXNzZXJ0KHNwZWMtPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJB VEVHWV9MSVNUKTsKKwlBc3NlcnQoYm91bmRpbmZvICYmIGJvdW5kaW5mby0+c3RyYXRlZ3kg PT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpOworCisJLyoKKwkgKiBTZWFyY2ggZWFjaCB2 YWx1ZSBvZiBuZXcgcGFydGl0aW9uICJzcGVjIiBpbiBleGlzdGluZyBwYXJ0aXRpb25zLiBB bGwKKwkgKiBvZiB0aGVtIHNob3VsZCBiZSBpbiBzcGxpdCBwYXJ0aXRpb24gKHdpdGggT2lk IHNwbGl0UGFydE9pZCkuCisJICovCisJZm9yZWFjaF9ub2RlKENvbnN0LCB2YWwsIHNwZWMt Pmxpc3RkYXR1bXMpCisJeworCQlvdmVybGFwX2xvY2F0aW9uID0gZXhwckxvY2F0aW9uKChO b2RlICopIHZhbCk7CisJCWlmICghdmFsLT5jb25zdGlzbnVsbCkKKwkJeworCQkJaW50CQkJ b2Zmc2V0OworCQkJYm9vbAkJZXF1YWw7CisKKwkJCW9mZnNldCA9IHBhcnRpdGlvbl9saXN0 X2JzZWFyY2goJmtleS0+cGFydHN1cGZ1bmNbMF0sCisJCQkJCQkJCQkJCWtleS0+cGFydGNv bGxhdGlvbiwKKwkJCQkJCQkJCQkJYm91bmRpbmZvLAorCQkJCQkJCQkJCQl2YWwtPmNvbnN0 dmFsdWUsCisJCQkJCQkJCQkJCSZlcXVhbCk7CisJCQlpZiAob2Zmc2V0ID49IDAgJiYgZXF1 YWwpCisJCQl7CisJCQkJd2l0aCA9IGJvdW5kaW5mby0+aW5kZXhlc1tvZmZzZXRdOworCQkJ CWlmIChwYXJ0ZGVzYy0+b2lkc1t3aXRoXSAhPSBzcGxpdFBhcnRPaWQpCisJCQkJeworCQkJ CQlvdmVybGFwID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQkJZWxzZQor CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpF Q1RfREVGSU5JVElPTiksCisJCQkJCQllcnJtc2coIm5ldyBwYXJ0aXRpb24gXCIlc1wiIGNh bm5vdCBoYXZlIHRoaXMgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gXCIlc1wiIGRv ZXMgbm90IGhhdmUiLAorCQkJCQkJCSAgIHJlbG5hbWUsCisJCQkJCQkJICAgZ2V0X3JlbF9u YW1lKHNwbGl0UGFydE9pZCkpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwg b3ZlcmxhcF9sb2NhdGlvbikpOworCQl9CisJCWVsc2UgaWYgKHBhcnRpdGlvbl9ib3VuZF9h Y2NlcHRzX251bGxzKGJvdW5kaW5mbykpCisJCXsKKwkJCXdpdGggPSBib3VuZGluZm8tPm51 bGxfaW5kZXg7CisJCQlpZiAocGFydGRlc2MtPm9pZHNbd2l0aF0gIT0gc3BsaXRQYXJ0T2lk KQorCQkJeworCQkJCW92ZXJsYXAgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJ CWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJZXJybXNnKCJuZXcgcGFydGl0aW9uIFwiJXNc IiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIFwiJXNc IiBkb2VzIG5vdCBoYXZlIiwKKwkJCQkJCSAgIHJlbG5hbWUsCisJCQkJCQkgICBnZXRfcmVs X25hbWUoc3BsaXRQYXJ0T2lkKSksCisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUs IG92ZXJsYXBfbG9jYXRpb24pKTsKKwl9CisKKwlpZiAob3ZlcmxhcCkKKwl7CisJCUFzc2Vy dCh3aXRoID49IDApOworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9J TlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coIm5ldyBwYXJ0aXRpb24g XCIlc1wiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlv biBcIiVzXCIiLAorCQkJCQkgICByZWxuYW1lLCBnZXRfcmVsX25hbWUocGFydGRlc2MtPm9p ZHNbd2l0aF0pKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVybGFwX2xv Y2F0aW9uKSk7CisJfQorfQorCisvKgorICogZmluZF92YWx1ZV9pbl9uZXdfcGFydGl0aW9u c19saXN0CisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZykKKyAq CisgKiBGdW5jdGlvbiByZXR1cm5zIHRydWUgaW4gY2FzZSBhbnkgb2YgbmV3IHBhcnRpdGlv bnMgY29udGFpbnMgdmFsdWUgInZhbHVlIi4KKyAqCisgKiBwYXJ0c3VwZnVuYzoJCWluZm9y bWF0aW9uIGFib3V0IGNvbXBhcmlzb24gZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBw YXJ0aXRpb24ga2V5CisgKiBwYXJ0Y29sbGF0aW9uOglwYXJ0aXRpb25pbmcgY29sbGF0aW9u CisgKiBwYXJ0czoJCQlwb2ludGVyIHRvIGFycmF5IHdpdGggbmV3IHBhcnRpdGlvbnMgZGVz Y3JpcHRpb25zCisgKiBucGFydHM6CQkJbnVtYmVyIG9mIG5ldyBwYXJ0aXRpb25zCisgKiB2 YWx1ZToJCQl0aGUgdmFsdWUgdGhhdCB3ZSBhcmUgbG9va2luZyBmb3IKKyAqIGlzbnVsbDoJ CQl0cnVlIGlmIHRoZSB2YWx1ZSB0aGF0IHdlIGFyZSBsb29raW5nIGZvciBpcyBOVUxMCisg Ki8KK3N0YXRpYyBib29sCitmaW5kX3ZhbHVlX2luX25ld19wYXJ0aXRpb25zX2xpc3QoRm1n ckluZm8gKnBhcnRzdXBmdW5jLAorCQkJCQkJCQkgIE9pZCAqcGFydGNvbGxhdGlvbiwKKwkJ CQkJCQkJICBTaW5nbGVQYXJ0aXRpb25TcGVjICoqcGFydHMsCisJCQkJCQkJCSAgaW50IG5w YXJ0cywKKwkJCQkJCQkJICBEYXR1bSB2YWx1ZSwKKwkJCQkJCQkJICBib29sIGlzbnVsbCkK K3sKKwlmb3IgKGludCBpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCXsKKwkJU2luZ2xlUGFy dGl0aW9uU3BlYyAqc3BzID0gcGFydHNbaV07CisKKwkJZm9yZWFjaF9ub2RlKENvbnN0LCB2 YWwsIHNwcy0+Ym91bmQtPmxpc3RkYXR1bXMpCisJCXsKKwkJCWlmIChpc251bGwgJiYgdmFs LT5jb25zdGlzbnVsbCkKKwkJCQlyZXR1cm4gdHJ1ZTsKKworCQkJaWYgKCFpc251bGwgJiYg IXZhbC0+Y29uc3Rpc251bGwpCisJCQl7CisJCQkJaWYgKERhdHVtR2V0SW50MzIoRnVuY3Rp b25DYWxsMkNvbGwoJnBhcnRzdXBmdW5jWzBdLAorCQkJCQkJCQkJCQkJCXBhcnRjb2xsYXRp b25bMF0sCisJCQkJCQkJCQkJCQkJdmFsLT5jb25zdHZhbHVlLAorCQkJCQkJCQkJCQkJCXZh bHVlKSkgPT0gMCkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCX0KKwl9CisJcmV0dXJu IGZhbHNlOworfQorCisvKgorICogY2hlY2tfcGFyZW50X3ZhbHVlc19pbl9uZXdfcGFydGl0 aW9ucworICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcpCisgKgor ICogQ2hlY2tzIHRoYXQgYWxsIHZhbHVlcyBvZiBzcGxpdCBwYXJ0aXRpb24gKHdpdGggT2lk IHBhcnRPaWQpIGFyZSBjb250YWluZWQKKyAqIGluIG5ldyBwYXJ0aXRpb25zLgorICoKKyAq IHBhcmVudDoJcGFydGl0aW9uZWQgdGFibGUKKyAqIHBhcnRPaWQ6CXNwbGl0IHBhcnRpdGlv biBPaWQKKyAqIHBhcnRzOglwb2ludGVyIHRvIGFycmF5IHdpdGggbmV3IHBhcnRpdGlvbnMg ZGVzY3JpcHRpb25zCisgKiBucGFydHM6CW51bWJlciBvZiBuZXcgcGFydGl0aW9ucworICog cHN0YXRlOglwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUgZXJy b3IgcG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3BhcmVudF92YWx1ZXNfaW5f bmV3X3BhcnRpdGlvbnMoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkJICBPaWQgcGFydE9p ZCwKKwkJCQkJCQkJCSAgU2luZ2xlUGFydGl0aW9uU3BlYyAqKnBhcnRzLAorCQkJCQkJCQkJ ICBpbnQgbnBhcnRzLAorCQkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFy dGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFy dGl0aW9uRGVzYyBwYXJ0ZGVzYyA9IFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQs IGZhbHNlKTsKKwlQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvID0gcGFydGRlc2MtPmJv dW5kaW5mbzsKKwlpbnQJCQlpOworCWJvb2wJCWZvdW5kID0gdHJ1ZTsKKwlib29sCQlzZWFy Y2hOdWxsID0gZmFsc2U7CisJRGF0dW0JCWRhdHVtID0gUG9pbnRlckdldERhdHVtKE5VTEwp OworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1Qp OworCisJLyoKKwkgKiBTcGVjaWFsIHByb2Nlc3NpbmcgZm9yIE5VTEwgdmFsdWUuIFNlYXJj aCBOVUxMIHZhbHVlIGlmIHRoZSBzcGxpdAorCSAqIHBhcnRpdGlvbiAocGFydE9pZCkgY29u dGFpbnMgaXQuCisJICovCisJaWYgKHBhcnRpdGlvbl9ib3VuZF9hY2NlcHRzX251bGxzKGJv dW5kaW5mbykgJiYKKwkJcGFydGRlc2MtPm9pZHNbYm91bmRpbmZvLT5udWxsX2luZGV4XSA9 PSBwYXJ0T2lkKQorCXsKKwkJaWYgKCFmaW5kX3ZhbHVlX2luX25ld19wYXJ0aXRpb25zX2xp c3QoJmtleS0+cGFydHN1cGZ1bmNbMF0sCisJCQkJCQkJCQkJCSAgIGtleS0+cGFydGNvbGxh dGlvbiwgcGFydHMsIG5wYXJ0cywgZGF0dW0sIHRydWUpKQorCQl7CisJCQlmb3VuZCA9IGZh bHNlOworCQkJc2VhcmNoTnVsbCA9IHRydWU7CisJCX0KKwl9CisKKwkvKgorCSAqIFNlYXJj aCBhbGwgdmFsdWVzIG9mIHNwbGl0IHBhcnRpdGlvbiB3aXRoIHBhcnRPaWQgaW4gUGFydGl0 aW9uRGVzYyBvZgorCSAqIHBhcnRpdGlvbmVkIHRhYmxlLgorCSAqLworCWZvciAoaSA9IDA7 IGkgPCBib3VuZGluZm8tPm5kYXR1bXM7IGkrKykKKwl7CisJCWlmIChwYXJ0ZGVzYy0+b2lk c1tib3VuZGluZm8tPmluZGV4ZXNbaV1dID09IHBhcnRPaWQpCisJCXsKKwkJCS8qIFdlIGZv dW5kIHZhbHVlIHRoYXQgc3BsaXQgcGFydGl0aW9uIGNvbnRhaW5zLiAqLworCQkJZGF0dW0g PSBib3VuZGluZm8tPmRhdHVtc1tpXVswXTsKKwkJCWlmICghZmluZF92YWx1ZV9pbl9uZXdf cGFydGl0aW9uc19saXN0KCZrZXktPnBhcnRzdXBmdW5jWzBdLAorCQkJCQkJCQkJCQkJICAg a2V5LT5wYXJ0Y29sbGF0aW9uLCBwYXJ0cywgbnBhcnRzLCBkYXR1bSwgZmFsc2UpKQorCQkJ eworCQkJCWZvdW5kID0gZmFsc2U7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9CisKKwlp ZiAoIWZvdW5kKQorCXsKKwkJQ29uc3QJICAgKm5vdEZvdW5kVmFsOworCisJCWlmICghc2Vh cmNoTnVsbCkKKworCQkJLyoKKwkJCSAqIE1ha2UgQ29uc3QgZm9yIGdldHRpbmcgc3RyaW5n IHJlcHJlc2VudGF0aW9uIG9mIG5vdCBmb3VuZAorCQkJICogdmFsdWUuCisJCQkgKi8KKwkJ CW5vdEZvdW5kVmFsID0gbWFrZUNvbnN0KGtleS0+cGFydHR5cGlkWzBdLAorCQkJCQkJCQkJ a2V5LT5wYXJ0dHlwbW9kWzBdLAorCQkJCQkJCQkJa2V5LT5wYXJ0dHlwY29sbFswXSwKKwkJ CQkJCQkJCWtleS0+cGFydHR5cGxlblswXSwKKwkJCQkJCQkJCWRhdHVtLAorCQkJCQkJCQkJ ZmFsc2UsCS8qIGlzbnVsbCAqLworCQkJCQkJCQkJa2V5LT5wYXJ0dHlwYnl2YWxbMF0pOwor CisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNU X0RFRklOSVRJT04pLAorCQkJCWVycm1zZygibmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUg dmFsdWUgJXMgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2VzIiwKKwkJCQkJICAgc2VhcmNoTnVs bCA/ICJOVUxMIiA6IGdldF9saXN0X3BhcnR2YWx1ZV9zdHJpbmcobm90Rm91bmRWYWwpKSk7 CisJfQorfQorCisvKgorICogY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQKKyAqCisgKiBD aGVja3MgbmV3IHBhcnRpdGlvbnMgZm9yIFNQTElUIFBBUlRJVElPTlMgY29tbWFuZDoKKyAq IDEuIEJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgbm90IG92ZXJsYXAgd2l0aCBu ZXcgYW5kIGV4aXN0aW5nCisgKiAgICBwYXJ0aXRpb25zLgorICogMi4gSW4gY2FzZSBuZXcg cGFydGl0aW9ucyBvciBleGlzdGluZyBwYXJ0aXRpb25zIGNvbnRhaW5zIERFRkFVTFQKKyAq ICAgIHBhcnRpdGlvbiwgbmV3IHBhcnRpdGlvbnMgY2FuIGhhdmUgYW55IGJvdW5kcyBpbnNp ZGUgc3BsaXQKKyAqICAgIHBhcnRpdGlvbiBib3VuZCAoY2FuIGJlIHNwYWNlcyBiZXR3ZWVu IHBhcnRpdGlvbnMgYm91bmRzKS4KKyAqIDMuIEluIGNhc2UgbmV3IHBhcnRpdGlvbnMgbm90 IGNvbnRhaW5zIERFRkFVTFQgcGFydGl0aW9uIGFuZAorICogICAgcGFydGl0aW9uZWQgdGFi bGUgZG9lcyBub3QgaGF2ZSBERUZBVUxUIHBhcnRpdGlvbiB0aGUgZm9sbG93aW5nCisgKiAg ICBzaG91bGQgYmUgdHJ1ZTogc3VtIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQg YmUgZXF1YWwKKyAqICAgIHRvIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbi4KKyAqCisgKiBw YXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAqIHNwbGl0UGFydE9pZDoJc3BsaXQgcGFy dGl0aW9uIE9pZAorICogbGlzdDoJCQlsaXN0IG9mIG5ldyBwYXJ0aXRpb25zCisgKiBwc3Rh dGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5lIGVycm9y IHBvc2l0aW9uCisgKi8KK3ZvaWQKK2NoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KFJlbGF0 aW9uIHBhcmVudCwKKwkJCQkJCSAgIE9pZCBzcGxpdFBhcnRPaWQsCisJCQkJCQkgICBMaXN0 ICpwYXJ0bGlzdCwKKwkJCQkJCSAgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRp b25LZXkga2V5OworCWNoYXIJCXN0cmF0ZWd5OworCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOwor CWJvb2wJCWlzU3BsaXRQYXJ0RGVmYXVsdDsKKwlib29sCQljcmVhdGVEZWZhdWx0UGFydCA9 IGZhbHNlOworCWludAkJCWRlZmF1bHRfaW5kZXggPSAtMTsKKwlpbnQJCQlpOworCVNpbmds ZVBhcnRpdGlvblNwZWMgKipuZXdfcGFydHM7CisJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3Bz UHJldiA9IE5VTEw7CisKKwkvKgorCSAqIG5wYXJ0cyBjb3VudCBudW1iZXIgb2Ygc3BsaXQg cGFydGl0aW9ucywgYnV0IGl0IGV4Y2x1ZGUgdGhlIGRlZmF1bHQKKwkgKiBwYXJ0aXRpb24u CisJICovCisJaW50CQkJbnBhcnRzID0gMDsKKworCWtleSA9IFJlbGF0aW9uR2V0UGFydGl0 aW9uS2V5KHBhcmVudCk7CisJc3RyYXRlZ3kgPSBnZXRfcGFydGl0aW9uX3N0cmF0ZWd5KGtl eSk7CisKKwlkZWZhdWx0UGFydE9pZCA9CisJCWdldF9kZWZhdWx0X29pZF9mcm9tX3BhcnRk ZXNjKFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIHRydWUpKTsKKworCUFzc2Vy dChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UgfHwKKwkJICAgc3RyYXRl Z3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpOworCisJLyoKKwkgKiBNYWtlIGFycmF5 IG5ld19wYXJ0cyB3aXRoIG5ldyBwYXJ0aXRpb25zIGV4Y2VwdCBERUZBVUxUIHBhcnRpdGlv bi4KKwkgKi8KKwluZXdfcGFydHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKikKKwkJcGFs bG9jMChsaXN0X2xlbmd0aChwYXJ0bGlzdCkgKiBzaXplb2YoU2luZ2xlUGFydGl0aW9uU3Bl YyAqKSk7CisKKwkvKiBpc1NwbGl0UGFydERlZmF1bHQgZmxhZzogaXMgc3BsaXQgcGFydGl0 aW9uIGEgREVGQVVMVCBwYXJ0aXRpb24/ICovCisJaXNTcGxpdFBhcnREZWZhdWx0ID0gKGRl ZmF1bHRQYXJ0T2lkID09IHNwbGl0UGFydE9pZCk7CisKKwlmb3JlYWNoX25vZGUoU2luZ2xl UGFydGl0aW9uU3BlYywgc3BzLCBwYXJ0bGlzdCkKKwl7CisJCWlmIChzcHMtPmJvdW5kLT5p c19kZWZhdWx0KQorCQkJZGVmYXVsdF9pbmRleCA9IGZvcmVhY2hfY3VycmVudF9pbmRleChz cHMpOworCQllbHNlCisJCQluZXdfcGFydHNbbnBhcnRzKytdID0gc3BzOworCX0KKworCS8q IEluZGljYXRvciB0aGF0IHRoZSBERUZBVUxUIHBhcnRpdGlvbiB3aWxsIGJlIGNyZWF0ZWQu ICovCisJaWYgKGRlZmF1bHRfaW5kZXggIT0gLTEpCisJeworCQljcmVhdGVEZWZhdWx0UGFy dCA9IHRydWU7CisJCUFzc2VydChucGFydHMgPT0gbGlzdF9sZW5ndGgocGFydGxpc3QpIC0g MSk7CisJfQorCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSkK Kwl7CisJCVBhcnRpdGlvblJhbmdlQm91bmQgKipsb3dlcl9ib3VuZHM7CisJCVNpbmdsZVBh cnRpdGlvblNwZWMgKip0bXBfbmV3X3BhcnRzOworCisJCS8qCisJCSAqIEZvciBzaW1wbGlm eSBjaGVjayBmb3IgcmFuZ2VzIG9mIG5ldyBwYXJ0aXRpb25zIG5lZWQgdG8gc29ydCBhbGwK KwkJICogcGFydGl0aW9ucyBpbiBhc2NlbmRpbmcgb3JkZXIgb2YgdGhlbSBib3VuZHMgKHdl IGNvbXBhcmUgdXBwZXIKKwkJICogYm91bmQgb25seSkuCisJCSAqLworCQlsb3dlcl9ib3Vu ZHMgPSAoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKikKKwkJCXBhbGxvYzAobnBhcnRzICogc2l6 ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKikpOworCisJCS8qIENyZWF0ZSBhcnJheSBvZiBs b3dlciBib3VuZHMuICovCisJCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKKwkJewor CQkJbG93ZXJfYm91bmRzW2ldID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIGks CisJCQkJCQkJCQkJCQkJCW5ld19wYXJ0c1tpXS0+Ym91bmQtPmxvd2VyZGF0dW1zLCB0cnVl KTsKKwkJfQorCisJCS8qIFNvcnQgYXJyYXkgb2YgbG93ZXIgYm91bmRzLiAqLworCQlxc29y dF9hcmcobG93ZXJfYm91bmRzLCBucGFydHMsIHNpemVvZihQYXJ0aXRpb25SYW5nZUJvdW5k ICopLAorCQkJCSAgcXNvcnRfcGFydGl0aW9uX3Jib3VuZF9jbXAsICh2b2lkICopIGtleSk7 CisKKwkJLyogUmVvcmRlciBhcnJheSBvZiBwYXJ0aXRpb25zLiAqLworCQl0bXBfbmV3X3Bh cnRzID0gbmV3X3BhcnRzOworCQluZXdfcGFydHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAq KikKKwkJCXBhbGxvYzAobnBhcnRzICogc2l6ZW9mKFNpbmdsZVBhcnRpdGlvblNwZWMgKikp OworCQlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJCQluZXdfcGFydHNbaV0gPSB0 bXBfbmV3X3BhcnRzW2xvd2VyX2JvdW5kc1tpXS0+aW5kZXhdOworCisJCXBmcmVlKHRtcF9u ZXdfcGFydHMpOworCQlwZnJlZShsb3dlcl9ib3VuZHMpOworCX0KKworCWZvciAoaSA9IDA7 IGkgPCBucGFydHM7IGkrKykKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IG5l d19wYXJ0c1tpXTsKKworCQlpZiAoaXNTcGxpdFBhcnREZWZhdWx0KQorCQl7CisJCQkvKgor CQkJICogSW4gY2FzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVCBwYXJ0aXRpb24gd2Ug Y2FuIHVzZSBhbnkKKwkJCSAqIGZyZWUgcmFuZ2VzIC0gYXMgd2hlbiBjcmVhdGluZyBhIG5l dyBwYXJ0aXRpb24uCisJCQkgKi8KKwkJCWNoZWNrX25ld19wYXJ0aXRpb25fYm91bmQoc3Bz LT5uYW1lLT5yZWxuYW1lLCBwYXJlbnQsIHNwcy0+Ym91bmQsCisJCQkJCQkJCQkgIHBzdGF0 ZSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogQ2hlY2tzIHRoYXQgYm91bmQg b2YgY3VycmVudCBwYXJ0aXRpb24gaXMgaW5zaWRlIGJvdW5kIG9mIHNwbGl0CisJCQkgKiBw YXJ0aXRpb24uIEZvciByYW5nZSBwYXJ0aXRpb25pbmc6IGNoZWNrcyB0aGF0IHVwcGVyIGJv dW5kIG9mCisJCQkgKiBwcmV2aW91cyBwYXJ0aXRpb24gaXMgZXF1YWwgdG8gbG93ZXIgYm91 bmQgb2YgY3VycmVudAorCQkJICogcGFydGl0aW9uLiBGb3IgbGlzdCBwYXJ0aXRpb25pbmc6 IGNoZWNrcyB0aGF0IHNwbGl0IHBhcnRpdGlvbgorCQkJICogY29udGFpbnMgYWxsIHZhbHVl cyBvZiBjdXJyZW50IHBhcnRpdGlvbi4KKwkJCSAqLworCQkJaWYgKHN0cmF0ZWd5ID09IFBB UlRJVElPTl9TVFJBVEVHWV9SQU5HRSkKKwkJCXsKKwkJCQlib29sCQlmaXJzdCA9IChpID09 IDApOworCQkJCWJvb2wJCWxhc3QgPSAoaSA9PSAobnBhcnRzIC0gMSkpOworCisJCQkJY2hl Y2tfcGFydGl0aW9uX2JvdW5kc19mb3Jfc3BsaXRfcmFuZ2UocGFyZW50LCBzcHMtPm5hbWUt PnJlbG5hbWUsIHNwcy0+Ym91bmQsCisJCQkJCQkJCQkJCQkJICAgc3BsaXRQYXJ0T2lkLCBm aXJzdCwgbGFzdCwKKwkJCQkJCQkJCQkJCQkgICBjcmVhdGVEZWZhdWx0UGFydCwgcHN0YXRl KTsKKwkJCX0KKwkJCWVsc2UKKwkJCQljaGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxp dF9saXN0KHBhcmVudCwgc3BzLT5uYW1lLT5yZWxuYW1lLAorCQkJCQkJCQkJCQkJCSAgc3Bz LT5ib3VuZCwgc3BsaXRQYXJ0T2lkLCBwc3RhdGUpOworCQl9CisKKwkJLyogUmFuZ2VzIG9m IG5ldyBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcC4gKi8KKwkJaWYgKHN0cmF0ZWd5 ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSAmJiBzcHNQcmV2KQorCQkJY2hlY2tfdHdv X3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlKHBhcmVudCwgc3BzUHJldi0+bmFtZSwgc3BzUHJl di0+Ym91bmQsCisJCQkJCQkJCQkJCSAgc3BzLT5uYW1lLCBzcHMtPmJvdW5kLAorCQkJCQkJ CQkJCQkgIGNyZWF0ZURlZmF1bHRQYXJ0LAorCQkJCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJ CQkJCQkgIHBzdGF0ZSk7CisKKwkJc3BzUHJldiA9IHNwczsKKwl9CisKKwlpZiAoc3RyYXRl Z3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpCisJeworCQkvKiBWYWx1ZXMgb2YgbmV3 IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwLiAqLworCQljaGVja19wYXJ0aXRpb25z X25vdF9vdmVybGFwX2xpc3QocGFyZW50LCBuZXdfcGFydHMsIG5wYXJ0cywKKwkJCQkJCQkJ CQkgIHBzdGF0ZSk7CisKKwkJLyoKKwkJICogTmVlZCB0byBjaGVjayB0aGF0IGFsbCB2YWx1 ZXMgb2Ygc3BsaXQgcGFydGl0aW9uIGNvbnRhaW5zIGluIG5ldworCQkgKiBwYXJ0aXRpb25z LiBTa2lwIHRoaXMgY2hlY2sgaWYgREVGQVVMVCBwYXJ0aXRpb24gZXhpc3RzLgorCQkgKi8K KwkJaWYgKCFjcmVhdGVEZWZhdWx0UGFydCkKKwkJCWNoZWNrX3BhcmVudF92YWx1ZXNfaW5f bmV3X3BhcnRpdGlvbnMocGFyZW50LCBzcGxpdFBhcnRPaWQsCisJCQkJCQkJCQkJCQkgIG5l d19wYXJ0cywgbnBhcnRzLCBwc3RhdGUpOworCX0KKworCXBmcmVlKG5ld19wYXJ0cyk7Cit9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggMDQwOGE5NTk0MS4uYzE2NWZj NjAxMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMTM3MDksMyArMTM3 MDksMjEgQEAgZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJpbmcoTGlzdCAqYm91bmRfZGF0dW1z KQogCiAJcmV0dXJuIGJ1Zi0+ZGF0YTsKIH0KKworLyoKKyAqIGdldF9saXN0X3BhcnR2YWx1 ZV9zdHJpbmcKKyAqCQlBIEMgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIG9uZSBsaXN0IHBh cnRpdGlvbiB2YWx1ZQorICovCitjaGFyICoKK2dldF9saXN0X3BhcnR2YWx1ZV9zdHJpbmco Q29uc3QgKnZhbCkKK3sKKwlkZXBhcnNlX2NvbnRleHQgY29udGV4dDsKKwlTdHJpbmdJbmZv CWJ1ZiA9IG1ha2VTdHJpbmdJbmZvKCk7CisKKwltZW1zZXQoJmNvbnRleHQsIDAsIHNpemVv ZihkZXBhcnNlX2NvbnRleHQpKTsKKwljb250ZXh0LmJ1ZiA9IGJ1ZjsKKworCWdldF9jb25z dF9leHByKHZhbCwgJmNvbnRleHQsIC0xKTsKKworCXJldHVybiBidWYtPmRhdGE7Cit9CmRp ZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggM2VjMDMzZDhkOC4uYTA0OTUzZTUxMSAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4v cHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMjc1MCw3ICsyNzUwLDcgQEAgbWF0Y2hfcHJl dmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJCQkJCSAgIk9XTkVSIFRPIiwgIlNFVCIs ICJWQUxJREFURSBDT05TVFJBSU5UIiwKIAkJCQkJICAiUkVQTElDQSBJREVOVElUWSIsICJB VFRBQ0ggUEFSVElUSU9OIiwKIAkJCQkJICAiREVUQUNIIFBBUlRJVElPTiIsICJGT1JDRSBS T1cgTEVWRUwgU0VDVVJJVFkiLAotCQkJCQkgICJNRVJHRSBQQVJUSVRJT05TICgiLAorCQkJ CQkgICJTUExJVCBQQVJUSVRJT04iLCAiTUVSR0UgUEFSVElUSU9OUyAoIiwKIAkJCQkJICAi T0YiLCAiTk9UIE9GIik7CiAJLyogQUxURVIgVEFCTEUgeHh4IEFERCAqLwogCWVsc2UgaWYg KE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJBREQiKSkKQEAgLTMwMTMs MTAgKzMwMTMsMTAgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJ CUNPTVBMRVRFX1dJVEgoIkZST00gKCIsICJJTiAoIiwgIldJVEggKCIpOwogCiAJLyoKLQkg KiBJZiB3ZSBoYXZlIEFMVEVSIFRBQkxFIDxmb28+IERFVEFDSCBQQVJUSVRJT04sIHByb3Zp ZGUgYSBsaXN0IG9mCisJICogSWYgd2UgaGF2ZSBBTFRFUiBUQUJMRSA8Zm9vPiBERVRBQ0h8 U1BMSVQgUEFSVElUSU9OLCBwcm92aWRlIGEgbGlzdCBvZgogCSAqIHBhcnRpdGlvbnMgb2Yg PGZvbz4uCiAJICovCi0JZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRj aEFueSwgIkRFVEFDSCIsICJQQVJUSVRJT04iKSkKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRF UiIsICJUQUJMRSIsIE1hdGNoQW55LCAiREVUQUNIfFNQTElUIiwgIlBBUlRJVElPTiIpKQog CXsKIAkJc2V0X2NvbXBsZXRpb25fcmVmZXJlbmNlKHByZXYzX3dkKTsKIAkJQ09NUExFVEVf V0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX3BhcnRpdGlvbl9vZl90YWJsZSk7CkBAIC0z MDI0LDYgKzMwMjQsMTAgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQs CiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIkRFVEFD SCIsICJQQVJUSVRJT04iLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEgoIkNPTkNVUlJF TlRMWSIsICJGSU5BTElaRSIpOwogCisJLyogQUxURVIgVEFCTEUgPG5hbWU+IFNQTElUIFBB UlRJVElPTiA8bmFtZT4gKi8KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIs IE1hdGNoQW55LCAiU1BMSVQiLCAiUEFSVElUSU9OIiwgTWF0Y2hBbnkpKQorCQlDT01QTEVU RV9XSVRIKCJJTlRPICggUEFSVElUSU9OIik7CisKIAkvKiBBTFRFUiBUQUJMRSA8bmFtZT4g TUVSR0UgUEFSVElUSU9OUyAoICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFC TEUiLCBNYXRjaEFueSwgIk1FUkdFIiwgIlBBUlRJVElPTlMiLCAiKCIpKQogCXsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaAppbmRleCBiMWIzMzE1ZmU1Li41YzliZTg0ODNmIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC05NjMsMTcgKzk2MywyOSBAQCB0eXBlZGVmIHN0cnVj dCBQYXJ0aXRpb25SYW5nZURhdHVtCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tlbiBs b2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBQYXJ0aXRpb25SYW5nZURhdHVtOwog CisvKgorICogUGFydGl0aW9uRGVzYyAtIGluZm8gYWJvdXQgc2luZ2xlIHBhcnRpdGlvbiBm b3IgQUxURVIgVEFCTEUgU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQKKyAqLwordHlwZWRlZiBz dHJ1Y3QgU2luZ2xlUGFydGl0aW9uU3BlYworeworCU5vZGVUYWcJCXR5cGU7CisKKwlSYW5n ZVZhciAgICpuYW1lOwkJCS8qIG5hbWUgb2YgcGFydGl0aW9uICovCisJUGFydGl0aW9uQm91 bmRTcGVjICpib3VuZDsJLyogRk9SIFZBTFVFUywgaWYgYXR0YWNoaW5nICovCit9IFNpbmds ZVBhcnRpdGlvblNwZWM7CisKIC8qCiAgKiBQYXJ0aXRpb25DbWQgLSBpbmZvIGZvciBBTFRF UiBUQUJMRS9JTkRFWCBBVFRBQ0gvREVUQUNIIFBBUlRJVElPTiBhbmQgZm9yCi0gKgkgIEFM VEVSIFRBQkxFIE1FUkdFIFBBUlRJVElPTlMgY29tbWFuZHMKKyAqCSAgQUxURVIgVEFCTEUg U1BMSVQvTUVSR0UgUEFSVElUSU9OKFMpIGNvbW1hbmRzCiAgKi8KIHR5cGVkZWYgc3RydWN0 IFBhcnRpdGlvbkNtZAogewogCU5vZGVUYWcJCXR5cGU7Ci0JUmFuZ2VWYXIgICAqbmFtZTsJ CQkvKiBuYW1lIG9mIHBhcnRpdGlvbiB0byBhdHRhY2gvZGV0YWNoL21lcmdlICovCisJUmFu Z2VWYXIgICAqbmFtZTsJCQkvKiBuYW1lIG9mIHBhcnRpdGlvbiB0bworCQkJCQkJCQkgKiBh dHRhY2gvZGV0YWNoL21lcmdlL3NwbGl0ICovCiAJUGFydGl0aW9uQm91bmRTcGVjICpib3Vu ZDsJLyogRk9SIFZBTFVFUywgaWYgYXR0YWNoaW5nICovCi0JTGlzdAkgICAqcGFydGxpc3Q7 CQkvKiBsaXN0IG9mIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkLCB1c2VkIGluCi0JCQkJCQkJ CSAqIEFMVEVSIFRBQkxFIE1FUkdFIFBBUlRJVElPTlMgKi8KKwlMaXN0CSAgICpwYXJ0bGlz dDsJCS8qIGxpc3Qgb2YgcGFydGl0aW9ucyB0byBiZSBzcGxpdC9tZXJnZWQsIHVzZWQKKwkJ CQkJCQkJICogaW4gQUxURVIgVEFCTEUgU1BMSVQvTUVSR0UgUEFSVElUSU9OKFMpICovCiAJ Ym9vbAkJY29uY3VycmVudDsKIH0gUGFydGl0aW9uQ21kOwogCkBAIC0yNDc2LDYgKzI0ODgs NyBAQCB0eXBlZGVmIGVudW0gQWx0ZXJUYWJsZVR5cGUKIAlBVF9BdHRhY2hQYXJ0aXRpb24s CQkJLyogQVRUQUNIIFBBUlRJVElPTiAqLwogCUFUX0RldGFjaFBhcnRpdGlvbiwJCQkvKiBE RVRBQ0ggUEFSVElUSU9OICovCiAJQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemUsIC8qIERF VEFDSCBQQVJUSVRJT04gRklOQUxJWkUgKi8KKwlBVF9TcGxpdFBhcnRpdGlvbiwJCQkvKiBT UExJVCBQQVJUSVRJT04gKi8KIAlBVF9NZXJnZVBhcnRpdGlvbnMsCQkJLyogTUVSR0UgUEFS VElUSU9OUyAqLwogCUFUX0FkZElkZW50aXR5LAkJCQkvKiBBREQgSURFTlRJVFkgKi8KIAlB VF9TZXRJZGVudGl0eSwJCQkJLyogU0VUIGlkZW50aXR5IGNvbHVtbiBvcHRpb25zICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9w YXJzZXIva3dsaXN0LmgKaW5kZXggOTBlOGNkZGY4Yi4uNjZjODg3NjY1NyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNl ci9rd2xpc3QuaApAQCAtNDIxLDYgKzQyMSw3IEBAIFBHX0tFWVdPUkQoInNtYWxsaW50Iiwg U01BTExJTlQsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJz bmFwc2hvdCIsIFNOQVBTSE9ULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJzb21lIiwgU09NRSwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoInNvdXJjZSIsIFNPVVJDRSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQorUEdfS0VZV09SRCgic3BsaXQiLCBTUExJVCwgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic3FsIiwgU1FMX1AsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN0YWJsZSIsIFNUQUJMRSwgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic3RhbmRhbG9uZSIsIFNU QU5EQUxPTkVfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCBiL3NyYy9pbmNsdWRl L3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKaW5kZXggZjZmYzEwZDM0My4uOGI1MGVkYmVl NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaAor KysgYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCkBAIC0xNDMsNiAr MTQzLDEwIEBAIGV4dGVybiBpbnQJcGFydGl0aW9uX3JhbmdlX2RhdHVtX2JzZWFyY2goRm1n ckluZm8gKnBhcnRzdXBmdW5jLAogZXh0ZXJuIGludAlwYXJ0aXRpb25faGFzaF9ic2VhcmNo KFBhcnRpdGlvbkJvdW5kSW5mbyBib3VuZGluZm8sCiAJCQkJCQkJCSAgIGludCBtb2R1bHVz LCBpbnQgcmVtYWluZGVyKTsKIAorZXh0ZXJuIHZvaWQgY2hlY2tfcGFydGl0aW9uc19mb3Jf c3BsaXQoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkJICAgT2lkIHNwbGl0UGFydE9pZCwK KwkJCQkJCQkJCSAgIExpc3QgKnBhcnRsaXN0LAorCQkJCQkJCQkJICAgUGFyc2VTdGF0ZSAq cHN0YXRlKTsKIGV4dGVybiB2b2lkIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21l cmdlKFJlbGF0aW9uIHBhcmVudCwKIAkJCQkJCQkJCQkJCUxpc3QgKnBhcnROYW1lcywKIAkJ CQkJCQkJCQkJCUxpc3QgKnBhcnRPaWRzLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRp bHMvcnVsZXV0aWxzLmggYi9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaAppbmRleCA3 YmE3ZDg4NzkxLi43MjZlNDE4MTkzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9y dWxldXRpbHMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaApAQCAtNTQs NCArNTQsNiBAQCBleHRlcm4gY2hhciAqZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJpbmcoTGlz dCAqYm91bmRfZGF0dW1zKTsKIAogZXh0ZXJuIGNoYXIgKnBnX2dldF9zdGF0aXN0aWNzb2Jq ZGVmX3N0cmluZyhPaWQgc3RhdGV4dGlkKTsKIAorZXh0ZXJuIGNoYXIgKmdldF9saXN0X3Bh cnR2YWx1ZV9zdHJpbmcoQ29uc3QgKnZhbCk7CisKICNlbmRpZgkJCQkJCQkvKiBSVUxFVVRJ TFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRp dGlvbi1zcGxpdC5vdXQgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9u LXNwbGl0Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wMmE1 YmI0ZjFmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVk L3BhcnRpdGlvbi1zcGxpdC5vdXQKQEAgLTAsMCArMSwyMzAgQEAKK1BhcnNlZCB0ZXN0IHNw ZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWIgczFzcGx0 IHMyYiBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFiOiBCRUdJTjsKK3N0ZXAgczFzcGx0OiBB TFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJ ICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUp LAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBU TyAoMjApKTsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFy dCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1J VDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVw IHMyczogU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHRwYXJ0IE9SREVSIEJZ IHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgaTsKK3RhYmxlb2lkICAg ICB8IGl8dCAgICAgCistLS0tLS0tLS0tLS0tKy0tKy0tLS0tLQordHBhcnRfMDBfMTAgIHwg MXx0ZXh0MDEKK3RwYXJ0XzAwXzEwICB8IDV8dGV4dDA1Cit0cGFydF8xNV8yMCAgfDE1fHRl eHQxNQordHBhcnRfMjBfMzAgIHwyNXx0ZXh0MjUKK3RwYXJ0X2RlZmF1bHR8MzV8dGV4dDM1 CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWIgczFzcGx0IHMyYnJy IHMyaSBzMWMgczJjIHMycworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMXNwbHQ6IEFMVEVS IFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAo UEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJ CQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgy MCkpOworc3RlcCBzMmJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVB RDsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsg PHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBs ZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUIHRhYmxlb2lkOjpy ZWdjbGFzcywgKiBGUk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4 dCBDT0xMQVRFICJDIiwgaTsKK3RhYmxlb2lkICAgICB8IGl8dCAgICAgCistLS0tLS0tLS0t LS0tKy0tKy0tLS0tLQordHBhcnRfMDBfMTAgIHwgMXx0ZXh0MDEKK3RwYXJ0XzAwXzEwICB8 IDV8dGV4dDA1Cit0cGFydF8xNV8yMCAgfDE1fHRleHQxNQordHBhcnRfMjBfMzAgIHwyNXx0 ZXh0MjUKK3RwYXJ0X2RlZmF1bHR8MzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5n IHBlcm11dGF0aW9uOiBzMWIgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMgczJzCitzdGVwIHMx YjogQkVHSU47CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElU SU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9S IFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVf MjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYnM6IEJFR0lOIElT T0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBh cnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01N SVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3Rl cCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBC WSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAg ICAgfCBpfHQgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0KK3RwYXJ0XzAwXzEwICB8 IDF8dGV4dDAxCit0cGFydF8wMF8xMCAgfCA1fHRleHQwNQordHBhcnRfMTVfMjAgIHwxNXx0 ZXh0MTUKK3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1Cit0cGFydF9kZWZhdWx0fDM1fHRleHQz NQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFicnIgczFzcGx0IHMy YiBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBS RVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQg UEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBf MTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBh cnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYjogQkVH SU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7 IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21w bGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6 cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRl eHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgIAorLS0tLS0tLS0t LS0tLSstLSstLS0tLS0KK3RwYXJ0XzAwXzEwICB8IDF8dGV4dDAxCit0cGFydF8wMF8xMCAg fCA1fHRleHQwNQordHBhcnRfMTVfMjAgIHwxNXx0ZXh0MTUKK3RwYXJ0XzIwXzMwICB8MjV8 dGV4dDI1Cit0cGFydF9kZWZhdWx0fDM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGlu ZyBwZXJtdXRhdGlvbjogczFicnIgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworc3Rl cCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAg czFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAg SU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEw KSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZS T00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBS RVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgx LCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMy aTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVD VCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6 cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAg IAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0KK3RwYXJ0XzAwXzEwICB8IDF8dGV4dDAxCit0 cGFydF8wMF8xMCAgfCA1fHRleHQwNQordHBhcnRfMTVfMjAgIHwxNXx0ZXh0MTUKK3RwYXJ0 XzIwXzMwICB8MjV8dGV4dDI1Cit0cGFydF9kZWZhdWx0fDM1fHRleHQzNQorKDUgcm93cykK KworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFicnIgczFzcGx0IHMyYnMgczJpIHMxYyBz MmMgczJzCitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBS RUFEOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0 cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxV RVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZP UiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJ T04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZB TFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOwor c3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJz OiBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkgdGFi bGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQgICAgIHwg aXx0ICAgICAKKy0tLS0tLS0tLS0tLS0rLS0rLS0tLS0tCit0cGFydF8wMF8xMCAgfCAxfHRl eHQwMQordHBhcnRfMDBfMTAgIHwgNXx0ZXh0MDUKK3RwYXJ0XzE1XzIwICB8MTV8dGV4dDE1 Cit0cGFydF8yMF8zMCAgfDI1fHRleHQyNQordHBhcnRfZGVmYXVsdHwzNXx0ZXh0MzUKKyg1 IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnMgczFzcGx0IHMyYiBzMmkg czFjIHMyYyBzMnMKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTEla QUJMRTsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04g dHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFM VUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBG T1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAg czJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcg Li4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0 ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywg KiBGUk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRF ICJDIiwgaTsKK3RhYmxlb2lkICAgICB8IGl8dCAgICAgCistLS0tLS0tLS0tLS0tKy0tKy0t LS0tLQordHBhcnRfMDBfMTAgIHwgMXx0ZXh0MDEKK3RwYXJ0XzAwXzEwICB8IDV8dGV4dDA1 Cit0cGFydF8xNV8yMCAgfDE1fHRleHQxNQordHBhcnRfMjBfMzAgIHwyNXx0ZXh0MjUKK3Rw YXJ0X2RlZmF1bHR8MzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0 aW9uOiBzMWJzIHMxc3BsdCBzMmJyciBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFiczogQkVH SU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFzcGx0OiBBTFRFUiBU QUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBB UlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJ ICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjAp KTsKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7 CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3 YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0 ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVn Y2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQg Q09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgIAorLS0tLS0tLS0tLS0t LSstLSstLS0tLS0KK3RwYXJ0XzAwXzEwICB8IDF8dGV4dDAxCit0cGFydF8wMF8xMCAgfCA1 fHRleHQwNQordHBhcnRfMTVfMjAgIHwxNXx0ZXh0MTUKK3RwYXJ0XzIwXzMwICB8MjV8dGV4 dDI1Cit0cGFydF9kZWZhdWx0fDM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBw ZXJtdXRhdGlvbjogczFicyBzMXNwbHQgczJicyBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFi czogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFzcGx0OiBB TFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJ ICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUp LAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBU TyAoMjApKTsKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJM RTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsg PHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBs ZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUIHRhYmxlb2lkOjpy ZWdjbGFzcywgKiBGUk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4 dCBDT0xMQVRFICJDIiwgaTsKK3RhYmxlb2lkICAgICB8IGl8dCAgICAgCistLS0tLS0tLS0t LS0tKy0tKy0tLS0tLQordHBhcnRfMDBfMTAgIHwgMXx0ZXh0MDEKK3RwYXJ0XzAwXzEwICB8 IDV8dGV4dDA1Cit0cGFydF8xNV8yMCAgfDE1fHRleHQxNQordHBhcnRfMjBfMzAgIHwyNXx0 ZXh0MjUKK3RwYXJ0X2RlZmF1bHR8MzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5n IHBlcm11dGF0aW9uOiBzMWIgczFzcGx0IHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczFi OiBCRUdJTjsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJ T04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1Ig VkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8y MCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0 ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIGkgPSAxNiB3aGVyZSBpID0gNTsgPHdhaXRpbmcg Li4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0 ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywg KiBGUk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRF ICJDIiwgaTsKK3RhYmxlb2lkICAgICB8IGl8dCAgICAgCistLS0tLS0tLS0tLS0tKy0tKy0t LS0tLQordHBhcnRfMTVfMjAgIHwxNXx0ZXh0MTUKK3RwYXJ0XzE1XzIwICB8MTZ8dGV4dDA1 Cit0cGFydF8yMF8zMCAgfDI1fHRleHQyNQordHBhcnRfZGVmYXVsdHwzNXx0ZXh0MzUKKyg0 IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYiBzMXNwbHQgczJiIHMydTIg czFjIHMyYyBzMnMKK3N0ZXAgczFiOiBCRUdJTjsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJM RSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJ VElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAg IFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsK K3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1MjogVVBEQVRFIHRwYXJ0IFNFVCBpID0gMTEg d2hlcmUgaSA9IDE1OyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBz MnUyOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VM RUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lk OjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgaTsKK3RhYmxlb2lkICAgICB8IGl8dCAg ICAgCistLS0tLS0tLS0tLS0tKy0tKy0tLS0tLQordHBhcnRfMDBfMTAgIHwgNXx0ZXh0MDUK K3RwYXJ0XzEwXzE1ICB8MTF8dGV4dDE1Cit0cGFydF8yMF8zMCAgfDI1fHRleHQyNQordHBh cnRfZGVmYXVsdHwzNXx0ZXh0MzUKKyg0IHJvd3MpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNv bGF0aW9uX3NjaGVkdWxlCmluZGV4IDg1NDE1NDY2NzguLjg1MDNkZDgwMWEgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKKysrIGIvc3JjL3Rl c3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQpAQCAtMTExLDYgKzExMSw3IEBAIHRl c3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRlLTIKIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRl LTMKIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRlLTQKIHRlc3Q6IHBhcnRpdGlvbi1tZXJn ZQordGVzdDogcGFydGl0aW9uLXNwbGl0CiB0ZXN0OiBwbHBnc3FsLXRvYXN0CiB0ZXN0OiBj bHVzdGVyLWNvbmZsaWN0CiB0ZXN0OiBjbHVzdGVyLWNvbmZsaWN0LXBhcnRpdGlvbgpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxpdC5zcGVj IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxpdC5zcGVjCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmFmOTU0YmU1ZGMKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLXNwbGl0LnNw ZWMKQEAgLTAsMCArMSw2MiBAQAorIyBWZXJpZnkgdGhhdCBTUExJVCBvcGVyYXRpb24gbG9j a3MgRE1MIG9wZXJhdGlvbnMgd2l0aCBwYXJ0aXRpb25lZCB0YWJsZQorCitzZXR1cAorewor ICBEUk9QIFRBQkxFIElGIEVYSVNUUyB0cGFydDsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0KGkg aW50LCB0IHRleHQpIHBhcnRpdGlvbiBieSByYW5nZShpKTsKKyAgQ1JFQVRFIFRBQkxFIHRw YXJ0XzAwXzEwIFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgx MCk7CisgIENSRUFURSBUQUJMRSB0cGFydF8xMF8yMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9S IFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzIwXzMw IFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworICBD UkVBVEUgVEFCTEUgdHBhcnRfZGVmYXVsdCBQQVJUSVRJT04gT0YgdHBhcnQgREVGQVVMVDsK KyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICg1LCAndGV4dDA1Jyk7CisgIElOU0VSVCBJ TlRPIHRwYXJ0IFZBTFVFUyAoMTUsICd0ZXh0MTUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQg VkFMVUVTICgyNSwgJ3RleHQyNScpOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDM1 LCAndGV4dDM1Jyk7Cit9CisKK3RlYXJkb3duCit7CisgIERST1AgVEFCTEUgdHBhcnQ7Cit9 CisKK3Nlc3Npb24gczEKK3N0ZXAgczFiCXsgQkVHSU47IH0KK3N0ZXAgczFicnIJeyBCRUdJ TiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOyB9CitzdGVwIHMxYnMJeyBCRUdJ TiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOyB9CitzdGVwIHMxc3BsdAl7IEFMVEVS IFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAo UEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJ CQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgy MCkpOyB9CitzdGVwIHMxYwl7IENPTU1JVDsgfQorCisKK3Nlc3Npb24gczIKK3N0ZXAgczJi CXsgQkVHSU47IH0KK3N0ZXAgczJicnIJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFU QUJMRSBSRUFEOyB9CitzdGVwIHMyYnMJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFM SVpBQkxFOyB9CitzdGVwIHMyaQl7IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3Rl eHQwMScpOyB9CitzdGVwIHMyYwl7IENPTU1JVDsgfQorc3RlcCBzMnMJeyBTRUxFQ1QgdGFi bGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2Ns YXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOyB9CitzdGVwIHMydQl7IFVQREFURSB0cGFydCBT RVQgaSA9IDE2IHdoZXJlIGkgPSA1OyB9CitzdGVwIHMydTIJeyBVUERBVEUgdHBhcnQgU0VU IGkgPSAxMSB3aGVyZSBpID0gMTU7IH0KKworCisjIHMxIHN0YXJ0cyBTUExJVCBQQVJUSVRJ T04gdGhlbiBzMiB0cnlpbmcgdG8gaW5zZXJ0IHJvdyBhbmQKKyMgd2FpdHMgdW50aWwgczEg ZmluaXNoZWQgU1BMSVQgb3BlcmF0aW9uLgorCitwZXJtdXRhdGlvbiBzMWIgczFzcGx0IHMy YiBzMmkgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMxYiBzMXNwbHQgczJicnIgczJpIHMx YyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMWIgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMgczJz CisKK3Blcm11dGF0aW9uIHMxYnJyIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitwZXJt dXRhdGlvbiBzMWJyciBzMXNwbHQgczJicnIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlv biBzMWJyciBzMXNwbHQgczJicyBzMmkgczFjIHMyYyBzMnMKKworcGVybXV0YXRpb24gczFi cyBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFicyBzMXNwbHQg czJicnIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMWJzIHMxc3BsdCBzMmJzIHMy aSBzMWMgczJjIHMycworCisjIFR1cGxlIHJvdXRpbmcgYmV0d2VlbiBwYXJ0aXRpb25zLgor cGVybXV0YXRpb24gczFiIHMxc3BsdCBzMmIgczJ1IHMxYyBzMmMgczJzCisKKyMgVHVwbGUg cm91dGluZyBpbnNpZGUgc3BsaXR0aW5nIHBhcnRpdGlvbi4KK3Blcm11dGF0aW9uIHMxYiBz MXNwbHQgczJiIHMydTIgczFjIHMyYyBzMnMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9kZGxfZGVwYXJzZS9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0Cmlu ZGV4IGM0MDNjMmY1NjkuLjEzY2NmYjc0ZjUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9kZGxfZGVwYXJzZS9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91 dApAQCAtNjEsNiArNjEsMTEgQEAgTk9USUNFOiAgRERMIHRlc3Q6IHR5cGUgc2ltcGxlLCB0 YWcgQ1JFQVRFIFRBQkxFCiBBTFRFUiBUQUJMRSBwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHBh cnQxLCBwYXJ0MikgSU5UTyBwYXJ0MTsKIE5PVElDRTogIERETCB0ZXN0OiB0eXBlIGFsdGVy IHRhYmxlLCB0YWcgQUxURVIgVEFCTEUKIE5PVElDRTogICAgc3ViY29tbWFuZDogdHlwZSBN RVJHRSBQQVJUSVRJT05TIGRlc2MgPE5VTEw+CitBTFRFUiBUQUJMRSBwYXJ0IFNQTElUIFBB UlRJVElPTiBwYXJ0MSBJTlRPCisJKFBBUlRJVElPTiBwYXJ0MSBGT1IgVkFMVUVTIEZST00g KDEpIHRvICgxMDApLAorCSBQQVJUSVRJT04gcGFydDIgRk9SIFZBTFVFUyBGUk9NICgxMDAp IHRvICgyMDApKTsKK05PVElDRTogIERETCB0ZXN0OiB0eXBlIGFsdGVyIHRhYmxlLCB0YWcg QUxURVIgVEFCTEUKK05PVElDRTogICAgc3ViY29tbWFuZDogdHlwZSBTUExJVCBQQVJUSVRJ T04gZGVzYyA8TlVMTD4KIEFMVEVSIFRBQkxFIHBhcnQgQUREIFBSSU1BUlkgS0VZIChhKTsK IE5PVElDRTogIERETCB0ZXN0OiB0eXBlIGFsdGVyIHRhYmxlLCB0YWcgQUxURVIgVEFCTEUK IE5PVElDRTogICAgc3ViY29tbWFuZDogdHlwZSBBREQgQ09OU1RSQUlOVCAoYW5kIHJlY3Vy c2UpIGRlc2MgY29uc3RyYWludCBwYXJ0X2Ffbm90X251bGwgb24gdGFibGUgcGFydApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3NxbC9hbHRlcl90 YWJsZS5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2Uvc3FsL2FsdGVy X3RhYmxlLnNxbAppbmRleCAzMWU2OTEwMGEzLi4xZTc1ZmVhYTQ1IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2Uvc3FsL2FsdGVyX3RhYmxlLnNxbAor KysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2Uvc3FsL2FsdGVyX3RhYmxl LnNxbApAQCAtMzgsNiArMzgsMTAgQEAgRFJPUCBUQUJMRSBwYXJ0MjsKIENSRUFURSBUQUJM RSBwYXJ0MiBQQVJUSVRJT04gT0YgcGFydCBGT1IgVkFMVUVTIEZST00gKDEwMCkgdG8gKDIw MCk7CiBBTFRFUiBUQUJMRSBwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHBhcnQxLCBwYXJ0Mikg SU5UTyBwYXJ0MTsKIAorQUxURVIgVEFCTEUgcGFydCBTUExJVCBQQVJUSVRJT04gcGFydDEg SU5UTworCShQQVJUSVRJT04gcGFydDEgRk9SIFZBTFVFUyBGUk9NICgxKSB0byAoMTAwKSwK KwkgUEFSVElUSU9OIHBhcnQyIEZPUiBWQUxVRVMgRlJPTSAoMTAwKSB0byAoMjAwKSk7CisK IEFMVEVSIFRBQkxFIHBhcnQgQUREIFBSSU1BUlkgS0VZIChhKTsKIAogQUxURVIgVEFCTEUg cGFyZW50IEFMVEVSIENPTFVNTiBhIFNFVCBOT1QgTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCmluZGV4 IDdkZTVkZGI4NzguLjE3ZDcyZTQxMmYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwpAQCAtMjk2LDYgKzI5 Niw5IEBAIGdldF9hbHRlcnRhYmxlX3N1YmNtZGluZm8oUEdfRlVOQ1RJT05fQVJHUykKIAkJ CWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6CiAJCQkJc3RydHlwZSA9ICJERVRB Q0ggUEFSVElUSU9OIC4uLiBGSU5BTElaRSI7CiAJCQkJYnJlYWs7CisJCQljYXNlIEFUX1Nw bGl0UGFydGl0aW9uOgorCQkJCXN0cnR5cGUgPSAiU1BMSVQgUEFSVElUSU9OIjsKKwkJCQli cmVhazsKIAkJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgogCQkJCXN0cnR5cGUgPSAiTUVS R0UgUEFSVElUSU9OUyI7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uZjg0NTM0M2Q4MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dApAQCAtMCwwICsxLDE2NDUgQEAK Ky0tCistLSBQQVJUSVRJT05fU1BMSVQKKy0tIFRlc3RzIGZvciAiQUxURVIgVEFCTEUgLi4u IFNQTElUIFBBUlRJVElPTiAuLi4iIGNvbW1hbmQKKy0tCitDUkVBVEUgU0NIRU1BIHBhcnRp dGlvbl9zcGxpdF9zY2hlbWE7CitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hl bWEyOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uX3NwbGl0X3NjaGVtYSwgcHVibGlj OworLS0KKy0tIEJZIFJBTkdFIHBhcnRpdGlvbmluZworLS0KKy0tCistLSBUZXN0IGZvciBl cnJvciBjb2RlcworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25f aWQgaW50LCBzYWxlc3BlcnNvbl9uYW1lIHZhcmNoYXIoMzApLCBzYWxlc19hbW91bnQgaW50 LCBzYWxlc19kYXRlIGRhdGUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JF QVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVM VDsKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX3h4eCIgZG9lcyBub3QgZXhpc3QKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc194eHggSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRP ICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVzX3h4eCIgZG9lcyBu b3QgZXhpc3QKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbjIwMjIiIGFscmVhZHkg ZXhpc3RzCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNf ZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAo JzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIHJlbGF0 aW9uICJzYWxlc19qYW4yMDIyIiBhbHJlYWR5IGV4aXN0cworLS0gRVJST1I6ICBpbnZhbGlk IGJvdW5kIHNwZWNpZmljYXRpb24gZm9yIGEgcmFuZ2UgcGFydGl0aW9uCitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgSU4gKCcyMDIyLTA1 LTAxJywgJzIwMjItMDYtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKSk7CitFUlJPUjogIGludmFsaWQgYm91bmQgc3BlY2lmaWNhdGlvbiBm b3IgYSByYW5nZSBwYXJ0aXRpb24KK0xJTkUgMjogICAoUEFSVElUSU9OIHNhbGVzX2phbjIw MjIgRk9SIFZBTFVFUyBJTiAoJzIwMjItMDUtMDEnLCAnMjAyLi4uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBlbXB0eSBy YW5nZSBib3VuZCBzcGVjaWZpZWQgZm9yIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2Fw cjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMi0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgZW1wdHkgcmFuZ2UgYm91 bmQgc3BlY2lmaWVkIGZvciBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiCitMSU5FIDM6ICAg IFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEn KSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KK0RFVEFJTDogIFNwZWNpZmllZCBsb3dlciBib3VuZCAoJzAzLTAxLTIwMjIn KSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdXBwZXIgYm91bmQgKCcwMi0wMS0yMDIy JykuCistLUVSUk9SOiAgbGlzdCBvZiBzcGxpdCBwYXJ0aXRpb25zIHNob3VsZCBjb250YWlu IGF0IGxlYXN0IHR3byBpdGVtcworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTEwLTAx JykpOworRVJST1I6ICBsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0 IGxlYXN0IHR3byBwYXJ0aXRpb25zCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRp dGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9mIHNw bGl0IHBhcnRpdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgorLS0gSElOVDogIEFMVEVS IFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmUgY29tYmluZWQgYm91bmRzIG9m IG5ldyBwYXJ0aXRpb25zIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQgb2YgdGhlIHNw bGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6 ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVh bCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2ZlYl9tYXJfYXBy MjAyMiIKK0xJTkUgMjogICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMS0wMScpIFRPLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJH RSBQQVJUSVRJT05TIHJlcXVpcmUgY29tYmluZWQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25z IG11c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbgor LS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWJfbWFyX2FwcjIwMjIi IGlzIGFscmVhZHkgdXNlZAorLS0gKFdlIGNhbiBjcmVhdGUgcGFydGl0aW9uIHdpdGggdGhl IHNhbWUgbmFtZSBhcyBzcGxpdCBwYXJ0aXRpb24sIGJ1dCBjYW4ndCBjcmVhdGUgdHdvIHBh cnRpdGlvbnMgd2l0aCB0aGUgc2FtZSBuYW1lKQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug U1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfZmViX21hcl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAi c2FsZXNfZmViX21hcl9hcHIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUgMzogICAgUEFS VElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz Li4uCisgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIHBhcnRpdGlvbiB3aXRo IG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8g KCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19m ZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPLi4uCisgICAgICAgICAg ICAgICAgICAgICBeCistLSBFUlJPUjogIHBhcnRpdGlvbiB3aXRoIG5hbWUgInNhbGVzX2Zl YjIwMjIiIGlzIGFscmVhZHkgdXNlZAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAz LTAxJyksCisgICBQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIHBhcnRpdGlvbiB3aXRoIG5hbWUg InNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAorTElORSAzOiAgICBQQVJUSVRJT04g cGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMuLi4KKyAg ICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgQUxURVIgYWN0aW9uIFNQTElUIFBB UlRJVElPTiBjYW5ub3QgYmUgcGVyZm9ybWVkIG9uIHJlbGF0aW9uICJzYWxlc19mZWJfbWFy X2FwcjIwMjIiCistLSBERVRBSUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVk IGZvciB0YWJsZXMuCitBTFRFUiBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAz LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykp OworRVJST1I6ICBBTFRFUiBhY3Rpb24gU1BMSVQgUEFSVElUSU9OIGNhbm5vdCBiZSBwZXJm b3JtZWQgb24gcmVsYXRpb24gInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIKK0RFVEFJTDogIFRo aXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRhYmxlcy4KKy0tIEVSUk9SOiAg dXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBpcyBub3QgZXF1YWwg dG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uICJzYWxlc19mZWJfbWFyX2FwcjIw MjIiCistLSBISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgcmVxdWly ZSBjb21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNo IHRoZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDYtMDEnKSk7CitFUlJPUjogIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNf YXByMjAyMiIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlv biAic2FsZXNfZmViX21hcl9hcHIyMDIyIgorTElORSA0OiAuLi4gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAuLi4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgcmVxdWlyZSBj b21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRo ZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uCistLSBFUlJPUjogIGNhbiBub3Qgc3Bs aXQgdG8gcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiB0b2dldGhlciB3aXRoIHBhcnRpdGlv biAic2FsZXNfZmViMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJ VElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w Mi0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VS Uk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIHRvZ2V0 aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIgorTElORSAzOiAgICBQQVJUSVRJ T04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8uLi4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CitERVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGlz IG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIy MDIyIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT05TIHJlcXVpcmVz IHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LgorLS0gVGVzdHMgZm9yIHNw YWNlcyBiZXR3ZWVuIHBhcnRpdGlvbnMsIHRoZW0gc2hvdWxkIGJlIGV4ZWN1dGVkIHdpdGhv dXQgREVGQVVMVCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIERFVEFDSCBQ QVJUSVRJT04gc2FsZXNfb3RoZXJzOworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0 aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBz cGxpdCBwYXJ0aXRpb24gInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIKKy0tIEhJTlQ6ICBBTFRF UiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBv ZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBz cGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElP TiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMicpIFRPICgnMjAyMi0wMy0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9S OiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1 YWwgdG8gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uICJzYWxlc19mZWJfbWFyX2Fw cjIwMjIiCitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDInKSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVS R0UgUEFSVElUSU9OUyByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9u cyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24K Ky0tIENoZWNrIHRoZSBzb3VyY2UgcGFydGl0aW9uIG5vdCBpbiB0aGUgc2VhcmNoIHBhdGgK K1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLCBwdWJsaWM7CitB TFRFUiBUQUJMRSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX3JhbmdlCitTUExJVCBQ QVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWJfbWFyX2FwcjIwMjIg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpKTsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9z cGxpdF9zY2hlbWEsIHB1YmxpYzsKK1xkKyBzYWxlc19yYW5nZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUGFydGl0aW9uZWQgdGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hl bWEuc2FsZXNfcmFuZ2UiCisgICAgICBDb2x1bW4gICAgICB8ICAgICAgICAgVHlwZSAgICAg ICAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgIHwgU3Rh dHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8 IGludGVnZXIgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAg ICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8IGNo YXJhY3RlciB2YXJ5aW5nKDMwKSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8 IGV4dGVuZGVkIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNfYW1vdW50ICAgICB8IGludGVn ZXIgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBs YWluICAgIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNfZGF0ZSAgICAgICB8IGRhdGUgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWlu ICAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24ga2V5OiBSQU5HRSAoc2FsZXNfZGF0 ZSkKK1BhcnRpdGlvbnM6IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX2FwcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMDQtMDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicpLAorICAg ICAgICAgICAgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfZmViMjAyMiBGT1IgVkFM VUVTIEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcwMy0wMS0yMDIyJyksCisgICAgICAgICAg ICBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzAzLTAxLTIwMjInKSBUTyAoJzA0LTAxLTIwMjInKSwKKyAgICAgICAgICAgIHNhbGVz X2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgnMDItMDEtMjAy MicpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CitEUk9QIFRBQkxFIHNhbGVzX290aGVy czsKKy0tCistLSBBZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4gc3BsaXQg cGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9p ZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQs IHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxU OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAg MTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0w Mi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0 LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAg ICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIy LTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAg KDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXIn LCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIw MjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAor ICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRp JywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAn MjAyMi0wNS0wNCcpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworU0VMRUNU IHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxl b2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisgICB0 YWJsZW9pZCAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVz X2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgc2Fs ZXNfYXByMjAyMiB8ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAg ICAgMjAwMCB8IDA0LTMwLTIwMjIKKyBzYWxlc19hcHIyMDIyIHwgICAgICAgICAgICAgIDQg fCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorIHNhbGVz X2FwcjIwMjIgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAg ICAyNTAgfCAwNC0wNy0yMDIyCisgc2FsZXNfYXByMjAyMiB8ICAgICAgICAgICAgIDExIHwg VHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyBzYWxlc19m ZWIyMDIyIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAg NTAwIHwgMDItMTAtMjAyMgorIHNhbGVzX2ZlYjIwMjIgfCAgICAgICAgICAgICAgNiB8IFBv aXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgc2FsZXNfZmVi MjAyMiB8ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4 NSB8IDAyLTIzLTIwMjIKKyBzYWxlc19qYW4yMDIyIHwgICAgICAgICAgICAgIDEgfCBNYXkg ICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorIHNhbGVzX2phbjIw MjIgfCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAg fCAwMS0yOC0yMDIyCisgc2FsZXNfamFuMjAyMiB8ICAgICAgICAgICAgIDEzIHwgR2FuZGkg ICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyBzYWxlc19tYXIyMDIy IHwgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwg MDMtMDgtMjAyMgorIHNhbGVzX21hcjIwMjIgfCAgICAgICAgICAgICAgOSB8IE11bGxlciAg ICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgc2FsZXNfbWFyMjAyMiB8 ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAz LTE5LTIwMjIKKyBzYWxlc19vdGhlcnMgIHwgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAg ICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK0RST1Ag VEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKy0tCistLSBBZGQgc3BsaXQgcGFydGl0aW9u LCB0aGVuIGFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUKKy0tCitDUkVBVEUgVEFC TEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBW QVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJ T04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEn KSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIw MjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBTcGxpdCBwYXJ0aXRpb24sIGFs c28gY2hlY2sgc2NoZW1hIHF1YWxpZmljYXRpb24gb2YgbmV3IHBhcnRpdGlvbnMKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIw MjIgSU5UTworICAoUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyks CisgICBQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfbWFyMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJykpOworXGQrIHNhbGVzX3JhbmdlCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQYXJ0aXRpb25lZCB0YWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVt YS5zYWxlc19yYW5nZSIKKyAgICAgIENvbHVtbiAgICAgIHwgICAgICAgICBUeXBlICAgICAg ICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3RvcmFnZSAgfCBTdGF0 cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwg aW50ZWdlciAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAg IHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKKyBzYWxlc3BlcnNvbl9uYW1lIHwgY2hh cmFjdGVyIHZhcnlpbmcoMzApIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwg ZXh0ZW5kZWQgfCAgICAgICAgICAgICAgfCAKKyBzYWxlc19hbW91bnQgICAgIHwgaW50ZWdl ciAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxh aW4gICAgfCAgICAgICAgICAgICAgfCAKKyBzYWxlc19kYXRlICAgICAgIHwgZGF0ZSAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4g ICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6IFJBTkdFIChzYWxlc19kYXRl KQorUGFydGl0aW9uczogcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfbWFyMjAyMiBG T1IgVkFMVUVTIEZST00gKCcwMy0wMS0yMDIyJykgVE8gKCcwNC0wMS0yMDIyJyksCisgICAg ICAgICAgICBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzA0LTAxLTIwMjInKSBU TyAoJzA1LTAxLTIwMjInKSwKKyAgICAgICAgICAgIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMDItMDEtMjAyMicpIFRPICgnMDMtMDEtMjAyMicpLAorICAgICAgICAgICAg c2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIyJykgVE8gKCcwMi0w MS0yMDIyJyksCisgICAgICAgICAgICBzYWxlc19vdGhlcnMgREVGQVVMVAorCitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAy Mi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisg ICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92 JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcy MDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwK KyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmlj c3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAg JzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcp LAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1Bs YXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcs ICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0 Jyk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JE RVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNv bl9pZDsKKyAgICAgICAgICAgICAgIHRhYmxlb2lkICAgICAgICAgICAgICAgIHwgc2FsZXNw ZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0 ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIHwgICAgICAgICAgICAg IDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorIHBh cnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX21hcjIwMjIgfCAgICAgICAgICAgICAgOSB8 IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgcGFydGl0 aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfbWFyMjAyMiB8ICAgICAgICAgICAgIDEyIHwgUGxh dG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyBzYWxlc19hcHIy MDIyICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIDMgfCBGb3JkICAg ICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorIHNhbGVzX2FwcjIwMjIg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAg ICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgc2FsZXNfYXByMjAyMiAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAg ICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwg ICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorIHNhbGVzX2ZlYjIwMjIgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAg ICAgICA1MDAgfCAwMi0xMC0yMDIyCisgc2FsZXNfZmViMjAyMiAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAg IDE1MCB8IDAyLTExLTIwMjIKKyBzYWxlc19mZWIyMDIyICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1 IHwgMDItMjMtMjAyMgorIHNhbGVzX2phbjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAw MS0zMS0yMDIyCisgc2FsZXNfamFuMjAyMiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4 LTIwMjIKKyBzYWxlc19qYW4yMDIyICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAy MgorIHNhbGVzX290aGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCiso MTQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworLS0KKy0tIFRl c3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAqIEdFTkVS QVRFRCBjb2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4KKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwg c2FsZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2Fs ZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2Fs ZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6dGV4 dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcwJykpIFNU T1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxlcyBk ZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIxIFBBUlRJVElP TiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMSwgMTIsIDEpIFRPICgyMDIy LCAxLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW5fZmViMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAzLCAx KTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlciBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBG T1IgVkFMVUVTIEZST00gKDIwMjIsIDMsIDEpIFRPIChNQVhWQUxVRSwgTUFYVkFMVUUsIE1B WFZBTFVFKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2Fs ZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCisgICgnTWFuYWdlcjEn LCAyMDIxLCAxMiwgNyksCisgICgnTWFuYWdlcjInLCAyMDIxLCAxMiwgOCksCisgICgnTWFu YWdlcjMnLCAyMDIyLCAxLCAxKSwKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDIsIDQpLAorICAo J01hbmFnZXIyJywgMjAyMiwgMSwgMiksCisgICgnTWFuYWdlcjMnLCAyMDIyLCAyLCAxKSwK KyAgKCdNYW5hZ2VyMScsIDIwMjIsIDMsIDMpLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMywg NCksCisgICgnTWFuYWdlcjMnLCAyMDIyLCA1LCAxKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVn Y2xhc3MsICogRlJPTSBzYWxlc19kYXRlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6 dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheTsK KyAgICAgdGFibGVvaWQgICAgICB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwg c2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVu dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0KKyBzYWxlc19kZWMyMDIxICAgICB8IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAy MDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVw YXJ0bWVudAorIHNhbGVzX2RlYzIwMjEgICAgIHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAg IDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBk ZXBhcnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5hZ2VyMyAgICAgICAgIHwgICAg ICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNhbGVz IGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1hbmFnZXIyICAgICAgICAgfCAg ICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2Fs ZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdlcjMgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBT YWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5hZ2VyMSAgICAgICAg IHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4wMi4wNCB8 IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhlciAgICAgICB8IE1hbmFnZXIxICAgICAg ICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAzLjAz IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAgICAgIHwgTWFuYWdlcjIgICAg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMu MDQgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3RoZXIgICAgICAgfCBNYW5hZ2VyMyAg ICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4w NS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyg5IHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVz X2RhdGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2phbl9mZWIyMDIyIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIw MjIsIDIsIDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgyMDIyLCAyLCAxKSBUTyAoMjAyMiwgMywgMSkpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0 ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5 KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDEsIDEwKSwKKyAgKCdNYW5hZ2VyMics IDIwMjIsIDIsIDEwKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxl c19kYXRlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwg c2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheTsKKyAgIHRhYmxlb2lkICAgIHwg c2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2Rh eSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfZGVjMjAyMSB8IE1h bmFnZXIxICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcg fCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2RlYzIwMjEgfCBNYW5h Z2VyMiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwg MjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19mZWIyMDIyIHwgTWFuYWdl cjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIw MjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfZmViMjAyMiB8IE1hbmFnZXIx ICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIy LjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2ZlYjIwMjIgfCBNYW5hZ2VyMiAg ICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgIDEwIHwgMjAyMi4w Mi4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW4yMDIyIHwgTWFuYWdlcjMgICAg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEu MDEgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuMjAyMiB8IE1hbmFnZXIyICAgICAg ICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAy IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbjIwMjIgfCBNYW5hZ2VyMSAgICAgICAg IHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgIDEwIHwgMjAyMi4wMS4xMCB8 IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhlciAgIHwgTWFuYWdlcjEgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBT YWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3RoZXIgICB8IE1hbmFnZXIyICAgICAgICAgfCAg ICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2Fs ZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAgfCBNYW5hZ2VyMyAgICAgICAgIHwgICAg ICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVz IGRlcGFydG1lbnQKKygxMSByb3dzKQorCistLUVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2ph bl9mZWIyMDIyIiBkb2VzIG5vdCBleGlzdAorU0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmVi MjAyMjsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbl9mZWIyMDIyIiBkb2VzIG5vdCBl eGlzdAorTElORSAxOiBTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbl9mZWIyMDIyOworICAgICAg ICAgICAgICAgICAgICAgIF4KK0RST1AgVEFCTEUgc2FsZXNfZGF0ZSBDQVNDQURFOworLS0K Ky0tIFRlc3Q6IHNwbGl0IERFRkFVTFQgcGFydGl0aW9uOyB1c2UgYW4gaW5kZXggb24gcGFy dGl0aW9uIGtleTsgY2hlY2sgaW5kZXggYWZ0ZXIgc3BsaXQKKy0tCitDUkVBVEUgVEFCTEUg c2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJD SEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04g QlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBU TyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2Fs ZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAw MCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0x MCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAg J0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAy NTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAy LTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgs ICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAg IDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjIt MDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAo MTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywg ICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAy Mi0wNS0wNCcpOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7Cisgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAg IDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAg fCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3Yg ICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICA1 IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAg ICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0y MDIyCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1 IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAg ICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAg ICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTEgfCBU cnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAg ICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIK KyAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAw NS0wNC0yMDIyCisoMTEgcm93cykKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJF IHRhYmxlbmFtZSA9ICdzYWxlc19vdGhlcnMnIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlv bl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZSBDT0xMQVRFICJDIjsKKyAgICAg ICBzY2hlbWFuYW1lICAgICAgIHwgIHRhYmxlbmFtZSAgIHwgICAgICAgICAgaW5kZXhuYW1l ICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg cGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX290aGVycyB8IHNhbGVzX290aGVyc19z YWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfb3RoZXJz X3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfb3RoZXJz IFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIw MjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CistLSBVc2UgaW5k ZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsK K0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyIHdoZXJl IHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg SW5kZXggU2NhbiB1c2luZyBzYWxlc19mZWIyMDIyX3NhbGVzX2RhdGVfaWR4IG9uIHNhbGVz X2ZlYjIwMjIKKyAgIEluZGV4IENvbmQ6IChzYWxlc19kYXRlID4gJzAxLTAxLTIwMjInOjpk YXRlKQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyIHdoZXJlIHNh bGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNv bl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIw MjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAg fCAwMi0xMS0yMDIyCisgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAg ICAgICAgMTg1IHwgMDItMjMtMjAyMgorKDMgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZG KSBTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIy LTAxLTAxJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIHNh bGVzX21hcjIwMjJfc2FsZXNfZGF0ZV9pZHggb24gc2FsZXNfbWFyMjAyMgorICAgSW5kZXgg Q29uZDogKHNhbGVzX2RhdGUgPiAnMDEtMDEtMjAyMic6OmRhdGUpCisoMiByb3dzKQorCitT RUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAx LTAxJzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91 bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDcgfCBMaSAgICAg ICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA5 IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAg ICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0y MDIyCisoMyByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2Fs ZXNfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfYXByMjAyMl9zYWxlc19k YXRlX2lkeCBvbiBzYWxlc19hcHIyMDIyCisgICBJbmRleCBDb25kOiAoc2FsZXNfZGF0ZSA+ ICcwMS0wMS0yMDIyJzo6ZGF0ZSkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNf YXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworIHNhbGVzcGVyc29u X2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCist LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAg ICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAg IHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92 ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAg MyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoNCBy b3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJz IHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CisgICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVfaWR4MSBvbiBz YWxlc19vdGhlcnMKKyAgIEluZGV4IENvbmQ6IChzYWxlc19kYXRlID4gJzAxLTAxLTIwMjIn OjpkYXRlKQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnMgd2hlcmUg c2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVy c29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQt MjAyMgorKDEgcm93KQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1NFTEVDVCAqIEZST00g cGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfZmViMjAyMicgYW5kIHNjaGVt YW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lIENP TExBVEUgIkMiOworICAgICAgIHNjaGVtYW5hbWUgICAgICAgfCAgIHRhYmxlbmFtZSAgIHwg ICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgICB8IHRhYmxlc3BhY2UgfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhkZWYgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxl c19mZWIyMDIyIHwgc2FsZXNfZmViMjAyMl9zYWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAg fCBDUkVBVEUgSU5ERVggc2FsZXNfZmViMjAyMl9zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hLnNhbGVzX2ZlYjIwMjIgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUp CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUg PSAnc2FsZXNfbWFyMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3Nj aGVtYScgT1JERVIgQlkgaW5kZXhuYW1lIENPTExBVEUgIkMiOworICAgICAgIHNjaGVtYW5h bWUgICAgICAgfCAgIHRhYmxlbmFtZSAgIHwgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAg ICB8IHRhYmxlc3BhY2UgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBh cnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxlc19tYXIyMDIyIHwgc2FsZXNfbWFyMjAyMl9z YWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfbWFyMjAy Ml9zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX21hcjIw MjIgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00g cGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfYXByMjAyMicgYW5kIHNjaGVt YW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lIENP TExBVEUgIkMiOworICAgICAgIHNjaGVtYW5hbWUgICAgICAgfCAgIHRhYmxlbmFtZSAgIHwg ICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgICB8IHRhYmxlc3BhY2UgfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhkZWYgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxl c19hcHIyMDIyIHwgc2FsZXNfYXByMjAyMl9zYWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAg fCBDUkVBVEUgSU5ERVggc2FsZXNfYXByMjAyMl9zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hLnNhbGVzX2FwcjIwMjIgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUp CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUg PSAnc2FsZXNfb3RoZXJzJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2No ZW1hJyBPUkRFUiBCWSBpbmRleG5hbWUgQ09MTEFURSAiQyI7CisgICAgICAgc2NoZW1hbmFt ZSAgICAgICB8ICB0YWJsZW5hbWUgICB8ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAg fCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hIHwgc2FsZXNfb3RoZXJzIHwgc2FsZXNfb3RoZXJzX3NhbGVzX2Rh dGVfaWR4MSB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfb3RoZXJzX3NhbGVz X2RhdGVfaWR4MSBPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX290aGVycyBVU0lO RyBidHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5n ZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNvbWUgY2FzZXMgZm9yIHNwbGl0dGluZyBERUZB VUxUIHBhcnRpdGlvbiAoZGlmZmVyZW50IGJvdW5kcykKKy0tCitDUkVBVEUgVEFCTEUgc2Fs ZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFS KDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBJTlQpIFBBUlRJVElPTiBCWSBS QU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3 aXRoIHNhbGVzX2RlYzIwMjEgKGxvd2VyIGJvdW5kKQorLS0gRVJST1I6ICBjYW4gbm90IHNw bGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9u ICJzYWxlc19kZWMyMDIxIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1Ig VkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNh bGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMzApIFRPICgyMDIyMDIwMSksCisg ICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBU TyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VS Uk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiB0b2dldGhl ciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0xJTkUgMzogICAgUEFSVElUSU9O IHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMzApIFRPICgyMDIyLi4uCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RF VEFJTDogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGlzIG5vdCBl cXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgor SElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBw YXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LgorLS0gc2FsZXNfZXJyb3IgaW50ZXJz ZWN0cyB3aXRoIHNhbGVzX2ZlYjIwMjIgKHVwcGVyIGJvdW5kKQorLS0gRVJST1I6ICBjYW4g bm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgdG9nZXRoZXIgd2l0aCBw YXJ0aXRpb24gInNhbGVzX2Vycm9yIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAy MSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElU SU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIw MiksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIw MjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxU KTsKK0VSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIi IHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19lcnJvciIKK0xJTkUgNDogICAgUEFS VElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIw Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgorREVUQUlMOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIy IiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNf ZXJyb3IiCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTlMgcmVxdWly ZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNlbnQuCistLSBzYWxlc19lcnJv ciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMSAoaW5zaWRlIGJvdW5kKQorLS0gRVJS T1I6ICBjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIHRvZ2V0aGVy IHdpdGggcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAor ICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMTApIFRP ICgyMDIxMTIyMCksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZS T00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVy cyBERUZBVUxUKTsKK0VSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVz X2Vycm9yIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0xJTkUg MzogICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMTAp IFRPICgyMDIxLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KK0RFVEFJTDogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNf ZXJyb3IiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJz YWxlc19kZWMyMDIxIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT05T IHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LgorLS0gc2Fs ZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjEgKGV4YWN0bHkgdGhlIHNh bWUgYm91bmRzKQorLS0gRVJST1I6ICBjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2Fs ZXNfZXJyb3IiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAx KSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMg RlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFS VElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9SOiAgY2FuIG5vdCBzcGxpdCB0 byBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2Fs ZXNfZGVjMjAyMSIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxV RVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyLi4uCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIGxvd2VyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91 bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorSElOVDogIEFMVEVSIFRBQkxFIC4u LiBTUExJVCBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJl IGFkamFjZW50LgorLS0gRVJST1I6ICBjYW4gbm90IHNwbGl0IERFRkFVTFQgcGFydGl0aW9u ICJzYWxlc19vdGhlcnMiCistLSBISU5UOiAgVG8gc3BsaXQgREVGQVVMVCBwYXJ0aXRpb24g b25lIG9mIHRoZSBuZXcgcGFydGl0aW9uIG1zdXQgYmUgREVGQVVMVAorQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAy MjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgy MDIyMDEwMSkgVE8gKDIwMjIwMjAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSkpOworRVJST1I6ICBjYW4g bm90IHNwbGl0IERFRkFVTFQgcGFydGl0aW9uICJzYWxlc19vdGhlcnMiCitMSU5FIDI6ICAg KFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRP ICgyMC4uLgorICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIFRvIHNwbGl0IERFRkFV TFQgcGFydGl0aW9uIG9uZSBvZiB0aGUgbmV3IHBhcnRpdGlvbiBtc3V0IGJlIERFRkFVTFQK Ky0tIG5vIGVycm9yOiBib3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBhcmUgYmV0d2VlbiBzYWxl c19kZWMyMDIxIGFuZCBzYWxlc19mZWIyMDIyCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBT UExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19k ZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQ QVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjIwMTEwKSBUTyAo MjAyMjAxMjApLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMg REVGQVVMVCk7CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworQ1JFQVRFIFRBQkxFIHNhbGVz X3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigz MCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFO R0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKy0tIG5vIGVycm9yOiBib3VuZHMgb2Ygc2FsZXNf bm9lcnJvciBhcmUgZXF1YWwgdG8gbG93ZXIgYW5kIHVwcGVyIGJvdW5kcyBvZiBzYWxlc19k ZWMyMDIxIGFuZCBzYWxlc19mZWIyMDIyCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMy MDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJU SVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjEwMTAxKSBUTyAoMjAy MTAyMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgy MDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVG QVVMVCk7CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIFRlc3Q6IHNwbGl0IHBh cnRpdGlvbiB3aXRoIENIRUNLIGFuZCBGT1JFSUdOIEtFWSBDT05TVFJBSU5UcyBvbiBwYXJ0 aXRpb25lZCB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNv bl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOwor SU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworQ1JFQVRF IFRBQkxFIHNhbGVzX3JhbmdlICgKK3NhbGVzcGVyc29uX2lkIElOVCBSRUZFUkVOQ0VTIHNh bGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSwKK3NhbGVzX2Ftb3VudCBJTlQgQ0hFQ0sgKHNh bGVzX2Ftb3VudCA+IDEpLAorc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0Ug KHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjIt MDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIw MjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIERFRkFVTFQ7CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwg Y29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdz YWxlc19mZWJfbWFyX2FwcjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWUg Q09MTEFURSAiQyI7CisgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWlu dGRlZiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIGNvbm5hbWUgICAg ICAgICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChzYWxlc19hbW91bnQgPiAxKSkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNhbGVzX3Jhbmdl X3NhbGVzX2Ftb3VudF9jaGVjayAgfCB7Mn0KKyBGT1JFSUdOIEtFWSAoc2FsZXNwZXJzb25f aWQpIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQpIHwgc2FsZXNfcmFu Z2Vfc2FsZXNwZXJzb25faWRfZmtleSB8IHsxfQorKDIgcm93cykKKworQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJykpOworLS0gV2Ugc2hvdWxkIHNlZSB0aGUgc2FtZSBDT05TVFJB SU5UcyBhcyBvbiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgcGFydGl0aW9uCitTRUxFQ1QgcGdf Z2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3Ry YWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19mZWIyMDIyJzo6cmVnY2xhc3M6Om9pZCBP UkRFUiBCWSBjb25uYW1lIENPTExBVEUgIkMiOworICAgICAgICAgICAgICAgICAgICAgICAg cGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICBjb25uYW1lICAgICAgICAgICAgIHwgY29ua2V5IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIENIRUNLICgoc2Fs ZXNfYW1vdW50ID4gMSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCBzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2sgIHwgezJ9CisgRk9SRUlHTiBL RVkgKHNhbGVzcGVyc29uX2lkKSBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29u X2lkKSB8IHNhbGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkgfCB7MX0KKygyIHJvd3Mp CisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkg RlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX21hcjIwMjInOjpy ZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWUgQ09MTEFURSAiQyI7CisgICAgICAgICAg ICAgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t CisgQ0hFQ0sgKChzYWxlc19hbW91bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IHNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayAgfCB7 Mn0KKyBGT1JFSUdOIEtFWSAoc2FsZXNwZXJzb25faWQpIFJFRkVSRU5DRVMgc2FsZXNwZW9w bGUoc2FsZXNwZXJzb25faWQpIHwgc2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSB8 IHsxfQorKDIgcm93cykKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNv bm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2Fs ZXNfYXByMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZSBDT0xMQVRFICJD IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgY29ubmFtZSAgICAgICAgICAgICB8 IGNvbmtleSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0KKyBDSEVDSyAoKHNhbGVzX2Ftb3VudCA+IDEpKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2FsZXNfcmFuZ2Vfc2FsZXNfYW1v dW50X2NoZWNrICB8IHsyfQorIEZPUkVJR04gS0VZIChzYWxlc3BlcnNvbl9pZCkgUkVGRVJF TkNFUyBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCkgfCBzYWxlc19yYW5nZV9zYWxlc3Bl cnNvbl9pZF9ma2V5IHwgezF9CisoMiByb3dzKQorCistLSBFUlJPUjogIG5ldyByb3cgZm9y IHJlbGF0aW9uICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJz YWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2siCitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDEsIDAsICcyMDIyLTAzLTExJyk7CitFUlJPUjogIG5ldyByb3cgZm9yIHJl bGF0aW9uICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJzYWxl c19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2siCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250 YWlucyAoMSwgMCwgMDMtMTEtMjAyMikuCistLSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUg b24gdGFibGUgInNhbGVzX21hcjIwMjIiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFp bnQgInNhbGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkiCitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKC0xLCAxMCwgJzIwMjItMDMtMTEnKTsKK0VSUk9SOiAgaW5zZXJ0 IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgZm9yZWlnbiBr ZXkgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSIKK0RFVEFJ TDogIEtleSAoc2FsZXNwZXJzb25faWQpPSgtMSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUg InNhbGVzcGVvcGxlIi4KKy0tIG9rCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDEsIDEwLCAnMjAyMi0wMy0xMScpOworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURF OworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNwbGl0 IHBhcnRpdGlvbiBvbiBwYXJ0aXRpb25lZCB0YWJsZSBpbiBjYXNlIG9mIGV4aXN0aW5nIEZP UkVJR04gS0VZIHJlZmVyZW5jZSBmcm9tIGFub3RoZXIgdGFibGUKKy0tCitDUkVBVEUgVEFC TEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3Bl cnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29u X2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlcyAoc2FsZXNwZXJzb25faWQgSU5UIFJFRkVSRU5D RVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQpLCBzYWxlc19hbW91bnQgSU5ULCBzYWxl c19kYXRlIERBVEUpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9O IE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBU QUJMRSBzYWxlc3Blb3BsZTEwXzQwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFM VUVTIEZST00gKDEwKSBUTyAoNDApOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVT CisgICgxLCAgJ1BvaXJvdCcpLAorICAoMTAsICdNYXknKSwKKyAgKDE5LCAnSXZhbm92Jyks CisgICgyMCwgJ1NtaXJub2ZmJyksCisgICgzMCwgJ0ZvcmQnKTsKK0lOU0VSVCBJTlRPIHNh bGVzIFZBTFVFUworICAoMSwgIDEwMCwgJzIwMjItMDMtMDEnKSwKKyAgKDEsICAxMTAsICcy MDIyLTAzLTAyJyksCisgICgxMCwgMTUwLCAnMjAyMi0wMy0wMScpLAorICAoMTAsIDkwLCAg JzIwMjItMDMtMDMnKSwKKyAgKDE5LCAyMDAsICcyMDIyLTAzLTA0JyksCisgICgyMCwgNTAs ICAnMjAyMi0wMy0xMicpLAorICAoMjAsIDE3MCwgJzIwMjItMDMtMDInKSwKKyAgKDMwLCAz MCwgICcyMDIyLTAzLTA0Jyk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00g c2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUg IkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgdGFibGVvaWQgICAgIHwgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZW9wbGUwMV8xMCB8ICAgICAgICAg ICAgICAxIHwgUG9pcm90Cisgc2FsZXNwZW9wbGUxMF80MCB8ICAgICAgICAgICAgIDEwIHwg TWF5Cisgc2FsZXNwZW9wbGUxMF80MCB8ICAgICAgICAgICAgIDE5IHwgSXZhbm92Cisgc2Fs ZXNwZW9wbGUxMF80MCB8ICAgICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyBzYWxlc3Blb3Bs ZTEwXzQwIHwgICAgICAgICAgICAgMzAgfCBGb3JkCisoNSByb3dzKQorCitBTFRFUiBUQUJM RSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAo MjApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgy MCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMg RlJPTSAoMzApIFRPICg0MCkpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9N IHNhbGVzcGVvcGxlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRF ICJDIiwgc2FsZXNwZXJzb25faWQ7CisgICAgIHRhYmxlb2lkICAgICB8IHNhbGVzcGVyc29u X2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVvcGxlMDFfMTAgfCAgICAgICAg ICAgICAgMSB8IFBvaXJvdAorIHNhbGVzcGVvcGxlMTBfMjAgfCAgICAgICAgICAgICAxMCB8 IE1heQorIHNhbGVzcGVvcGxlMTBfMjAgfCAgICAgICAgICAgICAxOSB8IEl2YW5vdgorIHNh bGVzcGVvcGxlMjBfMzAgfCAgICAgICAgICAgICAyMCB8IFNtaXJub2ZmCisgc2FsZXNwZW9w bGUzMF80MCB8ICAgICAgICAgICAgIDMwIHwgRm9yZAorKDUgcm93cykKKworLS0gRVJST1I6 ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlcyIgdmlvbGF0ZXMgZm9yZWlnbiBr ZXkgY29uc3RyYWludCAic2FsZXNfc2FsZXNwZXJzb25faWRfZmtleSIKK0lOU0VSVCBJTlRP IHNhbGVzIFZBTFVFUyAoNDAsIDUwLCAgJzIwMjItMDMtMDQnKTsKK0VSUk9SOiAgaW5zZXJ0 IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXMiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQgInNhbGVzX3NhbGVzcGVyc29uX2lkX2ZrZXkiCitERVRBSUw6ICBLZXkgKHNhbGVz cGVyc29uX2lkKT0oNDApIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJzYWxlc3Blb3BsZSIu CistLSBvaworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICgzMCwgNTAsICAnMjAyMi0wMy0w NCcpOworRFJPUCBUQUJMRSBzYWxlcyBDQVNDQURFOworRFJPUCBUQUJMRSBzYWxlc3Blb3Bs ZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25l ZCB0YWJsZSB3aXRoIHRyaWdnZXJzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNh bGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFS KDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFC TEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgUEFS VElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CitJ TlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CitDUkVBVEUg T1IgUkVQTEFDRSBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKSBSRVRVUk5T IHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTICRCT0RZJAorQkVHSU4KKyAgICBSQUlT RSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2 ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICAgIFJF VFVSTiBOVUxMOworRU5EOworJEJPRFkkOworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVf YWZ0ZXJfaW5zZXJ0X3N0YXRlbWVudF90cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAg T04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBTVEFURU1FTlQKKyAgICBFWEVDVVRFIFBS T0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CitDUkVB VEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIKKyAgICBB RlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Blb3BsZQorICAgIEZPUiBFQUNIIFJPVworICAg IEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNwZW9w bGUnKTsKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50 KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMTAsICdNYXknKTsKK05PVElD RTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVu ID0gQUZURVIsIGxldmVsID0gUk9XCitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBj YWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFNUQVRFTUVO VAorLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBz YWxlc3Blb3BsZTEwXzQwIFZBTFVFUyAoMTksICdJdmFub3YnKTsKK05PVElDRTogIHRyaWdn ZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIs IGxldmVsID0gUk9XCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04g c2FsZXNwZW9wbGUxMF80MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF8yMCBG T1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxl MjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxl c3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworLS0gMiB0cmln Z2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8g c2FsZXNwZW9wbGUgVkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7CitOT1RJQ0U6ICB0cmlnZ2Vy KHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBs ZXZlbCA9IFJPVworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rp b24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJp Z2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUz MF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3Bs ZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cK K1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBC WSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lk OworICAgICB0YWJsZW9pZCAgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25h bWUgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0KKyBzYWxlc3Blb3BsZTAxXzEwIHwgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKyBz YWxlc3Blb3BsZTEwXzIwIHwgICAgICAgICAgICAgMTAgfCBNYXkKKyBzYWxlc3Blb3BsZTEw XzIwIHwgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyBzYWxlc3Blb3BsZTIwXzMwIHwgICAg ICAgICAgICAgMjAgfCBTbWlybm9mZgorIHNhbGVzcGVvcGxlMzBfNDAgfCAgICAgICAgICAg ICAzMCB8IEZvcmQKKyg1IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FE RTsKK0RST1AgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCk7CistLQorLS0g VGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGNoIGlkZW50aXR5IGNvbHVtbgorLS0gSWYgc3Bs aXQgcGFydGl0aW9uIGNvbHVtbiBpcyBpZGVudGl0eSBjb2x1bW4sIGNvbHVtbnMgb2YgbmV3 IHBhcnRpdGlvbnMgYXJlIGlkZW50aXR5IGNvbHVtbnMgdG9vLgorLS0KK0NSRUFURSBUQUJM RSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJ REVOVElUWSBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFS VElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNw ZW9wbGUxXzIgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkg VE8gKDIpOworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRpb24gd2l0aCBpZGVudGl0eSBjb2x1bW46 CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUyXzUoc2FsZXNwZXJzb25faWQgSU5UIE5PVCBO VUxMLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0FMVEVSIFRBQkxFIHNhbGVz cGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUyXzUgRk9SIFZBTFVFUyBGUk9N ICgyKSBUTyAoNSk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSAoc2FsZXNwZXJzb25fbmFt ZSkgVkFMVUVTICgnUG9pcm90JyksICgnSXZhbm92Jyk7CitTRUxFQ1QgYXR0bmFtZSwgYXR0 aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0g PiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIg QlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVy YXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Cisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFt ZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRl bnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAw IEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTFfMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIg QlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVy YXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Cisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFt ZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCistLSBTcGxpdCBwYXJ0aXRpb24gaGFz IGlkZW50aXR5IGNvbHVtbjoKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2Vu ZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlk ID0gJ3NhbGVzcGVvcGxlMl81Jzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07Cisg ICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNv bl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAg ICAgfCAKKygyIHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJ VElPTiBzYWxlc3Blb3BsZTJfNSBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9wbGUyXzMg Rk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoMyksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUz XzQgRk9SIFZBTFVFUyBGUk9NICgzKSBUTyAoNCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9w bGU0XzUgRk9SIFZBTFVFUyBGUk9NICg0KSBUTyAoNSkpOworSU5TRVJUIElOVE8gc2FsZXNw ZW9wbGUgKHNhbGVzcGVyc29uX25hbWUpIFZBTFVFUyAoJ01heScpLCAoJ0ZvcmQnKTsKK1NF TEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0 YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOwor ICAgIHRhYmxlb2lkICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAor LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQor IHNhbGVzcGVvcGxlMV8yIHwgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKyBzYWxlc3Blb3Bs ZTJfMyB8ICAgICAgICAgICAgICAyIHwgSXZhbm92Cisgc2FsZXNwZW9wbGUzXzQgfCAgICAg ICAgICAgICAgMyB8IE1heQorIHNhbGVzcGVvcGxlNF81IHwgICAgICAgICAgICAgIDQgfCBG b3JkCisoNCByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVy YXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9 ICdzYWxlc3Blb3BsZSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBh dHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQg ICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwg CisoMiByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRl ZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdz YWxlc3Blb3BsZTFfMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBh dHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQg ICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwg CisoMiByb3dzKQorCistLSBOZXcgcGFydGl0aW9ucyBoYXZlIGlkZW50aXR5LWNvbHVtbnM6 CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0 dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTJf Myc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAg fCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAg ICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQor CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0 dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTNf NCc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAg fCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAg ICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQor CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0 dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTRf NSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAg fCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAg ICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQor CitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CistLQorLS0gVGVzdDogc3BsaXQg cGFydGl0aW9uIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVz cGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFt ZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitD UkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUg Rk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRpb24g d2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEw XzQwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQy IElOVCwgZDMgREFURSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitJTlNFUlQg SU5UTyBzYWxlc3Blb3BsZTEwXzQwIFZBTFVFUworICAoJ2R1bW15IHZhbHVlIDEnLCAxOSwg MTAwLCBub3coKSwgJ0l2YW5vdicpLAorICAoJ2R1bW15IHZhbHVlIDInLCAyMCwgMTAxLCBu b3coKSwgJ1NtaXJub2ZmJyk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIERST1Ag Q09MVU1OIGQxOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBEUk9QIENPTFVNTiBk MjsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgRFJPUCBDT0xVTU4gZDM7CitBTFRF UiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAg Rk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxl IFZBTFVFUworICAoMSwgJ1BvaXJvdCcpLAorICAoMTAsICdNYXknKSwKKyAgKDMwLCAnRm9y ZCcpOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVv cGxlMTBfNDAgSU5UTworICAoUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVF UyBGUk9NICgxMCkgVE8gKDIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZP UiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUz MF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApKTsKK1NFTEVDVCB0YWJsZW9pZDo6 cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xh c3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworICAgICB0YWJsZW9pZCAg ICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Blb3Bs ZTAxXzEwIHwgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKyBzYWxlc3Blb3BsZTEwXzIwIHwg ICAgICAgICAgICAgMTAgfCBNYXkKKyBzYWxlc3Blb3BsZTEwXzIwIHwgICAgICAgICAgICAg MTkgfCBJdmFub3YKKyBzYWxlc3Blb3BsZTIwXzMwIHwgICAgICAgICAgICAgMjAgfCBTbWly bm9mZgorIHNhbGVzcGVvcGxlMzBfNDAgfCAgICAgICAgICAgICAzMCB8IEZvcmQKKyg1IHJv d3MpCisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBz cGxpdCBzdWItcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxl c3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ft b3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19k YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JF QVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25h bWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFS VElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHJf YWxsIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFU VEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3Jh bmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19k YXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAg ICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIw MjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAor ICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYn LCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAn MjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyks CisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVs bGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwg ICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYn KSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdH YW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEw LCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBz YWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAi QyIsIHNhbGVzcGVyc29uX2lkOworICAgdGFibGVvaWQgICAgfCBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorIHNhbGVzX2Fwcl9hbGwgfCAgICAgICAgICAgICAgMyB8 IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgc2FsZXNf YXByX2FsbCB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAg IDc1MCB8IDA0LTEzLTIwMjIKKyBzYWxlc19hcHJfYWxsIHwgICAgICAgICAgICAgIDUgfCBE ZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorIHNhbGVzX2Fw cl9hbGwgfCAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAz ODAgfCAwNC0wNi0yMDIyCisgc2FsZXNfZmViMjAyMiB8ICAgICAgICAgICAgICAyIHwgU21p cm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyBzYWxlc19mZWIy MDIyIHwgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUw IHwgMDItMTEtMjAyMgorIHNhbGVzX2ZlYjIwMjIgfCAgICAgICAgICAgICAgOCB8IEVyaWNz c29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgc2FsZXNfamFuMjAy MiB8ICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8 IDAxLTMxLTIwMjIKKyBzYWxlc19qYW4yMDIyIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIg ICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorIHNhbGVzX2phbjIwMjIg fCAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAw MS0wOS0yMDIyCisgc2FsZXNfbWFyMjAyMiB8ICAgICAgICAgICAgICA3IHwgTGkgICAgICAg ICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyBzYWxlc19tYXIyMDIyIHwg ICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMt MTEtMjAyMgorIHNhbGVzX21hcjIwMjIgfCAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAg ICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgc2FsZXNfb3RoZXJzICB8ICAg ICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0 LTIwMjIKKygxNCByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19hcHIyMDIyIFNQTElUIFBB UlRJVElPTiBzYWxlc19hcHJfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19hcHIyMDIy XzAxXzEwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzEwXzIwIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMTAnKSBUTyAoJzIwMjItMDQtMjAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19h cHIyMDIyXzIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMjAnKSBUTyAoJzIwMjIt MDUtMDEnKSk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFu Z2UgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxl c3BlcnNvbl9pZDsKKyAgICAgIHRhYmxlb2lkICAgICAgIHwgc2FsZXNwZXJzb25faWQgfCBz YWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIyXzAxXzEwIHwgICAgICAg ICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAy MgorIHNhbGVzX2FwcjIwMjJfMDFfMTAgfCAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAg ICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgc2FsZXNfYXByMjAyMl8xMF8y MCB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8 IDA0LTEzLTIwMjIKKyBzYWxlc19hcHIyMDIyXzIwXzMwIHwgICAgICAgICAgICAgIDMgfCBG b3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorIHNhbGVzX2Zl YjIwMjIgICAgICAgfCAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAg ICAgICA1MDAgfCAwMi0xMC0yMDIyCisgc2FsZXNfZmViMjAyMiAgICAgICB8ICAgICAgICAg ICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIK KyBzYWxlc19mZWIyMDIyICAgICAgIHwgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAg ICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorIHNhbGVzX2phbjIwMjIgICAgICAg fCAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAw MS0zMS0yMDIyCisgc2FsZXNfamFuMjAyMiAgICAgICB8ICAgICAgICAgICAgIDEwIHwgSGFs ZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyBzYWxlc19qYW4y MDIyICAgICAgIHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAg ICAgMzc3IHwgMDEtMDktMjAyMgorIHNhbGVzX21hcjIwMjIgICAgICAgfCAgICAgICAgICAg ICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisg c2FsZXNfbWFyMjAyMiAgICAgICB8ICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAg ICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyBzYWxlc19tYXIyMDIyICAgICAgIHwg ICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMt MTktMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgfCAgICAgICAgICAgICAxNCB8IFNtaXRo ICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKwor RFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmluZwor LS0KKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9u aW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQs Cisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFS KDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElP TiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJU SVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJz YnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04g T0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcg WW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2Jywg J1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBP RiBzYWxlc19saXN0IERFRkFVTFQ7CistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVz X2Vhc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlv biAic2FsZXNfbm9yZCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9O IHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElO ICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVz X2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3Rvaycs ICdIZWxzaW5raScpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJ TiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlv biAic2FsZXNfZWFzdCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgKG5vdCBzcGxpdCkg cGFydGl0aW9uICJzYWxlc19ub3JkIgorTElORSAzOiAuLi4gRk9SIFZBTFVFUyBJTiAoJ0Jl amluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycsICdIZWxzaW5raScuLi4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIHdvdWxkIG92ZXJsYXAg d2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gInNhbGVzX2NlbnRyYWwiCitBTFRFUiBUQUJM RSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdN YWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWpp bmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50 cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0xpc2JvbicsICdLeWl2 JykpOworRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiB3b3VsZCBvdmVybGFw IHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9uICJzYWxlc19jZW50cmFsIgorTElORSAyOiAg IChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZ b3JrJywuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgorLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2 ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uICJzYWxlc19hbGwiIGRvZXMg bm90IGhhdmUKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlz Ym9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsIE5VTEwpLAorICAgUEFSVElUSU9OIHNhbGVz X2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3Rvaycp LAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycs ICdCZXJsaW4nLCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2Vz dCIgY2Fubm90IGhhdmUgTlVMTCB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiAic2Fs ZXNfYWxsIiBkb2VzIG5vdCBoYXZlCitMSU5FIDI6IC4uLnNfd2VzdCBGT1IgVkFMVUVTIElO ICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsIE5VTEwpLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBoYXZlIHRo aXMgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2FsbCIgZG9lcyBub3Qg aGF2ZQorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxs IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24n LCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ01lbGJvdXJuZScpLAorICAgUEFSVElUSU9OIHNh bGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3Rv aycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNh dycsICdCZXJsaW4nLCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNf d2VzdCIgY2Fubm90IGhhdmUgdGhpcyB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiAi c2FsZXNfYWxsIiBkb2VzIG5vdCBoYXZlCitMSU5FIDI6IC4uLnN0IEZPUiBWQUxVRVMgSU4g KCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ01lbGJvdXJuZS4uLgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiBjYW5ub3QgYmUgREVGQVVMVCBiZWNhdXNl IERFRkFVTFQgcGFydGl0aW9uICJzYWxlc19vdGhlcnMiIGFscmVhZHkgZXhpc3RzCitBTFRF UiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9y aycsICdNYWRyaWQnLCAnTWVsYm91cm5lJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBG T1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQ QVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jlcmxp bicsICdLeWl2JyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzMiBERUZBVUxUKTsKK0VS Uk9SOiAgbmV3IHBhcnRpdGlvbiBjYW5ub3QgYmUgREVGQVVMVCBiZWNhdXNlIERFRkFVTFQg cGFydGl0aW9uICJzYWxlc19vdGhlcnMiIGFscmVhZHkgZXhpc3RzCitMSU5FIDU6ICAgIFBB UlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOworICAgICAgICAgICAgICAgICAgICAg XgorRFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRlc3Q6IHR3byBzcGVjaWZpYyBl cnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nOgorLS0gICAqIG5ldyBwYXJ0aXRpb25z IGRvIG5vdCBoYXZlIE5VTEwgdmFsdWUsIHdoaWNoIHNwbGl0IHBhcnRpdGlvbiBoYXMuCist LSAgICogbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgYSB2YWx1ZSB0aGF0IHNwbGl0IHBh cnRpdGlvbiBoYXMuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNv bl9pZCBJTlQsCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0 ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkK K1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf bm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnSGVsc2lua2kn LCAnU3QuIFBldGVyc2J1cmcnLCAnT3NsbycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQ QVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2Jv bicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScs ICdLeWl2JywgJ1ZsYWRpdm9zdG9rJywgTlVMTCk7CistLSBFUlJPUjogIG5ldyBwYXJ0aXRp b25zIGRvIG5vdCBoYXZlIHZhbHVlIE5VTEwgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2VzCitB TFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcg WW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMg SU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBz YWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYn KSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlIE5VTEwgYnV0 IHNwbGl0IHBhcnRpdGlvbiBkb2VzCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5v dCBoYXZlIHZhbHVlICdLeWl2JyBidXQgc3BsaXQgcGFydGl0aW9uIGRvZXMKK0FMVEVSIFRB QkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywg J01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0Jl amluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2Nl bnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCBOVUxMKSk7CitFUlJP UjogIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlICdLeWl2JyBidXQgc3BsaXQg cGFydGl0aW9uIGRvZXMKKy0tIEVSUk9SICBERUZBVUxUIHBhcnRpdGlvbiBzaG91bGQgYmUg b25lCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2Jvbics ICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBW QUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywg J0t5aXYnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCwKKyAgIFBBUlRJ VElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOworRVJST1I6ICBERUZBVUxUIHBhcnRpdGlv biBzaG91bGQgYmUgb25lCitMSU5FIDY6ICAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERF RkFVTFQpOworICAgICAgICAgICAgICAgICAgICAgXgorRFJPUCBUQUJMRSBzYWxlc19saXN0 OworLS0KKy0tIFRlc3Q6IEJZIExJU1QgcGFydGl0aW9uaW5nLCBTUExJVCBQQVJUSVRJT04g d2l0aCBkYXRhCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9p ZCBTRVJJQUwsCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0 ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkK K1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgSU5ERVggc2FsZXNf bGlzdF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChz YWxlc3BlcnNvbl9uYW1lKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzX3N0YXRl X2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc19zdGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElO ICgnSGVsc2lua2knLCAnU3QuIFBldGVyc2J1cmcnLCAnT3NsbycpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fy c2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0Jlcmxp bicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CitJTlNFUlQgSU5U TyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1v dW50LCBzYWxlc19kYXRlKSBWQUxVRVMKKyAgKCdUcnVtcCcsICAgICdCZWppbmcnLCAgICAg ICAgIDEwMDAsICcyMDIyLTAzLTAxJyksCisgICgnU21pcm5vZmYnLCAnTmV3IFlvcmsnLCAg ICAgICAgNTAwLCAnMjAyMi0wMy0wMycpLAorICAoJ0ZvcmQnLCAgICAgJ1N0LiBQZXRlcnNi dXJnJywgMjAwMCwgJzIwMjItMDMtMDUnKSwKKyAgKCdJdmFub3YnLCAgICdXYXJzYXcnLCAg ICAgICAgICA3NTAsICcyMDIyLTAzLTA0JyksCisgICgnRGVldicsICAgICAnTGlzYm9uJywg ICAgICAgICAgMjUwLCAnMjAyMi0wMy0wNycpLAorICAoJ1BvaXJvdCcsICAgJ0Jlcmxpbics ICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKSwKKyAgKCdNYXknLCAgICAgICdPc2xvJywg ICAgICAgICAgIDEyMDAsICcyMDIyLTAzLTA2JyksCisgICgnTGknLCAgICAgICAnVmxhZGl2 b3N0b2snLCAgICAxMTUwLCAnMjAyMi0wMy0wOScpLAorICAoJ01heScsICAgICAgJ09zbG8n LCAgICAgICAgICAgMTIwMCwgJzIwMjItMDMtMTEnKSwKKyAgKCdIYWxkZXInLCAgICdIZWxz aW5raScsICAgICAgICA4MDAsICcyMDIyLTAzLTAyJyksCisgICgnTXVsbGVyJywgICAnTWFk cmlkJywgICAgICAgICAgNjUwLCAnMjAyMi0wMy0wNScpLAorICAoJ1NtaXRoJywgICAgJ0t5 aXYnLCAgICAgICAgICAgIDM1MCwgJzIwMjItMDMtMTAnKSwKKyAgKCdHYW5kaScsICAgICdX YXJzYXcnLCAgICAgICAgICAxNTAsICcyMDIyLTAzLTA4JyksCisgICgnUGxhdG8nLCAgICAn TGlzYm9uJywgICAgICAgICAgOTUwLCAnMjAyMi0wMy0wNScpOworQUxURVIgVEFCTEUgc2Fs ZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlk JyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywg J0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBG T1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworU0VMRUNUIHRh Ymxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2xpc3QgT1JERVIgQlkgdGFibGVvaWQ6 OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgIHRhYmxl b2lkICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgIHNhbGVzX3N0 YXRlICAgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgc2FsZXNfY2VudHJhbCB8ICAgICAgICAgICAg ICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNhdyAgICAgICAgIHwgICAgICAgICAgNzUw IHwgMDMtMDQtMjAyMgorIHNhbGVzX2NlbnRyYWwgfCAgICAgICAgICAgICAgNiB8IFBvaXJv dCAgICAgICAgICAgfCBCZXJsaW4gICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIw MjIKKyBzYWxlc19jZW50cmFsIHwgICAgICAgICAgICAgMTIgfCBTbWl0aCAgICAgICAgICAg IHwgS3lpdiAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xMC0yMDIyCisgc2FsZXNf Y2VudHJhbCB8ICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8IFdhcnNhdyAg ICAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorIHNhbGVzX2Vhc3QgICAgfCAg ICAgICAgICAgICAgMSB8IFRydW1wICAgICAgICAgICAgfCBCZWppbmcgICAgICAgICB8ICAg ICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyBzYWxlc19lYXN0ICAgIHwgICAgICAgICAgICAg IDggfCBMaSAgICAgICAgICAgICAgIHwgVmxhZGl2b3N0b2sgICAgfCAgICAgICAgIDExNTAg fCAwMy0wOS0yMDIyCisgc2FsZXNfbm9yZCAgICB8ICAgICAgICAgICAgICAzIHwgRm9yZCAg ICAgICAgICAgICB8IFN0LiBQZXRlcnNidXJnIHwgICAgICAgICAyMDAwIHwgMDMtMDUtMjAy MgorIHNhbGVzX25vcmQgICAgfCAgICAgICAgICAgICAgNyB8IE1heSAgICAgICAgICAgICAg fCBPc2xvICAgICAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTA2LTIwMjIKKyBzYWxlc19u b3JkICAgIHwgICAgICAgICAgICAgIDkgfCBNYXkgICAgICAgICAgICAgIHwgT3NsbyAgICAg ICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0xMS0yMDIyCisgc2FsZXNfbm9yZCAgICB8ICAg ICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8IEhlbHNpbmtpICAgICAgIHwgICAg ICAgICAgODAwIHwgMDMtMDItMjAyMgorIHNhbGVzX3dlc3QgICAgfCAgICAgICAgICAgICAg MiB8IFNtaXJub2ZmICAgICAgICAgfCBOZXcgWW9yayAgICAgICB8ICAgICAgICAgIDUwMCB8 IDAzLTAzLTIwMjIKKyBzYWxlc193ZXN0ICAgIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAg ICAgICAgICAgIHwgTGlzYm9uICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0wNy0yMDIy Cisgc2FsZXNfd2VzdCAgICB8ICAgICAgICAgICAgIDExIHwgTXVsbGVyICAgICAgICAgICB8 IE1hZHJpZCAgICAgICAgIHwgICAgICAgICAgNjUwIHwgMDMtMDUtMjAyMgorIHNhbGVzX3dl c3QgICAgfCAgICAgICAgICAgICAxNCB8IFBsYXRvICAgICAgICAgICAgfCBMaXNib24gICAg ICAgICB8ICAgICAgICAgIDk1MCB8IDAzLTA1LTIwMjIKKygxNCByb3dzKQorCistLSBVc2Ug aW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMgYWZ0ZXIgc3BsaXR0aW5nIHBhcnRpdGlv bgorU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxF Q1QgKiBGUk9NIHNhbGVzX2NlbnRyYWwgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfY2Vu dHJhbF9zYWxlc19zdGF0ZV9pZHggb24gc2FsZXNfY2VudHJhbAorICAgSW5kZXggQ29uZDog KChzYWxlc19zdGF0ZSk6OnRleHQgPSAnV2Fyc2F3Jzo6dGV4dCkKKygyIHJvd3MpCisKK1NF TEVDVCAqIEZST00gc2FsZXNfY2VudHJhbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcn OworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwg c2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAg ICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAg ICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisoMiByb3dz KQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVS RSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfY2VudHJhbF9z YWxlc19zdGF0ZV9pZHggb24gc2FsZXNfY2VudHJhbCBzYWxlc19saXN0CisgICBJbmRleCBD b25kOiAoKHNhbGVzX3N0YXRlKTo6dGV4dCA9ICdXYXJzYXcnOjp0ZXh0KQorKDIgcm93cykK KworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNh dyc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAg ICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAg ICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKygyIHJv d3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdI RVJFIHNhbGVzcGVyc29uX25hbWUgPSAnSXZhbm92JzsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IEFwcGVuZAorICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfZWFzdF9zYWxlc3BlcnNv bl9uYW1lX2lkeCBvbiBzYWxlc19lYXN0IHNhbGVzX2xpc3RfMQorICAgICAgICAgSW5kZXgg Q29uZDogKChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFub3YnOjp0ZXh0KQorICAg LT4gIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfY2VudHJhbF9zYWxlc3BlcnNvbl9uYW1lX2lk eCBvbiBzYWxlc19jZW50cmFsIHNhbGVzX2xpc3RfMgorICAgICAgICAgSW5kZXggQ29uZDog KChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFub3YnOjp0ZXh0KQorICAgLT4gIEJp dG1hcCBIZWFwIFNjYW4gb24gc2FsZXNfbm9yZCBzYWxlc19saXN0XzMKKyAgICAgICAgIFJl Y2hlY2sgQ29uZDogKChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFub3YnOjp0ZXh0 KQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHNhbGVzX25vcmRfc2FsZXNw ZXJzb25fbmFtZV9pZHgKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgoc2FsZXNwZXJz b25fbmFtZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4dCkKKyAgIC0+ICBJbmRleCBTY2FuIHVz aW5nIHNhbGVzX3dlc3Rfc2FsZXNwZXJzb25fbmFtZV9pZHggb24gc2FsZXNfd2VzdCBzYWxl c19saXN0XzQKKyAgICAgICAgIEluZGV4IENvbmQ6ICgoc2FsZXNwZXJzb25fbmFtZSk6OnRl eHQgPSAnSXZhbm92Jzo6dGV4dCkKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHNhbGVz X290aGVycyBzYWxlc19saXN0XzUKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChzYWxlc3Bl cnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFub3YnOjp0ZXh0KQorICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIHNhbGVzX290aGVyc19zYWxlc3BlcnNvbl9uYW1lX2lkeAorICAg ICAgICAgICAgICAgSW5kZXggQ29uZDogKChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJ dmFub3YnOjp0ZXh0KQorKDE1IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBX SEVSRSBzYWxlc3BlcnNvbl9uYW1lID0gJ0l2YW5vdic7Cisgc2FsZXNwZXJzb25faWQgfCBz YWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5v diAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIK KygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIHNhbGVzX2xp c3Q7CistLQorLS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgREVGQVVMVCBwYXJ0aXRpb24g dG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kczsKKy0tICAgKiByYW5k b20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQQVJUSVRJT04gY29tbWFuZC4KKy0t CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNw ZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBE QVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNh bGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIy LTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMDknKSwKKyAg KDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3Yn LCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIw MjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0wNycpLAor ICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNz c29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAn MjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyks CisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxh dG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3Nywg ICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQn KTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhl cnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxULAorICAgUEFSVElU SU9OIHNhbGVzX21hcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTAzLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfamFuMjAyMl8xZGVj YWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDEtMTAnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMi0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Fw cjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA0LTEwJykpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3Jh bmdlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2Fs ZXNwZXJzb25faWQ7CisgICAgICAgdGFibGVvaWQgICAgICAgIHwgc2FsZXNwZXJzb25faWQg fCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSB8 ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0 LTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAxMSB8IFRy dW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgc2FsZXNfZmVi MjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAg ICAgICAgNTAwIHwgMDItMDktMjAyMgorIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSB8ICAgICAg ICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTA3LTIw MjIKKyBzYWxlc19qYW4yMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAxMyB8IEdhbmRpICAg ICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgc2FsZXNfbWFyMjAyMl8x ZGVjYWRlIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAg MTc1IHwgMDMtMDgtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAg ICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyBz YWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAg ICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAg IHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwg MDQtMTMtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgICA4IHwg RXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyBzYWxlc19v dGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAg ICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgt MjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgIDEyIHwgUGxhdG8g ICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyBzYWxlc19vdGhlcnMg ICAgICAgICAgfCAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAg ICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5n ZTsKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBzcGxpdCBub24tREVGQVVMVCBwYXJ0aXRp b24gdG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kczsKKy0tICAgKiBy YW5kb20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQQVJUSVRJT04gY29tbWFuZC4K Ky0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2Fs ZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0 ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMS0wMScpIFRPICgnMjAyMi0wNS0wMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAg KDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0wOScpLAorICAoMywgICdGb3JkJywg ICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIw MjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAor ICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3JyksCisgICg3LCAgJ0xpJywg ICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAn MjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyks CisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1 bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwg ICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDkn KTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX21hcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAzLTEwJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfamFuMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAo JzIwMjItMDEtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyXzFkZWNhZGUgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMi0xMCcpLAorICAgUEFS VElUSU9OIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA0LTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERF RkFVTFQpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3Jhbmdl IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNw ZXJzb25faWQ7CisgICAgICAgdGFibGVvaWQgICAgICAgIHwgc2FsZXNwZXJzb25faWQgfCBz YWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSB8ICAg ICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3 LTIwMjIKKyBzYWxlc19hcHIyMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAxMSB8IFRydW1w ICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgc2FsZXNfZmViMjAy Ml8xZGVjYWRlIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAg ICAgNTAwIHwgMDItMDktMjAyMgorIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSB8ICAgICAgICAg ICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTA3LTIwMjIK KyBzYWxlc19qYW4yMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAg ICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgc2FsZXNfbWFyMjAyMl8xZGVj YWRlIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1 IHwgMDMtMDgtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgICAx IHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyBzYWxl c19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAg fCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwg ICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQt MTMtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgICA4IHwgRXJp Y3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyBzYWxlc19vdGhl cnMgICAgICAgICAgfCAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAg ICAgICAyNTAgfCAwMy0xMS0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAg ICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAy MgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAg ICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKygxMyByb3dzKQorCitEUk9Q IFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIFRlc3QgZm9yIHNwbGl0IG5vbi1ERUZBVUxU IHBhcnRpdGlvbiB0byBERUZBVUxUIHBhcnRpdGlvbiArIHBhcnRpdGlvbnMKKy0tIHdpdGgg c3BhY2VzIGJldHdlZW4gYm91bmRzLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAo c2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxl c19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2Fs ZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0w MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwg JzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcp LAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2 YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAs ICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTEx JyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAn RXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1 MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEt MjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIs ICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAg Mzc3LCAgJzIwMjItMDEtMDknKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRP ICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwg ICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2Fs ZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMi LCBzYWxlc3BlcnNvbl9pZDsKKyAgIHRhYmxlb2lkICAgIHwgc2FsZXNwZXJzb25faWQgfCBz YWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIyIHwgICAgICAgICAgICAgIDMgfCBG b3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorIHNhbGVzX2Fw cjIwMjIgfCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3 NTAgfCAwNC0xMy0yMDIyCisgc2FsZXNfYXByMjAyMiB8ICAgICAgICAgICAgICA1IHwgRGVl diAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBzYWxlc19hcHIy MDIyIHwgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgw IHwgMDQtMDYtMjAyMgorIHNhbGVzX2ZlYjIwMjIgfCAgICAgICAgICAgICAgMiB8IFNtaXJu b2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgc2FsZXNfZmViMjAy MiB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8 IDAyLTExLTIwMjIKKyBzYWxlc19mZWIyMDIyIHwgICAgICAgICAgICAgIDggfCBFcmljc3Nv biAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorIHNhbGVzX2phbjIwMjIg fCAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAw MS0zMS0yMDIyCisgc2FsZXNfamFuMjAyMiB8ICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAg ICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyBzYWxlc19qYW4yMDIyIHwg ICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEt MDktMjAyMgorIHNhbGVzX290aGVycyAgfCAgICAgICAgICAgICAgNyB8IExpICAgICAgICAg ICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgc2FsZXNfb3RoZXJzICB8ICAg ICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTEx LTIwMjIKKyBzYWxlc19vdGhlcnMgIHwgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAg ICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorIHNhbGVzX290aGVycyAgfCAgICAg ICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0y MDIyCisoMTQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBUcnkg dG8gU1BMSVQgcGFydGl0aW9uIG9mIGFub3RoZXIgdGFibGUuCistLQorQ1JFQVRFIFRBQkxF IHQxKGkgaW50LCB0IHRleHQpIFBBUlRJVElPTiBCWSBMSVNUICh0KTsKK0NSRUFURSBUQUJM RSB0MXBhIFBBUlRJVElPTiBPRiB0MSBGT1IgVkFMVUVTIElOICgnQScpOworQ1JFQVRFIFRB QkxFIHQyIChpIGludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UgKHQpOworLS0gRVJS T1I6ICByZWxhdGlvbiAidDFwYSIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0 MiIKK0FMVEVSIFRBQkxFIHQyIFNQTElUIFBBUlRJVElPTiB0MXBhIElOVE8KKyAgIChQQVJU SVRJT04gdDJhIEZPUiBWQUxVRVMgRlJPTSAoJ0EnKSBUTyAoJ0InKSwKKyAgICBQQVJUSVRJ T04gdDJiIEZPUiBWQUxVRVMgRlJPTSAoJ0InKSBUTyAoJ0MnKSk7CitFUlJPUjogIHJlbGF0 aW9uICJ0MXBhIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgorSElOVDog IEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT05TIGNhbiBvbmx5IHNwbGl0IHBhcnRp dGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucworRFJPUCBUQUJMRSB0MjsKK0RST1Ag VEFCTEUgdDE7CistLQorLS0gVHJ5IHRvIFNQTElUIHBhcnRpdGlvbiBvZiB0ZW1wb3Jhcnkg dGFibGUuCistLQorQ1JFQVRFIFRFTVAgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBS QU5HRSAoaSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVn Y2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSwg Yy5yZWxwZXJzaXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0 YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5p bmhwYXJlbnQgPSAndCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0 X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2Nh dGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dCBDT0xMQVRFICJDIjsKKyAgb2lkICAg fCAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICB8IHJlbHBlcnNpc3RlbmNlIAorLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdHBf MF8yIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikgfCB0CisoMSByb3cpCisKKy0tIEVS Uk9SOiAgY2Fubm90IGNyZWF0ZSBhIHBlcm1hbmVudCByZWxhdGlvbiBhcyBwYXJ0aXRpb24g b2YgdGVtcG9yYXJ5IHJlbGF0aW9uICJ0IgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJ T04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8g KDIpKTsKK0VSUk9SOiAgY2Fubm90IGNyZWF0ZSBhIHBlcm1hbmVudCByZWxhdGlvbiBhcyBw YXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0aW9uICJ0IgorQUxURVIgVEFCTEUgdCBTUExJ VCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiBwZ190ZW1wLnRwXzBfMSBG T1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiBwZ190ZW1wLnRwXzFf MiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CistLSBQYXJ0aXRpb25zIHNob3VsZCBi ZSB0ZW1wb3JhcnkuCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIHBnX2Nh dGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSwgYy5yZWxwZXJzaXN0 ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhl cml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAn dCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxw YXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xh c3M6OnBnX2NhdGFsb2cudGV4dCBDT0xMQVRFICJDIjsKKyAgb2lkICAgfCAgICAgICAgcGdf Z2V0X2V4cHIgICAgICAgICB8IHJlbHBlcnNpc3RlbmNlIAorLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdHBfMF8xIHwgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMSkgfCB0CisgdHBfMV8yIHwgRk9SIFZBTFVFUyBGUk9NICgx KSBUTyAoMikgfCB0CisoMiByb3dzKQorCitEUk9QIFRBQkxFIHQ7CistLSBDaGVjayB0aGUg bmV3IHBhcnRpdGlvbnMgaW5oZXJpdCBwYXJlbnQncyB0YWJsZXNwYWNlCitDUkVBVEUgVEFC TEUgdCAoaSBpbnQgUFJJTUFSWSBLRVkgVVNJTkcgSU5ERVggVEFCTEVTUEFDRSByZWdyZXNz X3RibHNwYWNlKQorICBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIFRBQkxFU1BBQ0UgcmVncmVz c190YmxzcGFjZTsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0 cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikp OworU0VMRUNUIHRhYmxlbmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX3RhYmxlcworICBXSEVS RSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMScsICd0cF8xXzInKSBBTkQgc2NoZW1hbmFt ZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5hbWUgQ09M TEFURSAiQyIsIHRhYmxlc3BhY2UgQ09MTEFURSAiQyI7CisgdGFibGVuYW1lIHwgICAgdGFi bGVzcGFjZSAgICAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAg ICB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8wXzEgICAgfCByZWdyZXNzX3RibHNwYWNlCisg dHBfMV8yICAgIHwgcmVncmVzc190YmxzcGFjZQorKDMgcm93cykKKworU0VMRUNUIHRhYmxl bmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNlIEZST00gcGdfaW5kZXhlcworICBXSEVSRSB0 YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMScsICd0cF8xXzInKSBBTkQgc2NoZW1hbmFtZSA9 ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5hbWUgQ09MTEFU RSAiQyIsIGluZGV4bmFtZSBDT0xMQVRFICJDIiwgdGFibGVzcGFjZSBDT0xMQVRFICJDIjsK KyB0YWJsZW5hbWUgfCAgaW5kZXhuYW1lICB8ICAgIHRhYmxlc3BhY2UgICAgCistLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICB8IHRf cGtleSAgICAgIHwgcmVncmVzc190YmxzcGFjZQorIHRwXzBfMSAgICB8IHRwXzBfMV9wa2V5 IHwgcmVncmVzc190YmxzcGFjZQorIHRwXzFfMiAgICB8IHRwXzFfMl9wa2V5IHwgcmVncmVz c190YmxzcGFjZQorKDMgcm93cykKKworRFJPUCBUQUJMRSB0OworLS0gQ2hlY2sgbmV3IHBh cnRpdGlvbnMgaW5oZXJpdHMgcGFyZW50J3MgdGFibGUgYWNjZXNzIG1ldGhvZAorQ1JFQVRF IEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uX3NwbGl0X2hlYXAgVFlQRSBUQUJMRSBIQU5ETEVS IGhlYXBfdGFibGVhbV9oYW5kbGVyOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJ T04gQlkgUkFOR0UgKGkpIFVTSU5HIHBhcnRpdGlvbl9zcGxpdF9oZWFwOworQ1JFQVRFIFRB QkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsK K0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJ T04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRw XzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitTRUxFQ1QgYy5yZWxuYW1lLCBh LmFtbmFtZQorRlJPTSBwZ19jbGFzcyBjIEpPSU4gcGdfYW0gYSBPTiBjLnJlbGFtID0gYS5v aWQKK1dIRVJFIGMub2lkIElOICgndCc6OnJlZ2NsYXNzLCAndHBfMF8xJzo6cmVnY2xhc3Ms ICd0cF8xXzInOjpyZWdjbGFzcykKK09SREVSIEJZIGMucmVsbmFtZSBDT0xMQVRFICJDIjsK KyByZWxuYW1lIHwgICAgICAgIGFtbmFtZSAgICAgICAgCistLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHQgICAgICAgfCBwYXJ0aXRpb25fc3BsaXRfaGVhcAorIHRwXzBf MSAgfCBwYXJ0aXRpb25fc3BsaXRfaGVhcAorIHRwXzFfMiAgfCBwYXJ0aXRpb25fc3BsaXRf aGVhcAorKDMgcm93cykKKworRFJPUCBUQUJMRSB0OworRFJPUCBBQ0NFU1MgTUVUSE9EIHBh cnRpdGlvbl9zcGxpdF9oZWFwOworLS0gU3BsaXQgcGFydGl0aW9uIG9mIGEgdGVtcG9yYXJ5 IHRhYmxlIHdoZW4gb25lIG9mIHRoZSBwYXJ0aXRpb25zIGFmdGVyCistLSBzcGxpdCBoYXMg dGhlIHNhbWUgbmFtZSBhcyB0aGUgcGFydGl0aW9uIGJlaW5nIHNwbGl0CitDUkVBVEUgVEVN UCBUQUJMRSB0IChhIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhKTsKK0NSRUFURSBURU1Q IFRBQkxFIHRwXzAgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7 CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wIElOVE8KKyAgKFBBUlRJVElP TiBwZ190ZW1wLnRwXzAgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJ T04gcGdfdGVtcC50cF8xIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK0RST1AgVEFC TEUgdDsKKy0tIENoZWNrIGRlZmF1bHRzIGFuZCBjb25zdHJhaW50cyBvZiBuZXcgcGFydGl0 aW9ucworQ1JFQVRFIFRBQkxFIHRfYmlnaW50ICgKKyAgYiBiaWdpbnQsCisgIGkgaW50IERF RkFVTFQgKDMrMTApLAorICBqIGludCBERUZBVUxUIDEwMSwKKyAgayBpbnQgR0VORVJBVEVE IEFMV0FZUyBBUyAoYisxMCkgU1RPUkVECispCitQQVJUSVRJT04gQlkgUkFOR0UgKGIpOwor Q1JFQVRFIFRBQkxFIHRfYmlnaW50X2RlZmF1bHQgUEFSVElUSU9OIE9GIHRfYmlnaW50IERF RkFVTFQ7CistLSBTaG93IGRlZmF1bHRzL2NvbnN0cmFpbnRzIGJlZm9yZSBTUExJVCBQQVJU SVRJT04KK1xkKyB0X2JpZ2ludAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFBhcnRpdGlvbmVkIHRhYmxlICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnRfYmlnaW50Igor IENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAg ICAgIERlZmF1bHQgICAgICAgICAgICAgICAgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwg RGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBiICAgICAgfCBiaWdpbnQgIHwgICAgICAg ICAgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGkgICAgICB8IGludGVnZXIgfCAgICAg ICAgICAgfCAgICAgICAgICB8IDMgKyAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaiAgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgMTAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBrICAgICAgfCBpbnRlZ2VyIHwg ICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgoYiArIDEwKSkg c3RvcmVkIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIGtleTogUkFO R0UgKGIpCitQYXJ0aXRpb25zOiB0X2JpZ2ludF9kZWZhdWx0IERFRkFVTFQKKworXGQrIHRf YmlnaW50X2RlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRh YmxlICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnRfYmlnaW50X2RlZmF1bHQiCisgQ29sdW1u IHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgRGVm YXVsdCAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlw dGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLQorIGIgICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFp biAgIHwgICAgICAgICAgICAgIHwgCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8 ICAgICAgICAgIHwgMyArIDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBs YWluICAgfCAgICAgICAgICAgICAgfCAKKyBqICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAg IHwgICAgICAgICAgfCAxMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg cGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGsgICAgICB8IGludGVnZXIgfCAgICAgICAg ICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKChiICsgMTApKSBzdG9yZWQg fCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHRfYmlnaW50IERF RkFVTFQKK05vIHBhcnRpdGlvbiBjb25zdHJhaW50CisKK0FMVEVSIFRBQkxFIHRfYmlnaW50 IFNQTElUIFBBUlRJVElPTiB0X2JpZ2ludF9kZWZhdWx0IElOVE8KKyAgKFBBUlRJVElPTiB0 X2JpZ2ludF8wMV8xMCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMCksCisgICBQQVJUSVRJ T04gdF9iaWdpbnRfZGVmYXVsdCBERUZBVUxUKTsKKy0tIFNob3cgZGVmYXVsdHMvY29uc3Ry YWludHMgYWZ0ZXIgU1BMSVQgUEFSVElUSU9OCitcZCsgdF9iaWdpbnRfZGVmYXVsdAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRpdGlvbl9zcGxp dF9zY2hlbWEudF9iaWdpbnRfZGVmYXVsdCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0 aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAg IHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t CisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAg fCAKKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAzICsgMTAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAg ICB8IAorIGogICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IDEwMSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAg ICAgIHwgCisgayAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2Vu ZXJhdGVkIGFsd2F5cyBhcyAoKGIgKyAxMCkpIHN0b3JlZCB8IHBsYWluICAgfCAgICAgICAg ICAgICAgfCAKK1BhcnRpdGlvbiBvZjogdF9iaWdpbnQgREVGQVVMVAorUGFydGl0aW9uIGNv bnN0cmFpbnQ6IChOT1QgKChiIElTIE5PVCBOVUxMKSBBTkQgKChiID49ICcwJzo6YmlnaW50 KSBBTkQgKGIgPCAnMTAnOjpiaWdpbnQpKSkpCisKK1xkKyB0X2JpZ2ludF8wMV8xMAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hLnRfYmlnaW50XzAxXzEwIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRp b24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAg fCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0K KyBiICAgICAgfCBiaWdpbnQgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8 IAorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IDMgKyAxMCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAg IHwgCisgaiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgMTAxICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAg ICAgfCAKKyBrICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5l cmF0ZWQgYWx3YXlzIGFzICgoYiArIDEwKSkgc3RvcmVkIHwgcGxhaW4gICB8ICAgICAgICAg ICAgICB8IAorUGFydGl0aW9uIG9mOiB0X2JpZ2ludCBGT1IgVkFMVUVTIEZST00gKCcwJykg VE8gKCcxMCcpCitQYXJ0aXRpb24gY29uc3RyYWludDogKChiIElTIE5PVCBOVUxMKSBBTkQg KGIgPj0gJzAnOjpiaWdpbnQpIEFORCAoYiA8ICcxMCc6OmJpZ2ludCkpCisKK0RST1AgVEFC TEUgdF9iaWdpbnQ7CistLSBUZXN0IHBlcm1pc3Npb24gY2hlY2tzLiAgVGhlIHVzZXIgbmVl ZHMgdG8gb3duIHRoZSBwYXJlbnQgdGFibGUgYW5kIHRoZQorLS0gdGhlIHBhcnRpdGlvbiB0 byBzcGxpdCB0byBkbyB0aGUgc3BsaXQuCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlv bl9zcGxpdF9hbGljZTsKK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2Jv YjsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBUTyByZWdy ZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0 aW9uX3NwbGl0X3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitTRVQg U0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOwor Q1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRF IFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgy KTsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRf Ym9iOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBB UlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJ T04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsgLS1lcnJvcgorRVJST1I6 ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHQKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElP TjsKK0FMVEVSIFRBQkxFIHQgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9i OworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9i b2I7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFS VElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElP TiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOyAtLWVycm9yCitFUlJPUjog IG11c3QgYmUgb3duZXIgb2YgdGFibGUgdHBfMF8yCitSRVNFVCBTRVNTSU9OIEFVVEhPUkla QVRJT047CitBTFRFUiBUQUJMRSB0cF8wXzIgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25f c3BsaXRfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlv bl9zcGxpdF9ib2I7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5U TworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAg IFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOyAtLW9rCitS RVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitEUk9QIFRBQkxFIHQ7CistLSBUZXN0OiBv d25lciBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgYmUgdGhlIHNhbWUgYXMgb3duZXIgb2Yg c3BsaXQgcGFydGl0aW9uCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBS QU5HRSAoaSk7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9u X3NwbGl0X2FsaWNlOworQ1JFQVRFIFRBQkxFIHRwXzBfMihpIGludCk7CitSRVNFVCBTRVNT SU9OIEFVVEhPUklaQVRJT047CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBf MF8yIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworLS0gT3duZXIgaXMgJ3JlZ3Jlc3Nf cGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK1xkdCB0cF8wXzIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiB0YWJsZXMKKyAgICAgICAgIFNjaGVtYSAgICAgICAgIHwg IE5hbWUgIHwgVHlwZSAgfCAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgdHBfMF8yIHwgdGFi bGUgfCByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZQorKDEgcm93KQorCitBTFRFUiBU QUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBf MSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9S IFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworLS0gT3duZXIgc2hvdWxkIGJlICdyZWdyZXNz X3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitcZHQgdHBfMF8xCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2YgdGFibGVzCisgICAgICAgICBTY2hlbWEgICAgICAgICB8 ICBOYW1lICB8IFR5cGUgIHwgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHRwXzBfMSB8IHRh YmxlIHwgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKKygxIHJvdykKKworXGR0IHRw XzFfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHRhYmxlcworICAg ICAgICAgU2NoZW1hICAgICAgICAgfCAgTmFtZSAgfCBUeXBlICB8ICAgICAgICAgICAgIE93 bmVyICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEgfCB0cF8xXzIgfCB0YWJsZSB8IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2Fs aWNlCisoMSByb3cpCisKK0RST1AgVEFCTEUgdDsKKy0tIFRlc3Q6IGluZGV4IG9mIG5ldyBw YXJ0aXRpb25zIHNob3VsZCBiZSBjcmVhdGVkIHdpdGggc2FtZSBvd25lciBhcyBzcGxpdAor LS0gcGFydGl0aW9uCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0 aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkg UkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzEwXzIwIFBBUlRJVElPTiBPRiB0IEZPUiBW QUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMTEpLCAo MTYpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcnVuX21lKGludGVnZXIpIFJFVFVS TlMgaW50ZWdlciBBUyAkJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICd5b3UgYXJlIHJ1bm5p bmcgbWUgYXMgJScsIENVUlJFTlRfVVNFUjsKKyAgUkVUVVJOICQxOworRU5ECiskJCBMQU5H VUFHRSBQTFBHU1FMIElNTVVUQUJMRTsKKy0tIE93bmVyIGlzICdyZWdyZXNzX3BhcnRpdGlv bl9zcGxpdF9hbGljZSc6CitDUkVBVEUgSU5ERVggT04gdCAocnVuX21lKGkpKTsKK05PVElD RTogIHlvdSBhcmUgcnVubmluZyBtZSBhcyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGlj ZQorTk9USUNFOiAgeW91IGFyZSBydW5uaW5nIG1lIGFzIHJlZ3Jlc3NfcGFydGl0aW9uX3Nw bGl0X2FsaWNlCitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CistLSBPd25lciBzaG91 bGQgYmUgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK0FMVEVSIFRBQkxFIHQg U1BMSVQgUEFSVElUSU9OIHRwXzEwXzIwIElOVE8KKyAgKFBBUlRJVElPTiB0cF8xMF8xNSBG T1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorICAgUEFSVElUSU9OIHRwXzE1XzIwIEZP UiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworTk9USUNFOiAgeW91IGFyZSBydW5uaW5n IG1lIGFzIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlCitOT1RJQ0U6ICB5b3UgYXJl IHJ1bm5pbmcgbWUgYXMgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKK0RST1AgVEFC TEUgdDsKK0RST1AgRlVOQ1RJT04gcnVuX21lKGludGVnZXIpOworUkVWT0tFIEFMTCBPTiBT Q0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX3Nw bGl0X2FsaWNlOworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVt YSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0RST1AgUk9MRSByZWdyZXNz X3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9z cGxpdF9ib2I7CistLSBUZXN0IGZvciBoYXNoIHBhcnRpdGlvbmVkIHRhYmxlCitDUkVBVEUg VEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBIQVNIKGkpOworQ1JFQVRFIFRBQkxFIHRw MSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVS IDApOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEgg KE1PRFVMVVMgMiwgUkVNQUlOREVSIDEpOworLS0gRVJST1I6ICBwYXJ0aXRpb24gb2YgaGFz aC1wYXJ0aXRpb25lZCB0YWJsZSBjYW5ub3QgYmUgc3BsaXQKK0FMVEVSIFRBQkxFIHQgU1BM SVQgUEFSVElUSU9OIHRwMSBJTlRPCisgIChQQVJUSVRJT04gdHAxXzEgRk9SIFZBTFVFUyBX SVRIIChNT0RVTFVTIDQsIFJFTUFJTkRFUiAwKSwKKyAgIFBBUlRJVElPTiB0cDFfMiBGT1Ig VkFMVUVTIFdJVEggKE1PRFVMVVMgNCwgUkVNQUlOREVSIDIpKTsKK0VSUk9SOiAgcGFydGl0 aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIHNwbGl0CistLSBFUlJP UjogIGxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdv IHBhcnRpdGlvbnMKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwMSBJTlRPCisg IChQQVJUSVRJT04gdHAxXzEgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDQsIFJFTUFJTkRF UiAwKSk7CitFUlJPUjogIGxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4g YXQgbGVhc3QgdHdvIHBhcnRpdGlvbnMKK0RST1AgVEFCTEUgdDsKKy0tIEFkZGl0aW9uYWwg dGVzdHMgZm9yIGVycm9yIG1lc3NhZ2VzCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNh bGVzcGVyc29uX2lkIGludCwgc2FsZXNwZXJzb25fbmFtZSB2YXJjaGFyKDMwKSwgc2FsZXNf YW1vdW50IGludCwgc2FsZXNfZGF0ZSBkYXRlKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVz X2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUt MDEnKTsKKy0tIEVSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIy MDIyIiBpcyBub3QgZXF1YWwgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uICJz YWxlc19mZWJfbWFyX2FwcjIwMjIiCistLSBISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdF IFBBUlRJVElPTlMgcmVxdWlyZSBjb21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMg bXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uCitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9h cHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7CitFUlJPUjogIHVwcGVyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJvdW5k IG9mIHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgorTElORSA0OiAu Li4gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA2LTAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBB UlRJVElPTlMgcmVxdWlyZSBjb21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVz dCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uCitEUk9Q IFRBQkxFIHNhbGVzX3JhbmdlOworLS0gVGVzdCBmb3Igc3BsaXQgcGFydGl0aW9uIHByb3Bl cnRpZXM6CistLSAqIFNUQVRJU1RJQ1MgaXMgZW1wdHkKKy0tICogQ09NTUVOVCBpcyBlbXB0 eQorLS0gKiBERUZBVUxUUyBhcmUgdGhlIHNhbWUgYXMgREVGQVVMVFMgZm9yIHBhcnRpdGlv bmVkIHRhYmxlCistLSAqIFNUT1JBR0UgaXMgdGhlIHNhbWUgYXMgU1RPUkFHRSBmb3IgcGFy dGl0aW9uZWQgdGFibGUKKy0tICogR0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBhcmUgdGhl IHNhbWUgYXMgR0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBmb3IgcGFydGl0aW9uZWQgdGFi bGUKKy0tICogVFJJR0dFUlMgYXJlIHRoZSBzYW1lIGFzIFRSSUdHRVJTIGZvciBwYXJ0aXRp b25lZCB0YWJsZQorQ1JFQVRFIFRBQkxFIHQKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQg U1RPUkFHRSBFWFRFTkRFRCBDT01QUkVTU0lPTiBwZ2x6IERFRkFVTFQgJ2RlZmF1bHRfdCcs CisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAxLTAx JykgU1RPUkVEKSBQQVJUSVRJT04gQlkgUkFOR0UgKGFicyhpKSk7CitDT01NRU5UIE9OIENP TFVNTiB0LmkgSVMgJ3QxLmknOworQ1JFQVRFIFRBQkxFIHRwX3gKKyhpIGludCBOT1QgTlVM TCwKKyB0IHRleHQgU1RPUkFHRSBNQUlOIERFRkFVTFQgJ2RlZmF1bHRfdHBfeCcsCisgYiBi aWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAyLTAyJykgU1RP UkVEKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF94IEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDIpOworQ09NTUVOVCBPTiBDT0xVTU4gdHBfeC5pIElTICd0cF94Lmkn OworQ1JFQVRFIFNUQVRJU1RJQ1MgdF9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJv bSB0OworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBfeF9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGks IGIgZnJvbSB0cF94OworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2sg Q0hFQ0sgKGIgPiAwKTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNr MSBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNFRDsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNU UkFJTlQgdF9iX2NoZWNrMiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRDsKK0FMVEVSIFRBQkxF IHQgQUREIENPTlNUUkFJTlQgdF9iX25uIE5PVCBOVUxMIGIgTk9UIFZBTElEOworSU5TRVJU IElOVE8gdHBfeChpLCB0LCBiKSBWQUxVRVMoMCwgREVGQVVMVCwgMSk7CitJTlNFUlQgSU5U TyB0cF94KGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAyKTsKK0NSRUFURSBPUiBSRVBM QUNFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VB R0UgJ3BscGdzcWwnIEFTCiskQk9EWSQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAndHJpZ2dl ciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdW WzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgIFJFVFVSTiBuZXc7CitFTkQ7Cisk Qk9EWSQ7CitDUkVBVEUgVFJJR0dFUiB0X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVG T1JFIElOU0VSVCBPTiB0IEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmln Z2VyX2Z1bmN0aW9uKCd0Jyk7CitDUkVBVEUgVFJJR0dFUiB0cF94X2JlZm9yZV9pbnNlcnRf cm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF94IEZPUiBFQUNIIFJPVworICBFWEVD VVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF94Jyk7CitcZCsgdHBfeAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFy dGl0aW9uX3NwbGl0X3NjaGVtYS50cF94IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRp b24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAg ICAgICAgICAgIHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLQorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBu b3QgbnVsbCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IHRwX3guaQorIHQgICAgICB8IHRleHQg ICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICdkZWZhdWx0X3RwX3gnOjp0ZXh0ICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgbWFpbiAgICB8ICAgICAgICAgICAgICB8IAorIGIg ICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAg ICAgICB8IAorIGQgICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdl bmVyYXRlZCBhbHdheXMgYXMgKCcwMi0wMi0yMDIyJzo6ZGF0ZSkgc3RvcmVkIHwgcGxhaW4g ICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0IEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDIpCitQYXJ0aXRpb24gY29uc3RyYWludDogKChhYnMoaSkgSVMgTk9UIE5VTEwp IEFORCAoYWJzKGkpID49IDApIEFORCAoYWJzKGkpIDwgMikpCitDaGVjayBjb25zdHJhaW50 czoKKyAgICAidF9iX2NoZWNrIiBDSEVDSyAoYiA+IDApCisgICAgInRfYl9jaGVjazEiIENI RUNLIChiID4gMCkgTk9UIEVORk9SQ0VECisgICAgInRfYl9jaGVjazIiIENIRUNLIChiID4g MCkgTk9UIFZBTElECitTdGF0aXN0aWNzIG9iamVjdHM6CisgICAgInBhcnRpdGlvbl9zcGxp dF9zY2hlbWEudHBfeF9zdGF0IiAoZGVwZW5kZW5jaWVzKSBPTiBpLCBiIEZST00gdHBfeAor Tm90LW51bGwgY29uc3RyYWludHM6CisgICAgInRwX3hfaV9ub3RfbnVsbCIgTk9UIE5VTEwg ImkiIChpbmhlcml0ZWQpCisgICAgInRfYl9ubiIgTk9UIE5VTEwgImIiIChpbmhlcml0ZWQp IE5PVCBWQUxJRAorVHJpZ2dlcnM6CisgICAgdF9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2Vy IEJFRk9SRSBJTlNFUlQgT04gdHBfeCBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0 cmlnZ2VyX2Z1bmN0aW9uKCd0JyksIE9OIFRBQkxFIHQKKyAgICB0cF94X2JlZm9yZV9pbnNl cnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF94IEZPUiBFQUNIIFJPVyBFWEVD VVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3RwX3gnKQorCitBTFRFUiBUQUJMRSB0 IFNQTElUIFBBUlRJVElPTiB0cF94IElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfeCBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgyKSk7CitcZCsgdHBfeAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEudHBf eCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAg ICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgIHwg U3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQor IGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICAgfCAgICAg ICAgICAgICAgfCAKKyB0ICAgICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAg fCAnZGVmYXVsdF90Jzo6dGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGV4 dGVuZGVkIHwgICAgICAgICAgICAgIHwgCisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAg ICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorIGQgICAgICB8IGRhdGUg ICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKCcwMS0w MS0yMDIyJzo6ZGF0ZSkgc3RvcmVkIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKK1Bh cnRpdGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKQorUGFydGl0aW9uIGNv bnN0cmFpbnQ6ICgoYWJzKGkpIElTIE5PVCBOVUxMKSBBTkQgKGFicyhpKSA+PSAxKSBBTkQg KGFicyhpKSA8IDIpKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInRfYl9jaGVjayIgQ0hF Q0sgKGIgPiAwKQorICAgICJ0X2JfY2hlY2sxIiBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNF RAorICAgICJ0X2JfY2hlY2syIiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRAorTm90LW51bGwg Y29uc3RyYWludHM6CisgICAgInRfaV9ub3RfbnVsbCIgTk9UIE5VTEwgImkiIChpbmhlcml0 ZWQpCisgICAgInRfYl9ubiIgTk9UIE5VTEwgImIiIChpbmhlcml0ZWQpIE5PVCBWQUxJRAor VHJpZ2dlcnM6CisgICAgdF9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNF UlQgT04gdHBfeCBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0 aW9uKCd0JyksIE9OIFRBQkxFIHQKKworSU5TRVJUIElOVE8gdChpLCB0LCBiKSBWQUxVRVMo MSwgREVGQVVMVCwgMyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHQpIGNhbGxlZDogYWN0aW9uID0g SU5TRVJULCB3aGVuID0gQkVGT1JFLCBsZXZlbCA9IFJPVworU0VMRUNUIHRhYmxlb2lkOjpy ZWdjbGFzcywgKiBGUk9NIHQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENP TExBVEUgIkMiLCBiOworIHRhYmxlb2lkIHwgaSB8ICAgICAgdCAgICAgICB8IGIgfCAgICAg ZCAgICAgIAorLS0tLS0tLS0tLSstLS0rLS0tLS0tLS0tLS0tLS0rLS0tKy0tLS0tLS0tLS0t LQorIHRwXzBfMSAgIHwgMCB8IGRlZmF1bHRfdHBfeCB8IDEgfCAwMS0wMS0yMDIyCisgdHBf eCAgICAgfCAxIHwgZGVmYXVsdF90cF94IHwgMiB8IDAxLTAxLTIwMjIKKyB0cF94ICAgICB8 IDEgfCBkZWZhdWx0X3QgICAgfCAzIHwgMDEtMDEtMjAyMgorKDMgcm93cykKKworRFJPUCBU QUJMRSB0OworRFJPUCBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCk7CistLSBUZXN0IGZv ciByZWNvbXB1dGF0aW9uIG9mIHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1ucy4KK0NSRUFURSBU QUJMRSB0IChpIGludCwgdGFiX2lkIGludCBnZW5lcmF0ZWQgYWx3YXlzIGFzICh0YWJsZW9p ZCkgc3RvcmVkKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBf MiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRB QkxFIHQgQUREIENPTlNUUkFJTlQgY2MgQ0hFQ0sodGFibGVvaWQgPD4gMTIzNDU2Nzg5KTsK K0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworLS0gU2hvdWxkIGJlIDEgYmVjYXVz ZSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0wIGlzIHRoZSBzYW1lIGFz CistLSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0xLgorU0VMRUNUIGNv dW50KCopIEZST00gdCBXSEVSRSBpID0gMCBBTkQgdGFiX2lkIElOIChTRUxFQ1QgdGFiX2lk IEZST00gdCBXSEVSRSBpID0gMSk7CisgY291bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJv dykKKworLS0gInRhYl9pZCIgY29sdW1uIChzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbikgd2l0 aCAidGFibGVvaWQiIGF0dHJpYnV0ZSByZXF1aXJlcworLS0gcmVjb21wdXRhdGlvbiBoZXJl LgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJ VElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04g dHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKKy0tIFNob3VsZCBiZSAwIGJl Y2F1c2UgcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MCBpcyBkaWZmZXJl bnQgZnJvbQorLS0gcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MS4KK1NF TEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9pZCBJTiAoU0VMRUNU IHRhYl9pZCBGUk9NIHQgV0hFUkUgaSA9IDEpOworIGNvdW50IAorLS0tLS0tLQorICAgICAw CisoMSByb3cpCisKK0RST1AgVEFCTEUgdDsKK1JFU0VUIHNlYXJjaF9wYXRoOworLS0KK0RS T1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7CitEUk9QIFNDSEVNQSBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hMjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4 IDJkM2Y1MGE0M2IuLjBmYjUzZDQ4NmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hl ZHVsZQpAQCAtMTIzLDcgKzEyMyw3IEBAIHRlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3Fs IGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSBjb252ZXJzaW9uIHRyCiAj IFRoZSBzdGF0cyB0ZXN0IHJlc2V0cyBzdGF0cywgc28gbm90aGluZyBlbHNlIG5lZWRpbmcg c3RhdHMgYWNjZXNzIGNhbiBiZSBpbgogIyB0aGlzIGdyb3VwLgogIyAtLS0tLS0tLS0tCi10 ZXN0OiBwYXJ0aXRpb25fbWVyZ2UgcGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJl bG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0 aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24gY29tcHJlc3Npb25fbHo0 IG1lbW9pemUgc3RhdHMgcHJlZGljYXRlIG51bWEKK3Rlc3Q6IHBhcnRpdGlvbl9tZXJnZSBw YXJ0aXRpb25fc3BsaXQgcGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlv bnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9uX2lu Zm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24gY29tcHJlc3Npb25fbHo0IG1lbW9p emUgc3RhdHMgcHJlZGljYXRlIG51bWEKIAogIyBldmVudF90cmlnZ2VyIGRlcGVuZHMgb24g Y3JlYXRlX2FtIGFuZCBjYW5ub3QgcnVuIGNvbmN1cnJlbnRseSB3aXRoCiAjIGFueSB0ZXN0 IHRoYXQgcnVucyBEREwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRp dGlvbl9zcGxpdC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmVkMzI2YjIwNzYK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3Bs aXQuc3FsCkBAIC0wLDAgKzEsMTE0MyBAQAorLS0KKy0tIFBBUlRJVElPTl9TUExJVAorLS0g VGVzdHMgZm9yICJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIC4uLiIgY29tbWFu ZAorLS0KKworQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hOworQ1JFQVRF IFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBh cnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKKworLS0KKy0tIEJZIFJBTkdFIHBhcnRp dGlvbmluZworLS0KKworLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBpbnQsIHNhbGVzcGVyc29uX25h bWUgdmFyY2hhcigzMCksIHNhbGVzX2Ftb3VudCBpbnQsIHNhbGVzX2RhdGUgZGF0ZSkgUEFS VElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4y MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAx LTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9h cHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJz IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCistLSBFUlJPUjogIHJlbGF0 aW9uICJzYWxlc194eHgiIGRvZXMgbm90IGV4aXN0CitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfeHh4IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisK Ky0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbjIwMjIiIGFscmVhZHkgZXhpc3RzCitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9h cHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgaW52YWxpZCBi b3VuZCBzcGVjaWZpY2F0aW9uIGZvciBhIHJhbmdlIHBhcnRpdGlvbgorQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIElOICgnMjAyMi0wNS0w MScsICcyMDIyLTA2LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIGVtcHR5IHJhbmdlIGJvdW5kIHNwZWNpZmll ZCBmb3IgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAyLTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA1LTAxJykpOworCistLUVSUk9SOiAgbGlzdCBvZiBzcGxpdCBwYXJ0aXRpb25zIHNob3Vs ZCBjb250YWluIGF0IGxlYXN0IHR3byBpdGVtcworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug U1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTEwLTAxJykpOworCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAi c2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBh cnRpdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgorLS0gSElOVDogIEFMVEVSIFRBQkxF IC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmUgY29tYmluZWQgYm91bmRzIG9mIG5ldyBw YXJ0aXRpb25zIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQgb2YgdGhlIHNwbGl0IHBh cnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8g KCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjog IHBhcnRpdGlvbiB3aXRoIG5hbWUgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgaXMgYWxyZWFk eSB1c2VkCistLSAoV2UgY2FuIGNyZWF0ZSBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZSBuYW1l IGFzIHNwbGl0IHBhcnRpdGlvbiwgYnV0IGNhbid0IGNyZWF0ZSB0d28gcGFydGl0aW9ucyB3 aXRoIHRoZSBzYW1lIG5hbWUpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19m ZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIHBhcnRpdGlvbiB3aXRoIG5hbWUgInNhbGVz X2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAx JykpOworCistLSBFUlJPUjogIHBhcnRpdGlvbiB3aXRoIG5hbWUgInNhbGVzX2ZlYjIwMjIi IGlzIGFscmVhZHkgdXNlZAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyks CisgICBQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgQUxURVIgYWN0aW9uIFNQTElUIFBB UlRJVElPTiBjYW5ub3QgYmUgcGVyZm9ybWVkIG9uIHJlbGF0aW9uICJzYWxlc19mZWJfbWFy X2FwcjIwMjIiCistLSBERVRBSUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVk IGZvciB0YWJsZXMuCitBTFRFUiBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAz LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykp OworCistLSBFUlJPUjogIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAy MiIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiAic2Fs ZXNfZmViX21hcl9hcHIyMDIyIgorLS0gSElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQ QVJUSVRJT05TIHJlcXVpcmUgY29tYmluZWQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIG11 c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbgorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf bWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA2LTAxJykpOworCistLSBFUlJPUjogIGNhbiBub3Qgc3Bs aXQgdG8gcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiB0b2dldGhlciB3aXRoIHBhcnRpdGlv biAic2FsZXNfZmViMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJ VElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w Mi0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKwor LS0gVGVzdHMgZm9yIHNwYWNlcyBiZXR3ZWVuIHBhcnRpdGlvbnMsIHRoZW0gc2hvdWxkIGJl IGV4ZWN1dGVkIHdpdGhvdXQgREVGQVVMVCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIERFVEFDSCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzOworCistLSBFUlJPUjogIGxv d2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRv IGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIy IgorLS0gSElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmUg Y29tYmluZWQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIG11c3QgZXhhY3RseSBtYXRjaCB0 aGUgYm91bmQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAyJykgVE8g KCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA1LTAxJykpOworCistLSBDaGVjayB0aGUgc291cmNlIHBhcnRpdGlvbiBub3QgaW4gdGhl IHNlYXJjaCBwYXRoCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1h MiwgcHVibGljOworQUxURVIgVEFCTEUgcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19y YW5nZQorU1BMSVQgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmVi X21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIw MjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitTRVQgc2VhcmNoX3BhdGgg PSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLCBwdWJsaWM7CitcZCsgc2FsZXNfcmFuZ2UKKwor RFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKK0RST1AgVEFCTEUgc2FsZXNfb3RoZXJzOworCist LQorLS0gQWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZSB0aGVuIHNwbGl0IHBhcnRp dGlvbgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5U LCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxl c19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAw MCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0x MCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAg J0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAy NTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAy LTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgs ICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAg IDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjIt MDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAo MTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywg ICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAy Mi0wNS0wNCcpOworCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04g c2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEn KSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKK1NFTEVD VCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJs ZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworRFJP UCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworCistLQorLS0gQWRkIHNwbGl0IHBhcnRp dGlvbiwgdGhlbiBhZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25h bWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFS VElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4y MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAx LTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9h cHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJz IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCistLSBTcGxpdCBwYXJ0aXRp b24sIGFsc28gY2hlY2sgc2NoZW1hIHF1YWxpZmljYXRpb24gb2YgbmV3IHBhcnRpdGlvbnMK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFy X2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAz LTAxJyksCisgICBQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfbWFy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworXGQrIHNhbGVzX3JhbmdlCisKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIy LTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAg KDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3Yn LCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIw MjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAor ICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNz c29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAn MjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyks CisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxh dG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3Nywg ICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQn KTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9S REVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJz b25faWQ7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKworLS0KKy0tIFRl c3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAqIEdFTkVS QVRFRCBjb2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4KKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwg c2FsZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2Fs ZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2Fs ZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6dGV4 dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcwJykpIFNU T1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxlcyBk ZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjEgUEFSVElU SU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwgMSkgVE8gKDIw MjIsIDEsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbl9mZWIyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDMs IDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRl IEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwg TUFYVkFMVUUpOworCitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUs IHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFn ZXIxJywgMjAyMSwgMTIsIDcpLAorICAoJ01hbmFnZXIyJywgMjAyMSwgMTIsIDgpLAorICAo J01hbmFnZXIzJywgMjAyMiwgMSwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0KSwK KyAgKCdNYW5hZ2VyMicsIDIwMjIsIDEsIDIpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMiwg MSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAzLCAzKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIs IDMsIDQpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgNSwgMSk7CisKK1NFTEVDVCB0YWJsZW9p ZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19kYXRlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdj bGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVz X2RheTsKKworQUxURVIgVEFCTEUgc2FsZXNfZGF0ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNf amFuX2ZlYjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVF UyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMiwgMSksCisgICBQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDIsIDEpIFRPICgyMDIyLCAzLCAx KSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNf eWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAy MDIyLCAxLCAxMCksCisgICgnTWFuYWdlcjInLCAyMDIyLCAyLCAxMCk7CisKK1NFTEVDVCB0 YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19kYXRlIE9SREVSIEJZIHRhYmxlb2lk OjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgs IHNhbGVzX2RheTsKKworLS1FUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW5fZmViMjAyMiIg ZG9lcyBub3QgZXhpc3QKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuX2ZlYjIwMjI7CisKK0RS T1AgVEFCTEUgc2FsZXNfZGF0ZSBDQVNDQURFOworCistLQorLS0gVGVzdDogc3BsaXQgREVG QVVMVCBwYXJ0aXRpb247IHVzZSBhbiBpbmRleCBvbiBwYXJ0aXRpb24ga2V5OyBjaGVjayBp bmRleCBhZnRlciBzcGxpdAorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNw ZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91 bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVG QVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxl c19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyks CisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9y ZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwg ICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcn KSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdM aScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1 LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0x MScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwg J1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAz NTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAx LTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VM RUNUICogRlJPTSBzYWxlc19vdGhlcnM7CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hF UkUgdGFibGVuYW1lID0gJ3NhbGVzX290aGVycycgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0 aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lIENPTExBVEUgIkMiOworCitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDUtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVM VCk7CisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcworU0VUIGVuYWJs ZV9zZXFzY2FuID0gT0ZGOworCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00g c2FsZXNfZmViMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworU0VMRUNU ICogRlJPTSBzYWxlc19mZWIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7 CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMiB3aGVy ZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworU0VMRUNUICogRlJPTSBzYWxlc19tYXIy MDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitFWFBMQUlOIChDT1NUUyBP RkYpIFNFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIw MjItMDEtMDEnOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyIHdoZXJlIHNhbGVzX2Rh dGUgPiAnMjAyMi0wMS0wMSc7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00g c2FsZXNfb3RoZXJzIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzX290aGVycyB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOwor CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdI RVJFIHRhYmxlbmFtZSA9ICdzYWxlc19mZWIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWUgQ09MTEFURSAiQyI7CitT RUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX21hcjIw MjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZ IGluZGV4bmFtZSBDT0xMQVRFICJDIjsKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVS RSB0YWJsZW5hbWUgPSAnc2FsZXNfYXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0 aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lIENPTExBVEUgIkMiOworU0VM RUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19vdGhlcnMn IGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGlu ZGV4bmFtZSBDT0xMQVRFICJDIjsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURF OworCistLQorLS0gVGVzdDogc29tZSBjYXNlcyBmb3Igc3BsaXR0aW5nIERFRkFVTFQgcGFy dGl0aW9uIChkaWZmZXJlbnQgYm91bmRzKQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5n ZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBz YWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIElOVCkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBz YWxlc19kZWMyMDIxIChsb3dlciBib3VuZCkKKy0tIEVSUk9SOiAgY2FuIG5vdCBzcGxpdCB0 byBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2Fs ZXNfZGVjMjAyMSIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVF UyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19l cnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjMwKSBUTyAoMjAyMjAyMDEpLAorICAgUEFS VElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIw MjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKKy0tIHNh bGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19mZWIyMDIyICh1cHBlciBib3VuZCkK Ky0tIEVSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIi IHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19lcnJvciIKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIw MTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjIw MTAxKSBUTyAoMjAyMjAyMDIpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZB TFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxl c19vdGhlcnMgREVGQVVMVCk7CisKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBz YWxlc19kZWMyMDIxIChpbnNpZGUgYm91bmQpCistLSBFUlJPUjogIGNhbiBub3Qgc3BsaXQg dG8gcGFydGl0aW9uICJzYWxlc19lcnJvciIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNh bGVzX2RlYzIwMjEiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04g c2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxV RVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNf ZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIxMCkgVE8gKDIwMjExMjIwKSwKKyAgIFBB UlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgy MDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCistLSBz YWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMSAoZXhhY3RseSB0aGUg c2FtZSBib3VuZHMpCistLSBFUlJPUjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJz YWxlc19lcnJvciIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEy MDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVF UyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQ QVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCistLSBFUlJPUjogIGNhbiBub3Qg c3BsaXQgREVGQVVMVCBwYXJ0aXRpb24gInNhbGVzX290aGVycyIKKy0tIEhJTlQ6ICBUbyBz cGxpdCBERUZBVUxUIHBhcnRpdGlvbiBvbmUgb2YgdGhlIG5ldyBwYXJ0aXRpb24gbXN1dCBi ZSBERUZBVUxUCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMg RlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfamFu MjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMTAxKSBUTyAoMjAyMjAyMDEpLAorICAgUEFS VElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIw MjIwMzAxKSk7CisKKy0tIG5vIGVycm9yOiBib3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBhcmUg YmV0d2VlbiBzYWxlc19kZWMyMDIxIGFuZCBzYWxlc19mZWIyMDIyCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIy MDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFMVUVTIEZST00gKDIw MjIwMTEwKSBUTyAoMjAyMjAxMjApLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBz YWxlc19vdGhlcnMgREVGQVVMVCk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKK0NS RUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIElOVCkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19v dGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIG5vIGVycm9y OiBib3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBhcmUgZXF1YWwgdG8gbG93ZXIgYW5kIHVwcGVy IGJvdW5kcyBvZiBzYWxlc19kZWMyMDIxIGFuZCBzYWxlc19mZWIyMDIyCitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgy MDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFMVUVTIEZST00g KDIwMjEwMTAxKSBUTyAoMjAyMTAyMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElP TiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisK Ky0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBDSEVDSyBhbmQgRk9SRUlHTiBL RVkgQ09OU1RSQUlOVHMgb24gcGFydGl0aW9uZWQgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUg c2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAo MSwgICdQb2lyb3QnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlICgKK3NhbGVzcGVy c29uX2lkIElOVCBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSwKK3Nh bGVzX2Ftb3VudCBJTlQgQ0hFQ0sgKHNhbGVzX2Ftb3VudCA+IDEpLAorc2FsZXNfZGF0ZSBE QVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworCitDUkVBVEUgVEFCTEUg c2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworU0VMRUNU IHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2Nv bnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfZmViX21hcl9hcHIyMDIyJzo6cmVn Y2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lIENPTExBVEUgIkMiOworCitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIFdlIHNob3VsZCBzZWUgdGhlIHNhbWUgQ09O U1RSQUlOVHMgYXMgb24gc2FsZXNfZmViX21hcl9hcHIyMDIyIHBhcnRpdGlvbgorU0VMRUNU IHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2Nv bnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfZmViMjAyMic6OnJlZ2NsYXNzOjpv aWQgT1JERVIgQlkgY29ubmFtZSBDT0xMQVRFICJDIjsKK1NFTEVDVCBwZ19nZXRfY29uc3Ry YWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJF IGNvbnJlbGlkID0gJ3NhbGVzX21hcjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNv bm5hbWUgQ09MTEFURSAiQyI7CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwg Y29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdz YWxlc19hcHIyMDIyJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lIENPTExBVEUg IkMiOworCistLSBFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJzYWxlc19tYXIyMDIy IiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc19hbW91bnRf Y2hlY2siCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsIDAsICcyMDIyLTAz LTExJyk7CistLSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInNhbGVzX21h cjIwMjIiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3JhbmdlX3Nh bGVzcGVyc29uX2lkX2ZrZXkiCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKC0x LCAxMCwgJzIwMjItMDMtMTEnKTsKKy0tIG9rCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDEsIDEwLCAnMjAyMi0wMy0xMScpOworCitEUk9QIFRBQkxFIHNhbGVzX3Jhbmdl IENBU0NBREU7CitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CisKKy0tCistLSBU ZXN0OiBzcGxpdCBwYXJ0aXRpb24gb24gcGFydGl0aW9uZWQgdGFibGUgaW4gY2FzZSBvZiBl eGlzdGluZyBGT1JFSUdOIEtFWSByZWZlcmVuY2UgZnJvbSBhbm90aGVyIHRhYmxlCistLQor Q1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtF WSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXMgKHNhbGVzcGVyc29uX2lkIElO VCBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSwgc2FsZXNfYW1vdW50 IElOVCwgc2FsZXNfZGF0ZSBEQVRFKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFf MTAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEw KTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIFBBUlRJVElPTiBPRiBzYWxlc3Bl b3BsZSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoNDApOworCitJTlNFUlQgSU5UTyBzYWxl c3Blb3BsZSBWQUxVRVMKKyAgKDEsICAnUG9pcm90JyksCisgICgxMCwgJ01heScpLAorICAo MTksICdJdmFub3YnKSwKKyAgKDIwLCAnU21pcm5vZmYnKSwKKyAgKDMwLCAnRm9yZCcpOwor CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMKKyAgKDEsICAxMDAsICcyMDIyLTAzLTAxJyks CisgICgxLCAgMTEwLCAnMjAyMi0wMy0wMicpLAorICAoMTAsIDE1MCwgJzIwMjItMDMtMDEn KSwKKyAgKDEwLCA5MCwgICcyMDIyLTAzLTAzJyksCisgICgxOSwgMjAwLCAnMjAyMi0wMy0w NCcpLAorICAoMjAsIDUwLCAgJzIwMjItMDMtMTInKSwKKyAgKDIwLCAxNzAsICcyMDIyLTAz LTAyJyksCisgICgzMCwgMzAsICAnMjAyMi0wMy0wNCcpOworCitTRUxFQ1QgdGFibGVvaWQ6 OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2Ns YXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworQUxURVIgVEFCTEUg c2FsZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgSU5UTworICAo UEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIw KSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjAp IFRPICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZS T00gKDMwKSBUTyAoNDApKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9N IHNhbGVzcGVvcGxlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRF ICJDIiwgc2FsZXNwZXJzb25faWQ7CisKKy0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBv biB0YWJsZSAic2FsZXMiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVz X3NhbGVzcGVyc29uX2lkX2ZrZXkiCitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDQwLCA1 MCwgICcyMDIyLTAzLTA0Jyk7CistLSBvaworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICgz MCwgNTAsICAnMjAyMi0wMy0wNCcpOworCitEUk9QIFRBQkxFIHNhbGVzIENBU0NBREU7CitE Uk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBzcGxpdCBw YXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgd2l0aCB0cmlnZ2VycworLS0KK0NSRUFU RSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNh bGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNw ZXJzb25faWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04g T0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRB QkxFIHNhbGVzcGVvcGxlMTBfNDAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxV RVMgRlJPTSAoMTApIFRPICg0MCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVF UyAoMSwgICdQb2lyb3QnKTsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0ZXJf aW5zZXJ0X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3Fs JyBBUyAkQk9EWSQKK0JFR0lOCisgICAgUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxl ZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09Q LCBUR19XSEVOLCBUR19MRVZFTDsKKyAgICBSRVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZJDsK KworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3N0YXRlbWVudF90 cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1Ig RUFDSCBTVEFURU1FTlQKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93 X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CisKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxl X2FmdGVyX2luc2VydF9yb3dfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNh bGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0 ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworCistLSAyIHRyaWdnZXJz IHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxl c3Blb3BsZSBWQUxVRVMgKDEwLCAnTWF5Jyk7CistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUg aGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfNDAgVkFMVUVTICgxOSwg J0l2YW5vdicpOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04g c2FsZXNwZW9wbGUxMF80MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF8yMCBG T1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxl MjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxl c3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworCistLSAyIHRy aWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5U TyBzYWxlc3Blb3BsZSBWQUxVRVMgKDIwLCAnU21pcm5vZmYnKTsKKy0tIDEgdHJpZ2dlciBz aG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUzMF80MCBW QUxVRVMgKDMwLCAnRm9yZCcpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZS T00gc2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExB VEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVND QURFOworRFJPUCBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKTsKKworLS0K Ky0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRjaCBpZGVudGl0eSBjb2x1bW4KKy0tIElm IHNwbGl0IHBhcnRpdGlvbiBjb2x1bW4gaXMgaWRlbnRpdHkgY29sdW1uLCBjb2x1bW5zIG9m IG5ldyBwYXJ0aXRpb25zIGFyZSBpZGVudGl0eSBjb2x1bW5zIHRvby4KKy0tCitDUkVBVEUg VEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMg QVMgSURFTlRJVFkgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkp IFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworCitDUkVBVEUgVEFCTEUg c2FsZXNwZW9wbGUxXzIgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDIpOworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRpb24gd2l0aCBpZGVudGl0eSBj b2x1bW46CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUyXzUoc2FsZXNwZXJzb25faWQgSU5U IE5PVCBOVUxMLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0FMVEVSIFRBQkxF IHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUyXzUgRk9SIFZBTFVF UyBGUk9NICgyKSBUTyAoNSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIChzYWxlc3Bl cnNvbl9uYW1lKSBWQUxVRVMgKCdQb2lyb3QnKSwgKCdJdmFub3YnKTsKKworU0VMRUNUIGF0 dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hF UkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUnOjpyZWdjbGFzczo6 b2lkIE9SREVSIEJZIGF0dG51bTsKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0 Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJl bGlkID0gJ3NhbGVzcGVvcGxlMV8yJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07 CistLSBTcGxpdCBwYXJ0aXRpb24gaGFzIGlkZW50aXR5IGNvbHVtbjoKK1NFTEVDVCBhdHRu YW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJF IGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlMl81Jzo6cmVnY2xhc3M6 Om9pZCBPUkRFUiBCWSBhdHRudW07CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElU IFBBUlRJVElPTiBzYWxlc3Blb3BsZTJfNSBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9w bGUyXzMgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoMyksCisgICBQQVJUSVRJT04gc2FsZXNw ZW9wbGUzXzQgRk9SIFZBTFVFUyBGUk9NICgzKSBUTyAoNCksCisgICBQQVJUSVRJT04gc2Fs ZXNwZW9wbGU0XzUgRk9SIFZBTFVFUyBGUk9NICg0KSBUTyAoNSkpOworCitJTlNFUlQgSU5U TyBzYWxlc3Blb3BsZSAoc2FsZXNwZXJzb25fbmFtZSkgVkFMVUVTICgnTWF5JyksICgnRm9y ZCcpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNwZW9wbGUg T1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3Bl cnNvbl9pZDsKKworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQg RlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2Fs ZXNwZW9wbGUnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKK1NFTEVDVCBhdHRu YW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJF IGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlMV8yJzo6cmVnY2xhc3M6 Om9pZCBPUkRFUiBCWSBhdHRudW07CistLSBOZXcgcGFydGl0aW9ucyBoYXZlIGlkZW50aXR5 LWNvbHVtbnM6CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBG Uk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxl c3Blb3BsZTJfMyc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworU0VMRUNUIGF0 dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hF UkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUzXzQnOjpyZWdjbGFz czo6b2lkIE9SREVSIEJZIGF0dG51bTsKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwg YXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0 dHJlbGlkID0gJ3NhbGVzcGVvcGxlNF81Jzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRu dW07CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6 IHNwbGl0IHBhcnRpdGlvbiB3aXRoIGRlbGV0ZWQgY29sdW1ucworLS0KK0NSRUFURSBUQUJM RSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVy c29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25f aWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2Fs ZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRlIG5ldyBw YXJ0aXRpb24gd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBzYWxl c3Blb3BsZTEwXzQwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFS WSBLRVksIGQyIElOVCwgZDMgREFURSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7 CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfNDAgVkFMVUVTCisgICgnZHVtbXkgdmFs dWUgMScsIDE5LCAxMDAsIG5vdygpLCAnSXZhbm92JyksCisgICgnZHVtbXkgdmFsdWUgMics IDIwLCAxMDEsIG5vdygpLCAnU21pcm5vZmYnKTsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9w bGUxMF80MCBEUk9QIENPTFVNTiBkMTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAg RFJPUCBDT0xVTU4gZDI7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIERST1AgQ09M VU1OIGQzOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNh bGVzcGVvcGxlMTBfNDAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKKworSU5TRVJU IElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTCisgICgxLCAnUG9pcm90JyksCisgICgxMCwgJ01h eScpLAorICAoMzAsICdGb3JkJyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElU IFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Bl b3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJT04g c2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApLAorICAgUEFS VElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7 CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRF UiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29u X2lkOworCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CisKKy0tCistLSBUZXN0 OiBzcGxpdCBzdWItcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChz YWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVz X2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKKworQ1JF QVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJz b25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRF KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2Fwcl9hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX290 aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworQ1JFQVRFIElOREVY IHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVl IChzYWxlc19kYXRlKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgx LCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYn LCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIy LTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAg KDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3Qn LCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIw MjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAor ICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRl cicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAn MjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyks CisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21p dGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2Ns YXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0 ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworQUxURVIgVEFCTEUgc2FsZXNf YXByMjAyMiBTUExJVCBQQVJUSVRJT04gc2FsZXNfYXByX2FsbCBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfYXByMjAyMl8wMV8xMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA0LTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xMF8yMCBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTEwJykgVE8gKCcyMDIyLTA0LTIwJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMl8yMF8zMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTIwJykgVE8gKCcyMDIyLTA1LTAxJykpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNz LCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0 IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5n ZTsKKworLS0KKy0tIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorCistLQorLS0gVGVzdDog c3BlY2lmaWMgZXJyb3JzIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KK0NSRUFURSBU QUJMRSBzYWxlc19saXN0Cisoc2FsZXNwZXJzb25faWQgSU5ULAorIHNhbGVzcGVyc29uX25h bWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1v dW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNf c3RhdGUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNf bGlzdCBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5r aScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBG T1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQn LCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERF RkFVTFQ7CisKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfZWFzdCIgd291bGQg b3ZlcmxhcCB3aXRoIGFub3RoZXIgKG5vdCBzcGxpdCkgcGFydGl0aW9uICJzYWxlc19ub3Jk IgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAn TmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFM VUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJywgJ0hlbHNpbmtpJyks CisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3Jywg J0JlcmxpbicsICdLeWl2JykpOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVz X3dlc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gInNhbGVz X2NlbnRyYWwiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxl c19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xp c2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0 IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAg IFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVy bGluJywgJ0xpc2JvbicsICdLeWl2JykpOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24g InNhbGVzX3dlc3QiIGNhbm5vdCBoYXZlIE5VTEwgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0 aXRpb24gInNhbGVzX2FsbCIgZG9lcyBub3QgaGF2ZQorQUxURVIgVEFCTEUgc2FsZXNfbGlz dCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193 ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgTlVM TCksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywg J0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBG T1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworCistLSBFUlJP UjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBoYXZlIHRoaXMgdmFsdWUg YmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2FsbCIgZG9lcyBub3QgaGF2ZQorQUxU RVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlv cmsnLCAnTWFkcmlkJywgJ01lbGJvdXJuZScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3Qg Rk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAg UEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJs aW4nLCAnS3lpdicpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uIGNhbm5vdCBiZSBE RUZBVUxUIGJlY2F1c2UgREVGQVVMVCBwYXJ0aXRpb24gInNhbGVzX290aGVycyIgYWxyZWFk eSBleGlzdHMKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlz Ym9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdNZWxib3VybmUnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2 b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdX YXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMy IERFRkFVTFQpOworCitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CisKKy0tCistLSBUZXN0OiB0 d28gc3BlY2lmaWMgZXJyb3JzIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZzoKKy0tICAgKiBu ZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSBOVUxMIHZhbHVlLCB3aGljaCBzcGxpdCBwYXJ0 aXRpb24gaGFzLgorLS0gICAqIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIGEgdmFsdWUg dGhhdCBzcGxpdCBwYXJ0aXRpb24gaGFzLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0 Cisoc2FsZXNwZXJzb25faWQgSU5ULAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCks Cisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxl c19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworCitDUkVB VEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVT IElOICgnSGVsc2lua2knLCAnU3QuIFBldGVyc2J1cmcnLCAnT3NsbycpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgn V2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0Jl cmxpbicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJywgTlVMTCk7CisKKy0tIEVS Uk9SOiAgbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgdmFsdWUgTlVMTCBidXQgc3BsaXQg cGFydGl0aW9uIGRvZXMKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9O IHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElO ICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVz X2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3Rvaycp LAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycs ICdCZXJsaW4nLCAnS3lpdicpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9ucyBkbyBu b3QgaGF2ZSB2YWx1ZSAnS3lpdicgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2VzCitBTFRFUiBU QUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycs ICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdC ZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19j ZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgTlVMTCkpOworCist LSBFUlJPUiAgREVGQVVMVCBwYXJ0aXRpb24gc2hvdWxkIGJlIG9uZQorQUxURVIgVEFCTEUg c2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFk cmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5n JywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJh bCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JyksCisgICBQQVJU SVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQsCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJz MiBERUZBVUxUKTsKKworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLQorLS0gVGVzdDog QlkgTElTVCBwYXJ0aXRpb25pbmcsIFNQTElUIFBBUlRJVElPTiB3aXRoIGRhdGEKKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIFNFUklBTCwKKyBzYWxl c3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAor IHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJ U1QgKHNhbGVzX3N0YXRlKTsKKworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNwZXJz b25fbmFtZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNwZXJzb25fbmFt ZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9pZHggT04gc2FsZXNf bGlzdCBVU0lORyBidHJlZSAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNf bm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnSGVsc2lua2kn LCAnU3QuIFBldGVyc2J1cmcnLCAnT3NsbycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQ QVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2Jv bicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScs ICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBB UlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2xp c3QgKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVz X2RhdGUpIFZBTFVFUworICAoJ1RydW1wJywgICAgJ0JlamluZycsICAgICAgICAgMTAwMCwg JzIwMjItMDMtMDEnKSwKKyAgKCdTbWlybm9mZicsICdOZXcgWW9yaycsICAgICAgICA1MDAs ICcyMDIyLTAzLTAzJyksCisgICgnRm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAw LCAnMjAyMi0wMy0wNScpLAorICAoJ0l2YW5vdicsICAgJ1dhcnNhdycsICAgICAgICAgIDc1 MCwgJzIwMjItMDMtMDQnKSwKKyAgKCdEZWV2JywgICAgICdMaXNib24nLCAgICAgICAgICAy NTAsICcyMDIyLTAzLTA3JyksCisgICgnUG9pcm90JywgICAnQmVybGluJywgICAgICAgICAx MDAwLCAnMjAyMi0wMy0wMScpLAorICAoJ01heScsICAgICAgJ09zbG8nLCAgICAgICAgICAg MTIwMCwgJzIwMjItMDMtMDYnKSwKKyAgKCdMaScsICAgICAgICdWbGFkaXZvc3RvaycsICAg IDExNTAsICcyMDIyLTAzLTA5JyksCisgICgnTWF5JywgICAgICAnT3NsbycsICAgICAgICAg ICAxMjAwLCAnMjAyMi0wMy0xMScpLAorICAoJ0hhbGRlcicsICAgJ0hlbHNpbmtpJywgICAg ICAgIDgwMCwgJzIwMjItMDMtMDInKSwKKyAgKCdNdWxsZXInLCAgICdNYWRyaWQnLCAgICAg ICAgICA2NTAsICcyMDIyLTAzLTA1JyksCisgICgnU21pdGgnLCAgICAnS3lpdicsICAgICAg ICAgICAgMzUwLCAnMjAyMi0wMy0xMCcpLAorICAoJ0dhbmRpJywgICAgJ1dhcnNhdycsICAg ICAgICAgIDE1MCwgJzIwMjItMDMtMDgnKSwKKyAgKCdQbGF0bycsICAgICdMaXNib24nLCAg ICAgICAgICA5NTAsICcyMDIyLTAzLTA1Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3Qg U1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2Vz dCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAg UEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScs ICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVF UyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKKworU0VMRUNUIHRhYmxlb2lk OjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2xpc3QgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2Ns YXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworLS0gVXNlIGluZGV4 c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzIGFmdGVyIHNwbGl0dGluZyBwYXJ0aXRpb24KK1NF VCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1Qg KiBGUk9NIHNhbGVzX2NlbnRyYWwgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK1NF TEVDVCAqIEZST00gc2FsZXNfY2VudHJhbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcn OworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUg c2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVS RSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1Qg KiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOwor U0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzcGVyc29uX25hbWUgPSAnSXZh bm92JzsKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUgc2FsZXNfbGlz dDsKKworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIHNwbGl0IERFRkFVTFQgcGFydGl0aW9u IHRvIHBhcnRpdGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHM7CistLSAgICogcmFu ZG9tIG9yZGVyIG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQuCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUg REFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcy MDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMDknKSwK KyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFu b3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAg JzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0wNycp LAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0Vy aWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAs ICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4 JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAn UGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3 NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUt MDQnKTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQsCisgICBQ QVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIy XzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMS0x MCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDQtMTAnKSk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBz YWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAi QyIsIHNhbGVzcGVyc29uX2lkOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQor LS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgbm9uLURFRkFVTFQgcGFydGl0aW9uIHRvIHBh cnRpdGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHM7CistLSAgICogcmFuZG9tIG9y ZGVyIG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQuCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19h bGwgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEt MDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAn U21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0wOScpLAorICAoMywgICdGb3JkJywgICAgIDIw MDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQt MTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwg ICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3JyksCisgICg3LCAgJ0xpJywgICAgICAg MTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0w Mi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgx MCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAg ICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIy LTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKKwor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19q YW4yMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAy Mi0wMS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQQVJUSVRJ T04gc2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDQtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVM VCk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBP UkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVy c29uX2lkOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gVGVzdCBmb3Ig c3BsaXQgbm9uLURFRkFVTFQgcGFydGl0aW9uIHRvIERFRkFVTFQgcGFydGl0aW9uICsgcGFy dGl0aW9ucworLS0gd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHMuCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUg VkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAx JykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTA1LTAxJyk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwg ICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywg NTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0w NC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1 LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90Jywg ICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIy LTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAg KDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXIn LCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIw MjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAor ICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CisKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX290aGVycyBERUZBVUxUKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNUIHRhYmxl b2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpy ZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFC TEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBUcnkgdG8gU1BMSVQgcGFydGl0aW9uIG9mIGFu b3RoZXIgdGFibGUuCistLQorQ1JFQVRFIFRBQkxFIHQxKGkgaW50LCB0IHRleHQpIFBBUlRJ VElPTiBCWSBMSVNUICh0KTsKK0NSRUFURSBUQUJMRSB0MXBhIFBBUlRJVElPTiBPRiB0MSBG T1IgVkFMVUVTIElOICgnQScpOworQ1JFQVRFIFRBQkxFIHQyIChpIGludCwgdCB0ZXh0KSBQ QVJUSVRJT04gQlkgUkFOR0UgKHQpOworCistLSBFUlJPUjogIHJlbGF0aW9uICJ0MXBhIiBp cyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgorQUxURVIgVEFCTEUgdDIgU1BM SVQgUEFSVElUSU9OIHQxcGEgSU5UTworICAgKFBBUlRJVElPTiB0MmEgRk9SIFZBTFVFUyBG Uk9NICgnQScpIFRPICgnQicpLAorICAgIFBBUlRJVElPTiB0MmIgRk9SIFZBTFVFUyBGUk9N ICgnQicpIFRPICgnQycpKTsKKworRFJPUCBUQUJMRSB0MjsKK0RST1AgVEFCTEUgdDE7CisK Ky0tCistLSBUcnkgdG8gU1BMSVQgcGFydGl0aW9uIG9mIHRlbXBvcmFyeSB0YWJsZS4KKy0t CitDUkVBVEUgVEVNUCBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsK K0NSRUFURSBURU1QIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZS T00gKDApIFRPICgyKTsKKworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBw Z19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVy c2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdf aW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50 ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMu cmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJl Z2NsYXNzOjpwZ19jYXRhbG9nLnRleHQgQ09MTEFURSAiQyI7CisKKy0tIEVSUk9SOiAgY2Fu bm90IGNyZWF0ZSBhIHBlcm1hbmVudCByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgdGVtcG9y YXJ5IHJlbGF0aW9uICJ0IgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8y IElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSks CisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKKwor QUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElP TiBwZ190ZW1wLnRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJ VElPTiBwZ190ZW1wLnRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CisKKy0t IFBhcnRpdGlvbnMgc2hvdWxkIGJlIHRlbXBvcmFyeS4KK1NFTEVDVCBjLm9pZDo6cGdfY2F0 YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwg Yy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBj LCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlk IEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxv Zy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9p ZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0IENPTExBVEUgIkMiOwor CitEUk9QIFRBQkxFIHQ7CisKKy0tIENoZWNrIHRoZSBuZXcgcGFydGl0aW9ucyBpbmhlcml0 IHBhcmVudCdzIHRhYmxlc3BhY2UKK0NSRUFURSBUQUJMRSB0IChpIGludCBQUklNQVJZIEtF WSBVU0lORyBJTkRFWCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpCisgIFBBUlRJVElP TiBCWSBSQU5HRSAoaSkgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworQ1JFQVRFIFRB QkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsK K0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJ T04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRw XzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitTRUxFQ1QgdGFibGVuYW1lLCB0 YWJsZXNwYWNlIEZST00gcGdfdGFibGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAn dHBfMF8xJywgJ3RwXzFfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9z Y2hlbWEnCisgIE9SREVSIEJZIHRhYmxlbmFtZSBDT0xMQVRFICJDIiwgdGFibGVzcGFjZSBD T0xMQVRFICJDIjsKK1NFTEVDVCB0YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZSBG Uk9NIHBnX2luZGV4ZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzEnLCAn dHBfMV8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScKKyAg T1JERVIgQlkgdGFibGVuYW1lIENPTExBVEUgIkMiLCBpbmRleG5hbWUgQ09MTEFURSAiQyIs IHRhYmxlc3BhY2UgQ09MTEFURSAiQyI7CitEUk9QIFRBQkxFIHQ7CisKKy0tIENoZWNrIG5l dyBwYXJ0aXRpb25zIGluaGVyaXRzIHBhcmVudCdzIHRhYmxlIGFjY2VzcyBtZXRob2QKK0NS RUFURSBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbl9zcGxpdF9oZWFwIFRZUEUgVEFCTEUgSEFO RExFUiBoZWFwX3RhYmxlYW1faGFuZGxlcjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFS VElUSU9OIEJZIFJBTkdFIChpKSBVU0lORyBwYXJ0aXRpb25fc3BsaXRfaGVhcDsKK0NSRUFU RSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo Mik7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFS VElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElP TiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworU0VMRUNUIGMucmVsbmFt ZSwgYS5hbW5hbWUKK0ZST00gcGdfY2xhc3MgYyBKT0lOIHBnX2FtIGEgT04gYy5yZWxhbSA9 IGEub2lkCitXSEVSRSBjLm9pZCBJTiAoJ3QnOjpyZWdjbGFzcywgJ3RwXzBfMSc6OnJlZ2Ns YXNzLCAndHBfMV8yJzo6cmVnY2xhc3MpCitPUkRFUiBCWSBjLnJlbG5hbWUgQ09MTEFURSAi QyI7CitEUk9QIFRBQkxFIHQ7CitEUk9QIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uX3NwbGl0 X2hlYXA7CisKKy0tIFNwbGl0IHBhcnRpdGlvbiBvZiBhIHRlbXBvcmFyeSB0YWJsZSB3aGVu IG9uZSBvZiB0aGUgcGFydGl0aW9ucyBhZnRlcgorLS0gc3BsaXQgaGFzIHRoZSBzYW1lIG5h bWUgYXMgdGhlIHBhcnRpdGlvbiBiZWluZyBzcGxpdAorQ1JFQVRFIFRFTVAgVEFCTEUgdCAo YSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoYSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8w IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFC TEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMCBJTlRPCisgIChQQVJUSVRJT04gcGdfdGVtcC50 cF8wIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHBnX3RlbXAu dHBfMSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitEUk9QIFRBQkxFIHQ7CisKKy0t IENoZWNrIGRlZmF1bHRzIGFuZCBjb25zdHJhaW50cyBvZiBuZXcgcGFydGl0aW9ucworQ1JF QVRFIFRBQkxFIHRfYmlnaW50ICgKKyAgYiBiaWdpbnQsCisgIGkgaW50IERFRkFVTFQgKDMr MTApLAorICBqIGludCBERUZBVUxUIDEwMSwKKyAgayBpbnQgR0VORVJBVEVEIEFMV0FZUyBB UyAoYisxMCkgU1RPUkVECispCitQQVJUSVRJT04gQlkgUkFOR0UgKGIpOworQ1JFQVRFIFRB QkxFIHRfYmlnaW50X2RlZmF1bHQgUEFSVElUSU9OIE9GIHRfYmlnaW50IERFRkFVTFQ7Cist LSBTaG93IGRlZmF1bHRzL2NvbnN0cmFpbnRzIGJlZm9yZSBTUExJVCBQQVJUSVRJT04KK1xk KyB0X2JpZ2ludAorXGQrIHRfYmlnaW50X2RlZmF1bHQKK0FMVEVSIFRBQkxFIHRfYmlnaW50 IFNQTElUIFBBUlRJVElPTiB0X2JpZ2ludF9kZWZhdWx0IElOVE8KKyAgKFBBUlRJVElPTiB0 X2JpZ2ludF8wMV8xMCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMCksCisgICBQQVJUSVRJ T04gdF9iaWdpbnRfZGVmYXVsdCBERUZBVUxUKTsKKy0tIFNob3cgZGVmYXVsdHMvY29uc3Ry YWludHMgYWZ0ZXIgU1BMSVQgUEFSVElUSU9OCitcZCsgdF9iaWdpbnRfZGVmYXVsdAorXGQr IHRfYmlnaW50XzAxXzEwCitEUk9QIFRBQkxFIHRfYmlnaW50OworCistLSBUZXN0IHBlcm1p c3Npb24gY2hlY2tzLiAgVGhlIHVzZXIgbmVlZHMgdG8gb3duIHRoZSBwYXJlbnQgdGFibGUg YW5kIHRoZQorLS0gdGhlIHBhcnRpdGlvbiB0byBzcGxpdCB0byBkbyB0aGUgc3BsaXQuCitD UkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBST0xF IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFy dGl0aW9uX3NwbGl0X3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsK K0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBUTyByZWdyZXNz X3BhcnRpdGlvbl9zcGxpdF9ib2I7CisKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVn cmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBB UlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBP RiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworCitTRVQgU0VTU0lPTiBBVVRIT1JJ WkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BM SVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgyKSk7IC0tZXJyb3IKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsK KworQUxURVIgVEFCTEUgdCBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7 CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2Jv YjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJU SVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9O IHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7IC0tZXJyb3IKK1JFU0VUIFNF U1NJT04gQVVUSE9SSVpBVElPTjsKKworQUxURVIgVEFCTEUgdHBfMF8yIE9XTkVSIFRPIHJl Z3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04g cmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJU SVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9N ICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkg VE8gKDIpKTsgLS1vaworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitEUk9QIFRB QkxFIHQ7CisKKy0tIFRlc3Q6IG93bmVyIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBiZSB0 aGUgc2FtZSBhcyBvd25lciBvZiBzcGxpdCBwYXJ0aXRpb24KK0NSRUFURSBUQUJMRSB0IChp IGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKKworU0VUIFNFU1NJT04gQVVUSE9SSVpB VElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0cF8w XzIoaSBpbnQpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitBTFRFUiBUQUJM RSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMF8yIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIp OworCistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UnOgorXGR0 IHRwXzBfMgorCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTwor ICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBB UlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworCistLSBPd25l ciBzaG91bGQgYmUgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK1xkdCB0cF8w XzEKK1xkdCB0cF8xXzIKKworRFJPUCBUQUJMRSB0OworCistLSBUZXN0OiBpbmRleCBvZiBu ZXcgcGFydGl0aW9ucyBzaG91bGQgYmUgY3JlYXRlZCB3aXRoIHNhbWUgb3duZXIgYXMgc3Bs aXQKKy0tIHBhcnRpdGlvbgorU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3Bh cnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9O IEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8xMF8yMCBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDEx KSwgKDE2KTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHJ1bl9tZShpbnRlZ2VyKSBS RVRVUk5TIGludGVnZXIgQVMgJCQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAneW91IGFyZSBy dW5uaW5nIG1lIGFzICUnLCBDVVJSRU5UX1VTRVI7CisgIFJFVFVSTiAkMTsKK0VORAorJCQg TEFOR1VBR0UgUExQR1NRTCBJTU1VVEFCTEU7CisKKy0tIE93bmVyIGlzICdyZWdyZXNzX3Bh cnRpdGlvbl9zcGxpdF9hbGljZSc6CitDUkVBVEUgSU5ERVggT04gdCAocnVuX21lKGkpKTsK K1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworLS0gT3duZXIgc2hvdWxkIGJlICdy ZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitBTFRFUiBUQUJMRSB0IFNQTElUIFBB UlRJVElPTiB0cF8xMF8yMCBJTlRPCisgIChQQVJUSVRJT04gdHBfMTBfMTUgRk9SIFZBTFVF UyBGUk9NICgxMCkgVE8gKDE1KSwKKyAgIFBBUlRJVElPTiB0cF8xNV8yMCBGT1IgVkFMVUVT IEZST00gKDE1KSBUTyAoMjApKTsKKworRFJPUCBUQUJMRSB0OworRFJPUCBGVU5DVElPTiBy dW5fbWUoaW50ZWdlcik7CisKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK1JFVk9LRSBB TEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9ib2I7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxp Y2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworCistLSBUZXN0 IGZvciBoYXNoIHBhcnRpdGlvbmVkIHRhYmxlCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBB UlRJVElPTiBCWSBIQVNIKGkpOworQ1JFQVRFIFRBQkxFIHRwMSBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDApOworQ1JFQVRFIFRBQkxF IHRwMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlO REVSIDEpOworCistLSBFUlJPUjogIHBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRh YmxlIGNhbm5vdCBiZSBzcGxpdAorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHAx IElOVE8KKyAgKFBBUlRJVElPTiB0cDFfMSBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgNCwg UkVNQUlOREVSIDApLAorICAgUEFSVElUSU9OIHRwMV8yIEZPUiBWQUxVRVMgV0lUSCAoTU9E VUxVUyA0LCBSRU1BSU5ERVIgMikpOworCistLSBFUlJPUjogIGxpc3Qgb2YgbmV3IHBhcnRp dGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIHBhcnRpdGlvbnMKK0FMVEVSIFRB QkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwMSBJTlRPCisgIChQQVJUSVRJT04gdHAxXzEgRk9S IFZBTFVFUyBXSVRIIChNT0RVTFVTIDQsIFJFTUFJTkRFUiAwKSk7CisKK0RST1AgVEFCTEUg dDsKKworCistLSBBZGRpdGlvbmFsIHRlc3RzIGZvciBlcnJvciBtZXNzYWdlcworQ1JFQVRF IFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBpbnQsIHNhbGVzcGVyc29uX25h bWUgdmFyY2hhcigzMCksIHNhbGVzX2Ftb3VudCBpbnQsIHNhbGVzX2RhdGUgZGF0ZSkgUEFS VElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4y MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAx LTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9h cHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CisKKy0tIEVSUk9SOiAgdXBwZXIgYm91bmQg b2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdXBwZXIgYm91 bmQgb2Ygc3BsaXQgcGFydGl0aW9uICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiCistLSBISU5U OiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgcmVxdWlyZSBjb21iaW5lZCBi b3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBv ZiB0aGUgc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7 CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKworLS0gVGVzdCBmb3Igc3BsaXQgcGFy dGl0aW9uIHByb3BlcnRpZXM6CistLSAqIFNUQVRJU1RJQ1MgaXMgZW1wdHkKKy0tICogQ09N TUVOVCBpcyBlbXB0eQorLS0gKiBERUZBVUxUUyBhcmUgdGhlIHNhbWUgYXMgREVGQVVMVFMg Zm9yIHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIFNUT1JBR0UgaXMgdGhlIHNhbWUgYXMgU1RP UkFHRSBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogR0VORVJBVEVEIGFuZCBDT05TVFJB SU5UUyBhcmUgdGhlIHNhbWUgYXMgR0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBmb3IgcGFy dGl0aW9uZWQgdGFibGUKKy0tICogVFJJR0dFUlMgYXJlIHRoZSBzYW1lIGFzIFRSSUdHRVJT IGZvciBwYXJ0aXRpb25lZCB0YWJsZQorCitDUkVBVEUgVEFCTEUgdAorKGkgaW50IE5PVCBO VUxMLAorIHQgdGV4dCBTVE9SQUdFIEVYVEVOREVEIENPTVBSRVNTSU9OIHBnbHogREVGQVVM VCAnZGVmYXVsdF90JywKKyBiIGJpZ2ludCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBh cyAoJzIwMjItMDEtMDEnKSBTVE9SRUQpIFBBUlRJVElPTiBCWSBSQU5HRSAoYWJzKGkpKTsK K0NPTU1FTlQgT04gQ09MVU1OIHQuaSBJUyAndDEuaSc7CisKK0NSRUFURSBUQUJMRSB0cF94 CisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgTUFJTiBERUZBVUxUICdkZWZh dWx0X3RwX3gnLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgn MjAyMi0wMi0wMicpIFNUT1JFRCk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04g dHBfeCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0NPTU1FTlQgT04gQ09MVU1OIHRw X3guaSBJUyAndHBfeC5pJzsKKworQ1JFQVRFIFNUQVRJU1RJQ1MgdF9zdGF0IChERVBFTkRF TkNJRVMpIG9uIGksIGIgZnJvbSB0OworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBfeF9zdGF0IChE RVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0cF94OworCitBTFRFUiBUQUJMRSB0IEFERCBD T05TVFJBSU5UIHRfYl9jaGVjayBDSEVDSyAoYiA+IDApOworQUxURVIgVEFCTEUgdCBBREQg Q09OU1RSQUlOVCB0X2JfY2hlY2sxIENIRUNLIChiID4gMCkgTk9UIEVORk9SQ0VEOworQUxU RVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2syIENIRUNLIChiID4gMCkgTk9U IFZBTElEOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2Jfbm4gTk9UIE5VTEwg YiBOT1QgVkFMSUQ7CisKK0lOU0VSVCBJTlRPIHRwX3goaSwgdCwgYikgVkFMVUVTKDAsIERF RkFVTFQsIDEpOworSU5TRVJUIElOVE8gdHBfeChpLCB0LCBiKSBWQUxVRVMoMSwgREVGQVVM VCwgMik7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24o KSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTCiskQk9EWSQKK0JFR0lO CisgIFJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4g PSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7 CisgIFJFVFVSTiBuZXc7CitFTkQ7CiskQk9EWSQ7CisKK0NSRUFURSBUUklHR0VSIHRfYmVm b3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHQgRk9SIEVBQ0ggUk9X CisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKTsKK0NSRUFURSBU UklHR0VSIHRwX3hfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9O IHRwX3ggRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rp b24oJ3RwX3gnKTsKKworXGQrIHRwX3gKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9O IHRwX3ggSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgxKSwKKyAgIFBBUlRJVElPTiB0cF94IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsK K1xkKyB0cF94CisKK0lOU0VSVCBJTlRPIHQoaSwgdCwgYikgVkFMVUVTKDEsIERFRkFVTFQs IDMpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHQgT1JERVIgQlkgdGFi bGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBiOworRFJPUCBUQUJMRSB0Owor RFJPUCBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCk7CisKKworLS0gVGVzdCBmb3IgcmVj b21wdXRhdGlvbiBvZiBzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbnMuCitDUkVBVEUgVEFCTEUg dCAoaSBpbnQsIHRhYl9pZCBpbnQgZ2VuZXJhdGVkIGFsd2F5cyBhcyAodGFibGVvaWQpIHN0 b3JlZCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFS VElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0 IEFERCBDT05TVFJBSU5UIGNjIENIRUNLKHRhYmxlb2lkIDw+IDEyMzQ1Njc4OSk7CitJTlNF UlQgSU5UTyB0IFZBTFVFUyAoMCksICgxKTsKKworLS0gU2hvdWxkIGJlIDEgYmVjYXVzZSBw YXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0wIGlzIHRoZSBzYW1lIGFzCist LSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0xLgorU0VMRUNUIGNvdW50 KCopIEZST00gdCBXSEVSRSBpID0gMCBBTkQgdGFiX2lkIElOIChTRUxFQ1QgdGFiX2lkIEZS T00gdCBXSEVSRSBpID0gMSk7CisKKy0tICJ0YWJfaWQiIGNvbHVtbiAoc3RvcmVkIGdlbmVy YXRlZCBjb2x1bW4pIHdpdGggInRhYmxlb2lkIiBhdHRyaWJ1dGUgcmVxdWlyZXMKKy0tIHJl Y29tcHV0YXRpb24gaGVyZS4KK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBf MiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEp LAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CisK Ky0tIFNob3VsZCBiZSAwIGJlY2F1c2UgcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3 aXRoIGk9MCBpcyBkaWZmZXJlbnQgZnJvbQorLS0gcGFydGl0aW9uIGlkZW50aWZpZXIgZm9y IHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5E IHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hFUkUgaSA9IDEpOworCitEUk9Q IFRBQkxFIHQ7CisKKworUkVTRVQgc2VhcmNoX3BhdGg7CisKKy0tCitEUk9QIFNDSEVNQSBw YXJ0aXRpb25fc3BsaXRfc2NoZW1hOworRFJPUCBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3Nj aGVtYTI7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBi L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGU5MGFmNWIyYWQuLmYw MDE2YzU5OGQgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0yNzc3LDYgKzI3 NzcsNyBAQCBTaW1wbGVTdGF0cwogU2ltcGxlU3RyaW5nTGlzdAogU2ltcGxlU3RyaW5nTGlz dENlbGwKIFNpbmdsZUJvdW5kU29ydEl0ZW0KK1NpbmdsZVBhcnRpdGlvblNwZWMKIFNpemUK IFNraXBQYWdlcwogU2tpcFN1cHBvcnQKQEAgLTI4NDMsNiArMjg0NCw3IEBAIFNwZWNpYWxK b2luSW5mbwogU3BpbkRlbGF5U3RhdHVzCiBTcGxpdEludGVydmFsCiBTcGxpdExSCitTcGxp dFBhcnRpdGlvbkNvbnRleHQKIFNwbGl0UGFnZUxheW91dAogU3BsaXRQb2ludAogU3BsaXRU ZXh0T3V0cHV0RGF0YQotLSAKMi40MC4xLndpbmRvd3MuMQoK --------------aOQKmOFJ5EUrBbox0o9APZc7--