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 1uRGFa-009Hx4-Li for pgsql-hackers@arkaria.postgresql.org; Mon, 16 Jun 2025 20:16:16 +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 1uRGFW-003Hc7-Gi for pgsql-hackers@arkaria.postgresql.org; Mon, 16 Jun 2025 20:16:11 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uRGFH-003HaX-SD for pgsql-hackers@lists.postgresql.org; Mon, 16 Jun 2025 20:16:10 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by makus.postgresql.org with smtp (Exim 4.96) (envelope-from ) id 1uRGF8-002NEg-1J for pgsql-hackers@lists.postgresql.org; Mon, 16 Jun 2025 20:15:54 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1750104941; bh=yHl6JTKubw69FJIvWVPOE49McfNSmiNibEQfNBL89Zw=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=nTNeXoWB2gn5ugKtiZJkRvrdB8iR3lckA8KOr/KRxHEY2/8bUTx2xyQj/RzIhTLVI xKG0H0tGH3DHyT/5v7M/QcnIItIii1t2NxcLEANgljcEgWBDJl4XXCP2I/15iOd07p urf/9JtIVxmg3ZB+6MsRhCdSDOnwrpJFNnhJpKmS9Z/ei01Psl18Vl7tKovf34b4Kg kuQlM3o9Zzm1GGq5vUhVJl5vOe3+OU2waXbXdgVF5fw9rzAbSvCLq2+5DBu/UqD5aW 4ZJGqCLQQ5a1GHzV4XQE5UCGszK4E8Jk+iufRpMvITKifQPb6pr3pclY7CF1i+AL5s FSbpvK7xhoZPA== Received: from [172.30.49.246] (unknown [93.174.131.138]) (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 0C336602C1; Mon, 16 Jun 2025 23:15:41 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------04N98BahQW86g58HMvx9dDj9" Message-ID: <0b3907b4-83b9-4873-9feb-2b60b29cda33@postgrespro.ru> Date: Mon, 16 Jun 2025 23:15:41 +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> <67ecf5fb-e63d-4284-be75-d0479eef81aa@postgrespro.ru> <884bcf9e-d6e3-4b0c-8dcb-7f2110070ac9@postgrespro.ru> <1e74c9fd-830e-4544-b0de-e49ea4b04029@postgrespro.ru> <9c1b75f1-5c40-4a86-9a61-a4b3f1d7ec60@postgrespro.ru> <7e1c67b8-ceba-4a04-964a-853eedeb02cc@postgrespro.ru> Content-Language: en-US From: Dmitry Koval In-Reply-To: X-KSMG-AntiPhishing: NotDetected, bases: 2025/06/16 19:09: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/06/16 15:29:00 #27571504 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. --------------04N98BahQW86g58HMvx9dDj9 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi! 1. >function name checkPartition is not ideal, maybe we can change it to >CheckPartitionForMerge or MergePartitionCheck. I agree that this name is not ideal. But the "checkPartition" function is used for both MERGE/SPLIT commands, so the word 'Merge' in the prefix or suffix of the function name would not be correct ... May be "checkPartitionForModification" or something like that? >The attached patch refactors transformPartitionCmdForMerge and >ATExecMergePartitions based on the idea of acquiring >AccessExclusiveLock on the to be merged partitions during >transformPartitionCmdForMerge Thanks, applied. 2. >we need to expand the virtual generated column here, >otherwise, bms_is_member would be not correct. >... >attach minor diff fix this problem. Added patch and a bit modified test. -- With best regards, Dmitry Koval Postgres Professional: http://postgrespro.com --------------04N98BahQW86g58HMvx9dDj9 Content-Type: text/plain; charset=UTF-8; name="v46-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.patch" Content-Disposition: attachment; filename*0="v46-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAxYjI5MGUwNjUzOWY1NzY4OTYyYzQ0NTc2MDViMjQxOTdkMGVjZjUwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU3OjIyICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NDYgMS8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIE1FUkdF 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 cl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDEwNCArLQogc3JjL2JhY2tlbmQvY2F0YWxv Zy9kZXBlbmRlbmN5LmMgICAgICAgICAgICAgIHwgICA1MCArCiBzcmMvYmFja2VuZC9jYXRh bG9nL2hlYXAuYyAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBzcmMvYmFja2VuZC9j YXRhbG9nL3BnX2NvbnN0cmFpbnQuYyAgICAgICAgICAgfCAgICAyICstCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgOTA2ICsrKysrKysrKysr LQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgICAy MiArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwg IDE0OCArKwogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyAgICAgICAg IHwgIDE5OSArKy0KIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAg ICAgICB8ICAgMTAgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggICAgICAg ICAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaCAgICAgICAgICAg ICAgICAgICAgfCAgICAzICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAg ICAgICAgICAgICB8ICAgIDUgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAg ICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRi b3VuZHMuaCAgICAgICAgIHwgICAgNiArCiAuLi4vaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRp dGlvbi1tZXJnZS5vdXQgICAgfCAgMTk5ICsrKwogc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xh dGlvbl9zY2hlZHVsZSAgICAgICAgIHwgICAgMSArCiBzcmMvdGVzdC9pc29sYXRpb24vc3Bl Y3MvcGFydGl0aW9uLW1lcmdlLnNwZWMgfCAgIDU0ICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNl L3Rlc3RfZGRsX2RlcGFyc2UuYyAgICAgICB8ICAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0IHwgMTIzNCArKysrKysrKysrKysrKysrKwog c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAgMiAr LQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbCAgICAgIHwgIDgx NiArKysrKysrKysrKwogMjIgZmlsZXMgY2hhbmdlZCwgMzc2MSBpbnNlcnRpb25zKCspLCAy OSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24v ZXhwZWN0ZWQvcGFydGl0aW9uLW1lcmdlLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tbWVyZ2Uuc3BlYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJn ZS5zcWwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvZGRsLnNnbWwKaW5kZXggOTY5MzZiY2QzYS4uNjJjMmJiNTRlYSAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL2RkbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbApAQCAt NDQ0MCw2ICs0NDQwLDI1IEBAIEFMVEVSIFRBQkxFIG1lYXN1cmVtZW50X3kyMDA2bTAyIEFE RCBVTklRVUUgKGNpdHlfaWQsIGxvZ2RhdGUpOwogQUxURVIgSU5ERVggbWVhc3VyZW1lbnRf Y2l0eV9pZF9sb2dkYXRlX2tleQogICAgIEFUVEFDSCBQQVJUSVRJT04gbWVhc3VyZW1lbnRf eTIwMDZtMDJfY2l0eV9pZF9sb2dkYXRlX2tleTsKIC4uLgorPC9wcm9ncmFtbGlzdGluZz4K KyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlcmUgaXMgYWxzbyBhbiBvcHRp b24gZm9yIG1lcmdpbmcgbXVsdGlwbGUgdGFibGUgcGFydGl0aW9ucyBpbnRvCisgICAgIGEg c2luZ2xlIHBhcnRpdGlvbiB1c2luZyB0aGUKKyAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWFs dGVydGFibGUtbWVyZ2UtcGFydGl0aW9ucyI+PGNvbW1hbmQ+QUxURVIgVEFCTEUgLi4uIE1F UkdFIFBBUlRJVElPTlM8L2NvbW1hbmQ+PC9saW5rPi4KKyAgICAgVGhpcyBmZWF0dXJlIHNp bXBsaWZpZXMgdGhlIG1hbmFnZW1lbnQgb2YgcGFydGl0aW9uZWQgdGFibGVzIGJ5IGFsbG93 aW5nCisgICAgIHVzZXJzIHRvIGNvbWJpbmUgcGFydGl0aW9ucyB0aGF0IGFyZSBubyBsb25n ZXIgbmVlZGVkIGFzCisgICAgIHNlcGFyYXRlIGVudGl0aWVzLiAgSXQncyBpbXBvcnRhbnQg dG8gbm90ZSB0aGF0IHRoaXMgb3BlcmF0aW9uIGlzIG5vdAorICAgICBzdXBwb3J0ZWQgZm9y IGhhc2gtcGFydGl0aW9uZWQgdGFibGVzIGFuZCBhY3F1aXJlcyBhbgorICAgICA8bGl0ZXJh bD5BQ0NFU1MgRVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrLCB3aGljaCBjb3VsZCBpbXBhY3Qg aGlnaC1sb2FkCisgICAgIHN5c3RlbXMgZHVlIHRvIHRoZSBsb2NrJ3MgcmVzdHJpY3RpdmUg bmF0dXJlLiAgRm9yIGV4YW1wbGUsIHdlIGNhbgorICAgICBtZXJnZSB0aHJlZSBtb250aGx5 IHBhcnRpdGlvbnMgaW50byBvbmUgcXVhcnRlciBwYXJ0aXRpb246Cis8cHJvZ3JhbWxpc3Rp bmc+CitBTFRFUiBUQUJMRSBtZWFzdXJlbWVudAorICAgIE1FUkdFIFBBUlRJVElPTlMgKG1l YXN1cmVtZW50X3kyMDA2bTAxLAorICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVtZW50 X3kyMDA2bTAyLAorICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVtZW50X3kyMDA2bTAz KSBJTlRPIG1lYXN1cmVtZW50X3kyMDA2cTE7CiA8L3Byb2dyYW1saXN0aW5nPgogICAgIDwv cGFyYT4KICAgIDwvc2VjdDM+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVy X3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKaW5kZXgg ZDYzZjNhNjIxYS4uZTUwM2EwNjAyOCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9h bHRlcl90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dt bApAQCAtMzcsNiArMzcsOSBAQCBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBBVFRBQ0gg UEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFt ZTwvcmVwbGFjZWFibGU+IHsgRk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfQog QUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgREVUQUNIIFBBUlRJVElPTiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBbIENP TkNVUlJFTlRMWSB8IEZJTkFMSVpFIF0KK0FMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgorICAgIE1F UkdFIFBBUlRJVElPTlMgKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRp b25fbmFtZTE8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0pCisgICAgICAgIElOVE8g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNl YWJsZT4KIAogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ YWN0aW9uPC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCkBAIC0xMTQ3LDE0 ICsxMTUwLDEwMSBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgIDwvbGlzdGl0 ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWFs dGVydGFibGUtbWVyZ2UtcGFydGl0aW9ucyI+CisgICAgPHRlcm0+PGxpdGVyYWw+TUVSR0Ug UEFSVElUSU9OUyAoPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lMTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy dGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXSkgSU5UTyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJh bD48L3Rlcm0+CisKKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBm b3JtIG1lcmdlcyBzZXZlcmFsIHBhcnRpdGlvbnMgb2YgdGhlIHRhcmdldCB0YWJsZSBpbnRv IGEgbmV3IHBhcnRpdGlvbi4KKyAgICAgIEhhc2gtcGFydGl0aW9uZWQgdGFyZ2V0IHRhYmxl IGlzIG5vdCBzdXBwb3J0ZWQuCisgICAgICBJZiA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFs PiBwYXJ0aXRpb24gaXMgbm90IGluIHRoZQorICAgICAgbGlzdCBvZiBwYXJ0aXRpb25zIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2Vh YmxlPiwKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f bmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dOgorICAgICAgPGl0ZW1pemVkbGlzdD4KKyAg ICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgRm9yIHJhbmdlLXBh cnRpdGlvbmVkIHRhYmxlcywgdGhlIHJhbmdlcyBvZiB0aGUgcGFydGl0aW9ucworICAgICAg ICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVw bGFjZWFibGU+LAorICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+LCBbLi4uXQorICAgICAgICAgbXVzdCBiZSBh ZGphY2VudCBpbiBvcmRlciB0byBiZSBtZXJnZWQuIE90aGVyd2lzZSwgYW4gZXJyb3Igd2ls bCBiZQorICAgICAgICAgcmFpc2VkLiBUaGUgcmVzdWx0aW5nIGNvbWJpbmVkIHJhbmdlIHdp bGwgYmUgdGhlIG5ldyBwYXJ0aXRpb24gYm91bmQKKyAgICAgICAgIGZvciB0aGUgcGFydGl0 aW9uIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVw bGFjZWFibGU+LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgRm9yIGxpc3QtcGFydGl0 aW9uZWQgdGFibGVzLCB0aGUgcGFydGl0aW9uIGJvdW5kcyBvZgorICAgICAgICAgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+ LAorICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lMjwvcmVwbGFjZWFibGU+LCBbLi4uXQorICAgICAgICAgYXJlIGNvbWJpbmVkIHRvIGZv cm0gdGhlIG5ldyBwYXJ0aXRpb24gYm91bmQgZm9yCisgICAgICAgICA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPi4KKyAgICAg ICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVkbGlzdD4K KyAgICAgIElmIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiBpcyBpbiB0 aGUgbGlzdCBvZiBwYXJ0aXRpb25zIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dOgor ICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJh PgorICAgICAgICAgVGhlIHBhcnRpdGlvbiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgd2lsbCBiZSB0aGUg bmV3IDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiBvZiB0aGUgdGFyZ2V0 IHRhYmxlLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIHBhcnRpdGlvbiBib3Vu ZCBzcGVjaWZpY2F0aW9ucyBmb3IgYWxsIHBhcnRpdGlvbnMtCisgICAgICAgICA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4s CisgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25h bWUyPC9yZXBsYWNlYWJsZT4sIFsuLi5dCisgICAgICAgICBjYW4gYmUgYXJiaXRyYXJ5Lgor ICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRs aXN0PgorICAgICAgVGhlIG5ldyBwYXJ0aXRpb24gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgIGNhbiBoYXZlIHRo ZSBzYW1lIG5hbWUgYXMgb25lIG9mIHRoZSBtZXJnZWQgcGFydGl0aW9ucy4gT25seSBzaW1w bGUsCisgICAgICBub24tcGFydGl0aW9uZWQgcGFydGl0aW9ucyBjYW4gYmUgbWVyZ2VkLgor ICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgSWYgbWVyZ2VkIHBhcnRpdGlvbnMg aGF2ZSBkaWZmZXJlbnQgb3duZXJzLCBhbiBlcnJvciB3aWxsIGJlIGdlbmVyYXRlZC4KKyAg ICAgIFRoZSBvd25lciBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbnMgd2lsbCBiZSB0aGUgb3du ZXIgb2YgdGhlIG5ldyBwYXJ0aXRpb24uCisgICAgICBJdCBpcyB0aGUgdXNlcidzIHJlc3Bv bnNpYmlsaXR5IHRvIHNldHVwIDxhY3JvbnltPkFDTDwvYWNyb255bT4gb24gdGhlCisgICAg ICBuZXcgcGFydGl0aW9uLgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgVGhl IGluZGV4ZXMgYW5kIGlkZW50aXR5IGFyZSBjcmVhdGVkIGxhdGVyLCBhZnRlciBtb3Zpbmcg dGhlIGRhdGEKKyAgICAgIGludG8gdGhlIG5ldyBwYXJ0aXRpb24uCisgICAgICBFeHRlbmRl ZCBzdGF0aXN0aWNzIGFyZW4ndCBjb3BpZWQgZnJvbSB0aGUgcGFyZW50IHRhYmxlLCBmb3Ig Y29uc2lzdGVuY3kgd2l0aAorICAgICAgPGNvbW1hbmQ+Q1JFQVRFIFRBQkxFIFBBUlRJVElP TiBPRjwvY29tbWFuZD4uCisgICAgICBUaGUgbmV3IHBhcnRpdGlvbiB3aWxsIGluaGVyaXQg dGhlIHNhbWUgdGFibGUgYWNjZXNzIG1ldGhvZCwgcGVyc2lzdGVuY2UKKyAgICAgIHR5cGUs IGFuZCB0YWJsZXNwYWNlIGFzIHRoZSBwYXJlbnQgdGFibGUuCisgICAgIDwvcGFyYT4KKyAg ICAgPHBhcmE+CisgICAgICBXaGVuIHBhcnRpdGlvbnMgYXJlIG1lcmdlZCwgYW55IGluZGl2 aWR1YWwgb2JqZWN0cyBiZWxvbmdpbmcgdG8gdGhvc2UKKyAgICAgIHBhcnRpdGlvbnMsIHN1 Y2ggYXMgY29uc3RyYWludHMgb3Igc3RhdGlzdGljcyB3aWxsIGJlIGRyb3BwZWQuIFRoaXMg b2NjdXJzCisgICAgICBiZWNhdXNlIDxjb21tYW5kPkFMVEVSIFRBQkxFIE1FUkdFIFBBUlRJ VElPTlM8L2NvbW1hbmQ+IHVzZXMgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGl0c2VsZiBhcyB0 aGUKKyAgICAgIHRlbXBsYXRlIHRvIGRlZmluZSB0aGVzZSBvYmplY3RzLgorICAgICA8L3Bh cmE+CisgICAgIDxwYXJhPgorICAgICAgSWYgbWVyZ2VkIHBhcnRpdGlvbnMgaGF2ZSBzb21l IG9iamVjdHMgZGVwZW5kZW50IG9uIHRoZW0sIHRoZSBjb21tYW5kIGNhbgorICAgICAgbm90 IGJlIGRvbmUgKDxsaXRlcmFsPkNBU0NBREU8L2xpdGVyYWw+IGlzIG5vdCB1c2VkLCBhbiBl cnJvciB3aWxsIGJlIHJldHVybmVkKS4KKyAgICAgPC9wYXJhPgorICAgICA8bm90ZT4KKyAg ICAgIDxwYXJhPgorICAgICAgIE1lcmdpbmcgcGFydGl0aW9ucyBhY3F1aXJlcyBhIDxsaXRl cmFsPkFDQ0VTUyBFWENMVVNJVkU8L2xpdGVyYWw+IGxvY2sgb24KKyAgICAgICB0aGUgcGFy ZW50IHRhYmxlLCBpbiBhZGRpdGlvbiB0byB0aGUgPGxpdGVyYWw+QUNDRVNTIEVYQ0xVU0lW RTwvbGl0ZXJhbD4KKyAgICAgICBsb2NrcyBvbiB0aGUgdGFibGVzIGJlaW5nIG1lcmdlZCBh bmQgb24gdGhlIGRlZmF1bHQgcGFydGl0aW9uIChpZiBhbnkpLgorICAgICAgPC9wYXJhPgor ICAgICA8L25vdGU+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAg IDwvdmFyaWFibGVsaXN0PgogICA8L3BhcmE+CiAKICAgPHBhcmE+CiAgICBBbGwgdGhlIGZv cm1zIG9mIDxjb21tYW5kPkFMVEVSIFRBQkxFPC9jb21tYW5kPiB0aGF0IGFjdCBvbiBhIHNp bmdsZSB0YWJsZSwKICAgIGV4Y2VwdCA8bGl0ZXJhbD5SRU5BTUU8L2xpdGVyYWw+LCA8bGl0 ZXJhbD5TRVQgU0NIRU1BPC9saXRlcmFsPiwKLSAgIDxsaXRlcmFsPkFUVEFDSCBQQVJUSVRJ T048L2xpdGVyYWw+LCBhbmQKLSAgIDxsaXRlcmFsPkRFVEFDSCBQQVJUSVRJT048L2xpdGVy YWw+IGNhbiBiZSBjb21iaW5lZCBpbnRvCisgICA8bGl0ZXJhbD5BVFRBQ0ggUEFSVElUSU9O PC9saXRlcmFsPiwgPGxpdGVyYWw+REVUQUNIIFBBUlRJVElPTjwvbGl0ZXJhbD4sCisgICBh bmQgPGxpdGVyYWw+TUVSR0UgUEFSVElUSU9OUzwvbGl0ZXJhbD4gY2FuIGJlIGNvbWJpbmVk IGludG8KICAgIGEgbGlzdCBvZiBtdWx0aXBsZSBhbHRlcmF0aW9ucyB0byBiZSBhcHBsaWVk IHRvZ2V0aGVyLiAgRm9yIGV4YW1wbGUsIGl0CiAgICBpcyBwb3NzaWJsZSB0byBhZGQgc2V2 ZXJhbCBjb2x1bW5zIGFuZC9vciBhbHRlciB0aGUgdHlwZSBvZiBzZXZlcmFsCiAgICBjb2x1 bW5zIGluIGEgc2luZ2xlIGNvbW1hbmQuICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwg d2l0aCBsYXJnZQpAQCAtMTM5Nyw3ICsxNDg3LDggQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+ LCBSRU0KICAgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgogICAg ICAgIDxwYXJhPgotICAgICAgICBUaGUgbmFtZSBvZiB0aGUgdGFibGUgdG8gYXR0YWNoIGFz IGEgbmV3IHBhcnRpdGlvbiBvciB0byBkZXRhY2ggZnJvbSB0aGlzIHRhYmxlLgorICAgICAg ICBUaGUgbmFtZSBvZiB0aGUgdGFibGUgdG8gYXR0YWNoIGFzIGEgbmV3IHBhcnRpdGlvbiBv ciB0byBkZXRhY2ggZnJvbSB0aGlzIHRhYmxlLAorICAgICAgICBvciB0aGUgbmFtZSBvZiB0 aGUgbmV3IG1lcmdlZCBwYXJ0aXRpb24uCiAgICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0 aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CkBAIC0xODMwLDYgKzE5MjEsMTMgQEAgQUxU RVIgVEFCTEUgbWVhc3VyZW1lbnQKICAgICBERVRBQ0ggUEFSVElUSU9OIG1lYXN1cmVtZW50 X3kyMDE1bTEyOwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAKKyAgPHBhcmE+CisgICBU byBtZXJnZSBzZXZlcmFsIHBhcnRpdGlvbnMgaW50byBvbmUgcGFydGl0aW9uIG9mIHRoZSB0 YXJnZXQgdGFibGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBUQUJMRSBzYWxlc19saXN0 IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2NlbnRy YWwpCisgICAgSU5UTyBzYWxlc19hbGw7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKwog IDwvcmVmc2VjdDE+CiAKICA8cmVmc2VjdDE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL2RlcGVuZGVuY3kuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5j CmluZGV4IDE4MzE2YTM5NjguLjVhZmM0OTM4MjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvZGVwZW5kZW5jeS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5k ZW5jeS5jCkBAIC0zMTksNiArMzE5LDU2IEBAIHBlcmZvcm1EZWxldGlvbihjb25zdCBPYmpl Y3RBZGRyZXNzICpvYmplY3QsCiAJdGFibGVfY2xvc2UoZGVwUmVsLCBSb3dFeGNsdXNpdmVM b2NrKTsKIH0KIAorLyoKKyAqIHBlcmZvcm1EZWxldGlvbkNoZWNrOiBDaGVjayB3aGV0aGVy IGEgc3BlY2lmaWMgb2JqZWN0IGNhbiBiZSBzYWZlbHkgZGVsZXRlZC4KKyAqIFRoaXMgZnVu Y3Rpb24gZG9lcyBub3QgcGVyZm9ybSBhbnkgZGVsZXRpb247IGluc3RlYWQsIGl0IHJhaXNl cyBhbiBlcnJvcgorICogaWYgdGhlIG9iamVjdCBjYW5ub3QgYmUgZGVsZXRlZCBkdWUgdG8g ZXhpc3RpbmcgZGVwZW5kZW5jaWVzLgorICoKKyAqIEl0IGNhbiBiZSB1c2VmdWwgd2hlbiB5 b3UgbmVlZCBkZWxldGUgc29tZSBvYmplY3RzIGxhdGVyLiAgU2VlIGNvbW1lbnRzIGluCisg KiBwZXJmb3JtRGVsZXRpb24gdG9vLgorICogVGhlIGJlaGF2aW9yIG11c3Qgc3BlY2lmaWVk IGFzIERST1BfUkVTVFJJQ1QuCisgKi8KK3ZvaWQKK3BlcmZvcm1EZWxldGlvbkNoZWNrKGNv bnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKKwkJCQkJIERyb3BCZWhhdmlvciBiZWhhdmlv ciwgaW50IGZsYWdzKQoreworCVJlbGF0aW9uCWRlcFJlbDsKKwlPYmplY3RBZGRyZXNzZXMg KnRhcmdldE9iamVjdHM7CisKKwlBc3NlcnQoYmVoYXZpb3IgPT0gRFJPUF9SRVNUUklDVCk7 CisKKwlkZXBSZWwgPSB0YWJsZV9vcGVuKERlcGVuZFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2 ZUxvY2spOworCisJQWNxdWlyZURlbGV0aW9uTG9jayhvYmplY3QsIDApOworCisJLyoKKwkg KiBDb25zdHJ1Y3QgYSBsaXN0IG9mIG9iamVjdHMgd2Ugd2FudCBkZWxldGUgbGF0ZXIgKGll LCB0aGUgZ2l2ZW4gb2JqZWN0IHBsdXMKKwkgKiBldmVyeXRoaW5nIGRpcmVjdGx5IG9yIGlu ZGlyZWN0bHkgZGVwZW5kZW50IG9uIGl0KS4KKwkgKi8KKwl0YXJnZXRPYmplY3RzID0gbmV3 X29iamVjdF9hZGRyZXNzZXMoKTsKKworCWZpbmREZXBlbmRlbnRPYmplY3RzKG9iamVjdCwK KwkJCQkJCSBERVBGTEFHX09SSUdJTkFMLAorCQkJCQkJIGZsYWdzLAorCQkJCQkJIE5VTEws CS8qIGVtcHR5IHN0YWNrICovCisJCQkJCQkgdGFyZ2V0T2JqZWN0cywKKwkJCQkJCSBOVUxM LAkvKiBubyBwZW5kaW5nT2JqZWN0cyAqLworCQkJCQkJICZkZXBSZWwpOworCisJLyoKKwkg KiBDaGVjayBpZiBkZWxldGlvbiBpcyBhbGxvd2VkLgorCSAqLworCXJlcG9ydERlcGVuZGVu dE9iamVjdHModGFyZ2V0T2JqZWN0cywKKwkJCQkJCSAgIGJlaGF2aW9yLAorCQkJCQkJICAg ZmxhZ3MsCisJCQkJCQkgICBvYmplY3QpOworCisJLyogQW5kIGNsZWFuIHVwICovCisJZnJl ZV9vYmplY3RfYWRkcmVzc2VzKHRhcmdldE9iamVjdHMpOworCisJdGFibGVfY2xvc2UoZGVw UmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKK30KKwogLyoKICAqIHBlcmZvcm1NdWx0aXBsZURl bGV0aW9uczogU2ltaWxhciB0byBwZXJmb3JtRGVsZXRpb24sIGJ1dCBhY3Qgb24gbXVsdGlw bGUKICAqIG9iamVjdHMgYXQgb25jZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvaGVhcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKaW5kZXggZmJhZWQ1MzU5 YS4uNTcxYjZiMDU3NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKQEAgLTEwNSw4ICsxMDUsNiBAQCBz dGF0aWMgdm9pZCBSZWxhdGlvblJlbW92ZUluaGVyaXRhbmNlKE9pZCByZWxpZCk7CiBzdGF0 aWMgT2lkCVN0b3JlUmVsQ2hlY2soUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjY25hbWUs IE5vZGUgKmV4cHIsCiAJCQkJCQkgIGJvb2wgaXNfZW5mb3JjZWQsIGJvb2wgaXNfdmFsaWRh dGVkLCBib29sIGlzX2xvY2FsLAogCQkJCQkJICBpbnQxNiBpbmhjb3VudCwgYm9vbCBpc19u b19pbmhlcml0LCBib29sIGlzX2ludGVybmFsKTsKLXN0YXRpYyB2b2lkIFN0b3JlQ29uc3Ry YWludHMoUmVsYXRpb24gcmVsLCBMaXN0ICpjb29rZWRfY29uc3RyYWludHMsCi0JCQkJCQkJ IGJvb2wgaXNfaW50ZXJuYWwpOwogc3RhdGljIGJvb2wgTWVyZ2VXaXRoRXhpc3RpbmdDb25z dHJhaW50KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY2NuYW1lLCBOb2RlICpleHByLAog CQkJCQkJCQkJCWJvb2wgYWxsb3dfbWVyZ2UsIGJvb2wgaXNfbG9jYWwsCiAJCQkJCQkJCQkJ Ym9vbCBpc19lbmZvcmNlZCwKQEAgLTIyOTYsNyArMjI5NCw3IEBAIFN0b3JlUmVsTm90TnVs bChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKm5ubmFtZSwgQXR0ck51bWJlciBhdHRudW0s CiAgKiBleHByZXNzaW9ucyBjYW4gYmUgYWRkZWQgbGF0ZXIsIGJ5IGRpcmVjdCBjYWxscyB0 byBTdG9yZUF0dHJEZWZhdWx0CiAgKiBhbmQgU3RvcmVSZWxDaGVjayAoc2VlIEFkZFJlbGF0 aW9uTmV3Q29uc3RyYWludHMoKSkuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBTdG9yZUNv bnN0cmFpbnRzKFJlbGF0aW9uIHJlbCwgTGlzdCAqY29va2VkX2NvbnN0cmFpbnRzLCBib29s IGlzX2ludGVybmFsKQogewogCWludAkJCW51bWNoZWNrcyA9IDA7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfY29uc3RyYWludC5jCmluZGV4IDJkNWFjMWVhODEuLjFmOTQ4ODc2ZDkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCisrKyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCkBAIC04NzUsNyArODc1LDcgQEAgUmVs YXRpb25HZXROb3ROdWxsQ29uc3RyYWludHMoT2lkIHJlbGlkLCBib29sIGNvb2tlZCwgYm9v bCBpbmNsdWRlX25vaW5oKQogCQkJCQkJCQkJCQkJCQkJIGZhbHNlKSkpOwogCQkJY29uc3Ry LT5pc19lbmZvcmNlZCA9IHRydWU7CiAJCQljb25zdHItPnNraXBfdmFsaWRhdGlvbiA9ICFj b25Gb3JtLT5jb252YWxpZGF0ZWQ7Ci0JCQljb25zdHItPmluaXRpYWxseV92YWxpZCA9IHRy dWU7CisJCQljb25zdHItPmluaXRpYWxseV92YWxpZCA9IGNvbkZvcm0tPmNvbnZhbGlkYXRl ZDsKIAkJCWNvbnN0ci0+aXNfbm9faW5oZXJpdCA9IGNvbkZvcm0tPmNvbm5vaW5oZXJpdDsK IAkJCW5vdG51bGxzID0gbGFwcGVuZChub3RudWxscywgY29uc3RyKTsKIAkJfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBlYTk2OTQ3ZDgxLi45YTkwNTNkMzI1IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNzQwLDYgKzc0MCw4IEBAIHN0YXRpYyB2 b2lkIEFURGV0YWNoQ2hlY2tOb0ZvcmVpZ25LZXlSZWZzKFJlbGF0aW9uIHBhcnRpdGlvbik7 CiBzdGF0aWMgY2hhciBHZXRBdHRyaWJ1dGVDb21wcmVzc2lvbihPaWQgYXR0dHlwaWQsIGNv bnN0IGNoYXIgKmNvbXByZXNzaW9uKTsKIHN0YXRpYyBjaGFyIEdldEF0dHJpYnV0ZVN0b3Jh Z2UoT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpzdG9yYWdlbW9kZSk7CiAKK3N0YXRpYyB2 b2lkIEFURXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJ bmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJICBQYXJ0aXRpb25DbWQgKmNtZCwg QWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKIAogLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog ICoJCURlZmluZVJlbGF0aW9uCkBAIC00ODM0LDYgKzQ4MzYsMTAgQEAgQWx0ZXJUYWJsZUdl dExvY2tMZXZlbChMaXN0ICpjbWRzKQogCQkJCWNtZF9sb2NrbW9kZSA9IFNoYXJlVXBkYXRl RXhjbHVzaXZlTG9jazsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9NZXJnZVBhcnRpdGlv bnM6CisJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKKwkJCQlicmVh azsKKwogCQkJZGVmYXVsdDoJCQkvKiBvb3BzICovCiAJCQkJZWxvZyhFUlJPUiwgInVucmVj b2duaXplZCBhbHRlciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJCSAoaW50KSBjbWQtPnN1YnR5 cGUpOwpAQCAtNTI2OSw2ICs1Mjc1LDExIEBAIEFUUHJlcENtZChMaXN0ICoqd3F1ZXVlLCBS ZWxhdGlvbiByZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwKIAkJCS8qIE5vIGNvbW1hbmQtc3Bl Y2lmaWMgcHJlcCBuZWVkZWQgKi8KIAkJCXBhc3MgPSBBVF9QQVNTX01JU0M7CiAJCQlicmVh azsKKwkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQlBVFNpbXBsZVBlcm1pc3Npb25z KGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfUEFSVElUSU9ORURfVEFCTEUpOworCQkJLyogTm8g Y29tbWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRlZCAqLworCQkJcGFzcyA9IEFUX1BBU1NfTUlT QzsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgkJCQkvKiBvb3BzICovCiAJCQllbG9nKEVSUk9S LCAidW5yZWNvZ25pemVkIGFsdGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgY21k LT5zdWJ0eXBlKTsKQEAgLTU2NjUsNiArNTY3NiwxNCBAQCBBVEV4ZWNDbWQoTGlzdCAqKndx dWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQljYXNlIEFUX0RldGFjaFBhcnRpdGlv bkZpbmFsaXplOgogCQkJYWRkcmVzcyA9IEFURXhlY0RldGFjaFBhcnRpdGlvbkZpbmFsaXpl KHJlbCwgKChQYXJ0aXRpb25DbWQgKikgY21kLT5kZWYpLT5uYW1lKTsKIAkJCWJyZWFrOwor CQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCWNtZCA9IEFUUGFyc2VUcmFuc2Zvcm1D bWQod3F1ZXVlLCB0YWIsIHJlbCwgY21kLCBmYWxzZSwgbG9ja21vZGUsCisJCQkJCQkJCQkg IGN1cl9wYXNzLCBjb250ZXh0KTsKKwkJCUFzc2VydChjbWQgIT0gTlVMTCk7CisJCQlBc3Nl cnQocmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSk7 CisJCQlBVEV4ZWNNZXJnZVBhcnRpdGlvbnMod3F1ZXVlLCB0YWIsIHJlbCwgKFBhcnRpdGlv bkNtZCAqKSBjbWQtPmRlZiwKKwkJCQkJCQkJICBjb250ZXh0KTsKKwkJCWJyZWFrOwogCQlk ZWZhdWx0OgkJCQkvKiBvb3BzICovCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGFs dGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgY21kLT5zdWJ0eXBlKTsKQEAgLTY3 MDUsNiArNjcyNCw4IEBAIGFsdGVyX3RhYmxlX3R5cGVfdG9fc3RyaW5nKEFsdGVyVGFibGVU eXBlIGNtZHR5cGUpCiAJCQlyZXR1cm4gIkRFVEFDSCBQQVJUSVRJT04iOwogCQljYXNlIEFU X0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOgogCQkJcmV0dXJuICJERVRBQ0ggUEFSVElUSU9O IC4uLiBGSU5BTElaRSI7CisJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJcmV0dXJu ICJNRVJHRSBQQVJUSVRJT05TIjsKIAkJY2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCXJldHVy biAiQUxURVIgQ09MVU1OIC4uLiBBREQgSURFTlRJVFkiOwogCQljYXNlIEFUX1NldElkZW50 aXR5OgpAQCAtMjAxNjksNiArMjAxOTAsMzcgQEAgUXVldWVQYXJ0aXRpb25Db25zdHJhaW50 VmFsaWRhdGlvbihMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBzY2FucmVsLAogCX0KIH0KIAor LyoKKyAqIGF0dGFjaFBhcnRpdGlvblRhYmxlOiBhdHRhY2ggYSBuZXcgcGFydGl0aW9uIHRv IHRoZSBwYXJ0aXRpb25lZCB0YWJsZQorICoKKyAqIHdxdWV1ZTogdGhlIEFMVEVSIFRBQkxF IHdvcmsgcXVldWU7IGNhbiBiZSBOVUxMIHdoZW4gbm90IHJ1bm5pbmcgYXMgcGFydAorICog ICBvZiBhbiBBTFRFUiBUQUJMRSBzZXF1ZW5jZS4KKyAqIHJlbDogcGFydGl0aW9uZWQgcmVs YXRpb247CisgKiBhdHRhY2hyZWw6IHJlbGF0aW9uIG9mIGF0dGFjaGVkIHBhcnRpdGlvbjsK KyAqIGJvdW5kOiBib3VuZHMgb2YgYXR0YWNoZWQgcmVsYXRpb24uCisgKi8KK3N0YXRpYyB2 b2lkCithdHRhY2hQYXJ0aXRpb25UYWJsZShMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWws IFJlbGF0aW9uIGF0dGFjaHJlbCwgUGFydGl0aW9uQm91bmRTcGVjICpib3VuZCkKK3sKKwkv KiBPSyB0byBjcmVhdGUgaW5oZXJpdGFuY2UuICBSZXN0IG9mIHRoZSBjaGVja3MgcGVyZm9y bWVkIHRoZXJlICovCisJQ3JlYXRlSW5oZXJpdGFuY2UoYXR0YWNocmVsLCByZWwsIHRydWUp OworCisJLyogVXBkYXRlIHRoZSBwZ19jbGFzcyBlbnRyeS4gKi8KKwlTdG9yZVBhcnRpdGlv bkJvdW5kKGF0dGFjaHJlbCwgcmVsLCBib3VuZCk7CisKKwkvKiBFbnN1cmUgdGhlcmUgZXhp c3RzIGEgY29ycmVjdCBzZXQgb2YgaW5kZXhlcyBpbiB0aGUgcGFydGl0aW9uLiAqLworCUF0 dGFjaFBhcnRpdGlvbkVuc3VyZUluZGV4ZXMod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCk7CisK KwkvKiBhbmQgdHJpZ2dlcnMgKi8KKwlDbG9uZVJvd1RyaWdnZXJzVG9QYXJ0aXRpb24ocmVs LCBhdHRhY2hyZWwpOworCisJLyoKKwkgKiBDbG9uZSBmb3JlaWduIGtleSBjb25zdHJhaW50 cy4gIENhbGxlZSBpcyByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cAorCSAqIGZvciBwaGFz ZSAzIGNvbnN0cmFpbnQgdmVyaWZpY2F0aW9uLgorCSAqLworCUNsb25lRm9yZWlnbktleUNv bnN0cmFpbnRzKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwpOworfQorCiAvKgogICogQUxURVIg VEFCTEUgPG5hbWU+IEFUVEFDSCBQQVJUSVRJT04gPHBhcnRpdGlvbi1uYW1lPiBGT1IgVkFM VUVTCiAgKgpAQCAtMjAzNzIsMjMgKzIwNDI0LDggQEAgQVRFeGVjQXR0YWNoUGFydGl0aW9u KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUGFydGl0aW9uQ21kICpjbWQsCiAJY2hl Y2tfbmV3X3BhcnRpdGlvbl9ib3VuZChSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhdHRhY2hy ZWwpLCByZWwsCiAJCQkJCQkJICBjbWQtPmJvdW5kLCBwc3RhdGUpOwogCi0JLyogT0sgdG8g Y3JlYXRlIGluaGVyaXRhbmNlLiAgUmVzdCBvZiB0aGUgY2hlY2tzIHBlcmZvcm1lZCB0aGVy ZSAqLwotCUNyZWF0ZUluaGVyaXRhbmNlKGF0dGFjaHJlbCwgcmVsLCB0cnVlKTsKLQotCS8q IFVwZGF0ZSB0aGUgcGdfY2xhc3MgZW50cnkuICovCi0JU3RvcmVQYXJ0aXRpb25Cb3VuZChh dHRhY2hyZWwsIHJlbCwgY21kLT5ib3VuZCk7Ci0KLQkvKiBFbnN1cmUgdGhlcmUgZXhpc3Rz IGEgY29ycmVjdCBzZXQgb2YgaW5kZXhlcyBpbiB0aGUgcGFydGl0aW9uLiAqLwotCUF0dGFj aFBhcnRpdGlvbkVuc3VyZUluZGV4ZXMod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCk7Ci0KLQkv KiBhbmQgdHJpZ2dlcnMgKi8KLQlDbG9uZVJvd1RyaWdnZXJzVG9QYXJ0aXRpb24ocmVsLCBh dHRhY2hyZWwpOwotCi0JLyoKLQkgKiBDbG9uZSBmb3JlaWduIGtleSBjb25zdHJhaW50cy4g IENhbGxlZSBpcyByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cAotCSAqIGZvciBwaGFzZSAz IGNvbnN0cmFpbnQgdmVyaWZpY2F0aW9uLgotCSAqLwotCUNsb25lRm9yZWlnbktleUNvbnN0 cmFpbnRzKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwpOworCS8qIEF0dGFjaCBhIG5ldyBwYXJ0 aXRpb24gdG8gdGhlIHBhcnRpdGlvbmVkIHRhYmxlLiAqLworCWF0dGFjaFBhcnRpdGlvblRh YmxlKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwsIGNtZC0+Ym91bmQpOwogCiAJLyoKIAkgKiBH ZW5lcmF0ZSBwYXJ0aXRpb24gY29uc3RyYWludCBmcm9tIHRoZSBwYXJ0aXRpb24gYm91bmQg c3BlY2lmaWNhdGlvbi4KQEAgLTIyMDM1LDMgKzIyMDcyLDgzOCBAQCBHZXRBdHRyaWJ1dGVT dG9yYWdlKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqc3RvcmFnZW1vZGUpCiAKIAlyZXR1 cm4gY3N0b3JhZ2U7CiB9CisKKworLyoKKyAqIGJ1aWxkRXhwcmVzc2lvbkV4ZWN1dGlvblN0 YXRlczogYnVpbGQgdGhlIG5lZWRlZCBleHByZXNzaW9uIGV4ZWN1dGlvbiBzdGF0ZXMKKyAq IGZvciBuZXcgcGFydGl0aW9uIChuZXdQYXJ0UmVsKSBjaGVja3MgYW5kIGluaXRpYWxpemUg ZXhwcmVzc2lvbnMgZm9yCisgKiBnZW5lcmF0ZWQgY29sdW1ucy4gQWxsIGV4cHJlc3Npb25z IHNob3VsZCBiZSBjcmVhdGVkIGluICJ0YWIiCisgKiAoQWx0ZXJlZFRhYmxlSW5mbyBzdHJ1 Y3R1cmUpLgorICovCitzdGF0aWMgdm9pZAorYnVpbGRFeHByZXNzaW9uRXhlY3V0aW9uU3Rh dGVzKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gbmV3UGFydFJlbCwgRVN0YXRl ICplc3RhdGUpCit7CisJLyogQnVpbGQgdGhlIG5lZWRlZCBleHByZXNzaW9uIGV4ZWN1dGlv biBzdGF0ZXMuICovCisJZm9yZWFjaF9wdHIoTmV3Q29uc3RyYWludCwgY29uLCB0YWItPmNv bnN0cmFpbnRzKQorCXsKKwkJc3dpdGNoIChjb24tPmNvbnR5cGUpCisJCXsKKwkJCWNhc2Ug Q09OU1RSX0NIRUNLOgorCQkJCWNvbi0+cXVhbHN0YXRlID0gRXhlY1ByZXBhcmVFeHByKChF eHByICopIGV4cGFuZF9nZW5lcmF0ZWRfY29sdW1uc19pbl9leHByKGNvbi0+cXVhbCwgbmV3 UGFydFJlbCwgMSksIGVzdGF0ZSk7CisJCQkJYnJlYWs7CisJCQljYXNlIENPTlNUUl9GT1JF SUdOOgorCQkJCS8qIE5vdGhpbmcgdG8gZG8gaGVyZS4gKi8KKwkJCQlicmVhazsKKwkJCWNh c2UgQ09OU1RSX05PVE5VTEw6CisJCQkJLyogTm90aGluZyB0byBkbyBoZXJlLiAqLworCQkJ CWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGNv bnN0cmFpbnQgdHlwZTogJWQiLAorCQkJCQkgKGludCkgY29uLT5jb250eXBlKTsKKwkJfQor CX0KKworCWZvcmVhY2hfcHRyKE5ld0NvbHVtblZhbHVlLCBleCwgdGFiLT5uZXd2YWxzKQor CXsKKwkJLyogRXhwcmVzc2lvbiBhbHJlYWR5IHBsYW5uZWQuICovCisJCWV4LT5leHByc3Rh dGUgPSBFeGVjSW5pdEV4cHIoKEV4cHIgKikgZXgtPmV4cHIsIE5VTEwpOworCX0KK30KKwor LyoKKyAqIGV2YWx1YXRlR2VuZXJhdGVkRXhwcmVzc2lvbnNBbmRDaGVja0NvbnN0cmFpbnRz OiBldmFsdWF0ZSBhbnkgZ2VuZXJhdGVkCisgKiBleHByZXNzaW9ucyBmb3IgInRhYiIgKEFs dGVyZWRUYWJsZUluZm8gc3RydWN0dXJlKSB3aG9zZSBpbnB1dHMgY29tZSBmcm9tCisgKiB0 aGUgbmV3IHR1cGxlIChpbnNlcnRzbG90KSBvZiBuZXcgcGFydGl0aW9uIChuZXdQYXJ0UmVs KS4KKyAqLworc3RhdGljIHZvaWQKK2V2YWx1YXRlR2VuZXJhdGVkRXhwcmVzc2lvbnNBbmRD aGVja0NvbnN0cmFpbnRzKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKKwkJCQkJCQkJCQkJCVJl bGF0aW9uIG5ld1BhcnRSZWwsCisJCQkJCQkJCQkJCQlUdXBsZVRhYmxlU2xvdCAqaW5zZXJ0 c2xvdCwKKwkJCQkJCQkJCQkJCUV4cHJDb250ZXh0ICplY29udGV4dCkKK3sKKwllY29udGV4 dC0+ZWN4dF9zY2FudHVwbGUgPSBpbnNlcnRzbG90OworCisJZm9yZWFjaF9wdHIoTmV3Q29s dW1uVmFsdWUsIGV4LCB0YWItPm5ld3ZhbHMpCisJeworCQlpZiAoIWV4LT5pc19nZW5lcmF0 ZWQpCisJCQljb250aW51ZTsKKworCQlpbnNlcnRzbG90LT50dHNfdmFsdWVzW2V4LT5hdHRu dW0gLSAxXQorCQkJPSBFeGVjRXZhbEV4cHIoZXgtPmV4cHJzdGF0ZSwKKwkJCQkJCQllY29u dGV4dCwKKwkJCQkJCQkmaW5zZXJ0c2xvdC0+dHRzX2lzbnVsbFtleC0+YXR0bnVtIC0gMV0p OworCX0KKworCWZvcmVhY2hfcHRyKE5ld0NvbnN0cmFpbnQsIGNvbiwgdGFiLT5jb25zdHJh aW50cykKKwl7CisJCXN3aXRjaCAoY29uLT5jb250eXBlKQorCQl7CisJCQljYXNlIENPTlNU Ul9DSEVDSzoKKwkJCQlpZiAoIUV4ZWNDaGVjayhjb24tPnF1YWxzdGF0ZSwgZWNvbnRleHQp KQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9DSEVDS19W SU9MQVRJT04pLAorCQkJCQkJCWVycm1zZygiY2hlY2sgY29uc3RyYWludCBcIiVzXCIgb2Yg cmVsYXRpb24gXCIlc1wiIGlzIHZpb2xhdGVkIGJ5IHNvbWUgcm93IiwKKwkJCQkJCQkJICAg Y29uLT5uYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShuZXdQYXJ0UmVsKSksCisJCQkJ CQkJZXJydGFibGVjb25zdHJhaW50KG5ld1BhcnRSZWwsIGNvbi0+bmFtZSkpOworCQkJCWJy ZWFrOworCQkJY2FzZSBDT05TVFJfTk9UTlVMTDoKKwkJCWNhc2UgQ09OU1RSX0ZPUkVJR046 CisJCQkJLyogTm90aGluZyB0byBkbyBoZXJlICovCisJCQkJYnJlYWs7CisJCQlkZWZhdWx0 OgorCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgY29uc3RyYWludCB0eXBlOiAlZCIs CisJCQkJCSAoaW50KSBjb24tPmNvbnR5cGUpOworCQl9CisJfQorfQorCisvKgorICogZ2V0 QXR0cmlidXRlc0xpc3Q6IHJldHVybiBsaXN0IG9mIGNvbHVtbnMgKENvbHVtbkRlZikgbGlr ZSBtb2RlbCB0YWJsZQorICogKG1vZGVsUmVsKQorICovCitzdGF0aWMgTGlzdCAqCitnZXRB dHRyaWJ1dGVzTGlzdChSZWxhdGlvbiBtb2RlbFJlbCkKK3sKKwlBdHRyTnVtYmVyCXBhcmVu dF9hdHRubzsKKwlUdXBsZURlc2MJbW9kZWxEZXNjOworCUxpc3QJICAgKmNvbExpc3QgPSBO SUw7CisKKwltb2RlbERlc2MgPSBSZWxhdGlvbkdldERlc2NyKG1vZGVsUmVsKTsKKworCWZv ciAocGFyZW50X2F0dG5vID0gMTsgcGFyZW50X2F0dG5vIDw9IG1vZGVsRGVzYy0+bmF0dHM7 CisJCSBwYXJlbnRfYXR0bm8rKykKKwl7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJpYnV0 ZSA9IFR1cGxlRGVzY0F0dHIobW9kZWxEZXNjLAorCQkJCQkJCQkJCQkJCXBhcmVudF9hdHRu byAtIDEpOworCQlDb2x1bW5EZWYgICpkZWY7CisKKwkJLyogSWdub3JlIGRyb3BwZWQgY29s dW1ucyBpbiB0aGUgcGFyZW50LiAqLworCQlpZiAoYXR0cmlidXRlLT5hdHRpc2Ryb3BwZWQp CisJCQljb250aW51ZTsKKworCQlkZWYgPSBtYWtlQ29sdW1uRGVmKE5hbWVTdHIoYXR0cmli dXRlLT5hdHRuYW1lKSwgYXR0cmlidXRlLT5hdHR0eXBpZCwKKwkJCQkJCQlhdHRyaWJ1dGUt PmF0dHR5cG1vZCwgYXR0cmlidXRlLT5hdHRjb2xsYXRpb24pOworCisJCWRlZi0+aXNfbm90 X251bGwgPSBhdHRyaWJ1dGUtPmF0dG5vdG51bGw7CisKKwkJLyogQ29weSBpZGVudGl0eSBm b3IgbmV3IHBhcnRpdGlvbi4gKi8KKwkJZGVmLT5pZGVudGl0eSA9IGF0dHJpYnV0ZS0+YXR0 aWRlbnRpdHk7CisKKwkJLyogQWRkIHRvIGNvbHVtbiBsaXN0ICovCisJCWNvbExpc3QgPSBs YXBwZW5kKGNvbExpc3QsIGRlZik7CisKKwkJLyoKKwkJICogQWx0aG91Z2ggd2UgZG9uJ3Qg dHJhbnNmZXIgdGhlIGNvbHVtbidzIGRlZmF1bHQvZ2VuZXJhdGlvbgorCQkgKiBleHByZXNz aW9uIG5vdywgd2UgbmVlZCB0byBtYXJrIGl0IEdFTkVSQVRFRCBpZiBhcHByb3ByaWF0ZS4K KwkJICovCisJCWlmIChhdHRyaWJ1dGUtPmF0dGhhc2RlZiAmJiBhdHRyaWJ1dGUtPmF0dGdl bmVyYXRlZCkKKwkJCWRlZi0+Z2VuZXJhdGVkID0gYXR0cmlidXRlLT5hdHRnZW5lcmF0ZWQ7 CisKKwkJZGVmLT5zdG9yYWdlID0gYXR0cmlidXRlLT5hdHRzdG9yYWdlOworCisJCS8qIExp a2V3aXNlLCBjb3B5IGNvbXByZXNzaW9uIGlmIHJlcXVlc3RlZCAqLworCQlpZiAoQ29tcHJl c3Npb25NZXRob2RJc1ZhbGlkKGF0dHJpYnV0ZS0+YXR0Y29tcHJlc3Npb24pKQorCQkJZGVm LT5jb21wcmVzc2lvbiA9CisJCQkJcHN0cmR1cChHZXRDb21wcmVzc2lvbk1ldGhvZE5hbWUo YXR0cmlidXRlLT5hdHRjb21wcmVzc2lvbikpOworCQllbHNlCisJCQlkZWYtPmNvbXByZXNz aW9uID0gTlVMTDsKKwl9CisKKwlyZXR1cm4gY29sTGlzdDsKK30KKworCisvKgorICogY3Jl YXRlVGFibGVDb25zdHJhaW50czogY3JlYXRlIGNvbnN0cmFpbnRzLCBkZWZhdWx0IHZhbHVl cyBhbmQgZ2VuZXJhdGVkCisgKiB2YWx1ZXMgKHByb3RvdHlwZSBpcyBmdW5jdGlvbiBleHBh bmRUYWJsZUxpa2VDbGF1c2UpLgorICogdGFiIGlzIHBlbmRpbmctd29yayBxdWV1ZSBmb3Ig bmV3UmVsLCB3ZSBtYXkgbmVlZCBpdCBpbiBtb3ZlTWVyZ2VkVGFibGVzUm93cy4KKyAqLwor c3RhdGljIHZvaWQKK2NyZWF0ZVRhYmxlQ29uc3RyYWludHMoTGlzdCAqKndxdWV1ZSwgQWx0 ZXJlZFRhYmxlSW5mbyAqdGFiLAorCQkJCQkgICBSZWxhdGlvbiBtb2RlbFJlbCwgUmVsYXRp b24gbmV3UmVsKQoreworCVR1cGxlRGVzYwl0dXBsZURlc2M7CisJVHVwbGVDb25zdHIgKmNv bnN0cjsKKwlBdHRyTWFwICAgICphdHRtYXA7CisJQXR0ck51bWJlcglwYXJlbnRfYXR0bm87 CisJaW50CQkJY2NudW07CisJTGlzdAkgICAqY29va2VkQ29uc3RyYWludHMgPSBOSUw7CisK Kwl0dXBsZURlc2MgPSBSZWxhdGlvbkdldERlc2NyKG1vZGVsUmVsKTsKKwljb25zdHIgPSB0 dXBsZURlc2MtPmNvbnN0cjsKKworCWlmICghY29uc3RyKQorCQlyZXR1cm47CisKKwkvKgor CSAqIENvbnN0cnVjdCBhIG1hcCBmcm9tIHRoZSBMSUtFIHJlbGF0aW9uJ3MgYXR0bm9zIHRv IHRoZSBjaGlsZCByZWwncy4KKwkgKiBUaGlzIHJlLWNoZWNrcyB0eXBlIG1hdGNoIGV0Yywg YWx0aG91Z2ggaXQgc2hvdWxkbid0IGJlIHBvc3NpYmxlIHRvCisJICogaGF2ZSBhIGZhaWx1 cmUgc2luY2UgYm90aCB0YWJsZXMgYXJlIGxvY2tlZC4KKwkgKi8KKwlhdHRtYXAgPSBidWls ZF9hdHRybWFwX2J5X25hbWUoUmVsYXRpb25HZXREZXNjcihuZXdSZWwpLAorCQkJCQkJCQkg ICB0dXBsZURlc2MsCisJCQkJCQkJCSAgIGZhbHNlKTsKKworCS8qIEN5Y2xlIGZvciBkZWZh dWx0IHZhbHVlcy4gKi8KKwlmb3IgKHBhcmVudF9hdHRubyA9IDE7IHBhcmVudF9hdHRubyA8 PSB0dXBsZURlc2MtPm5hdHRzOyBwYXJlbnRfYXR0bm8rKykKKwl7CisJCUZvcm1fcGdfYXR0 cmlidXRlIGF0dHJpYnV0ZSA9IFR1cGxlRGVzY0F0dHIodHVwbGVEZXNjLAorCQkJCQkJCQkJ CQkJCXBhcmVudF9hdHRubyAtIDEpOworCisJCS8qIElnbm9yZSBkcm9wcGVkIGNvbHVtbnMg aW4gdGhlIHBhcmVudC4gKi8KKwkJaWYgKGF0dHJpYnV0ZS0+YXR0aXNkcm9wcGVkKQorCQkJ Y29udGludWU7CisKKwkJLyogQ29weSBkZWZhdWx0LCBpZiBwcmVzZW50IGFuZCBpdCBzaG91 bGQgYmUgY29waWVkLiAqLworCQlpZiAoYXR0cmlidXRlLT5hdHRoYXNkZWYpCisJCXsKKwkJ CU5vZGUJICAgKnRoaXNfZGVmYXVsdCA9IE5VTEw7CisJCQlib29sCQlmb3VuZF93aG9sZV9y b3c7CisJCQlBdHRyTnVtYmVyCW51bTsKKwkJCU5vZGUJICAgKmRlZjsKKwkJCU5ld0NvbHVt blZhbHVlICpuZXd2YWw7CisKKwkJCWlmIChhdHRyaWJ1dGUtPmF0dGdlbmVyYXRlZCA9PSBB VFRSSUJVVEVfR0VORVJBVEVEX1ZJUlRVQUwpCisJCQkJdGhpc19kZWZhdWx0ID0gYnVpbGRf Z2VuZXJhdGlvbl9leHByZXNzaW9uKG1vZGVsUmVsLCBhdHRyaWJ1dGUtPmF0dG51bSk7CisJ CQllbHNlCisJCQl7CisJCQkJdGhpc19kZWZhdWx0ID0gVHVwbGVEZXNjR2V0RGVmYXVsdCh0 dXBsZURlc2MsIGF0dHJpYnV0ZS0+YXR0bnVtKTsKKwkJCQlpZiAodGhpc19kZWZhdWx0ID09 IE5VTEwpCisJCQkJCWVsb2coRVJST1IsICJkZWZhdWx0IGV4cHJlc3Npb24gbm90IGZvdW5k IGZvciBhdHRyaWJ1dGUgJWQgb2YgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJCSBhdHRyaWJ1 dGUtPmF0dG51bSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUobW9kZWxSZWwpKTsKKwkJCX0K KworCQkJbnVtID0gYXR0bWFwLT5hdHRudW1zW3BhcmVudF9hdHRubyAtIDFdOworCQkJZGVm ID0gbWFwX3ZhcmlhYmxlX2F0dG5vcyh0aGlzX2RlZmF1bHQsIDEsIDAsIGF0dG1hcCwgSW52 YWxpZE9pZCwgJmZvdW5kX3dob2xlX3Jvdyk7CisKKwkJCS8qCisJCQkgKiBQcmV2ZW50IHRo aXMgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBmb3IgY29uc3RyYWludHMgYmVsb3cuIE5vdGUK KwkJCSAqIHRoYXQgZGVmYXVsdHMgY2Fubm90IGNvbnRhaW4gYW55IHZhcnMsIHNvIGl0J3Mg T0sgdGhhdCB0aGUKKwkJCSAqIGVycm9yIG1lc3NhZ2UgcmVmZXJzIHRvIGdlbmVyYXRlZCBj b2x1bW5zLgorCQkJICovCisJCQlpZiAoZm91bmRfd2hvbGVfcm93ICYmIGF0dHJpYnV0ZS0+ YXR0Z2VuZXJhdGVkICE9ICdcMCcpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJZXJybXNnKCJjYW5u b3QgY29udmVydCB3aG9sZS1yb3cgdGFibGUgcmVmZXJlbmNlIiksCisJCQkJCQllcnJkZXRh aWwoIkdlbmVyYXRpb24gZXhwcmVzc2lvbiBmb3IgY29sdW1uIFwiJXNcIiBjb250YWlucyBh IHdob2xlLXJvdyByZWZlcmVuY2UgdG8gdGFibGUgXCIlc1wiLiIsCisJCQkJCQkJCSBOYW1l U3RyKGF0dHJpYnV0ZS0+YXR0bmFtZSksCisJCQkJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShtb2RlbFJlbCkpKTsKKworCQkJLyogQWRkIGEgcHJlLWNvb2tlZCBkZWZhdWx0IGV4 cHJlc3Npb24uICovCisJCQlTdG9yZUF0dHJEZWZhdWx0KG5ld1JlbCwgbnVtLCBkZWYsIHRy dWUpOworCisJCQkvKgorCQkJICogU3RvcmVkIGdlbmVyYXRlZCBjb2x1bW4gZXhwcmVzc2lv bnMgaW4gbW9kZWxSZWwgbWlnaHQgcmVmZXJlbmNlCisJCQkgKiB0YWJsZW9pZC4gIG5ld1Jl bCwgbW9kZWxSZWwgdGFibGVvaWQgY2xlYXIgaXMgbm90IHRoZSBzYW1lLiBJZgorCQkJICog c28sIHRoZXNlIHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1ucyByZXF1aXJlIHJlY29tcHV0YXRp b24gZm9yCisJCQkgKiBuZXdSZWwgd2l0aGluIG1vdmVNZXJnZWRUYWJsZXNSb3dzLgorCQkJ Ki8KKwkJCWlmIChhdHRyaWJ1dGUtPmF0dGdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfR0VORVJB VEVEX1NUT1JFRCkKKwkJCXsKKwkJCQluZXd2YWwgPSAoTmV3Q29sdW1uVmFsdWUgKikgcGFs bG9jMChzaXplb2YoTmV3Q29sdW1uVmFsdWUpKTsKKwkJCQluZXd2YWwtPmF0dG51bSA9IG51 bTsKKwkJCQluZXd2YWwtPmV4cHIgPSBleHByZXNzaW9uX3BsYW5uZXIoKEV4cHIgKikgZGVm KTsKKwkJCQluZXd2YWwtPmlzX2dlbmVyYXRlZCA9IChhdHRyaWJ1dGUtPmF0dGdlbmVyYXRl ZCAhPSAnXDAnKTsKKwkJCQl0YWItPm5ld3ZhbHMgPSBsYXBwZW5kKHRhYi0+bmV3dmFscywg bmV3dmFsKTsKKwkJCX0KKwkJfQorCX0KKworCS8qIEN5Y2xlIGZvciBDSEVDSyBjb25zdHJh aW50cy4gKi8KKwlmb3IgKGNjbnVtID0gMDsgY2NudW0gPCBjb25zdHItPm51bV9jaGVjazsg Y2NudW0rKykKKwl7CisJCWNoYXIJICAgKmNjbmFtZSA9IGNvbnN0ci0+Y2hlY2tbY2NudW1d LmNjbmFtZTsKKwkJY2hhcgkgICAqY2NiaW4gPSBjb25zdHItPmNoZWNrW2NjbnVtXS5jY2Jp bjsKKwkJYm9vbAkJY2NlbmZvcmNlZCA9IGNvbnN0ci0+Y2hlY2tbY2NudW1dLmNjZW5mb3Jj ZWQ7CisJCWJvb2wJCWNjbm9pbmhlcml0ID0gY29uc3RyLT5jaGVja1tjY251bV0uY2Nub2lu aGVyaXQ7CisJCWJvb2wJCWNjdmFsaWQgPSBjb25zdHItPmNoZWNrW2NjbnVtXS5jY3ZhbGlk OworCQlOb2RlCSAgICpjY2Jpbl9ub2RlOworCQlib29sCQlmb3VuZF93aG9sZV9yb3c7CisJ CUNvb2tlZENvbnN0cmFpbnQgKmNvb2tlZDsKKworCQkvKgorCQkgKiBQYXJ0aXRpb25lZCB0 YWJsZSBjYW4gbm90IGhhdmUgTk8gSU5IRVJJVCBjaGVjayBjb25zdHJhaW50IChzZWUKKwkJ ICogU3RvcmVSZWxDaGVjayBmdW5jdGlvbikuCisJCSAqLworCQlBc3NlcnQoIWNjbm9pbmhl cml0KTsKKworCQljY2Jpbl9ub2RlID0gbWFwX3ZhcmlhYmxlX2F0dG5vcyhzdHJpbmdUb05v ZGUoY2NiaW4pLAorCQkJCQkJCQkJCSAxLCAwLAorCQkJCQkJCQkJCSBhdHRtYXAsCisJCQkJ CQkJCQkJIEludmFsaWRPaWQsICZmb3VuZF93aG9sZV9yb3cpOworCisJCS8qCisJCSAqIFdl IHJlamVjdCB3aG9sZS1yb3cgdmFyaWFibGVzIGJlY2F1c2UgdGhlIHdob2xlIHBvaW50IG9m IExJS0UgaXMKKwkJICogdGhhdCB0aGUgbmV3IHRhYmxlJ3Mgcm93dHlwZSBtaWdodCBsYXRl ciBkaXZlcmdlIGZyb20gdGhlIHBhcmVudCdzLgorCQkgKiBTbywgd2hpbGUgdHJhbnNsYXRp b24gbWlnaHQgYmUgcG9zc2libGUgcmlnaHQgbm93LCBpdCB3b3VsZG4ndCBiZQorCQkgKiBw b3NzaWJsZSB0byBndWFyYW50ZWUgaXQgd291bGQgd29yayBpbiBmdXR1cmUuCisJCSAqLwor CQlpZiAoZm91bmRfd2hvbGVfcm93KQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCWVycm1zZygiY2Fubm90 IGNvbnZlcnQgd2hvbGUtcm93IHRhYmxlIHJlZmVyZW5jZSIpLAorCQkJCQllcnJkZXRhaWwo IkNvbnN0cmFpbnQgXCIlc1wiIGNvbnRhaW5zIGEgd2hvbGUtcm93IHJlZmVyZW5jZSB0byB0 YWJsZSBcIiVzXCIuIiwKKwkJCQkJCQkgICBjY25hbWUsCisJCQkJCQkJICAgUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUobW9kZWxSZWwpKSk7CisKKwkJY29va2VkID0gKENvb2tlZENvbnN0 cmFpbnQgKikgcGFsbG9jKHNpemVvZihDb29rZWRDb25zdHJhaW50KSk7CisJCWNvb2tlZC0+ Y29udHlwZSA9IENPTlNUUl9DSEVDSzsKKwkJY29va2VkLT5jb25vaWQgPSBJbnZhbGlkT2lk OworCQljb29rZWQtPm5hbWUgPSBjY25hbWU7CisJCWNvb2tlZC0+YXR0bnVtID0gMDsKKwkJ Y29va2VkLT5leHByID0gY2NiaW5fbm9kZTsKKwkJY29va2VkLT5pc19lbmZvcmNlZCA9IGNj ZW5mb3JjZWQ7CisJCWNvb2tlZC0+c2tpcF92YWxpZGF0aW9uID0gIWNjdmFsaWQ7CisJCWNv b2tlZC0+aXNfbG9jYWwgPSB0cnVlOworCQljb29rZWQtPmluaGNvdW50ID0gMDsKKwkJY29v a2VkLT5pc19ub19pbmhlcml0ID0gY2Nub2luaGVyaXQ7CisJCWNvb2tlZENvbnN0cmFpbnRz ID0gbGFwcGVuZChjb29rZWRDb25zdHJhaW50cywgY29va2VkKTsKKwl9CisKKwkvKiBTdG9y ZSBDSEVDSyBjb25zdHJhaW50cy4gKi8KKwlTdG9yZUNvbnN0cmFpbnRzKG5ld1JlbCwgY29v a2VkQ29uc3RyYWludHMsIHRydWUpOworCisJLyoKKwkgKiBtb2RlbFJlbCBjaGVjayBjb25z dHJhaW50IGV4cHJlc3NzaW9uIG1heSByZWZlcmVuY2UgdGFibGVvaWQsIHNvIGxhdGVyIGlu CisJICogbW92ZU1lcmdlZFRhYmxlc1Jvd3MsIHdlIG5lZWQgZXZ1bGF0ZSB0aGUgY2hlY2sg Y29uc3RyYWludCBhZ2FpbiBmb3IgdGhlCisJICogbmV3UmVsLiBXZSBjYW4gY2hlY2sgd2Vh dGhlciBjaGVjayBjb25zdHJhaW50IGNvbnRhaW4gdGFibGVvaWQgcmVmZXJlbmNlCisJICog b3Igbm90IHZpYSBwdWxsX3ZhcmF0dG5vcy4KKwkqLworCWZvcmVhY2hfcHRyKENvb2tlZENv bnN0cmFpbnQsIGNjb24sIGNvb2tlZENvbnN0cmFpbnRzKQorCXsKKwkJaWYgKCFjY29uLT5z a2lwX3ZhbGlkYXRpb24gJiYgY2Nvbi0+Y29udHlwZSA9PSBDT05TVFJfQ0hFQ0spCisJCXsK KwkJCU5vZGUJCSpxdWFsOworCQkJQml0bWFwc2V0CSAgKmF0dG51bXMgPSBOVUxMOworCisJ CQlxdWFsID0gZXhwYW5kX2dlbmVyYXRlZF9jb2x1bW5zX2luX2V4cHIoY2Nvbi0+ZXhwciwg bmV3UmVsLCAxKTsKKwkJCXB1bGxfdmFyYXR0bm9zKHF1YWwsIDEsICZhdHRudW1zKTsKKwor CQkJLyoKKwkJCSAqIEFkZCBjaGVjayBvbmx5IGlmIGl0IGNvbnRhaW5zIHRhYmxlb2lkCisJ CQkgKiAoVGFibGVPaWRBdHRyaWJ1dGVOdW1iZXIpLgorCQkJICovCisJCQlpZiAoYm1zX2lz X21lbWJlcihUYWJsZU9pZEF0dHJpYnV0ZU51bWJlciAtIEZpcnN0TG93SW52YWxpZEhlYXBB dHRyaWJ1dGVOdW1iZXIsCisJCQkJCQkJICBhdHRudW1zKSkKKwkJCXsKKwkJCQlOZXdDb25z dHJhaW50ICpuZXdjb247CisKKwkJCQluZXdjb24gPSAoTmV3Q29uc3RyYWludCAqKSBwYWxs b2MwKHNpemVvZihOZXdDb25zdHJhaW50KSk7CisJCQkJbmV3Y29uLT5uYW1lID0gY2Nvbi0+ bmFtZTsKKwkJCQluZXdjb24tPmNvbnR5cGUgPSBjY29uLT5jb250eXBlOworCQkJCW5ld2Nv bi0+cXVhbCA9IHF1YWw7CisKKwkJCQl0YWItPmNvbnN0cmFpbnRzID0gbGFwcGVuZCh0YWIt PmNvbnN0cmFpbnRzLCBuZXdjb24pOworCQkJfQorCQl9CisJfQorCisJLyogRG9uJ3QgbmVl ZCB0aGUgY29va2VkQ29uc3RyYWludHMgYW55IG1vcmUuICovCisJbGlzdF9mcmVlX2RlZXAo Y29va2VkQ29uc3RyYWludHMpOworCisJLyogUmVwcm9kdWNlIG5vdC1udWxsIGNvbnN0cmFp bnRzLiAqLworCWlmIChjb25zdHItPmhhc19ub3RfbnVsbCkKKwl7CisJCUxpc3QJICAgKm5u Y29uc3RyYWludHM7CisKKwkJLyoKKwkJICogVGhlICJpbmNsdWRlX25vaW5oIiBhcmd1bWVu dCBpcyBmYWxzZSBiZWNhdXNlIGEgcGFydGl0aW9uZWQgdGFibGUKKwkJICogY2Fubm90IGhh dmUgTk8gSU5IRVJJVCBjb25zdHJhaW50LgorCQkgKi8KKwkJbm5jb25zdHJhaW50cyA9IFJl bGF0aW9uR2V0Tm90TnVsbENvbnN0cmFpbnRzKFJlbGF0aW9uR2V0UmVsaWQobW9kZWxSZWwp LAorCQkJCQkJCQkJCQkJCSAgZmFsc2UsIGZhbHNlKTsKKworCQlBc3NlcnQobGlzdF9sZW5n dGgobm5jb25zdHJhaW50cykgPiAwKTsKKworCQkvKgorCQkgKiBXZSBhbHJlYWR5IHNldCBw Z19hdHRyaWJ1dGUuYXR0bm90bnVsbCBpbiBjcmVhdGVQYXJ0aXRpb25UYWJsZS4gTm8KKwkJ ICogbmVlZCBjYWxsIHNldF9hdHRub3RudWxsIGFnYWluLgorCQkqLworCQlBZGRSZWxhdGlv bk5ld0NvbnN0cmFpbnRzKG5ld1JlbCwgTklMLCBubmNvbnN0cmFpbnRzLCBmYWxzZSwgdHJ1 ZSwgdHJ1ZSwgTlVMTCk7CisJfQorfQorCisKKy8qCisgKiBjcmVhdGVQYXJ0aXRpb25UYWJs ZTogY3JlYXRlIHRhYmxlIGZvciBhIG5ldyBwYXJ0aXRpb24gd2l0aCBnaXZlbiBuYW1lCisg KiAobmV3UGFydE5hbWUpIGxpa2UgdGFibGUgKG1vZGVsUmVsLCBwYXJ0aXRpb25lZCB0YWJs ZSkuIG93bmVySWQgaXMKKyAqIGRldGVybWluZWQgYnkgdGhlIHBhcnRpdGlvbiBvbiB3aGlj aCB0aGUgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCwgc28gaXQKKyAqIGlzIHBhc3NlZCBzZXBh cmF0ZWx5LgorICoKKyAqIEFsc28sIHRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgbmV3IHBhcnRp dGlvbiBhY2Nlc3MgbWV0aG9kIHNhbWUgYXMgcGFyZW50CisgKiB0YWJsZSBhY2Nlc3MgbWV0 aG9kcyAoc2ltaWxhcmx5IHRvIENSRUFURSBUQUJMRSAuLi4gUEFSVElUSU9OIE9GKS4gIEl0 CisgKiBjaGVja3MgdGhhdCBwYXJlbnQgYW5kIGNoaWxkIHRhYmxlcyBoYXZlIGNvbXBhdGli bGUgcGVyc2lzdGVuY2UuCisgKgorICogRnVuY3Rpb24gcmV0dXJucyB0aGUgY3JlYXRlZCBy ZWxhdGlvbiAobG9ja2VkIGluIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgbW9kZSkuCisgKi8KK3N0 YXRpYyBSZWxhdGlvbgorY3JlYXRlUGFydGl0aW9uVGFibGUoTGlzdCAqKndxdWV1ZSwgUmFu Z2VWYXIgKm5ld1BhcnROYW1lLAorCQkJCQkgUmVsYXRpb24gbW9kZWxSZWwsIE9pZCBvd25l cklkKQoreworCVJlbGF0aW9uCW5ld1JlbDsKKwlPaWQJCQluZXdSZWxJZDsKKwlPaWQJCQll eGlzdGluZ1JlbGlkOworCVR1cGxlRGVzYwlkZXNjcmlwdG9yOworCUxpc3QJICAgKmNvbExp c3QgPSBOSUw7CisJT2lkCQkJcmVsYW1JZDsKKwlPaWQJCQluYW1lc3BhY2VJZDsKKwlBbHRl cmVkVGFibGVJbmZvICpuZXdfcGFydHJlbF90YWI7CisKKwkvKiBJZiBleGlzdGluZyByZWwg aXMgdGVtcCwgaXQgbXVzdCBiZWxvbmcgdG8gdGhpcyBzZXNzaW9uICovCisJaWYgKFJFTEFU SU9OX0lTX09USEVSX1RFTVAobW9kZWxSZWwpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVy cmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJZXJybXNnKCJjYW5ub3Qg Y3JlYXRlIGFzIHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVsYXRpb24gb2YgYW5vdGhlciBz ZXNzaW9uIikpOworCisJLyogTG9vayB1cCBpbmhlcml0YW5jZSBhbmNlc3RvcnMgYW5kIGdl bmVyYXRlIHJlbGF0aW9uIHNjaGVtYS4gKi8KKwljb2xMaXN0ID0gZ2V0QXR0cmlidXRlc0xp c3QobW9kZWxSZWwpOworCisJLyogQ3JlYXRlIGEgdHVwbGUgZGVzY3JpcHRvciBmcm9tIHRo ZSByZWxhdGlvbiBzY2hlbWEuICovCisJZGVzY3JpcHRvciA9IEJ1aWxkRGVzY0ZvclJlbGF0 aW9uKGNvbExpc3QpOworCisJLyogTG9vayB1cCB0aGUgYWNjZXNzIG1ldGhvZCBmb3IgbmV3 IHJlbGF0aW9uLiAqLworCXJlbGFtSWQgPSAobW9kZWxSZWwtPnJkX3JlbC0+cmVsYW0gIT0g SW52YWxpZE9pZCkgPyBtb2RlbFJlbC0+cmRfcmVsLT5yZWxhbSA6IEhFQVBfVEFCTEVfQU1f T0lEOworCisJLyogTG9vayB1cCB0aGUgbmFtZXNwYWNlIGluIHdoaWNoIHdlIGFyZSBzdXBw b3NlZCB0byBjcmVhdGUgdGhlIHJlbGF0aW9uLiAqLworCW5hbWVzcGFjZUlkID0KKwkJUmFu Z2VWYXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKG5ld1BhcnROYW1lLCBOb0xvY2ss ICZleGlzdGluZ1JlbGlkKTsKKwlpZiAoT2lkSXNWYWxpZChleGlzdGluZ1JlbGlkKSkKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwK KwkJCQllcnJtc2coInJlbGF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsIG5ld1BhcnRO YW1lLT5yZWxuYW1lKSk7CisKKwkvKiBDcmVhdGUgdGhlIHJlbGF0aW9uLiAqLworCW5ld1Jl bElkID0gaGVhcF9jcmVhdGVfd2l0aF9jYXRhbG9nKG5ld1BhcnROYW1lLT5yZWxuYW1lLAor CQkJCQkJCQkJCW5hbWVzcGFjZUlkLAorCQkJCQkJCQkJCW1vZGVsUmVsLT5yZF9yZWwtPnJl bHRhYmxlc3BhY2UsCisJCQkJCQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQlJbnZhbGlk T2lkLAorCQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJb3duZXJJZCwKKwkJCQkJ CQkJCQlyZWxhbUlkLAorCQkJCQkJCQkJCWRlc2NyaXB0b3IsCisJCQkJCQkJCQkJTklMLAor CQkJCQkJCQkJCVJFTEtJTkRfUkVMQVRJT04sCisJCQkJCQkJCQkJbmV3UGFydE5hbWUtPnJl bHBlcnNpc3RlbmNlLAorCQkJCQkJCQkJCWZhbHNlLAorCQkJCQkJCQkJCWZhbHNlLAorCQkJ CQkJCQkJCU9OQ09NTUlUX05PT1AsCisJCQkJCQkJCQkJKERhdHVtKSAwLAorCQkJCQkJCQkJ CXRydWUsCisJCQkJCQkJCQkJYWxsb3dTeXN0ZW1UYWJsZU1vZHMsCisJCQkJCQkJCQkJZmFs c2UsCisJCQkJCQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQlOVUxMKTsKKworCS8qCisJ ICogV2UgbXVzdCBidW1wIHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgbmV3bHkt Y3JlYXRlZCByZWxhdGlvbgorCSAqIHR1cGxlIHZpc2libGUgZm9yIG9wZW5pbmcuCisJICov CisJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKworCS8qCisJICogT3BlbiB0aGUgbmV3 IHBhcnRpdGlvbiB3aXRoIG5vIGxvY2ssIGJlY2F1c2Ugd2UgYWxyZWFkeSBoYXZlCisJICog QWNjZXNzRXhjbHVzaXZlTG9jayBwbGFjZWQgdGhlcmUgYWZ0ZXIgY3JlYXRpb24uCisJICov CisJbmV3UmVsID0gdGFibGVfb3BlbihuZXdSZWxJZCwgTm9Mb2NrKTsKKworCS8qIEZpbmQg b3IgY3JlYXRlIHdvcmsgcXVldWUgZW50cnkgZm9yIG5ld2x5IGNyZWF0ZWQgdGFibGUuICov CisJbmV3X3BhcnRyZWxfdGFiID0gQVRHZXRRdWV1ZUVudHJ5KHdxdWV1ZSwgbmV3UmVsKTsK KworCS8qCisJICogV2UgaW50ZW5kZWQgdG8gY3JlYXRlIHRoZSBwYXJ0aXRpb24gd2l0aCB0 aGUgc2FtZSBwZXJzaXN0ZW5jZSBhcyB0aGUKKwkgKiBwYXJlbnQgdGFibGUsIGJ1dCB3ZSBz dGlsbCBuZWVkIHRvIHJlY2hlY2sgYmVjYXVzZSB0aGF0IG1pZ2h0IGJlCisJICogYWZmZWN0 ZWQgYnkgdGhlIHNlYXJjaF9wYXRoLiAgSWYgdGhlIHBhcmVudCBpcyBwZXJtYW5lbnQsIHNv IG11c3QgYmUKKwkgKiBhbGwgb2YgaXRzIHBhcnRpdGlvbnMuCisJICovCisJaWYgKG1vZGVs UmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlICE9IFJFTFBFUlNJU1RFTkNFX1RFTVAgJiYK KwkJbmV3UmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RF TVApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVD VF9UWVBFKSwKKwkJCQllcnJtc2coImNhbm5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgcmVsYXRp b24gYXMgcGFydGl0aW9uIG9mIHBlcm1hbmVudCByZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkg ICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShtb2RlbFJlbCkpKTsKKworCS8qIFBlcm1hbmVu dCByZWxzIGNhbm5vdCBiZSBwYXJ0aXRpb25zIGJlbG9uZ2luZyB0byB0ZW1wb3JhcnkgcGFy ZW50ICovCisJaWYgKG5ld1JlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSAhPSBSRUxQRVJT SVNURU5DRV9URU1QICYmCisJCW1vZGVsUmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlID09 IFJFTFBFUlNJU1RFTkNFX1RFTVApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShF UlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQllcnJtc2coImNhbm5vdCBjcmVhdGUg YSBwZXJtYW5lbnQgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHRlbXBvcmFyeSByZWxhdGlv biBcIiVzXCIiLAorCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShtb2RlbFJlbCkp KTsKKworCS8qIENyZWF0ZSBjb25zdHJhaW50cywgZGVmYXVsdCB2YWx1ZXMgYW5kIGdlbmVy YXRlZCB2YWx1ZXMgKi8KKwljcmVhdGVUYWJsZUNvbnN0cmFpbnRzKHdxdWV1ZSwgbmV3X3Bh cnRyZWxfdGFiLCBtb2RlbFJlbCwgbmV3UmVsKTsKKworCS8qCisJICogTmVlZCB0byBjYWxs IENvbW1hbmRDb3VudGVySW5jcmVtZW50LCBzbyBmcmVzaCByZWxjYWNoZSBlbnRyeSBoYXZl IG5ld2x5CisJICogaW5zdGFsbGVkIGNvbnN0cmFpbnQgaW5mby4KKwkgKi8KKwlDb21tYW5k Q291bnRlckluY3JlbWVudCgpOworCisJcmV0dXJuIG5ld1JlbDsKK30KKworLyoKKyAqIG1v dmVNZXJnZWRUYWJsZXNSb3dzOiBzY2FuIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkIChtZXJn aW5nUGFydGl0aW9ucykKKyAqIG9mIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSAocmVsKSBhbmQg bW92ZSByb3dzIGludG8gdGhlIG5ldyBwYXJ0aXRpb24KKyAqIChuZXdQYXJ0UmVsKS4gV2Ug YWxzbyByZWV2YXVsYXRlIGNoZWNrIGNvbnN0cmFpbnRzIGFnYWluc3QgdGhlc2Ugcm93cy4K KyAqLworc3RhdGljIHZvaWQKK21vdmVNZXJnZWRUYWJsZXNSb3dzKExpc3QgKip3cXVldWUs IFJlbGF0aW9uIHJlbCwKKwkJCQkJIExpc3QgKm1lcmdpbmdQYXJ0aXRpb25zLCBSZWxhdGlv biBuZXdQYXJ0UmVsKQoreworCUNvbW1hbmRJZAlteWNpZDsKKwlFU3RhdGUJICAgKmVzdGF0 ZTsKKwlFeHByQ29udGV4dCAqZWNvbnRleHQ7CisJQWx0ZXJlZFRhYmxlSW5mbyAqdGFiOwor CUxpc3RDZWxsICAgKmx0YWI7CisKKwkvKiBUaGUgRlNNIGlzIGVtcHR5LCBzbyBkb24ndCBi b3RoZXIgdXNpbmcgaXQuICovCisJaW50CQkJdGlfb3B0aW9ucyA9IFRBQkxFX0lOU0VSVF9T S0lQX0ZTTTsKKwlCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0ZTsJLyogc3RhdGUgb2YgYnVsayBp bnNlcnRzIGZvciBwYXJ0aXRpb24gKi8KKwlUdXBsZVRhYmxlU2xvdCAqZHN0c2xvdDsKKwor CS8qIEZpbmQgdGhlIHdvcmsgcXVldWUgZW50cnkgZm9yIG5ldyBwYXJ0aXRpb24gdGFibGU6 IG5ld1BhcnRSZWwuICovCisJdGFiID0gQVRHZXRRdWV1ZUVudHJ5KHdxdWV1ZSwgbmV3UGFy dFJlbCk7CisKKwkvKiBHZW5lcmF0ZSB0aGUgY29uc3RyYWludCBhbmQgZGVmYXVsdCBleGVj dXRpb24gc3RhdGVzLiAqLworCWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKKwor CWJ1aWxkRXhwcmVzc2lvbkV4ZWN1dGlvblN0YXRlcyh0YWIsIG5ld1BhcnRSZWwsIGVzdGF0 ZSk7CisKKwllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKKwor CW15Y2lkID0gR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKTsKKworCS8qIFByZXBhcmUgYSBC dWxrSW5zZXJ0U3RhdGUgZm9yIHRhYmxlX3R1cGxlX2luc2VydC4gKi8KKwliaXN0YXRlID0g R2V0QnVsa0luc2VydFN0YXRlKCk7CisKKwkvKiBDcmVhdGUgbmVjZXNzYXJ5IHR1cGxlIHNs b3QuICovCisJZHN0c2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKG5ld1BhcnRSZWwsIE5VTEwp OworCisJZm9yZWFjaF9vaWQobWVyZ2luZ19vaWQsIG1lcmdpbmdQYXJ0aXRpb25zKQorCXsK KwkJVHVwbGVUYWJsZVNsb3QgKnNyY3Nsb3Q7CisJCVR1cGxlQ29udmVyc2lvbk1hcCAqdHVw bGVfbWFwOworCQlUYWJsZVNjYW5EZXNjIHNjYW47CisJCVNuYXBzaG90CXNuYXBzaG90Owor CQlSZWxhdGlvbiAJbWVyZ2luZ1BhcnRpdGlvbjsKKworCQkvKgorCQkgKiBQYXJ0aXRpb24g aXMgYWxyZWFkeSBsb2NrZWQgaW4gdGhlIHRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdl CisJCSAqIGZ1bmN0aW9uLgorCQkgKi8KKwkJbWVyZ2luZ1BhcnRpdGlvbiA9IHRhYmxlX29w ZW4obWVyZ2luZ19vaWQsIE5vTG9jayk7CisKKwkJLyogQ3JlYXRlIHR1cGxlIHNsb3QgZm9y IG5ldyBwYXJ0aXRpb24uICovCisJCXNyY3Nsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShtZXJn aW5nUGFydGl0aW9uLCBOVUxMKTsKKworCQkvKgorCQkgKiBNYXAgY29tcHV0aW5nIGZvciBt b3ZpbmcgYXR0cmlidXRlcyBvZiBtZXJnZWQgcGFydGl0aW9uIHRvIG5ldworCQkgKiBwYXJ0 aXRpb24uCisJCSAqLworCQl0dXBsZV9tYXAgPSBjb252ZXJ0X3R1cGxlc19ieV9uYW1lKFJl bGF0aW9uR2V0RGVzY3IobWVyZ2luZ1BhcnRpdGlvbiksCisJCQkJCQkJCQkJICAgUmVsYXRp b25HZXREZXNjcihuZXdQYXJ0UmVsKSk7CisKKwkJLyogU2NhbiB0aHJvdWdoIHRoZSByb3dz LiAqLworCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3Qo KSk7CisJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4obWVyZ2luZ1BhcnRpdGlvbiwgc25hcHNo b3QsIDAsIE5VTEwpOworCisJCXdoaWxlICh0YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4s IEZvcndhcmRTY2FuRGlyZWN0aW9uLCBzcmNzbG90KSkKKwkJeworCQkJVHVwbGVUYWJsZVNs b3QgKmluc2VydHNsb3Q7CisKKwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJCWlm ICh0dXBsZV9tYXApCisJCQl7CisJCQkJLyogTmVlZCB0byB1c2UgbWFwIHRvIGNvcHkgYXR0 cmlidXRlcy4gKi8KKwkJCQlpbnNlcnRzbG90ID0gZXhlY3V0ZV9hdHRyX21hcF9zbG90KHR1 cGxlX21hcC0+YXR0ck1hcCwgc3Jjc2xvdCwgZHN0c2xvdCk7CisJCQl9CisJCQllbHNlCisJ CQl7CisJCQkJc2xvdF9nZXRhbGxhdHRycyhzcmNzbG90KTsKKworCQkJCS8qIENvcHkgYXR0 cmlidXRlcyBkaXJlY3RseS4gKi8KKwkJCQlpbnNlcnRzbG90ID0gZHN0c2xvdDsKKworCQkJ CUV4ZWNDbGVhclR1cGxlKGluc2VydHNsb3QpOworCisJCQkJbWVtY3B5KGluc2VydHNsb3Qt PnR0c192YWx1ZXMsIHNyY3Nsb3QtPnR0c192YWx1ZXMsCisJCQkJCSAgIHNpemVvZihEYXR1 bSkgKiBzcmNzbG90LT50dHNfbnZhbGlkKTsKKwkJCQltZW1jcHkoaW5zZXJ0c2xvdC0+dHRz X2lzbnVsbCwgc3Jjc2xvdC0+dHRzX2lzbnVsbCwKKwkJCQkJICAgc2l6ZW9mKGJvb2wpICog c3Jjc2xvdC0+dHRzX252YWxpZCk7CisKKwkJCQlFeGVjU3RvcmVWaXJ0dWFsVHVwbGUoaW5z ZXJ0c2xvdCk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBDb25zdHJhaW50cyBhbmQgR0VORVJB VEVEIGV4cHJlc3Npb25zIG1pZ2h0IHJlZmVyZW5jZSB0aGUKKwkJCSAqIHRhYmxlb2lkIGNv bHVtbiwgc28gZmlsbCB0dHNfdGFibGVPaWQgd2l0aCB0aGUgZGVzaXJlZAorCQkJICogdmFs dWUuICAoV2UgbXVzdCBkbyB0aGlzIGVhY2ggdGltZSwgYmVjYXVzZSBpdCBnZXRzCisJCQkg KiBvdmVyd3JpdHRlbiB3aXRoIG5ld3JlbCdzIE9JRCBkdXJpbmcgc3RvcmluZy4pCisJCQkg Ki8KKwkJCWluc2VydHNsb3QtPnR0c190YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQobmV3 UGFydFJlbCk7CisKKwkJCS8qCisJCQkgKiBOb3csIGV2YWx1YXRlIGFueSBnZW5lcmF0ZWQg ZXhwcmVzc2lvbnMgd2hvc2UgaW5wdXRzIGNvbWUgZnJvbQorCQkJICogdGhlIG5ldyB0dXBs ZS4gIFdlIGFzc3VtZSB0aGVzZSBjb2x1bW5zIHdvbid0IHJlZmVyZW5jZSBlYWNoCisJCQkg KiBvdGhlciwgc28gdGhhdCB0aGVyZSdzIG5vIG9yZGVyaW5nIGRlcGVuZGVuY3kuCisJCQkg Ki8KKwkJCWV2YWx1YXRlR2VuZXJhdGVkRXhwcmVzc2lvbnNBbmRDaGVja0NvbnN0cmFpbnRz KHRhYiwgbmV3UGFydFJlbCwKKwkJCQkJCQkJCQkJCQkJCWluc2VydHNsb3QsIGVjb250ZXh0 KTsKKworCQkJLyogV3JpdGUgdGhlIHR1cGxlIG91dCB0byB0aGUgbmV3IHJlbGF0aW9uLiAq LworCQkJdGFibGVfdHVwbGVfaW5zZXJ0KG5ld1BhcnRSZWwsIGluc2VydHNsb3QsIG15Y2lk LAorCQkJCQkJCSAgIHRpX29wdGlvbnMsIGJpc3RhdGUpOworCisJCQlSZXNldEV4cHJDb250 ZXh0KGVjb250ZXh0KTsKKwkJfQorCisJCXRhYmxlX2VuZHNjYW4oc2Nhbik7CisJCVVucmVn aXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisKKwkJaWYgKHR1cGxlX21hcCkKKwkJCWZyZWVf Y29udmVyc2lvbl9tYXAodHVwbGVfbWFwKTsKKworCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFi bGVTbG90KHNyY3Nsb3QpOworCQl0YWJsZV9jbG9zZShtZXJnaW5nUGFydGl0aW9uLCBOb0xv Y2spOworCX0KKworCUZyZWVFeGVjdXRvclN0YXRlKGVzdGF0ZSk7CisJRXhlY0Ryb3BTaW5n bGVUdXBsZVRhYmxlU2xvdChkc3RzbG90KTsKKwlGcmVlQnVsa0luc2VydFN0YXRlKGJpc3Rh dGUpOworCisJdGFibGVfZmluaXNoX2J1bGtfaW5zZXJ0KG5ld1BhcnRSZWwsIHRpX29wdGlv bnMpOworCisJLyoKKwkgKiBXZSBkb24ndCBuZWVkIHByb2Nlc3MgdGhpcyBuZXdQYXJ0UmVs IHNpbmNlIHdlIGFscmVhZHkgcHJvY2Vzc2VkIGluIGhlcmUsCisJICogc28gZGVsZXRlIHRo ZSBBTFRFUiBUQUJMRSBxdWV1ZSBvZiBpdC4KKwkgKi8KKwlmb3JlYWNoKGx0YWIsICp3cXVl dWUpCisJeworCQl0YWIgPSAoQWx0ZXJlZFRhYmxlSW5mbyAqKSBsZmlyc3QobHRhYik7CisJ CWlmICh0YWItPnJlbGlkID09IFJlbGF0aW9uR2V0UmVsaWQobmV3UGFydFJlbCkpCisJCQkq d3F1ZXVlID0gbGlzdF9kZWxldGVfY2VsbCgqd3F1ZXVlLCBsdGFiKTsKKwl9Cit9CisKKy8q CisgKiBkZXRhY2hQYXJ0aXRpb25UYWJsZTogZGV0YWNoIHBhcnRpdGlvbiAiY2hpbGRfcmVs IiBmcm9tIHBhcnRpdGlvbmVkIHRhYmxlCisgKiAicGFyZW50X3JlbCIgd2l0aCBkZWZhdWx0 IHBhcnRpdGlvbiBpZGVudGlmaWVyICJkZWZhdWx0UGFydE9pZCIKKyAqLworc3RhdGljIHZv aWQKK2RldGFjaFBhcnRpdGlvblRhYmxlKFJlbGF0aW9uIHBhcmVudF9yZWwsIFJlbGF0aW9u IGNoaWxkX3JlbCwgT2lkIGRlZmF1bHRQYXJ0T2lkKQoreworCS8qIFJlbW92ZSB0aGUgcGdf aW5oZXJpdHMgcm93IGZpcnN0LiAqLworCVJlbW92ZUluaGVyaXRhbmNlKGNoaWxkX3JlbCwg cGFyZW50X3JlbCwgZmFsc2UpOworCisJLyoKKwkgKiBEZXRhY2hpbmcgdGhlIHBhcnRpdGlv biBtaWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJICog aGF2ZSBhIHZhbGlkIHNuYXBzaG90LgorCSAqLworCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRU cmFuc2FjdGlvblNuYXBzaG90KCkpOworCisJLyogRG8gdGhlIGZpbmFsIHBhcnQgb2YgZGV0 YWNoaW5nLiAqLworCURldGFjaFBhcnRpdGlvbkZpbmFsaXplKHBhcmVudF9yZWwsIGNoaWxk X3JlbCwgZmFsc2UsIGRlZmF1bHRQYXJ0T2lkKTsKKworCVBvcEFjdGl2ZVNuYXBzaG90KCk7 Cit9CisKKy8qCisgKiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyA8cGFy dGl0aW9uLWxpc3Q+IElOVE8gPHBhcnRpdGlvbi1uYW1lPgorICovCitzdGF0aWMgdm9pZAor QVRFeGVjTWVyZ2VQYXJ0aXRpb25zKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8g KnRhYiwgUmVsYXRpb24gcmVsLAorCQkJCQkgIFBhcnRpdGlvbkNtZCAqY21kLCBBbHRlclRh YmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7CisJUmVsYXRpb24JbmV3UGFydFJlbDsK KwlMaXN0CSAgICptZXJnaW5nUGFydGl0aW9ucyA9IE5JTDsKKwlPaWQJCQlkZWZhdWx0UGFy dE9pZDsKKwlPaWQJCQlleGlzdGluZ1JlbGlkOworCU9pZAkJCW93bmVySWQgPSBJbnZhbGlk T2lkOworCU9pZAkJCXNhdmVfdXNlcmlkOworCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CisJ aW50CQkJc2F2ZV9uZXN0bGV2ZWw7CisKKwkvKgorCSAqIENoZWNrIG93bmVyc2hpcCBvZiBt ZXJnZWQgcGFydGl0aW9ucyDigJQgcGFydGl0aW9ucyB3aXRoIGRpZmZlcmVudCBvd25lcnMK KwkgKiBjYW5ub3QgYmUgbWVyZ2VkLiBBbHNvLCBjb2xsZWN0IHRoZSBPSURzIG9mIHRoZXNl IHBhcnRpdGlvbnMgZHVyaW5nIHRoZQorCSAqIGNoZWNrLgorCSovCisJZm9yZWFjaF9ub2Rl KFJhbmdlVmFyLCBuYW1lLCBjbWQtPnBhcnRsaXN0KQorCXsKKwkJUmVsYXRpb24JbWVyZ2lu Z1BhcnRpdGlvbjsKKworCQkvKgorCQkgKiBXZSBhcmUgZ29pbmcgdG8gZGV0YWNoIGFuZCBy ZW1vdmUgdGhpcyBwYXJ0aXRpb24uICBXZSBhbHJlYWR5IHRvb2sKKwkJICogQWNjZXNzRXhj bHVzaXZlTG9jayBsb2NrIG9uIHRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlLCBzbyBo ZXJlLAorCQkgKiBOb0xvY2sgaXMgZmluZS4KKwkJICovCisJCW1lcmdpbmdQYXJ0aXRpb24g PSB0YWJsZV9vcGVucnZfZXh0ZW5kZWQobmFtZSwgTm9Mb2NrLCBmYWxzZSk7CisJCUFzc2Vy dChDaGVja1JlbGF0aW9uTG9ja2VkQnlNZShtZXJnaW5nUGFydGl0aW9uLCBBY2Nlc3NFeGNs dXNpdmVMb2NrLCBmYWxzZSkpOworCisJCWlmIChPaWRJc1ZhbGlkKG93bmVySWQpKQorCQl7 CisJCQkvKiBEbyB0aGUgcGFydGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZmZXJlbnQg b3duZXJzPyAqLworCQkJaWYgKG93bmVySWQgIT0gbWVyZ2luZ1BhcnRpdGlvbi0+cmRfcmVs LT5yZWxvd25lcikKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQllcnJtc2coInBhcnRpdGlvbnMgYmVp bmcgbWVyZ2VkIGhhdmUgZGlmZmVyZW50IG93bmVycyIpKTsKKwkJfQorCQllbHNlCisJCQlv d25lcklkID0gbWVyZ2luZ1BhcnRpdGlvbi0+cmRfcmVsLT5yZWxvd25lcjsKKworCQkvKiBT dG9yZSBhIG5leHQgbWVyZ2luZyBwYXJ0aXRpb24gaW50byB0aGUgbGlzdC4gKi8KKwkJbWVy Z2luZ1BhcnRpdGlvbnMgPSBsYXBwZW5kX29pZChtZXJnaW5nUGFydGl0aW9ucywKKwkJCQkJ CQkJCQlSZWxhdGlvbkdldFJlbGlkKG1lcmdpbmdQYXJ0aXRpb24pKTsKKworCQl0YWJsZV9j bG9zZShtZXJnaW5nUGFydGl0aW9uLCBOb0xvY2spOworCX0KKworCS8qCisJICogTG9vayB1 cCBleGlzdGluZyByZWxhdGlvbiBieSBuZXcgcGFydGl0aW9uIG5hbWUsIGNoZWNrIHdlIGhh dmUKKwkgKiBwZXJtaXNzaW9uIHRvIGNyZWF0ZSB0aGVyZSwgbG9jayBpdCBhZ2FpbnN0IGNv bmN1cnJlbnQgZHJvcCwgYW5kIG1hcmsKKwkgKiBzdG10LT5yZWxhdGlvbiBhcyBSRUxQRVJT SVNURU5DRV9URU1QIGlmIGEgdGVtcG9yYXJ5IG5hbWVzcGFjZSBpcworCSAqIHNlbGVjdGVk LgorCSAqLworCWNtZC0+bmFtZS0+cmVscGVyc2lzdGVuY2UgPSByZWwtPnJkX3JlbC0+cmVs cGVyc2lzdGVuY2U7CisJUmFuZ2VWYXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKGNt ZC0+bmFtZSwgTm9Mb2NrLCAmZXhpc3RpbmdSZWxpZCk7CisKKwkvKgorCSAqIENoZWNrIGlm IHRoaXMgbmFtZSBpcyBhbHJlYWR5IHRha2VuLiAgVGhpcyBoZWxwcyB1cyB0byBkZXRlY3Qg dGhlCisJICogc2l0dWF0aW9uIHdoZW4gb25lIG9mIHRoZSBtZXJnaW5nIHBhcnRpdGlvbnMg aGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhlCisJICogbmV3IHBhcnRpdGlvbi4gIE90aGVyd2lz ZSwgdGhpcyB3b3VsZCBmYWlsIGxhdGVyIG9uIGFueXdheSBidXQgY2F0Y2hpbmcKKwkgKiB0 aGlzIGhlcmUgYWxsb3dzIHVzIHRvIGVtaXQgYSBuaWNlciBlcnJvciBtZXNzYWdlLgorCSAq LworCWlmIChPaWRJc1ZhbGlkKGV4aXN0aW5nUmVsaWQpKQorCXsKKwkJT2lkCQluZXdQYXJ0 aXRpb25PaWQgPSBJbnZhbGlkT2lkOworCisJCWZvcmVhY2hfb2lkKG1lcmdpbmdQYXJ0aXRp b25PaWQsIG1lcmdpbmdQYXJ0aXRpb25zKQorCQl7CisJCQlpZiAobWVyZ2luZ1BhcnRpdGlv bk9pZCA9PSBleGlzdGluZ1JlbGlkKQorCQkJeworCQkJCW5ld1BhcnRpdGlvbk9pZCA9IG1l cmdpbmdQYXJ0aXRpb25PaWQ7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQlpZiAoT2lk SXNWYWxpZChuZXdQYXJ0aXRpb25PaWQpKQorCQl7CisJCQkvKgorCQkJICogVGhlIG5ldyBw YXJ0aXRpb24gaGFzIHRoZSBzYW1lIG5hbWUgYXMgb25lIG9mIG1lcmdpbmcKKwkJCSAqIHBh cnRpdGlvbnMuCisJCQkgKi8KKwkJCWNoYXIJCXRtcFJlbE5hbWVbTkFNRURBVEFMRU5dOwor CisJCQkvKiBHZW5lcmF0ZSB0ZW1wb3JhcnkgbmFtZS4gKi8KKwkJCXNwcmludGYodG1wUmVs TmFtZSwgIm1lcmdlLSV1LSVYLXRtcCIsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgTXlQcm9j UGlkKTsKKworCQkJLyoKKwkJCSAqIFJlbmFtZSB0aGUgZXhpc3RpbmcgcGFydGl0aW9uIHdp dGggYSB0ZW1wb3JhcnkgbmFtZSwgbGVhdmluZyBpdAorCQkJICogZnJlZSBmb3IgdGhlIG5l dyBwYXJ0aXRpb24uICBXZSBkb24ndCBuZWVkIHRvIGNhcmUgYWJvdXQgdGhpcworCQkJICog aW4gdGhlIGZ1dHVyZSBiZWNhdXNlIHdlJ3JlIGdvaW5nIHRvIGV2ZW50dWFsbHkgZHJvcCB0 aGUKKwkJCSAqIGV4aXN0aW5nIHBhcnRpdGlvbiBhbnl3YXkuCisJCQkgKi8KKwkJCVJlbmFt ZVJlbGF0aW9uSW50ZXJuYWwobmV3UGFydGl0aW9uT2lkLCB0bXBSZWxOYW1lLCB0cnVlLCBm YWxzZSk7CisKKwkJCS8qCisJCQkgKiBXZSBtdXN0IGJ1bXAgdGhlIGNvbW1hbmQgY291bnRl ciB0byBtYWtlIHRoZSBuZXcgcGFydGl0aW9uCisJCQkgKiB0dXBsZSB2aXNpYmxlIGZvciBy ZW5hbWUuCisJCQkgKi8KKwkJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisJCX0KKwkJ ZWxzZQorCQl7CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQ TElDQVRFX1RBQkxFKSwKKwkJCQkJZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBl eGlzdHMiLCBjbWQtPm5hbWUtPnJlbG5hbWUpKTsKKwkJfQorCX0KKworCWRlZmF1bHRQYXJ0 T2lkID0KKwkJZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRlc2MoUmVsYXRpb25HZXRQYXJ0 aXRpb25EZXNjKHJlbCwgdHJ1ZSkpOworCisJLyoKKwkgKiBEZXRhY2ggYWxsIG1lcmdlZCBw YXJ0aXRpb25zLgorCSAqCisJICogUGVyZm9ybSBhIHByZWxpbWluYXJ5IGNoZWNrIHRvIGRl dGVybWluZSB3aGV0aGVyIGl0J3Mgc2FmZSB0byBkcm9wIGFsbAorCSAqIG1lcmdpbmcgcGFy dGl0aW9ucyBiZWZvcmUgd2UgYWN0dWFsbHkgZG8gc28gbGF0ZXIuIEFmdGVyIG1lcmdpbmcg cm93cworCSAqIGludG8gdGhlIG5ldyBwYXJ0aXRpb25zIHZpYSBtb3ZlTWVyZ2VkVGFibGVz Um93cywgYWxsIG9sZCBwYXJ0aXRpb25zIG5lZWQKKwkgKiBiZSBkcm9wcGVkLiBIb3dldmVy LCBzaW5jZSB0aGUgZHJvcCBiZWhhdmlvciBpcyBEUk9QX1JFU1RSSUNUIGFuZCB0aGUKKwkg KiBtZXJnZSBwcm9jZXNzIChtb3ZlTWVyZ2VkVGFibGVzUm93cykgY2FuIGJlIHRpbWUtY29u c3VtaW5nLCBwZXJmb3JtaW5nIGFuCisJICogZWFybHkgY2hlY2sgb24gdGhlIGRyb3AgZWxp Z2liaWxpdHkgb2Ygb2xkIHBhcnRpdGlvbnMgaXMgcHJlZmVyYWJsZS4KKwkgKi8KKwlmb3Jl YWNoX29pZChtZXJnaW5nUGFydGl0aW9uT2lkLCBtZXJnaW5nUGFydGl0aW9ucykKKwl7CisJ CVJlbGF0aW9uCWNoaWxkX3JlbDsKKworCQljaGlsZF9yZWwgPSB0YWJsZV9vcGVuKG1lcmdp bmdQYXJ0aXRpb25PaWQsIE5vTG9jayk7CisKKwkJZGV0YWNoUGFydGl0aW9uVGFibGUocmVs LCBjaGlsZF9yZWwsIGRlZmF1bHRQYXJ0T2lkKTsKKworCQl0YWJsZV9jbG9zZShjaGlsZF9y ZWwsIE5vTG9jayk7CisJfQorCisJZm9yZWFjaF9vaWQobWVyZ2luZ1BhcnRpdGlvbk9pZCwg bWVyZ2luZ1BhcnRpdGlvbnMpCisJeworCQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKworCQkv KiBHZXQgb2lkIG9mIHRoZSBsYXRlciB0byBiZSBkcm9wcGVkIHJlbGF0aW9uICovCisJCW9i amVjdC5vYmplY3RJZCA9IG1lcmdpbmdQYXJ0aXRpb25PaWQ7CisJCW9iamVjdC5jbGFzc0lk ID0gUmVsYXRpb25SZWxhdGlvbklkOworCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOworCisJ CXBlcmZvcm1EZWxldGlvbkNoZWNrKCZvYmplY3QsIERST1BfUkVTVFJJQ1QsIFBFUkZPUk1f REVMRVRJT05fSU5URVJOQUwpOworCX0KKworCS8qIENyZWF0ZSB0YWJsZSBmb3IgbmV3IHBh cnRpdGlvbiwgdXNlIHBhcnRpdGlvbmVkIHRhYmxlIGFzIG1vZGVsLiAqLworCUFzc2VydChP aWRJc1ZhbGlkKG93bmVySWQpKTsKKwluZXdQYXJ0UmVsID0gY3JlYXRlUGFydGl0aW9uVGFi bGUod3F1ZXVlLCBjbWQtPm5hbWUsIHJlbCwgb3duZXJJZCk7CisKKwkvKgorCSAqIFN3aXRj aCB0byB0aGUgdGFibGUgb3duZXIncyB1c2VyaWQsIHNvIHRoYXQgYW55IGluZGV4IGZ1bmN0 aW9ucyBhcmUgcnVuCisJICogYXMgdGhhdCB1c2VyLiAgQWxzbyBsb2NrIGRvd24gc2VjdXJp dHktcmVzdHJpY3RlZCBvcGVyYXRpb25zIGFuZAorCSAqIGFycmFuZ2UgdG8gbWFrZSBHVUMg dmFyaWFibGUgY2hhbmdlcyBsb2NhbCB0byB0aGlzIGNvbW1hbmQuCisJICoKKwkgKiBOZWVk IHRvIGRvIGl0IGFmdGVyIGRldGVybWluZSBuYW1lc3BhY2UgaW4gY3JlYXRlUGFydGl0aW9u VGFibGUgY2FsbC4KKwkgKi8KKwlHZXRVc2VySWRBbmRTZWNDb250ZXh0KCZzYXZlX3VzZXJp ZCwgJnNhdmVfc2VjX2NvbnRleHQpOworCVNldFVzZXJJZEFuZFNlY0NvbnRleHQob3duZXJJ ZCwKKwkJCQkJCSAgIHNhdmVfc2VjX2NvbnRleHQgfCBTRUNVUklUWV9SRVNUUklDVEVEX09Q RVJBVElPTik7CisJc2F2ZV9uZXN0bGV2ZWwgPSBOZXdHVUNOZXN0TGV2ZWwoKTsKKwlSZXN0 cmljdFNlYXJjaFBhdGgoKTsKKworCS8qIENvcHkgZGF0YSBmcm9tIG1lcmdlZCBwYXJ0aXRp b25zIHRvIG5ldyBwYXJ0aXRpb24uICovCisJbW92ZU1lcmdlZFRhYmxlc1Jvd3Mod3F1ZXVl LCByZWwsIG1lcmdpbmdQYXJ0aXRpb25zLCBuZXdQYXJ0UmVsKTsKKworCS8qIERyb3AgdGhl IGN1cnJlbnQgcGFydGl0aW9ucyBiZWZvcmUgYXR0YWNoaW5nIHRoZSBuZXcgb25lLiAqLwor CWZvcmVhY2hfb2lkKG1lcmdpbmdQYXJ0aXRpb25PaWQsIG1lcmdpbmdQYXJ0aXRpb25zKQor CXsKKwkJT2JqZWN0QWRkcmVzcyBvYmplY3Q7CisKKwkJb2JqZWN0Lm9iamVjdElkID0gbWVy Z2luZ1BhcnRpdGlvbk9pZDsKKwkJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9u SWQ7CisJCW9iamVjdC5vYmplY3RTdWJJZCA9IDA7CisKKwkJcGVyZm9ybURlbGV0aW9uKCZv YmplY3QsIERST1BfUkVTVFJJQ1QsIDApOworCX0KKworCWxpc3RfZnJlZShtZXJnaW5nUGFy dGl0aW9ucyk7CisKKwkvKgorCSAqIEF0dGFjaCBhIG5ldyBwYXJ0aXRpb24gdG8gdGhlIHBh cnRpdGlvbmVkIHRhYmxlLiB3cXVldWUgPSBOVUxMOgorCSAqIHZlcmlmaWNhdGlvbiBmb3Ig ZWFjaCBjbG9uZWQgY29uc3RyYWludCBpcyBub3QgbmVlZGVkLgorCSAqLworCWF0dGFjaFBh cnRpdGlvblRhYmxlKE5VTEwsIHJlbCwgbmV3UGFydFJlbCwgY21kLT5ib3VuZCk7CisKKwkv KiBLZWVwIHRoZSBsb2NrIHVudGlsIGNvbW1pdC4gKi8KKwl0YWJsZV9jbG9zZShuZXdQYXJ0 UmVsLCBOb0xvY2spOworCisJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRl ZCBieSBpbmRleCBmdW5jdGlvbnMuICovCisJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25l c3RsZXZlbCk7CisKKwkvKiBSZXN0b3JlIHVzZXJpZCBhbmQgc2VjdXJpdHkgY29udGV4dC4g Ki8KKwlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHNhdmVfdXNlcmlkLCBzYXZlX3NlY19jb250 ZXh0KTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDUwZjUzMTU5ZDUuLjQ2YmJkY2JjNzQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueQpAQCAtNzU1LDcgKzc1NSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVj dXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpx dWVyeSk7CiAJT1JERVIgT1JESU5BTElUWSBPVEhFUlMgT1VUX1AgT1VURVJfUAogCU9WRVIg T1ZFUkxBUFMgT1ZFUkxBWSBPVkVSUklESU5HIE9XTkVEIE9XTkVSCiAKLQlQQVJBTExFTCBQ QVJBTUVURVIgUEFSU0VSIFBBUlRJQUwgUEFSVElUSU9OIFBBU1NJTkcgUEFTU1dPUkQgUEFU SAorCVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFSVElU SU9OUyBQQVNTSU5HIFBBU1NXT1JEIFBBVEgKIAlQRVJJT0QgUExBQ0lORyBQTEFOIFBMQU5T IFBPTElDWQogCVBPU0lUSU9OIFBSRUNFRElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJFUEFS RSBQUkVQQVJFRCBQUklNQVJZCiAJUFJJT1IgUFJJVklMRUdFUyBQUk9DRURVUkFMIFBST0NF RFVSRSBQUk9DRURVUkVTIFBST0dSQU0gUFVCTElDQVRJT04KQEAgLTIzMzEsNiArMjMzMSw3 IEBAIHBhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9BdHRhY2hQYXJ0aXRp b247CiAJCQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJvdW5kID0gJDQ7CisJCQkJ CWNtZC0+cGFydGxpc3QgPSBOSUw7CiAJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZhbHNlOwog CQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAKQEAgLTIzNDUsNiArMjM0Niw3IEBAIHBh cnRpdGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9EZXRhY2hQYXJ0aXRpb247CiAJ CQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJY21k LT5wYXJ0bGlzdCA9IE5JTDsKIAkJCQkJY21kLT5jb25jdXJyZW50ID0gJDQ7CiAJCQkJCW4t PmRlZiA9IChOb2RlICopIGNtZDsKIApAQCAtMjM1OCw2ICsyMzYwLDIxIEBAIHBhcnRpdGlv bl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZTsK IAkJCQkJY21kLT5uYW1lID0gJDM7CiAJCQkJCWNtZC0+Ym91bmQgPSBOVUxMOworCQkJCQlj bWQtPnBhcnRsaXN0ID0gTklMOworCQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKKwkJ CQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJ fQorCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IE1FUkdFIFBBUlRJVElPTlMgKCkgSU5UTyA8 cGFydGl0aW9uX25hbWU+ICovCisJCQl8IE1FUkdFIFBBUlRJVElPTlMgJygnIHF1YWxpZmll ZF9uYW1lX2xpc3QgJyknIElOVE8gcXVhbGlmaWVkX25hbWUKKwkJCQl7CisJCQkJCUFsdGVy VGFibGVDbWQgKm4gPSBtYWtlTm9kZShBbHRlclRhYmxlQ21kKTsKKwkJCQkJUGFydGl0aW9u Q21kICpjbWQgPSBtYWtlTm9kZShQYXJ0aXRpb25DbWQpOworCisJCQkJCW4tPnN1YnR5cGUg PSBBVF9NZXJnZVBhcnRpdGlvbnM7CisJCQkJCWNtZC0+bmFtZSA9ICQ3OworCQkJCQljbWQt PmJvdW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9ICQ0OwogCQkJCQljbWQtPmNv bmN1cnJlbnQgPSBmYWxzZTsKIAkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOwogCQkJCQkk JCA9IChOb2RlICopIG47CkBAIC0yMzc0LDYgKzIzOTEsNyBAQCBpbmRleF9wYXJ0aXRpb25f Y21kOgogCQkJCQluLT5zdWJ0eXBlID0gQVRfQXR0YWNoUGFydGl0aW9uOwogCQkJCQljbWQt Pm5hbWUgPSAkMzsKIAkJCQkJY21kLT5ib3VuZCA9IE5VTEw7CisJCQkJCWNtZC0+cGFydGxp c3QgPSBOSUw7CiAJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZhbHNlOwogCQkJCQluLT5kZWYg PSAoTm9kZSAqKSBjbWQ7CiAKQEAgLTE3ODc2LDYgKzE3ODk0LDcgQEAgdW5yZXNlcnZlZF9r ZXl3b3JkOgogCQkJfCBQQVJTRVIKIAkJCXwgUEFSVElBTAogCQkJfCBQQVJUSVRJT04KKwkJ CXwgUEFSVElUSU9OUwogCQkJfCBQQVNTSU5HCiAJCQl8IFBBU1NXT1JECiAJCQl8IFBBVEgK QEAgLTE4NTAzLDYgKzE4NTIyLDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBQQVJT RVIKIAkJCXwgUEFSVElBTAogCQkJfCBQQVJUSVRJT04KKwkJCXwgUEFSVElUSU9OUwogCQkJ fCBQQVNTSU5HCiAJCQl8IFBBU1NXT1JECiAJCQl8IFBBVEgKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfdXRpbGNtZC5jCmluZGV4IDYyMDE1NDMxZmQuLmY1NWFkMTc1MjggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgImNh dGFsb2cvaGVhcC5oIgogI2luY2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKICNpbmNsdWRlICJj YXRhbG9nL25hbWVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGFydGl0aW9uLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19hbS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0 aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb25zdHJhaW50LmgiCkBAIC01OCw2ICs1 OSw4IEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3R5cGUuaCIKICNpbmNsdWRlICJwYXJz ZXIvcGFyc2VfdXRpbGNtZC5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXIuaCIKKyNpbmNs dWRlICJwYXJ0aXRpb25pbmcvcGFydGRlc2MuaCIKKyNpbmNsdWRlICJwYXJ0aXRpb25pbmcv cGFydGJvdW5kcy5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZU1hbmlwLmgiCiAjaW5j bHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKQEAgLTM0 ODgsNiArMzQ5MSwxMzggQEAgdHJhbnNmb3JtUnVsZVN0bXQoUnVsZVN0bXQgKnN0bXQsIGNv bnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogfQogCiAKKy8qCisgKiBjaGVja1BhcnRpdGlvbgor ICogQ2hlY2sgd2hldGhlciBwYXJ0UmVsT2lkIGlzIGEgbGVhZiBwYXJ0aXRpb24gb2YgdGhl IHBhcmVudCB0YWJsZSAocmVsKS4KKyAqIFBhcnRpdGlvbiB3aXRoIE9JRCBwYXJ0UmVsT2lk IG11c3QgYmUgbG9ja2VkIGJlZm9yZSBmdW5jdGlvbiBjYWxsLgorICovCitzdGF0aWMgdm9p ZAorY2hlY2tQYXJ0aXRpb24oUmVsYXRpb24gcmVsLCBPaWQgcGFydFJlbE9pZCkKK3sKKwlS ZWxhdGlvbglwYXJ0UmVsOworCisJcGFydFJlbCA9IHRhYmxlX29wZW4ocGFydFJlbE9pZCwg Tm9Mb2NrKTsKKworCWlmIChwYXJ0UmVsLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9S RUxBVElPTikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdf T0JKRUNUX1RZUEUpLAorCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHRhYmxlIiwgUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUocGFydFJlbCkpLAorCQkJCWVycmhpbnQoIkFMVEVSIFRB QkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9u J3QgaGF2ZSBzdWItcGFydGl0aW9ucyIpKTsKKworCWlmICghcGFydFJlbC0+cmRfcmVsLT5y ZWxpc3BhcnRpdGlvbikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVf V1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHBhcnRp dGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSBcIiVzXCIiLAorCQkJCQkgICBSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShwYXJ0UmVsKSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSks CisJCQkJZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9u bHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikpOworCisJ aWYgKGdldF9wYXJ0aXRpb25fcGFyZW50KHBhcnRSZWxPaWQsIGZhbHNlKSAhPSBSZWxhdGlv bkdldFJlbGlkKHJlbCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RF X1VOREVGSU5FRF9UQUJMRSksCisJCQkJZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgaXMgbm90 IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCSAgIFJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKHBhcnRSZWwpLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSwK KwkJCQllcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25s eSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7CisKKwl0 YWJsZV9jbG9zZShwYXJ0UmVsLCBOb0xvY2spOworfQorCisvKgorICogdHJhbnNmb3JtUGFy dGl0aW9uQ21kRm9yTWVyZ2UKKyAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJMRSAuLi4gTUVS R0UgUEFSVElUSU9OUyBjb21tYW5kCisgKgorICogRG9lcyBzaW1wbGUgY2hlY2tzIGZvciBt ZXJnZWQgcGFydGl0aW9ucy4gQ2FsY3VsYXRlcyBib3VuZCBvZiByZXN1bHRpbmcKKyAqIHBh cnRpdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK3RyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1l cmdlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqcGFydGNtZCkKK3sK KwlPaWQJCQlkZWZhdWx0UGFydE9pZDsKKwlPaWQJCQlwYXJ0T2lkOworCVJlbGF0aW9uCXBh cmVudCA9IGN4dC0+cmVsOworCVBhcnRpdGlvbktleSBrZXk7CisJY2hhcgkJc3RyYXRlZ3k7 CisJTGlzdENlbGwgICAqbGlzdHB0ciwKKwkJCSAgICpsaXN0cHRyMjsKKwlib29sCQlpc0Rl ZmF1bHRQYXJ0ID0gZmFsc2U7CisJTGlzdAkgICAqcGFydE9pZHMgPSBOSUw7CisKKwlrZXkg PSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCXN0cmF0ZWd5ID0gZ2V0X3Bh cnRpdGlvbl9zdHJhdGVneShrZXkpOworCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9T VFJBVEVHWV9IQVNIKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCWVycm1zZygicGFydGl0aW9uIG9mIGhhc2gt cGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIG1lcmdlZCIpKTsKKworCS8qIElzIGN1cnJl bnQgcGFydGl0aW9uIGEgREVGQVVMVCBwYXJ0aXRpb24/ICovCisJZGVmYXVsdFBhcnRPaWQg PSBnZXRfZGVmYXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlvbkRl c2MocGFyZW50LCB0cnVlKSk7CisKKwlmb3JlYWNoKGxpc3RwdHIsIHBhcnRjbWQtPnBhcnRs aXN0KQorCXsKKwkJUmFuZ2VWYXIgICAqbmFtZSA9IChSYW5nZVZhciAqKSBsZmlyc3QobGlz dHB0cik7CisKKwkJLyogUGFydGl0aW9ucyBpbiB0aGUgbGlzdCBzaG91bGQgaGF2ZSBkaWZm ZXJlbnQgbmFtZXMuICovCisJCWZvcl9lYWNoX2NlbGwobGlzdHB0cjIsIHBhcnRjbWQtPnBh cnRsaXN0LCBsbmV4dChwYXJ0Y21kLT5wYXJ0bGlzdCwgbGlzdHB0cikpCisJCXsKKwkJCVJh bmdlVmFyICAgKm5hbWUyID0gKFJhbmdlVmFyICopIGxmaXJzdChsaXN0cHRyMik7CisKKwkJ CWlmIChlcXVhbChuYW1lLCBuYW1lMikpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVy cmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQkJZXJybXNnKCJwYXJ0aXRp b24gd2l0aCBuYW1lIFwiJXNcIiBpcyBhbHJlYWR5IHVzZWQiLCBuYW1lLT5yZWxuYW1lKSwK KwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgbmFtZTItPmxvY2F0aW9u KSk7CisJCX0KKworCQkvKgorCQkgKiBTZWFyY2ggREVGQVVMVCBwYXJ0aXRpb24gaW4gdGhl IGxpc3QuIE9wZW4gYW5kIGxvY2sgcGFydGl0aW9ucyBiZWZvcmUKKwkJICogY2FsY3VsYXRp bmcgdGhlIGJvdW5kYXJ5IGZvciByZXN1bHRpbmcgcGFydGl0aW9uLCB3ZSBhbHNvIGNoZWNr IGZvcgorCQkgKiBvd25lcnNoaXAgYWxvbmcgdGhlIHdheS4gIFdlIG5lZWQgdG8gdXNlIEFj Y2Vzc0V4Y2x1c2l2ZUxvY2sgaGVyZSwKKwkJICogYmVjYXVzZSB0aGVzZSBtZXJnZWQgcGFy dGl0aW9ucyB3aWxsIGJlIGRldGFjaGVkIHRoZW4gZHJvcHBlZCBpbgorCQkgKiBBVEV4ZWNN ZXJnZVBhcnRpdGlvbnMuCisJCSAqLworCQlwYXJ0T2lkID0gUmFuZ2VWYXJHZXRSZWxpZEV4 dGVuZGVkKG5hbWUsCisJCQkJCQkJCQkJICAgQWNjZXNzRXhjbHVzaXZlTG9jaywKKwkJCQkJ CQkJCQkgICBmYWxzZSwKKwkJCQkJCQkJCQkgICBSYW5nZVZhckNhbGxiYWNrT3duc1JlbGF0 aW9uLAorCQkJCQkJCQkJCSAgIE5VTEwpOworCisJCWlmIChwYXJ0T2lkID09IGRlZmF1bHRQ YXJ0T2lkKQorCQkJaXNEZWZhdWx0UGFydCA9IHRydWU7CisKKwkJLyoKKwkJICogRXh0ZW5k ZWQgY2hlY2sgYmVjYXVzZSB0aGUgc2FtZSBwYXJ0aXRpb24gY2FuIGhhdmUgZGlmZmVyZW50 IG5hbWVzCisJCSAqIChmb3IgZXhhbXBsZSwgInBhcnRfbmFtZSIgYW5kICJwdWJsaWMucGFy dF9uYW1lIikuCisJCSAqLworCQlmb3JlYWNoKGxpc3RwdHIyLCBwYXJ0T2lkcykKKwkJewor CQkJT2lkCQljdXJPaWQgPSBsZmlyc3Rfb2lkKGxpc3RwdHIyKTsKKworCQkJaWYgKGN1ck9p ZCA9PSBwYXJ0T2lkKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNP REVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJCWVycm1zZygicGFydGl0aW9uIHdpdGggbmFt ZSBcIiVzXCIgaXMgYWxyZWFkeSB1c2VkIiwgbmFtZS0+cmVsbmFtZSksCisJCQkJCQlwYXJz ZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIG5hbWUtPmxvY2F0aW9uKSk7CisJCX0KKwor CQljaGVja1BhcnRpdGlvbihwYXJlbnQsIHBhcnRPaWQpOworCisJCXBhcnRPaWRzID0gbGFw cGVuZF9vaWQocGFydE9pZHMsIHBhcnRPaWQpOworCX0KKworCS8qIEFsbG9jYXRlIGJvdW5k IG9mIHJlc3VsdGluZyBwYXJ0aXRpb24uICovCisJQXNzZXJ0KHBhcnRjbWQtPmJvdW5kID09 IE5VTEwpOworCXBhcnRjbWQtPmJvdW5kID0gbWFrZU5vZGUoUGFydGl0aW9uQm91bmRTcGVj KTsKKworCS8qIEZpbGwgcGFydGl0aW9uIGJvdW5kLiAqLworCXBhcnRjbWQtPmJvdW5kLT5z dHJhdGVneSA9IHN0cmF0ZWd5OworCXBhcnRjbWQtPmJvdW5kLT5sb2NhdGlvbiA9IC0xOwor CXBhcnRjbWQtPmJvdW5kLT5pc19kZWZhdWx0ID0gaXNEZWZhdWx0UGFydDsKKwlpZiAoIWlz RGVmYXVsdFBhcnQpCisJCWNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKHBh cmVudCwgcGFydGNtZC0+cGFydGxpc3QsCisJCQkJCQkJCQkJCXBhcnRPaWRzLCBwYXJ0Y21k LT5ib3VuZCwKKwkJCQkJCQkJCQkJY3h0LT5wc3RhdGUpOworfQorCiAvKgogICogdHJhbnNm b3JtQWx0ZXJUYWJsZVN0bXQgLQogICoJCXBhcnNlIGFuYWx5c2lzIGZvciBBTFRFUiBUQUJM RQpAQCAtMzc2NSw2ICszOTAwLDE5IEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCBy ZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQkJbmV3Y21kcyA9IGxhcHBlbmQobmV3 Y21kcywgY21kKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6 CisJCQkJeworCQkJCQlQYXJ0aXRpb25DbWQgKnBhcnRjbWQgPSAoUGFydGl0aW9uQ21kICop IGNtZC0+ZGVmOworCisJCQkJCWlmIChsaXN0X2xlbmd0aChwYXJ0Y21kLT5wYXJ0bGlzdCkg PCAyKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX0lO VkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCQllcnJtc2coImxpc3Qgb2YgbmV3 IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0ZW1zIikpOworCQkJ CQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZSgmY3h0LCBwYXJ0Y21kKTsKKwkJCQkJ bmV3Y21kcyA9IGxhcHBlbmQobmV3Y21kcywgY21kKTsKKwkJCQkJYnJlYWs7CisJCQkJfQor CiAJCQlkZWZhdWx0OgogCiAJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRp dGlvbmluZy9wYXJ0Ym91bmRzLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJv dW5kcy5jCmluZGV4IDRiZGMyOTQxZWYuLjlmN2MwMWI3ZmEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy dGl0aW9uaW5nL3BhcnRib3VuZHMuYwpAQCAtMzIxNCw4ICszMjE0LDkgQEAgY2hlY2tfbmV3 X3BhcnRpdGlvbl9ib3VuZChjaGFyICpyZWxuYW1lLCBSZWxhdGlvbiBwYXJlbnQsCiAJCQkJ CQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bTsKIAogCQkJCQkJLyoKLQkJCQkJCSAqIFBv aW50IHRvIHByb2JsZW1hdGljIGtleSBpbiB0aGUgbG93ZXIgZGF0dW1zIGxpc3Q7Ci0JCQkJ CQkgKiBpZiB3ZSBoYXZlIGVxdWFsaXR5LCBwb2ludCB0byB0aGUgZmlyc3Qgb25lLgorCQkJ CQkJICogUG9pbnQgdG8gcHJvYmxlbWF0aWMga2V5IGluIHRoZSBsaXN0IG9mIGxvd2VyCisJ CQkJCQkgKiBkYXR1bXM7IGlmIHdlIGhhdmUgZXF1YWxpdHksIHBvaW50IHRvIHRoZSBmaXJz dAorCQkJCQkJICogb25lLgogCQkJCQkJICovCiAJCQkJCQlkYXR1bSA9IGNtcHZhbCA9PSAw ID8gbGluaXRpYWwoc3BlYy0+bG93ZXJkYXR1bXMpIDoKIAkJCQkJCQlsaXN0X250aChzcGVj LT5sb3dlcmRhdHVtcywgYWJzKGNtcHZhbCkgLSAxKTsKQEAgLTQ5NzcsMyArNDk3OCwxOTcg QEAgc2F0aXNmaWVzX2hhc2hfcGFydGl0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlQR19S RVRVUk5fQk9PTChyb3dIYXNoICUgbW9kdWx1cyA9PSByZW1haW5kZXIpOwogfQorCisvKgor ICogY2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlCisgKgorICogKGZ1bmN0aW9u IGZvciBCWSBSQU5HRSBwYXJ0aXRpb25pbmcpCisgKgorICogVGhpcyBpcyBhIGhlbHBlciBm dW5jdGlvbiBmb3IgY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoKS4KKyAq IFRoaXMgZnVuY3Rpb24gY29tcGFyZXMgdXBwZXIgYm91bmQgb2YgZmlyc3RfYm91bmQgYW5k IGxvd2VyIGJvdW5kIG9mCisgKiBzZWNvbmRfYm91bmQuIFRoZXNlIGJvdW5kcyBzaG91bGQg YmUgZXF1YWwuCisgKgorICogcGFyZW50OgkJCXBhcnRpdGlvbmVkIHRhYmxlCisgKiBmaXJz dF9uYW1lOgkJbmFtZSBvZiBmaXJzdCBwYXJ0aXRpb24KKyAqIGZpcnN0X2JvdW5kOgkJYm91 bmQgb2YgZmlyc3QgcGFydGl0aW9uCisgKiBzZWNvbmRfbmFtZToJCW5hbWUgb2Ygc2Vjb25k IHBhcnRpdGlvbgorICogc2Vjb25kX2JvdW5kOglib3VuZCBvZiBzZWNvbmQgcGFydGl0aW9u CisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJt aW5pbmcgZXJyb3IgcG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3R3b19wYXJ0 aXRpb25zX2JvdW5kc19yYW5nZShSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCSAgUmFuZ2VW YXIgKmZpcnN0X25hbWUsCisJCQkJCQkJCSAgUGFydGl0aW9uQm91bmRTcGVjICpmaXJzdF9i b3VuZCwKKwkJCQkJCQkJICBSYW5nZVZhciAqc2Vjb25kX25hbWUsCisJCQkJCQkJCSAgUGFy dGl0aW9uQm91bmRTcGVjICpzZWNvbmRfYm91bmQsCisJCQkJCQkJCSAgUGFyc2VTdGF0ZSAq cHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktl eShwYXJlbnQpOworCVBhcnRpdGlvblJhbmdlQm91bmQgKmZpcnN0X3VwcGVyOworCVBhcnRp dGlvblJhbmdlQm91bmQgKnNlY29uZF9sb3dlcjsKKwlpbnQJCQljbXB2YWw7CisKKwlBc3Nl cnQoa2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpOworCisJZmly c3RfdXBwZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIGZpcnN0X2Jv dW5kLT51cHBlcmRhdHVtcywgZmFsc2UpOworCXNlY29uZF9sb3dlciA9IG1ha2Vfb25lX3Bh cnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc2Vjb25kX2JvdW5kLT5sb3dlcmRhdHVtcywgdHJ1 ZSk7CisKKwkvKgorCSAqIGxvd2VyMT1mYWxzZSAodGhlIHNlY29uZCB0byBsYXN0IGFyZ3Vt ZW50KSBmb3IgY29ycmVjdCBjb21wYXJpc29uIG9mCisJICogbG93ZXIgYW5kIHVwcGVyIGJv dW5kcy4KKwkgKi8KKwljbXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5kX2NtcChrZXktPnBhcnRu YXR0cywKKwkJCQkJCQkJICBrZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkgIGtleS0+cGFy dGNvbGxhdGlvbiwKKwkJCQkJCQkJICBzZWNvbmRfbG93ZXItPmRhdHVtcywgc2Vjb25kX2xv d2VyLT5raW5kLAorCQkJCQkJCQkgIGZhbHNlLCBmaXJzdF91cHBlcik7CisJaWYgKGNtcHZh bCkKKwl7CisJCVBhcnRpdGlvblJhbmdlRGF0dW0gKmRhdHVtID0gbGluaXRpYWwoc2Vjb25k X2JvdW5kLT5sb3dlcmRhdHVtcyk7CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJZXJybXNnKCJsb3dl ciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIg Ym91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCSAgIHNlY29uZF9uYW1lLT5yZWxu YW1lLCBmaXJzdF9uYW1lLT5yZWxuYW1lKSwKKwkJCQllcnJoaW50KCJBTFRFUiBUQUJMRSAu Li4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBi ZSBhZGphY2VudC4iKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkYXR1bS0+ bG9jYXRpb24pKTsKKwl9Cit9CisKKy8qCisgKiBnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMK KyAqCisgKiBSZXR1cm5zIHRoZSBQYXJ0aXRpb25Cb3VuZFNwZWMgZm9yIHRoZSBwYXJ0aXRp b24gd2l0aCB0aGUgZ2l2ZW4gT0lEIHBhcnRPaWQuCisgKi8KK3N0YXRpYyBQYXJ0aXRpb25C b3VuZFNwZWMgKgorZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjKE9pZCBwYXJ0T2lkKQorewor CUhlYXBUdXBsZQl0dXBsZTsKKwlEYXR1bQkJZGF0dW07CisJYm9vbAkJaXNudWxsOworCVBh cnRpdGlvbkJvdW5kU3BlYyAqYm91bmRzcGVjID0gTlVMTDsKKworCS8qIFRyeSBmZXRjaGlu ZyB0aGUgdHVwbGUgZnJvbSB0aGUgY2F0Y2FjaGUsIGZvciBzcGVlZC4gKi8KKwl0dXBsZSA9 IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQsIHBhcnRPaWQpOworCWlmICghSGVhcFR1cGxlSXNW YWxpZCh0dXBsZSkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBy ZWxhdGlvbiAldSIsIHBhcnRPaWQpOworCisJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoUkVM T0lELCB0dXBsZSwKKwkJCQkJCQlBbnVtX3BnX2NsYXNzX3JlbHBhcnRib3VuZCwKKwkJCQkJ CQkmaXNudWxsKTsKKwlpZiAoaXNudWxsKQorCQllbG9nKEVSUk9SLCAicGFydGl0aW9uIGJv dW5kIGZvciByZWxhdGlvbiAldSBpcyBudWxsIiwKKwkJCSBwYXJ0T2lkKTsKKworCWJvdW5k c3BlYyA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKSk7CisKKwlp ZiAoIUlzQShib3VuZHNwZWMsIFBhcnRpdGlvbkJvdW5kU3BlYykpCisJCWVsb2coRVJST1Is ICJleHBlY3RlZCBQYXJ0aXRpb25Cb3VuZFNwZWMgZm9yIHJlbGF0aW9uICV1IiwKKwkJCSBw YXJ0T2lkKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisJcmV0dXJuIGJvdW5kc3Bl YzsKK30KKworLyoKKyAqIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlCisg KgorICogQ2FsY3VsYXRlcyB0aGUgYm91bmQgb2YgbWVyZ2VkIHBhcnRpdGlvbiAic3BlYyIg YnkgdXNpbmcgdGhlIGJvdW5kcyBvZgorICogcGFydGl0aW9ucyB0byBiZSBtZXJnZWQuCisg KgorICogcGFyZW50OgkJCXBhcnRpdGlvbmVkIHRhYmxlCisgKiBwYXJ0TmFtZXM6CQluYW1l cyBvZiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZAorICogcGFydE9pZHM6CQlPaWRzIG9mIHBh cnRpdGlvbnMgdG8gYmUgbWVyZ2VkCisgKiBzcGVjIChvdXQpOgkJYm91bmRzIHNwZWNpZmlj YXRpb24gb2YgdGhlIG1lcmdlZCBwYXJ0aXRpb24KKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRv IFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUgZXJyb3IgcG9zaXRpb24KKyAqLwor dm9pZAorY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFy ZW50LAorCQkJCQkJCQkJTGlzdCAqcGFydE5hbWVzLAorCQkJCQkJCQkJTGlzdCAqcGFydE9p ZHMsCisJCQkJCQkJCQlQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJCQkJCQlQYXJz ZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFy dGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0aW9uQm91bmRTcGVjICpib3VuZDsKKworCUFz c2VydCghc3BlYy0+aXNfZGVmYXVsdCk7CisKKwlzd2l0Y2ggKGtleS0+c3RyYXRlZ3kpCisJ eworCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRToKKwkJCXsKKwkJCQlpbnQJCQlp OworCQkJCVBhcnRpdGlvblJhbmdlQm91bmQgKipsb3dlcl9ib3VuZHM7CisJCQkJaW50CQkJ bnBhcnRzID0gbGlzdF9sZW5ndGgocGFydE9pZHMpOworCQkJCUxpc3QJICAgKmJvdW5kcyA9 IE5JTDsKKworCQkJCWxvd2VyX2JvdW5kcyA9IChQYXJ0aXRpb25SYW5nZUJvdW5kICoqKQor CQkJCQlwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihQYXJ0aXRpb25SYW5nZUJvdW5kICopKTsK KworCQkJCS8qCisJCQkJICogQ3JlYXRlIGFycmF5IG9mIGxvd2VyIGJvdW5kcyBhbmQgbGlz dCBvZgorCQkJCSAqIFBhcnRpdGlvbkJvdW5kU3BlYy4KKwkJCQkgKi8KKwkJCQlmb3JlYWNo X29pZChwYXJ0b2lkLCBwYXJ0T2lkcykKKwkJCQl7CisJCQkJCWJvdW5kID0gZ2V0X3BhcnRp dGlvbl9ib3VuZF9zcGVjKHBhcnRvaWQpOworCQkJCQlpID0gZm9yZWFjaF9jdXJyZW50X2lu ZGV4KHBhcnRvaWQpOworCisJCQkJCWxvd2VyX2JvdW5kc1tpXSA9IG1ha2Vfb25lX3BhcnRp dGlvbl9yYm91bmQoa2V5LCBpLCBib3VuZC0+bG93ZXJkYXR1bXMsIHRydWUpOworCQkJCQli b3VuZHMgPSBsYXBwZW5kKGJvdW5kcywgYm91bmQpOworCQkJCX0KKworCQkJCS8qIFNvcnQg YXJyYXkgb2YgbG93ZXIgYm91bmRzLiAqLworCQkJCXFzb3J0X2FyZyhsb3dlcl9ib3VuZHMs IG5wYXJ0cywgc2l6ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKiksCisJCQkJCQkgIHFzb3J0 X3BhcnRpdGlvbl9yYm91bmRfY21wLCAodm9pZCAqKSBrZXkpOworCisJCQkJLyogUmFuZ2Vz IG9mIHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwLiAqLworCQkJCWZvciAoaSA9IDE7 IGkgPCBucGFydHM7IGkrKykKKwkJCQl7CisJCQkJCWludAkJCWluZGV4ID0gbG93ZXJfYm91 bmRzW2ldLT5pbmRleDsKKwkJCQkJaW50CQkJcHJldl9pbmRleCA9IGxvd2VyX2JvdW5kc1tp IC0gMV0tPmluZGV4OworCisJCQkJCWNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5n ZShwYXJlbnQsCisJCQkJCQkJCQkJCQkJICAoUmFuZ2VWYXIgKikgbGlzdF9udGgocGFydE5h bWVzLCBwcmV2X2luZGV4KSwKKwkJCQkJCQkJCQkJCQkgIChQYXJ0aXRpb25Cb3VuZFNwZWMg KikgbGlzdF9udGgoYm91bmRzLCBwcmV2X2luZGV4KSwKKwkJCQkJCQkJCQkJCQkgIChSYW5n ZVZhciAqKSBsaXN0X250aChwYXJ0TmFtZXMsIGluZGV4KSwKKwkJCQkJCQkJCQkJCQkgIChQ YXJ0aXRpb25Cb3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBpbmRleCksCisJCQkJCQkJ CQkJCQkJICBwc3RhdGUpOworCQkJCX0KKworCQkJCS8qCisJCQkJICogTG93ZXIgYm91bmQg b2YgZmlyc3QgcGFydGl0aW9uIGlzIHRoZSBsb3dlciBib3VuZCBvZiBtZXJnZWQKKwkJCQkg KiBwYXJ0aXRpb24uCisJCQkJICovCisJCQkJc3BlYy0+bG93ZXJkYXR1bXMgPQorCQkJCQko KFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIGxvd2VyX2JvdW5kc1sw XS0+aW5kZXgpKS0+bG93ZXJkYXR1bXM7CisKKwkJCQkvKgorCQkJCSAqIFVwcGVyIGJvdW5k IG9mIGxhc3QgcGFydGl0aW9uIGlzIHRoZSB1cHBlciBib3VuZCBvZiBtZXJnZWQKKwkJCQkg KiBwYXJ0aXRpb24uCisJCQkJICovCisJCQkJc3BlYy0+dXBwZXJkYXR1bXMgPQorCQkJCQko KFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIGxvd2VyX2JvdW5kc1tu cGFydHMgLSAxXS0+aW5kZXgpKS0+dXBwZXJkYXR1bXM7CisKKwkJCQlwZnJlZShsb3dlcl9i b3VuZHMpOworCQkJCWxpc3RfZnJlZShib3VuZHMpOworCQkJCWJyZWFrOworCQkJfQorCisJ CWNhc2UgUEFSVElUSU9OX1NUUkFURUdZX0xJU1Q6CisJCQl7CisJCQkJLyogQ29uc29saWRh dGUgYm91bmRzIGZvciBhbGwgcGFydGl0aW9ucyBpbiB0aGUgbGlzdC4gKi8KKwkJCQlmb3Jl YWNoX29pZChwYXJ0b2lkLCBwYXJ0T2lkcykKKwkJCQl7CisJCQkJCWJvdW5kID0gZ2V0X3Bh cnRpdGlvbl9ib3VuZF9zcGVjKHBhcnRvaWQpOworCQkJCQlzcGVjLT5saXN0ZGF0dW1zID0g bGlzdF9jb25jYXQoc3BlYy0+bGlzdGRhdHVtcywgYm91bmQtPmxpc3RkYXR1bXMpOworCQkJ CX0KKwkJCQlicmVhazsKKwkJCX0KKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVu ZXhwZWN0ZWQgcGFydGl0aW9uIHN0cmF0ZWd5OiAlZCIsCisJCQkJIChpbnQpIGtleS0+c3Ry YXRlZ3kpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUu aW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCAyYzBiNGYyOGMx Li42NDI0OGI1YjFmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmlu LmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0yNzIxLDYgKzI3 MjEsNyBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJCQkJICAi T1dORVIgVE8iLCAiU0VUIiwgIlZBTElEQVRFIENPTlNUUkFJTlQiLAogCQkJCQkgICJSRVBM SUNBIElERU5USVRZIiwgIkFUVEFDSCBQQVJUSVRJT04iLAogCQkJCQkgICJERVRBQ0ggUEFS VElUSU9OIiwgIkZPUkNFIFJPVyBMRVZFTCBTRUNVUklUWSIsCisJCQkJCSAgIk1FUkdFIFBB UlRJVElPTlMgKCIsCiAJCQkJCSAgIk9GIiwgIk5PVCBPRiIpOwogCS8qIEFMVEVSIFRBQkxF IHh4eCBBREQgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNo QW55LCAiQUREIikpCkBAIC0yOTg3LDYgKzI5ODgsMTUgQEAgbWF0Y2hfcHJldmlvdXNfd29y ZHMoaW50IHBhdHRlcm5faWQsCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUi LCBNYXRjaEFueSwgIkRFVEFDSCIsICJQQVJUSVRJT04iLCBNYXRjaEFueSkpCiAJCUNPTVBM RVRFX1dJVEgoIkNPTkNVUlJFTlRMWSIsICJGSU5BTElaRSIpOwogCisJLyogQUxURVIgVEFC TEUgPG5hbWU+IE1FUkdFIFBBUlRJVElPTlMgKCAqLworCWVsc2UgaWYgKE1hdGNoZXMoIkFM VEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJNRVJHRSIsICJQQVJUSVRJT05TIiwgIigiKSkK Kwl7CisJCXNldF9jb21wbGV0aW9uX3JlZmVyZW5jZShwcmV2NF93ZCk7CisJCUNPTVBMRVRF X1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9wYXJ0aXRpb25fb2ZfdGFibGUpOworCX0K KwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiTUVSR0Ui LCAiUEFSVElUSU9OUyIsICIoKikiKSkKKwkJQ09NUExFVEVfV0lUSCgiSU5UTyIpOworCiAJ LyogQUxURVIgVEFCTEUgPG5hbWU+IE9GICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIi LCAiVEFCTEUiLCBNYXRjaEFueSwgIk9GIikpCiAJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FV RVJZKFF1ZXJ5X2Zvcl9saXN0X29mX2NvbXBvc2l0ZV9kYXRhdHlwZXMpOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggYi9zcmMvaW5jbHVkZS9jYXRh bG9nL2RlcGVuZGVuY3kuaAppbmRleCAwZWE3Y2NmNTI0Li5mNTQyMzM0OTliIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL2RlcGVuZGVuY3kuaApAQCAtMTA3LDYgKzEwNyw4IEBAIGV4dGVybiB2b2lk IFJlbGVhc2VEZWxldGlvbkxvY2soY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KTsKIGV4 dGVybiB2b2lkIHBlcmZvcm1EZWxldGlvbihjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3Qs CiAJCQkJCQkJRHJvcEJlaGF2aW9yIGJlaGF2aW9yLCBpbnQgZmxhZ3MpOwogCitleHRlcm4g dm9pZCBwZXJmb3JtRGVsZXRpb25DaGVjayhjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3Qs CisJCQkJCQkJCSBEcm9wQmVoYXZpb3IgYmVoYXZpb3IsIGludCBmbGFncyk7CiBleHRlcm4g dm9pZCBwZXJmb3JtTXVsdGlwbGVEZWxldGlvbnMoY29uc3QgT2JqZWN0QWRkcmVzc2VzICpv YmplY3RzLAogCQkJCQkJCQkJIERyb3BCZWhhdmlvciBiZWhhdmlvciwgaW50IGZsYWdzKTsK IApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmggYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL2hlYXAuaAppbmRleCBkYmQzMzllOWRmLi5jMTMwYmMwYzM4IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL2hlYXAuaApAQCAtMTE5LDYgKzExOSw5IEBAIGV4dGVybiBMaXN0ICpBZGRSZWxhdGlv bk5vdE51bGxDb25zdHJhaW50cyhSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJICAgTGlzdCAq Y29uc3RyYWludHMsCiAJCQkJCQkJCQkJICAgTGlzdCAqb2xkX25vdG51bGxzKTsKIAorZXh0 ZXJuIHZvaWQgU3RvcmVDb25zdHJhaW50cyhSZWxhdGlvbiByZWwsIExpc3QgKmNvb2tlZF9j b25zdHJhaW50cywKKwkJCQkJCQkgYm9vbCBpc19pbnRlcm5hbCk7CisKIGV4dGVybiB2b2lk IFJlbGF0aW9uQ2xlYXJNaXNzaW5nKFJlbGF0aW9uIHJlbCk7CiAKIGV4dGVybiB2b2lkIFN0 b3JlQXR0ck1pc3NpbmdWYWwoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51bSwKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRl L25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBiYTEyNjc4ZDFjLi5iOGUyYTY3OWNkIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC05NjksOCArOTY5LDEwIEBAIHR5cGVkZWYgc3Ry dWN0IFBhcnRpdGlvblJhbmdlRGF0dW0KIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvbkNtZAog ewogCU5vZGVUYWcJCXR5cGU7Ci0JUmFuZ2VWYXIgICAqbmFtZTsJCQkvKiBuYW1lIG9mIHBh cnRpdGlvbiB0byBhdHRhY2gvZGV0YWNoICovCisJUmFuZ2VWYXIgICAqbmFtZTsJCQkvKiBu YW1lIG9mIHBhcnRpdGlvbiB0byBhdHRhY2gvZGV0YWNoL21lcmdlICovCiAJUGFydGl0aW9u Qm91bmRTcGVjICpib3VuZDsJLyogRk9SIFZBTFVFUywgaWYgYXR0YWNoaW5nICovCisJTGlz dAkgICAqcGFydGxpc3Q7CQkvKiBsaXN0IG9mIHBhcnRpdGlvbnMsIGZvciBNRVJHRQorCQkJ CQkJCQkgKiBQQVJUSVRJT04gY29tbWFuZCAqLwogCWJvb2wJCWNvbmN1cnJlbnQ7CiB9IFBh cnRpdGlvbkNtZDsKIApAQCAtMjQ3Myw2ICsyNDc1LDcgQEAgdHlwZWRlZiBlbnVtIEFsdGVy VGFibGVUeXBlCiAJQVRfQXR0YWNoUGFydGl0aW9uLAkJCS8qIEFUVEFDSCBQQVJUSVRJT04g Ki8KIAlBVF9EZXRhY2hQYXJ0aXRpb24sCQkJLyogREVUQUNIIFBBUlRJVElPTiAqLwogCUFU X0RldGFjaFBhcnRpdGlvbkZpbmFsaXplLCAvKiBERVRBQ0ggUEFSVElUSU9OIEZJTkFMSVpF ICovCisJQVRfTWVyZ2VQYXJ0aXRpb25zLAkJCS8qIE1FUkdFIFBBUlRJVElPTlMgKi8KIAlB VF9BZGRJZGVudGl0eSwJCQkJLyogQUREIElERU5USVRZICovCiAJQVRfU2V0SWRlbnRpdHks CQkJCS8qIFNFVCBpZGVudGl0eSBjb2x1bW4gb3B0aW9ucyAqLwogCUFUX0Ryb3BJZGVudGl0 eSwJCQkvKiBEUk9QIElERU5USVRZICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJz ZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggYTRhZjNm NzE3YS4uOTBlOGNkZGY4YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlz dC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAtMzM3LDYgKzMzNyw3 IEBAIFBHX0tFWVdPUkQoInBhcmFtZXRlciIsIFBBUkFNRVRFUiwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFyc2VyIiwgUEFSU0VSLCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJ0aWFsIiwgUEFSVElB TCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFydGl0 aW9uIiwgUEFSVElUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19L RVlXT1JEKCJwYXJ0aXRpb25zIiwgUEFSVElUSU9OUywgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFzc2luZyIsIFBBU1NJTkcsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhc3N3b3JkIiwgUEFTU1dPUkQs IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhdGgiLCBQ QVRILCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oIGIvc3JjL2luY2x1ZGUvcGFydGl0 aW9uaW5nL3BhcnRib3VuZHMuaAppbmRleCA2NWYxNjFmNzE4Li42OTBkMjU5NjE5IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKQEAgLTE0Myw0ICsxNDMsMTAg QEAgZXh0ZXJuIGludAlwYXJ0aXRpb25fcmFuZ2VfZGF0dW1fYnNlYXJjaChGbWdySW5mbyAq cGFydHN1cGZ1bmMsCiBleHRlcm4gaW50CXBhcnRpdGlvbl9oYXNoX2JzZWFyY2goUGFydGl0 aW9uQm91bmRJbmZvIGJvdW5kaW5mbywKIAkJCQkJCQkJICAgaW50IG1vZHVsdXMsIGludCBy ZW1haW5kZXIpOwogCitleHRlcm4gdm9pZCBjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zv cl9tZXJnZShSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQkJCQlMaXN0ICpwYXJ0TmFtZXMs CisJCQkJCQkJCQkJCQlMaXN0ICpwYXJ0T2lkcywKKwkJCQkJCQkJCQkJCVBhcnRpdGlvbkJv dW5kU3BlYyAqc3BlYywKKwkJCQkJCQkJCQkJCVBhcnNlU3RhdGUgKnBzdGF0ZSk7CisKICNl bmRpZgkJCQkJCQkvKiBQQVJUQk9VTkRTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lz b2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tbWVyZ2Uub3V0IGIvc3JjL3Rlc3QvaXNvbGF0 aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uOTg0NDZhYWFiNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tbWVyZ2Uub3V0CkBAIC0wLDAgKzEs MTk5IEBACitQYXJzZWQgdGVzdCBzcGVjIHdpdGggMiBzZXNzaW9ucworCitzdGFydGluZyBw ZXJtdXRhdGlvbjogczJiIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJz CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVT ICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWI6IEJFR0lOOwor c3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0 XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJ TjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJl IGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwu Li4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBG Uk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUg ICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAor MzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMy YiBzMmkgczJjIHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYjog QkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAx Jyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExF VkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBN RVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRf MDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0 ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6 IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7 CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSst LS0tLS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFt b2RpZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0 YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmIgczJpIHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMx YyBzMmMgczJzCitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBh cnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWJz OiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMW1lcmc6IEFM VEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8x MF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBV UERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGlu ZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgor c3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8 dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1 ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1ICAgICAK Kyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYnJyIHMyaSBzMmMgczFi IHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYnJyOiBCRUdJTiBJU09MQVRJ T04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0 IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFiOiBC RUdJTjsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05T ICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMy YjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlm JyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAg czJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VM RUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSstLS0tLS0tLS0tLQorIDV8 dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2RpZgorMjV8dGV4dDI1 ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0 aW9uOiBzMmJyciBzMmkgczJjIHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitz dGVwIHMyYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3Rl cCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBz MmM6IENPTU1JVDsKK3N0ZXAgczFicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRB QkxFIFJFQUQ7CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElU SU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3Rl cCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFt b2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7Citz dGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6 IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0K KyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRl eHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJt dXRhdGlvbjogczJicnIgczJpIHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJz CitzdGVwIHMyYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOwor c3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3Rl cCBzMmM6IENPTU1JVDsKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklB TElaQUJMRTsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJ T05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVw IHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1v ZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0 ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczog U0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSstLS0tLS0tLS0tLQor IDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2RpZgorMjV8dGV4 dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11 dGF0aW9uOiBzMmJzIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitz dGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMy aTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzog Q09NTUlUOworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRw YXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0 cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQg U0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVw IHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENP TU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAK Ky0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRl eHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisK Kworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYnMgczJpIHMyYyBzMWJyciBzMW1lcmcgczJi IHMydSBzMWMgczJjIHMycworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VS SUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3Rl eHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFicnI6IEJFR0lOIElTT0xBVElP TiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBh cnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRw YXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBT RVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09N TUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAor LS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4 dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKwor CitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicyBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBz MnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklB TElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0 MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYnM6IEJFR0lOIElTT0xBVElPTiBM RVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVS R0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAw XzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9 ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBD T01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOwor c3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAorLS0rLS0t LS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4dDAxbW9k aWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZSBiL3NyYy90ZXN0 L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKaW5kZXggZTNjNjY5YTI5Yy4uMGRjYTY4 NDk1NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVs ZQorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCkBAIC0xMDcs NiArMTA3LDcgQEAgdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtMQogdGVzdDogcGFydGl0 aW9uLWtleS11cGRhdGUtMgogdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtMwogdGVzdDog cGFydGl0aW9uLWtleS11cGRhdGUtNAordGVzdDogcGFydGl0aW9uLW1lcmdlCiB0ZXN0OiBw bHBnc3FsLXRvYXN0CiB0ZXN0OiBjbHVzdGVyLWNvbmZsaWN0CiB0ZXN0OiBjbHVzdGVyLWNv bmZsaWN0LXBhcnRpdGlvbgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNz L3BhcnRpdGlvbi1tZXJnZS5zcGVjIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRp dGlvbi1tZXJnZS5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LmRjMmI5ZDM0NDUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vc3Bl Y3MvcGFydGl0aW9uLW1lcmdlLnNwZWMKQEAgLTAsMCArMSw1NCBAQAorIyBWZXJpZnkgdGhh dCBNRVJHRSBvcGVyYXRpb24gbG9ja3MgRE1MIG9wZXJhdGlvbnMgd2l0aCBwYXJ0aXRpb25l ZCB0YWJsZQorCitzZXR1cAoreworICBEUk9QIFRBQkxFIElGIEVYSVNUUyB0cGFydDsKKyAg Q1JFQVRFIFRBQkxFIHRwYXJ0KGkgaW50LCB0IHRleHQpIHBhcnRpdGlvbiBieSByYW5nZShp KTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzAwXzEwIFBBUlRJVElPTiBPRiB0cGFydCBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgxMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF8xMF8yMCBQ QVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKKyAgQ1JF QVRFIFRBQkxFIHRwYXJ0XzIwXzMwIFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZS T00gKDIwKSBUTyAoMzApOworICBDUkVBVEUgVEFCTEUgdHBhcnRfZGVmYXVsdCBQQVJUSVRJ T04gT0YgdHBhcnQgREVGQVVMVDsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICg1LCAn dGV4dDA1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMTUsICd0ZXh0MTUnKTsK KyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgyNSwgJ3RleHQyNScpOworICBJTlNFUlQg SU5UTyB0cGFydCBWQUxVRVMgKDM1LCAndGV4dDM1Jyk7Cit9CisKK3RlYXJkb3duCit7Cisg IERST1AgVEFCTEUgdHBhcnQ7Cit9CisKK3Nlc3Npb24gczEKK3N0ZXAgczFiCXsgQkVHSU47 IH0KK3N0ZXAgczFicnIJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFE OyB9CitzdGVwIHMxYnMJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOyB9 CitzdGVwIHMxbWVyZwl7IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRw YXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsgfQorc3RlcCBzMWMJ eyBDT01NSVQ7IH0KKworCitzZXNzaW9uIHMyCitzdGVwIHMyYgl7IEJFR0lOOyB9CitzdGVw IHMyYnJyCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsgfQorc3Rl cCBzMmJzCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsgfQorc3RlcCBz MmkJeyBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgfQorc3RlcCBz MnUJeyBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyB9 CitzdGVwIHMyYwl7IENPTU1JVDsgfQorc3RlcCBzMnMJeyBTRUxFQ1QgKiBGUk9NIHRwYXJ0 OyB9CisKKworIyBzMiBpbnNlcnRzIHJvdyBpbnRvIHRhYmxlLiBzMSBzdGFydHMgTUVSR0Ug UEFSVElUSU9OUyB0aGVuCisjIHMyIGlzIHRyeWluZyB0byB1cGRhdGUgaW5zZXJ0ZWQgcm93 IGFuZCB3YWl0cyB1bnRpbCBzMSBmaW5pc2hlcworIyBNRVJHRSBvcGVyYXRpb24uCisKK3Bl cm11dGF0aW9uIHMyYiBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycwor cGVybXV0YXRpb24gczJiIHMyaSBzMmMgczFicnIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBz MnMKK3Blcm11dGF0aW9uIHMyYiBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMy YyBzMnMKKworcGVybXV0YXRpb24gczJicnIgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUg czFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMyYnJyIHMyaSBzMmMgczFicnIgczFtZXJnIHMy YiBzMnUgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMyYnJyIHMyaSBzMmMgczFicyBzMW1l cmcgczJiIHMydSBzMWMgczJjIHMycworCitwZXJtdXRhdGlvbiBzMmJzIHMyaSBzMmMgczFi IHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMmJzIHMyaSBzMmMg czFicnIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMyYnMgczJp IHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwppbmRl eCAxOTM2NjlmMmJjLi43ZGU1ZGRiODc4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCisrKyBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKQEAgLTI5Niw2ICsy OTYsOSBAQCBnZXRfYWx0ZXJ0YWJsZV9zdWJjbWRpbmZvKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ CQljYXNlIEFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOgogCQkJCXN0cnR5cGUgPSAiREVU QUNIIFBBUlRJVElPTiAuLi4gRklOQUxJWkUiOwogCQkJCWJyZWFrOworCQkJY2FzZSBBVF9N ZXJnZVBhcnRpdGlvbnM6CisJCQkJc3RydHlwZSA9ICJNRVJHRSBQQVJUSVRJT05TIjsKKwkJ CQlicmVhazsKIAkJCWNhc2UgQVRfQWRkSWRlbnRpdHk6CiAJCQkJc3RydHlwZSA9ICJBREQg SURFTlRJVFkiOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wYXJ0aXRpb25fbWVyZ2Uub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLjFjZDM0ZmFlMmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQKQEAgLTAsMCArMSwxMjM0IEBACistLQor LS0gUEFSVElUSU9OU19NRVJHRQorLS0gVGVzdHMgZm9yICJBTFRFUiBUQUJMRSAuLi4gTUVS R0UgUEFSVElUSU9OUyAuLi4iIGNvbW1hbmQKKy0tCitDUkVBVEUgU0NIRU1BIHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hOworQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YTI7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGlj OworLS0KKy0tIEJZIFJBTkdFIHBhcnRpdGlvbmluZworLS0KKy0tCistLSBUZXN0IGZvciBl cnJvciBjb2RlcworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25f aWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5U LCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMSBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICgnMjAyMS0xMi0zMScpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fw cjIwMjIgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMw KSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFO R0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl8xIFBBUlRJVElPTiBP RiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDQtMTUnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHJfMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTE1JykgVE8gKCcyMDIyLTA1 LTAxJyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVz X2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0w MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgREVGQVVMVDsKKy0tIEVSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAic2FsZXNfZmVi MjAyMiIgaXMgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQ QVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19mZWIyMDIy KSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKK0VSUk9SOiAgcGFydGl0aW9uIHdpdGgg bmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitMSU5FIDE6IC4uLmUgTUVS R0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfZmVi Mi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgInNhbGVzX2FwcjIwMjIiIGlzIG5vdCBhIHRh YmxlCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19m ZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIyMDIyKSBJTlRPIHNhbGVzX2ZlYl9t YXJfYXByMjAyMjsKK0VSUk9SOiAgInNhbGVzX2FwcjIwMjIiIGlzIG5vdCBhIHRhYmxlCitI SU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2Ug cGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zCistLSBFUlJPUjogIGxvd2Vy IGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgaXMgbm90IGVxdWFsIHRvIHRo ZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiCistLSAoc3BhY2Ug YmV0d2VlbiBzZWN0aW9ucyBzYWxlc19qYW4yMDIyIGFuZCBzYWxlc19tYXIyMDIyKQorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfamFuMjAyMiwg c2FsZXNfbWFyMjAyMikgSU5UTyBzYWxlc19qYW5fbWFyMjAyMjsKK0VSUk9SOiAgbG93ZXIg Ym91bmQgb2YgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhl IHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKK0hJTlQ6ICBBTFRF UiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJv dW5kcyB0byBiZSBhZGphY2VudC4KKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0 aW9uICJzYWxlc19qYW4yMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKKy0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25z IHNhbGVzX2RlYzIwMjEgYW5kIHNhbGVzX2phbjIwMjIpCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19kZWMyMDIxLCBzYWxlc19qYW4yMDIyLCBz YWxlc19mZWIyMDIyKSBJTlRPIHNhbGVzX2RlY19qYW5fZmViMjAyMjsKK0VSUk9SOiAgbG93 ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIiBpcyBub3QgZXF1YWwgdG8g dGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0hJTlQ6ICBB TFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9u IGJvdW5kcyB0byBiZSBhZGphY2VudC4KKy0tIEVSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFt ZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19mZWIyMDIyKSBJTlRPIHNhbGVzX2ZlYl9t YXJfYXByMjAyMjsKK0VSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAic2FsZXNfZmViMjAy MiIgaXMgYWxyZWFkeSB1c2VkCitMSU5FIDE6IC4uLmUgTUVSR0UgUEFSVElUSU9OUyAoc2Fs ZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgcGFydGl0aW9ucy4uLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0t IE5PIEVSUk9SOiB0ZXN0IGZvciBjdXN0b20gcGFydGl0aW9ucyBvcmRlciwgc291cmNlIHBh cnRpdGlvbnMgbm90IGluIHRoZSBzZWFyY2hfcGF0aAorU0VUIHNlYXJjaF9wYXRoID0gcGFy dGl0aW9uc19tZXJnZV9zY2hlbWEyLCBwdWJsaWM7CitBTFRFUiBUQUJMRSBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYS5zYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TICgKKyAgcGFydGl0 aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfZmViMjAyMiwKKyAgcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEuc2FsZXNfbWFyMjAyMiwKKyAgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNf amFuMjAyMikgSU5UTyBzYWxlc19qYW5fZmViX21hcjIwMjI7CitTRVQgc2VhcmNoX3BhdGgg PSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworU0VMRUNUIGMub2lkOjpwZ19j YXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFs b2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFs b2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lk ID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFz cworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBj Lm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRh bG9nLnRleHQ7CisgICAgICAgICAgICAgICAgICAgICAgb2lkICAgICAgICAgICAgICAgICAg ICAgICB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAgICAgICAg cGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfamFuX2ZlYl9tYXIyMDIyIHwgciAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIy JykgVE8gKCcwNC0wMS0yMDIyJykKKyBzYWxlc19hcHIyMDIyICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgcCAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFM VUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJykKKyBzYWxlc19kZWMy MDIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcxMi0wMS0yMDIxJykgVE8gKCcxMi0z MS0yMDIxJykKKyBzYWxlc19vdGhlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxUCisoNCByb3dzKQor CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIEFkZCByb3dzIGludG8gcGFydGl0 aW9uZWQgdGFibGUsIHRoZW4gbWVyZ2UgcGFydGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBz YWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBC WSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRP ICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIw MjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0 LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug REVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBz YWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScp LAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0Zv cmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAs ICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3 JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAn TGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4 NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMt MTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEs ICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAg MzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0w MS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxF Q1QgcGdfY2F0YWxvZy5wZ19nZXRfcGFydGtleWRlZignc2FsZXNfcmFuZ2UnOjpyZWdjbGFz cyk7CisgcGdfZ2V0X3BhcnRrZXlkZWYgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSQU5H RSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29u ZGl0aW9uczoKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxraW5k LCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJv dW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cu cGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFy ZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5w Z19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6 cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworICAgICAgb2lkICAgICAg fCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgIHBnX2dl dF9leHByICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfYXByMjAyMiB8IHIgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDQtMDEtMjAyMicpIFRPICgnMDUtMDEtMjAy MicpCisgc2FsZXNfZmViMjAyMiB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9S IFZBTFVFUyBGUk9NICgnMDItMDEtMjAyMicpIFRPICgnMDMtMDEtMjAyMicpCisgc2FsZXNf amFuMjAyMiB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9N ICgnMDEtMDEtMjAyMicpIFRPICgnMDItMDEtMjAyMicpCisgc2FsZXNfbWFyMjAyMiB8IHIg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDMtMDEtMjAy MicpIFRPICgnMDQtMDEtMjAyMicpCisgc2FsZXNfb3RoZXJzICB8IHIgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgREVGQVVMVAorKDUgcm93cykKKworLS0gY2hlY2sgc2NoZW1hLXF1 YWxpZmllZCBuYW1lIG9mIHRoZSBuZXcgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBz YWxlc19hcHIyMDIyKSBJTlRPIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJf bWFyX2FwcjIwMjI7CistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VM RUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBl bmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQor ICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBp CisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNf cmFuZ2UnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMu cmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJl Z2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgICAgICAgICAgICAgICAgICAgICAgb2lkICAg ICAgICAgICAgICAgICAgICAgICB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAg ICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21h cl9hcHIyMDIyIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZS T00gKCcwMi0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJykKKyBzYWxlc19qYW4yMDIyICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIyJykgVE8gKCcwMi0wMS0yMDIy JykKKyBzYWxlc19vdGhlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxUCisoMyByb3dzKQorCitTRUxF Q1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2ZlYl9tYXJf YXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9zY2hlbWEyJzsK KyAgICAgICAgc2NoZW1hbmFtZSAgICAgICAgfCAgICAgICB0YWJsZW5hbWUgICAgICAgfCAg ICAgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YTIgfCBzYWxlc19mZWJfbWFyX2FwcjIwMjIgfCBzYWxlc19mZWJfbWFyX2FwcjIwMjJfc2Fs ZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX2ZlYl9tYXJf YXByMjAyMl9zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2Fs ZXNfZmViX21hcl9hcHIyMDIyIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNw ZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0z MS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAg MzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8 ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAgICAgMiB8IFNtaXJub2Zm ICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDYg fCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAg ICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIw MjIKKyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUg fCAwMy0wOC0yMDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAg ICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAg ICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZv cmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAg ICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgor ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0 LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAg ICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAg IHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZS T00gc2FsZXNfamFuMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg IDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAg ICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4 LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAz NzcgfCAwMS0wOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHBhcnRpdGlvbnNf bWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjI7Cisgc2FsZXNwZXJzb25faWQg fCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUw MCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAg ICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAg ICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAgICAgICAgICA3IHwg TGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAg ICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIy CisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwg MDMtMTktMjAyMgorICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAg ICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAg ICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2 ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAg IDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKygx MCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsKKyBzYWxlc3BlcnNvbl9p ZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAg NTEwIHwgMDUtMDQtMjAyMgorKDEgcm93KQorCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0 aW5nIGluZGV4ZXMKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKK1NFTEVDVCAqIEZST00g cGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB3aGVyZSBz YWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJz b25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0y MDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUw IHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAg ICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAg ICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgICAgIDkgfCBN dWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAg ICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIK KyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAw NC0wNi0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAg ICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQg ICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoMTAgcm93cykKKwor UkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0t IE1lcmdlIHNvbWUgcGFydGl0aW9ucyBpbnRvIERFRkFVTFQgcGFydGl0aW9uCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19q YW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2Rh dGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcy MDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwK KyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFu b3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAg JzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScp LAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0Vy aWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAs ICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4 JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAn UGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3 NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUt MDQnKTsKKy0tIE1lcmdlIHBhcnRpdGlvbnMgKGluY2x1ZGUgREVGQVVMVCBwYXJ0aXRpb24p IGludG8gcGFydGl0aW9uIHdpdGggdGhlIHNhbWUKKy0tIG5hbWUKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMKKyAgKHNhbGVzX2phbjIwMjIsIHNhbGVzX21h cjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX290aGVycykgSU5UTyBzYWxl c19vdGhlcnM7CitzZWxlY3QgKiBmcm9tIHNhbGVzX290aGVyczsKKyBzYWxlc3BlcnNvbl9p ZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAx MDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8 ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAg ICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAgICAgICAgICAgIDcg fCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAg ICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIw MjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAg fCAwMy0xOS0yMDIyCisgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAg ICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDcgcm93cykKKworLS0gc2hvdyBwYXJ0aXRpb25z IHdpdGggY29uZGl0aW9uczoKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywg Yy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMu cmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBn X2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5E IGkuaW5ocGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdf Y2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQn LCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworICAgICAg b2lkICAgICAgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAg ICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfYXByMjAyMiB8IHIgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDQtMDEtMjAyMicpIFRPICgn MDUtMDEtMjAyMicpCisgc2FsZXNfZmViMjAyMiB8IHIgICAgICAgfCBmICAgICAgICAgICAg ICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDItMDEtMjAyMicpIFRPICgnMDMtMDEtMjAyMicp Cisgc2FsZXNfb3RoZXJzICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVM VAorKDMgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBUZXN0IGZv cjoKKy0tICAgKiBjb21wb3NpdGUgcGFydGl0aW9uIGtleTsKKy0tICAgKiBHRU5FUkFURUQg Y29sdW1uOworLS0gICAqIGNvbHVtbiB3aXRoIERFRkFVTFQgdmFsdWUuCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzX2RhdGUgKHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVz X3llYXIgSU5ULCBzYWxlc19tb250aCBJTlQsIHNhbGVzX2RheSBJTlQsCisgIHNhbGVzX2Rh dGUgVkFSQ0hBUigxMCkgR0VORVJBVEVEIEFMV0FZUyBBUworICAgIChMUEFEKHNhbGVzX3ll YXI6OnRleHQsIDQsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfbW9udGg6OnRleHQsIDIs ICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfZGF5Ojp0ZXh0LCAyLCAnMCcpKSBTVE9SRUQs CisgIHNhbGVzX2RlcGFydG1lbnQgVkFSQ0hBUigzMCkgREVGQVVMVCAnU2FsZXMgZGVwYXJ0 bWVudCcpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfeWVhciwgc2FsZXNfbW9udGgs IHNhbGVzX2RheSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwg MSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0 ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAyLCAxKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxV RVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpOworQ1JFQVRFIFRBQkxFIHNh bGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAy MiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwgTUFYVkFMVUUpOworSU5TRVJUIElO VE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250 aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjEsIDEyLCA3KSwKKyAg KCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDEsIDEp LAorICAoJ01hbmFnZXIxJywgMjAyMiwgMiwgNCksCisgICgnTWFuYWdlcjInLCAyMDIyLCAx LCAyKSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDIsIDEpLAorICAoJ01hbmFnZXIxJywgMjAy MiwgMywgMyksCisgICgnTWFuYWdlcjInLCAyMDIyLCAzLCA0KSwKKyAgKCdNYW5hZ2VyMycs IDIwMjIsIDUsIDEpOworU0VMRUNUICogRlJPTSBzYWxlc19kYXRlOworIHNhbGVzcGVyc29u X25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19k YXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8 ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIg ICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEu MTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIw MjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBh cnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8 ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEg ICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIu MDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIw MjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBh cnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8 ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIg ICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIu MDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIw MjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBh cnRtZW50CisoOSByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7Cisgc2Fs ZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8 IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAg ICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBN YW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4 IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKygyIHJvd3MpCisKK1NFTEVDVCAq IEZST00gc2FsZXNfamFuMjAyMjsKKyBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8 IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1l bnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIzICAg ICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAx LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIy IHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0 bWVudAorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworIHNhbGVz cGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBz YWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8 IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMiByb3dzKQorCitTRUxFQ1QgKiBG Uk9NIHNhbGVzX290aGVyOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2Fs ZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAK Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAg ICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMg fCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAg ICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50 CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAg ICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMyByb3dzKQorCitBTFRF UiBUQUJMRSBzYWxlc19kYXRlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2phbjIwMjIsIHNh bGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfamFuX2ZlYjIwMjI7CitJTlNFUlQgSU5UTyBzYWxl c19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxl c19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMiwgMSwgMTApLAorICAoJ01hbmFn ZXIyJywgMjAyMiwgMiwgMTApOworU0VMRUNUICogRlJPTSBzYWxlc19kYXRlOworIHNhbGVz cGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBz YWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAg ICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8 IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8 IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAxMCB8 IDIwMjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8 IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMTEgcm93cykKKworU0VMRUNUICog RlJPTSBzYWxlc19kZWMyMDIyOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwg c2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVu dCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAg ICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIu MDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEg fCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRt ZW50CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbl9mZWIyMDIyOworIHNh bGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkg fCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50Cisg TWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAg MiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50Cisg TWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAx MCB8IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAxMCB8IDIwMjIuMDIuMTAgfCBT YWxlcyBkZXBhcnRtZW50CisoNiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVy OworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxl c19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRt ZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAg ICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUu MDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMyByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX2Rh dGU7CistLQorLS0gVGVzdDogbWVyZ2UgcGFydGl0aW9ucyBvZiBwYXJ0aXRpb25lZCB0YWJs ZSB3aXRoIHRyaWdnZXJzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVy c29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfMjAgUEFSVElUSU9O IE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitDUkVBVEUg VEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZB TFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTMwXzQw IFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDAp OworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworQ1JF QVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCkgUkVU VVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUyAkQk9EWSQKK0JFR0lOCisgICAg UkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUs IGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAg ICBSRVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZJDsKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVv cGxlX2FmdGVyX2luc2VydF9zdGF0ZW1lbnRfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAor ICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggU1RBVEVNRU5UCisgICAgRVhFQ1VU RSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOwor Q1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyCisg ICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBST1cK KyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVz cGVvcGxlJyk7CistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRl bWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEwLCAnTWF5Jyk7CitO T1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwg d2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3Bs ZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFU RU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElO VE8gc2FsZXNwZW9wbGUxMF8yMCBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7CitOT1RJQ0U6ICB0 cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFG VEVSLCBsZXZlbCA9IFJPVworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgTUVSR0UgUEFSVElU SU9OUyAoc2FsZXNwZW9wbGUxMF8yMCwgc2FsZXNwZW9wbGUyMF8zMCwgc2FsZXNwZW9wbGUz MF80MCkgSU5UTyBzYWxlc3Blb3BsZTEwXzQwOworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmly ZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFM VUVTICgyMCwgJ1NtaXJub2ZmJyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBj YWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9U SUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdo ZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmly ZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF80MCBWQUxVRVMgKDMw LCAnRm9yZCcpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rp b24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK1NFTEVDVCAqIEZST00g c2FsZXNwZW9wbGUwMV8xMDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUg CistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAx IHwgUG9pcm90CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUxMF80MDsK KyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDEwIHwgTWF5CisgICAgICAgICAg ICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAgICAyMCB8IFNtaXJub2ZmCisgICAgICAgICAg ICAgMzAgfCBGb3JkCisoNCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlOworRFJP UCBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKTsKKy0tCistLSBUZXN0OiBt ZXJnZSBwYXJ0aXRpb25zIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJz b25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9p ZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNw ZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRlIHBhcnRpdGlv bnMgd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3Bs ZTEwXzIwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVks IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVv cGxlMjBfMzAoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBkMiBJTlQsICBzYWxl c3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTMw XzQwKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgZDMgREFURSwgc2FsZXNwZXJz b25fbmFtZSBWQVJDSEFSKDMwKSk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzIwIFZB TFVFUyAoJ2R1bW15IHZhbHVlIDEnLCAxOSwgJ0l2YW5vdicpOworSU5TRVJUIElOVE8gc2Fs ZXNwZW9wbGUyMF8zMCBWQUxVRVMgKDIwLCAxMDEsICdTbWlybm9mZicpOworSU5TRVJUIElO VE8gc2FsZXNwZW9wbGUzMF80MCBWQUxVRVMgKDMxLCBub3coKSwgJ1BvcG92Jyk7CitBTFRF UiBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwIERST1AgQ09MVU1OIGQxOworQUxURVIgVEFCTEUg c2FsZXNwZW9wbGUyMF8zMCBEUk9QIENPTFVNTiBkMjsKK0FMVEVSIFRBQkxFIHNhbGVzcGVv cGxlMzBfNDAgRFJPUCBDT0xVTU4gZDM7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRB Q0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8g KDIwKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNw ZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworQUxURVIgVEFCTEUg c2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxV RVMgRlJPTSAoMzApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMK KyAgKDEsICdQb2lyb3QnKSwKKyAgKDEwLCAnTWF5JyksCisgICgzMCwgJ0ZvcmQnKTsKK0FM VEVSIFRBQkxFIHNhbGVzcGVvcGxlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzcGVvcGxlMTBf MjAsIHNhbGVzcGVvcGxlMjBfMzAsIHNhbGVzcGVvcGxlMzBfNDApIElOVE8gc2FsZXNwZW9w bGUxMF80MDsKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGU7Cisgc2FsZXNwZXJzb25faWQg fCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgMSB8IFBvaXJvdAorICAgICAgICAgICAgIDE5IHwgSXZhbm92 CisgICAgICAgICAgICAgMTAgfCBNYXkKKyAgICAgICAgICAgICAyMCB8IFNtaXJub2ZmCisg ICAgICAgICAgICAgMzEgfCBQb3BvdgorICAgICAgICAgICAgIDMwIHwgRm9yZAorKDYgcm93 cykKKworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTAxXzEwOworIHNhbGVzcGVyc29uX2lk IHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKygxIHJvdykKKworc2VsZWN0ICogZnJv bSBzYWxlc3Blb3BsZTEwXzQwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFt ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg MTkgfCBJdmFub3YKKyAgICAgICAgICAgICAxMCB8IE1heQorICAgICAgICAgICAgIDIwIHwg U21pcm5vZmYKKyAgICAgICAgICAgICAzMSB8IFBvcG92CisgICAgICAgICAgICAgMzAgfCBG b3JkCisoNSByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlOworLS0KKy0tIFRlc3Q6 IG1lcmdlIHN1Yi1wYXJ0aXRpb25zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChz YWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVz X2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19h cHIyMDIyXzAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19hcHIyMDIyXzEwXzIwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMTAnKSBUTyAoJzIwMjItMDQtMjAnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19hcHIyMDIyXzIwXzMwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMjAnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRF IElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5H IGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUwor ICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJu b2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAn MjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyks CisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9p cm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwg ICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMn KSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdI YWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgw LCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0x OScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwg J1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCAqIEZST00gc2FsZXNf cmFuZ2U7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAxIHwgTWF5ICAg ICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAgICAx MCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAg ICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDkt MjAyMgorICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUw MCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAg ICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAg ICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAgICAgICAgICA3IHwg TGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAg ICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIy CisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwg MDMtMTktMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAg ICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAg ICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFu b3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAg ICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAg ICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0w NC0yMDIyCisoMTQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworIHNh bGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAg fCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAg ICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICAgICA0 IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAg ICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0y MDIyCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMDFfMTA7Cisg c2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAg ICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1w ICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisoMiByb3dzKQorCitT RUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMTBfMjA7Cisgc2FsZXNwZXJzb25faWQgfCBz YWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8 IDA0LTEzLTIwMjIKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzIw XzMwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3Vu dCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAg ICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoMSByb3cpCisKK0FMVEVS IFRBQkxFIHNhbGVzX2FwcjIwMjIgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfYXByMjAyMl8w MV8xMCwgc2FsZXNfYXByMjAyMl8xMF8yMCwgc2FsZXNfYXByMjAyMl8yMF8zMCkgSU5UTyBz YWxlc19hcHJfYWxsOworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKKyBzYWxlc3BlcnNv bl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAor LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAg ICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAg ICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRp ICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAgICAgICAgICAg IDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAg ICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTEx LTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAx ODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwg ICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAg ICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8 IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAg ICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAy MgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8 IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAg ICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAg ICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICAgIDE0IHwgU21p dGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxl c3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0 LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAg ICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAg IHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICAzIHwgRm9yZCAg ICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyg0IHJvd3MpCisKK1NF TEVDVCAqIEZST00gc2FsZXNfYXByX2FsbDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVy c29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDct MjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4 MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAg ICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAg ICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorKDQgcm93cykKKworRFJPUCBU QUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KKy0t CistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQgR0VORVJB VEVEIEFMV0FZUyBBUyBJREVOVElUWSwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzAp LAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2Fs ZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMg SU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgn TGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Vh c3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdE ZWxoaScsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2NlbnRyYWwgUEFS VElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4n LCAnS3lpdicpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2Fs ZXNfbGlzdCBERUZBVUxUOworQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QyIChMSUtFIHNhbGVz X2xpc3QpIFBBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfbm9yZDIgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QyIEZPUiBWQUxVRVMgSU4gKCdP c2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfb3RoZXJzMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIgREVGQVVMVDsKK0NSRUFURSBU QUJMRSBzYWxlc19leHRlcm5hbCAoTElLRSBzYWxlc19saXN0KTsKK0NSRUFURSBUQUJMRSBz YWxlc19leHRlcm5hbDIgKHZjaCBWQVJDSEFSKDUpKTsKKy0tIEVSUk9SOiAgInNhbGVzX2V4 dGVybmFsIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInNhbGVz X2xpc3QiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVz X3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2V4dGVybmFsKSBJTlRPIHNhbGVzX2FsbDsKK0VS Uk9SOiAgInNhbGVzX2V4dGVybmFsIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9u ZWQgdGFibGUgInNhbGVzX2xpc3QiCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBB UlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0 aXRpb25zCistLSBFUlJPUjogICJzYWxlc19leHRlcm5hbDIiIGlzIG5vdCBhIHBhcnRpdGlv biBvZiBwYXJ0aXRpb25lZCB0YWJsZSAic2FsZXNfbGlzdCIKK0FMVEVSIFRBQkxFIHNhbGVz X2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNf ZXh0ZXJuYWwyKSBJTlRPIHNhbGVzX2FsbDsKK0VSUk9SOiAgInNhbGVzX2V4dGVybmFsMiIg aXMgbm90IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJzYWxlc19saXN0Igor SElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdl IHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucworLS0gRVJST1I6ICByZWxh dGlvbiAic2FsZXNfbm9yZDIiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiAic2Fs ZXNfbGlzdCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2Fs ZXNfd2VzdCwgc2FsZXNfbm9yZDIsIHNhbGVzX2Vhc3QpIElOVE8gc2FsZXNfYWxsOworRVJS T1I6ICByZWxhdGlvbiAic2FsZXNfbm9yZDIiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxh dGlvbiAic2FsZXNfbGlzdCIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElU SU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlv bnMKK0RST1AgVEFCTEUgc2FsZXNfZXh0ZXJuYWwyOworRFJPUCBUQUJMRSBzYWxlc19leHRl cm5hbDsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDI7CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7 CistLQorLS0gVGVzdDogQlkgTElTVCBwYXJ0aXRpb25pbmcsIE1FUkdFIFBBUlRJVElPTlMg d2l0aCBkYXRhCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9p ZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSwKKyBzYWxlc3BlcnNvbl9uYW1l IFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3Vu dCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0 YXRlKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzcGVyc29uX25hbWVfaWR4IE9O IHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzcGVyc29uX25hbWUpOworQ1JFQVRFIElO REVYIHNhbGVzX2xpc3Rfc2FsZXNfc3RhdGVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRy ZWUgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBP RiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywg J0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2Fs ZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2Vhc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9S IFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2NlbnRyYWwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVF UyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpOworQ1JFQVRFIFRBQkxFIHNhbGVz X290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworSU5TRVJUIElOVE8g c2FsZXNfbGlzdCAoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3Vu dCwgc2FsZXNfZGF0ZSkgVkFMVUVTCisgICgnVHJ1bXAnLCAgICAnQmVqaW5nJywgICAgICAg ICAxMDAwLCAnMjAyMi0wMy0wMScpLAorICAoJ1NtaXJub2ZmJywgJ05ldyBZb3JrJywgICAg ICAgIDUwMCwgJzIwMjItMDMtMDMnKSwKKyAgKCdGb3JkJywgICAgICdTdC4gUGV0ZXJzYnVy ZycsIDIwMDAsICcyMDIyLTAzLTA1JyksCisgICgnSXZhbm92JywgICAnV2Fyc2F3JywgICAg ICAgICAgNzUwLCAnMjAyMi0wMy0wNCcpLAorICAoJ0RlZXYnLCAgICAgJ0xpc2JvbicsICAg ICAgICAgIDI1MCwgJzIwMjItMDMtMDcnKSwKKyAgKCdQb2lyb3QnLCAgICdCZXJsaW4nLCAg ICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyksCisgICgnTWF5JywgICAgICAnSGVsc2lua2kn LCAgICAgICAxMjAwLCAnMjAyMi0wMy0wNicpLAorICAoJ0xpJywgICAgICAgJ1ZsYWRpdm9z dG9rJywgICAgMTE1MCwgJzIwMjItMDMtMDknKSwKKyAgKCdNYXknLCAgICAgICdIZWxzaW5r aScsICAgICAgIDEyMDAsICcyMDIyLTAzLTExJyksCisgICgnSGFsZGVyJywgICAnT3Nsbycs ICAgICAgICAgICAgODAwLCAnMjAyMi0wMy0wMicpLAorICAoJ011bGxlcicsICAgJ01hZHJp ZCcsICAgICAgICAgIDY1MCwgJzIwMjItMDMtMDUnKSwKKyAgKCdTbWl0aCcsICAgICdLeWl2 JywgICAgICAgICAgICAzNTAsICcyMDIyLTAzLTEwJyksCisgICgnR2FuZGknLCAgICAnV2Fy c2F3JywgICAgICAgICAgMTUwLCAnMjAyMi0wMy0wOCcpLAorICAoJ1BsYXRvJywgICAgJ0xp c2JvbicsICAgICAgICAgIDk1MCwgJzIwMjItMDMtMDUnKTsKKy0tIHNob3cgcGFydGl0aW9u cyB3aXRoIGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3Ms IGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihj LnJlbHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBw Z19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFO RCBpLmluaHBhcmVudCA9ICdzYWxlc19saXN0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdf Y2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQn LCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworICAgICAg b2lkICAgICAgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAg ICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19jZW50cmFsIHwgciAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jl cmxpbicsICdLeWl2JykKKyBzYWxlc19lYXN0ICAgIHwgciAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9r JykKKyBzYWxlc19ub3JkICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1Ig VkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpCisgc2Fs ZXNfd2VzdCAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJ TiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKQorIHNhbGVzX290aGVycyAgfCBy ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IERFRkFVTFQKKyg1IHJvd3MpCisKK0FMVEVS IFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNf ZWFzdCwgc2FsZXNfY2VudHJhbCkgSU5UTyBzYWxlc19hbGw7CistLSBzaG93IHBhcnRpdGlv bnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNz LCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIo Yy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywg cGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBB TkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfbGlzdCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBn X2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxU JywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKyAgICAg b2lkICAgICAgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19hbGwgICAgfCBy ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAn TmV3IFlvcmsnLCAnTWFkcmlkJywgJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3Rvaycs ICdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKQorIHNhbGVzX25vcmQgICB8IHIgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVy c2J1cmcnLCAnSGVsc2lua2knKQorIHNhbGVzX290aGVycyB8IHIgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgREVGQVVMVAorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19s aXN0OworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8ICBzYWxlc19zdGF0 ZSAgIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgTmV3IFlvcmsg ICAgICAgfCAgICAgICAgICA1MDAgfCAwMy0wMy0yMDIyCisgICAgICAgICAgICAgIDUgfCBE ZWV2ICAgICAgICAgICAgIHwgTGlzYm9uICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0w Ny0yMDIyCisgICAgICAgICAgICAgMTEgfCBNdWxsZXIgICAgICAgICAgIHwgTWFkcmlkICAg ICAgICAgfCAgICAgICAgICA2NTAgfCAwMy0wNS0yMDIyCisgICAgICAgICAgICAgMTQgfCBQ bGF0byAgICAgICAgICAgIHwgTGlzYm9uICAgICAgICAgfCAgICAgICAgICA5NTAgfCAwMy0w NS0yMDIyCisgICAgICAgICAgICAgIDEgfCBUcnVtcCAgICAgICAgICAgIHwgQmVqaW5nICAg ICAgICAgfCAgICAgICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgICAgICAgICAgICAgIDggfCBM aSAgICAgICAgICAgICAgIHwgVmxhZGl2b3N0b2sgICAgfCAgICAgICAgIDExNTAgfCAwMy0w OS0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAg ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQ b2lyb3QgICAgICAgICAgIHwgQmVybGluICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMy0w MS0yMDIyCisgICAgICAgICAgICAgMTIgfCBTbWl0aCAgICAgICAgICAgIHwgS3lpdiAgICAg ICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xMC0yMDIyCisgICAgICAgICAgICAgMTMgfCBH YW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMy0w OC0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgU3QuIFBldGVy c2J1cmcgfCAgICAgICAgIDIwMDAgfCAwMy0wNS0yMDIyCisgICAgICAgICAgICAgIDcgfCBN YXkgICAgICAgICAgICAgIHwgSGVsc2lua2kgICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0w Ni0yMDIyCisgICAgICAgICAgICAgIDkgfCBNYXkgICAgICAgICAgICAgIHwgSGVsc2lua2kg ICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTAgfCBI YWxkZXIgICAgICAgICAgIHwgT3NsbyAgICAgICAgICAgfCAgICAgICAgICA4MDAgfCAwMy0w Mi0yMDIyCisoMTQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19ub3JkOworIHNhbGVz cGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8ICBzYWxlc19zdGF0ZSAgIHwgc2FsZXNf YW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgU3QuIFBldGVyc2J1cmcgfCAgICAg ICAgIDIwMDAgfCAwMy0wNS0yMDIyCisgICAgICAgICAgICAgIDcgfCBNYXkgICAgICAgICAg ICAgIHwgSGVsc2lua2kgICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0wNi0yMDIyCisgICAg ICAgICAgICAgIDkgfCBNYXkgICAgICAgICAgICAgIHwgSGVsc2lua2kgICAgICAgfCAgICAg ICAgIDEyMDAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAg ICAgIHwgT3NsbyAgICAgICAgICAgfCAgICAgICAgICA4MDAgfCAwMy0wMi0yMDIyCisoNCBy b3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FsbDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNh bGVzcGVyc29uX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2Rh dGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAyIHwgU21pcm5v ZmYgICAgICAgICB8IE5ldyBZb3JrICAgIHwgICAgICAgICAgNTAwIHwgMDMtMDMtMjAyMgor ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8IExpc2JvbiAgICAgIHwgICAg ICAgICAgMjUwIHwgMDMtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgTXVsbGVyICAgICAg ICAgICB8IE1hZHJpZCAgICAgIHwgICAgICAgICAgNjUwIHwgMDMtMDUtMjAyMgorICAgICAg ICAgICAgIDE0IHwgUGxhdG8gICAgICAgICAgICB8IExpc2JvbiAgICAgIHwgICAgICAgICAg OTUwIHwgMDMtMDUtMjAyMgorICAgICAgICAgICAgICAxIHwgVHJ1bXAgICAgICAgICAgICB8 IEJlamluZyAgICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEtMjAyMgorICAgICAgICAgICAg ICA4IHwgTGkgICAgICAgICAgICAgICB8IFZsYWRpdm9zdG9rIHwgICAgICAgICAxMTUwIHwg MDMtMDktMjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNh dyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAgICAgICA2IHwg UG9pcm90ICAgICAgICAgICB8IEJlcmxpbiAgICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEt MjAyMgorICAgICAgICAgICAgIDEyIHwgU21pdGggICAgICAgICAgICB8IEt5aXYgICAgICAg IHwgICAgICAgICAgMzUwIHwgMDMtMTAtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkg ICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgor KDEwIHJvd3MpCisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcyBhZnRl ciBtZXJnaW5nIHBhcnRpdGlvbnMKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKK1NFTEVD VCAqIEZST00gc2FsZXNfYWxsIFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7Cisgc2Fs ZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1 MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBX YXJzYXcgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKygyIHJvd3MpCisKK1NF TEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOwor IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAg ICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAg IHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisoMiByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJ dmFub3YnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0 YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAg fCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9z ZXFzY2FuOworRFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRyeSB0byBNRVJHRSBw YXJ0aXRpb25zIG9mIGFub3RoZXIgdGFibGUuCistLQorQ1JFQVRFIFRBQkxFIHQxIChpIGlu dCwgYSBpbnQsIGIgaW50LCBjIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhLCBiKTsKK0NS RUFURSBUQUJMRSB0MXAxIFBBUlRJVElPTiBPRiB0MSBGT1IgVkFMVUVTIEZST00gKDEsIDEp IFRPICgxLCAyKTsKK0NSRUFURSBUQUJMRSB0MiAoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9O IEJZIFJBTkdFICh0KTsKK0NSRUFURSBUQUJMRSB0MnBhIFBBUlRJVElPTiBPRiB0MiBGT1Ig VkFMVUVTIEZST00gKCdBJykgVE8gKCdDJyk7CitDUkVBVEUgVEFCTEUgdDMgKGkgaW50LCB0 IHRleHQpOworLS0gRVJST1I6ICByZWxhdGlvbiAidDFwMSIgaXMgbm90IGEgcGFydGl0aW9u IG9mIHJlbGF0aW9uICJ0MiIKK0FMVEVSIFRBQkxFIHQyIE1FUkdFIFBBUlRJVElPTlMgKHQx cDEsIHQycGEpIElOVE8gdDJwOworRVJST1I6ICByZWxhdGlvbiAidDFwMSIgaXMgbm90IGEg cGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0MiIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVS R0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3Vi LXBhcnRpdGlvbnMKKy0tIEVSUk9SOiAgInQzIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFy dGl0aW9uZWQgdGFibGUgInQyIgorQUxURVIgVEFCTEUgdDIgTUVSR0UgUEFSVElUSU9OUyAo dDJwYSwgdDMpIElOVE8gdDJwOworRVJST1I6ICAidDMiIGlzIG5vdCBhIHBhcnRpdGlvbiBv ZiBwYXJ0aXRpb25lZCB0YWJsZSAidDIiCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdF IFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1w YXJ0aXRpb25zCitEUk9QIFRBQkxFIHQzOworRFJPUCBUQUJMRSB0MjsKK0RST1AgVEFCTEUg dDE7CistLQorLS0gVHJ5IHRvIE1FUkdFIHBhcnRpdGlvbnMgb2YgdGVtcG9yYXJ5IHRhYmxl LgorLS0KK0NSRUFURSBURU1QIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0Ug KGkpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMV8yIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworU0VMRUNUIGMub2lkOjpwZ19j YXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5k LCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNz IGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVs aWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRh bG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMu b2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgIG9pZCAgIHwg ICAgICAgIHBnX2dldF9leHByICAgICAgICAgfCByZWxwZXJzaXN0ZW5jZSAKKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLQorIHRwXzBf MSB8IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpIHwgdAorIHRwXzFfMiB8IEZPUiBWQUxV RVMgRlJPTSAoMSkgVE8gKDIpIHwgdAorKDIgcm93cykKKworQUxURVIgVEFCTEUgdCBNRVJH RSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CistLSBQYXJ0aXRp b24gc2hvdWxkIGJlIHRlbXBvcmFyeS4KK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdj bGFzcywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpLCBj LnJlbHBlcnNpc3RlbmNlCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRh bG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmlu aHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRf ZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0 YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworICBvaWQgICB8ICAgICAgICBwZ19n ZXRfZXhwciAgICAgICAgIHwgcmVscGVyc2lzdGVuY2UgCistLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzIgfCBGT1IgVkFM VUVTIEZST00gKDApIFRPICgyKSB8IHQKKygxIHJvdykKKworRFJPUCBUQUJMRSB0OworLS0K Ky0tIENoZWNrIHRoZSBwYXJ0aXRpb24gaW5kZXggbmFtZSBpZiB0aGUgcGFydGl0aW9uIG5h bWUgaXMgdGhlIHNhbWUgYXMgb25lCistLSBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbnMuCist LQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50LCBQUklNQVJZIEtFWShpKSkgUEFSVElUSU9OIEJZ IFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBP RiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQ1JFQVRFIElOREVYIHRpZHggT04g dChpKTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMV8yLCB0cF8wXzEp IElOVE8gdHBfMV8yOworLS0gSW5kZXhuYW1lIHZhbHVlcyBzaG91bGQgYmUgJ3RwXzFfMl9w a2V5JyBhbmQgJ3RwXzFfMl9pX2lkeCcuCistLSBOb3QtbnVsbCBjb25zdHJhaW50IG5hbWUg c2hvdWxkIGJlICd0cF8xXzJfaV9ub3RfbnVsbCcuCitcZCsgdHBfMV8yCisgICAgICAgICAg ICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS50cF8xXzIi CisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCB8 IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAg fCBub3QgbnVsbCB8ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0 aXRpb24gb2Y6IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikKK1BhcnRpdGlvbiBjb25z dHJhaW50OiAoKGkgSVMgTk9UIE5VTEwpIEFORCAoaSA+PSAwKSBBTkQgKGkgPCAyKSkKK0lu ZGV4ZXM6CisgICAgInRwXzFfMl9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGkpCisgICAg InRwXzFfMl9pX2lkeCIgYnRyZWUgKGkpCitOb3QtbnVsbCBjb25zdHJhaW50czoKKyAgICAi dF9pX25vdF9udWxsIiBOT1QgTlVMTCAiaSIgKGluaGVyaXRlZCkKKworRFJPUCBUQUJMRSB0 OworLS0KKy0tIFRyeSBtaXhpbmcgcGVybWFuZW50IGFuZCB0ZW1wb3JhcnkgcGFydGl0aW9u cy4KKy0tCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcGdf dGVtcCwgcHVibGljOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFO R0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVT IEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQg Rk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cu cmVnY2xhc3MsIGMucmVscGVyc2lzdGVuY2UgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMg V0hFUkUgYy5vaWQgPSAndCc6OnJlZ2NsYXNzOworIG9pZCB8IHJlbHBlcnNpc3RlbmNlIAor LS0tLS0rLS0tLS0tLS0tLS0tLS0tLQorIHQgICB8IHAKKygxIHJvdykKKworU0VMRUNUIGMu b2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVs cGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9n LnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9 IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBC WSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVG QVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7Cisg IG9pZCAgIHwgICAgICAgIHBnX2dldF9leHByICAgICAgICAgfCByZWxwZXJzaXN0ZW5jZSAK Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LQorIHRwXzBfMSB8IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpIHwgcAorIHRwXzFfMiB8 IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpIHwgcAorKDIgcm93cykKKworU0VUIHNlYXJj aF9wYXRoID0gcGdfdGVtcCwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKy0t IENhbid0IG1lcmdlIHBlcnNpc3RlbnQgcGFydGl0aW9ucyBpbnRvIGEgdGVtcG9yYXJ5IHBh cnRpdGlvbgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFf MikgSU5UTyB0cF8wXzI7CitFUlJPUjogIGNhbm5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgcmVs YXRpb24gYXMgcGFydGl0aW9uIG9mIHBlcm1hbmVudCByZWxhdGlvbiAidCIKK1NFVCBzZWFy Y2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CistLSBDYW4ndCBt ZXJnZSBwZXJzaXN0ZW50IHBhcnRpdGlvbnMgaW50byBhIHRlbXBvcmFyeSBwYXJ0aXRpb24K K0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8g cGdfdGVtcC50cF8wXzI7CitFUlJPUjogIGNhbm5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgcmVs YXRpb24gYXMgcGFydGl0aW9uIG9mIHBlcm1hbmVudCByZWxhdGlvbiAidCIKK0RST1AgVEFC TEUgdDsKK1NFVCBzZWFyY2hfcGF0aCA9IHBnX3RlbXAsIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hLCBwdWJsaWM7CitCRUdJTjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9O IEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworU0VMRUNUIGMub2lkOjpwZ19j YXRhbG9nLnJlZ2NsYXNzLCBjLnJlbHBlcnNpc3RlbmNlIEZST00gcGdfY2F0YWxvZy5wZ19j bGFzcyBjIFdIRVJFIGMub2lkID0gJ3QnOjpyZWdjbGFzczsKKyBvaWQgfCByZWxwZXJzaXN0 ZW5jZSAKKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgfCB0CisoMSByb3cpCisKK1NF TEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19nZXRfZXhw cihjLnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZST00gcGdf Y2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUg Yy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAg T1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQp ID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50 ZXh0OworICBvaWQgICB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgIHwgcmVscGVyc2lz dGVuY2UgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0KKyB0cF8wXzEgfCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSB8IHQKKyB0 cF8xXzIgfCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSB8IHQKKygyIHJvd3MpCisKK1NF VCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwZ190ZW1wLCBwdWJs aWM7CistLSBDYW4ndCBtZXJnZSB0ZW1wb3JhcnkgcGFydGl0aW9ucyBpbnRvIGEgcGVyc2lz dGVudCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8x LCB0cF8xXzIpIElOVE8gdHBfMF8yOworUk9MTEJBQ0s7CistLSBDaGVjayB0aGUgbmV3IHBh cnRpdGlvbiBpbmhlcml0cyBwYXJlbnQncyB0YWJsZXNwYWNlCitTRVQgc2VhcmNoX3BhdGgg PSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworQ1JFQVRFIFRBQkxFIHQgKGkg aW50IFBSSU1BUlkgS0VZIFVTSU5HIElOREVYIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFj ZSkKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3Bh Y2U7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9O UyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworU0VMRUNUIHRhYmxlbmFtZSwgdGFi bGVzcGFjZSBGUk9NIHBnX3RhYmxlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3Rw XzBfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hJworICBP UkRFUiBCWSB0YWJsZW5hbWUsIHRhYmxlc3BhY2U7CisgdGFibGVuYW1lIHwgICAgdGFibGVz cGFjZSAgICAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICB8 IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8wXzIgICAgfCByZWdyZXNzX3RibHNwYWNlCisoMiBy b3dzKQorCitTRUxFQ1QgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRhYmxlc3BhY2UgRlJPTSBw Z19pbmRleGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8yJykgQU5EIHNj aGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9zY2hlbWEnCisgIE9SREVSIEJZIHRhYmxl bmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNlOworIHRhYmxlbmFtZSB8ICBpbmRleG5hbWUg IHwgICAgdGFibGVzcGFjZSAgICAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tCisgdCAgICAgICAgIHwgdF9wa2V5ICAgICAgfCByZWdyZXNzX3RibHNw YWNlCisgdHBfMF8yICAgIHwgdHBfMF8yX3BrZXkgfCByZWdyZXNzX3RibHNwYWNlCisoMiBy b3dzKQorCitEUk9QIFRBQkxFIHQ7CistLSBDaGVjayB0aGUgbmV3IHBhcnRpdGlvbiBpbmhl cml0cyBwYXJlbnQncyB0YWJsZSBhY2Nlc3MgbWV0aG9kCitTRVQgc2VhcmNoX3BhdGggPSBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworQ1JFQVRFIEFDQ0VTUyBNRVRIT0Qg cGFydGl0aW9uc19tZXJnZV9oZWFwIFRZUEUgVEFCTEUgSEFORExFUiBoZWFwX3RhYmxlYW1f aGFuZGxlcjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChp KSBVU0lORyBwYXJ0aXRpb25zX21lcmdlX2hlYXA7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxF IHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0FM VEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBf MF8yOworU0VMRUNUIGMucmVsbmFtZSwgYS5hbW5hbWUKK0ZST00gcGdfY2xhc3MgYyBKT0lO IHBnX2FtIGEgT04gYy5yZWxhbSA9IGEub2lkCitXSEVSRSBjLm9pZCBJTiAoJ3QnOjpyZWdj bGFzcywgJ3RwXzBfMic6OnJlZ2NsYXNzKQorT1JERVIgQlkgYy5yZWxuYW1lOworIHJlbG5h bWUgfCAgICAgICAgYW1uYW1lICAgICAgICAgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyB0ICAgICAgIHwgcGFydGl0aW9uc19tZXJnZV9oZWFwCisgdHBfMF8yICB8 IHBhcnRpdGlvbnNfbWVyZ2VfaGVhcAorKDIgcm93cykKKworRFJPUCBUQUJMRSB0OworRFJP UCBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbnNfbWVyZ2VfaGVhcDsKKy0tIFRlc3QgcGVybWlz c2lvbiBjaGVja3MuICBUaGUgdXNlciBuZWVkcyB0byBvd24gdGhlIHBhcmVudCB0YWJsZSBh bmQgYWxsCistLSB0aGUgbWVyZ2luZyBwYXJ0aXRpb25zIHRvIGRvIHRoZSBtZXJnZS4KK0NS RUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworQ1JFQVRFIFJPTEUg cmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsK K0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVncmVz c19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdy ZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFS VElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworU0VUIFNFU1NJT04g QVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitBTFRFUiBUQUJM RSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK0VS Uk9SOiAgbXVzdCBiZSBvd25lciBvZiB0YWJsZSB0CitSRVNFVCBTRVNTSU9OIEFVVEhPUkla QVRJT047CitBTFRFUiBUQUJMRSB0IE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdl X2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVy Z2VfYm9iOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFf MikgSU5UTyB0cF8wXzI7CitFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdHBfMF8x CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitBTFRFUiBUQUJMRSB0cF8wXzEgT1dO RVIgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitBTFRFUiBUQUJMRSB0IE1F UkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK0VSUk9SOiAg bXVzdCBiZSBvd25lciBvZiB0YWJsZSB0cF8xXzIKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpB VElPTjsKK0FMVEVSIFRBQkxFIHRwXzFfMiBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9t ZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9u X21lcmdlX2JvYjsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0 cF8xXzIpIElOVE8gdHBfMF8yOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworRFJP UCBUQUJMRSB0OworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hl bWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK1JFVk9LRSBBTEwgT04g U0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25f bWVyZ2VfYm9iOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOwor RFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKKy0tIFRlc3Q6IHdlIGNh bid0IG1lcmdlIHBhcnRpdGlvbnMgd2l0aCBkaWZmZXJlbnQgb3duZXJzCitDUkVBVEUgUk9M RSByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYWxpY2U7CitDUkVBVEUgUk9MRSByZWdyZXNz X3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYWxpY2U7CitHUkFO VCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFy dGl0aW9uc19tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3Nf cGFydGl0aW9uc19tZXJnZV9hbGljZTsKK0NSRUFURSBUQUJMRSB0cF8wXzEoaSBpbnQpOwor UkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElP TiByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworQ1JFQVRFIFRBQkxFIHRwXzFfMihp IGludCk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitDUkVBVEUgVEFCTEUgdCAo aSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQ QVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQUxURVIgVEFC TEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgy KTsKKy0tIE93bmVyIGlzICdyZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYWxpY2UnOgorXGR0 IHRwXzBfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiB0YWJsZXMK KyAgICAgICAgIFNjaGVtYSAgICAgICAgICB8ICBOYW1lICB8IFR5cGUgIHwgICAgICAgICAg ICAgT3duZXIgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0 aW9uc19tZXJnZV9zY2hlbWEgfCB0cF8wXzEgfCB0YWJsZSB8IHJlZ3Jlc3NfcGFydGl0aW9u c19tZXJnZV9hbGljZQorKDEgcm93KQorCistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRp b25zX21lcmdlX2JvYic6CitcZHQgdHBfMV8yCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2YgdGFibGVzCisgICAgICAgICBTY2hlbWEgICAgICAgICAgfCAgTmFtZSAg fCBUeXBlICB8ICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgfCB0cF8xXzIgfCB0YWJsZSB8IHJl Z3Jlc3NfcGFydGl0aW9uc19tZXJnZV9ib2IKKygxIHJvdykKKworLS0gRVJST1I6ICBwYXJ0 aXRpb25zIGJlaW5nIG1lcmdlZCBoYXZlIGRpZmZlcmVudCBvd25lcnMKK0FMVEVSIFRBQkxF IHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworRVJS T1I6ICBwYXJ0aXRpb25zIGJlaW5nIG1lcmdlZCBoYXZlIGRpZmZlcmVudCBvd25lcnMKK0RS T1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2FsaWNlOworUkVWT0tFIEFMTCBP TiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlv bnNfbWVyZ2VfYm9iOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9hbGlj ZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworLS0gVGVzdCBm b3IgaGFzaCBwYXJ0aXRpb25lZCB0YWJsZQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJU SVRJT04gQlkgSEFTSChpKTsKK0NSRUFURSBUQUJMRSB0cDEgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAwKTsKK0NSRUFURSBUQUJMRSB0 cDIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRF UiAxKTsKKy0tIEVSUk9SOiAgcGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUg Y2Fubm90IGJlIG1lcmdlZAorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cDEs IHRwMikgSU5UTyB0cDM7CitFUlJPUjogIHBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVk IHRhYmxlIGNhbm5vdCBiZSBtZXJnZWQKKy0tIEVSUk9SOiAgbGlzdCBvZiBuZXcgcGFydGl0 aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gaXRlbXMKK0FMVEVSIFRBQkxFIHQg TUVSR0UgUEFSVElUSU9OUyAodHAxKSBJTlRPIHRwMzsKK0VSUk9SOiAgbGlzdCBvZiBuZXcg cGFydGl0aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gaXRlbXMKK0RST1AgVEFC TEUgdDsKKy0tIFRlc3QgZm9yIG1lcmdlZCBwYXJ0aXRpb24gcHJvcGVydGllczoKKy0tICog U1RBVElTVElDUyBpcyBlbXB0eQorLS0gKiBDT01NRU5UIGlzIGVtcHR5CistLSAqIERFRkFV TFRTIGFyZSB0aGUgc2FtZSBhcyBERUZBVUxUUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0t ICogU1RPUkFHRSBpcyB0aGUgc2FtZSBhcyBTVE9SQUdFIGZvciBwYXJ0aXRpb25lZCB0YWJs ZQorLS0gKiBHRU5FUkFURUQgYW5kIENPTlNUUkFJTlRTIGFyZSB0aGUgc2FtZSBhcyBHRU5F UkFURUQgYW5kIENPTlNUUkFJTlRTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBUUklH R0VSUyBhcmUgdGhlIHNhbWUgYXMgVFJJR0dFUlMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCitD UkVBVEUgVEFCTEUgdAorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIEVYVEVO REVEIENPTVBSRVNTSU9OIHBnbHogREVGQVVMVCAnZGVmYXVsdF90JywKKyBiIGJpZ2ludCwK KyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDEtMDEnKSBTVE9SRUQpIFBB UlRJVElPTiBCWSBSQU5HRSAoYWJzKGkpKTsKK0NPTU1FTlQgT04gQ09MVU1OIHQuaSBJUyAn dDEuaSc7CitDUkVBVEUgVEFCTEUgdHBfMF8xCisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0 IFNUT1JBR0UgTUFJTiBERUZBVUxUICdkZWZhdWx0X3RwXzBfMScsCisgYiBiaWdpbnQsCisg ZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAyLTAyJykgU1RPUkVEKTsKK0FM VEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMSk7CitDT01NRU5UIE9OIENPTFVNTiB0cF8wXzEuaSBJUyAndHBfMF8xLmknOwor Q1JFQVRFIFRBQkxFIHRwXzFfMgorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdF IE1BSU4gREVGQVVMVCAnZGVmYXVsdF90cF8xXzInLAorIGIgYmlnaW50LAorIGQgZGF0ZSBH RU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMy0wMycpIFNUT1JFRCk7CitBTFRFUiBUQUJM RSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIp OworQ09NTUVOVCBPTiBDT0xVTU4gdHBfMV8yLmkgSVMgJ3RwXzFfMi5pJzsKK0NSRUFURSBT VEFUSVNUSUNTIHRfc3RhdCAoREVQRU5ERU5DSUVTKSBvbiBpLCBiIGZyb20gdDsKK0NSRUFU RSBTVEFUSVNUSUNTIHRwXzBfMV9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0 cF8wXzE7CitDUkVBVEUgU1RBVElTVElDUyB0cF8xXzJfc3RhdCAoREVQRU5ERU5DSUVTKSBv biBpLCBiIGZyb20gdHBfMV8yOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2Jf Y2hlY2sgQ0hFQ0sgKGIgPiAwKTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9i X2NoZWNrMSBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNFRDsKK0FMVEVSIFRBQkxFIHQgQURE IENPTlNUUkFJTlQgdF9iX2NoZWNrMiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRDsKK0FMVEVS IFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX25uIE5PVCBOVUxMIGIgTk9UIFZBTElEOwor SU5TRVJUIElOVE8gdHBfMF8xKGksIHQsIGIpIFZBTFVFUygwLCBERUZBVUxULCAxKTsKK0lO U0VSVCBJTlRPIHRwXzFfMihpLCB0LCBiKSBWQUxVRVMoMSwgREVGQVVMVCwgMik7CitDUkVB VEUgT1IgUkVQTEFDRSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCkgUkVUVVJOUyB0cmln Z2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUworJEJPRFkkCitCRUdJTgorICBSQUlTRSBOT1RJ Q0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAl JywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICBSRVRVUk4gbmV3 OworRU5EOworJEJPRFkkOworQ1JFQVRFIFRSSUdHRVIgdF9iZWZvcmVfaW5zZXJ0X3Jvd190 cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdCBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9D RURVUkUgdHJpZ2dlcl9mdW5jdGlvbigndCcpOworQ1JFQVRFIFRSSUdHRVIgdHBfMF8xX2Jl Zm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF8wXzEgRk9SIEVB Q0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3RwXzBfMScp OworQ1JFQVRFIFRSSUdHRVIgdHBfMV8yX2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVG T1JFIElOU0VSVCBPTiB0cF8xXzIgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJF IHRyaWdnZXJfZnVuY3Rpb24oJ3RwXzFfMicpOworXGQrIHRwXzBfMQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25zX21l cmdlX3NjaGVtYS50cF8wXzEiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51 bGxhYmxlIHwgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgICAg ICAgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxs IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBw bGFpbiAgIHwgICAgICAgICAgICAgIHwgdHBfMF8xLmkKKyB0ICAgICAgfCB0ZXh0ICAgIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAnZGVmYXVsdF90cF8wXzEnOjp0ZXh0ICAgICAgICAg ICAgICAgICAgICAgICAgICB8IG1haW4gICAgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAg fCBiaWdpbnQgIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAg fCAKKyBkICAgICAgfCBkYXRlICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0 ZWQgYWx3YXlzIGFzICgnMDItMDItMjAyMic6OmRhdGUpIHN0b3JlZCB8IHBsYWluICAgfCAg ICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgxKQorUGFydGl0aW9uIGNvbnN0cmFpbnQ6ICgoYWJzKGkpIElTIE5PVCBOVUxMKSBBTkQg KGFicyhpKSA+PSAwKSBBTkQgKGFicyhpKSA8IDEpKQorQ2hlY2sgY29uc3RyYWludHM6Cisg ICAgInRfYl9jaGVjayIgQ0hFQ0sgKGIgPiAwKQorICAgICJ0X2JfY2hlY2sxIiBDSEVDSyAo YiA+IDApIE5PVCBFTkZPUkNFRAorICAgICJ0X2JfY2hlY2syIiBDSEVDSyAoYiA+IDApIE5P VCBWQUxJRAorU3RhdGlzdGljcyBvYmplY3RzOgorICAgICJwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYS50cF8wXzFfc3RhdCIgKGRlcGVuZGVuY2llcykgT04gaSwgYiBGUk9NIHRwXzBfMQor Tm90LW51bGwgY29uc3RyYWludHM6CisgICAgInRwXzBfMV9pX25vdF9udWxsIiBOT1QgTlVM TCAiaSIgKGluaGVyaXRlZCkKKyAgICAidF9iX25uIiBOT1QgTlVMTCAiYiIgKGluaGVyaXRl ZCkgTk9UIFZBTElECitUcmlnZ2VyczoKKyAgICB0X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdn ZXIgQkVGT1JFIElOU0VSVCBPTiB0cF8wXzEgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJ T04gdHJpZ2dlcl9mdW5jdGlvbigndCcpLCBPTiBUQUJMRSB0CisgICAgdHBfMF8xX2JlZm9y ZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF8wXzEgRk9SIEVBQ0gg Uk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigndHBfMF8xJykKKworQUxU RVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8w XzE7CitcZCsgdHBfMF8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVGFibGUgInBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnRwXzBfMSIKKyBDb2x1 bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgICAg ICAgIERlZmF1bHQgICAgICAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgIHwgU3RhdHMgdGFy Z2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGkgICAgICB8 IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAg fCAKKyB0ICAgICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAnZGVmYXVs dF90Jzo6dGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGV4dGVuZGVkIHwg ICAgICAgICAgICAgIHwgCisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8IG5vdCBu dWxsIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorIGQgICAgICB8IGRhdGUgICAgfCAgICAg ICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKCcwMS0wMS0yMDIyJzo6 ZGF0ZSkgc3RvcmVkIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBv ZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKQorUGFydGl0aW9uIGNvbnN0cmFpbnQ6 ICgoYWJzKGkpIElTIE5PVCBOVUxMKSBBTkQgKGFicyhpKSA+PSAwKSBBTkQgKGFicyhpKSA8 IDIpKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInRfYl9jaGVjayIgQ0hFQ0sgKGIgPiAw KQorICAgICJ0X2JfY2hlY2sxIiBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNFRAorICAgICJ0 X2JfY2hlY2syIiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRAorTm90LW51bGwgY29uc3RyYWlu dHM6CisgICAgInRfaV9ub3RfbnVsbCIgTk9UIE5VTEwgImkiIChpbmhlcml0ZWQpCisgICAg InRfYl9ubiIgTk9UIE5VTEwgImIiIChpbmhlcml0ZWQpIE5PVCBWQUxJRAorVHJpZ2dlcnM6 CisgICAgdF9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBf MF8xIEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3Qn KSwgT04gVEFCTEUgdAorCitJTlNFUlQgSU5UTyB0KGksIHQsIGIpIFZBTFVFUygxLCBERUZB VUxULCAzKTsKK05PVElDRTogIHRyaWdnZXIodCkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQs IHdoZW4gPSBCRUZPUkUsIGxldmVsID0gUk9XCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNz LCAqIEZST00gdCBPUkRFUiBCWSBiOworIHRhYmxlb2lkIHwgaSB8ICAgICAgIHQgICAgICAg IHwgYiB8ICAgICBkICAgICAgCistLS0tLS0tLS0tKy0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LSstLS0tLS0tLS0tLS0KKyB0cF8wXzEgICB8IDAgfCBkZWZhdWx0X3RwXzBfMSB8IDEgfCAw MS0wMS0yMDIyCisgdHBfMF8xICAgfCAxIHwgZGVmYXVsdF90cF8xXzIgfCAyIHwgMDEtMDEt MjAyMgorIHRwXzBfMSAgIHwgMSB8IGRlZmF1bHRfdCAgICAgIHwgMyB8IDAxLTAxLTIwMjIK KygzIHJvd3MpCisKK0RST1AgVEFCTEUgdDsKK0RST1AgRlVOQ1RJT04gdHJpZ2dlcl9mdW5j dGlvbigpOworLS0gVGVzdCBNRVJHRSBQQVJUSVRJT05TIHdpdGggbm90IHZhbGlkIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQKK0NSRUFURSBUQUJMRSB0IChpIElOVCBQUklNQVJZIEtFWSkg UEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9O IE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8y IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworSU5TRVJUIElO VE8gdCBWQUxVRVMgKDApLCAoMSk7CitDUkVBVEUgVEFCTEUgdF9mayAoaSBJTlQpOworSU5T RVJUIElOVE8gdF9mayBWQUxVRVMgKDEpLCAoMik7CitBTFRFUiBUQUJMRSB0X2ZrIEFERCBD T05TVFJBSU5UIHRfZmtfaV9ma2V5IEZPUkVJR04gS0VZIChpKSBSRUZFUkVOQ0VTIHQgTk9U IFZBTElEOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFf MikgSU5UTyB0cF8wXzI7CistLSBTaG91bGQgYmUgTk9UIFZBTElEIEZPUkVJR04gS0VZCitc ZCB0cF8wXzIKKyAgICAgIFRhYmxlICJwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS50cF8wXzIi CisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAK Ky0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQor IGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorUGFydGl0aW9u IG9mOiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpCitJbmRleGVzOgorICAgICJ0cF8w XzJfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChpKQorUmVmZXJlbmNlZCBieToKKyAgICBU QUJMRSAidF9mayIgQ09OU1RSQUlOVCAidF9ma19pX2ZrZXkiIEZPUkVJR04gS0VZIChpKSBS RUZFUkVOQ0VTIHQoaSkgTk9UIFZBTElECisKKy0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0 ZSBvbiB0YWJsZSAidF9mayIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidF9m a19pX2ZrZXkiCitBTFRFUiBUQUJMRSB0X2ZrIFZBTElEQVRFIENPTlNUUkFJTlQgdF9ma19p X2ZrZXk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRfZmsiIHZpb2xh dGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRfZmtfaV9ma2V5IgorREVUQUlMOiAgS2V5 IChpKT0oMikgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInQiLgorRFJPUCBUQUJMRSB0X2Zr OworRFJPUCBUQUJMRSB0OworLS0gVGVzdCBNRVJHRSBQQVJUSVRJT05TIHdpdGggbm90IGVu Zm9yY2VkIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQKK0NSRUFURSBUQUJMRSB0IChpIElOVCBQ UklNQVJZIEtFWSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8w XzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUg VEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIp OworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDApLCAoMSk7CitDUkVBVEUgVEFCTEUgdF9mayAo aSBJTlQpOworSU5TRVJUIElOVE8gdF9mayBWQUxVRVMgKDEpLCAoMik7CitBTFRFUiBUQUJM RSB0X2ZrIEFERCBDT05TVFJBSU5UIHRfZmtfaV9ma2V5IEZPUkVJR04gS0VZIChpKSBSRUZF UkVOQ0VTIHQgTk9UIEVORk9SQ0VEOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05T ICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CistLSBTaG91bGQgYmUgTk9UIEVORk9S Q0VEIEZPUkVJR04gS0VZCitcZCB0cF8wXzIKKyAgICAgIFRhYmxlICJwYXJ0aXRpb25zX21l cmdlX3NjaGVtYS50cF8wXzIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51 bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLQorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3Qg bnVsbCB8IAorUGFydGl0aW9uIG9mOiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpCitJ bmRleGVzOgorICAgICJ0cF8wXzJfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChpKQorUmVm ZXJlbmNlZCBieToKKyAgICBUQUJMRSAidF9mayIgQ09OU1RSQUlOVCAidF9ma19pX2ZrZXki IEZPUkVJR04gS0VZIChpKSBSRUZFUkVOQ0VTIHQoaSkgTk9UIEVORk9SQ0VECisKKy0tIEVS Uk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidF9mayIgdmlvbGF0ZXMgZm9yZWln biBrZXkgY29uc3RyYWludCAidF9ma19pX2ZrZXkiCitBTFRFUiBUQUJMRSB0X2ZrIEFMVEVS IENPTlNUUkFJTlQgdF9ma19pX2ZrZXkgRU5GT1JDRUQ7CitFUlJPUjogIGluc2VydCBvciB1 cGRhdGUgb24gdGFibGUgInRfZmsiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg InRfZmtfaV9ma2V5IgorREVUQUlMOiAgS2V5IChpKT0oMikgaXMgbm90IHByZXNlbnQgaW4g dGFibGUgInQiLgorRFJPUCBUQUJMRSB0X2ZrOworRFJPUCBUQUJMRSB0OworLS0gVGVzdCBm b3IgcmVjb21wdXRhdGlvbiBvZiBzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbnMuCitDUkVBVEUg VEFCTEUgdCAoaSBpbnQsIHRhYl9pZCBpbnQgZ2VuZXJhdGVkIGFsd2F5cyBhcyAodGFibGVv aWQpIHN0b3JlZCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8w XzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUg VEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIp OworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCBjYyBDSEVDSyh0YWJsZW9pZCA8PiAx MjM0NTY3ODkpOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDApLCAoMSk7CistLSBTaG91bGQg YmUgMCBiZWNhdXNlIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAgaXMg ZGlmZmVyZW50IGZyb20KKy0tIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBp PTEuCitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4g KFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdIRVJFIGkgPSAxKTsKKyBjb3VudCAKKy0tLS0tLS0K KyAgICAgMAorKDEgcm93KQorCistLSAidGFiX2lkIiBjb2x1bW4gKHN0b3JlZCBnZW5lcmF0 ZWQgY29sdW1uKSB3aXRoICJ0YWJsZW9pZCIgYXR0cmlidXRlIHJlcXVpcmVzCistLSByZWNv bXB1dGF0aW9uIGhlcmUuCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBf MSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKy0tIFNob3VsZCBiZSAxIGJlY2F1c2UgcGFydGl0 aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MCBpcyB0aGUgc2FtZSBhcworLS0gcGFy dGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBG Uk9NIHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQg V0hFUkUgaSA9IDEpOworIGNvdW50IAorLS0tLS0tLQorICAgICAxCisoMSByb3cpCisKK0RS T1AgVEFCTEUgdDsKKy0tIFRlc3QgZm9yIGdlbmVyYXRlZCBjb2x1bW5zIChkaWZmZXJlbnQg b3JkZXIgb2YgY29sdW1ucyBpbiBwYXJ0aXRpb25lZCB0YWJsZQorLS0gYW5kIHBhcnRpdGlv bnMpLgorQ1JFQVRFIFRBQkxFIHQgKGkgaW50LCBnIGludCBHRU5FUkFURUQgQUxXQVlTIEFT IChpICsgdGFibGVvaWQ6OmludCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUg VEFCTEUgdHBfMSAoZyBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoaSArIHRhYmxlb2lkOjpp bnQpLCBpIGludCk7CitDUkVBVEUgVEFCTEUgdHBfMiAoZyBpbnQgR0VORVJBVEVEIEFMV0FZ UyBBUyAoaSArIHRhYmxlb2lkOjppbnQpLCBpIGludCk7CitBTFRFUiBUQUJMRSB0IEFUVEFD SCBQQVJUSVRJT04gdHBfMSBGT1IgVkFMVUVTIEZST00gKC0xKSBUTyAoMTApOworQUxURVIg VEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzIgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8g KDIwKTsKK0FMVEVSIFRBQkxFIHQgQUREIENIRUNLIChnID4gMCk7CitBTFRFUiBUQUJMRSB0 IEFERCBDSEVDSyAoaSA+IDApOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDUpLCAoMTUpOwor QUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8xLCB0cF8yKSBJTlRPIHRwXzEy OworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDE2KTsKKy0tIEVSUk9SOiAgbmV3IHJvdyBmb3Ig cmVsYXRpb24gInRwXzEyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJ0X2lfY2hlY2si CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCk7CitFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0 aW9uICJ0cF8xMiIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAidF9pX2NoZWNrIgorREVU QUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKDAsIHZpcnR1YWwpLgorLS0gU2hvdWxkIGJl IDMgcm93czogKDUpLCAoMTUpLCAoMTYpOgorU0VMRUNUIGkgRlJPTSB0IE9SREVSIEJZIGk7 CisgaSAgCistLS0tCisgIDUKKyAxNQorIDE2CisoMyByb3dzKQorCistLSBTaG91bGQgYmUg MSBiZWNhdXNlIGZvciB0aGUgc2FtZSB0YWJsZW9pZCAoMTUgKyB0YWJsZW9pZCkgPSAoNSAr IHRhYmxlb2lkKSArIDEwOgorU0VMRUNUIGNvdW50KCopIEZST00gdCBXSEVSRSBpID0gMTUg QU5EIGcgSU4gKFNFTEVDVCBnICsgMTAgRlJPTSB0IFdIRVJFIGkgPSA1KTsKKyBjb3VudCAK Ky0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCitEUk9QIFRBQkxFIHQ7CitSRVNFVCBzZWFy Y2hfcGF0aDsKKy0tCitEUk9QIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKK0RS T1AgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMjsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlCmluZGV4IGE0MjRiZTJhNmIuLjY0NjRhMjM4YWMgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTIzLDcgKzEyMyw3IEBAIHRlc3Q6IHBsYW5j YWNoZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFy ZSBjb252ZXJzaW9uIHRyCiAjIFRoZSBzdGF0cyB0ZXN0IHJlc2V0cyBzdGF0cywgc28gbm90 aGluZyBlbHNlIG5lZWRpbmcgc3RhdHMgYWNjZXNzIGNhbiBiZSBpbgogIyB0aGlzIGdyb3Vw LgogIyAtLS0tLS0tLS0tCi10ZXN0OiBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUg cmVsb3B0aW9ucyBoYXNoX3BhcnQgaW5kZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0 aXRpb25faW5mbyB0dXBsZXNvcnQgZXhwbGFpbiBjb21wcmVzc2lvbiBtZW1vaXplIHN0YXRz IHByZWRpY2F0ZSBudW1hCit0ZXN0OiBwYXJ0aXRpb25fbWVyZ2UgcGFydGl0aW9uX2pvaW4g cGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlv bl9hZ2dyZWdhdGUgcGFydGl0aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Np b24gbWVtb2l6ZSBzdGF0cyBwcmVkaWNhdGUgbnVtYQogCiAjIGV2ZW50X3RyaWdnZXIgZGVw ZW5kcyBvbiBjcmVhdGVfYW0gYW5kIGNhbm5vdCBydW4gY29uY3VycmVudGx5IHdpdGgKICMg YW55IHRlc3QgdGhhdCBydW5zIERETApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcGFydGl0aW9uX21lcmdlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlv bl9tZXJnZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNWJh YmE1NjM5MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRp dGlvbl9tZXJnZS5zcWwKQEAgLTAsMCArMSw4MTYgQEAKKy0tCistLSBQQVJUSVRJT05TX01F UkdFCistLSBUZXN0cyBmb3IgIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIC4u LiIgY29tbWFuZAorLS0KKworQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YTsKK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyOworU0VUIHNlYXJj aF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKworLS0KKy0tIEJZ IFJBTkdFIHBhcnRpdGlvbmluZworLS0KKworLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNvZGVz CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNh bGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19kZWMyMDIxIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIxLTEyLTMxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Zl YjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTA0LTAxJyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChz YWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVz X2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHJfMSBQQVJUSVRJT04gT0Ygc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTE1 Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByXzIgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0xNScpIFRPICgnMjAyMi0wNS0wMScpOwor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKwor Q1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVG QVVMVDsKKworLS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIy IiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJ VElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElO VE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworLS0gRVJST1I6ICAic2FsZXNfYXByMjAyMiIg aXMgbm90IGEgdGFibGUKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElP TlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElOVE8g c2FsZXNfZmViX21hcl9hcHIyMDIyOworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0 aXRpb24gInNhbGVzX21hcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQg b2YgcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIgorLS0gKHNwYWNlIGJldHdlZW4gc2VjdGlv bnMgc2FsZXNfamFuMjAyMiBhbmQgc2FsZXNfbWFyMjAyMikKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2phbjIwMjIsIHNhbGVzX21hcjIwMjIp IElOVE8gc2FsZXNfamFuX21hcjIwMjI7CistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBh cnRpdGlvbiAic2FsZXNfamFuMjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3Vu ZCBvZiBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCistLSAoc3BhY2UgYmV0d2VlbiBzZWN0 aW9ucyBzYWxlc19kZWMyMDIxIGFuZCBzYWxlc19qYW4yMDIyKQorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZGVjMjAyMSwgc2FsZXNfamFuMjAy Miwgc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19kZWNfamFuX2ZlYjIwMjI7CistLSBFUlJP UjogIHBhcnRpdGlvbiB3aXRoIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNl ZAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmVi MjAyMiwgc2FsZXNfbWFyMjAyMiwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfZmVi MjAyMikgSU5UTyBzYWxlc19mZWJfbWFyX2FwcjIwMjI7CisKKy0tIE5PIEVSUk9SOiB0ZXN0 IGZvciBjdXN0b20gcGFydGl0aW9ucyBvcmRlciwgc291cmNlIHBhcnRpdGlvbnMgbm90IGlu IHRoZSBzZWFyY2hfcGF0aAorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEyLCBwdWJsaWM7CitBTFRFUiBUQUJMRSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5z YWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TICgKKyAgcGFydGl0aW9uc19tZXJnZV9zY2hl bWEuc2FsZXNfZmViMjAyMiwKKyAgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfbWFy MjAyMiwKKyAgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfamFuMjAyMikgSU5UTyBz YWxlc19qYW5fZmViX21hcjIwMjI7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21l cmdlX3NjaGVtYSwgcHVibGljOworCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xh c3MsIGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhw cihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBj LCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlk IEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19yYW5nZSc6OnJlZ2NsYXNzCisgIE9SREVSIEJZ IHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZB VUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKwor RFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIEFkZCByb3dzIGludG8gcGFydGl0 aW9uZWQgdGFibGUsIHRoZW4gbWVyZ2UgcGFydGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBz YWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBC WSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRP ICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIw MjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0 LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug REVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBz YWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMx JyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAn Rm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1 MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQt MDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywg ICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywg MTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0w My0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgx MSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAg ICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIy LTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKwor U0VMRUNUIHBnX2NhdGFsb2cucGdfZ2V0X3BhcnRrZXlkZWYoJ3NhbGVzX3JhbmdlJzo6cmVn Y2xhc3MpOworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNU IGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRp bmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBG Uk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisg IFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfcmFu Z2UnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVs cGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2Ns YXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKKy0tIGNoZWNrIHNjaGVtYS1xdWFsaWZpZWQgbmFt ZSBvZiB0aGUgbmV3IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0Ug UEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfYXByMjAy MikgSU5UTyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIy OworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lk OjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBn X2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBn X2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJF IGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpy ZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJv dW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpw Z19jYXRhbG9nLnRleHQ7CisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJs ZW5hbWUgPSAnc2FsZXNfZmViX21hcl9hcHIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYTInOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOwor U0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworU0VMRUNUICogRlJPTSBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyOworU0VMRUNUICogRlJPTSBz YWxlc19vdGhlcnM7CisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcwor U0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworCitTRUxFQ1QgKiBGUk9NIHBhcnRpdGlvbnNf bWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ ICcyMDIyLTAxLTAxJzsKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUg c2FsZXNfcmFuZ2U7CisKKy0tCistLSBNZXJnZSBzb21lIHBhcnRpdGlvbnMgaW50byBERUZB VUxUIHBhcnRpdGlvbgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJz b25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQg SU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVz X290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRF WCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJl ZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAo MSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2Zm JywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAy Mi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisg ICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90 JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcy MDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwK KyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxk ZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAg JzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScp LAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1Nt aXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworLS0gTWVyZ2UgcGFydGl0aW9ucyAo aW5jbHVkZSBERUZBVUxUIHBhcnRpdGlvbikgaW50byBwYXJ0aXRpb24gd2l0aCB0aGUgc2Ft ZQorLS0gbmFtZQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUwor ICAoc2FsZXNfamFuMjAyMiwgc2FsZXNfbWFyMjAyMiwgcGFydGl0aW9uc19tZXJnZV9zY2hl bWEuc2FsZXNfb3RoZXJzKSBJTlRPIHNhbGVzX290aGVyczsKKworc2VsZWN0ICogZnJvbSBz YWxlc19vdGhlcnM7CisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitT RUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNo cGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQp CisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRz IGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxl c19yYW5nZSc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIo Yy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cu cmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsK KworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5Owor LS0gICAqIEdFTkVSQVRFRCBjb2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2 YWx1ZS4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNwZXJzb25fbmFtZSBW QVJDSEFSKDMwKSwgc2FsZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5 IElOVCwKKyAgc2FsZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisg ICAgKExQQUQoc2FsZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxl c19tb250aDo6dGV4dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQs IDIsICcwJykpIFNUT1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZB VUxUICdTYWxlcyBkZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195 ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2Rl YzIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAx MiwgMSkgVE8gKDIwMjIsIDEsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAo MjAyMiwgMiwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDIsIDEpIFRPICgyMDIyLCAzLCAx KTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlciBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBG T1IgVkFMVUVTIEZST00gKDIwMjIsIDMsIDEpIFRPIChNQVhWQUxVRSwgTUFYVkFMVUUsIE1B WFZBTFVFKTsKKworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBz YWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2Vy MScsIDIwMjEsIDEyLCA3KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4KSwKKyAgKCdN YW5hZ2VyMycsIDIwMjIsIDEsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMiwgNCksCisg ICgnTWFuYWdlcjInLCAyMDIyLCAxLCAyKSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDIsIDEp LAorICAoJ01hbmFnZXIxJywgMjAyMiwgMywgMyksCisgICgnTWFuYWdlcjInLCAyMDIyLCAz LCA0KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDUsIDEpOworCitTRUxFQ1QgKiBGUk9NIHNh bGVzX2RhdGU7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX2phbjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjI7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzX290aGVyOworCitBTFRFUiBUQUJMRSBzYWxlc19kYXRlIE1FUkdFIFBB UlRJVElPTlMgKHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfamFu X2ZlYjIwMjI7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwg c2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCisgICgnTWFuYWdl cjEnLCAyMDIyLCAxLCAxMCksCisgICgnTWFuYWdlcjInLCAyMDIyLCAyLCAxMCk7CisKK1NF TEVDVCAqIEZST00gc2FsZXNfZGF0ZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZGVjMjAyMjsK K1NFTEVDVCAqIEZST00gc2FsZXNfamFuX2ZlYjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVz X290aGVyOworCitEUk9QIFRBQkxFIHNhbGVzX2RhdGU7CisKKy0tCistLSBUZXN0OiBtZXJn ZSBwYXJ0aXRpb25zIG9mIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggdHJpZ2dlcnMKKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZ LCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNh bGVzcGVyc29uX2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElU SU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFU RSBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1Ig VkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMjBf MzAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgz MCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUzMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNw ZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKTsKKworSU5TRVJUIElOVE8gc2Fs ZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworCitDUkVBVEUgT1IgUkVQTEFDRSBG VU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKSBSRVRVUk5TIHRyaWdnZXIgTEFO R1VBR0UgJ3BscGdzcWwnIEFTICRCT0RZJAorQkVHSU4KKyAgICBSQUlTRSBOT1RJQ0UgJ3Ry aWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdf QVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICAgIFJFVFVSTiBOVUxMOwor RU5EOworJEJPRFkkOworCitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNl cnRfc3RhdGVtZW50X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Bl b3BsZQorICAgIEZPUiBFQUNIIFNUQVRFTUVOVAorICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFm dGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKKworQ1JFQVRFIFRSSUdH RVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5T RVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRF IFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CisK Ky0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50KToKK0lO U0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMTAsICdNYXknKTsKKy0tIDEgdHJpZ2dl ciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF8y MCBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIE1F UkdFIFBBUlRJVElPTlMgKHNhbGVzcGVvcGxlMTBfMjAsIHNhbGVzcGVvcGxlMjBfMzAsIHNh bGVzcGVvcGxlMzBfNDApIElOVE8gc2FsZXNwZW9wbGUxMF80MDsKKworLS0gMiB0cmlnZ2Vy cyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2Fs ZXNwZW9wbGUgVkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7CistLSAxIHRyaWdnZXIgc2hvdWxk IGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfNDAgVkFMVUVT ICgzMCwgJ0ZvcmQnKTsKKworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTAxXzEwOworU0VM RUNUICogRlJPTSBzYWxlc3Blb3BsZTEwXzQwOworCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxl OworRFJPUCBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKTsKKworLS0KKy0t IFRlc3Q6IG1lcmdlIHBhcnRpdGlvbnMgd2l0aCBkZWxldGVkIGNvbHVtbnMKKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBz YWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVz cGVyc29uX2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9O IE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKKy0tIENyZWF0 ZSBwYXJ0aXRpb25zIHdpdGggc29tZSBkZWxldGVkIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUg c2FsZXNwZW9wbGUxMF8yMChkMSBWQVJDSEFSKDMwKSwgc2FsZXNwZXJzb25faWQgSU5UIFBS SU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NSRUFURSBUQUJM RSBzYWxlc3Blb3BsZTIwXzMwKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgZDIg SU5ULCAgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNwZW9wbGUzMF80MChzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQzIERBVEUs IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworCitJTlNFUlQgSU5UTyBzYWxlc3Bl b3BsZTEwXzIwIFZBTFVFUyAoJ2R1bW15IHZhbHVlIDEnLCAxOSwgJ0l2YW5vdicpOworSU5T RVJUIElOVE8gc2FsZXNwZW9wbGUyMF8zMCBWQUxVRVMgKDIwLCAxMDEsICdTbWlybm9mZicp OworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUzMF80MCBWQUxVRVMgKDMxLCBub3coKSwgJ1Bv cG92Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfMjAgRFJPUCBDT0xVTU4gZDE7 CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTIwXzMwIERST1AgQ09MVU1OIGQyOworQUxURVIg VEFCTEUgc2FsZXNwZW9wbGUzMF80MCBEUk9QIENPTFVNTiBkMzsKKworQUxURVIgVEFCTEUg c2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxV RVMgRlJPTSAoMTApIFRPICgyMCk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0gg UEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMw KTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9w bGUzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApOworCitJTlNFUlQgSU5UTyBz YWxlc3Blb3BsZSBWQUxVRVMKKyAgKDEsICdQb2lyb3QnKSwKKyAgKDEwLCAnTWF5JyksCisg ICgzMCwgJ0ZvcmQnKTsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgTUVSR0UgUEFSVElU SU9OUyAoc2FsZXNwZW9wbGUxMF8yMCwgc2FsZXNwZW9wbGUyMF8zMCwgc2FsZXNwZW9wbGUz MF80MCkgSU5UTyBzYWxlc3Blb3BsZTEwXzQwOworCitzZWxlY3QgKiBmcm9tIHNhbGVzcGVv cGxlOworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTAxXzEwOworc2VsZWN0ICogZnJvbSBz YWxlc3Blb3BsZTEwXzQwOworCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlOworCistLQorLS0g VGVzdDogbWVyZ2Ugc3ViLXBhcnRpdGlvbnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFu Z2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwg c2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0Ug KHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjIt MDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOwor CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxl c3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRl IERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfYXByMjAyMl8wMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfYXByMjAyMl8xMF8yMCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTEwJykgVE8gKCcyMDIyLTA0LTIwJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfYXByMjAyMl8yMF8zMCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1LTAxJyk7CitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworCitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxU OworCitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNf cmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAor ICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQn LCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAn MjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyks CisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGkn LCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwg ICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEn KSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdU cnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUw LCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0w OScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVD VCAqIEZST00gc2FsZXNfcmFuZ2U7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7CitT RUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMDFfMTA7CitTRUxFQ1QgKiBGUk9NIHNhbGVz X2FwcjIwMjJfMTBfMjA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMjBfMzA7CisK K0FMVEVSIFRBQkxFIHNhbGVzX2FwcjIwMjIgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfYXBy MjAyMl8wMV8xMCwgc2FsZXNfYXByMjAyMl8xMF8yMCwgc2FsZXNfYXByMjAyMl8yMF8zMCkg SU5UTyBzYWxlc19hcHJfYWxsOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworU0VM RUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19hcHJfYWxs 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 cGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cu cmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19n ZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdfY2F0YWxvZy5wZ19j bGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmlu aHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19saXN0Jzo6cmVnY2xhc3MKKyAgT1JE RVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0g J0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0 OworCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dl c3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2NlbnRyYWwpIElOVE8gc2FsZXNfYWxsOworCistLSBz aG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRh bG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cu cGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cu cGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0g aS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfbGlzdCc6OnJlZ2NsYXNzCisg IE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lk KSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cu dGV4dDsKKworU0VMRUNUICogRlJPTSBzYWxlc19saXN0OworU0VMRUNUICogRlJPTSBzYWxl c19ub3JkOworU0VMRUNUICogRlJPTSBzYWxlc19hbGw7CisKKy0tIFVzZSBpbmRleHNjYW4g Zm9yIHRlc3RpbmcgaW5kZXhlcyBhZnRlciBtZXJnaW5nIHBhcnRpdGlvbnMKK1NFVCBlbmFi bGVfc2Vxc2NhbiA9IE9GRjsKKworU0VMRUNUICogRlJPTSBzYWxlc19hbGwgV0hFUkUgc2Fs ZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBz YWxlc19zdGF0ZSA9ICdXYXJzYXcnOworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJF IHNhbGVzcGVyc29uX25hbWUgPSAnSXZhbm92JzsKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47 CisKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKworLS0KKy0tIFRyeSB0byBNRVJHRSBwYXJ0 aXRpb25zIG9mIGFub3RoZXIgdGFibGUuCistLQorQ1JFQVRFIFRBQkxFIHQxIChpIGludCwg YSBpbnQsIGIgaW50LCBjIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhLCBiKTsKK0NSRUFU RSBUQUJMRSB0MXAxIFBBUlRJVElPTiBPRiB0MSBGT1IgVkFMVUVTIEZST00gKDEsIDEpIFRP ICgxLCAyKTsKK0NSRUFURSBUQUJMRSB0MiAoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZ IFJBTkdFICh0KTsKK0NSRUFURSBUQUJMRSB0MnBhIFBBUlRJVElPTiBPRiB0MiBGT1IgVkFM VUVTIEZST00gKCdBJykgVE8gKCdDJyk7CitDUkVBVEUgVEFCTEUgdDMgKGkgaW50LCB0IHRl eHQpOworCistLSBFUlJPUjogIHJlbGF0aW9uICJ0MXAxIiBpcyBub3QgYSBwYXJ0aXRpb24g b2YgcmVsYXRpb24gInQyIgorQUxURVIgVEFCTEUgdDIgTUVSR0UgUEFSVElUSU9OUyAodDFw MSwgdDJwYSkgSU5UTyB0MnA7CistLSBFUlJPUjogICJ0MyIgaXMgbm90IGEgcGFydGl0aW9u IG9mIHBhcnRpdGlvbmVkIHRhYmxlICJ0MiIKK0FMVEVSIFRBQkxFIHQyIE1FUkdFIFBBUlRJ VElPTlMgKHQycGEsIHQzKSBJTlRPIHQycDsKKworRFJPUCBUQUJMRSB0MzsKK0RST1AgVEFC TEUgdDI7CitEUk9QIFRBQkxFIHQxOworCistLQorLS0gVHJ5IHRvIE1FUkdFIHBhcnRpdGlv bnMgb2YgdGVtcG9yYXJ5IHRhYmxlLgorLS0KK0NSRUFURSBURU1QIFRBQkxFIHQgKGkgaW50 KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMF8xIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRFTVAg VEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIp OworCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIHBnX2NhdGFsb2cucGdf Z2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSwgYy5yZWxwZXJzaXN0ZW5jZQorICBG Uk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisg IFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAndCc6OnJlZ2Ns YXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQs IGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2Nh dGFsb2cudGV4dDsKKworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEs IHRwXzFfMikgSU5UTyB0cF8wXzI7CisKKy0tIFBhcnRpdGlvbiBzaG91bGQgYmUgdGVtcG9y YXJ5LgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBn X2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAg RlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQor ICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdj bGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5k LCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19j YXRhbG9nLnRleHQ7CisKK0RST1AgVEFCTEUgdDsKKworLS0KKy0tIENoZWNrIHRoZSBwYXJ0 aXRpb24gaW5kZXggbmFtZSBpZiB0aGUgcGFydGl0aW9uIG5hbWUgaXMgdGhlIHNhbWUgYXMg b25lCistLSBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbnMuCistLQorQ1JFQVRFIFRBQkxFIHQg KGkgaW50LCBQUklNQVJZIEtFWShpKSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKKworQ1JF QVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBG Uk9NICgxKSBUTyAoMik7CisKK0NSRUFURSBJTkRFWCB0aWR4IE9OIHQoaSk7CitBTFRFUiBU QUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzFfMiwgdHBfMF8xKSBJTlRPIHRwXzFfMjsK KworLS0gSW5kZXhuYW1lIHZhbHVlcyBzaG91bGQgYmUgJ3RwXzFfMl9wa2V5JyBhbmQgJ3Rw XzFfMl9pX2lkeCcuCistLSBOb3QtbnVsbCBjb25zdHJhaW50IG5hbWUgc2hvdWxkIGJlICd0 cF8xXzJfaV9ub3RfbnVsbCcuCitcZCsgdHBfMV8yCisKK0RST1AgVEFCTEUgdDsKKworLS0K Ky0tIFRyeSBtaXhpbmcgcGVybWFuZW50IGFuZCB0ZW1wb3JhcnkgcGFydGl0aW9ucy4KKy0t CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcGdfdGVtcCwg cHVibGljOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkp OworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00g KDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMik7CisKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdj bGFzcywgYy5yZWxwZXJzaXN0ZW5jZSBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyBXSEVS RSBjLm9pZCA9ICd0Jzo6cmVnY2xhc3M7CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVn Y2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSwg Yy5yZWxwZXJzaXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0 YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5p bmhwYXJlbnQgPSAndCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0 X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2Nh dGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKworU0VUIHNlYXJjaF9wYXRoID0g cGdfdGVtcCwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKworLS0gQ2FuJ3Qg bWVyZ2UgcGVyc2lzdGVudCBwYXJ0aXRpb25zIGludG8gYSB0ZW1wb3JhcnkgcGFydGl0aW9u CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRP IHRwXzBfMjsKKworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEs IHB1YmxpYzsKKworLS0gQ2FuJ3QgbWVyZ2UgcGVyc2lzdGVudCBwYXJ0aXRpb25zIGludG8g YSB0ZW1wb3JhcnkgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMg KHRwXzBfMSwgdHBfMV8yKSBJTlRPIHBnX3RlbXAudHBfMF8yOworRFJPUCBUQUJMRSB0Owor CitTRVQgc2VhcmNoX3BhdGggPSBwZ190ZW1wLCBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwg cHVibGljOworCitCRUdJTjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZ IFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBP RiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCitTRUxFQ1QgYy5vaWQ6OnBnX2Nh dGFsb2cucmVnY2xhc3MsIGMucmVscGVyc2lzdGVuY2UgRlJPTSBwZ19jYXRhbG9nLnBnX2Ns YXNzIGMgV0hFUkUgYy5vaWQgPSAndCc6OnJlZ2NsYXNzOworU0VMRUNUIGMub2lkOjpwZ19j YXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5k LCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNz IGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVs aWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRh bG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMu b2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK1NFVCBzZWFy Y2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwZ190ZW1wLCBwdWJsaWM7CisK Ky0tIENhbid0IG1lcmdlIHRlbXBvcmFyeSBwYXJ0aXRpb25zIGludG8gYSBwZXJzaXN0ZW50 IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRw XzFfMikgSU5UTyB0cF8wXzI7CitST0xMQkFDSzsKKworLS0gQ2hlY2sgdGhlIG5ldyBwYXJ0 aXRpb24gaW5oZXJpdHMgcGFyZW50J3MgdGFibGVzcGFjZQorU0VUIHNlYXJjaF9wYXRoID0g cGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0NSRUFURSBUQUJMRSB0IChpIGlu dCBQUklNQVJZIEtFWSBVU0lORyBJTkRFWCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2Up CisgIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNl OworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00g KDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMg KHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1NFTEVDVCB0YWJsZW5hbWUsIHRhYmxl c3BhY2UgRlJPTSBwZ190YWJsZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8w XzInKSBBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25zX21lcmdlX3NjaGVtYScKKyAgT1JE RVIgQlkgdGFibGVuYW1lLCB0YWJsZXNwYWNlOworU0VMRUNUIHRhYmxlbmFtZSwgaW5kZXhu YW1lLCB0YWJsZXNwYWNlIEZST00gcGdfaW5kZXhlcworICBXSEVSRSB0YWJsZW5hbWUgSU4g KCd0JywgJ3RwXzBfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hJworICBPUkRFUiBCWSB0YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZTsKK0RS T1AgVEFCTEUgdDsKKworLS0gQ2hlY2sgdGhlIG5ldyBwYXJ0aXRpb24gaW5oZXJpdHMgcGFy ZW50J3MgdGFibGUgYWNjZXNzIG1ldGhvZAorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9u c19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0NSRUFURSBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlv bnNfbWVyZ2VfaGVhcCBUWVBFIFRBQkxFIEhBTkRMRVIgaGVhcF90YWJsZWFtX2hhbmRsZXI7 CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVVNJTkcg cGFydGl0aW9uc19tZXJnZV9oZWFwOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04g T0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIg UEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitBTFRFUiBUQUJM RSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1NF TEVDVCBjLnJlbG5hbWUsIGEuYW1uYW1lCitGUk9NIHBnX2NsYXNzIGMgSk9JTiBwZ19hbSBh IE9OIGMucmVsYW0gPSBhLm9pZAorV0hFUkUgYy5vaWQgSU4gKCd0Jzo6cmVnY2xhc3MsICd0 cF8wXzInOjpyZWdjbGFzcykKK09SREVSIEJZIGMucmVsbmFtZTsKK0RST1AgVEFCTEUgdDsK K0RST1AgQUNDRVNTIE1FVEhPRCBwYXJ0aXRpb25zX21lcmdlX2hlYXA7CisKKy0tIFRlc3Qg cGVybWlzc2lvbiBjaGVja3MuICBUaGUgdXNlciBuZWVkcyB0byBvd24gdGhlIHBhcmVudCB0 YWJsZSBhbmQgYWxsCistLSB0aGUgbWVyZ2luZyBwYXJ0aXRpb25zIHRvIGRvIHRoZSBtZXJn ZS4KK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworQ1JFQVRF IFJPTEUgcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworR1JBTlQgQUxMIE9OIFNDSEVN QSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9h bGljZTsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8g cmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFU SU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworQ1JFQVRFIFRBQkxFIHQgKGkg aW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJU SVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0 cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CisKK1NF VCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOwor QUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0 cF8wXzI7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVSIFRBQkxFIHQg T1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVU SE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitBTFRFUiBUQUJMRSB0 IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1JFU0VU IFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworQUxURVIgVEFCTEUgdHBfMF8xIE9XTkVSIFRP IHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJ T04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworQUxURVIgVEFCTEUgdCBNRVJHRSBQ QVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitSRVNFVCBTRVNTSU9O IEFVVEhPUklaQVRJT047CisKK0FMVEVSIFRBQkxFIHRwXzFfMiBPV05FUiBUTyByZWdyZXNz X3BhcnRpdGlvbl9tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jl c3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9O UyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJ WkFUSU9OOworCitEUk9QIFRBQkxFIHQ7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRp b25zX21lcmdlX3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOwor UkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgRlJPTSByZWdy ZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25f bWVyZ2VfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOwor CisKKy0tIFRlc3Q6IHdlIGNhbid0IG1lcmdlIHBhcnRpdGlvbnMgd2l0aCBkaWZmZXJlbnQg b3duZXJzCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYWxpY2U7CitD UkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworR1JBTlQgQUxMIE9O IFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbnNf bWVyZ2VfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9hbGljZTsKK0NSRUFURSBUQUJM RSB0cF8wXzEoaSBpbnQpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworU0VUIFNF U1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworQ1JF QVRFIFRBQkxFIHRwXzFfMihpIGludCk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047 CisKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKKwor QUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00g KDApIFRPICgxKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xXzIgRk9S IFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CisKKy0tIE93bmVyIGlzICdyZWdyZXNzX3BhcnRp dGlvbnNfbWVyZ2VfYWxpY2UnOgorXGR0IHRwXzBfMQorLS0gT3duZXIgaXMgJ3JlZ3Jlc3Nf cGFydGl0aW9uc19tZXJnZV9ib2InOgorXGR0IHRwXzFfMgorCistLSBFUlJPUjogIHBhcnRp dGlvbnMgYmVpbmcgbWVyZ2VkIGhhdmUgZGlmZmVyZW50IG93bmVycworQUxURVIgVEFCTEUg dCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CisKK0RS T1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2FsaWNlOworUkVWT0tFIEFMTCBP TiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlv bnNfbWVyZ2VfYm9iOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9hbGlj ZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworCisKKy0tIFRl c3QgZm9yIGhhc2ggcGFydGl0aW9uZWQgdGFibGUKK0NSRUFURSBUQUJMRSB0IChpIGludCkg UEFSVElUSU9OIEJZIEhBU0goaSk7CitDUkVBVEUgVEFCTEUgdHAxIFBBUlRJVElPTiBPRiB0 IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMCk7CitDUkVBVEUgVEFC TEUgdHAyIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1B SU5ERVIgMSk7CisKKy0tIEVSUk9SOiAgcGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQg dGFibGUgY2Fubm90IGJlIG1lcmdlZAorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05T ICh0cDEsIHRwMikgSU5UTyB0cDM7CisKKy0tIEVSUk9SOiAgbGlzdCBvZiBuZXcgcGFydGl0 aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gaXRlbXMKK0FMVEVSIFRBQkxFIHQg TUVSR0UgUEFSVElUSU9OUyAodHAxKSBJTlRPIHRwMzsKKworRFJPUCBUQUJMRSB0OworCisK Ky0tIFRlc3QgZm9yIG1lcmdlZCBwYXJ0aXRpb24gcHJvcGVydGllczoKKy0tICogU1RBVElT VElDUyBpcyBlbXB0eQorLS0gKiBDT01NRU5UIGlzIGVtcHR5CistLSAqIERFRkFVTFRTIGFy ZSB0aGUgc2FtZSBhcyBERUZBVUxUUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogU1RP UkFHRSBpcyB0aGUgc2FtZSBhcyBTVE9SQUdFIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0g KiBHRU5FUkFURUQgYW5kIENPTlNUUkFJTlRTIGFyZSB0aGUgc2FtZSBhcyBHRU5FUkFURUQg YW5kIENPTlNUUkFJTlRTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBUUklHR0VSUyBh cmUgdGhlIHNhbWUgYXMgVFJJR0dFUlMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCisKK0NSRUFU RSBUQUJMRSB0CisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgRVhURU5ERUQg Q09NUFJFU1NJT04gcGdseiBERUZBVUxUICdkZWZhdWx0X3QnLAorIGIgYmlnaW50LAorIGQg ZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMS0wMScpIFNUT1JFRCkgUEFSVElU SU9OIEJZIFJBTkdFIChhYnMoaSkpOworQ09NTUVOVCBPTiBDT0xVTU4gdC5pIElTICd0MS5p JzsKKworQ1JFQVRFIFRBQkxFIHRwXzBfMQorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBT VE9SQUdFIE1BSU4gREVGQVVMVCAnZGVmYXVsdF90cF8wXzEnLAorIGIgYmlnaW50LAorIGQg ZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMi0wMicpIFNUT1JFRCk7CitBTFRF UiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkg VE8gKDEpOworQ09NTUVOVCBPTiBDT0xVTU4gdHBfMF8xLmkgSVMgJ3RwXzBfMS5pJzsKKwor Q1JFQVRFIFRBQkxFIHRwXzFfMgorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdF IE1BSU4gREVGQVVMVCAnZGVmYXVsdF90cF8xXzInLAorIGIgYmlnaW50LAorIGQgZGF0ZSBH RU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMy0wMycpIFNUT1JFRCk7CitBTFRFUiBUQUJM RSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIp OworQ09NTUVOVCBPTiBDT0xVTU4gdHBfMV8yLmkgSVMgJ3RwXzFfMi5pJzsKKworQ1JFQVRF IFNUQVRJU1RJQ1MgdF9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0OworQ1JF QVRFIFNUQVRJU1RJQ1MgdHBfMF8xX3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9t IHRwXzBfMTsKK0NSRUFURSBTVEFUSVNUSUNTIHRwXzFfMl9zdGF0IChERVBFTkRFTkNJRVMp IG9uIGksIGIgZnJvbSB0cF8xXzI7CisKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQg dF9iX2NoZWNrIENIRUNLIChiID4gMCk7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5U IHRfYl9jaGVjazEgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQ7CitBTFRFUiBUQUJMRSB0 IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjazIgQ0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQ7CitB TFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9ubiBOT1QgTlVMTCBiIE5PVCBWQUxJ RDsKKworSU5TRVJUIElOVE8gdHBfMF8xKGksIHQsIGIpIFZBTFVFUygwLCBERUZBVUxULCAx KTsKK0lOU0VSVCBJTlRPIHRwXzFfMihpLCB0LCBiKSBWQUxVRVMoMSwgREVGQVVMVCwgMik7 CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCkgUkVUVVJO UyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUworJEJPRFkkCitCRUdJTgorICBSQUlT RSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2 ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICBSRVRV Uk4gbmV3OworRU5EOworJEJPRFkkOworCitDUkVBVEUgVFJJR0dFUiB0X2JlZm9yZV9pbnNl cnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0IEZPUiBFQUNIIFJPVworICBFWEVD VVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0Jyk7CitDUkVBVEUgVFJJR0dFUiB0 cF8wXzFfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwXzBf MSBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlvbign dHBfMF8xJyk7CitDUkVBVEUgVFJJR0dFUiB0cF8xXzJfYmVmb3JlX2luc2VydF9yb3dfdHJp Z2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwXzFfMiBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQ Uk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlvbigndHBfMV8yJyk7CisKK1xkKyB0cF8wXzEKK0FM VEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBf MF8xOworXGQrIHRwXzBfMQorCitJTlNFUlQgSU5UTyB0KGksIHQsIGIpIFZBTFVFUygxLCBE RUZBVUxULCAzKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0IE9SREVS IEJZIGI7CitEUk9QIFRBQkxFIHQ7CitEUk9QIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24o KTsKKworCistLSBUZXN0IE1FUkdFIFBBUlRJVElPTlMgd2l0aCBub3QgdmFsaWQgZm9yZWln biBrZXkgY29uc3RyYWludAorQ1JFQVRFIFRBQkxFIHQgKGkgSU5UIFBSSU1BUlkgS0VZKSBQ QVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04g T0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIg UEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitJTlNFUlQgSU5U TyB0IFZBTFVFUyAoMCksICgxKTsKK0NSRUFURSBUQUJMRSB0X2ZrIChpIElOVCk7CitJTlNF UlQgSU5UTyB0X2ZrIFZBTFVFUyAoMSksICgyKTsKK0FMVEVSIFRBQkxFIHRfZmsgQUREIENP TlNUUkFJTlQgdF9ma19pX2ZrZXkgRk9SRUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMgdCBOT1Qg VkFMSUQ7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8y KSBJTlRPIHRwXzBfMjsKKworLS0gU2hvdWxkIGJlIE5PVCBWQUxJRCBGT1JFSUdOIEtFWQor XGQgdHBfMF8yCistLSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRfZmsi IHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRfZmtfaV9ma2V5IgorQUxURVIg VEFCTEUgdF9mayBWQUxJREFURSBDT05TVFJBSU5UIHRfZmtfaV9ma2V5OworCitEUk9QIFRB QkxFIHRfZms7CitEUk9QIFRBQkxFIHQ7CisKKy0tIFRlc3QgTUVSR0UgUEFSVElUSU9OUyB3 aXRoIG5vdCBlbmZvcmNlZCBmb3JlaWduIGtleSBjb25zdHJhaW50CitDUkVBVEUgVEFCTEUg dCAoaSBJTlQgUFJJTUFSWSBLRVkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUg VEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEp OworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgyKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworQ1JFQVRFIFRB QkxFIHRfZmsgKGkgSU5UKTsKK0lOU0VSVCBJTlRPIHRfZmsgVkFMVUVTICgxKSwgKDIpOwor CitBTFRFUiBUQUJMRSB0X2ZrIEFERCBDT05TVFJBSU5UIHRfZmtfaV9ma2V5IEZPUkVJR04g S0VZIChpKSBSRUZFUkVOQ0VTIHQgTk9UIEVORk9SQ0VEOworQUxURVIgVEFCTEUgdCBNRVJH RSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CisKKy0tIFNob3Vs ZCBiZSBOT1QgRU5GT1JDRUQgRk9SRUlHTiBLRVkKK1xkIHRwXzBfMgorLS0gRVJST1I6ICBp bnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0X2ZrIiB2aW9sYXRlcyBmb3JlaWduIGtleSBj b25zdHJhaW50ICJ0X2ZrX2lfZmtleSIKK0FMVEVSIFRBQkxFIHRfZmsgQUxURVIgQ09OU1RS QUlOVCB0X2ZrX2lfZmtleSBFTkZPUkNFRDsKKworRFJPUCBUQUJMRSB0X2ZrOworRFJPUCBU QUJMRSB0OworCisKKy0tIFRlc3QgZm9yIHJlY29tcHV0YXRpb24gb2Ygc3RvcmVkIGdlbmVy YXRlZCBjb2x1bW5zLgorQ1JFQVRFIFRBQkxFIHQgKGkgaW50LCB0YWJfaWQgaW50IGdlbmVy YXRlZCBhbHdheXMgYXMgKHRhYmxlb2lkKSBzdG9yZWQpIFBBUlRJVElPTiBCWSBSQU5HRSAo aSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQg Y2MgQ0hFQ0sodGFibGVvaWQgPD4gMTIzNDU2Nzg5KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVT ICgwKSwgKDEpOworCistLSBTaG91bGQgYmUgMCBiZWNhdXNlIHBhcnRpdGlvbiBpZGVudGlm aWVyIGZvciByb3cgd2l0aCBpPTAgaXMgZGlmZmVyZW50IGZyb20KKy0tIHBhcnRpdGlvbiBp ZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdI RVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdIRVJFIGkg PSAxKTsKKworLS0gInRhYl9pZCIgY29sdW1uIChzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbikg d2l0aCAidGFibGVvaWQiIGF0dHJpYnV0ZSByZXF1aXJlcworLS0gcmVjb21wdXRhdGlvbiBo ZXJlLgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikg SU5UTyB0cF8wXzI7CisKKy0tIFNob3VsZCBiZSAxIGJlY2F1c2UgcGFydGl0aW9uIGlkZW50 aWZpZXIgZm9yIHJvdyB3aXRoIGk9MCBpcyB0aGUgc2FtZSBhcworLS0gcGFydGl0aW9uIGlk ZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hF UkUgaSA9IDAgQU5EIHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hFUkUgaSA9 IDEpOworCitEUk9QIFRBQkxFIHQ7CisKKworLS0gVGVzdCBmb3IgZ2VuZXJhdGVkIGNvbHVt bnMgKGRpZmZlcmVudCBvcmRlciBvZiBjb2x1bW5zIGluIHBhcnRpdGlvbmVkIHRhYmxlCist LSBhbmQgcGFydGl0aW9ucykuCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQsIGcgaW50IEdFTkVS QVRFRCBBTFdBWVMgQVMgKGkgKyB0YWJsZW9pZDo6aW50KSkgUEFSVElUSU9OIEJZIFJBTkdF IChpKTsKK0NSRUFURSBUQUJMRSB0cF8xIChnIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChp ICsgdGFibGVvaWQ6OmludCksIGkgaW50KTsKK0NSRUFURSBUQUJMRSB0cF8yIChnIGludCBH RU5FUkFURUQgQUxXQVlTIEFTIChpICsgdGFibGVvaWQ6OmludCksIGkgaW50KTsKK0FMVEVS IFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xIEZPUiBWQUxVRVMgRlJPTSAoLTEpIFRP ICgxMCk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMiBGT1IgVkFMVUVT IEZST00gKDEwKSBUTyAoMjApOworQUxURVIgVEFCTEUgdCBBREQgQ0hFQ0sgKGcgPiAwKTsK K0FMVEVSIFRBQkxFIHQgQUREIENIRUNLIChpID4gMCk7CitJTlNFUlQgSU5UTyB0IFZBTFVF UyAoNSksICgxNSk7CisKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMSwg dHBfMikgSU5UTyB0cF8xMjsKKworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDE2KTsKKy0tIEVS Uk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRwXzEyIiB2aW9sYXRlcyBjaGVjayBjb25z dHJhaW50ICJ0X2lfY2hlY2siCitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCk7CistLSBTaG91 bGQgYmUgMyByb3dzOiAoNSksICgxNSksICgxNik6CitTRUxFQ1QgaSBGUk9NIHQgT1JERVIg QlkgaTsKKy0tIFNob3VsZCBiZSAxIGJlY2F1c2UgZm9yIHRoZSBzYW1lIHRhYmxlb2lkICgx NSArIHRhYmxlb2lkKSA9ICg1ICsgdGFibGVvaWQpICsgMTA6CitTRUxFQ1QgY291bnQoKikg RlJPTSB0IFdIRVJFIGkgPSAxNSBBTkQgZyBJTiAoU0VMRUNUIGcgKyAxMCBGUk9NIHQgV0hF UkUgaSA9IDUpOworCitEUk9QIFRBQkxFIHQ7CisKKworUkVTRVQgc2VhcmNoX3BhdGg7CisK Ky0tCitEUk9QIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKK0RST1AgU0NIRU1B IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMjsKLS0gCjIuNDAuMS53aW5kb3dzLjEKCg== --------------04N98BahQW86g58HMvx9dDj9 Content-Type: text/plain; charset=UTF-8; name="v46-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.patch" Content-Disposition: attachment; filename*0="v46-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA1NDExYmZmODFiZDhiNjI0MGVmZDA2ZTlhNjE2OWU3Njg5NTlmZWNmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU4OjA5ICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NDYgMi8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIFNQTElU IFBBUlRJVElPTiAuLi4gY29tbWFuZAoKVGhpcyBuZXcgRERMIGNvbW1hbmQgc3BsaXRzIGEg c2luZ2xlIHBhcnRpdGlvbiBpbnRvIHNldmVyYWwgcGFyaXRpdGlvbnMuCkp1c3QgbGlrZSBB TFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyAuLi4gY29tbWFuZCwgbmV3IHBhdGl0 aW9ucyBhcmUKY3JlYXRlZCB1c2luZyBjcmVhdGVQYXJ0aXRpb25UYWJsZSgpIGZ1bmN0aW9u IHdpdGggcGFyZW50IHBhcnRpdGlvbiBhcyB0aGUKdGVtcGxhdGUuCgpUaGlzIGNvbW1pdCBj b21wcmlzZXMgcXVpdGUgbmFpdmUgaW1wbGVtZW50YXRpb24gd2hpY2ggd29ya3MgaW4gc2lu Z2xlIHByb2Nlc3MKYW5kIGhvbGRzIHRoZSBBQ0NFU1MgRVhDTFVTSVZFIExPQ0sgb24gdGhl IHBhcmVudCB0YWJsZSBkdXJpbmcgYWxsIHRoZQpvcGVyYXRpb25zIGluY2x1ZGluZyB0aGUg dHVwbGUgcm91dGluZy4gIFRoaXMgaXMgd2h5IHRoaXMgbmV3IERETCBjb21tYW5kCmNhbid0 IGJlIHJlY29tbWVuZGVkIGZvciBsYXJnZSBwYXJ0aXRpb25lZCB0YWJsZXMgdW5kZXIgYSBo aWdoIGxvYWQuICBIb3dldmVyLAp0aGlzIGltcGxlbWVudGF0aW9uIGNvbWUgaW4gaGFuZHkg aW4gY2VydGFpbiBjYXNlcyBldmVuIGFzIGlzLgpBbHNvLCBpdCBjb3VsZCBiZSB1c2VkIGFz IGEgZm91bmRhdGlvbiBmb3IgZnV0dXJlIGltcGxlbWVudGF0aW9ucyB3aXRoIGxlc3Nlcgps b2NraW5nIGFuZCBwb3NzaWJseSBwYXJhbGxlbC4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vYzczYTE3NDYtMGNkMC02YmRkLTZiMjMtM2FlMGI3YzBjNTgyJTQwcG9zdGdy ZXNwcm8ucnUKQXV0aG9yOiBEbWl0cnkgS292YWwKUmV2aWV3ZWQtYnk6IE1hdHRoaWFzIHZh biBkZSBNZWVudCwgTGF1cmVueiBBbGJlLCBaaGlob25nIFl1LCBKdXN0aW4gUHJ5emJ5ClJl dmlld2VkLWJ5OiBBbHZhcm8gSGVycmVyYSwgUm9iZXJ0IEhhYXMsIFN0ZXBoYW5lIFRhY2hv aXJlcwoKRml4ZXMgKHN1bW1hcnkgaW5mb3JtYXRpb24pLgpBdXRob3JzOiBBbGV4YW5kZXIg S29yb3Rrb3YsIFRlbmRlciBXYW5nLCBSaWNoYXJkIEd1bywgRGFnZmlubiBJbG1hcmkgTWFu bnNha2VyCkF1dGhvcnM6IEZ1amlpIE1hc2FvClJldmlld2VkLWJ5OiBBbGV4YW5kZXIgS29y b3Rrb3YsIFJvYmVydCBIYWFzLCBKdXN0aW4gUHJ5emJ5LCBQYXZlbCBCb3Jpc292ClJldmll d2VkLWJ5OiBNYXNhaGlrbyBTYXdhZGEKUmVwb3J0ZWQtYnk6IEFsZXhhbmRlciBMYWtoaW4s IEp1c3RpbiBQcnl6YnksIEt5b3Rhcm8gSG9yaWd1Y2hpClJlcG9ydGVkLWJ5OiBEYW5pZWwg R3VzdGFmc3NvbiwgVG9tIExhbmUsIE5vYWggTWlzY2gKLS0tCiBkb2Mvc3JjL3NnbWwvZGRs LnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsKIGRvYy9zcmMvc2dtbC9y ZWYvYWx0ZXJfdGFibGUuc2dtbCAgICAgICAgICAgICB8ICAgOTIgKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA0NjMgKysrKwogc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgICAzOCArLQogc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwgICA2NSArLQog c3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyAgICAgICAgIHwgIDY4NCAr KysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8 ICAgMTggKwogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgICAg IHwgICAxMCArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAg ICAgIHwgICAxNiArLQogc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oICAgICAgICAgICAg ICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5o ICAgICAgICAgfCAgICA0ICsKIHNyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oICAgICAg ICAgICAgICAgICB8ICAgIDIgKwogLi4uL2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24t c3BsaXQub3V0ICAgIHwgIDE5MCArKwogc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9z Y2hlZHVsZSAgICAgICAgIHwgICAgMSArCiBzcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFy dGl0aW9uLXNwbGl0LnNwZWMgfCAgIDU0ICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNlL3Rlc3Rf ZGRsX2RlcGFyc2UuYyAgICAgICB8ICAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wYXJ0aXRpb25fc3BsaXQub3V0IHwgMTkxMSArKysrKysrKysrKysrKysrKwogc3JjL3Rl c3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAgMiArLQogc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNxbCAgICAgIHwgMTE4OCArKysr KysrKysrCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAg fCAgICAyICsKIDIwIGZpbGVzIGNoYW5nZWQsIDQ3NDAgaW5zZXJ0aW9ucygrKSwgMjMgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVj dGVkL3BhcnRpdGlvbi1zcGxpdC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9p c29sYXRpb24vc3BlY3MvcGFydGl0aW9uLXNwbGl0LnNwZWMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3Fs CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sIGIvZG9jL3NyYy9zZ21sL2Rk bC5zZ21sCmluZGV4IDYyYzJiYjU0ZWEuLjQxZTQ3N2VkZGYgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9kZGwuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKQEAgLTQ0NjEs NiArNDQ2MSwyNSBAQCBBTFRFUiBUQUJMRSBtZWFzdXJlbWVudAogICAgICAgICAgICAgICAg ICAgICAgIG1lYXN1cmVtZW50X3kyMDA2bTAzKSBJTlRPIG1lYXN1cmVtZW50X3kyMDA2cTE7 CiA8L3Byb2dyYW1saXN0aW5nPgogICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBT aW1pbGFybHkgdG8gbWVyZ2luZyBtdWx0aXBsZSB0YWJsZSBwYXJ0aXRpb25zLCB0aGVyZSBp cyBhbiBvcHRpb24gZm9yCisgICAgIHNwbGl0dGluZyBhIHNpbmdsZSBwYXJ0aXRpb24gaW50 byBtdWx0aXBsZSB1c2luZyB0aGUKKyAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWFsdGVydGFi bGUtc3BsaXQtcGFydGl0aW9uIj48Y29tbWFuZD5BTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFS VElUSU9OPC9jb21tYW5kPjwvbGluaz4uCisgICAgIFRoaXMgZmVhdHVyZSBjb3VsZCBjb21l IGluIGhhbmR5IHdoZW4gb25lIHBhcnRpdGlvbiBncm93cyB0b28gYmlnCisgICAgIGFuZCBu ZWVkcyB0byBiZSBzcGxpdCBpbnRvIG11bHRpcGxlLiAgSXQncyBpbXBvcnRhbnQgdG8gbm90 ZSB0aGF0CisgICAgIHRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGhhc2gt cGFydGl0aW9uZWQgdGFibGVzIGFuZCBhY3F1aXJlcworICAgICBhbiA8bGl0ZXJhbD5BQ0NF U1MgRVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrLCB3aGljaCBjb3VsZCBpbXBhY3QgaGlnaC1s b2FkCisgICAgIHN5c3RlbXMgZHVlIHRvIHRoZSBsb2NrJ3MgcmVzdHJpY3RpdmUgbmF0dXJl LiAgRm9yIGV4YW1wbGUsIHdlIGNhbiBzcGxpdAorICAgICB0aGUgcXVhcnRlciBwYXJ0aXRp b24gYmFjayB0byBtb250aGx5IHBhcnRpdGlvbnM6Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRF UiBUQUJMRSBtZWFzdXJlbWVudCBTUExJVCBQQVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMDZx MSBJTlRPCisgICAoUEFSVElUSU9OIG1lYXN1cmVtZW50X3kyMDA2bTAxIEZPUiBWQUxVRVMg RlJPTSAoJzIwMDYtMDEtMDEnKSBUTyAoJzIwMDYtMDItMDEnKSwKKyAgICBQQVJUSVRJT04g bWVhc3VyZW1lbnRfeTIwMDZtMDIgRk9SIFZBTFVFUyBGUk9NICgnMjAwNi0wMi0wMScpIFRP ICgnMjAwNi0wMy0wMScpLAorICAgIFBBUlRJVElPTiBtZWFzdXJlbWVudF95MjAwNm0wMyBG T1IgVkFMVUVTIEZST00gKCcyMDA2LTAzLTAxJykgVE8gKCcyMDA2LTA0LTAxJykpOworPC9w cm9ncmFtbGlzdGluZz4KKyAgICA8L3BhcmE+CisKICAgIDwvc2VjdDM+CiAKICAgIDxzZWN0 MyBpZD0iZGRsLXBhcnRpdGlvbmluZy1kZWNsYXJhdGl2ZS1saW1pdGF0aW9ucyI+CmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKaW5kZXggZTUwM2EwNjAyOC4uZGFhZGI4MzI2YiAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbApAQCAtMzcsNiArMzcsMTAgQEAgQUxU RVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgQVRUQUNIIFBBUlRJVElPTiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiB7IEZPUiBW QUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9z cGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0KIEFMVEVSIFRBQkxFIFsgSUYgRVhJU1RT IF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgog ICAgIERFVEFDSCBQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gWyBDT05DVVJSRU5UTFkgfCBGSU5BTElaRSBd CitBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICBTUExJVCBQQVJUSVRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gSU5U TworICAgICAgICAoUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4g fCBERUZBVUxUIH0sCisgICAgICAgICBQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IHsgRk9SIFZBTFVFUyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3Jl cGxhY2VhYmxlPiB8IERFRkFVTFQgfSBbLCAuLi5dKQogQUxURVIgVEFCTEUgWyBJRiBFWElT VFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+ CiAgICAgTUVSR0UgUEFSVElUSU9OUyAoPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXSkKICAgICAg ICAgSU5UTyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8 L3JlcGxhY2VhYmxlPgpAQCAtMTE1MCw2ICsxMTU0LDcxIEBAIFdJVEggKCBNT0RVTFVTIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2Vh YmxlPiwgUkVNCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8 dmFybGlzdGVudHJ5IGlkPSJzcWwtYWx0ZXJ0YWJsZS1zcGxpdC1wYXJ0aXRpb24iPgorICAg IDx0ZXJtPjxsaXRlcmFsPlNQTElUIFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBJTlRPIChQQVJUSVRJT04g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFj ZWFibGU+IHsgRk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy dGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfSwgUEFSVElUSU9O IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxh Y2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0gWywgLi4uXSk8 L2xpdGVyYWw+PC90ZXJtPgorCisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAg IFRoaXMgZm9ybSBzcGxpdHMgYSBzaW5nbGUgcGFydGl0aW9uIG9mIHRoZSB0YXJnZXQgdGFi bGUgaW50byBhIG5ldworICAgICAgcGFydGl0aW9ucy4gSGFzaC1wYXJ0aXRpb25lZCB0YXJn ZXQgdGFibGUgaXMgbm90IHN1cHBvcnRlZC4gQm91bmRzIG9mIG5ldworICAgICAgcGFydGl0 aW9ucyBzaG91bGQgbm90IG92ZXJsYXAgd2l0aCBuZXcgYW5kIGV4aXN0aW5nIHBhcnRpdGlv bnMKKyAgICAgIChleGNlcHQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRp dGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4pLgorICAgICAgSWYgdGhlIHNwbGl0IHBhcnRpdGlv biBpcyBhIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiwgb25lIG9mCisg ICAgICB0aGUgbmV3IHBhcnRpdGlvbnMgbXVzdCBiZSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRl cmFsPi4KKyAgICAgIEluIGNhc2Ugb25lIG9mIHRoZSBuZXcgcGFydGl0aW9ucyBvciBvbmUg b2YgZXhpc3RpbmcgcGFydGl0aW9ucyBpcworICAgICAgPGxpdGVyYWw+REVGQVVMVDwvbGl0 ZXJhbD4sIG5ldyBwYXJ0aXRpb25zIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiwgLi4uIGNhbgor ICAgICAgaGF2ZSBzcGFjZXMgYmV0d2VlbiBwYXJ0aXRpb25zIGJvdW5kcy4gIElmIHRoZSBw YXJ0aXRpb25lZCB0YWJsZSBkb2VzIG5vdAorICAgICAgaGF2ZSBhIDxsaXRlcmFsPkRFRkFV TFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiwgdGhlIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+ CisgICAgICBwYXJ0aXRpb24gY2FuIGJlIGRlZmluZWQgYXMgb25lIG9mIHRoZSBuZXcgcGFy dGl0aW9ucy4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIEluIGNhc2UgbmV3 IHBhcnRpdGlvbnMgZG8gbm90IGNvbnRhaW4gYSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFs PgorICAgICAgcGFydGl0aW9uIGFuZCB0aGUgcGFydGl0aW9uZWQgdGFibGUgZG9lcyBub3Qg aGF2ZSBhIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+CisgICAgICBwYXJ0aXRpb24sIHRo ZSBmb2xsb3dpbmcgbXVzdCBiZSB0cnVlOiBzdW0gYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25z CisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUx PC9yZXBsYWNlYWJsZT4sCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4sIC4uLiBzaG91bGQKKyAgICAgIGJlIGVx dWFsIHRvIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPi4KKyAgICAgIE9uZSBvZiB0 aGUgbmV3IHBhcnRpdGlvbnMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRp dGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+LCAuLi4gY2FuIGhhdmUK KyAgICAgIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAo dGhpcyBpcyBzdWl0YWJsZSBpbiBjYXNlIG9mIHNwbGl0dGluZyBhIDxsaXRlcmFsPkRFRkFV TFQ8L2xpdGVyYWw+CisgICAgICBwYXJ0aXRpb246IHdlIHNwbGl0IGl0LCBidXQgYWZ0ZXIg c3BsaXR0aW5nIHdlIGhhdmUgYSBwYXJ0aXRpb24gd2l0aCB0aGUKKyAgICAgIHNhbWUgbmFt ZSkuICBPbmx5IHNpbXBsZSwgbm9uLXBhcnRpdGlvbmVkIHBhcnRpdGlvbiBjYW4gYmUgc3Bs aXQuCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBOZXcgcGFydGl0aW9ucyB3 aWxsIGhhdmUgdGhlIHNhbWUgb3duZXIgYXMgdGhlIHBhcmVudCBwYXJ0aXRpb24uCisgICAg ICBJdCBpcyB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IHRvIHNldHVwIDxhY3JvbnltPkFD TDwvYWNyb255bT4gb24gbmV3CisgICAgICBwYXJ0aXRpb25zLgorICAgICA8L3BhcmE+Cisg ICAgIDxwYXJhPgorICAgICAgVGhlIGluZGV4ZXMgYW5kIGlkZW50aXR5IGFyZSBjcmVhdGVk IGxhdGVyLCBhZnRlciBtb3ZpbmcgdGhlIGRhdGEKKyAgICAgIGludG8gdGhlIG5ldyBwYXJ0 aXRpb25zLgorICAgICAgRXh0ZW5kZWQgc3RhdGlzdGljcyBhcmVuJ3QgY29waWVkIGZyb20g dGhlIHBhcmVudCB0YWJsZSwgZm9yIGNvbnNpc3RlbmN5IHdpdGgKKyAgICAgIDxjb21tYW5k PkNSRUFURSBUQUJMRSBQQVJUSVRJT04gT0Y8L2NvbW1hbmQ+LgorICAgICAgTmV3IHBhcnRp dGlvbnMgd2lsbCBpbmhlcml0IHRoZSBzYW1lIHRhYmxlIGFjY2VzcyBtZXRob2QsIHBlcnNp c3RlbmNlCisgICAgICB0eXBlLCBhbmQgdGFibGVzcGFjZSBhcyB0aGUgcGFyZW50IHRhYmxl LgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgV2hlbiBwYXJ0aXRpb24gaXMg c3BsaXQsIGFueSBpbmRpdmlkdWFsIG9iamVjdHMgYmVsb25naW5nIHRvIHRoaXMKKyAgICAg IHBhcnRpdGlvbiwgc3VjaCBhcyBjb25zdHJhaW50cyBvciBzdGF0aXN0aWNzIHdpbGwgYmUg ZHJvcHBlZC4gVGhpcyBjY3VycworICAgICAgYmVjYXVzZSA8Y29tbWFuZD5BTFRFUiBUQUJM RSBTUExJVCBQQVJUSVRJT048L2NvbW1hbmQ+IHVzZXMgdGhlIHBhcnRpdGlvbmVkIHRhYmxl IGl0c2VsZgorICAgICAgYXMgdGhlIHRlbXBsYXRlIHRvIGRlZmluZSB0aGVzZSBvYmplY3Rz LgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgSWYgc3BsaXQgcGFydGl0aW9u IGhhcyBzb21lIG9iamVjdHMgZGVwZW5kZW50IG9uIGl0LCB0aGUgY29tbWFuZCBjYW4KKyAg ICAgIG5vdCBiZSBkb25lICg8bGl0ZXJhbD5DQVNDQURFPC9saXRlcmFsPiBpcyBub3QgdXNl ZCwgYW4gZXJyb3Igd2lsbCBiZSByZXR1cm5lZCkuCisgICAgIDwvcGFyYT4KKyAgICAgPG5v dGU+CisgICAgICA8cGFyYT4KKyAgICAgICBTcGxpdCBwYXJ0aXRpb24gYWNxdWlyZXMgYSA8 bGl0ZXJhbD5BQ0NFU1MgRVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrIG9uCisgICAgICAgdGhl IHBhcmVudCB0YWJsZSwgaW4gYWRkaXRpb24gdG8gdGhlIDxsaXRlcmFsPkFDQ0VTUyBFWENM VVNJVkU8L2xpdGVyYWw+CisgICAgICAgbG9jayBvbiB0aGUgdGFibGUgYmVpbmcgc3BsaXQu CisgICAgICA8L3BhcmE+CisgICAgIDwvbm90ZT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92 YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLW1l cmdlLXBhcnRpdGlvbnMiPgogICAgIDx0ZXJtPjxsaXRlcmFsPk1FUkdFIFBBUlRJVElPTlMg KDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxh Y2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1l MjwvcmVwbGFjZWFibGU+IFssIC4uLl0pIElOVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+PC90ZXJtPgog CkBAIC0xMjQ0LDcgKzEzMTMsOCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAg QWxsIHRoZSBmb3JtcyBvZiA8Y29tbWFuZD5BTFRFUiBUQUJMRTwvY29tbWFuZD4gdGhhdCBh Y3Qgb24gYSBzaW5nbGUgdGFibGUsCiAgICBleGNlcHQgPGxpdGVyYWw+UkVOQU1FPC9saXRl cmFsPiwgPGxpdGVyYWw+U0VUIFNDSEVNQTwvbGl0ZXJhbD4sCiAgICA8bGl0ZXJhbD5BVFRB Q0ggUEFSVElUSU9OPC9saXRlcmFsPiwgPGxpdGVyYWw+REVUQUNIIFBBUlRJVElPTjwvbGl0 ZXJhbD4sCi0gICBhbmQgPGxpdGVyYWw+TUVSR0UgUEFSVElUSU9OUzwvbGl0ZXJhbD4gY2Fu IGJlIGNvbWJpbmVkIGludG8KKyAgIDxsaXRlcmFsPlNQTElUIFBBUlRJVElPTjwvbGl0ZXJh bD4sIGFuZCA8bGl0ZXJhbD5NRVJHRSBQQVJUSVRJT05TPC9saXRlcmFsPgorICAgY2FuIGJl IGNvbWJpbmVkIGludG8KICAgIGEgbGlzdCBvZiBtdWx0aXBsZSBhbHRlcmF0aW9ucyB0byBi ZSBhcHBsaWVkIHRvZ2V0aGVyLiAgRm9yIGV4YW1wbGUsIGl0CiAgICBpcyBwb3NzaWJsZSB0 byBhZGQgc2V2ZXJhbCBjb2x1bW5zIGFuZC9vciBhbHRlciB0aGUgdHlwZSBvZiBzZXZlcmFs CiAgICBjb2x1bW5zIGluIGEgc2luZ2xlIGNvbW1hbmQuICBUaGlzIGlzIHBhcnRpY3VsYXJs eSB1c2VmdWwgd2l0aCBsYXJnZQpAQCAtMTQ4OCw3ICsxNTU4LDcgQEAgV0lUSCAoIE1PRFVM VVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVw bGFjZWFibGU+LCBSRU0KICAgICAgIDxsaXN0aXRlbT4KICAgICAgICA8cGFyYT4KICAgICAg ICAgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGF0dGFjaCBhcyBhIG5ldyBwYXJ0aXRpb24g b3IgdG8gZGV0YWNoIGZyb20gdGhpcyB0YWJsZSwKLSAgICAgICAgb3IgdGhlIG5hbWUgb2Yg dGhlIG5ldyBtZXJnZWQgcGFydGl0aW9uLgorICAgICAgICBvciB0aGUgbmFtZSBvZiBzcGxp dCBwYXJ0aXRpb24sIG9yIHRoZSBuYW1lIG9mIHRoZSBuZXcgbWVyZ2VkIHBhcnRpdGlvbi4K ICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRy eT4KQEAgLTE5MjEsNiArMTk5MSwyNCBAQCBBTFRFUiBUQUJMRSBtZWFzdXJlbWVudAogICAg IERFVEFDSCBQQVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMTVtMTI7CiA8L3Byb2dyYW1saXN0 aW5nPjwvcGFyYT4KIAorICA8cGFyYT4KKyAgIFRvIHNwbGl0IGEgc2luZ2xlIHBhcnRpdGlv biBvZiB0aGUgcmFuZ2UtcGFydGl0aW9uZWQgdGFibGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9h cHIyMDIzIElOVE8KKyAgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMyBGT1IgVkFMVUVTIEZS T00gKCcyMDIzLTAyLTAxJykgVE8gKCcyMDIzLTAzLTAxJyksCisgICAgUEFSVElUSU9OIHNh bGVzX21hcjIwMjMgRk9SIFZBTFVFUyBGUk9NICgnMjAyMy0wMy0wMScpIFRPICgnMjAyMy0w NC0wMScpLAorICAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIzIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjMtMDQtMDEnKSBUTyAoJzIwMjMtMDUtMDEnKSk7Cis8L3Byb2dyYW1saXN0aW5nPjwv cGFyYT4KKworICA8cGFyYT4KKyAgIFRvIHNwbGl0IGEgc2luZ2xlIHBhcnRpdGlvbiBvZiB0 aGUgbGlzdC1wYXJ0aXRpb25lZCB0YWJsZToKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFRB QkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgICAoUEFS VElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycs ICdNYWRyaWQnKSwKKyAgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgn QmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICAgUEFSVElUSU9OIHNhbGVz X2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsK KzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorCiAgIDxwYXJhPgogICAgVG8gbWVyZ2Ugc2V2 ZXJhbCBwYXJ0aXRpb25zIGludG8gb25lIHBhcnRpdGlvbiBvZiB0aGUgdGFyZ2V0IHRhYmxl OgogPHByb2dyYW1saXN0aW5nPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCA5 YTkwNTNkMzI1Li43ODljNjgyOGQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpA QCAtNzQyLDYgKzc0Miw5IEBAIHN0YXRpYyBjaGFyIEdldEF0dHJpYnV0ZVN0b3JhZ2UoT2lk IGF0dHR5cGlkLCBjb25zdCBjaGFyICpzdG9yYWdlbW9kZSk7CiAKIHN0YXRpYyB2b2lkIEFU RXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0 YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJICBQYXJ0aXRpb25DbWQgKmNtZCwgQWx0ZXJU YWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKK3N0YXRpYyB2b2lkIEFURXhlY1NwbGl0 UGFydGl0aW9uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKKwkJCQkJ CQkJIFJlbGF0aW9uIHJlbCwgUGFydGl0aW9uQ21kICpjbWQsCisJCQkJCQkJCSBBbHRlclRh YmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRGVm aW5lUmVsYXRpb24KQEAgLTQ4NDAsNiArNDg0MywxMCBAQCBBbHRlclRhYmxlR2V0TG9ja0xl dmVsKExpc3QgKmNtZHMpCiAJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9j azsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCQljbWRf bG9ja21vZGUgPSBBY2Nlc3NFeGNsdXNpdmVMb2NrOworCQkJCWJyZWFrOworCiAJCQlkZWZh dWx0OgkJCS8qIG9vcHMgKi8KIAkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGFsdGVy IHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkJIChpbnQpIGNtZC0+c3VidHlwZSk7CkBAIC01Mjgw LDYgKzUyODcsMTEgQEAgQVRQcmVwQ21kKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwg QWx0ZXJUYWJsZUNtZCAqY21kLAogCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5l ZWRlZCAqLwogCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKIAkJCWJyZWFrOworCQljYXNlIEFU X1NwbGl0UGFydGl0aW9uOgorCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhjbWQtPnN1YnR5cGUs IHJlbCwgQVRUX1BBUlRJVElPTkVEX1RBQkxFKTsKKwkJCS8qIE5vIGNvbW1hbmQtc3BlY2lm aWMgcHJlcCBuZWVkZWQgKi8KKwkJCXBhc3MgPSBBVF9QQVNTX01JU0M7CisJCQlicmVhazsK IAkJZGVmYXVsdDoJCQkJLyogb29wcyAqLwogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXpl ZCBhbHRlciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGNtZC0+c3VidHlwZSk7CkBA IC01Njg0LDYgKzU2OTYsMTQgQEAgQVRFeGVjQ21kKExpc3QgKip3cXVldWUsIEFsdGVyZWRU YWJsZUluZm8gKnRhYiwKIAkJCUFURXhlY01lcmdlUGFydGl0aW9ucyh3cXVldWUsIHRhYiwg cmVsLCAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmLAogCQkJCQkJCQkgIGNvbnRleHQpOwog CQkJYnJlYWs7CisJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQljbWQgPSBBVFBhcnNl VHJhbnNmb3JtQ21kKHdxdWV1ZSwgdGFiLCByZWwsIGNtZCwgZmFsc2UsIGxvY2ttb2RlLAor CQkJCQkJCQkJICBjdXJfcGFzcywgY29udGV4dCk7CisJCQlBc3NlcnQoY21kICE9IE5VTEwp OworCQkJQXNzZXJ0KHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9O RURfVEFCTEUpOworCQkJQVRFeGVjU3BsaXRQYXJ0aXRpb24od3F1ZXVlLCB0YWIsIHJlbCwg KFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZiwKKwkJCQkJCQkJIGNvbnRleHQpOworCQkJYnJl YWs7CiAJCWRlZmF1bHQ6CQkJCS8qIG9vcHMgKi8KIAkJCWVsb2coRVJST1IsICJ1bnJlY29n bml6ZWQgYWx0ZXIgdGFibGUgdHlwZTogJWQiLAogCQkJCSAoaW50KSBjbWQtPnN1YnR5cGUp OwpAQCAtNjcyNiw2ICs2NzQ2LDggQEAgYWx0ZXJfdGFibGVfdHlwZV90b19zdHJpbmcoQWx0 ZXJUYWJsZVR5cGUgY21kdHlwZSkKIAkJCXJldHVybiAiREVUQUNIIFBBUlRJVElPTiAuLi4g RklOQUxJWkUiOwogCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKIAkJCXJldHVybiAiTUVS R0UgUEFSVElUSU9OUyI7CisJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQlyZXR1cm4g IlNQTElUIFBBUlRJVElPTiI7CiAJCWNhc2UgQVRfQWRkSWRlbnRpdHk6CiAJCQlyZXR1cm4g IkFMVEVSIENPTFVNTiAuLi4gQUREIElERU5USVRZIjsKIAkJY2FzZSBBVF9TZXRJZGVudGl0 eToKQEAgLTIyOTA3LDMgKzIyOTI5LDQ0NCBAQCBBVEV4ZWNNZXJnZVBhcnRpdGlvbnMoTGlz dCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJLyog UmVzdG9yZSB1c2VyaWQgYW5kIHNlY3VyaXR5IGNvbnRleHQuICovCiAJU2V0VXNlcklkQW5k U2VjQ29udGV4dChzYXZlX3VzZXJpZCwgc2F2ZV9zZWNfY29udGV4dCk7CiB9CisKKworLyoK KyAqIFN0cnVjdCB3aXRoIGNvbnRleHQgb2YgbmV3IHBhcnRpdGlvbiBmb3IgaW5zZXJ0aW5n IHJvd3MgZnJvbSBzcGxpdCBwYXJ0aXRpb24KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU3BsaXRQ YXJ0aXRpb25Db250ZXh0Cit7CisJRXhwclN0YXRlICAqcGFydHF1YWxzdGF0ZTsJLyogZXhw cmVzc2lvbiBmb3IgY2hlY2tpbmcgc2xvdCBmb3IgcGFydGl0aW9uCisJCQkJCQkJCSAqIChO VUxMIGZvciBERUZBVUxUIHBhcnRpdGlvbikgKi8KKwlCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0 ZTsJLyogc3RhdGUgb2YgYnVsayBpbnNlcnRzIGZvciBwYXJ0aXRpb24gKi8KKwlUdXBsZVRh YmxlU2xvdCAqZHN0c2xvdDsJLyogc2xvdCBmb3IgaW5zZXJ0aW5nIHJvdyBpbnRvIHBhcnRp dGlvbiAqLworCUFsdGVyZWRUYWJsZUluZm8gKnRhYjsJCS8qIHN0cnVjdG9yZSB3aXRoIGdl bmVyYXRlZCBjb2x1bW4gZXhwcmVzc2lvbnMKKwkJCQkJCQkJICogYW5kIGNoZWNrIGNvbnN0 cmFpbnQgZXhwcmVzc3Npb25zLiAqLworCVJlbGF0aW9uCXBhcnRSZWw7CQkvKiByZWxhdGlv biBmb3IgcGFydGl0aW9uICovCit9IFNwbGl0UGFydGl0aW9uQ29udGV4dDsKKworLyoKKyAq IGNyZWF0ZVNwbGl0UGFydGl0aW9uQ29udGV4dDogY3JlYXRlIGNvbnRleHQgZm9yIHBhcnRp dGlvbiBhbmQgZmlsbCBpdAorICovCitzdGF0aWMgU3BsaXRQYXJ0aXRpb25Db250ZXh0ICoK K2NyZWF0ZVNwbGl0UGFydGl0aW9uQ29udGV4dChSZWxhdGlvbiBwYXJ0UmVsKQoreworCVNw bGl0UGFydGl0aW9uQ29udGV4dCAqcGM7CisKKwlwYyA9IChTcGxpdFBhcnRpdGlvbkNvbnRl eHQgKikgcGFsbG9jMChzaXplb2YoU3BsaXRQYXJ0aXRpb25Db250ZXh0KSk7CisJcGMtPnBh cnRSZWwgPSBwYXJ0UmVsOworCisJLyoKKwkgKiBQcmVwYXJlIGEgQnVsa0luc2VydFN0YXRl IGZvciB0YWJsZV90dXBsZV9pbnNlcnQuIFRoZSBGU00gaXMgZW1wdHksIHNvCisJICogZG9u J3QgYm90aGVyIHVzaW5nIGl0LgorCSAqLworCXBjLT5iaXN0YXRlID0gR2V0QnVsa0luc2Vy dFN0YXRlKCk7CisKKwkvKiBDcmVhdGUgdHVwbGUgc2xvdCBmb3IgbmV3IHBhcnRpdGlvbi4g Ki8KKwlwYy0+ZHN0c2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHBjLT5wYXJ0UmVsLCBOVUxM KTsKKworCXJldHVybiBwYzsKK30KKworLyoKKyAqIGRlbGV0ZVNwbGl0UGFydGl0aW9uQ29u dGV4dDogZGVsZXRlIGNvbnRleHQgZm9yIHBhcnRpdGlvbgorICovCitzdGF0aWMgdm9pZAor ZGVsZXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KFNwbGl0UGFydGl0aW9uQ29udGV4dCAqcGMs IExpc3QgKip3cXVldWUsIGludCB0aV9vcHRpb25zKQoreworCUxpc3RDZWxsICAgKmx0YWI7 CisKKwlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHBjLT5kc3RzbG90KTsKKwlGcmVl QnVsa0luc2VydFN0YXRlKHBjLT5iaXN0YXRlKTsKKworCXRhYmxlX2ZpbmlzaF9idWxrX2lu c2VydChwYy0+cGFydFJlbCwgdGlfb3B0aW9ucyk7CisKKwkvKgorCSAqIFdlIGRvbid0IG5l ZWQgcHJvY2VzcyB0aGlzIHBjLT5wYXJ0UmVsIHNvIGRlbGV0ZSB0aGUgQUxURVIgVEFCTEUg cXVldWUKKwkgKiBvZiBpdC4KKwkgKi8KKwlmb3JlYWNoKGx0YWIsICp3cXVldWUpCisJewor CQlBbHRlcmVkVGFibGVJbmZvICp0YWIgPSAoQWx0ZXJlZFRhYmxlSW5mbyAqKSBsZmlyc3Qo bHRhYik7CisJCWlmICh0YWItPnJlbGlkID09IFJlbGF0aW9uR2V0UmVsaWQocGMtPnBhcnRS ZWwpKQorCQkJKndxdWV1ZSA9IGxpc3RfZGVsZXRlX2NlbGwoKndxdWV1ZSwgbHRhYik7CisJ fQorCisJcGZyZWUocGMpOworfQorCisvKgorICogbW92ZVNwbGl0VGFibGVSb3dzOiBzY2Fu IHNwbGl0IHBhcnRpdGlvbiAoc3BsaXRSZWwpIG9mIHBhcnRpdGlvbmVkIHRhYmxlCisgKiAo cmVsKSBhbmQgbW92ZSByb3dzIGludG8gbmV3IHBhcnRpdGlvbnMuCisgKgorICogTmV3IHBh cnRpdGlvbnMgZGVzY3JpcHRpb246CisgKiBwYXJ0bGlzdDogbGlzdCBvZiBwb2ludGVycyB0 byBTaW5nbGVQYXJ0aXRpb25TcGVjIHN0cnVjdHVyZXMuCisgKiBuZXdQYXJ0UmVsczogbGlz dCBvZiBSZWxhdGlvbnMuCisgKiBkZWZhdWx0UGFydE9pZDogb2lkIG9mIERFRkFVTFQgcGFy dGl0aW9uLCBmb3IgdGFibGUgcmVsLgorICovCitzdGF0aWMgdm9pZAorbW92ZVNwbGl0VGFi bGVSb3dzKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gc3BsaXRSZWws IExpc3QgKnBhcnRsaXN0LCBMaXN0ICpuZXdQYXJ0UmVscywgT2lkIGRlZmF1bHRQYXJ0T2lk KQoreworCS8qIFRoZSBGU00gaXMgZW1wdHksIHNvIGRvbid0IGJvdGhlciB1c2luZyBpdC4g Ki8KKwlpbnQJCQl0aV9vcHRpb25zID0gVEFCTEVfSU5TRVJUX1NLSVBfRlNNOworCUNvbW1h bmRJZAlteWNpZDsKKwlFU3RhdGUJICAgKmVzdGF0ZTsKKwlMaXN0Q2VsbCAgICpsaXN0cHRy LAorCQkJICAgKmxpc3RwdHIyOworCVR1cGxlVGFibGVTbG90ICpzcmNzbG90OworCUV4cHJD b250ZXh0ICplY29udGV4dDsKKwlUYWJsZVNjYW5EZXNjIHNjYW47CisJU25hcHNob3QJc25h cHNob3Q7CisJTWVtb3J5Q29udGV4dCBvbGRDeHQ7CisJTGlzdAkgICAqcGFydENvbnRleHRz ID0gTklMOworCVR1cGxlQ29udmVyc2lvbk1hcCAqdHVwbGVfbWFwOworCVNwbGl0UGFydGl0 aW9uQ29udGV4dCAqZGVmYXVsdFBhcnRDdHggPSBOVUxMLAorCQkJICAgKnBjOworCWJvb2wJ CWlzT2xkRGVmYXVsdFBhcnQgPSBmYWxzZTsKKworCW15Y2lkID0gR2V0Q3VycmVudENvbW1h bmRJZCh0cnVlKTsKKworCWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKKworCWZv cmJvdGgobGlzdHB0ciwgcGFydGxpc3QsIGxpc3RwdHIyLCBuZXdQYXJ0UmVscykKKwl7CisJ CVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxm aXJzdChsaXN0cHRyKTsKKworCQlwYyA9IGNyZWF0ZVNwbGl0UGFydGl0aW9uQ29udGV4dCgo UmVsYXRpb24pIGxmaXJzdChsaXN0cHRyMikpOworCisJCS8qIEZpbmQgdGhlIHdvcmsgcXVl dWUgZW50cnkgZm9yIG5ldyBwYXJ0aXRpb24gdGFibGU6IG5ld1BhcnRSZWwuICovCisJCXBj LT50YWIgPSBBVEdldFF1ZXVlRW50cnkod3F1ZXVlLCBwYy0+cGFydFJlbCk7CisKKwkJYnVp bGRFeHByZXNzaW9uRXhlY3V0aW9uU3RhdGVzKHBjLT50YWIsIHBjLT5wYXJ0UmVsLCBlc3Rh dGUpOworCisJCWlmIChzcHMtPmJvdW5kLT5pc19kZWZhdWx0KQorCQl7CisJCQkvKiBXZSBz aG91bGQgbm90IGNyZWF0ZSBjb25zdHJhaW50IGZvciBkZXRhY2hlZCBERUZBVUxUIHBhcnRp dGlvbi4gKi8KKwkJCWRlZmF1bHRQYXJ0Q3R4ID0gcGM7CisJCX0KKwkJZWxzZQorCQl7CisJ CQlMaXN0CSAgICpwYXJ0Q29uc3RyYWludDsKKworCQkJLyogQnVpbGQgZXhwcmVzc2lvbiBl eGVjdXRpb24gc3RhdGVzIGZvciBwYXJ0aXRpb24gY2hlY2sgcXVhbHMuICovCisJCQlwYXJ0 Q29uc3RyYWludCA9IGdldF9xdWFsX2Zyb21fcGFydGJvdW5kKHJlbCwgc3BzLT5ib3VuZCk7 CisJCQlwYXJ0Q29uc3RyYWludCA9CisJCQkJKExpc3QgKikgZXZhbF9jb25zdF9leHByZXNz aW9ucyhOVUxMLAorCQkJCQkJCQkJCQkJKE5vZGUgKikgcGFydENvbnN0cmFpbnQpOworCQkJ LyogTWFrZSBib29sZWFuIGV4cHJlc3Npb24gZm9yIEV4ZWNDaGVjaygpLiAqLworCQkJcGFy dENvbnN0cmFpbnQgPSBsaXN0X21ha2UxKG1ha2VfYW5kc19leHBsaWNpdChwYXJ0Q29uc3Ry YWludCkpOworCisJCQkvKgorCQkJICogTWFwIHRoZSB2YXJzIGluIHRoZSBjb25zdHJhaW50 IGV4cHJlc3Npb24gZnJvbSByZWwncyBhdHRub3MgdG8KKwkJCSAqIHNwbGl0UmVsJ3MuCisJ CQkgKi8KKwkJCXBhcnRDb25zdHJhaW50ID0gbWFwX3BhcnRpdGlvbl92YXJhdHRub3MocGFy dENvbnN0cmFpbnQsCisJCQkJCQkJCQkJCQkJIDEsIHNwbGl0UmVsLCByZWwpOworCisJCQlw Yy0+cGFydHF1YWxzdGF0ZSA9CisJCQkJRXhlY1ByZXBhcmVFeHByKChFeHByICopIGxpbml0 aWFsKHBhcnRDb25zdHJhaW50KSwgZXN0YXRlKTsKKwkJCUFzc2VydChwYy0+cGFydHF1YWxz dGF0ZSAhPSBOVUxMKTsKKwkJfQorCisJCS8qIFN0b3JlIHBhcnRpdGlvbiBjb250ZXh0IGlu dG8gbGlzdC4gKi8KKwkJcGFydENvbnRleHRzID0gbGFwcGVuZChwYXJ0Q29udGV4dHMsIHBj KTsKKwl9CisKKwkvKgorCSAqIENyZWF0ZSBwYXJ0aXRpb24gY29udGV4dCBmb3IgREVGQVVM VCBwYXJ0aXRpb24uIFdlIGNhbiBpbnNlcnQgdmFsdWVzCisJICogaW50byB0aGlzIHBhcnRp dGlvbiBpbiBjYXNlIHNwYWNlcyB3aXRoIHZhbHVlcyBiZXR3ZWVuIG5ldyBwYXJ0aXRpb25z LgorCSAqLworCWlmICghZGVmYXVsdFBhcnRDdHggJiYgT2lkSXNWYWxpZChkZWZhdWx0UGFy dE9pZCkpCisJeworCQkvKiBJbmRpY2F0ZSB0aGF0IHdlIGFsbG9jYXRlIGNvbnRleHQgZm9y IG9sZCBERUZBVUxUIHBhcnRpdGlvbiAqLworCQlpc09sZERlZmF1bHRQYXJ0ID0gdHJ1ZTsK KwkJZGVmYXVsdFBhcnRDdHggPSBjcmVhdGVTcGxpdFBhcnRpdGlvbkNvbnRleHQodGFibGVf b3BlbihkZWZhdWx0UGFydE9pZCwgQWNjZXNzRXhjbHVzaXZlTG9jaykpOworCisJCS8qIEZp bmQgdGhlIHdvcmsgcXVldWUgZW50cnkgZm9yIGRlZmF1bHQgcGFydGl0aW9uIHRhYmxlLiAq LworCQlkZWZhdWx0UGFydEN0eC0+dGFiID0gQVRHZXRRdWV1ZUVudHJ5KHdxdWV1ZSwgZGVm YXVsdFBhcnRDdHgtPnBhcnRSZWwpOworCX0KKworCWVjb250ZXh0ID0gR2V0UGVyVHVwbGVF eHByQ29udGV4dChlc3RhdGUpOworCisJLyogQ3JlYXRlIG5lY2Vzc2FyeSB0dXBsZSBzbG90 LiAqLworCXNyY3Nsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShzcGxpdFJlbCwgTlVMTCk7CisK KwkvKgorCSAqIE1hcCBjb21wdXRpbmcgZm9yIG1vdmluZyBhdHRyaWJ1dGVzIG9mIHNwbGl0 IHBhcnRpdGlvbiB0byBuZXcgcGFydGl0aW9uCisJICogKGZvciBmaXJzdCBuZXcgcGFydGl0 aW9uLCBidXQgb3RoZXIgbmV3IHBhcnRpdGlvbnMgY2FuIHVzZSB0aGUgc2FtZQorCSAqIG1h cCkuCisJICovCisJcGMgPSAoU3BsaXRQYXJ0aXRpb25Db250ZXh0ICopIGxmaXJzdChsaXN0 X2hlYWQocGFydENvbnRleHRzKSk7CisJdHVwbGVfbWFwID0gY29udmVydF90dXBsZXNfYnlf bmFtZShSZWxhdGlvbkdldERlc2NyKHNwbGl0UmVsKSwKKwkJCQkJCQkJCSAgIFJlbGF0aW9u R2V0RGVzY3IocGMtPnBhcnRSZWwpKTsKKworCS8qIFNjYW4gdGhyb3VnaCB0aGUgcm93cy4g Ki8KKwlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7 CisJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihzcGxpdFJlbCwgc25hcHNob3QsIDAsIE5VTEwp OworCisJLyoKKwkgKiBTd2l0Y2ggdG8gcGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0IGFuZCBy ZXNldCBpdCBmb3IgZWFjaCB0dXBsZQorCSAqIHByb2R1Y2VkLCBzbyB3ZSBkb24ndCBsZWFr IG1lbW9yeS4KKwkgKi8KKwlvbGRDeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oR2V0UGVy VHVwbGVNZW1vcnlDb250ZXh0KGVzdGF0ZSkpOworCisJd2hpbGUgKHRhYmxlX3NjYW5fZ2V0 bmV4dHNsb3Qoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHNyY3Nsb3QpKQorCXsKKwkJ Ym9vbAkJZm91bmQgPSBmYWxzZTsKKwkJVHVwbGVUYWJsZVNsb3QgKmluc2VydHNsb3Q7CisK KwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQllY29udGV4dC0+ZWN4dF9zY2FudHVw bGUgPSBzcmNzbG90OworCisJCS8qIFNlYXJjaCBwYXJ0aXRpb24gZm9yIGN1cnJlbnQgc2xv dCBzcmNzbG90LiAqLworCQlmb3JlYWNoKGxpc3RwdHIsIHBhcnRDb250ZXh0cykKKwkJewor CQkJcGMgPSAoU3BsaXRQYXJ0aXRpb25Db250ZXh0ICopIGxmaXJzdChsaXN0cHRyKTsKKwor CQkJaWYgKHBjLT5wYXJ0cXVhbHN0YXRlIC8qIHNraXAgREVGQVVMVCBwYXJ0aXRpb24gKi8g JiYKKwkJCQlFeGVjQ2hlY2socGMtPnBhcnRxdWFsc3RhdGUsIGVjb250ZXh0KSkKKwkJCXsK KwkJCQlmb3VuZCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCQlSZXNldEV4cHJDb250 ZXh0KGVjb250ZXh0KTsKKwkJfQorCQlpZiAoIWZvdW5kKQorCQl7CisJCQkvKiBVc2UgREVG QVVMVCBwYXJ0aXRpb24gaWYgaXQgZXhpc3RzLiAqLworCQkJaWYgKGRlZmF1bHRQYXJ0Q3R4 KQorCQkJCXBjID0gZGVmYXVsdFBhcnRDdHg7CisJCQllbHNlCisJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9DSEVDS19WSU9MQVRJT04pLAorCQkJCQkJZXJy bXNnKCJjYW4gbm90IGZpbmQgcGFydGl0aW9uIGZvciBzcGxpdCBwYXJ0aXRpb24gcm93Iiks CisJCQkJCQllcnJ0YWJsZShzcGxpdFJlbCkpOworCQl9CisKKwkJaWYgKHR1cGxlX21hcCkK KwkJeworCQkJLyogTmVlZCB0byB1c2UgbWFwIHRvIGNvcHkgYXR0cmlidXRlcy4gKi8KKwkJ CWluc2VydHNsb3QgPSBleGVjdXRlX2F0dHJfbWFwX3Nsb3QodHVwbGVfbWFwLT5hdHRyTWFw LCBzcmNzbG90LCBwYy0+ZHN0c2xvdCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKiBFeHRy YWN0IGRhdGEgZnJvbSBvbGQgdHVwbGUuICovCisJCQlzbG90X2dldGFsbGF0dHJzKHNyY3Ns b3QpOworCisJCQkvKiBDb3B5IGF0dHJpYnV0ZXMgZGlyZWN0bHkuICovCisJCQlpbnNlcnRz bG90ID0gcGMtPmRzdHNsb3Q7CisKKwkJCUV4ZWNDbGVhclR1cGxlKGluc2VydHNsb3QpOwor CisJCQltZW1jcHkoaW5zZXJ0c2xvdC0+dHRzX3ZhbHVlcywgc3Jjc2xvdC0+dHRzX3ZhbHVl cywKKwkJCQkgICBzaXplb2YoRGF0dW0pICogc3Jjc2xvdC0+dHRzX252YWxpZCk7CisJCQlt ZW1jcHkoaW5zZXJ0c2xvdC0+dHRzX2lzbnVsbCwgc3Jjc2xvdC0+dHRzX2lzbnVsbCwKKwkJ CQkgICBzaXplb2YoYm9vbCkgKiBzcmNzbG90LT50dHNfbnZhbGlkKTsKKworCQkJRXhlY1N0 b3JlVmlydHVhbFR1cGxlKGluc2VydHNsb3QpOworCQl9CisKKwkJLyoKKwkJICogQ29uc3Ry YWludHMgYW5kIEdFTkVSQVRFRCBleHByZXNzaW9ucyBtaWdodCByZWZlcmVuY2UgdGhlIHRh Ymxlb2lkCisJCSAqIGNvbHVtbiwgc28gZmlsbCB0dHNfdGFibGVPaWQgd2l0aCB0aGUgZGVz aXJlZCB2YWx1ZS4gKFdlIG11c3QgZG8KKwkJICogdGhpcyBlYWNoIHRpbWUsIGJlY2F1c2Ug aXQgZ2V0cyBvdmVyd3JpdHRlbiB3aXRoIG5ld3JlbCdzIE9JRCBkdXJpbmcKKwkJICogc3Rv cmluZy4pCisJCSAqLworCQlpbnNlcnRzbG90LT50dHNfdGFibGVPaWQgPSBSZWxhdGlvbkdl dFJlbGlkKHBjLT5wYXJ0UmVsKTsKKworCQkvKgorCQkgKiBOb3csIGV2YWx1YXRlIGFueSBn ZW5lcmF0ZWQgZXhwcmVzc2lvbnMgd2hvc2UgaW5wdXRzIGNvbWUgZnJvbQorCQkgKiB0aGUg bmV3IHR1cGxlLiAgV2UgYXNzdW1lIHRoZXNlIGNvbHVtbnMgd29uJ3QgcmVmZXJlbmNlIGVh Y2gKKwkJICogb3RoZXIsIHNvIHRoYXQgdGhlcmUncyBubyBvcmRlcmluZyBkZXBlbmRlbmN5 LgorCQkgKi8KKwkJZXZhbHVhdGVHZW5lcmF0ZWRFeHByZXNzaW9uc0FuZENoZWNrQ29uc3Ry YWludHMocGMtPnRhYiwgcGMtPnBhcnRSZWwsCisJCQkJCQkJCQkJCQkJCWluc2VydHNsb3Qs IGVjb250ZXh0KTsKKworCQkvKiBXcml0ZSB0aGUgdHVwbGUgb3V0IHRvIHRoZSBuZXcgcmVs YXRpb24uICovCisJCXRhYmxlX3R1cGxlX2luc2VydChwYy0+cGFydFJlbCwgaW5zZXJ0c2xv dCwgbXljaWQsCisJCQkJCQkgICB0aV9vcHRpb25zLCBwYy0+YmlzdGF0ZSk7CisKKwkJUmVz ZXRFeHByQ29udGV4dChlY29udGV4dCk7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZEN4dCk7CisKKwl0YWJsZV9lbmRzY2FuKHNjYW4pOworCVVucmVnaXN0ZXJTbmFwc2hv dChzbmFwc2hvdCk7CisKKwlpZiAodHVwbGVfbWFwKQorCQlmcmVlX2NvbnZlcnNpb25fbWFw KHR1cGxlX21hcCk7CisKKwlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNyY3Nsb3Qp OworCisJRnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRlKTsKKworCWZvcmVhY2hfcHRyKFNwbGl0 UGFydGl0aW9uQ29udGV4dCwgc3BjLCBwYXJ0Q29udGV4dHMpCisJCWRlbGV0ZVNwbGl0UGFy dGl0aW9uQ29udGV4dChzcGMsIHdxdWV1ZSwgdGlfb3B0aW9ucyk7CisKKwkvKiBOZWVkIHRv IGNsb3NlIHRhYmxlIGFuZCBmcmVlIGJ1ZmZlcnMgZm9yIERFRkFVTFQgcGFydGl0aW9uLiAq LworCWlmIChpc09sZERlZmF1bHRQYXJ0KQorCXsKKwkJUmVsYXRpb24JZGVmYXVsdFBhcnRS ZWwgPSBkZWZhdWx0UGFydEN0eC0+cGFydFJlbDsKKworCQlkZWxldGVTcGxpdFBhcnRpdGlv bkNvbnRleHQoZGVmYXVsdFBhcnRDdHgsIHdxdWV1ZSwgdGlfb3B0aW9ucyk7CisJCS8qIEtl ZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLworCQl0YWJsZV9jbG9zZShkZWZhdWx0UGFy dFJlbCwgTm9Mb2NrKTsKKwl9Cit9CisKKy8qCisgKiBBTFRFUiBUQUJMRSA8bmFtZT4gU1BM SVQgUEFSVElUSU9OIDxwYXJ0aXRpb24tbmFtZT4gSU5UTyA8cGFydGl0aW9uLWxpc3Q+Cisg Ki8KK3N0YXRpYyB2b2lkCitBVEV4ZWNTcGxpdFBhcnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBB bHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKKwkJCQkJIFBhcnRpdGlvbkNt ZCAqY21kLCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7CisJUmVsYXRp b24Jc3BsaXRSZWw7CisJT2lkCQkJc3BsaXRSZWxPaWQ7CisJY2hhcgkJcmVsbmFtZVtOQU1F REFUQUxFTl07CisJTGlzdENlbGwgICAqbGlzdHB0ciwKKwkJCSAgICpsaXN0cHRyMjsKKwli b29sCQlpc1NhbWVOYW1lID0gZmFsc2U7CisJY2hhcgkJdG1wUmVsTmFtZVtOQU1FREFUQUxF Tl07CisJTGlzdAkgICAqbmV3UGFydFJlbHMgPSBOSUw7CisJT2JqZWN0QWRkcmVzcyBvYmpl Y3Q7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisJT2lkCQkJc2F2ZV91c2VyaWQ7CisJaW50 CQkJc2F2ZV9zZWNfY29udGV4dDsKKwlpbnQJCQlzYXZlX25lc3RsZXZlbDsKKworCWRlZmF1 bHRQYXJ0T2lkID0gZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRlc2MoUmVsYXRpb25HZXRQ YXJ0aXRpb25EZXNjKHJlbCwgdHJ1ZSkpOworCisJLyoKKwkgKiBQYXJ0aXRpb24gaXMgYWxy ZWFkeSBsb2NrZWQgaW4gdGhlIHRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvclNwbGl0CisJICog ZnVuY3Rpb24uCisJICovCisJc3BsaXRSZWwgPSB0YWJsZV9vcGVucnYoY21kLT5uYW1lLCBO b0xvY2spOworCisJc3BsaXRSZWxPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHNwbGl0UmVsKTsK KworCS8qIENoZWNrIGRlc2NyaXB0aW9ucyBvZiBuZXcgcGFydGl0aW9ucy4gKi8KKwlmb3Jl YWNoX25vZGUoU2luZ2xlUGFydGl0aW9uU3BlYywgc3BzLCBjbWQtPnBhcnRsaXN0KQorCXsK KwkJT2lkCQkJZXhpc3RpbmdSZWxpZDsKKworCQlzdHJsY3B5KHJlbG5hbWUsIHNwcy0+bmFt ZS0+cmVsbmFtZSwgTkFNRURBVEFMRU4pOworCisJCS8qCisJCSAqIExvb2sgdXAgZXhpc3Rp bmcgcmVsYXRpb24gYnkgbmV3IHBhcnRpdGlvbiBuYW1lLCBjaGVjayB3ZSBoYXZlCisJCSAq IHBlcm1pc3Npb24gdG8gY3JlYXRlIHRoZXJlLCBsb2NrIGl0IGFnYWluc3QgY29uY3VycmVu dCBkcm9wLCBhbmQgbWFyaworCQkgKiBzdG10LT5yZWxhdGlvbiBhcyBSRUxQRVJTSVNURU5D RV9URU1QIGlmIGEgdGVtcG9yYXJ5IG5hbWVzcGFjZSBpcworCQkgKiBzZWxlY3RlZC4KKwkJ ICovCisJCXNwcy0+bmFtZS0+cmVscGVyc2lzdGVuY2UgPSByZWwtPnJkX3JlbC0+cmVscGVy c2lzdGVuY2U7CisJCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5hbWVzcGFjZShzcHMt Pm5hbWUsIE5vTG9jaywgJmV4aXN0aW5nUmVsaWQpOworCisJCS8qCisJCSAqIFRoaXMgd291 bGQgZmFpbCBsYXRlciBvbiBhbnl3YXkgaWYgdGhlIHJlbGF0aW9uIGFscmVhZHkgZXhpc3Rz LiBCdXQKKwkJICogYnkgY2F0Y2hpbmcgaXQgaGVyZSB3ZSBjYW4gZW1pdCBhIG5pY2VyIGVy cm9yIG1lc3NhZ2UuCisJCSAqLworCQlpZiAoZXhpc3RpbmdSZWxpZCA9PSBzcGxpdFJlbE9p ZCAmJiAhaXNTYW1lTmFtZSkKKwkJCS8qIE9uZSBuZXcgcGFydGl0aW9uIGNhbiBoYXZlIHRo ZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLiAqLworCQkJaXNTYW1lTmFtZSA9IHRy dWU7CisJCWVsc2UgaWYgKE9pZElzVmFsaWQoZXhpc3RpbmdSZWxpZCkpCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJ ZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCByZWxuYW1lKSk7CisJ fQorCisJLyogRGV0YWNoIHNwbGl0IHBhcnRpdGlvbi4gKi8KKwlkZXRhY2hQYXJ0aXRpb25U YWJsZShyZWwsIHNwbGl0UmVsLCBkZWZhdWx0UGFydE9pZCk7CisKKwkvKgorCSAqIFBlcmZv cm0gYSBwcmVsaW1pbmFyeSBjaGVjayB0byBkZXRlcm1pbmUgd2hldGhlciBpdCdzIHNhZmUg dG8gZHJvcCBhbGwKKwkgKiBtZXJnaW5nIHBhcnRpdGlvbnMgYmVmb3JlIHdlIGFjdHVhbGx5 IGRvIHNvIGxhdGVyLiBBZnRlciBtZXJnaW5nIHJvd3MKKwkgKiBpbnRvIHRoZSBuZXcgcGFy dGl0aW9ucyB2aWEgbW92ZU1lcmdlZFRhYmxlc1Jvd3MsIGFsbCBvbGQgcGFydGl0aW9ucyBu ZWVkCisJICogYmUgZHJvcHBlZC4gSG93ZXZlciwgc2luY2UgdGhlIGRyb3AgYmVoYXZpb3Ig aXMgRFJPUF9SRVNUUklDVCBhbmQgdGhlCisJICogbWVyZ2UgcHJvY2VzcyAobW92ZU1lcmdl ZFRhYmxlc1Jvd3MpIGNhbiBiZSB0aW1lLWNvbnN1bWluZywgcGVyZm9ybWluZyBhbgorCSAq IGVhcmx5IGNoZWNrIG9uIHRoZSBkcm9wIGVsaWdpYmlsaXR5IG9mIG9sZCBwYXJ0aXRpb25z IGlzIHByZWZlcmFibGUuCisJICovCisJb2JqZWN0Lm9iamVjdElkID0gc3BsaXRSZWxPaWQ7 CisJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJb2JqZWN0Lm9iamVj dFN1YklkID0gMDsKKwlwZXJmb3JtRGVsZXRpb25DaGVjaygmb2JqZWN0LCBEUk9QX1JFU1RS SUNULCBQRVJGT1JNX0RFTEVUSU9OX0lOVEVSTkFMKTsKKworCS8qCisJICogSWYgbmV3IHBh cnRpdGlvbiBoYXMgdGhlIHNhbWUgbmFtZSBhcyBzcGxpdCBwYXJ0aXRpb24gdGhlbiB3ZSBz aG91bGQKKwkgKiByZW5hbWUgc3BsaXQgcGFydGl0aW9uIGZvciByZXVzaW5nIG5hbWUuCisJ ICovCisJaWYgKGlzU2FtZU5hbWUpCisJeworCQkvKgorCQkgKiBXZSBtdXN0IGJ1bXAgdGhl IGNvbW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBzcGxpdCBwYXJ0aXRpb24gdHVwbGUKKwkJ ICogdmlzaWJsZSBmb3IgcmVuYW1pbmcuCisJCSAqLworCQlDb21tYW5kQ291bnRlckluY3Jl bWVudCgpOworCQkvKiBSZW5hbWUgcGFydGl0aW9uLiAqLworCQlzcHJpbnRmKHRtcFJlbE5h bWUsICJzcGxpdC0ldS0lWC10bXAiLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksIE15UHJvY1Bp ZCk7CisJCVJlbmFtZVJlbGF0aW9uSW50ZXJuYWwoc3BsaXRSZWxPaWQsIHRtcFJlbE5hbWUs IHRydWUsIGZhbHNlKTsKKworCQkvKgorCQkgKiBXZSBtdXN0IGJ1bXAgdGhlIGNvbW1hbmQg Y291bnRlciB0byBtYWtlIHRoZSBzcGxpdCBwYXJ0aXRpb24gdHVwbGUKKwkJICogdmlzaWJs ZSBhZnRlciByZW5hbWluZy4KKwkJICovCisJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7 CisJfQorCisJLyogQ3JlYXRlIG5ldyBwYXJ0aXRpb25zIChsaWtlIHNwbGl0IHBhcnRpdGlv biksIHdpdGhvdXQgaW5kZXhlcy4gKi8KKwlmb3JlYWNoX25vZGUoU2luZ2xlUGFydGl0aW9u U3BlYywgc3BzLCBjbWQtPnBhcnRsaXN0KQorCXsKKwkJUmVsYXRpb24JbmV3UGFydFJlbDsK KworCQluZXdQYXJ0UmVsID0gY3JlYXRlUGFydGl0aW9uVGFibGUod3F1ZXVlLCBzcHMtPm5h bWUsIHJlbCwKKwkJCQkJCQkJCQkgIHNwbGl0UmVsLT5yZF9yZWwtPnJlbG93bmVyKTsKKwkJ bmV3UGFydFJlbHMgPSBsYXBwZW5kKG5ld1BhcnRSZWxzLCBuZXdQYXJ0UmVsKTsKKwl9CisK KwkvKgorCSAqIFN3aXRjaCB0byB0aGUgdGFibGUgb3duZXIncyB1c2VyaWQsIHNvIHRoYXQg YW55IGluZGV4IGZ1bmN0aW9ucyBhcmUgcnVuCisJICogYXMgdGhhdCB1c2VyLiAgQWxzbyBs b2NrIGRvd24gc2VjdXJpdHktcmVzdHJpY3RlZCBvcGVyYXRpb25zIGFuZAorCSAqIGFycmFu Z2UgdG8gbWFrZSBHVUMgdmFyaWFibGUgY2hhbmdlcyBsb2NhbCB0byB0aGlzIGNvbW1hbmQu CisJICoKKwkgKiBOZWVkIHRvIGRvIGl0IGFmdGVyIGRldGVybWluZSBuYW1lc3BhY2UgaW4g Y3JlYXRlUGFydGl0aW9uVGFibGUgY2FsbC4KKwkgKi8KKwlHZXRVc2VySWRBbmRTZWNDb250 ZXh0KCZzYXZlX3VzZXJpZCwgJnNhdmVfc2VjX2NvbnRleHQpOworCVNldFVzZXJJZEFuZFNl Y0NvbnRleHQoc3BsaXRSZWwtPnJkX3JlbC0+cmVsb3duZXIsCisJCQkJCQkgICBzYXZlX3Nl Y19jb250ZXh0IHwgU0VDVVJJVFlfUkVTVFJJQ1RFRF9PUEVSQVRJT04pOworCXNhdmVfbmVz dGxldmVsID0gTmV3R1VDTmVzdExldmVsKCk7CisJUmVzdHJpY3RTZWFyY2hQYXRoKCk7CisK KwkvKiBDb3B5IGRhdGEgZnJvbSBzcGxpdCBwYXJ0aXRpb24gdG8gbmV3IHBhcnRpdGlvbnMu ICovCisJbW92ZVNwbGl0VGFibGVSb3dzKHdxdWV1ZSwgcmVsLCBzcGxpdFJlbCwgY21kLT5w YXJ0bGlzdCwgbmV3UGFydFJlbHMsIGRlZmF1bHRQYXJ0T2lkKTsKKwkvKiBLZWVwIHRoZSBs b2NrIHVudGlsIGNvbW1pdC4gKi8KKwl0YWJsZV9jbG9zZShzcGxpdFJlbCwgTm9Mb2NrKTsK KworCS8qIEF0dGFjaCBuZXcgcGFydGl0aW9ucyB0byBwYXJ0aXRpb25lZCB0YWJsZS4gKi8K Kwlmb3Jib3RoKGxpc3RwdHIsIGNtZC0+cGFydGxpc3QsIGxpc3RwdHIyLCBuZXdQYXJ0UmVs cykKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IChTaW5nbGVQYXJ0aXRpb25T cGVjICopIGxmaXJzdChsaXN0cHRyKTsKKwkJUmVsYXRpb24JbmV3UGFydFJlbCA9IChSZWxh dGlvbikgbGZpcnN0KGxpc3RwdHIyKTsKKworCQkvKgorCQkgKiB3cXVldWUgPSBOVUxMOiB2 ZXJpZmljYXRpb24gZm9yIGVhY2ggY2xvbmVkIGNvbnN0cmFpbnQgaXMgbm90CisJCSAqIG5l ZWRlZC4KKwkJICovCisJCWF0dGFjaFBhcnRpdGlvblRhYmxlKE5VTEwsIHJlbCwgbmV3UGFy dFJlbCwgc3BzLT5ib3VuZCk7CisJCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAq LworCQl0YWJsZV9jbG9zZShuZXdQYXJ0UmVsLCBOb0xvY2spOworCX0KKworCS8qIERyb3Ag c3BsaXQgcGFydGl0aW9uLiAqLworCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlv bklkOworCW9iamVjdC5vYmplY3RJZCA9IHNwbGl0UmVsT2lkOworCW9iamVjdC5vYmplY3RT dWJJZCA9IDA7CisJLyogUHJvYmFibHkgRFJPUF9DQVNDQURFIGlzIG5vdCBuZWVkZWQuICov CisJcGVyZm9ybURlbGV0aW9uKCZvYmplY3QsIERST1BfUkVTVFJJQ1QsIDApOworCisJLyog Um9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMu ICovCisJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CisKKwkvKiBSZXN0 b3JlIHVzZXJpZCBhbmQgc2VjdXJpdHkgY29udGV4dC4gKi8KKwlTZXRVc2VySWRBbmRTZWND b250ZXh0KHNhdmVfdXNlcmlkLCBzYXZlX3NlY19jb250ZXh0KTsKK30KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 CmluZGV4IDQ2YmJkY2JjNzQuLmFlZDc5YjYzZGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMjU3 LDYgKzI1Nyw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFy ICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJUGFydGl0aW9uRWxl bSAqcGFydGVsZW07CiAJUGFydGl0aW9uU3BlYyAqcGFydHNwZWM7CiAJUGFydGl0aW9uQm91 bmRTcGVjICpwYXJ0Ym91bmRzcGVjOworCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNpbmdsZXBh cnRzcGVjOwogCVJvbGVTcGVjICAgKnJvbGVzcGVjOwogCVB1YmxpY2F0aW9uT2JqU3BlYyAq cHVibGljYXRpb25vYmplY3RzcGVjOwogCXN0cnVjdCBTZWxlY3RMaW1pdCAqc2VsZWN0bGlt aXQ7CkBAIC02NDAsNiArNjQxLDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3 U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0 eXBlIDxwYXJ0ZWxlbT4JcGFydF9lbGVtCiAldHlwZSA8bGlzdD4JCXBhcnRfcGFyYW1zCiAl dHlwZSA8cGFydGJvdW5kc3BlYz4gUGFydGl0aW9uQm91bmRTcGVjCisldHlwZSA8c2luZ2xl cGFydHNwZWM+CVNpbmdsZVBhcnRpdGlvblNwZWMKKyV0eXBlIDxsaXN0PgkJcGFydGl0aW9u c19saXN0CiAldHlwZSA8bGlzdD4JCWhhc2hfcGFydGJvdW5kCiAldHlwZSA8ZGVmZWx0PgkJ aGFzaF9wYXJ0Ym91bmRfZWxlbQogCkBAIC03NzAsNyArNzczLDcgQEAgc3RhdGljIE5vZGUg Km1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMs IE5vZGUgKnF1ZXJ5KTsKIAlTQVZFUE9JTlQgU0NBTEFSIFNDSEVNQSBTQ0hFTUFTIFNDUk9M TCBTRUFSQ0ggU0VDT05EX1AgU0VDVVJJVFkgU0VMRUNUCiAJU0VRVUVOQ0UgU0VRVUVOQ0VT CiAJU0VSSUFMSVpBQkxFIFNFUlZFUiBTRVNTSU9OIFNFU1NJT05fVVNFUiBTRVQgU0VUUyBT RVRPRiBTSEFSRSBTSE9XCi0JU0lNSUxBUiBTSU1QTEUgU0tJUCBTTUFMTElOVCBTTkFQU0hP VCBTT01FIFNPVVJDRSBTUUxfUCBTVEFCTEUgU1RBTkRBTE9ORV9QCisJU0lNSUxBUiBTSU1Q TEUgU0tJUCBTTUFMTElOVCBTTkFQU0hPVCBTT01FIFNQTElUIFNPVVJDRSBTUUxfUCBTVEFC TEUgU1RBTkRBTE9ORV9QCiAJU1RBUlQgU1RBVEVNRU5UIFNUQVRJU1RJQ1MgU1RESU4gU1RE T1VUIFNUT1JBR0UgU1RPUkVEIFNUUklDVF9QIFNUUklOR19QIFNUUklQX1AKIAlTVUJTQ1JJ UFRJT04gU1VCU1RSSU5HIFNVUFBPUlQgU1lNTUVUUklDIFNZU0lEIFNZU1RFTV9QIFNZU1RF TV9VU0VSCiAKQEAgLTIzMjEsNiArMjMyNCwyMyBAQCBhbHRlcl90YWJsZV9jbWRzOgogCQkJ fCBhbHRlcl90YWJsZV9jbWRzICcsJyBhbHRlcl90YWJsZV9jbWQJeyAkJCA9IGxhcHBlbmQo JDEsICQzKTsgfQogCQk7CiAKK3BhcnRpdGlvbnNfbGlzdDoKKwkJCVNpbmdsZVBhcnRpdGlv blNwZWMJCQkJCQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8IHBhcnRpdGlvbnNf bGlzdCAnLCcgU2luZ2xlUGFydGl0aW9uU3BlYwl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9 CisJCTsKKworU2luZ2xlUGFydGl0aW9uU3BlYzoKKwkJCVBBUlRJVElPTiBxdWFsaWZpZWRf bmFtZSBQYXJ0aXRpb25Cb3VuZFNwZWMKKwkJCQl7CisJCQkJCVNpbmdsZVBhcnRpdGlvblNw ZWMgKm4gPSBtYWtlTm9kZShTaW5nbGVQYXJ0aXRpb25TcGVjKTsKKworCQkJCQluLT5uYW1l ID0gJDI7CisJCQkJCW4tPmJvdW5kID0gJDM7CisKKwkJCQkJJCQgPSBuOworCQkJCX0KKwkJ OworCiBwYXJ0aXRpb25fY21kOgogCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IEFUVEFDSCBQ QVJUSVRJT04gPHRhYmxlX25hbWU+IEZPUiBWQUxVRVMgKi8KIAkJCUFUVEFDSCBQQVJUSVRJ T04gcXVhbGlmaWVkX25hbWUgUGFydGl0aW9uQm91bmRTcGVjCkBAIC0yMzY1LDYgKzIzODUs MjAgQEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOwogCQkJ CQkkJCA9IChOb2RlICopIG47CiAJCQkJfQorCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IFNQ TElUIFBBUlRJVElPTiA8cGFydGl0aW9uX25hbWU+IElOVE8gKCkgKi8KKwkJCXwgU1BMSVQg UEFSVElUSU9OIHF1YWxpZmllZF9uYW1lIElOVE8gJygnIHBhcnRpdGlvbnNfbGlzdCAnKScK KwkJCQl7CisJCQkJCUFsdGVyVGFibGVDbWQgKm4gPSBtYWtlTm9kZShBbHRlclRhYmxlQ21k KTsKKwkJCQkJUGFydGl0aW9uQ21kICpjbWQgPSBtYWtlTm9kZShQYXJ0aXRpb25DbWQpOwor CisJCQkJCW4tPnN1YnR5cGUgPSBBVF9TcGxpdFBhcnRpdGlvbjsKKwkJCQkJY21kLT5uYW1l ID0gJDM7CisJCQkJCWNtZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBhcnRsaXN0ID0g JDY7CisJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZhbHNlOworCQkJCQluLT5kZWYgPSAoTm9k ZSAqKSBjbWQ7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CiAJCQkvKiBBTFRFUiBU QUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyAoKSBJTlRPIDxwYXJ0aXRpb25fbmFtZT4g Ki8KIAkJCXwgTUVSR0UgUEFSVElUSU9OUyAnKCcgcXVhbGlmaWVkX25hbWVfbGlzdCAnKScg SU5UTyBxdWFsaWZpZWRfbmFtZQogCQkJCXsKQEAgLTE3OTYzLDYgKzE3OTk3LDcgQEAgdW5y ZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBTS0lQCiAJCQl8IFNOQVBTSE9UCiAJCQl8IFNPVVJD RQorCQkJfCBTUExJVAogCQkJfCBTUUxfUAogCQkJfCBTVEFCTEUKIAkJCXwgU1RBTkRBTE9O RV9QCkBAIC0xODYwMyw2ICsxODYzOCw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwg U05BUFNIT1QKIAkJCXwgU09NRQogCQkJfCBTT1VSQ0UKKwkJCXwgU1BMSVQKIAkJCXwgU1FM X1AKIAkJCXwgU1RBQkxFCiAJCQl8IFNUQU5EQUxPTkVfUApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV91dGlsY21kLmMKaW5kZXggZjU1YWQxNzUyOC4uNzMzMTVlZmFjOCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfdXRpbGNtZC5jCkBAIC0xMzcsNyArMTM3LDcgQEAgc3RhdGljIHZvaWQg dHJhbnNmb3JtQ29uc3RyYWludEF0dHJzKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsCiAJCQkJ CQkJCQkgTGlzdCAqY29uc3RyYWludExpc3QpOwogc3RhdGljIHZvaWQgdHJhbnNmb3JtQ29s dW1uVHlwZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBDb2x1bW5EZWYgKmNvbHVtbik7CiBz dGF0aWMgdm9pZCBzZXRTY2hlbWFOYW1lKGNvbnN0IGNoYXIgKmNvbnRleHRfc2NoZW1hLCBj aGFyICoqc3RtdF9zY2hlbWFfbmFtZSk7Ci1zdGF0aWMgdm9pZCB0cmFuc2Zvcm1QYXJ0aXRp b25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQpOworc3Rh dGljIHZvaWQgdHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQs IFBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQpOwogc3RhdGljIExpc3QgKnRyYW5zZm9ybVBh cnRpdGlvblJhbmdlQm91bmRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqYmxpc3QsCiAJ CQkJCQkJCQkJICAgUmVsYXRpb24gcGFyZW50KTsKIHN0YXRpYyB2b2lkIHZhbGlkYXRlSW5m aW5pdGVCb3VuZHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpibGlzdCk7CkBAIC0zNTI2 LDYgKzM1MjYsNDYgQEAgY2hlY2tQYXJ0aXRpb24oUmVsYXRpb24gcmVsLCBPaWQgcGFydFJl bE9pZCkKIAl0YWJsZV9jbG9zZShwYXJ0UmVsLCBOb0xvY2spOwogfQogCisvKgorICogdHJh bnNmb3JtUGFydGl0aW9uQ21kRm9yU3BsaXQKKyAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJM RSAuLi4gU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQKKyAqCisgKiBGb3IgZWFjaCBuZXcgcGFy dGl0aW9uIHNwcy0+Ym91bmQgaXMgc2V0IHRvIHRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiBi b3VuZC4KKyAqIERvZXMgY2hlY2tzIGZvciBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMuCisg Ki8KK3N0YXRpYyB2b2lkCit0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JTcGxpdChDcmVhdGVT dG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKnBhcnRjbWQpCit7CisJUmVsYXRpb24J cGFyZW50ID0gY3h0LT5yZWw7CisJT2lkCQkJc3BsaXRQYXJ0T2lkOworCisJLyogVHJhbnNm b3JtIHBhcnRpdGlvbiBib3VuZHMgZm9yIGFsbCBwYXJ0aXRpb25zIGluIHRoZSBsaXN0OiAq LworCWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRpb25TcGVjLCBzcHMsIHBhcnRjbWQtPnBh cnRsaXN0KQorCXsKKwkJY3h0LT5wYXJ0Ym91bmQgPSBOVUxMOworCQl0cmFuc2Zvcm1QYXJ0 aXRpb25DbWQoY3h0LCBzcHMtPmJvdW5kKTsKKwkJLyogQXNzaWduIHRyYW5zZm9ybWVkIHZh bHVlIG9mIHRoZSBwYXJ0aXRpb24gYm91bmQuICovCisJCXNwcy0+Ym91bmQgPSBjeHQtPnBh cnRib3VuZDsKKwl9CisKKwkvKgorCSAqIE9wZW4gYW5kIGxvY2sgcGFydGl0aW9uLCBjaGVj ayBvd25lcnNoaXAgYWxvbmcgdGhlIHdheS4gV2UgbmVlZCB0byB1c2UKKwkgKiBBY2Nlc3NF eGNsdXNpdmVMb2NrIGhlcmUsIGJlY2F1c2UgdGhpcyBzcGxpdCBwYXJ0aXRpb24gd2lsbCBi ZSBkZXRhY2hlZAorCSAqIHRoZW4gZHJvcHBlZCBpbiBBVEV4ZWNTcGxpdFBhcnRpdGlvbi4K KwkgKi8KKwlzcGxpdFBhcnRPaWQgPSBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWQocGFydGNt ZC0+bmFtZSwKKwkJCQkJCQkJCQkJQWNjZXNzRXhjbHVzaXZlTG9jaywKKwkJCQkJCQkJCQkJ ZmFsc2UsCisJCQkJCQkJCQkJCVJhbmdlVmFyQ2FsbGJhY2tPd25zUmVsYXRpb24sCisJCQkJ CQkJCQkJCU5VTEwpOworCisJY2hlY2tQYXJ0aXRpb24ocGFyZW50LCBzcGxpdFBhcnRPaWQp OworCisJLyogVGhlbiB3ZSBzaG91bGQgY2hlY2sgcGFydGl0aW9ucyB3aXRoIHRyYW5zZm9y bWVkIGJvdW5kcy4gKi8KKwljaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdChwYXJlbnQsIHNw bGl0UGFydE9pZCwgcGFydGNtZC0+cGFydGxpc3QsIGN4dC0+cHN0YXRlKTsKK30KKworCiAv KgogICogdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UKICAqCQlBbmFseXplIHRoZSBB TFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjb21tYW5kCkBAIC0zODkyLDcgKzM5 MzIsNyBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChPaWQgcmVsaWQsIEFsdGVyVGFibGVT dG10ICpzdG10LAogCQkJCXsKIAkJCQkJUGFydGl0aW9uQ21kICpwYXJ0Y21kID0gKFBhcnRp dGlvbkNtZCAqKSBjbWQtPmRlZjsKIAotCQkJCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoJmN4 dCwgcGFydGNtZCk7CisJCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZCgmY3h0LCBwYXJ0Y21k LT5ib3VuZCk7CiAJCQkJCS8qIGFzc2lnbiB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiB0aGUgcGFy dGl0aW9uIGJvdW5kICovCiAJCQkJCXBhcnRjbWQtPmJvdW5kID0gY3h0LnBhcnRib3VuZDsK IAkJCQl9CkBAIC0zOTAwLDYgKzM5NDAsNyBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChP aWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpzdG10LAogCQkJCW5ld2NtZHMgPSBsYXBwZW5k KG5ld2NtZHMsIGNtZCk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQVRfU3BsaXRQYXJ0aXRp b246CiAJCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKIAkJCQl7CiAJCQkJCVBhcnRpdGlv bkNtZCAqcGFydGNtZCA9IChQYXJ0aXRpb25DbWQgKikgY21kLT5kZWY7CkBAIC0zOTA4LDcg KzM5NDksMTEgQEAgdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRh YmxlU3RtdCAqc3RtdCwKIAkJCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkJCWVycmNvZGUo RVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKIAkJCQkJCQkJZXJybXNnKCJs aXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBpdGVt cyIpKTsKLQkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UoJmN4dCwgcGFydGNt ZCk7CisKKwkJCQkJaWYgKGNtZC0+c3VidHlwZSA9PSBBVF9TcGxpdFBhcnRpdGlvbikKKwkJ CQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvclNwbGl0KCZjeHQsIHBhcnRjbWQpOworCQkJ CQllbHNlCisJCQkJCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZSgmY3h0LCBwYXJ0 Y21kKTsKIAkJCQkJbmV3Y21kcyA9IGxhcHBlbmQobmV3Y21kcywgY21kKTsKIAkJCQkJYnJl YWs7CiAJCQkJfQpAQCAtNDM0MywxMyArNDM4OCwxMyBAQCBzZXRTY2hlbWFOYW1lKGNvbnN0 IGNoYXIgKmNvbnRleHRfc2NoZW1hLCBjaGFyICoqc3RtdF9zY2hlbWFfbmFtZSkKIAogLyoK ICAqIHRyYW5zZm9ybVBhcnRpdGlvbkNtZAotICoJCUFuYWx5emUgdGhlIEFUVEFDSC9ERVRB Q0ggUEFSVElUSU9OIGNvbW1hbmQKKyAqCQlBbmFseXplIHRoZSBBVFRBQ0gvREVUQUNIL1NQ TElUIFBBUlRJVElPTiBjb21tYW5kCiAgKgotICogSW4gY2FzZSBvZiB0aGUgQVRUQUNIIFBB UlRJVElPTiBjb21tYW5kLCBjeHQtPnBhcnRib3VuZCBpcyBzZXQgdG8gdGhlCi0gKiB0cmFu c2Zvcm1lZCB2YWx1ZSBvZiBjbWQtPmJvdW5kLgorICogSW4gY2FzZSBvZiB0aGUgQVRUQUNI L1NQTElUIFBBUlRJVElPTiBjb21tYW5kLCBjeHQtPnBhcnRib3VuZCBpcyBzZXQgdG8gdGhl CisgKiB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiBib3VuZC4KICAqLwogc3RhdGljIHZvaWQKLXRy YW5zZm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25D bWQgKmNtZCkKK3RyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0 LCBQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kKQogewogCVJlbGF0aW9uCXBhcmVudFJlbCA9 IGN4dC0+cmVsOwogCkBAIC00MzU4LDkgKzQ0MDMsOSBAQCB0cmFuc2Zvcm1QYXJ0aXRpb25D bWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQpCiAJCWNhc2Ug UkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRToKIAkJCS8qIHRyYW5zZm9ybSB0aGUgcGFydGl0 aW9uIGJvdW5kLCBpZiBhbnkgKi8KIAkJCUFzc2VydChSZWxhdGlvbkdldFBhcnRpdGlvbktl eShwYXJlbnRSZWwpICE9IE5VTEwpOwotCQkJaWYgKGNtZC0+Ym91bmQgIT0gTlVMTCkKKwkJ CWlmIChib3VuZCAhPSBOVUxMKQogCQkJCWN4dC0+cGFydGJvdW5kID0gdHJhbnNmb3JtUGFy dGl0aW9uQm91bmQoY3h0LT5wc3RhdGUsIHBhcmVudFJlbCwKLQkJCQkJCQkJCQkJCQkJIGNt ZC0+Ym91bmQpOworCQkJCQkJCQkJCQkJCQkgYm91bmQpOwogCQkJYnJlYWs7CiAJCWNhc2Ug UkVMS0lORF9QQVJUSVRJT05FRF9JTkRFWDoKIApAQCAtNDM2OCw3ICs0NDEzLDcgQEAgdHJh bnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNt ZCAqY21kKQogCQkJICogQSBwYXJ0aXRpb25lZCBpbmRleCBjYW5ub3QgaGF2ZSBhIHBhcnRp dGlvbiBib3VuZCBzZXQuICBBTFRFUgogCQkJICogSU5ERVggcHJldmVudHMgdGhhdCB3aXRo IGl0cyBncmFtbWFyLCBidXQgbm90IEFMVEVSIFRBQkxFLgogCQkJICovCi0JCQlpZiAoY21k LT5ib3VuZCAhPSBOVUxMKQorCQkJaWYgKGJvdW5kICE9IE5VTEwpCiAJCQkJZXJlcG9ydChF UlJPUiwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElP TiksCiAJCQkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9uZWQgdGFibGUi LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyBi L3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKaW5kZXggOWY3YzAxYjdm YS4uOWM3MzBlMTI3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3Bh cnRib3VuZHMuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5j CkBAIC00OTg0LDE1ICs0OTg0LDIxIEBAIHNhdGlzZmllc19oYXNoX3BhcnRpdGlvbihQR19G VU5DVElPTl9BUkdTKQogICoKICAqIChmdW5jdGlvbiBmb3IgQlkgUkFOR0UgcGFydGl0aW9u aW5nKQogICoKLSAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNhbGN1bGF0ZV9w YXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKCkuCisgKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0 aW9uIGZvciBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdCgpIGFuZAorICogY2FsY3VsYXRl X3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoKS4KICAqIFRoaXMgZnVuY3Rpb24gY29tcGFy ZXMgdXBwZXIgYm91bmQgb2YgZmlyc3RfYm91bmQgYW5kIGxvd2VyIGJvdW5kIG9mCi0gKiBz ZWNvbmRfYm91bmQuIFRoZXNlIGJvdW5kcyBzaG91bGQgYmUgZXF1YWwuCisgKiBzZWNvbmRf Ym91bmQuIFRoZXNlIGJvdW5kcyBzaG91bGQgYmUgZXF1YWwgZXhjZXB0IHdoZW4KKyAqICJk ZWZhdWx0UGFydCA9PSB0cnVlIiAodGhpcyBtZWFucyB0aGF0IG9uZSBvZiBzcGxpdCBwYXJ0 aXRpb25zIGlzIERFRkFVTFQpLgorICogSW4gdGhpcyBjYXNlIHVwcGVyIGJvdW5kIG9mIGZp cnN0X2JvdW5kIGNhbiBiZSBsZXNzIHRoYW4gbG93ZXIgYm91bmQgb2YKKyAqIHNlY29uZF9i b3VuZCBiZWNhdXNlIHNwYWNlIGJldHdlZW4gdGhlc2UgYm91bmRzIHdpbGwgYmUgaW5jbHVk ZWQgaW4KKyAqIERFRkFVTFQgcGFydGl0aW9uLgogICoKICAqIHBhcmVudDoJCQlwYXJ0aXRp b25lZCB0YWJsZQogICogZmlyc3RfbmFtZToJCW5hbWUgb2YgZmlyc3QgcGFydGl0aW9uCiAg KiBmaXJzdF9ib3VuZDoJCWJvdW5kIG9mIGZpcnN0IHBhcnRpdGlvbgogICogc2Vjb25kX25h bWU6CQluYW1lIG9mIHNlY29uZCBwYXJ0aXRpb24KICAqIHNlY29uZF9ib3VuZDoJYm91bmQg b2Ygc2Vjb25kIHBhcnRpdGlvbgorICogZGVmYXVsdFBhcnQ6CQl0cnVlIGlmIG9uZSBvZiBz cGxpdCBwYXJ0aXRpb25zIGlzIERFRkFVTFQKICAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBh cnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmluZyBlcnJvciBwb3NpdGlvbgogICovCiBz dGF0aWMgdm9pZApAQCAtNTAwMSw2ICs1MDA3LDcgQEAgY2hlY2tfdHdvX3BhcnRpdGlvbnNf Ym91bmRzX3JhbmdlKFJlbGF0aW9uIHBhcmVudCwKIAkJCQkJCQkJICBQYXJ0aXRpb25Cb3Vu ZFNwZWMgKmZpcnN0X2JvdW5kLAogCQkJCQkJCQkgIFJhbmdlVmFyICpzZWNvbmRfbmFtZSwK IAkJCQkJCQkJICBQYXJ0aXRpb25Cb3VuZFNwZWMgKnNlY29uZF9ib3VuZCwKKwkJCQkJCQkJ ICBib29sIGRlZmF1bHRQYXJ0LAogCQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKIHsK IAlQYXJ0aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsK QEAgLTUwMjIsNyArNTAyOSw3IEBAIGNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5n ZShSZWxhdGlvbiBwYXJlbnQsCiAJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAogCQkJ CQkJCQkgIHNlY29uZF9sb3dlci0+ZGF0dW1zLCBzZWNvbmRfbG93ZXItPmtpbmQsCiAJCQkJ CQkJCSAgZmFsc2UsIGZpcnN0X3VwcGVyKTsKLQlpZiAoY21wdmFsKQorCWlmICgoIWRlZmF1 bHRQYXJ0ICYmIGNtcHZhbCkgfHwgKGRlZmF1bHRQYXJ0ICYmIGNtcHZhbCA8IDApKQogCXsK IAkJUGFydGl0aW9uUmFuZ2VEYXR1bSAqZGF0dW0gPSBsaW5pdGlhbChzZWNvbmRfYm91bmQt Pmxvd2VyZGF0dW1zKTsKIApAQCAtNTEzNCw3ICs1MTQxLDcgQEAgY2FsY3VsYXRlX3BhcnRp dGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJCQkJCQkJCQkJCSAg KFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIHByZXZfaW5kZXgpLAog CQkJCQkJCQkJCQkJCSAgKFJhbmdlVmFyICopIGxpc3RfbnRoKHBhcnROYW1lcywgaW5kZXgp LAogCQkJCQkJCQkJCQkJCSAgKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3Vu ZHMsIGluZGV4KSwKLQkJCQkJCQkJCQkJCQkgIHBzdGF0ZSk7CisJCQkJCQkJCQkJCQkJICBm YWxzZSwgcHN0YXRlKTsKIAkJCQl9CiAKIAkJCQkvKgpAQCAtNTE3MiwzICs1MTc5LDY3MiBA QCBjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBwYXJlbnQs CiAJCQkJIChpbnQpIGtleS0+c3RyYXRlZ3kpOwogCX0KIH0KKworLyoKKyAqIGNoZWNrX3Bh cnRpdGlvbnNfbm90X292ZXJsYXBfbGlzdAorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgTElT VCBwYXJ0aXRpb25pbmcpCisgKgorICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3Ig Y2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQoKS4KKyAqIENoZWNrcyB0aGF0IHRoZSB2YWx1 ZXMgb2YgdGhlIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBvdmVybGFwLgorICoKKyAqIHBhcmVu dDoJcGFydGl0aW9uZWQgdGFibGUKKyAqIHBhcnRzOglhcnJheSBvZiBTaW5nbGVQYXJ0aXRp b25TcGVjIHN0cnVjdHMgd2l0aCBpbmZvIGFib3V0IHNwbGl0IHBhcnRpdGlvbnMKKyAqIG5w YXJ0czoJc2l6ZSBvZiBhcnJheSAicGFydHMiCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19w YXJ0aXRpb25zX25vdF9vdmVybGFwX2xpc3QoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkg IFNpbmdsZVBhcnRpdGlvblNwZWMgKipwYXJ0cywKKwkJCQkJCQkJICBpbnQgbnBhcnRzLAor CQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5IFBH X1VTRURfRk9SX0FTU0VSVFNfT05MWSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVu dCk7CisJaW50CQkJb3ZlcmxhcF9sb2NhdGlvbiA9IC0xOworCWludAkJCWksCisJCQkJajsK KwlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMxLAorCQkJICAgKnNwczI7CisJTGlzdAkgICAq b3ZlcmxhcDsKKworCUFzc2VydChrZXktPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVH WV9MSVNUKTsKKworCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKKwl7CisJCXNwczEg PSBwYXJ0c1tpXTsKKworCQlmb3IgKGogPSBpICsgMTsgaiA8IG5wYXJ0czsgaisrKQorCQl7 CisJCQlzcHMyID0gcGFydHNbal07CisKKwkJCS8qCisJCQkgKiBDYWxjdWxhdGUgaW50ZXJz ZWN0aW9uIGJldHdlZW4gdmFsdWVzIG9mIHR3byBwYXJ0aXRpb25zLgorCQkJICovCisJCQlv dmVybGFwID0gbGlzdF9pbnRlcnNlY3Rpb24oc3BzMS0+Ym91bmQtPmxpc3RkYXR1bXMsCisJ CQkJCQkJCQkJc3BzMi0+Ym91bmQtPmxpc3RkYXR1bXMpOworCQkJaWYgKGxpc3RfbGVuZ3Ro KG92ZXJsYXApID4gMCkKKwkJCXsKKwkJCQlDb25zdAkgICAqdmFsID0gKENvbnN0ICopIGxm aXJzdChsaXN0X2hlYWQob3ZlcmxhcCkpOworCisJCQkJb3ZlcmxhcF9sb2NhdGlvbiA9IHZh bC0+bG9jYXRpb247CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09E RV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCWVycm1zZygibmV3IHBhcnRp dGlvbiBcIiVzXCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgbmV3IHBhcnRpdGlvbiBc IiVzXCIiLAorCQkJCQkJCSAgIHNwczEtPm5hbWUtPnJlbG5hbWUsIHNwczItPm5hbWUtPnJl bG5hbWUpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2Nh dGlvbikpOworCQkJfQorCQl9CisJfQorfQorCisvKgorICogY2hlY2tfcGFydGl0aW9uX2Jv dW5kc19mb3Jfc3BsaXRfcmFuZ2UKKyAqCisgKiAoZnVuY3Rpb24gZm9yIEJZIFJBTkdFIHBh cnRpdGlvbmluZykKKyAqCisgKiBDaGVja3MgdGhhdCBib3VuZHMgb2YgbmV3IHBhcnRpdGlv biAic3BlYyIgYXJlIGluc2lkZSBib3VuZHMgb2Ygc3BsaXQKKyAqIHBhcnRpdGlvbiAod2l0 aCBPaWQgc3BsaXRQYXJ0T2lkKS4gSWYgZmlyc3Q9dHJ1ZSAodGhpcyBtZWFucyB0aGF0ICJz cGVjIiBpcworICogdGhlIGZpcnN0IG9mIG5ldyBwYXJ0aXRpb25zKSB0aGVuIGxvd2VyIGJv dW5kIG9mICJzcGVjIiBzaG91bGQgYmUgZXF1YWwgKG9yCisgKiBncmVhdGVyIHRoYW4gb3Ig ZXF1YWwgaW4gY2FzZSBkZWZhdWx0UGFydD10cnVlKSB0byBsb3dlciBib3VuZCBvZiBzcGxp dAorICogcGFydGl0aW9uLiBJZiBsYXN0PXRydWUgKHRoaXMgbWVhbnMgdGhhdCAic3BlYyIg aXMgdGhlIGxhc3Qgb2YgbmV3CisgKiBwYXJ0aXRpb25zKSB0aGVuIHVwcGVyIGJvdW5kIG9m ICJzcGVjIiBzaG91bGQgYmUgZXF1YWwgKG9yIGxlc3MgdGhhbiBvcgorICogZXF1YWwgaW4g Y2FzZSBkZWZhdWx0UGFydD10cnVlKSB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRp b24uCisgKgorICogcGFyZW50OgkJCXBhcnRpdGlvbmVkIHRhYmxlCisgKiByZWxuYW1lOgkJ CW5hbWUgb2YgdGhlIG5ldyBwYXJ0aXRpb24KKyAqIHNwZWM6CQkJYm91bmRzIHNwZWNpZmlj YXRpb24gb2YgdGhlIG5ldyBwYXJ0aXRpb24KKyAqIHNwbGl0UGFydE9pZDoJc3BsaXQgcGFy dGl0aW9uIE9pZAorICogZmlyc3Q6CQkJdHJ1ZSBpbiBjYXNlIG5ldyBwYXJ0aXRpb24gInNw ZWMiIGlzIGZpcnN0IG9mIG5ldyBwYXJ0aXRpb25zCisgKiBsYXN0OgkJCXRydWUgaW4gY2Fz ZSBuZXcgcGFydGl0aW9uICJzcGVjIiBpcyBsYXN0IG9mIG5ldyBwYXJ0aXRpb25zCisgKiBk ZWZhdWx0UGFydDoJCXRydWUgaW4gY2FzZSBwYXJ0aXRpb25lZCB0YWJsZSBoYXMgREVGQVVM VCBwYXJ0aXRpb24KKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0 IGZvciBkZXRlcm1pbmUgZXJyb3IgcG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQKK2NoZWNr X3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X3JhbmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJ CQkJCQkJCSAgIGNoYXIgKnJlbG5hbWUsCisJCQkJCQkJCQkgICBQYXJ0aXRpb25Cb3VuZFNw ZWMgKnNwZWMsCisJCQkJCQkJCQkgICBPaWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJICAg Ym9vbCBmaXJzdCwKKwkJCQkJCQkJCSAgIGJvb2wgbGFzdCwKKwkJCQkJCQkJCSAgIGJvb2wg ZGVmYXVsdFBhcnQsCisJCQkJCQkJCQkgICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFy dGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFy dGl0aW9uUmFuZ2VCb3VuZCAqbG93ZXIsCisJCQkgICAqdXBwZXI7CisJaW50CQkJY21wdmFs OworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdF KTsKKwlBc3NlcnQoc3BlYy0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdF KTsKKworCWxvd2VyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0xLCBzcGVj LT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisJdXBwZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJv dW5kKGtleSwgLTEsIHNwZWMtPnVwcGVyZGF0dW1zLCBmYWxzZSk7CisKKwkvKgorCSAqIEZp cnN0IGNoZWNrIGlmIHRoZSByZXN1bHRpbmcgcmFuZ2Ugd291bGQgYmUgZW1wdHkgd2l0aCBz cGVjaWZpZWQgbG93ZXIKKwkgKiBhbmQgdXBwZXIgYm91bmRzLiAgcGFydGl0aW9uX3Jib3Vu ZF9jbXAgY2Fubm90IHJldHVybiB6ZXJvIGhlcmUsIHNpbmNlCisJICogdGhlIGxvd2VyLWJv dW5kIGZsYWdzIGFyZSBkaWZmZXJlbnQuCisJICovCisJY21wdmFsID0gcGFydGl0aW9uX3Ji b3VuZF9jbXAoa2V5LT5wYXJ0bmF0dHMsCisJCQkJCQkJCSAga2V5LT5wYXJ0c3VwZnVuYywK KwkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCSAgbG93ZXItPmRhdHVt cywgbG93ZXItPmtpbmQsCisJCQkJCQkJCSAgdHJ1ZSwgdXBwZXIpOworCUFzc2VydChjbXB2 YWwgIT0gMCk7CisJaWYgKGNtcHZhbCA+IDApCisJeworCQkvKiBQb2ludCB0byBwcm9ibGVt YXRpYyBrZXkgaW4gdGhlIGxvd2VyIGRhdHVtcyBsaXN0LiAqLworCQlQYXJ0aXRpb25SYW5n ZURhdHVtICpkYXR1bSA9IGxpc3RfbnRoKHNwZWMtPmxvd2VyZGF0dW1zLCBjbXB2YWwgLSAx KTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09C SkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coImVtcHR5IHJhbmdlIGJvdW5kIHNwZWNp ZmllZCBmb3IgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCSAgIHJlbG5hbWUpLAorCQkJCWVy cmRldGFpbCgiU3BlY2lmaWVkIGxvd2VyIGJvdW5kICVzIGlzIGdyZWF0ZXIgdGhhbiBvciBl cXVhbCB0byB1cHBlciBib3VuZCAlcy4iLAorCQkJCQkJICBnZXRfcmFuZ2VfcGFydGJvdW5k X3N0cmluZyhzcGVjLT5sb3dlcmRhdHVtcyksCisJCQkJCQkgIGdldF9yYW5nZV9wYXJ0Ym91 bmRfc3RyaW5nKHNwZWMtPnVwcGVyZGF0dW1zKSksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSk7CisJfQorCisJLyogTmVlZCB0byBjaGVjayBm aXJzdCBhbmQgbGFzdCBwYXJ0aXRpb25zIChmcm9tIHNldCBvZiBuZXcgcGFydGl0aW9ucykg Ki8KKwlpZiAoZmlyc3QgfHwgbGFzdCkKKwl7CisJCVBhcnRpdGlvbkJvdW5kU3BlYyAqc3Bs aXRfc3BlYyA9IGdldF9wYXJ0aXRpb25fYm91bmRfc3BlYyhzcGxpdFBhcnRPaWQpOworCQlQ YXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bTsKKworCQlpZiAoZmlyc3QpCisJCXsKKwkJCVBh cnRpdGlvblJhbmdlQm91bmQgKnNwbGl0X2xvd2VyOworCisJCQlzcGxpdF9sb3dlciA9IG1h a2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc3BsaXRfc3BlYy0+bG93ZXJkYXR1 bXMsIHRydWUpOworCisJCQljbXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5kX2NtcChrZXktPnBh cnRuYXR0cywKKwkJCQkJCQkJCQkgIGtleS0+cGFydHN1cGZ1bmMsCisJCQkJCQkJCQkJICBr ZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCQkJICBsb3dlci0+ZGF0dW1zLCBsb3dlci0+ a2luZCwKKwkJCQkJCQkJCQkgIHRydWUsIHNwbGl0X2xvd2VyKTsKKworCQkJLyoKKwkJCSAq IExvd2VyIGJvdW5kIG9mICJzcGVjIiBzaG91bGQgYmUgZXF1YWwgKG9yIGdyZWF0ZXIgdGhh biBvciBlcXVhbAorCQkJICogaW4gY2FzZSBkZWZhdWx0UGFydD10cnVlKSB0byBsb3dlciBi b3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24uCisJCQkgKi8KKwkJCWlmICghZGVmYXVsdFBhcnQp CisJCQl7CisJCQkJaWYgKGNtcHZhbCAhPSAwKQorCQkJCXsKKwkJCQkJZGF0dW0gPSBsaXN0 X250aChzcGVjLT5sb3dlcmRhdHVtcywgYWJzKGNtcHZhbCkgLSAxKTsKKwkJCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5J VElPTiksCisJCQkJCQkJZXJybXNnKCJsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wi IGlzIG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24iLAorCQkJ CQkJCQkgICByZWxuYW1lKSwKKwkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBk YXR1bS0+bG9jYXRpb24pKTsKKwkJCQl9CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJaWYg KGNtcHZhbCA8IDApCisJCQkJeworCQkJCQlkYXR1bSA9IGxpc3RfbnRoKHNwZWMtPmxvd2Vy ZGF0dW1zLCBhYnMoY21wdmFsKSAtIDEpOworCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJ CWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQll cnJtc2coImxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbGVzcyB0aGFuIGxv d2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCSAgIHJlbG5hbWUpLAor CQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpOwor CQkJCX0KKwkJCX0KKwkJfQorCQllbHNlCisJCXsKKwkJCVBhcnRpdGlvblJhbmdlQm91bmQg KnNwbGl0X3VwcGVyOworCisJCQlzcGxpdF91cHBlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9y Ym91bmQoa2V5LCAtMSwgc3BsaXRfc3BlYy0+dXBwZXJkYXR1bXMsIGZhbHNlKTsKKworCQkJ Y21wdmFsID0gcGFydGl0aW9uX3Jib3VuZF9jbXAoa2V5LT5wYXJ0bmF0dHMsCisJCQkJCQkJ CQkJICBrZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9u LAorCQkJCQkJCQkJCSAgdXBwZXItPmRhdHVtcywgdXBwZXItPmtpbmQsCisJCQkJCQkJCQkJ ICBmYWxzZSwgc3BsaXRfdXBwZXIpOworCisJCQkvKgorCQkJICogVXBwZXIgYm91bmQgb2Yg InNwZWMiIHNob3VsZCBiZSBlcXVhbCAob3IgbGVzcyB0aGFuIG9yIGVxdWFsIGluCisJCQkg KiBjYXNlIGRlZmF1bHRQYXJ0PXRydWUpIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRp dGlvbi4KKwkJCSAqLworCQkJaWYgKCFkZWZhdWx0UGFydCkKKwkJCXsKKwkJCQlpZiAoY21w dmFsICE9IDApCisJCQkJeworCQkJCQlkYXR1bSA9IGxpc3RfbnRoKHNwZWMtPnVwcGVyZGF0 dW1zLCBhYnMoY21wdmFsKSAtIDEpOworCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCWVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJt c2coInVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90IGVxdWFsIHRvIHVw cGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCSAgIHJlbG5hbWUpLAor CQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpOwor CQkJCX0KKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlpZiAoY21wdmFsID4gMCkKKwkJCQl7 CisJCQkJCWRhdHVtID0gbGlzdF9udGgoc3BlYy0+dXBwZXJkYXR1bXMsIGFicyhjbXB2YWwp IC0gMSk7CisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX0lO VkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCWVycm1zZygidXBwZXIgYm91bmQg b2YgcGFydGl0aW9uIFwiJXNcIiBpcyBncmVhdGVyIHRoYW4gdXBwZXIgYm91bmQgb2Ygc3Bs aXQgcGFydGl0aW9uIiwKKwkJCQkJCQkJICAgcmVsbmFtZSksCisJCQkJCQkJcGFyc2VyX2Vy cnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSk7CisJCQkJfQorCQkJfQorCQl9 CisJfQorfQorCisvKgorICogY2hlY2tfcGFydGl0aW9uX2JvdW5kc19mb3Jfc3BsaXRfbGlz dAorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcpCisgKgorICog Q2hlY2tzIHRoYXQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb24gYXJlIGluc2lkZSBib3VuZHMg b2Ygc3BsaXQgcGFydGl0aW9uCisgKiAod2l0aCBPaWQgc3BsaXRQYXJ0T2lkKS4KKyAqCisg KiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAqIHJlbG5hbWU6CQkJbmFtZSBvZiB0 aGUgbmV3IHBhcnRpdGlvbgorICogc3BlYzoJCQlib3VuZHMgc3BlY2lmaWNhdGlvbiBvZiB0 aGUgbmV3IHBhcnRpdGlvbgorICogc3BsaXRQYXJ0T2lkOglzcGxpdCBwYXJ0aXRpb24gT2lk CisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJt aW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19wYXJ0aXRpb25f Ym91bmRzX2Zvcl9zcGxpdF9saXN0KFJlbGF0aW9uIHBhcmVudCwgY2hhciAqcmVsbmFtZSwK KwkJCQkJCQkJCSAgUGFydGl0aW9uQm91bmRTcGVjICpzcGVjLAorCQkJCQkJCQkJICBPaWQg c3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFy dGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFy dGl0aW9uRGVzYyBwYXJ0ZGVzYyA9IFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQs IGZhbHNlKTsKKwlQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvID0gcGFydGRlc2MtPmJv dW5kaW5mbzsKKwlpbnQJCQl3aXRoID0gLTE7CisJYm9vbAkJb3ZlcmxhcCA9IGZhbHNlOwor CWludAkJCW92ZXJsYXBfbG9jYXRpb24gPSAtMTsKKworCUFzc2VydChrZXktPnN0cmF0ZWd5 ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKTsKKwlBc3NlcnQoc3BlYy0+c3RyYXRlZ3kg PT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpOworCUFzc2VydChib3VuZGluZm8gJiYgYm91 bmRpbmZvLT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisKKwkvKgor CSAqIFNlYXJjaCBlYWNoIHZhbHVlIG9mIG5ldyBwYXJ0aXRpb24gInNwZWMiIGluIGV4aXN0 aW5nIHBhcnRpdGlvbnMuIEFsbAorCSAqIG9mIHRoZW0gc2hvdWxkIGJlIGluIHNwbGl0IHBh cnRpdGlvbiAod2l0aCBPaWQgc3BsaXRQYXJ0T2lkKS4KKwkgKi8KKwlmb3JlYWNoX25vZGUo Q29uc3QsIHZhbCwgc3BlYy0+bGlzdGRhdHVtcykKKwl7CisJCW92ZXJsYXBfbG9jYXRpb24g PSB2YWwtPmxvY2F0aW9uOworCQlpZiAoIXZhbC0+Y29uc3Rpc251bGwpCisJCXsKKwkJCWlu dAkJCW9mZnNldDsKKwkJCWJvb2wJCWVxdWFsOworCisJCQlvZmZzZXQgPSBwYXJ0aXRpb25f bGlzdF9ic2VhcmNoKCZrZXktPnBhcnRzdXBmdW5jWzBdLAorCQkJCQkJCQkJCQlrZXktPnBh cnRjb2xsYXRpb24sCisJCQkJCQkJCQkJCWJvdW5kaW5mbywKKwkJCQkJCQkJCQkJdmFsLT5j b25zdHZhbHVlLAorCQkJCQkJCQkJCQkmZXF1YWwpOworCQkJaWYgKG9mZnNldCA+PSAwICYm IGVxdWFsKQorCQkJeworCQkJCXdpdGggPSBib3VuZGluZm8tPmluZGV4ZXNbb2Zmc2V0XTsK KwkJCQlpZiAocGFydGRlc2MtPm9pZHNbd2l0aF0gIT0gc3BsaXRQYXJ0T2lkKQorCQkJCXsK KwkJCQkJb3ZlcmxhcCA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCWVs c2UKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURf T0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJZXJybXNnKCJuZXcgcGFydGl0aW9uIFwiJXNc IiBjYW5ub3QgaGF2ZSB0aGlzIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMg bm90IGhhdmUiLAorCQkJCQkJCSAgIHJlbG5hbWUpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0 aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2NhdGlvbikpOworCQl9CisJCWVsc2UgaWYgKHBhcnRp dGlvbl9ib3VuZF9hY2NlcHRzX251bGxzKGJvdW5kaW5mbykpCisJCXsKKwkJCXdpdGggPSBi b3VuZGluZm8tPm51bGxfaW5kZXg7CisJCQlpZiAocGFydGRlc2MtPm9pZHNbd2l0aF0gIT0g c3BsaXRQYXJ0T2lkKQorCQkJeworCQkJCW92ZXJsYXAgPSB0cnVlOworCQkJCWJyZWFrOwor CQkJfQorCQl9CisJCWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJS Q09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJZXJybXNnKCJuZXcgcGFy dGl0aW9uIFwiJXNcIiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFy dGl0aW9uIGRvZXMgbm90IGhhdmUiLAorCQkJCQkJICAgcmVsbmFtZSksCisJCQkJCXBhcnNl cl9lcnJwb3NpdGlvbihwc3RhdGUsIG92ZXJsYXBfbG9jYXRpb24pKTsKKwl9CisKKwlpZiAo b3ZlcmxhcCkKKwl7CisJCUFzc2VydCh3aXRoID49IDApOworCQllcmVwb3J0KEVSUk9SLAor CQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQll cnJtc2coIm5ldyBwYXJ0aXRpb24gXCIlc1wiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVy IChub3Qgc3BsaXQpIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkgICByZWxuYW1lLCBnZXRf cmVsX25hbWUocGFydGRlc2MtPm9pZHNbd2l0aF0pKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRp b24ocHN0YXRlLCBvdmVybGFwX2xvY2F0aW9uKSk7CisJfQorfQorCisvKgorICogZmluZF92 YWx1ZV9pbl9uZXdfcGFydGl0aW9uc19saXN0CisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBM SVNUIHBhcnRpdGlvbmluZykKKyAqCisgKiBGdW5jdGlvbiByZXR1cm5zIHRydWUgaW4gY2Fz ZSBhbnkgb2YgbmV3IHBhcnRpdGlvbnMgY29udGFpbnMgdmFsdWUgInZhbHVlIi4KKyAqCisg KiBwYXJ0c3VwZnVuYzoJCWluZm9ybWF0aW9uIGFib3V0IGNvbXBhcmlzb24gZnVuY3Rpb24g YXNzb2NpYXRlZCB3aXRoIHRoZSBwYXJ0aXRpb24ga2V5CisgKiBwYXJ0Y29sbGF0aW9uOglw YXJ0aXRpb25pbmcgY29sbGF0aW9uCisgKiBwYXJ0czoJCQlwb2ludGVyIHRvIGFycmF5IHdp dGggbmV3IHBhcnRpdGlvbnMgZGVzY3JpcHRpb25zCisgKiBucGFydHM6CQkJbnVtYmVyIG9m IG5ldyBwYXJ0aXRpb25zCisgKiB2YWx1ZToJCQl0aGUgdmFsdWUgdGhhdCB3ZSBhcmUgbG9v a2luZyBmb3IKKyAqIGlzbnVsbDoJCQl0cnVlIGlmIHRoZSB2YWx1ZSB0aGF0IHdlIGFyZSBs b29raW5nIGZvciBpcyBOVUxMCisgKi8KK3N0YXRpYyBib29sCitmaW5kX3ZhbHVlX2luX25l d19wYXJ0aXRpb25zX2xpc3QoRm1nckluZm8gKnBhcnRzdXBmdW5jLAorCQkJCQkJCQkgIE9p ZCAqcGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJICBTaW5nbGVQYXJ0aXRpb25TcGVjICoqcGFy dHMsCisJCQkJCQkJCSAgaW50IG5wYXJ0cywKKwkJCQkJCQkJICBEYXR1bSB2YWx1ZSwKKwkJ CQkJCQkJICBib29sIGlzbnVsbCkKK3sKKwlmb3IgKGludCBpID0gMDsgaSA8IG5wYXJ0czsg aSsrKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gcGFydHNbaV07CisKKwkJ Zm9yZWFjaF9ub2RlKENvbnN0LCB2YWwsIHNwcy0+Ym91bmQtPmxpc3RkYXR1bXMpCisJCXsK KwkJCWlmIChpc251bGwgJiYgdmFsLT5jb25zdGlzbnVsbCkKKwkJCQlyZXR1cm4gdHJ1ZTsK KworCQkJaWYgKCFpc251bGwgJiYgIXZhbC0+Y29uc3Rpc251bGwpCisJCQl7CisJCQkJaWYg KERhdHVtR2V0SW50MzIoRnVuY3Rpb25DYWxsMkNvbGwoJnBhcnRzdXBmdW5jWzBdLAorCQkJ CQkJCQkJCQkJCXBhcnRjb2xsYXRpb25bMF0sCisJCQkJCQkJCQkJCQkJdmFsLT5jb25zdHZh bHVlLAorCQkJCQkJCQkJCQkJCXZhbHVlKSkgPT0gMCkKKwkJCQkJcmV0dXJuIHRydWU7CisJ CQl9CisJCX0KKwl9CisJcmV0dXJuIGZhbHNlOworfQorCisvKgorICogY2hlY2tfcGFyZW50 X3ZhbHVlc19pbl9uZXdfcGFydGl0aW9ucworICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgTElT VCBwYXJ0aXRpb25pbmcpCisgKgorICogQ2hlY2tzIHRoYXQgYWxsIHZhbHVlcyBvZiBzcGxp dCBwYXJ0aXRpb24gKHdpdGggT2lkIHBhcnRPaWQpIGNvbnRhaW5zIGluIG5ldworICogcGFy dGl0aW9ucy4KKyAqCisgKiBwYXJlbnQ6CXBhcnRpdGlvbmVkIHRhYmxlCisgKiBwYXJ0T2lk OglzcGxpdCBwYXJ0aXRpb24gT2lkCisgKiBwYXJ0czoJcG9pbnRlciB0byBhcnJheSB3aXRo IG5ldyBwYXJ0aXRpb25zIGRlc2NyaXB0aW9ucworICogbnBhcnRzOgludW1iZXIgb2YgbmV3 IHBhcnRpdGlvbnMKKyAqIHBzdGF0ZToJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBm b3IgZGV0ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19w YXJlbnRfdmFsdWVzX2luX25ld19wYXJ0aXRpb25zKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJ CQkJCSAgT2lkIHBhcnRPaWQsCisJCQkJCQkJCQkgIFNpbmdsZVBhcnRpdGlvblNwZWMgKipw YXJ0cywKKwkJCQkJCQkJCSAgaW50IG5wYXJ0cywKKwkJCQkJCQkJCSAgUGFyc2VTdGF0ZSAq cHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktl eShwYXJlbnQpOworCVBhcnRpdGlvbkRlc2MgcGFydGRlc2MgPSBSZWxhdGlvbkdldFBhcnRp dGlvbkRlc2MocGFyZW50LCBmYWxzZSk7CisJUGFydGl0aW9uQm91bmRJbmZvIGJvdW5kaW5m byA9IHBhcnRkZXNjLT5ib3VuZGluZm87CisJaW50CQkJaTsKKwlib29sCQlmb3VuZCA9IHRy dWU7CisJYm9vbAkJc2VhcmNoTnVsbCA9IGZhbHNlOworCURhdHVtCQlkYXR1bSA9IFBvaW50 ZXJHZXREYXR1bShOVUxMKTsKKworCUFzc2VydChrZXktPnN0cmF0ZWd5ID09IFBBUlRJVElP Tl9TVFJBVEVHWV9MSVNUKTsKKworCS8qCisJICogU3BlY2lhbCBwcm9jZXNzaW5nIGZvciBO VUxMIHZhbHVlLiBTZWFyY2ggTlVMTCB2YWx1ZSBpZiB0aGUgc3BsaXQKKwkgKiBwYXJ0aXRp b24gKHBhcnRPaWQpIGNvbnRhaW5zIGl0LgorCSAqLworCWlmIChwYXJ0aXRpb25fYm91bmRf YWNjZXB0c19udWxscyhib3VuZGluZm8pICYmCisJCXBhcnRkZXNjLT5vaWRzW2JvdW5kaW5m by0+bnVsbF9pbmRleF0gPT0gcGFydE9pZCkKKwl7CisJCWlmICghZmluZF92YWx1ZV9pbl9u ZXdfcGFydGl0aW9uc19saXN0KCZrZXktPnBhcnRzdXBmdW5jWzBdLAorCQkJCQkJCQkJCQkg ICBrZXktPnBhcnRjb2xsYXRpb24sIHBhcnRzLCBucGFydHMsIGRhdHVtLCB0cnVlKSkKKwkJ eworCQkJZm91bmQgPSBmYWxzZTsKKwkJCXNlYXJjaE51bGwgPSB0cnVlOworCQl9CisJfQor CisJLyoKKwkgKiBTZWFyY2ggYWxsIHZhbHVlcyBvZiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBw YXJ0T2lkIGluIFBhcnRpdGlvbkRlc2Mgb2YKKwkgKiBwYXJ0aXRpb25lZCB0YWJsZS4KKwkg Ki8KKwlmb3IgKGkgPSAwOyBpIDwgYm91bmRpbmZvLT5uZGF0dW1zOyBpKyspCisJeworCQlp ZiAocGFydGRlc2MtPm9pZHNbYm91bmRpbmZvLT5pbmRleGVzW2ldXSA9PSBwYXJ0T2lkKQor CQl7CisJCQkvKiBXZSBmb3VuZCB2YWx1ZSB0aGF0IHNwbGl0IHBhcnRpdGlvbiBjb250YWlu cy4gKi8KKwkJCWRhdHVtID0gYm91bmRpbmZvLT5kYXR1bXNbaV1bMF07CisJCQlpZiAoIWZp bmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlvbnNfbGlzdCgma2V5LT5wYXJ0c3VwZnVuY1swXSwK KwkJCQkJCQkJCQkJCSAgIGtleS0+cGFydGNvbGxhdGlvbiwgcGFydHMsIG5wYXJ0cywgZGF0 dW0sIGZhbHNlKSkKKwkJCXsKKwkJCQlmb3VuZCA9IGZhbHNlOworCQkJCWJyZWFrOworCQkJ fQorCQl9CisJfQorCisJaWYgKCFmb3VuZCkKKwl7CisJCUNvbnN0CSAgICpub3RGb3VuZFZh bDsKKworCQlpZiAoIXNlYXJjaE51bGwpCisKKwkJCS8qCisJCQkgKiBNYWtlIENvbnN0IGZv ciBnZXR0aW5nIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBub3QgZm91bmQKKwkJCSAqIHZh bHVlLgorCQkJICovCisJCQlub3RGb3VuZFZhbCA9IG1ha2VDb25zdChrZXktPnBhcnR0eXBp ZFswXSwKKwkJCQkJCQkJCWtleS0+cGFydHR5cG1vZFswXSwKKwkJCQkJCQkJCWtleS0+cGFy dHR5cGNvbGxbMF0sCisJCQkJCQkJCQlrZXktPnBhcnR0eXBsZW5bMF0sCisJCQkJCQkJCQlk YXR1bSwKKwkJCQkJCQkJCWZhbHNlLAkvKiBpc251bGwgKi8KKwkJCQkJCQkJCWtleS0+cGFy dHR5cGJ5dmFsWzBdKTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09E RV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coIm5ldyBwYXJ0aXRp b25zIGRvIG5vdCBoYXZlIHZhbHVlICVzIGJ1dCBzcGxpdCBwYXJ0aXRpb24gZG9lcyIsCisJ CQkJCSAgIHNlYXJjaE51bGwgPyAiTlVMTCIgOiBnZXRfbGlzdF9wYXJ0dmFsdWVfc3RyaW5n KG5vdEZvdW5kVmFsKSkpOworCX0KK30KKworLyoKKyAqIGNoZWNrX3BhcnRpdGlvbnNfZm9y X3NwbGl0CisgKgorICogQ2hlY2tzIG5ldyBwYXJ0aXRpb25zIGZvciBTUExJVCBQQVJUSVRJ T05TIGNvbW1hbmQ6CisgKiAxLiBERUZBVUxUIHBhcnRpdGlvbiBzaG91bGQgYmUgb25lLgor ICogMi4gTmV3IHBhcnRpdGlvbnMgc2hvdWxkIGhhdmUgZGlmZmVyZW50IG5hbWVzCisgKiAg ICAod2l0aCBleGlzdGluZyBwYXJ0aXRpb25zIHRvbykuCisgKiAzLiBCb3VuZHMgb2YgbmV3 IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwIHdpdGggbmV3IGFuZCBleGlzdGluZwor ICogICAgcGFydGl0aW9ucy4KKyAqIDQuIEluIGNhc2Ugc3BsaXQgcGFydGl0aW9uIGlzIERF RkFVTFQgcGFydGl0aW9uLCBvbmUgb2YgbmV3IHBhcnRpdGlvbnMKKyAqICAgIHNob3VsZCBi ZSBERUZBVUxULgorICogNS4gSW4gY2FzZSBuZXcgcGFydGl0aW9ucyBvciBleGlzdGluZyBw YXJ0aXRpb25zIGNvbnRhaW5zIERFRkFVTFQKKyAqICAgIHBhcnRpdGlvbiwgbmV3IHBhcnRp dGlvbnMgY2FuIGhhdmUgYW55IGJvdW5kcyBpbnNpZGUgc3BsaXQKKyAqICAgIHBhcnRpdGlv biBib3VuZCAoY2FuIGJlIHNwYWNlcyBiZXR3ZWVuIHBhcnRpdGlvbnMgYm91bmRzKS4KKyAq IDYuIEluIGNhc2UgcGFydGl0aW9uZWQgdGFibGUgZG9lcyBub3QgaGF2ZSBERUZBVUxUIHBh cnRpdGlvbiwgREVGQVVMVAorICogICAgcGFydGl0aW9uIGNhbiBiZSBkZWZpbmVkIGFzIG9u ZSBvZiBuZXcgcGFydGl0aW9uLgorICogNy4gSW4gY2FzZSBuZXcgcGFydGl0aW9ucyBub3Qg Y29udGFpbnMgREVGQVVMVCBwYXJ0aXRpb24gYW5kCisgKiAgICBwYXJ0aXRpb25lZCB0YWJs ZSBkb2VzIG5vdCBoYXZlIERFRkFVTFQgcGFydGl0aW9uIHRoZSBmb2xsb3dpbmcKKyAqICAg IHNob3VsZCBiZSB0cnVlOiBzdW0gYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBi ZSBlcXVhbAorICogICAgdG8gYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uLgorICoKKyAqIHBh cmVudDoJCQlwYXJ0aXRpb25lZCB0YWJsZQorICogc3BsaXRQYXJ0T2lkOglzcGxpdCBwYXJ0 aXRpb24gT2lkCisgKiBsaXN0OgkJCWxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMKKyAqIHBzdGF0 ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUgZXJyb3Ig cG9zaXRpb24KKyAqLwordm9pZAorY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQoUmVsYXRp b24gcGFyZW50LAorCQkJCQkJICAgT2lkIHNwbGl0UGFydE9pZCwKKwkJCQkJCSAgIExpc3Qg KnBhcnRsaXN0LAorCQkJCQkJICAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlv bktleSBrZXk7CisJY2hhcgkJc3RyYXRlZ3k7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisJ Ym9vbAkJaXNTcGxpdFBhcnREZWZhdWx0OworCWJvb2wJCWV4aXN0c0RlZmF1bHRQYXJ0Owor CWludAkJCWRlZmF1bHRfaW5kZXggPSAtMTsKKwlpbnQJCQlpLAorCQkJCWo7CisJU2luZ2xl UGFydGl0aW9uU3BlYyAqKm5ld19wYXJ0czsKKwlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHNQ cmV2ID0gTlVMTDsKKwlpbnQJCQlucGFydHMgPSAwOworCisJa2V5ID0gUmVsYXRpb25HZXRQ YXJ0aXRpb25LZXkocGFyZW50KTsKKwlzdHJhdGVneSA9IGdldF9wYXJ0aXRpb25fc3RyYXRl Z3koa2V5KTsKKworCXN3aXRjaCAoc3RyYXRlZ3kpCisJeworCQljYXNlIFBBUlRJVElPTl9T VFJBVEVHWV9MSVNUOgorCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRToKKwkJCXsK KwkJCQkvKgorCQkJCSAqIE1ha2UgYXJyYXkgbmV3X3BhcnRzIHdpdGggbmV3IHBhcnRpdGlv bnMgZXhjZXB0IERFRkFVTFQKKwkJCQkgKiBwYXJ0aXRpb24uCisJCQkJICovCisJCQkJbmV3 X3BhcnRzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKiopCisJCQkJCXBhbGxvYzAobGlzdF9s ZW5ndGgocGFydGxpc3QpICogc2l6ZW9mKFNpbmdsZVBhcnRpdGlvblNwZWMgKikpOworCQkJ CWkgPSAwOworCQkJCWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRpb25TcGVjLCBzcHMsIHBh cnRsaXN0KQorCQkJCXsKKwkJCQkJaWYgKHNwcy0+Ym91bmQtPmlzX2RlZmF1bHQpCisJCQkJ CXsKKwkJCQkJCWlmIChkZWZhdWx0X2luZGV4ID49IDApCisJCQkJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9O KSwKKwkJCQkJCQkJCWVycm1zZygiREVGQVVMVCBwYXJ0aXRpb24gc2hvdWxkIGJlIG9uZSIp LAorCQkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3BzLT5uYW1lLT5sb2Nh dGlvbikpOworCQkJCQkJZGVmYXVsdF9pbmRleCA9IGk7CisJCQkJCX0KKwkJCQkJZWxzZQor CQkJCQl7CisJCQkJCQluZXdfcGFydHNbbnBhcnRzKytdID0gc3BzOworCQkJCQl9CisJCQkJ CWkrKzsKKwkJCQl9CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIFBBUlRJVElPTl9TVFJB VEVHWV9IQVNIOgorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCWVycm1zZygicGFydGl0aW9uIG9mIGhhc2gt cGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIHNwbGl0IikpOworCQkJYnJlYWs7CisKKwkJ ZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIHBhcnRpdGlvbiBzdHJhdGVn eTogJWQiLAorCQkJCSAoaW50KSBrZXktPnN0cmF0ZWd5KTsKKwkJCWJyZWFrOworCX0KKwor CWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpCisJeworCQlQYXJ0 aXRpb25SYW5nZUJvdW5kICoqbG93ZXJfYm91bmRzOworCQlTaW5nbGVQYXJ0aXRpb25TcGVj ICoqdG1wX25ld19wYXJ0czsKKworCQkvKgorCQkgKiBGb3Igc2ltcGxpZnkgY2hlY2sgZm9y IHJhbmdlcyBvZiBuZXcgcGFydGl0aW9ucyBuZWVkIHRvIHNvcnQgYWxsCisJCSAqIHBhcnRp dGlvbnMgaW4gYXNjZW5kaW5nIG9yZGVyIG9mIHRoZW0gYm91bmRzICh3ZSBjb21wYXJlIHVw cGVyCisJCSAqIGJvdW5kIG9ubHkpLgorCQkgKi8KKwkJbG93ZXJfYm91bmRzID0gKFBhcnRp dGlvblJhbmdlQm91bmQgKiopCisJCQlwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihQYXJ0aXRp b25SYW5nZUJvdW5kICopKTsKKworCQkvKiBDcmVhdGUgYXJyYXkgb2YgbG93ZXIgYm91bmRz LiAqLworCQlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJCXsKKwkJCWxvd2VyX2Jv dW5kc1tpXSA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCBpLAorCQkJCQkJCQkJ CQkJCQluZXdfcGFydHNbaV0tPmJvdW5kLT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisJCX0KKwor CQkvKiBTb3J0IGFycmF5IG9mIGxvd2VyIGJvdW5kcy4gKi8KKwkJcXNvcnRfYXJnKGxvd2Vy X2JvdW5kcywgbnBhcnRzLCBzaXplb2YoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKSwKKwkJCQkg IHFzb3J0X3BhcnRpdGlvbl9yYm91bmRfY21wLCAodm9pZCAqKSBrZXkpOworCisJCS8qIFJl b3JkZXIgYXJyYXkgb2YgcGFydGl0aW9ucy4gKi8KKwkJdG1wX25ld19wYXJ0cyA9IG5ld19w YXJ0czsKKwkJbmV3X3BhcnRzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKiopCisJCQlwYWxs b2MwKG5wYXJ0cyAqIHNpemVvZihTaW5nbGVQYXJ0aXRpb25TcGVjICopKTsKKwkJZm9yIChp ID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCQkJbmV3X3BhcnRzW2ldID0gdG1wX25ld19wYXJ0 c1tsb3dlcl9ib3VuZHNbaV0tPmluZGV4XTsKKworCQlwZnJlZSh0bXBfbmV3X3BhcnRzKTsK KwkJcGZyZWUobG93ZXJfYm91bmRzKTsKKwl9CisKKwlkZWZhdWx0UGFydE9pZCA9CisJCWdl dF9kZWZhdWx0X29pZF9mcm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhw YXJlbnQsIHRydWUpKTsKKworCS8qIGlzU3BsaXRQYXJ0RGVmYXVsdCBmbGFnOiBpcyBzcGxp dCBwYXJ0aXRpb24gYSBERUZBVUxUIHBhcnRpdGlvbj8gKi8KKwlpc1NwbGl0UGFydERlZmF1 bHQgPSAoZGVmYXVsdFBhcnRPaWQgPT0gc3BsaXRQYXJ0T2lkKTsKKworCWlmIChpc1NwbGl0 UGFydERlZmF1bHQgJiYgZGVmYXVsdF9pbmRleCA8IDApCisJeworCQllcmVwb3J0KEVSUk9S LAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJ CQllcnJtc2coIm9uZSBwYXJ0aXRpb24gaW4gdGhlIGxpc3Qgc2hvdWxkIGJlIERFRkFVTFQg YmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVCIpLAorCQkJCXBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsICgoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsaW5pdGlhbChwYXJ0 bGlzdCkpLT5uYW1lLT5sb2NhdGlvbikpOworCX0KKwllbHNlIGlmICghaXNTcGxpdFBhcnRE ZWZhdWx0ICYmIChkZWZhdWx0X2luZGV4ID49IDApICYmIE9pZElzVmFsaWQoZGVmYXVsdFBh cnRPaWQpKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzRGVmID0KKwkJCShTaW5n bGVQYXJ0aXRpb25TcGVjICopIGxpc3RfbnRoKHBhcnRsaXN0LCBkZWZhdWx0X2luZGV4KTsK KworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVD VF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coIm5ldyBwYXJ0aXRpb24gY2Fubm90IGJlIERF RkFVTFQgYmVjYXVzZSBERUZBVUxUIHBhcnRpdGlvbiBhbHJlYWR5IGV4aXN0cyIpLAorCQkJ CXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHNwc0RlZi0+bmFtZS0+bG9jYXRpb24pKTsK Kwl9CisKKwkvKiBJbmRpY2F0b3IgdGhhdCBwYXJ0aXRpb25lZCB0YWJsZSBoYXMgKG9yIHdp bGwgaGF2ZSkgREVGQVVMVCBwYXJ0aXRpb24gKi8KKwlleGlzdHNEZWZhdWx0UGFydCA9IE9p ZElzVmFsaWQoZGVmYXVsdFBhcnRPaWQpIHx8IChkZWZhdWx0X2luZGV4ID49IDApOworCisJ Zm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3Bl YyAqc3BzID0gbmV3X3BhcnRzW2ldOworCisJCWlmIChpc1NwbGl0UGFydERlZmF1bHQpCisJ CXsKKwkJCS8qCisJCQkgKiBJbiBjYXNlIHNwbGl0IHBhcnRpdGlvbiBpcyBERUZBVUxUIHBh cnRpdGlvbiB3ZSBjYW4gdXNlIGFueQorCQkJICogZnJlZSByYW5nZXMgLSBhcyB3aGVuIGNy ZWF0aW5nIGEgbmV3IHBhcnRpdGlvbi4KKwkJCSAqLworCQkJY2hlY2tfbmV3X3BhcnRpdGlv bl9ib3VuZChzcHMtPm5hbWUtPnJlbG5hbWUsIHBhcmVudCwgc3BzLT5ib3VuZCwKKwkJCQkJ CQkJCSAgcHN0YXRlKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBDaGVja3Mg dGhhdCBib3VuZCBvZiBjdXJyZW50IHBhcnRpdGlvbiBpcyBpbnNpZGUgYm91bmQgb2Ygc3Bs aXQKKwkJCSAqIHBhcnRpdGlvbi4gRm9yIHJhbmdlIHBhcnRpdGlvbmluZzogY2hlY2tzIHRo YXQgdXBwZXIgYm91bmQgb2YKKwkJCSAqIHByZXZpb3VzIHBhcnRpdGlvbiBpcyBlcXVhbCB0 byBsb3dlciBib3VuZCBvZiBjdXJyZW50CisJCQkgKiBwYXJ0aXRpb24uIEZvciBsaXN0IHBh cnRpdGlvbmluZzogY2hlY2tzIHRoYXQgc3BsaXQgcGFydGl0aW9uCisJCQkgKiBjb250YWlu cyBhbGwgdmFsdWVzIG9mIGN1cnJlbnQgcGFydGl0aW9uLgorCQkJICovCisJCQlpZiAoc3Ry YXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFKQorCQkJeworCQkJCWJvb2wJCWZp cnN0ID0gKGkgPT0gMCk7CisJCQkJYm9vbAkJbGFzdCA9IChpID09IChucGFydHMgLSAxKSk7 CisKKwkJCQljaGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9yYW5nZShwYXJlbnQs IHNwcy0+bmFtZS0+cmVsbmFtZSwgc3BzLT5ib3VuZCwKKwkJCQkJCQkJCQkJCQkgICBzcGxp dFBhcnRPaWQsIGZpcnN0LCBsYXN0LAorCQkJCQkJCQkJCQkJCSAgIGV4aXN0c0RlZmF1bHRQ YXJ0LCBwc3RhdGUpOworCQkJfQorCQkJZWxzZQorCQkJCWNoZWNrX3BhcnRpdGlvbl9ib3Vu ZHNfZm9yX3NwbGl0X2xpc3QocGFyZW50LCBzcHMtPm5hbWUtPnJlbG5hbWUsCisJCQkJCQkJ CQkJCQkJICBzcHMtPmJvdW5kLCBzcGxpdFBhcnRPaWQsIHBzdGF0ZSk7CisJCX0KKworCQkv KiBSYW5nZXMgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwLiAqLworCQlp ZiAoc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFICYmIHNwc1ByZXYpCisJ CQljaGVja190d29fcGFydGl0aW9uc19ib3VuZHNfcmFuZ2UocGFyZW50LCBzcHNQcmV2LT5u YW1lLCBzcHNQcmV2LT5ib3VuZCwKKwkJCQkJCQkJCQkJICBzcHMtPm5hbWUsIHNwcy0+Ym91 bmQsIGV4aXN0c0RlZmF1bHRQYXJ0LCBwc3RhdGUpOworCisJCXNwc1ByZXYgPSBzcHM7CisK KwkJLyogQ2hlY2s6IG5ldyBwYXJ0aXRpb25zIHNob3VsZCBoYXZlIGRpZmZlcmVudCBuYW1l cy4gKi8KKwkJZm9yIChqID0gaSArIDE7IGogPCBucGFydHM7IGorKykKKwkJeworCQkJU2lu Z2xlUGFydGl0aW9uU3BlYyAqc3BzMiA9IG5ld19wYXJ0c1tqXTsKKworCQkJaWYgKGVxdWFs KHNwcy0+bmFtZSwgc3BzMi0+bmFtZSkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVy cmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQkJZXJybXNnKCJuYW1lIFwi JXNcIiBpcyBhbHJlYWR5IHVzZWQiLCBzcHMyLT5uYW1lLT5yZWxuYW1lKSwKKwkJCQkJCXBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHNwczItPm5hbWUtPmxvY2F0aW9uKSk7CisJCX0K Kwl9CisKKwlpZiAoc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpCisJewor CQkvKiBWYWx1ZXMgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwLiAqLwor CQljaGVja19wYXJ0aXRpb25zX25vdF9vdmVybGFwX2xpc3QocGFyZW50LCBuZXdfcGFydHMs IG5wYXJ0cywKKwkJCQkJCQkJCQkgIHBzdGF0ZSk7CisKKwkJLyoKKwkJICogTmVlZCB0byBj aGVjayB0aGF0IGFsbCB2YWx1ZXMgb2Ygc3BsaXQgcGFydGl0aW9uIGNvbnRhaW5zIGluIG5l dworCQkgKiBwYXJ0aXRpb25zLiBTa2lwIHRoaXMgY2hlY2sgaWYgREVGQVVMVCBwYXJ0aXRp b24gZXhpc3RzLgorCQkgKi8KKwkJaWYgKCFleGlzdHNEZWZhdWx0UGFydCkKKwkJCWNoZWNr X3BhcmVudF92YWx1ZXNfaW5fbmV3X3BhcnRpdGlvbnMocGFyZW50LCBzcGxpdFBhcnRPaWQs CisJCQkJCQkJCQkJCQkgIG5ld19wYXJ0cywgbnBhcnRzLCBwc3RhdGUpOworCX0KKworCXBm cmVlKG5ld19wYXJ0cyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv cnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXgg M2Q2ZTZiZGJmZC4uM2UxNjg5YjExOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMu YwpAQCAtMTM3MDcsMyArMTM3MDcsMjEgQEAgZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJpbmco TGlzdCAqYm91bmRfZGF0dW1zKQogCiAJcmV0dXJuIGJ1Zi0+ZGF0YTsKIH0KKworLyoKKyAq IGdldF9saXN0X3BhcnR2YWx1ZV9zdHJpbmcKKyAqCQlBIEMgc3RyaW5nIHJlcHJlc2VudGF0 aW9uIG9mIG9uZSBsaXN0IHBhcnRpdGlvbiB2YWx1ZQorICovCitjaGFyICoKK2dldF9saXN0 X3BhcnR2YWx1ZV9zdHJpbmcoQ29uc3QgKnZhbCkKK3sKKwlkZXBhcnNlX2NvbnRleHQgY29u dGV4dDsKKwlTdHJpbmdJbmZvCWJ1ZiA9IG1ha2VTdHJpbmdJbmZvKCk7CisKKwltZW1zZXQo JmNvbnRleHQsIDAsIHNpemVvZihkZXBhcnNlX2NvbnRleHQpKTsKKwljb250ZXh0LmJ1ZiA9 IGJ1ZjsKKworCWdldF9jb25zdF9leHByKHZhbCwgJmNvbnRleHQsIC0xKTsKKworCXJldHVy biBidWYtPmRhdGE7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggNjQyNDhiNWIx Zi4uYzBlOTE4OTUxYSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5p bi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMjcyMSw3ICsy NzIxLDcgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJCQkJCSAg Ik9XTkVSIFRPIiwgIlNFVCIsICJWQUxJREFURSBDT05TVFJBSU5UIiwKIAkJCQkJICAiUkVQ TElDQSBJREVOVElUWSIsICJBVFRBQ0ggUEFSVElUSU9OIiwKIAkJCQkJICAiREVUQUNIIFBB UlRJVElPTiIsICJGT1JDRSBST1cgTEVWRUwgU0VDVVJJVFkiLAotCQkJCQkgICJNRVJHRSBQ QVJUSVRJT05TICgiLAorCQkJCQkgICJTUExJVCBQQVJUSVRJT04iLCAiTUVSR0UgUEFSVElU SU9OUyAoIiwKIAkJCQkJICAiT0YiLCAiTk9UIE9GIik7CiAJLyogQUxURVIgVEFCTEUgeHh4 IEFERCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnks ICJBREQiKSkKQEAgLTI5NzcsMTAgKzI5NzcsMTAgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMo aW50IHBhdHRlcm5faWQsCiAJCUNPTVBMRVRFX1dJVEgoIkZST00gKCIsICJJTiAoIiwgIldJ VEggKCIpOwogCiAJLyoKLQkgKiBJZiB3ZSBoYXZlIEFMVEVSIFRBQkxFIDxmb28+IERFVEFD SCBQQVJUSVRJT04sIHByb3ZpZGUgYSBsaXN0IG9mCisJICogSWYgd2UgaGF2ZSBBTFRFUiBU QUJMRSA8Zm9vPiBERVRBQ0h8U1BMSVQgUEFSVElUSU9OLCBwcm92aWRlIGEgbGlzdCBvZgog CSAqIHBhcnRpdGlvbnMgb2YgPGZvbz4uCiAJICovCi0JZWxzZSBpZiAoTWF0Y2hlcygiQUxU RVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIkRFVEFDSCIsICJQQVJUSVRJT04iKSkKKwllbHNl IGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiREVUQUNIfFNQTElU IiwgIlBBUlRJVElPTiIpKQogCXsKIAkJc2V0X2NvbXBsZXRpb25fcmVmZXJlbmNlKHByZXYz X3dkKTsKIAkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX3BhcnRpdGlv bl9vZl90YWJsZSk7CkBAIC0yOTg4LDYgKzI5ODgsMTAgQEAgbWF0Y2hfcHJldmlvdXNfd29y ZHMoaW50IHBhdHRlcm5faWQsCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUi LCBNYXRjaEFueSwgIkRFVEFDSCIsICJQQVJUSVRJT04iLCBNYXRjaEFueSkpCiAJCUNPTVBM RVRFX1dJVEgoIkNPTkNVUlJFTlRMWSIsICJGSU5BTElaRSIpOwogCisJLyogQUxURVIgVEFC TEUgPG5hbWU+IFNQTElUIFBBUlRJVElPTiA8bmFtZT4gKi8KKwllbHNlIGlmIChNYXRjaGVz KCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiU1BMSVQiLCAiUEFSVElUSU9OIiwgTWF0 Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIKCJJTlRPICggUEFSVElUSU9OIik7CisKIAkvKiBB TFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyAoICovCiAJZWxzZSBpZiAoTWF0 Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIk1FUkdFIiwgIlBBUlRJVElPTlMi LCAiKCIpKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBiOGUyYTY3OWNkLi4w MWFhNGIyZTY0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC05NjMsMTUgKzk2Mywy NiBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25SYW5nZURhdHVtCiAJUGFyc2VMb2MJbG9j YXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBQYXJ0 aXRpb25SYW5nZURhdHVtOwogCisvKgorICogUGFydGl0aW9uRGVzYyAtIGluZm8gYWJvdXQg c2luZ2xlIHBhcnRpdGlvbiBmb3IgQUxURVIgVEFCTEUgU1BMSVQgUEFSVElUSU9OIGNvbW1h bmQKKyAqLwordHlwZWRlZiBzdHJ1Y3QgU2luZ2xlUGFydGl0aW9uU3BlYworeworCU5vZGVU YWcJCXR5cGU7CisKKwlSYW5nZVZhciAgICpuYW1lOwkJCS8qIG5hbWUgb2YgcGFydGl0aW9u ICovCisJUGFydGl0aW9uQm91bmRTcGVjICpib3VuZDsJLyogRk9SIFZBTFVFUywgaWYgYXR0 YWNoaW5nICovCit9IFNpbmdsZVBhcnRpdGlvblNwZWM7CisKIC8qCiAgKiBQYXJ0aXRpb25D bWQgLSBpbmZvIGZvciBBTFRFUiBUQUJMRS9JTkRFWCBBVFRBQ0gvREVUQUNIIFBBUlRJVElP TiBjb21tYW5kcwogICovCiB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25DbWQKIHsKIAlOb2Rl VGFnCQl0eXBlOwotCVJhbmdlVmFyICAgKm5hbWU7CQkJLyogbmFtZSBvZiBwYXJ0aXRpb24g dG8gYXR0YWNoL2RldGFjaC9tZXJnZSAqLworCVJhbmdlVmFyICAgKm5hbWU7CQkJLyogbmFt ZSBvZiBwYXJ0aXRpb24gdG8gYXR0YWNoL2RldGFjaC9tZXJnZS9zcGxpdCAqLwogCVBhcnRp dGlvbkJvdW5kU3BlYyAqYm91bmQ7CS8qIEZPUiBWQUxVRVMsIGlmIGF0dGFjaGluZyAqLwot CUxpc3QJICAgKnBhcnRsaXN0OwkJLyogbGlzdCBvZiBwYXJ0aXRpb25zLCBmb3IgTUVSR0UK KwlMaXN0CSAgICpwYXJ0bGlzdDsJCS8qIGxpc3Qgb2YgcGFydGl0aW9ucywgZm9yIE1FUkdF L1NQTElUCiAJCQkJCQkJCSAqIFBBUlRJVElPTiBjb21tYW5kICovCiAJYm9vbAkJY29uY3Vy cmVudDsKIH0gUGFydGl0aW9uQ21kOwpAQCAtMjQ3NSw2ICsyNDg2LDcgQEAgdHlwZWRlZiBl bnVtIEFsdGVyVGFibGVUeXBlCiAJQVRfQXR0YWNoUGFydGl0aW9uLAkJCS8qIEFUVEFDSCBQ QVJUSVRJT04gKi8KIAlBVF9EZXRhY2hQYXJ0aXRpb24sCQkJLyogREVUQUNIIFBBUlRJVElP TiAqLwogCUFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplLCAvKiBERVRBQ0ggUEFSVElUSU9O IEZJTkFMSVpFICovCisJQVRfU3BsaXRQYXJ0aXRpb24sCQkJLyogU1BMSVQgUEFSVElUSU9O ICovCiAJQVRfTWVyZ2VQYXJ0aXRpb25zLAkJCS8qIE1FUkdFIFBBUlRJVElPTlMgKi8KIAlB VF9BZGRJZGVudGl0eSwJCQkJLyogQUREIElERU5USVRZICovCiAJQVRfU2V0SWRlbnRpdHks CQkJCS8qIFNFVCBpZGVudGl0eSBjb2x1bW4gb3B0aW9ucyAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5o CmluZGV4IDkwZThjZGRmOGIuLjY2Yzg4NzY2NTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAg LTQyMSw2ICs0MjEsNyBAQCBQR19LRVlXT1JEKCJzbWFsbGludCIsIFNNQUxMSU5ULCBDT0xf TkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic25hcHNob3QiLCBTTkFQ U0hPVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic29t ZSIsIFNPTUUsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJz b3VyY2UiLCBTT1VSQ0UsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tF WVdPUkQoInNwbGl0IiwgU1BMSVQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoInNxbCIsIFNRTF9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJzdGFibGUiLCBTVEFCTEUsIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN0YW5kYWxvbmUiLCBTVEFOREFMT05FX1AsIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmggYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcv cGFydGJvdW5kcy5oCmluZGV4IDY5MGQyNTk2MTkuLjQ1YjFmYTFkZTggMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKKysrIGIvc3JjL2luY2x1 ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaApAQCAtMTQzLDYgKzE0MywxMCBAQCBleHRl cm4gaW50CXBhcnRpdGlvbl9yYW5nZV9kYXR1bV9ic2VhcmNoKEZtZ3JJbmZvICpwYXJ0c3Vw ZnVuYywKIGV4dGVybiBpbnQJcGFydGl0aW9uX2hhc2hfYnNlYXJjaChQYXJ0aXRpb25Cb3Vu ZEluZm8gYm91bmRpbmZvLAogCQkJCQkJCQkgICBpbnQgbW9kdWx1cywgaW50IHJlbWFpbmRl cik7CiAKK2V4dGVybiB2b2lkIGNoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KFJlbGF0aW9u IHBhcmVudCwKKwkJCQkJCQkJCSAgIE9pZCBzcGxpdFBhcnRPaWQsCisJCQkJCQkJCQkgICBM aXN0ICpwYXJ0bGlzdCwKKwkJCQkJCQkJCSAgIFBhcnNlU3RhdGUgKnBzdGF0ZSk7CiBleHRl cm4gdm9pZCBjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBw YXJlbnQsCiAJCQkJCQkJCQkJCQlMaXN0ICpwYXJ0TmFtZXMsCiAJCQkJCQkJCQkJCQlMaXN0 ICpwYXJ0T2lkcywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5o IGIvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgKaW5kZXggNWYyZWEyZTRkMC4uNjIw NDNkM2JmNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgKKysr IGIvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgKQEAgLTU0LDQgKzU0LDYgQEAgZXh0 ZXJuIGNoYXIgKmdldF9yYW5nZV9wYXJ0Ym91bmRfc3RyaW5nKExpc3QgKmJvdW5kX2RhdHVt cyk7CiAKIGV4dGVybiBjaGFyICpwZ19nZXRfc3RhdGlzdGljc29iamRlZl9zdHJpbmcoT2lk IHN0YXRleHRpZCk7CiAKK2V4dGVybiBjaGFyICpnZXRfbGlzdF9wYXJ0dmFsdWVfc3RyaW5n KENvbnN0ICp2YWwpOworCiAjZW5kaWYJCQkJCQkJLyogUlVMRVVUSUxTX0ggKi8KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQub3V0 IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1zcGxpdC5vdXQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNWQ5ZThiMDkyNQotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tc3Bs aXQub3V0CkBAIC0wLDAgKzEsMTkwIEBACitQYXJzZWQgdGVzdCBzcGVjIHdpdGggMiBzZXNz aW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFiIHMxc3BsdCBzMmIgczJpIHMxYyBz MmMgczJzCitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBh cnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04g dHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJU SVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVw IHMyYjogQkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAn dGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTog PC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAq IEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0 MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3Rh cnRpbmcgcGVybXV0YXRpb246IHMxYiBzMXNwbHQgczJicnIgczJpIHMxYyBzMmMgczJzCitz dGVwIHMxYjogQkVHSU47CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQg UEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBf MTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBh cnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYnJyOiBC RUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMmk6IElOU0VS VCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVw IHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENP TU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSst LS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8 dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWIgczFzcGx0 IHMyYnMgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxc3BsdDog QUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJ CSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1 KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkg VE8gKDIwKSk7CitzdGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFC TEU7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7 IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21w bGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBh cnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRl eHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVy bXV0YXRpb246IHMxYnJyIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYnJy OiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMXNwbHQ6 IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJ CQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgx NSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUp IFRPICgyMCkpOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRw YXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09N TUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0 ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1 fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1Ciso NSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJyciBzMXNwbHQgczJicnIg czJpIHMxYyBzMmMgczJzCitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQ RUFUQUJMRSBSRUFEOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBB UlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1 IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0 XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJycjogQkVH SU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczJpOiBJTlNFUlQg SU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBz MWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01N SVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0t LS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRl eHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFicnIgczFzcGx0 IHMyYnMgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJT04gTEVW RUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQ TElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0 XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9O IHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJz OiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VS VCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVw IHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENP TU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSst LS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8 dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJzIHMxc3Bs dCBzMmIgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYnM6IEJFR0lOIElTT0xBVElPTiBMRVZF TCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQg UEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBf MTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBh cnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYjogQkVH SU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7 IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21w bGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBh cnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRl eHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVy bXV0YXRpb246IHMxYnMgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJz OiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMXNwbHQ6IEFM VEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkg ICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSks CisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRP ICgyMCkpOworc3RlcCBzMmJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUg UkVBRDsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEn KTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNv bXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0 cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8 dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBw ZXJtdXRhdGlvbjogczFicyBzMXNwbHQgczJicyBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFi czogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFzcGx0OiBB TFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJ ICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUp LAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBU TyAoMjApKTsKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJM RTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsg PHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBs ZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFy dDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4 dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZSBiL3NyYy90ZXN0L2lzb2xhdGlv bi9pc29sYXRpb25fc2NoZWR1bGUKaW5kZXggMGRjYTY4NDk1NS4uNDA0YTdmZDgzMiAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQorKysgYi9z cmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCkBAIC0xMDgsNiArMTA4LDcg QEAgdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtMgogdGVzdDogcGFydGl0aW9uLWtleS11 cGRhdGUtMwogdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtNAogdGVzdDogcGFydGl0aW9u LW1lcmdlCit0ZXN0OiBwYXJ0aXRpb24tc3BsaXQKIHRlc3Q6IHBscGdzcWwtdG9hc3QKIHRl c3Q6IGNsdXN0ZXItY29uZmxpY3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QtcGFydGl0aW9u CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLXNwbGl0 LnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLXNwbGl0LnNwZWMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDg3MjM5YTRhMQotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tc3Bs aXQuc3BlYwpAQCAtMCwwICsxLDU0IEBACisjIFZlcmlmeSB0aGF0IFNQTElUIG9wZXJhdGlv biBsb2NrcyBETUwgb3BlcmF0aW9ucyB3aXRoIHBhcnRpdGlvbmVkIHRhYmxlCisKK3NldHVw Cit7CisgIERST1AgVEFCTEUgSUYgRVhJU1RTIHRwYXJ0OworICBDUkVBVEUgVEFCTEUgdHBh cnQoaSBpbnQsIHQgdGV4dCkgcGFydGl0aW9uIGJ5IHJhbmdlKGkpOworICBDUkVBVEUgVEFC TEUgdHBhcnRfMDBfMTAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMCkg VE8gKDEwKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzEwXzIwIFBBUlRJVElPTiBPRiB0cGFy dCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworICBDUkVBVEUgVEFCTEUgdHBhcnRf MjBfMzAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCk7 CisgIENSRUFURSBUQUJMRSB0cGFydF9kZWZhdWx0IFBBUlRJVElPTiBPRiB0cGFydCBERUZB VUxUOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDUsICd0ZXh0MDUnKTsKKyAgSU5T RVJUIElOVE8gdHBhcnQgVkFMVUVTICgxNSwgJ3RleHQxNScpOworICBJTlNFUlQgSU5UTyB0 cGFydCBWQUxVRVMgKDI1LCAndGV4dDI1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVF UyAoMzUsICd0ZXh0MzUnKTsKK30KKwordGVhcmRvd24KK3sKKyAgRFJPUCBUQUJMRSB0cGFy dDsKK30KKworc2Vzc2lvbiBzMQorc3RlcCBzMWIJeyBCRUdJTjsgfQorc3RlcCBzMWJycgl7 IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7IH0KK3N0ZXAgczFicwl7 IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7IH0KK3N0ZXAgczFzcGx0CXsg QUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJ CSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1 KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkg VE8gKDIwKSk7IH0KK3N0ZXAgczFjCXsgQ09NTUlUOyB9CisKKworc2Vzc2lvbiBzMgorc3Rl cCBzMmIJeyBCRUdJTjsgfQorc3RlcCBzMmJycgl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBS RVBFQVRBQkxFIFJFQUQ7IH0KK3N0ZXAgczJicwl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBT RVJJQUxJWkFCTEU7IH0KK3N0ZXAgczJpCXsgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgx LCAndGV4dDAxJyk7IH0KK3N0ZXAgczJjCXsgQ09NTUlUOyB9CitzdGVwIHMycwl7IFNFTEVD VCAqIEZST00gdHBhcnQ7IH0KKworCisjIHMxIHN0YXJ0cyBTUExJVCBQQVJUSVRJT04gdGhl biBzMiB0cnlpbmcgdG8gaW5zZXJ0IHJvdyBhbmQKKyMgd2FpdHMgdW50aWwgczEgZmluaXNo ZWQgU1BMSVQgb3BlcmF0aW9uLgorCitwZXJtdXRhdGlvbiBzMWIgczFzcGx0IHMyYiBzMmkg czFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMxYiBzMXNwbHQgczJicnIgczJpIHMxYyBzMmMg czJzCitwZXJtdXRhdGlvbiBzMWIgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMgczJzCisKK3Bl cm11dGF0aW9uIHMxYnJyIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlv biBzMWJyciBzMXNwbHQgczJicnIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMWJy ciBzMXNwbHQgczJicyBzMmkgczFjIHMyYyBzMnMKKworcGVybXV0YXRpb24gczFicyBzMXNw bHQgczJiIHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFicyBzMXNwbHQgczJicnIg czJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMWJzIHMxc3BsdCBzMmJzIHMyaSBzMWMg czJjIHMycwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNl L3Rlc3RfZGRsX2RlcGFyc2UuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJz ZS90ZXN0X2RkbF9kZXBhcnNlLmMKaW5kZXggN2RlNWRkYjg3OC4uMTdkNzJlNDEyZiAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2Rl cGFyc2UuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9k ZGxfZGVwYXJzZS5jCkBAIC0yOTYsNiArMjk2LDkgQEAgZ2V0X2FsdGVydGFibGVfc3ViY21k aW5mbyhQR19GVU5DVElPTl9BUkdTKQogCQkJY2FzZSBBVF9EZXRhY2hQYXJ0aXRpb25GaW5h bGl6ZToKIAkJCQlzdHJ0eXBlID0gIkRFVEFDSCBQQVJUSVRJT04gLi4uIEZJTkFMSVpFIjsK IAkJCQlicmVhazsKKwkJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQkJc3RydHlwZSA9 ICJTUExJVCBQQVJUSVRJT04iOworCQkJCWJyZWFrOwogCQkJY2FzZSBBVF9NZXJnZVBhcnRp dGlvbnM6CiAJCQkJc3RydHlwZSA9ICJNRVJHRSBQQVJUSVRJT05TIjsKIAkJCQlicmVhazsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0 Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5kNDUxOWZiZGJlCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3Bs aXQub3V0CkBAIC0wLDAgKzEsMTkxMSBAQAorLS0KKy0tIFBBUlRJVElPTl9TUExJVAorLS0g VGVzdHMgZm9yICJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIC4uLiIgY29tbWFu ZAorLS0KK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTsKK0NSRUFURSBT Q0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTI7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hLCBwdWJsaWM7CistLQorLS0gQlkgUkFOR0UgcGFydGl0aW9u aW5nCistLQorLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBpbnQsIHNhbGVzcGVyc29uX25hbWUgdmFy Y2hhcigzMCksIHNhbGVzX2Ftb3VudCBpbnQsIHNhbGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9O IEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykg VE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworLS0gRVJST1I6ICByZWxhdGlvbiAic2Fs ZXNfeHh4IiBkb2VzIG5vdCBleGlzdAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX3h4eCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBy ZWxhdGlvbiAic2FsZXNfeHh4IiBkb2VzIG5vdCBleGlzdAorLS0gRVJST1I6ICByZWxhdGlv biAic2FsZXNfamFuMjAyMiIgYWxyZWFkeSBleGlzdHMKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRP ICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNS0wMScpKTsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbjIwMjIiIGFscmVhZHkg ZXhpc3RzCistLSBFUlJPUjogIGludmFsaWQgYm91bmQgc3BlY2lmaWNhdGlvbiBmb3IgYSBy YW5nZSBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElP TiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIw MjIgRk9SIFZBTFVFUyBJTiAoJzIwMjItMDUtMDEnLCAnMjAyMi0wNi0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRP ICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgaW52 YWxpZCBib3VuZCBzcGVjaWZpY2F0aW9uIGZvciBhIHJhbmdlIHBhcnRpdGlvbgorTElORSAy OiAgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIElOICgnMjAyMi0wNS0w MScsICcyMDIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCistLSBFUlJPUjogIGVtcHR5IHJhbmdlIGJvdW5kIHNwZWNpZmllZCBmb3IgcGFy dGl0aW9uICJzYWxlc19tYXIyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAz LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAzLTAxJykgVE8gKCcyMDIyLTAyLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykp OworRVJST1I6ICBlbXB0eSByYW5nZSBib3VuZCBzcGVjaWZpZWQgZm9yIHBhcnRpdGlvbiAi c2FsZXNfbWFyMjAyMiIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPLi4uCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgU3BlY2lmaWVk IGxvd2VyIGJvdW5kICgnMDMtMDEtMjAyMicpIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0 byB1cHBlciBib3VuZCAoJzAyLTAxLTIwMjInKS4KKy0tRVJST1I6ICBsaXN0IG9mIHNwbGl0 IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0ZW1zCitBTFRFUiBU QUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIy IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMTAtMDEnKSk7CitFUlJPUjogIGxpc3Qgb2YgbmV3IHBh cnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0ZW1zCistLSBFUlJPUjog IGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbGVzcyB0aGFu IGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8g KCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA1LTAxJykpOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Zl YjIwMjIiIGlzIGxlc3MgdGhhbiBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0xJ TkUgMjogICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMS0wMScpIFRPLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuYW1lICJzYWxlc19mZWJfbWFyX2FwcjIw MjIiIGlzIGFscmVhZHkgdXNlZAorLS0gKFdlIGNhbiBjcmVhdGUgcGFydGl0aW9uIHdpdGgg dGhlIHNhbWUgbmFtZSBhcyBzcGxpdCBwYXJ0aXRpb24sIGJ1dCBjYW4ndCBjcmVhdGUgdHdv IHBhcnRpdGlvbnMgd2l0aCB0aGUgc2FtZSBuYW1lKQorQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2Fw cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbmFtZSAic2FsZXNfZmViX21h cl9hcHIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVz X2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLi4uCisgICAgICAg ICAgICAgICAgICAgICBeCistLSBFUlJPUjogIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFs cmVhZHkgdXNlZAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBu YW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUgMzogICAgUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPLi4u CisgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogICJzYWxlc19mZWJfbWFyX2Fw cjIwMjIiIGlzIG5vdCBhIHBhcnRpdGlvbmVkIHRhYmxlCitBTFRFUiBUQUJMRSBzYWxlc19m ZWJfbWFyX2FwcjIwMjIgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBBTFRFUiBhY3Rpb24gU1BMSVQgUEFS VElUSU9OIGNhbm5vdCBiZSBwZXJmb3JtZWQgb24gcmVsYXRpb24gInNhbGVzX2ZlYl9tYXJf YXByMjAyMiIKK0RFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9y IHRhYmxlcy4KKy0tIEVSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19h cHIyMDIyIiBpcyBncmVhdGVyIHRoYW4gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9u CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjIt MDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7CitFUlJPUjogIHVwcGVyIGJvdW5k IG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgZ3JlYXRlciB0aGFuIHVwcGVyIGJv dW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorTElORSA0OiAuLi4gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAuLi4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIg aXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Zl YjIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNf ZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIGxvd2Vy IGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgaXMgbm90IGVxdWFsIHRvIHRo ZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiCitMSU5FIDM6ICAg IFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1 aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4KKy0tIFRlc3RzIGZv ciBzcGFjZXMgYmV0d2VlbiBwYXJ0aXRpb25zLCB0aGVtIHNob3VsZCBiZSBleGVjdXRlZCB3 aXRob3V0IERFRkFVTFQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBERVRB Q0ggUEFSVElUSU9OIHNhbGVzX290aGVyczsKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2Yg cGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gbG93ZXIgYm91bmQg b2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDInKSBUTyAoJzIwMjItMDMtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitF UlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90 IGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorTElORSAyOiAgIChQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAyJykg VE8uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCistLSBDaGVjayB0aGUgc291cmNlIHBhcnRpdGlvbiBub3QgaW4gdGhlIHNlYXJj aCBwYXRoCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMiwgcHVi bGljOworQUxURVIgVEFCTEUgcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19yYW5nZQor U1BMSVQgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViX21hcl9h cHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hLCBwdWJsaWM7CitcZCsgc2FsZXNfcmFuZ2UKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBhcnRpdGlvbmVkIHRhYmxlICJwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hLnNhbGVzX3JhbmdlIgorICAgICAgQ29sdW1uICAgICAgfCAgICAgICAgIFR5 cGUgICAgICAgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgfCBTdG9yYWdl ICB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29u X2lkICAgfCBpbnRlZ2VyICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8 ICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25h bWUgfCBjaGFyYWN0ZXIgdmFyeWluZygzMCkgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAg ICAgICAgfCBleHRlbmRlZCB8ICAgICAgICAgICAgICB8IAorIHNhbGVzX2Ftb3VudCAgICAg fCBpbnRlZ2VyICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAg ICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorIHNhbGVzX2RhdGUgICAgICAgfCBk YXRlICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAg fCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIGtleTogUkFOR0UgKHNh bGVzX2RhdGUpCitQYXJ0aXRpb25zOiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzA0LTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjIn KSwKKyAgICAgICAgICAgIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMDItMDEtMjAyMicpIFRPICgnMDMtMDEtMjAyMicpLAorICAg ICAgICAgICAgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfbWFyMjAyMiBGT1IgVkFM VUVTIEZST00gKCcwMy0wMS0yMDIyJykgVE8gKCcwNC0wMS0yMDIyJyksCisgICAgICAgICAg ICBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzAxLTAxLTIwMjInKSBUTyAoJzAy LTAxLTIwMjInKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworRFJPUCBUQUJMRSBzYWxl c19vdGhlcnM7CistLQorLS0gQWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZSB0aGVu IHNwbGl0IHBhcnRpdGlvbgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNw ZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91 bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug REVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXkn LCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAg JzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcp LAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0Rl ZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAs ICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4 JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAn TXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1 MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQt MDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMs ICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAg NTEwLCAgJzIwMjItMDUtMDQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsK K1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3Bl cnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMx LTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAz NTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwg ICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorICAgICAgICAgICAgICAyIHwgU21pcm5vZmYg ICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAgNiB8 IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAg ICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAy MgorICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8 IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAg ICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAg ICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgICAgICAzIHwgRm9y ZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAg ICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisg ICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQt MDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAg IDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAg fCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworU0VMRUNUICogRlJP TSBzYWxlc19qYW4yMDIyOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8 IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg MSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAg ICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgt MjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3 NyB8IDAxLTA5LTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAy MjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAg ICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICAgICA2IHwg UG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAg ICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIy CisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjI7Cisgc2FsZXNwZXJz b25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAK Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAg ICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAg ICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0 byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorKDMgcm93cykKKwor U0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNw ZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0z MC0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAg NzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8 ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAg ICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisoNCByb3dzKQorCitTRUxF Q1QgKiBGUk9NIHNhbGVzX290aGVyczsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAy MgorKDEgcm93KQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CistLQorLS0g QWRkIHNwbGl0IHBhcnRpdGlvbiwgdGhlbiBhZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRh YmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQs IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVz X2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBU QUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworLS0g U3BsaXQgcGFydGl0aW9uLCBhbHNvIGNoZWNrIHNjaGVtYSBxdWFsaWZpY2F0aW9uIG9mIG5l dyBwYXJ0aXRpb25zCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04g c2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hLnNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hl bWEyLnNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgn MjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK1xkKyBzYWxlc19yYW5n ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFydGl0aW9uZWQgdGFibGUgInBh cnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfcmFuZ2UiCisgICAgICBDb2x1bW4gICAgICB8 ICAgICAgICAgVHlwZSAgICAgICAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVs dCB8IFN0b3JhZ2UgIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisg c2FsZXNwZXJzb25faWQgICB8IGludGVnZXIgICAgICAgICAgICAgICB8ICAgICAgICAgICB8 ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCisgc2Fs ZXNwZXJzb25fbmFtZSB8IGNoYXJhY3RlciB2YXJ5aW5nKDMwKSB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgICAgICAgICB8IGV4dGVuZGVkIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNf YW1vdW50ICAgICB8IGludGVnZXIgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNfZGF0 ZSAgICAgICB8IGRhdGUgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAg IHwgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24ga2V5 OiBSQU5HRSAoc2FsZXNfZGF0ZSkKK1BhcnRpdGlvbnM6IHBhcnRpdGlvbl9zcGxpdF9zY2hl bWEyLnNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDMtMDEtMjAyMicpIFRPICgn MDQtMDEtMjAyMicpLAorICAgICAgICAgICAgc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJyksCisgICAgICAgICAgICBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzAzLTAxLTIw MjInKSwKKyAgICAgICAgICAgIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDEt MDEtMjAyMicpIFRPICgnMDItMDEtMjAyMicpLAorICAgICAgICAgICAgc2FsZXNfb3RoZXJz IERFRkFVTFQKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01h eScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAs ICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMw JyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAn RGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1 MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMt MDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwg ICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAg MzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0w NC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgx MywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAg ICA1MTAsICAnMjAyMi0wNS0wNCcpOworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKKyBz YWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAg IHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVy ICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAgICAx MyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAg ICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAt MjAyMgorICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1 MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAg ICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAg ICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwg TXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAg ICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIy CisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwg MDQtMzAtMjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAg ICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAg ICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVt cCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICAg IDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygx NCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7Cisgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAg MTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAg fCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAg ICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorKDMgcm93cykKKworU0VM RUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJz b25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0y MDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUw IHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAg ICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gcGFy dGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfbWFyMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1 IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAg ICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAg ICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9u YW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIK KyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAw NC0xMy0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAg ICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZS T00gc2FsZXNfb3RoZXJzOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8 IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAx NCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMSBy b3cpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKy0tCistLSBUZXN0IGZv cjoKKy0tICAgKiBjb21wb3NpdGUgcGFydGl0aW9uIGtleTsKKy0tICAgKiBHRU5FUkFURUQg Y29sdW1uOworLS0gICAqIGNvbHVtbiB3aXRoIERFRkFVTFQgdmFsdWUuCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzX2RhdGUgKHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVz X3llYXIgSU5ULCBzYWxlc19tb250aCBJTlQsIHNhbGVzX2RheSBJTlQsCisgIHNhbGVzX2Rh dGUgVkFSQ0hBUigxMCkgR0VORVJBVEVEIEFMV0FZUyBBUworICAgIChMUEFEKHNhbGVzX3ll YXI6OnRleHQsIDQsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfbW9udGg6OnRleHQsIDIs ICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfZGF5Ojp0ZXh0LCAyLCAnMCcpKSBTVE9SRUQs CisgIHNhbGVzX2RlcGFydG1lbnQgVkFSQ0hBUigzMCkgREVGQVVMVCAnU2FsZXMgZGVwYXJ0 bWVudCcpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfeWVhciwgc2FsZXNfbW9udGgs IHNhbGVzX2RheSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwg MSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMywgMSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfb3RoZXIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZB TFVFUyBGUk9NICgyMDIyLCAzLCAxKSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVFLCBNQVhWQUxV RSk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3ll YXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAy MSwgMTIsIDcpLAorICAoJ01hbmFnZXIyJywgMjAyMSwgMTIsIDgpLAorICAoJ01hbmFnZXIz JywgMjAyMiwgMSwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0KSwKKyAgKCdNYW5h Z2VyMicsIDIwMjIsIDEsIDIpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMiwgMSksCisgICgn TWFuYWdlcjEnLCAyMDIyLCAzLCAzKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDMsIDQpLAor ICAoJ01hbmFnZXIzJywgMjAyMiwgNSwgMSk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7 Cisgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVz X2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMSB8 ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1l bnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAg ICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAg ICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4w MSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8 ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1l bnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAg ICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAg ICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICAxIHwgMjAyMi4wMi4w MSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8 ICAgICAgICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1l bnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAg ICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAg ICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4w MSB8IFNhbGVzIGRlcGFydG1lbnQKKyg5IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNf ZGVjMjAyMjsKKyBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRo IHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAgICAgfCAgICAg ICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIxLjEyLjA3IHwgU2FsZXMg ZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAg MTIgfCAgICAgICAgIDggfCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVudAorKDIgcm93 cykKKworU0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAyMjsKKyBzYWxlc3BlcnNvbl9u YW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0 ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLQorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAg ICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAg ICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIyLjAy LjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIy IHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0 bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAg ICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDQgcm93cykKKwor U0VMRUNUICogRlJPTSBzYWxlc19vdGhlcjsKKyBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNf eWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2Rl cGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFn ZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAy MDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAg ICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMg ZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAg IDUgfCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDMgcm93 cykKKworQUxURVIgVEFCTEUgc2FsZXNfZGF0ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfamFu X2ZlYjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMiwgMSksCisgICBQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDIsIDEpIFRPICgyMDIyLCAzLCAxKSk7 CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIs IHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMiwg MSwgMTApLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworU0VMRUNUICogRlJPTSBz YWxlc19kYXRlOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9u dGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAg ICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAg ICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8 IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8 IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMiB8ICAgICAgICAxMCB8IDIwMjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8 IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMTEg cm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworIHNhbGVzcGVyc29uX25h bWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRl IHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAg ICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAg ICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIu MDggfCBTYWxlcyBkZXBhcnRtZW50CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz X2phbjIwMjI7Cisgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250 aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMyAgICAgICAgIHwgICAg ICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNhbGVz IGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAg ICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5h Z2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgIDEwIHwg MjAyMi4wMS4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZS T00gc2FsZXNfZmViMjAyMjsKKyBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNh bGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQg CistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAg ICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIyLjAyLjA0 IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwg ICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVu dAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAg ICAgMTAgfCAyMDIyLjAyLjEwIHwgU2FsZXMgZGVwYXJ0bWVudAorKDMgcm93cykKKworU0VM RUNUICogRlJPTSBzYWxlc19vdGhlcjsKKyBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVh ciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFy dG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIx ICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIy LjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAy MDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVw YXJ0bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDUg fCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDMgcm93cykK KworLS1FUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW5fZmViMjAyMiIgZG9lcyBub3QgZXhp c3QKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuX2ZlYjIwMjI7CitFUlJPUjogIHJlbGF0aW9u ICJzYWxlc19qYW5fZmViMjAyMiIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMTogU0VMRUNUICog RlJPTSBzYWxlc19qYW5fZmViMjAyMjsKKyAgICAgICAgICAgICAgICAgICAgICBeCitEUk9Q IFRBQkxFIHNhbGVzX2RhdGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBERUZBVUxU IHBhcnRpdGlvbjsgdXNlIGFuIGluZGV4IG9uIHBhcnRpdGlvbiBrZXk7IGNoZWNrIGluZGV4 IGFmdGVyIHNwbGl0CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNv bl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJ TlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsK K0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxU OworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3Jh bmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgy LCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAg ICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIy LTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAg KDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAg ICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIw MjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAor ICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1w JywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAn MjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyks CisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCAqIEZS T00gc2FsZXNfb3RoZXJzOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8 IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg MiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAg ICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAt MjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1 MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAg ICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA3IHwg TGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAg ICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIy CisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwg MDMtMTEtMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAg ICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAg ICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgICAgMTQgfCBTbWl0 aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDExIHJvd3MpCisK K1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfb3Ro ZXJzJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBC WSBpbmRleG5hbWU7CisgICAgICAgc2NoZW1hbmFtZSAgICAgICB8ICB0YWJsZW5hbWUgICB8 ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICB8IHRhYmxlc3BhY2UgfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxlc19vdGhl cnMgfCBzYWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRF IElOREVYIHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hLnNhbGVzX290aGVycyBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykK KworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVy cyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA1LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERF RkFVTFQpOworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzCitTRVQgZW5h YmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworU0VMRUNU ICogRlJPTSBzYWxlc19mZWIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7 Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwg c2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAg ICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBv aXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAg ICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgor KDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19tYXIyMDIyIHdoZXJlIHNhbGVzX2Rh dGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1l IHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAg ICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAg ICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0x MS0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAg MzUwIHwgMDMtMTktMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIy MDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNwZXJzb25faWQg fCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4 MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAg ICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICAzIHwg Rm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyg0IHJvd3Mp CisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAy Mi0wMS0wMSc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNf YW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDE0IHwgU21p dGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxIHJvdykKKwor U0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9OOwor U0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19mZWIy MDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBC WSBpbmRleG5hbWU7CisgICAgICAgc2NoZW1hbmFtZSAgICAgICB8ICAgdGFibGVuYW1lICAg fCAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGRlZiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNh bGVzX2ZlYjIwMjIgfCBzYWxlc19mZWIyMDIyX3NhbGVzX2RhdGVfaWR4IHwgICAgICAgICAg ICB8IENSRUFURSBJTkRFWCBzYWxlc19mZWIyMDIyX3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRp dGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViMjAyMiBVU0lORyBidHJlZSAoc2FsZXNfZGF0 ZSkKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFt ZSA9ICdzYWxlc19tYXIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRf c2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWU7CisgICAgICAgc2NoZW1hbmFtZSAgICAgICB8 ICAgdGFibGVuYW1lICAgfCAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAgIHwgdGFibGVz cGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3Nw bGl0X3NjaGVtYSB8IHNhbGVzX21hcjIwMjIgfCBzYWxlc19tYXIyMDIyX3NhbGVzX2RhdGVf aWR4IHwgICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19tYXIyMDIyX3NhbGVzX2Rh dGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfbWFyMjAyMiBVU0lORyBi dHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVz IFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19hcHIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdw YXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWU7CisgICAgICAgc2No ZW1hbmFtZSAgICAgICB8ICAgdGFibGVuYW1lICAgfCAgICAgICAgICBpbmRleG5hbWUgICAg ICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX2FwcjIwMjIgfCBzYWxlc19hcHIy MDIyX3NhbGVzX2RhdGVfaWR4IHwgICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19h cHIyMDIyX3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNf YXByMjAyMiBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworU0VMRUNUICog RlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19vdGhlcnMnIGFuZCBz Y2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFt ZTsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgIHRhYmxlbmFtZSAgIHwgICAgICAgICAg aW5kZXhuYW1lICAgICAgICAgICB8IHRhYmxlc3BhY2UgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxlc19vdGhlcnMgfCBz YWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHgxIHwgICAgICAgICAgICB8IENSRUFURSBJTkRF WCBzYWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHgxIE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hl bWEuc2FsZXNfb3RoZXJzIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitE Uk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CistLQorLS0gVGVzdDogc29tZSBjYXNl cyBmb3Igc3BsaXR0aW5nIERFRkFVTFQgcGFydGl0aW9uIChkaWZmZXJlbnQgYm91bmRzKQor LS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxl c3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRl IElOVCkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBzYWxl c19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMiAobG93ZXIgYm91bmQpCist LSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGlzIG5v dCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIy IgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVy cyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIw MjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBW QUxVRVMgRlJPTSAoMjAyMTEyMzApIFRPICgyMDIyMDIwMSksCisgICBQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAor ICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9SOiAgbG93ZXIgYm91 bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBl ciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjIiCitMSU5FIDM6ICAgIFBBUlRJ VElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjMwKSBUTyAoMjAyMi4u LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CitISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhl IHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNlbnQuCistLSBzYWxlc19lcnJvciBpbnRl cnNlY3RzIHdpdGggc2FsZXNfZmViMjAyMiAodXBwZXIgYm91bmQpCistLSBFUlJPUjogIGxv d2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRv IHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIgorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAo MjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAo MjAyMjAxMDEpIFRPICgyMDIyMDIwMiksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9O IHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0 aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiCitMSU5FIDQ6ICAgIFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMC4uLgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBB TFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9u IGJvdW5kcyB0byBiZSBhZGphY2VudC4KKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0 aCBzYWxlc19kZWMyMDIyIChpbnNpZGUgYm91bmQpCistLSBFUlJPUjogIGxvd2VyIGJvdW5k IG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBl ciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIgorQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEp LAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMTAp IFRPICgyMDIxMTIyMCksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVT IEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290 aGVycyBERUZBVUxUKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxl c19lcnJvciIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24g InNhbGVzX2RlYzIwMjIiCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1Ig VkFMVUVTIEZST00gKDIwMjExMjEwKSBUTyAoMjAyMS4uLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgQUxURVIgVEFCTEUg Li4uIE1FUkdFIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8g YmUgYWRqYWNlbnQuCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVj MjAyMiAoZXhhY3RseSB0aGUgc2FtZSBib3VuZHMpCistLSBFUlJPUjogIGxvd2VyIGJvdW5k IG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBl ciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIgorQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEp LAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEp IFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVT IEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290 aGVycyBERUZBVUxUKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxl c19lcnJvciIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24g InNhbGVzX2RlYzIwMjIiCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1Ig VkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMi4uLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgQUxURVIgVEFCTEUg Li4uIE1FUkdFIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8g YmUgYWRqYWNlbnQuCistLSBFUlJPUjogIG9uZSBwYXJ0aXRpb24gaW4gdGhlIGxpc3Qgc2hv dWxkIGJlIERFRkFVTFQgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVAorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAx KSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVF UyBGUk9NICgyMDIyMDEwMSkgVE8gKDIwMjIwMjAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSkpOworRVJS T1I6ICBvbmUgcGFydGl0aW9uIGluIHRoZSBsaXN0IHNob3VsZCBiZSBERUZBVUxUIGJlY2F1 c2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQKK0xJTkUgMjogICAoUEFSVElUSU9OIHNh bGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwLi4uCisgICAg ICAgICAgICAgICAgICAgICBeCistLSBubyBlcnJvcjogYm91bmRzIG9mIHNhbGVzX25vZXJy b3IgYXJlIGJldHdlZW4gc2FsZXNfZGVjMjAyMiBhbmQgc2FsZXNfZmViMjAyMgorQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBU TyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX25vZXJyb3IgRk9SIFZBTFVFUyBG Uk9NICgyMDIyMDExMCkgVE8gKDIwMjIwMTIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJU SVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsK K0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3Bl cnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIElO VCkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxl c19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBubyBlcnJv cjogYm91bmRzIG9mIHNhbGVzX25vZXJyb3IgYXJlIGVxdWFsIHRvIGxvd2VyIGFuZCB1cHBl ciBib3VuZHMgb2Ygc2FsZXNfZGVjMjAyMiBhbmQgc2FsZXNfZmViMjAyMgorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAo MjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX25vZXJyb3IgRk9SIFZBTFVFUyBGUk9N ICgyMDIxMDEwMSkgVE8gKDIwMjEwMjAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJ T04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0t CistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBDSEVDSyBhbmQgRk9SRUlHTiBLRVkg Q09OU1RSQUlOVHMgb24gcGFydGl0aW9uZWQgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2Fs ZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9u YW1lIFZBUkNIQVIoMzApKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMSwg ICdQb2lyb3QnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoCitzYWxlc3BlcnNvbl9p ZCBJTlQgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCksCitzYWxlc19h bW91bnQgSU5UIENIRUNLIChzYWxlc19hbW91bnQgPiAxKSwKK3NhbGVzX2RhdGUgREFURSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19q YW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21h cl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3Ro ZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworU0VMRUNUIHBnX2dldF9j b25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQg V0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfZmViX21hcl9hcHIyMDIyJzo6cmVnY2xhc3M6Om9p ZCBPUkRFUiBCWSBjb25uYW1lOworICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2Nv bnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBjb25u YW1lICAgICAgICAgICAgIHwgY29ua2V5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIENIRUNLICgoc2FsZXNfYW1vdW50 ID4gMSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzYWxl c19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2sgIHwgezJ9CisgRk9SRUlHTiBLRVkgKHNhbGVz cGVyc29uX2lkKSBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSB8IHNh bGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkgfCB7MX0KKygyIHJvd3MpCisKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIw MjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21h cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKy0tIFdlIHNob3VsZCBzZWUgdGhlIHNhbWUg Q09OU1RSQUlOVHMgYXMgb24gc2FsZXNfZmViX21hcl9hcHIyMDIyIHBhcnRpdGlvbgorU0VM RUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBn X2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfZmViMjAyMic6OnJlZ2NsYXNz OjpvaWQgT1JERVIgQlkgY29ubmFtZTs7CisgICAgICAgICAgICAgICAgICAgICAgICBwZ19n ZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg IGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChzYWxlc19h bW91bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IHNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayAgfCB7Mn0KKyBGT1JFSUdOIEtFWSAo c2FsZXNwZXJzb25faWQpIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQp IHwgc2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSB8IHsxfQorKDIgcm93cykKKwor U0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9N IHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfbWFyMjAyMic6OnJlZ2Ns YXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZTs7CisgICAgICAgICAgICAgICAgICAgICAgICBw Z19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChzYWxl c19hbW91bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IHNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayAgfCB7Mn0KKyBGT1JFSUdOIEtF WSAoc2FsZXNwZXJzb25faWQpIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25f aWQpIHwgc2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSB8IHsxfQorKDIgcm93cykK KworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBG Uk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfYXByMjAyMic6OnJl Z2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZTs7CisgICAgICAgICAgICAgICAgICAgICAg ICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChz YWxlc19hbW91bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IHNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayAgfCB7Mn0KKyBGT1JFSUdO IEtFWSAoc2FsZXNwZXJzb25faWQpIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJz b25faWQpIHwgc2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSB8IHsxfQorKDIgcm93 cykKKworLS0gRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAic2FsZXNfbWFyMjAyMiIg dmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2No ZWNrIgorSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAwLCAnMjAyMi0wMy0x MScpOworRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAic2FsZXNfbWFyMjAyMiIgdmlv bGF0ZXMgY2hlY2sgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNr IgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKDEsIDAsIDAzLTExLTIwMjIpLgor LS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlc19tYXIyMDIyIiB2 aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc3BlcnNv bl9pZF9ma2V5IgorSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgtMSwgMTAsICcy MDIyLTAzLTExJyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInNhbGVz X21hcjIwMjIiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3Jhbmdl X3NhbGVzcGVyc29uX2lkX2ZrZXkiCitERVRBSUw6ICBLZXkgKHNhbGVzcGVyc29uX2lkKT0o LTEpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJzYWxlc3Blb3BsZSIuCistLSBvaworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAxMCwgJzIwMjItMDMtMTEnKTsKK0RS T1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUg Q0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gb24gcGFydGl0aW9uZWQg dGFibGUgaW4gY2FzZSBvZiBleGlzdGluZyBGT1JFSUdOIEtFWSByZWZlcmVuY2UgZnJvbSBh bm90aGVyIHRhYmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29u X2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFS VElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXMg KHNhbGVzcGVyc29uX2lkIElOVCBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29u X2lkKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKTsKK0NSRUFURSBUQUJM RSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVT IEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBQQVJU SVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKK0lO U0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUworICAoMSwgICdQb2lyb3QnKSwKKyAgKDEw LCAnTWF5JyksCisgICgxOSwgJ0l2YW5vdicpLAorICAoMjAsICdTbWlybm9mZicpLAorICAo MzAsICdGb3JkJyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMKKyAgKDEsICAxMDAsICcy MDIyLTAzLTAxJyksCisgICgxLCAgMTEwLCAnMjAyMi0wMy0wMicpLAorICAoMTAsIDE1MCwg JzIwMjItMDMtMDEnKSwKKyAgKDEwLCA5MCwgICcyMDIyLTAzLTAzJyksCisgICgxOSwgMjAw LCAnMjAyMi0wMy0wNCcpLAorICAoMjAsIDUwLCAgJzIwMjItMDMtMTInKSwKKyAgKDIwLCAx NzAsICcyMDIyLTAzLTAyJyksCisgICgzMCwgMzAsICAnMjAyMi0wMy0wNCcpOworU0VMRUNU ICogRlJPTSBzYWxlc3Blb3BsZTAxXzEwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJz b25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgIDEgfCBQb2lyb3QKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc3Blb3Bs ZTEwXzQwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTAgfCBNYXkKKyAg ICAgICAgICAgICAxOSB8IEl2YW5vdgorICAgICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyAg ICAgICAgICAgICAzMCB8IEZvcmQKKyg0IHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzcGVv cGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQ QVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzAp LAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkg VE8gKDQwKSk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMDFfMTA7Cisgc2FsZXNwZXJz b25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IFBvaXJvdAorKDEgcm93KQorCitTRUxFQ1Qg KiBGUk9NIHNhbGVzcGVvcGxlMTBfMjA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNv bl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAxMCB8IE1heQorICAgICAgICAgICAgIDE5IHwgSXZhbm92CisoMiByb3dzKQorCitT RUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMjBfMzA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxl c3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAyMCB8IFNtaXJub2ZmCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2Fs ZXNwZW9wbGUzMF80MDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCist LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDMwIHwg Rm9yZAorKDEgcm93KQorCistLSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUg InNhbGVzIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxlc19zYWxlc3Bl cnNvbl9pZF9ma2V5IgorSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICg0MCwgNTAsICAnMjAy Mi0wMy0wNCcpOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlcyIg dmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfc2FsZXNwZXJzb25faWRf ZmtleSIKK0RFVEFJTDogIEtleSAoc2FsZXNwZXJzb25faWQpPSg0MCkgaXMgbm90IHByZXNl bnQgaW4gdGFibGUgInNhbGVzcGVvcGxlIi4KKy0tIG9rCitJTlNFUlQgSU5UTyBzYWxlcyBW QUxVRVMgKDMwLCA1MCwgICcyMDIyLTAzLTA0Jyk7CitEUk9QIFRBQkxFIHNhbGVzIENBU0NB REU7CitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CistLQorLS0gVGVzdDogc3Bs aXQgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggdHJpZ2dlcnMKKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZ LCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNh bGVzcGVyc29uX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElP TiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUg VEFCTEUgc2FsZXNwZW9wbGUxMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZB TFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVF UyAoMSwgICdQb2lyb3QnKTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGFmdGVyX2lu c2VydF9yb3dfdHJpZ2dlcigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcg QVMgJEJPRFkkCitCRUdJTgorCVJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFj dGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdf V0hFTiwgVEdfTEVWRUw7CisgICAgUkVUVVJOIE5VTEw7CitFTkQ7CiskQk9EWSQ7CitDUkVB VEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNlcnRfc3RhdGVtZW50X3RyaWdnZXIK KyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Blb3BsZQorICAgIEZPUiBFQUNIIFNU QVRFTUVOVAorICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dl cignc2FsZXNwZW9wbGUnKTsKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2lu c2VydF9yb3dfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxl CisgICAgRk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0 X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmly ZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFM VUVTICgxMCwgJ01heScpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVk OiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK05PVElDRTog IHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0g QUZURVIsIGxldmVsID0gU1RBVEVNRU5UCistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVy ZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfNDAgVkFMVUVTICgxOSwgJ0l2 YW5vdicpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24g PSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK0FMVEVSIFRBQkxFIHNhbGVz cGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisg ICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAo MzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgz MCkgVE8gKDQwKSk7CistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0 YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDIwLCAnU21pcm5v ZmYnKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0g SU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitOT1RJQ0U6ICB0cmlnZ2VyKHNh bGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZl bCA9IFNUQVRFTUVOVAorLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJ TlNFUlQgSU5UTyBzYWxlc3Blb3BsZTMwXzQwIFZBTFVFUyAoMzAsICdGb3JkJyk7CitOT1RJ Q0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hl biA9IEFGVEVSLCBsZXZlbCA9IFJPVworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTAxXzEw OworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKygxIHJv dykKKworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTEwXzIwOworIHNhbGVzcGVyc29uX2lk IHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgMTAgfCBNYXkKKyAgICAgICAgICAgICAxOSB8IEl2YW5vdgor KDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTIwXzMwOworIHNhbGVzcGVy c29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgMjAgfCBTbWlybm9mZgorKDEgcm93KQorCitTRUxF Q1QgKiBGUk9NIHNhbGVzcGVvcGxlMzBfNDA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3Bl cnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAzMCB8IEZvcmQKKygxIHJvdykKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBD QVNDQURFOworRFJPUCBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKTsKKy0t CistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0Y2ggaWRlbnRpdHkgY29sdW1uCistLSBJ ZiBzcGxpdCBwYXJ0aXRpb24gY29sdW1uIGlzIGlkZW50aXR5IGNvbHVtbiwgY29sdW1ucyBv ZiBuZXcgcGFydGl0aW9ucyBhcmUgaWRlbnRpdHkgY29sdW1ucyB0b28uCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFURUQgQUxXQVlT IEFTIElERU5USVRZIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzAp KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFURSBUQUJMRSBz YWxlc3Blb3BsZTFfMiBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMik7CistLSBDcmVhdGUgbmV3IHBhcnRpdGlvbiB3aXRoIGlkZW50aXR5IGNv bHVtbjoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTJfNShzYWxlc3BlcnNvbl9pZCBJTlQg Tk9UIE5VTEwsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQUxURVIgVEFCTEUg c2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTJfNSBGT1IgVkFMVUVT IEZST00gKDIpIFRPICg1KTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIChzYWxlc3BlcnNv bl9uYW1lKSBWQUxVRVMgKCdQb2lyb3QnKSwgKCdJdmFub3YnKTsKK1NFTEVDVCBhdHRuYW1l LCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0 dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlJzo6cmVnY2xhc3M6Om9pZCBP UkRFUiBCWSBhdHRudW07CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50aXR5IHwgYXR0 Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc3BlcnNv bl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK1NFTEVDVCBhdHRuYW1lLCBh dHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51 bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlMV8yJzo6cmVnY2xhc3M6Om9pZCBP UkRFUiBCWSBhdHRudW07CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50aXR5IHwgYXR0 Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc3BlcnNv bl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKKy0tIFNwbGl0IHBhcnRpdGlv biBoYXMgaWRlbnRpdHkgY29sdW1uOgorU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBh dHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0 cmVsaWQgPSAnc2FsZXNwZW9wbGUyXzUnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51 bTsKKyAgICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCist LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHNhbGVz cGVyc29uX2lkICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUgfCAgICAg ICAgICAgICB8IAorKDIgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgU1BMSVQg UEFSVElUSU9OIHNhbGVzcGVvcGxlMl81IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3Bs ZTJfMyBGT1IgVkFMVUVTIEZST00gKDIpIFRPICgzKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Bl b3BsZTNfNCBGT1IgVkFMVUVTIEZST00gKDMpIFRPICg0KSwKKyAgIFBBUlRJVElPTiBzYWxl c3Blb3BsZTRfNSBGT1IgVkFMVUVTIEZST00gKDQpIFRPICg1KSk7CitJTlNFUlQgSU5UTyBz YWxlc3Blb3BsZSAoc2FsZXNwZXJzb25fbmFtZSkgVkFMVUVTICgnTWF5JyksICgnRm9yZCcp OworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTFfMjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNh bGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAxIHwgUG9pcm90CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2Fs ZXNwZW9wbGUyXzM7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMiB8IEl2 YW5vdgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlM180OworIHNhbGVz cGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDMgfCBNYXkKKygxIHJvdykKKworU0VMRUNU ICogRlJPTSBzYWxlc3Blb3BsZTRfNTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICA0IHwgRm9yZAorKDEgcm93KQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHks IGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBh dHRyZWxpZCA9ICdzYWxlc3Blb3BsZSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVt OworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNw ZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAg ICAgICAgIHwgCisoMiByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0 dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRy ZWxpZCA9ICdzYWxlc3Blb3BsZTFfMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVt OworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNw ZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAg ICAgICAgIHwgCisoMiByb3dzKQorCistLSBOZXcgcGFydGl0aW9ucyBoYXZlIGlkZW50aXR5 LWNvbHVtbnM6CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBG Uk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxl c3Blb3BsZTJfMyc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBhdHRu YW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8 IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCiso MiByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBG Uk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxl c3Blb3BsZTNfNCc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBhdHRu YW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8 IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCiso MiByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBG Uk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxl c3Blb3BsZTRfNSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBhdHRu YW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8 IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCiso MiByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CistLQorLS0gVGVz dDogc3BsaXQgcGFydGl0aW9uIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNw ZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNv bl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2Fs ZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRlIG5ldyBw YXJ0aXRpb24gd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBzYWxl c3Blb3BsZTEwXzQwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFS WSBLRVksIGQyIElOVCwgZDMgREFURSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7 CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzQwIFZBTFVFUworICAoJ2R1bW15IHZhbHVl IDEnLCAxOSwgMTAwLCBub3coKSwgJ0l2YW5vdicpLAorICAoJ2R1bW15IHZhbHVlIDInLCAy MCwgMTAxLCBub3coKSwgJ1NtaXJub2ZmJyk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEw XzQwIERST1AgQ09MVU1OIGQxOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBEUk9Q IENPTFVNTiBkMjsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgRFJPUCBDT0xVTU4g ZDM7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVv cGxlMTBfNDAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKK0lOU0VSVCBJTlRPIHNh bGVzcGVvcGxlIFZBTFVFUworICAoMSwgJ1BvaXJvdCcpLAorICAoMTAsICdNYXknKSwKKyAg KDMwLCAnRm9yZCcpOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9O IHNhbGVzcGVvcGxlMTBfNDAgSU5UTworICAoUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAg Rk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3Bs ZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCksCisgICBQQVJUSVRJT04gc2Fs ZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApKTsKK3NlbGVjdCAq IGZyb20gc2FsZXNwZW9wbGUwMV8xMDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAxIHwgUG9pcm90CisoMSByb3cpCisKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGUx MF8yMDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDE5IHwgSXZhbm92Cisg ICAgICAgICAgICAgMTAgfCBNYXkKKygyIHJvd3MpCisKK3NlbGVjdCAqIGZyb20gc2FsZXNw ZW9wbGUyMF8zMDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDIwIHwgU21p cm5vZmYKKygxIHJvdykKKworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTMwXzQwOworIHNh bGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMzAgfCBGb3JkCisoMSByb3cpCisKK0RS T1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBzdWIt cGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9p ZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQs IHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19hcHIyMDIyIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hB UigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZ IFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHJfYWxsIFBBUlRJ VElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJU SVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8g KCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVz X2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAs ICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAn KSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJ dmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUw LCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0x MScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAg J0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAy NTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAx LTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEy LCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAg IDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjIt MDUtMDQnKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7Cisgc2FsZXNwZXJzb25faWQg fCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAw MCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAg ICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAg ICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorICAgICAgICAgICAgICAyIHwg U21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAg ICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIy CisgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwg MDItMjMtMjAyMgorICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAg ICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAg ICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0 byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgICAg ICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAg ICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0x My0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAg MjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8 ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAxNCB8IFNtaXRoICAg ICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworU0VM RUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJz b25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0y MDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUw IHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAg ICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAg ICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisoNCByb3dzKQorCitBTFRFUiBU QUJMRSBzYWxlc19hcHIyMDIyIFNQTElUIFBBUlRJVElPTiBzYWxlc19hcHJfYWxsIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzAxXzEwIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyXzEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTAnKSBUTyAoJzIwMjItMDQt MjAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzIwXzMwIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMjAnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitTRUxFQ1QgKiBGUk9NIHNh bGVzX3JhbmdlOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVz X2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IE1h eSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAg ICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgor ICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAx LTA5LTIwMjIKKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAg ICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAg IHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nz b24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgICAg NyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAg ICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEt MjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1 MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAg ICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICAgICA0IHwg SXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAg ICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIy CisgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwg MDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsK KyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBz YWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAg ICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1 bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAg ICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisg ICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQt MzAtMjAyMgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzAxXzEw OworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8 IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAg ICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBU cnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorKDIgcm93cykK KworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzEwXzIwOworIHNhbGVzcGVyc29uX2lk IHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3 NTAgfCAwNC0xMy0yMDIyCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAy Ml8yMF8zMDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDMgfCBGb3Jk ICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorKDEgcm93KQorCitE Uk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIEJZIExJU1QgcGFydGl0aW9uaW5nCist LQorLS0KKy0tIFRlc3Q6IHNwZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRpb25p bmcKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCwK KyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIo MjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9O IEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJ VElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNi dXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBP RiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZ b3JrJywgJ01hZHJpZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0RlbGhpJywgJ0t5aXYnLCAn VmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgREVGQVVMVDsKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNf ZWFzdCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgKG5vdCBzcGxpdCkgcGFydGl0aW9u ICJzYWxlc19ub3JkIgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04g c2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4g KCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNf ZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJywg J0hlbHNpbmtpJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElO ICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworRVJST1I6ICBuZXcgcGFydGl0aW9u ICJzYWxlc19lYXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciAobm90IHNwbGl0KSBw YXJ0aXRpb24gInNhbGVzX25vcmQiCitMSU5FIDM6IC4uLiBGT1IgVkFMVUVTIElOICgnQmVq aW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJywgJ0hlbHNpbmtpJy4uLgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K Ky0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgd291bGQgb3ZlcmxhcCB3 aXRoIGFub3RoZXIgbmV3IHBhcnRpdGlvbiAic2FsZXNfY2VudHJhbCIKK0FMVEVSIFRBQkxF IHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01h ZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0Jlamlu ZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRy YWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnTGlzYm9uJywgJ0t5aXYn KSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIHdvdWxkIG92ZXJsYXAg d2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gInNhbGVzX2NlbnRyYWwiCitMSU5FIDI6ICAg KFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlv cmsnLC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBoYXZl IE5VTEwgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2ZQorQUxU RVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlv cmsnLCAnTWFkcmlkJywgTlVMTCksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFM VUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJ T04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdL eWl2JykpOworRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2 ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUKK0xJ TkUgMjogLi4uc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAn TWFkcmlkJywgTlVMTCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlv biAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgdGhpcyB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBh cnRpdGlvbiBkb2VzIG5vdCBoYXZlCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBB UlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZB TFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnTWVsYm91cm5lJyks CisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0Rl bGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1Ig VkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworRVJST1I6ICBuZXcg cGFydGl0aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSB0aGlzIHZhbHVlIGJlY2F1c2Ug c3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUKK0xJTkUgMjogLi4uc3QgRk9SIFZBTFVF UyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnTWVsYm91cm5lLi4uCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgorLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uIGNhbm5vdCBiZSBERUZBVUxUIGJl Y2F1c2UgREVGQVVMVCBwYXJ0aXRpb24gYWxyZWFkeSBleGlzdHMKK0FMVEVSIFRBQkxFIHNh bGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJp ZCcsICdNZWxib3VybmUnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMg SU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBz YWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOworRVJST1I6ICBuZXcg cGFydGl0aW9uIGNhbm5vdCBiZSBERUZBVUxUIGJlY2F1c2UgREVGQVVMVCBwYXJ0aXRpb24g YWxyZWFkeSBleGlzdHMKK0xJTkUgNTogICAgUEFSVElUSU9OIHNhbGVzX290aGVyczIgREVG QVVMVCk7CisgICAgICAgICAgICAgICAgICAgICBeCitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7 CistLQorLS0gVGVzdDogdHdvIHNwZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRp b25pbmc6CistLSAgICogbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgTlVMTCB2YWx1ZSwg d2hpY2ggc3BsaXQgcGFydGl0aW9uIGhhcy4KKy0tICAgKiBuZXcgcGFydGl0aW9ucyBkbyBu b3QgaGF2ZSBhIHZhbHVlIHRoYXQgc3BsaXQgcGFydGl0aW9uIGhhcy4KKy0tCitDUkVBVEUg VEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCwKKyBzYWxlc3BlcnNvbl9u YW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ft b3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVz X3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19s aXN0IEZPUiBWQUxVRVMgSU4gKCdIZWxzaW5raScsICdTdC4gUGV0ZXJzYnVyZycsICdPc2xv Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZP UiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcs ICdCZWppbmcnLCAnQmVybGluJywgJ0RlbGhpJywgJ0t5aXYnLCAnVmxhZGl2b3N0b2snLCBO VUxMKTsKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgdmFsdWUgTlVM TCBidXQgc3BsaXQgcGFydGl0aW9uIGRvZXMKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBG T1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFS VElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdW bGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJ TiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlv bnMgZG8gbm90IGhhdmUgdmFsdWUgTlVMTCBidXQgc3BsaXQgcGFydGl0aW9uIGRvZXMKKy0t IEVSUk9SOiAgbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgdmFsdWUgJ0t5aXYnIGJ1dCBz cGxpdCBwYXJ0aXRpb24gZG9lcworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJU SVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxV RVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04g c2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9z dG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fy c2F3JywgJ0JlcmxpbicsIE5VTEwpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbnMgZG8gbm90 IGhhdmUgdmFsdWUgJ0t5aXYnIGJ1dCBzcGxpdCBwYXJ0aXRpb24gZG9lcworLS0gRVJST1Ig IERFRkFVTFQgcGFydGl0aW9uIHNob3VsZCBiZSBvbmUKK0FMVEVSIFRBQkxFIHNhbGVzX2xp c3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf d2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAor ICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxo aScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZB TFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpLAorICAgUEFSVElUSU9OIHNh bGVzX290aGVycyBERUZBVUxULAorICAgUEFSVElUSU9OIHNhbGVzX290aGVyczIgREVGQVVM VCk7CitFUlJPUjogIERFRkFVTFQgcGFydGl0aW9uIHNob3VsZCBiZSBvbmUKK0xJTkUgNjog ICAgUEFSVElUSU9OIHNhbGVzX290aGVyczIgREVGQVVMVCk7CisgICAgICAgICAgICAgICAg ICAgICBeCitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CistLQorLS0gVGVzdDogQlkgTElTVCBw YXJ0aXRpb25pbmcsIFNQTElUIFBBUlRJVElPTiB3aXRoIGRhdGEKKy0tCitDUkVBVEUgVEFC TEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIFNFUklBTCwKKyBzYWxlc3BlcnNvbl9u YW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ft b3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVz X3N0YXRlKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzcGVyc29uX25hbWVfaWR4 IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzcGVyc29uX25hbWUpOworQ1JFQVRF IElOREVYIHNhbGVzX2xpc3Rfc2FsZXNfc3RhdGVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcg YnRyZWUgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElP TiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdIZWxzaW5raScsICdTdC4gUGV0ZXJz YnVyZycsICdPc2xvJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBz YWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZb3Jr JywgJ01hZHJpZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0RlbGhpJywgJ0t5aXYnLCAnVmxh ZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNh bGVzX2xpc3QgREVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzcGVyc29u X25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUwor ICAoJ1RydW1wJywgICAgJ0JlamluZycsICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKSwK KyAgKCdTbWlybm9mZicsICdOZXcgWW9yaycsICAgICAgICA1MDAsICcyMDIyLTAzLTAzJyks CisgICgnRm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAwLCAnMjAyMi0wMy0wNScp LAorICAoJ0l2YW5vdicsICAgJ1dhcnNhdycsICAgICAgICAgIDc1MCwgJzIwMjItMDMtMDQn KSwKKyAgKCdEZWV2JywgICAgICdMaXNib24nLCAgICAgICAgICAyNTAsICcyMDIyLTAzLTA3 JyksCisgICgnUG9pcm90JywgICAnQmVybGluJywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0w MScpLAorICAoJ01heScsICAgICAgJ09zbG8nLCAgICAgICAgICAgMTIwMCwgJzIwMjItMDMt MDYnKSwKKyAgKCdMaScsICAgICAgICdWbGFkaXZvc3RvaycsICAgIDExNTAsICcyMDIyLTAz LTA5JyksCisgICgnTWF5JywgICAgICAnT3NsbycsICAgICAgICAgICAxMjAwLCAnMjAyMi0w My0xMScpLAorICAoJ0hhbGRlcicsICAgJ0hlbHNpbmtpJywgICAgICAgIDgwMCwgJzIwMjIt MDMtMDInKSwKKyAgKCdNdWxsZXInLCAgICdNYWRyaWQnLCAgICAgICAgICA2NTAsICcyMDIy LTAzLTA1JyksCisgICgnU21pdGgnLCAgICAnS3lpdicsICAgICAgICAgICAgMzUwLCAnMjAy Mi0wMy0xMCcpLAorICAoJ0dhbmRpJywgICAgJ1dhcnNhdycsICAgICAgICAgIDE1MCwgJzIw MjItMDMtMDgnKSwKKyAgKCdQbGF0bycsICAgICdMaXNib24nLCAgICAgICAgICA5NTAsICcy MDIyLTAzLTA1Jyk7CitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBz YWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAo J0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19l YXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwK KyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAn QmVybGluJywgJ0t5aXYnKSk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3Q7Cisgc2FsZXNw ZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgIHNhbGVzX3N0YXRlICAgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgMSB8IFRydW1wICAgICAgICAgICAgfCBCZWppbmcgICAgICAgICB8ICAgICAg ICAgMTAwMCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAgICAgOCB8IExpICAgICAgICAgICAg ICAgfCBWbGFkaXZvc3RvayAgICB8ICAgICAgICAgMTE1MCB8IDAzLTA5LTIwMjIKKyAgICAg ICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICAgICB8ICAgICAg ICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAg ICAgfCBCZXJsaW4gICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyAgICAg ICAgICAgICAxMiB8IFNtaXRoICAgICAgICAgICAgfCBLeWl2ICAgICAgICAgICB8ICAgICAg ICAgIDM1MCB8IDAzLTEwLTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAg ICAgfCBXYXJzYXcgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKyAgICAg ICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCBTdC4gUGV0ZXJzYnVyZyB8ICAgICAg ICAgMjAwMCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAgICAgNyB8IE1heSAgICAgICAgICAg ICAgfCBPc2xvICAgICAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTA2LTIwMjIKKyAgICAg ICAgICAgICAgOSB8IE1heSAgICAgICAgICAgICAgfCBPc2xvICAgICAgICAgICB8ICAgICAg ICAgMTIwMCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAg ICAgfCBIZWxzaW5raSAgICAgICB8ICAgICAgICAgIDgwMCB8IDAzLTAyLTIwMjIKKyAgICAg ICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCBOZXcgWW9yayAgICAgICB8ICAgICAg ICAgIDUwMCB8IDAzLTAzLTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAg ICAgfCBMaXNib24gICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTA3LTIwMjIKKyAgICAg ICAgICAgICAxMSB8IE11bGxlciAgICAgICAgICAgfCBNYWRyaWQgICAgICAgICB8ICAgICAg ICAgIDY1MCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAgICAxNCB8IFBsYXRvICAgICAgICAg ICAgfCBMaXNib24gICAgICAgICB8ICAgICAgICAgIDk1MCB8IDAzLTA1LTIwMjIKKygxNCBy b3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3dlc3Q7Cisgc2FsZXNwZXJzb25faWQgfCBz YWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMiB8IFNtaXJu b2ZmICAgICAgICAgfCBOZXcgWW9yayAgICB8ICAgICAgICAgIDUwMCB8IDAzLTAzLTIwMjIK KyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCBMaXNib24gICAgICB8ICAg ICAgICAgIDI1MCB8IDAzLTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IE11bGxlciAgICAg ICAgICAgfCBNYWRyaWQgICAgICB8ICAgICAgICAgIDY1MCB8IDAzLTA1LTIwMjIKKyAgICAg ICAgICAgICAxNCB8IFBsYXRvICAgICAgICAgICAgfCBMaXNib24gICAgICB8ICAgICAgICAg IDk1MCB8IDAzLTA1LTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZWFz dDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19zdGF0ZSB8 IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAxIHwgVHJ1bXAgICAgICAgICAgICB8IEJlamluZyAgICAgIHwgICAg ICAgICAxMDAwIHwgMDMtMDEtMjAyMgorICAgICAgICAgICAgICA4IHwgTGkgICAgICAgICAg ICAgICB8IFZsYWRpdm9zdG9rIHwgICAgICAgICAxMTUwIHwgMDMtMDktMjAyMgorKDIgcm93 cykKKworU0VMRUNUICogRlJPTSBzYWxlc19ub3JkOworIHNhbGVzcGVyc29uX2lkIHwgc2Fs ZXNwZXJzb25fbmFtZSB8ICBzYWxlc19zdGF0ZSAgIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDMgfCBG b3JkICAgICAgICAgICAgIHwgU3QuIFBldGVyc2J1cmcgfCAgICAgICAgIDIwMDAgfCAwMy0w NS0yMDIyCisgICAgICAgICAgICAgIDcgfCBNYXkgICAgICAgICAgICAgIHwgT3NsbyAgICAg ICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0wNi0yMDIyCisgICAgICAgICAgICAgIDkgfCBN YXkgICAgICAgICAgICAgIHwgT3NsbyAgICAgICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0x MS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgSGVsc2lua2kg ICAgICAgfCAgICAgICAgICA4MDAgfCAwMy0wMi0yMDIyCisoNCByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2NlbnRyYWw7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9u YW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAg fCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAg ICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCBCZXJsaW4gICAgICB8ICAgICAgICAgMTAwMCB8 IDAzLTAxLTIwMjIKKyAgICAgICAgICAgICAxMiB8IFNtaXRoICAgICAgICAgICAgfCBLeWl2 ICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTEwLTIwMjIKKyAgICAgICAgICAgICAxMyB8 IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4 LTIwMjIKKyg0IHJvd3MpCisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhl cyBhZnRlciBzcGxpdHRpbmcgcGFydGl0aW9uCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9O OworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworU0VMRUNUICogRlJPTSBzYWxlc19jZW50 cmFsIFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7Cisgc2FsZXNwZXJzb25faWQgfCBz YWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5v diAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIK KyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAg ICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2Fs ZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworIHNhbGVzcGVyc29uX2lk IHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJ dmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0y MDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAg fCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9N IHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOworIHNhbGVz cGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAg fCAwMy0wNC0yMDIyCisoMSByb3cpCisKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitT RVQgZW5hYmxlX3NlcXNjYW4gPSBPTjsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0tCist LSBUZXN0IGZvcjoKKy0tICAgKiBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbiB0byBwYXJ0aXRp b25zIHdpdGggc3BhY2VzIGJldHdlZW4gYm91bmRzOworLS0gICAqIHJhbmRvbSBvcmRlciBv ZiBwYXJ0aXRpb25zIGluIFNQTElUIFBBUlRJVElPTiBjb21tYW5kLgorLS0KK0NSRUFURSBU QUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1l IFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJ VElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJz IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwK KyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0wOScpLAorICAoMywgICdGb3Jk JywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAg JzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycp LAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3JyksCisgICg3LCAgJ0xp JywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUs ICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTEx JyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAn VHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1 MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEt MDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQsCisgICBQQVJUSVRJT04gc2FsZXNf bWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIw MjItMDMtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyXzFkZWNhZGUgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMS0xMCcpLAorICAgUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xZGVj YWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSk7 CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjJfMWRlY2FkZTsKKyBzYWxlc3BlcnNvbl9p ZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAg Mzc3IHwgMDEtMDktMjAyMgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIw MjJfMWRlY2FkZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxl c19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDIgfCBT bWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMDktMjAyMgorICAgICAgICAg ICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTA3LTIwMjIK KygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMl8xZGVjYWRlOworIHNh bGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAg fCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00g c2FsZXNfYXByMjAyMl8xZGVjYWRlOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25f bmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIy CisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwg MDQtMDYtMjAyMgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7Cisg c2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAg ICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQg ICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgICAg IDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAg ICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIz LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAy NTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwg ICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAg ICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAxNCB8 IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoOCByb3dz KQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAq IHNwbGl0IG5vbi1ERUZBVUxUIHBhcnRpdGlvbiB0byBwYXJ0aXRpb25zIHdpdGggc3BhY2Vz IGJldHdlZW4gYm91bmRzOworLS0gICAqIHJhbmRvbSBvcmRlciBvZiBwYXJ0aXRpb25zIGlu IFNQTElUIFBBUlRJVElPTiBjb21tYW5kLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5n ZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBz YWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAo c2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTA1LTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01h eScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAs ICAnMjAyMi0wMi0wOScpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMw JyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAn RGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1 MCwgICcyMDIyLTAyLTA3JyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMt MDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwg ICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAg MzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0w NC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgx MywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAg ICA1MTAsICAnMjAyMi0wNS0wNCcpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8x ZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVz X2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTAyLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSk7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2phbjIwMjJfMWRlY2FkZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVz cGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEt MDktMjAyMgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjJfMWRlY2Fk ZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAg ICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMDktMjAyMgorICAgICAgICAgICAgICA2IHwg UG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTA3LTIwMjIKKygyIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMl8xZGVjYWRlOworIHNhbGVzcGVyc29u X2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCist LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAg ICAxNzUgfCAwMy0wOC0yMDIyCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXBy MjAyMl8xZGVjYWRlOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNSB8 IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAg ICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAy MgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7Cisgc2FsZXNwZXJz b25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAK Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAg ICAgIDUxMCB8IDA1LTA0LTIwMjIKKyAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAg ICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3Jk ICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICAg ICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAg ICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0y My0yMDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAg MjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8 ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAg ICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisoOCByb3dzKQorCitEUk9Q IFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIFRlc3QgZm9yIHNwbGl0IG5vbi1ERUZBVUxU IHBhcnRpdGlvbiB0byBERUZBVUxUIHBhcnRpdGlvbiArIHBhcnRpdGlvbnMKKy0tIHdpdGgg c3BhY2VzIGJldHdlZW4gYm91bmRzLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAo c2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxl c19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2Fs ZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0w MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwg JzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcp LAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2 YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAs ICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTEx JyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAn RXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1 MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEt MjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIs ICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAg Mzc3LCAgJzIwMjItMDEtMDknKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRP ICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwg ICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworIHNhbGVzcGVy c29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUg CistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAg ICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAg ICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2Fu ZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAg ICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisg ICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDIt MTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAg IDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAg fCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3Yg ICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICA1 IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAg ICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0y MDIyCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1 IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAg ICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAg ICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgICAgMTQgfCBT bWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJvd3Mp CisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNh bGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwg MDEtMzEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAg ICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAg ICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2ZlYjIwMjI7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1l IHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAg ICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAg ICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0x MS0yMDIyCisgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAg MTg1IHwgMDItMjMtMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIy MDIyOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3Vu dCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAg ICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgICAgIDQg fCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAg ICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIw MjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAg fCAwNC0wNi0yMDIyCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsK KyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBz YWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAg ICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVs bGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAg ICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisg ICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUt MDQtMjAyMgorKDQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBU cnkgdG8gU1BMSVQgcGFydGl0aW9uIG9mIGFub3RoZXIgdGFibGUuCistLQorQ1JFQVRFIFRB QkxFIHQxKGkgaW50LCB0IHRleHQpIFBBUlRJVElPTiBCWSBMSVNUICh0KTsKK0NSRUFURSBU QUJMRSB0MXBhIFBBUlRJVElPTiBPRiB0MSBGT1IgVkFMVUVTIElOICgnQScpOworQ1JFQVRF IFRBQkxFIHQyIChpIGludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UgKHQpOworLS0g RVJST1I6ICByZWxhdGlvbiAidDFwYSIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9u ICJ0MiIKK0FMVEVSIFRBQkxFIHQyIFNQTElUIFBBUlRJVElPTiB0MXBhIElOVE8KKyAgIChQ QVJUSVRJT04gdDJhIEZPUiBWQUxVRVMgRlJPTSAoJ0EnKSBUTyAoJ0InKSwKKyAgICBQQVJU SVRJT04gdDJiIEZPUiBWQUxVRVMgRlJPTSAoJ0InKSBUTyAoJ0MnKSk7CitFUlJPUjogIHJl bGF0aW9uICJ0MXBhIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgorSElO VDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBh cnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucworRFJPUCBUQUJMRSB0MjsKK0RS T1AgVEFCTEUgdDE7CistLQorLS0gVHJ5IHRvIFNQTElUIHBhcnRpdGlvbiBvZiB0ZW1wb3Jh cnkgdGFibGUuCistLQorQ1JFQVRFIFRFTVAgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBC WSBSQU5HRSAoaSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cu cmVnY2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lk KSwgYy5yZWxwZXJzaXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdf Y2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQg aS5pbmhwYXJlbnQgPSAndCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdf Z2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBn X2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKyAgb2lkICAgfCAgICAgICAg cGdfZ2V0X2V4cHIgICAgICAgICB8IHJlbHBlcnNpc3RlbmNlIAorLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdHBfMF8yIHwgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMikgfCB0CisoMSByb3cpCisKK0FMVEVSIFRBQkxFIHQg U1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVT IEZST00gKDEpIFRPICgyKSk7CistLSBQYXJ0aXRpb25zIHNob3VsZCBiZSB0ZW1wb3Jhcnku CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0 X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSwgYy5yZWxwZXJzaXN0ZW5jZQorICBGUk9N IHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdI RVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAndCc6OnJlZ2NsYXNz CisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMu b2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFs b2cudGV4dDsKKyAgb2lkICAgfCAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICB8IHJlbHBl cnNpc3RlbmNlIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tCisgdHBfMF8xIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSkgfCB0 CisgdHBfMV8yIHwgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikgfCB0CisoMiByb3dzKQor CitEUk9QIFRBQkxFIHQ7CistLSBDaGVjayB0aGUgbmV3IHBhcnRpdGlvbnMgaW5oZXJpdCBw YXJlbnQncyB0YWJsZXNwYWNlCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQgUFJJTUFSWSBLRVkg VVNJTkcgSU5ERVggVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKQorICBQQVJUSVRJT04g QlkgUkFOR0UgKGkpIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK0NSRUFURSBUQUJM RSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitB TFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9O IHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8x XzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworU0VMRUNUIHRhYmxlbmFtZSwgdGFi bGVzcGFjZSBGUk9NIHBnX3RhYmxlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3Rw XzBfMScsICd0cF8xXzInKSBBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2No ZW1hJworICBPUkRFUiBCWSB0YWJsZW5hbWUsIHRhYmxlc3BhY2U7CisgdGFibGVuYW1lIHwg ICAgdGFibGVzcGFjZSAgICAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQg ICAgICAgICB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8wXzEgICAgfCByZWdyZXNzX3RibHNw YWNlCisgdHBfMV8yICAgIHwgcmVncmVzc190YmxzcGFjZQorKDMgcm93cykKKworU0VMRUNU IHRhYmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNlIEZST00gcGdfaW5kZXhlcworICBX SEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMScsICd0cF8xXzInKSBBTkQgc2NoZW1h bmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5hbWUs IGluZGV4bmFtZSwgdGFibGVzcGFjZTsKKyB0YWJsZW5hbWUgfCAgaW5kZXhuYW1lICB8ICAg IHRhYmxlc3BhY2UgICAgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLQorIHQgICAgICAgICB8IHRfcGtleSAgICAgIHwgcmVncmVzc190YmxzcGFjZQor IHRwXzBfMSAgICB8IHRwXzBfMV9wa2V5IHwgcmVncmVzc190YmxzcGFjZQorIHRwXzFfMiAg ICB8IHRwXzFfMl9wa2V5IHwgcmVncmVzc190YmxzcGFjZQorKDMgcm93cykKKworRFJPUCBU QUJMRSB0OworLS0gQ2hlY2sgbmV3IHBhcnRpdGlvbnMgaW5oZXJpdHMgcGFyZW50J3MgdGFi bGUgYWNjZXNzIG1ldGhvZAorQ1JFQVRFIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uX3NwbGl0 X2hlYXAgVFlQRSBUQUJMRSBIQU5ETEVSIGhlYXBfdGFibGVhbV9oYW5kbGVyOworQ1JFQVRF IFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIFVTSU5HIHBhcnRpdGlv bl9zcGxpdF9oZWFwOworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9O IHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkg VE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgy KSk7CitTRUxFQ1QgYy5yZWxuYW1lLCBhLmFtbmFtZQorRlJPTSBwZ19jbGFzcyBjIEpPSU4g cGdfYW0gYSBPTiBjLnJlbGFtID0gYS5vaWQKK1dIRVJFIGMub2lkIElOICgndCc6OnJlZ2Ns YXNzLCAndHBfMF8xJzo6cmVnY2xhc3MsICd0cF8xXzInOjpyZWdjbGFzcykKK09SREVSIEJZ IGMucmVsbmFtZTsKKyByZWxuYW1lIHwgICAgICAgIGFtbmFtZSAgICAgICAgCistLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgfCBwYXJ0aXRpb25fc3BsaXRf aGVhcAorIHRwXzBfMSAgfCBwYXJ0aXRpb25fc3BsaXRfaGVhcAorIHRwXzFfMiAgfCBwYXJ0 aXRpb25fc3BsaXRfaGVhcAorKDMgcm93cykKKworRFJPUCBUQUJMRSB0OworRFJPUCBBQ0NF U1MgTUVUSE9EIHBhcnRpdGlvbl9zcGxpdF9oZWFwOworLS0gVGVzdCBwZXJtaXNzaW9uIGNo ZWNrcy4gIFRoZSB1c2VyIG5lZWRzIHRvIG93biB0aGUgcGFyZW50IHRhYmxlIGFuZCB0aGUK Ky0tIHRoZSBwYXJ0aXRpb24gdG8gc3BsaXQgdG8gZG8gdGhlIHNwbGl0LgorQ1JFQVRFIFJP TEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgUk9MRSByZWdyZXNz X3BhcnRpdGlvbl9zcGxpdF9ib2I7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9z cGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitHUkFOVCBB TEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRp b25fc3BsaXRfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZ IFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMik7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jl c3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9O IHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkg VE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgy KSk7CitFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdAorUkVTRVQgU0VTU0lPTiBB VVRIT1JJWkFUSU9OOworQUxURVIgVEFCTEUgdCBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlv bl9zcGxpdF9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0 aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJ TlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAor ICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitFUlJP UjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdHBfMF8yCitSRVNFVCBTRVNTSU9OIEFVVEhP UklaQVRJT047CitBTFRFUiBUQUJMRSB0cF8wXzIgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRp b25fc3BsaXRfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9ib2I7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIg SU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwK KyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworUkVT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworRFJPUCBUQUJMRSB0OworUkVWT0tFIEFMTCBP TiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9u X3NwbGl0X2FsaWNlOworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3Nj aGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0RST1AgUk9MRSByZWdy ZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlv bl9zcGxpdF9ib2I7CistLSBTcGxpdCBwYXJ0aXRpb24gb2YgYSB0ZW1wb3JhcnkgdGFibGUg d2hlbiBvbmUgb2YgdGhlIHBhcnRpdGlvbnMgYWZ0ZXIKKy0tIHNwbGl0IGhhcyB0aGUgc2Ft ZSBuYW1lIGFzIHRoZSBwYXJ0aXRpb24gYmVpbmcgc3BsaXQKK0NSRUFURSBURU1QIFRBQkxF IHQgKGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGEpOworQ1JFQVRFIFRFTVAgVEFCTEUg dHBfMCBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVS IFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzAgSU5UTworICAoUEFSVElUSU9OIHRwXzAg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMSBGT1IgVkFM VUVTIEZST00gKDEpIFRPICgyKSk7CitEUk9QIFRBQkxFIHQ7CistLSBDaGVjayBkZWZhdWx0 cyBhbmQgY29uc3RyYWludHMgb2YgbmV3IHBhcnRpdGlvbnMKK0NSRUFURSBUQUJMRSB0X2Jp Z2ludCAoCisgIGIgYmlnaW50LAorICBpIGludCBERUZBVUxUICgzKzEwKSwKKyAgaiBpbnQg REVGQVVMVCAxMDEsCisgIGsgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGIrMTApIFNUT1JF RAorKQorUEFSVElUSU9OIEJZIFJBTkdFIChiKTsKK0NSRUFURSBUQUJMRSB0X2JpZ2ludF9k ZWZhdWx0IFBBUlRJVElPTiBPRiB0X2JpZ2ludCBERUZBVUxUOworLS0gU2hvdyBkZWZhdWx0 cy9jb25zdHJhaW50cyBiZWZvcmUgU1BMSVQgUEFSVElUSU9OCitcZCsgdF9iaWdpbnQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJ0aXRpb25lZCB0YWJsZSAicGFy dGl0aW9uX3NwbGl0X3NjaGVtYS50X2JpZ2ludCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29s bGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAg ICAgIHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tCisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAg ICAgfCAKKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAzICsg MTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAg ICAgICB8IAorIGogICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IDEw MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAg ICAgICAgIHwgCisgayAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwg Z2VuZXJhdGVkIGFsd2F5cyBhcyAoKGIgKyAxMCkpIHN0b3JlZCB8IHBsYWluICAgfCAgICAg ICAgICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6IFJBTkdFIChiKQorUGFydGl0aW9uczogdF9i aWdpbnRfZGVmYXVsdCBERUZBVUxUCisKK1xkKyB0X2JpZ2ludF9kZWZhdWx0CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uX3NwbGl0X3Nj aGVtYS50X2JpZ2ludF9kZWZhdWx0IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24g fCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAgfCBT dG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBi ICAgICAgfCBiaWdpbnQgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAor IGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IDMgKyAxMCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwg CisgaiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgMTAxICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAg fCAKKyBrICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0 ZWQgYWx3YXlzIGFzICgoYiArIDEwKSkgc3RvcmVkIHwgcGxhaW4gICB8ICAgICAgICAgICAg ICB8IAorUGFydGl0aW9uIG9mOiB0X2JpZ2ludCBERUZBVUxUCitObyBwYXJ0aXRpb24gY29u c3RyYWludAorCitBTFRFUiBUQUJMRSB0X2JpZ2ludCBTUExJVCBQQVJUSVRJT04gdF9iaWdp bnRfZGVmYXVsdCBJTlRPCisgIChQQVJUSVRJT04gdF9iaWdpbnRfMDFfMTAgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMTApLAorICAgUEFSVElUSU9OIHRfYmlnaW50X2RlZmF1bHQgREVG QVVMVCk7CistLSBTaG93IGRlZmF1bHRzL2NvbnN0cmFpbnRzIGFmdGVyIFNQTElUIFBBUlRJ VElPTgorXGQrIHRfYmlnaW50X2RlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnRfYmlnaW50X2RlZmF1 bHQiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAg ICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJn ZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGIgICAgICB8IGJpZ2ludCAgfCAg ICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaSAgICAgIHwgaW50ZWdlciB8 ICAgICAgICAgICB8ICAgICAgICAgIHwgMyArIDEwICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBqICAgICAgfCBpbnRlZ2Vy IHwgICAgICAgICAgIHwgICAgICAgICAgfCAxMDEgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGsgICAgICB8IGludGVn ZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKChiICsg MTApKSBzdG9yZWQgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6 IHRfYmlnaW50IERFRkFVTFQKK1BhcnRpdGlvbiBjb25zdHJhaW50OiAoTk9UICgoYiBJUyBO T1QgTlVMTCkgQU5EICgoYiA+PSAnMCc6OmJpZ2ludCkgQU5EIChiIDwgJzEwJzo6YmlnaW50 KSkpKQorCitcZCsgdF9iaWdpbnRfMDFfMTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50X2JpZ2ludF8wMV8x MCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAg ICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgIHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdl dCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgYiAgICAgIHwgYmlnaW50ICB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBpICAgICAgfCBpbnRlZ2VyIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAzICsgMTAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGogICAgICB8IGludGVnZXIg fCAgICAgICAgICAgfCAgICAgICAgICB8IDEwMSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgayAgICAgIHwgaW50ZWdl ciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoKGIgKyAx MCkpIHN0b3JlZCB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBvZjog dF9iaWdpbnQgRk9SIFZBTFVFUyBGUk9NICgnMCcpIFRPICgnMTAnKQorUGFydGl0aW9uIGNv bnN0cmFpbnQ6ICgoYiBJUyBOT1QgTlVMTCkgQU5EIChiID49ICcwJzo6YmlnaW50KSBBTkQg KGIgPCAnMTAnOjpiaWdpbnQpKQorCitEUk9QIFRBQkxFIHRfYmlnaW50OworLS0gVGVzdDog b3duZXIgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIG93bmVyIG9m IHNwbGl0IHBhcnRpdGlvbgorQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRf YWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgVE8g cmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQp IFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJl Z3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFRBQkxFIHRwXzBfMihpIGlu dCk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitBTFRFUiBUQUJMRSB0IEFUVEFD SCBQQVJUSVRJT04gdHBfMF8yIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworLS0gT3du ZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK1xkdCB0cF8wXzIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiB0YWJsZXMKKyAgICAgICAgIFNj aGVtYSAgICAgICAgIHwgIE5hbWUgIHwgVHlwZSAgfCAgICAgICAgICAgICBPd25lciAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1h IHwgdHBfMF8yIHwgdGFibGUgfCByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZQorKDEg cm93KQorCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAo UEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJ VElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworLS0gT3duZXIgc2hv dWxkIGJlICdyZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitcZHQgdHBfMF8xCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgdGFibGVzCisgICAgICAgICBT Y2hlbWEgICAgICAgICB8ICBOYW1lICB8IFR5cGUgIHwgICAgICAgICAgICAgT3duZXIgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVt YSB8IHRwXzBfMSB8IHRhYmxlIHwgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKKygx IHJvdykKKworXGR0IHRwXzFfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHRhYmxlcworICAgICAgICAgU2NoZW1hICAgICAgICAgfCAgTmFtZSAgfCBUeXBlICB8 ICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCB0cF8xXzIgfCB0YWJsZSB8IHJlZ3Jlc3NfcGFy dGl0aW9uX3NwbGl0X2FsaWNlCisoMSByb3cpCisKK0RST1AgVEFCTEUgdDsKK1JFVk9LRSBB TEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9h bGljZTsKKy0tIFRlc3Q6IGluZGV4IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBiZSBjcmVh dGVkIHdpdGggc2FtZSBvd25lciBhcyBzcGxpdAorLS0gcGFydGl0aW9uCitDUkVBVEUgUk9M RSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEg cGFydGl0aW9uX3NwbGl0X3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGlj ZTsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRf YWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7 CitDUkVBVEUgVEFCTEUgdHBfMTBfMjAgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9N ICgxMCkgVE8gKDIwKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgxMSksICgxNik7CitDUkVB VEUgT1IgUkVQTEFDRSBGVU5DVElPTiBydW5fbWUoaW50ZWdlcikgUkVUVVJOUyBpbnRlZ2Vy IEFTICQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ3lvdSBhcmUgcnVubmluZyBtZSBhcyAl JywgQ1VSUkVOVF9VU0VSOworICBSRVRVUk4gJDE7CitFTkQKKyQkIExBTkdVQUdFIFBMUEdT UUwgSU1NVVRBQkxFOworLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2Fs aWNlJzoKK0NSRUFURSBJTkRFWCBPTiB0IChydW5fbWUoaSkpOworTk9USUNFOiAgeW91IGFy ZSBydW5uaW5nIG1lIGFzIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlCitOT1RJQ0U6 ICB5b3UgYXJlIHJ1bm5pbmcgbWUgYXMgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UK K1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKy0tIE93bmVyIHNob3VsZCBiZSAncmVn cmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UnOgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJU SVRJT04gdHBfMTBfMjAgSU5UTworICAoUEFSVElUSU9OIHRwXzEwXzE1IEZPUiBWQUxVRVMg RlJPTSAoMTApIFRPICgxNSksCisgICBQQVJUSVRJT04gdHBfMTVfMjAgRk9SIFZBTFVFUyBG Uk9NICgxNSkgVE8gKDIwKSk7CitOT1RJQ0U6ICB5b3UgYXJlIHJ1bm5pbmcgbWUgYXMgcmVn cmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKK05PVElDRTogIHlvdSBhcmUgcnVubmluZyBt ZSBhcyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZQorRFJPUCBUQUJMRSB0OworRFJP UCBGVU5DVElPTiBydW5fbWUoaW50ZWdlcik7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7 CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CistLSBUZXN0IGZv ciBoYXNoIHBhcnRpdGlvbmVkIHRhYmxlCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJ VElPTiBCWSBIQVNIKGkpOworQ1JFQVRFIFRBQkxFIHRwMSBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDApOworQ1JFQVRFIFRBQkxFIHRw MiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVS IDEpOworLS0gRVJST1I6ICBwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZSBj YW5ub3QgYmUgc3BsaXQKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwMSBJTlRP CisgIChQQVJUSVRJT04gdHAxXzEgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDQsIFJFTUFJ TkRFUiAwKSwKKyAgIFBBUlRJVElPTiB0cDFfMiBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMg NCwgUkVNQUlOREVSIDIpKTsKK0VSUk9SOiAgcGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9u ZWQgdGFibGUgY2Fubm90IGJlIHNwbGl0CistLSBFUlJPUjogIGxpc3Qgb2YgbmV3IHBhcnRp dGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0ZW1zCitBTFRFUiBUQUJMRSB0 IFNQTElUIFBBUlRJVElPTiB0cDEgSU5UTworICAoUEFSVElUSU9OIHRwMV8xIEZPUiBWQUxV RVMgV0lUSCAoTU9EVUxVUyA0LCBSRU1BSU5ERVIgMCkpOworRVJST1I6ICBsaXN0IG9mIG5l dyBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBpdGVtcworRFJPUCBU QUJMRSB0OworLS0gQWRkaXRpb25hbCB0ZXN0cyBmb3IgZXJyb3IgbWVzc2FnZXMKK0NSRUFU RSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgaW50LCBzYWxlc3BlcnNvbl9u YW1lIHZhcmNoYXIoMzApLCBzYWxlc19hbW91bnQgaW50LCBzYWxlc19kYXRlIGRhdGUpIFBB UlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFu MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w MS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJf YXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworLS0gRVJST1I6ICB1cHBlciBib3VuZCBv ZiBwYXJ0aXRpb24gInNhbGVzX2FwcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB1cHBlciBib3Vu ZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNi0wMScpKTsK K0VSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBpcyBu b3QgZXF1YWwgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitMSU5FIDQ6IC4u LiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDYtMC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLSBUZXN0 IGZvciBzcGxpdCBwYXJ0aXRpb24gcHJvcGVydGllczoKKy0tICogU1RBVElTVElDUyBpcyBl bXB0eQorLS0gKiBDT01NRU5UIGlzIGVtcHR5CistLSAqIERFRkFVTFRTIGFyZSB0aGUgc2Ft ZSBhcyBERUZBVUxUUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogU1RPUkFHRSBpcyB0 aGUgc2FtZSBhcyBTVE9SQUdFIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBHRU5FUkFU RUQgYW5kIENPTlNUUkFJTlRTIGFyZSB0aGUgc2FtZSBhcyBHRU5FUkFURUQgYW5kIENPTlNU UkFJTlRTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBUUklHR0VSUyBhcmUgdGhlIHNh bWUgYXMgVFJJR0dFUlMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCitDUkVBVEUgVEFCTEUgdAor KGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIEVYVEVOREVEIENPTVBSRVNTSU9O IHBnbHogREVGQVVMVCAnZGVmYXVsdF90JywKKyBiIGJpZ2ludCwKKyBkIGRhdGUgR0VORVJB VEVEIEFMV0FZUyBhcyAoJzIwMjItMDEtMDEnKSBTVE9SRUQpIFBBUlRJVElPTiBCWSBSQU5H RSAoYWJzKGkpKTsKK0NPTU1FTlQgT04gQ09MVU1OIHQuaSBJUyAndDEuaSc7CitDUkVBVEUg VEFCTEUgdHBfeAorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIE1BSU4gREVG QVVMVCAnZGVmYXVsdF90cF94JywKKyBiIGJpZ2ludCwKKyBkIGRhdGUgR0VORVJBVEVEIEFM V0FZUyBhcyAoJzIwMjItMDItMDInKSBTVE9SRUQpOworQUxURVIgVEFCTEUgdCBBVFRBQ0gg UEFSVElUSU9OIHRwX3ggRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitDT01NRU5UIE9O IENPTFVNTiB0cF94LmkgSVMgJ3RwX3guaSc7CitDUkVBVEUgU1RBVElTVElDUyB0X3N0YXQg KERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHQ7CitDUkVBVEUgU1RBVElTVElDUyB0cF94 X3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHRwX3g7CitBTFRFUiBUQUJMRSB0 IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjayBDSEVDSyAoYiA+IDApOworQUxURVIgVEFCTEUg dCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2sxIENIRUNLIChiID4gMCkgTk9UIEVORk9SQ0VE OworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2syIENIRUNLIChiID4g MCkgTk9UIFZBTElEOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2Jfbm4gTk9U IE5VTEwgYiBOT1QgVkFMSUQ7CitJTlNFUlQgSU5UTyB0cF94KGksIHQsIGIpIFZBTFVFUygw LCBERUZBVUxULCAxKTsKK0lOU0VSVCBJTlRPIHRwX3goaSwgdCwgYikgVkFMVUVTKDEsIERF RkFVTFQsIDIpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlv bigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMKKyRCT0RZJAorQkVH SU4KKyAgUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hl biA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZF TDsKKyAgUkVUVVJOIG5ldzsKK0VORDsKKyRCT0RZJDsKK0NSRUFURSBUUklHR0VSIHRfYmVm b3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHQgRk9SIEVBQ0ggUk9X CisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKTsKK0NSRUFURSBU UklHR0VSIHRwX3hfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9O IHRwX3ggRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rp b24oJ3RwX3gnKTsKK1xkKyB0cF94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnRwX3giCisg Q29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAg ICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgICAgICAgfCBTdG9yYWdlIHwgU3RhdHMg dGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgaSAgICAg IHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAg IHwgdHBfeC5pCisgdCAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwg J2RlZmF1bHRfdHBfeCc6OnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBtYWlu ICAgIHwgICAgICAgICAgICAgIHwgCisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8 IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgZCAgICAgIHwgZGF0ZSAgICB8 ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoJzAyLTAyLTIw MjInOjpkYXRlKSBzdG9yZWQgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRp b24gb2Y6IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikKK1BhcnRpdGlvbiBjb25zdHJh aW50OiAoKGFicyhpKSBJUyBOT1QgTlVMTCkgQU5EIChhYnMoaSkgPj0gMCkgQU5EIChhYnMo aSkgPCAyKSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJ0X2JfY2hlY2siIENIRUNLIChi ID4gMCkKKyAgICAidF9iX2NoZWNrMSIgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQKKyAg ICAidF9iX2NoZWNrMiIgQ0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQKK1N0YXRpc3RpY3Mgb2Jq ZWN0czoKKyAgICAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50cF94X3N0YXQiIChkZXBlbmRl bmNpZXMpIE9OIGksIGIgRlJPTSB0cF94CitOb3QtbnVsbCBjb25zdHJhaW50czoKKyAgICAi dHBfeF9pX25vdF9udWxsIiBOT1QgTlVMTCAiaSIgKGluaGVyaXRlZCkKKyAgICAidF9iX25u IiBOT1QgTlVMTCAiYiIgKGluaGVyaXRlZCkgTk9UIFZBTElECitUcmlnZ2VyczoKKyAgICB0 X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF94IEZPUiBF QUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKSwgT04gVEFC TEUgdAorICAgIHRwX3hfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJU IE9OIHRwX3ggRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlv bigndHBfeCcpCisKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwX3ggSU5UTwor ICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBB UlRJVElPTiB0cF94IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK1xkKyB0cF94Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAi cGFydGl0aW9uX3NwbGl0X3NjaGVtYS50cF94IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xs YXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAg ICAgICAgICAgICAgIHwgU3RvcmFnZSAgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAK Ky0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAg ICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorIHQgICAgICB8IHRleHQg ICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICdkZWZhdWx0X3QnOjp0ZXh0ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgZXh0ZW5kZWQgfCAgICAgICAgICAgICAgfCAKKyBi ICAgICAgfCBiaWdpbnQgIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgIHwgICAgICAg ICAgICAgIHwgCisgZCAgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwg Z2VuZXJhdGVkIGFsd2F5cyBhcyAoJzAxLTAxLTIwMjInOjpkYXRlKSBzdG9yZWQgfCBwbGFp biAgICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0IEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDIpCitQYXJ0aXRpb24gY29uc3RyYWludDogKChhYnMoaSkgSVMgTk9UIE5V TEwpIEFORCAoYWJzKGkpID49IDEpIEFORCAoYWJzKGkpIDwgMikpCitDaGVjayBjb25zdHJh aW50czoKKyAgICAidF9iX2NoZWNrIiBDSEVDSyAoYiA+IDApCisgICAgInRfYl9jaGVjazEi IENIRUNLIChiID4gMCkgTk9UIEVORk9SQ0VECisgICAgInRfYl9jaGVjazIiIENIRUNLIChi ID4gMCkgTk9UIFZBTElECitOb3QtbnVsbCBjb25zdHJhaW50czoKKyAgICAidF9pX25vdF9u dWxsIiBOT1QgTlVMTCAiaSIgKGluaGVyaXRlZCkKKyAgICAidF9iX25uIiBOT1QgTlVMTCAi YiIgKGluaGVyaXRlZCkgTk9UIFZBTElECitUcmlnZ2VyczoKKyAgICB0X2JlZm9yZV9pbnNl cnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF94IEZPUiBFQUNIIFJPVyBFWEVD VVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKSwgT04gVEFCTEUgdAorCitJTlNF UlQgSU5UTyB0KGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAzKTsKK05PVElDRTogIHRy aWdnZXIodCkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBCRUZPUkUsIGxldmVs ID0gUk9XCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdCBPUkRFUiBCWSBi OworIHRhYmxlb2lkIHwgaSB8ICAgICAgdCAgICAgICB8IGIgfCAgICAgZCAgICAgIAorLS0t LS0tLS0tLSstLS0rLS0tLS0tLS0tLS0tLS0rLS0tKy0tLS0tLS0tLS0tLQorIHRwXzBfMSAg IHwgMCB8IGRlZmF1bHRfdHBfeCB8IDEgfCAwMS0wMS0yMDIyCisgdHBfeCAgICAgfCAxIHwg ZGVmYXVsdF90cF94IHwgMiB8IDAxLTAxLTIwMjIKKyB0cF94ICAgICB8IDEgfCBkZWZhdWx0 X3QgICAgfCAzIHwgMDEtMDEtMjAyMgorKDMgcm93cykKKworRFJPUCBUQUJMRSB0OworRFJP UCBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCk7CistLSBUZXN0IGZvciByZWNvbXB1dGF0 aW9uIG9mIHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1ucy4KK0NSRUFURSBUQUJMRSB0IChpIGlu dCwgdGFiX2lkIGludCBnZW5lcmF0ZWQgYWx3YXlzIGFzICh0YWJsZW9pZCkgc3RvcmVkKSBQ QVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04g T0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgQUREIENP TlNUUkFJTlQgY2MgQ0hFQ0sodGFibGVvaWQgPD4gMTIzNDU2Nzg5KTsKK0lOU0VSVCBJTlRP IHQgVkFMVUVTICgwKSwgKDEpOworLS0gU2hvdWxkIGJlIDEgYmVjYXVzZSBwYXJ0aXRpb24g aWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0wIGlzIHRoZSBzYW1lIGFzCistLSBwYXJ0aXRp b24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0xLgorU0VMRUNUIGNvdW50KCopIEZST00g dCBXSEVSRSBpID0gMCBBTkQgdGFiX2lkIElOIChTRUxFQ1QgdGFiX2lkIEZST00gdCBXSEVS RSBpID0gMSk7CisgY291bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKworLS0gInRh Yl9pZCIgY29sdW1uIChzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbikgd2l0aCAidGFibGVvaWQi IGF0dHJpYnV0ZSByZXF1aXJlcworLS0gcmVjb21wdXRhdGlvbiBoZXJlLgorQUxURVIgVEFC TEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKKy0tIFNob3VsZCBiZSAwIGJlY2F1c2UgcGFydGl0 aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MCBpcyBkaWZmZXJlbnQgZnJvbQorLS0g cGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgq KSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9N IHQgV0hFUkUgaSA9IDEpOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisK K0RST1AgVEFCTEUgdDsKK1JFU0VUIHNlYXJjaF9wYXRoOworLS0KK0RST1AgU0NIRU1BIHBh cnRpdGlvbl9zcGxpdF9zY2hlbWE7CitEUk9QIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2No ZW1hMjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUg Yi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IDY0NjRhMjM4YWMu LmE5OGFlZjdjYTEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2No ZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTIz LDcgKzEyMyw3IEBAIHRlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAg ZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSBjb252ZXJzaW9uIHRyCiAjIFRoZSBzdGF0cyB0 ZXN0IHJlc2V0cyBzdGF0cywgc28gbm90aGluZyBlbHNlIG5lZWRpbmcgc3RhdHMgYWNjZXNz IGNhbiBiZSBpbgogIyB0aGlzIGdyb3VwLgogIyAtLS0tLS0tLS0tCi10ZXN0OiBwYXJ0aXRp b25fbWVyZ2UgcGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFz aF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9uX2luZm8gdHVw bGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24gbWVtb2l6ZSBzdGF0cyBwcmVkaWNhdGUgbnVt YQordGVzdDogcGFydGl0aW9uX21lcmdlIHBhcnRpdGlvbl9zcGxpdCBwYXJ0aXRpb25fam9p biBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNoX3BhcnQgaW5kZXhpbmcgcGFydGl0 aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBsZXNvcnQgZXhwbGFpbiBjb21wcmVz c2lvbiBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZSBudW1hCiAKICMgZXZlbnRfdHJpZ2dlciBk ZXBlbmRzIG9uIGNyZWF0ZV9hbSBhbmQgY2Fubm90IHJ1biBjb25jdXJyZW50bHkgd2l0aAog IyBhbnkgdGVzdCB0aGF0IHJ1bnMgRERMCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0 aW9uX3NwbGl0LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5i NjJkN2RjMzBkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFy dGl0aW9uX3NwbGl0LnNxbApAQCAtMCwwICsxLDExODggQEAKKy0tCistLSBQQVJUSVRJT05f U1BMSVQKKy0tIFRlc3RzIGZvciAiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiAu Li4iIGNvbW1hbmQKKy0tCisKK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVt YTsKK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTI7CitTRVQgc2VhcmNo X3BhdGggPSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLCBwdWJsaWM7CisKKy0tCistLSBCWSBS QU5HRSBwYXJ0aXRpb25pbmcKKy0tCisKKy0tCistLSBUZXN0IGZvciBlcnJvciBjb2Rlcwor LS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgaW50LCBzYWxl c3BlcnNvbl9uYW1lIHZhcmNoYXIoMzApLCBzYWxlc19hbW91bnQgaW50LCBzYWxlc19kYXRl IGRhdGUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gRVJS T1I6ICByZWxhdGlvbiAic2FsZXNfeHh4IiBkb2VzIG5vdCBleGlzdAorQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX3h4eCBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1 LTAxJykpOworCistLSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW4yMDIyIiBhbHJlYWR5 IGV4aXN0cworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8g KCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjog IGludmFsaWQgYm91bmQgc3BlY2lmaWNhdGlvbiBmb3IgYSByYW5nZSBwYXJ0aXRpb24KK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2Fw cjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBJTiAo JzIwMjItMDUtMDEnLCAnMjAyMi0wNi0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gRVJST1I6ICBlbXB0eSByYW5nZSBib3Vu ZCBzcGVjaWZpZWQgZm9yIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5U TworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w Mi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMi0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScp IFRPICgnMjAyMi0wNS0wMScpKTsKKworLS1FUlJPUjogIGxpc3Qgb2Ygc3BsaXQgcGFydGl0 aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gaXRlbXMKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0xMC0wMScpKTsKKworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIGxlc3MgdGhhbiBsb3dlciBib3VuZCBvZiBz cGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElP TiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMy0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0g RVJST1I6ICBuYW1lICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiIGlzIGFscmVhZHkgdXNlZAor LS0gKFdlIGNhbiBjcmVhdGUgcGFydGl0aW9uIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBzcGxp dCBwYXJ0aXRpb24sIGJ1dCBjYW4ndCBjcmVhdGUgdHdvIHBhcnRpdGlvbnMgd2l0aCB0aGUg c2FtZSBuYW1lKQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViX21hcl9h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0w MScpKTsKKworLS0gRVJST1I6ICBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVz ZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJf bWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAy Mi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gRVJST1I6ICAic2Fs ZXNfZmViX21hcl9hcHIyMDIyIiBpcyBub3QgYSBwYXJ0aXRpb25lZCB0YWJsZQorQUxURVIg VEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJf bWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAy Mi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gRVJST1I6ICB1cHBl ciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2FwcjIwMjIiIGlzIGdyZWF0ZXIgdGhhbiB1 cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgn MjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0w Ni0wMScpKTsKKworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVz X21hcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9u ICJzYWxlc19mZWIyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCist LSBUZXN0cyBmb3Igc3BhY2VzIGJldHdlZW4gcGFydGl0aW9ucywgdGhlbSBzaG91bGQgYmUg ZXhlY3V0ZWQgd2l0aG91dCBERUZBVUxUIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgREVUQUNIIFBBUlRJVElPTiBzYWxlc19vdGhlcnM7CisKKy0tIEVSUk9SOiAgbG93 ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8g bG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDInKSBUTyAo JzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjIt MDUtMDEnKSk7CisKKy0tIENoZWNrIHRoZSBzb3VyY2UgcGFydGl0aW9uIG5vdCBpbiB0aGUg c2VhcmNoIHBhdGgKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEy LCBwdWJsaWM7CitBTFRFUiBUQUJMRSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX3Jh bmdlCitTUExJVCBQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWJf bWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAy Mi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK1NFVCBzZWFyY2hfcGF0aCA9 IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKK1xkKyBzYWxlc19yYW5nZQorCitE Uk9QIFRBQkxFIHNhbGVzX3JhbmdlOworRFJPUCBUQUJMRSBzYWxlc19vdGhlcnM7CisKKy0t CistLSBBZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4gc3BsaXQgcGFydGl0 aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQs IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVz X2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBU QUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAw LCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEw JyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAn SXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1 MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDIt MTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwg ICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAg MjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0w MS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgx MiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAg ICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIy LTA1LTA0Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScp IFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworU0VMRUNU ICogRlJPTSBzYWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKK1NF TEVDVCAqIEZST00gc2FsZXNfZmViMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAy MjsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNf b3RoZXJzOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CisKKy0tCistLSBB ZGQgc3BsaXQgcGFydGl0aW9uLCB0aGVuIGFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFi bGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNf ZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKKy0t IFNwbGl0IHBhcnRpdGlvbiwgYWxzbyBjaGVjayBzY2hlbWEgcXVhbGlmaWNhdGlvbiBvZiBu ZXcgcGFydGl0aW9ucworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gcGFydGl0aW9uX3Nw bGl0X3NjaGVtYS5zYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2No ZW1hMi5zYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAo JzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitcZCsgc2FsZXNfcmFu Z2UKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAg ICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAy Mi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisg ICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldics ICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcy MDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwK KyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxs ZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAg JzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicp LAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dh bmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAs ICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworU0VMRUNU ICogRlJPTSBzYWxlc19qYW4yMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOwor U0VMRUNUICogRlJPTSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyOwor U0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhl cnM7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Qg Zm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAqIEdFTkVSQVRF RCBjb2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4KKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2Fs ZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2FsZXNf ZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2FsZXNf eWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6dGV4dCwg MiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcwJykpIFNUT1JF RCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxlcyBkZXBh cnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxlc19tb250 aCwgc2FsZXNfZGF5KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwgMSkgVE8gKDIwMjIs IDEsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbl9mZWIyMDIyIFBBUlRJVElPTiBPRiBz YWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDMsIDEp OworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZP UiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwgTUFY VkFMVUUpOworCitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNh bGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIx JywgMjAyMSwgMTIsIDcpLAorICAoJ01hbmFnZXIyJywgMjAyMSwgMTIsIDgpLAorICAoJ01h bmFnZXIzJywgMjAyMiwgMSwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0KSwKKyAg KCdNYW5hZ2VyMicsIDIwMjIsIDEsIDIpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMiwgMSks CisgICgnTWFuYWdlcjEnLCAyMDIyLCAzLCAzKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDMs IDQpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgNSwgMSk7CisKK1NFTEVDVCAqIEZST00gc2Fs ZXNfZGF0ZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZGVjMjAyMjsKK1NFTEVDVCAqIEZST00g c2FsZXNfamFuX2ZlYjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOworCitBTFRF UiBUQUJMRSBzYWxlc19kYXRlIFNQTElUIFBBUlRJVElPTiBzYWxlc19qYW5fZmViMjAyMiBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIs IDEsIDEpIFRPICgyMDIyLCAyLCAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpKTsKKworSU5TRVJU IElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDEsIDEwKSwK KyAgKCdNYW5hZ2VyMicsIDIwMjIsIDIsIDEwKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19k YXRlOworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworU0VMRUNUICogRlJPTSBzYWxl c19qYW4yMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworU0VMRUNUICogRlJP TSBzYWxlc19vdGhlcjsKKworLS1FUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW5fZmViMjAy MiIgZG9lcyBub3QgZXhpc3QKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuX2ZlYjIwMjI7CisK K0RST1AgVEFCTEUgc2FsZXNfZGF0ZSBDQVNDQURFOworCistLQorLS0gVGVzdDogc3BsaXQg REVGQVVMVCBwYXJ0aXRpb247IHVzZSBhbiBpbmRleCBvbiBwYXJ0aXRpb24ga2V5OyBjaGVj ayBpbmRleCBhZnRlciBzcGxpdAorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2Fs ZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19h bW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNf ZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug REVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBz YWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMx JyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAn Rm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1 MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQt MDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywg ICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywg MTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0w My0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgx MSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAg ICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIy LTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKwor U0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMg V0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX290aGVycycgYW5kIHNjaGVtYW5hbWUgPSAncGFy dGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lOworCitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDUtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKKy0t IFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcworU0VUIGVuYWJsZV9pbmRleHNj YW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKKworU0VMRUNUICogRlJPTSBz YWxlc19mZWIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzX21hcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsK K1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjIt MDEtMDEnOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnMgd2hlcmUgc2FsZXNfZGF0ZSA+ ICcyMDIyLTAxLTAxJzsKKworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFi bGVfc2Vxc2NhbiA9IE9OOworCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFi bGVuYW1lID0gJ3NhbGVzX2ZlYjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9z cGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKK1NFTEVDVCAqIEZST00gcGdfaW5k ZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfbWFyMjAyMicgYW5kIHNjaGVtYW5hbWUg PSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lOworU0VMRUNU ICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19hcHIyMDIyJyBh bmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRl eG5hbWU7CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3Nh bGVzX290aGVycycgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScg T1JERVIgQlkgaW5kZXhuYW1lOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7 CisKKy0tCistLSBUZXN0OiBzb21lIGNhc2VzIGZvciBzcGxpdHRpbmcgREVGQVVMVCBwYXJ0 aXRpb24gKGRpZmZlcmVudCBib3VuZHMpCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3Jhbmdl IChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNh bGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNh bGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNh bGVzX2RlYzIwMjIgKGxvd2VyIGJvdW5kKQorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX2Vycm9yIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5k IG9mIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAg IFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjMwKSBUTyAo MjAyMjAyMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMg REVGQVVMVCk7CisKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19mZWIy MDIyICh1cHBlciBib3VuZCkKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9u ICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBh cnRpdGlvbiAic2FsZXNfZXJyb3IiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIy IEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJ T04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDEwMSkgVE8gKDIwMjIwMjAy KSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAy MDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQp OworCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMiAoaW5z aWRlIGJvdW5kKQorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVz X2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9u ICJzYWxlc19lcnJvciIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElP TiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZB TFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxl c19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjEwKSBUTyAoMjAyMTEyMjApLAorICAg UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8g KDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKKy0t IHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIyIChleGFjdGx5IHRo ZSBzYW1lIGJvdW5kcykKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJz YWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRp dGlvbiAic2FsZXNfZXJyb3IiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIyIEZP UiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04g c2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwK KyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEp IFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOwor CistLSBFUlJPUjogIG9uZSBwYXJ0aXRpb24gaW4gdGhlIGxpc3Qgc2hvdWxkIGJlIERFRkFV TFQgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVAorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAx MDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIy MDEwMSkgVE8gKDIwMjIwMjAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSkpOworCistLSBubyBlcnJvcjog Ym91bmRzIG9mIHNhbGVzX25vZXJyb3IgYXJlIGJldHdlZW4gc2FsZXNfZGVjMjAyMiBhbmQg c2FsZXNfZmViMjAyMgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFM VUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVz X25vZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDExMCkgVE8gKDIwMjIwMTIwKSwKKyAg IFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRP ICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCitE Uk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNh bGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNf YW1vdW50IElOVCwgc2FsZXNfZGF0ZSBJTlQpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNf ZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBERUZBVUxUOworCistLSBubyBlcnJvcjogYm91bmRzIG9mIHNhbGVzX25vZXJyb3Ig YXJlIGVxdWFsIHRvIGxvd2VyIGFuZCB1cHBlciBib3VuZHMgb2Ygc2FsZXNfZGVjMjAyMiBh bmQgc2FsZXNfZmViMjAyMgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1Ig VkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNh bGVzX25vZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMDEwMSkgVE8gKDIwMjEwMjAxKSwK KyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEp IFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOwor CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0 aW9uIHdpdGggQ0hFQ0sgYW5kIEZPUkVJR04gS0VZIENPTlNUUkFJTlRzIG9uIHBhcnRpdGlv bmVkIHRhYmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lk IElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitJTlNF UlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CisKK0NSRUFURSBU QUJMRSBzYWxlc19yYW5nZSAoCitzYWxlc3BlcnNvbl9pZCBJTlQgUkVGRVJFTkNFUyBzYWxl c3Blb3BsZShzYWxlc3BlcnNvbl9pZCksCitzYWxlc19hbW91bnQgSU5UIENIRUNLIChzYWxl c19hbW91bnQgPiAxKSwKK3NhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc19kYXRlKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjIt MDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIw MjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIERFRkFVTFQ7CisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQp LCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0g J3NhbGVzX2ZlYl9tYXJfYXByMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFt ZTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Zl Yl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcy MDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBXZSBzaG91bGQg c2VlIHRoZSBzYW1lIENPTlNUUkFJTlRzIGFzIG9uIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBw YXJ0aXRpb24KK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBj b25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2ZlYjIw MjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWU7OworU0VMRUNUIHBnX2dldF9j b25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQg V0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfbWFyMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIg QlkgY29ubmFtZTs7CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFt ZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19h cHIyMDIyJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lOzsKKworLS0gRVJST1I6 ICBuZXcgcm93IGZvciByZWxhdGlvbiAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgY2hlY2sg Y29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrIgorSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAwLCAnMjAyMi0wMy0xMScpOworLS0gRVJST1I6 ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBm b3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9ma2V5 IgorSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgtMSwgMTAsICcyMDIyLTAzLTEx Jyk7CistLSBvaworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAxMCwgJzIw MjItMDMtMTEnKTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworRFJPUCBU QUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOworCistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0 aW9uIG9uIHBhcnRpdGlvbmVkIHRhYmxlIGluIGNhc2Ugb2YgZXhpc3RpbmcgRk9SRUlHTiBL RVkgcmVmZXJlbmNlIGZyb20gYW5vdGhlciB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxl c3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25h bWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOwor Q1JFQVRFIFRBQkxFIHNhbGVzIChzYWxlc3BlcnNvbl9pZCBJTlQgUkVGRVJFTkNFUyBzYWxl c3Blb3BsZShzYWxlc3BlcnNvbl9pZCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUg REFURSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBz YWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUg c2FsZXNwZW9wbGUxMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBG Uk9NICgxMCkgVE8gKDQwKTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTCisg ICgxLCAgJ1BvaXJvdCcpLAorICAoMTAsICdNYXknKSwKKyAgKDE5LCAnSXZhbm92JyksCisg ICgyMCwgJ1NtaXJub2ZmJyksCisgICgzMCwgJ0ZvcmQnKTsKKworSU5TRVJUIElOVE8gc2Fs ZXMgVkFMVUVTCisgICgxLCAgMTAwLCAnMjAyMi0wMy0wMScpLAorICAoMSwgIDExMCwgJzIw MjItMDMtMDInKSwKKyAgKDEwLCAxNTAsICcyMDIyLTAzLTAxJyksCisgICgxMCwgOTAsICAn MjAyMi0wMy0wMycpLAorICAoMTksIDIwMCwgJzIwMjItMDMtMDQnKSwKKyAgKDIwLCA1MCwg ICcyMDIyLTAzLTEyJyksCisgICgyMCwgMTcwLCAnMjAyMi0wMy0wMicpLAorICAoMzAsIDMw LCAgJzIwMjItMDMtMDQnKTsKKworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTAxXzEwOwor U0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTEwXzQwOworCitBTFRFUiBUQUJMRSBzYWxlc3Bl b3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAg UEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMw KSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzAp IFRPICg0MCkpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMDFfMTA7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzcGVvcGxlMTBfMjA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMjBf MzA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMzBfNDA7CisKKy0tIEVSUk9SOiAgaW5z ZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXMiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNv bnN0cmFpbnQgInNhbGVzX3NhbGVzcGVyc29uX2lkX2ZrZXkiCitJTlNFUlQgSU5UTyBzYWxl cyBWQUxVRVMgKDQwLCA1MCwgICcyMDIyLTAzLTA0Jyk7CistLSBvaworSU5TRVJUIElOVE8g c2FsZXMgVkFMVUVTICgzMCwgNTAsICAnMjAyMi0wMy0wNCcpOworCitEUk9QIFRBQkxFIHNh bGVzIENBU0NBREU7CitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CisKKy0tCist LSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgd2l0aCB0cmln Z2VycworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQg UFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBC WSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUw MV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAo MTApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgUEFSVElUSU9OIE9GIHNhbGVz cGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CisKK0lOU0VSVCBJTlRPIHNh bGVzcGVvcGxlIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKKworQ1JFQVRFIE9SIFJFUExBQ0Ug RlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExB TkdVQUdFICdwbHBnc3FsJyBBUyAkQk9EWSQKK0JFR0lOCisJUkFJU0UgTk9USUNFICd0cmln Z2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FS R1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAgICBSRVRVUk4gTlVMTDsKK0VO RDsKKyRCT0RZJDsKKworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0 X3N0YXRlbWVudF90cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9w bGUKKyAgICBGT1IgRUFDSCBTVEFURU1FTlQKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRl cl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CisKK0NSRUFURSBUUklHR0VS IHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9yb3dfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VS VAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VURSBQ Uk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworCist LSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNF UlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEwLCAnTWF5Jyk7CistLSAxIHRyaWdnZXIg c2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfNDAg VkFMVUVTICgxOSwgJ0l2YW5vdicpOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNw ZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9O IHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBB UlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkp OworCistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6 CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDIwLCAnU21pcm5vZmYnKTsKKy0t IDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNw ZW9wbGUzMF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVz cGVvcGxlMDFfMTA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMTBfMjA7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzcGVvcGxlMjBfMzA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMzBf NDA7CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKK0RST1AgRlVOQ1RJT04g YWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCk7CisKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0 aXRpb24gd2l0Y2ggaWRlbnRpdHkgY29sdW1uCistLSBJZiBzcGxpdCBwYXJ0aXRpb24gY29s dW1uIGlzIGlkZW50aXR5IGNvbHVtbiwgY29sdW1ucyBvZiBuZXcgcGFydGl0aW9ucyBhcmUg aWRlbnRpdHkgY29sdW1ucyB0b28uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNh bGVzcGVyc29uX2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZIFBSSU1BUlkg S0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0Ug KHNhbGVzcGVyc29uX2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMV8yIFBBUlRJ VElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKKy0tIENy ZWF0ZSBuZXcgcGFydGl0aW9uIHdpdGggaWRlbnRpdHkgY29sdW1uOgorQ1JFQVRFIFRBQkxF IHNhbGVzcGVvcGxlMl81KHNhbGVzcGVyc29uX2lkIElOVCBOT1QgTlVMTCwgc2FsZXNwZXJz b25fbmFtZSBWQVJDSEFSKDMwKSk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0gg UEFSVElUSU9OIHNhbGVzcGVvcGxlMl81IEZPUiBWQUxVRVMgRlJPTSAoMikgVE8gKDUpOwor CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSAoc2FsZXNwZXJzb25fbmFtZSkgVkFMVUVTICgn UG9pcm90JyksICgnSXZhbm92Jyk7CisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwg YXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0 dHJlbGlkID0gJ3NhbGVzcGVvcGxlJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07 CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0 dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTFf Mic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworLS0gU3BsaXQgcGFydGl0aW9u IGhhcyBpZGVudGl0eSBjb2x1bW46CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0 dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRy ZWxpZCA9ICdzYWxlc3Blb3BsZTJfNSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVt OworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9w bGUyXzUgSU5UTworICAoUEFSVElUSU9OIHNhbGVzcGVvcGxlMl8zIEZPUiBWQUxVRVMgRlJP TSAoMikgVE8gKDMpLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlM180IEZPUiBWQUxVRVMg RlJPTSAoMykgVE8gKDQpLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlNF81IEZPUiBWQUxV RVMgRlJPTSAoNCkgVE8gKDUpKTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgKHNhbGVz cGVyc29uX25hbWUpIFZBTFVFUyAoJ01heScpLCAoJ0ZvcmQnKTsKKworU0VMRUNUICogRlJP TSBzYWxlc3Blb3BsZTFfMjsKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUyXzM7CitTRUxF Q1QgKiBGUk9NIHNhbGVzcGVvcGxlM180OworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTRf NTsKKworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBw Z19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9w bGUnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKK1NFTEVDVCBhdHRuYW1lLCBh dHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51 bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlMV8yJzo6cmVnY2xhc3M6Om9pZCBP UkRFUiBCWSBhdHRudW07CistLSBOZXcgcGFydGl0aW9ucyBoYXZlIGlkZW50aXR5LWNvbHVt bnM6CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBn X2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3Bs ZTJfMyc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworU0VMRUNUIGF0dG5hbWUs IGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0 bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUzXzQnOjpyZWdjbGFzczo6b2lk IE9SREVSIEJZIGF0dG51bTsKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2Vu ZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlk ID0gJ3NhbGVzcGVvcGxlNF81Jzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CisK K0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0 IHBhcnRpdGlvbiB3aXRoIGRlbGV0ZWQgY29sdW1ucworLS0KK0NSRUFURSBUQUJMRSBzYWxl c3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25h bWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOwor CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9w bGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRp b24gd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3Bs ZTEwXzQwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVks IGQyIElOVCwgZDMgREFURSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CisKK0lO U0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfNDAgVkFMVUVTCisgICgnZHVtbXkgdmFsdWUgMScs IDE5LCAxMDAsIG5vdygpLCAnSXZhbm92JyksCisgICgnZHVtbXkgdmFsdWUgMicsIDIwLCAx MDEsIG5vdygpLCAnU21pcm5vZmYnKTsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF80 MCBEUk9QIENPTFVNTiBkMTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgRFJPUCBD T0xVTU4gZDI7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIERST1AgQ09MVU1OIGQz OworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVv cGxlMTBfNDAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKKworSU5TRVJUIElOVE8g c2FsZXNwZW9wbGUgVkFMVUVTCisgICgxLCAnUG9pcm90JyksCisgICgxMCwgJ01heScpLAor ICAoMzAsICdGb3JkJyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJ VElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTEw XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNw ZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApLAorICAgUEFSVElUSU9O IHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7CisKK3Nl bGVjdCAqIGZyb20gc2FsZXNwZW9wbGUwMV8xMDsKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9w bGUxMF8yMDsKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGUyMF8zMDsKK3NlbGVjdCAqIGZy b20gc2FsZXNwZW9wbGUzMF80MDsKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURF OworCistLQorLS0gVGVzdDogc3BsaXQgc3ViLXBhcnRpdGlvbgorLS0KK0NSRUFURSBUQUJM RSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZB UkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElP TiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScp IFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIy LTA0LTAxJyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNvbl9p ZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQs IHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19hcHJfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CisKK0NSRUFU RSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7 CisKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19y YW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisg ICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcs ICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcy MDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwK KyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScs ICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAg JzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScp LAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1Ry dW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAs ICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5 JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNU ICogRlJPTSBzYWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKKwor QUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBTUExJVCBQQVJUSVRJT04gc2FsZXNfYXByX2Fs bCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8wMV8xMCBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfYXByMjAyMl8xMF8yMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTEwJykgVE8gKCcy MDIyLTA0LTIwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8yMF8zMCBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1LTAxJykpOworCitTRUxFQ1Qg KiBGUk9NIHNhbGVzX3JhbmdlOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworU0VM RUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzAxXzEwOworU0VMRUNUICogRlJPTSBzYWxlc19h cHIyMDIyXzEwXzIwOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzIwXzMwOworCitE Uk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gQlkgTElTVCBwYXJ0aXRpb25pbmcK Ky0tCisKKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0 aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJ TlQsCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJD SEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJ VElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19ub3Jk IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQ ZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJ VElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnTGlzYm9uJywg J05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0RlbGhpJywgJ0t5 aXYnLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElU SU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9u ICJzYWxlc19lYXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciAobm90IHNwbGl0KSBw YXJ0aXRpb24gInNhbGVzX25vcmQiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBB UlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZB TFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2 b3N0b2snLCAnSGVsc2lua2knKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBW QUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7CisKKy0tIEVSUk9SOiAg bmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIg bmV3IHBhcnRpdGlvbiAic2FsZXNfY2VudHJhbCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3Qg U1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2Vz dCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAg UEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScs ICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVF UyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnTGlzYm9uJywgJ0t5aXYnKSk7CisKKy0tIEVS Uk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgTlVMTCB2YWx1 ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlCitBTFRFUiBUQUJMRSBz YWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRy aWQnLCBOVUxMKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdC ZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19j ZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7CisK Ky0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgdGhp cyB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlCitBTFRFUiBU QUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycs ICdNYWRyaWQnLCAnTWVsYm91cm5lJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1Ig VkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJU SVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jlcmxpbics ICdLeWl2JykpOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gY2Fubm90IGJlIERFRkFV TFQgYmVjYXVzZSBERUZBVUxUIHBhcnRpdGlvbiBhbHJlYWR5IGV4aXN0cworQUxURVIgVEFC TEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAn TWFkcmlkJywgJ01lbGJvdXJuZScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZB TFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElU SU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAn S3lpdicpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVyczIgREVGQVVMVCk7CisKK0RST1Ag VEFCTEUgc2FsZXNfbGlzdDsKKworLS0KKy0tIFRlc3Q6IHR3byBzcGVjaWZpYyBlcnJvcnMg Zm9yIEJZIExJU1QgcGFydGl0aW9uaW5nOgorLS0gICAqIG5ldyBwYXJ0aXRpb25zIGRvIG5v dCBoYXZlIE5VTEwgdmFsdWUsIHdoaWNoIHNwbGl0IHBhcnRpdGlvbiBoYXMuCistLSAgICog bmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgYSB2YWx1ZSB0aGF0IHNwbGl0IHBhcnRpdGlv biBoYXMuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJ TlQsCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJD SEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJ VElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19ub3Jk IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdIZWxzaW5raScsICdT dC4gUGV0ZXJzYnVyZycsICdPc2xvJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJ VElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnTGlzYm9uJywg J05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0RlbGhpJywgJ0t5 aXYnLCAnVmxhZGl2b3N0b2snLCBOVUxMKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9u cyBkbyBub3QgaGF2ZSB2YWx1ZSBOVUxMIGJ1dCBzcGxpdCBwYXJ0aXRpb24gZG9lcworQUxU RVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlv cmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElO ICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2Jykp OworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlICdLeWl2 JyBidXQgc3BsaXQgcGFydGl0aW9uIGRvZXMKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBG T1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFS VElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdW bGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJ TiAoJ1dhcnNhdycsICdCZXJsaW4nLCBOVUxMKSk7CisKKy0tIEVSUk9SICBERUZBVUxUIHBh cnRpdGlvbiBzaG91bGQgYmUgb25lCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBB UlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZB TFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2 b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdX YXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMg REVGQVVMVCwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOworCitEUk9Q IFRBQkxFIHNhbGVzX2xpc3Q7CisKKy0tCistLSBUZXN0OiBCWSBMSVNUIHBhcnRpdGlvbmlu ZywgU1BMSVQgUEFSVElUSU9OIHdpdGggZGF0YQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19s aXN0Cisoc2FsZXNwZXJzb25faWQgU0VSSUFMLAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hB UigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwK KyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOwor CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBPTiBzYWxl c19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc3BlcnNvbl9uYW1lKTsKK0NSRUFURSBJTkRFWCBz YWxlc19saXN0X3NhbGVzX3N0YXRlX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChz YWxlc19zdGF0ZSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBz YWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdIZWxzaW5raScsICdTdC4gUGV0ZXJzYnVyZycs ICdPc2xvJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19s aXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01h ZHJpZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0RlbGhpJywgJ0t5aXYnLCAnVmxhZGl2b3N0 b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xp c3QgREVGQVVMVDsKKworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNwZXJzb25fbmFt ZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTCisgICgn VHJ1bXAnLCAgICAnQmVqaW5nJywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpLAorICAo J1NtaXJub2ZmJywgJ05ldyBZb3JrJywgICAgICAgIDUwMCwgJzIwMjItMDMtMDMnKSwKKyAg KCdGb3JkJywgICAgICdTdC4gUGV0ZXJzYnVyZycsIDIwMDAsICcyMDIyLTAzLTA1JyksCisg ICgnSXZhbm92JywgICAnV2Fyc2F3JywgICAgICAgICAgNzUwLCAnMjAyMi0wMy0wNCcpLAor ICAoJ0RlZXYnLCAgICAgJ0xpc2JvbicsICAgICAgICAgIDI1MCwgJzIwMjItMDMtMDcnKSwK KyAgKCdQb2lyb3QnLCAgICdCZXJsaW4nLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyks CisgICgnTWF5JywgICAgICAnT3NsbycsICAgICAgICAgICAxMjAwLCAnMjAyMi0wMy0wNicp LAorICAoJ0xpJywgICAgICAgJ1ZsYWRpdm9zdG9rJywgICAgMTE1MCwgJzIwMjItMDMtMDkn KSwKKyAgKCdNYXknLCAgICAgICdPc2xvJywgICAgICAgICAgIDEyMDAsICcyMDIyLTAzLTEx JyksCisgICgnSGFsZGVyJywgICAnSGVsc2lua2knLCAgICAgICAgODAwLCAnMjAyMi0wMy0w MicpLAorICAoJ011bGxlcicsICAgJ01hZHJpZCcsICAgICAgICAgIDY1MCwgJzIwMjItMDMt MDUnKSwKKyAgKCdTbWl0aCcsICAgICdLeWl2JywgICAgICAgICAgICAzNTAsICcyMDIyLTAz LTEwJyksCisgICgnR2FuZGknLCAgICAnV2Fyc2F3JywgICAgICAgICAgMTUwLCAnMjAyMi0w My0wOCcpLAorICAoJ1BsYXRvJywgICAgJ0xpc2JvbicsICAgICAgICAgIDk1MCwgJzIwMjIt MDMtMDUnKTsKKworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdM aXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFz dCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisg ICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jl cmxpbicsICdLeWl2JykpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3Q7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzX3dlc3Q7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Vhc3Q7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzX25vcmQ7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2NlbnRyYWw7CisKKy0t IFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcyBhZnRlciBzcGxpdHRpbmcgcGFy dGl0aW9uCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2Fu ID0gT0ZGOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2NlbnRyYWwgV0hFUkUgc2FsZXNfc3Rh dGUgPSAnV2Fyc2F3JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19z dGF0ZSA9ICdXYXJzYXcnOworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVz cGVyc29uX25hbWUgPSAnSXZhbm92JzsKKworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsK K1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9OOworCitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CisK Ky0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbiB0byBw YXJ0aXRpb25zIHdpdGggc3BhY2VzIGJldHdlZW4gYm91bmRzOworLS0gICAqIHJhbmRvbSBv cmRlciBvZiBwYXJ0aXRpb25zIGluIFNQTElUIFBBUlRJVElPTiBjb21tYW5kLgorLS0KK0NS RUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUp IFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf b3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0w MS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTA5JyksCisgICgz LCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92Jywg ICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIy LTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMDcnKSwKKyAg KDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3Nv bicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIw MjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAor ICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRv JywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAn MjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7 CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhl cnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxULAorICAgUEFSVElU SU9OIHNhbGVzX21hcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTAzLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfamFuMjAyMl8xZGVj YWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDEtMTAnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMi0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Fw cjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA0LTEwJykpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjJfMWRlY2FkZTsKK1NF TEVDVCAqIEZST00gc2FsZXNfZmViMjAyMl8xZGVjYWRlOworU0VMRUNUICogRlJPTSBzYWxl c19tYXIyMDIyXzFkZWNhZGU7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMWRlY2Fk ZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworCitEUk9QIFRBQkxFIHNhbGVzX3Jh bmdlOworCistLQorLS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgbm9uLURFRkFVTFQgcGFy dGl0aW9uIHRvIHBhcnRpdGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHM7CistLSAg ICogcmFuZG9tIG9yZGVyIG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFSVElUSU9OIGNvbW1h bmQuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQs IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVz X2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBU QUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIy LTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMDknKSwKKyAg KDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3Yn LCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIw MjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0wNycpLAor ICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNz c29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAn MjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyks CisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxh dG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3Nywg ICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQn KTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Fs bCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19qYW4yMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRP ICgnMjAyMi0wMS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFu MjAyMl8xZGVjYWRlOworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyXzFkZWNhZGU7CitT RUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjJfMWRlY2FkZTsKK1NFTEVDVCAqIEZST00gc2Fs ZXNfYXByMjAyMl8xZGVjYWRlOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7CisKK0RS T1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBUZXN0IGZvciBzcGxpdCBub24tREVG QVVMVCBwYXJ0aXRpb24gdG8gREVGQVVMVCBwYXJ0aXRpb24gKyBwYXJ0aXRpb25zCistLSB3 aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kcy4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFu Z2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwg c2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0Ug KHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjIt MDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsK KworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAg MTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0w Mi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0 LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAg ICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIy LTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAg KDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXIn LCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIw MjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAor ICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRp JywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug U1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERF RkFVTFQpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgn LCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3Jhbmdl OworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19m ZWIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworU0VMRUNUICogRlJPTSBz YWxlc19vdGhlcnM7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBUcnkg dG8gU1BMSVQgcGFydGl0aW9uIG9mIGFub3RoZXIgdGFibGUuCistLQorQ1JFQVRFIFRBQkxF IHQxKGkgaW50LCB0IHRleHQpIFBBUlRJVElPTiBCWSBMSVNUICh0KTsKK0NSRUFURSBUQUJM RSB0MXBhIFBBUlRJVElPTiBPRiB0MSBGT1IgVkFMVUVTIElOICgnQScpOworQ1JFQVRFIFRB QkxFIHQyIChpIGludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UgKHQpOworCistLSBF UlJPUjogIHJlbGF0aW9uICJ0MXBhIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24g InQyIgorQUxURVIgVEFCTEUgdDIgU1BMSVQgUEFSVElUSU9OIHQxcGEgSU5UTworICAgKFBB UlRJVElPTiB0MmEgRk9SIFZBTFVFUyBGUk9NICgnQScpIFRPICgnQicpLAorICAgIFBBUlRJ VElPTiB0MmIgRk9SIFZBTFVFUyBGUk9NICgnQicpIFRPICgnQycpKTsKKworRFJPUCBUQUJM RSB0MjsKK0RST1AgVEFCTEUgdDE7CisKKy0tCistLSBUcnkgdG8gU1BMSVQgcGFydGl0aW9u IG9mIHRlbXBvcmFyeSB0YWJsZS4KKy0tCitDUkVBVEUgVEVNUCBUQUJMRSB0IChpIGludCkg UEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzBfMiBQQVJU SVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKKworU0VMRUNUIGMub2lk OjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFy dGJvdW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBn X2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGku aW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBw Z19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVM VCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK0FM VEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04g dHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFf MiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CisKKy0tIFBhcnRpdGlvbnMgc2hvdWxk IGJlIHRlbXBvcmFyeS4KK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdf Y2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNp c3RlbmNlCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2lu aGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9 ICd0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJl bHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdj bGFzczo6cGdfY2F0YWxvZy50ZXh0OworCitEUk9QIFRBQkxFIHQ7CisKKy0tIENoZWNrIHRo ZSBuZXcgcGFydGl0aW9ucyBpbmhlcml0IHBhcmVudCdzIHRhYmxlc3BhY2UKK0NSRUFURSBU QUJMRSB0IChpIGludCBQUklNQVJZIEtFWSBVU0lORyBJTkRFWCBUQUJMRVNQQUNFIHJlZ3Jl c3NfdGJsc3BhY2UpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVEFCTEVTUEFDRSByZWdy ZXNzX3RibHNwYWNlOworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9O IHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkg VE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgy KSk7CitTRUxFQ1QgdGFibGVuYW1lLCB0YWJsZXNwYWNlIEZST00gcGdfdGFibGVzCisgIFdI RVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8xJywgJ3RwXzFfMicpIEFORCBzY2hlbWFu YW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnCisgIE9SREVSIEJZIHRhYmxlbmFtZSwg dGFibGVzcGFjZTsKK1NFTEVDVCB0YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZSBG Uk9NIHBnX2luZGV4ZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzEnLCAn dHBfMV8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScKKyAg T1JERVIgQlkgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRhYmxlc3BhY2U7CitEUk9QIFRBQkxF IHQ7CisKKy0tIENoZWNrIG5ldyBwYXJ0aXRpb25zIGluaGVyaXRzIHBhcmVudCdzIHRhYmxl IGFjY2VzcyBtZXRob2QKK0NSRUFURSBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbl9zcGxpdF9o ZWFwIFRZUEUgVEFCTEUgSEFORExFUiBoZWFwX3RhYmxlYW1faGFuZGxlcjsKK0NSRUFURSBU QUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBVU0lORyBwYXJ0aXRpb25f c3BsaXRfaGVhcDsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0 cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikp OworU0VMRUNUIGMucmVsbmFtZSwgYS5hbW5hbWUKK0ZST00gcGdfY2xhc3MgYyBKT0lOIHBn X2FtIGEgT04gYy5yZWxhbSA9IGEub2lkCitXSEVSRSBjLm9pZCBJTiAoJ3QnOjpyZWdjbGFz cywgJ3RwXzBfMSc6OnJlZ2NsYXNzLCAndHBfMV8yJzo6cmVnY2xhc3MpCitPUkRFUiBCWSBj LnJlbG5hbWU7CitEUk9QIFRBQkxFIHQ7CitEUk9QIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9u X3NwbGl0X2hlYXA7CisKKy0tIFRlc3QgcGVybWlzc2lvbiBjaGVja3MuICBUaGUgdXNlciBu ZWVkcyB0byBvd24gdGhlIHBhcmVudCB0YWJsZSBhbmQgdGhlCistLSB0aGUgcGFydGl0aW9u IHRvIHNwbGl0IHRvIGRvIHRoZSBzcGxpdC4KK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0 aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRf Ym9iOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJl Z3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKKwor U0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGlj ZTsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NS RUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMik7CisKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25f c3BsaXRfYm9iOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8K KyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQ QVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK1JFU0VUIFNF U1NJT04gQVVUSE9SSVpBVElPTjsKKworQUxURVIgVEFCTEUgdCBPV05FUiBUTyByZWdyZXNz X3BhcnRpdGlvbl9zcGxpdF9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jl c3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9O IHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkg VE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgy KSk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVSIFRBQkxFIHRwXzBf MiBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitTRVQgU0VTU0lPTiBB VVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxF IHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFM VUVTIEZST00gKDEpIFRPICgyKSk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisK K0RST1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK1JFVk9LRSBBTEwg T04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlv bl9zcGxpdF9ib2I7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7 CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworCistLSBTcGxpdCBw YXJ0aXRpb24gb2YgYSB0ZW1wb3JhcnkgdGFibGUgd2hlbiBvbmUgb2YgdGhlIHBhcnRpdGlv bnMgYWZ0ZXIKKy0tIHNwbGl0IGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBwYXJ0aXRpb24g YmVpbmcgc3BsaXQKK0NSRUFURSBURU1QIFRBQkxFIHQgKGEgaW50KSBQQVJUSVRJT04gQlkg UkFOR0UgKGEpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMCBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9O IHRwXzAgSU5UTworICAoUEFSVElUSU9OIHRwXzAgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MSksCisgICBQQVJUSVRJT04gdHBfMSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitE Uk9QIFRBQkxFIHQ7CisKKy0tIENoZWNrIGRlZmF1bHRzIGFuZCBjb25zdHJhaW50cyBvZiBu ZXcgcGFydGl0aW9ucworQ1JFQVRFIFRBQkxFIHRfYmlnaW50ICgKKyAgYiBiaWdpbnQsCisg IGkgaW50IERFRkFVTFQgKDMrMTApLAorICBqIGludCBERUZBVUxUIDEwMSwKKyAgayBpbnQg R0VORVJBVEVEIEFMV0FZUyBBUyAoYisxMCkgU1RPUkVECispCitQQVJUSVRJT04gQlkgUkFO R0UgKGIpOworQ1JFQVRFIFRBQkxFIHRfYmlnaW50X2RlZmF1bHQgUEFSVElUSU9OIE9GIHRf YmlnaW50IERFRkFVTFQ7CistLSBTaG93IGRlZmF1bHRzL2NvbnN0cmFpbnRzIGJlZm9yZSBT UExJVCBQQVJUSVRJT04KK1xkKyB0X2JpZ2ludAorXGQrIHRfYmlnaW50X2RlZmF1bHQKK0FM VEVSIFRBQkxFIHRfYmlnaW50IFNQTElUIFBBUlRJVElPTiB0X2JpZ2ludF9kZWZhdWx0IElO VE8KKyAgKFBBUlRJVElPTiB0X2JpZ2ludF8wMV8xMCBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgxMCksCisgICBQQVJUSVRJT04gdF9iaWdpbnRfZGVmYXVsdCBERUZBVUxUKTsKKy0tIFNo b3cgZGVmYXVsdHMvY29uc3RyYWludHMgYWZ0ZXIgU1BMSVQgUEFSVElUSU9OCitcZCsgdF9i aWdpbnRfZGVmYXVsdAorXGQrIHRfYmlnaW50XzAxXzEwCitEUk9QIFRBQkxFIHRfYmlnaW50 OworCisKKy0tIFRlc3Q6IG93bmVyIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBiZSB0aGUg c2FtZSBhcyBvd25lciBvZiBzcGxpdCBwYXJ0aXRpb24KK0NSRUFURSBST0xFIHJlZ3Jlc3Nf cGFydGl0aW9uX3NwbGl0X2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25f c3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworCitDUkVB VEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CisKK1NFVCBTRVNT SU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVB VEUgVEFCTEUgdHBfMF8yKGkgaW50KTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsK KworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzBfMiBGT1IgVkFMVUVTIEZS T00gKDApIFRPICgyKTsKKworLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0 X2FsaWNlJzoKK1xkdCB0cF8wXzIKKworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04g dHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIp KTsKKworLS0gT3duZXIgc2hvdWxkIGJlICdyZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGlj ZSc6CitcZHQgdHBfMF8xCitcZHQgdHBfMV8yCisKK0RST1AgVEFCTEUgdDsKK1JFVk9LRSBB TEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9h bGljZTsKKworCistLSBUZXN0OiBpbmRleCBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgYmUg Y3JlYXRlZCB3aXRoIHNhbWUgb3duZXIgYXMgc3BsaXQKKy0tIHBhcnRpdGlvbgorQ1JFQVRF IFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NI RU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRf YWxpY2U7CisKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25f c3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5H RSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMTBfMjAgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBGUk9NICgxMCkgVE8gKDIwKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgxMSksICgxNik7 CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBydW5fbWUoaW50ZWdlcikgUkVUVVJOUyBp bnRlZ2VyIEFTICQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ3lvdSBhcmUgcnVubmluZyBt ZSBhcyAlJywgQ1VSUkVOVF9VU0VSOworICBSRVRVUk4gJDE7CitFTkQKKyQkIExBTkdVQUdF IFBMUEdTUUwgSU1NVVRBQkxFOworCistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRpb25f c3BsaXRfYWxpY2UnOgorQ1JFQVRFIElOREVYIE9OIHQgKHJ1bl9tZShpKSk7CitSRVNFVCBT RVNTSU9OIEFVVEhPUklaQVRJT047CisKKy0tIE93bmVyIHNob3VsZCBiZSAncmVncmVzc19w YXJ0aXRpb25fc3BsaXRfYWxpY2UnOgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04g dHBfMTBfMjAgSU5UTworICAoUEFSVElUSU9OIHRwXzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAo MTApIFRPICgxNSksCisgICBQQVJUSVRJT04gdHBfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgx NSkgVE8gKDIwKSk7CisKK0RST1AgVEFCTEUgdDsKK0RST1AgRlVOQ1RJT04gcnVuX21lKGlu dGVnZXIpOworCitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1h IEZST00gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVz c19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CisKKy0tIFRlc3QgZm9yIGhhc2ggcGFydGl0aW9u ZWQgdGFibGUKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIEhBU0goaSk7 CitDUkVBVEUgVEFCTEUgdHAxIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAoTU9E VUxVUyAyLCBSRU1BSU5ERVIgMCk7CitDUkVBVEUgVEFCTEUgdHAyIFBBUlRJVElPTiBPRiB0 IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMSk7CisKKy0tIEVSUk9S OiAgcGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIHNwbGl0 CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cDEgSU5UTworICAoUEFSVElUSU9O IHRwMV8xIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyA0LCBSRU1BSU5ERVIgMCksCisgICBQ QVJUSVRJT04gdHAxXzIgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDQsIFJFTUFJTkRFUiAy KSk7CisKKy0tIEVSUk9SOiAgbGlzdCBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgY29udGFp biBhdCBsZWFzdCB0d28gaXRlbXMKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRw MSBJTlRPCisgIChQQVJUSVRJT04gdHAxXzEgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDQs IFJFTUFJTkRFUiAwKSk7CisKK0RST1AgVEFCTEUgdDsKKworCistLSBBZGRpdGlvbmFsIHRl c3RzIGZvciBlcnJvciBtZXNzYWdlcworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxl c3BlcnNvbl9pZCBpbnQsIHNhbGVzcGVyc29uX25hbWUgdmFyY2hhcigzMCksIHNhbGVzX2Ft b3VudCBpbnQsIHNhbGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19k YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAx Jyk7CisKKy0tIEVSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIy MDIyIiBpcyBub3QgZXF1YWwgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9h cHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFu Z2U7CisKKworLS0gVGVzdCBmb3Igc3BsaXQgcGFydGl0aW9uIHByb3BlcnRpZXM6CistLSAq IFNUQVRJU1RJQ1MgaXMgZW1wdHkKKy0tICogQ09NTUVOVCBpcyBlbXB0eQorLS0gKiBERUZB VUxUUyBhcmUgdGhlIHNhbWUgYXMgREVGQVVMVFMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCist LSAqIFNUT1JBR0UgaXMgdGhlIHNhbWUgYXMgU1RPUkFHRSBmb3IgcGFydGl0aW9uZWQgdGFi bGUKKy0tICogR0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBhcmUgdGhlIHNhbWUgYXMgR0VO RVJBVEVEIGFuZCBDT05TVFJBSU5UUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogVFJJ R0dFUlMgYXJlIHRoZSBzYW1lIGFzIFRSSUdHRVJTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQor CitDUkVBVEUgVEFCTEUgdAorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIEVY VEVOREVEIENPTVBSRVNTSU9OIHBnbHogREVGQVVMVCAnZGVmYXVsdF90JywKKyBiIGJpZ2lu dCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDEtMDEnKSBTVE9SRUQp IFBBUlRJVElPTiBCWSBSQU5HRSAoYWJzKGkpKTsKK0NPTU1FTlQgT04gQ09MVU1OIHQuaSBJ UyAndDEuaSc7CisKK0NSRUFURSBUQUJMRSB0cF94CisoaSBpbnQgTk9UIE5VTEwsCisgdCB0 ZXh0IFNUT1JBR0UgTUFJTiBERUZBVUxUICdkZWZhdWx0X3RwX3gnLAorIGIgYmlnaW50LAor IGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMi0wMicpIFNUT1JFRCk7CitB TFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfeCBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgyKTsKK0NPTU1FTlQgT04gQ09MVU1OIHRwX3guaSBJUyAndHBfeC5pJzsKKworQ1JF QVRFIFNUQVRJU1RJQ1MgdF9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0Owor Q1JFQVRFIFNUQVRJU1RJQ1MgdHBfeF9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJv bSB0cF94OworCitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjayBDSEVD SyAoYiA+IDApOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2sxIENI RUNLIChiID4gMCkgTk9UIEVORk9SQ0VEOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlO VCB0X2JfY2hlY2syIENIRUNLIChiID4gMCkgTk9UIFZBTElEOworQUxURVIgVEFCTEUgdCBB REQgQ09OU1RSQUlOVCB0X2Jfbm4gTk9UIE5VTEwgYiBOT1QgVkFMSUQ7CisKK0lOU0VSVCBJ TlRPIHRwX3goaSwgdCwgYikgVkFMVUVTKDAsIERFRkFVTFQsIDEpOworSU5TRVJUIElOVE8g dHBfeChpLCB0LCBiKSBWQUxVRVMoMSwgREVGQVVMVCwgMik7CisKK0NSRUFURSBPUiBSRVBM QUNFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VB R0UgJ3BscGdzcWwnIEFTCiskQk9EWSQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAndHJpZ2dl ciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdW WzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgIFJFVFVSTiBuZXc7CitFTkQ7Cisk Qk9EWSQ7CisKK0NSRUFURSBUUklHR0VSIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBC RUZPUkUgSU5TRVJUIE9OIHQgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRy aWdnZXJfZnVuY3Rpb24oJ3QnKTsKK0NSRUFURSBUUklHR0VSIHRwX3hfYmVmb3JlX2luc2Vy dF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwX3ggRk9SIEVBQ0ggUk9XCisgIEVY RUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3RwX3gnKTsKKworXGQrIHRwX3gK K0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwX3ggSU5UTworICAoUEFSVElUSU9O IHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF94 IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK1xkKyB0cF94CisKK0lOU0VSVCBJTlRP IHQoaSwgdCwgYikgVkFMVUVTKDEsIERFRkFVTFQsIDMpOworU0VMRUNUIHRhYmxlb2lkOjpy ZWdjbGFzcywgKiBGUk9NIHQgT1JERVIgQlkgYjsKK0RST1AgVEFCTEUgdDsKK0RST1AgRlVO Q1RJT04gdHJpZ2dlcl9mdW5jdGlvbigpOworCisKKy0tIFRlc3QgZm9yIHJlY29tcHV0YXRp b24gb2Ygc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zLgorQ1JFQVRFIFRBQkxFIHQgKGkgaW50 LCB0YWJfaWQgaW50IGdlbmVyYXRlZCBhbHdheXMgYXMgKHRhYmxlb2lkKSBzdG9yZWQpIFBB UlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBP RiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBBREQgQ09O U1RSQUlOVCBjYyBDSEVDSyh0YWJsZW9pZCA8PiAxMjM0NTY3ODkpOworSU5TRVJUIElOVE8g dCBWQUxVRVMgKDApLCAoMSk7CisKKy0tIFNob3VsZCBiZSAxIGJlY2F1c2UgcGFydGl0aW9u IGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MCBpcyB0aGUgc2FtZSBhcworLS0gcGFydGl0 aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9N IHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hF UkUgaSA9IDEpOworCistLSAidGFiX2lkIiBjb2x1bW4gKHN0b3JlZCBnZW5lcmF0ZWQgY29s dW1uKSB3aXRoICJ0YWJsZW9pZCIgYXR0cmlidXRlIHJlcXVpcmVzCistLSByZWNvbXB1dGF0 aW9uIGhlcmUuCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTwor ICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBB UlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworCistLSBTaG91 bGQgYmUgMCBiZWNhdXNlIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAg aXMgZGlmZmVyZW50IGZyb20KKy0tIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0 aCBpPTEuCitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQg SU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdIRVJFIGkgPSAxKTsKKworRFJPUCBUQUJMRSB0 OworCisKK1JFU0VUIHNlYXJjaF9wYXRoOworCistLQorRFJPUCBTQ0hFTUEgcGFydGl0aW9u X3NwbGl0X3NjaGVtYTsKK0RST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyOwpk aWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCAzMmQ2ZTcxOGFkLi5iODE1Y2NlZDg0 IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjc2Niw2ICsyNzY2LDcgQEAg U2ltcGxlU3RhdHMKIFNpbXBsZVN0cmluZ0xpc3QKIFNpbXBsZVN0cmluZ0xpc3RDZWxsCiBT aW5nbGVCb3VuZFNvcnRJdGVtCitTaW5nbGVQYXJ0aXRpb25TcGVjCiBTaXplCiBTa2lwUGFn ZXMKIFNraXBTdXBwb3J0CkBAIC0yODMyLDYgKzI4MzMsNyBAQCBTcGVjaWFsSm9pbkluZm8K IFNwaW5EZWxheVN0YXR1cwogU3BsaXRJbnRlcnZhbAogU3BsaXRMUgorU3BsaXRQYXJ0aXRp b25Db250ZXh0CiBTcGxpdFBhZ2VMYXlvdXQKIFNwbGl0UG9pbnQKIFNwbGl0VGV4dE91dHB1 dERhdGEKLS0gCjIuNDAuMS53aW5kb3dzLjEKCg== --------------04N98BahQW86g58HMvx9dDj9--