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 1ut2KS-00Es90-5N for pgsql-hackers@arkaria.postgresql.org; Mon, 01 Sep 2025 11:04:06 +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 1ut2KR-005kqq-F7 for pgsql-hackers@arkaria.postgresql.org; Mon, 01 Sep 2025 11:04:04 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1ut2KQ-005kqi-Kf for pgsql-hackers@lists.postgresql.org; Mon, 01 Sep 2025 11:04:03 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1ut2KN-002ysk-2M for pgsql-hackers@lists.postgresql.org; Mon, 01 Sep 2025 11:04:02 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1756724638; bh=hkJrEXPg2NmmscoNFs7v8zxGM5CcAoumiaJDrFHcCIo=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=c/YOrkAvqSIU0zXLlBU/B1zx+Q3B4M/dm2pKDmo9EHRS0PCGPfU3mId4fhg6ckYMG rU4uQd+TVqar2lKo7TH7DO7ML8LY8NwdQVMBY80I2VPo11yHsAv/iehlQLAj6OAj6i oKBW98MjD9MH73rHHulFEObDtUxYq/LCEsmkVm1gIYSB+qSPipr+rEg0d+62tphFBl J3WfVpTPb3fzC18DpJb747evKRtxPy/j/1MX5FMAJ46dw3wRqmi5mJsVp9GQeSFkSW RxY9fWUfSkoiLFTRupN8CNI003Pob3sB2tU89R1wwV58y4vt8a+zkkKtCuxwfvO+Um Zcye2huSuU9Cw== Received: from [172.30.49.206] (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 1608460265; Mon, 1 Sep 2025 14:03:58 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------46ilqFKLxIprY4q8cZx7OwR2" Message-ID: Date: Mon, 1 Sep 2025 14:03:58 +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> <195b67ee-ef41-4451-9396-844442eef1a4@postgrespro.ru> Content-Language: en-US From: Dmitry Koval In-Reply-To: X-KSMG-AntiPhishing: NotDetected, bases: 2025/09/01 10:37: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/01 10:09:00 #27717796 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. --------------46ilqFKLxIprY4q8cZx7OwR2 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi! Thank you for the notes and patch! 1. >ORDER BY regclass seems not stable, see >https://git.postgresql.org/cgit/postgresql.git/commit/ >?id=17bcf4f5450430f67b744c225566c9e0e6413e95 >some of the SQL tests seem not necessary, so I refactored tests. Thanks. Also changed tests for SPLIT PARTITION. 2. >the last part seems intuitive? >"colList = lappend(colList, def);" should be at the end of the for loop? I agree, it's better. 3. >"-- Not-null constraint name should be 'tp_1_2_i_not_null'. >Comments conflict with the result. Thanks, this was correct for older versions. 4. >* We reject whole-row variables because the whole point of LIKE is >* that the new table's rowtype might later diverge from the parent's. ... >the above comment needs change, since LIKE is not related to here. Corrected. 5. >here, we don't need expand_generated_columns_in_expr, the comment also >explained it. >the attached patch is the changes for the above comments. Applied. -- With best regards, Dmitry Koval Postgres Professional: http://postgrespro.com --------------46ilqFKLxIprY4q8cZx7OwR2 Content-Type: text/plain; charset=UTF-8; name="v54-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.patch" Content-Disposition: attachment; filename*0="v54-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0MGViYTkwYmRjMzU1OWIxYWFmMDI5NGM4NGFlMTI5OGNkNjQzNGM5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU3OjIyICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NTQgMS8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIE1FUkdF 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 cl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDEyMCArLQogc3JjL2JhY2tlbmQvY2F0YWxv Zy9kZXBlbmRlbmN5LmMgICAgICAgICAgICAgIHwgICA1MCArCiBzcmMvYmFja2VuZC9jYXRh bG9nL3BnX2NvbnN0cmFpbnQuYyAgICAgICAgICAgfCAgICAyICstCiBzcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgOTAxICsrKysrKysrKysrKyst CiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgIDIy ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAgfCAg MTQ2ICsrKwogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyAgICAgICAg IHwgIDE5NiArKysKIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAg ICAgICB8ICAgMTAgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggICAgICAg ICAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAg ICAgICAgICAgfCAgICA4ICstCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAgICAg ICAgICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91 bmRzLmggICAgICAgICB8ICAgIDYgKwogLi4uL2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRp b24tbWVyZ2Uub3V0ICAgIHwgIDE5OSArKysKIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRp b25fc2NoZWR1bGUgICAgICAgICB8ICAgIDEgKwogc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNz L3BhcnRpdGlvbi1tZXJnZS5zcGVjIHwgICA1NCArCiAuLi4vdGVzdF9kZGxfZGVwYXJzZS9l eHBlY3RlZC9hbHRlcl90YWJsZS5vdXQgfCAgICA1ICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNl L3NxbC9hbHRlcl90YWJsZS5zcWwgICAgICB8ICAgIDMgKwogLi4uL3Rlc3RfZGRsX2RlcGFy c2UvdGVzdF9kZGxfZGVwYXJzZS5jICAgICAgIHwgICAgMyArCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQgfCAxMDk3ICsrKysrKysrKysrKysrKysr CiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgICAy ICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsICAgICAgfCAg NzkxICsrKysrKysrKysrKwogMjIgZmlsZXMgY2hhbmdlZCwgMzYxMyBpbnNlcnRpb25zKCsp LCAyNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRp 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 ZXggODg2N2RhNmM2OS4uMjlhMGZmNWNkYiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Jl Zi9hbHRlcl90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUu c2dtbApAQCAtMzcsNiArMzcsOCBAQCBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBBVFRB Q0ggUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f bmFtZTwvcmVwbGFjZWFibGU+IHsgRk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQg fQogQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgREVUQUNIIFBBUlRJVElPTiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBb IENPTkNVUlJFTlRMWSB8IEZJTkFMSVpFIF0KK0FMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgorICAg IE1FUkdFIFBBUlRJVElPTlMgKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0pIElOVE8gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4K IAogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YWN0aW9u PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCkBAIC0xMTU5LDE0ICsxMTYx LDEwOCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgIDwvbGlzdGl0ZW0+CiAg ICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWFsdGVydGFi bGUtbWVyZ2UtcGFydGl0aW9ucyI+CisgICAgPHRlcm0+PGxpdGVyYWw+TUVSR0UgUEFSVElU SU9OUyAoPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwv cmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9u X25hbWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXSkgSU5UTyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD48L3Rl cm0+CisKKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIG1l cmdlcyBzZXZlcmFsIHBhcnRpdGlvbnMgb2YgdGhlIHRhcmdldCB0YWJsZSBpbnRvIGEgbmV3 IHBhcnRpdGlvbi4KKyAgICAgIEhhc2gtcGFydGl0aW9uZWQgdGFyZ2V0IHRhYmxlIGlzIG5v dCBzdXBwb3J0ZWQuCisgICAgICBJZiA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiBwYXJ0 aXRpb24gaXMgbm90IGluIHRoZQorICAgICAgbGlzdCBvZiBwYXJ0aXRpb25zIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwK KyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8 L3JlcGxhY2VhYmxlPiBbLCAuLi5dOgorICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgRm9yIHJhbmdlLXBhcnRpdGlv bmVkIHRhYmxlcywgdGhlIHJhbmdlcyBvZiB0aGUgcGFydGl0aW9ucworICAgICAgICAgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFi bGU+LAorICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlv bl9uYW1lMjwvcmVwbGFjZWFibGU+LCBbLi4uXQorICAgICAgICAgbXVzdCBiZSBhZGphY2Vu dCBpbiBvcmRlciB0byBiZSBtZXJnZWQuIE90aGVyd2lzZSwgYW4gZXJyb3Igd2lsbCBiZQor ICAgICAgICAgcmFpc2VkLiBUaGUgcmVzdWx0aW5nIGNvbWJpbmVkIHJhbmdlIHdpbGwgYmUg dGhlIG5ldyBwYXJ0aXRpb24gYm91bmQKKyAgICAgICAgIGZvciB0aGUgcGFydGl0aW9uIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFi bGU+LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8bGlz dGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgRm9yIGxpc3QtcGFydGl0aW9uZWQg dGFibGVzLCB0aGUgcGFydGl0aW9uIGJvdW5kcyBvZgorICAgICAgICAgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAorICAg ICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwv cmVwbGFjZWFibGU+LCBbLi4uXQorICAgICAgICAgYXJlIGNvbWJpbmVkIHRvIGZvcm0gdGhl IG5ldyBwYXJ0aXRpb24gYm91bmQgZm9yCisgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgPC9w YXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAg IElmIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiBpcyBpbiB0aGUgbGlz dCBvZiBwYXJ0aXRpb25zIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRp b25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dOgorICAgICAg PGl0ZW1pemVkbGlzdD4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAg ICAgICAgVGhlIHBhcnRpdGlvbiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy dGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgd2lsbCBiZSB0aGUgbmV3IDxs aXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiBvZiB0aGUgdGFyZ2V0IHRhYmxl LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8bGlzdGl0 ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIHBhcnRpdGlvbiBib3VuZCBzcGVj aWZpY2F0aW9ucyBmb3IgYWxsIHBhcnRpdGlvbnMtCisgICAgICAgICA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sCisgICAg ICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9y ZXBsYWNlYWJsZT4sIFsuLi5dCisgICAgICAgICBjYW4gYmUgYXJiaXRyYXJ5LgorICAgICAg ICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0Pgor ICAgICAgVGhlIG5ldyBwYXJ0aXRpb24gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgIGNhbiBoYXZlIHRoZSBzYW1l IG5hbWUgYXMgb25lIG9mIHRoZSBtZXJnZWQgcGFydGl0aW9ucy4gT25seSBzaW1wbGUsCisg ICAgICBub24tcGFydGl0aW9uZWQgcGFydGl0aW9ucyBjYW4gYmUgbWVyZ2VkLgorICAgICA8 L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgSWYgbWVyZ2VkIHBhcnRpdGlvbnMgaGF2ZSBk aWZmZXJlbnQgb3duZXJzLCBhbiBlcnJvciB3aWxsIGJlIGdlbmVyYXRlZC4KKyAgICAgIFRo ZSBvd25lciBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbnMgd2lsbCBiZSB0aGUgb3duZXIgb2Yg dGhlIG5ldyBwYXJ0aXRpb24uCisgICAgICBJdCBpcyB0aGUgdXNlcidzIHJlc3BvbnNpYmls aXR5IHRvIHNldHVwIDxhY3JvbnltPkFDTDwvYWNyb255bT4gb24gdGhlCisgICAgICBuZXcg cGFydGl0aW9uLgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgVGhlIGluZGV4 ZXMgYW5kIGlkZW50aXR5IGFyZSBjcmVhdGVkIGxhdGVyLCBhZnRlciBtb3ZpbmcgdGhlIGRh dGEKKyAgICAgIGludG8gdGhlIG5ldyBwYXJ0aXRpb24uCisgICAgICBFeHRlbmRlZCBzdGF0 aXN0aWNzIGFyZW4ndCBjb3BpZWQgZnJvbSB0aGUgcGFyZW50IHRhYmxlLCBmb3IgY29uc2lz dGVuY3kgd2l0aAorICAgICAgPGNvbW1hbmQ+Q1JFQVRFIFRBQkxFIFBBUlRJVElPTiBPRjwv Y29tbWFuZD4uCisgICAgICBUaGUgbmV3IHBhcnRpdGlvbiB3aWxsIGluaGVyaXQgdGhlIHNh bWUgdGFibGUgYWNjZXNzIG1ldGhvZCwgcGVyc2lzdGVuY2UKKyAgICAgIHR5cGUsIGFuZCB0 YWJsZXNwYWNlIGFzIHRoZSBwYXJlbnQgdGFibGUuCisgICAgIDwvcGFyYT4KKyAgICAgPHBh cmE+CisgICAgICBXaGVuIHBhcnRpdGlvbnMgYXJlIG1lcmdlZCwgYW55IGluZGl2aWR1YWwg b2JqZWN0cyBiZWxvbmdpbmcgdG8gdGhvc2UKKyAgICAgIHBhcnRpdGlvbnMsIHN1Y2ggYXMg Y29uc3RyYWludHMgb3Igc3RhdGlzdGljcyB3aWxsIGJlIGRyb3BwZWQuIFRoaXMgb2NjdXJz CisgICAgICBiZWNhdXNlIDxjb21tYW5kPkFMVEVSIFRBQkxFIE1FUkdFIFBBUlRJVElPTlM8 L2NvbW1hbmQ+IHVzZXMgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGl0c2VsZiBhcyB0aGUKKyAg ICAgIHRlbXBsYXRlIHRvIGRlZmluZSB0aGVzZSBvYmplY3RzLgorICAgICA8L3BhcmE+Cisg ICAgIDxwYXJhPgorICAgICAgSWYgbWVyZ2VkIHBhcnRpdGlvbnMgaGF2ZSBzb21lIG9iamVj dHMgZGVwZW5kZW50IG9uIHRoZW0sIHRoZSBjb21tYW5kIGNhbgorICAgICAgbm90IGJlIGRv bmUgKDxsaXRlcmFsPkNBU0NBREU8L2xpdGVyYWw+IGlzIG5vdCB1c2VkLCBhbiBlcnJvciB3 aWxsIGJlIHJldHVybmVkKS4KKyAgICAgPC9wYXJhPgorICAgICA8bm90ZT4KKyAgICAgIDxw YXJhPgorICAgICAgIE1lcmdpbmcgcGFydGl0aW9ucyBhY3F1aXJlcyBhIDxsaXRlcmFsPkFD Q0VTUyBFWENMVVNJVkU8L2xpdGVyYWw+IGxvY2sgb24KKyAgICAgICB0aGUgcGFyZW50IHRh YmxlLCBpbiBhZGRpdGlvbiB0byB0aGUgPGxpdGVyYWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0 ZXJhbD4KKyAgICAgICBsb2NrcyBvbiB0aGUgdGFibGVzIGJlaW5nIG1lcmdlZCBhbmQgb24g dGhlIGRlZmF1bHQgcGFydGl0aW9uIChpZiBhbnkpLgorICAgICAgPC9wYXJhPgorICAgICA8 L25vdGU+CisgICAgIDxub3RlPgorICAgICAgPHBhcmE+CisgICAgICAgPGNvbW1hbmQ+QUxU RVIgVEFCTEUgTUVSR0UgUEFSVElUSU9OUzwvY29tbWFuZD4gY3JlYXRlcyBhIG5ldyBwYXJ0 aXRpb24gYW5kCisgICAgICAgbW92ZXMgZGF0YSBmcm9tIGFsbCBtZXJnaW5nIHBhcnRpdGlv bnMgaW50byBpdCwgd2hpY2ggY2FuIHRha2UgYSBsb25nIHRpbWUuCisgICAgICAgU28gaXQg aXMgbm90IHJlY29tbWVuZGVkIHRvIHVzZSBjb21tYW5kIHRvIG1lcmdlIHZlcnkgYmlnIHBh cnRpdGlvbnMgd2l0aCBzbWFsbCBvbmVzLgorICAgICAgPC9wYXJhPgorICAgICA8L25vdGU+ CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgIDwvdmFyaWFibGVs aXN0PgogICA8L3BhcmE+CiAKICAgPHBhcmE+CiAgICBBbGwgdGhlIGZvcm1zIG9mIDxjb21t YW5kPkFMVEVSIFRBQkxFPC9jb21tYW5kPiB0aGF0IGFjdCBvbiBhIHNpbmdsZSB0YWJsZSwK ICAgIGV4Y2VwdCA8bGl0ZXJhbD5SRU5BTUU8L2xpdGVyYWw+LCA8bGl0ZXJhbD5TRVQgU0NI RU1BPC9saXRlcmFsPiwKLSAgIDxsaXRlcmFsPkFUVEFDSCBQQVJUSVRJT048L2xpdGVyYWw+ LCBhbmQKLSAgIDxsaXRlcmFsPkRFVEFDSCBQQVJUSVRJT048L2xpdGVyYWw+IGNhbiBiZSBj b21iaW5lZCBpbnRvCisgICA8bGl0ZXJhbD5BVFRBQ0ggUEFSVElUSU9OPC9saXRlcmFsPiwg PGxpdGVyYWw+REVUQUNIIFBBUlRJVElPTjwvbGl0ZXJhbD4sCisgICBhbmQgPGxpdGVyYWw+ TUVSR0UgUEFSVElUSU9OUzwvbGl0ZXJhbD4gY2FuIGJlIGNvbWJpbmVkIGludG8KICAgIGEg bGlzdCBvZiBtdWx0aXBsZSBhbHRlcmF0aW9ucyB0byBiZSBhcHBsaWVkIHRvZ2V0aGVyLiAg Rm9yIGV4YW1wbGUsIGl0CiAgICBpcyBwb3NzaWJsZSB0byBhZGQgc2V2ZXJhbCBjb2x1bW5z IGFuZC9vciBhbHRlciB0aGUgdHlwZSBvZiBzZXZlcmFsCiAgICBjb2x1bW5zIGluIGEgc2lu Z2xlIGNvbW1hbmQuICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgd2l0aCBsYXJnZQpA QCAtMTQwOSw3ICsxNTA1LDE4IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAg ICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8 L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICAgIDxsaXN0aXRlbT4KICAgICAgICA8cGFyYT4K LSAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGF0dGFjaCBhcyBhIG5ldyBwYXJ0 aXRpb24gb3IgdG8gZGV0YWNoIGZyb20gdGhpcyB0YWJsZS4KKyAgICAgICAgVGhlIG5hbWUg b2YgdGhlIHRhYmxlIHRvIGF0dGFjaCBhcyBhIG5ldyBwYXJ0aXRpb24gb3IgdG8gZGV0YWNo IGZyb20gdGhpcyB0YWJsZSwKKyAgICAgICAgb3IgdGhlIG5hbWUgb2YgdGhlIG5ldyBtZXJn ZWQgcGFydGl0aW9uLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAg IDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRh YmxlLXBhcm1zLXBhcnRpdGlvbi1uYW1lMSI+CisgICAgICA8dGVybT48cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT48L3Rlcm0+ CisgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9u X25hbWUyPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAg PHBhcmE+CisgICAgICAgIFRoZSBuYW1lcyBvZiB0aGUgdGFibGVzIGJlaW5nIG1lcmdlZCBp bnRvIHRoZSBuZXcgcGFydGl0aW9uLgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0 ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMTg0Miw2ICsxOTQ5LDEzIEBAIEFMVEVS IFRBQkxFIG1lYXN1cmVtZW50CiAgICAgREVUQUNIIFBBUlRJVElPTiBtZWFzdXJlbWVudF95 MjAxNW0xMjsKIDwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgogCisgIDxwYXJhPgorICAgVG8g bWVyZ2Ugc2V2ZXJhbCBwYXJ0aXRpb25zIGludG8gb25lIHBhcnRpdGlvbiBvZiB0aGUgdGFy Z2V0IHRhYmxlOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBN RVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19jZW50cmFs KQorICAgIElOVE8gc2FsZXNfYWxsOworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisKICA8 L3JlZnNlY3QxPgogCiAgPHJlZnNlY3QxPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9kZXBlbmRlbmN5LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwpp bmRleCA3ZGRlZDYzNGViLi5mMDY5YTQ2YTgzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j YXRhbG9nL2RlcGVuZGVuY3kuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVu Y3kuYwpAQCAtMzE5LDYgKzMxOSw1NiBAQCBwZXJmb3JtRGVsZXRpb24oY29uc3QgT2JqZWN0 QWRkcmVzcyAqb2JqZWN0LAogCXRhYmxlX2Nsb3NlKGRlcFJlbCwgUm93RXhjbHVzaXZlTG9j ayk7CiB9CiAKKy8qCisgKiBwZXJmb3JtRGVsZXRpb25DaGVjazogQ2hlY2sgd2hldGhlciBh IHNwZWNpZmljIG9iamVjdCBjYW4gYmUgc2FmZWx5IGRlbGV0ZWQuCisgKiBUaGlzIGZ1bmN0 aW9uIGRvZXMgbm90IHBlcmZvcm0gYW55IGRlbGV0aW9uOyBpbnN0ZWFkLCBpdCByYWlzZXMg YW4gZXJyb3IKKyAqIGlmIHRoZSBvYmplY3QgY2Fubm90IGJlIGRlbGV0ZWQgZHVlIHRvIGV4 aXN0aW5nIGRlcGVuZGVuY2llcy4KKyAqCisgKiBJdCBjYW4gYmUgdXNlZnVsIHdoZW4geW91 IG5lZWQgZGVsZXRlIHNvbWUgb2JqZWN0cyBsYXRlci4gIFNlZSBjb21tZW50cyBpbgorICog cGVyZm9ybURlbGV0aW9uIHRvby4KKyAqIFRoZSBiZWhhdmlvciBtdXN0IHNwZWNpZmllZCBh cyBEUk9QX1JFU1RSSUNULgorICovCit2b2lkCitwZXJmb3JtRGVsZXRpb25DaGVjayhjb25z dCBPYmplY3RBZGRyZXNzICpvYmplY3QsCisJCQkJCSBEcm9wQmVoYXZpb3IgYmVoYXZpb3Is IGludCBmbGFncykKK3sKKwlSZWxhdGlvbglkZXBSZWw7CisJT2JqZWN0QWRkcmVzc2VzICp0 YXJnZXRPYmplY3RzOworCisJQXNzZXJ0KGJlaGF2aW9yID09IERST1BfUkVTVFJJQ1QpOwor CisJZGVwUmVsID0gdGFibGVfb3BlbihEZXBlbmRSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVM b2NrKTsKKworCUFjcXVpcmVEZWxldGlvbkxvY2sob2JqZWN0LCAwKTsKKworCS8qCisJICog Q29uc3RydWN0IGEgbGlzdCBvZiBvYmplY3RzIHdlIHdhbnQgZGVsZXRlIGxhdGVyIChpZSwg dGhlIGdpdmVuIG9iamVjdAorCSAqIHBsdXMgZXZlcnl0aGluZyBkaXJlY3RseSBvciBpbmRp cmVjdGx5IGRlcGVuZGVudCBvbiBpdCkuCisJICovCisJdGFyZ2V0T2JqZWN0cyA9IG5ld19v YmplY3RfYWRkcmVzc2VzKCk7CisKKwlmaW5kRGVwZW5kZW50T2JqZWN0cyhvYmplY3QsCisJ CQkJCQkgREVQRkxBR19PUklHSU5BTCwKKwkJCQkJCSBmbGFncywKKwkJCQkJCSBOVUxMLAkv KiBlbXB0eSBzdGFjayAqLworCQkJCQkJIHRhcmdldE9iamVjdHMsCisJCQkJCQkgTlVMTCwJ Lyogbm8gcGVuZGluZ09iamVjdHMgKi8KKwkJCQkJCSAmZGVwUmVsKTsKKworCS8qCisJICog Q2hlY2sgaWYgZGVsZXRpb24gaXMgYWxsb3dlZC4KKwkgKi8KKwlyZXBvcnREZXBlbmRlbnRP YmplY3RzKHRhcmdldE9iamVjdHMsCisJCQkJCQkgICBiZWhhdmlvciwKKwkJCQkJCSAgIGZs YWdzLAorCQkJCQkJICAgb2JqZWN0KTsKKworCS8qIEFuZCBjbGVhbiB1cCAqLworCWZyZWVf b2JqZWN0X2FkZHJlc3Nlcyh0YXJnZXRPYmplY3RzKTsKKworCXRhYmxlX2Nsb3NlKGRlcFJl bCwgUm93RXhjbHVzaXZlTG9jayk7Cit9CisKIC8qCiAgKiBwZXJmb3JtTXVsdGlwbGVEZWxl dGlvbnM6IFNpbWlsYXIgdG8gcGVyZm9ybURlbGV0aW9uLCBidXQgYWN0IG9uIG11bHRpcGxl CiAgKiBvYmplY3RzIGF0IG9uY2UuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L3BnX2NvbnN0cmFpbnQuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5j CmluZGV4IDYwMDJmZDAwMDIuLmVmODg4MmNiY2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfY29uc3RyYWludC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf Y29uc3RyYWludC5jCkBAIC04NzUsNyArODc1LDcgQEAgUmVsYXRpb25HZXROb3ROdWxsQ29u c3RyYWludHMoT2lkIHJlbGlkLCBib29sIGNvb2tlZCwgYm9vbCBpbmNsdWRlX25vaW5oKQog CQkJCQkJCQkJCQkJCQkJIGZhbHNlKSkpOwogCQkJY29uc3RyLT5pc19lbmZvcmNlZCA9IHRy dWU7CiAJCQljb25zdHItPnNraXBfdmFsaWRhdGlvbiA9ICFjb25Gb3JtLT5jb252YWxpZGF0 ZWQ7Ci0JCQljb25zdHItPmluaXRpYWxseV92YWxpZCA9IHRydWU7CisJCQljb25zdHItPmlu aXRpYWxseV92YWxpZCA9IGNvbkZvcm0tPmNvbnZhbGlkYXRlZDsKIAkJCWNvbnN0ci0+aXNf bm9faW5oZXJpdCA9IGNvbkZvcm0tPmNvbm5vaW5oZXJpdDsKIAkJCW5vdG51bGxzID0gbGFw cGVuZChub3RudWxscywgY29uc3RyKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YwppbmRleCAwODJhMzU3NWQ2Li40MGFhNzgzYTMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYwpAQCAtNzQwLDYgKzc0MCw4IEBAIHN0YXRpYyB2b2lkIEFURGV0YWNoQ2hlY2tO b0ZvcmVpZ25LZXlSZWZzKFJlbGF0aW9uIHBhcnRpdGlvbik7CiBzdGF0aWMgY2hhciBHZXRB dHRyaWJ1dGVDb21wcmVzc2lvbihPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKmNvbXByZXNz aW9uKTsKIHN0YXRpYyBjaGFyIEdldEF0dHJpYnV0ZVN0b3JhZ2UoT2lkIGF0dHR5cGlkLCBj b25zdCBjaGFyICpzdG9yYWdlbW9kZSk7CiAKK3N0YXRpYyB2b2lkIEFURXhlY01lcmdlUGFy dGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9u IHJlbCwKKwkJCQkJCQkJICBQYXJ0aXRpb25DbWQgKmNtZCwgQWx0ZXJUYWJsZVV0aWxpdHlD b250ZXh0ICpjb250ZXh0KTsKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCURlZmluZVJlbGF0aW9u CkBAIC00ODMzLDYgKzQ4MzUsMTAgQEAgQWx0ZXJUYWJsZUdldExvY2tMZXZlbChMaXN0ICpj bWRzKQogCQkJCWNtZF9sb2NrbW9kZSA9IFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jazsKIAkJ CQlicmVhazsKIAorCQkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQkJY21kX2xvY2tt b2RlID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKKwkJCQlicmVhazsKKwogCQkJZGVmYXVsdDoJ CQkvKiBvb3BzICovCiAJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBhbHRlciB0YWJs ZSB0eXBlOiAlZCIsCiAJCQkJCSAoaW50KSBjbWQtPnN1YnR5cGUpOwpAQCAtNTI2OCw2ICs1 Mjc0LDExIEBAIEFUUHJlcENtZChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFsdGVy VGFibGVDbWQgKmNtZCwKIAkJCS8qIE5vIGNvbW1hbmQtc3BlY2lmaWMgcHJlcCBuZWVkZWQg Ki8KIAkJCXBhc3MgPSBBVF9QQVNTX01JU0M7CiAJCQlicmVhazsKKwkJY2FzZSBBVF9NZXJn ZVBhcnRpdGlvbnM6CisJCQlBVFNpbXBsZVBlcm1pc3Npb25zKGNtZC0+c3VidHlwZSwgcmVs LCBBVFRfUEFSVElUSU9ORURfVEFCTEUpOworCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBw cmVwIG5lZWRlZCAqLworCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKKwkJCWJyZWFrOwogCQlk ZWZhdWx0OgkJCQkvKiBvb3BzICovCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGFs dGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgY21kLT5zdWJ0eXBlKTsKQEAgLTU2 NjQsNiArNTY3NSwxNCBAQCBBVEV4ZWNDbWQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxl SW5mbyAqdGFiLAogCQljYXNlIEFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOgogCQkJYWRk cmVzcyA9IEFURXhlY0RldGFjaFBhcnRpdGlvbkZpbmFsaXplKHJlbCwgKChQYXJ0aXRpb25D bWQgKikgY21kLT5kZWYpLT5uYW1lKTsKIAkJCWJyZWFrOworCQljYXNlIEFUX01lcmdlUGFy dGl0aW9uczoKKwkJCWNtZCA9IEFUUGFyc2VUcmFuc2Zvcm1DbWQod3F1ZXVlLCB0YWIsIHJl bCwgY21kLCBmYWxzZSwgbG9ja21vZGUsCisJCQkJCQkJCQkgIGN1cl9wYXNzLCBjb250ZXh0 KTsKKwkJCUFzc2VydChjbWQgIT0gTlVMTCk7CisJCQlBc3NlcnQocmVsLT5yZF9yZWwtPnJl bGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSk7CisJCQlBVEV4ZWNNZXJnZVBh cnRpdGlvbnMod3F1ZXVlLCB0YWIsIHJlbCwgKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZiwK KwkJCQkJCQkJICBjb250ZXh0KTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgkJCQkvKiBvb3Bz ICovCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGFsdGVyIHRhYmxlIHR5cGU6ICVk IiwKIAkJCQkgKGludCkgY21kLT5zdWJ0eXBlKTsKQEAgLTY3MDQsNiArNjcyMyw4IEBAIGFs dGVyX3RhYmxlX3R5cGVfdG9fc3RyaW5nKEFsdGVyVGFibGVUeXBlIGNtZHR5cGUpCiAJCQly ZXR1cm4gIkRFVEFDSCBQQVJUSVRJT04iOwogCQljYXNlIEFUX0RldGFjaFBhcnRpdGlvbkZp bmFsaXplOgogCQkJcmV0dXJuICJERVRBQ0ggUEFSVElUSU9OIC4uLiBGSU5BTElaRSI7CisJ CWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJcmV0dXJuICJNRVJHRSBQQVJUSVRJT05T IjsKIAkJY2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCXJldHVybiAiQUxURVIgQ09MVU1OIC4u LiBBREQgSURFTlRJVFkiOwogCQljYXNlIEFUX1NldElkZW50aXR5OgpAQCAtMjAxOTMsNiAr MjAyMTQsMzcgQEAgUXVldWVQYXJ0aXRpb25Db25zdHJhaW50VmFsaWRhdGlvbihMaXN0ICoq d3F1ZXVlLCBSZWxhdGlvbiBzY2FucmVsLAogCX0KIH0KIAorLyoKKyAqIGF0dGFjaFBhcnRp dGlvblRhYmxlOiBhdHRhY2ggYSBuZXcgcGFydGl0aW9uIHRvIHRoZSBwYXJ0aXRpb25lZCB0 YWJsZQorICoKKyAqIHdxdWV1ZTogdGhlIEFMVEVSIFRBQkxFIHdvcmsgcXVldWU7IGNhbiBi ZSBOVUxMIHdoZW4gbm90IHJ1bm5pbmcgYXMgcGFydAorICogICBvZiBhbiBBTFRFUiBUQUJM RSBzZXF1ZW5jZS4KKyAqIHJlbDogcGFydGl0aW9uZWQgcmVsYXRpb247CisgKiBhdHRhY2hy ZWw6IHJlbGF0aW9uIG9mIGF0dGFjaGVkIHBhcnRpdGlvbjsKKyAqIGJvdW5kOiBib3VuZHMg b2YgYXR0YWNoZWQgcmVsYXRpb24uCisgKi8KK3N0YXRpYyB2b2lkCithdHRhY2hQYXJ0aXRp b25UYWJsZShMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGF0dGFjaHJl bCwgUGFydGl0aW9uQm91bmRTcGVjICpib3VuZCkKK3sKKwkvKiBPSyB0byBjcmVhdGUgaW5o ZXJpdGFuY2UuICBSZXN0IG9mIHRoZSBjaGVja3MgcGVyZm9ybWVkIHRoZXJlICovCisJQ3Jl YXRlSW5oZXJpdGFuY2UoYXR0YWNocmVsLCByZWwsIHRydWUpOworCisJLyogVXBkYXRlIHRo ZSBwZ19jbGFzcyBlbnRyeS4gKi8KKwlTdG9yZVBhcnRpdGlvbkJvdW5kKGF0dGFjaHJlbCwg cmVsLCBib3VuZCk7CisKKwkvKiBFbnN1cmUgdGhlcmUgZXhpc3RzIGEgY29ycmVjdCBzZXQg b2YgaW5kZXhlcyBpbiB0aGUgcGFydGl0aW9uLiAqLworCUF0dGFjaFBhcnRpdGlvbkVuc3Vy ZUluZGV4ZXMod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCk7CisKKwkvKiBhbmQgdHJpZ2dlcnMg Ki8KKwlDbG9uZVJvd1RyaWdnZXJzVG9QYXJ0aXRpb24ocmVsLCBhdHRhY2hyZWwpOworCisJ LyoKKwkgKiBDbG9uZSBmb3JlaWduIGtleSBjb25zdHJhaW50cy4gIENhbGxlZSBpcyByZXNw b25zaWJsZSBmb3Igc2V0dGluZyB1cAorCSAqIGZvciBwaGFzZSAzIGNvbnN0cmFpbnQgdmVy aWZpY2F0aW9uLgorCSAqLworCUNsb25lRm9yZWlnbktleUNvbnN0cmFpbnRzKHdxdWV1ZSwg cmVsLCBhdHRhY2hyZWwpOworfQorCiAvKgogICogQUxURVIgVEFCTEUgPG5hbWU+IEFUVEFD SCBQQVJUSVRJT04gPHBhcnRpdGlvbi1uYW1lPiBGT1IgVkFMVUVTCiAgKgpAQCAtMjAzOTQs MjMgKzIwNDQ2LDggQEAgQVRFeGVjQXR0YWNoUGFydGl0aW9uKExpc3QgKip3cXVldWUsIFJl bGF0aW9uIHJlbCwgUGFydGl0aW9uQ21kICpjbWQsCiAJY2hlY2tfbmV3X3BhcnRpdGlvbl9i b3VuZChSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhdHRhY2hyZWwpLCByZWwsCiAJCQkJCQkJ ICBjbWQtPmJvdW5kLCBwc3RhdGUpOwogCi0JLyogT0sgdG8gY3JlYXRlIGluaGVyaXRhbmNl LiAgUmVzdCBvZiB0aGUgY2hlY2tzIHBlcmZvcm1lZCB0aGVyZSAqLwotCUNyZWF0ZUluaGVy aXRhbmNlKGF0dGFjaHJlbCwgcmVsLCB0cnVlKTsKLQotCS8qIFVwZGF0ZSB0aGUgcGdfY2xh c3MgZW50cnkuICovCi0JU3RvcmVQYXJ0aXRpb25Cb3VuZChhdHRhY2hyZWwsIHJlbCwgY21k LT5ib3VuZCk7Ci0KLQkvKiBFbnN1cmUgdGhlcmUgZXhpc3RzIGEgY29ycmVjdCBzZXQgb2Yg aW5kZXhlcyBpbiB0aGUgcGFydGl0aW9uLiAqLwotCUF0dGFjaFBhcnRpdGlvbkVuc3VyZUlu ZGV4ZXMod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCk7Ci0KLQkvKiBhbmQgdHJpZ2dlcnMgKi8K LQlDbG9uZVJvd1RyaWdnZXJzVG9QYXJ0aXRpb24ocmVsLCBhdHRhY2hyZWwpOwotCi0JLyoK LQkgKiBDbG9uZSBmb3JlaWduIGtleSBjb25zdHJhaW50cy4gIENhbGxlZSBpcyByZXNwb25z aWJsZSBmb3Igc2V0dGluZyB1cAotCSAqIGZvciBwaGFzZSAzIGNvbnN0cmFpbnQgdmVyaWZp Y2F0aW9uLgotCSAqLwotCUNsb25lRm9yZWlnbktleUNvbnN0cmFpbnRzKHdxdWV1ZSwgcmVs LCBhdHRhY2hyZWwpOworCS8qIEF0dGFjaCBhIG5ldyBwYXJ0aXRpb24gdG8gdGhlIHBhcnRp dGlvbmVkIHRhYmxlLiAqLworCWF0dGFjaFBhcnRpdGlvblRhYmxlKHdxdWV1ZSwgcmVsLCBh dHRhY2hyZWwsIGNtZC0+Ym91bmQpOwogCiAJLyoKIAkgKiBHZW5lcmF0ZSBwYXJ0aXRpb24g Y29uc3RyYWludCBmcm9tIHRoZSBwYXJ0aXRpb24gYm91bmQgc3BlY2lmaWNhdGlvbi4KQEAg LTIyMDU4LDMgKzIyMDk1LDgzMyBAQCBHZXRBdHRyaWJ1dGVTdG9yYWdlKE9pZCBhdHR0eXBp ZCwgY29uc3QgY2hhciAqc3RvcmFnZW1vZGUpCiAKIAlyZXR1cm4gY3N0b3JhZ2U7CiB9CisK KworLyoKKyAqIGJ1aWxkRXhwcmVzc2lvbkV4ZWN1dGlvblN0YXRlczogYnVpbGQgdGhlIG5l ZWRlZCBleHByZXNzaW9uIGV4ZWN1dGlvbiBzdGF0ZXMKKyAqIGZvciBuZXcgcGFydGl0aW9u IChuZXdQYXJ0UmVsKSBjaGVja3MgYW5kIGluaXRpYWxpemUgZXhwcmVzc2lvbnMgZm9yCisg KiBnZW5lcmF0ZWQgY29sdW1ucy4gQWxsIGV4cHJlc3Npb25zIHNob3VsZCBiZSBjcmVhdGVk IGluICJ0YWIiCisgKiAoQWx0ZXJlZFRhYmxlSW5mbyBzdHJ1Y3R1cmUpLgorICovCitzdGF0 aWMgdm9pZAorYnVpbGRFeHByZXNzaW9uRXhlY3V0aW9uU3RhdGVzKEFsdGVyZWRUYWJsZUlu Zm8gKnRhYiwgUmVsYXRpb24gbmV3UGFydFJlbCwgRVN0YXRlICplc3RhdGUpCit7CisJLyoK KwkgKiBCdWlsZCB0aGUgbmVlZGVkIGV4cHJlc3Npb24gZXhlY3V0aW9uIHN0YXRlcy4gSGVy ZSwgd2UgZXhwZWN0IG9ubHkgTk9UCisJICogTlVMTCBhbmQgQ0hFQ0sgY29uc3RyYWludC4K KwkgKi8KKwlmb3JlYWNoX3B0cihOZXdDb25zdHJhaW50LCBjb24sIHRhYi0+Y29uc3RyYWlu dHMpCisJeworCQlzd2l0Y2ggKGNvbi0+Y29udHlwZSkKKwkJeworCQkJY2FzZSBDT05TVFJf Q0hFQ0s6CisKKwkJCQkvKgorCQkJCSAqIFdlIGFscmVhZHkgZXhwYW5kZWQgdmlydHVhbCBl eHByZXNzaW9uIGluCisJCQkJICogY3JlYXRlVGFibGVDb25zdHJhaW50cy4KKwkJCQkgKi8K KwkJCQljb24tPnF1YWxzdGF0ZSA9IEV4ZWNQcmVwYXJlRXhwcigoRXhwciAqKSBjb24tPnF1 YWwsIGVzdGF0ZSk7CisJCQkJYnJlYWs7CisJCQljYXNlIENPTlNUUl9OT1ROVUxMOgorCQkJ CS8qIE5vdGhpbmcgdG8gZG8gaGVyZS4gKi8KKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJ CQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBjb25zdHJhaW50IHR5cGU6ICVkIiwKKwkJ CQkJIChpbnQpIGNvbi0+Y29udHlwZSk7CisJCX0KKwl9CisKKwkvKiBFeHByZXNzaW9uIGFs cmVhZHkgcGxhbm5lZCBpbiBjcmVhdGVUYWJsZUNvbnN0cmFpbnRzICovCisJZm9yZWFjaF9w dHIoTmV3Q29sdW1uVmFsdWUsIGV4LCB0YWItPm5ld3ZhbHMpCisJCWV4LT5leHByc3RhdGUg PSBFeGVjSW5pdEV4cHIoKEV4cHIgKikgZXgtPmV4cHIsIE5VTEwpOworfQorCisvKgorICog ZXZhbHVhdGVHZW5lcmF0ZWRFeHByZXNzaW9uc0FuZENoZWNrQ29uc3RyYWludHM6IGV2YWx1 YXRlIGFueSBnZW5lcmF0ZWQKKyAqIGV4cHJlc3Npb25zIGZvciAidGFiIiAoQWx0ZXJlZFRh YmxlSW5mbyBzdHJ1Y3R1cmUpIHdob3NlIGlucHV0cyBjb21lIGZyb20KKyAqIHRoZSBuZXcg dHVwbGUgKGluc2VydHNsb3QpIG9mIG5ldyBwYXJ0aXRpb24gKG5ld1BhcnRSZWwpLgorICov CitzdGF0aWMgdm9pZAorZXZhbHVhdGVHZW5lcmF0ZWRFeHByZXNzaW9uc0FuZENoZWNrQ29u c3RyYWludHMoQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAorCQkJCQkJCQkJCQkJUmVsYXRpb24g bmV3UGFydFJlbCwKKwkJCQkJCQkJCQkJCVR1cGxlVGFibGVTbG90ICppbnNlcnRzbG90LAor CQkJCQkJCQkJCQkJRXhwckNvbnRleHQgKmVjb250ZXh0KQoreworCWVjb250ZXh0LT5lY3h0 X3NjYW50dXBsZSA9IGluc2VydHNsb3Q7CisKKwlmb3JlYWNoX3B0cihOZXdDb2x1bW5WYWx1 ZSwgZXgsIHRhYi0+bmV3dmFscykKKwl7CisJCWlmICghZXgtPmlzX2dlbmVyYXRlZCkKKwkJ CWNvbnRpbnVlOworCisJCWluc2VydHNsb3QtPnR0c192YWx1ZXNbZXgtPmF0dG51bSAtIDFd CisJCQk9IEV4ZWNFdmFsRXhwcihleC0+ZXhwcnN0YXRlLAorCQkJCQkJICAgZWNvbnRleHQs CisJCQkJCQkgICAmaW5zZXJ0c2xvdC0+dHRzX2lzbnVsbFtleC0+YXR0bnVtIC0gMV0pOwor CX0KKworCWZvcmVhY2hfcHRyKE5ld0NvbnN0cmFpbnQsIGNvbiwgdGFiLT5jb25zdHJhaW50 cykKKwl7CisJCXN3aXRjaCAoY29uLT5jb250eXBlKQorCQl7CisJCQljYXNlIENPTlNUUl9D SEVDSzoKKwkJCQlpZiAoIUV4ZWNDaGVjayhjb24tPnF1YWxzdGF0ZSwgZWNvbnRleHQpKQor CQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9DSEVDS19WSU9M QVRJT04pLAorCQkJCQkJCWVycm1zZygiY2hlY2sgY29uc3RyYWludCBcIiVzXCIgb2YgcmVs YXRpb24gXCIlc1wiIGlzIHZpb2xhdGVkIGJ5IHNvbWUgcm93IiwKKwkJCQkJCQkJICAgY29u LT5uYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShuZXdQYXJ0UmVsKSksCisJCQkJCQkJ ZXJydGFibGVjb25zdHJhaW50KG5ld1BhcnRSZWwsIGNvbi0+bmFtZSkpOworCQkJCWJyZWFr OworCQkJY2FzZSBDT05TVFJfTk9UTlVMTDoKKwkJCWNhc2UgQ09OU1RSX0ZPUkVJR046CisJ CQkJLyogTm90aGluZyB0byBkbyBoZXJlICovCisJCQkJYnJlYWs7CisJCQlkZWZhdWx0Ogor CQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgY29uc3RyYWludCB0eXBlOiAlZCIsCisJ CQkJCSAoaW50KSBjb24tPmNvbnR5cGUpOworCQl9CisJfQorfQorCisvKgorICogZ2V0QXR0 cmlidXRlc0xpc3Q6IGJ1aWxkIGEgbGlzdCBvZiBjb2x1bW5zIChDb2x1bW5EZWYpIGJhc2Vk IG9uIHBhcmVudF9yZWwKKyAqLworc3RhdGljIExpc3QgKgorZ2V0QXR0cmlidXRlc0xpc3Qo UmVsYXRpb24gcGFyZW50X3JlbCkKK3sKKwlBdHRyTnVtYmVyCXBhcmVudF9hdHRubzsKKwlU dXBsZURlc2MJbW9kZWxEZXNjOworCUxpc3QJICAgKmNvbExpc3QgPSBOSUw7CisKKwltb2Rl bERlc2MgPSBSZWxhdGlvbkdldERlc2NyKHBhcmVudF9yZWwpOworCisJZm9yIChwYXJlbnRf YXR0bm8gPSAxOyBwYXJlbnRfYXR0bm8gPD0gbW9kZWxEZXNjLT5uYXR0czsKKwkJIHBhcmVu dF9hdHRubysrKQorCXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0cmlidXRlID0gVHVwbGVE ZXNjQXR0cihtb2RlbERlc2MsCisJCQkJCQkJCQkJCQkJcGFyZW50X2F0dG5vIC0gMSk7CisJ CUNvbHVtbkRlZiAgKmRlZjsKKworCQkvKiBJZ25vcmUgZHJvcHBlZCBjb2x1bW5zIGluIHRo ZSBwYXJlbnQuICovCisJCWlmIChhdHRyaWJ1dGUtPmF0dGlzZHJvcHBlZCkKKwkJCWNvbnRp bnVlOworCisJCWRlZiA9IG1ha2VDb2x1bW5EZWYoTmFtZVN0cihhdHRyaWJ1dGUtPmF0dG5h bWUpLCBhdHRyaWJ1dGUtPmF0dHR5cGlkLAorCQkJCQkJCWF0dHJpYnV0ZS0+YXR0dHlwbW9k LCBhdHRyaWJ1dGUtPmF0dGNvbGxhdGlvbik7CisKKwkJZGVmLT5pc19ub3RfbnVsbCA9IGF0 dHJpYnV0ZS0+YXR0bm90bnVsbDsKKworCQkvKiBDb3B5IGlkZW50aXR5LiAqLworCQlkZWYt PmlkZW50aXR5ID0gYXR0cmlidXRlLT5hdHRpZGVudGl0eTsKKworCQkvKiBDb3B5IGF0dGdl bmVyYXRlZC4gKi8KKwkJZGVmLT5nZW5lcmF0ZWQgPSBhdHRyaWJ1dGUtPmF0dGdlbmVyYXRl ZDsKKworCQlkZWYtPnN0b3JhZ2UgPSBhdHRyaWJ1dGUtPmF0dHN0b3JhZ2U7CisKKwkJLyog TGlrZXdpc2UsIGNvcHkgY29tcHJlc3Npb24uICovCisJCWlmIChDb21wcmVzc2lvbk1ldGhv ZElzVmFsaWQoYXR0cmlidXRlLT5hdHRjb21wcmVzc2lvbikpCisJCQlkZWYtPmNvbXByZXNz aW9uID0KKwkJCQlwc3RyZHVwKEdldENvbXByZXNzaW9uTWV0aG9kTmFtZShhdHRyaWJ1dGUt PmF0dGNvbXByZXNzaW9uKSk7CisJCWVsc2UKKwkJCWRlZi0+Y29tcHJlc3Npb24gPSBOVUxM OworCisJCS8qIEFkZCB0byBjb2x1bW4gbGlzdC4gKi8KKwkJY29sTGlzdCA9IGxhcHBlbmQo Y29sTGlzdCwgZGVmKTsKKwl9CisKKwlyZXR1cm4gY29sTGlzdDsKK30KKworCisvKgorICog Y3JlYXRlVGFibGVDb25zdHJhaW50czoKKyAqIGNyZWF0ZSBjaGVjayBjb25zdHJhaW50cywg ZGVmYXVsdCB2YWx1ZXMgYW5kIGdlbmVyYXRlZCB2YWx1ZXMgZm9yIG5ld1JlbAorICogYmFz ZWQgb24gcGFyZW50X3JlbC4gIHRhYiBpcyBwZW5kaW5nLXdvcmsgcXVldWUgZm9yIG5ld1Jl bCwgd2UgbWF5IG5lZWQgaXQgaW4KKyAqIE1lcmdlUGFydGl0aW9uc01vdmVSb3dzLgorICov CitzdGF0aWMgdm9pZAorY3JlYXRlVGFibGVDb25zdHJhaW50cyhMaXN0ICoqd3F1ZXVlLCBB bHRlcmVkVGFibGVJbmZvICp0YWIsCisJCQkJCSAgIFJlbGF0aW9uIHBhcmVudF9yZWwsIFJl bGF0aW9uIG5ld1JlbCkKK3sKKwlUdXBsZURlc2MJdHVwbGVEZXNjOworCVR1cGxlQ29uc3Ry ICpjb25zdHI7CisJQXR0ck1hcCAgICAqYXR0bWFwOworCUF0dHJOdW1iZXIJcGFyZW50X2F0 dG5vOworCWludAkJCWNjbnVtOworCUxpc3QJICAgKkNvbnN0cmFpbnRzID0gTklMOworCUxp c3QJICAgKmNvb2tlZENvbnN0cmFpbnRzID0gTklMOworCisJdHVwbGVEZXNjID0gUmVsYXRp b25HZXREZXNjcihwYXJlbnRfcmVsKTsKKwljb25zdHIgPSB0dXBsZURlc2MtPmNvbnN0cjsK KworCWlmICghY29uc3RyKQorCQlyZXR1cm47CisKKwkvKgorCSAqIENvbnN0cnVjdCBhIG1h cCBmcm9tIHRoZSBwYXJlbnQgcmVsYXRpb24ncyBhdHRub3MgdG8gdGhlIGNoaWxkIHJlbCdz LgorCSAqIFRoaXMgcmUtY2hlY2tzIHR5cGUgbWF0Y2ggZXRjLCBhbHRob3VnaCBpdCBzaG91 bGRuJ3QgYmUgcG9zc2libGUgdG8KKwkgKiBoYXZlIGEgZmFpbHVyZSBzaW5jZSBib3RoIHRh YmxlcyBhcmUgbG9ja2VkLgorCSAqLworCWF0dG1hcCA9IGJ1aWxkX2F0dHJtYXBfYnlfbmFt ZShSZWxhdGlvbkdldERlc2NyKG5ld1JlbCksCisJCQkJCQkJCSAgIHR1cGxlRGVzYywKKwkJ CQkJCQkJICAgZmFsc2UpOworCisJLyogQ3ljbGUgZm9yIGRlZmF1bHQgdmFsdWVzLiAqLwor CWZvciAocGFyZW50X2F0dG5vID0gMTsgcGFyZW50X2F0dG5vIDw9IHR1cGxlRGVzYy0+bmF0 dHM7IHBhcmVudF9hdHRubysrKQorCXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0cmlidXRl ID0gVHVwbGVEZXNjQXR0cih0dXBsZURlc2MsCisJCQkJCQkJCQkJCQkJcGFyZW50X2F0dG5v IC0gMSk7CisKKwkJLyogSWdub3JlIGRyb3BwZWQgY29sdW1ucyBpbiB0aGUgcGFyZW50LiAq LworCQlpZiAoYXR0cmlidXRlLT5hdHRpc2Ryb3BwZWQpCisJCQljb250aW51ZTsKKworCQkv KiBDb3B5IGRlZmF1bHQsIGlmIHByZXNlbnQgYW5kIGl0IHNob3VsZCBiZSBjb3BpZWQuICov CisJCWlmIChhdHRyaWJ1dGUtPmF0dGhhc2RlZikKKwkJeworCQkJTm9kZQkgICAqdGhpc19k ZWZhdWx0ID0gTlVMTDsKKwkJCWJvb2wJCWZvdW5kX3dob2xlX3JvdzsKKwkJCUF0dHJOdW1i ZXIJbnVtOworCQkJTm9kZQkgICAqZGVmOworCQkJTmV3Q29sdW1uVmFsdWUgKm5ld3ZhbDsK KworCQkJaWYgKGF0dHJpYnV0ZS0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5FUkFU RURfVklSVFVBTCkKKwkJCQl0aGlzX2RlZmF1bHQgPSBidWlsZF9nZW5lcmF0aW9uX2V4cHJl c3Npb24ocGFyZW50X3JlbCwgYXR0cmlidXRlLT5hdHRudW0pOworCQkJZWxzZQorCQkJewor CQkJCXRoaXNfZGVmYXVsdCA9IFR1cGxlRGVzY0dldERlZmF1bHQodHVwbGVEZXNjLCBhdHRy aWJ1dGUtPmF0dG51bSk7CisJCQkJaWYgKHRoaXNfZGVmYXVsdCA9PSBOVUxMKQorCQkJCQll bG9nKEVSUk9SLCAiZGVmYXVsdCBleHByZXNzaW9uIG5vdCBmb3VuZCBmb3IgYXR0cmlidXRl ICVkIG9mIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCQkgYXR0cmlidXRlLT5hdHRudW0sIFJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcmVudF9yZWwpKTsKKwkJCX0KKworCQkJbnVtID0g YXR0bWFwLT5hdHRudW1zW3BhcmVudF9hdHRubyAtIDFdOworCQkJZGVmID0gbWFwX3Zhcmlh YmxlX2F0dG5vcyh0aGlzX2RlZmF1bHQsIDEsIDAsIGF0dG1hcCwgSW52YWxpZE9pZCwgJmZv dW5kX3dob2xlX3Jvdyk7CisKKwkJCWlmIChmb3VuZF93aG9sZV9yb3cgJiYgYXR0cmlidXRl LT5hdHRnZW5lcmF0ZWQgIT0gJ1wwJykKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQllcnJtc2coImNh bm5vdCBjb252ZXJ0IHdob2xlLXJvdyB0YWJsZSByZWZlcmVuY2UiKSwKKwkJCQkJCWVycmRl dGFpbCgiR2VuZXJhdGlvbiBleHByZXNzaW9uIGZvciBjb2x1bW4gXCIlc1wiIGNvbnRhaW5z IGEgd2hvbGUtcm93IHJlZmVyZW5jZSB0byB0YWJsZSBcIiVzXCIuIiwKKwkJCQkJCQkJICBO YW1lU3RyKGF0dHJpYnV0ZS0+YXR0bmFtZSksCisJCQkJCQkJCSAgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocGFyZW50X3JlbCkpKTsKKworCQkJLyogQWRkIGEgcHJlLWNvb2tlZCBkZWZh dWx0IGV4cHJlc3Npb24uICovCisJCQlTdG9yZUF0dHJEZWZhdWx0KG5ld1JlbCwgbnVtLCBk ZWYsIHRydWUpOworCisJCQkvKgorCQkJICogU3RvcmVkIGdlbmVyYXRlZCBjb2x1bW4gZXhw cmVzc2lvbnMgaW4gcGFyZW50X3JlbCBtaWdodAorCQkJICogcmVmZXJlbmNlIHRhYmxlb2lk LiAgbmV3UmVsLCBwYXJlbnRfcmVsIHRhYmxlb2lkIGNsZWFyIGlzIG5vdAorCQkJICogdGhl IHNhbWUuIElmIHNvLCB0aGVzZSBzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbnMgcmVxdWlyZQor CQkJICogcmVjb21wdXRhdGlvbiBmb3IgbmV3UmVsIHdpdGhpbiBNZXJnZVBhcnRpdGlvbnNN b3ZlUm93cy4KKwkJCSAqLworCQkJaWYgKGF0dHJpYnV0ZS0+YXR0Z2VuZXJhdGVkID09IEFU VFJJQlVURV9HRU5FUkFURURfU1RPUkVEKQorCQkJeworCQkJCW5ld3ZhbCA9IChOZXdDb2x1 bW5WYWx1ZSAqKSBwYWxsb2MwKHNpemVvZihOZXdDb2x1bW5WYWx1ZSkpOworCQkJCW5ld3Zh bC0+YXR0bnVtID0gbnVtOworCQkJCW5ld3ZhbC0+ZXhwciA9IGV4cHJlc3Npb25fcGxhbm5l cigoRXhwciAqKSBkZWYpOworCQkJCW5ld3ZhbC0+aXNfZ2VuZXJhdGVkID0gKGF0dHJpYnV0 ZS0+YXR0Z2VuZXJhdGVkICE9ICdcMCcpOworCQkJCXRhYi0+bmV3dmFscyA9IGxhcHBlbmQo dGFiLT5uZXd2YWxzLCBuZXd2YWwpOworCQkJfQorCQl9CisJfQorCisJLyogQ3ljbGUgZm9y IENIRUNLIGNvbnN0cmFpbnRzLiAqLworCWZvciAoY2NudW0gPSAwOyBjY251bSA8IGNvbnN0 ci0+bnVtX2NoZWNrOyBjY251bSsrKQorCXsKKwkJY2hhcgkgICAqY2NuYW1lID0gY29uc3Ry LT5jaGVja1tjY251bV0uY2NuYW1lOworCQljaGFyCSAgICpjY2JpbiA9IGNvbnN0ci0+Y2hl Y2tbY2NudW1dLmNjYmluOworCQlib29sCQljY2VuZm9yY2VkID0gY29uc3RyLT5jaGVja1tj Y251bV0uY2NlbmZvcmNlZDsKKwkJYm9vbAkJY2Nub2luaGVyaXQgPSBjb25zdHItPmNoZWNr W2NjbnVtXS5jY25vaW5oZXJpdDsKKwkJYm9vbAkJY2N2YWxpZCA9IGNvbnN0ci0+Y2hlY2tb Y2NudW1dLmNjdmFsaWQ7CisJCU5vZGUJICAgKmNjYmluX25vZGU7CisJCWJvb2wJCWZvdW5k X3dob2xlX3JvdzsKKwkJQ29uc3RyYWludCAqY29uc3RyOworCisJCS8qCisJCSAqIFBhcnRp dGlvbmVkIHRhYmxlIGNhbiBub3QgaGF2ZSBOTyBJTkhFUklUIGNoZWNrIGNvbnN0cmFpbnQg KHNlZQorCQkgKiBTdG9yZVJlbENoZWNrIGZ1bmN0aW9uKS4KKwkJICovCisJCUFzc2VydCgh Y2Nub2luaGVyaXQpOworCisJCWNjYmluX25vZGUgPSBtYXBfdmFyaWFibGVfYXR0bm9zKHN0 cmluZ1RvTm9kZShjY2JpbiksCisJCQkJCQkJCQkJIDEsIDAsCisJCQkJCQkJCQkJIGF0dG1h cCwKKwkJCQkJCQkJCQkgSW52YWxpZE9pZCwgJmZvdW5kX3dob2xlX3Jvdyk7CisKKwkJLyoK KwkJICogRm9yIHRoZSBtb21lbnQgd2UgaGF2ZSB0byByZWplY3Qgd2hvbGUtcm93IHZhcmlh YmxlcyAoYXMgZm9yIExJS0UKKwkJICogYW5kIGluaGVyaXRhbmNlcykuCisJCSAqLworCQlp ZiAoZm91bmRfd2hvbGVfcm93KQorCQkJZWxvZyhFUlJPUiwgIkNvbnN0cmFpbnQgXCIlc1wi IGNvbnRhaW5zIGEgd2hvbGUtcm93IHJlZmVyZW5jZSB0byB0YWJsZSBcIiVzXCIuIiwKKwkJ CQkgY2NuYW1lLAorCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJlbnRfcmVsKSk7 CisKKwkJY29uc3RyID0gbWFrZU5vZGUoQ29uc3RyYWludCk7CisJCWNvbnN0ci0+Y29udHlw ZSA9IENPTlNUUl9DSEVDSzsKKwkJY29uc3RyLT5jb25uYW1lID0gcHN0cmR1cChjY25hbWUp OworCQljb25zdHItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJY29uc3RyLT5pbml0ZGVmZXJy ZWQgPSBmYWxzZTsKKwkJY29uc3RyLT5pc19lbmZvcmNlZCA9IGNjZW5mb3JjZWQ7CisJCWNv bnN0ci0+c2tpcF92YWxpZGF0aW9uID0gIWNjdmFsaWQ7CisJCWNvbnN0ci0+aW5pdGlhbGx5 X3ZhbGlkID0gY2N2YWxpZDsKKwkJY29uc3RyLT5pc19ub19pbmhlcml0ID0gY2Nub2luaGVy aXQ7CisJCWNvbnN0ci0+cmF3X2V4cHIgPSBOVUxMOworCQljb25zdHItPmNvb2tlZF9leHBy ID0gbm9kZVRvU3RyaW5nKGNjYmluX25vZGUpOworCQljb25zdHItPmxvY2F0aW9uID0gLTE7 CisJCUNvbnN0cmFpbnRzID0gbGFwcGVuZChDb25zdHJhaW50cywgY29uc3RyKTsKKwl9CisK KwkvKiBpbnN0YWxsIGFsbCBDSEVDSyBjb25zdHJhaW50cy4gKi8KKwljb29rZWRDb25zdHJh aW50cyA9IEFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMobmV3UmVsLCBOSUwsIENvbnN0cmFp bnRzLAorCQkJCQkJCQkJCQkJICBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgTlVMTCk7CisKKwkvKiBN YWtlIHRoZSBhZGRpdGlvbmFsIGNhdGFsb2cgY2hhbmdlcyB2aXNpYmxlICovCisJQ29tbWFu ZENvdW50ZXJJbmNyZW1lbnQoKTsKKworCS8qCisJICogcGFyZW50X3JlbCBjaGVjayBjb25z dHJhaW50IGV4cHJlc3NzaW9uIG1heSByZWZlcmVuY2UgdGFibGVvaWQsIHNvCisJICogbGF0 ZXIgaW4gTWVyZ2VQYXJ0aXRpb25zTW92ZVJvd3MsIHdlIG5lZWQgZXZ1bGF0ZSB0aGUgY2hl Y2sgY29uc3RyYWludAorCSAqIGFnYWluIGZvciB0aGUgbmV3UmVsLiBXZSBjYW4gY2hlY2sg d2VhdGhlciBjaGVjayBjb25zdHJhaW50IGNvbnRhaW4KKwkgKiB0YWJsZW9pZCByZWZlcmVu Y2Ugb3Igbm90IHZpYSBwdWxsX3ZhcmF0dG5vcy4KKwkgKi8KKwlmb3JlYWNoX3B0cihDb29r ZWRDb25zdHJhaW50LCBjY29uLCBjb29rZWRDb25zdHJhaW50cykKKwl7CisJCWlmICghY2Nv bi0+c2tpcF92YWxpZGF0aW9uKQorCQl7CisJCQlOb2RlCSAgICpxdWFsOworCQkJQml0bWFw c2V0ICAqYXR0bnVtcyA9IE5VTEw7CisKKwkJCUFzc2VydChjY29uLT5jb250eXBlID09IENP TlNUUl9DSEVDSyk7CisJCQlxdWFsID0gZXhwYW5kX2dlbmVyYXRlZF9jb2x1bW5zX2luX2V4 cHIoY2Nvbi0+ZXhwciwgbmV3UmVsLCAxKTsKKwkJCXB1bGxfdmFyYXR0bm9zKHF1YWwsIDEs ICZhdHRudW1zKTsKKworCQkJLyoKKwkJCSAqIEFkZCBjaGVjayBvbmx5IGlmIGl0IGNvbnRh aW5zIHRhYmxlb2lkCisJCQkgKiAoVGFibGVPaWRBdHRyaWJ1dGVOdW1iZXIpLgorCQkJICov CisJCQlpZiAoYm1zX2lzX21lbWJlcihUYWJsZU9pZEF0dHJpYnV0ZU51bWJlciAtIEZpcnN0 TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCisJCQkJCQkJICBhdHRudW1zKSkKKwkJ CXsKKwkJCQlOZXdDb25zdHJhaW50ICpuZXdjb247CisKKwkJCQluZXdjb24gPSAoTmV3Q29u c3RyYWludCAqKSBwYWxsb2MwKHNpemVvZihOZXdDb25zdHJhaW50KSk7CisJCQkJbmV3Y29u LT5uYW1lID0gY2Nvbi0+bmFtZTsKKwkJCQluZXdjb24tPmNvbnR5cGUgPSBDT05TVFJfQ0hF Q0s7CisJCQkJbmV3Y29uLT5xdWFsID0gcXVhbDsKKworCQkJCXRhYi0+Y29uc3RyYWludHMg PSBsYXBwZW5kKHRhYi0+Y29uc3RyYWludHMsIG5ld2Nvbik7CisJCQl9CisJCX0KKwl9CisK KwkvKiBEb24ndCBuZWVkIHRoZSBjb29rZWRDb25zdHJhaW50cyBhbnkgbW9yZS4gKi8KKwls aXN0X2ZyZWVfZGVlcChjb29rZWRDb25zdHJhaW50cyk7CisKKwkvKiBSZXByb2R1Y2Ugbm90 LW51bGwgY29uc3RyYWludHMuICovCisJaWYgKGNvbnN0ci0+aGFzX25vdF9udWxsKQorCXsK KwkJTGlzdAkgICAqbm5jb25zdHJhaW50czsKKworCQkvKgorCQkgKiBUaGUgImluY2x1ZGVf bm9pbmgiIGFyZ3VtZW50IGlzIGZhbHNlIGJlY2F1c2UgYSBwYXJ0aXRpb25lZCB0YWJsZQor CQkgKiBjYW5ub3QgaGF2ZSBOTyBJTkhFUklUIGNvbnN0cmFpbnQuCisJCSAqLworCQlubmNv bnN0cmFpbnRzID0gUmVsYXRpb25HZXROb3ROdWxsQ29uc3RyYWludHMoUmVsYXRpb25HZXRS ZWxpZChwYXJlbnRfcmVsKSwKKwkJCQkJCQkJCQkJCQkgIGZhbHNlLCBmYWxzZSk7CisKKwkJ QXNzZXJ0KGxpc3RfbGVuZ3RoKG5uY29uc3RyYWludHMpID4gMCk7CisKKwkJLyoKKwkJICog V2UgYWxyZWFkeSBzZXQgcGdfYXR0cmlidXRlLmF0dG5vdG51bGwgaW4gY3JlYXRlUGFydGl0 aW9uVGFibGUuIE5vCisJCSAqIG5lZWQgY2FsbCBzZXRfYXR0bm90bnVsbCBhZ2Fpbi4KKwkJ ICovCisJCUFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMobmV3UmVsLCBOSUwsIG5uY29uc3Ry YWludHMsIGZhbHNlLCB0cnVlLCB0cnVlLCBOVUxMKTsKKwl9Cit9CisKKworLyoKKyAqIGNy ZWF0ZVBhcnRpdGlvblRhYmxlOgorICoKKyAqIENyZWF0ZSBhIG5ldyBwYXJ0aXRpb24gKG5l d1BhcnROYW1lKSBmb3IgcGFydGl0aW9uZWQgdGFibGUgKHBhcmVudF9yZWwpLgorICogb3du ZXJJZCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBwYXJ0aXRpb24gb24gd2hpY2ggdGhlIG9wZXJh dGlvbiBpcyBwZXJmb3JtZWQsCisgKiBzbyBpdCBpcyBwYXNzZWQgc2VwYXJhdGVseS4gIFRo ZSBuZXcgcGFydGl0aW9uIHdpbGwgaW5oZXJpdCB0aGUgYWNjZXNzIG1ldGhvZAorICogYW5k IHBlcnNpc3RlbmNlIHR5cGUgZnJvbSB0aGUgcGFyZW50IHRhYmxlLgorICoKKyAqIHJldHVy bnMgdGhlIGNyZWF0ZWQgcmVsYXRpb24gKGxvY2tlZCBpbiBBY2Nlc3NFeGNsdXNpdmVMb2Nr IG1vZGUpLgorICovCitzdGF0aWMgUmVsYXRpb24KK2NyZWF0ZVBhcnRpdGlvblRhYmxlKExp c3QgKip3cXVldWUsIFJhbmdlVmFyICpuZXdQYXJ0TmFtZSwKKwkJCQkJIFJlbGF0aW9uIHBh cmVudF9yZWwsIE9pZCBvd25lcklkKQoreworCVJlbGF0aW9uCW5ld1JlbDsKKwlPaWQJCQlu ZXdSZWxJZDsKKwlPaWQJCQlleGlzdGluZ1JlbGlkOworCVR1cGxlRGVzYwlkZXNjcmlwdG9y OworCUxpc3QJICAgKmNvbExpc3QgPSBOSUw7CisJT2lkCQkJcmVsYW1JZDsKKwlPaWQJCQlu YW1lc3BhY2VJZDsKKwlBbHRlcmVkVGFibGVJbmZvICpuZXdfcGFydHJlbF90YWI7CisKKwkv KiBJZiBleGlzdGluZyByZWwgaXMgdGVtcCwgaXQgbXVzdCBiZWxvbmcgdG8gdGhpcyBzZXNz aW9uICovCisJaWYgKFJFTEFUSU9OX0lTX09USEVSX1RFTVAocGFyZW50X3JlbCkpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwK KwkJCQllcnJtc2coImNhbm5vdCBjcmVhdGUgYXMgcGFydGl0aW9uIG9mIHRlbXBvcmFyeSBy ZWxhdGlvbiBvZiBhbm90aGVyIHNlc3Npb24iKSk7CisKKwkvKiBMb29rIHVwIGluaGVyaXRh bmNlIGFuY2VzdG9ycyBhbmQgZ2VuZXJhdGUgcmVsYXRpb24gc2NoZW1hLiAqLworCWNvbExp c3QgPSBnZXRBdHRyaWJ1dGVzTGlzdChwYXJlbnRfcmVsKTsKKworCS8qIENyZWF0ZSBhIHR1 cGxlIGRlc2NyaXB0b3IgZnJvbSB0aGUgcmVsYXRpb24gc2NoZW1hLiAqLworCWRlc2NyaXB0 b3IgPSBCdWlsZERlc2NGb3JSZWxhdGlvbihjb2xMaXN0KTsKKworCS8qIExvb2sgdXAgdGhl IGFjY2VzcyBtZXRob2QgZm9yIG5ldyByZWxhdGlvbi4gKi8KKwlyZWxhbUlkID0gKHBhcmVu dF9yZWwtPnJkX3JlbC0+cmVsYW0gIT0gSW52YWxpZE9pZCkgPyBwYXJlbnRfcmVsLT5yZF9y ZWwtPnJlbGFtIDogSEVBUF9UQUJMRV9BTV9PSUQ7CisKKwkvKiBMb29rIHVwIHRoZSBuYW1l c3BhY2UgaW4gd2hpY2ggd2UgYXJlIHN1cHBvc2VkIHRvIGNyZWF0ZSB0aGUgcmVsYXRpb24u ICovCisJbmFtZXNwYWNlSWQgPQorCQlSYW5nZVZhckdldEFuZENoZWNrQ3JlYXRpb25OYW1l c3BhY2UobmV3UGFydE5hbWUsIE5vTG9jaywgJmV4aXN0aW5nUmVsaWQpOworCWlmIChPaWRJ c1ZhbGlkKGV4aXN0aW5nUmVsaWQpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUo RVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCWVycm1zZygicmVsYXRpb24gXCIlc1wi IGFscmVhZHkgZXhpc3RzIiwgbmV3UGFydE5hbWUtPnJlbG5hbWUpKTsKKworCS8qCisJICog V2UgaW50ZW5kZWQgdG8gY3JlYXRlIHRoZSBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZSBwZXJz aXN0ZW5jZSBhcyB0aGUKKwkgKiBwYXJlbnQgdGFibGUsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRv IHJlY2hlY2sgYmVjYXVzZSB0aGF0IG1pZ2h0IGJlCisJICogYWZmZWN0ZWQgYnkgdGhlIHNl YXJjaF9wYXRoLiAgSWYgdGhlIHBhcmVudCBpcyBwZXJtYW5lbnQsIHNvIG11c3QgYmUKKwkg KiBhbGwgb2YgaXRzIHBhcnRpdGlvbnMuCisJICovCisJaWYgKHBhcmVudF9yZWwtPnJkX3Jl bC0+cmVscGVyc2lzdGVuY2UgIT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCAmJgorCQluZXdQYXJ0 TmFtZS0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJ CWVycm1zZygiY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSByZWxhdGlvbiBhcyBwYXJ0aXRp b24gb2YgcGVybWFuZW50IHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCSAgIFJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKHBhcmVudF9yZWwpKSk7CisKKwkvKiBQZXJtYW5lbnQgcmVscyBjYW5u b3QgYmUgcGFydGl0aW9ucyBiZWxvbmdpbmcgdG8gdGVtcG9yYXJ5IHBhcmVudCAqLworCWlm IChuZXdQYXJ0TmFtZS0+cmVscGVyc2lzdGVuY2UgIT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCAm JgorCQlwYXJlbnRfcmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RF TkNFX1RFTVApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1dST05H X09CSkVDVF9UWVBFKSwKKwkJCQllcnJtc2coImNhbm5vdCBjcmVhdGUgYSBwZXJtYW5lbnQg cmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHRlbXBvcmFyeSByZWxhdGlvbiBcIiVzXCIiLAor CQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJlbnRfcmVsKSkpOworCisJLyog Q3JlYXRlIHRoZSByZWxhdGlvbi4gKi8KKwluZXdSZWxJZCA9IGhlYXBfY3JlYXRlX3dpdGhf Y2F0YWxvZyhuZXdQYXJ0TmFtZS0+cmVsbmFtZSwKKwkJCQkJCQkJCQluYW1lc3BhY2VJZCwK KwkJCQkJCQkJCQlwYXJlbnRfcmVsLT5yZF9yZWwtPnJlbHRhYmxlc3BhY2UsCisJCQkJCQkJ CQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCUludmFs aWRPaWQsCisJCQkJCQkJCQkJb3duZXJJZCwKKwkJCQkJCQkJCQlyZWxhbUlkLAorCQkJCQkJ CQkJCWRlc2NyaXB0b3IsCisJCQkJCQkJCQkJTklMLAorCQkJCQkJCQkJCVJFTEtJTkRfUkVM QVRJT04sCisJCQkJCQkJCQkJbmV3UGFydE5hbWUtPnJlbHBlcnNpc3RlbmNlLAorCQkJCQkJ CQkJCWZhbHNlLAorCQkJCQkJCQkJCWZhbHNlLAorCQkJCQkJCQkJCU9OQ09NTUlUX05PT1As CisJCQkJCQkJCQkJKERhdHVtKSAwLAorCQkJCQkJCQkJCXRydWUsCisJCQkJCQkJCQkJYWxs b3dTeXN0ZW1UYWJsZU1vZHMsCisJCQkJCQkJCQkJdHJ1ZSwKKwkJCQkJCQkJCQlJbnZhbGlk T2lkLAorCQkJCQkJCQkJCU5VTEwpOworCisJLyoKKwkgKiBXZSBtdXN0IGJ1bXAgdGhlIGNv bW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBuZXdseS1jcmVhdGVkIHJlbGF0aW9uCisJICog dHVwbGUgdmlzaWJsZSBmb3Igb3BlbmluZy4KKwkgKi8KKwlDb21tYW5kQ291bnRlckluY3Jl bWVudCgpOworCisJLyoKKwkgKiBPcGVuIHRoZSBuZXcgcGFydGl0aW9uIHdpdGggbm8gbG9j aywgYmVjYXVzZSB3ZSBhbHJlYWR5IGhhdmUKKwkgKiBBY2Nlc3NFeGNsdXNpdmVMb2NrIHBs YWNlZCB0aGVyZSBhZnRlciBjcmVhdGlvbi4KKwkgKi8KKwluZXdSZWwgPSB0YWJsZV9vcGVu KG5ld1JlbElkLCBOb0xvY2spOworCisJLyogRmluZCBvciBjcmVhdGUgd29yayBxdWV1ZSBl bnRyeSBmb3IgbmV3bHkgY3JlYXRlZCB0YWJsZS4gKi8KKwluZXdfcGFydHJlbF90YWIgPSBB VEdldFF1ZXVlRW50cnkod3F1ZXVlLCBuZXdSZWwpOworCisJLyogQ3JlYXRlIGNvbnN0cmFp bnRzLCBkZWZhdWx0IHZhbHVlcyBhbmQgZ2VuZXJhdGVkIHZhbHVlcyAqLworCWNyZWF0ZVRh YmxlQ29uc3RyYWludHMod3F1ZXVlLCBuZXdfcGFydHJlbF90YWIsIHBhcmVudF9yZWwsIG5l d1JlbCk7CisKKwkvKgorCSAqIE5lZWQgdG8gY2FsbCBDb21tYW5kQ291bnRlckluY3JlbWVu dCwgc28gZnJlc2ggcmVsY2FjaGUgZW50cnkgaGF2ZQorCSAqIG5ld2x5IGluc3RhbGxlZCBj b25zdHJhaW50IGluZm8uCisJICovCisJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwor CXJldHVybiBuZXdSZWw7Cit9CisKKy8qCisgKiBNZXJnZVBhcnRpdGlvbnNNb3ZlUm93czog c2NhbiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZCAobWVyZ2luZ1BhcnRpdGlvbnMpCisgKiBv ZiB0aGUgcGFydGl0aW9uZWQgdGFibGUgYW5kIG1vdmUgcm93cyBpbnRvIHRoZSBuZXcgcGFy dGl0aW9uCisgKiAobmV3UGFydFJlbCkuIFdlIGFsc28gdmVydGlmeSBjaGVjayBjb25zdHJh aW50cyBhZ2FpbnN0IHRoZXNlIHJvd3MuCisgKi8KK3N0YXRpYyB2b2lkCitNZXJnZVBhcnRp dGlvbnNNb3ZlUm93cyhMaXN0ICoqd3F1ZXVlLCBMaXN0ICptZXJnaW5nUGFydGl0aW9ucywg UmVsYXRpb24gbmV3UGFydFJlbCkKK3sKKwlDb21tYW5kSWQJbXljaWQ7CisJRVN0YXRlCSAg ICplc3RhdGU7CisJQWx0ZXJlZFRhYmxlSW5mbyAqdGFiOworCUxpc3RDZWxsICAgKmx0YWI7 CisKKwkvKiBUaGUgRlNNIGlzIGVtcHR5LCBzbyBkb24ndCBib3RoZXIgdXNpbmcgaXQuICov CisJaW50CQkJdGlfb3B0aW9ucyA9IFRBQkxFX0lOU0VSVF9TS0lQX0ZTTTsKKwlCdWxrSW5z ZXJ0U3RhdGUgYmlzdGF0ZTsJLyogc3RhdGUgb2YgYnVsayBpbnNlcnRzIGZvciBwYXJ0aXRp b24gKi8KKwlUdXBsZVRhYmxlU2xvdCAqZHN0c2xvdDsKKworCS8qIEZpbmQgdGhlIHdvcmsg cXVldWUgZW50cnkgZm9yIG5ldyBwYXJ0aXRpb24gdGFibGU6IG5ld1BhcnRSZWwuICovCisJ dGFiID0gQVRHZXRRdWV1ZUVudHJ5KHdxdWV1ZSwgbmV3UGFydFJlbCk7CisKKwkvKiBHZW5l cmF0ZSB0aGUgY29uc3RyYWludCBhbmQgZGVmYXVsdCBleGVjdXRpb24gc3RhdGVzLiAqLwor CWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKKworCWJ1aWxkRXhwcmVzc2lvbkV4 ZWN1dGlvblN0YXRlcyh0YWIsIG5ld1BhcnRSZWwsIGVzdGF0ZSk7CisKKwlteWNpZCA9IEdl dEN1cnJlbnRDb21tYW5kSWQodHJ1ZSk7CisKKwkvKiBQcmVwYXJlIGEgQnVsa0luc2VydFN0 YXRlIGZvciB0YWJsZV90dXBsZV9pbnNlcnQuICovCisJYmlzdGF0ZSA9IEdldEJ1bGtJbnNl cnRTdGF0ZSgpOworCisJLyogQ3JlYXRlIG5lY2Vzc2FyeSB0dXBsZSBzbG90LiAqLworCWRz dHNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShuZXdQYXJ0UmVsLCBOVUxMKTsKKworCWZvcmVh Y2hfb2lkKG1lcmdpbmdfb2lkLCBtZXJnaW5nUGFydGl0aW9ucykKKwl7CisJCUV4cHJDb250 ZXh0ICplY29udGV4dDsKKwkJVHVwbGVUYWJsZVNsb3QgKnNyY3Nsb3Q7CisJCVR1cGxlQ29u dmVyc2lvbk1hcCAqdHVwbGVfbWFwOworCQlUYWJsZVNjYW5EZXNjIHNjYW47CisJCU1lbW9y eUNvbnRleHQgb2xkQ3h0OworCQlTbmFwc2hvdAlzbmFwc2hvdDsKKwkJUmVsYXRpb24JbWVy Z2luZ1BhcnRpdGlvbjsKKworCQllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQo ZXN0YXRlKTsKKworCQkvKgorCQkgKiBQYXJ0aXRpb24gaXMgYWxyZWFkeSBsb2NrZWQgaW4g dGhlIHRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlCisJCSAqIGZ1bmN0aW9uLgorCQkg Ki8KKwkJbWVyZ2luZ1BhcnRpdGlvbiA9IHRhYmxlX29wZW4obWVyZ2luZ19vaWQsIE5vTG9j ayk7CisKKwkJLyogQ3JlYXRlIHR1cGxlIHNsb3QgZm9yIG5ldyBwYXJ0aXRpb24uICovCisJ CXNyY3Nsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShtZXJnaW5nUGFydGl0aW9uLCBOVUxMKTsK KworCQkvKgorCQkgKiBNYXAgY29tcHV0aW5nIGZvciBtb3ZpbmcgYXR0cmlidXRlcyBvZiBt ZXJnZWQgcGFydGl0aW9uIHRvIG5ldworCQkgKiBwYXJ0aXRpb24uCisJCSAqLworCQl0dXBs ZV9tYXAgPSBjb252ZXJ0X3R1cGxlc19ieV9uYW1lKFJlbGF0aW9uR2V0RGVzY3IobWVyZ2lu Z1BhcnRpdGlvbiksCisJCQkJCQkJCQkJICAgUmVsYXRpb25HZXREZXNjcihuZXdQYXJ0UmVs KSk7CisKKwkJLyogU2NhbiB0aHJvdWdoIHRoZSByb3dzLiAqLworCQlzbmFwc2hvdCA9IFJl Z2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CisJCXNjYW4gPSB0YWJsZV9i ZWdpbnNjYW4obWVyZ2luZ1BhcnRpdGlvbiwgc25hcHNob3QsIDAsIE5VTEwpOworCisJCS8q CisJCSAqIFN3aXRjaCB0byBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0 IGZvciBlYWNoIHR1cGxlCisJCSAqIHByb2R1Y2VkLCBzbyB3ZSBkb24ndCBsZWFrIG1lbW9y eS4KKwkJICovCisJCW9sZEN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhHZXRQZXJUdXBs ZU1lbW9yeUNvbnRleHQoZXN0YXRlKSk7CisKKwkJd2hpbGUgKHRhYmxlX3NjYW5fZ2V0bmV4 dHNsb3Qoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHNyY3Nsb3QpKQorCQl7CisJCQlU dXBsZVRhYmxlU2xvdCAqaW5zZXJ0c2xvdDsKKworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KTsKKworCQkJaWYgKHR1cGxlX21hcCkKKwkJCXsKKwkJCQkvKiBOZWVkIHRvIHVzZSBtYXAg dG8gY29weSBhdHRyaWJ1dGVzLiAqLworCQkJCWluc2VydHNsb3QgPSBleGVjdXRlX2F0dHJf bWFwX3Nsb3QodHVwbGVfbWFwLT5hdHRyTWFwLCBzcmNzbG90LCBkc3RzbG90KTsKKwkJCX0K KwkJCWVsc2UKKwkJCXsKKwkJCQlzbG90X2dldGFsbGF0dHJzKHNyY3Nsb3QpOworCisJCQkJ LyogQ29weSBhdHRyaWJ1dGVzIGRpcmVjdGx5LiAqLworCQkJCWluc2VydHNsb3QgPSBkc3Rz bG90OworCisJCQkJRXhlY0NsZWFyVHVwbGUoaW5zZXJ0c2xvdCk7CisKKwkJCQltZW1jcHko aW5zZXJ0c2xvdC0+dHRzX3ZhbHVlcywgc3Jjc2xvdC0+dHRzX3ZhbHVlcywKKwkJCQkJICAg c2l6ZW9mKERhdHVtKSAqIHNyY3Nsb3QtPnR0c19udmFsaWQpOworCQkJCW1lbWNweShpbnNl cnRzbG90LT50dHNfaXNudWxsLCBzcmNzbG90LT50dHNfaXNudWxsLAorCQkJCQkgICBzaXpl b2YoYm9vbCkgKiBzcmNzbG90LT50dHNfbnZhbGlkKTsKKworCQkJCUV4ZWNTdG9yZVZpcnR1 YWxUdXBsZShpbnNlcnRzbG90KTsKKwkJCX0KKworCQkJLyoKKwkJCSAqIENvbnN0cmFpbnRz IGFuZCBHRU5FUkFURUQgZXhwcmVzc2lvbnMgbWlnaHQgcmVmZXJlbmNlIHRoZQorCQkJICog dGFibGVvaWQgY29sdW1uLCBzbyBmaWxsIHR0c190YWJsZU9pZCB3aXRoIHRoZSBkZXNpcmVk IHZhbHVlLgorCQkJICogKFdlIG11c3QgZG8gdGhpcyBlYWNoIHRpbWUsIGJlY2F1c2UgaXQg Z2V0cyBvdmVyd3JpdHRlbiB3aXRoCisJCQkgKiBuZXdyZWwncyBPSUQgZHVyaW5nIHN0b3Jp bmcuKQorCQkJICovCisJCQlpbnNlcnRzbG90LT50dHNfdGFibGVPaWQgPSBSZWxhdGlvbkdl dFJlbGlkKG5ld1BhcnRSZWwpOworCisJCQkvKgorCQkJICogTm93LCBldmFsdWF0ZSBhbnkg Z2VuZXJhdGVkIGV4cHJlc3Npb25zIHdob3NlIGlucHV0cyBjb21lIGZyb20KKwkJCSAqIHRo ZSBuZXcgdHVwbGUuICBXZSBhc3N1bWUgdGhlc2UgY29sdW1ucyB3b24ndCByZWZlcmVuY2Ug ZWFjaAorCQkJICogb3RoZXIsIHNvIHRoYXQgdGhlcmUncyBubyBvcmRlcmluZyBkZXBlbmRl bmN5LgorCQkJICovCisJCQlldmFsdWF0ZUdlbmVyYXRlZEV4cHJlc3Npb25zQW5kQ2hlY2tD b25zdHJhaW50cyh0YWIsIG5ld1BhcnRSZWwsCisJCQkJCQkJCQkJCQkJCQlpbnNlcnRzbG90 LCBlY29udGV4dCk7CisKKwkJCS8qIFdyaXRlIHRoZSB0dXBsZSBvdXQgdG8gdGhlIG5ldyBy ZWxhdGlvbi4gKi8KKwkJCXRhYmxlX3R1cGxlX2luc2VydChuZXdQYXJ0UmVsLCBpbnNlcnRz bG90LCBteWNpZCwKKwkJCQkJCQkgICB0aV9vcHRpb25zLCBiaXN0YXRlKTsKKworCQkJUmVz ZXRFeHByQ29udGV4dChlY29udGV4dCk7CisJCX0KKworCQlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkQ3h0KTsKKwkJdGFibGVfZW5kc2NhbihzY2FuKTsKKwkJVW5yZWdpc3RlclNuYXBz aG90KHNuYXBzaG90KTsKKworCQlpZiAodHVwbGVfbWFwKQorCQkJZnJlZV9jb252ZXJzaW9u X21hcCh0dXBsZV9tYXApOworCisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc3Jj c2xvdCk7CisJCXRhYmxlX2Nsb3NlKG1lcmdpbmdQYXJ0aXRpb24sIE5vTG9jayk7CisJfQor CisJRnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRlKTsKKwlFeGVjRHJvcFNpbmdsZVR1cGxlVGFi bGVTbG90KGRzdHNsb3QpOworCUZyZWVCdWxrSW5zZXJ0U3RhdGUoYmlzdGF0ZSk7CisKKwl0 YWJsZV9maW5pc2hfYnVsa19pbnNlcnQobmV3UGFydFJlbCwgdGlfb3B0aW9ucyk7CisKKwkv KgorCSAqIFdlIGRvbid0IG5lZWQgcHJvY2VzcyB0aGlzIG5ld1BhcnRSZWwgc2luY2Ugd2Ug YWxyZWFkeSBwcm9jZXNzZWQgaW4KKwkgKiBoZXJlLCBzbyBkZWxldGUgdGhlIEFMVEVSIFRB QkxFIHF1ZXVlIG9mIGl0LgorCSAqLworCWZvcmVhY2gobHRhYiwgKndxdWV1ZSkKKwl7CisJ CXRhYiA9IChBbHRlcmVkVGFibGVJbmZvICopIGxmaXJzdChsdGFiKTsKKwkJaWYgKHRhYi0+ cmVsaWQgPT0gUmVsYXRpb25HZXRSZWxpZChuZXdQYXJ0UmVsKSkKKwkJCSp3cXVldWUgPSBs aXN0X2RlbGV0ZV9jZWxsKCp3cXVldWUsIGx0YWIpOworCX0KK30KKworLyoKKyAqIGRldGFj aFBhcnRpdGlvblRhYmxlOiBkZXRhY2ggcGFydGl0aW9uICJjaGlsZF9yZWwiIGZyb20gcGFy dGl0aW9uZWQgdGFibGUKKyAqICJwYXJlbnRfcmVsIiB3aXRoIGRlZmF1bHQgcGFydGl0aW9u IGlkZW50aWZpZXIgImRlZmF1bHRQYXJ0T2lkIgorICovCitzdGF0aWMgdm9pZAorZGV0YWNo UGFydGl0aW9uVGFibGUoUmVsYXRpb24gcGFyZW50X3JlbCwgUmVsYXRpb24gY2hpbGRfcmVs LCBPaWQgZGVmYXVsdFBhcnRPaWQpCit7CisJLyogUmVtb3ZlIHRoZSBwZ19pbmhlcml0cyBy b3cgZmlyc3QuICovCisJUmVtb3ZlSW5oZXJpdGFuY2UoY2hpbGRfcmVsLCBwYXJlbnRfcmVs LCBmYWxzZSk7CisKKwkvKgorCSAqIERldGFjaGluZyB0aGUgcGFydGl0aW9uIG1pZ2h0IGlu dm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKKwkgKiBoYXZlIGEgdmFs aWQgc25hcHNob3QuCisJICovCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9u U25hcHNob3QoKSk7CisKKwkvKiBEbyB0aGUgZmluYWwgcGFydCBvZiBkZXRhY2hpbmcuICov CisJRGV0YWNoUGFydGl0aW9uRmluYWxpemUocGFyZW50X3JlbCwgY2hpbGRfcmVsLCBmYWxz ZSwgZGVmYXVsdFBhcnRPaWQpOworCisJUG9wQWN0aXZlU25hcHNob3QoKTsKK30KKworLyoK KyAqIEFMVEVSIFRBQkxFIDxuYW1lPiBNRVJHRSBQQVJUSVRJT05TIDxwYXJ0aXRpb24tbGlz dD4gSU5UTyA8cGFydGl0aW9uLW5hbWU+CisgKi8KK3N0YXRpYyB2b2lkCitBVEV4ZWNNZXJn ZVBhcnRpdGlvbnMoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxh dGlvbiByZWwsCisJCQkJCSAgUGFydGl0aW9uQ21kICpjbWQsIEFsdGVyVGFibGVVdGlsaXR5 Q29udGV4dCAqY29udGV4dCkKK3sKKwlSZWxhdGlvbgluZXdQYXJ0UmVsOworCUxpc3QJICAg Km1lcmdpbmdQYXJ0aXRpb25zID0gTklMOworCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOworCU9p ZAkJCWV4aXN0aW5nUmVsaWQ7CisJT2lkCQkJb3duZXJJZCA9IEludmFsaWRPaWQ7CisJT2lk CQkJc2F2ZV91c2VyaWQ7CisJaW50CQkJc2F2ZV9zZWNfY29udGV4dDsKKwlpbnQJCQlzYXZl X25lc3RsZXZlbDsKKworCS8qCisJICogQ2hlY2sgb3duZXJzaGlwIG9mIG1lcmdlZCBwYXJ0 aXRpb25zIOKAlCBwYXJ0aXRpb25zIHdpdGggZGlmZmVyZW50CisJICogb3duZXJzIGNhbm5v dCBiZSBtZXJnZWQuIEFsc28sIGNvbGxlY3QgdGhlIE9JRHMgb2YgdGhlc2UgcGFydGl0aW9u cworCSAqIGR1cmluZyB0aGUgY2hlY2suCisJICovCisJZm9yZWFjaF9ub2RlKFJhbmdlVmFy LCBuYW1lLCBjbWQtPnBhcnRsaXN0KQorCXsKKwkJUmVsYXRpb24JbWVyZ2luZ1BhcnRpdGlv bjsKKworCQkvKgorCQkgKiBXZSBhcmUgZ29pbmcgdG8gZGV0YWNoIGFuZCByZW1vdmUgdGhp cyBwYXJ0aXRpb24uICBXZSBhbHJlYWR5IHRvb2sKKwkJICogQWNjZXNzRXhjbHVzaXZlTG9j ayBsb2NrIG9uIHRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlLCBzbyBoZXJlLAorCQkg KiBOb0xvY2sgaXMgZmluZS4KKwkJICovCisJCW1lcmdpbmdQYXJ0aXRpb24gPSB0YWJsZV9v cGVucnZfZXh0ZW5kZWQobmFtZSwgTm9Mb2NrLCBmYWxzZSk7CisJCUFzc2VydChDaGVja1Jl bGF0aW9uTG9ja2VkQnlNZShtZXJnaW5nUGFydGl0aW9uLCBBY2Nlc3NFeGNsdXNpdmVMb2Nr LCBmYWxzZSkpOworCisJCWlmIChPaWRJc1ZhbGlkKG93bmVySWQpKQorCQl7CisJCQkvKiBE byB0aGUgcGFydGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZmZXJlbnQgb3duZXJzPyAq LworCQkJaWYgKG93bmVySWQgIT0gbWVyZ2luZ1BhcnRpdGlvbi0+cmRfcmVsLT5yZWxvd25l cikKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVf Tk9UX1NVUFBPUlRFRCksCisJCQkJCQllcnJtc2coInBhcnRpdGlvbnMgYmVpbmcgbWVyZ2Vk IGhhdmUgZGlmZmVyZW50IG93bmVycyIpKTsKKwkJfQorCQllbHNlCisJCQlvd25lcklkID0g bWVyZ2luZ1BhcnRpdGlvbi0+cmRfcmVsLT5yZWxvd25lcjsKKworCQkvKiBTdG9yZSBhIG5l eHQgbWVyZ2luZyBwYXJ0aXRpb24gaW50byB0aGUgbGlzdC4gKi8KKwkJbWVyZ2luZ1BhcnRp dGlvbnMgPSBsYXBwZW5kX29pZChtZXJnaW5nUGFydGl0aW9ucywKKwkJCQkJCQkJCQlSZWxh dGlvbkdldFJlbGlkKG1lcmdpbmdQYXJ0aXRpb24pKTsKKworCQl0YWJsZV9jbG9zZShtZXJn aW5nUGFydGl0aW9uLCBOb0xvY2spOworCX0KKworCS8qIExvb2sgdXAgZXhpc3RpbmcgcmVs YXRpb24gYnkgbmV3IHBhcnRpdGlvbiBuYW1lLiAqLworCVJhbmdlVmFyR2V0QW5kQ2hlY2tD cmVhdGlvbk5hbWVzcGFjZShjbWQtPm5hbWUsIE5vTG9jaywgJmV4aXN0aW5nUmVsaWQpOwor CisJLyoKKwkgKiBDaGVjayBpZiB0aGlzIG5hbWUgaXMgYWxyZWFkeSB0YWtlbi4gIFRoaXMg aGVscHMgdXMgdG8gZGV0ZWN0IHRoZQorCSAqIHNpdHVhdGlvbiB3aGVuIG9uZSBvZiB0aGUg bWVyZ2luZyBwYXJ0aXRpb25zIGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZQorCSAqIG5ldyBw YXJ0aXRpb24uICBPdGhlcndpc2UsIHRoaXMgd291bGQgZmFpbCBsYXRlciBvbiBhbnl3YXkg YnV0IGNhdGNoaW5nCisJICogdGhpcyBoZXJlIGFsbG93cyB1cyB0byBlbWl0IGEgbmljZXIg ZXJyb3IgbWVzc2FnZS4KKwkgKi8KKwlpZiAoT2lkSXNWYWxpZChleGlzdGluZ1JlbGlkKSkK Kwl7CisJCU9pZAkJCW5ld1BhcnRpdGlvbk9pZCA9IEludmFsaWRPaWQ7CisKKwkJZm9yZWFj aF9vaWQobWVyZ2luZ1BhcnRpdGlvbk9pZCwgbWVyZ2luZ1BhcnRpdGlvbnMpCisJCXsKKwkJ CWlmIChtZXJnaW5nUGFydGl0aW9uT2lkID09IGV4aXN0aW5nUmVsaWQpCisJCQl7CisJCQkJ bmV3UGFydGl0aW9uT2lkID0gbWVyZ2luZ1BhcnRpdGlvbk9pZDsKKwkJCQlicmVhazsKKwkJ CX0KKwkJfQorCisJCWlmIChPaWRJc1ZhbGlkKG5ld1BhcnRpdGlvbk9pZCkpCisJCXsKKwkJ CS8qCisJCQkgKiBUaGUgbmV3IHBhcnRpdGlvbiBoYXMgdGhlIHNhbWUgbmFtZSBhcyBvbmUg b2YgbWVyZ2luZworCQkJICogcGFydGl0aW9ucy4KKwkJCSAqLworCQkJY2hhcgkJdG1wUmVs TmFtZVtOQU1FREFUQUxFTl07CisKKwkJCS8qIEdlbmVyYXRlIHRlbXBvcmFyeSBuYW1lLiAq LworCQkJc3ByaW50Zih0bXBSZWxOYW1lLCAibWVyZ2UtJXUtJVgtdG1wIiwgUmVsYXRpb25H ZXRSZWxpZChyZWwpLCBNeVByb2NQaWQpOworCisJCQkvKgorCQkJICogUmVuYW1lIHRoZSBl eGlzdGluZyBwYXJ0aXRpb24gd2l0aCBhIHRlbXBvcmFyeSBuYW1lLCBsZWF2aW5nIGl0CisJ CQkgKiBmcmVlIGZvciB0aGUgbmV3IHBhcnRpdGlvbi4gIFdlIGRvbid0IG5lZWQgdG8gY2Fy ZSBhYm91dCB0aGlzCisJCQkgKiBpbiB0aGUgZnV0dXJlIGJlY2F1c2Ugd2UncmUgZ29pbmcg dG8gZXZlbnR1YWxseSBkcm9wIHRoZQorCQkJICogZXhpc3RpbmcgcGFydGl0aW9uIGFueXdh eS4KKwkJCSAqLworCQkJUmVuYW1lUmVsYXRpb25JbnRlcm5hbChuZXdQYXJ0aXRpb25PaWQs IHRtcFJlbE5hbWUsIHRydWUsIGZhbHNlKTsKKworCQkJLyoKKwkJCSAqIFdlIG11c3QgYnVt cCB0aGUgY29tbWFuZCBjb3VudGVyIHRvIG1ha2UgdGhlIG5ldyBwYXJ0aXRpb24KKwkJCSAq IHR1cGxlIHZpc2libGUgZm9yIHJlbmFtZS4KKwkJCSAqLworCQkJQ29tbWFuZENvdW50ZXJJ bmNyZW1lbnQoKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CWVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQllcnJtc2coInJlbGF0 aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsIGNtZC0+bmFtZS0+cmVsbmFtZSkpOworCQl9 CisJfQorCisJZGVmYXVsdFBhcnRPaWQgPQorCQlnZXRfZGVmYXVsdF9vaWRfZnJvbV9wYXJ0 ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocmVsLCB0cnVlKSk7CisKKwkvKiBEZXRh Y2ggYWxsIG1lcmdlZCBwYXJ0aXRpb25zICovCisJZm9yZWFjaF9vaWQobWVyZ2luZ1BhcnRp dGlvbk9pZCwgbWVyZ2luZ1BhcnRpdGlvbnMpCisJeworCQlSZWxhdGlvbgljaGlsZF9yZWw7 CisKKwkJY2hpbGRfcmVsID0gdGFibGVfb3BlbihtZXJnaW5nUGFydGl0aW9uT2lkLCBOb0xv Y2spOworCisJCWRldGFjaFBhcnRpdGlvblRhYmxlKHJlbCwgY2hpbGRfcmVsLCBkZWZhdWx0 UGFydE9pZCk7CisKKwkJdGFibGVfY2xvc2UoY2hpbGRfcmVsLCBOb0xvY2spOworCX0KKwor CS8qCisJICogUGVyZm9ybSBhIHByZWxpbWluYXJ5IGNoZWNrIHRvIGRldGVybWluZSB3aGV0 aGVyIGl0J3Mgc2FmZSB0byBkcm9wIGFsbAorCSAqIG1lcmdpbmcgcGFydGl0aW9ucyBiZWZv cmUgd2UgYWN0dWFsbHkgZG8gc28gbGF0ZXIuIEFmdGVyIG1lcmdpbmcgcm93cworCSAqIGlu dG8gdGhlIG5ldyBwYXJ0aXRpb25zIHZpYSBNZXJnZVBhcnRpdGlvbnNNb3ZlUm93cywgYWxs IG9sZCBwYXJ0aXRpb25zCisJICogbmVlZCBiZSBkcm9wcGVkLiBIb3dldmVyLCBzaW5jZSB0 aGUgZHJvcCBiZWhhdmlvciBpcyBEUk9QX1JFU1RSSUNUIGFuZAorCSAqIHRoZSBtZXJnZSBw cm9jZXNzIChNZXJnZVBhcnRpdGlvbnNNb3ZlUm93cykgY2FuIGJlIHRpbWUtY29uc3VtaW5n LAorCSAqIHBlcmZvcm1pbmcgYW4gZWFybHkgY2hlY2sgb24gdGhlIGRyb3AgZWxpZ2liaWxp dHkgb2Ygb2xkIHBhcnRpdGlvbnMgaXMKKwkgKiBwcmVmZXJhYmxlLgorCSAqLworCWZvcmVh Y2hfb2lkKG1lcmdpbmdQYXJ0aXRpb25PaWQsIG1lcmdpbmdQYXJ0aXRpb25zKQorCXsKKwkJ T2JqZWN0QWRkcmVzcyBvYmplY3Q7CisKKwkJLyogR2V0IG9pZCBvZiB0aGUgbGF0ZXIgdG8g YmUgZHJvcHBlZCByZWxhdGlvbiAqLworCQlvYmplY3Qub2JqZWN0SWQgPSBtZXJnaW5nUGFy dGl0aW9uT2lkOworCQlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJ b2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKworCQlwZXJmb3JtRGVsZXRpb25DaGVjaygmb2Jq ZWN0LCBEUk9QX1JFU1RSSUNULCBQRVJGT1JNX0RFTEVUSU9OX0lOVEVSTkFMKTsKKwl9CisK KwkvKiBDcmVhdGUgdGFibGUgZm9yIG5ldyBwYXJ0aXRpb24sIHVzZSBwYXJ0aXRpb25lZCB0 YWJsZSBhcyBtb2RlbC4gKi8KKwlBc3NlcnQoT2lkSXNWYWxpZChvd25lcklkKSk7CisJbmV3 UGFydFJlbCA9IGNyZWF0ZVBhcnRpdGlvblRhYmxlKHdxdWV1ZSwgY21kLT5uYW1lLCByZWws IG93bmVySWQpOworCisJLyoKKwkgKiBTd2l0Y2ggdG8gdGhlIHRhYmxlIG93bmVyJ3MgdXNl cmlkLCBzbyB0aGF0IGFueSBpbmRleCBmdW5jdGlvbnMgYXJlIHJ1bgorCSAqIGFzIHRoYXQg dXNlci4gIEFsc28gbG9jayBkb3duIHNlY3VyaXR5LXJlc3RyaWN0ZWQgb3BlcmF0aW9ucyBh bmQKKwkgKiBhcnJhbmdlIHRvIG1ha2UgR1VDIHZhcmlhYmxlIGNoYW5nZXMgbG9jYWwgdG8g dGhpcyBjb21tYW5kLgorCSAqCisJICogTmVlZCB0byBkbyBpdCBhZnRlciBkZXRlcm1pbmUg bmFtZXNwYWNlIGluIGNyZWF0ZVBhcnRpdGlvblRhYmxlIGNhbGwuCisJICovCisJR2V0VXNl cklkQW5kU2VjQ29udGV4dCgmc2F2ZV91c2VyaWQsICZzYXZlX3NlY19jb250ZXh0KTsKKwlT ZXRVc2VySWRBbmRTZWNDb250ZXh0KG93bmVySWQsCisJCQkJCQkgICBzYXZlX3NlY19jb250 ZXh0IHwgU0VDVVJJVFlfUkVTVFJJQ1RFRF9PUEVSQVRJT04pOworCXNhdmVfbmVzdGxldmVs ID0gTmV3R1VDTmVzdExldmVsKCk7CisJUmVzdHJpY3RTZWFyY2hQYXRoKCk7CisKKwkvKiBD b3B5IGRhdGEgZnJvbSBtZXJnZWQgcGFydGl0aW9ucyB0byBuZXcgcGFydGl0aW9uLiAqLwor CU1lcmdlUGFydGl0aW9uc01vdmVSb3dzKHdxdWV1ZSwgbWVyZ2luZ1BhcnRpdGlvbnMsIG5l d1BhcnRSZWwpOworCisJLyogRHJvcCB0aGUgY3VycmVudCBwYXJ0aXRpb25zIGJlZm9yZSBh dHRhY2hpbmcgdGhlIG5ldyBvbmUuICovCisJZm9yZWFjaF9vaWQobWVyZ2luZ1BhcnRpdGlv bk9pZCwgbWVyZ2luZ1BhcnRpdGlvbnMpCisJeworCQlPYmplY3RBZGRyZXNzIG9iamVjdDsK KworCQlvYmplY3Qub2JqZWN0SWQgPSBtZXJnaW5nUGFydGl0aW9uT2lkOworCQlvYmplY3Qu Y2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJb2JqZWN0Lm9iamVjdFN1YklkID0g MDsKKworCQlwZXJmb3JtRGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwgMCk7CisJ fQorCisJbGlzdF9mcmVlKG1lcmdpbmdQYXJ0aXRpb25zKTsKKworCS8qCisJICogQXR0YWNo IGEgbmV3IHBhcnRpdGlvbiB0byB0aGUgcGFydGl0aW9uZWQgdGFibGUuIHdxdWV1ZSA9IE5V TEw6CisJICogdmVyaWZpY2F0aW9uIGZvciBlYWNoIGNsb25lZCBjb25zdHJhaW50IGlzIG5v dCBuZWVkZWQuCisJICovCisJYXR0YWNoUGFydGl0aW9uVGFibGUoTlVMTCwgcmVsLCBuZXdQ YXJ0UmVsLCBjbWQtPmJvdW5kKTsKKworCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0 LiAqLworCXRhYmxlX2Nsb3NlKG5ld1BhcnRSZWwsIE5vTG9jayk7CisKKwkvKiBSb2xsIGJh Y2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5IGluZGV4IGZ1bmN0aW9ucy4gKi8KKwlB dEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsKKworCS8qIFJlc3RvcmUgdXNl cmlkIGFuZCBzZWN1cml0eSBjb250ZXh0LiAqLworCVNldFVzZXJJZEFuZFNlY0NvbnRleHQo c2F2ZV91c2VyaWQsIHNhdmVfc2VjX2NvbnRleHQpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXgg ZGI0MzAzNGI5ZC4uNmUzYjg5NWY3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC03NTUsNyArNzU1 LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5h bWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlPUkRFUiBPUkRJTkFMSVRZIE9U SEVSUyBPVVRfUCBPVVRFUl9QCiAJT1ZFUiBPVkVSTEFQUyBPVkVSTEFZIE9WRVJSSURJTkcg T1dORUQgT1dORVIKIAotCVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJU SVRJT04gUEFTU0lORyBQQVNTV09SRCBQQVRICisJUEFSQUxMRUwgUEFSQU1FVEVSIFBBUlNF UiBQQVJUSUFMIFBBUlRJVElPTiBQQVJUSVRJT05TIFBBU1NJTkcgUEFTU1dPUkQgUEFUSAog CVBFUklPRCBQTEFDSU5HIFBMQU4gUExBTlMgUE9MSUNZCiAJUE9TSVRJT04gUFJFQ0VESU5H IFBSRUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKIAlQUklPUiBQ UklWSUxFR0VTIFBST0NFRFVSQUwgUFJPQ0VEVVJFIFBST0NFRFVSRVMgUFJPR1JBTSBQVUJM SUNBVElPTgpAQCAtMjM2Nyw2ICsyMzY3LDcgQEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+ c3VidHlwZSA9IEFUX0F0dGFjaFBhcnRpdGlvbjsKIAkJCQkJY21kLT5uYW1lID0gJDM7CiAJ CQkJCWNtZC0+Ym91bmQgPSAkNDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5JTDsKIAkJCQkJ Y21kLT5jb25jdXJyZW50ID0gZmFsc2U7CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsK IApAQCAtMjM4MSw2ICsyMzgyLDcgQEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+c3VidHlw ZSA9IEFUX0RldGFjaFBhcnRpdGlvbjsKIAkJCQkJY21kLT5uYW1lID0gJDM7CiAJCQkJCWNt ZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBhcnRsaXN0ID0gTklMOwogCQkJCQljbWQt PmNvbmN1cnJlbnQgPSAkNDsKIAkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOwogCkBAIC0y Mzk0LDYgKzIzOTYsMjEgQEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+c3VidHlwZSA9IEFU X0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOwogCQkJCQljbWQtPm5hbWUgPSAkMzsKIAkJCQkJ Y21kLT5ib3VuZCA9IE5VTEw7CisJCQkJCWNtZC0+cGFydGxpc3QgPSBOSUw7CisJCQkJCWNt ZC0+Y29uY3VycmVudCA9IGZhbHNlOworCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CisJ CQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4g TUVSR0UgUEFSVElUSU9OUyAoKSBJTlRPIDxwYXJ0aXRpb25fbmFtZT4gKi8KKwkJCXwgTUVS R0UgUEFSVElUSU9OUyAnKCcgcXVhbGlmaWVkX25hbWVfbGlzdCAnKScgSU5UTyBxdWFsaWZp ZWRfbmFtZQorCQkJCXsKKwkJCQkJQWx0ZXJUYWJsZUNtZCAqbiA9IG1ha2VOb2RlKEFsdGVy VGFibGVDbWQpOworCQkJCQlQYXJ0aXRpb25DbWQgKmNtZCA9IG1ha2VOb2RlKFBhcnRpdGlv bkNtZCk7CisKKwkJCQkJbi0+c3VidHlwZSA9IEFUX01lcmdlUGFydGl0aW9uczsKKwkJCQkJ Y21kLT5uYW1lID0gJDc7CisJCQkJCWNtZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBh cnRsaXN0ID0gJDQ7CiAJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZhbHNlOwogCQkJCQluLT5k ZWYgPSAoTm9kZSAqKSBjbWQ7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKQEAgLTI0MTAsNiAr MjQyNyw3IEBAIGluZGV4X3BhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9B dHRhY2hQYXJ0aXRpb247CiAJCQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJvdW5k ID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5JTDsKIAkJCQkJY21kLT5jb25jdXJy ZW50ID0gZmFsc2U7CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKIApAQCAtMTc5Mjks NiArMTc5NDcsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFBBUlNFUgogCQkJfCBQ QVJUSUFMCiAJCQl8IFBBUlRJVElPTgorCQkJfCBQQVJUSVRJT05TCiAJCQl8IFBBU1NJTkcK IAkJCXwgUEFTU1dPUkQKIAkJCXwgUEFUSApAQCAtMTg1NTYsNiArMTg1NzUsNyBAQCBiYXJl X2xhYmVsX2tleXdvcmQ6CiAJCQl8IFBBUlNFUgogCQkJfCBQQVJUSUFMCiAJCQl8IFBBUlRJ VElPTgorCQkJfCBQQVJUSVRJT05TCiAJCQl8IFBBU1NJTkcKIAkJCXwgUEFTU1dPUkQKIAkJ CXwgUEFUSApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQu YyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKaW5kZXggYWZjZjU0MTY5 Yy4uMzMzYzUxZDkzMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0 aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCkBAIC0z Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9oZWFwLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9pbmRleC5oIgogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCisjaW5jbHVk ZSAiY2F0YWxvZy9wYXJ0aXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X2NvbnN0cmFpbnQuaCIKQEAgLTU4LDYgKzU5LDggQEAKICNpbmNsdWRlICJwYXJzZXIvcGFy c2VfdHlwZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV91dGlsY21kLmgiCiAjaW5jbHVk ZSAicGFyc2VyL3BhcnNlci5oIgorI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0ZGVzYy5o IgorI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgiCiAjaW5jbHVkZSAicmV3 cml0ZS9yZXdyaXRlTWFuaXAuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRl ICJ1dGlscy9idWlsdGlucy5oIgpAQCAtMzUxMCw2ICszNTEzLDEzNSBAQCB0cmFuc2Zvcm1S dWxlU3RtdChSdWxlU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiB9CiAK IAorLyoKKyAqIGNoZWNrUGFydGl0aW9uCisgKiBDaGVjayB3aGV0aGVyIHBhcnRSZWxPaWQg aXMgYSBsZWFmIHBhcnRpdGlvbiBvZiB0aGUgcGFyZW50IHRhYmxlIChyZWwpLgorICovCitz dGF0aWMgdm9pZAorY2hlY2tQYXJ0aXRpb24oUmVsYXRpb24gcmVsLCBPaWQgcGFydFJlbE9p ZCkKK3sKKwlSZWxhdGlvbglwYXJ0UmVsOworCisJcGFydFJlbCA9IHRhYmxlX29wZW4ocGFy dFJlbE9pZCwgTm9Mb2NrKTsKKworCWlmIChwYXJ0UmVsLT5yZF9yZWwtPnJlbGtpbmQgIT0g UkVMS0lORF9SRUxBVElPTikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNP REVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHRh YmxlIiwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocGFydFJlbCkpLAorCQkJCWVycmhpbnQo IkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRp dGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucyIpKTsKKworCWlmICghcGFydFJlbC0+ cmRfcmVsLT5yZWxpc3BhcnRpdGlvbikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2Rl KEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCWVycm1zZygiXCIlc1wiIGlzIG5v dCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSBcIiVzXCIiLAorCQkJCQkgICBS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJ0UmVsKSwgUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUocmVsKSksCisJCQkJZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElP TlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25z IikpOworCisJaWYgKGdldF9wYXJ0aXRpb25fcGFyZW50KHBhcnRSZWxPaWQsIGZhbHNlKSAh PSBSZWxhdGlvbkdldFJlbGlkKHJlbCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29k ZShFUlJDT0RFX1VOREVGSU5FRF9UQUJMRSksCisJCQkJZXJybXNnKCJyZWxhdGlvbiBcIiVz XCIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCSAgIFJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcnRSZWwpLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShyZWwpKSwKKwkJCQllcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9O UyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMi KSk7CisKKwl0YWJsZV9jbG9zZShwYXJ0UmVsLCBOb0xvY2spOworfQorCisvKgorICogdHJh bnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UKKyAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJM RSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjb21tYW5kCisgKgorICogRG9lcyBzaW1wbGUgY2hl Y2tzIGZvciBtZXJnZWQgcGFydGl0aW9ucy4gQ2FsY3VsYXRlcyBib3VuZCBvZiByZXN1bHRp bmcKKyAqIHBhcnRpdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK3RyYW5zZm9ybVBhcnRpdGlv bkNtZEZvck1lcmdlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqcGFy dGNtZCkKK3sKKwlPaWQJCQlkZWZhdWx0UGFydE9pZDsKKwlPaWQJCQlwYXJ0T2lkOworCVJl bGF0aW9uCXBhcmVudCA9IGN4dC0+cmVsOworCVBhcnRpdGlvbktleSBrZXk7CisJY2hhcgkJ c3RyYXRlZ3k7CisJTGlzdENlbGwgICAqbGlzdHB0ciwKKwkJCSAgICpsaXN0cHRyMjsKKwli b29sCQlpc0RlZmF1bHRQYXJ0ID0gZmFsc2U7CisJTGlzdAkgICAqcGFydE9pZHMgPSBOSUw7 CisKKwlrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCXN0cmF0ZWd5 ID0gZ2V0X3BhcnRpdGlvbl9zdHJhdGVneShrZXkpOworCisJaWYgKHN0cmF0ZWd5ID09IFBB UlRJVElPTl9TVFJBVEVHWV9IQVNIKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCWVycm1zZygicGFydGl0aW9u IG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIG1lcmdlZCIpKTsKKworCS8q IERvZXMgcGFydGl0aW9uZWQgdGFibGUgKHBhcmVudCkgaGF2ZSBhIGRlZmF1bHQgcGFydGl0 aW9uPyAqLworCWRlZmF1bHRQYXJ0T2lkID0gZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRl c2MoUmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHBhcmVudCwgdHJ1ZSkpOworCisJZm9yZWFj aChsaXN0cHRyLCBwYXJ0Y21kLT5wYXJ0bGlzdCkKKwl7CisJCVJhbmdlVmFyICAgKm5hbWUg PSAoUmFuZ2VWYXIgKikgbGZpcnN0KGxpc3RwdHIpOworCisJCS8qIFBhcnRpdGlvbnMgaW4g dGhlIGxpc3Qgc2hvdWxkIGhhdmUgZGlmZmVyZW50IG5hbWVzLiAqLworCQlmb3JfZWFjaF9j ZWxsKGxpc3RwdHIyLCBwYXJ0Y21kLT5wYXJ0bGlzdCwgbG5leHQocGFydGNtZC0+cGFydGxp c3QsIGxpc3RwdHIpKQorCQl7CisJCQlSYW5nZVZhciAgICpuYW1lMiA9IChSYW5nZVZhciAq KSBsZmlyc3QobGlzdHB0cjIpOworCisJCQlpZiAoZXF1YWwobmFtZSwgbmFtZTIpKQorCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxF KSwKKwkJCQkJCWVycm1zZygicGFydGl0aW9uIHdpdGggbmFtZSBcIiVzXCIgaXMgYWxyZWFk eSB1c2VkIiwgbmFtZS0+cmVsbmFtZSksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3h0 LT5wc3RhdGUsIG5hbWUyLT5sb2NhdGlvbikpOworCQl9CisKKwkJLyoKKwkJICogU2VhcmNo IERFRkFVTFQgcGFydGl0aW9uIGluIHRoZSBsaXN0LiBPcGVuIGFuZCBsb2NrIHBhcnRpdGlv bnMKKwkJICogYmVmb3JlIGNhbGN1bGF0aW5nIHRoZSBib3VuZGFyeSBmb3IgcmVzdWx0aW5n IHBhcnRpdGlvbiwgd2UgYWxzbworCQkgKiBjaGVjayBmb3Igb3duZXJzaGlwIGFsb25nIHRo ZSB3YXkuICBXZSBuZWVkIHRvIHVzZQorCQkgKiBBY2Nlc3NFeGNsdXNpdmVMb2NrIGhlcmUs IGJlY2F1c2UgdGhlc2UgbWVyZ2VkIHBhcnRpdGlvbnMgd2lsbCBiZQorCQkgKiBkZXRhY2hl ZCB0aGVuIGRyb3BwZWQgaW4gQVRFeGVjTWVyZ2VQYXJ0aXRpb25zLgorCQkgKi8KKwkJcGFy dE9pZCA9IFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChuYW1lLCBBY2Nlc3NFeGNsdXNpdmVM b2NrLCAwLAorCQkJCQkJCQkJCSAgIFJhbmdlVmFyQ2FsbGJhY2tPd25zUmVsYXRpb24sCisJ CQkJCQkJCQkJICAgTlVMTCk7CisJCS8qIElzIGN1cnJlbnQgcGFydGl0aW9uIGEgREVGQVVM VCBwYXJ0aXRpb24/ICovCisJCWlmIChwYXJ0T2lkID09IGRlZmF1bHRQYXJ0T2lkKQorCQkJ aXNEZWZhdWx0UGFydCA9IHRydWU7CisKKwkJLyoKKwkJICogRXh0ZW5kZWQgY2hlY2sgYmVj YXVzZSB0aGUgc2FtZSBwYXJ0aXRpb24gY2FuIGhhdmUgZGlmZmVyZW50IG5hbWVzCisJCSAq IChmb3IgZXhhbXBsZSwgInBhcnRfbmFtZSIgYW5kICJwdWJsaWMucGFydF9uYW1lIikuCisJ CSAqLworCQlmb3JlYWNoKGxpc3RwdHIyLCBwYXJ0T2lkcykKKwkJeworCQkJT2lkCQkJY3Vy T2lkID0gbGZpcnN0X29pZChsaXN0cHRyMik7CisKKwkJCWlmIChjdXJPaWQgPT0gcGFydE9p ZCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0RVUExJQ0FU RV9UQUJMRSksCisJCQkJCQllcnJtc2coInBhcnRpdGlvbiB3aXRoIG5hbWUgXCIlc1wiIGlz IGFscmVhZHkgdXNlZCIsIG5hbWUtPnJlbG5hbWUpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0 aW9uKGN4dC0+cHN0YXRlLCBuYW1lLT5sb2NhdGlvbikpOworCQl9CisKKwkJY2hlY2tQYXJ0 aXRpb24ocGFyZW50LCBwYXJ0T2lkKTsKKworCQlwYXJ0T2lkcyA9IGxhcHBlbmRfb2lkKHBh cnRPaWRzLCBwYXJ0T2lkKTsKKwl9CisKKwkvKiBBbGxvY2F0ZSBib3VuZCBvZiByZXN1bHRp bmcgcGFydGl0aW9uLiAqLworCUFzc2VydChwYXJ0Y21kLT5ib3VuZCA9PSBOVUxMKTsKKwlw YXJ0Y21kLT5ib3VuZCA9IG1ha2VOb2RlKFBhcnRpdGlvbkJvdW5kU3BlYyk7CisKKwkvKiBG aWxsIHBhcnRpdGlvbiBib3VuZC4gKi8KKwlwYXJ0Y21kLT5ib3VuZC0+c3RyYXRlZ3kgPSBz dHJhdGVneTsKKwlwYXJ0Y21kLT5ib3VuZC0+bG9jYXRpb24gPSAtMTsKKwlwYXJ0Y21kLT5i b3VuZC0+aXNfZGVmYXVsdCA9IGlzRGVmYXVsdFBhcnQ7CisJaWYgKCFpc0RlZmF1bHRQYXJ0 KQorCQljYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShwYXJlbnQsIHBhcnRj bWQtPnBhcnRsaXN0LAorCQkJCQkJCQkJCQlwYXJ0T2lkcywgcGFydGNtZC0+Ym91bmQsCisJ CQkJCQkJCQkJCWN4dC0+cHN0YXRlKTsKK30KKwogLyoKICAqIHRyYW5zZm9ybUFsdGVyVGFi bGVTdG10IC0KICAqCQlwYXJzZSBhbmFseXNpcyBmb3IgQUxURVIgVEFCTEUKQEAgLTM3ODcs NiArMzkxOSwyMCBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChPaWQgcmVsaWQsIEFsdGVy VGFibGVTdG10ICpzdG10LAogCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMsIGNtZCk7 CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJCXsKKwkJ CQkJUGFydGl0aW9uQ21kICpwYXJ0Y21kID0gKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZjsK KworCQkJCQlpZiAobGlzdF9sZW5ndGgocGFydGNtZC0+cGFydGxpc3QpIDwgMikKKwkJCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVD VF9ERUZJTklUSU9OKSwKKwkJCQkJCQkJZXJybXNnKCJsaXN0IG9mIHBhcnRpdGlvbnMgdG8g YmUgbWVyZ2VkIHNob3VsZCBpbmNsdWRlIGF0IGxlYXN0IHR3byBwYXJ0aXRpb25zIikpOwor CisJCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlKCZjeHQsIHBhcnRjbWQpOwor CQkJCQluZXdjbWRzID0gbGFwcGVuZChuZXdjbWRzLCBjbWQpOworCQkJCQlicmVhazsKKwkJ CQl9CisKIAkJCWRlZmF1bHQ6CiAKIAkJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9w YXJ0Ym91bmRzLmMKaW5kZXggODIyY2Y0ZWM0NS4uNjBjMTAzNmNlOCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYworKysgYi9zcmMvYmFja2Vu ZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCkBAIC00OTc4LDMgKzQ5NzgsMTk5IEBAIHNh dGlzZmllc19oYXNoX3BhcnRpdGlvbihQR19GVU5DVElPTl9BUkdTKQogCiAJUEdfUkVUVVJO X0JPT0wocm93SGFzaCAlIG1vZHVsdXMgPT0gcmVtYWluZGVyKTsKIH0KKworLyoKKyAqIGNo ZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZQorICoKKyAqIChmdW5jdGlvbiBmb3Ig QlkgUkFOR0UgcGFydGl0aW9uaW5nKQorICoKKyAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rp b24gZm9yIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKCkuCisgKiBUaGlz IGZ1bmN0aW9uIGNvbXBhcmVzIHVwcGVyIGJvdW5kIG9mIGZpcnN0X2JvdW5kIGFuZCBsb3dl ciBib3VuZCBvZgorICogc2Vjb25kX2JvdW5kLiBUaGVzZSBib3VuZHMgc2hvdWxkIGJlIGVx dWFsLgorICoKKyAqIHBhcmVudDoJCQlwYXJ0aXRpb25lZCB0YWJsZQorICogZmlyc3RfbmFt ZToJCW5hbWUgb2YgZmlyc3QgcGFydGl0aW9uCisgKiBmaXJzdF9ib3VuZDoJCWJvdW5kIG9m IGZpcnN0IHBhcnRpdGlvbgorICogc2Vjb25kX25hbWU6CQluYW1lIG9mIHNlY29uZCBwYXJ0 aXRpb24KKyAqIHNlY29uZF9ib3VuZDoJYm91bmQgb2Ygc2Vjb25kIHBhcnRpdGlvbgorICog cHN0YXRlOgkJCXBvaW50ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluaW5n IGVycm9yIHBvc2l0aW9uCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja190d29fcGFydGl0aW9u c19ib3VuZHNfcmFuZ2UoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkgIFJhbmdlVmFyICpm aXJzdF9uYW1lLAorCQkJCQkJCQkgIFBhcnRpdGlvbkJvdW5kU3BlYyAqZmlyc3RfYm91bmQs CisJCQkJCQkJCSAgUmFuZ2VWYXIgKnNlY29uZF9uYW1lLAorCQkJCQkJCQkgIFBhcnRpdGlv bkJvdW5kU3BlYyAqc2Vjb25kX2JvdW5kLAorCQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0 ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFy ZW50KTsKKwlQYXJ0aXRpb25SYW5nZUJvdW5kICpmaXJzdF91cHBlcjsKKwlQYXJ0aXRpb25S YW5nZUJvdW5kICpzZWNvbmRfbG93ZXI7CisJaW50CQkJY21wdmFsOworCisJQXNzZXJ0KGtl eS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFKTsKKworCWZpcnN0X3Vw cGVyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0xLCBmaXJzdF9ib3VuZC0+ dXBwZXJkYXR1bXMsIGZhbHNlKTsKKwlzZWNvbmRfbG93ZXIgPSBtYWtlX29uZV9wYXJ0aXRp b25fcmJvdW5kKGtleSwgLTEsIHNlY29uZF9ib3VuZC0+bG93ZXJkYXR1bXMsIHRydWUpOwor CisJLyoKKwkgKiBsb3dlcjE9ZmFsc2UgKHRoZSBzZWNvbmQgdG8gbGFzdCBhcmd1bWVudCkg Zm9yIGNvcnJlY3QgY29tcGFyaXNvbiBvZgorCSAqIGxvd2VyIGFuZCB1cHBlciBib3VuZHMu CisJICovCisJY21wdmFsID0gcGFydGl0aW9uX3Jib3VuZF9jbXAoa2V5LT5wYXJ0bmF0dHMs CisJCQkJCQkJCSAga2V5LT5wYXJ0c3VwZnVuYywKKwkJCQkJCQkJICBrZXktPnBhcnRjb2xs YXRpb24sCisJCQkJCQkJCSAgc2Vjb25kX2xvd2VyLT5kYXR1bXMsIHNlY29uZF9sb3dlci0+ a2luZCwKKwkJCQkJCQkJICBmYWxzZSwgZmlyc3RfdXBwZXIpOworCWlmIChjbXB2YWwpCisJ eworCQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bSA9IGxpbml0aWFsKHNlY29uZF9ib3Vu ZC0+bG93ZXJkYXR1bXMpOworCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJD T0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCWVycm1zZygiY2FuIG5vdCBt ZXJnZSBwYXJ0aXRpb24gXCIlc1wiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uIFwiJXNcIiIs CisJCQkJCSAgIHNlY29uZF9uYW1lLT5yZWxuYW1lLCBmaXJzdF9uYW1lLT5yZWxuYW1lKSwK KwkJCQllcnJkZXRhaWwoImxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90 IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJ CSAgc2Vjb25kX25hbWUtPnJlbG5hbWUsIGZpcnN0X25hbWUtPnJlbG5hbWUpLAorCQkJCWVy cmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBw YXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LiIpLAorCQkJCXBhcnNlcl9lcnJwb3Np dGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpOworCX0KK30KKworLyoKKyAqIGdldF9w YXJ0aXRpb25fYm91bmRfc3BlYworICoKKyAqIFJldHVybnMgdGhlIFBhcnRpdGlvbkJvdW5k U3BlYyBmb3IgdGhlIHBhcnRpdGlvbiB3aXRoIHRoZSBnaXZlbiBPSUQgcGFydE9pZC4KKyAq Lworc3RhdGljIFBhcnRpdGlvbkJvdW5kU3BlYyAqCitnZXRfcGFydGl0aW9uX2JvdW5kX3Nw ZWMoT2lkIHBhcnRPaWQpCit7CisJSGVhcFR1cGxlCXR1cGxlOworCURhdHVtCQlkYXR1bTsK Kwlib29sCQlpc251bGw7CisJUGFydGl0aW9uQm91bmRTcGVjICpib3VuZHNwZWMgPSBOVUxM OworCisJLyogVHJ5IGZldGNoaW5nIHRoZSB0dXBsZSBmcm9tIHRoZSBjYXRjYWNoZSwgZm9y IHNwZWVkLiAqLworCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFJFTE9JRCwgcGFydE9pZCk7 CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hl IGxvb2t1cCBmYWlsZWQgZm9yIHJlbGF0aW9uICV1IiwgcGFydE9pZCk7CisKKwlkYXR1bSA9 IFN5c0NhY2hlR2V0QXR0cihSRUxPSUQsIHR1cGxlLAorCQkJCQkJCUFudW1fcGdfY2xhc3Nf cmVscGFydGJvdW5kLAorCQkJCQkJCSZpc251bGwpOworCWlmIChpc251bGwpCisJCWVsb2co RVJST1IsICJwYXJ0aXRpb24gYm91bmQgZm9yIHJlbGF0aW9uICV1IGlzIG51bGwiLAorCQkJ IHBhcnRPaWQpOworCisJYm91bmRzcGVjID0gc3RyaW5nVG9Ob2RlKFRleHREYXR1bUdldENT dHJpbmcoZGF0dW0pKTsKKworCWlmICghSXNBKGJvdW5kc3BlYywgUGFydGl0aW9uQm91bmRT cGVjKSkKKwkJZWxvZyhFUlJPUiwgImV4cGVjdGVkIFBhcnRpdGlvbkJvdW5kU3BlYyBmb3Ig cmVsYXRpb24gJXUiLAorCQkJIHBhcnRPaWQpOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cGxl KTsKKwlyZXR1cm4gYm91bmRzcGVjOworfQorCisvKgorICogY2FsY3VsYXRlX3BhcnRpdGlv bl9ib3VuZF9mb3JfbWVyZ2UKKyAqCisgKiBDYWxjdWxhdGVzIHRoZSBib3VuZCBvZiBtZXJn ZWQgcGFydGl0aW9uICJzcGVjIiBieSB1c2luZyB0aGUgYm91bmRzIG9mCisgKiBwYXJ0aXRp b25zIHRvIGJlIG1lcmdlZC4KKyAqCisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUK KyAqIHBhcnROYW1lczoJCW5hbWVzIG9mIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkCisgKiBw YXJ0T2lkczoJCU9pZHMgb2YgcGFydGl0aW9ucyB0byBiZSBtZXJnZWQKKyAqIHNwZWMgKG91 dCk6CQlib3VuZHMgc3BlY2lmaWNhdGlvbiBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbgorICog cHN0YXRlOgkJCXBvaW50ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluZSBl cnJvciBwb3NpdGlvbgorICovCit2b2lkCitjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zv cl9tZXJnZShSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQlMaXN0ICpwYXJ0TmFtZXMsCisJ CQkJCQkJCQlMaXN0ICpwYXJ0T2lkcywKKwkJCQkJCQkJCVBhcnRpdGlvbkJvdW5kU3BlYyAq c3BlYywKKwkJCQkJCQkJCVBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkg a2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0aXRpb25Cb3Vu ZFNwZWMgKmJvdW5kOworCisJQXNzZXJ0KCFzcGVjLT5pc19kZWZhdWx0KTsKKworCXN3aXRj aCAoa2V5LT5zdHJhdGVneSkKKwl7CisJCWNhc2UgUEFSVElUSU9OX1NUUkFURUdZX1JBTkdF OgorCQkJeworCQkJCWludAkJCWk7CisJCQkJUGFydGl0aW9uUmFuZ2VCb3VuZCAqKmxvd2Vy X2JvdW5kczsKKwkJCQlpbnQJCQlucGFydHMgPSBsaXN0X2xlbmd0aChwYXJ0T2lkcyk7CisJ CQkJTGlzdAkgICAqYm91bmRzID0gTklMOworCisJCQkJbG93ZXJfYm91bmRzID0gKFBhcnRp dGlvblJhbmdlQm91bmQgKiopCisJCQkJCXBhbGxvYzAobnBhcnRzICogc2l6ZW9mKFBhcnRp dGlvblJhbmdlQm91bmQgKikpOworCisJCQkJLyoKKwkJCQkgKiBDcmVhdGUgYXJyYXkgb2Yg bG93ZXIgYm91bmRzIGFuZCBsaXN0IG9mCisJCQkJICogUGFydGl0aW9uQm91bmRTcGVjLgor CQkJCSAqLworCQkJCWZvcmVhY2hfb2lkKHBhcnRvaWQsIHBhcnRPaWRzKQorCQkJCXsKKwkJ CQkJYm91bmQgPSBnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMocGFydG9pZCk7CisJCQkJCWkg PSBmb3JlYWNoX2N1cnJlbnRfaW5kZXgocGFydG9pZCk7CisKKwkJCQkJbG93ZXJfYm91bmRz W2ldID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIGksIGJvdW5kLT5sb3dlcmRh dHVtcywgdHJ1ZSk7CisJCQkJCWJvdW5kcyA9IGxhcHBlbmQoYm91bmRzLCBib3VuZCk7CisJ CQkJfQorCisJCQkJLyogU29ydCBhcnJheSBvZiBsb3dlciBib3VuZHMuICovCisJCQkJcXNv cnRfYXJnKGxvd2VyX2JvdW5kcywgbnBhcnRzLCBzaXplb2YoUGFydGl0aW9uUmFuZ2VCb3Vu ZCAqKSwKKwkJCQkJCSAgcXNvcnRfcGFydGl0aW9uX3Jib3VuZF9jbXAsIGtleSk7CisKKwkJ CQkvKiBSYW5nZXMgb2YgcGFydGl0aW9ucyBzaG91bGQgYmUgYWRqYWNlbnQuICovCisJCQkJ Zm9yIChpID0gMTsgaSA8IG5wYXJ0czsgaSsrKQorCQkJCXsKKwkJCQkJaW50CQkJaW5kZXgg PSBsb3dlcl9ib3VuZHNbaV0tPmluZGV4OworCQkJCQlpbnQJCQlwcmV2X2luZGV4ID0gbG93 ZXJfYm91bmRzW2kgLSAxXS0+aW5kZXg7CisKKwkJCQkJY2hlY2tfdHdvX3BhcnRpdGlvbnNf Ym91bmRzX3JhbmdlKHBhcmVudCwKKwkJCQkJCQkJCQkJCQkgIChSYW5nZVZhciAqKSBsaXN0 X250aChwYXJ0TmFtZXMsIHByZXZfaW5kZXgpLAorCQkJCQkJCQkJCQkJCSAgKFBhcnRpdGlv bkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIHByZXZfaW5kZXgpLAorCQkJCQkJCQkJ CQkJCSAgKFJhbmdlVmFyICopIGxpc3RfbnRoKHBhcnROYW1lcywgaW5kZXgpLAorCQkJCQkJ CQkJCQkJCSAgKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIGluZGV4 KSwKKwkJCQkJCQkJCQkJCQkgIHBzdGF0ZSk7CisJCQkJfQorCisJCQkJLyoKKwkJCQkgKiBM b3dlciBib3VuZCBvZiBmaXJzdCBwYXJ0aXRpb24gaXMgdGhlIGxvd2VyIGJvdW5kIG9mIG1l cmdlZAorCQkJCSAqIHBhcnRpdGlvbi4KKwkJCQkgKi8KKwkJCQlzcGVjLT5sb3dlcmRhdHVt cyA9CisJCQkJCSgoUGFydGl0aW9uQm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywgbG93 ZXJfYm91bmRzWzBdLT5pbmRleCkpLT5sb3dlcmRhdHVtczsKKworCQkJCS8qCisJCQkJICog VXBwZXIgYm91bmQgb2YgbGFzdCBwYXJ0aXRpb24gaXMgdGhlIHVwcGVyIGJvdW5kIG9mIG1l cmdlZAorCQkJCSAqIHBhcnRpdGlvbi4KKwkJCQkgKi8KKwkJCQlzcGVjLT51cHBlcmRhdHVt cyA9CisJCQkJCSgoUGFydGl0aW9uQm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywgbG93 ZXJfYm91bmRzW25wYXJ0cyAtIDFdLT5pbmRleCkpLT51cHBlcmRhdHVtczsKKworCQkJCXBm cmVlKGxvd2VyX2JvdW5kcyk7CisJCQkJbGlzdF9mcmVlKGJvdW5kcyk7CisJCQkJYnJlYWs7 CisJCQl9CisKKwkJY2FzZSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVDoKKwkJCXsKKwkJCQkv KiBDb25zb2xpZGF0ZSBib3VuZHMgZm9yIGFsbCBwYXJ0aXRpb25zIGluIHRoZSBsaXN0LiAq LworCQkJCWZvcmVhY2hfb2lkKHBhcnRvaWQsIHBhcnRPaWRzKQorCQkJCXsKKwkJCQkJYm91 bmQgPSBnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMocGFydG9pZCk7CisJCQkJCXNwZWMtPmxp c3RkYXR1bXMgPSBsaXN0X2NvbmNhdChzcGVjLT5saXN0ZGF0dW1zLCBib3VuZC0+bGlzdGRh dHVtcyk7CisJCQkJfQorCQkJCWJyZWFrOworCQkJfQorCisJCWRlZmF1bHQ6CisJCQllbG9n KEVSUk9SLCAidW5leHBlY3RlZCBwYXJ0aXRpb24gc3RyYXRlZ3k6ICVkIiwKKwkJCQkgKGlu dCkga2V5LT5zdHJhdGVneSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4 IDhiMTBmMjMxM2YuLjFjZjA5NDlmYmIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAg LTI3NDksNiArMjc0OSw3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lk LAogCQkJCQkgICJPV05FUiBUTyIsICJTRVQiLCAiVkFMSURBVEUgQ09OU1RSQUlOVCIsCiAJ CQkJCSAgIlJFUExJQ0EgSURFTlRJVFkiLCAiQVRUQUNIIFBBUlRJVElPTiIsCiAJCQkJCSAg IkRFVEFDSCBQQVJUSVRJT04iLCAiRk9SQ0UgUk9XIExFVkVMIFNFQ1VSSVRZIiwKKwkJCQkJ ICAiTUVSR0UgUEFSVElUSU9OUyAoIiwKIAkJCQkJICAiT0YiLCAiTk9UIE9GIik7CiAJLyog QUxURVIgVEFCTEUgeHh4IEFERCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRB QkxFIiwgTWF0Y2hBbnksICJBREQiKSkKQEAgLTMwMjIsNiArMzAyMywxNSBAQCBtYXRjaF9w cmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAllbHNlIGlmIChNYXRjaGVzKCJBTFRF UiIsICJUQUJMRSIsIE1hdGNoQW55LCAiREVUQUNIIiwgIlBBUlRJVElPTiIsIE1hdGNoQW55 KSkKIAkJQ09NUExFVEVfV0lUSCgiQ09OQ1VSUkVOVExZIiwgIkZJTkFMSVpFIik7CiAKKwkv KiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyAoICovCisJZWxzZSBpZiAo TWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIk1FUkdFIiwgIlBBUlRJVElP TlMiLCAiKCIpKQorCXsKKwkJc2V0X2NvbXBsZXRpb25fcmVmZXJlbmNlKHByZXY0X3dkKTsK KwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX3BhcnRpdGlvbl9vZl90 YWJsZSk7CisJfQorCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hB bnksICJNRVJHRSIsICJQQVJUSVRJT05TIiwgIigqKSIpKQorCQlDT01QTEVURV9XSVRIKCJJ TlRPIik7CisKIAkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gT0YgKi8KIAllbHNlIGlmIChNYXRj aGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiT0YiKSkKIAkJQ09NUExFVEVfV0lU SF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfY29tcG9zaXRlX2RhdGF0eXBlcyk7 CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCmluZGV4IDBlYTdjY2Y1MjQuLmY1NDIzMzQ5 OWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCisrKyBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCkBAIC0xMDcsNiArMTA3LDggQEAg ZXh0ZXJuIHZvaWQgUmVsZWFzZURlbGV0aW9uTG9jayhjb25zdCBPYmplY3RBZGRyZXNzICpv YmplY3QpOwogZXh0ZXJuIHZvaWQgcGVyZm9ybURlbGV0aW9uKGNvbnN0IE9iamVjdEFkZHJl c3MgKm9iamVjdCwKIAkJCQkJCQlEcm9wQmVoYXZpb3IgYmVoYXZpb3IsIGludCBmbGFncyk7 CiAKK2V4dGVybiB2b2lkIHBlcmZvcm1EZWxldGlvbkNoZWNrKGNvbnN0IE9iamVjdEFkZHJl c3MgKm9iamVjdCwKKwkJCQkJCQkJIERyb3BCZWhhdmlvciBiZWhhdmlvciwgaW50IGZsYWdz KTsKIGV4dGVybiB2b2lkIHBlcmZvcm1NdWx0aXBsZURlbGV0aW9ucyhjb25zdCBPYmplY3RB ZGRyZXNzZXMgKm9iamVjdHMsCiAJCQkJCQkJCQkgRHJvcEJlaGF2aW9yIGJlaGF2aW9yLCBp bnQgZmxhZ3MpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggODZhMjM2YmQ1OC4u YjFiMzMxNWZlNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o CisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtOTY0LDEzICs5NjQs MTYgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUmFuZ2VEYXR1bQogfSBQYXJ0aXRpb25S YW5nZURhdHVtOwogCiAvKgotICogUGFydGl0aW9uQ21kIC0gaW5mbyBmb3IgQUxURVIgVEFC TEUvSU5ERVggQVRUQUNIL0RFVEFDSCBQQVJUSVRJT04gY29tbWFuZHMKKyAqIFBhcnRpdGlv bkNtZCAtIGluZm8gZm9yIEFMVEVSIFRBQkxFL0lOREVYIEFUVEFDSC9ERVRBQ0ggUEFSVElU SU9OIGFuZCBmb3IKKyAqCSAgQUxURVIgVEFCTEUgTUVSR0UgUEFSVElUSU9OUyBjb21tYW5k cwogICovCiB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25DbWQKIHsKIAlOb2RlVGFnCQl0eXBl OwotCVJhbmdlVmFyICAgKm5hbWU7CQkJLyogbmFtZSBvZiBwYXJ0aXRpb24gdG8gYXR0YWNo L2RldGFjaCAqLworCVJhbmdlVmFyICAgKm5hbWU7CQkJLyogbmFtZSBvZiBwYXJ0aXRpb24g dG8gYXR0YWNoL2RldGFjaC9tZXJnZSAqLwogCVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQ7 CS8qIEZPUiBWQUxVRVMsIGlmIGF0dGFjaGluZyAqLworCUxpc3QJICAgKnBhcnRsaXN0OwkJ LyogbGlzdCBvZiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZCwgdXNlZCBpbgorCQkJCQkJCQkg KiBBTFRFUiBUQUJMRSBNRVJHRSBQQVJUSVRJT05TICovCiAJYm9vbAkJY29uY3VycmVudDsK IH0gUGFydGl0aW9uQ21kOwogCkBAIC0yNDczLDYgKzI0NzYsNyBAQCB0eXBlZGVmIGVudW0g QWx0ZXJUYWJsZVR5cGUKIAlBVF9BdHRhY2hQYXJ0aXRpb24sCQkJLyogQVRUQUNIIFBBUlRJ VElPTiAqLwogCUFUX0RldGFjaFBhcnRpdGlvbiwJCQkvKiBERVRBQ0ggUEFSVElUSU9OICov CiAJQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemUsIC8qIERFVEFDSCBQQVJUSVRJT04gRklO QUxJWkUgKi8KKwlBVF9NZXJnZVBhcnRpdGlvbnMsCQkJLyogTUVSR0UgUEFSVElUSU9OUyAq LwogCUFUX0FkZElkZW50aXR5LAkJCQkvKiBBREQgSURFTlRJVFkgKi8KIAlBVF9TZXRJZGVu dGl0eSwJCQkJLyogU0VUIGlkZW50aXR5IGNvbHVtbiBvcHRpb25zICovCiAJQVRfRHJvcElk ZW50aXR5LAkJCS8qIERST1AgSURFTlRJVFkgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCBh NGFmM2Y3MTdhLi45MGU4Y2RkZjhiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIv a3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0zMzcsNiAr MzM3LDcgQEAgUEdfS0VZV09SRCgicGFyYW1ldGVyIiwgUEFSQU1FVEVSLCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJzZXIiLCBQQVJTRVIsIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhcnRpYWwiLCBQ QVJUSUFMLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJw YXJ0aXRpb24iLCBQQVJUSVRJT04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK K1BHX0tFWVdPUkQoInBhcnRpdGlvbnMiLCBQQVJUSVRJT05TLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzaW5nIiwgUEFTU0lORywgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFzc3dvcmQiLCBQQVNT V09SRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGF0 aCIsIFBBVEgsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmggYi9zcmMvaW5jbHVkZS9w YXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCmluZGV4IDY1ZjE2MWY3MTguLjY5MGQyNTk2MTkg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKKysr IGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaApAQCAtMTQzLDQgKzE0 MywxMCBAQCBleHRlcm4gaW50CXBhcnRpdGlvbl9yYW5nZV9kYXR1bV9ic2VhcmNoKEZtZ3JJ bmZvICpwYXJ0c3VwZnVuYywKIGV4dGVybiBpbnQJcGFydGl0aW9uX2hhc2hfYnNlYXJjaChQ YXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvLAogCQkJCQkJCQkgICBpbnQgbW9kdWx1cywg aW50IHJlbWFpbmRlcik7CiAKK2V4dGVybiB2b2lkIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91 bmRfZm9yX21lcmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJCQkJCUxpc3QgKnBhcnRO YW1lcywKKwkJCQkJCQkJCQkJCUxpc3QgKnBhcnRPaWRzLAorCQkJCQkJCQkJCQkJUGFydGl0 aW9uQm91bmRTcGVjICpzcGVjLAorCQkJCQkJCQkJCQkJUGFyc2VTdGF0ZSAqcHN0YXRlKTsK KwogI2VuZGlmCQkJCQkJCS8qIFBBUlRCT1VORFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQgYi9zcmMvdGVzdC9p c29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLW1lcmdlLm91dApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi45ODQ0NmFhYWI1Ci0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQKQEAgLTAs MCArMSwxOTkgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0YXJ0 aW5nIHBlcm11dGF0aW9uOiBzMmIgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMy YyBzMnMKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBW QUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYjogQkVH SU47CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAo dHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6 IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicg d2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMy dTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVD VCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRl eHQwNSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAg ICAgCiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlv bjogczJiIHMyaSBzMmMgczFicnIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAg czJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0 ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJ T04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRw YXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0 cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQg U0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVw IHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENP TU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAK Ky0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRl eHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisK Kworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYiBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBz MnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5U TyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVw IHMxYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxbWVy ZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRw YXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBz MnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3 YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0 ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7 CisgaXx0ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0 ZXh0MTUgICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUg ICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicnIgczJpIHMy YyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJicnI6IEJFR0lOIElT T0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8g dHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBz MWI6IEJFR0lOOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJ VElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0 ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAx bW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOwor c3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJz OiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0t CisgNXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0 ZXh0MjUgICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVy bXV0YXRpb246IHMyYnJyIHMyaSBzMmMgczFicnIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBz MnMKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7 CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7Citz dGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJF UEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQ QVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7 CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3Rl eHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1J VDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVw IHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSstLS0tLS0t LS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2RpZgor MjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5n IHBlcm11dGF0aW9uOiBzMmJyciBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMy YyBzMnMKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJF QUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7 CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwg U0VSSUFMSVpBQkxFOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBB UlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsK K3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4 dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlU Oworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAg czJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0t LS0tCisgNXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisy NXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcg cGVybXV0YXRpb246IHMyYnMgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBz MnMKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0 ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAg czJjOiBDT01NSVQ7CitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxbWVyZzogQUxURVIgVEFC TEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJ TlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0 cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4K K3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMy YzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAg ICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAgIAor IDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUgcm93 cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicyBzMmkgczJjIHMxYnJyIHMxbWVy ZyBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZF TCBTRVJJQUxJWkFCTEU7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgx LCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWJycjogQkVHSU4gSVNP TEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJM RSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElO VE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRw YXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgor c3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJj OiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAg ICAgCistLSstLS0tLS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisg MXx0ZXh0MDFtb2RpZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dz KQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJzIHMyaSBzMmMgczFicyBzMW1lcmcg czJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwg U0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwg J3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFU SU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFy dCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBh cnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNF VCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBz MWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01N SVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCist LSstLS0tLS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0 MDFtb2RpZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlIGIvc3Jj L3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQppbmRleCA5ZjFlOTk3ZDgxLi4y MDQwZTFjNTdhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3Nj aGVkdWxlCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKQEAg LTEwOCw2ICsxMDgsNyBAQCB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0xCiB0ZXN0OiBw YXJ0aXRpb24ta2V5LXVwZGF0ZS0yCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0zCiB0 ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS00Cit0ZXN0OiBwYXJ0aXRpb24tbWVyZ2UKIHRl c3Q6IHBscGdzcWwtdG9hc3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QKIHRlc3Q6IGNsdXN0 ZXItY29uZmxpY3QtcGFydGl0aW9uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24v c3BlY3MvcGFydGl0aW9uLW1lcmdlLnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3Mv cGFydGl0aW9uLW1lcmdlLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uZGMyYjlkMzQ0NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlv bi9zcGVjcy9wYXJ0aXRpb24tbWVyZ2Uuc3BlYwpAQCAtMCwwICsxLDU0IEBACisjIFZlcmlm eSB0aGF0IE1FUkdFIG9wZXJhdGlvbiBsb2NrcyBETUwgb3BlcmF0aW9ucyB3aXRoIHBhcnRp dGlvbmVkIHRhYmxlCisKK3NldHVwCit7CisgIERST1AgVEFCTEUgSUYgRVhJU1RTIHRwYXJ0 OworICBDUkVBVEUgVEFCTEUgdHBhcnQoaSBpbnQsIHQgdGV4dCkgcGFydGl0aW9uIGJ5IHJh bmdlKGkpOworICBDUkVBVEUgVEFCTEUgdHBhcnRfMDBfMTAgUEFSVElUSU9OIE9GIHRwYXJ0 IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzEw XzIwIFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOwor ICBDUkVBVEUgVEFCTEUgdHBhcnRfMjBfMzAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxV RVMgRlJPTSAoMjApIFRPICgzMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF9kZWZhdWx0IFBB UlRJVElPTiBPRiB0cGFydCBERUZBVUxUOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMg KDUsICd0ZXh0MDUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxNSwgJ3RleHQx NScpOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDI1LCAndGV4dDI1Jyk7CisgIElO U0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMzUsICd0ZXh0MzUnKTsKK30KKwordGVhcmRvd24K K3sKKyAgRFJPUCBUQUJMRSB0cGFydDsKK30KKworc2Vzc2lvbiBzMQorc3RlcCBzMWIJeyBC RUdJTjsgfQorc3RlcCBzMWJycgl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxF IFJFQUQ7IH0KK3N0ZXAgczFicwl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFC TEU7IH0KK3N0ZXAgczFtZXJnCXsgQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9O UyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOyB9CitzdGVw IHMxYwl7IENPTU1JVDsgfQorCisKK3Nlc3Npb24gczIKK3N0ZXAgczJiCXsgQkVHSU47IH0K K3N0ZXAgczJicnIJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOyB9 CitzdGVwIHMyYnMJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOyB9Citz dGVwIHMyaQl7IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyB9Citz dGVwIHMydQl7IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9 IDE7IH0KK3N0ZXAgczJjCXsgQ09NTUlUOyB9CitzdGVwIHMycwl7IFNFTEVDVCAqIEZST00g dHBhcnQ7IH0KKworCisjIHMyIGluc2VydHMgcm93IGludG8gdGFibGUuIHMxIHN0YXJ0cyBN RVJHRSBQQVJUSVRJT05TIHRoZW4KKyMgczIgaXMgdHJ5aW5nIHRvIHVwZGF0ZSBpbnNlcnRl ZCByb3cgYW5kIHdhaXRzIHVudGlsIHMxIGZpbmlzaGVzCisjIE1FUkdFIG9wZXJhdGlvbi4K KworcGVybXV0YXRpb24gczJiIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMg czJzCitwZXJtdXRhdGlvbiBzMmIgczJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMg czJjIHMycworcGVybXV0YXRpb24gczJiIHMyaSBzMmMgczFicyBzMW1lcmcgczJiIHMydSBz MWMgczJjIHMycworCitwZXJtdXRhdGlvbiBzMmJyciBzMmkgczJjIHMxYiBzMW1lcmcgczJi IHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJicnIgczJpIHMyYyBzMWJyciBzMW1l cmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJicnIgczJpIHMyYyBzMWJz IHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCisKK3Blcm11dGF0aW9uIHMyYnMgczJpIHMy YyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMyYnMgczJp IHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJi cyBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS9leHBlY3RlZC9hbHRlcl90YWJs ZS5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvZXhwZWN0ZWQvYWx0 ZXJfdGFibGUub3V0CmluZGV4IDUwZDAzNTRhMzQuLmM0MDNjMmY1NjkgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS9leHBlY3RlZC9hbHRlcl90YWJs ZS5vdXQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL2V4cGVjdGVk L2FsdGVyX3RhYmxlLm91dApAQCAtNTYsNiArNTYsMTEgQEAgQUxURVIgVEFCTEUgcGFydCBE RVRBQ0ggUEFSVElUSU9OIHBhcnQyOwogTk9USUNFOiAgRERMIHRlc3Q6IHR5cGUgYWx0ZXIg dGFibGUsIHRhZyBBTFRFUiBUQUJMRQogTk9USUNFOiAgICBzdWJjb21tYW5kOiB0eXBlIERF VEFDSCBQQVJUSVRJT04gZGVzYyB0YWJsZSBwYXJ0MgogRFJPUCBUQUJMRSBwYXJ0MjsKK0NS RUFURSBUQUJMRSBwYXJ0MiBQQVJUSVRJT04gT0YgcGFydCBGT1IgVkFMVUVTIEZST00gKDEw MCkgdG8gKDIwMCk7CitOT1RJQ0U6ICBEREwgdGVzdDogdHlwZSBzaW1wbGUsIHRhZyBDUkVB VEUgVEFCTEUKK0FMVEVSIFRBQkxFIHBhcnQgTUVSR0UgUEFSVElUSU9OUyAocGFydDEsIHBh cnQyKSBJTlRPIHBhcnQxOworTk9USUNFOiAgRERMIHRlc3Q6IHR5cGUgYWx0ZXIgdGFibGUs IHRhZyBBTFRFUiBUQUJMRQorTk9USUNFOiAgICBzdWJjb21tYW5kOiB0eXBlIE1FUkdFIFBB UlRJVElPTlMgZGVzYyA8TlVMTD4KIEFMVEVSIFRBQkxFIHBhcnQgQUREIFBSSU1BUlkgS0VZ IChhKTsKIE5PVElDRTogIERETCB0ZXN0OiB0eXBlIGFsdGVyIHRhYmxlLCB0YWcgQUxURVIg VEFCTEUKIE5PVElDRTogICAgc3ViY29tbWFuZDogdHlwZSBBREQgQ09OU1RSQUlOVCAoYW5k IHJlY3Vyc2UpIGRlc2MgY29uc3RyYWludCBwYXJ0X2Ffbm90X251bGwgb24gdGFibGUgcGFy dApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3NxbC9h bHRlcl90YWJsZS5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2Uvc3Fs L2FsdGVyX3RhYmxlLnNxbAppbmRleCA5YWQxY2Y5MDhkLi4zMWU2OTEwMGEzIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2Uvc3FsL2FsdGVyX3RhYmxl LnNxbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2Uvc3FsL2FsdGVy X3RhYmxlLnNxbApAQCAtMzUsNiArMzUsOSBAQCBBTFRFUiBUQUJMRSBwYXJ0IEFUVEFDSCBQ QVJUSVRJT04gcGFydDIgRk9SIFZBTFVFUyBGUk9NICgxMDEpIHRvICgyMDApOwogQUxURVIg VEFCTEUgcGFydCBERVRBQ0ggUEFSVElUSU9OIHBhcnQyOwogRFJPUCBUQUJMRSBwYXJ0MjsK IAorQ1JFQVRFIFRBQkxFIHBhcnQyIFBBUlRJVElPTiBPRiBwYXJ0IEZPUiBWQUxVRVMgRlJP TSAoMTAwKSB0byAoMjAwKTsKK0FMVEVSIFRBQkxFIHBhcnQgTUVSR0UgUEFSVElUSU9OUyAo cGFydDEsIHBhcnQyKSBJTlRPIHBhcnQxOworCiBBTFRFUiBUQUJMRSBwYXJ0IEFERCBQUklN QVJZIEtFWSAoYSk7CiAKIEFMVEVSIFRBQkxFIHBhcmVudCBBTFRFUiBDT0xVTU4gYSBTRVQg Tk9UIE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFy c2UvdGVzdF9kZGxfZGVwYXJzZS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBh cnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwppbmRleCAxOTM2NjlmMmJjLi43ZGU1ZGRiODc4IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxf ZGVwYXJzZS5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0 X2RkbF9kZXBhcnNlLmMKQEAgLTI5Niw2ICsyOTYsOSBAQCBnZXRfYWx0ZXJ0YWJsZV9zdWJj bWRpbmZvKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQljYXNlIEFUX0RldGFjaFBhcnRpdGlvbkZp bmFsaXplOgogCQkJCXN0cnR5cGUgPSAiREVUQUNIIFBBUlRJVElPTiAuLi4gRklOQUxJWkUi OwogCQkJCWJyZWFrOworCQkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQkJc3RydHlw ZSA9ICJNRVJHRSBQQVJUSVRJT05TIjsKKwkJCQlicmVhazsKIAkJCWNhc2UgQVRfQWRkSWRl bnRpdHk6CiAJCQkJc3RydHlwZSA9ICJBREQgSURFTlRJVFkiOwogCQkJCWJyZWFrOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0Cm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjZkOWZmMDI1MDMKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5v dXQKQEAgLTAsMCArMSwxMDk3IEBACistLQorLS0gUEFSVElUSU9OU19NRVJHRQorLS0gVGVz dHMgZm9yICJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyAuLi4iIGNvbW1hbmQK Ky0tCitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hOworQ1JFQVRFIFND SEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTI7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworLS0KKy0tIEJZIFJBTkdFIHBhcnRpdGlv bmluZworLS0KKy0tCistLSBUZXN0IGZvciBlcnJvciBjb2RlcworLS0KK0NSRUFURSBUQUJM RSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZB UkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElP TiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMSBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScp IFRPICgnMjAyMS0xMi0zMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAo JzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0w MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgKHNhbGVzcGVyc29uX2lkIElOVCwg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNf ZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2Fwcl8xIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTUnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19hcHJfMiBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTA0LTE1JykgVE8gKCcyMDIyLTA1LTAxJyk7CitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290 aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKy0tIEVSUk9SOiAgcGFy dGl0aW9uIHdpdGggbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBz YWxlc19tYXIyMDIyLCBzYWxlc19mZWIyMDIyKSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAy MjsKK0VSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxy ZWFkeSB1c2VkCitMSU5FIDE6IC4uLmUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAy Miwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfZmViMi4uLgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAg InNhbGVzX2FwcjIwMjIiIGlzIG5vdCBhIHRhYmxlCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxl c19hcHIyMDIyKSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKK0VSUk9SOiAgInNhbGVz X2FwcjIwMjIiIGlzIG5vdCBhIHRhYmxlCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdF IFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1w YXJ0aXRpb25zCistLSBFUlJPUjogIGNhbiBub3QgbWVyZ2UgcGFydGl0aW9uICJzYWxlc19t YXIyMDIyIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKKy0tIERF VEFJTDogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgaXMgbm90 IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIi CistLSAoc3BhY2UgYmV0d2VlbiBzZWN0aW9ucyBzYWxlc19qYW4yMDIyIGFuZCBzYWxlc19t YXIyMDIyKQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2Fs ZXNfamFuMjAyMiwgc2FsZXNfbWFyMjAyMikgSU5UTyBzYWxlc19qYW5fbWFyMjAyMjsKK0VS Uk9SOiAgY2FuIG5vdCBtZXJnZSBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIHRvZ2V0aGVy IHdpdGggcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIgorREVUQUlMOiAgbG93ZXIgYm91bmQg b2YgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVy IGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKK0hJTlQ6ICBBTFRFUiBUQUJM RSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0 byBiZSBhZGphY2VudC4KKy0tIEVSUk9SOiAgY2FuIG5vdCBtZXJnZSBwYXJ0aXRpb24gInNh bGVzX2phbjIwMjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgor LS0gREVUQUlMOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIiBp cyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZGVj MjAyMSIKKy0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25zIHNhbGVzX2RlYzIwMjEgYW5kIHNh bGVzX2phbjIwMjIpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05T IChzYWxlc19kZWMyMDIxLCBzYWxlc19qYW4yMDIyLCBzYWxlc19mZWIyMDIyKSBJTlRPIHNh bGVzX2RlY19qYW5fZmViMjAyMjsKK0VSUk9SOiAgY2FuIG5vdCBtZXJnZSBwYXJ0aXRpb24g InNhbGVzX2phbjIwMjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19kZWMyMDIx IgorREVUQUlMOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIiBp cyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZGVj MjAyMSIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJl cyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4KKy0tIEVSUk9SOiAgcGFy dGl0aW9uIHdpdGggbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBz YWxlc19tYXIyMDIyLCBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19mZWIyMDIyKSBJ TlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKK0VSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFt ZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitMSU5FIDE6IC4uLmUgTUVSR0Ug UEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgcGFydGl0aW9ucy4u LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KKy0tRVJST1IsIHNhbGVzX2Fwcl8yIGFscmVhZHkgZXhpc3RzCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBz YWxlc19tYXIyMDIyLCBzYWxlc19qYW4yMDIyKSBJTlRPIHNhbGVzX2Fwcl8yOworRVJST1I6 ICByZWxhdGlvbiAic2FsZXNfYXByXzIiIGFscmVhZHkgZXhpc3RzCitDUkVBVEUgVklFVyBq YW4yMDIydiBhcyBTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7CitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19mZWIy MDIyKSBJTlRPIHNhbGVzX2RlY19qYW5fZmViMjAyMjsKK0VSUk9SOiAgY2Fubm90IGRyb3Ag dGFibGUgc2FsZXNfamFuMjAyMiBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0 CitERVRBSUw6ICB2aWV3IGphbjIwMjJ2IGRlcGVuZHMgb24gdGFibGUgc2FsZXNfamFuMjAy MgorSElOVDogIFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBv YmplY3RzIHRvby4KK0RST1AgVklFVyBqYW4yMDIydjsKKy0tIE5PIEVSUk9SOiB0ZXN0IGZv ciBjdXN0b20gcGFydGl0aW9ucyBvcmRlciwgc291cmNlIHBhcnRpdGlvbnMgbm90IGluIHRo ZSBzZWFyY2hfcGF0aAorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hl bWEyLCBwdWJsaWM7CitBTFRFUiBUQUJMRSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxl c19yYW5nZSBNRVJHRSBQQVJUSVRJT05TICgKKyAgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEu c2FsZXNfZmViMjAyMiwKKyAgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfbWFyMjAy MiwKKyAgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfamFuMjAyMikgSU5UTyBzYWxl c19qYW5fZmViX21hcjIwMjI7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdl X3NjaGVtYSwgcHVibGljOworUFJFUEFSRSBnZXRfcGFydGl0aW9uX2luZm8ocmVnY2xhc3Nb XSkgQVMKK1NFTEVDVCAgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsCisgICAgICAgIGMu cmVscGVyc2lzdGVuY2UsCisgICAgICAgIGMucmVsa2luZCwKKyAgICAgICAgaS5pbmhkZXRh Y2hwZW5kaW5nLAorICAgICAgICBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJv dW5kLCBjLm9pZCkKK0ZST00gICAgcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9n LnBnX2luaGVyaXRzIGkKK1dIRVJFICAgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBh cmVudCA9IEFOWSgkMSkKK09SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxw YXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywKKyAgICAgICAgIGMub2lkOjpyZWdjbGFz czo6dGV4dCBDT0xMQVRFICJDIjsKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2Fs ZXNfcmFuZ2V9Jyk7CisgICAgICAgICAgICAgICAgICAgICAgb2lkICAgICAgICAgICAgICAg ICAgICAgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcg fCAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uc19tZXJn ZV9zY2hlbWEyLnNhbGVzX2phbl9mZWJfbWFyMjAyMiB8IHAgICAgICAgICAgICAgIHwgciAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIy JykgVE8gKCcwNC0wMS0yMDIyJykKKyBzYWxlc19hcHIyMDIyICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgcCAgICAgICAgICAgICAgfCBwICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzA0LTAxLTIwMjInKSBUTyAoJzA1LTAxLTIw MjInKQorIHNhbGVzX2RlYzIwMjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZB TFVFUyBGUk9NICgnMTItMDEtMjAyMScpIFRPICgnMTItMzEtMjAyMScpCisgc2FsZXNfb3Ro ZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHAgICAgICAgICAgICAg IHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxUCisoNCByb3dzKQorCitE Uk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIEFkZCByb3dzIGludG8gcGFydGl0aW9u ZWQgdGFibGUsIHRoZW4gbWVyZ2UgcGFydGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBzYWxl c19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIo MzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBS QU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgn MjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVG QVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxl c19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAor ICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQn LCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAn MjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyks CisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGkn LCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwg ICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEn KSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdU cnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUw LCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0w OScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1Qg cGdfY2F0YWxvZy5wZ19nZXRfcGFydGtleWRlZignc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcyk7 CisgcGdfZ2V0X3BhcnRrZXlkZWYgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSQU5HRSAo c2FsZXNfZGF0ZSkKKygxIHJvdykKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0 aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfcmFuZ2V9Jyk7Cisg ICAgICBvaWQgICAgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBl bmRpbmcgfCAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgc2FsZXNfYXByMjAyMiB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8g KCcwNS0wMS0yMDIyJykKKyBzYWxlc19mZWIyMDIyIHwgcCAgICAgICAgICAgICAgfCByICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjIn KSBUTyAoJzAzLTAxLTIwMjInKQorIHNhbGVzX2phbjIwMjIgfCBwICAgICAgICAgICAgICB8 IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDEtMDEt MjAyMicpIFRPICgnMDItMDEtMjAyMicpCisgc2FsZXNfbWFyMjAyMiB8IHAgICAgICAgICAg ICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcw My0wMS0yMDIyJykgVE8gKCcwNC0wMS0yMDIyJykKKyBzYWxlc19vdGhlcnMgIHwgcCAgICAg ICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IERFRkFVTFQKKyg1IHJv d3MpCisKKy0tIGNoZWNrIHNjaGVtYS1xdWFsaWZpZWQgbmFtZSBvZiB0aGUgbmV3IHBhcnRp dGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNf ZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfYXByMjAyMikgSU5UTyBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyOworLS0gc2hvdyBwYXJ0aXRp b25zIHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2Fs ZXNfcmFuZ2V9Jyk7CisgICAgICAgICAgICAgICAgICAgICAgb2lkICAgICAgICAgICAgICAg ICAgICAgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcg fCAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uc19tZXJn ZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8IHAgICAgICAgICAgICAgIHwgciAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMi0wMS0yMDIy JykgVE8gKCcwNS0wMS0yMDIyJykKKyBzYWxlc19qYW4yMDIyICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAxLTAxLTIwMjInKSBUTyAoJzAyLTAxLTIw MjInKQorIHNhbGVzX290aGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVM VAorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFt ZSA9ICdzYWxlc19mZWJfbWFyX2FwcjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hMic7CisgICAgICAgIHNjaGVtYW5hbWUgICAgICAgIHwgICAgICAg dGFibGVuYW1lICAgICAgIHwgICAgICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgICAg IHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFy dGl0aW9uc19tZXJnZV9zY2hlbWEyIHwgc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgc2FsZXNf ZmViX21hcl9hcHIyMDIyX3NhbGVzX2RhdGVfaWR4IHwgICAgICAgICAgICB8IENSRUFURSBJ TkRFWCBzYWxlc19mZWJfbWFyX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggT04gcGFydGl0aW9u c19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiBVU0lORyBidHJlZSAoc2Fs ZXNfZGF0ZSkKKygxIHJvdykKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9N IHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRF ICJDIiwgc2FsZXNwZXJzb25faWQ7CisgICAgICAgICAgICAgICAgICAgIHRhYmxlb2lkICAg ICAgICAgICAgICAgICAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8 IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAgICAgICAyIHwgU21pcm5v ZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyBwYXJ0aXRpb25zX21l cmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAgICAgIDMgfCBG b3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorIHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAg NCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgcGFy dGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAg ICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIK KyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAg ICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEt MjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIg fCAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAw My0wOC0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXBy MjAyMiB8ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4 NSB8IDAyLTIzLTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21h cl9hcHIyMDIyIHwgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDMtMTEtMjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19m ZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAg ICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNh bGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAg ICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyBzYWxlc19qYW4yMDIyICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAg ICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorIHNhbGVzX2phbjIwMjIgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAxMCB8IEhhbGRl ciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgc2FsZXNfamFuMjAy MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIDEzIHwg R2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyBzYWxlc19v dGhlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg MTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0 IHJvd3MpCisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcworU0VUIGVu YWJsZV9zZXFzY2FuID0gT0ZGOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9N IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgd2hlcmUg c2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNf ZmViX21hcl9hcHIyMDIyX3NhbGVzX2RhdGVfaWR4IG9uIHNhbGVzX2ZlYl9tYXJfYXByMjAy MgorICAgSW5kZXggQ29uZDogKHNhbGVzX2RhdGUgPiAnMDEtMDEtMjAyMic6OmRhdGUpCiso MiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxl c19mZWJfbWFyX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBz YWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAg IHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICAgICA2IHwgUG9pcm90 ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgICAg OCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAg ICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgt MjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1 MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAg ICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAg ICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICAgICA1IHwg RGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAg ICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIy CisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwg MDQtMzAtMjAyMgorKDEwIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBU QUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBNZXJnZSBzb21lIHBhcnRpdGlvbnMgaW50byBE RUZBVUxUIHBhcnRpdGlvbgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNw ZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91 bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJ TkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBi dHJlZSAoc2FsZXNfZGF0ZSk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAg KDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9m ZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIw MjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAor ICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJv dCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAn MjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyks CisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFs ZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwg ICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTkn KSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdT bWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CistLSBNZXJnZSBwYXJ0aXRpb25zIChp bmNsdWRlIERFRkFVTFQgcGFydGl0aW9uKSBpbnRvIHBhcnRpdGlvbiB3aXRoIHRoZSBzYW1l CistLSBuYW1lCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TCisg IChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIyLCBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YS5zYWxlc19vdGhlcnMpIElOVE8gc2FsZXNfb3RoZXJzOworU0VMRUNUICogRlJPTSBzYWxl c19vdGhlcnMgT1JERVIgQlkgc2FsZXNwZXJzb25faWQ7Cisgc2FsZXNwZXJzb25faWQgfCBz YWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8 IDAxLTMxLTIwMjIKKyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAg ICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAg ICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFs ZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAg ICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisg ICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEt MDktMjAyMgorICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAg IDUxMCB8IDA1LTA0LTIwMjIKKyg3IHJvd3MpCisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRo IGNvbmRpdGlvbnM6CitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3NhbGVzX3Jhbmdl fScpOworICAgICAgb2lkICAgICAgfCByZWxwZXJzaXN0ZW5jZSB8IHJlbGtpbmQgfCBpbmhk ZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2FwcjIwMjIgfCBwICAgICAgICAgICAgICB8IHIg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDQtMDEtMjAy MicpIFRPICgnMDUtMDEtMjAyMicpCisgc2FsZXNfZmViMjAyMiB8IHAgICAgICAgICAgICAg IHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMi0w MS0yMDIyJykgVE8gKCcwMy0wMS0yMDIyJykKKyBzYWxlc19vdGhlcnMgIHwgcCAgICAgICAg ICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IERFRkFVTFQKKygzIHJvd3Mp CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gVGVzdCBmb3I6CistLSAgICog Y29tcG9zaXRlIHBhcnRpdGlvbiBrZXk7CistLSAgICogR0VORVJBVEVEIGNvbHVtbjsKKy0t ICAgKiBjb2x1bW4gd2l0aCBERUZBVUxUIHZhbHVlLgorLS0KK0NSRUFURSBUQUJMRSBzYWxl c19kYXRlIChzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc195ZWFyIElOVCwg c2FsZXNfbW9udGggSU5ULCBzYWxlc19kYXkgSU5ULAorICBzYWxlc19kYXRlIFZBUkNIQVIo MTApIEdFTkVSQVRFRCBBTFdBWVMgQVMKKyAgICAoTFBBRChzYWxlc195ZWFyOjp0ZXh0LCA0 LCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX21vbnRoOjp0ZXh0LCAyLCAnMCcpIHx8ICcu JyB8fCBMUEFEKHNhbGVzX2RheTo6dGV4dCwgMiwgJzAnKSkgU1RPUkVELAorICBzYWxlc19k ZXBhcnRtZW50IFZBUkNIQVIoMzApIERFRkFVTFQgJ1NhbGVzIGRlcGFydG1lbnQnKQorICBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUg Rk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwgMSkgVE8gKDIwMjIsIDEsIDEpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVF UyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMiwgMSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIw MjIsIDIsIDEpIFRPICgyMDIyLCAzLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlciBQ QVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDMsIDEpIFRP IChNQVhWQUxVRSwgTUFYVkFMVUUsIE1BWFZBTFVFKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2Rh dGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2Rh eSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIxLCAxMiwgNyksCisgICgnTWFuYWdlcjIn LCAyMDIxLCAxMiwgOCksCisgICgnTWFuYWdlcjMnLCAyMDIyLCAxLCAxKSwKKyAgKCdNYW5h Z2VyMScsIDIwMjIsIDIsIDQpLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMSwgMiksCisgICgn TWFuYWdlcjMnLCAyMDIyLCAyLCAxKSwKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDMsIDMpLAor ICAoJ01hbmFnZXIyJywgMjAyMiwgMywgNCksCisgICgnTWFuYWdlcjMnLCAyMDIyLCA1LCAx KTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19kYXRlOworICAg dGFibGVvaWQgICAgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21v bnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxl c19kZWMyMDIyIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAx MiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNf ZGVjMjAyMiB8IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIg fCAgICAgICAgIDggfCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2ph bjIwMjIgfCBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwg ICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW4y MDIyIHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAg ICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfZmViMjAy MiB8IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAg ICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2ZlYjIwMjIg fCBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAg ICAxIHwgMjAyMi4wMi4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhlciAgIHwg TWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAg MyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3RoZXIgICB8IE1h bmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQg fCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAgfCBNYW5h Z2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwg MjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyg5IHJvd3MpCisKK0FMVEVSIFRBQkxF IHNhbGVzX2RhdGUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfamFuMjAyMiwgc2FsZXNfZmVi MjAyMikgSU5UTyBzYWxlc19qYW5fZmViMjAyMjsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUo c2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkg VkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIyLCAxLCAxMCksCisgICgnTWFuYWdlcjInLCAy MDIyLCAyLCAxMCk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNf ZGF0ZTsKKyAgICAgdGFibGVvaWQgICAgICB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195 ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVw YXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0KKyBzYWxlc19kZWMyMDIyICAgICB8IE1hbmFnZXIxICAgICAgICAgfCAg ICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIxLjEyLjA3IHwgU2Fs ZXMgZGVwYXJ0bWVudAorIHNhbGVzX2RlYzIwMjIgICAgIHwgTWFuYWdlcjIgICAgICAgICB8 ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBT YWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5hZ2VyMyAgICAgICAg IHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4wMSB8 IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1hbmFnZXIyICAgICAg ICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAy IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdlcjEgICAg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIu MDQgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5hZ2VyMyAg ICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICAxIHwgMjAyMi4w Mi4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1hbmFnZXIx ICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgMTAgfCAyMDIy LjAxLjEwIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdl cjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAxMCB8IDIw MjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3RoZXIgICAgICAgfCBNYW5h Z2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICAzIHwg MjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhlciAgICAgICB8IE1h bmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQg fCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAgICAgIHwg TWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAg MSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMTEgcm93cykKKworRFJPUCBU QUJMRSBzYWxlc19kYXRlOworLS0KKy0tIFRlc3Q6IG1lcmdlIHBhcnRpdGlvbnMgb2YgcGFy dGl0aW9uZWQgdGFibGUgd2l0aCB0cmlnZ2VycworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Bl b3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUg VkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworQ1JF QVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZP UiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEw XzIwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAo MjApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAgUEFSVElUSU9OIE9GIHNhbGVz cGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNwZW9wbGUzMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9N ICgzMCkgVE8gKDQwKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMSwgICdQ b2lyb3QnKTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3df dHJpZ2dlcigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMgJEJPRFkk CitCRUdJTgorICAgIFJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9 ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwg VEdfTEVWRUw7CisgICAgUkVUVVJOIE5VTEw7CitFTkQ7CiskQk9EWSQ7CitDUkVBVEUgVFJJ R0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNlcnRfc3RhdGVtZW50X3RyaWdnZXIKKyAgICBB RlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Blb3BsZQorICAgIEZPUiBFQUNIIFNUQVRFTUVO VAorICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2Fs ZXNwZW9wbGUnKTsKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9y b3dfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAg Rk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190 cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJl IChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgx MCwgJ01heScpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rp b24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK05PVElDRTogIHRyaWdn ZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIs IGxldmVsID0gU1RBVEVNRU5UCistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93 KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfMjAgVkFMVUVTICgxOSwgJ0l2YW5vdicp OworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNF UlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxl IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzcGVvcGxlMTBfMjAsIHNhbGVzcGVvcGxlMjBfMzAs IHNhbGVzcGVvcGxlMzBfNDApIElOVE8gc2FsZXNwZW9wbGUxMF80MDsKKy0tIDIgdHJpZ2dl cnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNh bGVzcGVvcGxlIFZBTFVFUyAoMjAsICdTbWlybm9mZicpOworTk9USUNFOiAgdHJpZ2dlcihz YWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2 ZWwgPSBST1cKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9u ID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gU1RBVEVNRU5UCistLSAxIHRyaWdn ZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBf NDAgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUp IGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitT RUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMDFfMTA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxl c3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgMSB8IFBvaXJvdAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz cGVvcGxlMTBfNDA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAxMCB8IE1h eQorICAgICAgICAgICAgIDE5IHwgSXZhbm92CisgICAgICAgICAgICAgMjAgfCBTbWlybm9m ZgorICAgICAgICAgICAgIDMwIHwgRm9yZAorKDQgcm93cykKKworRFJPUCBUQUJMRSBzYWxl c3Blb3BsZTsKK0RST1AgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCk7Cist LQorLS0gVGVzdDogbWVyZ2UgcGFydGl0aW9ucyB3aXRoIGRlbGV0ZWQgY29sdW1ucworLS0K K0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBL RVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAo c2FsZXNwZXJzb25faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElU SU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKKy0tIENy ZWF0ZSBwYXJ0aXRpb25zIHdpdGggc29tZSBkZWxldGVkIGNvbHVtbnM6CitDUkVBVEUgVEFC TEUgc2FsZXNwZW9wbGUxMF8yMChkMSBWQVJDSEFSKDMwKSwgc2FsZXNwZXJzb25faWQgSU5U IFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NSRUFURSBU QUJMRSBzYWxlc3Blb3BsZTIwXzMwKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwg ZDIgSU5ULCAgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitDUkVBVEUgVEFCTEUg c2FsZXNwZW9wbGUzMF80MChzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQzIERB VEUsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworSU5TRVJUIElOVE8gc2FsZXNw ZW9wbGUxMF8yMCBWQUxVRVMgKCdkdW1teSB2YWx1ZSAxJywgMTksICdJdmFub3YnKTsKK0lO U0VSVCBJTlRPIHNhbGVzcGVvcGxlMjBfMzAgVkFMVUVTICgyMCwgMTAxLCAnU21pcm5vZmYn KTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMzBfNDAgVkFMVUVTICgzMSwgbm93KCksICdQ b3BvdicpOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF8yMCBEUk9QIENPTFVNTiBkMTsK K0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAgRFJPUCBDT0xVTU4gZDI7CitBTFRFUiBU QUJMRSBzYWxlc3Blb3BsZTMwXzQwIERST1AgQ09MVU1OIGQzOworQUxURVIgVEFCTEUgc2Fs ZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMg RlJPTSAoMTApIFRPICgyMCk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFS VElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsK K0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUz MF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApOworSU5TRVJUIElOVE8gc2FsZXNw ZW9wbGUgVkFMVUVTCisgICgxLCAnUG9pcm90JyksCisgICgxMCwgJ01heScpLAorICAoMzAs ICdGb3JkJyk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBNRVJHRSBQQVJUSVRJT05TIChz YWxlc3Blb3BsZTEwXzIwLCBzYWxlc3Blb3BsZTIwXzMwLCBzYWxlc3Blb3BsZTMwXzQwKSBJ TlRPIHNhbGVzcGVvcGxlMTBfNDA7CitzZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxlOworIHNh bGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKyAgICAgICAgICAg ICAxOSB8IEl2YW5vdgorICAgICAgICAgICAgIDEwIHwgTWF5CisgICAgICAgICAgICAgMjAg fCBTbWlybm9mZgorICAgICAgICAgICAgIDMxIHwgUG9wb3YKKyAgICAgICAgICAgICAzMCB8 IEZvcmQKKyg2IHJvd3MpCisKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGUwMV8xMDsKKyBz YWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAxIHwgUG9pcm90CisoMSByb3cpCisK K3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGUxMF80MDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNh bGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgIDE5IHwgSXZhbm92CisgICAgICAgICAgICAgMTAgfCBNYXkKKyAgICAg ICAgICAgICAyMCB8IFNtaXJub2ZmCisgICAgICAgICAgICAgMzEgfCBQb3BvdgorICAgICAg ICAgICAgIDMwIHwgRm9yZAorKDUgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZTsK Ky0tCistLSBUZXN0OiBtZXJnZSBzdWItcGFydGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBz YWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBC WSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRP ICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIw MjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0 LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNwZXJzb25faWQgSU5U LCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxl c19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfYXByMjAyMl8wMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfYXByMjAyMl8xMF8yMCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTEwJykgVE8gKCcyMDIyLTA0LTIwJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMl8yMF8zMCBQQVJUSVRJT04gT0Ygc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1LTAxJyk7 CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVG QVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxl c19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAor ICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQn LCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAn MjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyks CisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGkn LCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwg ICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEn KSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdU cnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUw LCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0w OScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1Qg dGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfYXByMjAyMiBPUkRFUiBCWSB0YWJs ZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworICAg ICAgdGFibGVvaWQgICAgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorIHNhbGVzX2FwcjIwMjJfMDFfMTAgfCAgICAgICAgICAgICAgNSB8IERlZXYg ICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgc2FsZXNfYXByMjAy Ml8wMV8xMCB8ICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAg IDM4MCB8IDA0LTA2LTIwMjIKKyBzYWxlc19hcHIyMDIyXzEwXzIwIHwgICAgICAgICAgICAg IDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorIHNh bGVzX2FwcjIwMjJfMjBfMzAgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAg fCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoNCByb3dzKQorCitBTFRFUiBUQUJMRSBz YWxlc19hcHIyMDIyIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2FwcjIwMjJfMDFfMTAsIHNh bGVzX2FwcjIwMjJfMTBfMjAsIHNhbGVzX2FwcjIwMjJfMjBfMzApIElOVE8gc2FsZXNfYXBy X2FsbDsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19hcHIyMDIy IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNw ZXJzb25faWQ7CisgICB0YWJsZW9pZCAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJz b25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgc2FsZXNfYXByX2FsbCB8ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAg ICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyBzYWxlc19hcHJfYWxsIHwg ICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQt MTMtMjAyMgorIHNhbGVzX2Fwcl9hbGwgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAg ICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgc2FsZXNfYXByX2FsbCB8ICAg ICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2 LTIwMjIKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gQlkg TElTVCBwYXJ0aXRpb25pbmcKKy0tCistLQorLS0gVGVzdDogc3BlY2lmaWMgZXJyb3JzIGZv ciBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0Ciso c2FsZXNwZXJzb25faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFksCisgc2Fs ZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwK KyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBM SVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04g T0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycs ICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX3dlc3QgUEFSVElUSU9OIE9GIHNh bGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZP UiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19jZW50cmFsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxV RVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKK0NSRUFURSBUQUJM RSBzYWxlc19saXN0MiAoTElLRSBzYWxlc19saXN0KSBQQVJUSVRJT04gQlkgTElTVCAoc2Fs ZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQyIFBBUlRJVElPTiBPRiBzYWxl c19saXN0MiBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxz aW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyczIgUEFSVElUSU9OIE9GIHNhbGVz X2xpc3QyIERFRkFVTFQ7CitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwgKExJS0Ugc2Fs ZXNfbGlzdCk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwyICh2Y2ggVkFSQ0hBUig1 KSk7CistLSBFUlJPUjogICJzYWxlc19leHRlcm5hbCIgaXMgbm90IGEgcGFydGl0aW9uIG9m IHBhcnRpdGlvbmVkIHRhYmxlICJzYWxlc19saXN0IgorQUxURVIgVEFCTEUgc2FsZXNfbGlz dCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19leHRl cm5hbCkgSU5UTyBzYWxlc19hbGw7CitFUlJPUjogICJzYWxlc19leHRlcm5hbCIgaXMgbm90 IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJzYWxlc19saXN0IgorSElOVDog IEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRp dGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucworLS0gRVJST1I6ICAic2FsZXNfZXh0 ZXJuYWwyIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInNhbGVz X2xpc3QiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVz X3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2V4dGVybmFsMikgSU5UTyBzYWxlc19hbGw7CitF UlJPUjogICJzYWxlc19leHRlcm5hbDIiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRp b25lZCB0YWJsZSAic2FsZXNfbGlzdCIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0Ug UEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBh cnRpdGlvbnMKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX25vcmQyIiBpcyBub3QgYSBw YXJ0aXRpb24gb2YgcmVsYXRpb24gInNhbGVzX2xpc3QiCitBTFRFUiBUQUJMRSBzYWxlc19s aXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX25vcmQyLCBzYWxlc19l YXN0KSBJTlRPIHNhbGVzX2FsbDsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVzX25vcmQyIiBp cyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInNhbGVzX2xpc3QiCitISU5UOiAgQUxU RVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9u cyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zCitEUk9QIFRBQkxFIHNhbGVzX2V4dGVybmFs MjsKK0RST1AgVEFCTEUgc2FsZXNfZXh0ZXJuYWw7CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Qy OworRFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRlc3Q6IEJZIExJU1QgcGFydGl0 aW9uaW5nLCBNRVJHRSBQQVJUSVRJT05TIHdpdGggZGF0YQorLS0KK0NSRUFURSBUQUJMRSBz YWxlc19saXN0Cisoc2FsZXNwZXJzb25faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURF TlRJVFksCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBW QVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BB UlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlz dF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxl c3BlcnNvbl9uYW1lKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzX3N0YXRlX2lk eCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFC TEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgn T3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX3dlc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2Jv bicsICdOZXcgWW9yaycsICdNYWRyaWQnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0IFBB UlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGkn LCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19jZW50cmFsIFBBUlRJVElP TiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5 aXYnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xp c3QgREVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzcGVyc29uX25hbWUs IHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUworICAoJ1Ry dW1wJywgICAgJ0JlamluZycsICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKSwKKyAgKCdT bWlybm9mZicsICdOZXcgWW9yaycsICAgICAgICA1MDAsICcyMDIyLTAzLTAzJyksCisgICgn Rm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAwLCAnMjAyMi0wMy0wNScpLAorICAo J0l2YW5vdicsICAgJ1dhcnNhdycsICAgICAgICAgIDc1MCwgJzIwMjItMDMtMDQnKSwKKyAg KCdEZWV2JywgICAgICdMaXNib24nLCAgICAgICAgICAyNTAsICcyMDIyLTAzLTA3JyksCisg ICgnUG9pcm90JywgICAnQmVybGluJywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpLAor ICAoJ01heScsICAgICAgJ0hlbHNpbmtpJywgICAgICAgMTIwMCwgJzIwMjItMDMtMDYnKSwK KyAgKCdMaScsICAgICAgICdWbGFkaXZvc3RvaycsICAgIDExNTAsICcyMDIyLTAzLTA5Jyks CisgICgnTWF5JywgICAgICAnSGVsc2lua2knLCAgICAgICAxMjAwLCAnMjAyMi0wMy0xMScp LAorICAoJ0hhbGRlcicsICAgJ09zbG8nLCAgICAgICAgICAgIDgwMCwgJzIwMjItMDMtMDIn KSwKKyAgKCdNdWxsZXInLCAgICdNYWRyaWQnLCAgICAgICAgICA2NTAsICcyMDIyLTAzLTA1 JyksCisgICgnU21pdGgnLCAgICAnS3lpdicsICAgICAgICAgICAgMzUwLCAnMjAyMi0wMy0x MCcpLAorICAoJ0dhbmRpJywgICAgJ1dhcnNhdycsICAgICAgICAgIDE1MCwgJzIwMjItMDMt MDgnKSwKKyAgKCdQbGF0bycsICAgICdMaXNib24nLCAgICAgICAgICA5NTAsICcyMDIyLTAz LTA1Jyk7CistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorRVhFQ1VURSBn ZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19saXN0fScpOworICAgICAgb2lkICAgICAgfCBy ZWxwZXJzaXN0ZW5jZSB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAg ICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Cisgc2FsZXNfY2VudHJhbCB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykK KyBzYWxlc19lYXN0ICAgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0 b2snKQorIHNhbGVzX25vcmQgICAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcn LCAnSGVsc2lua2knKQorIHNhbGVzX3dlc3QgICAgfCBwICAgICAgICAgICAgICB8IHIgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcg WW9yaycsICdNYWRyaWQnKQorIHNhbGVzX290aGVycyAgfCBwICAgICAgICAgICAgICB8IHIg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDUgcm93cykKKworQUxURVIg VEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19l YXN0LCBzYWxlc19jZW50cmFsKSBJTlRPIHNhbGVzX2FsbDsKKy0tIHNob3cgcGFydGl0aW9u cyB3aXRoIGNvbmRpdGlvbnM6CitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3NhbGVz X2xpc3R9Jyk7CisgICAgIG9pZCAgICAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwg aW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2FsbCAgICB8IHAgICAg ICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElO ICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcnLCAnRGVsaGknLCAn VmxhZGl2b3N0b2snLCAnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykKKyBzYWxlc19ub3Jk ICAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9S IFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKQorIHNh bGVzX290aGVycyB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBERUZBVUxUCisoMyByb3dzKQorCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAq IEZST00gc2FsZXNfbGlzdCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09M TEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworICB0YWJsZW9pZCAgfCBzYWxlc3BlcnNvbl9p ZCB8IHNhbGVzcGVyc29uX25hbWUgfCAgc2FsZXNfc3RhdGUgICB8IHNhbGVzX2Ftb3VudCB8 IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyBzYWxlc19hbGwgIHwgICAgICAgICAgICAgIDEgfCBUcnVtcCAgICAgICAgICAgIHwgQmVq aW5nICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgc2FsZXNfYWxsICB8 ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8IE5ldyBZb3JrICAgICAgIHwg ICAgICAgICAgNTAwIHwgMDMtMDMtMjAyMgorIHNhbGVzX2FsbCAgfCAgICAgICAgICAgICAg NCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICAgICB8ICAgICAgICAgIDc1MCB8 IDAzLTA0LTIwMjIKKyBzYWxlc19hbGwgIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAg ICAgICAgIHwgTGlzYm9uICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0wNy0yMDIyCisg c2FsZXNfYWxsICB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8IEJlcmxp biAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEtMjAyMgorIHNhbGVzX2FsbCAgfCAg ICAgICAgICAgICAgOCB8IExpICAgICAgICAgICAgICAgfCBWbGFkaXZvc3RvayAgICB8ICAg ICAgICAgMTE1MCB8IDAzLTA5LTIwMjIKKyBzYWxlc19hbGwgIHwgICAgICAgICAgICAgMTEg fCBNdWxsZXIgICAgICAgICAgIHwgTWFkcmlkICAgICAgICAgfCAgICAgICAgICA2NTAgfCAw My0wNS0yMDIyCisgc2FsZXNfYWxsICB8ICAgICAgICAgICAgIDEyIHwgU21pdGggICAgICAg ICAgICB8IEt5aXYgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTAtMjAyMgorIHNh bGVzX2FsbCAgfCAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcg ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKyBzYWxlc19hbGwgIHwgICAg ICAgICAgICAgMTQgfCBQbGF0byAgICAgICAgICAgIHwgTGlzYm9uICAgICAgICAgfCAgICAg ICAgICA5NTAgfCAwMy0wNS0yMDIyCisgc2FsZXNfbm9yZCB8ICAgICAgICAgICAgICAzIHwg Rm9yZCAgICAgICAgICAgICB8IFN0LiBQZXRlcnNidXJnIHwgICAgICAgICAyMDAwIHwgMDMt MDUtMjAyMgorIHNhbGVzX25vcmQgfCAgICAgICAgICAgICAgNyB8IE1heSAgICAgICAgICAg ICAgfCBIZWxzaW5raSAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTA2LTIwMjIKKyBzYWxl c19ub3JkIHwgICAgICAgICAgICAgIDkgfCBNYXkgICAgICAgICAgICAgIHwgSGVsc2lua2kg ICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0xMS0yMDIyCisgc2FsZXNfbm9yZCB8ICAgICAg ICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8IE9zbG8gICAgICAgICAgIHwgICAgICAg ICAgODAwIHwgMDMtMDItMjAyMgorKDE0IHJvd3MpCisKKy0tIFVzZSBpbmRleHNjYW4gZm9y IHRlc3RpbmcgaW5kZXhlcyBhZnRlciBtZXJnaW5nIHBhcnRpdGlvbnMKK1NFVCBlbmFibGVf c2Vxc2NhbiA9IE9GRjsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxl c19hbGwgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXgg U2NhbiB1c2luZyBzYWxlc19hbGxfc2FsZXNfc3RhdGVfaWR4IG9uIHNhbGVzX2FsbAorICAg SW5kZXggQ29uZDogKChzYWxlc19zdGF0ZSk6OnRleHQgPSAnV2Fyc2F3Jzo6dGV4dCkKKygy IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYWxsIFdIRVJFIHNhbGVzX3N0YXRlID0g J1dhcnNhdyc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNf c3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAg ICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRp ICAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIK KygyIHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19s aXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIHNhbGVzX2FsbF9zYWxlc19zdGF0ZV9p ZHggb24gc2FsZXNfYWxsIHNhbGVzX2xpc3QKKyAgIEluZGV4IENvbmQ6ICgoc2FsZXNfc3Rh dGUpOjp0ZXh0ID0gJ1dhcnNhdyc6OnRleHQpCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9N IHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyBzYWxlc3BlcnNv bl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8 IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA0 IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMt MDQtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8IFdhcnNhdyAg ICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDIgcm93cykKKworRVhQTEFJTiAo Q09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNwZXJzb25f bmFtZSA9ICdJdmFub3YnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAgIC0+ICBJbmRleCBTY2FuIHVzaW5n IHNhbGVzX2FsbF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBvbiBzYWxlc19hbGwgc2FsZXNfbGlz dF8xCisgICAgICAgICBJbmRleCBDb25kOiAoKHNhbGVzcGVyc29uX25hbWUpOjp0ZXh0ID0g J0l2YW5vdic6OnRleHQpCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBzYWxlc19ub3Jk IHNhbGVzX2xpc3RfMgorICAgICAgICAgUmVjaGVjayBDb25kOiAoKHNhbGVzcGVyc29uX25h bWUpOjp0ZXh0ID0gJ0l2YW5vdic6OnRleHQpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gc2FsZXNfbm9yZF9zYWxlc3BlcnNvbl9uYW1lX2lkeAorICAgICAgICAgICAg ICAgSW5kZXggQ29uZDogKChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFub3YnOjp0 ZXh0KQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gc2FsZXNfb3RoZXJzIHNhbGVzX2xp c3RfMworICAgICAgICAgUmVjaGVjayBDb25kOiAoKHNhbGVzcGVyc29uX25hbWUpOjp0ZXh0 ID0gJ0l2YW5vdic6OnRleHQpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g c2FsZXNfb3RoZXJzX3NhbGVzcGVyc29uX25hbWVfaWR4CisgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAoKHNhbGVzcGVyc29uX25hbWUpOjp0ZXh0ID0gJ0l2YW5vdic6OnRleHQpCiso MTEgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzcGVyc29u X25hbWUgPSAnSXZhbm92JzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUg fCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdh cnNhdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorKDEgcm93KQorCitSRVNF VCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0tCistLSBUcnkg dG8gTUVSR0UgcGFydGl0aW9ucyBvZiBhbm90aGVyIHRhYmxlLgorLS0KK0NSRUFURSBUQUJM RSB0MSAoaSBpbnQsIGEgaW50LCBiIGludCwgYyBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAo YSwgYik7CitDUkVBVEUgVEFCTEUgdDFwMSBQQVJUSVRJT04gT0YgdDEgRk9SIFZBTFVFUyBG Uk9NICgxLCAxKSBUTyAoMSwgMik7CitDUkVBVEUgVEFCTEUgdDIgKGkgaW50LCB0IHRleHQp IFBBUlRJVElPTiBCWSBSQU5HRSAodCk7CitDUkVBVEUgVEFCTEUgdDJwYSBQQVJUSVRJT04g T0YgdDIgRk9SIFZBTFVFUyBGUk9NICgnQScpIFRPICgnQycpOworQ1JFQVRFIFRBQkxFIHQz IChpIGludCwgdCB0ZXh0KTsKKy0tIEVSUk9SOiAgcmVsYXRpb24gInQxcDEiIGlzIG5vdCBh IHBhcnRpdGlvbiBvZiByZWxhdGlvbiAidDIiCitBTFRFUiBUQUJMRSB0MiBNRVJHRSBQQVJU SVRJT05TICh0MXAxLCB0MnBhKSBJTlRPIHQycDsKK0VSUk9SOiAgcmVsYXRpb24gInQxcDEi IGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiAidDIiCitISU5UOiAgQUxURVIgVEFC TEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24n dCBoYXZlIHN1Yi1wYXJ0aXRpb25zCistLSBFUlJPUjogICJ0MyIgaXMgbm90IGEgcGFydGl0 aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJ0MiIKK0FMVEVSIFRBQkxFIHQyIE1FUkdFIFBB UlRJVElPTlMgKHQycGEsIHQzKSBJTlRPIHQycDsKK0VSUk9SOiAgInQzIiBpcyBub3QgYSBw YXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInQyIgorSElOVDogIEFMVEVSIFRBQkxF IC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3Qg aGF2ZSBzdWItcGFydGl0aW9ucworRFJPUCBUQUJMRSB0MzsKK0RST1AgVEFCTEUgdDI7CitE Uk9QIFRBQkxFIHQxOworLS0KKy0tIENoZWNrIHRoZSBwYXJ0aXRpb24gaW5kZXggbmFtZSBp ZiB0aGUgcGFydGl0aW9uIG5hbWUgaXMgdGhlIHNhbWUgYXMgb25lCistLSBvZiB0aGUgbWVy Z2VkIHBhcnRpdGlvbnMuCistLQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50LCBQUklNQVJZIEtF WShpKSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFS VElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUg dHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQ1JF QVRFIElOREVYIHRpZHggT04gdChpKTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9O UyAodHBfMV8yLCB0cF8wXzEpIElOVE8gdHBfMV8yOworLS0gSW5kZXhuYW1lIHZhbHVlcyBz aG91bGQgYmUgJ3RwXzFfMl9wa2V5JyBhbmQgJ3RwXzFfMl9pX2lkeCcuCitcZCsgdHBfMV8y CisgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYS50cF8xXzIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxl IHwgRGVmYXVsdCB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGkgICAgICB8IGludGVnZXIg fCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAg ICAgIHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikKK1Bh cnRpdGlvbiBjb25zdHJhaW50OiAoKGkgSVMgTk9UIE5VTEwpIEFORCAoaSA+PSAwKSBBTkQg KGkgPCAyKSkKK0luZGV4ZXM6CisgICAgInRwXzFfMl9wa2V5IiBQUklNQVJZIEtFWSwgYnRy ZWUgKGkpCisgICAgInRwXzFfMl9pX2lkeCIgYnRyZWUgKGkpCitOb3QtbnVsbCBjb25zdHJh aW50czoKKyAgICAidF9pX25vdF9udWxsIiBOT1QgTlVMTCAiaSIgKGluaGVyaXRlZCkKKwor RFJPUCBUQUJMRSB0OworLS0KKy0tIFRyeSB0byBNRVJHRSBwYXJ0aXRpb25zIG9mIHRlbXBv cmFyeSB0YWJsZS4KKy0tCitCRUdJTjsKK1NIT1cgc2VhcmNoX3BhdGg7CisgICAgICAgICAg IHNlYXJjaF9wYXRoICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWMKKygxIHJvdykKKworQ1JF QVRFIFRFTVAgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgT04gQ09N TUlUIERST1A7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8xXzIgUEFS VElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitDUkVBVEUgVEVNUCBU QUJMRSB0cF8yXzMgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoMyk7 CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8zXzQgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBG Uk9NICgzKSBUTyAoNCk7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBf MSwgdHBfMV8yKSBJTlRPIHBnX3RlbXAudHBfMF8yOworQUxURVIgVEFCTEUgdCBNRVJHRSBQ QVJUSVRJT05TICh0cF8wXzIsIHRwXzJfMykgSU5UTyBwZ190ZW1wLnRwXzBfMzsKKy0tIFBh cnRpdGlvbiBzaG91bGQgYmUgdGVtcG9yYXJ5LgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2lu Zm8oJ3t0fScpOworICBvaWQgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRl dGFjaHBlbmRpbmcgfCAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAKKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgdHBfMF8zIHwgdCAgICAgICAgICAgICAgfCByICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDMpCisgdHBf M180IHwgdCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZP UiBWQUxVRVMgRlJPTSAoMykgVE8gKDQpCisoMiByb3dzKQorCistLSBFUlJPUjogIGNhbm5v dCBjcmVhdGUgYSBwZXJtYW5lbnQgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHRlbXBvcmFy eSByZWxhdGlvbiAidCIKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8z LCB0cF8zXzQpIElOVE8gdHBfMF80OworRVJST1I6ICBjYW5ub3QgY3JlYXRlIGEgcGVybWFu ZW50IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVsYXRpb24gInQiCitS T0xMQkFDSzsKKy0tCistLSBUcnkgbWl4aW5nIHBlcm1hbmVudCBhbmQgdGVtcG9yYXJ5IHBh cnRpdGlvbnMuCistLQorQkVHSU47CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21l cmdlX3NjaGVtYSwgcGdfdGVtcCwgcHVibGljOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQ QVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04g T0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIg UEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitTRUxFQ1QgYy5v aWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVscGVyc2lzdGVuY2UgRlJPTSBwZ19jYXRh bG9nLnBnX2NsYXNzIGMgV0hFUkUgYy5vaWQgPSAndCc6OnJlZ2NsYXNzOworIG9pZCB8IHJl bHBlcnNpc3RlbmNlIAorLS0tLS0rLS0tLS0tLS0tLS0tLS0tLQorIHQgICB8IHAKKygxIHJv dykKKworRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3t0fScpOworICBvaWQgICB8IHJl bHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgcGdf Z2V0X2V4cHIgICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdHBf MF8xIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpCisgdHBfMV8yIHwgcCAgICAgICAgICAgICAgfCBy ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIp CisoMiByb3dzKQorCitTQVZFUE9JTlQgczsKK1NFVCBzZWFyY2hfcGF0aCA9IHBnX3RlbXAs IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CistLSBDYW4ndCBtZXJnZSBwZXJz aXN0ZW50IHBhcnRpdGlvbnMgaW50byBhIHRlbXBvcmFyeSBwYXJ0aXRpb24KK0FMVEVSIFRB QkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOwor RVJST1I6ICBjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IHJlbGF0aW9uIGFzIHBhcnRpdGlv biBvZiBwZXJtYW5lbnQgcmVsYXRpb24gInQiCitST0xMQkFDSyBUTyBTQVZFUE9JTlQgczsK K1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7Cist LSBDYW4ndCBtZXJnZSBwZXJzaXN0ZW50IHBhcnRpdGlvbnMgaW50byBhIHRlbXBvcmFyeSBw YXJ0aXRpb24KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8x XzIpIElOVE8gcGdfdGVtcC50cF8wXzI7CitFUlJPUjogIGNhbm5vdCBjcmVhdGUgYSB0ZW1w b3JhcnkgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHBlcm1hbmVudCByZWxhdGlvbiAidCIK K1JPTExCQUNLOworQkVHSU47CitTRVQgc2VhcmNoX3BhdGggPSBwZ190ZW1wLCBwYXJ0aXRp b25zX21lcmdlX3NjaGVtYSwgcHVibGljOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJU SVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0Yg dCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFS VElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitTRUxFQ1QgYy5vaWQ6 OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVscGVyc2lzdGVuY2UgRlJPTSBwZ19jYXRhbG9n LnBnX2NsYXNzIGMgV0hFUkUgYy5vaWQgPSAndCc6OnJlZ2NsYXNzOworIG9pZCB8IHJlbHBl cnNpc3RlbmNlIAorLS0tLS0rLS0tLS0tLS0tLS0tLS0tLQorIHQgICB8IHQKKygxIHJvdykK KworRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3t0fScpOworICBvaWQgICB8IHJlbHBl cnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgcGdfZ2V0 X2V4cHIgICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdHBfMF8x IHwgdCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDEpCisgdHBfMV8yIHwgdCAgICAgICAgICAgICAgfCByICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpCiso MiByb3dzKQorCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwg cGdfdGVtcCwgcHVibGljOworLS0gQ2FuJ3QgbWVyZ2UgdGVtcG9yYXJ5IHBhcnRpdGlvbnMg aW50byBhIHBlcnNpc3RlbnQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJ VElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK0VSUk9SOiAgY2Fubm90IGNy ZWF0ZSBhIHBlcm1hbmVudCByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJl bGF0aW9uICJ0IgorUk9MTEJBQ0s7CitERUFMTE9DQVRFIGdldF9wYXJ0aXRpb25faW5mbzsK Ky0tIENoZWNrIHRoZSBuZXcgcGFydGl0aW9uIGluaGVyaXRzIHBhcmVudCdzIHRhYmxlc3Bh Y2UKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7 CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQgUFJJTUFSWSBLRVkgVVNJTkcgSU5ERVggVEFCTEVT UEFDRSByZWdyZXNzX3RibHNwYWNlKQorICBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIFRBQkxF U1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9O IE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8y IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQUxURVIgVEFC TEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitT RUxFQ1QgdGFibGVuYW1lLCB0YWJsZXNwYWNlIEZST00gcGdfdGFibGVzCisgIFdIRVJFIHRh YmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9u c19tZXJnZV9zY2hlbWEnCisgIE9SREVSIEJZIHRhYmxlbmFtZSwgdGFibGVzcGFjZTsKKyB0 YWJsZW5hbWUgfCAgICB0YWJsZXNwYWNlICAgIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgdCAgICAgICAgIHwgcmVncmVzc190YmxzcGFjZQorIHRwXzBfMiAgICB8IHJl Z3Jlc3NfdGJsc3BhY2UKKygyIHJvd3MpCisKK1NFTEVDVCB0YWJsZW5hbWUsIGluZGV4bmFt ZSwgdGFibGVzcGFjZSBGUk9NIHBnX2luZGV4ZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgn dCcsICd0cF8wXzInKSBBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25zX21lcmdlX3NjaGVt YScKKyAgT1JERVIgQlkgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRhYmxlc3BhY2U7CisgdGFi bGVuYW1lIHwgIGluZGV4bmFtZSAgfCAgICB0YWJsZXNwYWNlICAgIAorLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgfCB0X3BrZXkg ICAgICB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8wXzIgICAgfCB0cF8wXzJfcGtleSB8IHJl Z3Jlc3NfdGJsc3BhY2UKKygyIHJvd3MpCisKK0RST1AgVEFCTEUgdDsKKy0tIENoZWNrIHRo ZSBuZXcgcGFydGl0aW9uIGluaGVyaXRzIHBhcmVudCdzIHRhYmxlIGFjY2VzcyBtZXRob2QK K1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CitD UkVBVEUgQUNDRVNTIE1FVEhPRCBwYXJ0aXRpb25zX21lcmdlX2hlYXAgVFlQRSBUQUJMRSBI QU5ETEVSIGhlYXBfdGFibGVhbV9oYW5kbGVyOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQ QVJUSVRJT04gQlkgUkFOR0UgKGkpIFVTSU5HIHBhcnRpdGlvbnNfbWVyZ2VfaGVhcDsKK0NS RUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMg RlJPTSAoMSkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8w XzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitTRUxFQ1QgYy5yZWxuYW1lLCBhLmFtbmFtZQor RlJPTSBwZ19jbGFzcyBjIEpPSU4gcGdfYW0gYSBPTiBjLnJlbGFtID0gYS5vaWQKK1dIRVJF IGMub2lkIElOICgndCc6OnJlZ2NsYXNzLCAndHBfMF8yJzo6cmVnY2xhc3MpCitPUkRFUiBC WSBjLnJlbG5hbWU7CisgcmVsbmFtZSB8ICAgICAgICBhbW5hbWUgICAgICAgICAKKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgfCBwYXJ0aXRpb25zX21l cmdlX2hlYXAKKyB0cF8wXzIgIHwgcGFydGl0aW9uc19tZXJnZV9oZWFwCisoMiByb3dzKQor CitEUk9QIFRBQkxFIHQ7CitEUk9QIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uc19tZXJnZV9o ZWFwOworLS0gVGVzdCBwZXJtaXNzaW9uIGNoZWNrcy4gIFRoZSB1c2VyIG5lZWRzIHRvIG93 biB0aGUgcGFyZW50IHRhYmxlIGFuZCBhbGwKKy0tIHRoZSBtZXJnaW5nIHBhcnRpdGlvbnMg dG8gZG8gdGhlIG1lcmdlLgorQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fbWVyZ2Vf YWxpY2U7CitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitHUkFO VCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFy dGl0aW9uX21lcmdlX2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21l cmdlX3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitTRVQgU0VTU0lP TiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworQ1JFQVRF IFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxF IHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NS RUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoMik7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21l cmdlX2JvYjsKKy0tIEVSUk9SOiAgbXVzdCBiZSBvd25lciBvZiB0YWJsZSB0CitBTFRFUiBU QUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsK K0VSUk9SOiAgbXVzdCBiZSBvd25lciBvZiB0YWJsZSB0CitSRVNFVCBTRVNTSU9OIEFVVEhP UklaQVRJT047CitBTFRFUiBUQUJMRSB0IE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21l cmdlX2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25f bWVyZ2VfYm9iOworLS0gRVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHRwXzBfMQor QUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0 cF8wXzI7CitFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdHBfMF8xCitSRVNFVCBT RVNTSU9OIEFVVEhPUklaQVRJT047CitBTFRFUiBUQUJMRSB0cF8wXzEgT1dORVIgVE8gcmVn cmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiBy ZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CistLSBFUlJPUjogIG11c3QgYmUgb3duZXIg b2YgdGFibGUgdHBfMV8yCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBf MSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK0VSUk9SOiAgbXVzdCBiZSBvd25lciBvZiB0YWJs ZSB0cF8xXzIKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0FMVEVSIFRBQkxFIHRw XzFfMiBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitTRVQgU0VTU0lP TiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKKy0tIE9rOgor QUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0 cF8wXzI7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitEUk9QIFRBQkxFIHQ7Cist LSBUZXN0OiB3ZSBjYW4ndCBtZXJnZSBwYXJ0aXRpb25zIHdpdGggZGlmZmVyZW50IG93bmVy cworQ1JFQVRFIFRBQkxFIHRwXzBfMShpIGludCk7CitBTFRFUiBUQUJMRSB0cF8wXzEgT1dO RVIgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitDUkVBVEUgVEFCTEUgdHBf MV8yKGkgaW50KTsKK0FMVEVSIFRBQkxFIHRwXzFfMiBPV05FUiBUTyByZWdyZXNzX3BhcnRp dGlvbl9tZXJnZV9ib2I7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBS QU5HRSAoaSk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMF8xIEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9O IHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKKy0tIE93bmVyIGlzICdyZWdy ZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZSc6CitcZHQgdHBfMF8xCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHRhYmxlcworICAgICAgICAgU2NoZW1hICAgICAg ICAgIHwgIE5hbWUgIHwgVHlwZSAgfCAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgfCB0cF8w XzEgfCB0YWJsZSB8IHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlCisoMSByb3cpCisK Ky0tIE93bmVyIGlzICdyZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2InOgorXGR0IHRwXzFf MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHRhYmxlcworICAgICAg ICAgU2NoZW1hICAgICAgICAgIHwgIE5hbWUgIHwgVHlwZSAgfCAgICAgICAgICAgIE93bmVy ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYSB8IHRwXzFfMiB8IHRhYmxlIHwgcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iCiso MSByb3cpCisKKy0tIEVSUk9SOiAgcGFydGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZm ZXJlbnQgb3duZXJzCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwg dHBfMV8yKSBJTlRPIHRwXzBfMjsKK0VSUk9SOiAgcGFydGl0aW9ucyBiZWluZyBtZXJnZWQg aGF2ZSBkaWZmZXJlbnQgb3duZXJzCitEUk9QIFRBQkxFIHQ7CitSRVZPS0UgQUxMIE9OIFND SEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX21l cmdlX2FsaWNlOworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hl bWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitEUk9QIFJPTEUgcmVncmVz c19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25f bWVyZ2VfYm9iOworLS0gVGVzdCBmb3IgaGFzaCBwYXJ0aXRpb25lZCB0YWJsZQorQ1JFQVRF IFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgSEFTSChpKTsKK0NSRUFURSBUQUJMRSB0 cDEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRF UiAwKTsKK0NSRUFURSBUQUJMRSB0cDIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBXSVRI IChNT0RVTFVTIDIsIFJFTUFJTkRFUiAxKTsKKy0tIEVSUk9SOiAgcGFydGl0aW9uIG9mIGhh c2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIG1lcmdlZAorQUxURVIgVEFCTEUgdCBN RVJHRSBQQVJUSVRJT05TICh0cDEsIHRwMikgSU5UTyB0cDM7CitFUlJPUjogIHBhcnRpdGlv biBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBtZXJnZWQKKy0tIEVSUk9S OiAgbGlzdCBvZiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZCBzaG91bGQgaW5jbHVkZSBhdCBs ZWFzdCB0d28gcGFydGl0aW9ucworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0 cDEpIElOVE8gdHAzOworRVJST1I6ICBsaXN0IG9mIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2Vk IHNob3VsZCBpbmNsdWRlIGF0IGxlYXN0IHR3byBwYXJ0aXRpb25zCitEUk9QIFRBQkxFIHQ7 CistLSBUZXN0IGZvciBtZXJnZWQgcGFydGl0aW9uIHByb3BlcnRpZXM6CistLSAqIFNUQVRJ U1RJQ1MgaXMgZW1wdHkKKy0tICogQ09NTUVOVCBpcyBlbXB0eQorLS0gKiBERUZBVUxUUyBh cmUgdGhlIHNhbWUgYXMgREVGQVVMVFMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIFNU T1JBR0UgaXMgdGhlIHNhbWUgYXMgU1RPUkFHRSBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0t ICogR0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBhcmUgdGhlIHNhbWUgYXMgR0VORVJBVEVE IGFuZCBDT05TVFJBSU5UUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogVFJJR0dFUlMg YXJlIHRoZSBzYW1lIGFzIFRSSUdHRVJTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorXHNldCBI SURFX1RPQVNUX0NPTVBSRVNTSU9OIGZhbHNlCitDUkVBVEUgVEFCTEUgdAorKGkgaW50IE5P VCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIEVYVEVOREVEIENPTVBSRVNTSU9OIHBnbHogREVG QVVMVCAnZGVmYXVsdF90JywKKyBiIGJpZ2ludCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZ UyBhcyAoJzIwMjItMDEtMDEnKSBTVE9SRUQpIFBBUlRJVElPTiBCWSBSQU5HRSAoYWJzKGkp KTsKK0NPTU1FTlQgT04gQ09MVU1OIHQuaSBJUyAndDEuaSc7CitDUkVBVEUgVEFCTEUgdHBf MF8xCisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgTUFJTiBERUZBVUxUICdk ZWZhdWx0X3RwXzBfMScsCisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMg YXMgKCcyMDIyLTAyLTAyJykgU1RPUkVEKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJ VElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDT01NRU5UIE9OIENP TFVNTiB0cF8wXzEuaSBJUyAndHBfMF8xLmknOworQ1JFQVRFIFRBQkxFIHRwXzFfMgorKGkg aW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIE1BSU4gREVGQVVMVCAnZGVmYXVsdF90 cF8xXzInLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgnMjAy Mi0wMy0wMycpIFNUT1JFRCk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBf MV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQ09NTUVOVCBPTiBDT0xVTU4gdHBf MV8yLmkgSVMgJ3RwXzFfMi5pJzsKK0NSRUFURSBTVEFUSVNUSUNTIHRfc3RhdCAoREVQRU5E RU5DSUVTKSBvbiBpLCBiIGZyb20gdDsKK0NSRUFURSBTVEFUSVNUSUNTIHRwXzBfMV9zdGF0 IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0cF8wXzE7CitDUkVBVEUgU1RBVElTVElD UyB0cF8xXzJfc3RhdCAoREVQRU5ERU5DSUVTKSBvbiBpLCBiIGZyb20gdHBfMV8yOworQUxU RVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2sgQ0hFQ0sgKGIgPiAwKTsKK0FM VEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrMSBDSEVDSyAoYiA+IDApIE5P VCBFTkZPUkNFRDsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrMiBD SEVDSyAoYiA+IDApIE5PVCBWQUxJRDsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQg dF9iX25uIE5PVCBOVUxMIGIgTk9UIFZBTElEOworSU5TRVJUIElOVE8gdHBfMF8xKGksIHQs IGIpIFZBTFVFUygwLCBERUZBVUxULCAxKTsKK0lOU0VSVCBJTlRPIHRwXzFfMihpLCB0LCBi KSBWQUxVRVMoMSwgREVGQVVMVCwgMik7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiB0 cmlnZ2VyX2Z1bmN0aW9uKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBB UworJEJPRFkkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBh Y3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1AsIFRH X1dIRU4sIFRHX0xFVkVMOworICBSRVRVUk4gbmV3OworRU5EOworJEJPRFkkOworQ1JFQVRF IFRSSUdHRVIgdF9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04g dCBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlvbign dCcpOworQ1JFQVRFIFRSSUdHRVIgdHBfMF8xX2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIg QkVGT1JFIElOU0VSVCBPTiB0cF8wXzEgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VE VVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3RwXzBfMScpOworQ1JFQVRFIFRSSUdHRVIgdHBfMV8y X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF8xXzIgRk9S IEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3RwXzFf MicpOworXGQrIHRwXzBfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uc19tZXJnZV9zY2hlbWEudHBfMF8x IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAg ICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICAgICAgIHwgU3RvcmFnZSB8IENv bXByZXNzaW9uIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAg IHwgbm90IG51bGwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8IHRwXzBf MS5pCisgdCAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgJ2RlZmF1 bHRfdHBfMF8xJzo6dGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBtYWluICAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAgfCBiaWdpbnQgIHwgICAg ICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8 IAorIGQgICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRl ZCBhbHdheXMgYXMgKCcwMi0wMi0yMDIyJzo6ZGF0ZSkgc3RvcmVkIHwgcGxhaW4gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMSkKK1BhcnRpdGlvbiBjb25zdHJhaW50OiAoKGFicyhpKSBJUyBO T1QgTlVMTCkgQU5EIChhYnMoaSkgPj0gMCkgQU5EIChhYnMoaSkgPCAxKSkKK0NoZWNrIGNv bnN0cmFpbnRzOgorICAgICJ0X2JfY2hlY2siIENIRUNLIChiID4gMCkKKyAgICAidF9iX2No ZWNrMSIgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQKKyAgICAidF9iX2NoZWNrMiIgQ0hF Q0sgKGIgPiAwKSBOT1QgVkFMSUQKK1N0YXRpc3RpY3Mgb2JqZWN0czoKKyAgICAicGFydGl0 aW9uc19tZXJnZV9zY2hlbWEudHBfMF8xX3N0YXQiIChkZXBlbmRlbmNpZXMpIE9OIGksIGIg RlJPTSB0cF8wXzEKK05vdC1udWxsIGNvbnN0cmFpbnRzOgorICAgICJ0cF8wXzFfaV9ub3Rf bnVsbCIgTk9UIE5VTEwgImkiIChpbmhlcml0ZWQpCisgICAgInRfYl9ubiIgTk9UIE5VTEwg ImIiIChpbmhlcml0ZWQpIE5PVCBWQUxJRAorVHJpZ2dlcnM6CisgICAgdF9iZWZvcmVfaW5z ZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfMF8xIEZPUiBFQUNIIFJPVyBF WEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKSwgT04gVEFCTEUgdAorICAg IHRwXzBfMV9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBf MF8xIEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3Rw XzBfMScpCisKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8x XzIpIElOVE8gdHBfMF8xOworXGQrIHRwXzBfMQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uc19tZXJnZV9z Y2hlbWEudHBfMF8xIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJs ZSB8ICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICAgICAgIHwg U3RvcmFnZSAgfCBDb21wcmVzc2lvbiB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAor LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGkgICAgICB8IGludGVn ZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgICB8IAorIHQgICAgICB8IHRleHQgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8 ICdkZWZhdWx0X3QnOjp0ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXh0 ZW5kZWQgfCBwZ2x6ICAgICAgICB8ICAgICAgICAgICAgICB8IAorIGIgICAgICB8IGJpZ2lu dCAgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgICB8IAorIGQgICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8 IGdlbmVyYXRlZCBhbHdheXMgYXMgKCcwMS0wMS0yMDIyJzo6ZGF0ZSkgc3RvcmVkIHwgcGxh aW4gICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0 IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpCitQYXJ0aXRpb24gY29uc3RyYWludDogKChh YnMoaSkgSVMgTk9UIE5VTEwpIEFORCAoYWJzKGkpID49IDApIEFORCAoYWJzKGkpIDwgMikp CitDaGVjayBjb25zdHJhaW50czoKKyAgICAidF9iX2NoZWNrIiBDSEVDSyAoYiA+IDApCisg ICAgInRfYl9jaGVjazEiIENIRUNLIChiID4gMCkgTk9UIEVORk9SQ0VECisgICAgInRfYl9j aGVjazIiIENIRUNLIChiID4gMCkgTk9UIFZBTElECitOb3QtbnVsbCBjb25zdHJhaW50czoK KyAgICAidF9pX25vdF9udWxsIiBOT1QgTlVMTCAiaSIgKGluaGVyaXRlZCkKKyAgICAidF9i X25uIiBOT1QgTlVMTCAiYiIgKGluaGVyaXRlZCkgTk9UIFZBTElECitUcmlnZ2VyczoKKyAg ICB0X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF8wXzEg Rk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigndCcpLCBP TiBUQUJMRSB0CisKK0lOU0VSVCBJTlRPIHQoaSwgdCwgYikgVkFMVUVTKDEsIERFRkFVTFQs IDMpOworTk9USUNFOiAgdHJpZ2dlcih0KSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hl biA9IEJFRk9SRSwgbGV2ZWwgPSBST1cKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICog RlJPTSB0IE9SREVSIEJZIGI7CisgdGFibGVvaWQgfCBpIHwgICAgICAgdCAgICAgICAgfCBi IHwgICAgIGQgICAgICAKKy0tLS0tLS0tLS0rLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tKy0t LS0tLS0tLS0tLQorIHRwXzBfMSAgIHwgMCB8IGRlZmF1bHRfdHBfMF8xIHwgMSB8IDAxLTAx LTIwMjIKKyB0cF8wXzEgICB8IDEgfCBkZWZhdWx0X3RwXzFfMiB8IDIgfCAwMS0wMS0yMDIy CisgdHBfMF8xICAgfCAxIHwgZGVmYXVsdF90ICAgICAgfCAzIHwgMDEtMDEtMjAyMgorKDMg cm93cykKKworRFJPUCBUQUJMRSB0OworRFJPUCBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9u KCk7Citcc2V0IEhJREVfVE9BU1RfQ09NUFJFU1NJT04gdHJ1ZQorLS0gVGVzdCBNRVJHRSBQ QVJUSVRJT05TIHdpdGggbm90IHZhbGlkIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQKK0NSRUFU RSBUQUJMRSB0IChpIElOVCBQUklNQVJZIEtFWSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsK K0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxV RVMgRlJPTSAoMSkgVE8gKDIpOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDApLCAoMSk7CitD UkVBVEUgVEFCTEUgdF9mayAoaSBJTlQpOworSU5TRVJUIElOVE8gdF9mayBWQUxVRVMgKDEp LCAoMik7CitBTFRFUiBUQUJMRSB0X2ZrIEFERCBDT05TVFJBSU5UIHRfZmtfaV9ma2V5IEZP UkVJR04gS0VZIChpKSBSRUZFUkVOQ0VTIHQgTk9UIFZBTElEOworQUxURVIgVEFCTEUgdCBN RVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CistLSBTaG91 bGQgYmUgTk9UIFZBTElEIEZPUkVJR04gS0VZCitcZCB0cF8wXzIKKyAgICAgIFRhYmxlICJw YXJ0aXRpb25zX21lcmdlX3NjaGVtYS50cF8wXzIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENv bGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGkgICAgICB8IGludGVnZXIgfCAgICAg ICAgICAgfCBub3QgbnVsbCB8IAorUGFydGl0aW9uIG9mOiB0IEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDIpCitJbmRleGVzOgorICAgICJ0cF8wXzJfcGtleSIgUFJJTUFSWSBLRVksIGJ0 cmVlIChpKQorUmVmZXJlbmNlZCBieToKKyAgICBUQUJMRSAidF9mayIgQ09OU1RSQUlOVCAi dF9ma19pX2ZrZXkiIEZPUkVJR04gS0VZIChpKSBSRUZFUkVOQ0VTIHQoaSkgTk9UIFZBTElE CisKKy0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidF9mayIgdmlvbGF0 ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidF9ma19pX2ZrZXkiCitBTFRFUiBUQUJMRSB0 X2ZrIFZBTElEQVRFIENPTlNUUkFJTlQgdF9ma19pX2ZrZXk7CitFUlJPUjogIGluc2VydCBv ciB1cGRhdGUgb24gdGFibGUgInRfZmsiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFp bnQgInRfZmtfaV9ma2V5IgorREVUQUlMOiAgS2V5IChpKT0oMikgaXMgbm90IHByZXNlbnQg aW4gdGFibGUgInQiLgorRFJPUCBUQUJMRSB0X2ZrOworRFJPUCBUQUJMRSB0OworLS0gVGVz dCBNRVJHRSBQQVJUSVRJT05TIHdpdGggbm90IGVuZm9yY2VkIGZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQKK0NSRUFURSBUQUJMRSB0IChpIElOVCBQUklNQVJZIEtFWSkgUEFSVElUSU9OIEJZ IFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBP RiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworSU5TRVJUIElOVE8gdCBWQUxVRVMg KDApLCAoMSk7CitDUkVBVEUgVEFCTEUgdF9mayAoaSBJTlQpOworSU5TRVJUIElOVE8gdF9m ayBWQUxVRVMgKDEpLCAoMik7CitBTFRFUiBUQUJMRSB0X2ZrIEFERCBDT05TVFJBSU5UIHRf ZmtfaV9ma2V5IEZPUkVJR04gS0VZIChpKSBSRUZFUkVOQ0VTIHQgTk9UIEVORk9SQ0VEOwor QUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0 cF8wXzI7CistLSBTaG91bGQgYmUgTk9UIEVORk9SQ0VEIEZPUkVJR04gS0VZCitcZCB0cF8w XzIKKyAgICAgIFRhYmxlICJwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS50cF8wXzIiCisgQ29s dW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGkgICAg ICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorUGFydGl0aW9uIG9mOiB0 IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpCitJbmRleGVzOgorICAgICJ0cF8wXzJfcGtl eSIgUFJJTUFSWSBLRVksIGJ0cmVlIChpKQorUmVmZXJlbmNlZCBieToKKyAgICBUQUJMRSAi dF9mayIgQ09OU1RSQUlOVCAidF9ma19pX2ZrZXkiIEZPUkVJR04gS0VZIChpKSBSRUZFUkVO Q0VTIHQoaSkgTk9UIEVORk9SQ0VECisKKy0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBv biB0YWJsZSAidF9mayIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidF9ma19p X2ZrZXkiCitBTFRFUiBUQUJMRSB0X2ZrIEFMVEVSIENPTlNUUkFJTlQgdF9ma19pX2ZrZXkg RU5GT1JDRUQ7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRfZmsiIHZp b2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRfZmtfaV9ma2V5IgorREVUQUlMOiAg S2V5IChpKT0oMikgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInQiLgorRFJPUCBUQUJMRSB0 X2ZrOworRFJPUCBUQUJMRSB0OworLS0gVGVzdCBmb3IgcmVjb21wdXRhdGlvbiBvZiBzdG9y ZWQgZ2VuZXJhdGVkIGNvbHVtbnMuCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQsIHRhYl9pZCBp bnQgZ2VuZXJhdGVkIGFsd2F5cyBhcyAodGFibGVvaWQpIHN0b3JlZCkgUEFSVElUSU9OIEJZ IFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBP RiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBBREQgQ09O U1RSQUlOVCBjYyBDSEVDSyh0YWJsZW9pZCA8PiAxMjM0NTY3ODkpOworSU5TRVJUIElOVE8g dCBWQUxVRVMgKDApLCAoMSk7CistLSBTaG91bGQgYmUgMCBiZWNhdXNlIHBhcnRpdGlvbiBp ZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAgaXMgZGlmZmVyZW50IGZyb20KKy0tIHBhcnRp dGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxFQ1QgY291bnQoKikgRlJP TSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdI RVJFIGkgPSAxKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMAorKDEgcm93KQorCistLSAi dGFiX2lkIiBjb2x1bW4gKHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1uKSB3aXRoICJ0YWJsZW9p ZCIgYXR0cmlidXRlIHJlcXVpcmVzCistLSByZWNvbXB1dGF0aW9uIGhlcmUuCitBTFRFUiBU QUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsK Ky0tIFNob3VsZCBiZSAxIGJlY2F1c2UgcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3 aXRoIGk9MCBpcyB0aGUgc2FtZSBhcworLS0gcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJv dyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5EIHRh Yl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hFUkUgaSA9IDEpOworIGNvdW50IAor LS0tLS0tLQorICAgICAxCisoMSByb3cpCisKK0RST1AgVEFCTEUgdDsKKy0tIFRlc3QgZm9y IGdlbmVyYXRlZCBjb2x1bW5zIChkaWZmZXJlbnQgb3JkZXIgb2YgY29sdW1ucyBpbiBwYXJ0 aXRpb25lZCB0YWJsZQorLS0gYW5kIHBhcnRpdGlvbnMpLgorQ1JFQVRFIFRBQkxFIHQgKGkg aW50LCBnIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpICsgdGFibGVvaWQ6OmludCkpIFBB UlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMSAoZyBpbnQgR0VORVJB VEVEIEFMV0FZUyBBUyAoaSArIHRhYmxlb2lkOjppbnQpLCBpIGludCk7CitDUkVBVEUgVEFC TEUgdHBfMiAoZyBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoaSArIHRhYmxlb2lkOjppbnQp LCBpIGludCk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMSBGT1IgVkFM VUVTIEZST00gKC0xKSBUTyAoMTApOworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9O IHRwXzIgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0FMVEVSIFRBQkxFIHQgQURE IENIRUNLIChnID4gMCk7CitBTFRFUiBUQUJMRSB0IEFERCBDSEVDSyAoaSA+IDApOworSU5T RVJUIElOVE8gdCBWQUxVRVMgKDUpLCAoMTUpOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJU SVRJT05TICh0cF8xLCB0cF8yKSBJTlRPIHRwXzEyOworSU5TRVJUIElOVE8gdCBWQUxVRVMg KDE2KTsKKy0tIEVSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRwXzEyIiB2aW9sYXRl cyBjaGVjayBjb25zdHJhaW50ICJ0X2lfY2hlY2siCitJTlNFUlQgSU5UTyB0IFZBTFVFUyAo MCk7CitFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJ0cF8xMiIgdmlvbGF0ZXMgY2hl Y2sgY29uc3RyYWludCAidF9pX2NoZWNrIgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFp bnMgKDAsIHZpcnR1YWwpLgorLS0gU2hvdWxkIGJlIDMgcm93czogKDUpLCAoMTUpLCAoMTYp OgorU0VMRUNUIGkgRlJPTSB0IE9SREVSIEJZIGk7CisgaSAgCistLS0tCisgIDUKKyAxNQor IDE2CisoMyByb3dzKQorCistLSBTaG91bGQgYmUgMSBiZWNhdXNlIGZvciB0aGUgc2FtZSB0 YWJsZW9pZCAoMTUgKyB0YWJsZW9pZCkgPSAoNSArIHRhYmxlb2lkKSArIDEwOgorU0VMRUNU IGNvdW50KCopIEZST00gdCBXSEVSRSBpID0gMTUgQU5EIGcgSU4gKFNFTEVDVCBnICsgMTAg RlJPTSB0IFdIRVJFIGkgPSA1KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93 KQorCitEUk9QIFRBQkxFIHQ7CitSRVNFVCBzZWFyY2hfcGF0aDsKKy0tCitEUk9QIFNDSEVN QSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKK0RST1AgU0NIRU1BIHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hMjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2No ZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IGZiZmZj NjdhZTYuLjJkM2Y1MGE0M2IgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpA QCAtMTIzLDcgKzEyMyw3IEBAIHRlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3FsIGNvcHky IHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSBjb252ZXJzaW9uIHRyCiAjIFRoZSBz dGF0cyB0ZXN0IHJlc2V0cyBzdGF0cywgc28gbm90aGluZyBlbHNlIG5lZWRpbmcgc3RhdHMg YWNjZXNzIGNhbiBiZSBpbgogIyB0aGlzIGdyb3VwLgogIyAtLS0tLS0tLS0tCi10ZXN0OiBw YXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNoX3BhcnQgaW5k ZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBsZXNvcnQgZXhw bGFpbiBjb21wcmVzc2lvbiBjb21wcmVzc2lvbl9sejQgbWVtb2l6ZSBzdGF0cyBwcmVkaWNh dGUgbnVtYQordGVzdDogcGFydGl0aW9uX21lcmdlIHBhcnRpdGlvbl9qb2luIHBhcnRpdGlv bl9wcnVuZSByZWxvcHRpb25zIGhhc2hfcGFydCBpbmRleGluZyBwYXJ0aXRpb25fYWdncmVn YXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxlc29ydCBleHBsYWluIGNvbXByZXNzaW9uIGNvbXBy ZXNzaW9uX2x6NCBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZSBudW1hCiAKICMgZXZlbnRfdHJp Z2dlciBkZXBlbmRzIG9uIGNyZWF0ZV9hbSBhbmQgY2Fubm90IHJ1biBjb25jdXJyZW50bHkg d2l0aAogIyBhbnkgdGVzdCB0aGF0IHJ1bnMgRERMCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cGFydGl0aW9uX21lcmdlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi5kODE4MzE4MzAwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcGFydGl0aW9uX21lcmdlLnNxbApAQCAtMCwwICsxLDc5MSBAQAorLS0KKy0tIFBBUlRJ VElPTlNfTUVSR0UKKy0tIFRlc3RzIGZvciAiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJ VElPTlMgLi4uIiBjb21tYW5kCistLQorCitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hOworQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTI7CitT RVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworCist LQorLS0gQlkgUkFOR0UgcGFydGl0aW9uaW5nCistLQorCistLQorLS0gVGVzdCBmb3IgZXJy b3IgY29kZXMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lk IElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwg c2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2RlYzIwMjEgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAoJzIwMjEtMTItMzEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVz X21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fw cjIwMjIgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMw KSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFO R0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl8xIFBBUlRJVElPTiBP RiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDQtMTUnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHJfMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTE1JykgVE8gKCcyMDIyLTA1 LTAxJyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVz X2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0w MScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBERUZBVUxUOworCistLSBFUlJPUjogIHBhcnRpdGlvbiB3aXRoIG5hbWUgInNhbGVz X2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVS R0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfZmVi MjAyMikgSU5UTyBzYWxlc19mZWJfbWFyX2FwcjIwMjI7CistLSBFUlJPUjogICJzYWxlc19h cHIyMDIyIiBpcyBub3QgYSB0YWJsZQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0Ug UEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfYXByMjAy MikgSU5UTyBzYWxlc19mZWJfbWFyX2FwcjIwMjI7CistLSBFUlJPUjogIGNhbiBub3QgbWVy Z2UgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAi c2FsZXNfamFuMjAyMiIKKy0tIERFVEFJTDogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAi c2FsZXNfbWFyMjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0 aXRpb24gInNhbGVzX2phbjIwMjIiCistLSAoc3BhY2UgYmV0d2VlbiBzZWN0aW9ucyBzYWxl c19qYW4yMDIyIGFuZCBzYWxlc19tYXIyMDIyKQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug TUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfamFuMjAyMiwgc2FsZXNfbWFyMjAyMikgSU5UTyBz YWxlc19qYW5fbWFyMjAyMjsKKy0tIEVSUk9SOiAgY2FuIG5vdCBtZXJnZSBwYXJ0aXRpb24g InNhbGVzX2phbjIwMjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19kZWMyMDIx IgorLS0gREVUQUlMOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19qYW4yMDIy IiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNf ZGVjMjAyMSIKKy0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25zIHNhbGVzX2RlYzIwMjEgYW5k IHNhbGVzX2phbjIwMjIpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJ T05TIChzYWxlc19kZWMyMDIxLCBzYWxlc19qYW4yMDIyLCBzYWxlc19mZWIyMDIyKSBJTlRP IHNhbGVzX2RlY19qYW5fZmViMjAyMjsKKy0tIEVSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFt ZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19mZWIyMDIyKSBJTlRPIHNhbGVzX2ZlYl9t YXJfYXByMjAyMjsKKy0tRVJST1IsIHNhbGVzX2Fwcl8yIGFscmVhZHkgZXhpc3RzCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBz YWxlc19tYXIyMDIyLCBzYWxlc19qYW4yMDIyKSBJTlRPIHNhbGVzX2Fwcl8yOworCitDUkVB VEUgVklFVyBqYW4yMDIydiBhcyBTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7CitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBz YWxlc19mZWIyMDIyKSBJTlRPIHNhbGVzX2RlY19qYW5fZmViMjAyMjsKK0RST1AgVklFVyBq YW4yMDIydjsKKworLS0gTk8gRVJST1I6IHRlc3QgZm9yIGN1c3RvbSBwYXJ0aXRpb25zIG9y ZGVyLCBzb3VyY2UgcGFydGl0aW9ucyBub3QgaW4gdGhlIHNlYXJjaF9wYXRoCitTRVQgc2Vh cmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIsIHB1YmxpYzsKK0FMVEVSIFRB QkxFIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElP TlMgKAorICBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19mZWIyMDIyLAorICBwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19tYXIyMDIyLAorICBwYXJ0aXRpb25zX21lcmdl X3NjaGVtYS5zYWxlc19qYW4yMDIyKSBJTlRPIHNhbGVzX2phbl9mZWJfbWFyMjAyMjsKK1NF VCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CisKK1BS RVBBUkUgZ2V0X3BhcnRpdGlvbl9pbmZvKHJlZ2NsYXNzW10pIEFTCitTRUxFQ1QgIGMub2lk OjpwZ19jYXRhbG9nLnJlZ2NsYXNzLAorICAgICAgICBjLnJlbHBlcnNpc3RlbmNlLAorICAg ICAgICBjLnJlbGtpbmQsCisgICAgICAgIGkuaW5oZGV0YWNocGVuZGluZywKKyAgICAgICAg cGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCitGUk9NICAg IHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCitXSEVS RSAgIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSBBTlkoJDEpCitPUkRF UiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAn REVGQVVMVCcsCisgICAgICAgICBjLm9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyI7 CisKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfcmFuZ2V9Jyk7CisKK0RS T1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBBZGQgcm93cyBpbnRvIHBhcnRpdGlv bmVkIHRhYmxlLCB0aGVuIG1lcmdlIHBhcnRpdGlvbnMKKy0tCitDUkVBVEUgVEFCTEUgc2Fs ZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFS KDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAo JzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0w MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERF RkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2Fs ZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScp LAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0Zv cmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAs ICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3 JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAn TGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4 NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMt MTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEs ICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAg MzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0w MS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NF TEVDVCBwZ19jYXRhbG9nLnBnX2dldF9wYXJ0a2V5ZGVmKCdzYWxlc19yYW5nZSc6OnJlZ2Ns YXNzKTsKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUg Z2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfcmFuZ2V9Jyk7CisKKy0tIGNoZWNrIHNjaGVt YS1xdWFsaWZpZWQgbmFtZSBvZiB0aGUgbmV3IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAy Miwgc2FsZXNfYXByMjAyMikgSU5UTyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNf ZmViX21hcl9hcHIyMDIyOworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25z OgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKworU0VM RUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19mZWJfbWFy X2FwcjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMic7 CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRF UiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29u X2lkOworCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMKK1NFVCBlbmFi bGVfc2Vxc2NhbiA9IE9GRjsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9N IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgd2hlcmUg c2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK1NFTEVDVCAqIEZST00gcGFydGl0aW9uc19t ZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4g JzIwMjItMDEtMDEnOworCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKKworRFJPUCBUQUJMRSBz YWxlc19yYW5nZTsKKworLS0KKy0tIE1lcmdlIHNvbWUgcGFydGl0aW9ucyBpbnRvIERFRkFV TFQgcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNv bl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJ TlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsK K0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf b3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVY IHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVl IChzYWxlc19kYXRlKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgx LCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYn LCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIy LTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAg KDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3Qn LCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIw MjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAor ICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRl cicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAn MjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyks CisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21p dGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCistLSBNZXJnZSBwYXJ0aXRpb25zIChp bmNsdWRlIERFRkFVTFQgcGFydGl0aW9uKSBpbnRvIHBhcnRpdGlvbiB3aXRoIHRoZSBzYW1l CistLSBuYW1lCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TCisg IChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIyLCBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YS5zYWxlc19vdGhlcnMpIElOVE8gc2FsZXNfb3RoZXJzOworCitTRUxFQ1QgKiBGUk9NIHNh bGVzX290aGVycyBPUkRFUiBCWSBzYWxlc3BlcnNvbl9pZDsKKworLS0gc2hvdyBwYXJ0aXRp b25zIHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2Fs ZXNfcmFuZ2V9Jyk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBUZXN0 IGZvcjoKKy0tICAgKiBjb21wb3NpdGUgcGFydGl0aW9uIGtleTsKKy0tICAgKiBHRU5FUkFU RUQgY29sdW1uOworLS0gICAqIGNvbHVtbiB3aXRoIERFRkFVTFQgdmFsdWUuCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzX2RhdGUgKHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNh bGVzX3llYXIgSU5ULCBzYWxlc19tb250aCBJTlQsIHNhbGVzX2RheSBJTlQsCisgIHNhbGVz X2RhdGUgVkFSQ0hBUigxMCkgR0VORVJBVEVEIEFMV0FZUyBBUworICAgIChMUEFEKHNhbGVz X3llYXI6OnRleHQsIDQsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfbW9udGg6OnRleHQs IDIsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfZGF5Ojp0ZXh0LCAyLCAnMCcpKSBTVE9S RUQsCisgIHNhbGVzX2RlcGFydG1lbnQgVkFSQ0hBUigzMCkgREVGQVVMVCAnU2FsZXMgZGVw YXJ0bWVudCcpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfeWVhciwgc2FsZXNfbW9u dGgsIHNhbGVzX2RheSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIyIFBBUlRJVElP TiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMSwgMTIsIDEpIFRPICgyMDIy LCAxLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxl c19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDIsIDEpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9S IFZBTFVFUyBGUk9NICgyMDIyLCAyLCAxKSBUTyAoMjAyMiwgMywgMSk7CitDUkVBVEUgVEFC TEUgc2FsZXNfb3RoZXIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9N ICgyMDIyLCAzLCAxKSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVFLCBNQVhWQUxVRSk7CisKK0lO U0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2Fs ZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIxLCAxMiwg NyksCisgICgnTWFuYWdlcjInLCAyMDIxLCAxMiwgOCksCisgICgnTWFuYWdlcjMnLCAyMDIy LCAxLCAxKSwKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDIsIDQpLAorICAoJ01hbmFnZXIyJywg MjAyMiwgMSwgMiksCisgICgnTWFuYWdlcjMnLCAyMDIyLCAyLCAxKSwKKyAgKCdNYW5hZ2Vy MScsIDIwMjIsIDMsIDMpLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMywgNCksCisgICgnTWFu YWdlcjMnLCAyMDIyLCA1LCAxKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBG Uk9NIHNhbGVzX2RhdGU7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2RhdGUgTUVSR0UgUEFSVElU SU9OUyAoc2FsZXNfamFuMjAyMiwgc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19qYW5fZmVi MjAyMjsKKworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxl c195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScs IDIwMjIsIDEsIDEwKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDIsIDEwKTsKKworU0VMRUNU IHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2RhdGU7CitEUk9QIFRBQkxFIHNh bGVzX2RhdGU7CisKKy0tCistLSBUZXN0OiBtZXJnZSBwYXJ0aXRpb25zIG9mIHBhcnRpdGlv bmVkIHRhYmxlIHdpdGggdHJpZ2dlcnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUo c2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKKworQ1JFQVRF IFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzIw IFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjAp OworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAgUEFSVElUSU9OIE9GIHNhbGVzcGVv cGxlIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNw ZW9wbGUzMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgz MCkgVE8gKDQwKTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1Bv aXJvdCcpOworCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93 X3RyaWdnZXIoKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTICRCT0RZ JAorQkVHSU4KKyAgICBSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24g PSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4s IFRHX0xFVkVMOworICAgIFJFVFVSTiBOVUxMOworRU5EOworJEJPRFkkOworCitDUkVBVEUg VFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNlcnRfc3RhdGVtZW50X3RyaWdnZXIKKyAg ICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Blb3BsZQorICAgIEZPUiBFQUNIIFNUQVRF TUVOVAorICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcign c2FsZXNwZW9wbGUnKTsKKworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5z ZXJ0X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUK KyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRf cm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CisKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZp cmUgaGVyZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZB TFVFUyAoMTAsICdNYXknKTsKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cp OgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF8yMCBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7 CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzcGVv cGxlMTBfMjAsIHNhbGVzcGVvcGxlMjBfMzAsIHNhbGVzcGVvcGxlMzBfNDApIElOVE8gc2Fs ZXNwZW9wbGUxMF80MDsKKworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cg KyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgyMCwgJ1Nt aXJub2ZmJyk7CistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VS VCBJTlRPIHNhbGVzcGVvcGxlMTBfNDAgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKKworU0VMRUNU ICogRlJPTSBzYWxlc3Blb3BsZTAxXzEwOworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTEw XzQwOworCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlOworRFJPUCBGVU5DVElPTiBhZnRlcl9p bnNlcnRfcm93X3RyaWdnZXIoKTsKKworLS0KKy0tIFRlc3Q6IG1lcmdlIHBhcnRpdGlvbnMg d2l0aCBkZWxldGVkIGNvbHVtbnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2Fs ZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIo MzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKKworQ1JFQVRFIFRB QkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxV RVMgRlJPTSAoMSkgVE8gKDEwKTsKKy0tIENyZWF0ZSBwYXJ0aXRpb25zIHdpdGggc29tZSBk ZWxldGVkIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF8yMChkMSBWQVJD SEFSKDMwKSwgc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9u YW1lIFZBUkNIQVIoMzApKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTIwXzMwKHNhbGVz cGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgZDIgSU5ULCAgc2FsZXNwZXJzb25fbmFtZSBW QVJDSEFSKDMwKSk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUzMF80MChzYWxlc3BlcnNv bl9pZCBJTlQgUFJJTUFSWSBLRVksIGQzIERBVEUsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hB UigzMCkpOworCitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzIwIFZBTFVFUyAoJ2R1bW15 IHZhbHVlIDEnLCAxOSwgJ0l2YW5vdicpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUyMF8z MCBWQUxVRVMgKDIwLCAxMDEsICdTbWlybm9mZicpOworSU5TRVJUIElOVE8gc2FsZXNwZW9w bGUzMF80MCBWQUxVRVMgKDMxLCBub3coKSwgJ1BvcG92Jyk7CisKK0FMVEVSIFRBQkxFIHNh bGVzcGVvcGxlMTBfMjAgRFJPUCBDT0xVTU4gZDE7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3Bs ZTIwXzMwIERST1AgQ09MVU1OIGQyOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUzMF80MCBE Uk9QIENPTFVNTiBkMzsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJ VElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitB TFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMjBf MzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVv cGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZST00g KDMwKSBUTyAoNDApOworCitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMKKyAgKDEs ICdQb2lyb3QnKSwKKyAgKDEwLCAnTWF5JyksCisgICgzMCwgJ0ZvcmQnKTsKKworQUxURVIg VEFCTEUgc2FsZXNwZW9wbGUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNwZW9wbGUxMF8yMCwg c2FsZXNwZW9wbGUyMF8zMCwgc2FsZXNwZW9wbGUzMF80MCkgSU5UTyBzYWxlc3Blb3BsZTEw XzQwOworCitzZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxlOworc2VsZWN0ICogZnJvbSBzYWxl c3Blb3BsZTAxXzEwOworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTEwXzQwOworCitEUk9Q IFRBQkxFIHNhbGVzcGVvcGxlOworCistLQorLS0gVGVzdDogbWVyZ2Ugc3ViLXBhcnRpdGlv bnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNf ZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf bWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfYXBy MjAyMiAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzAp LCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5H RSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMl8wMV8xMCBQQVJU SVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA0LTEwJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMl8xMF8yMCBQ QVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTEw JykgVE8gKCcyMDIyLTA0LTIwJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMl8yMF8z MCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTIwJykgVE8gKCcyMDIyLTA1LTAxJyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBBVFRB Q0ggUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCitDUkVBVEUgSU5ERVggc2FsZXNf cmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVz X2RhdGUpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5 JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwg ICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAn KSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdE ZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUw LCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0w OCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAg J011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAz NTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0 LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEz LCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAg IDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICog RlJPTSBzYWxlc19hcHIyMDIyIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBD T0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2FwcjIw MjIgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfYXByMjAyMl8wMV8xMCwgc2FsZXNfYXByMjAy Ml8xMF8yMCwgc2FsZXNfYXByMjAyMl8yMF8zMCkgSU5UTyBzYWxlc19hcHJfYWxsOworCitT RUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfYXByMjAyMiBPUkRFUiBC WSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lk OworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gQlkgTElTVCBwYXJ0aXRp b25pbmcKKy0tCisKKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1Qg cGFydGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNv bl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSwKKyBzYWxlc3BlcnNvbl9u YW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ft b3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVz X3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19s aXN0IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtp Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBG T1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2Vhc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJ TiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2NlbnRyYWwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dh cnNhdycsICdCZXJsaW4nLCAnS3lpdicpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQ QVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworCisKK0NSRUFURSBUQUJMRSBzYWxl c19saXN0MiAoTElLRSBzYWxlc19saXN0KSBQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3Rh dGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQyIFBBUlRJVElPTiBPRiBzYWxlc19saXN0 MiBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyczIgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3Qy IERFRkFVTFQ7CisKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2V4dGVybmFsIChMSUtFIHNhbGVz X2xpc3QpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2V4dGVybmFsMiAodmNoIFZBUkNIQVIoNSkp OworCistLSBFUlJPUjogICJzYWxlc19leHRlcm5hbCIgaXMgbm90IGEgcGFydGl0aW9uIG9m IHBhcnRpdGlvbmVkIHRhYmxlICJzYWxlc19saXN0IgorQUxURVIgVEFCTEUgc2FsZXNfbGlz dCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19leHRl cm5hbCkgSU5UTyBzYWxlc19hbGw7CistLSBFUlJPUjogICJzYWxlc19leHRlcm5hbDIiIGlz IG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSAic2FsZXNfbGlzdCIKK0FM VEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2Fs ZXNfZWFzdCwgc2FsZXNfZXh0ZXJuYWwyKSBJTlRPIHNhbGVzX2FsbDsKKy0tIEVSUk9SOiAg cmVsYXRpb24gInNhbGVzX25vcmQyIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24g InNhbGVzX2xpc3QiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMg KHNhbGVzX3dlc3QsIHNhbGVzX25vcmQyLCBzYWxlc19lYXN0KSBJTlRPIHNhbGVzX2FsbDsK KworRFJPUCBUQUJMRSBzYWxlc19leHRlcm5hbDI7CitEUk9QIFRBQkxFIHNhbGVzX2V4dGVy bmFsOworRFJPUCBUQUJMRSBzYWxlc19saXN0MjsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsK KworLS0KKy0tIFRlc3Q6IEJZIExJU1QgcGFydGl0aW9uaW5nLCBNRVJHRSBQQVJUSVRJT05T IHdpdGggZGF0YQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNwZXJzb25f aWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFksCisgc2FsZXNwZXJzb25fbmFt ZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91 bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19z dGF0ZSk7CisKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzcGVyc29uX25hbWVfaWR4 IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzcGVyc29uX25hbWUpOworQ1JFQVRF IElOREVYIHNhbGVzX2xpc3Rfc2FsZXNfc3RhdGVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcg YnRyZWUgKHNhbGVzX3N0YXRlKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElU SU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1 cmcnLCAnSGVsc2lua2knKTsKK0NSRUFURSBUQUJMRSBzYWxlc193ZXN0IFBBUlRJVElPTiBP RiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFk cmlkJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZWFzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlz dCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfY2VudHJhbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1Ig VkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2Jyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CisKK0lOU0VS VCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxl c19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUworICAoJ1RydW1wJywgICAgJ0JlamluZycs ICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKSwKKyAgKCdTbWlybm9mZicsICdOZXcgWW9y aycsICAgICAgICA1MDAsICcyMDIyLTAzLTAzJyksCisgICgnRm9yZCcsICAgICAnU3QuIFBl dGVyc2J1cmcnLCAyMDAwLCAnMjAyMi0wMy0wNScpLAorICAoJ0l2YW5vdicsICAgJ1dhcnNh dycsICAgICAgICAgIDc1MCwgJzIwMjItMDMtMDQnKSwKKyAgKCdEZWV2JywgICAgICdMaXNi b24nLCAgICAgICAgICAyNTAsICcyMDIyLTAzLTA3JyksCisgICgnUG9pcm90JywgICAnQmVy bGluJywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpLAorICAoJ01heScsICAgICAgJ0hl bHNpbmtpJywgICAgICAgMTIwMCwgJzIwMjItMDMtMDYnKSwKKyAgKCdMaScsICAgICAgICdW bGFkaXZvc3RvaycsICAgIDExNTAsICcyMDIyLTAzLTA5JyksCisgICgnTWF5JywgICAgICAn SGVsc2lua2knLCAgICAgICAxMjAwLCAnMjAyMi0wMy0xMScpLAorICAoJ0hhbGRlcicsICAg J09zbG8nLCAgICAgICAgICAgIDgwMCwgJzIwMjItMDMtMDInKSwKKyAgKCdNdWxsZXInLCAg ICdNYWRyaWQnLCAgICAgICAgICA2NTAsICcyMDIyLTAzLTA1JyksCisgICgnU21pdGgnLCAg ICAnS3lpdicsICAgICAgICAgICAgMzUwLCAnMjAyMi0wMy0xMCcpLAorICAoJ0dhbmRpJywg ICAgJ1dhcnNhdycsICAgICAgICAgIDE1MCwgJzIwMjItMDMtMDgnKSwKKyAgKCdQbGF0bycs ICAgICdMaXNib24nLCAgICAgICAgICA5NTAsICcyMDIyLTAzLTA1Jyk7CisKKy0tIHNob3cg cGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5m bygne3NhbGVzX2xpc3R9Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFS VElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNfY2VudHJhbCkgSU5UTyBz YWxlc19hbGw7CisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitFWEVD VVRFIGdldF9wYXJ0aXRpb25faW5mbygne3NhbGVzX2xpc3R9Jyk7CisKK1NFTEVDVCB0YWJs ZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19saXN0IE9SREVSIEJZIHRhYmxlb2lkOjpy ZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisKKy0tIFVzZSBp bmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcyBhZnRlciBtZXJnaW5nIHBhcnRpdGlvbnMK K1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxF Q1QgKiBGUk9NIHNhbGVzX2FsbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworU0VM RUNUICogRlJPTSBzYWxlc19hbGwgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK0VY UExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVz X3N0YXRlID0gJ1dhcnNhdyc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2Fs ZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJP TSBzYWxlc19saXN0IFdIRVJFIHNhbGVzcGVyc29uX25hbWUgPSAnSXZhbm92JzsKK1NFTEVD VCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc3BlcnNvbl9uYW1lID0gJ0l2YW5vdic7 CisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworCitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CisK Ky0tCistLSBUcnkgdG8gTUVSR0UgcGFydGl0aW9ucyBvZiBhbm90aGVyIHRhYmxlLgorLS0K K0NSRUFURSBUQUJMRSB0MSAoaSBpbnQsIGEgaW50LCBiIGludCwgYyBpbnQpIFBBUlRJVElP TiBCWSBSQU5HRSAoYSwgYik7CitDUkVBVEUgVEFCTEUgdDFwMSBQQVJUSVRJT04gT0YgdDEg Rk9SIFZBTFVFUyBGUk9NICgxLCAxKSBUTyAoMSwgMik7CitDUkVBVEUgVEFCTEUgdDIgKGkg aW50LCB0IHRleHQpIFBBUlRJVElPTiBCWSBSQU5HRSAodCk7CitDUkVBVEUgVEFCTEUgdDJw YSBQQVJUSVRJT04gT0YgdDIgRk9SIFZBTFVFUyBGUk9NICgnQScpIFRPICgnQycpOworQ1JF QVRFIFRBQkxFIHQzIChpIGludCwgdCB0ZXh0KTsKKworLS0gRVJST1I6ICByZWxhdGlvbiAi dDFwMSIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0MiIKK0FMVEVSIFRBQkxF IHQyIE1FUkdFIFBBUlRJVElPTlMgKHQxcDEsIHQycGEpIElOVE8gdDJwOworLS0gRVJST1I6 ICAidDMiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSAidDIiCitB TFRFUiBUQUJMRSB0MiBNRVJHRSBQQVJUSVRJT05TICh0MnBhLCB0MykgSU5UTyB0MnA7CisK K0RST1AgVEFCTEUgdDM7CitEUk9QIFRBQkxFIHQyOworRFJPUCBUQUJMRSB0MTsKKworCist LQorLS0gQ2hlY2sgdGhlIHBhcnRpdGlvbiBpbmRleCBuYW1lIGlmIHRoZSBwYXJ0aXRpb24g bmFtZSBpcyB0aGUgc2FtZSBhcyBvbmUKKy0tIG9mIHRoZSBtZXJnZWQgcGFydGl0aW9ucy4K Ky0tCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQsIFBSSU1BUlkgS0VZKGkpKSBQQVJUSVRJT04g QlkgUkFOR0UgKGkpOworCitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJ T04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKKworQ1JFQVRFIElOREVYIHRp ZHggT04gdChpKTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMV8yLCB0 cF8wXzEpIElOVE8gdHBfMV8yOworCistLSBJbmRleG5hbWUgdmFsdWVzIHNob3VsZCBiZSAn dHBfMV8yX3BrZXknIGFuZCAndHBfMV8yX2lfaWR4Jy4KK1xkKyB0cF8xXzIKKworRFJPUCBU QUJMRSB0OworCistLQorLS0gVHJ5IHRvIE1FUkdFIHBhcnRpdGlvbnMgb2YgdGVtcG9yYXJ5 IHRhYmxlLgorLS0KK0JFR0lOOworU0hPVyBzZWFyY2hfcGF0aDsKK0NSRUFURSBURU1QIFRB QkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIE9OIENPTU1JVCBEUk9QOwor Q1JFQVRFIFRFTVAgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDEpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0 IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMl8z IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMikgVE8gKDMpOworQ1JFQVRFIFRF TVAgVEFCTEUgdHBfM180IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMykgVE8g KDQpOworCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8y KSBJTlRPIHBnX3RlbXAudHBfMF8yOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05T ICh0cF8wXzIsIHRwXzJfMykgSU5UTyBwZ190ZW1wLnRwXzBfMzsKKworLS0gUGFydGl0aW9u IHNob3VsZCBiZSB0ZW1wb3JhcnkuCitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3R9 Jyk7CistLSBFUlJPUjogIGNhbm5vdCBjcmVhdGUgYSBwZXJtYW5lbnQgcmVsYXRpb24gYXMg cGFydGl0aW9uIG9mIHRlbXBvcmFyeSByZWxhdGlvbiAidCIKK0FMVEVSIFRBQkxFIHQgTUVS R0UgUEFSVElUSU9OUyAodHBfMF8zLCB0cF8zXzQpIElOVE8gdHBfMF80OworUk9MTEJBQ0s7 CisKKy0tCistLSBUcnkgbWl4aW5nIHBlcm1hbmVudCBhbmQgdGVtcG9yYXJ5IHBhcnRpdGlv bnMuCistLQorQkVHSU47CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYSwgcGdfdGVtcCwgcHVibGljOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJ T04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElU SU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CisKK1NFTEVDVCBjLm9pZDo6 cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxwZXJzaXN0ZW5jZSBGUk9NIHBnX2NhdGFsb2cu cGdfY2xhc3MgYyBXSEVSRSBjLm9pZCA9ICd0Jzo6cmVnY2xhc3M7CitFWEVDVVRFIGdldF9w YXJ0aXRpb25faW5mbygne3R9Jyk7CitTQVZFUE9JTlQgczsKKworU0VUIHNlYXJjaF9wYXRo ID0gcGdfdGVtcCwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKy0tIENhbid0 IG1lcmdlIHBlcnNpc3RlbnQgcGFydGl0aW9ucyBpbnRvIGEgdGVtcG9yYXJ5IHBhcnRpdGlv bgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5U TyB0cF8wXzI7CisKK1JPTExCQUNLIFRPIFNBVkVQT0lOVCBzOworU0VUIHNlYXJjaF9wYXRo ID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKy0tIENhbid0IG1lcmdlIHBl cnNpc3RlbnQgcGFydGl0aW9ucyBpbnRvIGEgdGVtcG9yYXJ5IHBhcnRpdGlvbgorQUxURVIg VEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyBwZ190ZW1w LnRwXzBfMjsKK1JPTExCQUNLOworCitCRUdJTjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBnX3Rl bXAsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CitDUkVBVEUgVEFCTEUgdCAo aSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxF IHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKKwor U0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbHBlcnNpc3RlbmNlIEZS T00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjIFdIRVJFIGMub2lkID0gJ3QnOjpyZWdjbGFzczsK K0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7dH0nKTsKKworU0VUIHNlYXJjaF9wYXRo ID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHBnX3RlbXAsIHB1YmxpYzsKKworLS0gQ2Fu J3QgbWVyZ2UgdGVtcG9yYXJ5IHBhcnRpdGlvbnMgaW50byBhIHBlcnNpc3RlbnQgcGFydGl0 aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJ TlRPIHRwXzBfMjsKK1JPTExCQUNLOworCitERUFMTE9DQVRFIGdldF9wYXJ0aXRpb25faW5m bzsKKworLS0gQ2hlY2sgdGhlIG5ldyBwYXJ0aXRpb24gaW5oZXJpdHMgcGFyZW50J3MgdGFi bGVzcGFjZQorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1 YmxpYzsKK0NSRUFURSBUQUJMRSB0IChpIGludCBQUklNQVJZIEtFWSBVU0lORyBJTkRFWCBU QUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkg VEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJU SVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0 cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitBTFRF UiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBf MjsKK1NFTEVDVCB0YWJsZW5hbWUsIHRhYmxlc3BhY2UgRlJPTSBwZ190YWJsZXMKKyAgV0hF UkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzInKSBBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1lLCB0YWJsZXNwYWNl OworU0VMRUNUIHRhYmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNlIEZST00gcGdfaW5k ZXhlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMicpIEFORCBzY2hlbWFu YW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5hbWUs IGluZGV4bmFtZSwgdGFibGVzcGFjZTsKK0RST1AgVEFCTEUgdDsKKworLS0gQ2hlY2sgdGhl IG5ldyBwYXJ0aXRpb24gaW5oZXJpdHMgcGFyZW50J3MgdGFibGUgYWNjZXNzIG1ldGhvZAor U0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0NS RUFURSBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbnNfbWVyZ2VfaGVhcCBUWVBFIFRBQkxFIEhB TkRMRVIgaGVhcF90YWJsZWFtX2hhbmRsZXI7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBB UlRJVElPTiBCWSBSQU5HRSAoaSkgVVNJTkcgcGFydGl0aW9uc19tZXJnZV9oZWFwOworQ1JF QVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBG Uk9NICgxKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBf MSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1NFTEVDVCBjLnJlbG5hbWUsIGEuYW1uYW1lCitG Uk9NIHBnX2NsYXNzIGMgSk9JTiBwZ19hbSBhIE9OIGMucmVsYW0gPSBhLm9pZAorV0hFUkUg Yy5vaWQgSU4gKCd0Jzo6cmVnY2xhc3MsICd0cF8wXzInOjpyZWdjbGFzcykKK09SREVSIEJZ IGMucmVsbmFtZTsKK0RST1AgVEFCTEUgdDsKK0RST1AgQUNDRVNTIE1FVEhPRCBwYXJ0aXRp b25zX21lcmdlX2hlYXA7CisKKy0tIFRlc3QgcGVybWlzc2lvbiBjaGVja3MuICBUaGUgdXNl ciBuZWVkcyB0byBvd24gdGhlIHBhcmVudCB0YWJsZSBhbmQgYWxsCistLSB0aGUgbWVyZ2lu ZyBwYXJ0aXRpb25zIHRvIGRvIHRoZSBtZXJnZS4KK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFy dGl0aW9uX21lcmdlX2FsaWNlOworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fbWVy Z2VfYm9iOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBU TyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEg cGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9i OworCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdl X2FsaWNlOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkp OworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00g KDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMik7CisKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVn cmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworLS0gRVJST1I6ICBtdXN0IGJlIG93bmVyIG9m IHRhYmxlIHQKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8x XzIpIElOVE8gdHBfMF8yOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitBTFRF UiBUQUJMRSB0IE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBT RVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworLS0g RVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHRwXzBfMQorQUxURVIgVEFCTEUgdCBN RVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitSRVNFVCBT RVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVSIFRBQkxFIHRwXzBfMSBPV05FUiBUTyBy ZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9O IHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKKy0tIEVSUk9SOiAgbXVzdCBiZSBvd25l ciBvZiB0YWJsZSB0cF8xXzIKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBf MF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9O OworCitBTFRFUiBUQUJMRSB0cF8xXzIgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVy Z2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9t ZXJnZV9ib2I7CistLSBPazoKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBf MF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9O OworCitEUk9QIFRBQkxFIHQ7CisKKy0tIFRlc3Q6IHdlIGNhbid0IG1lcmdlIHBhcnRpdGlv bnMgd2l0aCBkaWZmZXJlbnQgb3duZXJzCitDUkVBVEUgVEFCTEUgdHBfMF8xKGkgaW50KTsK K0FMVEVSIFRBQkxFIHRwXzBfMSBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9h bGljZTsKK0NSRUFURSBUQUJMRSB0cF8xXzIoaSBpbnQpOworQUxURVIgVEFCTEUgdHBfMV8y IE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKKworQ1JFQVRFIFRBQkxF IHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworCitBTFRFUiBUQUJMRSB0IEFU VEFDSCBQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQUxU RVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEp IFRPICgyKTsKKworLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNl JzoKK1xkdCB0cF8wXzEKKy0tIE93bmVyIGlzICdyZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9i b2InOgorXGR0IHRwXzFfMgorCistLSBFUlJPUjogIHBhcnRpdGlvbnMgYmVpbmcgbWVyZ2Vk IGhhdmUgZGlmZmVyZW50IG93bmVycworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05T ICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CisKK0RST1AgVEFCTEUgdDsKK1JFVk9L RSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVncmVzc19w YXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0RST1Ag Uk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNz X3BhcnRpdGlvbl9tZXJnZV9ib2I7CisKKworLS0gVGVzdCBmb3IgaGFzaCBwYXJ0aXRpb25l ZCB0YWJsZQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgSEFTSChpKTsK K0NSRUFURSBUQUJMRSB0cDEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBXSVRIIChNT0RV TFVTIDIsIFJFTUFJTkRFUiAwKTsKK0NSRUFURSBUQUJMRSB0cDIgUEFSVElUSU9OIE9GIHQg Rk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAxKTsKKworLS0gRVJST1I6 ICBwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZSBjYW5ub3QgYmUgbWVyZ2Vk CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwMSwgdHAyKSBJTlRPIHRwMzsK KworLS0gRVJST1I6ICBsaXN0IG9mIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkIHNob3VsZCBp bmNsdWRlIGF0IGxlYXN0IHR3byBwYXJ0aXRpb25zCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBB UlRJVElPTlMgKHRwMSkgSU5UTyB0cDM7CisKK0RST1AgVEFCTEUgdDsKKworCistLSBUZXN0 IGZvciBtZXJnZWQgcGFydGl0aW9uIHByb3BlcnRpZXM6CistLSAqIFNUQVRJU1RJQ1MgaXMg ZW1wdHkKKy0tICogQ09NTUVOVCBpcyBlbXB0eQorLS0gKiBERUZBVUxUUyBhcmUgdGhlIHNh bWUgYXMgREVGQVVMVFMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIFNUT1JBR0UgaXMg dGhlIHNhbWUgYXMgU1RPUkFHRSBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogR0VORVJB VEVEIGFuZCBDT05TVFJBSU5UUyBhcmUgdGhlIHNhbWUgYXMgR0VORVJBVEVEIGFuZCBDT05T VFJBSU5UUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogVFJJR0dFUlMgYXJlIHRoZSBz YW1lIGFzIFRSSUdHRVJTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorXHNldCBISURFX1RPQVNU X0NPTVBSRVNTSU9OIGZhbHNlCisKK0NSRUFURSBUQUJMRSB0CisoaSBpbnQgTk9UIE5VTEws CisgdCB0ZXh0IFNUT1JBR0UgRVhURU5ERUQgQ09NUFJFU1NJT04gcGdseiBERUZBVUxUICdk ZWZhdWx0X3QnLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgn MjAyMi0wMS0wMScpIFNUT1JFRCkgUEFSVElUSU9OIEJZIFJBTkdFIChhYnMoaSkpOworQ09N TUVOVCBPTiBDT0xVTU4gdC5pIElTICd0MS5pJzsKKworQ1JFQVRFIFRBQkxFIHRwXzBfMQor KGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIE1BSU4gREVGQVVMVCAnZGVmYXVs dF90cF8wXzEnLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgn MjAyMi0wMi0wMicpIFNUT1JFRCk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04g dHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ09NTUVOVCBPTiBDT0xVTU4g dHBfMF8xLmkgSVMgJ3RwXzBfMS5pJzsKKworQ1JFQVRFIFRBQkxFIHRwXzFfMgorKGkgaW50 IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIE1BSU4gREVGQVVMVCAnZGVmYXVsdF90cF8x XzInLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0w My0wMycpIFNUT1JFRCk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMV8y IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQ09NTUVOVCBPTiBDT0xVTU4gdHBfMV8y LmkgSVMgJ3RwXzFfMi5pJzsKKworQ1JFQVRFIFNUQVRJU1RJQ1MgdF9zdGF0IChERVBFTkRF TkNJRVMpIG9uIGksIGIgZnJvbSB0OworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBfMF8xX3N0YXQg KERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHRwXzBfMTsKK0NSRUFURSBTVEFUSVNUSUNT IHRwXzFfMl9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0cF8xXzI7CisKK0FM VEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrIENIRUNLIChiID4gMCk7CitB TFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjazEgQ0hFQ0sgKGIgPiAwKSBO T1QgRU5GT1JDRUQ7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjazIg Q0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQ7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5U IHRfYl9ubiBOT1QgTlVMTCBiIE5PVCBWQUxJRDsKKworSU5TRVJUIElOVE8gdHBfMF8xKGks IHQsIGIpIFZBTFVFUygwLCBERUZBVUxULCAxKTsKK0lOU0VSVCBJTlRPIHRwXzFfMihpLCB0 LCBiKSBWQUxVRVMoMSwgREVGQVVMVCwgMik7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElP TiB0cmlnZ2VyX2Z1bmN0aW9uKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3Fs JyBBUworJEJPRFkkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVk OiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1As IFRHX1dIRU4sIFRHX0xFVkVMOworICBSRVRVUk4gbmV3OworRU5EOworJEJPRFkkOworCitD UkVBVEUgVFJJR0dFUiB0X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VS VCBPTiB0IEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0 aW9uKCd0Jyk7CitDUkVBVEUgVFJJR0dFUiB0cF8wXzFfYmVmb3JlX2luc2VydF9yb3dfdHJp Z2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwXzBfMSBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQ Uk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlvbigndHBfMF8xJyk7CitDUkVBVEUgVFJJR0dFUiB0 cF8xXzJfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwXzFf MiBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlvbign dHBfMV8yJyk7CisKK1xkKyB0cF8wXzEKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9O UyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8xOworXGQrIHRwXzBfMQorCitJTlNFUlQg SU5UTyB0KGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAzKTsKK1NFTEVDVCB0YWJsZW9p ZDo6cmVnY2xhc3MsICogRlJPTSB0IE9SREVSIEJZIGI7CitEUk9QIFRBQkxFIHQ7CitEUk9Q IEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKTsKK1xzZXQgSElERV9UT0FTVF9DT01QUkVT U0lPTiB0cnVlCisKKworLS0gVGVzdCBNRVJHRSBQQVJUSVRJT05TIHdpdGggbm90IHZhbGlk IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQKK0NSRUFURSBUQUJMRSB0IChpIElOVCBQUklNQVJZ IEtFWSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFS VElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUg dHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworSU5T RVJUIElOVE8gdCBWQUxVRVMgKDApLCAoMSk7CitDUkVBVEUgVEFCTEUgdF9mayAoaSBJTlQp OworSU5TRVJUIElOVE8gdF9mayBWQUxVRVMgKDEpLCAoMik7CitBTFRFUiBUQUJMRSB0X2Zr IEFERCBDT05TVFJBSU5UIHRfZmtfaV9ma2V5IEZPUkVJR04gS0VZIChpKSBSRUZFUkVOQ0VT IHQgTk9UIFZBTElEOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEs IHRwXzFfMikgSU5UTyB0cF8wXzI7CisKKy0tIFNob3VsZCBiZSBOT1QgVkFMSUQgRk9SRUlH TiBLRVkKK1xkIHRwXzBfMgorLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxl ICJ0X2ZrIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0X2ZrX2lfZmtleSIK K0FMVEVSIFRBQkxFIHRfZmsgVkFMSURBVEUgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleTsKKwor RFJPUCBUQUJMRSB0X2ZrOworRFJPUCBUQUJMRSB0OworCistLSBUZXN0IE1FUkdFIFBBUlRJ VElPTlMgd2l0aCBub3QgZW5mb3JjZWQgZm9yZWlnbiBrZXkgY29uc3RyYWludAorQ1JFQVRF IFRBQkxFIHQgKGkgSU5UIFBSSU1BUlkgS0VZKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOwor Q1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMik7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCksICgxKTsKK0NS RUFURSBUQUJMRSB0X2ZrIChpIElOVCk7CitJTlNFUlQgSU5UTyB0X2ZrIFZBTFVFUyAoMSks ICgyKTsKKworQUxURVIgVEFCTEUgdF9mayBBREQgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleSBG T1JFSUdOIEtFWSAoaSkgUkVGRVJFTkNFUyB0IE5PVCBFTkZPUkNFRDsKK0FMVEVSIFRBQkxF IHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworCist LSBTaG91bGQgYmUgTk9UIEVORk9SQ0VEIEZPUkVJR04gS0VZCitcZCB0cF8wXzIKKy0tIEVS Uk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidF9mayIgdmlvbGF0ZXMgZm9yZWln biBrZXkgY29uc3RyYWludCAidF9ma19pX2ZrZXkiCitBTFRFUiBUQUJMRSB0X2ZrIEFMVEVS IENPTlNUUkFJTlQgdF9ma19pX2ZrZXkgRU5GT1JDRUQ7CisKK0RST1AgVEFCTEUgdF9mazsK K0RST1AgVEFCTEUgdDsKKworCistLSBUZXN0IGZvciByZWNvbXB1dGF0aW9uIG9mIHN0b3Jl ZCBnZW5lcmF0ZWQgY29sdW1ucy4KK0NSRUFURSBUQUJMRSB0IChpIGludCwgdGFiX2lkIGlu dCBnZW5lcmF0ZWQgYWx3YXlzIGFzICh0YWJsZW9pZCkgc3RvcmVkKSBQQVJUSVRJT04gQlkg UkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFM VUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IEFERCBDT05T VFJBSU5UIGNjIENIRUNLKHRhYmxlb2lkIDw+IDEyMzQ1Njc4OSk7CitJTlNFUlQgSU5UTyB0 IFZBTFVFUyAoMCksICgxKTsKKworLS0gU2hvdWxkIGJlIDAgYmVjYXVzZSBwYXJ0aXRpb24g aWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0wIGlzIGRpZmZlcmVudCBmcm9tCistLSBwYXJ0 aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0xLgorU0VMRUNUIGNvdW50KCopIEZS T00gdCBXSEVSRSBpID0gMCBBTkQgdGFiX2lkIElOIChTRUxFQ1QgdGFiX2lkIEZST00gdCBX SEVSRSBpID0gMSk7CisKKy0tICJ0YWJfaWQiIGNvbHVtbiAoc3RvcmVkIGdlbmVyYXRlZCBj b2x1bW4pIHdpdGggInRhYmxlb2lkIiBhdHRyaWJ1dGUgcmVxdWlyZXMKKy0tIHJlY29tcHV0 YXRpb24gaGVyZS4KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0 cF8xXzIpIElOVE8gdHBfMF8yOworCistLSBTaG91bGQgYmUgMSBiZWNhdXNlIHBhcnRpdGlv biBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAgaXMgdGhlIHNhbWUgYXMKKy0tIHBhcnRp dGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxFQ1QgY291bnQoKikgRlJP TSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdI RVJFIGkgPSAxKTsKKworRFJPUCBUQUJMRSB0OworCisKKy0tIFRlc3QgZm9yIGdlbmVyYXRl ZCBjb2x1bW5zIChkaWZmZXJlbnQgb3JkZXIgb2YgY29sdW1ucyBpbiBwYXJ0aXRpb25lZCB0 YWJsZQorLS0gYW5kIHBhcnRpdGlvbnMpLgorQ1JFQVRFIFRBQkxFIHQgKGkgaW50LCBnIGlu dCBHRU5FUkFURUQgQUxXQVlTIEFTIChpICsgdGFibGVvaWQ6OmludCkpIFBBUlRJVElPTiBC WSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMSAoZyBpbnQgR0VORVJBVEVEIEFMV0FZ UyBBUyAoaSArIHRhYmxlb2lkOjppbnQpLCBpIGludCk7CitDUkVBVEUgVEFCTEUgdHBfMiAo ZyBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoaSArIHRhYmxlb2lkOjppbnQpLCBpIGludCk7 CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMSBGT1IgVkFMVUVTIEZST00g KC0xKSBUTyAoMTApOworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzIgRk9S IFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0FMVEVSIFRBQkxFIHQgQUREIENIRUNLIChn ID4gMCk7CitBTFRFUiBUQUJMRSB0IEFERCBDSEVDSyAoaSA+IDApOworSU5TRVJUIElOVE8g dCBWQUxVRVMgKDUpLCAoMTUpOworCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMg KHRwXzEsIHRwXzIpIElOVE8gdHBfMTI7CisKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgxNik7 CistLSBFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJ0cF8xMiIgdmlvbGF0ZXMgY2hl Y2sgY29uc3RyYWludCAidF9pX2NoZWNrIgorSU5TRVJUIElOVE8gdCBWQUxVRVMgKDApOwor LS0gU2hvdWxkIGJlIDMgcm93czogKDUpLCAoMTUpLCAoMTYpOgorU0VMRUNUIGkgRlJPTSB0 IE9SREVSIEJZIGk7CistLSBTaG91bGQgYmUgMSBiZWNhdXNlIGZvciB0aGUgc2FtZSB0YWJs ZW9pZCAoMTUgKyB0YWJsZW9pZCkgPSAoNSArIHRhYmxlb2lkKSArIDEwOgorU0VMRUNUIGNv dW50KCopIEZST00gdCBXSEVSRSBpID0gMTUgQU5EIGcgSU4gKFNFTEVDVCBnICsgMTAgRlJP TSB0IFdIRVJFIGkgPSA1KTsKKworRFJPUCBUQUJMRSB0OworCisKK1JFU0VUIHNlYXJjaF9w YXRoOworCistLQorRFJPUCBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWE7CitEUk9Q IFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTI7Ci0tIAoyLjQwLjEud2luZG93cy4x Cgo= --------------46ilqFKLxIprY4q8cZx7OwR2 Content-Type: text/plain; charset=UTF-8; name="v54-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.patch" Content-Disposition: attachment; filename*0="v54-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3OTU2MjhhNGFkMzQ4MzQ2MDk0ZDM2MjYyNmNiYjg1ZTkyNGU0OTRlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU4OjA5ICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NTQgMi8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIFNQTElU 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 cmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbCAgICAgICAgICAgICB8ICAxMDIgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA0MzggKysr KysKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAg MzggKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8 ICAgODggKy0KIHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgICAgICAg ICB8ICA3MTkgKysrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAg ICAgICAgICAgICB8ICAgMTggKwogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAg ICAgICAgICAgICAgIHwgICAxMCArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o ICAgICAgICAgICAgICAgIHwgICAyMSArLQogc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5o ICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcv cGFydGJvdW5kcy5oICAgICAgICAgfCAgICA0ICsKIHNyYy9pbmNsdWRlL3V0aWxzL3J1bGV1 dGlscy5oICAgICAgICAgICAgICAgICB8ICAgIDIgKwogLi4uL2lzb2xhdGlvbi9leHBlY3Rl ZC9wYXJ0aXRpb24tc3BsaXQub3V0ICAgIHwgIDE5MCArKwogc3JjL3Rlc3QvaXNvbGF0aW9u L2lzb2xhdGlvbl9zY2hlZHVsZSAgICAgICAgIHwgICAgMSArCiBzcmMvdGVzdC9pc29sYXRp b24vc3BlY3MvcGFydGl0aW9uLXNwbGl0LnNwZWMgfCAgIDU0ICsKIC4uLi90ZXN0X2RkbF9k ZXBhcnNlL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91dCB8ICAgIDUgKwogLi4uL3Rlc3RfZGRs X2RlcGFyc2Uvc3FsL2FsdGVyX3RhYmxlLnNxbCAgICAgIHwgICAgNCArCiAuLi4vdGVzdF9k ZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMgICAgICAgfCAgICAzICsKIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dCB8IDE2NDIgKysrKysrKysr KysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAg ICB8ICAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwg ICAgICB8IDExNDkgKysrKysrKysrKysrCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdCAgICAgICAgICAgICAgfCAgICAyICsKIDIyIGZpbGVzIGNoYW5nZWQsIDQ0ODAgaW5z ZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl 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 LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKaW5kZXggMjlhMGZm NWNkYi4uMGRjZGFhMDVjMCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90 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+IGlzIG9uZSBvZjo8L3BocmFzZT4KIApAQCAtMTE2MSw2ICsxMTY1LDc4IEBAIFdJVEgg KCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVy YWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVu dHJ5PgogCisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtYWx0ZXJ0YWJsZS1zcGxpdC1wYXJ0 aXRpb24iPgorICAgIDx0ZXJtPjxsaXRlcmFsPlNQTElUIFBBUlRJVElPTiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBJTlRP IChQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lMTwvcmVwbGFjZWFibGU+IHsgRk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQg fSwgUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f bmFtZTI8L3JlcGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxU IH0gWywgLi4uXSk8L2xpdGVyYWw+PC90ZXJtPgorCisgICAgPGxpc3RpdGVtPgorICAgICA8 cGFyYT4KKyAgICAgIFRoaXMgZm9ybSBzcGxpdHMgYSBzaW5nbGUgcGFydGl0aW9uIG9mIHRo ZSB0YXJnZXQgdGFibGUgaW50byBhIG5ldworICAgICAgcGFydGl0aW9ucy4gSGFzaC1wYXJ0 aXRpb25lZCB0YXJnZXQgdGFibGUgaXMgbm90IHN1cHBvcnRlZC4gQm91bmRzIG9mIG5ldwor ICAgICAgcGFydGl0aW9ucyBzaG91bGQgbm90IG92ZXJsYXAgd2l0aCBuZXcgYW5kIGV4aXN0 aW5nIHBhcnRpdGlvbnMKKyAgICAgIChleGNlcHQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4pLgorICAgICAgSWYgdGhlIHNw bGl0IHBhcnRpdGlvbiBpcyBhIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlv biwgb25lIG9mCisgICAgICB0aGUgbmV3IHBhcnRpdGlvbnMgbXVzdCBiZSA8bGl0ZXJhbD5E RUZBVUxUPC9saXRlcmFsPi4KKyAgICAgIEluIGNhc2Ugb25lIG9mIHRoZSBuZXcgcGFydGl0 aW9ucyBpcyA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiwKKyAgICAgIG5ldyBwYXJ0aXRp b25zIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3Jl cGxhY2VhYmxlPiwKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiwgLi4uIGNhbgorICAgICAgaGF2ZSBzcGFjZXMg YmV0d2VlbiBwYXJ0aXRpb25zIGJvdW5kcy4gIElmIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBk b2VzIG5vdAorICAgICAgaGF2ZSBhIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRp dGlvbiwgdGhlIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+CisgICAgICBwYXJ0aXRpb24g Y2FuIGJlIGRlZmluZWQgYXMgb25lIG9mIHRoZSBuZXcgcGFydGl0aW9ucy4KKyAgICAgPC9w YXJhPgorICAgICA8cGFyYT4KKyAgICAgIEluIGNhc2UgbmV3IHBhcnRpdGlvbnMgZG8gbm90 IGNvbnRhaW4gYSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPgorICAgICAgcGFydGl0aW9u LCB0aGUgZm9sbG93aW5nIG11c3QgYmUgdHJ1ZTogc3VtIGJvdW5kcyBvZiBuZXcgcGFydGl0 aW9ucworICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lMTwvcmVwbGFjZWFibGU+LAorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+LCAuLi4gc2hvdWxkCisgICAgICBi ZSBlcXVhbCB0byBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4uCisgICAgICBPbmUg b2YgdGhlIG5ldyBwYXJ0aXRpb25zIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiwgLi4uIGNhbiBo YXZlCisgICAgICB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBhcnRpdGlvbiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgorICAg ICAgKHRoaXMgaXMgc3VpdGFibGUgaW4gY2FzZSBvZiBzcGxpdHRpbmcgYSA8bGl0ZXJhbD5E RUZBVUxUPC9saXRlcmFsPgorICAgICAgcGFydGl0aW9uOiB3ZSBzcGxpdCBpdCwgYnV0IGFm dGVyIHNwbGl0dGluZyB3ZSBoYXZlIGEgcGFydGl0aW9uIHdpdGggdGhlCisgICAgICBzYW1l IG5hbWUpLiAgT25seSBzaW1wbGUsIG5vbi1wYXJ0aXRpb25lZCBwYXJ0aXRpb24gY2FuIGJl IHNwbGl0LgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgTmV3IHBhcnRpdGlv bnMgd2lsbCBoYXZlIHRoZSBzYW1lIG93bmVyIGFzIHRoZSBwYXJlbnQgcGFydGl0aW9uLgor ICAgICAgSXQgaXMgdGhlIHVzZXIncyByZXNwb25zaWJpbGl0eSB0byBzZXR1cCA8YWNyb255 bT5BQ0w8L2Fjcm9ueW0+IG9uIG5ldworICAgICAgcGFydGl0aW9ucy4KKyAgICAgPC9wYXJh PgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBpbmRleGVzIGFuZCBpZGVudGl0eSBhcmUgY3Jl YXRlZCBsYXRlciwgYWZ0ZXIgbW92aW5nIHRoZSBkYXRhCisgICAgICBpbnRvIHRoZSBuZXcg cGFydGl0aW9ucy4KKyAgICAgIEV4dGVuZGVkIHN0YXRpc3RpY3MgYXJlbid0IGNvcGllZCBm cm9tIHRoZSBwYXJlbnQgdGFibGUsIGZvciBjb25zaXN0ZW5jeSB3aXRoCisgICAgICA8Y29t bWFuZD5DUkVBVEUgVEFCTEUgUEFSVElUSU9OIE9GPC9jb21tYW5kPi4KKyAgICAgIE5ldyBw YXJ0aXRpb25zIHdpbGwgaW5oZXJpdCB0aGUgc2FtZSB0YWJsZSBhY2Nlc3MgbWV0aG9kLCBw ZXJzaXN0ZW5jZQorICAgICAgdHlwZSwgYW5kIHRhYmxlc3BhY2UgYXMgdGhlIHBhcmVudCB0 YWJsZS4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIFdoZW4gcGFydGl0aW9u IGlzIHNwbGl0LCBhbnkgaW5kaXZpZHVhbCBvYmplY3RzIGJlbG9uZ2luZyB0byB0aGlzCisg ICAgICBwYXJ0aXRpb24sIHN1Y2ggYXMgY29uc3RyYWludHMgb3Igc3RhdGlzdGljcyB3aWxs IGJlIGRyb3BwZWQuIFRoaXMgY2N1cnMKKyAgICAgIGJlY2F1c2UgPGNvbW1hbmQ+QUxURVIg VEFCTEUgU1BMSVQgUEFSVElUSU9OPC9jb21tYW5kPiB1c2VzIHRoZSBwYXJ0aXRpb25lZCB0 YWJsZSBpdHNlbGYKKyAgICAgIGFzIHRoZSB0ZW1wbGF0ZSB0byBkZWZpbmUgdGhlc2Ugb2Jq ZWN0cy4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIElmIHNwbGl0IHBhcnRp dGlvbiBoYXMgc29tZSBvYmplY3RzIGRlcGVuZGVudCBvbiBpdCwgdGhlIGNvbW1hbmQgY2Fu CisgICAgICBub3QgYmUgZG9uZSAoPGxpdGVyYWw+Q0FTQ0FERTwvbGl0ZXJhbD4gaXMgbm90 IHVzZWQsIGFuIGVycm9yIHdpbGwgYmUgcmV0dXJuZWQpLgorICAgICA8L3BhcmE+CisgICAg IDxub3RlPgorICAgICAgPHBhcmE+CisgICAgICAgU3BsaXQgcGFydGl0aW9uIGFjcXVpcmVz IGEgPGxpdGVyYWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jayBvbgorICAgICAg IHRoZSBwYXJlbnQgdGFibGUsIGluIGFkZGl0aW9uIHRvIHRoZSA8bGl0ZXJhbD5BQ0NFU1Mg RVhDTFVTSVZFPC9saXRlcmFsPgorICAgICAgIGxvY2sgb24gdGhlIHRhYmxlIGJlaW5nIHNw bGl0LgorICAgICAgPC9wYXJhPgorICAgICA8L25vdGU+CisgICAgIDxub3RlPgorICAgICAg PHBhcmE+CisgICAgICAgPGNvbW1hbmQ+QUxURVIgVEFCTEUgU1BMSVQgUEFSVElUSU9OPC9j b21tYW5kPiBjcmVhdGVzIG5ldyBwYXJ0aXRpb25zIGFuZAorICAgICAgIG1vdmVzIGRhdGEg ZnJvbSBzcGxpdCBwYXJ0aXRpb24gaW50byB0aGVtLCB3aGljaCBjYW4gdGFrZSBhIGxvbmcg dGltZS4KKyAgICAgICBTbyBpdCBpcyBub3QgcmVjb21tZW5kZWQgdG8gdXNlIGNvbW1hbmQg Zm9yIHNwbGl0dGluZyBhIHNtYWxsIGZyYWN0aW9uIG9mCisgICAgICAgcm93cyBvdXQgb2Yg YSB2ZXJ5IGJpZyBwYXJ0aXRpb24uCisgICAgICA8L3BhcmE+CisgICAgIDwvbm90ZT4KKyAg ICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkg aWQ9InNxbC1hbHRlcnRhYmxlLW1lcmdlLXBhcnRpdGlvbnMiPgogICAgIDx0ZXJtPjxsaXRl cmFsPk1FUkdFIFBBUlRJVElPTlMgKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0pIElOVE8gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJs ZT48L2xpdGVyYWw+PC90ZXJtPgogCkBAIC0xMjYyLDcgKzEzMzgsOCBAQCBXSVRIICggTU9E VUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9y ZXBsYWNlYWJsZT4sIFJFTQogICAgQWxsIHRoZSBmb3JtcyBvZiA8Y29tbWFuZD5BTFRFUiBU QUJMRTwvY29tbWFuZD4gdGhhdCBhY3Qgb24gYSBzaW5nbGUgdGFibGUsCiAgICBleGNlcHQg PGxpdGVyYWw+UkVOQU1FPC9saXRlcmFsPiwgPGxpdGVyYWw+U0VUIFNDSEVNQTwvbGl0ZXJh bD4sCiAgICA8bGl0ZXJhbD5BVFRBQ0ggUEFSVElUSU9OPC9saXRlcmFsPiwgPGxpdGVyYWw+ REVUQUNIIFBBUlRJVElPTjwvbGl0ZXJhbD4sCi0gICBhbmQgPGxpdGVyYWw+TUVSR0UgUEFS VElUSU9OUzwvbGl0ZXJhbD4gY2FuIGJlIGNvbWJpbmVkIGludG8KKyAgIDxsaXRlcmFsPlNQ TElUIFBBUlRJVElPTjwvbGl0ZXJhbD4sIGFuZCA8bGl0ZXJhbD5NRVJHRSBQQVJUSVRJT05T PC9saXRlcmFsPgorICAgY2FuIGJlIGNvbWJpbmVkIGludG8KICAgIGEgbGlzdCBvZiBtdWx0 aXBsZSBhbHRlcmF0aW9ucyB0byBiZSBhcHBsaWVkIHRvZ2V0aGVyLiAgRm9yIGV4YW1wbGUs IGl0CiAgICBpcyBwb3NzaWJsZSB0byBhZGQgc2V2ZXJhbCBjb2x1bW5zIGFuZC9vciBhbHRl ciB0aGUgdHlwZSBvZiBzZXZlcmFsCiAgICBjb2x1bW5zIGluIGEgc2luZ2xlIGNvbW1hbmQu ICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgd2l0aCBsYXJnZQpAQCAtMTUwNiw3ICsx NTgzLDcgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgIDxsaXN0aXRlbT4K ICAgICAgICA8cGFyYT4KICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGF0dGFj aCBhcyBhIG5ldyBwYXJ0aXRpb24gb3IgdG8gZGV0YWNoIGZyb20gdGhpcyB0YWJsZSwKLSAg ICAgICAgb3IgdGhlIG5hbWUgb2YgdGhlIG5ldyBtZXJnZWQgcGFydGl0aW9uLgorICAgICAg ICBvciB0aGUgbmFtZSBvZiBzcGxpdCBwYXJ0aXRpb24sIG9yIHRoZSBuYW1lIG9mIHRoZSBu ZXcgbWVyZ2VkIHBhcnRpdGlvbi4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVt PgogICAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTE1MTYsNyArMTU5Myw4IEBAIFdJVEggKCBN T0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8 L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgICA8 bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+Ci0gICAgICAgIFRoZSBuYW1lcyBvZiB0aGUgdGFi bGVzIGJlaW5nIG1lcmdlZCBpbnRvIHRoZSBuZXcgcGFydGl0aW9uLgorICAgICAgICBUaGUg bmFtZXMgb2YgdGhlIHRhYmxlcyBiZWluZyBtZXJnZWQgaW50byB0aGUgbmV3IHBhcnRpdGlv biBvciBzcGxpdCBpbnRvCisgICAgICAgIG5ldyBwYXJ0aXRpb25zLgogICAgICAgIDwvcGFy YT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMTk0OSw2 ICsyMDI3LDI0IEBAIEFMVEVSIFRBQkxFIG1lYXN1cmVtZW50CiAgICAgREVUQUNIIFBBUlRJ VElPTiBtZWFzdXJlbWVudF95MjAxNW0xMjsKIDwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgog CisgIDxwYXJhPgorICAgVG8gc3BsaXQgYSBzaW5nbGUgcGFydGl0aW9uIG9mIHRoZSByYW5n ZS1wYXJ0aXRpb25lZCB0YWJsZToKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjMgSU5UTwor ICAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIzIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjMtMDIt MDEnKSBUTyAoJzIwMjMtMDMtMDEnKSwKKyAgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMyBG T1IgVkFMVUVTIEZST00gKCcyMDIzLTAzLTAxJykgVE8gKCcyMDIzLTA0LTAxJyksCisgICAg UEFSVElUSU9OIHNhbGVzX2FwcjIwMjMgRk9SIFZBTFVFUyBGUk9NICgnMjAyMy0wNC0wMScp IFRPICgnMjAyMy0wNS0wMScpKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorCisgIDxw YXJhPgorICAgVG8gc3BsaXQgYSBzaW5nbGUgcGFydGl0aW9uIG9mIHRoZSBsaXN0LXBhcnRp dGlvbmVkIHRhYmxlOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgVEFCTEUgc2FsZXNfbGlz dCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgIChQQVJUSVRJT04gc2FsZXNf d2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAor ICAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVs aGknLCAnVmxhZGl2b3N0b2snKSwKKyAgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1Ig VkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworPC9wcm9ncmFtbGlz dGluZz48L3BhcmE+CisKICAgPHBhcmE+CiAgICBUbyBtZXJnZSBzZXZlcmFsIHBhcnRpdGlv bnMgaW50byBvbmUgcGFydGl0aW9uIG9mIHRoZSB0YXJnZXQgdGFibGU6CiA8cHJvZ3JhbWxp c3Rpbmc+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDQwYWE3ODNhMzAuLjdi ZDc4NDJkMDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC03NDIsNiArNzQy LDkgQEAgc3RhdGljIGNoYXIgR2V0QXR0cmlidXRlU3RvcmFnZShPaWQgYXR0dHlwaWQsIGNv bnN0IGNoYXIgKnN0b3JhZ2Vtb2RlKTsKIAogc3RhdGljIHZvaWQgQVRFeGVjTWVyZ2VQYXJ0 aXRpb25zKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24g cmVsLAogCQkJCQkJCQkgIFBhcnRpdGlvbkNtZCAqY21kLCBBbHRlclRhYmxlVXRpbGl0eUNv bnRleHQgKmNvbnRleHQpOworc3RhdGljIHZvaWQgQVRFeGVjU3BsaXRQYXJ0aXRpb24oTGlz dCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAorCQkJCQkJCQkgUmVsYXRpb24g cmVsLCBQYXJ0aXRpb25DbWQgKmNtZCwKKwkJCQkJCQkJIEFsdGVyVGFibGVVdGlsaXR5Q29u dGV4dCAqY29udGV4dCk7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlEZWZpbmVSZWxhdGlvbgpA QCAtNDgzOSw2ICs0ODQyLDEwIEBAIEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwoTGlzdCAqY21k cykKIAkJCQljbWRfbG9ja21vZGUgPSBBY2Nlc3NFeGNsdXNpdmVMb2NrOwogCQkJCWJyZWFr OwogCisJCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJCWNtZF9sb2NrbW9kZSA9IEFj Y2Vzc0V4Y2x1c2l2ZUxvY2s7CisJCQkJYnJlYWs7CisKIAkJCWRlZmF1bHQ6CQkJLyogb29w cyAqLwogCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgYWx0ZXIgdGFibGUgdHlwZTog JWQiLAogCQkJCQkgKGludCkgY21kLT5zdWJ0eXBlKTsKQEAgLTUyNzksNiArNTI4NiwxMSBA QCBBVFByZXBDbWQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxlQ21k ICpjbWQsCiAJCQkvKiBObyBjb21tYW5kLXNwZWNpZmljIHByZXAgbmVlZGVkICovCiAJCQlw YXNzID0gQVRfUEFTU19NSVNDOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfU3BsaXRQYXJ0aXRp b246CisJCQlBVFNpbXBsZVBlcm1pc3Npb25zKGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfUEFS VElUSU9ORURfVEFCTEUpOworCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRl ZCAqLworCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgkJ CQkvKiBvb3BzICovCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGFsdGVyIHRhYmxl IHR5cGU6ICVkIiwKIAkJCQkgKGludCkgY21kLT5zdWJ0eXBlKTsKQEAgLTU2ODMsNiArNTY5 NSwxNCBAQCBBVEV4ZWNDbWQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFi LAogCQkJQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKHdxdWV1ZSwgdGFiLCByZWwsIChQYXJ0aXRp b25DbWQgKikgY21kLT5kZWYsCiAJCQkJCQkJCSAgY29udGV4dCk7CiAJCQlicmVhazsKKwkJ Y2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCWNtZCA9IEFUUGFyc2VUcmFuc2Zvcm1DbWQo d3F1ZXVlLCB0YWIsIHJlbCwgY21kLCBmYWxzZSwgbG9ja21vZGUsCisJCQkJCQkJCQkgIGN1 cl9wYXNzLCBjb250ZXh0KTsKKwkJCUFzc2VydChjbWQgIT0gTlVMTCk7CisJCQlBc3NlcnQo cmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSk7CisJ CQlBVEV4ZWNTcGxpdFBhcnRpdGlvbih3cXVldWUsIHRhYiwgcmVsLCAoUGFydGl0aW9uQ21k ICopIGNtZC0+ZGVmLAorCQkJCQkJCQkgY29udGV4dCk7CisJCQlicmVhazsKIAkJZGVmYXVs dDoJCQkJLyogb29wcyAqLwogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBhbHRlciB0 YWJsZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGNtZC0+c3VidHlwZSk7CkBAIC02NzI1LDYg KzY3NDUsOCBAQCBhbHRlcl90YWJsZV90eXBlX3RvX3N0cmluZyhBbHRlclRhYmxlVHlwZSBj bWR0eXBlKQogCQkJcmV0dXJuICJERVRBQ0ggUEFSVElUSU9OIC4uLiBGSU5BTElaRSI7CiAJ CWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgogCQkJcmV0dXJuICJNRVJHRSBQQVJUSVRJT05T IjsKKwkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCXJldHVybiAiU1BMSVQgUEFSVElU SU9OIjsKIAkJY2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCXJldHVybiAiQUxURVIgQ09MVU1O IC4uLiBBREQgSURFTlRJVFkiOwogCQljYXNlIEFUX1NldElkZW50aXR5OgpAQCAtMjI5MjUs MyArMjI5NDcsNDE5IEBAIEFURXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBB bHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkvKiBSZXN0b3JlIHVzZXJp ZCBhbmQgc2VjdXJpdHkgY29udGV4dC4gKi8KIAlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHNh dmVfdXNlcmlkLCBzYXZlX3NlY19jb250ZXh0KTsKIH0KKworCisvKgorICogU3RydWN0IHdp dGggY29udGV4dCBvZiBuZXcgcGFydGl0aW9uIGZvciBpbnNlcnRpbmcgcm93cyBmcm9tIHNw bGl0IHBhcnRpdGlvbgorICovCit0eXBlZGVmIHN0cnVjdCBTcGxpdFBhcnRpdGlvbkNvbnRl eHQKK3sKKwlFeHByU3RhdGUgICpwYXJ0cXVhbHN0YXRlOwkvKiBleHByZXNzaW9uIGZvciBj aGVja2luZyBzbG90IGZvciBwYXJ0aXRpb24KKwkJCQkJCQkJICogKE5VTEwgZm9yIERFRkFV TFQgcGFydGl0aW9uKSAqLworCUJ1bGtJbnNlcnRTdGF0ZSBiaXN0YXRlOwkvKiBzdGF0ZSBv ZiBidWxrIGluc2VydHMgZm9yIHBhcnRpdGlvbiAqLworCVR1cGxlVGFibGVTbG90ICpkc3Rz bG90OwkvKiBzbG90IGZvciBpbnNlcnRpbmcgcm93IGludG8gcGFydGl0aW9uICovCisJQWx0 ZXJlZFRhYmxlSW5mbyAqdGFiOwkJLyogc3RydWN0b3JlIHdpdGggZ2VuZXJhdGVkIGNvbHVt biBleHByZXNzaW9ucworCQkJCQkJCQkgKiBhbmQgY2hlY2sgY29uc3RyYWludCBleHByZXNz c2lvbnMuICovCisJUmVsYXRpb24JcGFydFJlbDsJCS8qIHJlbGF0aW9uIGZvciBwYXJ0aXRp b24gKi8KK30gU3BsaXRQYXJ0aXRpb25Db250ZXh0OworCisvKgorICogY3JlYXRlU3BsaXRQ YXJ0aXRpb25Db250ZXh0OiBjcmVhdGUgY29udGV4dCBmb3IgcGFydGl0aW9uIGFuZCBmaWxs IGl0CisgKi8KK3N0YXRpYyBTcGxpdFBhcnRpdGlvbkNvbnRleHQgKgorY3JlYXRlU3BsaXRQ YXJ0aXRpb25Db250ZXh0KFJlbGF0aW9uIHBhcnRSZWwpCit7CisJU3BsaXRQYXJ0aXRpb25D b250ZXh0ICpwYzsKKworCXBjID0gKFNwbGl0UGFydGl0aW9uQ29udGV4dCAqKSBwYWxsb2Mw KHNpemVvZihTcGxpdFBhcnRpdGlvbkNvbnRleHQpKTsKKwlwYy0+cGFydFJlbCA9IHBhcnRS ZWw7CisKKwkvKgorCSAqIFByZXBhcmUgYSBCdWxrSW5zZXJ0U3RhdGUgZm9yIHRhYmxlX3R1 cGxlX2luc2VydC4gVGhlIEZTTSBpcyBlbXB0eSwgc28KKwkgKiBkb24ndCBib3RoZXIgdXNp bmcgaXQuCisJICovCisJcGMtPmJpc3RhdGUgPSBHZXRCdWxrSW5zZXJ0U3RhdGUoKTsKKwor CS8qIENyZWF0ZSB0dXBsZSBzbG90IGZvciBuZXcgcGFydGl0aW9uLiAqLworCXBjLT5kc3Rz bG90ID0gdGFibGVfc2xvdF9jcmVhdGUocGMtPnBhcnRSZWwsIE5VTEwpOworCisJcmV0dXJu IHBjOworfQorCisvKgorICogZGVsZXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0OiBkZWxldGUg Y29udGV4dCBmb3IgcGFydGl0aW9uCisgKi8KK3N0YXRpYyB2b2lkCitkZWxldGVTcGxpdFBh cnRpdGlvbkNvbnRleHQoU3BsaXRQYXJ0aXRpb25Db250ZXh0ICpwYywgTGlzdCAqKndxdWV1 ZSwgaW50IHRpX29wdGlvbnMpCit7CisJTGlzdENlbGwgICAqbHRhYjsKKworCUV4ZWNEcm9w U2luZ2xlVHVwbGVUYWJsZVNsb3QocGMtPmRzdHNsb3QpOworCUZyZWVCdWxrSW5zZXJ0U3Rh dGUocGMtPmJpc3RhdGUpOworCisJdGFibGVfZmluaXNoX2J1bGtfaW5zZXJ0KHBjLT5wYXJ0 UmVsLCB0aV9vcHRpb25zKTsKKworCS8qCisJICogV2UgZG9uJ3QgbmVlZCBwcm9jZXNzIHRo aXMgcGMtPnBhcnRSZWwgc28gZGVsZXRlIHRoZSBBTFRFUiBUQUJMRSBxdWV1ZQorCSAqIG9m IGl0LgorCSAqLworCWZvcmVhY2gobHRhYiwgKndxdWV1ZSkKKwl7CisJCUFsdGVyZWRUYWJs ZUluZm8gKnRhYiA9IChBbHRlcmVkVGFibGVJbmZvICopIGxmaXJzdChsdGFiKTsKKworCQlp ZiAodGFiLT5yZWxpZCA9PSBSZWxhdGlvbkdldFJlbGlkKHBjLT5wYXJ0UmVsKSkKKwkJCSp3 cXVldWUgPSBsaXN0X2RlbGV0ZV9jZWxsKCp3cXVldWUsIGx0YWIpOworCX0KKworCXBmcmVl KHBjKTsKK30KKworLyoKKyAqIFNwbGl0UGFydGl0aW9uTW92ZVJvd3M6IHNjYW4gc3BsaXQg cGFydGl0aW9uIChzcGxpdFJlbCkgb2YgcGFydGl0aW9uZWQgdGFibGUKKyAqIChyZWwpIGFu ZCBtb3ZlIHJvd3MgaW50byBuZXcgcGFydGl0aW9ucy4KKyAqCisgKiBOZXcgcGFydGl0aW9u cyBkZXNjcmlwdGlvbjoKKyAqIHBhcnRsaXN0OiBsaXN0IG9mIHBvaW50ZXJzIHRvIFNpbmds ZVBhcnRpdGlvblNwZWMgc3RydWN0dXJlcy4gIEl0IGNvbnRhaW5zCisgKiB0aGUgcGFydGl0 aW9uIHNwZWNpZmljYXRpb24gZGV0YWlscyBmb3IgYWxsIG5ldyBwYXJ0aXRpb25zLgorICog bmV3UGFydFJlbHM6IGxpc3Qgb2YgUmVsYXRpb25zLCBuZXcgcGFydGl0aW9ucyBjcmVhdGVk IGluCisgKiBBVEV4ZWNTcGxpdFBhcnRpdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK1NwbGl0 UGFydGl0aW9uTW92ZVJvd3MoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBSZWxhdGlv biBzcGxpdFJlbCwKKwkJCQkJICAgTGlzdCAqcGFydGxpc3QsIExpc3QgKm5ld1BhcnRSZWxz KQoreworCS8qIFRoZSBGU00gaXMgZW1wdHksIHNvIGRvbid0IGJvdGhlciB1c2luZyBpdC4g Ki8KKwlpbnQJCQl0aV9vcHRpb25zID0gVEFCTEVfSU5TRVJUX1NLSVBfRlNNOworCUNvbW1h bmRJZAlteWNpZDsKKwlFU3RhdGUJICAgKmVzdGF0ZTsKKwlMaXN0Q2VsbCAgICpsaXN0cHRy LAorCQkJICAgKmxpc3RwdHIyOworCVR1cGxlVGFibGVTbG90ICpzcmNzbG90OworCUV4cHJD b250ZXh0ICplY29udGV4dDsKKwlUYWJsZVNjYW5EZXNjIHNjYW47CisJU25hcHNob3QJc25h cHNob3Q7CisJTWVtb3J5Q29udGV4dCBvbGRDeHQ7CisJTGlzdAkgICAqcGFydENvbnRleHRz ID0gTklMOworCVR1cGxlQ29udmVyc2lvbk1hcCAqdHVwbGVfbWFwOworCVNwbGl0UGFydGl0 aW9uQ29udGV4dCAqZGVmYXVsdFBhcnRDdHggPSBOVUxMLAorCQkJICAgKnBjOworCisJbXlj aWQgPSBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpOworCisJZXN0YXRlID0gQ3JlYXRlRXhl Y3V0b3JTdGF0ZSgpOworCisJZm9yYm90aChsaXN0cHRyLCBwYXJ0bGlzdCwgbGlzdHB0cjIs IG5ld1BhcnRSZWxzKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gKFNpbmds ZVBhcnRpdGlvblNwZWMgKikgbGZpcnN0KGxpc3RwdHIpOworCisJCXBjID0gY3JlYXRlU3Bs aXRQYXJ0aXRpb25Db250ZXh0KChSZWxhdGlvbikgbGZpcnN0KGxpc3RwdHIyKSk7CisKKwkJ LyogRmluZCB0aGUgd29yayBxdWV1ZSBlbnRyeSBmb3IgbmV3IHBhcnRpdGlvbiB0YWJsZTog bmV3UGFydFJlbC4gKi8KKwkJcGMtPnRhYiA9IEFUR2V0UXVldWVFbnRyeSh3cXVldWUsIHBj LT5wYXJ0UmVsKTsKKworCQlidWlsZEV4cHJlc3Npb25FeGVjdXRpb25TdGF0ZXMocGMtPnRh YiwgcGMtPnBhcnRSZWwsIGVzdGF0ZSk7CisKKwkJaWYgKHNwcy0+Ym91bmQtPmlzX2RlZmF1 bHQpCisJCXsKKwkJCS8qCisJCQkgKiBXZSBzaG91bGQgbm90IGNyZWF0ZSBzdHJ1Y3R1cmUg Zm9yIGNoZWNrIHBhcnRpdGlvbiBjb25zdHJhaW50CisJCQkgKiBmb3IgbmV3IERFRkFVTFQg cGFydGl0aW9uLgorCQkJICovCisJCQlkZWZhdWx0UGFydEN0eCA9IHBjOworCQl9CisJCWVs c2UKKwkJeworCQkJTGlzdAkgICAqcGFydENvbnN0cmFpbnQ7CisKKwkJCS8qIEJ1aWxkIGV4 cHJlc3Npb24gZXhlY3V0aW9uIHN0YXRlcyBmb3IgcGFydGl0aW9uIGNoZWNrIHF1YWxzLiAq LworCQkJcGFydENvbnN0cmFpbnQgPSBnZXRfcXVhbF9mcm9tX3BhcnRib3VuZChyZWwsIHNw cy0+Ym91bmQpOworCQkJcGFydENvbnN0cmFpbnQgPQorCQkJCShMaXN0ICopIGV2YWxfY29u c3RfZXhwcmVzc2lvbnMoTlVMTCwKKwkJCQkJCQkJCQkJCShOb2RlICopIHBhcnRDb25zdHJh aW50KTsKKwkJCS8qIE1ha2UgYm9vbGVhbiBleHByZXNzaW9uIGZvciBFeGVjQ2hlY2soKS4g Ki8KKwkJCXBhcnRDb25zdHJhaW50ID0gbGlzdF9tYWtlMShtYWtlX2FuZHNfZXhwbGljaXQo cGFydENvbnN0cmFpbnQpKTsKKworCQkJLyoKKwkJCSAqIE1hcCB0aGUgdmFycyBpbiB0aGUg Y29uc3RyYWludCBleHByZXNzaW9uIGZyb20gcmVsJ3MgYXR0bm9zIHRvCisJCQkgKiBzcGxp dFJlbCdzLgorCQkJICovCisJCQlwYXJ0Q29uc3RyYWludCA9IG1hcF9wYXJ0aXRpb25fdmFy YXR0bm9zKHBhcnRDb25zdHJhaW50LAorCQkJCQkJCQkJCQkJCSAxLCBzcGxpdFJlbCwgcmVs KTsKKworCQkJcGMtPnBhcnRxdWFsc3RhdGUgPQorCQkJCUV4ZWNQcmVwYXJlRXhwcigoRXhw ciAqKSBsaW5pdGlhbChwYXJ0Q29uc3RyYWludCksIGVzdGF0ZSk7CisJCQlBc3NlcnQocGMt PnBhcnRxdWFsc3RhdGUgIT0gTlVMTCk7CisJCX0KKworCQkvKiBTdG9yZSBwYXJ0aXRpb24g Y29udGV4dCBpbnRvIGxpc3QuICovCisJCXBhcnRDb250ZXh0cyA9IGxhcHBlbmQocGFydENv bnRleHRzLCBwYyk7CisJfQorCisJZWNvbnRleHQgPSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0 KGVzdGF0ZSk7CisKKwkvKiBDcmVhdGUgbmVjZXNzYXJ5IHR1cGxlIHNsb3QuICovCisJc3Jj c2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHNwbGl0UmVsLCBOVUxMKTsKKworCS8qCisJICog TWFwIGNvbXB1dGluZyBmb3IgbW92aW5nIGF0dHJpYnV0ZXMgb2Ygc3BsaXQgcGFydGl0aW9u IHRvIG5ldyBwYXJ0aXRpb24KKwkgKiAoZm9yIGZpcnN0IG5ldyBwYXJ0aXRpb24sIGJ1dCBv dGhlciBuZXcgcGFydGl0aW9ucyBjYW4gdXNlIHRoZSBzYW1lCisJICogbWFwKS4KKwkgKi8K KwlwYyA9IChTcGxpdFBhcnRpdGlvbkNvbnRleHQgKikgbGZpcnN0KGxpc3RfaGVhZChwYXJ0 Q29udGV4dHMpKTsKKwl0dXBsZV9tYXAgPSBjb252ZXJ0X3R1cGxlc19ieV9uYW1lKFJlbGF0 aW9uR2V0RGVzY3Ioc3BsaXRSZWwpLAorCQkJCQkJCQkJICAgUmVsYXRpb25HZXREZXNjcihw Yy0+cGFydFJlbCkpOworCisJLyogU2NhbiB0aHJvdWdoIHRoZSByb3dzLiAqLworCXNuYXBz aG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwlzY2FuID0g dGFibGVfYmVnaW5zY2FuKHNwbGl0UmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7CisKKwkvKgor CSAqIFN3aXRjaCB0byBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZv ciBlYWNoIHR1cGxlCisJICogcHJvZHVjZWQsIHNvIHdlIGRvbid0IGxlYWsgbWVtb3J5Lgor CSAqLworCW9sZEN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhHZXRQZXJUdXBsZU1lbW9y eUNvbnRleHQoZXN0YXRlKSk7CisKKwl3aGlsZSAodGFibGVfc2Nhbl9nZXRuZXh0c2xvdChz Y2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc3Jjc2xvdCkpCisJeworCQlib29sCQlmb3Vu ZCA9IGZhbHNlOworCQlUdXBsZVRhYmxlU2xvdCAqaW5zZXJ0c2xvdDsKKworCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOworCisJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNyY3Ns b3Q7CisKKwkJLyogU2VhcmNoIHBhcnRpdGlvbiBmb3IgY3VycmVudCBzbG90IHNyY3Nsb3Qu ICovCisJCWZvcmVhY2gobGlzdHB0ciwgcGFydENvbnRleHRzKQorCQl7CisJCQlwYyA9IChT cGxpdFBhcnRpdGlvbkNvbnRleHQgKikgbGZpcnN0KGxpc3RwdHIpOworCisJCQkvKiBza2lw IERFRkFVTFQgcGFydGl0aW9uICovCisJCQlpZiAocGMtPnBhcnRxdWFsc3RhdGUgJiYgRXhl Y0NoZWNrKHBjLT5wYXJ0cXVhbHN0YXRlLCBlY29udGV4dCkpCisJCQl7CisJCQkJZm91bmQg PSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCWlmICghZm91bmQpCisJCXsKKwkJ CS8qIFVzZSBERUZBVUxUIHBhcnRpdGlvbiBpZiBpdCBleGlzdHMuICovCisJCQlpZiAoZGVm YXVsdFBhcnRDdHgpCisJCQkJcGMgPSBkZWZhdWx0UGFydEN0eDsKKwkJCWVsc2UKKwkJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0NIRUNLX1ZJT0xBVElPTiks CisJCQkJCQllcnJtc2coImNhbiBub3QgZmluZCBwYXJ0aXRpb24gZm9yIHNwbGl0IHBhcnRp dGlvbiByb3ciKSwKKwkJCQkJCWVycnRhYmxlKHNwbGl0UmVsKSk7CisJCX0KKworCQlpZiAo dHVwbGVfbWFwKQorCQl7CisJCQkvKiBOZWVkIHRvIHVzZSBtYXAgdG8gY29weSBhdHRyaWJ1 dGVzLiAqLworCQkJaW5zZXJ0c2xvdCA9IGV4ZWN1dGVfYXR0cl9tYXBfc2xvdCh0dXBsZV9t YXAtPmF0dHJNYXAsIHNyY3Nsb3QsIHBjLT5kc3RzbG90KTsKKwkJfQorCQllbHNlCisJCXsK KwkJCS8qIEV4dHJhY3QgZGF0YSBmcm9tIG9sZCB0dXBsZS4gKi8KKwkJCXNsb3RfZ2V0YWxs YXR0cnMoc3Jjc2xvdCk7CisKKwkJCS8qIENvcHkgYXR0cmlidXRlcyBkaXJlY3RseS4gKi8K KwkJCWluc2VydHNsb3QgPSBwYy0+ZHN0c2xvdDsKKworCQkJRXhlY0NsZWFyVHVwbGUoaW5z ZXJ0c2xvdCk7CisKKwkJCW1lbWNweShpbnNlcnRzbG90LT50dHNfdmFsdWVzLCBzcmNzbG90 LT50dHNfdmFsdWVzLAorCQkJCSAgIHNpemVvZihEYXR1bSkgKiBzcmNzbG90LT50dHNfbnZh bGlkKTsKKwkJCW1lbWNweShpbnNlcnRzbG90LT50dHNfaXNudWxsLCBzcmNzbG90LT50dHNf aXNudWxsLAorCQkJCSAgIHNpemVvZihib29sKSAqIHNyY3Nsb3QtPnR0c19udmFsaWQpOwor CisJCQlFeGVjU3RvcmVWaXJ0dWFsVHVwbGUoaW5zZXJ0c2xvdCk7CisJCX0KKworCQkvKgor CQkgKiBDb25zdHJhaW50cyBhbmQgR0VORVJBVEVEIGV4cHJlc3Npb25zIG1pZ2h0IHJlZmVy ZW5jZSB0aGUgdGFibGVvaWQKKwkJICogY29sdW1uLCBzbyBmaWxsIHR0c190YWJsZU9pZCB3 aXRoIHRoZSBkZXNpcmVkIHZhbHVlLiAoV2UgbXVzdCBkbworCQkgKiB0aGlzIGVhY2ggdGlt ZSwgYmVjYXVzZSBpdCBnZXRzIG92ZXJ3cml0dGVuIHdpdGggbmV3cmVsJ3MgT0lECisJCSAq IGR1cmluZyBzdG9yaW5nLikKKwkJICovCisJCWluc2VydHNsb3QtPnR0c190YWJsZU9pZCA9 IFJlbGF0aW9uR2V0UmVsaWQocGMtPnBhcnRSZWwpOworCisJCS8qCisJCSAqIE5vdywgZXZh bHVhdGUgYW55IGdlbmVyYXRlZCBleHByZXNzaW9ucyB3aG9zZSBpbnB1dHMgY29tZSBmcm9t IHRoZQorCQkgKiBuZXcgdHVwbGUuICBXZSBhc3N1bWUgdGhlc2UgY29sdW1ucyB3b24ndCBy ZWZlcmVuY2UgZWFjaCBvdGhlciwgc28KKwkJICogdGhhdCB0aGVyZSdzIG5vIG9yZGVyaW5n IGRlcGVuZGVuY3kuCisJCSAqLworCQlldmFsdWF0ZUdlbmVyYXRlZEV4cHJlc3Npb25zQW5k Q2hlY2tDb25zdHJhaW50cyhwYy0+dGFiLCBwYy0+cGFydFJlbCwKKwkJCQkJCQkJCQkJCQkJ aW5zZXJ0c2xvdCwgZWNvbnRleHQpOworCisJCS8qIFdyaXRlIHRoZSB0dXBsZSBvdXQgdG8g dGhlIG5ldyByZWxhdGlvbi4gKi8KKwkJdGFibGVfdHVwbGVfaW5zZXJ0KHBjLT5wYXJ0UmVs LCBpbnNlcnRzbG90LCBteWNpZCwKKwkJCQkJCSAgIHRpX29wdGlvbnMsIHBjLT5iaXN0YXRl KTsKKworCQlSZXNldEV4cHJDb250ZXh0KGVjb250ZXh0KTsKKwl9CisKKwlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkQ3h0KTsKKworCXRhYmxlX2VuZHNjYW4oc2Nhbik7CisJVW5yZWdp c3RlclNuYXBzaG90KHNuYXBzaG90KTsKKworCWlmICh0dXBsZV9tYXApCisJCWZyZWVfY29u dmVyc2lvbl9tYXAodHVwbGVfbWFwKTsKKworCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNs b3Qoc3Jjc2xvdCk7CisKKwlGcmVlRXhlY3V0b3JTdGF0ZShlc3RhdGUpOworCisJZm9yZWFj aF9wdHIoU3BsaXRQYXJ0aXRpb25Db250ZXh0LCBzcGMsIHBhcnRDb250ZXh0cykKKwkJZGVs ZXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KHNwYywgd3F1ZXVlLCB0aV9vcHRpb25zKTsKK30K KworLyoKKyAqIEFMVEVSIFRBQkxFIDxuYW1lPiBTUExJVCBQQVJUSVRJT04gPHBhcnRpdGlv bi1uYW1lPiBJTlRPIDxwYXJ0aXRpb24tbGlzdD4KKyAqLworc3RhdGljIHZvaWQKK0FURXhl Y1NwbGl0UGFydGl0aW9uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwg UmVsYXRpb24gcmVsLAorCQkJCQkgUGFydGl0aW9uQ21kICpjbWQsIEFsdGVyVGFibGVVdGls aXR5Q29udGV4dCAqY29udGV4dCkKK3sKKwlSZWxhdGlvbglzcGxpdFJlbDsKKwlPaWQJCQlz cGxpdFJlbE9pZDsKKwljaGFyCQlyZWxuYW1lW05BTUVEQVRBTEVOXTsKKwlMaXN0Q2VsbCAg ICpsaXN0cHRyLAorCQkJICAgKmxpc3RwdHIyOworCWJvb2wJCWlzU2FtZU5hbWUgPSBmYWxz ZTsKKwljaGFyCQl0bXBSZWxOYW1lW05BTUVEQVRBTEVOXTsKKwlMaXN0CSAgICpuZXdQYXJ0 UmVscyA9IE5JTDsKKwlPYmplY3RBZGRyZXNzIG9iamVjdDsKKwlPaWQJCQlkZWZhdWx0UGFy dE9pZDsKKwlPaWQJCQlzYXZlX3VzZXJpZDsKKwlpbnQJCQlzYXZlX3NlY19jb250ZXh0Owor CWludAkJCXNhdmVfbmVzdGxldmVsOworCisJZGVmYXVsdFBhcnRPaWQgPSBnZXRfZGVmYXVs dF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocmVsLCB0cnVl KSk7CisKKwkvKgorCSAqIFBhcnRpdGlvbiBpcyBhbHJlYWR5IGxvY2tlZCBpbiB0aGUgdHJh bnNmb3JtUGFydGl0aW9uQ21kRm9yU3BsaXQKKwkgKiBmdW5jdGlvbi4KKwkgKi8KKwlzcGxp dFJlbCA9IHRhYmxlX29wZW5ydihjbWQtPm5hbWUsIE5vTG9jayk7CisKKwlzcGxpdFJlbE9p ZCA9IFJlbGF0aW9uR2V0UmVsaWQoc3BsaXRSZWwpOworCisJLyogQ2hlY2sgZGVzY3JpcHRp b25zIG9mIG5ldyBwYXJ0aXRpb25zLiAqLworCWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRp b25TcGVjLCBzcHMsIGNtZC0+cGFydGxpc3QpCisJeworCQlPaWQJCQlleGlzdGluZ1JlbGlk OworCisJCXN0cmxjcHkocmVsbmFtZSwgc3BzLT5uYW1lLT5yZWxuYW1lLCBOQU1FREFUQUxF Tik7CisKKwkJLyogTG9vayB1cCBleGlzdGluZyByZWxhdGlvbiBieSBuZXcgcGFydGl0aW9u IG5hbWUuICovCisJCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5hbWVzcGFjZShzcHMt Pm5hbWUsIE5vTG9jaywgJmV4aXN0aW5nUmVsaWQpOworCisJCS8qCisJCSAqIFRoaXMgd291 bGQgZmFpbCBsYXRlciBvbiBhbnl3YXkgaWYgdGhlIHJlbGF0aW9uIGFscmVhZHkgZXhpc3Rz LiBCdXQKKwkJICogYnkgY2F0Y2hpbmcgaXQgaGVyZSB3ZSBjYW4gZW1pdCBhIG5pY2VyIGVy cm9yIG1lc3NhZ2UuCisJCSAqLworCQlpZiAoZXhpc3RpbmdSZWxpZCA9PSBzcGxpdFJlbE9p ZCAmJiAhaXNTYW1lTmFtZSkKKwkJCS8qIE9uZSBuZXcgcGFydGl0aW9uIGNhbiBoYXZlIHRo ZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLiAqLworCQkJaXNTYW1lTmFtZSA9IHRy dWU7CisJCWVsc2UgaWYgKE9pZElzVmFsaWQoZXhpc3RpbmdSZWxpZCkpCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJ ZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCByZWxuYW1lKSk7CisJ fQorCisJLyogRGV0YWNoIHNwbGl0IHBhcnRpdGlvbi4gKi8KKwlkZXRhY2hQYXJ0aXRpb25U YWJsZShyZWwsIHNwbGl0UmVsLCBkZWZhdWx0UGFydE9pZCk7CisKKwkvKgorCSAqIFBlcmZv cm0gYSBwcmVsaW1pbmFyeSBjaGVjayB0byBkZXRlcm1pbmUgd2hldGhlciBpdCdzIHNhZmUg dG8gZHJvcAorCSAqIHNwbGl0IHBhcnRpdGlvbiBiZWZvcmUgd2UgYWN0dWFsbHkgZG8gc28g bGF0ZXIuIEFmdGVyIG1lcmdpbmcgcm93cyBpbnRvCisJICogdGhlIG5ldyBwYXJ0aXRpb25z IHZpYSBTcGxpdFBhcnRpdGlvbk1vdmVSb3dzLCBhbGwgb2xkIHBhcnRpdGlvbnMgbmVlZAor CSAqIGJlIGRyb3BwZWQuIEhvd2V2ZXIsIHNpbmNlIHRoZSBkcm9wIGJlaGF2aW9yIGlzIERS T1BfUkVTVFJJQ1QgYW5kIHRoZQorCSAqIG1lcmdlIHByb2Nlc3MgKFNwbGl0UGFydGl0aW9u TW92ZVJvd3MpIGNhbiBiZSB0aW1lLWNvbnN1bWluZywKKwkgKiBwZXJmb3JtaW5nIGFuIGVh cmx5IGNoZWNrIG9uIHRoZSBkcm9wIGVsaWdpYmlsaXR5IG9mIG9sZCBwYXJ0aXRpb25zIGlz CisJICogcHJlZmVyYWJsZS4KKwkgKi8KKwlvYmplY3Qub2JqZWN0SWQgPSBzcGxpdFJlbE9p ZDsKKwlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwlvYmplY3Qub2Jq ZWN0U3ViSWQgPSAwOworCXBlcmZvcm1EZWxldGlvbkNoZWNrKCZvYmplY3QsIERST1BfUkVT VFJJQ1QsIFBFUkZPUk1fREVMRVRJT05fSU5URVJOQUwpOworCisJLyoKKwkgKiBJZiBuZXcg cGFydGl0aW9uIGhhcyB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBhcnRpdGlvbiB0aGVuIHdl IHNob3VsZAorCSAqIHJlbmFtZSBzcGxpdCBwYXJ0aXRpb24gZm9yIHJldXNpbmcgbmFtZS4K KwkgKi8KKwlpZiAoaXNTYW1lTmFtZSkKKwl7CisJCS8qCisJCSAqIFdlIG11c3QgYnVtcCB0 aGUgY29tbWFuZCBjb3VudGVyIHRvIG1ha2UgdGhlIHNwbGl0IHBhcnRpdGlvbiB0dXBsZQor CQkgKiB2aXNpYmxlIGZvciByZW5hbWluZy4KKwkJICovCisJCUNvbW1hbmRDb3VudGVySW5j cmVtZW50KCk7CisJCS8qIFJlbmFtZSBwYXJ0aXRpb24uICovCisJCXNwcmludGYodG1wUmVs TmFtZSwgInNwbGl0LSV1LSVYLXRtcCIsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgTXlQcm9j UGlkKTsKKwkJUmVuYW1lUmVsYXRpb25JbnRlcm5hbChzcGxpdFJlbE9pZCwgdG1wUmVsTmFt ZSwgdHJ1ZSwgZmFsc2UpOworCisJCS8qCisJCSAqIFdlIG11c3QgYnVtcCB0aGUgY29tbWFu ZCBjb3VudGVyIHRvIG1ha2UgdGhlIHNwbGl0IHBhcnRpdGlvbiB0dXBsZQorCQkgKiB2aXNp YmxlIGFmdGVyIHJlbmFtaW5nLgorCQkgKi8KKwkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQo KTsKKwl9CisKKwkvKiBDcmVhdGUgbmV3IHBhcnRpdGlvbnMgKGxpa2Ugc3BsaXQgcGFydGl0 aW9uKSwgd2l0aG91dCBpbmRleGVzLiAqLworCWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRp b25TcGVjLCBzcHMsIGNtZC0+cGFydGxpc3QpCisJeworCQlSZWxhdGlvbgluZXdQYXJ0UmVs OworCisJCW5ld1BhcnRSZWwgPSBjcmVhdGVQYXJ0aXRpb25UYWJsZSh3cXVldWUsIHNwcy0+ bmFtZSwgcmVsLAorCQkJCQkJCQkJCSAgc3BsaXRSZWwtPnJkX3JlbC0+cmVsb3duZXIpOwor CQluZXdQYXJ0UmVscyA9IGxhcHBlbmQobmV3UGFydFJlbHMsIG5ld1BhcnRSZWwpOworCX0K KworCS8qCisJICogU3dpdGNoIHRvIHRoZSB0YWJsZSBvd25lcidzIHVzZXJpZCwgc28gdGhh dCBhbnkgaW5kZXggZnVuY3Rpb25zIGFyZSBydW4KKwkgKiBhcyB0aGF0IHVzZXIuICBBbHNv IGxvY2sgZG93biBzZWN1cml0eS1yZXN0cmljdGVkIG9wZXJhdGlvbnMgYW5kCisJICogYXJy YW5nZSB0byBtYWtlIEdVQyB2YXJpYWJsZSBjaGFuZ2VzIGxvY2FsIHRvIHRoaXMgY29tbWFu ZC4KKwkgKgorCSAqIE5lZWQgdG8gZG8gaXQgYWZ0ZXIgZGV0ZXJtaW5lIG5hbWVzcGFjZSBp biBjcmVhdGVQYXJ0aXRpb25UYWJsZSBjYWxsLgorCSAqLworCUdldFVzZXJJZEFuZFNlY0Nv bnRleHQoJnNhdmVfdXNlcmlkLCAmc2F2ZV9zZWNfY29udGV4dCk7CisJU2V0VXNlcklkQW5k U2VjQ29udGV4dChzcGxpdFJlbC0+cmRfcmVsLT5yZWxvd25lciwKKwkJCQkJCSAgIHNhdmVf c2VjX2NvbnRleHQgfCBTRUNVUklUWV9SRVNUUklDVEVEX09QRVJBVElPTik7CisJc2F2ZV9u ZXN0bGV2ZWwgPSBOZXdHVUNOZXN0TGV2ZWwoKTsKKwlSZXN0cmljdFNlYXJjaFBhdGgoKTsK KworCS8qIENvcHkgZGF0YSBmcm9tIHNwbGl0IHBhcnRpdGlvbiB0byBuZXcgcGFydGl0aW9u cy4gKi8KKwlTcGxpdFBhcnRpdGlvbk1vdmVSb3dzKHdxdWV1ZSwgcmVsLCBzcGxpdFJlbCwg Y21kLT5wYXJ0bGlzdCwgbmV3UGFydFJlbHMpOworCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwg Y29tbWl0LiAqLworCXRhYmxlX2Nsb3NlKHNwbGl0UmVsLCBOb0xvY2spOworCisJLyogQXR0 YWNoIG5ldyBwYXJ0aXRpb25zIHRvIHBhcnRpdGlvbmVkIHRhYmxlLiAqLworCWZvcmJvdGgo bGlzdHB0ciwgY21kLT5wYXJ0bGlzdCwgbGlzdHB0cjIsIG5ld1BhcnRSZWxzKQorCXsKKwkJ U2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGZp cnN0KGxpc3RwdHIpOworCQlSZWxhdGlvbgluZXdQYXJ0UmVsID0gKFJlbGF0aW9uKSBsZmly c3QobGlzdHB0cjIpOworCisJCS8qCisJCSAqIHdxdWV1ZSA9IE5VTEw6IHZlcmlmaWNhdGlv biBmb3IgZWFjaCBjbG9uZWQgY29uc3RyYWludCBpcyBub3QKKwkJICogbmVlZGVkLgorCQkg Ki8KKwkJYXR0YWNoUGFydGl0aW9uVGFibGUoTlVMTCwgcmVsLCBuZXdQYXJ0UmVsLCBzcHMt PmJvdW5kKTsKKwkJLyogS2VlcCB0aGUgbG9jayB1bnRpbCBjb21taXQuICovCisJCXRhYmxl X2Nsb3NlKG5ld1BhcnRSZWwsIE5vTG9jayk7CisJfQorCisJLyogRHJvcCBzcGxpdCBwYXJ0 aXRpb24uICovCisJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJb2Jq ZWN0Lm9iamVjdElkID0gc3BsaXRSZWxPaWQ7CisJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsK KwkvKiBQcm9iYWJseSBEUk9QX0NBU0NBREUgaXMgbm90IG5lZWRlZC4gKi8KKwlwZXJmb3Jt RGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwgMCk7CisKKwkvKiBSb2xsIGJhY2sg YW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5IGluZGV4IGZ1bmN0aW9ucy4gKi8KKwlBdEVP WGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsKKworCS8qIFJlc3RvcmUgdXNlcmlk IGFuZCBzZWN1cml0eSBjb250ZXh0LiAqLworCVNldFVzZXJJZEFuZFNlY0NvbnRleHQoc2F2 ZV91c2VyaWQsIHNhdmVfc2VjX2NvbnRleHQpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggNmUz Yjg5NWY3Mi4uODFmNmU1ZTM2MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0yNTcsNiArMjU3LDcg QEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUs IExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlQYXJ0aXRpb25FbGVtICpwYXJ0ZWxl bTsKIAlQYXJ0aXRpb25TcGVjICpwYXJ0c3BlYzsKIAlQYXJ0aXRpb25Cb3VuZFNwZWMgKnBh cnRib3VuZHNwZWM7CisJU2luZ2xlUGFydGl0aW9uU3BlYyAqc2luZ2xlcGFydHNwZWM7CiAJ Um9sZVNwZWMgICAqcm9sZXNwZWM7CiAJUHVibGljYXRpb25PYmpTcGVjICpwdWJsaWNhdGlv bm9iamVjdHNwZWM7CiAJc3RydWN0IFNlbGVjdExpbWl0ICpzZWxlY3RsaW1pdDsKQEAgLTY0 MCw2ICs2NDEsOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hh ciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPHBhcnRl bGVtPglwYXJ0X2VsZW0KICV0eXBlIDxsaXN0PgkJcGFydF9wYXJhbXMKICV0eXBlIDxwYXJ0 Ym91bmRzcGVjPiBQYXJ0aXRpb25Cb3VuZFNwZWMKKyV0eXBlIDxzaW5nbGVwYXJ0c3BlYz4J U2luZ2xlUGFydGl0aW9uU3BlYworJXR5cGUgPGxpc3Q+CQlwYXJ0aXRpb25zX2xpc3QKICV0 eXBlIDxsaXN0PgkJaGFzaF9wYXJ0Ym91bmQKICV0eXBlIDxkZWZlbHQ+CQloYXNoX3BhcnRi b3VuZF9lbGVtCiAKQEAgLTc3MCw3ICs3NzMsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vy c2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVl cnkpOwogCVNBVkVQT0lOVCBTQ0FMQVIgU0NIRU1BIFNDSEVNQVMgU0NST0xMIFNFQVJDSCBT RUNPTkRfUCBTRUNVUklUWSBTRUxFQ1QKIAlTRVFVRU5DRSBTRVFVRU5DRVMKIAlTRVJJQUxJ WkFCTEUgU0VSVkVSIFNFU1NJT04gU0VTU0lPTl9VU0VSIFNFVCBTRVRTIFNFVE9GIFNIQVJF IFNIT1cKLQlTSU1JTEFSIFNJTVBMRSBTS0lQIFNNQUxMSU5UIFNOQVBTSE9UIFNPTUUgU09V UkNFIFNRTF9QIFNUQUJMRSBTVEFOREFMT05FX1AKKwlTSU1JTEFSIFNJTVBMRSBTS0lQIFNN QUxMSU5UIFNOQVBTSE9UIFNPTUUgU1BMSVQgU09VUkNFIFNRTF9QIFNUQUJMRSBTVEFOREFM T05FX1AKIAlTVEFSVCBTVEFURU1FTlQgU1RBVElTVElDUyBTVERJTiBTVERPVVQgU1RPUkFH RSBTVE9SRUQgU1RSSUNUX1AgU1RSSU5HX1AgU1RSSVBfUAogCVNVQlNDUklQVElPTiBTVUJT VFJJTkcgU1VQUE9SVCBTWU1NRVRSSUMgU1lTSUQgU1lTVEVNX1AgU1lTVEVNX1VTRVIKIApA QCAtMjM1Nyw2ICsyMzYwLDIzIEBAIGFsdGVyX3RhYmxlX2NtZHM6CiAJCQl8IGFsdGVyX3Rh YmxlX2NtZHMgJywnIGFsdGVyX3RhYmxlX2NtZAl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9 CiAJCTsKIAorcGFydGl0aW9uc19saXN0OgorCQkJU2luZ2xlUGFydGl0aW9uU3BlYwkJCQkJ CQl7ICQkID0gbGlzdF9tYWtlMSgkMSk7IH0KKwkJCXwgcGFydGl0aW9uc19saXN0ICcsJyBT aW5nbGVQYXJ0aXRpb25TcGVjCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KKwkJOworCitT aW5nbGVQYXJ0aXRpb25TcGVjOgorCQkJUEFSVElUSU9OIHF1YWxpZmllZF9uYW1lIFBhcnRp dGlvbkJvdW5kU3BlYworCQkJCXsKKwkJCQkJU2luZ2xlUGFydGl0aW9uU3BlYyAqbiA9IG1h a2VOb2RlKFNpbmdsZVBhcnRpdGlvblNwZWMpOworCisJCQkJCW4tPm5hbWUgPSAkMjsKKwkJ CQkJbi0+Ym91bmQgPSAkMzsKKworCQkJCQkkJCA9IG47CisJCQkJfQorCQk7CisKIHBhcnRp dGlvbl9jbWQ6CiAJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gQVRUQUNIIFBBUlRJVElPTiA8 dGFibGVfbmFtZT4gRk9SIFZBTFVFUyAqLwogCQkJQVRUQUNIIFBBUlRJVElPTiBxdWFsaWZp ZWRfbmFtZSBQYXJ0aXRpb25Cb3VuZFNwZWMKQEAgLTI0MDEsNiArMjQyMSwyMCBAQCBwYXJ0 aXRpb25fY21kOgogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAJCQkJCSQkID0gKE5v ZGUgKikgbjsKIAkJCQl9CisJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gU1BMSVQgUEFSVElU SU9OIDxwYXJ0aXRpb25fbmFtZT4gSU5UTyAoKSAqLworCQkJfCBTUExJVCBQQVJUSVRJT04g cXVhbGlmaWVkX25hbWUgSU5UTyAnKCcgcGFydGl0aW9uc19saXN0ICcpJworCQkJCXsKKwkJ CQkJQWx0ZXJUYWJsZUNtZCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFibGVDbWQpOworCQkJCQlQ YXJ0aXRpb25DbWQgKmNtZCA9IG1ha2VOb2RlKFBhcnRpdGlvbkNtZCk7CisKKwkJCQkJbi0+ c3VidHlwZSA9IEFUX1NwbGl0UGFydGl0aW9uOworCQkJCQljbWQtPm5hbWUgPSAkMzsKKwkJ CQkJY21kLT5ib3VuZCA9IE5VTEw7CisJCQkJCWNtZC0+cGFydGxpc3QgPSAkNjsKKwkJCQkJ Y21kLT5jb25jdXJyZW50ID0gZmFsc2U7CisJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsK KwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KIAkJCS8qIEFMVEVSIFRBQkxFIDxuYW1l PiBNRVJHRSBQQVJUSVRJT05TICgpIElOVE8gPHBhcnRpdGlvbl9uYW1lPiAqLwogCQkJfCBN RVJHRSBQQVJUSVRJT05TICcoJyBxdWFsaWZpZWRfbmFtZV9saXN0ICcpJyBJTlRPIHF1YWxp ZmllZF9uYW1lCiAJCQkJewpAQCAtMTgwMTYsNiArMTgwNTAsNyBAQCB1bnJlc2VydmVkX2tl eXdvcmQ6CiAJCQl8IFNLSVAKIAkJCXwgU05BUFNIT1QKIAkJCXwgU09VUkNFCisJCQl8IFNQ TElUCiAJCQl8IFNRTF9QCiAJCQl8IFNUQUJMRQogCQkJfCBTVEFOREFMT05FX1AKQEAgLTE4 NjU2LDYgKzE4NjkxLDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBTTkFQU0hPVAog CQkJfCBTT01FCiAJCQl8IFNPVVJDRQorCQkJfCBTUExJVAogCQkJfCBTUUxfUAogCQkJfCBT VEFCTEUKIAkJCXwgU1RBTkRBTE9ORV9QCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQu YwppbmRleCAzMzNjNTFkOTMzLi44NzQ2OWY2OWVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV91dGlsY21kLmMKQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1D b25zdHJhaW50QXR0cnMoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwKIAkJCQkJCQkJCSBMaXN0 ICpjb25zdHJhaW50TGlzdCk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1Db2x1bW5UeXBlKENy ZWF0ZVN0bXRDb250ZXh0ICpjeHQsIENvbHVtbkRlZiAqY29sdW1uKTsKIHN0YXRpYyB2b2lk IHNldFNjaGVtYU5hbWUoY29uc3QgY2hhciAqY29udGV4dF9zY2hlbWEsIGNoYXIgKipzdG10 X3NjaGVtYV9uYW1lKTsKLXN0YXRpYyB2b2lkIHRyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVh dGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKmNtZCk7CitzdGF0aWMgdm9pZCB0 cmFuc2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9u Qm91bmRTcGVjICpib3VuZCk7CiBzdGF0aWMgTGlzdCAqdHJhbnNmb3JtUGFydGl0aW9uUmFu Z2VCb3VuZHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpibGlzdCwKIAkJCQkJCQkJCQkg ICBSZWxhdGlvbiBwYXJlbnQpOwogc3RhdGljIHZvaWQgdmFsaWRhdGVJbmZpbml0ZUJvdW5k cyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmJsaXN0KTsKQEAgLTM1MTYsOSArMzUxNiwx MSBAQCB0cmFuc2Zvcm1SdWxlU3RtdChSdWxlU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVl cnlTdHJpbmcsCiAvKgogICogY2hlY2tQYXJ0aXRpb24KICAqIENoZWNrIHdoZXRoZXIgcGFy dFJlbE9pZCBpcyBhIGxlYWYgcGFydGl0aW9uIG9mIHRoZSBwYXJlbnQgdGFibGUgKHJlbCku CisgKiBpc19tZXJnZTogdHJ1ZSBpbmRpY2F0ZXMgdGhlIG9wZXJhdGlvbiBpcyAiQUxURVIg VEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMiOworICogZmFsc2UgaW5kaWNhdGVzIHRoZSBv cGVyYXRpb24gaXMgIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT05TIi4KICAqLwog c3RhdGljIHZvaWQKLWNoZWNrUGFydGl0aW9uKFJlbGF0aW9uIHJlbCwgT2lkIHBhcnRSZWxP aWQpCitjaGVja1BhcnRpdGlvbihSZWxhdGlvbiByZWwsIE9pZCBwYXJ0UmVsT2lkLCBib29s IGlzX21lcmdlKQogewogCVJlbGF0aW9uCXBhcnRSZWw7CiAKQEAgLTM1MjgsMjUgKzM1MzAs NjkgQEAgY2hlY2tQYXJ0aXRpb24oUmVsYXRpb24gcmVsLCBPaWQgcGFydFJlbE9pZCkKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUp LAogCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHRhYmxlIiwgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocGFydFJlbCkpLAotCQkJCWVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJH RSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWIt cGFydGl0aW9ucyIpKTsKKwkJCQlpc19tZXJnZQorCQkJCT8gZXJyaGludCgiQUxURVIgVEFC TEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24n dCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikKKwkJCQk6IGVycmhpbnQoIkFMVEVSIFRBQkxFIC4u LiBTUExJVCBQQVJUSVRJT05TIGNhbiBvbmx5IHNwbGl0IHBhcnRpdGlvbnMgZG9uJ3QgaGF2 ZSBzdWItcGFydGl0aW9ucyIpKTsKIAogCWlmICghcGFydFJlbC0+cmRfcmVsLT5yZWxpc3Bh cnRpdGlvbikKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdf T0JKRUNUX1RZUEUpLAogCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHBhcnRpdGlvbiBv ZiBwYXJ0aXRpb25lZCB0YWJsZSBcIiVzXCIiLAogCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShwYXJ0UmVsKSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSksCi0JCQkJ ZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVy Z2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikpOworCQkJCWlzX21l cmdlCisJCQkJPyBlcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBj YW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKQor CQkJCTogZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTlMgY2FuIG9u bHkgc3BsaXQgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikpOwogCiAJ aWYgKGdldF9wYXJ0aXRpb25fcGFyZW50KHBhcnRSZWxPaWQsIGZhbHNlKSAhPSBSZWxhdGlv bkdldFJlbGlkKHJlbCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJZXJyY29kZShFUlJDT0RF X1VOREVGSU5FRF9UQUJMRSksCiAJCQkJZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgaXMgbm90 IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uIFwiJXNcIiIsCiAJCQkJCSAgIFJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKHBhcnRSZWwpLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSwK LQkJCQllcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25s eSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7CisJCQkJ aXNfbWVyZ2UKKwkJCQk/IGVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJ T05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9u cyIpCisJCQkJOiBlcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OUyBj YW4gb25seSBzcGxpdCBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7 CiAKIAl0YWJsZV9jbG9zZShwYXJ0UmVsLCBOb0xvY2spOwogfQogCisvKgorICogdHJhbnNm b3JtUGFydGl0aW9uQ21kRm9yU3BsaXQKKyAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJMRSAu Li4gU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQKKyAqCisgKiBGb3IgZWFjaCBuZXcgcGFydGl0 aW9uIHNwcy0+Ym91bmQgaXMgc2V0IHRvIHRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiBib3Vu ZC4KKyAqIERvZXMgY2hlY2tzIGZvciBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMuCisgKi8K K3N0YXRpYyB2b2lkCit0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JTcGxpdChDcmVhdGVTdG10 Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKnBhcnRjbWQpCit7CisJUmVsYXRpb24JcGFy ZW50ID0gY3h0LT5yZWw7CisJT2lkCQkJc3BsaXRQYXJ0T2lkOworCisJLyogVHJhbnNmb3Jt IHBhcnRpdGlvbiBib3VuZHMgZm9yIGFsbCBwYXJ0aXRpb25zIGluIHRoZSBsaXN0OiAqLwor CWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRpb25TcGVjLCBzcHMsIHBhcnRjbWQtPnBhcnRs aXN0KQorCXsKKwkJY3h0LT5wYXJ0Ym91bmQgPSBOVUxMOworCQl0cmFuc2Zvcm1QYXJ0aXRp b25DbWQoY3h0LCBzcHMtPmJvdW5kKTsKKwkJLyogQXNzaWduIHRyYW5zZm9ybWVkIHZhbHVl IG9mIHRoZSBwYXJ0aXRpb24gYm91bmQuICovCisJCXNwcy0+Ym91bmQgPSBjeHQtPnBhcnRi b3VuZDsKKwl9CisKKwkvKgorCSAqIE9wZW4gYW5kIGxvY2sgcGFydGl0aW9uLCBjaGVjayBv d25lcnNoaXAgYWxvbmcgdGhlIHdheS4gV2UgbmVlZCB0byB1c2UKKwkgKiBBY2Nlc3NFeGNs dXNpdmVMb2NrIGhlcmUsIGJlY2F1c2UgdGhpcyBzcGxpdCBwYXJ0aXRpb24gd2lsbCBiZSBk ZXRhY2hlZAorCSAqIHRoZW4gZHJvcHBlZCBpbiBBVEV4ZWNTcGxpdFBhcnRpdGlvbi4KKwkg Ki8KKwlzcGxpdFBhcnRPaWQgPSBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWQocGFydGNtZC0+ bmFtZSwgQWNjZXNzRXhjbHVzaXZlTG9jaywKKwkJCQkJCQkJCQkJMCwgUmFuZ2VWYXJDYWxs YmFja093bnNSZWxhdGlvbiwKKwkJCQkJCQkJCQkJTlVMTCk7CisKKwljaGVja1BhcnRpdGlv bihwYXJlbnQsIHNwbGl0UGFydE9pZCwgZmFsc2UpOworCisJLyogVGhlbiB3ZSBzaG91bGQg Y2hlY2sgcGFydGl0aW9ucyB3aXRoIHRyYW5zZm9ybWVkIGJvdW5kcy4gKi8KKwljaGVja19w YXJ0aXRpb25zX2Zvcl9zcGxpdChwYXJlbnQsIHNwbGl0UGFydE9pZCwgcGFydGNtZC0+cGFy dGxpc3QsIGN4dC0+cHN0YXRlKTsKK30KKworCiAvKgogICogdHJhbnNmb3JtUGFydGl0aW9u Q21kRm9yTWVyZ2UKICAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFS VElUSU9OUyBjb21tYW5kCkBAIC0zNjIzLDcgKzM2NjksNyBAQCB0cmFuc2Zvcm1QYXJ0aXRp b25DbWRGb3JNZXJnZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKnBh cnRjbWQpCiAJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIG5hbWUtPmxv Y2F0aW9uKSk7CiAJCX0KIAotCQljaGVja1BhcnRpdGlvbihwYXJlbnQsIHBhcnRPaWQpOwor CQljaGVja1BhcnRpdGlvbihwYXJlbnQsIHBhcnRPaWQsIHRydWUpOwogCiAJCXBhcnRPaWRz ID0gbGFwcGVuZF9vaWQocGFydE9pZHMsIHBhcnRPaWQpOwogCX0KQEAgLTM5MTEsNyArMzk1 Nyw3IEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0 bXQgKnN0bXQsCiAJCQkJewogCQkJCQlQYXJ0aXRpb25DbWQgKnBhcnRjbWQgPSAoUGFydGl0 aW9uQ21kICopIGNtZC0+ZGVmOwogCi0JCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZCgmY3h0 LCBwYXJ0Y21kKTsKKwkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kKCZjeHQsIHBhcnRjbWQt PmJvdW5kKTsKIAkJCQkJLyogYXNzaWduIHRyYW5zZm9ybWVkIHZhbHVlIG9mIHRoZSBwYXJ0 aXRpb24gYm91bmQgKi8KIAkJCQkJcGFydGNtZC0+Ym91bmQgPSBjeHQucGFydGJvdW5kOwog CQkJCX0KQEAgLTM5MzMsNiArMzk3OSwyMCBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChP aWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpzdG10LAogCQkJCQlicmVhazsKIAkJCQl9CiAK KwkJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQkJeworCQkJCQlQYXJ0aXRpb25DbWQg KnBhcnRjbWQgPSAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmOworCisJCQkJCWlmIChsaXN0 X2xlbmd0aChwYXJ0Y21kLT5wYXJ0bGlzdCkgPCAyKQorCQkJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAor CQkJCQkJCQllcnJtc2coImxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4g YXQgbGVhc3QgdHdvIHBhcnRpdGlvbnMiKSk7CisKKwkJCQkJdHJhbnNmb3JtUGFydGl0aW9u Q21kRm9yU3BsaXQoJmN4dCwgcGFydGNtZCk7CisJCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5l d2NtZHMsIGNtZCk7CisJCQkJCWJyZWFrOworCQkJCX0KKwogCQkJZGVmYXVsdDoKIAogCQkJ CS8qCkBAIC00MzYzLDEzICs0NDIzLDEzIEBAIHNldFNjaGVtYU5hbWUoY29uc3QgY2hhciAq Y29udGV4dF9zY2hlbWEsIGNoYXIgKipzdG10X3NjaGVtYV9uYW1lKQogCiAvKgogICogdHJh bnNmb3JtUGFydGl0aW9uQ21kCi0gKgkJQW5hbHl6ZSB0aGUgQVRUQUNIL0RFVEFDSCBQQVJU SVRJT04gY29tbWFuZAorICoJCUFuYWx5emUgdGhlIEFUVEFDSC9ERVRBQ0gvU1BMSVQgUEFS VElUSU9OIGNvbW1hbmQKICAqCi0gKiBJbiBjYXNlIG9mIHRoZSBBVFRBQ0ggUEFSVElUSU9O IGNvbW1hbmQsIGN4dC0+cGFydGJvdW5kIGlzIHNldCB0byB0aGUKLSAqIHRyYW5zZm9ybWVk IHZhbHVlIG9mIGNtZC0+Ym91bmQuCisgKiBJbiBjYXNlIG9mIHRoZSBBVFRBQ0gvU1BMSVQg UEFSVElUSU9OIGNvbW1hbmQsIGN4dC0+cGFydGJvdW5kIGlzIHNldCB0byB0aGUKKyAqIHRy YW5zZm9ybWVkIHZhbHVlIG9mIGJvdW5kLgogICovCiBzdGF0aWMgdm9pZAotdHJhbnNmb3Jt UGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21k KQordHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRp dGlvbkJvdW5kU3BlYyAqYm91bmQpCiB7CiAJUmVsYXRpb24JcGFyZW50UmVsID0gY3h0LT5y ZWw7CiAKQEAgLTQzNzgsOSArNDQzOCw5IEBAIHRyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVh dGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKmNtZCkKIAkJY2FzZSBSRUxLSU5E X1BBUlRJVElPTkVEX1RBQkxFOgogCQkJLyogdHJhbnNmb3JtIHRoZSBwYXJ0aXRpb24gYm91 bmQsIGlmIGFueSAqLwogCQkJQXNzZXJ0KFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVu dFJlbCkgIT0gTlVMTCk7Ci0JCQlpZiAoY21kLT5ib3VuZCAhPSBOVUxMKQorCQkJaWYgKGJv dW5kICE9IE5VTEwpCiAJCQkJY3h0LT5wYXJ0Ym91bmQgPSB0cmFuc2Zvcm1QYXJ0aXRpb25C b3VuZChjeHQtPnBzdGF0ZSwgcGFyZW50UmVsLAotCQkJCQkJCQkJCQkJCQkgY21kLT5ib3Vu ZCk7CisJCQkJCQkJCQkJCQkJCSBib3VuZCk7CiAJCQlicmVhazsKIAkJY2FzZSBSRUxLSU5E X1BBUlRJVElPTkVEX0lOREVYOgogCkBAIC00Mzg4LDcgKzQ0NDgsNyBAQCB0cmFuc2Zvcm1Q YXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQp CiAJCQkgKiBBIHBhcnRpdGlvbmVkIGluZGV4IGNhbm5vdCBoYXZlIGEgcGFydGl0aW9uIGJv dW5kIHNldC4gIEFMVEVSCiAJCQkgKiBJTkRFWCBwcmV2ZW50cyB0aGF0IHdpdGggaXRzIGdy YW1tYXIsIGJ1dCBub3QgQUxURVIgVEFCTEUuCiAJCQkgKi8KLQkJCWlmIChjbWQtPmJvdW5k ICE9IE5VTEwpCisJCQlpZiAoYm91bmQgIT0gTlVMTCkKIAkJCQllcmVwb3J0KEVSUk9SLAog CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKIAkJ CQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBwYXJ0aXRpb25lZCB0YWJsZSIsCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jIGIvc3JjL2Jh Y2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwppbmRleCA2MGMxMDM2Y2U4Li5jOTg4 NDA2YjI1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5k cy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKQEAgLTE3 LDYgKzE3LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvcmVsYXRpb24uaCIKICNpbmNsdWRlICJh Y2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgorI2luY2x1ZGUg ImNhdGFsb2cvbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wYXJ0aXRpb24uaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX2luaGVyaXRzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190eXBlLmgiCkBAIC00OTg0LDE1ICs0OTg1LDIzIEBAIHNhdGlzZmllc19oYXNoX3BhcnRp dGlvbihQR19GVU5DVElPTl9BUkdTKQogICoKICAqIChmdW5jdGlvbiBmb3IgQlkgUkFOR0Ug cGFydGl0aW9uaW5nKQogICoKLSAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNh bGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKCkuCisgKiBUaGlzIGlzIGEgaGVs cGVyIGZ1bmN0aW9uIGZvciBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdCgpIGFuZAorICog Y2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoKS4KICAqIFRoaXMgZnVuY3Rp b24gY29tcGFyZXMgdXBwZXIgYm91bmQgb2YgZmlyc3RfYm91bmQgYW5kIGxvd2VyIGJvdW5k IG9mCi0gKiBzZWNvbmRfYm91bmQuIFRoZXNlIGJvdW5kcyBzaG91bGQgYmUgZXF1YWwuCisg KiBzZWNvbmRfYm91bmQuIFRoZXNlIGJvdW5kcyBzaG91bGQgYmUgZXF1YWwgZXhjZXB0IHdo ZW4KKyAqICJkZWZhdWx0UGFydCA9PSB0cnVlIiAodGhpcyBtZWFucyB0aGF0IG9uZSBvZiBz cGxpdCBwYXJ0aXRpb25zIGlzIERFRkFVTFQpLgorICogSW4gdGhpcyBjYXNlIHVwcGVyIGJv dW5kIG9mIGZpcnN0X2JvdW5kIGNhbiBiZSBsZXNzIHRoYW4gbG93ZXIgYm91bmQgb2YKKyAq IHNlY29uZF9ib3VuZCBiZWNhdXNlIHNwYWNlIGJldHdlZW4gdGhlc2UgYm91bmRzIHdpbGwg YmUgaW5jbHVkZWQgaW4KKyAqIERFRkFVTFQgcGFydGl0aW9uLgogICoKICAqIHBhcmVudDoJ CQlwYXJ0aXRpb25lZCB0YWJsZQogICogZmlyc3RfbmFtZToJCW5hbWUgb2YgZmlyc3QgcGFy dGl0aW9uCiAgKiBmaXJzdF9ib3VuZDoJCWJvdW5kIG9mIGZpcnN0IHBhcnRpdGlvbgogICog c2Vjb25kX25hbWU6CQluYW1lIG9mIHNlY29uZCBwYXJ0aXRpb24KICAqIHNlY29uZF9ib3Vu ZDoJYm91bmQgb2Ygc2Vjb25kIHBhcnRpdGlvbgorICogZGVmYXVsdFBhcnQ6CQl0cnVlIGlm IG9uZSBvZiBuZXcgcGFydGl0aW9ucyBpcyBERUZBVUxUCisgKiBtZXJnZV9vcl9zcGxpdDog IHRydWUgaW5kaWNhdGUgdGhlIG9wcmF0aW9uIGlzICJBTFRFUiBUQUJMRSAuLi4gTUVSR0Ug UEFSVElUSU9OUyIKKyAqIGZhbHNlIGluZGljYXRlIHRoZSBvcHJhdGlvbiBpcyAiQUxURVIg VEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTlMiLgogICogcHN0YXRlOgkJCXBvaW50ZXIgdG8g UGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluaW5nIGVycm9yIHBvc2l0aW9uCiAgKi8K IHN0YXRpYyB2b2lkCkBAIC01MDAxLDYgKzUwMTAsOCBAQCBjaGVja190d29fcGFydGl0aW9u c19ib3VuZHNfcmFuZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJCQkJCQkgIFBhcnRpdGlvbkJv dW5kU3BlYyAqZmlyc3RfYm91bmQsCiAJCQkJCQkJCSAgUmFuZ2VWYXIgKnNlY29uZF9uYW1l LAogCQkJCQkJCQkgIFBhcnRpdGlvbkJvdW5kU3BlYyAqc2Vjb25kX2JvdW5kLAorCQkJCQkJ CQkgIGJvb2wgZGVmYXVsdFBhcnQsCisJCQkJCQkJCSAgYm9vbCBtZXJnZV9zcGxpdCwKIAkJ CQkJCQkJICBQYXJzZVN0YXRlICpwc3RhdGUpCiB7CiAJUGFydGl0aW9uS2V5IGtleSA9IFJl bGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CkBAIC01MDIyLDE3ICs1MDMzLDIyIEBA IGNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZShSZWxhdGlvbiBwYXJlbnQsCiAJ CQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAogCQkJCQkJCQkgIHNlY29uZF9sb3dlci0+ ZGF0dW1zLCBzZWNvbmRfbG93ZXItPmtpbmQsCiAJCQkJCQkJCSAgZmFsc2UsIGZpcnN0X3Vw cGVyKTsKLQlpZiAoY21wdmFsKQorCWlmICgoIWRlZmF1bHRQYXJ0ICYmIGNtcHZhbCkgfHwg KGRlZmF1bHRQYXJ0ICYmIGNtcHZhbCA8IDApKQogCXsKIAkJUGFydGl0aW9uUmFuZ2VEYXR1 bSAqZGF0dW0gPSBsaW5pdGlhbChzZWNvbmRfYm91bmQtPmxvd2VyZGF0dW1zKTsKIAogCQll cmVwb3J0KEVSUk9SLAogCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJ TklUSU9OKSwKLQkJCQllcnJtc2coImNhbiBub3QgbWVyZ2UgcGFydGl0aW9uIFwiJXNcIiB0 b2dldGhlciB3aXRoIHBhcnRpdGlvbiBcIiVzXCIiLAotCQkJCQkgICBzZWNvbmRfbmFtZS0+ cmVsbmFtZSwgZmlyc3RfbmFtZS0+cmVsbmFtZSksCisJCQkJbWVyZ2Vfc3BsaXQKKwkJCQk/ IGVycm1zZygiY2FuIG5vdCBtZXJnZSBwYXJ0aXRpb24gXCIlc1wiIHRvZ2V0aGVyIHdpdGgg cGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCQkgc2Vjb25kX25hbWUtPnJlbG5hbWUsIGZpcnN0 X25hbWUtPnJlbG5hbWUpCisJCQkJOiBlcnJtc2coImNhbiBub3Qgc3BsaXQgdG8gcGFydGl0 aW9uIFwiJXNcIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJIHNl Y29uZF9uYW1lLT5yZWxuYW1lLCBmaXJzdF9uYW1lLT5yZWxuYW1lKSwKIAkJCQllcnJkZXRh aWwoImxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90IGVxdWFsIHRvIHRo ZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIiwKIAkJCQkJCSAgc2Vjb25kX25h bWUtPnJlbG5hbWUsIGZpcnN0X25hbWUtPnJlbG5hbWUpLAotCQkJCWVycmhpbnQoIkFMVEVS IFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91 bmRzIHRvIGJlIGFkamFjZW50LiIpLAorCQkJCW1lcmdlX3NwbGl0CisJCQkJPyBlcnJoaW50 KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0 aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4iKQorCQkJCTogZXJyaGludCgiQUxURVIgVEFC TEUgLi4uIFNQTElUIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMg dG8gYmUgYWRqYWNlbnQuIiksCiAJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0 dW0tPmxvY2F0aW9uKSk7CiAJfQogfQpAQCAtNTEzNiw2ICs1MTUyLDggQEAgY2FsY3VsYXRl X3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJCQkJCQkJ CQkJCSAgKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIHByZXZfaW5k ZXgpLAogCQkJCQkJCQkJCQkJCSAgKFJhbmdlVmFyICopIGxpc3RfbnRoKHBhcnROYW1lcywg aW5kZXgpLAogCQkJCQkJCQkJCQkJCSAgKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250 aChib3VuZHMsIGluZGV4KSwKKwkJCQkJCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCQkJCQkJ CSAgdHJ1ZSwKIAkJCQkJCQkJCQkJCQkgIHBzdGF0ZSk7CiAJCQkJfQogCkBAIC01MTc0LDMg KzUxOTIsNjkyIEBAIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKFJlbGF0 aW9uIHBhcmVudCwKIAkJCQkgKGludCkga2V5LT5zdHJhdGVneSk7CiAJfQogfQorCisvKgor ICogY2hlY2tfcGFydGl0aW9uc19ub3Rfb3ZlcmxhcF9saXN0CisgKgorICogKGZ1bmN0aW9u IGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZykKKyAqCisgKiBUaGlzIGlzIGEgaGVscGVyIGZ1 bmN0aW9uIGZvciBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdCgpLgorICogQ2hlY2tzIHRo YXQgdGhlIHZhbHVlcyBvZiB0aGUgbmV3IHBhcnRpdGlvbnMgZG8gbm90IG92ZXJsYXAuCisg KgorICogcGFyZW50OglwYXJ0aXRpb25lZCB0YWJsZQorICogcGFydHM6CWFycmF5IG9mIFNp bmdsZVBhcnRpdGlvblNwZWMgc3RydWN0cyB3aXRoIGluZm8gYWJvdXQgc3BsaXQgcGFydGl0 aW9ucworICogbnBhcnRzOglzaXplIG9mIGFycmF5ICJwYXJ0cyIKKyAqLworc3RhdGljIHZv aWQKK2NoZWNrX3BhcnRpdGlvbnNfbm90X292ZXJsYXBfbGlzdChSZWxhdGlvbiBwYXJlbnQs CisJCQkJCQkJCSAgU2luZ2xlUGFydGl0aW9uU3BlYyAqKnBhcnRzLAorCQkJCQkJCQkgIGlu dCBucGFydHMsCisJCQkJCQkJCSAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlv bktleSBrZXkgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZID0gUmVsYXRpb25HZXRQYXJ0aXRp b25LZXkocGFyZW50KTsKKwlpbnQJCQlvdmVybGFwX2xvY2F0aW9uID0gLTE7CisJaW50CQkJ aSwKKwkJCQlqOworCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwczEsCisJCQkgICAqc3BzMjsK KwlMaXN0CSAgICpvdmVybGFwOworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElU SU9OX1NUUkFURUdZX0xJU1QpOworCisJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQor CXsKKwkJc3BzMSA9IHBhcnRzW2ldOworCisJCWZvciAoaiA9IGkgKyAxOyBqIDwgbnBhcnRz OyBqKyspCisJCXsKKwkJCXNwczIgPSBwYXJ0c1tqXTsKKworCQkJLyoKKwkJCSAqIENhbGN1 bGF0ZSBpbnRlcnNlY3Rpb24gYmV0d2VlbiB2YWx1ZXMgb2YgdHdvIHBhcnRpdGlvbnMuCisJ CQkgKi8KKwkJCW92ZXJsYXAgPSBsaXN0X2ludGVyc2VjdGlvbihzcHMxLT5ib3VuZC0+bGlz dGRhdHVtcywKKwkJCQkJCQkJCQlzcHMyLT5ib3VuZC0+bGlzdGRhdHVtcyk7CisJCQlpZiAo bGlzdF9sZW5ndGgob3ZlcmxhcCkgPiAwKQorCQkJeworCQkJCUNvbnN0CSAgICp2YWwgPSAo Q29uc3QgKikgbGZpcnN0KGxpc3RfaGVhZChvdmVybGFwKSk7CisKKwkJCQlvdmVybGFwX2xv Y2F0aW9uID0gdmFsLT5sb2NhdGlvbjsKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJZXJybXNn KCJuZXcgcGFydGl0aW9uIFwiJXNcIiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcg cGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCQkJICAgc3BzMS0+bmFtZS0+cmVsbmFtZSwgc3Bz Mi0+bmFtZS0+cmVsbmFtZSksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBv dmVybGFwX2xvY2F0aW9uKSk7CisJCQl9CisJCX0KKwl9Cit9CisKKy8qCisgKiBjaGVja19w YXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9yYW5nZQorICoKKyAqIChmdW5jdGlvbiBmb3Ig QlkgUkFOR0UgcGFydGl0aW9uaW5nKQorICoKKyAqIENoZWNrcyB0aGF0IGJvdW5kcyBvZiBu ZXcgcGFydGl0aW9uICJzcGVjIiBhcmUgaW5zaWRlIGJvdW5kcyBvZiBzcGxpdAorICogcGFy dGl0aW9uICh3aXRoIE9pZCBzcGxpdFBhcnRPaWQpLiBJZiBmaXJzdD10cnVlICh0aGlzIG1l YW5zIHRoYXQgInNwZWMiIGlzCisgKiB0aGUgZmlyc3Qgb2YgbmV3IHBhcnRpdGlvbnMpIHRo ZW4gbG93ZXIgYm91bmQgb2YgInNwZWMiIHNob3VsZCBiZSBlcXVhbCAob3IKKyAqIGdyZWF0 ZXIgdGhhbiBvciBlcXVhbCBpbiBjYXNlIGRlZmF1bHRQYXJ0PXRydWUpIHRvIGxvd2VyIGJv dW5kIG9mIHNwbGl0CisgKiBwYXJ0aXRpb24uIElmIGxhc3Q9dHJ1ZSAodGhpcyBtZWFucyB0 aGF0ICJzcGVjIiBpcyB0aGUgbGFzdCBvZiBuZXcKKyAqIHBhcnRpdGlvbnMpIHRoZW4gdXBw ZXIgYm91bmQgb2YgInNwZWMiIHNob3VsZCBiZSBlcXVhbCAob3IgbGVzcyB0aGFuIG9yCisg KiBlcXVhbCBpbiBjYXNlIGRlZmF1bHRQYXJ0PXRydWUpIHRvIHVwcGVyIGJvdW5kIG9mIHNw bGl0IHBhcnRpdGlvbi4KKyAqCisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAq IHJlbG5hbWU6CQkJbmFtZSBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BlYzoJCQlib3Vu ZHMgc3BlY2lmaWNhdGlvbiBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BsaXRQYXJ0T2lk OglzcGxpdCBwYXJ0aXRpb24gT2lkCisgKiBmaXJzdDoJCQl0cnVlIGluIGNhc2UgbmV3IHBh cnRpdGlvbiAic3BlYyIgaXMgZmlyc3Qgb2YgbmV3IHBhcnRpdGlvbnMKKyAqIGxhc3Q6CQkJ dHJ1ZSBpbiBjYXNlIG5ldyBwYXJ0aXRpb24gInNwZWMiIGlzIGxhc3Qgb2YgbmV3IHBhcnRp dGlvbnMKKyAqIGRlZmF1bHRQYXJ0OgkJdHJ1ZSBpbiBjYXNlIG5ldyBwYXJ0aXRpb25zIGNv bnRhaW4gREVGQVVMVCBwYXJ0aXRpb24KKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNl U3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUgZXJyb3IgcG9zaXRpb24KKyAqLworc3RhdGlj IHZvaWQKK2NoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X3JhbmdlKFJlbGF0aW9u IHBhcmVudCwKKwkJCQkJCQkJCSAgIGNoYXIgKnJlbG5hbWUsCisJCQkJCQkJCQkgICBQYXJ0 aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJCQkJCQkgICBPaWQgc3BsaXRQYXJ0T2lkLAor CQkJCQkJCQkJICAgYm9vbCBmaXJzdCwKKwkJCQkJCQkJCSAgIGJvb2wgbGFzdCwKKwkJCQkJ CQkJCSAgIGJvb2wgZGVmYXVsdFBhcnQsCisJCQkJCQkJCQkgICBQYXJzZVN0YXRlICpwc3Rh dGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBh cmVudCk7CisJUGFydGl0aW9uUmFuZ2VCb3VuZCAqbG93ZXIsCisJCQkgICAqdXBwZXI7CisJ aW50CQkJY21wdmFsOworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NU UkFURUdZX1JBTkdFKTsKKwlBc3NlcnQoc3BlYy0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NU UkFURUdZX1JBTkdFKTsKKworCWxvd2VyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChr ZXksIC0xLCBzcGVjLT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisJdXBwZXIgPSBtYWtlX29uZV9w YXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIHNwZWMtPnVwcGVyZGF0dW1zLCBmYWxzZSk7CisK KwkvKgorCSAqIEZpcnN0IGNoZWNrIGlmIHRoZSByZXN1bHRpbmcgcmFuZ2Ugd291bGQgYmUg ZW1wdHkgd2l0aCBzcGVjaWZpZWQgbG93ZXIKKwkgKiBhbmQgdXBwZXIgYm91bmRzLiAgcGFy dGl0aW9uX3Jib3VuZF9jbXAgY2Fubm90IHJldHVybiB6ZXJvIGhlcmUsIHNpbmNlCisJICog dGhlIGxvd2VyLWJvdW5kIGZsYWdzIGFyZSBkaWZmZXJlbnQuCisJICovCisJY21wdmFsID0g cGFydGl0aW9uX3Jib3VuZF9jbXAoa2V5LT5wYXJ0bmF0dHMsCisJCQkJCQkJCSAga2V5LT5w YXJ0c3VwZnVuYywKKwkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCSAg bG93ZXItPmRhdHVtcywgbG93ZXItPmtpbmQsCisJCQkJCQkJCSAgdHJ1ZSwgdXBwZXIpOwor CUFzc2VydChjbXB2YWwgIT0gMCk7CisJaWYgKGNtcHZhbCA+IDApCisJeworCQkvKiBQb2lu dCB0byBwcm9ibGVtYXRpYyBrZXkgaW4gdGhlIGxvd2VyIGRhdHVtcyBsaXN0LiAqLworCQlQ YXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bSA9IGxpc3RfbnRoKHNwZWMtPmxvd2VyZGF0dW1z LCBjbXB2YWwgLSAxKTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09E RV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coImVtcHR5IHJhbmdl IGJvdW5kIHNwZWNpZmllZCBmb3IgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCSAgIHJlbG5h bWUpLAorCQkJCWVycmRldGFpbCgiU3BlY2lmaWVkIGxvd2VyIGJvdW5kICVzIGlzIGdyZWF0 ZXIgdGhhbiBvciBlcXVhbCB0byB1cHBlciBib3VuZCAlcy4iLAorCQkJCQkJICBnZXRfcmFu Z2VfcGFydGJvdW5kX3N0cmluZyhzcGVjLT5sb3dlcmRhdHVtcyksCisJCQkJCQkgIGdldF9y YW5nZV9wYXJ0Ym91bmRfc3RyaW5nKHNwZWMtPnVwcGVyZGF0dW1zKSksCisJCQkJcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSk7CisJfQorCisJLyogTmVl ZCB0byBjaGVjayBmaXJzdCBhbmQgbGFzdCBwYXJ0aXRpb25zIChmcm9tIHNldCBvZiBuZXcg cGFydGl0aW9ucykgKi8KKwlpZiAoZmlyc3QgfHwgbGFzdCkKKwl7CisJCVBhcnRpdGlvbkJv dW5kU3BlYyAqc3BsaXRfc3BlYyA9IGdldF9wYXJ0aXRpb25fYm91bmRfc3BlYyhzcGxpdFBh cnRPaWQpOworCQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bTsKKworCQlpZiAoZmlyc3Qp CisJCXsKKwkJCVBhcnRpdGlvblJhbmdlQm91bmQgKnNwbGl0X2xvd2VyOworCisJCQlzcGxp dF9sb3dlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc3BsaXRfc3Bl Yy0+bG93ZXJkYXR1bXMsIHRydWUpOworCisJCQljbXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5k X2NtcChrZXktPnBhcnRuYXR0cywKKwkJCQkJCQkJCQkgIGtleS0+cGFydHN1cGZ1bmMsCisJ CQkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCQkJICBsb3dlci0+ZGF0 dW1zLCBsb3dlci0+a2luZCwKKwkJCQkJCQkJCQkgIHRydWUsIHNwbGl0X2xvd2VyKTsKKwor CQkJLyoKKwkJCSAqIExvd2VyIGJvdW5kIG9mICJzcGVjIiBzaG91bGQgYmUgZXF1YWwgKG9y IGdyZWF0ZXIgdGhhbiBvciBlcXVhbAorCQkJICogaW4gY2FzZSBkZWZhdWx0UGFydD10cnVl KSB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24uCisJCQkgKi8KKwkJCWlmICgh ZGVmYXVsdFBhcnQpCisJCQl7CisJCQkJaWYgKGNtcHZhbCAhPSAwKQorCQkJCXsKKwkJCQkJ ZGF0dW0gPSBsaXN0X250aChzcGVjLT5sb3dlcmRhdHVtcywgYWJzKGNtcHZhbCkgLSAxKTsK KwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9P QkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJZXJybXNnKCJsb3dlciBib3VuZCBvZiBwYXJ0 aXRpb24gXCIlc1wiIGlzIG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0 aXRpb24iLAorCQkJCQkJCQkgICByZWxuYW1lKSwKKwkJCQkJCQlwYXJzZXJfZXJycG9zaXRp b24ocHN0YXRlLCBkYXR1bS0+bG9jYXRpb24pKTsKKwkJCQl9CisJCQl9CisJCQllbHNlCisJ CQl7CisJCQkJaWYgKGNtcHZhbCA8IDApCisJCQkJeworCQkJCQlkYXR1bSA9IGxpc3RfbnRo KHNwZWMtPmxvd2VyZGF0dW1zLCBhYnMoY21wdmFsKSAtIDEpOworCQkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9O KSwKKwkJCQkJCQllcnJtc2coImxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMg bGVzcyB0aGFuIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCSAg IHJlbG5hbWUpLAorCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5s b2NhdGlvbikpOworCQkJCX0KKwkJCX0KKwkJfQorCQllbHNlCisJCXsKKwkJCVBhcnRpdGlv blJhbmdlQm91bmQgKnNwbGl0X3VwcGVyOworCisJCQlzcGxpdF91cHBlciA9IG1ha2Vfb25l X3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc3BsaXRfc3BlYy0+dXBwZXJkYXR1bXMsIGZh bHNlKTsKKworCQkJY21wdmFsID0gcGFydGl0aW9uX3Jib3VuZF9jbXAoa2V5LT5wYXJ0bmF0 dHMsCisJCQkJCQkJCQkJICBrZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkJCSAga2V5LT5w YXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkJCSAgdXBwZXItPmRhdHVtcywgdXBwZXItPmtpbmQs CisJCQkJCQkJCQkJICBmYWxzZSwgc3BsaXRfdXBwZXIpOworCisJCQkvKgorCQkJICogVXBw ZXIgYm91bmQgb2YgInNwZWMiIHNob3VsZCBiZSBlcXVhbCAob3IgbGVzcyB0aGFuIG9yIGVx dWFsIGluCisJCQkgKiBjYXNlIGRlZmF1bHRQYXJ0PXRydWUpIHRvIHVwcGVyIGJvdW5kIG9m IHNwbGl0IHBhcnRpdGlvbi4KKwkJCSAqLworCQkJaWYgKCFkZWZhdWx0UGFydCkKKwkJCXsK KwkJCQlpZiAoY21wdmFsICE9IDApCisJCQkJeworCQkJCQlkYXR1bSA9IGxpc3RfbnRoKHNw ZWMtPnVwcGVyZGF0dW1zLCBhYnMoY21wdmFsKSAtIDEpOworCQkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwK KwkJCQkJCQllcnJtc2coInVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90 IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCSAg IHJlbG5hbWUpLAorCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5s b2NhdGlvbikpOworCQkJCX0KKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlpZiAoY21wdmFs ID4gMCkKKwkJCQl7CisJCQkJCWRhdHVtID0gbGlzdF9udGgoc3BlYy0+dXBwZXJkYXR1bXMs IGFicyhjbXB2YWwpIC0gMSk7CisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCWVycm1zZygi dXBwZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiBpcyBncmVhdGVyIHRoYW4gdXBwZXIg Ym91bmQgb2Ygc3BsaXQgcGFydGl0aW9uIiwKKwkJCQkJCQkJICAgcmVsbmFtZSksCisJCQkJ CQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSk7CisJCQkJ fQorCQkJfQorCQl9CisJfQorfQorCisvKgorICogY2hlY2tfcGFydGl0aW9uX2JvdW5kc19m b3Jfc3BsaXRfbGlzdAorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgTElTVCBwYXJ0aXRpb25p bmcpCisgKgorICogQ2hlY2tzIHRoYXQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb24gYXJlIGlu c2lkZSBib3VuZHMgb2Ygc3BsaXQgcGFydGl0aW9uCisgKiAod2l0aCBPaWQgc3BsaXRQYXJ0 T2lkKS4KKyAqCisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAqIHJlbG5hbWU6 CQkJbmFtZSBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BlYzoJCQlib3VuZHMgc3BlY2lm aWNhdGlvbiBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BsaXRQYXJ0T2lkOglzcGxpdCBw YXJ0aXRpb24gT2lkCisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVj dCBmb3IgZGV0ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3N0YXRpYyB2b2lkCitjaGVj a19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9saXN0KFJlbGF0aW9uIHBhcmVudCwgY2hh ciAqcmVsbmFtZSwKKwkJCQkJCQkJCSAgUGFydGl0aW9uQm91bmRTcGVjICpzcGVjLAorCQkJ CQkJCQkJICBPaWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3Rh dGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBh cmVudCk7CisJUGFydGl0aW9uRGVzYyBwYXJ0ZGVzYyA9IFJlbGF0aW9uR2V0UGFydGl0aW9u RGVzYyhwYXJlbnQsIGZhbHNlKTsKKwlQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvID0g cGFydGRlc2MtPmJvdW5kaW5mbzsKKwlpbnQJCQl3aXRoID0gLTE7CisJYm9vbAkJb3Zlcmxh cCA9IGZhbHNlOworCWludAkJCW92ZXJsYXBfbG9jYXRpb24gPSAtMTsKKworCUFzc2VydChr ZXktPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKTsKKwlBc3NlcnQoc3Bl Yy0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpOworCUFzc2VydChib3Vu ZGluZm8gJiYgYm91bmRpbmZvLT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElT VCk7CisKKwkvKgorCSAqIFNlYXJjaCBlYWNoIHZhbHVlIG9mIG5ldyBwYXJ0aXRpb24gInNw ZWMiIGluIGV4aXN0aW5nIHBhcnRpdGlvbnMuIEFsbAorCSAqIG9mIHRoZW0gc2hvdWxkIGJl IGluIHNwbGl0IHBhcnRpdGlvbiAod2l0aCBPaWQgc3BsaXRQYXJ0T2lkKS4KKwkgKi8KKwlm b3JlYWNoX25vZGUoQ29uc3QsIHZhbCwgc3BlYy0+bGlzdGRhdHVtcykKKwl7CisJCW92ZXJs YXBfbG9jYXRpb24gPSB2YWwtPmxvY2F0aW9uOworCQlpZiAoIXZhbC0+Y29uc3Rpc251bGwp CisJCXsKKwkJCWludAkJCW9mZnNldDsKKwkJCWJvb2wJCWVxdWFsOworCisJCQlvZmZzZXQg PSBwYXJ0aXRpb25fbGlzdF9ic2VhcmNoKCZrZXktPnBhcnRzdXBmdW5jWzBdLAorCQkJCQkJ CQkJCQlrZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCQkJCWJvdW5kaW5mbywKKwkJCQkJ CQkJCQkJdmFsLT5jb25zdHZhbHVlLAorCQkJCQkJCQkJCQkmZXF1YWwpOworCQkJaWYgKG9m ZnNldCA+PSAwICYmIGVxdWFsKQorCQkJeworCQkJCXdpdGggPSBib3VuZGluZm8tPmluZGV4 ZXNbb2Zmc2V0XTsKKwkJCQlpZiAocGFydGRlc2MtPm9pZHNbd2l0aF0gIT0gc3BsaXRQYXJ0 T2lkKQorCQkJCXsKKwkJCQkJb3ZlcmxhcCA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0K KwkJCX0KKwkJCWVsc2UKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJD T0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJZXJybXNnKCJuZXcgcGFy dGl0aW9uIFwiJXNcIiBjYW5ub3QgaGF2ZSB0aGlzIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFy dGl0aW9uIGRvZXMgbm90IGhhdmUiLAorCQkJCQkJCSAgIHJlbG5hbWUpLAorCQkJCQkJcGFy c2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2NhdGlvbikpOworCQl9CisJCWVs c2UgaWYgKHBhcnRpdGlvbl9ib3VuZF9hY2NlcHRzX251bGxzKGJvdW5kaW5mbykpCisJCXsK KwkJCXdpdGggPSBib3VuZGluZm8tPm51bGxfaW5kZXg7CisJCQlpZiAocGFydGRlc2MtPm9p ZHNbd2l0aF0gIT0gc3BsaXRQYXJ0T2lkKQorCQkJeworCQkJCW92ZXJsYXAgPSB0cnVlOwor CQkJCWJyZWFrOworCQkJfQorCQl9CisJCWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJZXJy bXNnKCJuZXcgcGFydGl0aW9uIFwiJXNcIiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1 c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUiLAorCQkJCQkJICAgcmVsbmFtZSks CisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG92ZXJsYXBfbG9jYXRpb24pKTsK Kwl9CisKKwlpZiAob3ZlcmxhcCkKKwl7CisJCUFzc2VydCh3aXRoID49IDApOworCQllcmVw b3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklU SU9OKSwKKwkJCQllcnJtc2coIm5ldyBwYXJ0aXRpb24gXCIlc1wiIHdvdWxkIG92ZXJsYXAg d2l0aCBhbm90aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkgICBy ZWxuYW1lLCBnZXRfcmVsX25hbWUocGFydGRlc2MtPm9pZHNbd2l0aF0pKSwKKwkJCQlwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVybGFwX2xvY2F0aW9uKSk7CisJfQorfQorCisv KgorICogZmluZF92YWx1ZV9pbl9uZXdfcGFydGl0aW9uc19saXN0CisgKgorICogKGZ1bmN0 aW9uIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZykKKyAqCisgKiBGdW5jdGlvbiByZXR1cm5z IHRydWUgaW4gY2FzZSBhbnkgb2YgbmV3IHBhcnRpdGlvbnMgY29udGFpbnMgdmFsdWUgInZh bHVlIi4KKyAqCisgKiBwYXJ0c3VwZnVuYzoJCWluZm9ybWF0aW9uIGFib3V0IGNvbXBhcmlz b24gZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXJ0aXRpb24ga2V5CisgKiBwYXJ0 Y29sbGF0aW9uOglwYXJ0aXRpb25pbmcgY29sbGF0aW9uCisgKiBwYXJ0czoJCQlwb2ludGVy IHRvIGFycmF5IHdpdGggbmV3IHBhcnRpdGlvbnMgZGVzY3JpcHRpb25zCisgKiBucGFydHM6 CQkJbnVtYmVyIG9mIG5ldyBwYXJ0aXRpb25zCisgKiB2YWx1ZToJCQl0aGUgdmFsdWUgdGhh dCB3ZSBhcmUgbG9va2luZyBmb3IKKyAqIGlzbnVsbDoJCQl0cnVlIGlmIHRoZSB2YWx1ZSB0 aGF0IHdlIGFyZSBsb29raW5nIGZvciBpcyBOVUxMCisgKi8KK3N0YXRpYyBib29sCitmaW5k X3ZhbHVlX2luX25ld19wYXJ0aXRpb25zX2xpc3QoRm1nckluZm8gKnBhcnRzdXBmdW5jLAor CQkJCQkJCQkgIE9pZCAqcGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJICBTaW5nbGVQYXJ0aXRp b25TcGVjICoqcGFydHMsCisJCQkJCQkJCSAgaW50IG5wYXJ0cywKKwkJCQkJCQkJICBEYXR1 bSB2YWx1ZSwKKwkJCQkJCQkJICBib29sIGlzbnVsbCkKK3sKKwlmb3IgKGludCBpID0gMDsg aSA8IG5wYXJ0czsgaSsrKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gcGFy dHNbaV07CisKKwkJZm9yZWFjaF9ub2RlKENvbnN0LCB2YWwsIHNwcy0+Ym91bmQtPmxpc3Rk YXR1bXMpCisJCXsKKwkJCWlmIChpc251bGwgJiYgdmFsLT5jb25zdGlzbnVsbCkKKwkJCQly ZXR1cm4gdHJ1ZTsKKworCQkJaWYgKCFpc251bGwgJiYgIXZhbC0+Y29uc3Rpc251bGwpCisJ CQl7CisJCQkJaWYgKERhdHVtR2V0SW50MzIoRnVuY3Rpb25DYWxsMkNvbGwoJnBhcnRzdXBm dW5jWzBdLAorCQkJCQkJCQkJCQkJCXBhcnRjb2xsYXRpb25bMF0sCisJCQkJCQkJCQkJCQkJ dmFsLT5jb25zdHZhbHVlLAorCQkJCQkJCQkJCQkJCXZhbHVlKSkgPT0gMCkKKwkJCQkJcmV0 dXJuIHRydWU7CisJCQl9CisJCX0KKwl9CisJcmV0dXJuIGZhbHNlOworfQorCisvKgorICog Y2hlY2tfcGFyZW50X3ZhbHVlc19pbl9uZXdfcGFydGl0aW9ucworICoKKyAqIChmdW5jdGlv biBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcpCisgKgorICogQ2hlY2tzIHRoYXQgYWxsIHZh bHVlcyBvZiBzcGxpdCBwYXJ0aXRpb24gKHdpdGggT2lkIHBhcnRPaWQpIGNvbnRhaW5zIGlu IG5ldworICogcGFydGl0aW9ucy4KKyAqCisgKiBwYXJlbnQ6CXBhcnRpdGlvbmVkIHRhYmxl CisgKiBwYXJ0T2lkOglzcGxpdCBwYXJ0aXRpb24gT2lkCisgKiBwYXJ0czoJcG9pbnRlciB0 byBhcnJheSB3aXRoIG5ldyBwYXJ0aXRpb25zIGRlc2NyaXB0aW9ucworICogbnBhcnRzOglu dW1iZXIgb2YgbmV3IHBhcnRpdGlvbnMKKyAqIHBzdGF0ZToJcG9pbnRlciB0byBQYXJzZVN0 YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3N0YXRpYyB2 b2lkCitjaGVja19wYXJlbnRfdmFsdWVzX2luX25ld19wYXJ0aXRpb25zKFJlbGF0aW9uIHBh cmVudCwKKwkJCQkJCQkJCSAgT2lkIHBhcnRPaWQsCisJCQkJCQkJCQkgIFNpbmdsZVBhcnRp dGlvblNwZWMgKipwYXJ0cywKKwkJCQkJCQkJCSAgaW50IG5wYXJ0cywKKwkJCQkJCQkJCSAg UGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdl dFBhcnRpdGlvbktleShwYXJlbnQpOworCVBhcnRpdGlvbkRlc2MgcGFydGRlc2MgPSBSZWxh dGlvbkdldFBhcnRpdGlvbkRlc2MocGFyZW50LCBmYWxzZSk7CisJUGFydGl0aW9uQm91bmRJ bmZvIGJvdW5kaW5mbyA9IHBhcnRkZXNjLT5ib3VuZGluZm87CisJaW50CQkJaTsKKwlib29s CQlmb3VuZCA9IHRydWU7CisJYm9vbAkJc2VhcmNoTnVsbCA9IGZhbHNlOworCURhdHVtCQlk YXR1bSA9IFBvaW50ZXJHZXREYXR1bShOVUxMKTsKKworCUFzc2VydChrZXktPnN0cmF0ZWd5 ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKTsKKworCS8qCisJICogU3BlY2lhbCBwcm9j ZXNzaW5nIGZvciBOVUxMIHZhbHVlLiBTZWFyY2ggTlVMTCB2YWx1ZSBpZiB0aGUgc3BsaXQK KwkgKiBwYXJ0aXRpb24gKHBhcnRPaWQpIGNvbnRhaW5zIGl0LgorCSAqLworCWlmIChwYXJ0 aXRpb25fYm91bmRfYWNjZXB0c19udWxscyhib3VuZGluZm8pICYmCisJCXBhcnRkZXNjLT5v aWRzW2JvdW5kaW5mby0+bnVsbF9pbmRleF0gPT0gcGFydE9pZCkKKwl7CisJCWlmICghZmlu ZF92YWx1ZV9pbl9uZXdfcGFydGl0aW9uc19saXN0KCZrZXktPnBhcnRzdXBmdW5jWzBdLAor CQkJCQkJCQkJCQkgICBrZXktPnBhcnRjb2xsYXRpb24sIHBhcnRzLCBucGFydHMsIGRhdHVt LCB0cnVlKSkKKwkJeworCQkJZm91bmQgPSBmYWxzZTsKKwkJCXNlYXJjaE51bGwgPSB0cnVl OworCQl9CisJfQorCisJLyoKKwkgKiBTZWFyY2ggYWxsIHZhbHVlcyBvZiBzcGxpdCBwYXJ0 aXRpb24gd2l0aCBwYXJ0T2lkIGluIFBhcnRpdGlvbkRlc2Mgb2YKKwkgKiBwYXJ0aXRpb25l ZCB0YWJsZS4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgYm91bmRpbmZvLT5uZGF0dW1zOyBp KyspCisJeworCQlpZiAocGFydGRlc2MtPm9pZHNbYm91bmRpbmZvLT5pbmRleGVzW2ldXSA9 PSBwYXJ0T2lkKQorCQl7CisJCQkvKiBXZSBmb3VuZCB2YWx1ZSB0aGF0IHNwbGl0IHBhcnRp dGlvbiBjb250YWlucy4gKi8KKwkJCWRhdHVtID0gYm91bmRpbmZvLT5kYXR1bXNbaV1bMF07 CisJCQlpZiAoIWZpbmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlvbnNfbGlzdCgma2V5LT5wYXJ0 c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkJCSAgIGtleS0+cGFydGNvbGxhdGlvbiwgcGFydHMs IG5wYXJ0cywgZGF0dW0sIGZhbHNlKSkKKwkJCXsKKwkJCQlmb3VuZCA9IGZhbHNlOworCQkJ CWJyZWFrOworCQkJfQorCQl9CisJfQorCisJaWYgKCFmb3VuZCkKKwl7CisJCUNvbnN0CSAg ICpub3RGb3VuZFZhbDsKKworCQlpZiAoIXNlYXJjaE51bGwpCisKKwkJCS8qCisJCQkgKiBN YWtlIENvbnN0IGZvciBnZXR0aW5nIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBub3QgZm91 bmQKKwkJCSAqIHZhbHVlLgorCQkJICovCisJCQlub3RGb3VuZFZhbCA9IG1ha2VDb25zdChr ZXktPnBhcnR0eXBpZFswXSwKKwkJCQkJCQkJCWtleS0+cGFydHR5cG1vZFswXSwKKwkJCQkJ CQkJCWtleS0+cGFydHR5cGNvbGxbMF0sCisJCQkJCQkJCQlrZXktPnBhcnR0eXBsZW5bMF0s CisJCQkJCQkJCQlkYXR1bSwKKwkJCQkJCQkJCWZhbHNlLAkvKiBpc251bGwgKi8KKwkJCQkJ CQkJCWtleS0+cGFydHR5cGJ5dmFsWzBdKTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2co Im5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlICVzIGJ1dCBzcGxpdCBwYXJ0aXRp b24gZG9lcyIsCisJCQkJCSAgIHNlYXJjaE51bGwgPyAiTlVMTCIgOiBnZXRfbGlzdF9wYXJ0 dmFsdWVfc3RyaW5nKG5vdEZvdW5kVmFsKSkpOworCX0KK30KKworLyoKKyAqIGNoZWNrX3Bh cnRpdGlvbnNfZm9yX3NwbGl0CisgKgorICogQ2hlY2tzIG5ldyBwYXJ0aXRpb25zIGZvciBT UExJVCBQQVJUSVRJT05TIGNvbW1hbmQ6CisgKiAxLiBERUZBVUxUIHBhcnRpdGlvbiBzaG91 bGQgYmUgb25lLgorICogMi4gTmV3IHBhcnRpdGlvbnMgc2hvdWxkIGhhdmUgZGlmZmVyZW50 IG5hbWVzCisgKiAgICAod2l0aCBleGlzdGluZyBwYXJ0aXRpb25zIHRvbykuCisgKiAzLiBC b3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwIHdpdGggbmV3IGFu ZCBleGlzdGluZworICogICAgcGFydGl0aW9ucy4KKyAqIDQuIEluIGNhc2Ugc3BsaXQgcGFy dGl0aW9uIGlzIERFRkFVTFQgcGFydGl0aW9uLCBvbmUgb2YgbmV3IHBhcnRpdGlvbnMKKyAq ICAgIHNob3VsZCBiZSBERUZBVUxULgorICogNS4gSW4gY2FzZSBuZXcgcGFydGl0aW9ucyBv ciBleGlzdGluZyBwYXJ0aXRpb25zIGNvbnRhaW5zIERFRkFVTFQKKyAqICAgIHBhcnRpdGlv biwgbmV3IHBhcnRpdGlvbnMgY2FuIGhhdmUgYW55IGJvdW5kcyBpbnNpZGUgc3BsaXQKKyAq ICAgIHBhcnRpdGlvbiBib3VuZCAoY2FuIGJlIHNwYWNlcyBiZXR3ZWVuIHBhcnRpdGlvbnMg Ym91bmRzKS4KKyAqIDYuIEluIGNhc2UgcGFydGl0aW9uZWQgdGFibGUgZG9lcyBub3QgaGF2 ZSBERUZBVUxUIHBhcnRpdGlvbiwgREVGQVVMVAorICogICAgcGFydGl0aW9uIGNhbiBiZSBk ZWZpbmVkIGFzIG9uZSBvZiBuZXcgcGFydGl0aW9uLgorICogNy4gSW4gY2FzZSBuZXcgcGFy dGl0aW9ucyBub3QgY29udGFpbnMgREVGQVVMVCBwYXJ0aXRpb24gYW5kCisgKiAgICBwYXJ0 aXRpb25lZCB0YWJsZSBkb2VzIG5vdCBoYXZlIERFRkFVTFQgcGFydGl0aW9uIHRoZSBmb2xs b3dpbmcKKyAqICAgIHNob3VsZCBiZSB0cnVlOiBzdW0gYm91bmRzIG9mIG5ldyBwYXJ0aXRp b25zIHNob3VsZCBiZSBlcXVhbAorICogICAgdG8gYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9u LgorICoKKyAqIHBhcmVudDoJCQlwYXJ0aXRpb25lZCB0YWJsZQorICogc3BsaXRQYXJ0T2lk OglzcGxpdCBwYXJ0aXRpb24gT2lkCisgKiBsaXN0OgkJCWxpc3Qgb2YgbmV3IHBhcnRpdGlv bnMKKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRl cm1pbmUgZXJyb3IgcG9zaXRpb24KKyAqLwordm9pZAorY2hlY2tfcGFydGl0aW9uc19mb3Jf c3BsaXQoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJICAgT2lkIHNwbGl0UGFydE9pZCwKKwkJ CQkJCSAgIExpc3QgKnBhcnRsaXN0LAorCQkJCQkJICAgUGFyc2VTdGF0ZSAqcHN0YXRlKQor eworCVBhcnRpdGlvbktleSBrZXk7CisJY2hhcgkJc3RyYXRlZ3k7CisJT2lkCQkJZGVmYXVs dFBhcnRPaWQ7CisJYm9vbAkJaXNTcGxpdFBhcnREZWZhdWx0OworCWJvb2wJCWNyZWF0ZURl ZmF1bHRQYXJ0OworCWludAkJCWRlZmF1bHRfaW5kZXggPSAtMTsKKwlpbnQJCQlpLAorCQkJ CWo7CisJU2luZ2xlUGFydGl0aW9uU3BlYyAqKm5ld19wYXJ0czsKKwlTaW5nbGVQYXJ0aXRp b25TcGVjICpzcHNQcmV2ID0gTlVMTDsKKwlpbnQJCQlucGFydHMgPSAwOworCisJa2V5ID0g UmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlzdHJhdGVneSA9IGdldF9wYXJ0 aXRpb25fc3RyYXRlZ3koa2V5KTsKKworCXN3aXRjaCAoc3RyYXRlZ3kpCisJeworCQljYXNl IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUOgorCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9S QU5HRToKKwkJCXsKKwkJCQkvKgorCQkJCSAqIE1ha2UgYXJyYXkgbmV3X3BhcnRzIHdpdGgg bmV3IHBhcnRpdGlvbnMgZXhjZXB0IERFRkFVTFQKKwkJCQkgKiBwYXJ0aXRpb24uCisJCQkJ ICovCisJCQkJbmV3X3BhcnRzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKiopCisJCQkJCXBh bGxvYzAobGlzdF9sZW5ndGgocGFydGxpc3QpICogc2l6ZW9mKFNpbmdsZVBhcnRpdGlvblNw ZWMgKikpOworCQkJCWkgPSAwOworCQkJCWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRpb25T cGVjLCBzcHMsIHBhcnRsaXN0KQorCQkJCXsKKwkJCQkJaWYgKHNwcy0+Ym91bmQtPmlzX2Rl ZmF1bHQpCisJCQkJCXsKKwkJCQkJCWlmIChkZWZhdWx0X2luZGV4ID49IDApCisJCQkJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVD VF9ERUZJTklUSU9OKSwKKwkJCQkJCQkJCWVycm1zZygiREVGQVVMVCBwYXJ0aXRpb24gc2hv dWxkIGJlIG9uZSIpLAorCQkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3Bz LT5uYW1lLT5sb2NhdGlvbikpOworCQkJCQkJZGVmYXVsdF9pbmRleCA9IGk7CisJCQkJCX0K KwkJCQkJZWxzZQorCQkJCQl7CisJCQkJCQluZXdfcGFydHNbbnBhcnRzKytdID0gc3BzOwor CQkJCQl9CisJCQkJCWkrKzsKKwkJCQl9CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIFBB UlRJVElPTl9TVFJBVEVHWV9IQVNIOgorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCWVycm1zZygicGFydGl0 aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIHNwbGl0IikpOworCQkJ YnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIHBhcnRp dGlvbiBzdHJhdGVneTogJWQiLAorCQkJCSAoaW50KSBrZXktPnN0cmF0ZWd5KTsKKwkJCWJy ZWFrOworCX0KKworCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0Up CisJeworCQlQYXJ0aXRpb25SYW5nZUJvdW5kICoqbG93ZXJfYm91bmRzOworCQlTaW5nbGVQ YXJ0aXRpb25TcGVjICoqdG1wX25ld19wYXJ0czsKKworCQkvKgorCQkgKiBGb3Igc2ltcGxp ZnkgY2hlY2sgZm9yIHJhbmdlcyBvZiBuZXcgcGFydGl0aW9ucyBuZWVkIHRvIHNvcnQgYWxs CisJCSAqIHBhcnRpdGlvbnMgaW4gYXNjZW5kaW5nIG9yZGVyIG9mIHRoZW0gYm91bmRzICh3 ZSBjb21wYXJlIHVwcGVyCisJCSAqIGJvdW5kIG9ubHkpLgorCQkgKi8KKwkJbG93ZXJfYm91 bmRzID0gKFBhcnRpdGlvblJhbmdlQm91bmQgKiopCisJCQlwYWxsb2MwKG5wYXJ0cyAqIHNp emVvZihQYXJ0aXRpb25SYW5nZUJvdW5kICopKTsKKworCQkvKiBDcmVhdGUgYXJyYXkgb2Yg bG93ZXIgYm91bmRzLiAqLworCQlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJCXsK KwkJCWxvd2VyX2JvdW5kc1tpXSA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCBp LAorCQkJCQkJCQkJCQkJCQluZXdfcGFydHNbaV0tPmJvdW5kLT5sb3dlcmRhdHVtcywgdHJ1 ZSk7CisJCX0KKworCQkvKiBTb3J0IGFycmF5IG9mIGxvd2VyIGJvdW5kcy4gKi8KKwkJcXNv cnRfYXJnKGxvd2VyX2JvdW5kcywgbnBhcnRzLCBzaXplb2YoUGFydGl0aW9uUmFuZ2VCb3Vu ZCAqKSwKKwkJCQkgIHFzb3J0X3BhcnRpdGlvbl9yYm91bmRfY21wLCAodm9pZCAqKSBrZXkp OworCisJCS8qIFJlb3JkZXIgYXJyYXkgb2YgcGFydGl0aW9ucy4gKi8KKwkJdG1wX25ld19w YXJ0cyA9IG5ld19wYXJ0czsKKwkJbmV3X3BhcnRzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMg KiopCisJCQlwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihTaW5nbGVQYXJ0aXRpb25TcGVjICop KTsKKwkJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCQkJbmV3X3BhcnRzW2ldID0g dG1wX25ld19wYXJ0c1tsb3dlcl9ib3VuZHNbaV0tPmluZGV4XTsKKworCQlwZnJlZSh0bXBf bmV3X3BhcnRzKTsKKwkJcGZyZWUobG93ZXJfYm91bmRzKTsKKwl9CisKKwlkZWZhdWx0UGFy dE9pZCA9CisJCWdldF9kZWZhdWx0X29pZF9mcm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFy dGl0aW9uRGVzYyhwYXJlbnQsIHRydWUpKTsKKworCS8qIGlzU3BsaXRQYXJ0RGVmYXVsdCBm bGFnOiBpcyBzcGxpdCBwYXJ0aXRpb24gYSBERUZBVUxUIHBhcnRpdGlvbj8gKi8KKwlpc1Nw bGl0UGFydERlZmF1bHQgPSAoZGVmYXVsdFBhcnRPaWQgPT0gc3BsaXRQYXJ0T2lkKTsKKwor CWlmIChpc1NwbGl0UGFydERlZmF1bHQgJiYgZGVmYXVsdF9pbmRleCA8IDApCisJeworCQll cmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJ TklUSU9OKSwKKwkJCQllcnJtc2coIm9uZSBwYXJ0aXRpb24gaW4gdGhlIGxpc3Qgc2hvdWxk IGJlIERFRkFVTFQgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVCIpLAorCQkJ CXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsICgoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBs aW5pdGlhbChwYXJ0bGlzdCkpLT5uYW1lLT5sb2NhdGlvbikpOworCX0KKwllbHNlIGlmICgh aXNTcGxpdFBhcnREZWZhdWx0ICYmIChkZWZhdWx0X2luZGV4ID49IDApICYmIE9pZElzVmFs aWQoZGVmYXVsdFBhcnRPaWQpKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzRGVm ID0KKwkJCShTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxpc3RfbnRoKHBhcnRsaXN0LCBkZWZh dWx0X2luZGV4KTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9J TlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coIm5ldyBwYXJ0aXRpb24g Y2Fubm90IGJlIERFRkFVTFQgYmVjYXVzZSBERUZBVUxUIHBhcnRpdGlvbiBhbHJlYWR5IGV4 aXN0cyIpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHNwc0RlZi0+bmFtZS0+ bG9jYXRpb24pKTsKKwl9CisKKwkvKiBJbmRpY2F0b3IgdGhhdCB0aGUgREVGQVVMVCBwYXJ0 aXRpb24gd2lsbCBiZSBjcmVhdGVkLiAqLworCWNyZWF0ZURlZmF1bHRQYXJ0ID0gKGRlZmF1 bHRfaW5kZXggPj0gMCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJewor CQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPSBuZXdfcGFydHNbaV07CisKKwkJaWYgKGlz U3BsaXRQYXJ0RGVmYXVsdCkKKwkJeworCQkJLyoKKwkJCSAqIEluIGNhc2Ugc3BsaXQgcGFy dGl0aW9uIGlzIERFRkFVTFQgcGFydGl0aW9uIHdlIGNhbiB1c2UgYW55CisJCQkgKiBmcmVl IHJhbmdlcyAtIGFzIHdoZW4gY3JlYXRpbmcgYSBuZXcgcGFydGl0aW9uLgorCQkJICovCisJ CQljaGVja19uZXdfcGFydGl0aW9uX2JvdW5kKHNwcy0+bmFtZS0+cmVsbmFtZSwgcGFyZW50 LCBzcHMtPmJvdW5kLAorCQkJCQkJCQkJICBwc3RhdGUpOworCQl9CisJCWVsc2UKKwkJewor CQkJLyoKKwkJCSAqIENoZWNrcyB0aGF0IGJvdW5kIG9mIGN1cnJlbnQgcGFydGl0aW9uIGlz IGluc2lkZSBib3VuZCBvZiBzcGxpdAorCQkJICogcGFydGl0aW9uLiBGb3IgcmFuZ2UgcGFy dGl0aW9uaW5nOiBjaGVja3MgdGhhdCB1cHBlciBib3VuZCBvZgorCQkJICogcHJldmlvdXMg cGFydGl0aW9uIGlzIGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9mIGN1cnJlbnQKKwkJCSAqIHBh cnRpdGlvbi4gRm9yIGxpc3QgcGFydGl0aW9uaW5nOiBjaGVja3MgdGhhdCBzcGxpdCBwYXJ0 aXRpb24KKwkJCSAqIGNvbnRhaW5zIGFsbCB2YWx1ZXMgb2YgY3VycmVudCBwYXJ0aXRpb24u CisJCQkgKi8KKwkJCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0Up CisJCQl7CisJCQkJYm9vbAkJZmlyc3QgPSAoaSA9PSAwKTsKKwkJCQlib29sCQlsYXN0ID0g KGkgPT0gKG5wYXJ0cyAtIDEpKTsKKworCQkJCWNoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9y X3NwbGl0X3JhbmdlKHBhcmVudCwgc3BzLT5uYW1lLT5yZWxuYW1lLCBzcHMtPmJvdW5kLAor CQkJCQkJCQkJCQkJCSAgIHNwbGl0UGFydE9pZCwgZmlyc3QsIGxhc3QsCisJCQkJCQkJCQkJ CQkJICAgY3JlYXRlRGVmYXVsdFBhcnQsIHBzdGF0ZSk7CisJCQl9CisJCQllbHNlCisJCQkJ Y2hlY2tfcGFydGl0aW9uX2JvdW5kc19mb3Jfc3BsaXRfbGlzdChwYXJlbnQsIHNwcy0+bmFt ZS0+cmVsbmFtZSwKKwkJCQkJCQkJCQkJCQkgIHNwcy0+Ym91bmQsIHNwbGl0UGFydE9pZCwg cHN0YXRlKTsKKwkJfQorCisJCS8qIFJhbmdlcyBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQg bm90IG92ZXJsYXAuICovCisJCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lf UkFOR0UgJiYgc3BzUHJldikKKwkJCWNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5n ZShwYXJlbnQsIHNwc1ByZXYtPm5hbWUsIHNwc1ByZXYtPmJvdW5kLAorCQkJCQkJCQkJCQkg IHNwcy0+bmFtZSwgc3BzLT5ib3VuZCwKKwkJCQkJCQkJCQkJICBjcmVhdGVEZWZhdWx0UGFy dCwKKwkJCQkJCQkJCQkJICBmYWxzZSwKKwkJCQkJCQkJCQkJICBwc3RhdGUpOworCisJCXNw c1ByZXYgPSBzcHM7CisKKwkJLyogQ2hlY2s6IG5ldyBwYXJ0aXRpb25zIHNob3VsZCBoYXZl IGRpZmZlcmVudCBuYW1lcy4gKi8KKwkJZm9yIChqID0gaSArIDE7IGogPCBucGFydHM7IGor KykKKwkJeworCQkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzMiA9IG5ld19wYXJ0c1tqXTsK KwkJCWJvb2wJCXJlc3VsdCA9IGZhbHNlOworCisJCQkvKgorCQkJICogTmVlZCB0byBjb21w YXJlIG5hbWVzcGFjZXM/IE9uZSBvZiB0aGUgc2NoZW1hIG5hbWVzIG1heSBiZQorCQkJICog dW5kZWZpbmVkLCBidXQgdGhlIHNjaGVtYXMgbWF5IHN0aWxsIGJlIGVxdWFsLgorCQkJICov CisJCQlpZiAoKHNwcy0+bmFtZS0+c2NoZW1hbmFtZSAmJiAhc3BzMi0+bmFtZS0+c2NoZW1h bmFtZSkgfHwKKwkJCQkoIXNwcy0+bmFtZS0+c2NoZW1hbmFtZSAmJiBzcHMyLT5uYW1lLT5z Y2hlbWFuYW1lKSkKKwkJCXsKKwkJCQlPaWQJCQluc3BpZCA9IFJhbmdlVmFyR2V0Q3JlYXRp b25OYW1lc3BhY2Uoc3BzLT5uYW1lKTsKKwkJCQlPaWQJCQluc3BpZDIgPSBSYW5nZVZhckdl dENyZWF0aW9uTmFtZXNwYWNlKHNwczItPm5hbWUpOworCisJCQkJaWYgKG5zcGlkID09IG5z cGlkMikKKwkJCQkJcmVzdWx0ID0gKHN0cmNtcChzcHMtPm5hbWUtPnJlbG5hbWUsIHNwczIt Pm5hbWUtPnJlbG5hbWUpID09IDApOworCQkJfQorCQkJZWxzZQorCQkJCXJlc3VsdCA9IGVx dWFsKHNwcy0+bmFtZSwgc3BzMi0+bmFtZSk7CisKKwkJCWlmIChyZXN1bHQpCisJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAor CQkJCQkJZXJybXNnKCJuYW1lIFwiJXNcIiBpcyBhbHJlYWR5IHVzZWQiLCBzcHMyLT5uYW1l LT5yZWxuYW1lKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHNwczItPm5h bWUtPmxvY2F0aW9uKSk7CisJCX0KKwl9CisKKwlpZiAoc3RyYXRlZ3kgPT0gUEFSVElUSU9O X1NUUkFURUdZX0xJU1QpCisJeworCQkvKiBWYWx1ZXMgb2YgbmV3IHBhcnRpdGlvbnMgc2hv dWxkIG5vdCBvdmVybGFwLiAqLworCQljaGVja19wYXJ0aXRpb25zX25vdF9vdmVybGFwX2xp c3QocGFyZW50LCBuZXdfcGFydHMsIG5wYXJ0cywKKwkJCQkJCQkJCQkgIHBzdGF0ZSk7CisK KwkJLyoKKwkJICogTmVlZCB0byBjaGVjayB0aGF0IGFsbCB2YWx1ZXMgb2Ygc3BsaXQgcGFy dGl0aW9uIGNvbnRhaW5zIGluIG5ldworCQkgKiBwYXJ0aXRpb25zLiBTa2lwIHRoaXMgY2hl Y2sgaWYgREVGQVVMVCBwYXJ0aXRpb24gZXhpc3RzLgorCQkgKi8KKwkJaWYgKCFjcmVhdGVE ZWZhdWx0UGFydCkKKwkJCWNoZWNrX3BhcmVudF92YWx1ZXNfaW5fbmV3X3BhcnRpdGlvbnMo cGFyZW50LCBzcGxpdFBhcnRPaWQsCisJCQkJCQkJCQkJCQkgIG5ld19wYXJ0cywgbnBhcnRz LCBwc3RhdGUpOworCX0KKworCXBmcmVlKG5ld19wYXJ0cyk7Cit9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMKaW5kZXggM2Q2ZTZiZGJmZC4uM2UxNjg5YjExOCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMTM3MDcsMyArMTM3MDcsMjEgQEAgZ2V0X3Jh bmdlX3BhcnRib3VuZF9zdHJpbmcoTGlzdCAqYm91bmRfZGF0dW1zKQogCiAJcmV0dXJuIGJ1 Zi0+ZGF0YTsKIH0KKworLyoKKyAqIGdldF9saXN0X3BhcnR2YWx1ZV9zdHJpbmcKKyAqCQlB IEMgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIG9uZSBsaXN0IHBhcnRpdGlvbiB2YWx1ZQor ICovCitjaGFyICoKK2dldF9saXN0X3BhcnR2YWx1ZV9zdHJpbmcoQ29uc3QgKnZhbCkKK3sK KwlkZXBhcnNlX2NvbnRleHQgY29udGV4dDsKKwlTdHJpbmdJbmZvCWJ1ZiA9IG1ha2VTdHJp bmdJbmZvKCk7CisKKwltZW1zZXQoJmNvbnRleHQsIDAsIHNpemVvZihkZXBhcnNlX2NvbnRl eHQpKTsKKwljb250ZXh0LmJ1ZiA9IGJ1ZjsKKworCWdldF9jb25zdF9leHByKHZhbCwgJmNv bnRleHQsIC0xKTsKKworCXJldHVybiBidWYtPmRhdGE7Cit9CmRpZmYgLS1naXQgYS9zcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmluLmMKaW5kZXggMWNmMDk0OWZiYi4uZWZlNjVjZjk0NCAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuaW4uYwpAQCAtMjc0OSw3ICsyNzQ5LDcgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50 IHBhdHRlcm5faWQsCiAJCQkJCSAgIk9XTkVSIFRPIiwgIlNFVCIsICJWQUxJREFURSBDT05T VFJBSU5UIiwKIAkJCQkJICAiUkVQTElDQSBJREVOVElUWSIsICJBVFRBQ0ggUEFSVElUSU9O IiwKIAkJCQkJICAiREVUQUNIIFBBUlRJVElPTiIsICJGT1JDRSBST1cgTEVWRUwgU0VDVVJJ VFkiLAotCQkJCQkgICJNRVJHRSBQQVJUSVRJT05TICgiLAorCQkJCQkgICJTUExJVCBQQVJU SVRJT04iLCAiTUVSR0UgUEFSVElUSU9OUyAoIiwKIAkJCQkJICAiT0YiLCAiTk9UIE9GIik7 CiAJLyogQUxURVIgVEFCTEUgeHh4IEFERCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVS IiwgIlRBQkxFIiwgTWF0Y2hBbnksICJBREQiKSkKQEAgLTMwMTIsMTAgKzMwMTIsMTAgQEAg bWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJCUNPTVBMRVRFX1dJVEgo IkZST00gKCIsICJJTiAoIiwgIldJVEggKCIpOwogCiAJLyoKLQkgKiBJZiB3ZSBoYXZlIEFM VEVSIFRBQkxFIDxmb28+IERFVEFDSCBQQVJUSVRJT04sIHByb3ZpZGUgYSBsaXN0IG9mCisJ ICogSWYgd2UgaGF2ZSBBTFRFUiBUQUJMRSA8Zm9vPiBERVRBQ0h8U1BMSVQgUEFSVElUSU9O LCBwcm92aWRlIGEgbGlzdCBvZgogCSAqIHBhcnRpdGlvbnMgb2YgPGZvbz4uCiAJICovCi0J ZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIkRFVEFDSCIs ICJQQVJUSVRJT04iKSkKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1h dGNoQW55LCAiREVUQUNIfFNQTElUIiwgIlBBUlRJVElPTiIpKQogCXsKIAkJc2V0X2NvbXBs ZXRpb25fcmVmZXJlbmNlKHByZXYzX3dkKTsKIAkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVF UlkoUXVlcnlfZm9yX3BhcnRpdGlvbl9vZl90YWJsZSk7CkBAIC0zMDIzLDYgKzMwMjMsMTAg QEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJZWxzZSBpZiAoTWF0 Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIkRFVEFDSCIsICJQQVJUSVRJT04i LCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEgoIkNPTkNVUlJFTlRMWSIsICJGSU5BTEla RSIpOwogCisJLyogQUxURVIgVEFCTEUgPG5hbWU+IFNQTElUIFBBUlRJVElPTiA8bmFtZT4g Ki8KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiU1BM SVQiLCAiUEFSVElUSU9OIiwgTWF0Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIKCJJTlRPICgg UEFSVElUSU9OIik7CisKIAkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9O UyAoICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwg Ik1FUkdFIiwgIlBBUlRJVElPTlMiLCAiKCIpKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aAppbmRleCBiMWIzMzE1ZmU1Li41YzliZTg0ODNmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oCkBAIC05NjMsMTcgKzk2MywyOSBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25SYW5n ZURhdHVtCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEg aWYgdW5rbm93biAqLwogfSBQYXJ0aXRpb25SYW5nZURhdHVtOwogCisvKgorICogUGFydGl0 aW9uRGVzYyAtIGluZm8gYWJvdXQgc2luZ2xlIHBhcnRpdGlvbiBmb3IgQUxURVIgVEFCTEUg U1BMSVQgUEFSVElUSU9OIGNvbW1hbmQKKyAqLwordHlwZWRlZiBzdHJ1Y3QgU2luZ2xlUGFy dGl0aW9uU3BlYworeworCU5vZGVUYWcJCXR5cGU7CisKKwlSYW5nZVZhciAgICpuYW1lOwkJ CS8qIG5hbWUgb2YgcGFydGl0aW9uICovCisJUGFydGl0aW9uQm91bmRTcGVjICpib3VuZDsJ LyogRk9SIFZBTFVFUywgaWYgYXR0YWNoaW5nICovCit9IFNpbmdsZVBhcnRpdGlvblNwZWM7 CisKIC8qCiAgKiBQYXJ0aXRpb25DbWQgLSBpbmZvIGZvciBBTFRFUiBUQUJMRS9JTkRFWCBB VFRBQ0gvREVUQUNIIFBBUlRJVElPTiBhbmQgZm9yCi0gKgkgIEFMVEVSIFRBQkxFIE1FUkdF IFBBUlRJVElPTlMgY29tbWFuZHMKKyAqCSAgQUxURVIgVEFCTEUgU1BMSVQvTUVSR0UgUEFS VElUSU9OKFMpIGNvbW1hbmRzCiAgKi8KIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvbkNtZAog ewogCU5vZGVUYWcJCXR5cGU7Ci0JUmFuZ2VWYXIgICAqbmFtZTsJCQkvKiBuYW1lIG9mIHBh cnRpdGlvbiB0byBhdHRhY2gvZGV0YWNoL21lcmdlICovCisJUmFuZ2VWYXIgICAqbmFtZTsJ CQkvKiBuYW1lIG9mIHBhcnRpdGlvbiB0bworCQkJCQkJCQkgKiBhdHRhY2gvZGV0YWNoL21l cmdlL3NwbGl0ICovCiAJUGFydGl0aW9uQm91bmRTcGVjICpib3VuZDsJLyogRk9SIFZBTFVF UywgaWYgYXR0YWNoaW5nICovCi0JTGlzdAkgICAqcGFydGxpc3Q7CQkvKiBsaXN0IG9mIHBh cnRpdGlvbnMgdG8gYmUgbWVyZ2VkLCB1c2VkIGluCi0JCQkJCQkJCSAqIEFMVEVSIFRBQkxF IE1FUkdFIFBBUlRJVElPTlMgKi8KKwlMaXN0CSAgICpwYXJ0bGlzdDsJCS8qIGxpc3Qgb2Yg cGFydGl0aW9ucyB0byBiZSBzcGxpdC9tZXJnZWQsIHVzZWQKKwkJCQkJCQkJICogaW4gQUxU RVIgVEFCTEUgU1BMSVQvTUVSR0UgUEFSVElUSU9OKFMpICovCiAJYm9vbAkJY29uY3VycmVu dDsKIH0gUGFydGl0aW9uQ21kOwogCkBAIC0yNDc2LDYgKzI0ODgsNyBAQCB0eXBlZGVmIGVu dW0gQWx0ZXJUYWJsZVR5cGUKIAlBVF9BdHRhY2hQYXJ0aXRpb24sCQkJLyogQVRUQUNIIFBB UlRJVElPTiAqLwogCUFUX0RldGFjaFBhcnRpdGlvbiwJCQkvKiBERVRBQ0ggUEFSVElUSU9O ICovCiAJQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemUsIC8qIERFVEFDSCBQQVJUSVRJT04g RklOQUxJWkUgKi8KKwlBVF9TcGxpdFBhcnRpdGlvbiwJCQkvKiBTUExJVCBQQVJUSVRJT04g Ki8KIAlBVF9NZXJnZVBhcnRpdGlvbnMsCQkJLyogTUVSR0UgUEFSVElUSU9OUyAqLwogCUFU X0FkZElkZW50aXR5LAkJCQkvKiBBREQgSURFTlRJVFkgKi8KIAlBVF9TZXRJZGVudGl0eSwJ CQkJLyogU0VUIGlkZW50aXR5IGNvbHVtbiBvcHRpb25zICovCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgK aW5kZXggOTBlOGNkZGY4Yi4uNjZjODg3NjY1NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAt NDIxLDYgKzQyMSw3IEBAIFBHX0tFWVdPUkQoInNtYWxsaW50IiwgU01BTExJTlQsIENPTF9O QU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzbmFwc2hvdCIsIFNOQVBT SE9ULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzb21l IiwgU09NRSwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInNv dXJjZSIsIFNPVVJDRSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZ V09SRCgic3BsaXQiLCBTUExJVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgic3FsIiwgU1FMX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoInN0YWJsZSIsIFNUQUJMRSwgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgic3RhbmRhbG9uZSIsIFNUQU5EQUxPTkVfUCwgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9w YXJ0Ym91bmRzLmgKaW5kZXggNjkwZDI1OTYxOS4uNDViMWZhMWRlOCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaAorKysgYi9zcmMvaW5jbHVk ZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCkBAIC0xNDMsNiArMTQzLDEwIEBAIGV4dGVy biBpbnQJcGFydGl0aW9uX3JhbmdlX2RhdHVtX2JzZWFyY2goRm1nckluZm8gKnBhcnRzdXBm dW5jLAogZXh0ZXJuIGludAlwYXJ0aXRpb25faGFzaF9ic2VhcmNoKFBhcnRpdGlvbkJvdW5k SW5mbyBib3VuZGluZm8sCiAJCQkJCQkJCSAgIGludCBtb2R1bHVzLCBpbnQgcmVtYWluZGVy KTsKIAorZXh0ZXJuIHZvaWQgY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQoUmVsYXRpb24g cGFyZW50LAorCQkJCQkJCQkJICAgT2lkIHNwbGl0UGFydE9pZCwKKwkJCQkJCQkJCSAgIExp c3QgKnBhcnRsaXN0LAorCQkJCQkJCQkJICAgUGFyc2VTdGF0ZSAqcHN0YXRlKTsKIGV4dGVy biB2b2lkIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKFJlbGF0aW9uIHBh cmVudCwKIAkJCQkJCQkJCQkJCUxpc3QgKnBhcnROYW1lcywKIAkJCQkJCQkJCQkJCUxpc3Qg KnBhcnRPaWRzLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgg Yi9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaAppbmRleCA1ZjJlYTJlNGQwLi42MjA0 M2QzYmY1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaAorKysg Yi9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaApAQCAtNTQsNCArNTQsNiBAQCBleHRl cm4gY2hhciAqZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJpbmcoTGlzdCAqYm91bmRfZGF0dW1z KTsKIAogZXh0ZXJuIGNoYXIgKnBnX2dldF9zdGF0aXN0aWNzb2JqZGVmX3N0cmluZyhPaWQg c3RhdGV4dGlkKTsKIAorZXh0ZXJuIGNoYXIgKmdldF9saXN0X3BhcnR2YWx1ZV9zdHJpbmco Q29uc3QgKnZhbCk7CisKICNlbmRpZgkJCQkJCQkvKiBSVUxFVVRJTFNfSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1zcGxpdC5vdXQg Yi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLXNwbGl0Lm91dApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi41ZDllOGIwOTI1Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1zcGxp dC5vdXQKQEAgLTAsMCArMSwxOTAgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Np b25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWIgczFzcGx0IHMyYiBzMmkgczFjIHMy YyBzMnMKK3N0ZXAgczFiOiBCRUdJTjsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFy dCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0 cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJ VElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAg czJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0 ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8 Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICog RlJPTSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQw MQorMTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFy dGluZyBwZXJtdXRhdGlvbjogczFiIHMxc3BsdCBzMmJyciBzMmkgczFjIHMyYyBzMnMKK3N0 ZXAgczFiOiBCRUdJTjsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQ QVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8x NSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFy dF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJicnI6IEJF R0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJU IElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09N TUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0t LS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0 ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYiBzMXNwbHQg czJicyBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFiOiBCRUdJTjsKK3N0ZXAgczFzcGx0OiBB TFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJ ICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUp LAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBU TyAoMjApKTsKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJM RTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsg PHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBs ZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFy dDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4 dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJt dXRhdGlvbjogczFicnIgczFzcGx0IHMyYiBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFicnI6 IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMxc3BsdDog QUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJ CSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1 KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkg VE8gKDIwKSk7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBh cnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01N SVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3Rl cCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8 dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1 IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnJyIHMxc3BsdCBzMmJyciBz MmkgczFjIHMyYyBzMnMKK3N0ZXAgczFicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBF QVRBQkxFIFJFQUQ7CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFS VElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUg Rk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRf MTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYnJyOiBCRUdJ TiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMmk6IElOU0VSVCBJ TlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMx YzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1J VDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0t LS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4 dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJyciBzMXNwbHQg czJicyBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFicnI6IEJFR0lOIElTT0xBVElPTiBMRVZF TCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BM SVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRf MTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04g dHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYnM6 IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMyaTogSU5TRVJU IElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09N TUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0t LS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0 ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnMgczFzcGx0 IHMyYiBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFUSU9OIExFVkVM IFNFUklBTElaQUJMRTsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQ QVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8x NSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFy dF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJiOiBCRUdJ TjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsg PHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBs ZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFy dDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4 dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJt dXRhdGlvbjogczFicyBzMXNwbHQgczJicnIgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYnM6 IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxc3BsdDogQUxU RVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAg IChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwK KwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8g KDIwKSk7CitzdGVwIHMyYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBS RUFEOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScp OyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29t cGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRw YXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0 ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBl cm11dGF0aW9uOiBzMWJzIHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJz OiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMXNwbHQ6IEFM VEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkg ICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSks CisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRP ICgyMCkpOworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxF Oworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8 d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxl dGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0 OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0 MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dzKQorCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlIGIvc3JjL3Rlc3QvaXNvbGF0aW9u L2lzb2xhdGlvbl9zY2hlZHVsZQppbmRleCAyMDQwZTFjNTdhLi4yYWQ5Zjk3Y2JlIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCisrKyBiL3Ny Yy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKQEAgLTEwOSw2ICsxMDksNyBA QCB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0yCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVw ZGF0ZS0zCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS00CiB0ZXN0OiBwYXJ0aXRpb24t bWVyZ2UKK3Rlc3Q6IHBhcnRpdGlvbi1zcGxpdAogdGVzdDogcGxwZ3NxbC10b2FzdAogdGVz dDogY2x1c3Rlci1jb25mbGljdAogdGVzdDogY2x1c3Rlci1jb25mbGljdC1wYXJ0aXRpb24K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tc3BsaXQu c3BlYyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tc3BsaXQuc3BlYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wODcyMzlhNGExCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxp dC5zcGVjCkBAIC0wLDAgKzEsNTQgQEAKKyMgVmVyaWZ5IHRoYXQgU1BMSVQgb3BlcmF0aW9u IGxvY2tzIERNTCBvcGVyYXRpb25zIHdpdGggcGFydGl0aW9uZWQgdGFibGUKKworc2V0dXAK K3sKKyAgRFJPUCBUQUJMRSBJRiBFWElTVFMgdHBhcnQ7CisgIENSRUFURSBUQUJMRSB0cGFy dChpIGludCwgdCB0ZXh0KSBwYXJ0aXRpb24gYnkgcmFuZ2UoaSk7CisgIENSRUFURSBUQUJM RSB0cGFydF8wMF8xMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMTApOworICBDUkVBVEUgVEFCTEUgdHBhcnRfMTBfMjAgUEFSVElUSU9OIE9GIHRwYXJ0 IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF8y MF8zMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsK KyAgQ1JFQVRFIFRBQkxFIHRwYXJ0X2RlZmF1bHQgUEFSVElUSU9OIE9GIHRwYXJ0IERFRkFV TFQ7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoNSwgJ3RleHQwNScpOworICBJTlNF UlQgSU5UTyB0cGFydCBWQUxVRVMgKDE1LCAndGV4dDE1Jyk7CisgIElOU0VSVCBJTlRPIHRw YXJ0IFZBTFVFUyAoMjUsICd0ZXh0MjUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVT ICgzNSwgJ3RleHQzNScpOworfQorCit0ZWFyZG93bgoreworICBEUk9QIFRBQkxFIHRwYXJ0 OworfQorCitzZXNzaW9uIHMxCitzdGVwIHMxYgl7IEJFR0lOOyB9CitzdGVwIHMxYnJyCXsg QkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsgfQorc3RlcCBzMWJzCXsg QkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsgfQorc3RlcCBzMXNwbHQJeyBB TFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJ ICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUp LAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBU TyAoMjApKTsgfQorc3RlcCBzMWMJeyBDT01NSVQ7IH0KKworCitzZXNzaW9uIHMyCitzdGVw IHMyYgl7IEJFR0lOOyB9CitzdGVwIHMyYnJyCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJF UEVBVEFCTEUgUkVBRDsgfQorc3RlcCBzMmJzCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNF UklBTElaQUJMRTsgfQorc3RlcCBzMmkJeyBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEs ICd0ZXh0MDEnKTsgfQorc3RlcCBzMmMJeyBDT01NSVQ7IH0KK3N0ZXAgczJzCXsgU0VMRUNU ICogRlJPTSB0cGFydDsgfQorCisKKyMgczEgc3RhcnRzIFNQTElUIFBBUlRJVElPTiB0aGVu IHMyIHRyeWluZyB0byBpbnNlcnQgcm93IGFuZAorIyB3YWl0cyB1bnRpbCBzMSBmaW5pc2hl ZCBTUExJVCBvcGVyYXRpb24uCisKK3Blcm11dGF0aW9uIHMxYiBzMXNwbHQgczJiIHMyaSBz MWMgczJjIHMycworcGVybXV0YXRpb24gczFiIHMxc3BsdCBzMmJyciBzMmkgczFjIHMyYyBz MnMKK3Blcm11dGF0aW9uIHMxYiBzMXNwbHQgczJicyBzMmkgczFjIHMyYyBzMnMKKworcGVy bXV0YXRpb24gczFicnIgczFzcGx0IHMyYiBzMmkgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9u IHMxYnJyIHMxc3BsdCBzMmJyciBzMmkgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMxYnJy IHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycworCitwZXJtdXRhdGlvbiBzMWJzIHMxc3Bs dCBzMmIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMWJzIHMxc3BsdCBzMmJyciBz MmkgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMxYnMgczFzcGx0IHMyYnMgczJpIHMxYyBz MmMgczJzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2Uv ZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9k ZXBhcnNlL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91dAppbmRleCBjNDAzYzJmNTY5Li4xM2Nj ZmI3NGY1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2Uv ZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9k ZGxfZGVwYXJzZS9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKQEAgLTYxLDYgKzYxLDExIEBA IE5PVElDRTogIERETCB0ZXN0OiB0eXBlIHNpbXBsZSwgdGFnIENSRUFURSBUQUJMRQogQUxU RVIgVEFCTEUgcGFydCBNRVJHRSBQQVJUSVRJT05TIChwYXJ0MSwgcGFydDIpIElOVE8gcGFy dDE7CiBOT1RJQ0U6ICBEREwgdGVzdDogdHlwZSBhbHRlciB0YWJsZSwgdGFnIEFMVEVSIFRB QkxFCiBOT1RJQ0U6ICAgIHN1YmNvbW1hbmQ6IHR5cGUgTUVSR0UgUEFSVElUSU9OUyBkZXNj IDxOVUxMPgorQUxURVIgVEFCTEUgcGFydCBTUExJVCBQQVJUSVRJT04gcGFydDEgSU5UTwor CShQQVJUSVRJT04gcGFydDEgRk9SIFZBTFVFUyBGUk9NICgxKSB0byAoMTAwKSwKKwkgUEFS VElUSU9OIHBhcnQyIEZPUiBWQUxVRVMgRlJPTSAoMTAwKSB0byAoMjAwKSk7CitOT1RJQ0U6 ICBEREwgdGVzdDogdHlwZSBhbHRlciB0YWJsZSwgdGFnIEFMVEVSIFRBQkxFCitOT1RJQ0U6 ICAgIHN1YmNvbW1hbmQ6IHR5cGUgU1BMSVQgUEFSVElUSU9OIGRlc2MgPE5VTEw+CiBBTFRF UiBUQUJMRSBwYXJ0IEFERCBQUklNQVJZIEtFWSAoYSk7CiBOT1RJQ0U6ICBEREwgdGVzdDog dHlwZSBhbHRlciB0YWJsZSwgdGFnIEFMVEVSIFRBQkxFCiBOT1RJQ0U6ICAgIHN1YmNvbW1h bmQ6IHR5cGUgQUREIENPTlNUUkFJTlQgKGFuZCByZWN1cnNlKSBkZXNjIGNvbnN0cmFpbnQg cGFydF9hX25vdF9udWxsIG9uIHRhYmxlIHBhcnQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS9zcWwvYWx0ZXJfdGFibGUuc3FsIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwKaW5kZXggMzFl NjkxMDBhMy4uMWU3NWZlYWE0NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2RkbF9kZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2RkbF9kZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwKQEAgLTM4LDYgKzM4LDEw IEBAIERST1AgVEFCTEUgcGFydDI7CiBDUkVBVEUgVEFCTEUgcGFydDIgUEFSVElUSU9OIE9G IHBhcnQgRk9SIFZBTFVFUyBGUk9NICgxMDApIHRvICgyMDApOwogQUxURVIgVEFCTEUgcGFy dCBNRVJHRSBQQVJUSVRJT05TIChwYXJ0MSwgcGFydDIpIElOVE8gcGFydDE7CiAKK0FMVEVS IFRBQkxFIHBhcnQgU1BMSVQgUEFSVElUSU9OIHBhcnQxIElOVE8KKwkoUEFSVElUSU9OIHBh cnQxIEZPUiBWQUxVRVMgRlJPTSAoMSkgdG8gKDEwMCksCisJIFBBUlRJVElPTiBwYXJ0MiBG T1IgVkFMVUVTIEZST00gKDEwMCkgdG8gKDIwMCkpOworCiBBTFRFUiBUQUJMRSBwYXJ0IEFE RCBQUklNQVJZIEtFWSAoYSk7CiAKIEFMVEVSIFRBQkxFIHBhcmVudCBBTFRFUiBDT0xVTU4g YSBTRVQgTk9UIE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRs X2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Rk bF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwppbmRleCA3ZGU1ZGRiODc4Li4xN2Q3MmU0 MTJmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVz dF9kZGxfZGVwYXJzZS5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJz ZS90ZXN0X2RkbF9kZXBhcnNlLmMKQEAgLTI5Niw2ICsyOTYsOSBAQCBnZXRfYWx0ZXJ0YWJs ZV9zdWJjbWRpbmZvKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQljYXNlIEFUX0RldGFjaFBhcnRp dGlvbkZpbmFsaXplOgogCQkJCXN0cnR5cGUgPSAiREVUQUNIIFBBUlRJVElPTiAuLi4gRklO QUxJWkUiOwogCQkJCWJyZWFrOworCQkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCQlz dHJ0eXBlID0gIlNQTElUIFBBUlRJVElPTiI7CisJCQkJYnJlYWs7CiAJCQljYXNlIEFUX01l cmdlUGFydGl0aW9uczoKIAkJCQlzdHJ0eXBlID0gIk1FUkdFIFBBUlRJVElPTlMiOwogCQkJ CWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRp b25fc3BsaXQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3Bs aXQub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjkwODJlNGQx MGUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRp dGlvbl9zcGxpdC5vdXQKQEAgLTAsMCArMSwxNjQyIEBACistLQorLS0gUEFSVElUSU9OX1NQ TElUCistLSBUZXN0cyBmb3IgIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gLi4u IiBjb21tYW5kCistLQorQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hOwor Q1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMjsKK1NFVCBzZWFyY2hfcGF0 aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKKy0tCistLSBCWSBSQU5HRSBw YXJ0aXRpb25pbmcKKy0tCistLQorLS0gVGVzdCBmb3IgZXJyb3IgY29kZXMKKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIGludCwgc2FsZXNwZXJzb25f bmFtZSB2YXJjaGFyKDMwKSwgc2FsZXNfYW1vdW50IGludCwgc2FsZXNfZGF0ZSBkYXRlKSBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ph bjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFy X2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhl cnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBFUlJPUjogIHJlbGF0 aW9uICJzYWxlc194eHgiIGRvZXMgbm90IGV4aXN0CitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfeHh4IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitF UlJPUjogIHJlbGF0aW9uICJzYWxlc194eHgiIGRvZXMgbm90IGV4aXN0CistLSBFUlJPUjog IHJlbGF0aW9uICJzYWxlc19qYW4yMDIyIiBhbHJlYWR5IGV4aXN0cworQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICByZWxhdGlvbiAic2FsZXNfamFuMjAyMiIg YWxyZWFkeSBleGlzdHMKKy0tIEVSUk9SOiAgaW52YWxpZCBib3VuZCBzcGVjaWZpY2F0aW9u IGZvciBhIHJhbmdlIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfamFuMjAyMiBGT1IgVkFMVUVTIElOICgnMjAyMi0wNS0wMScsICcyMDIyLTA2LTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz LTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJS T1I6ICBpbnZhbGlkIGJvdW5kIHNwZWNpZmljYXRpb24gZm9yIGEgcmFuZ2UgcGFydGl0aW9u CitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgSU4gKCcy MDIyLTA1LTAxJywgJzIwMi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgZW1wdHkgcmFuZ2UgYm91bmQgc3BlY2lmaWVk IGZvciBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDItMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjIt MDUtMDEnKSk7CitFUlJPUjogIGVtcHR5IHJhbmdlIGJvdW5kIHNwZWNpZmllZCBmb3IgcGFy dGl0aW9uICJzYWxlc19tYXIyMDIyIgorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfbWFy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8uLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBT cGVjaWZpZWQgbG93ZXIgYm91bmQgKCcwMy0wMS0yMDIyJykgaXMgZ3JlYXRlciB0aGFuIG9y IGVxdWFsIHRvIHVwcGVyIGJvdW5kICgnMDItMDEtMjAyMicpLgorLS1FUlJPUjogIGxpc3Qg b2Ygc3BsaXQgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gaXRlbXMK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFy X2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0xMC0wMScpKTsKK0VSUk9SOiAgbGlzdCBv ZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gcGFydGl0aW9u cworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIi IGlzIG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIw MjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21h cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFy dGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gbG93ZXIgYm91bmQgb2Yg c3BsaXQgcGFydGl0aW9uCitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTy4uLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgbmFtZSAi c2FsZXNfZmViX21hcl9hcHIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKKy0tIChXZSBjYW4gY3Jl YXRlIHBhcnRpdGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLCBi dXQgY2FuJ3QgY3JlYXRlIHR3byBwYXJ0aXRpb25zIHdpdGggdGhlIHNhbWUgbmFtZSkKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2Fw cjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfZmViX21hcl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEn KSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjog IG5hbWUgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitMSU5FIDM6 ICAgIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy4uLgorICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuYW1lICJz YWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgn MjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0w NS0wMScpKTsKK0VSUk9SOiAgbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2Vk CitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDMtMDEnKSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6 ICBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEuc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8g KCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBuYW1l ICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUgMzogICAgUEFSVElUSU9O IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTLi4uCisg ICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogICJzYWxlc19mZWJfbWFyX2FwcjIw MjIiIGlzIG5vdCBhIHBhcnRpdGlvbmVkIHRhYmxlCitBTFRFUiBUQUJMRSBzYWxlc19mZWJf bWFyX2FwcjIwMjIgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBBTFRFUiBhY3Rpb24gU1BMSVQgUEFSVElU SU9OIGNhbm5vdCBiZSBwZXJmb3JtZWQgb24gcmVsYXRpb24gInNhbGVzX2ZlYl9tYXJfYXBy MjAyMiIKK0RFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRh Ymxlcy4KKy0tIEVSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIy MDIyIiBpcyBub3QgZXF1YWwgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9h cHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7CitFUlJPUjogIHVwcGVyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJvdW5k IG9mIHNwbGl0IHBhcnRpdGlvbgorTElORSA0OiAuLi4gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAuLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCist LSBFUlJPUjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiB0 b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRP ICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24g InNhbGVzX21hcjIwMjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19mZWIyMDIy IgorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRp b24gInNhbGVzX21hcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2Yg cGFydGl0aW9uICJzYWxlc19mZWIyMDIyIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJ VCBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFj ZW50LgorLS0gVGVzdHMgZm9yIHNwYWNlcyBiZXR3ZWVuIHBhcnRpdGlvbnMsIHRoZW0gc2hv dWxkIGJlIGV4ZWN1dGVkIHdpdGhvdXQgREVGQVVMVCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIERFVEFDSCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzOworLS0gRVJST1I6 ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVh bCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMicp IFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxl c19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0 aW9uCitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDInKSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIENoZWNrIHRoZSBzb3VyY2UgcGFydGl0aW9u IG5vdCBpbiB0aGUgc2VhcmNoIHBhdGgKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9z cGxpdF9zY2hlbWEyLCBwdWJsaWM7CitBTFRFUiBUQUJMRSBwYXJ0aXRpb25fc3BsaXRfc2No ZW1hLnNhbGVzX3JhbmdlCitTUExJVCBQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVt YS5zYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK1NFVCBz ZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKK1xkKyBzYWxl c19yYW5nZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFydGl0aW9uZWQgdGFi bGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfcmFuZ2UiCisgICAgICBDb2x1bW4g ICAgICB8ICAgICAgICAgVHlwZSAgICAgICAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwg RGVmYXVsdCB8IFN0b3JhZ2UgIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tCisgc2FsZXNwZXJzb25faWQgICB8IGludGVnZXIgICAgICAgICAgICAgICB8ICAgICAg ICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwg Cisgc2FsZXNwZXJzb25fbmFtZSB8IGNoYXJhY3RlciB2YXJ5aW5nKDMwKSB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgICAgICAgICB8IGV4dGVuZGVkIHwgICAgICAgICAgICAgIHwgCisg c2FsZXNfYW1vdW50ICAgICB8IGludGVnZXIgICAgICAgICAgICAgICB8ICAgICAgICAgICB8 ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCisgc2Fs ZXNfZGF0ZSAgICAgICB8IGRhdGUgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRp b24ga2V5OiBSQU5HRSAoc2FsZXNfZGF0ZSkKK1BhcnRpdGlvbnM6IHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEyLnNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDQtMDEtMjAyMicp IFRPICgnMDUtMDEtMjAyMicpLAorICAgICAgICAgICAgcGFydGl0aW9uX3NwbGl0X3NjaGVt YTIuc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcw My0wMS0yMDIyJyksCisgICAgICAgICAgICBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxl c19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzAzLTAxLTIwMjInKSBUTyAoJzA0LTAxLTIw MjInKSwKKyAgICAgICAgICAgIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDEt MDEtMjAyMicpIFRPICgnMDItMDEtMjAyMicpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7 CitEUk9QIFRBQkxFIHNhbGVzX290aGVyczsKKy0tCistLSBBZGQgcm93cyBpbnRvIHBhcnRp dGlvbmVkIHRhYmxlIHRoZW4gc3BsaXQgcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNh bGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hB UigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZ IFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8g KCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAn U21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIw MDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQt MTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwg ICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAg MTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0w Mi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgx MCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAg ICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIy LTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAg KDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8g KCcyMDIyLTA1LTAxJykpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNh bGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJD Iiwgc2FsZXNwZXJzb25faWQ7CisgICB0YWJsZW9pZCAgICB8IHNhbGVzcGVyc29uX2lkIHwg c2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgc2FsZXNfYXByMjAyMiB8ICAgICAgICAgICAgICAzIHwg Rm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyBzYWxlc19h cHIyMDIyIHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAg NzUwIHwgMDQtMTMtMjAyMgorIHNhbGVzX2FwcjIwMjIgfCAgICAgICAgICAgICAgNSB8IERl ZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgc2FsZXNfYXBy MjAyMiB8ICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4 MCB8IDA0LTA2LTIwMjIKKyBzYWxlc19mZWIyMDIyIHwgICAgICAgICAgICAgIDIgfCBTbWly bm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorIHNhbGVzX2ZlYjIw MjIgfCAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAg fCAwMi0xMS0yMDIyCisgc2FsZXNfZmViMjAyMiB8ICAgICAgICAgICAgICA4IHwgRXJpY3Nz b24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyBzYWxlc19qYW4yMDIy IHwgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwg MDEtMzEtMjAyMgorIHNhbGVzX2phbjIwMjIgfCAgICAgICAgICAgICAxMCB8IEhhbGRlciAg ICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgc2FsZXNfamFuMjAyMiB8 ICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAx LTA5LTIwMjIKKyBzYWxlc19tYXIyMDIyIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAg ICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorIHNhbGVzX21hcjIwMjIgfCAg ICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0x MS0yMDIyCisgc2FsZXNfbWFyMjAyMiB8ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAg ICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyBzYWxlc19vdGhlcnMgIHwgICAg ICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQt MjAyMgorKDE0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKy0t CistLSBBZGQgc3BsaXQgcGFydGl0aW9uLCB0aGVuIGFkZCByb3dzIGludG8gcGFydGl0aW9u ZWQgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lk IElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwg c2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7 CistLSBTcGxpdCBwYXJ0aXRpb24sIGFsc28gY2hlY2sgc2NoZW1hIHF1YWxpZmljYXRpb24g b2YgbmV3IHBhcnRpdGlvbnMKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJ VElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHBhcnRpdGlv bl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0 X3NjaGVtYTIuc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworXGQrIHNhbGVz X3JhbmdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJ0aXRpb25lZCB0YWJs ZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19yYW5nZSIKKyAgICAgIENvbHVtbiAg ICAgIHwgICAgICAgICBUeXBlICAgICAgICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBE ZWZhdWx0IHwgU3RvcmFnZSAgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgaW50ZWdlciAgICAgICAgICAgICAgIHwgICAgICAg ICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAK KyBzYWxlc3BlcnNvbl9uYW1lIHwgY2hhcmFjdGVyIHZhcnlpbmcoMzApIHwgICAgICAgICAg IHwgICAgICAgICAgfCAgICAgICAgIHwgZXh0ZW5kZWQgfCAgICAgICAgICAgICAgfCAKKyBz YWxlc19hbW91bnQgICAgIHwgaW50ZWdlciAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwg ICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKKyBzYWxl c19kYXRlICAgICAgIHwgZGF0ZSAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAg ICAgICAgfCAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlv biBrZXk6IFJBTkdFIChzYWxlc19kYXRlKQorUGFydGl0aW9uczogcGFydGl0aW9uX3NwbGl0 X3NjaGVtYTIuc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwMy0wMS0yMDIyJykg VE8gKCcwNC0wMS0yMDIyJyksCisgICAgICAgICAgICBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzA0LTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjInKSwKKyAgICAgICAgICAg IHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDItMDEtMjAyMicpIFRPICgnMDMt MDEtMjAyMicpLAorICAgICAgICAgICAgc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00g KCcwMS0wMS0yMDIyJykgVE8gKCcwMi0wMS0yMDIyJyksCisgICAgICAgICAgICBzYWxlc19v dGhlcnMgREVGQVVMVAorCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEs ICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZics IDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjIt MDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAo NSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcs ICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAy Mi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisg ICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVy JywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcy MDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwK KyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0 aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNz LCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0 IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgICAgICAgICAgIHRhYmxlb2lk ICAgICAgICAgICAgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwg c2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxl c19tYXIyMDIyIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAg ICAgMTc1IHwgMDMtMDgtMjAyMgorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX21h cjIwMjIgfCAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAy NTAgfCAwMy0xMS0yMDIyCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfbWFyMjAy MiB8ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8 IDAzLTE5LTIwMjIKKyBzYWxlc19hcHIyMDIyICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQt MzAtMjAyMgorIHNhbGVzX2FwcjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0y MDIyCisgc2FsZXNfYXByMjAyMiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIK KyBzYWxlc19hcHIyMDIyICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg MTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorIHNh bGVzX2ZlYjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgMiB8 IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgc2FsZXNf ZmViMjAyMiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICA2IHwgUG9p cm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyBzYWxlc19mZWIy MDIyICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIDggfCBFcmljc3Nv biAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorIHNhbGVzX2phbjIwMjIg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAg ICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgc2FsZXNfamFuMjAyMiAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAg ICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyBzYWxlc19qYW4yMDIyICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwg ICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAg ICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19y YW5nZSBDQVNDQURFOworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0 aXRpb24ga2V5OworLS0gICAqIEdFTkVSQVRFRCBjb2x1bW47CistLSAgICogY29sdW1uIHdp dGggREVGQVVMVCB2YWx1ZS4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNw ZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElO VCwgc2FsZXNfZGF5IElOVCwKKyAgc2FsZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQg QUxXQVlTIEFTCisgICAgKExQQUQoc2FsZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicg fHwgTFBBRChzYWxlc19tb250aDo6dGV4dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxl c19kYXk6OnRleHQsIDIsICcwJykpIFNUT1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJD SEFSKDMwKSBERUZBVUxUICdTYWxlcyBkZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KTsKK0NSRUFURSBUQUJM RSBzYWxlc19kZWMyMDIxIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJP TSAoMjAyMSwgMTIsIDEpIFRPICgyMDIyLCAxLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19q YW5fZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIw MjIsIDEsIDEpIFRPICgyMDIyLCAzLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlciBQ QVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDMsIDEpIFRP IChNQVhWQUxVRSwgTUFYVkFMVUUsIE1BWFZBTFVFKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2Rh dGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2Rh eSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIxLCAxMiwgNyksCisgICgnTWFuYWdlcjIn LCAyMDIxLCAxMiwgOCksCisgICgnTWFuYWdlcjMnLCAyMDIyLCAxLCAxKSwKKyAgKCdNYW5h Z2VyMScsIDIwMjIsIDIsIDQpLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMSwgMiksCisgICgn TWFuYWdlcjMnLCAyMDIyLCAyLCAxKSwKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDMsIDMpLAor ICAoJ01hbmFnZXIyJywgMjAyMiwgMywgNCksCisgICgnTWFuYWdlcjMnLCAyMDIyLCA1LCAx KTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19kYXRlIE9SREVS IEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNfeWVhciwg c2FsZXNfbW9udGgsIHNhbGVzX2RheTsKKyAgICAgdGFibGVvaWQgICAgICB8IHNhbGVzcGVy c29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxl c19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19kZWMyMDIxICAgICB8IE1h bmFnZXIxICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcg fCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2RlYzIwMjEgICAgIHwg TWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAg OCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIg fCBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAg ICAxIHwgMjAyMi4wMS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAy MiB8IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAg ICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIy MDIyIHwgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAg ICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2Zl YjIwMjIgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwg ICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhl ciAgICAgICB8IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMg fCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290 aGVyICAgICAgIHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAg MyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNf b3RoZXIgICAgICAgfCBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAg ICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyg5IHJv d3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzX2RhdGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ph bl9mZWIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMg RlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDIsIDEpLAorICAgUEFSVElUSU9OIHNhbGVz X2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAyLCAxKSBUTyAoMjAyMiwgMywgMSkp OworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFy LCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjIs IDEsIDEwKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDIsIDEwKTsKK1NFTEVDVCB0YWJsZW9p ZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19kYXRlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdj bGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVz X2RheTsKKyAgIHRhYmxlb2lkICAgIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIg fCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRt ZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tCisgc2FsZXNfZGVjMjAyMSB8IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIxIHwg ICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVwYXJ0bWVu dAorIHNhbGVzX2RlYzIwMjEgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAg ICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQK KyBzYWxlc19mZWIyMDIyIHwgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50Cisg c2FsZXNfZmViMjAyMiB8IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAg ICAgIDIgfCAgICAgICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNh bGVzX2ZlYjIwMjIgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAg ICAyIHwgICAgICAgIDEwIHwgMjAyMi4wMi4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxl c19qYW4yMDIyIHwgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAg MSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNf amFuMjAyMiB8IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEg fCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2ph bjIwMjIgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwg ICAgICAgIDEwIHwgMjAyMi4wMS4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhl ciAgIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAg ICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3RoZXIg ICB8IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAg ICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAg fCBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAg ICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKygxMSByb3dzKQorCistLUVS Uk9SOiAgcmVsYXRpb24gInNhbGVzX2phbl9mZWIyMDIyIiBkb2VzIG5vdCBleGlzdAorU0VM RUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAyMjsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVz X2phbl9mZWIyMDIyIiBkb2VzIG5vdCBleGlzdAorTElORSAxOiBTRUxFQ1QgKiBGUk9NIHNh bGVzX2phbl9mZWIyMDIyOworICAgICAgICAgICAgICAgICAgICAgIF4KK0RST1AgVEFCTEUg c2FsZXNfZGF0ZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNwbGl0IERFRkFVTFQgcGFydGl0 aW9uOyB1c2UgYW4gaW5kZXggb24gcGFydGl0aW9uIGtleTsgY2hlY2sgaW5kZXggYWZ0ZXIg c3BsaXQKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElO VCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2Fs ZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVB VEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJ TkcgYnRyZWUgKHNhbGVzX2RhdGUpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT CisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21p cm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAs ICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMn KSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQ b2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1 LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0y MycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwg J0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAz ODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAz LTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0 LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworU0VMRUNUICogRlJPTSBzYWxl c19vdGhlcnM7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNf YW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAyIHwgU21p cm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAg ICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisg ICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQt MTMtMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAg IDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAg fCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgICAgIDcgfCBMaSAgICAg ICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA4 IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAg ICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0y MDIyCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgw IHwgMDQtMDYtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAg ICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAg ICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTEgcm93cykKKworU0VMRUNU ICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19vdGhlcnMnIGFu ZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4 bmFtZTsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgIHRhYmxlbmFtZSAgIHwgICAgICAg ICAgaW5kZXhuYW1lICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX290aGVycyB8IHNh bGVzX290aGVyc19zYWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVgg c2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEu c2FsZXNfb3RoZXJzIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDUtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7 CistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMKK1NFVCBlbmFibGVfc2Vx c2NhbiA9IE9GRjsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19m ZWIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBzYWxlc19mZWIyMDIyX3NhbGVzX2RhdGVf aWR4IG9uIHNhbGVzX2ZlYjIwMjIKKyAgIEluZGV4IENvbmQ6IChzYWxlc19kYXRlID4gJzAx LTAxLTIwMjInOjpkYXRlKQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWIy MDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNwZXJzb25faWQg fCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUw MCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAg ICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAg ICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorKDMgcm93cykKKworRVhQTEFJ TiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjIgd2hlcmUgc2FsZXNf ZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBT Y2FuIHVzaW5nIHNhbGVzX21hcjIwMjJfc2FsZXNfZGF0ZV9pZHggb24gc2FsZXNfbWFyMjAy MgorICAgSW5kZXggQ29uZDogKHNhbGVzX2RhdGUgPiAnMDEtMDEtMjAyMic6OmRhdGUpCiso MiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjIgd2hlcmUgc2FsZXNfZGF0 ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg IDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAg ICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTEx LTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAz NTAgfCAwMy0xOS0yMDIyCisoMyByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVD VCAqIEZST00gc2FsZXNfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEn OworICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfYXBy MjAyMl9zYWxlc19kYXRlX2lkeCBvbiBzYWxlc19hcHIyMDIyCisgICBJbmRleCBDb25kOiAo c2FsZXNfZGF0ZSA+ICcwMS0wMS0yMDIyJzo6ZGF0ZSkKKygyIHJvd3MpCisKK1NFTEVDVCAq IEZST00gc2FsZXNfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOwor IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNh bGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAg ICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2 ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAg ICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAg ICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0z MC0yMDIyCisoNCByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00g c2FsZXNfb3RoZXJzIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CisgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfb3RoZXJzX3NhbGVzX2Rh dGVfaWR4MSBvbiBzYWxlc19vdGhlcnMKKyAgIEluZGV4IENvbmQ6IChzYWxlc19kYXRlID4g JzAxLTAxLTIwMjInOjpkYXRlKQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19v dGhlcnMgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc3BlcnNvbl9p ZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAg NTEwIHwgMDUtMDQtMjAyMgorKDEgcm93KQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1NF TEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfZmViMjAy MicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkg aW5kZXhuYW1lOworICAgICAgIHNjaGVtYW5hbWUgICAgICAgfCAgIHRhYmxlbmFtZSAgIHwg ICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgICB8IHRhYmxlc3BhY2UgfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhkZWYgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxl c19mZWIyMDIyIHwgc2FsZXNfZmViMjAyMl9zYWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAg fCBDUkVBVEUgSU5ERVggc2FsZXNfZmViMjAyMl9zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hLnNhbGVzX2ZlYjIwMjIgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUp CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUg PSAnc2FsZXNfbWFyMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3Nj aGVtYScgT1JERVIgQlkgaW5kZXhuYW1lOworICAgICAgIHNjaGVtYW5hbWUgICAgICAgfCAg IHRhYmxlbmFtZSAgIHwgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgICB8IHRhYmxlc3Bh Y2UgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEgfCBzYWxlc19tYXIyMDIyIHwgc2FsZXNfbWFyMjAyMl9zYWxlc19kYXRlX2lk eCB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfbWFyMjAyMl9zYWxlc19kYXRl X2lkeCBPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX21hcjIwMjIgVVNJTkcgYnRy ZWUgKHNhbGVzX2RhdGUpCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBX SEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfYXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFy dGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lOworICAgICAgIHNjaGVt YW5hbWUgICAgICAgfCAgIHRhYmxlbmFtZSAgIHwgICAgICAgICAgaW5kZXhuYW1lICAgICAg ICAgICB8IHRhYmxlc3BhY2UgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxlc19hcHIyMDIyIHwgc2FsZXNfYXByMjAy Ml9zYWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfYXBy MjAyMl9zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX2Fw cjIwMjIgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpCisoMSByb3cpCisKK1NFTEVDVCAqIEZS T00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfb3RoZXJzJyBhbmQgc2No ZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWU7 CisgICAgICAgc2NoZW1hbmFtZSAgICAgICB8ICB0YWJsZW5hbWUgICB8ICAgICAgICAgIGlu ZGV4bmFtZSAgICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhkZWYgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgc2FsZXNfb3RoZXJzIHwgc2Fs ZXNfb3RoZXJzX3NhbGVzX2RhdGVfaWR4MSB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVgg c2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVfaWR4MSBPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1h LnNhbGVzX290aGVycyBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworRFJP UCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNvbWUgY2FzZXMg Zm9yIHNwbGl0dGluZyBERUZBVUxUIHBhcnRpdGlvbiAoZGlmZmVyZW50IGJvdW5kcykKKy0t CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNw ZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBJ TlQpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworLS0gc2FsZXNf ZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjEgKGxvd2VyIGJvdW5kKQorLS0g RVJST1I6ICBjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIHRvZ2V0 aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEp LAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMzAp IFRPICgyMDIyMDIwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVT IEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290 aGVycyBERUZBVUxUKTsKK0VSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNh bGVzX2Vycm9yIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0xJ TkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEy MzApIFRPICgyMDIyLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KK0RFVEFJTDogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2Fs ZXNfZXJyb3IiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9u ICJzYWxlc19kZWMyMDIxIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJ T05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LgorLS0g c2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2ZlYjIwMjIgKHVwcGVyIGJvdW5k KQorLS0gRVJST1I6ICBjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfZmViMjAy MiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIgorQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAy MjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAy MjAxMDEpIFRPICgyMDIyMDIwMiksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1Ig VkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNh bGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRp b24gInNhbGVzX2ZlYjIwMjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19lcnJv ciIKK0xJTkUgNDogICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgyMDIyMDIwMSkgVE8gKDIwLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0 aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElU IFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNl bnQuCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMSAoaW5z aWRlIGJvdW5kKQorLS0gRVJST1I6ICBjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2Fs ZXNfZXJyb3IiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAx KSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMg RlJPTSAoMjAyMTEyMTApIFRPICgyMDIxMTIyMCksCisgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFS VElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9SOiAgY2FuIG5vdCBzcGxpdCB0 byBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2Fs ZXNfZGVjMjAyMSIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxV RVMgRlJPTSAoMjAyMTEyMTApIFRPICgyMDIxLi4uCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIGxvd2VyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91 bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorSElOVDogIEFMVEVSIFRBQkxFIC4u LiBTUExJVCBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJl IGFkamFjZW50LgorLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIw MjEgKGV4YWN0bHkgdGhlIHNhbWUgYm91bmRzKQorLS0gRVJST1I6ICBjYW4gbm90IHNwbGl0 IHRvIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJz YWxlc19kZWMyMDIxIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFM VUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVz X2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAo MjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9S OiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiB0b2dldGhlciB3 aXRoIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNh bGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyLi4uCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJ TDogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGlzIG5vdCBlcXVh bCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorSElO VDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0 aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LgorLS0gRVJST1I6ICBvbmUgcGFydGl0aW9u IGluIHRoZSBsaXN0IHNob3VsZCBiZSBERUZBVUxUIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9u IGlzIERFRkFVTFQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVF UyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19q YW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIwMSksCisgICBQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAo MjAyMjAzMDEpKTsKK0VSUk9SOiAgb25lIHBhcnRpdGlvbiBpbiB0aGUgbGlzdCBzaG91bGQg YmUgREVGQVVMVCBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBpcyBERUZBVUxUCitMSU5FIDI6 ICAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEp IFRPICgyMC4uLgorICAgICAgICAgICAgICAgICAgICAgXgorLS0gbm8gZXJyb3I6IGJvdW5k cyBvZiBzYWxlc19ub2Vycm9yIGFyZSBiZXR3ZWVuIHNhbGVzX2RlYzIwMjEgYW5kIHNhbGVz X2ZlYjIwMjIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBG Uk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19ub2Vy cm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMTApIFRPICgyMDIyMDEyMCksCisgICBQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAy MjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0RST1AgVEFC TEUgc2FsZXNfcmFuZ2U7CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29u X2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElO VCwgc2FsZXNfZGF0ZSBJTlQpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZB VUxUOworLS0gbm8gZXJyb3I6IGJvdW5kcyBvZiBzYWxlc19ub2Vycm9yIGFyZSBlcXVhbCB0 byBsb3dlciBhbmQgdXBwZXIgYm91bmRzIG9mIHNhbGVzX2RlYzIwMjEgYW5kIHNhbGVzX2Zl YjIwMjIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19v dGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9N ICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19ub2Vycm9y IEZPUiBWQUxVRVMgRlJPTSAoMjAyMTAxMDEpIFRPICgyMDIxMDIwMSksCisgICBQQVJUSVRJ T04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAz MDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0RST1AgVEFCTEUg c2FsZXNfcmFuZ2U7CistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGggQ0hFQ0sg YW5kIEZPUkVJR04gS0VZIENPTlNUUkFJTlRzIG9uIHBhcnRpdGlvbmVkIHRhYmxlCistLQor Q1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtF WSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitJTlNFUlQgSU5UTyBzYWxlc3Bl b3BsZSBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2Ug KAorc2FsZXNwZXJzb25faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJz b25faWQpLAorc2FsZXNfYW1vdW50IElOVCBDSEVDSyAoc2FsZXNfYW1vdW50ID4gMSksCitz YWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRF IFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsK K1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJP TSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2ZlYl9tYXJfYXByMjAy Mic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZTsKKyAgICAgICAgICAgICAgICAg ICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgY29ubmFtZSAgICAgICAgICAgICB8IGNvbmtleSAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBDSEVD SyAoKHNhbGVzX2Ftb3VudCA+IDEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgc2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrICB8IHsyfQorIEZP UkVJR04gS0VZIChzYWxlc3BlcnNvbl9pZCkgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShzYWxl c3BlcnNvbl9pZCkgfCBzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9ma2V5IHwgezF9Ciso MiByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CistLSBXZSBzaG91 bGQgc2VlIHRoZSBzYW1lIENPTlNUUkFJTlRzIGFzIG9uIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBwYXJ0aXRpb24KK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1l LCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2Zl YjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWU7OworICAgICAgICAgICAg ICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICBjb25uYW1lICAgICAgICAgICAgIHwgY29ua2V5IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQor IENIRUNLICgoc2FsZXNfYW1vdW50ID4gMSkpICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCBzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2sgIHwgezJ9 CisgRk9SRUlHTiBLRVkgKHNhbGVzcGVyc29uX2lkKSBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxl KHNhbGVzcGVyc29uX2lkKSB8IHNhbGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkgfCB7 MX0KKygyIHJvd3MpCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25u YW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVz X21hcjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWU7OworICAgICAgICAg ICAgICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICBjb25uYW1lICAgICAgICAgICAgIHwgY29ua2V5IAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LQorIENIRUNLICgoc2FsZXNfYW1vdW50ID4gMSkpICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2sgIHwg ezJ9CisgRk9SRUlHTiBLRVkgKHNhbGVzcGVyc29uX2lkKSBSRUZFUkVOQ0VTIHNhbGVzcGVv cGxlKHNhbGVzcGVyc29uX2lkKSB8IHNhbGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkg fCB7MX0KKygyIHJvd3MpCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBj b25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3Nh bGVzX2FwcjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWU7OworICAgICAg ICAgICAgICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICBjb25uYW1lICAgICAgICAgICAgIHwgY29ua2V5IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLQorIENIRUNLICgoc2FsZXNfYW1vdW50ID4gMSkpICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCBzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2sg IHwgezJ9CisgRk9SRUlHTiBLRVkgKHNhbGVzcGVyc29uX2lkKSBSRUZFUkVOQ0VTIHNhbGVz cGVvcGxlKHNhbGVzcGVyc29uX2lkKSB8IHNhbGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2Zr ZXkgfCB7MX0KKygyIHJvd3MpCisKKy0tIEVSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24g InNhbGVzX21hcjIwMjIiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInNhbGVzX3Jhbmdl X3NhbGVzX2Ftb3VudF9jaGVjayIKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo MSwgMCwgJzIwMjItMDMtMTEnKTsKK0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInNh bGVzX21hcjIwMjIiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInNhbGVzX3JhbmdlX3Nh bGVzX2Ftb3VudF9jaGVjayIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgxLCAw LCAwMy0xMS0yMDIyKS4KKy0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAi c2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNf cmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSIKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoLTEsIDEwLCAnMjAyMi0wMy0xMScpOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRl IG9uIHRhYmxlICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9ma2V5IgorREVUQUlMOiAgS2V5IChz YWxlc3BlcnNvbl9pZCk9KC0xKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAic2FsZXNwZW9w bGUiLgorLS0gb2sKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgMTAsICcy MDIyLTAzLTExJyk7CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CitEUk9QIFRB QkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9u IG9uIHBhcnRpdGlvbmVkIHRhYmxlIGluIGNhc2Ugb2YgZXhpc3RpbmcgRk9SRUlHTiBLRVkg cmVmZXJlbmNlIGZyb20gYW5vdGhlciB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Bl b3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUg VkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworQ1JF QVRFIFRBQkxFIHNhbGVzIChzYWxlc3BlcnNvbl9pZCBJTlQgUkVGRVJFTkNFUyBzYWxlc3Bl b3BsZShzYWxlc3BlcnNvbl9pZCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFU RSk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNw ZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVz cGVvcGxlMTBfNDAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAo MTApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMKKyAgKDEsICAn UG9pcm90JyksCisgICgxMCwgJ01heScpLAorICAoMTksICdJdmFub3YnKSwKKyAgKDIwLCAn U21pcm5vZmYnKSwKKyAgKDMwLCAnRm9yZCcpOworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVT CisgICgxLCAgMTAwLCAnMjAyMi0wMy0wMScpLAorICAoMSwgIDExMCwgJzIwMjItMDMtMDIn KSwKKyAgKDEwLCAxNTAsICcyMDIyLTAzLTAxJyksCisgICgxMCwgOTAsICAnMjAyMi0wMy0w MycpLAorICAoMTksIDIwMCwgJzIwMjItMDMtMDQnKSwKKyAgKDIwLCA1MCwgICcyMDIyLTAz LTEyJyksCisgICgyMCwgMTcwLCAnMjAyMi0wMy0wMicpLAorICAoMzAsIDMwLCAgJzIwMjIt MDMtMDQnKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3Bs ZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVz cGVyc29uX2lkOworICAgICB0YWJsZW9pZCAgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVz cGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Blb3BsZTAxXzEwIHwgICAgICAgICAgICAgIDEgfCBQ b2lyb3QKKyBzYWxlc3Blb3BsZTEwXzQwIHwgICAgICAgICAgICAgMTAgfCBNYXkKKyBzYWxl c3Blb3BsZTEwXzQwIHwgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyBzYWxlc3Blb3BsZTEw XzQwIHwgICAgICAgICAgICAgMjAgfCBTbWlybm9mZgorIHNhbGVzcGVvcGxlMTBfNDAgfCAg ICAgICAgICAgICAzMCB8IEZvcmQKKyg1IHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzcGVv cGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQ QVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzAp LAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkg VE8gKDQwKSk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNwZW9w bGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxl c3BlcnNvbl9pZDsKKyAgICAgdGFibGVvaWQgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxl c3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZW9wbGUwMV8xMCB8ICAgICAgICAgICAgICAxIHwg UG9pcm90Cisgc2FsZXNwZW9wbGUxMF8yMCB8ICAgICAgICAgICAgIDEwIHwgTWF5Cisgc2Fs ZXNwZW9wbGUxMF8yMCB8ICAgICAgICAgICAgIDE5IHwgSXZhbm92Cisgc2FsZXNwZW9wbGUy MF8zMCB8ICAgICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyBzYWxlc3Blb3BsZTMwXzQwIHwg ICAgICAgICAgICAgMzAgfCBGb3JkCisoNSByb3dzKQorCistLSBFUlJPUjogIGluc2VydCBv ciB1cGRhdGUgb24gdGFibGUgInNhbGVzIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJzYWxlc19zYWxlc3BlcnNvbl9pZF9ma2V5IgorSU5TRVJUIElOVE8gc2FsZXMgVkFM VUVTICg0MCwgNTAsICAnMjAyMi0wMy0wNCcpOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRl IG9uIHRhYmxlICJzYWxlcyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2Fs ZXNfc2FsZXNwZXJzb25faWRfZmtleSIKK0RFVEFJTDogIEtleSAoc2FsZXNwZXJzb25faWQp PSg0MCkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInNhbGVzcGVvcGxlIi4KKy0tIG9rCitJ TlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDMwLCA1MCwgICcyMDIyLTAzLTA0Jyk7CitEUk9Q IFRBQkxFIHNhbGVzIENBU0NBREU7CitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7 CistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlIHdp dGggdHJpZ2dlcnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25f aWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJU SVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Bl b3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEp IFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBQQVJUSVRJT04gT0Yg c2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKK0lOU0VSVCBJTlRP IHNhbGVzcGVvcGxlIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKK0NSRUFURSBPUiBSRVBMQUNF IEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpIFJFVFVSTlMgdHJpZ2dlciBM QU5HVUFHRSAncGxwZ3NxbCcgQVMgJEJPRFkkCitCRUdJTgorICAgIFJBSVNFIE5PVElDRSAn dHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBU R19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgICAgUkVUVVJOIE5VTEw7 CitFTkQ7CiskQk9EWSQ7CitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNl cnRfc3RhdGVtZW50X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Bl b3BsZQorICAgIEZPUiBFQUNIIFNUQVRFTUVOVAorICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFm dGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKK0NSRUFURSBUUklHR0VS IHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9yb3dfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VS VAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VURSBQ Uk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworLS0g MiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJU IElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxMCwgJ01heScpOworTk9USUNFOiAgdHJpZ2dl cihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwg bGV2ZWwgPSBST1cKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0 aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gU1RBVEVNRU5UCistLSAxIHRy aWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxl MTBfNDAgVkFMVUVTICgxOSwgJ0l2YW5vdicpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Bl b3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBS T1cKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3Bs ZTEwXzQwIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMg RlJPTSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1Ig VkFMVUVTIEZST00gKDIwKSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBf NDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7CistLSAyIHRyaWdnZXJzIHNob3Vs ZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3Bs ZSBWQUxVRVMgKDIwLCAnU21pcm5vZmYnKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9w bGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9X CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VS VCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFNUQVRFTUVOVAorLS0gMSB0cmlnZ2VyIHNob3Vs ZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTMwXzQwIFZBTFVF UyAoMzAsICdGb3JkJyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6 IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworU0VMRUNUIHRh Ymxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzcGVvcGxlIE9SREVSIEJZIHRhYmxlb2lk OjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisgICAgIHRh Ymxlb2lkICAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNh bGVzcGVvcGxlMDFfMTAgfCAgICAgICAgICAgICAgMSB8IFBvaXJvdAorIHNhbGVzcGVvcGxl MTBfMjAgfCAgICAgICAgICAgICAxMCB8IE1heQorIHNhbGVzcGVvcGxlMTBfMjAgfCAgICAg ICAgICAgICAxOSB8IEl2YW5vdgorIHNhbGVzcGVvcGxlMjBfMzAgfCAgICAgICAgICAgICAy MCB8IFNtaXJub2ZmCisgc2FsZXNwZW9wbGUzMF80MCB8ICAgICAgICAgICAgIDMwIHwgRm9y ZAorKDUgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOworRFJPUCBG VU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKTsKKy0tCistLSBUZXN0OiBzcGxp dCBwYXJ0aXRpb24gd2l0Y2ggaWRlbnRpdHkgY29sdW1uCistLSBJZiBzcGxpdCBwYXJ0aXRp b24gY29sdW1uIGlzIGlkZW50aXR5IGNvbHVtbiwgY29sdW1ucyBvZiBuZXcgcGFydGl0aW9u cyBhcmUgaWRlbnRpdHkgY29sdW1ucyB0b28uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVv cGxlKHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZIFBS SU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTFfMiBQ QVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7Cist LSBDcmVhdGUgbmV3IHBhcnRpdGlvbiB3aXRoIGlkZW50aXR5IGNvbHVtbjoKK0NSRUFURSBU QUJMRSBzYWxlc3Blb3BsZTJfNShzYWxlc3BlcnNvbl9pZCBJTlQgTk9UIE5VTEwsIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRU QUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTJfNSBGT1IgVkFMVUVTIEZST00gKDIpIFRPICg1 KTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIChzYWxlc3BlcnNvbl9uYW1lKSBWQUxVRVMg KCdQb2lyb3QnKSwgKCdJdmFub3YnKTsKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwg YXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0 dHJlbGlkID0gJ3NhbGVzcGVvcGxlJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07 CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Bl cnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAg ICAgICAgfCAKKygyIHJvd3MpCisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0 Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJl bGlkID0gJ3NhbGVzcGVvcGxlMV8yJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07 CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Bl cnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAg ICAgICAgfCAKKygyIHJvd3MpCisKKy0tIFNwbGl0IHBhcnRpdGlvbiBoYXMgaWRlbnRpdHkg Y29sdW1uOgorU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJP TSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNw ZW9wbGUyXzUnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKKyAgICAgYXR0bmFt ZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCistLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29uX2lkICAgfCBh ICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUgfCAgICAgICAgICAgICB8IAorKDIg cm93cykKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVz cGVvcGxlMl81IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTJfMyBGT1IgVkFMVUVT IEZST00gKDIpIFRPICgzKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTNfNCBGT1IgVkFM VUVTIEZST00gKDMpIFRPICg0KSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTRfNSBGT1Ig VkFMVUVTIEZST00gKDQpIFRPICg1KSk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSAoc2Fs ZXNwZXJzb25fbmFtZSkgVkFMVUVTICgnTWF5JyksICgnRm9yZCcpOworU0VMRUNUIHRhYmxl b2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzcGVvcGxlIE9SREVSIEJZIHRhYmxlb2lkOjpy ZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisgICAgdGFibGVv aWQgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZW9w bGUxXzIgfCAgICAgICAgICAgICAgMSB8IFBvaXJvdAorIHNhbGVzcGVvcGxlMl8zIHwgICAg ICAgICAgICAgIDIgfCBJdmFub3YKKyBzYWxlc3Blb3BsZTNfNCB8ICAgICAgICAgICAgICAz IHwgTWF5Cisgc2FsZXNwZW9wbGU0XzUgfCAgICAgICAgICAgICAgNCB8IEZvcmQKKyg0IHJv d3MpCisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00g cGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVv cGxlJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CisgICAgIGF0dG5hbWUgICAg ICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAg ICAgICAgfCAKKyBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3Mp CisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdf YXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxl MV8yJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CisgICAgIGF0dG5hbWUgICAg ICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAg ICAgICAgfCAKKyBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3Mp CisKKy0tIE5ldyBwYXJ0aXRpb25zIGhhdmUgaWRlbnRpdHktY29sdW1uczoKK1NFTEVDVCBh dHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdI RVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlMl8zJzo6cmVnY2xh c3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50 aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBz YWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK1NFTEVDVCBh dHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdI RVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlM180Jzo6cmVnY2xh c3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50 aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBz YWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK1NFTEVDVCBh dHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdI RVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlNF81Jzo6cmVnY2xh c3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50 aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBz YWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK0RST1AgVEFC TEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24g d2l0aCBkZWxldGVkIGNvbHVtbnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2Fs ZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIo MzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFURSBUQUJM RSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVT IEZST00gKDEpIFRPICgxMCk7CistLSBDcmVhdGUgbmV3IHBhcnRpdGlvbiB3aXRoIHNvbWUg ZGVsZXRlZCBjb2x1bW5zOgorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAoZDEgVkFS Q0hBUigzMCksIHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgZDIgSU5ULCBkMyBE QVRFLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0lOU0VSVCBJTlRPIHNhbGVz cGVvcGxlMTBfNDAgVkFMVUVTCisgICgnZHVtbXkgdmFsdWUgMScsIDE5LCAxMDAsIG5vdygp LCAnSXZhbm92JyksCisgICgnZHVtbXkgdmFsdWUgMicsIDIwLCAxMDEsIG5vdygpLCAnU21p cm5vZmYnKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgRFJPUCBDT0xVTU4gZDE7 CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIERST1AgQ09MVU1OIGQyOworQUxURVIg VEFCTEUgc2FsZXNwZW9wbGUxMF80MCBEUk9QIENPTFVNTiBkMzsKK0FMVEVSIFRBQkxFIHNh bGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBGT1IgVkFMVUVT IEZST00gKDEwKSBUTyAoNDApOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTCisg ICgxLCAnUG9pcm90JyksCisgICgxMCwgJ01heScpLAorICAoMzAsICdGb3JkJyk7CitBTFRF UiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEw KSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBG Uk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBW QUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywg KiBGUk9NIHNhbGVzcGVvcGxlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBD T0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisgICAgIHRhYmxlb2lkICAgICB8IHNhbGVz cGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVvcGxlMDFfMTAgfCAg ICAgICAgICAgICAgMSB8IFBvaXJvdAorIHNhbGVzcGVvcGxlMTBfMjAgfCAgICAgICAgICAg ICAxMCB8IE1heQorIHNhbGVzcGVvcGxlMTBfMjAgfCAgICAgICAgICAgICAxOSB8IEl2YW5v dgorIHNhbGVzcGVvcGxlMjBfMzAgfCAgICAgICAgICAgICAyMCB8IFNtaXJub2ZmCisgc2Fs ZXNwZW9wbGUzMF80MCB8ICAgICAgICAgICAgIDMwIHwgRm9yZAorKDUgcm93cykKKworRFJP UCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNwbGl0IHN1Yi1w YXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lk IElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwg c2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2FwcjIwMjIgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFS KDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl9hbGwgUEFSVElU SU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRP ICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNf ZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwg JzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcp LAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2 YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAs ICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTEx JyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAn RXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1 MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEt MjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIs ICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAg Mzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0w NS0wNCcpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3Jhbmdl IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNw ZXJzb25faWQ7CisgICB0YWJsZW9pZCAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJz b25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgc2FsZXNfYXByX2FsbCB8ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAg ICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyBzYWxlc19hcHJfYWxsIHwg ICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQt MTMtMjAyMgorIHNhbGVzX2Fwcl9hbGwgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAg ICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgc2FsZXNfYXByX2FsbCB8ICAg ICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2 LTIwMjIKKyBzYWxlc19mZWIyMDIyIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAg ICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorIHNhbGVzX2ZlYjIwMjIgfCAgICAg ICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0y MDIyCisgc2FsZXNfZmViMjAyMiB8ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAg ICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyBzYWxlc19qYW4yMDIyIHwgICAgICAg ICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAy MgorIHNhbGVzX2phbjIwMjIgfCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAg fCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgc2FsZXNfamFuMjAyMiB8ICAgICAgICAg ICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIK KyBzYWxlc19tYXIyMDIyIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwg ICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorIHNhbGVzX21hcjIwMjIgfCAgICAgICAgICAg ICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisg c2FsZXNfbWFyMjAyMiB8ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAg ICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyBzYWxlc19vdGhlcnMgIHwgICAgICAgICAgICAg MTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0 IHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzX2FwcjIwMjIgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2Fwcl9hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMDFfMTAgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpLAorICAgUEFS VElUSU9OIHNhbGVzX2FwcjIwMjJfMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0x MCcpIFRPICgnMjAyMi0wNC0yMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMjBf MzAgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0yMCcpIFRPICgnMjAyMi0wNS0wMScpKTsK K1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBC WSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lk OworICAgICAgdGFibGVvaWQgICAgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLQorIHNhbGVzX2FwcjIwMjJfMDFfMTAgfCAgICAgICAgICAgICAgNSB8 IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgc2FsZXNf YXByMjAyMl8wMV8xMCB8ICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAg ICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyBzYWxlc19hcHIyMDIyXzEwXzIwIHwgICAgICAg ICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAy MgorIHNhbGVzX2FwcjIwMjJfMjBfMzAgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAg ICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgc2FsZXNfZmViMjAyMiAgICAg ICB8ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8 IDAyLTEwLTIwMjIKKyBzYWxlc19mZWIyMDIyICAgICAgIHwgICAgICAgICAgICAgIDYgfCBQ b2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorIHNhbGVzX2Zl YjIwMjIgICAgICAgfCAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAg ICAgICAxODUgfCAwMi0yMy0yMDIyCisgc2FsZXNfamFuMjAyMiAgICAgICB8ICAgICAgICAg ICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIK KyBzYWxlc19qYW4yMDIyICAgICAgIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAg ICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorIHNhbGVzX2phbjIwMjIgICAgICAg fCAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAw MS0wOS0yMDIyCisgc2FsZXNfbWFyMjAyMiAgICAgICB8ICAgICAgICAgICAgICA3IHwgTGkg ICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyBzYWxlc19tYXIy MDIyICAgICAgIHwgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDMtMTEtMjAyMgorIHNhbGVzX21hcjIwMjIgICAgICAgfCAgICAgICAgICAg ICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisg c2FsZXNfb3RoZXJzICAgICAgICB8ICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAg ICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitEUk9QIFRBQkxF IHNhbGVzX3JhbmdlOworLS0KKy0tIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorLS0KKy0t IFRlc3Q6IHNwZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCwKKyBzYWxlc3Bl cnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNh bGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1Qg KHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBz YWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hl bHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19s aXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01h ZHJpZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0RlbGhpJywgJ0t5aXYnLCAnVmxhZGl2b3N0 b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xp c3QgREVGQVVMVDsKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfZWFzdCIgd291 bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgKG5vdCBzcGxpdCkgcGFydGl0aW9uICJzYWxlc19u b3JkIgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxs IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24n LCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1Ig VkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJywgJ0hlbHNpbmtp JyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3 JywgJ0JlcmxpbicsICdLeWl2JykpOworRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc19l YXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciAobm90IHNwbGl0KSBwYXJ0aXRpb24g InNhbGVzX25vcmQiCitMSU5FIDM6IC4uLiBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0Rl bGhpJywgJ1ZsYWRpdm9zdG9rJywgJ0hlbHNpbmtpJy4uLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9S OiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3Ro ZXIgbmV3IHBhcnRpdGlvbiAic2FsZXNfY2VudHJhbCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xp c3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf d2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAor ICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxo aScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZB TFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnTGlzYm9uJywgJ0t5aXYnKSk7CitFUlJP UjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90 aGVyIG5ldyBwYXJ0aXRpb24gInNhbGVzX2NlbnRyYWwiCitMSU5FIDI6ICAgKFBBUlRJVElP TiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLC4uLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBF UlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBoYXZlIE5VTEwgdmFs dWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2ZQorQUxURVIgVEFCTEUg c2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFk cmlkJywgTlVMTCksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgn QmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNf Y2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOwor RVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSBOVUxMIHZh bHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUKK0xJTkUgMjogLi4u c193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywg TlVMTCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNf d2VzdCIgY2Fubm90IGhhdmUgdGhpcyB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBk b2VzIG5vdCBoYXZlCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBz YWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAo J0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnTWVsYm91cm5lJyksCisgICBQQVJU SVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1Zs YWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElO ICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworRVJST1I6ICBuZXcgcGFydGl0aW9u ICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSB0aGlzIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFy dGl0aW9uIGRvZXMgbm90IGhhdmUKK0xJTkUgMjogLi4uc3QgRk9SIFZBTFVFUyBJTiAoJ0xp c2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnTWVsYm91cm5lLi4uCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor LS0gRVJST1I6ICBuZXcgcGFydGl0aW9uIGNhbm5vdCBiZSBERUZBVUxUIGJlY2F1c2UgREVG QVVMVCBwYXJ0aXRpb24gYWxyZWFkeSBleGlzdHMKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3Qg U1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2Vz dCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdNZWxi b3VybmUnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWpp bmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50 cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOworRVJST1I6ICBuZXcgcGFydGl0aW9u IGNhbm5vdCBiZSBERUZBVUxUIGJlY2F1c2UgREVGQVVMVCBwYXJ0aXRpb24gYWxyZWFkeSBl eGlzdHMKK0xJTkUgNTogICAgUEFSVElUSU9OIHNhbGVzX290aGVyczIgREVGQVVMVCk7Cisg ICAgICAgICAgICAgICAgICAgICBeCitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CistLQorLS0g VGVzdDogdHdvIHNwZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmc6Cist LSAgICogbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgTlVMTCB2YWx1ZSwgd2hpY2ggc3Bs aXQgcGFydGl0aW9uIGhhcy4KKy0tICAgKiBuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSBh IHZhbHVlIHRoYXQgc3BsaXQgcGFydGl0aW9uIGhhcy4KKy0tCitDUkVBVEUgVEFCTEUgc2Fs ZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQs Cisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsK K0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBW QUxVRVMgSU4gKCdIZWxzaW5raScsICdTdC4gUGV0ZXJzYnVyZycsICdPc2xvJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMg SU4gKCdXYXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcn LCAnQmVybGluJywgJ0RlbGhpJywgJ0t5aXYnLCAnVmxhZGl2b3N0b2snLCBOVUxMKTsKKy0t IEVSUk9SOiAgbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgdmFsdWUgTlVMTCBidXQgc3Bs aXQgcGFydGl0aW9uIGRvZXMKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVT IElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNh bGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3Rv aycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNh dycsICdCZXJsaW4nLCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbnMgZG8gbm90 IGhhdmUgdmFsdWUgTlVMTCBidXQgc3BsaXQgcGFydGl0aW9uIGRvZXMKKy0tIEVSUk9SOiAg bmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgdmFsdWUgJ0t5aXYnIGJ1dCBzcGxpdCBwYXJ0 aXRpb24gZG9lcworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdM aXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFz dCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisg ICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jl cmxpbicsIE5VTEwpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgdmFs dWUgJ0t5aXYnIGJ1dCBzcGxpdCBwYXJ0aXRpb24gZG9lcworLS0gRVJST1IgIERFRkFVTFQg cGFydGl0aW9uIHNob3VsZCBiZSBvbmUKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1Ig VkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElU SU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFk aXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAo J1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVy cyBERUZBVUxULAorICAgUEFSVElUSU9OIHNhbGVzX290aGVyczIgREVGQVVMVCk7CitFUlJP UjogIERFRkFVTFQgcGFydGl0aW9uIHNob3VsZCBiZSBvbmUKK0xJTkUgNjogICAgUEFSVElU SU9OIHNhbGVzX290aGVyczIgREVGQVVMVCk7CisgICAgICAgICAgICAgICAgICAgICBeCitE Uk9QIFRBQkxFIHNhbGVzX2xpc3Q7CistLQorLS0gVGVzdDogQlkgTElTVCBwYXJ0aXRpb25p bmcsIFNQTElUIFBBUlRJVElPTiB3aXRoIGRhdGEKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNf bGlzdAorKHNhbGVzcGVyc29uX2lkIFNFUklBTCwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQs Cisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsK K0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzcGVyc29uX25hbWVfaWR4IE9OIHNhbGVz X2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzcGVyc29uX25hbWUpOworQ1JFQVRFIElOREVYIHNh bGVzX2xpc3Rfc2FsZXNfc3RhdGVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNh bGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxl c19saXN0IEZPUiBWQUxVRVMgSU4gKCdIZWxzaW5raScsICdTdC4gUGV0ZXJzYnVyZycsICdP c2xvJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0 IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJp ZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0RlbGhpJywgJ0t5aXYnLCAnVmxhZGl2b3N0b2sn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3Qg REVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzcGVyc29uX25hbWUsIHNh bGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUworICAoJ1RydW1w JywgICAgJ0JlamluZycsICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKSwKKyAgKCdTbWly bm9mZicsICdOZXcgWW9yaycsICAgICAgICA1MDAsICcyMDIyLTAzLTAzJyksCisgICgnRm9y ZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAwLCAnMjAyMi0wMy0wNScpLAorICAoJ0l2 YW5vdicsICAgJ1dhcnNhdycsICAgICAgICAgIDc1MCwgJzIwMjItMDMtMDQnKSwKKyAgKCdE ZWV2JywgICAgICdMaXNib24nLCAgICAgICAgICAyNTAsICcyMDIyLTAzLTA3JyksCisgICgn UG9pcm90JywgICAnQmVybGluJywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpLAorICAo J01heScsICAgICAgJ09zbG8nLCAgICAgICAgICAgMTIwMCwgJzIwMjItMDMtMDYnKSwKKyAg KCdMaScsICAgICAgICdWbGFkaXZvc3RvaycsICAgIDExNTAsICcyMDIyLTAzLTA5JyksCisg ICgnTWF5JywgICAgICAnT3NsbycsICAgICAgICAgICAxMjAwLCAnMjAyMi0wMy0xMScpLAor ICAoJ0hhbGRlcicsICAgJ0hlbHNpbmtpJywgICAgICAgIDgwMCwgJzIwMjItMDMtMDInKSwK KyAgKCdNdWxsZXInLCAgICdNYWRyaWQnLCAgICAgICAgICA2NTAsICcyMDIyLTAzLTA1Jyks CisgICgnU21pdGgnLCAgICAnS3lpdicsICAgICAgICAgICAgMzUwLCAnMjAyMi0wMy0xMCcp LAorICAoJ0dhbmRpJywgICAgJ1dhcnNhdycsICAgICAgICAgIDE1MCwgJzIwMjItMDMtMDgn KSwKKyAgKCdQbGF0bycsICAgICdMaXNib24nLCAgICAgICAgICA5NTAsICcyMDIyLTAzLTA1 Jyk7CitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2Jvbics ICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBW QUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywg J0t5aXYnKSk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfbGlz dCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVz cGVyc29uX2lkOworICAgdGFibGVvaWQgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVy c29uX25hbWUgfCAgc2FsZXNfc3RhdGUgICB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUg CistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19j ZW50cmFsIHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAg ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgc2FsZXNfY2VudHJhbCB8ICAg ICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8IEJlcmxpbiAgICAgICAgIHwgICAg ICAgICAxMDAwIHwgMDMtMDEtMjAyMgorIHNhbGVzX2NlbnRyYWwgfCAgICAgICAgICAgICAx MiB8IFNtaXRoICAgICAgICAgICAgfCBLeWl2ICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8 IDAzLTEwLTIwMjIKKyBzYWxlc19jZW50cmFsIHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAg ICAgICAgICAgIHwgV2Fyc2F3ICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIy Cisgc2FsZXNfZWFzdCAgICB8ICAgICAgICAgICAgICAxIHwgVHJ1bXAgICAgICAgICAgICB8 IEJlamluZyAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEtMjAyMgorIHNhbGVzX2Vh c3QgICAgfCAgICAgICAgICAgICAgOCB8IExpICAgICAgICAgICAgICAgfCBWbGFkaXZvc3Rv ayAgICB8ICAgICAgICAgMTE1MCB8IDAzLTA5LTIwMjIKKyBzYWxlc19ub3JkICAgIHwgICAg ICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgU3QuIFBldGVyc2J1cmcgfCAgICAg ICAgIDIwMDAgfCAwMy0wNS0yMDIyCisgc2FsZXNfbm9yZCAgICB8ICAgICAgICAgICAgICA3 IHwgTWF5ICAgICAgICAgICAgICB8IE9zbG8gICAgICAgICAgIHwgICAgICAgICAxMjAwIHwg MDMtMDYtMjAyMgorIHNhbGVzX25vcmQgICAgfCAgICAgICAgICAgICAgOSB8IE1heSAgICAg ICAgICAgICAgfCBPc2xvICAgICAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTExLTIwMjIK KyBzYWxlc19ub3JkICAgIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwg SGVsc2lua2kgICAgICAgfCAgICAgICAgICA4MDAgfCAwMy0wMi0yMDIyCisgc2FsZXNfd2Vz dCAgICB8ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8IE5ldyBZb3JrICAg ICAgIHwgICAgICAgICAgNTAwIHwgMDMtMDMtMjAyMgorIHNhbGVzX3dlc3QgICAgfCAgICAg ICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCBMaXNib24gICAgICAgICB8ICAgICAg ICAgIDI1MCB8IDAzLTA3LTIwMjIKKyBzYWxlc193ZXN0ICAgIHwgICAgICAgICAgICAgMTEg fCBNdWxsZXIgICAgICAgICAgIHwgTWFkcmlkICAgICAgICAgfCAgICAgICAgICA2NTAgfCAw My0wNS0yMDIyCisgc2FsZXNfd2VzdCAgICB8ICAgICAgICAgICAgIDE0IHwgUGxhdG8gICAg ICAgICAgICB8IExpc2JvbiAgICAgICAgIHwgICAgICAgICAgOTUwIHwgMDMtMDUtMjAyMgor KDE0IHJvd3MpCisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcyBhZnRl ciBzcGxpdHRpbmcgcGFydGl0aW9uCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CitFWFBM QUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNfY2VudHJhbCBXSEVSRSBzYWxl c19zdGF0ZSA9ICdXYXJzYXcnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXgg U2NhbiB1c2luZyBzYWxlc19jZW50cmFsX3NhbGVzX3N0YXRlX2lkeCBvbiBzYWxlc19jZW50 cmFsCisgICBJbmRleCBDb25kOiAoKHNhbGVzX3N0YXRlKTo6dGV4dCA9ICdXYXJzYXcnOjp0 ZXh0KQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19jZW50cmFsIFdIRVJFIHNh bGVzX3N0YXRlID0gJ1dhcnNhdyc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9u YW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAg fCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAg ICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDE1MCB8 IDAzLTA4LTIwMjIKKygyIHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICog RlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1 c2luZyBzYWxlc19jZW50cmFsX3NhbGVzX3N0YXRlX2lkeCBvbiBzYWxlc19jZW50cmFsIHNh bGVzX2xpc3QKKyAgIEluZGV4IENvbmQ6ICgoc2FsZXNfc3RhdGUpOjp0ZXh0ID0gJ1dhcnNh dyc6OnRleHQpCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUg c2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAg ICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAg ICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgMTUw IHwgMDMtMDgtMjAyMgorKDIgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1Qg KiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgSW5kZXggU2NhbiB1c2luZyBz YWxlc19lYXN0X3NhbGVzcGVyc29uX25hbWVfaWR4IG9uIHNhbGVzX2Vhc3Qgc2FsZXNfbGlz dF8xCisgICAgICAgICBJbmRleCBDb25kOiAoKHNhbGVzcGVyc29uX25hbWUpOjp0ZXh0ID0g J0l2YW5vdic6OnRleHQpCisgICAtPiAgSW5kZXggU2NhbiB1c2luZyBzYWxlc19jZW50cmFs X3NhbGVzcGVyc29uX25hbWVfaWR4IG9uIHNhbGVzX2NlbnRyYWwgc2FsZXNfbGlzdF8yCisg ICAgICAgICBJbmRleCBDb25kOiAoKHNhbGVzcGVyc29uX25hbWUpOjp0ZXh0ID0gJ0l2YW5v dic6OnRleHQpCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBzYWxlc19ub3JkIHNhbGVz X2xpc3RfMworICAgICAgICAgUmVjaGVjayBDb25kOiAoKHNhbGVzcGVyc29uX25hbWUpOjp0 ZXh0ID0gJ0l2YW5vdic6OnRleHQpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gc2FsZXNfbm9yZF9zYWxlc3BlcnNvbl9uYW1lX2lkeAorICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFub3YnOjp0ZXh0KQor ICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfd2VzdF9zYWxlc3BlcnNvbl9uYW1lX2lk eCBvbiBzYWxlc193ZXN0IHNhbGVzX2xpc3RfNAorICAgICAgICAgSW5kZXggQ29uZDogKChz YWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFub3YnOjp0ZXh0KQorICAgLT4gIEJpdG1h cCBIZWFwIFNjYW4gb24gc2FsZXNfb3RoZXJzIHNhbGVzX2xpc3RfNQorICAgICAgICAgUmVj aGVjayBDb25kOiAoKHNhbGVzcGVyc29uX25hbWUpOjp0ZXh0ID0gJ0l2YW5vdic6OnRleHQp CisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gc2FsZXNfb3RoZXJzX3NhbGVz cGVyc29uX25hbWVfaWR4CisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKHNhbGVzcGVy c29uX25hbWUpOjp0ZXh0ID0gJ0l2YW5vdic6OnRleHQpCisoMTUgcm93cykKKworU0VMRUNU ICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzcGVyc29uX25hbWUgPSAnSXZhbm92JzsK KyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAg ICAgNzUwIHwgMDMtMDQtMjAyMgorKDEgcm93KQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsK K0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBzcGxp dCBERUZBVUxUIHBhcnRpdGlvbiB0byBwYXJ0aXRpb25zIHdpdGggc3BhY2VzIGJldHdlZW4g Ym91bmRzOworLS0gICAqIHJhbmRvbSBvcmRlciBvZiBwYXJ0aXRpb25zIGluIFNQTElUIFBB UlRJVElPTiBjb21tYW5kLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNw ZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91 bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01h eScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAs ICAnMjAyMi0wMi0wOScpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMw JyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAn RGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1 MCwgICcyMDIyLTAyLTA3JyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMt MDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwg ICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAg MzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0w NC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgx MywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAg ICA1MTAsICAnMjAyMi0wNS0wNCcpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfb3RoZXJz IERFRkFVTFQsCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19qYW4yMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScp IFRPICgnMjAyMi0wMS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2Fk ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisg ICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2Ns YXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0 ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgICB0YWJsZW9pZCAgICAg ICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgc2Fs ZXNfYXByMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAg IHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSB8 ICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0 LTA2LTIwMjIKKyBzYWxlc19mZWIyMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAgMiB8IFNt aXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0wOS0yMDIyCisgc2FsZXNfZmVi MjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAg ICAgICAgMTUwIHwgMDItMDctMjAyMgorIHNhbGVzX2phbjIwMjJfMWRlY2FkZSB8ICAgICAg ICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIw MjIKKyBzYWxlc19tYXIyMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAgNyB8IExpICAgICAg ICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgc2FsZXNfb3RoZXJzICAg ICAgICAgIHwgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAx MDAwIHwgMDEtMzEtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAg ICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyBz YWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAg ICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAg IHwgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwg MDItMjMtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgICA5IHwg TXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyBzYWxlc19v dGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAg ICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAg ICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTkt MjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgIDE0IHwgU21pdGgg ICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitE Uk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIHNwbGl0 IG5vbi1ERUZBVUxUIHBhcnRpdGlvbiB0byBwYXJ0aXRpb25zIHdpdGggc3BhY2VzIGJldHdl ZW4gYm91bmRzOworLS0gICAqIHJhbmRvbSBvcmRlciBvZiBwYXJ0aXRpb25zIGluIFNQTElU IFBBUlRJVElPTiBjb21tYW5kLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2Fs ZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19h bW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNf ZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAw LCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTA5 JyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAn SXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1 MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDIt MDcnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwg ICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAg MjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0w MS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgx MiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAg ICAzNzcsICAnMjAyMi0wMS0wOScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8x ZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVz X2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTAyLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNz LCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0 IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgICB0YWJsZW9pZCAgICAgICAg fCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBz YWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgc2FsZXNf YXByMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwg ICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSB8ICAg ICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2 LTIwMjIKKyBzYWxlc19mZWIyMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAgMiB8IFNtaXJu b2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0wOS0yMDIyCisgc2FsZXNfZmViMjAy Ml8xZGVjYWRlIHwgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAg ICAgMTUwIHwgMDItMDctMjAyMgorIHNhbGVzX2phbjIwMjJfMWRlY2FkZSB8ICAgICAgICAg ICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIK KyBzYWxlc19tYXIyMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAgNyB8IExpICAgICAgICAg ICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAg ICAgIHwgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAw IHwgMDEtMzEtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgICAz IHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyBzYWxl c19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAg fCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwg ICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDIt MjMtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgICA5IHwgTXVs bGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyBzYWxlc19vdGhl cnMgICAgICAgICAgfCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAg ICAgICAzNTAgfCAwMS0yOC0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAg ICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAy MgorKDEzIHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gVGVzdCBm b3Igc3BsaXQgbm9uLURFRkFVTFQgcGFydGl0aW9uIHRvIERFRkFVTFQgcGFydGl0aW9uICsg cGFydGl0aW9ucworLS0gd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHMuCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25h bWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFS VElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4y MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAx LTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTA1LTAxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEs ICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZics IDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjIt MDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAo NSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcs ICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAy Mi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisg ICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVy JywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcy MDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwK KyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfb3RoZXJzIERFRkFVTFQpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgx NCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCB0YWJsZW9pZDo6 cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xh c3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworICAgdGFibGVvaWQgICAg fCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBz YWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNhbGVzX2FwcjIwMjIg fCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAw NC0zMC0yMDIyCisgc2FsZXNfYXByMjAyMiB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAg ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBzYWxlc19hcHIyMDIyIHwg ICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQt MDctMjAyMgorIHNhbGVzX2FwcjIwMjIgfCAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAg ICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgc2FsZXNfZmViMjAyMiB8ICAg ICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEw LTIwMjIKKyBzYWxlc19mZWIyMDIyIHwgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAg ICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorIHNhbGVzX2ZlYjIwMjIgfCAgICAg ICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0y MDIyCisgc2FsZXNfamFuMjAyMiB8ICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAg ICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyBzYWxlc19qYW4yMDIyIHwgICAgICAg ICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAy MgorIHNhbGVzX2phbjIwMjIgfCAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAg fCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgc2FsZXNfb3RoZXJzICB8ICAgICAgICAg ICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIK KyBzYWxlc19vdGhlcnMgIHwgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwg ICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorIHNhbGVzX290aGVycyAgfCAgICAgICAgICAg ICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisg c2FsZXNfb3RoZXJzICB8ICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAg ICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVz X3JhbmdlOworLS0KKy0tIFRyeSB0byBTUExJVCBwYXJ0aXRpb24gb2YgYW5vdGhlciB0YWJs ZS4KKy0tCitDUkVBVEUgVEFCTEUgdDEoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIExJ U1QgKHQpOworQ1JFQVRFIFRBQkxFIHQxcGEgUEFSVElUSU9OIE9GIHQxIEZPUiBWQUxVRVMg SU4gKCdBJyk7CitDUkVBVEUgVEFCTEUgdDIgKGkgaW50LCB0IHRleHQpIFBBUlRJVElPTiBC WSBSQU5HRSAodCk7CistLSBFUlJPUjogIHJlbGF0aW9uICJ0MXBhIiBpcyBub3QgYSBwYXJ0 aXRpb24gb2YgcmVsYXRpb24gInQyIgorQUxURVIgVEFCTEUgdDIgU1BMSVQgUEFSVElUSU9O IHQxcGEgSU5UTworICAgKFBBUlRJVElPTiB0MmEgRk9SIFZBTFVFUyBGUk9NICgnQScpIFRP ICgnQicpLAorICAgIFBBUlRJVElPTiB0MmIgRk9SIFZBTFVFUyBGUk9NICgnQicpIFRPICgn QycpKTsKK0VSUk9SOiAgcmVsYXRpb24gInQxcGEiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBy ZWxhdGlvbiAidDIiCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTlMg Y2FuIG9ubHkgc3BsaXQgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zCitE Uk9QIFRBQkxFIHQyOworRFJPUCBUQUJMRSB0MTsKKy0tCistLSBUcnkgdG8gU1BMSVQgcGFy dGl0aW9uIG9mIHRlbXBvcmFyeSB0YWJsZS4KKy0tCitDUkVBVEUgVEVNUCBUQUJMRSB0IChp IGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzBf MiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK1NFTEVDVCBj Lm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJl bHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZST00gcGdfY2F0YWxv Zy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQg PSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAgT1JERVIg QlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RF RkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0Owor ICBvaWQgICB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgIHwgcmVscGVyc2lzdGVuY2Ug CistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0KKyB0cF8wXzIgfCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKSB8IHQKKygxIHJvdykK KworLS0gRVJST1I6ICBjYW5ub3QgY3JlYXRlIGEgcGVybWFuZW50IHJlbGF0aW9uIGFzIHBh cnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVsYXRpb24gInQiCitBTFRFUiBUQUJMRSB0IFNQTElU IFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVT IEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMikpOworRVJST1I6ICBjYW5ub3QgY3JlYXRlIGEgcGVybWFuZW50IHJlbGF0 aW9uIGFzIHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVsYXRpb24gInQiCitBTFRFUiBUQUJM RSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHBnX3RlbXAu dHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHBnX3Rl bXAudHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKKy0tIFBhcnRpdGlvbnMg c2hvdWxkIGJlIHRlbXBvcmFyeS4KK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFz cywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJl bHBlcnNpc3RlbmNlCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9n LnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBh cmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhw cihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxv Zy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworICBvaWQgICB8ICAgICAgICBwZ19nZXRf ZXhwciAgICAgICAgIHwgcmVscGVyc2lzdGVuY2UgCistLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzEgfCBGT1IgVkFMVUVT IEZST00gKDApIFRPICgxKSB8IHQKKyB0cF8xXzIgfCBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKSB8IHQKKygyIHJvd3MpCisKK0RST1AgVEFCTEUgdDsKKy0tIENoZWNrIHRoZSBuZXcg cGFydGl0aW9ucyBpbmhlcml0IHBhcmVudCdzIHRhYmxlc3BhY2UKK0NSRUFURSBUQUJMRSB0 IChpIGludCBQUklNQVJZIEtFWSBVU0lORyBJTkRFWCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJs c3BhY2UpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVEFCTEVTUEFDRSByZWdyZXNzX3Ri bHNwYWNlOworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVT IEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBf MiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEp LAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitT RUxFQ1QgdGFibGVuYW1lLCB0YWJsZXNwYWNlIEZST00gcGdfdGFibGVzCisgIFdIRVJFIHRh YmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8xJywgJ3RwXzFfMicpIEFORCBzY2hlbWFuYW1lID0g J3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnCisgIE9SREVSIEJZIHRhYmxlbmFtZSwgdGFibGVz cGFjZTsKKyB0YWJsZW5hbWUgfCAgICB0YWJsZXNwYWNlICAgIAorLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAgIHwgcmVncmVzc190YmxzcGFjZQorIHRwXzBf MSAgICB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8xXzIgICAgfCByZWdyZXNzX3RibHNwYWNl CisoMyByb3dzKQorCitTRUxFQ1QgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRhYmxlc3BhY2Ug RlJPTSBwZ19pbmRleGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8xJywg J3RwXzFfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnCisg IE9SREVSIEJZIHRhYmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNlOworIHRhYmxlbmFt ZSB8ICBpbmRleG5hbWUgIHwgICAgdGFibGVzcGFjZSAgICAKKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAgIHwgdF9wa2V5ICAgICAg fCByZWdyZXNzX3RibHNwYWNlCisgdHBfMF8xICAgIHwgdHBfMF8xX3BrZXkgfCByZWdyZXNz X3RibHNwYWNlCisgdHBfMV8yICAgIHwgdHBfMV8yX3BrZXkgfCByZWdyZXNzX3RibHNwYWNl CisoMyByb3dzKQorCitEUk9QIFRBQkxFIHQ7CistLSBDaGVjayBuZXcgcGFydGl0aW9ucyBp bmhlcml0cyBwYXJlbnQncyB0YWJsZSBhY2Nlc3MgbWV0aG9kCitDUkVBVEUgQUNDRVNTIE1F VEhPRCBwYXJ0aXRpb25fc3BsaXRfaGVhcCBUWVBFIFRBQkxFIEhBTkRMRVIgaGVhcF90YWJs ZWFtX2hhbmRsZXI7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5H RSAoaSkgVVNJTkcgcGFydGl0aW9uX3NwbGl0X2hlYXA7CitDUkVBVEUgVEFCTEUgdHBfMF8y IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFC TEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK1NFTEVDVCBjLnJlbG5hbWUsIGEuYW1uYW1lCitG Uk9NIHBnX2NsYXNzIGMgSk9JTiBwZ19hbSBhIE9OIGMucmVsYW0gPSBhLm9pZAorV0hFUkUg Yy5vaWQgSU4gKCd0Jzo6cmVnY2xhc3MsICd0cF8wXzEnOjpyZWdjbGFzcywgJ3RwXzFfMic6 OnJlZ2NsYXNzKQorT1JERVIgQlkgYy5yZWxuYW1lOworIHJlbG5hbWUgfCAgICAgICAgYW1u YW1lICAgICAgICAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAg ICB8IHBhcnRpdGlvbl9zcGxpdF9oZWFwCisgdHBfMF8xICB8IHBhcnRpdGlvbl9zcGxpdF9o ZWFwCisgdHBfMV8yICB8IHBhcnRpdGlvbl9zcGxpdF9oZWFwCisoMyByb3dzKQorCitEUk9Q IFRBQkxFIHQ7CitEUk9QIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uX3NwbGl0X2hlYXA7Cist LSBUZXN0IHBlcm1pc3Npb24gY2hlY2tzLiAgVGhlIHVzZXIgbmVlZHMgdG8gb3duIHRoZSBw YXJlbnQgdGFibGUgYW5kIHRoZQorLS0gdGhlIHBhcnRpdGlvbiB0byBzcGxpdCB0byBkbyB0 aGUgc3BsaXQuCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsK K0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0dSQU5UIEFMTCBP TiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9z cGxpdF9hbGljZTsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVt YSBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJ WkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFRBQkxFIHQg KGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQ QVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK1NFVCBTRVNTSU9O IEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworQUxURVIgVEFC TEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK0VSUk9SOiAgbXVzdCBiZSBvd25lciBvZiB0YWJs ZSB0CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitBTFRFUiBUQUJMRSB0IE9XTkVS IFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUkla QVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworQUxURVIgVEFCTEUgdCBTUExJ VCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDIpKTsKK0VSUk9SOiAgbXVzdCBiZSBvd25lciBvZiB0YWJsZSB0cF8wXzIK K1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0FMVEVSIFRBQkxFIHRwXzBfMiBPV05F UiBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJ WkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BM SVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgyKSk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitEUk9QIFRB QkxFIHQ7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIEZS T00gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitSRVZPS0UgQUxMIE9OIFNDSEVN QSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRf Ym9iOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworRFJPUCBS T0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKKy0tIFNwbGl0IHBhcnRpdGlvbiBv ZiBhIHRlbXBvcmFyeSB0YWJsZSB3aGVuIG9uZSBvZiB0aGUgcGFydGl0aW9ucyBhZnRlcgor LS0gc3BsaXQgaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHBhcnRpdGlvbiBiZWluZyBzcGxp dAorQ1JFQVRFIFRFTVAgVEFCTEUgdCAoYSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoYSk7 CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8wIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMCBJTlRP CisgIChQQVJUSVRJT04gcGdfdGVtcC50cF8wIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEp LAorICAgUEFSVElUSU9OIHBnX3RlbXAudHBfMSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgy KSk7CitEUk9QIFRBQkxFIHQ7CistLSBDaGVjayBkZWZhdWx0cyBhbmQgY29uc3RyYWludHMg b2YgbmV3IHBhcnRpdGlvbnMKK0NSRUFURSBUQUJMRSB0X2JpZ2ludCAoCisgIGIgYmlnaW50 LAorICBpIGludCBERUZBVUxUICgzKzEwKSwKKyAgaiBpbnQgREVGQVVMVCAxMDEsCisgIGsg aW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGIrMTApIFNUT1JFRAorKQorUEFSVElUSU9OIEJZ IFJBTkdFIChiKTsKK0NSRUFURSBUQUJMRSB0X2JpZ2ludF9kZWZhdWx0IFBBUlRJVElPTiBP RiB0X2JpZ2ludCBERUZBVUxUOworLS0gU2hvdyBkZWZhdWx0cy9jb25zdHJhaW50cyBiZWZv cmUgU1BMSVQgUEFSVElUSU9OCitcZCsgdF9iaWdpbnQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQYXJ0aXRpb25lZCB0YWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVt YS50X2JpZ2ludCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUg fCAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgIHwgU3RvcmFnZSB8IFN0 YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgYiAgICAgIHwgYmln aW50ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBpICAgICAgfCBp bnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAzICsgMTAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGogICAgICB8 IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IDEwMSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgayAgICAg IHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBh cyAoKGIgKyAxMCkpIHN0b3JlZCB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRp dGlvbiBrZXk6IFJBTkdFIChiKQorUGFydGl0aW9uczogdF9iaWdpbnRfZGVmYXVsdCBERUZB VUxUCisKK1xkKyB0X2JpZ2ludF9kZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50X2JpZ2ludF9kZWZh dWx0IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAg ICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAgfCBTdG9yYWdlIHwgU3RhdHMgdGFy Z2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBiICAgICAgfCBiaWdpbnQgIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGkgICAgICB8IGludGVnZXIg fCAgICAgICAgICAgfCAgICAgICAgICB8IDMgKyAxMCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaiAgICAgIHwgaW50ZWdl ciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgMTAxICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBrICAgICAgfCBpbnRl Z2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgoYiAr IDEwKSkgc3RvcmVkIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIG9m OiB0X2JpZ2ludCBERUZBVUxUCitObyBwYXJ0aXRpb24gY29uc3RyYWludAorCitBTFRFUiBU QUJMRSB0X2JpZ2ludCBTUExJVCBQQVJUSVRJT04gdF9iaWdpbnRfZGVmYXVsdCBJTlRPCisg IChQQVJUSVRJT04gdF9iaWdpbnRfMDFfMTAgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTAp LAorICAgUEFSVElUSU9OIHRfYmlnaW50X2RlZmF1bHQgREVGQVVMVCk7CistLSBTaG93IGRl ZmF1bHRzL2NvbnN0cmFpbnRzIGFmdGVyIFNQTElUIFBBUlRJVElPTgorXGQrIHRfYmlnaW50 X2RlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJw YXJ0aXRpb25fc3BsaXRfc2NoZW1hLnRfYmlnaW50X2RlZmF1bHQiCisgQ29sdW1uIHwgIFR5 cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgRGVmYXVsdCAg ICAgICAgICAgICAgICB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAK Ky0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLQorIGIgICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCAgICAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwg ICAgICAgICAgICAgIHwgCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgMyArIDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAg fCAgICAgICAgICAgICAgfCAKKyBqICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAg ICAgICAgfCAxMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4g ICB8ICAgICAgICAgICAgICB8IAorIGsgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAg ICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKChiICsgMTApKSBzdG9yZWQgfCBwbGFp biAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHRfYmlnaW50IERFRkFVTFQK K1BhcnRpdGlvbiBjb25zdHJhaW50OiAoTk9UICgoYiBJUyBOT1QgTlVMTCkgQU5EICgoYiA+ PSAnMCc6OmJpZ2ludCkgQU5EIChiIDwgJzEwJzo6YmlnaW50KSkpKQorCitcZCsgdF9iaWdp bnRfMDFfMTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAi cGFydGl0aW9uX3NwbGl0X3NjaGVtYS50X2JpZ2ludF8wMV8xMCIKKyBDb2x1bW4gfCAgVHlw ZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgICBEZWZhdWx0ICAg ICAgICAgICAgICAgIHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAor LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tCisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8ICAgICAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAg ICAgICAgICAgICAgfCAKKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAg ICAgfCAzICsgMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8 ICAgICAgICAgICAgICB8IAorIGogICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAg ICAgICB8IDEwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAg IHwgICAgICAgICAgICAgIHwgCisgayAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoKGIgKyAxMCkpIHN0b3JlZCB8IHBsYWlu ICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBvZjogdF9iaWdpbnQgRk9SIFZBTFVF UyBGUk9NICgnMCcpIFRPICgnMTAnKQorUGFydGl0aW9uIGNvbnN0cmFpbnQ6ICgoYiBJUyBO T1QgTlVMTCkgQU5EIChiID49ICcwJzo6YmlnaW50KSBBTkQgKGIgPCAnMTAnOjpiaWdpbnQp KQorCitEUk9QIFRBQkxFIHRfYmlnaW50OworLS0gVGVzdDogb3duZXIgb2YgbmV3IHBhcnRp dGlvbnMgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIG93bmVyIG9mIHNwbGl0IHBhcnRpdGlvbgor Q1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitHUkFOVCBBTEwg T04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25f c3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5H RSAoaSk7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3Nw bGl0X2FsaWNlOworQ1JFQVRFIFRBQkxFIHRwXzBfMihpIGludCk7CitSRVNFVCBTRVNTSU9O IEFVVEhPUklaQVRJT047CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMF8y IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFy dGl0aW9uX3NwbGl0X2FsaWNlJzoKK1xkdCB0cF8wXzIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzdCBvZiB0YWJsZXMKKyAgICAgICAgIFNjaGVtYSAgICAgICAgIHwgIE5h bWUgIHwgVHlwZSAgfCAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgdHBfMF8yIHwgdGFibGUg fCByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZQorKDEgcm93KQorCitBTFRFUiBUQUJM RSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBG T1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMikpOworLS0gT3duZXIgc2hvdWxkIGJlICdyZWdyZXNzX3Bh cnRpdGlvbl9zcGxpdF9hbGljZSc6CitcZHQgdHBfMF8xCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3Qgb2YgdGFibGVzCisgICAgICAgICBTY2hlbWEgICAgICAgICB8ICBO YW1lICB8IFR5cGUgIHwgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHRwXzBfMSB8IHRhYmxl IHwgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKKygxIHJvdykKKworXGR0IHRwXzFf MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHRhYmxlcworICAgICAg ICAgU2NoZW1hICAgICAgICAgfCAgTmFtZSAgfCBUeXBlICB8ICAgICAgICAgICAgIE93bmVy ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEgfCB0cF8xXzIgfCB0YWJsZSB8IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNl CisoMSByb3cpCisKK0RST1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRp dGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsK K0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKKy0tIFRlc3Q6IGlu ZGV4IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBiZSBjcmVhdGVkIHdpdGggc2FtZSBvd25l ciBhcyBzcGxpdAorLS0gcGFydGl0aW9uCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlv bl9zcGxpdF9hbGljZTsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3Nj aGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK1NFVCBTRVNTSU9OIEFV VEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFC TEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBf MTBfMjAgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0lO U0VSVCBJTlRPIHQgVkFMVUVTICgxMSksICgxNik7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5D VElPTiBydW5fbWUoaW50ZWdlcikgUkVUVVJOUyBpbnRlZ2VyIEFTICQkCitCRUdJTgorICBS QUlTRSBOT1RJQ0UgJ3lvdSBhcmUgcnVubmluZyBtZSBhcyAlJywgQ1VSUkVOVF9VU0VSOwor ICBSRVRVUk4gJDE7CitFTkQKKyQkIExBTkdVQUdFIFBMUEdTUUwgSU1NVVRBQkxFOworLS0g T3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK0NSRUFURSBJTkRF WCBPTiB0IChydW5fbWUoaSkpOworTk9USUNFOiAgeW91IGFyZSBydW5uaW5nIG1lIGFzIHJl Z3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlCitOT1RJQ0U6ICB5b3UgYXJlIHJ1bm5pbmcg bWUgYXMgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKK1JFU0VUIFNFU1NJT04gQVVU SE9SSVpBVElPTjsKKy0tIE93bmVyIHNob3VsZCBiZSAncmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYWxpY2UnOgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMTBfMjAgSU5U TworICAoUEFSVElUSU9OIHRwXzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSks CisgICBQQVJUSVRJT04gdHBfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7 CitOT1RJQ0U6ICB5b3UgYXJlIHJ1bm5pbmcgbWUgYXMgcmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYWxpY2UKK05PVElDRTogIHlvdSBhcmUgcnVubmluZyBtZSBhcyByZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9hbGljZQorRFJPUCBUQUJMRSB0OworRFJPUCBGVU5DVElPTiBydW5fbWUo aW50ZWdlcik7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1h IEZST00gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVz c19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CistLSBUZXN0IGZvciBoYXNoIHBhcnRpdGlvbmVk IHRhYmxlCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBIQVNIKGkpOwor Q1JFQVRFIFRBQkxFIHRwMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVM VVMgMiwgUkVNQUlOREVSIDApOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDEpOworLS0gRVJST1I6ICBw YXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZSBjYW5ub3QgYmUgc3BsaXQKK0FM VEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwMSBJTlRPCisgIChQQVJUSVRJT04gdHAx XzEgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDQsIFJFTUFJTkRFUiAwKSwKKyAgIFBBUlRJ VElPTiB0cDFfMiBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgNCwgUkVNQUlOREVSIDIpKTsK K0VSUk9SOiAgcGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJl IHNwbGl0CistLSBFUlJPUjogIGxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRh aW4gYXQgbGVhc3QgdHdvIHBhcnRpdGlvbnMKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElU SU9OIHRwMSBJTlRPCisgIChQQVJUSVRJT04gdHAxXzEgRk9SIFZBTFVFUyBXSVRIIChNT0RV TFVTIDQsIFJFTUFJTkRFUiAwKSk7CitFUlJPUjogIGxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMg c2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIHBhcnRpdGlvbnMKK0RST1AgVEFCTEUgdDsK Ky0tIEFkZGl0aW9uYWwgdGVzdHMgZm9yIGVycm9yIG1lc3NhZ2VzCitDUkVBVEUgVEFCTEUg c2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIGludCwgc2FsZXNwZXJzb25fbmFtZSB2YXJj aGFyKDMwKSwgc2FsZXNfYW1vdW50IGludCwgc2FsZXNfZGF0ZSBkYXRlKSBQQVJUSVRJT04g QlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBU TyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDUtMDEnKTsKKy0tIEVSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0 aW9uICJzYWxlc19hcHIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdXBwZXIgYm91bmQgb2Ygc3Bs aXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04g c2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEn KSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7CitFUlJPUjog IHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgbm90IGVxdWFs IHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorTElORSA0OiAuLi4gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAu Li4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0gVGVzdCBmb3Igc3Bs aXQgcGFydGl0aW9uIHByb3BlcnRpZXM6CistLSAqIFNUQVRJU1RJQ1MgaXMgZW1wdHkKKy0t ICogQ09NTUVOVCBpcyBlbXB0eQorLS0gKiBERUZBVUxUUyBhcmUgdGhlIHNhbWUgYXMgREVG QVVMVFMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIFNUT1JBR0UgaXMgdGhlIHNhbWUg YXMgU1RPUkFHRSBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogR0VORVJBVEVEIGFuZCBD T05TVFJBSU5UUyBhcmUgdGhlIHNhbWUgYXMgR0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBm b3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogVFJJR0dFUlMgYXJlIHRoZSBzYW1lIGFzIFRS SUdHRVJTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorQ1JFQVRFIFRBQkxFIHQKKyhpIGludCBO T1QgTlVMTCwKKyB0IHRleHQgU1RPUkFHRSBFWFRFTkRFRCBDT01QUkVTU0lPTiBwZ2x6IERF RkFVTFQgJ2RlZmF1bHRfdCcsCisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdB WVMgYXMgKCcyMDIyLTAxLTAxJykgU1RPUkVEKSBQQVJUSVRJT04gQlkgUkFOR0UgKGFicyhp KSk7CitDT01NRU5UIE9OIENPTFVNTiB0LmkgSVMgJ3QxLmknOworQ1JFQVRFIFRBQkxFIHRw X3gKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQgU1RPUkFHRSBNQUlOIERFRkFVTFQgJ2Rl ZmF1bHRfdHBfeCcsCisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMg KCcyMDIyLTAyLTAyJykgU1RPUkVEKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElP TiB0cF94IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQ09NTUVOVCBPTiBDT0xVTU4g dHBfeC5pIElTICd0cF94LmknOworQ1JFQVRFIFNUQVRJU1RJQ1MgdF9zdGF0IChERVBFTkRF TkNJRVMpIG9uIGksIGIgZnJvbSB0OworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBfeF9zdGF0IChE RVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0cF94OworQUxURVIgVEFCTEUgdCBBREQgQ09O U1RSQUlOVCB0X2JfY2hlY2sgQ0hFQ0sgKGIgPiAwKTsKK0FMVEVSIFRBQkxFIHQgQUREIENP TlNUUkFJTlQgdF9iX2NoZWNrMSBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNFRDsKK0FMVEVS IFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrMiBDSEVDSyAoYiA+IDApIE5PVCBW QUxJRDsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX25uIE5PVCBOVUxMIGIg Tk9UIFZBTElEOworSU5TRVJUIElOVE8gdHBfeChpLCB0LCBiKSBWQUxVRVMoMCwgREVGQVVM VCwgMSk7CitJTlNFUlQgSU5UTyB0cF94KGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAy KTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKSBSRVRV Uk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTCiskQk9EWSQKK0JFR0lOCisgIFJB SVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBs ZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgIFJF VFVSTiBuZXc7CitFTkQ7CiskQk9EWSQ7CitDUkVBVEUgVFJJR0dFUiB0X2JlZm9yZV9pbnNl cnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0IEZPUiBFQUNIIFJPVworICBFWEVD VVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0Jyk7CitDUkVBVEUgVFJJR0dFUiB0 cF94X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF94IEZP UiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF94 Jyk7CitcZCsgdHBfeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBUYWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50cF94IgorIENvbHVtbiB8 ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgICAgICAg RGVmYXVsdCAgICAgICAgICAgICAgICAgICAgIHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8 IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGkgICAgICB8IGludGVn ZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IHRwX3gu aQorIHQgICAgICB8IHRleHQgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICdkZWZhdWx0 X3RwX3gnOjp0ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbWFpbiAgICB8ICAg ICAgICAgICAgICB8IAorIGIgICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCBub3QgbnVs bCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg cGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGQgICAgICB8IGRhdGUgICAgfCAgICAgICAg ICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKCcwMi0wMi0yMDIyJzo6ZGF0 ZSkgc3RvcmVkIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0 IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpCitQYXJ0aXRpb24gY29uc3RyYWludDogKChh YnMoaSkgSVMgTk9UIE5VTEwpIEFORCAoYWJzKGkpID49IDApIEFORCAoYWJzKGkpIDwgMikp CitDaGVjayBjb25zdHJhaW50czoKKyAgICAidF9iX2NoZWNrIiBDSEVDSyAoYiA+IDApCisg ICAgInRfYl9jaGVjazEiIENIRUNLIChiID4gMCkgTk9UIEVORk9SQ0VECisgICAgInRfYl9j aGVjazIiIENIRUNLIChiID4gMCkgTk9UIFZBTElECitTdGF0aXN0aWNzIG9iamVjdHM6Cisg ICAgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEudHBfeF9zdGF0IiAoZGVwZW5kZW5jaWVzKSBP TiBpLCBiIEZST00gdHBfeAorTm90LW51bGwgY29uc3RyYWludHM6CisgICAgInRwX3hfaV9u b3RfbnVsbCIgTk9UIE5VTEwgImkiIChpbmhlcml0ZWQpCisgICAgInRfYl9ubiIgTk9UIE5V TEwgImIiIChpbmhlcml0ZWQpIE5PVCBWQUxJRAorVHJpZ2dlcnM6CisgICAgdF9iZWZvcmVf aW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfeCBGT1IgRUFDSCBST1cg RVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCd0JyksIE9OIFRBQkxFIHQKKyAg ICB0cF94X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF94 IEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3RwX3gn KQorCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF94IElOVE8KKyAgKFBBUlRJ VElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04g dHBfeCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitcZCsgdHBfeAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRpdGlv bl9zcGxpdF9zY2hlbWEudHBfeCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwg TnVsbGFibGUgfCAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAg ICAgICB8IFN0b3JhZ2UgIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLQorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3Qg bnVsbCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKKyB0ICAgICAgfCB0ZXh0ICAgIHwgICAg ICAgICAgIHwgICAgICAgICAgfCAnZGVmYXVsdF90Jzo6dGV4dCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IGV4dGVuZGVkIHwgICAgICAgICAgICAgIHwgCisgYiAgICAgIHwg YmlnaW50ICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8 IAorIGQgICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRl ZCBhbHdheXMgYXMgKCcwMS0wMS0yMDIyJzo6ZGF0ZSkgc3RvcmVkIHwgcGxhaW4gICAgfCAg ICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKQorUGFydGl0aW9uIGNvbnN0cmFpbnQ6ICgoYWJzKGkpIElTIE5PVCBOVUxMKSBBTkQg KGFicyhpKSA+PSAxKSBBTkQgKGFicyhpKSA8IDIpKQorQ2hlY2sgY29uc3RyYWludHM6Cisg ICAgInRfYl9jaGVjayIgQ0hFQ0sgKGIgPiAwKQorICAgICJ0X2JfY2hlY2sxIiBDSEVDSyAo YiA+IDApIE5PVCBFTkZPUkNFRAorICAgICJ0X2JfY2hlY2syIiBDSEVDSyAoYiA+IDApIE5P VCBWQUxJRAorTm90LW51bGwgY29uc3RyYWludHM6CisgICAgInRfaV9ub3RfbnVsbCIgTk9U IE5VTEwgImkiIChpbmhlcml0ZWQpCisgICAgInRfYl9ubiIgTk9UIE5VTEwgImIiIChpbmhl cml0ZWQpIE5PVCBWQUxJRAorVHJpZ2dlcnM6CisgICAgdF9iZWZvcmVfaW5zZXJ0X3Jvd190 cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfeCBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5D VElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCd0JyksIE9OIFRBQkxFIHQKKworSU5TRVJUIElOVE8g dChpLCB0LCBiKSBWQUxVRVMoMSwgREVGQVVMVCwgMyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHQp IGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQkVGT1JFLCBsZXZlbCA9IFJPVwor U0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHQgT1JERVIgQlkgdGFibGVvaWQ6 OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBiOworIHRhYmxlb2lkIHwgaSB8ICAgICAg dCAgICAgICB8IGIgfCAgICAgZCAgICAgIAorLS0tLS0tLS0tLSstLS0rLS0tLS0tLS0tLS0t LS0rLS0tKy0tLS0tLS0tLS0tLQorIHRwXzBfMSAgIHwgMCB8IGRlZmF1bHRfdHBfeCB8IDEg fCAwMS0wMS0yMDIyCisgdHBfeCAgICAgfCAxIHwgZGVmYXVsdF90cF94IHwgMiB8IDAxLTAx LTIwMjIKKyB0cF94ICAgICB8IDEgfCBkZWZhdWx0X3QgICAgfCAzIHwgMDEtMDEtMjAyMgor KDMgcm93cykKKworRFJPUCBUQUJMRSB0OworRFJPUCBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0 aW9uKCk7CistLSBUZXN0IGZvciByZWNvbXB1dGF0aW9uIG9mIHN0b3JlZCBnZW5lcmF0ZWQg Y29sdW1ucy4KK0NSRUFURSBUQUJMRSB0IChpIGludCwgdGFiX2lkIGludCBnZW5lcmF0ZWQg YWx3YXlzIGFzICh0YWJsZW9pZCkgc3RvcmVkKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOwor Q1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgY2MgQ0hFQ0sodGFibGVv aWQgPD4gMTIzNDU2Nzg5KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworLS0g U2hvdWxkIGJlIDEgYmVjYXVzZSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGgg aT0wIGlzIHRoZSBzYW1lIGFzCistLSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdp dGggaT0xLgorU0VMRUNUIGNvdW50KCopIEZST00gdCBXSEVSRSBpID0gMCBBTkQgdGFiX2lk IElOIChTRUxFQ1QgdGFiX2lkIEZST00gdCBXSEVSRSBpID0gMSk7CisgY291bnQgCistLS0t LS0tCisgICAgIDEKKygxIHJvdykKKworLS0gInRhYl9pZCIgY29sdW1uIChzdG9yZWQgZ2Vu ZXJhdGVkIGNvbHVtbikgd2l0aCAidGFibGVvaWQiIGF0dHJpYnV0ZSByZXF1aXJlcworLS0g cmVjb21wdXRhdGlvbiBoZXJlLgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBf MF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsK Ky0tIFNob3VsZCBiZSAwIGJlY2F1c2UgcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3 aXRoIGk9MCBpcyBkaWZmZXJlbnQgZnJvbQorLS0gcGFydGl0aW9uIGlkZW50aWZpZXIgZm9y IHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5E IHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hFUkUgaSA9IDEpOworIGNvdW50 IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisKK0RST1AgVEFCTEUgdDsKK1JFU0VUIHNl YXJjaF9wYXRoOworLS0KK0RST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7CitE Uk9QIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMjsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlCmluZGV4IDJkM2Y1MGE0M2IuLjBmYjUzZDQ4NmQgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTIzLDcgKzEyMyw3IEBAIHRlc3Q6IHBsYW5j YWNoZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFy ZSBjb252ZXJzaW9uIHRyCiAjIFRoZSBzdGF0cyB0ZXN0IHJlc2V0cyBzdGF0cywgc28gbm90 aGluZyBlbHNlIG5lZWRpbmcgc3RhdHMgYWNjZXNzIGNhbiBiZSBpbgogIyB0aGlzIGdyb3Vw LgogIyAtLS0tLS0tLS0tCi10ZXN0OiBwYXJ0aXRpb25fbWVyZ2UgcGFydGl0aW9uX2pvaW4g cGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlv bl9hZ2dyZWdhdGUgcGFydGl0aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Np b24gY29tcHJlc3Npb25fbHo0IG1lbW9pemUgc3RhdHMgcHJlZGljYXRlIG51bWEKK3Rlc3Q6 IHBhcnRpdGlvbl9tZXJnZSBwYXJ0aXRpb25fc3BsaXQgcGFydGl0aW9uX2pvaW4gcGFydGl0 aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dy ZWdhdGUgcGFydGl0aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24gY29t cHJlc3Npb25fbHo0IG1lbW9pemUgc3RhdHMgcHJlZGljYXRlIG51bWEKIAogIyBldmVudF90 cmlnZ2VyIGRlcGVuZHMgb24gY3JlYXRlX2FtIGFuZCBjYW5ub3QgcnVuIGNvbmN1cnJlbnRs eSB3aXRoCiAjIGFueSB0ZXN0IHRoYXQgcnVucyBEREwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9wYXJ0aXRpb25fc3BsaXQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLjZhODQ0ZWJhMWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsCkBAIC0wLDAgKzEsMTE0OSBAQAorLS0KKy0tIFBB UlRJVElPTl9TUExJVAorLS0gVGVzdHMgZm9yICJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFS VElUSU9OIC4uLiIgY29tbWFuZAorLS0KKworQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hOworQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMjsKK1NF VCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKKworLS0K Ky0tIEJZIFJBTkdFIHBhcnRpdGlvbmluZworLS0KKworLS0KKy0tIFRlc3QgZm9yIGVycm9y IGNvZGVzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBp bnQsIHNhbGVzcGVyc29uX25hbWUgdmFyY2hhcigzMCksIHNhbGVzX2Ftb3VudCBpbnQsIHNh bGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOwor CistLSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc194eHgiIGRvZXMgbm90IGV4aXN0CitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfeHh4IElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbjIwMjIi IGFscmVhZHkgZXhpc3RzCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJ T04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4y MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMt MDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0t IEVSUk9SOiAgaW52YWxpZCBib3VuZCBzcGVjaWZpY2F0aW9uIGZvciBhIHJhbmdlIHBhcnRp dGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Zl Yl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFM VUVTIElOICgnMjAyMi0wNS0wMScsICcyMDIyLTA2LTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0 LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIGVtcHR5IHJh bmdlIGJvdW5kIHNwZWNpZmllZCBmb3IgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIgorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf bWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAyLTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLUVSUk9SOiAgbGlzdCBvZiBzcGxp dCBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBpdGVtcworQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTEwLTAxJykpOworCistLSBFUlJPUjogIGxvd2VyIGJv dW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIGxvd2Vy IGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIy LTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAx JykpOworCistLSBFUlJPUjogIG5hbWUgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgaXMgYWxy ZWFkeSB1c2VkCistLSAoV2UgY2FuIGNyZWF0ZSBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZSBu YW1lIGFzIHNwbGl0IHBhcnRpdGlvbiwgYnV0IGNhbid0IGNyZWF0ZSB0d28gcGFydGl0aW9u cyB3aXRoIHRoZSBzYW1lIG5hbWUpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19mZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgn MjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8g KCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlz IGFscmVhZHkgdXNlZAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBF UlJPUjogIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gcGFydGl0aW9uX3Nw bGl0X3NjaGVtYS5zYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEn KSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVS Uk9SOiAgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgaXMgbm90IGEgcGFydGl0aW9uZWQgdGFi bGUKK0FMVEVSIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBTUExJVCBQQVJUSVRJT04g c2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEn KSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVS Uk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBpcyBub3Qg ZXF1YWwgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDYtMDEnKSk7CisKKy0tIEVSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0 aXRpb24gInNhbGVzX21hcjIwMjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19m ZWIyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBUZXN0cyBm b3Igc3BhY2VzIGJldHdlZW4gcGFydGl0aW9ucywgdGhlbSBzaG91bGQgYmUgZXhlY3V0ZWQg d2l0aG91dCBERUZBVUxUIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgREVU QUNIIFBBUlRJVElPTiBzYWxlc19vdGhlcnM7CisKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQg b2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gbG93ZXIgYm91 bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDInKSBUTyAoJzIwMjItMDMt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7 CisKKy0tIENoZWNrIHRoZSBzb3VyY2UgcGFydGl0aW9uIG5vdCBpbiB0aGUgc2VhcmNoIHBh dGgKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLCBwdWJsaWM7 CitBTFRFUiBUQUJMRSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX3JhbmdlCitTUExJ VCBQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWJfbWFyX2FwcjIw MjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21h cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlv bl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKK1xkKyBzYWxlc19yYW5nZQorCitEUk9QIFRBQkxF IHNhbGVzX3JhbmdlOworRFJPUCBUQUJMRSBzYWxlc19vdGhlcnM7CisKKy0tCistLSBBZGQg cm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4gc3BsaXQgcGFydGl0aW9uCistLQor Q1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVy c29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFU RSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxl c19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmVi X21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf b3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0w MS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgz LCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92Jywg ICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIy LTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAg KDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3Nv bicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIw MjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAor ICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRv JywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAn MjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7 CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJf bWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAy Mi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworU0VMRUNUIHRhYmxlb2lk OjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdj bGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CitEUk9QIFRBQkxFIHNh bGVzX3JhbmdlIENBU0NBREU7CisKKy0tCistLSBBZGQgc3BsaXQgcGFydGl0aW9uLCB0aGVu IGFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2Fs ZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFS KDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAo JzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIFNwbGl0IHBhcnRpdGlvbiwgYWxzbyBj aGVjayBzY2hlbWEgcXVhbGlmaWNhdGlvbiBvZiBuZXcgcGFydGl0aW9ucworQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJ TlRPCisgIChQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAg IFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKSk7CitcZCsgc2FsZXNfcmFuZ2UKKworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwK KyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3Jk JywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAg JzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycp LAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xp JywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUs ICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTEx JyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAn VHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1 MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEt MDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxF Q1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFi bGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKwor RFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworCistLQorLS0gVGVzdCBmb3I6Cist LSAgICogY29tcG9zaXRlIHBhcnRpdGlvbiBrZXk7CistLSAgICogR0VORVJBVEVEIGNvbHVt bjsKKy0tICAgKiBjb2x1bW4gd2l0aCBERUZBVUxUIHZhbHVlLgorLS0KK0NSRUFURSBUQUJM RSBzYWxlc19kYXRlIChzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc195ZWFy IElOVCwgc2FsZXNfbW9udGggSU5ULCBzYWxlc19kYXkgSU5ULAorICBzYWxlc19kYXRlIFZB UkNIQVIoMTApIEdFTkVSQVRFRCBBTFdBWVMgQVMKKyAgICAoTFBBRChzYWxlc195ZWFyOjp0 ZXh0LCA0LCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX21vbnRoOjp0ZXh0LCAyLCAnMCcp IHx8ICcuJyB8fCBMUEFEKHNhbGVzX2RheTo6dGV4dCwgMiwgJzAnKSkgU1RPUkVELAorICBz YWxlc19kZXBhcnRtZW50IFZBUkNIQVIoMzApIERFRkFVTFQgJ1NhbGVzIGRlcGFydG1lbnQn KQorICBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxl c19kYXkpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMSBQQVJUSVRJT04gT0Ygc2Fs ZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwgMSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2Rh dGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMywgMSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVF UyBGUk9NICgyMDIyLCAzLCAxKSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVFLCBNQVhWQUxVRSk7 CisKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVh ciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIx LCAxMiwgNyksCisgICgnTWFuYWdlcjInLCAyMDIxLCAxMiwgOCksCisgICgnTWFuYWdlcjMn LCAyMDIyLCAxLCAxKSwKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDIsIDQpLAorICAoJ01hbmFn ZXIyJywgMjAyMiwgMSwgMiksCisgICgnTWFuYWdlcjMnLCAyMDIyLCAyLCAxKSwKKyAgKCdN YW5hZ2VyMScsIDIwMjIsIDMsIDMpLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMywgNCksCisg ICgnTWFuYWdlcjMnLCAyMDIyLCA1LCAxKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFz cywgKiBGUk9NIHNhbGVzX2RhdGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0 IENPTExBVEUgIkMiLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5OworCitB TFRFUiBUQUJMRSBzYWxlc19kYXRlIFNQTElUIFBBUlRJVElPTiBzYWxlc19qYW5fZmViMjAy MiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKDIw MjIsIDEsIDEpIFRPICgyMDIyLCAyLCAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpKTsKKworSU5T RVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxl c19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDEsIDEw KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDIsIDEwKTsKKworU0VMRUNUIHRhYmxlb2lkOjpy ZWdjbGFzcywgKiBGUk9NIHNhbGVzX2RhdGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNz Ojp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5 OworCistLUVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbl9mZWIyMDIyIiBkb2VzIG5vdCBl eGlzdAorU0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAyMjsKKworRFJPUCBUQUJMRSBz YWxlc19kYXRlIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBzcGxpdCBERUZBVUxUIHBhcnRp dGlvbjsgdXNlIGFuIGluZGV4IG9uIHBhcnRpdGlvbiBrZXk7IGNoZWNrIGluZGV4IGFmdGVy IHNwbGl0CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJ TlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNh bGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JF QVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVT SU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAn U21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIw MDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQt MTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwg ICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAg MTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0w Mi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgx MCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAg ICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIy LTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAg KDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgKiBGUk9N IHNhbGVzX290aGVyczsKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5h bWUgPSAnc2FsZXNfb3RoZXJzJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRf c2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWU7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0gVXNlIGluZGV4c2Nh biBmb3IgdGVzdGluZyBpbmRleGVzCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CisKK0VY UExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyIHdoZXJlIHNh bGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjIg d2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK0VYUExBSU4gKENPU1RTIE9GRikg U0VMRUNUICogRlJPTSBzYWxlc19tYXIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0w MS0wMSc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ ICcyMDIyLTAxLTAxJzsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxl c19hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK0VY UExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnMgd2hlcmUgc2Fs ZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzIHdo ZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CisKK1JFU0VUIGVuYWJsZV9zZXFzY2Fu OworCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVz X2ZlYjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9S REVSIEJZIGluZGV4bmFtZTsKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJs ZW5hbWUgPSAnc2FsZXNfbWFyMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3Nw bGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lOworU0VMRUNUICogRlJPTSBwZ19pbmRl eGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19hcHIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9 ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWU7CitTRUxFQ1Qg KiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX290aGVycycgYW5k IHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhu YW1lOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CisKKy0tCistLSBUZXN0 OiBzb21lIGNhc2VzIGZvciBzcGxpdHRpbmcgREVGQVVMVCBwYXJ0aXRpb24gKGRpZmZlcmVu dCBib3VuZHMpCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9p ZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQs IHNhbGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JF QVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVM VDsKKworLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjEgKGxv d2VyIGJvdW5kKQorLS0gRVJST1I6ICBjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2Fs ZXNfZXJyb3IiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAx KSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMg RlJPTSAoMjAyMTEyMzApIFRPICgyMDIyMDIwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFS VElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0gc2FsZXNfZXJyb3IgaW50ZXJz ZWN0cyB3aXRoIHNhbGVzX2ZlYjIwMjIgKHVwcGVyIGJvdW5kKQorLS0gRVJST1I6ICBjYW4g bm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgdG9nZXRoZXIgd2l0aCBw YXJ0aXRpb24gInNhbGVzX2Vycm9yIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAy MSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElU SU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIw MiksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIw MjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxU KTsKKworLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjEgKGlu c2lkZSBib3VuZCkKKy0tIEVSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNh bGVzX2Vycm9yIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5U TworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIw MSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVT IEZST00gKDIwMjExMjEwKSBUTyAoMjAyMTEyMjApLAorICAgUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBB UlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKKy0tIHNhbGVzX2Vycm9yIGludGVy c2VjdHMgd2l0aCBzYWxlc19kZWMyMDIxIChleGFjdGx5IHRoZSBzYW1lIGJvdW5kcykKKy0t IEVSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiB0b2dl dGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAx KSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAx KSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19v dGhlcnMgREVGQVVMVCk7CisKKy0tIEVSUk9SOiAgb25lIHBhcnRpdGlvbiBpbiB0aGUgbGlz dCBzaG91bGQgYmUgREVGQVVMVCBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBpcyBERUZBVUxU CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJz IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAy MTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1Ig VkFMVUVTIEZST00gKDIwMjIwMTAxKSBUTyAoMjAyMjAyMDEpLAorICAgUEFSVElUSU9OIHNh bGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSk7 CisKKy0tIG5vIGVycm9yOiBib3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBhcmUgYmV0d2VlbiBz YWxlc19kZWMyMDIxIGFuZCBzYWxlc19mZWIyMDIyCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisg ICBQQVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjIwMTEwKSBU TyAoMjAyMjAxMjApLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhl cnMgREVGQVVMVCk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKK0NSRUFURSBUQUJM RSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZB UkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIElOVCkgUEFSVElUSU9O IEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIG5vIGVycm9yOiBib3VuZHMg b2Ygc2FsZXNfbm9lcnJvciBhcmUgZXF1YWwgdG8gbG93ZXIgYW5kIHVwcGVyIGJvdW5kcyBv ZiBzYWxlc19kZWMyMDIxIGFuZCBzYWxlc19mZWIyMDIyCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSks CisgICBQQVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjEwMTAx KSBUTyAoMjAyMTAyMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19v dGhlcnMgREVGQVVMVCk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBU ZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBDSEVDSyBhbmQgRk9SRUlHTiBLRVkgQ09OU1RS QUlOVHMgb24gcGFydGl0aW9uZWQgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9w bGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZB UkNIQVIoMzApKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMSwgICdQb2ly b3QnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlICgKK3NhbGVzcGVyc29uX2lkIElO VCBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSwKK3NhbGVzX2Ftb3Vu dCBJTlQgQ0hFQ0sgKHNhbGVzX2Ftb3VudCA+IDEpLAorc2FsZXNfZGF0ZSBEQVRFKSBQQVJU SVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfamFu MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w MS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJf YXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVy cyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworU0VMRUNUIHBnX2dldF9j b25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQg V0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfZmViX21hcl9hcHIyMDIyJzo6cmVnY2xhc3M6Om9p ZCBPUkRFUiBCWSBjb25uYW1lOworCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7 CisKKy0tIFdlIHNob3VsZCBzZWUgdGhlIHNhbWUgQ09OU1RSQUlOVHMgYXMgb24gc2FsZXNf ZmViX21hcl9hcHIyMDIyIHBhcnRpdGlvbgorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVm KG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVs aWQgPSAnc2FsZXNfZmViMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZTs7 CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZS T00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19tYXIyMDIyJzo6cmVn Y2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lOzsKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWlu dGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNv bnJlbGlkID0gJ3NhbGVzX2FwcjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5h bWU7OworCistLSBFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJzYWxlc19tYXIyMDIy 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 aXRpb24gZG9lcyBub3QgaGF2ZQorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJU SVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxV RVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgTlVMTCksCisgICBQQVJU SVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1Zs YWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElO ICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworCistLSBFUlJPUjogIG5ldyBwYXJ0 aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBoYXZlIHRoaXMgdmFsdWUgYmVjYXVzZSBzcGxp dCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2ZQorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJ VCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZP UiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ01lbGJvdXJu ZScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycs ICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwg Rk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKKworLS0gRVJS T1I6ICBuZXcgcGFydGl0aW9uIGNhbm5vdCBiZSBERUZBVUxUIGJlY2F1c2UgREVGQVVMVCBw YXJ0aXRpb24gYWxyZWFkeSBleGlzdHMKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1Ig VkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdNZWxib3VybmUn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAn RGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZP UiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOworCitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CisK Ky0tCistLSBUZXN0OiB0d28gc3BlY2lmaWMgZXJyb3JzIGZvciBCWSBMSVNUIHBhcnRpdGlv bmluZzoKKy0tICAgKiBuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSBOVUxMIHZhbHVlLCB3 aGljaCBzcGxpdCBwYXJ0aXRpb24gaGFzLgorLS0gICAqIG5ldyBwYXJ0aXRpb25zIGRvIG5v dCBoYXZlIGEgdmFsdWUgdGhhdCBzcGxpdCBwYXJ0aXRpb24gaGFzLgorLS0KK0NSRUFURSBU QUJMRSBzYWxlc19saXN0Cisoc2FsZXNwZXJzb25faWQgSU5ULAorIHNhbGVzcGVyc29uX25h bWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1v dW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNf c3RhdGUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNf bGlzdCBGT1IgVkFMVUVTIElOICgnSGVsc2lua2knLCAnU3QuIFBldGVyc2J1cmcnLCAnT3Ns bycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBG T1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQn LCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJywg TlVMTCk7CisKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgdmFsdWUg TlVMTCBidXQgc3BsaXQgcGFydGl0aW9uIGRvZXMKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3Qg U1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2Vz dCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAg UEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScs ICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVF UyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKKworLS0gRVJST1I6ICBuZXcg cGFydGl0aW9ucyBkbyBub3QgaGF2ZSB2YWx1ZSAnS3lpdicgYnV0IHNwbGl0IHBhcnRpdGlv biBkb2VzCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19h bGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2Jv bicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZP UiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBB UlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGlu JywgTlVMTCkpOworCistLSBFUlJPUiAgREVGQVVMVCBwYXJ0aXRpb24gc2hvdWxkIGJlIG9u ZQorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAn TmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFM VUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJ T04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdL eWl2JyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQsCisgICBQQVJUSVRJ T04gc2FsZXNfb3RoZXJzMiBERUZBVUxUKTsKKworRFJPUCBUQUJMRSBzYWxlc19saXN0Owor CistLQorLS0gVGVzdDogQlkgTElTVCBwYXJ0aXRpb25pbmcsIFNQTElUIFBBUlRJVElPTiB3 aXRoIGRhdGEKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lk IFNFUklBTCwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRl IFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQor UEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKKworQ1JFQVRFIElOREVYIHNhbGVz X2xpc3Rfc2FsZXNwZXJzb25fbmFtZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAo c2FsZXNwZXJzb25fbmFtZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc19zdGF0 ZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNfc3RhdGUpOworCitDUkVB VEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVT IElOICgnSGVsc2lua2knLCAnU3QuIFBldGVyc2J1cmcnLCAnT3NsbycpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgn V2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0Jl cmxpbicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CisKK0lOU0VS VCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxl c19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUworICAoJ1RydW1wJywgICAgJ0JlamluZycs ICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKSwKKyAgKCdTbWlybm9mZicsICdOZXcgWW9y aycsICAgICAgICA1MDAsICcyMDIyLTAzLTAzJyksCisgICgnRm9yZCcsICAgICAnU3QuIFBl dGVyc2J1cmcnLCAyMDAwLCAnMjAyMi0wMy0wNScpLAorICAoJ0l2YW5vdicsICAgJ1dhcnNh dycsICAgICAgICAgIDc1MCwgJzIwMjItMDMtMDQnKSwKKyAgKCdEZWV2JywgICAgICdMaXNi b24nLCAgICAgICAgICAyNTAsICcyMDIyLTAzLTA3JyksCisgICgnUG9pcm90JywgICAnQmVy bGluJywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpLAorICAoJ01heScsICAgICAgJ09z bG8nLCAgICAgICAgICAgMTIwMCwgJzIwMjItMDMtMDYnKSwKKyAgKCdMaScsICAgICAgICdW bGFkaXZvc3RvaycsICAgIDExNTAsICcyMDIyLTAzLTA5JyksCisgICgnTWF5JywgICAgICAn T3NsbycsICAgICAgICAgICAxMjAwLCAnMjAyMi0wMy0xMScpLAorICAoJ0hhbGRlcicsICAg J0hlbHNpbmtpJywgICAgICAgIDgwMCwgJzIwMjItMDMtMDInKSwKKyAgKCdNdWxsZXInLCAg ICdNYWRyaWQnLCAgICAgICAgICA2NTAsICcyMDIyLTAzLTA1JyksCisgICgnU21pdGgnLCAg ICAnS3lpdicsICAgICAgICAgICAgMzUwLCAnMjAyMi0wMy0xMCcpLAorICAoJ0dhbmRpJywg ICAgJ1dhcnNhdycsICAgICAgICAgIDE1MCwgJzIwMjItMDMtMDgnKSwKKyAgKCdQbGF0bycs ICAgICdMaXNib24nLCAgICAgICAgICA5NTAsICcyMDIyLTAzLTA1Jyk7CisKK0FMVEVSIFRB QkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywg J01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0Jl amluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2Nl bnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKKwor U0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2xpc3QgT1JERVIgQlkg dGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsK KworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzIGFmdGVyIHNwbGl0dGlu ZyBwYXJ0aXRpb24KK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKKworRVhQTEFJTiAoQ09T VFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2NlbnRyYWwgV0hFUkUgc2FsZXNfc3RhdGUg PSAnV2Fyc2F3JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfY2VudHJhbCBXSEVSRSBzYWxlc19z dGF0ZSA9ICdXYXJzYXcnOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNh bGVzX2xpc3QgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK1NFTEVDVCAqIEZST00g c2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworRVhQTEFJTiAoQ09T VFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNwZXJzb25fbmFt ZSA9ICdJdmFub3YnOworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzcGVy c29uX25hbWUgPSAnSXZhbm92JzsKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKK0RST1Ag VEFCTEUgc2FsZXNfbGlzdDsKKworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIHNwbGl0IERF RkFVTFQgcGFydGl0aW9uIHRvIHBhcnRpdGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBib3Vu ZHM7CistLSAgICogcmFuZG9tIG9yZGVyIG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFSVElU SU9OIGNvbW1hbmQuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNv bl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJ TlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsK K0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERF RkFVTFQ7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXkn LCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAg JzIwMjItMDItMDknKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcp LAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0Rl ZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAs ICAnMjAyMi0wMi0wNycpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4 JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAn TXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1 MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQt MDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMs ICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAg NTEwLCAgJzIwMjItMDUtMDQnKTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfb3RoZXJz IERFRkFVTFQsCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19qYW4yMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScp IFRPICgnMjAyMi0wMS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2Fk ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisg ICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVn Y2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6 OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworCitEUk9QIFRBQkxFIHNhbGVz X3JhbmdlOworCistLQorLS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgbm9uLURFRkFVTFQg cGFydGl0aW9uIHRvIHBhcnRpdGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHM7Cist LSAgICogcmFuZG9tIG9yZGVyIG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFSVElUSU9OIGNv bW1hbmQuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJ TlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNh bGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEt MzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0wOScpLAorICAoMywg ICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAg NzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0w NC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3JyksCisgICg3 LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24n LCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIy LTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAg KDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycs ICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIw MjItMDEtMDknKTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19qYW4yMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w MS0wMScpIFRPICgnMjAyMi0wMS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJf MWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEw JyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19vdGhlcnMgREVGQVVMVCk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJP TSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFU RSAiQyIsIHNhbGVzcGVyc29uX2lkOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCist LQorLS0gVGVzdCBmb3Igc3BsaXQgbm9uLURFRkFVTFQgcGFydGl0aW9uIHRvIERFRkFVTFQg cGFydGl0aW9uICsgcGFydGl0aW9ucworLS0gd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHMu CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNh bGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgy LCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAg ICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIy LTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAg KDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAg ICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIw MjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAor ICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1w JywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAn MjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7 CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsK KworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVS IEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25f aWQ7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBUcnkgdG8gU1BMSVQg cGFydGl0aW9uIG9mIGFub3RoZXIgdGFibGUuCistLQorQ1JFQVRFIFRBQkxFIHQxKGkgaW50 LCB0IHRleHQpIFBBUlRJVElPTiBCWSBMSVNUICh0KTsKK0NSRUFURSBUQUJMRSB0MXBhIFBB UlRJVElPTiBPRiB0MSBGT1IgVkFMVUVTIElOICgnQScpOworQ1JFQVRFIFRBQkxFIHQyIChp IGludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UgKHQpOworCistLSBFUlJPUjogIHJl bGF0aW9uICJ0MXBhIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgorQUxU RVIgVEFCTEUgdDIgU1BMSVQgUEFSVElUSU9OIHQxcGEgSU5UTworICAgKFBBUlRJVElPTiB0 MmEgRk9SIFZBTFVFUyBGUk9NICgnQScpIFRPICgnQicpLAorICAgIFBBUlRJVElPTiB0MmIg Rk9SIFZBTFVFUyBGUk9NICgnQicpIFRPICgnQycpKTsKKworRFJPUCBUQUJMRSB0MjsKK0RS T1AgVEFCTEUgdDE7CisKKy0tCistLSBUcnkgdG8gU1BMSVQgcGFydGl0aW9uIG9mIHRlbXBv cmFyeSB0YWJsZS4KKy0tCitDUkVBVEUgVEVNUCBUQUJMRSB0IChpIGludCkgUEFSVElUSU9O IEJZIFJBTkdFIChpKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0Yg dCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKKworU0VMRUNUIGMub2lkOjpwZ19jYXRh bG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBj Lm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMs IHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQg QU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9n LnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lk OjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKKy0tIEVSUk9SOiAg Y2Fubm90IGNyZWF0ZSBhIHBlcm1hbmVudCByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgdGVt cG9yYXJ5IHJlbGF0aW9uICJ0IgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBf MF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsK KworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJ VElPTiBwZ190ZW1wLnRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBB UlRJVElPTiBwZ190ZW1wLnRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CisK Ky0tIFBhcnRpdGlvbnMgc2hvdWxkIGJlIHRlbXBvcmFyeS4KK1NFTEVDVCBjLm9pZDo6cGdf Y2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3Vu ZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFz cyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJl bGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0 YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBj Lm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworCitEUk9QIFRB QkxFIHQ7CisKKy0tIENoZWNrIHRoZSBuZXcgcGFydGl0aW9ucyBpbmhlcml0IHBhcmVudCdz IHRhYmxlc3BhY2UKK0NSRUFURSBUQUJMRSB0IChpIGludCBQUklNQVJZIEtFWSBVU0lORyBJ TkRFWCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpCisgIFBBUlRJVElPTiBCWSBSQU5H RSAoaSkgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworQ1JFQVRFIFRBQkxFIHRwXzBf MiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRB QkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8x IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitTRUxFQ1QgdGFibGVuYW1lLCB0YWJsZXNwYWNl IEZST00gcGdfdGFibGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8xJywg J3RwXzFfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnCisg IE9SREVSIEJZIHRhYmxlbmFtZSwgdGFibGVzcGFjZTsKK1NFTEVDVCB0YWJsZW5hbWUsIGlu ZGV4bmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX2luZGV4ZXMKKyAgV0hFUkUgdGFibGVuYW1l IElOICgndCcsICd0cF8wXzEnLCAndHBfMV8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0 aW9uX3NwbGl0X3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRh Ymxlc3BhY2U7CitEUk9QIFRBQkxFIHQ7CisKKy0tIENoZWNrIG5ldyBwYXJ0aXRpb25zIGlu aGVyaXRzIHBhcmVudCdzIHRhYmxlIGFjY2VzcyBtZXRob2QKK0NSRUFURSBBQ0NFU1MgTUVU SE9EIHBhcnRpdGlvbl9zcGxpdF9oZWFwIFRZUEUgVEFCTEUgSEFORExFUiBoZWFwX3RhYmxl YW1faGFuZGxlcjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdF IChpKSBVU0lORyBwYXJ0aXRpb25fc3BsaXRfaGVhcDsKK0NSRUFURSBUQUJMRSB0cF8wXzIg UEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJM RSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBG T1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMikpOworU0VMRUNUIGMucmVsbmFtZSwgYS5hbW5hbWUKK0ZS T00gcGdfY2xhc3MgYyBKT0lOIHBnX2FtIGEgT04gYy5yZWxhbSA9IGEub2lkCitXSEVSRSBj Lm9pZCBJTiAoJ3QnOjpyZWdjbGFzcywgJ3RwXzBfMSc6OnJlZ2NsYXNzLCAndHBfMV8yJzo6 cmVnY2xhc3MpCitPUkRFUiBCWSBjLnJlbG5hbWU7CitEUk9QIFRBQkxFIHQ7CitEUk9QIEFD Q0VTUyBNRVRIT0QgcGFydGl0aW9uX3NwbGl0X2hlYXA7CisKKy0tIFRlc3QgcGVybWlzc2lv biBjaGVja3MuICBUaGUgdXNlciBuZWVkcyB0byBvd24gdGhlIHBhcmVudCB0YWJsZSBhbmQg dGhlCistLSB0aGUgcGFydGl0aW9uIHRvIHNwbGl0IHRvIGRvIHRoZSBzcGxpdC4KK0NSRUFU RSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFJPTEUgcmVn cmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworR1JB TlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFy dGl0aW9uX3NwbGl0X2JvYjsKKworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNz X3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElU SU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CisKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJ T04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworQUxURVIgVEFCTEUgdCBTUExJVCBQ QVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAo MSkgVE8gKDIpKTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworQUxURVIgVEFC TEUgdCBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitTRVQgU0VTU0lP TiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRB QkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8x IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047 CisKK0FMVEVSIFRBQkxFIHRwXzBfMiBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxp dF9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3Nw bGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisg IChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFS VElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitSRVNFVCBTRVNT SU9OIEFVVEhPUklaQVRJT047CisKK0RST1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NI RU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxp dF9hbGljZTsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEg RlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitEUk9QIFJPTEUgcmVncmVzc19w YXJ0aXRpb25fc3BsaXRfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYm9iOworCistLSBTcGxpdCBwYXJ0aXRpb24gb2YgYSB0ZW1wb3JhcnkgdGFibGUgd2hl biBvbmUgb2YgdGhlIHBhcnRpdGlvbnMgYWZ0ZXIKKy0tIHNwbGl0IGhhcyB0aGUgc2FtZSBu YW1lIGFzIHRoZSBwYXJ0aXRpb24gYmVpbmcgc3BsaXQKK0NSRUFURSBURU1QIFRBQkxFIHQg KGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGEpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBf MCBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRB QkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzAgSU5UTworICAoUEFSVElUSU9OIHBnX3RlbXAu dHBfMCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiBwZ190ZW1w LnRwXzEgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworRFJPUCBUQUJMRSB0OworCist LSBDaGVjayBkZWZhdWx0cyBhbmQgY29uc3RyYWludHMgb2YgbmV3IHBhcnRpdGlvbnMKK0NS RUFURSBUQUJMRSB0X2JpZ2ludCAoCisgIGIgYmlnaW50LAorICBpIGludCBERUZBVUxUICgz KzEwKSwKKyAgaiBpbnQgREVGQVVMVCAxMDEsCisgIGsgaW50IEdFTkVSQVRFRCBBTFdBWVMg QVMgKGIrMTApIFNUT1JFRAorKQorUEFSVElUSU9OIEJZIFJBTkdFIChiKTsKK0NSRUFURSBU QUJMRSB0X2JpZ2ludF9kZWZhdWx0IFBBUlRJVElPTiBPRiB0X2JpZ2ludCBERUZBVUxUOwor LS0gU2hvdyBkZWZhdWx0cy9jb25zdHJhaW50cyBiZWZvcmUgU1BMSVQgUEFSVElUSU9OCitc ZCsgdF9iaWdpbnQKK1xkKyB0X2JpZ2ludF9kZWZhdWx0CitBTFRFUiBUQUJMRSB0X2JpZ2lu dCBTUExJVCBQQVJUSVRJT04gdF9iaWdpbnRfZGVmYXVsdCBJTlRPCisgIChQQVJUSVRJT04g dF9iaWdpbnRfMDFfMTAgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTApLAorICAgUEFSVElU SU9OIHRfYmlnaW50X2RlZmF1bHQgREVGQVVMVCk7CistLSBTaG93IGRlZmF1bHRzL2NvbnN0 cmFpbnRzIGFmdGVyIFNQTElUIFBBUlRJVElPTgorXGQrIHRfYmlnaW50X2RlZmF1bHQKK1xk KyB0X2JpZ2ludF8wMV8xMAorRFJPUCBUQUJMRSB0X2JpZ2ludDsKKworCistLSBUZXN0OiBv d25lciBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgYmUgdGhlIHNhbWUgYXMgb3duZXIgb2Yg c3BsaXQgcGFydGl0aW9uCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9h bGljZTsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBUTyBy ZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKKworQ1JFQVRFIFRBQkxFIHQgKGkgaW50 KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9O IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFRBQkxFIHRwXzBfMihp IGludCk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVSIFRBQkxFIHQg QVRUQUNIIFBBUlRJVElPTiB0cF8wXzIgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CisK Ky0tIE93bmVyIGlzICdyZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitcZHQgdHBf MF8yCisKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQ QVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElU SU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CisKKy0tIE93bmVyIHNo b3VsZCBiZSAncmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UnOgorXGR0IHRwXzBfMQor XGR0IHRwXzFfMgorCitEUk9QIFRBQkxFIHQ7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7 CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CisKKworLS0gVGVz dDogaW5kZXggb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGJlIGNyZWF0ZWQgd2l0aCBzYW1l IG93bmVyIGFzIHNwbGl0CistLSBwYXJ0aXRpb24KK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFy dGl0aW9uX3NwbGl0X2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworCitTRVQgU0VT U0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JF QVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRB QkxFIHRwXzEwXzIwIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgy MCk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMTEpLCAoMTYpOworQ1JFQVRFIE9SIFJFUExB Q0UgRlVOQ1RJT04gcnVuX21lKGludGVnZXIpIFJFVFVSTlMgaW50ZWdlciBBUyAkJAorQkVH SU4KKyAgUkFJU0UgTk9USUNFICd5b3UgYXJlIHJ1bm5pbmcgbWUgYXMgJScsIENVUlJFTlRf VVNFUjsKKyAgUkVUVVJOICQxOworRU5ECiskJCBMQU5HVUFHRSBQTFBHU1FMIElNTVVUQUJM RTsKKworLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK0NS RUFURSBJTkRFWCBPTiB0IChydW5fbWUoaSkpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFU SU9OOworCistLSBPd25lciBzaG91bGQgYmUgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2Fs aWNlJzoKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzEwXzIwIElOVE8KKyAg KFBBUlRJVElPTiB0cF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorICAg UEFSVElUSU9OIHRwXzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworCitE Uk9QIFRBQkxFIHQ7CitEUk9QIEZVTkNUSU9OIHJ1bl9tZShpbnRlZ2VyKTsKKworUkVWT0tF IEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFy dGl0aW9uX3NwbGl0X2FsaWNlOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0 X2FsaWNlOworCistLSBUZXN0IGZvciBoYXNoIHBhcnRpdGlvbmVkIHRhYmxlCitDUkVBVEUg VEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBIQVNIKGkpOworQ1JFQVRFIFRBQkxFIHRw MSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVS IDApOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEgg KE1PRFVMVVMgMiwgUkVNQUlOREVSIDEpOworCistLSBFUlJPUjogIHBhcnRpdGlvbiBvZiBo YXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBzcGxpdAorQUxURVIgVEFCTEUgdCBT UExJVCBQQVJUSVRJT04gdHAxIElOVE8KKyAgKFBBUlRJVElPTiB0cDFfMSBGT1IgVkFMVUVT IFdJVEggKE1PRFVMVVMgNCwgUkVNQUlOREVSIDApLAorICAgUEFSVElUSU9OIHRwMV8yIEZP UiBWQUxVRVMgV0lUSCAoTU9EVUxVUyA0LCBSRU1BSU5ERVIgMikpOworCistLSBFUlJPUjog IGxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIHBh cnRpdGlvbnMKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwMSBJTlRPCisgIChQ QVJUSVRJT04gdHAxXzEgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDQsIFJFTUFJTkRFUiAw KSk7CisKK0RST1AgVEFCTEUgdDsKKworCistLSBBZGRpdGlvbmFsIHRlc3RzIGZvciBlcnJv ciBtZXNzYWdlcworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBp bnQsIHNhbGVzcGVyc29uX25hbWUgdmFyY2hhcigzMCksIHNhbGVzX2Ftb3VudCBpbnQsIHNh bGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CisKKy0tIEVS Uk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBpcyBub3Qg ZXF1YWwgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDYtMDEnKSk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKworLS0g VGVzdCBmb3Igc3BsaXQgcGFydGl0aW9uIHByb3BlcnRpZXM6CistLSAqIFNUQVRJU1RJQ1Mg aXMgZW1wdHkKKy0tICogQ09NTUVOVCBpcyBlbXB0eQorLS0gKiBERUZBVUxUUyBhcmUgdGhl IHNhbWUgYXMgREVGQVVMVFMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIFNUT1JBR0Ug aXMgdGhlIHNhbWUgYXMgU1RPUkFHRSBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogR0VO RVJBVEVEIGFuZCBDT05TVFJBSU5UUyBhcmUgdGhlIHNhbWUgYXMgR0VORVJBVEVEIGFuZCBD T05TVFJBSU5UUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogVFJJR0dFUlMgYXJlIHRo ZSBzYW1lIGFzIFRSSUdHRVJTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorCitDUkVBVEUgVEFC TEUgdAorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIEVYVEVOREVEIENPTVBS RVNTSU9OIHBnbHogREVGQVVMVCAnZGVmYXVsdF90JywKKyBiIGJpZ2ludCwKKyBkIGRhdGUg R0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDEtMDEnKSBTVE9SRUQpIFBBUlRJVElPTiBC WSBSQU5HRSAoYWJzKGkpKTsKK0NPTU1FTlQgT04gQ09MVU1OIHQuaSBJUyAndDEuaSc7CisK K0NSRUFURSBUQUJMRSB0cF94CisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0Ug TUFJTiBERUZBVUxUICdkZWZhdWx0X3RwX3gnLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5F UkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMi0wMicpIFNUT1JFRCk7CitBTFRFUiBUQUJMRSB0 IEFUVEFDSCBQQVJUSVRJT04gdHBfeCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0NP TU1FTlQgT04gQ09MVU1OIHRwX3guaSBJUyAndHBfeC5pJzsKKworQ1JFQVRFIFNUQVRJU1RJ Q1MgdF9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0OworQ1JFQVRFIFNUQVRJ U1RJQ1MgdHBfeF9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0cF94OworCitB TFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjayBDSEVDSyAoYiA+IDApOwor QUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2sxIENIRUNLIChiID4gMCkg Tk9UIEVORk9SQ0VEOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2sy IENIRUNLIChiID4gMCkgTk9UIFZBTElEOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlO VCB0X2Jfbm4gTk9UIE5VTEwgYiBOT1QgVkFMSUQ7CisKK0lOU0VSVCBJTlRPIHRwX3goaSwg dCwgYikgVkFMVUVTKDAsIERFRkFVTFQsIDEpOworSU5TRVJUIElOVE8gdHBfeChpLCB0LCBi KSBWQUxVRVMoMSwgREVGQVVMVCwgMik7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9O IHRyaWdnZXJfZnVuY3Rpb24oKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwn IEFTCiskQk9EWSQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6 IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwg VEdfV0hFTiwgVEdfTEVWRUw7CisgIFJFVFVSTiBuZXc7CitFTkQ7CiskQk9EWSQ7CisKK0NS RUFURSBUUklHR0VSIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJU IE9OIHQgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rp b24oJ3QnKTsKK0NSRUFURSBUUklHR0VSIHRwX3hfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dl ciBCRUZPUkUgSU5TRVJUIE9OIHRwX3ggRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VE VVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3RwX3gnKTsKKworXGQrIHRwX3gKK0FMVEVSIFRBQkxF IHQgU1BMSVQgUEFSVElUSU9OIHRwX3ggSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF94IEZPUiBWQUxVRVMg RlJPTSAoMSkgVE8gKDIpKTsKK1xkKyB0cF94CisKK0lOU0VSVCBJTlRPIHQoaSwgdCwgYikg VkFMVUVTKDEsIERFRkFVTFQsIDMpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBG Uk9NIHQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBi OworRFJPUCBUQUJMRSB0OworRFJPUCBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCk7CisK KworLS0gVGVzdCBmb3IgcmVjb21wdXRhdGlvbiBvZiBzdG9yZWQgZ2VuZXJhdGVkIGNvbHVt bnMuCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQsIHRhYl9pZCBpbnQgZ2VuZXJhdGVkIGFsd2F5 cyBhcyAodGFibGVvaWQpIHN0b3JlZCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFU RSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo Mik7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIGNjIENIRUNLKHRhYmxlb2lkIDw+ IDEyMzQ1Njc4OSk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCksICgxKTsKKworLS0gU2hv dWxkIGJlIDEgYmVjYXVzZSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0w IGlzIHRoZSBzYW1lIGFzCistLSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGgg aT0xLgorU0VMRUNUIGNvdW50KCopIEZST00gdCBXSEVSRSBpID0gMCBBTkQgdGFiX2lkIElO IChTRUxFQ1QgdGFiX2lkIEZST00gdCBXSEVSRSBpID0gMSk7CisKKy0tICJ0YWJfaWQiIGNv bHVtbiAoc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW4pIHdpdGggInRhYmxlb2lkIiBhdHRyaWJ1 dGUgcmVxdWlyZXMKKy0tIHJlY29tcHV0YXRpb24gaGVyZS4KK0FMVEVSIFRBQkxFIHQgU1BM SVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgyKSk7CisKKy0tIFNob3VsZCBiZSAwIGJlY2F1c2UgcGFydGl0aW9uIGlk ZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MCBpcyBkaWZmZXJlbnQgZnJvbQorLS0gcGFydGl0 aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9N IHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hF UkUgaSA9IDEpOworCitEUk9QIFRBQkxFIHQ7CisKKworUkVTRVQgc2VhcmNoX3BhdGg7CisK Ky0tCitEUk9QIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hOworRFJPUCBTQ0hFTUEg cGFydGl0aW9uX3NwbGl0X3NjaGVtYTI7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0Cmlu ZGV4IGExM2U4MTYyODkuLjEyYmZhMzBjNmMgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CkBAIC0yNzc3LDYgKzI3NzcsNyBAQCBTaW1wbGVTdGF0cwogU2ltcGxlU3RyaW5nTGlz dAogU2ltcGxlU3RyaW5nTGlzdENlbGwKIFNpbmdsZUJvdW5kU29ydEl0ZW0KK1NpbmdsZVBh cnRpdGlvblNwZWMKIFNpemUKIFNraXBQYWdlcwogU2tpcFN1cHBvcnQKQEAgLTI4NDMsNiAr Mjg0NCw3IEBAIFNwZWNpYWxKb2luSW5mbwogU3BpbkRlbGF5U3RhdHVzCiBTcGxpdEludGVy dmFsCiBTcGxpdExSCitTcGxpdFBhcnRpdGlvbkNvbnRleHQKIFNwbGl0UGFnZUxheW91dAog U3BsaXRQb2ludAogU3BsaXRUZXh0T3V0cHV0RGF0YQotLSAKMi40MC4xLndpbmRvd3MuMQoK --------------46ilqFKLxIprY4q8cZx7OwR2--