From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21025 invoked by alias); 15 Jun 2016 09:22:39 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 21008 invoked by uid 89); 15 Jun 2016 09:22:39 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_PASS autolearn=ham version=3.3.2 spammy=6106, 610,6, v4sf, V4SF X-HELO: eu-smtp-delivery-143.mimecast.com Received: from eu-smtp-delivery-143.mimecast.com (HELO eu-smtp-delivery-143.mimecast.com) (207.82.80.143) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 15 Jun 2016 09:22:28 +0000 Received: from emea01-am1-obe.outbound.protection.outlook.com (mail-am1lrp0015.outbound.protection.outlook.com [213.199.154.15]) (Using TLS) by eu-smtp-1.mimecast.com with ESMTP id uk-mta-60-2zg8B_PoSveoNLXQfemM8w-1; Wed, 15 Jun 2016 10:22:22 +0100 Received: from DB5PR08MB1144.eurprd08.prod.outlook.com (10.166.174.137) by DB5PR08MB1142.eurprd08.prod.outlook.com (10.166.174.135) with Microsoft SMTP Server (TLS) id 15.1.523.12; Wed, 15 Jun 2016 09:22:21 +0000 Received: from DB5PR08MB1144.eurprd08.prod.outlook.com ([10.166.174.137]) by DB5PR08MB1144.eurprd08.prod.outlook.com ([10.166.174.137]) with mapi id 15.01.0517.013; Wed, 15 Jun 2016 09:22:21 +0000 From: Bin Cheng To: "gcc-patches@gcc.gnu.org" CC: nd Subject: [Patch AArch64 2/2]Add missing vcond by rewriting it with vcond_mask/vec_cmp patterns. Date: Wed, 15 Jun 2016 09:22:00 -0000 Message-ID: x-ms-office365-filtering-correlation-id: a42aba61-333e-4f0b-cd21-08d394fe8dca x-microsoft-exchange-diagnostics: 1;DB5PR08MB1142;20:M0Gja8k8oE4nXWMTMOqbb16alQApEAVqI6W1uN+lLrIIdgypg3aL1rTCqOzdebJQR2WaFIuKrVcJdza6bIofCfmDvfz1Ac3fqiJHnIbi2Q7ZXZi2pRViJ0TPdXlgL5ljF6UICMHxFCPKmd6kMrqzzZCdvdhtI4CipQJ65Z5po4A= x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DB5PR08MB1142; nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(102415321)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026);SRVR:DB5PR08MB1142;BCL:0;PCL:0;RULEID:;SRVR:DB5PR08MB1142; x-forefront-prvs: 09749A275C x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(6009001)(7916002)(377424004)(199003)(189002)(122556002)(86362001)(4326007)(66066001)(2351001)(106116001)(2906002)(105586002)(586003)(106356001)(102836003)(3846002)(11100500001)(6116002)(9686002)(10400500002)(2501003)(8936002)(19580405001)(5004730100002)(77096005)(5002640100001)(19580395003)(54356999)(74316001)(2900100001)(189998001)(76576001)(87936001)(33656002)(3280700002)(101416001)(5008740100001)(92566002)(68736007)(81166006)(229853001)(81156014)(97736004)(50986999)(3660700001)(99936001)(450100001)(8676002)(5003600100002)(110136002);DIR:OUT;SFP:1101;SCL:1;SRVR:DB5PR08MB1142;H:DB5PR08MB1144.eurprd08.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;CAT:NONE;LANG:en;CAT:NONE; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Jun 2016 09:22:20.9563 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR08MB1142 X-MC-Unique: 2zg8B_PoSveoNLXQfemM8w-1 Content-Type: multipart/mixed; boundary="_002_DB5PR08MB1144D56F64725BA9E00FC21CE7550DB5PR08MB1144eurp_" X-IsSubscribed: yes X-SW-Source: 2016-06/txt/msg01118.txt.bz2 --_002_DB5PR08MB1144D56F64725BA9E00FC21CE7550DB5PR08MB1144eurp_ Content-Type: text/plain; charset=WINDOWS-1252 Content-Transfer-Encoding: quoted-printable Content-length: 1184 Hi, This is the second patch. It rewrites vcond patterns using vcond_mask/vec_= cmp patterns introduced in the first one. It also implements vcond pattern= s which were missing in the current AArch64 backend. After this patch, I h= ave a simple follow up change enabling testing requirement "vect_cond_mixed= " on AArch64, which will enable various tests. Bootstrap & test along with the first patch on AArch64, is it OK? Thanks, bin 2016-06-07 Alan Lawrence Renlin Li Bin Cheng * config/aarch64/iterators.md (V_cmp_mixed, v_cmp_mixed): New. * config/aarch64/aarch64-simd.md (v2di3): Call gen_vcondv2div2di instead of gen_aarch64_vcond_internalv2div2di. (aarch64_vcond_internal): Delete pattern. (aarch64_vcond_internal): Ditto. (vcond): Re-implement using vec_cmp and vcond_mask. (vcondu): Ditto. (vcond): Delete. (vcond): New pattern. (vcondu): New pattern. (aarch64_cmtst): Revise comment using aarch64_vcond instead of aarch64_vcond_internal.= --_002_DB5PR08MB1144D56F64725BA9E00FC21CE7550DB5PR08MB1144eurp_ Content-Type: text/plain; name=aarch64-vcond-20160607.txt Content-Description: aarch64-vcond-20160607.txt Content-Disposition: attachment; filename="aarch64-vcond-20160607.txt"; size=15267; creation-date="Wed, 15 Jun 2016 09:17:11 GMT"; modification-date="Wed, 15 Jun 2016 09:17:11 GMT" Content-Transfer-Encoding: base64 Content-length: 20696 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXNpbWQu bWQgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1zaW1kLm1kCmluZGV4 IDZlYTM1YmYuLmUwODBiNzEgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFy Y2g2NC9hYXJjaDY0LXNpbWQubWQKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0 L2FhcmNoNjQtc2ltZC5tZApAQCAtMTA1Myw3ICsxMDUzLDcgQEAKICAgICB9 CiAKICAgY21wX2ZtdCA9IGdlbl9ydHhfZm10X2VlIChjbXBfb3BlcmF0b3Is IFYyREltb2RlLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pOwotICBlbWl0 X2luc24gKGdlbl9hYXJjaDY0X3Zjb25kX2ludGVybmFsdjJkaXYyZGkgKG9w ZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwKKyAgZW1pdF9pbnNuIChnZW5fdmNv bmR2MmRpdjJkaSAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLAogICAgICAg ICAgICAgICBvcGVyYW5kc1syXSwgY21wX2ZtdCwgb3BlcmFuZHNbMV0sIG9w ZXJhbmRzWzJdKSk7CiAgIERPTkU7CiB9KQpAQCAtMjIwMiwzMTQgKzIyMDIs NiBAQAogICBET05FOwogfSkKIAotKGRlZmluZV9leHBhbmQgImFhcmNoNjRf dmNvbmRfaW50ZXJuYWw8bW9kZT48bW9kZT4iCi0gIFsoc2V0IChtYXRjaF9v cGVyYW5kOlZTRFFfSV9ESSAwICJyZWdpc3Rlcl9vcGVyYW5kIikKLQkoaWZf dGhlbl9lbHNlOlZTRFFfSV9ESQotCSAgKG1hdGNoX29wZXJhdG9yIDMgImNv bXBhcmlzb25fb3BlcmF0b3IiCi0JICAgIFsobWF0Y2hfb3BlcmFuZDpWU0RR X0lfREkgNCAicmVnaXN0ZXJfb3BlcmFuZCIpCi0JICAgICAobWF0Y2hfb3Bl cmFuZDpWU0RRX0lfREkgNSAibm9ubWVtb3J5X29wZXJhbmQiKV0pCi0JICAo bWF0Y2hfb3BlcmFuZDpWU0RRX0lfREkgMSAibm9ubWVtb3J5X29wZXJhbmQi KQotCSAgKG1hdGNoX29wZXJhbmQ6VlNEUV9JX0RJIDIgIm5vbm1lbW9yeV9v cGVyYW5kIikpKV0KLSAgIlRBUkdFVF9TSU1EIgotewotICBydHggb3AxID0g b3BlcmFuZHNbMV07Ci0gIHJ0eCBvcDIgPSBvcGVyYW5kc1syXTsKLSAgcnR4 IG1hc2sgPSBnZW5fcmVnX3J0eCAoPE1PREU+bW9kZSk7Ci0gIGVudW0gcnR4 X2NvZGUgY29kZSA9IEdFVF9DT0RFIChvcGVyYW5kc1szXSk7Ci0KLSAgLyog U3dpdGNoaW5nIE9QMSBhbmQgT1AyIGlzIG5lY2Vzc2FyeSBmb3IgTkUgKHRv IG91dHB1dCBhIGNtZXEgaW5zbiksCi0gICAgIGFuZCBkZXNpcmFibGUgZm9y IG90aGVyIGNvbXBhcmlzb25zIGlmIGl0IHJlc3VsdHMgaW4gRk9PID8gLTEg OiAwCi0gICAgICh0aGlzIGFsbG93cyBkaXJlY3QgdXNlIG9mIHRoZSBjb21w YXJpc29uIHJlc3VsdCB3aXRob3V0IGEgYnNsKS4gICovCi0gIGlmIChjb2Rl ID09IE5FCi0gICAgICB8fCAoY29kZSAhPSBFUQotCSAgJiYgb3AxID09IENP TlNUMF9SVFggKDxWX2NtcF9yZXN1bHQ+bW9kZSkKLQkgICYmIG9wMiA9PSBD T05TVE0xX1JUWCAoPFZfY21wX3Jlc3VsdD5tb2RlKSkpCi0gICAgewotICAg ICAgb3AxID0gb3BlcmFuZHNbMl07Ci0gICAgICBvcDIgPSBvcGVyYW5kc1sx XTsKLSAgICAgIHN3aXRjaCAoY29kZSkKLSAgICAgICAgewotICAgICAgICBj YXNlIExFOiBjb2RlID0gR1Q7IGJyZWFrOwotICAgICAgICBjYXNlIExUOiBj b2RlID0gR0U7IGJyZWFrOwotICAgICAgICBjYXNlIEdFOiBjb2RlID0gTFQ7 IGJyZWFrOwotICAgICAgICBjYXNlIEdUOiBjb2RlID0gTEU7IGJyZWFrOwot ICAgICAgICAvKiBObyBjYXNlIEVRLiAgKi8KLSAgICAgICAgY2FzZSBORTog Y29kZSA9IEVROyBicmVhazsKLSAgICAgICAgY2FzZSBMVFU6IGNvZGUgPSBH RVU7IGJyZWFrOwotICAgICAgICBjYXNlIExFVTogY29kZSA9IEdUVTsgYnJl YWs7Ci0gICAgICAgIGNhc2UgR1RVOiBjb2RlID0gTEVVOyBicmVhazsKLSAg ICAgICAgY2FzZSBHRVU6IGNvZGUgPSBMVFU7IGJyZWFrOwotICAgICAgICBk ZWZhdWx0OiBnY2NfdW5yZWFjaGFibGUgKCk7Ci0gICAgICAgIH0KLSAgICB9 Ci0KLSAgLyogTWFrZSBzdXJlIHdlIGNhbiBoYW5kbGUgdGhlIGxhc3Qgb3Bl cmFuZC4gICovCi0gIHN3aXRjaCAoY29kZSkKLSAgICB7Ci0gICAgY2FzZSBO RToKLSAgICAgIC8qIE5vcm1hbGl6ZWQgdG8gRVEgYWJvdmUuICAqLwotICAg ICAgZ2NjX3VucmVhY2hhYmxlICgpOwotCi0gICAgY2FzZSBMRToKLSAgICBj YXNlIExUOgotICAgIGNhc2UgR0U6Ci0gICAgY2FzZSBHVDoKLSAgICBjYXNl IEVROgotICAgICAgLyogVGhlc2UgaW5zdHJ1Y3Rpb25zIGhhdmUgYSBmb3Jt IHRha2luZyBhbiBpbW1lZGlhdGUgemVyby4gICovCi0gICAgICBpZiAob3Bl cmFuZHNbNV0gPT0gQ09OU1QwX1JUWCAoPE1PREU+bW9kZSkpCi0gICAgICAg IGJyZWFrOwotICAgICAgLyogRmFsbCB0aHJvdWdoLCBhcyBtYXkgbmVlZCB0 byBsb2FkIGludG8gcmVnaXN0ZXIuICAqLwotICAgIGRlZmF1bHQ6Ci0gICAg ICBpZiAoIVJFR19QIChvcGVyYW5kc1s1XSkpCi0gICAgICAgIG9wZXJhbmRz WzVdID0gZm9yY2VfcmVnICg8TU9ERT5tb2RlLCBvcGVyYW5kc1s1XSk7Ci0g ICAgICBicmVhazsKLSAgICB9Ci0KLSAgc3dpdGNoIChjb2RlKQotICAgIHsK LSAgICBjYXNlIExUOgotICAgICAgZW1pdF9pbnNuIChnZW5fYWFyY2g2NF9j bWx0PG1vZGU+IChtYXNrLCBvcGVyYW5kc1s0XSwgb3BlcmFuZHNbNV0pKTsK LSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBHRToKLSAgICAgIGVtaXRfaW5z biAoZ2VuX2FhcmNoNjRfY21nZTxtb2RlPiAobWFzaywgb3BlcmFuZHNbNF0s IG9wZXJhbmRzWzVdKSk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgTEU6 Ci0gICAgICBlbWl0X2luc24gKGdlbl9hYXJjaDY0X2NtbGU8bW9kZT4gKG1h c2ssIG9wZXJhbmRzWzRdLCBvcGVyYW5kc1s1XSkpOwotICAgICAgYnJlYWs7 Ci0KLSAgICBjYXNlIEdUOgotICAgICAgZW1pdF9pbnNuIChnZW5fYWFyY2g2 NF9jbWd0PG1vZGU+IChtYXNrLCBvcGVyYW5kc1s0XSwgb3BlcmFuZHNbNV0p KTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBMVFU6Ci0gICAgICBlbWl0 X2luc24gKGdlbl9hYXJjaDY0X2NtZ3R1PG1vZGU+IChtYXNrLCBvcGVyYW5k c1s1XSwgb3BlcmFuZHNbNF0pKTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2Fz ZSBHRVU6Ci0gICAgICBlbWl0X2luc24gKGdlbl9hYXJjaDY0X2NtZ2V1PG1v ZGU+IChtYXNrLCBvcGVyYW5kc1s0XSwgb3BlcmFuZHNbNV0pKTsKLSAgICAg IGJyZWFrOwotCi0gICAgY2FzZSBMRVU6Ci0gICAgICBlbWl0X2luc24gKGdl bl9hYXJjaDY0X2NtZ2V1PG1vZGU+IChtYXNrLCBvcGVyYW5kc1s1XSwgb3Bl cmFuZHNbNF0pKTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBHVFU6Ci0g ICAgICBlbWl0X2luc24gKGdlbl9hYXJjaDY0X2NtZ3R1PG1vZGU+IChtYXNr LCBvcGVyYW5kc1s0XSwgb3BlcmFuZHNbNV0pKTsKLSAgICAgIGJyZWFrOwot Ci0gICAgLyogTkUgaGFzIGJlZW4gbm9ybWFsaXplZCB0byBFUSBhYm92ZS4g ICovCi0gICAgY2FzZSBFUToKLSAgICAgIGVtaXRfaW5zbiAoZ2VuX2FhcmNo NjRfY21lcTxtb2RlPiAobWFzaywgb3BlcmFuZHNbNF0sIG9wZXJhbmRzWzVd KSk7Ci0gICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICBnY2Nf dW5yZWFjaGFibGUgKCk7Ci0gICAgfQotCi0gICAgLyogSWYgd2UgaGF2ZSAo YSA9IChiIENNUCBjKSA/IC0xIDogMCk7Ci0gICAgICAgVGhlbiB3ZSBjYW4g c2ltcGx5IG1vdmUgdGhlIGdlbmVyYXRlZCBtYXNrLiAgKi8KLQotICAgIGlm IChvcDEgPT0gQ09OU1RNMV9SVFggKDxWX2NtcF9yZXN1bHQ+bW9kZSkKLQkm JiBvcDIgPT0gQ09OU1QwX1JUWCAoPFZfY21wX3Jlc3VsdD5tb2RlKSkKLSAg ICAgIGVtaXRfbW92ZV9pbnNuIChvcGVyYW5kc1swXSwgbWFzayk7Ci0gICAg ZWxzZQotICAgICAgewotCWlmICghUkVHX1AgKG9wMSkpCi0JICBvcDEgPSBm b3JjZV9yZWcgKDxNT0RFPm1vZGUsIG9wMSk7Ci0JaWYgKCFSRUdfUCAob3Ay KSkKLQkgIG9wMiA9IGZvcmNlX3JlZyAoPE1PREU+bW9kZSwgb3AyKTsKLQll bWl0X2luc24gKGdlbl9hYXJjaDY0X3NpbWRfYnNsPG1vZGU+IChvcGVyYW5k c1swXSwgbWFzaywKLQkJCQkJICAgICAgIG9wMSwgb3AyKSk7Ci0gICAgICB9 Ci0KLSAgRE9ORTsKLX0pCi0KLShkZWZpbmVfZXhwYW5kICJhYXJjaDY0X3Zj b25kX2ludGVybmFsPFZEUUZfQ09ORDptb2RlPjxWRFFGOm1vZGU+IgotICBb KHNldCAobWF0Y2hfb3BlcmFuZDpWRFFGX0NPTkQgMCAicmVnaXN0ZXJfb3Bl cmFuZCIpCi0JKGlmX3RoZW5fZWxzZTpWRFFGCi0JICAobWF0Y2hfb3BlcmF0 b3IgMyAiY29tcGFyaXNvbl9vcGVyYXRvciIKLQkgICAgWyhtYXRjaF9vcGVy YW5kOlZEUUYgNCAicmVnaXN0ZXJfb3BlcmFuZCIpCi0JICAgICAobWF0Y2hf b3BlcmFuZDpWRFFGIDUgIm5vbm1lbW9yeV9vcGVyYW5kIildKQotCSAgKG1h dGNoX29wZXJhbmQ6VkRRRl9DT05EIDEgIm5vbm1lbW9yeV9vcGVyYW5kIikK LQkgIChtYXRjaF9vcGVyYW5kOlZEUUZfQ09ORCAyICJub25tZW1vcnlfb3Bl cmFuZCIpKSldCi0gICJUQVJHRVRfU0lNRCIKLXsKLSAgaW50IGludmVyc2Ug PSAwOwotICBpbnQgdXNlX3plcm9fZm9ybSA9IDA7Ci0gIGludCBzd2FwX2Jz bF9vcGVyYW5kcyA9IDA7Ci0gIHJ0eCBvcDEgPSBvcGVyYW5kc1sxXTsKLSAg cnR4IG9wMiA9IG9wZXJhbmRzWzJdOwotICBydHggbWFzayA9IGdlbl9yZWdf cnR4ICg8VkRRRl9DT05EOlZfY21wX3Jlc3VsdD5tb2RlKTsKLSAgcnR4IHRt cCA9IGdlbl9yZWdfcnR4ICg8VkRRRl9DT05EOlZfY21wX3Jlc3VsdD5tb2Rl KTsKLQotICBydHggKCpiYXNlX2NvbXBhcmlzb24pIChydHgsIHJ0eCwgcnR4 KTsKLSAgcnR4ICgqY29tcGxpbWVudGFyeV9jb21wYXJpc29uKSAocnR4LCBy dHgsIHJ0eCk7Ci0KLSAgc3dpdGNoIChHRVRfQ09ERSAob3BlcmFuZHNbM10p KQotICAgIHsKLSAgICBjYXNlIEdFOgotICAgIGNhc2UgR1Q6Ci0gICAgY2Fz ZSBMRToKLSAgICBjYXNlIExUOgotICAgIGNhc2UgRVE6Ci0gICAgICBpZiAo b3BlcmFuZHNbNV0gPT0gQ09OU1QwX1JUWCAoPE1PREU+bW9kZSkpCi0Jewot CSAgdXNlX3plcm9fZm9ybSA9IDE7Ci0JICBicmVhazsKLQl9Ci0gICAgICAv KiBGYWxsIHRocm91Z2guICAqLwotICAgIGRlZmF1bHQ6Ci0gICAgICBpZiAo IVJFR19QIChvcGVyYW5kc1s1XSkpCi0Jb3BlcmFuZHNbNV0gPSBmb3JjZV9y ZWcgKDxWRFFGOk1PREU+bW9kZSwgb3BlcmFuZHNbNV0pOwotICAgIH0KLQot ICBzd2l0Y2ggKEdFVF9DT0RFIChvcGVyYW5kc1szXSkpCi0gICAgewotICAg IGNhc2UgTFQ6Ci0gICAgY2FzZSBVTkxUOgotICAgICAgaW52ZXJzZSA9IDE7 Ci0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotICAgIGNhc2UgR0U6Ci0g ICAgY2FzZSBVTkdFOgotICAgIGNhc2UgT1JERVJFRDoKLSAgICBjYXNlIFVO T1JERVJFRDoKLSAgICAgIGJhc2VfY29tcGFyaXNvbiA9IGdlbl9hYXJjaDY0 X2NtZ2U8VkRRRjptb2RlPjsKLSAgICAgIGNvbXBsaW1lbnRhcnlfY29tcGFy aXNvbiA9IGdlbl9hYXJjaDY0X2NtZ3Q8VkRRRjptb2RlPjsKLSAgICAgIGJy ZWFrOwotICAgIGNhc2UgTEU6Ci0gICAgY2FzZSBVTkxFOgotICAgICAgaW52 ZXJzZSA9IDE7Ci0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotICAgIGNh c2UgR1Q6Ci0gICAgY2FzZSBVTkdUOgotICAgICAgYmFzZV9jb21wYXJpc29u ID0gZ2VuX2FhcmNoNjRfY21ndDxWRFFGOm1vZGU+OwotICAgICAgY29tcGxp bWVudGFyeV9jb21wYXJpc29uID0gZ2VuX2FhcmNoNjRfY21nZTxWRFFGOm1v ZGU+OwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFUToKLSAgICBjYXNlIE5F OgotICAgIGNhc2UgVU5FUToKLSAgICAgIGJhc2VfY29tcGFyaXNvbiA9IGdl bl9hYXJjaDY0X2NtZXE8VkRRRjptb2RlPjsKLSAgICAgIGNvbXBsaW1lbnRh cnlfY29tcGFyaXNvbiA9IGdlbl9hYXJjaDY0X2NtZXE8VkRRRjptb2RlPjsK LSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBnY2NfdW5yZWFj aGFibGUgKCk7Ci0gICAgfQotCi0gIHN3aXRjaCAoR0VUX0NPREUgKG9wZXJh bmRzWzNdKSkKLSAgICB7Ci0gICAgY2FzZSBMVDoKLSAgICBjYXNlIExFOgot ICAgIGNhc2UgR1Q6Ci0gICAgY2FzZSBHRToKLSAgICBjYXNlIEVROgotICAg ICAgLyogVGhlIGVhc3kgY2FzZS4gIEhlcmUgd2UgZW1pdCBvbmUgb2YgRkNN R0UsIEZDTUdUIG9yIEZDTUVRLgotCSBBcyBhIExUIGIgPD0+IGIgR0UgYSAm JiBhIExFIGIgPD0+IGIgR1QgYS4gIE91ciB0cmFuc2Zvcm1hdGlvbnMgYXJl OgotCSBhIEdFIGIgLT4gYSBHRSBiCi0JIGEgR1QgYiAtPiBhIEdUIGIKLQkg YSBMRSBiIC0+IGIgR0UgYQotCSBhIExUIGIgLT4gYiBHVCBhCi0JIGEgRVEg YiAtPiBhIEVRIGIKLQkgTm90ZSB0aGF0IHRoZXJlIGFsc28gZXhpc3QgZGly ZWN0IGNvbXBhcmlzb24gYWdhaW5zdCAwIGZvcm1zLAotCSBzbyBjYXRjaCB0 aG9zZSBhcyBhIHNwZWNpYWwgY2FzZS4gICovCi0gICAgICBpZiAodXNlX3pl cm9fZm9ybSkKLQl7Ci0JICBpbnZlcnNlID0gMDsKLQkgIHN3aXRjaCAoR0VU X0NPREUgKG9wZXJhbmRzWzNdKSkKLQkgICAgewotCSAgICBjYXNlIExUOgot CSAgICAgIGJhc2VfY29tcGFyaXNvbiA9IGdlbl9hYXJjaDY0X2NtbHQ8VkRR Rjptb2RlPjsKLQkgICAgICBicmVhazsKLQkgICAgY2FzZSBMRToKLQkgICAg ICBiYXNlX2NvbXBhcmlzb24gPSBnZW5fYWFyY2g2NF9jbWxlPFZEUUY6bW9k ZT47Ci0JICAgICAgYnJlYWs7Ci0JICAgIGRlZmF1bHQ6Ci0JICAgICAgLyog RG8gbm90aGluZywgb3RoZXIgemVybyBmb3JtIGNhc2VzIGFscmVhZHkgaGF2 ZSB0aGUgY29ycmVjdAotCQkgYmFzZV9jb21wYXJpc29uLiAgKi8KLQkgICAg ICBicmVhazsKLQkgICAgfQotCX0KLQotICAgICAgaWYgKCFpbnZlcnNlKQot CWVtaXRfaW5zbiAoYmFzZV9jb21wYXJpc29uIChtYXNrLCBvcGVyYW5kc1s0 XSwgb3BlcmFuZHNbNV0pKTsKLSAgICAgIGVsc2UKLQllbWl0X2luc24gKGNv bXBsaW1lbnRhcnlfY29tcGFyaXNvbiAobWFzaywgb3BlcmFuZHNbNV0sIG9w ZXJhbmRzWzRdKSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFVOTFQ6Ci0g ICAgY2FzZSBVTkxFOgotICAgIGNhc2UgVU5HVDoKLSAgICBjYXNlIFVOR0U6 Ci0gICAgY2FzZSBORToKLSAgICAgIC8qIEZDTSByZXR1cm5zIGZhbHNlIGZv ciBsYW5lcyB3aGljaCBhcmUgdW5vcmRlcmVkLCBzbyBpZiB3ZSB1c2UKLQkg dGhlIGludmVyc2Ugb2YgdGhlIGNvbXBhcmlzb24gd2UgYWN0dWFsbHkgd2Fu dCB0byBlbWl0LCB0aGVuCi0JIHN3YXAgdGhlIG9wZXJhbmRzIHRvIEJTTCwg d2Ugd2lsbCBlbmQgdXAgd2l0aCB0aGUgY29ycmVjdCByZXN1bHQuCi0JIE5v dGUgdGhhdCBhIE5FIE5hTiBhbmQgTmFOIE5FIGIgYXJlIHRydWUgZm9yIGFs bCBhLCBiLgotCi0JIE91ciB0cmFuc2Zvcm1hdGlvbnMgYXJlOgotCSBhIEdF IGIgLT4gIShiIEdUIGEpCi0JIGEgR1QgYiAtPiAhKGIgR0UgYSkKLQkgYSBM RSBiIC0+ICEoYSBHVCBiKQotCSBhIExUIGIgLT4gIShhIEdFIGIpCi0JIGEg TkUgYiAtPiAhKGEgRVEgYikgICovCi0KLSAgICAgIGlmIChpbnZlcnNlKQot CWVtaXRfaW5zbiAoYmFzZV9jb21wYXJpc29uIChtYXNrLCBvcGVyYW5kc1s0 XSwgb3BlcmFuZHNbNV0pKTsKLSAgICAgIGVsc2UKLQllbWl0X2luc24gKGNv bXBsaW1lbnRhcnlfY29tcGFyaXNvbiAobWFzaywgb3BlcmFuZHNbNV0sIG9w ZXJhbmRzWzRdKSk7Ci0KLSAgICAgIHN3YXBfYnNsX29wZXJhbmRzID0gMTsK LSAgICAgIGJyZWFrOwotICAgIGNhc2UgVU5FUToKLSAgICAgIC8qIFdlIGNo ZWNrIChhID4gYiB8fCAgYiA+IGEpLiAgY29tYmluaW5nIHRoZXNlIGNvbXBh cmlzb25zIGdpdmUgdXMKLQkgdHJ1ZSBpZmYgIShhICE9IGIgJiYgYSBPUkRF UkVEIGIpLCBzd2FwcGluZyB0aGUgb3BlcmFuZHMgdG8gQlNMCi0JIHdpbGwg dGhlbiBnaXZlIHVzIChhID09IGIgfHwgIGEgVU5PUkRFUkVEIGIpIGFzIGlu dGVuZGVkLiAgKi8KLQotICAgICAgZW1pdF9pbnNuIChnZW5fYWFyY2g2NF9j bWd0PFZEUUY6bW9kZT4gKG1hc2ssIG9wZXJhbmRzWzRdLCBvcGVyYW5kc1s1 XSkpOwotICAgICAgZW1pdF9pbnNuIChnZW5fYWFyY2g2NF9jbWd0PFZEUUY6 bW9kZT4gKHRtcCwgb3BlcmFuZHNbNV0sIG9wZXJhbmRzWzRdKSk7Ci0gICAg ICBlbWl0X2luc24gKGdlbl9pb3I8VkRRRl9DT05EOnZfY21wX3Jlc3VsdD4z IChtYXNrLCBtYXNrLCB0bXApKTsKLSAgICAgIHN3YXBfYnNsX29wZXJhbmRz ID0gMTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgVU5PUkRFUkVEOgotICAg ICAgIC8qIE9wZXJhbmRzIGFyZSBPUkRFUkVEIGlmZiAoYSA+IGIgfHwgYiA+ PSBhKS4KLQkgU3dhcHBpbmcgdGhlIG9wZXJhbmRzIHRvIEJTTCB3aWxsIGdp dmUgdGhlIFVOT1JERVJFRCBjYXNlLiAgKi8KLSAgICAgc3dhcF9ic2xfb3Bl cmFuZHMgPSAxOwotICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotICAgIGNh c2UgT1JERVJFRDoKLSAgICAgIGVtaXRfaW5zbiAoZ2VuX2FhcmNoNjRfY21n dDxWRFFGOm1vZGU+ICh0bXAsIG9wZXJhbmRzWzRdLCBvcGVyYW5kc1s1XSkp OwotICAgICAgZW1pdF9pbnNuIChnZW5fYWFyY2g2NF9jbWdlPFZEUUY6bW9k ZT4gKG1hc2ssIG9wZXJhbmRzWzVdLCBvcGVyYW5kc1s0XSkpOwotICAgICAg ZW1pdF9pbnNuIChnZW5faW9yPFZEUUZfQ09ORDp2X2NtcF9yZXN1bHQ+MyAo bWFzaywgbWFzaywgdG1wKSk7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0 OgotICAgICAgZ2NjX3VucmVhY2hhYmxlICgpOwotICAgIH0KLQotICBpZiAo c3dhcF9ic2xfb3BlcmFuZHMpCi0gICAgewotICAgICAgb3AxID0gb3BlcmFu ZHNbMl07Ci0gICAgICBvcDIgPSBvcGVyYW5kc1sxXTsKLSAgICB9Ci0KLSAg ICAvKiBJZiB3ZSBoYXZlIChhID0gKGIgQ01QIGMpID8gLTEgOiAwKTsKLSAg ICAgICBUaGVuIHdlIGNhbiBzaW1wbHkgbW92ZSB0aGUgZ2VuZXJhdGVkIG1h c2suICAqLwotCi0gICAgaWYgKG9wMSA9PSBDT05TVE0xX1JUWCAoPFZEUUZf Q09ORDpWX2NtcF9yZXN1bHQ+bW9kZSkKLQkmJiBvcDIgPT0gQ09OU1QwX1JU WCAoPFZEUUZfQ09ORDpWX2NtcF9yZXN1bHQ+bW9kZSkpCi0gICAgICBlbWl0 X21vdmVfaW5zbiAob3BlcmFuZHNbMF0sIG1hc2spOwotICAgIGVsc2UKLSAg ICAgIHsKLQlpZiAoIVJFR19QIChvcDEpKQotCSAgb3AxID0gZm9yY2VfcmVn ICg8VkRRRl9DT05EOk1PREU+bW9kZSwgb3AxKTsKLQlpZiAoIVJFR19QIChv cDIpKQotCSAgb3AyID0gZm9yY2VfcmVnICg8VkRRRl9DT05EOk1PREU+bW9k ZSwgb3AyKTsKLQllbWl0X2luc24gKGdlbl9hYXJjaDY0X3NpbWRfYnNsPFZE UUZfQ09ORDptb2RlPiAob3BlcmFuZHNbMF0sIG1hc2ssCi0JCQkJCSAgICAg ICBvcDEsIG9wMikpOwotICAgICAgfQotCi0gIERPTkU7Ci19KQotCiAoZGVm aW5lX2V4cGFuZCAidmNvbmQ8bW9kZT48bW9kZT4iCiAgIFsoc2V0IChtYXRj aF9vcGVyYW5kOlZBTExESSAwICJyZWdpc3Rlcl9vcGVyYW5kIikKIAkoaWZf dGhlbl9lbHNlOlZBTExESQpAQCAtMjUyMCwyNiArMjIxMiw1MCBAQAogCSAg KG1hdGNoX29wZXJhbmQ6VkFMTERJIDIgIm5vbm1lbW9yeV9vcGVyYW5kIikp KV0KICAgIlRBUkdFVF9TSU1EIgogewotICBlbWl0X2luc24gKGdlbl9hYXJj aDY0X3Zjb25kX2ludGVybmFsPG1vZGU+PG1vZGU+IChvcGVyYW5kc1swXSwg b3BlcmFuZHNbMV0sCi0JCQkJCSAgICAgICBvcGVyYW5kc1syXSwgb3BlcmFu ZHNbM10sCisgIHJ0eCBtYXNrID0gZ2VuX3JlZ19ydHggKDxWX2NtcF9yZXN1 bHQ+bW9kZSk7CisgIGVudW0gcnR4X2NvZGUgY29kZSA9IEdFVF9DT0RFIChv cGVyYW5kc1szXSk7CisKKyAgZW1pdF9pbnNuIChnZW5fdmVjX2NtcDxtb2Rl Pjx2X2NtcF9yZXN1bHQ+X2ludGVybmFsIChtYXNrLCBvcGVyYW5kc1szXSwK IAkJCQkJICAgICAgIG9wZXJhbmRzWzRdLCBvcGVyYW5kc1s1XSkpOworICAv KiBTZWUgY29tbWVudHMgb2YgdmVjX2NtcDxtb2RlPjx2X2NtcF9yZXN1bHQ+ X2ludGVybmFsLCB0aGUgb3Bwb3NpdGUKKyAgICAgcmVzdWx0IG1hc2tzIGFy ZSBjb21wdXRlZCBmb3IgYmVsb3cgb3BlcmF0b3JzLCB3ZSBuZWVkIHRvIGlu dmVydAorICAgICB0aGUgbWFzayBoZXJlLiAgSW4gdGhpcyBjYXNlIHdlIGNh biBzYXZlIGFuIGludmVydGluZyBpbnN0cnVjdGlvbgorICAgICBieSBzaW1w bHkgc3dhcHBpbmcgdGhlIHR3byBvcGVyYW5kcyB0byBic2wuICAqLworICBp ZiAoY29kZSA9PSBORSB8fCBjb2RlID09IFVORVEgfHwgY29kZSA9PSBVTkxU IHx8IGNvZGUgPT0gVU5MRQorICAgICAgfHwgY29kZSA9PSBVTkdUIHx8IGNv ZGUgPT0gVU5HRSB8fCBjb2RlID09IFVOT1JERVJFRCkKKyAgICBzdGQ6OnN3 YXAgKG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSk7CisKKyAgZW1pdF9pbnNu IChnZW5fdmNvbmRfbWFza188bW9kZT48dl9jbXBfcmVzdWx0PiAob3BlcmFu ZHNbMF0sIG9wZXJhbmRzWzFdLAorCQkJCQkJIG9wZXJhbmRzWzJdLCBtYXNr KSk7CiAgIERPTkU7CiB9KQogCi0oZGVmaW5lX2V4cGFuZCAidmNvbmQ8dl9j bXBfcmVzdWx0Pjxtb2RlPiIKLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6PFZf Y21wX3Jlc3VsdD4gMCAicmVnaXN0ZXJfb3BlcmFuZCIpCi0JKGlmX3RoZW5f ZWxzZTo8Vl9jbXBfcmVzdWx0PgorKGRlZmluZV9leHBhbmQgInZjb25kPHZf Y21wX21peGVkPjxtb2RlPiIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6PFZf Y21wX21peGVkPiAwICJyZWdpc3Rlcl9vcGVyYW5kIikKKwkoaWZfdGhlbl9l bHNlOjxWX2NtcF9taXhlZD4KIAkgIChtYXRjaF9vcGVyYXRvciAzICJjb21w YXJpc29uX29wZXJhdG9yIgotCSAgICBbKG1hdGNoX29wZXJhbmQ6VkRRRiA0 ICJyZWdpc3Rlcl9vcGVyYW5kIikKLQkgICAgIChtYXRjaF9vcGVyYW5kOlZE UUYgNSAibm9ubWVtb3J5X29wZXJhbmQiKV0pCi0JICAobWF0Y2hfb3BlcmFu ZDo8Vl9jbXBfcmVzdWx0PiAxICJub25tZW1vcnlfb3BlcmFuZCIpCi0JICAo bWF0Y2hfb3BlcmFuZDo8Vl9jbXBfcmVzdWx0PiAyICJub25tZW1vcnlfb3Bl cmFuZCIpKSldCisJICAgIFsobWF0Y2hfb3BlcmFuZDpWRFFGX0NPTkQgNCAi cmVnaXN0ZXJfb3BlcmFuZCIpCisJICAgICAobWF0Y2hfb3BlcmFuZDpWRFFG X0NPTkQgNSAibm9ubWVtb3J5X29wZXJhbmQiKV0pCisJICAobWF0Y2hfb3Bl cmFuZDo8Vl9jbXBfbWl4ZWQ+IDEgIm5vbm1lbW9yeV9vcGVyYW5kIikKKwkg IChtYXRjaF9vcGVyYW5kOjxWX2NtcF9taXhlZD4gMiAibm9ubWVtb3J5X29w ZXJhbmQiKSkpXQogICAiVEFSR0VUX1NJTUQiCiB7Ci0gIGVtaXRfaW5zbiAo Z2VuX2FhcmNoNjRfdmNvbmRfaW50ZXJuYWw8dl9jbXBfcmVzdWx0Pjxtb2Rl PiAoCisgIHJ0eCBtYXNrID0gZ2VuX3JlZ19ydHggKDxWX2NtcF9yZXN1bHQ+ bW9kZSk7CisgIGVudW0gcnR4X2NvZGUgY29kZSA9IEdFVF9DT0RFIChvcGVy YW5kc1szXSk7CisKKyAgZW1pdF9pbnNuIChnZW5fdmVjX2NtcDxtb2RlPjx2 X2NtcF9yZXN1bHQ+X2ludGVybmFsIChtYXNrLCBvcGVyYW5kc1szXSwKKwkJ CQkJICAgICAgIG9wZXJhbmRzWzRdLCBvcGVyYW5kc1s1XSkpOworICAvKiBT ZWUgY29tbWVudHMgb2YgdmVjX2NtcDxtb2RlPjx2X2NtcF9yZXN1bHQ+X2lu dGVybmFsLCB0aGUgb3Bwb3NpdGUKKyAgICAgcmVzdWx0IG1hc2tzIGFyZSBj b21wdXRlZCBmb3IgYmVsb3cgb3BlcmF0b3JzLCB3ZSBuZWVkIHRvIGludmVy dAorICAgICB0aGUgbWFzayBoZXJlLiAgSW4gdGhpcyBjYXNlIHdlIGNhbiBz YXZlIGFuIGludmVydGluZyBpbnN0cnVjdGlvbgorICAgICBieSBzaW1wbHkg c3dhcHBpbmcgdGhlIHR3byBvcGVyYW5kcyB0byBic2wuICAqLworICBpZiAo Y29kZSA9PSBORSB8fCBjb2RlID09IFVORVEgfHwgY29kZSA9PSBVTkxUIHx8 IGNvZGUgPT0gVU5MRQorICAgICAgfHwgY29kZSA9PSBVTkdUIHx8IGNvZGUg PT0gVU5HRSB8fCBjb2RlID09IFVOT1JERVJFRCkKKyAgICBzdGQ6OnN3YXAg KG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSk7CisKKyAgZW1pdF9pbnNuIChn ZW5fdmNvbmRfbWFza188dl9jbXBfbWl4ZWQ+PHZfY21wX3Jlc3VsdD4gKAog CQkJCQkJb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLAotCQkJCQkJb3BlcmFu ZHNbMl0sIG9wZXJhbmRzWzNdLAotCQkJCQkJb3BlcmFuZHNbNF0sIG9wZXJh bmRzWzVdKSk7CisJCQkJCQlvcGVyYW5kc1syXSwgbWFzaykpOwogICBET05F OwogfSkKIApAQCAtMjU1Myw5ICsyMjY5LDQ4IEBACiAJICAobWF0Y2hfb3Bl cmFuZDpWU0RRX0lfREkgMiAibm9ubWVtb3J5X29wZXJhbmQiKSkpXQogICAi VEFSR0VUX1NJTUQiCiB7Ci0gIGVtaXRfaW5zbiAoZ2VuX2FhcmNoNjRfdmNv bmRfaW50ZXJuYWw8bW9kZT48bW9kZT4gKG9wZXJhbmRzWzBdLCBvcGVyYW5k c1sxXSwKLQkJCQkJICAgICAgIG9wZXJhbmRzWzJdLCBvcGVyYW5kc1szXSwK KyAgcnR4IG1hc2sgPSBnZW5fcmVnX3J0eCAoPE1PREU+bW9kZSk7CisgIGVu dW0gcnR4X2NvZGUgY29kZSA9IEdFVF9DT0RFIChvcGVyYW5kc1szXSk7CisK KyAgZW1pdF9pbnNuIChnZW5fdmVjX2NtcDxtb2RlPjxtb2RlPl9pbnRlcm5h bCAobWFzaywgb3BlcmFuZHNbM10sCiAJCQkJCSAgICAgICBvcGVyYW5kc1s0 XSwgb3BlcmFuZHNbNV0pKTsKKyAgLyogU2VlIGNvbW1lbnRzIG9mIHZlY19j bXA8bW9kZT48bW9kZT5faW50ZXJuYWwsIHRoZSBvcHBvc2l0ZSByZXN1bHQK KyAgICAgbWFzayBpcyBjb21wdXRlZCBmb3IgTkUgb3BlcmF0b3IsIHdlIG5l ZWQgdG8gaW52ZXJ0IHRoZSBtYXNrIGhlcmUuCisgICAgIEluIHRoaXMgY2Fz ZSB3ZSBjYW4gc2F2ZSBhbiBpbnZlcnRpbmcgaW5zdHJ1Y3Rpb24gYnkgc2lt cGx5IHN3YXBwaW5nCisgICAgIHRoZSB0d28gb3BlcmFuZHMgdG8gYnNsLiAg Ki8KKyAgaWYgKGNvZGUgPT0gTkUpCisgICAgc3RkOjpzd2FwIChvcGVyYW5k c1sxXSwgb3BlcmFuZHNbMl0pOworCisgIGVtaXRfaW5zbiAoZ2VuX3Zjb25k X21hc2tfPG1vZGU+PHZfY21wX3Jlc3VsdD4gKG9wZXJhbmRzWzBdLCBvcGVy YW5kc1sxXSwKKwkJCQkJCSBvcGVyYW5kc1syXSwgbWFzaykpOworICBET05F OworfSkKKworKGRlZmluZV9leHBhbmQgInZjb25kdTxtb2RlPjx2X2NtcF9t aXhlZD4iCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZEUUYgMCAicmVnaXN0 ZXJfb3BlcmFuZCIpCisJKGlmX3RoZW5fZWxzZTpWRFFGCisJICAobWF0Y2hf b3BlcmF0b3IgMyAiY29tcGFyaXNvbl9vcGVyYXRvciIKKwkgICAgWyhtYXRj aF9vcGVyYW5kOjxWX2NtcF9taXhlZD4gNCAicmVnaXN0ZXJfb3BlcmFuZCIp CisJICAgICAobWF0Y2hfb3BlcmFuZDo8Vl9jbXBfbWl4ZWQ+IDUgIm5vbm1l bW9yeV9vcGVyYW5kIildKQorCSAgKG1hdGNoX29wZXJhbmQ6VkRRRiAxICJu b25tZW1vcnlfb3BlcmFuZCIpCisJICAobWF0Y2hfb3BlcmFuZDpWRFFGIDIg Im5vbm1lbW9yeV9vcGVyYW5kIikpKV0KKyAgIlRBUkdFVF9TSU1EIgorewor ICBydHggbWFzayA9IGdlbl9yZWdfcnR4ICg8Vl9jbXBfcmVzdWx0Pm1vZGUp OworICBlbnVtIHJ0eF9jb2RlIGNvZGUgPSBHRVRfQ09ERSAob3BlcmFuZHNb M10pOworCisgIGVtaXRfaW5zbiAoZ2VuX3ZlY19jbXA8dl9jbXBfbWl4ZWQ+ PHZfY21wX21peGVkPl9pbnRlcm5hbCAoCisJCQkJCQkgIG1hc2ssIG9wZXJh bmRzWzNdLAorCQkJCQkJICBvcGVyYW5kc1s0XSwgb3BlcmFuZHNbNV0pKTsK KyAgLyogU2VlIGNvbW1lbnRzIG9mIHZlY19jbXA8bW9kZT48bW9kZT5faW50 ZXJuYWwsIHRoZSBvcHBvc2l0ZSByZXN1bHQKKyAgICAgbWFzayBpcyBjb21w dXRlZCBmb3IgTkUgb3BlcmF0b3IsIHdlIG5lZWQgdG8gaW52ZXJ0IHRoZSBt YXNrIGhlcmUuCisgICAgIEluIHRoaXMgY2FzZSB3ZSBjYW4gc2F2ZSBhbiBp bnZlcnRpbmcgaW5zdHJ1Y3Rpb24gYnkgc2ltcGx5IHN3YXBwaW5nCisgICAg IHRoZSB0d28gb3BlcmFuZHMgdG8gYnNsLiAgKi8KKyAgaWYgKGNvZGUgPT0g TkUpCisgICAgc3RkOjpzd2FwIChvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0p OworCisgIGVtaXRfaW5zbiAoZ2VuX3Zjb25kX21hc2tfPG1vZGU+PHZfY21w X3Jlc3VsdD4gKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwKKwkJCQkJCSBv cGVyYW5kc1syXSwgbWFzaykpOwogICBET05FOwogfSkKIApAQCAtNDE1Niw3 ICszOTExLDcgQEAKIDs7IGNtdHN0CiAKIDs7IEFsdGhvdWdoIG5lZyAobmUg KGFuZCB4IHkpIDApIGlzIHRoZSBuYXR1cmFsIHdheSBvZiBleHByZXNzaW5n IGEgY210c3QsCi07OyB3ZSBkb24ndCBoYXZlIGFueSBpbnNucyB1c2luZyBu ZSwgYW5kIGFhcmNoNjRfdmNvbmRfaW50ZXJuYWwgb3V0cHV0cworOzsgd2Ug ZG9uJ3QgaGF2ZSBhbnkgaW5zbnMgdXNpbmcgbmUsIGFuZCBhYXJjaDY0X3Zj b25kIG91dHB1dHMKIDs7IG5vdCAobmVnIChlcSAoYW5kIHggeSkgMCkpCiA7 OyB3aGljaCBpcyByZXdyaXR0ZW4gYnkgc2ltcGxpZnlfcnR4IGFzCiA7OyBw bHVzIChlcSAoYW5kIHggeSkgMCkgLTEuCmRpZmYgLS1naXQgYS9nY2MvY29u ZmlnL2FhcmNoNjQvaXRlcmF0b3JzLm1kIGIvZ2NjL2NvbmZpZy9hYXJjaDY0 L2l0ZXJhdG9ycy5tZAppbmRleCA0M2IyMmQ4Li5mNTNmZTlkIDEwMDY0NAot LS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvaXRlcmF0b3JzLm1kCisrKyBiL2dj Yy9jb25maWcvYWFyY2g2NC9pdGVyYXRvcnMubWQKQEAgLTYxMCw2ICs2MTAs MTYgQEAKIAkJCQkoVjJERiAidjJkaSIpIChERiAgICAiZGkiKQogCQkJCShT RiAgICJzaSIpXSkKIAorOzsgTW9kZSBmb3IgdmVjdG9yIGNvbmRpdGlvbmFs IG9wZXJhdGlvbnMgd2hlcmUgdGhlIGNvbXBhcmlzb24gaGFzCis7OyBkaWZm ZXJlbnQgdHlwZSBmcm9tIHRoZSBsaHMuCisoZGVmaW5lX21vZGVfYXR0ciBW X2NtcF9taXhlZCBbKFYyU0kgIlYyU0YiKSAoVjRTSSAiVjRTRiIpCisJCQkg ICAgICAgKFYyREkgIlYyREYiKSAoVjJTRiAiVjJTSSIpCisJCQkgICAgICAg KFY0U0YgIlY0U0kiKSAoVjJERiAiVjJESSIpXSkKKworKGRlZmluZV9tb2Rl X2F0dHIgdl9jbXBfbWl4ZWQgWyhWMlNJICJ2MnNmIikgKFY0U0kgInY0c2Yi KQorCQkJICAgICAgIChWMkRJICJ2MmRmIikgKFYyU0YgInYyc2kiKQorCQkJ ICAgICAgIChWNFNGICJ2NHNpIikgKFYyREYgInYyZGkiKV0pCisKIDs7IExv d2VyIGNhc2UgZWxlbWVudCBtb2RlcyAoYXMgdXNlZCBpbiBzaGlmdCBpbW1l ZGlhdGUgcGF0dGVybnMpLgogKGRlZmluZV9tb2RlX2F0dHIgdmVfbW9kZSBb KFY4UUkgInFpIikgKFYxNlFJICJxaSIpCiAJCQkgICAoVjRISSAiaGkiKSAo VjhISSAgImhpIikK --_002_DB5PR08MB1144D56F64725BA9E00FC21CE7550DB5PR08MB1144eurp_--