From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail.irisgmbh.de (mail.irisgmbh.de [81.169.172.79]) by mx.groups.io with SMTP id smtpd.web09.8495.1623854937352618512 for ; Wed, 16 Jun 2021 07:48:58 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=none, err=SPF record not found (domain: iris-sensing.com, ip: 81.169.172.79, mailfrom: jasper.orschulko@iris-sensing.com) Received: from localhost (localhost [127.0.0.1]) by mail.irisgmbh.de (Postfix) with ESMTP id D470831E032E for ; Wed, 16 Jun 2021 16:48:55 +0200 (CEST) X-Virus-Scanned: amavisd-new at irisgmbh.de Received: from mail.irisgmbh.de ([127.0.0.1]) by localhost (s15324379.rootmaster.info [127.0.0.1]) (amavisd-new, port 10027) with ESMTP for ; Wed, 16 Jun 2021 16:48:55 +0200 (CEST) Received: from ERDE.irisgmbh.local (unknown [213.61.209.158]) by mail.irisgmbh.de (Postfix) with ESMTPS id ACDF431E02E8 for ; Wed, 16 Jun 2021 16:48:55 +0200 (CEST) Received: from ERDE.irisgmbh.local ([172.30.10.11]) by ERDE.irisgmbh.local ([172.30.10.11]) with mapi id 14.03.0513.000; Wed, 16 Jun 2021 16:48:55 +0200 From: "Jasper Orschulko" To: "openembedded-core@lists.openembedded.org" Subject: Re: [OE-core][dunfell][PATCH] expat: fix CVE-2013-0340 Thread-Topic: [OE-core][dunfell][PATCH] expat: fix CVE-2013-0340 Thread-Index: AQHXYr4X6VpgCZmqTk+AGKWQhl9RtasWljoA Date: Wed, 16 Jun 2021 14:48:53 +0000 Message-ID: <2c3d063872f3f664011cbbfbbe3679d52b49ff5d.camel@iris-sensing.com> References: <168917379DAE252D.8130@lists.openembedded.org> In-Reply-To: <168917379DAE252D.8130@lists.openembedded.org> Accept-Language: en-US, de-DE X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.30.10.1] MIME-Version: 1.0 Content-Language: de-DE Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQ0KSGFzaDogU0hBMjU2DQoNClAuUy46 IEkgYW0gbm90IHRvbyBmYW1pbGlhciB3aXRoIGV4cGF0LCB0aGlzIHBhcnRpY3VsYXIgQ1ZFLCBu b3Qgd2l0aA0KdGhlIHByYWN0aXNlIG9mIGJhY2twb3J0aW5nIHNlY3VyaXR5IHBhdGNoZXMsIHNv IHNvbWVvbmUoVE0pIHNob3VsZA0KZGVmaW5pdGVseSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhp cyBmaXJzdC4NCg0KLSAtLSANCldpdGggYmVzdCByZWdhcmRzDQoNCkphc3BlciBPcnNjaHVsa28N CkRldk9wcyBFbmdpbmVlcg0KDQpUZWwuICs0OSAzMCA1OCA1OCAxNCAyNjUNCkZheCArNDkgMzAg NTggNTggMTQgOTk5DQpKYXNwZXIuT3JzY2h1bGtvQGlyaXMtc2Vuc2luZy5jb20NCg0K4oCiIOKA oiDigKIg4oCiIOKAoiDigKIg4oCiIOKAoiDigKIg4oCiIOKAoiDigKIg4oCiIOKAoiDigKIg4oCi IOKAoiDigKIg4oCiIOKAoiDigKIg4oCiIOKAoiDigKIg4oCiIOKAog0KDQppcmlzLUdtYkgNCmlu ZnJhcmVkICYgaW50ZWxsaWdlbnQgc2Vuc29ycw0KT3N0ZW5kc3RyYcOfZSAxLTE0IHwgMTI0NTkg QmVybGluDQoNCmh0dHBzOi8vaXJpcy1zZW5zaW5nLmNvbS8NCg0KDQoNCg0KT24gV2VkLCAyMDIx LTA2LTE2IGF0IDE0OjQ0ICswMDAwLCBKYXNwZXIgT3JzY2h1bGtvIHdyb3RlOg0KPiBleHBhdCA8 IDQuMCBpcyB2dWxuZXJhYmxlIHRvIGJpbGxpb24gbGF1Z2hzIGF0dGFja3MgKHNlZQ0KPiBbaHR0 cHM6Ly9naXRodWIuY29tL2xpYmV4cGF0L2xpYmV4cGF0L2lzc3Vlcy8zNF0pLiBUaGlzIHBhdGNo DQo+IGJhY2twb3J0cw0KPiB0aGUgY29tbWl0cyBiMWQwMzk2MDdkM2Q4YTA0MmJmMDQ2NmJmY2Mx YzBmMTA0ZTM1M2M4DQo+IGFuZCA2MDk1OWYyYjQ5MTg3NjE5OTg3OWQ5N2M4ZWQ5NTZlYWJiMGMy ZTczIGZyb20gdXBzdHJlYW0uDQo+IA0KPiBBZGRpdGlvbmFsbHksIHRoZSBTUkNfVVJJIGhhZCB0 byBiZSBhZGp1c3RlZCBkdWUgdG8gcmVuYW1pbmcgb2YgdGhlDQo+IHNvdXJjZSBhcmNoaXZlDQo+ IA0KPiBTaWduZWQtb2ZmLWJ5OiBKYXNwZXIgT3JzY2h1bGtvIDxKYXNwZXIuT3JzY2h1bGtvQGly aXMtc2Vuc2luZy5jb20+DQo+IC0tLQ0KPiDCoC4uLmV4cGF0LUJhY2twb3J0LWZpeC1mb3ItQ1ZF LTIwMTMtMDM0MC5wYXRjaCB8IDE3NTgNCj4gKysrKysrKysrKysrKysrKysNCj4gwqBtZXRhL3Jl Y2lwZXMtY29yZS9leHBhdC9leHBhdF8yLjIuOS5iYsKgwqDCoMKgwqDCoMKgIHzCoMKgwqAgMyAr LQ0KPiDCoDIgZmlsZXMgY2hhbmdlZCwgMTc2MCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p DQo+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IG1ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0LzAw MDEtZXhwYXQtDQo+IEJhY2twb3J0LQ0KPiBmaXgtZm9yLUNWRS0yMDEzLTAzNDAucGF0Y2gNCj4g DQo+IGRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC8wMDAxLWV4cGF0 LUJhY2twb3J0LWZpeC0NCj4gZm9yLQ0KPiBDVkUtMjAxMy0wMzQwLnBhdGNoIGIvbWV0YS9yZWNp cGVzLWNvcmUvZXhwYXQvZXhwYXQvMDAwMS1leHBhdC0NCj4gQmFja3BvcnQtZml4LWZvci1DVkUt MjAxMy0wMzQwLnBhdGNoDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAw MDAuLmIyY2EwNjZkOTYNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9tZXRhL3JlY2lwZXMtY29y ZS9leHBhdC9leHBhdC8wMDAxLWV4cGF0LUJhY2twb3J0LWZpeC1mb3ItQ1ZFLQ0KPiAyMDEzLTAz NDAucGF0Y2gNCj4gQEAgLTAsMCArMSwxNzU4IEBADQo+ICtGcm9tIDZmNjhlYjA0MzlmM2MxODA3 YTE0M2ZmOGM4OTcyZTc0ZDQwNGQ4ZjAgTW9uIFNlcCAxNyAwMDowMDowMA0KPiAyMDAxDQo+ICtG cm9tOiBTZWJhc3RpYW4gUGlwcGluZyA8c2ViYXN0aWFuQHBpcHBpbmcub3JnPg0KPiArRGF0ZTog TW9uLCAxOSBBcHIgMjAyMSAyMTo0Mjo1MSArMDIwMA0KPiArU3ViamVjdDogW1BBVENIXSBleHBh dDogQmFja3BvcnQgZml4IGZvciBDVkUtMjAxMy0wMzQwDQo+ICsNCj4gK0lzc3VlOiBodHRwczov L2dpdGh1Yi5jb20vbGliZXhwYXQvbGliZXhwYXQvaXNzdWVzLzM0DQo+ICsNCj4gK1RoaXMgcGF0 Y2ggY2hlcnJ5LXBpY2tzIHRoZSBmb2xsb3dpbmcgY29tbWl0cyBmcm9tIHVwc3RyZWFtIHJlbGVh c2UNCj4gKzIuNC4wIG9udG8gMi4yLjk6DQo+ICsNCj4gKy0gYjFkMDM5NjA3ZDNkOGEwNDJiZjA0 NjZiZmNjMWMwZjEwNGUzNTNjOA0KPiArLSA2MDk1OWYyYjQ5MTg3NjE5OTg3OWQ5N2M4ZWQ5NTZl YWJiMGMyZTczDQo+ICsNCj4gK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQNCj4gK0NWRTogQ1ZF LTIwMTMtMDM0MA0KPiArU2lnbmVkLW9mZi1ieTogSmFzcGVyIE9yc2NodWxrbyA8SmFzcGVyLk9y c2NodWxrb0BpcmlzLXNlbnNpbmcuY29tPg0KPiArLS0tDQo+ICsgZXhwYXQvbGliL2V4cGF0LmjC oMKgwqDCoMKgwqAgfMKgwqAgMjEgKy0NCj4gKyBleHBhdC9saWIvaW50ZXJuYWwuaMKgwqDCoCB8 wqDCoCAzMCArDQo+ICsgZXhwYXQvbGliL2xpYmV4cGF0LmRlZsKgIHzCoMKgwqAgMyArDQo+ICsg ZXhwYXQvbGliL2xpYmV4cGF0dy5kZWYgfMKgwqDCoCAzICsNCj4gKyBleHBhdC9saWIveG1scGFy c2UuY8KgwqDCoCB8IDExNDcNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0NCj4gLQ0KPiArIDUgZmlsZXMgY2hhbmdlZCwgMTE0MyBpbnNlcnRpb25zKCspLCA2MSBkZWxl dGlvbnMoLSkNCj4gKw0KPiArZGlmZiAtLWdpdCBhL2V4cGF0L2xpYi9leHBhdC5oIGIvZXhwYXQv bGliL2V4cGF0LmgNCj4gK2luZGV4IDQ4YTZlMmEzLi43OTYwODZjMiAxMDA2NDQNCj4gKy0tLSBh L2V4cGF0L2xpYi9leHBhdC5oDQo+ICsrKysgYi9leHBhdC9saWIvZXhwYXQuaA0KPiArQEAgLTEx NSw3ICsxMTUsOSBAQCBlbnVtIFhNTF9FcnJvciB7DQo+ICvCoMKgIFhNTF9FUlJPUl9SRVNFUlZF RF9QUkVGSVhfWE1MTlMsDQo+ICvCoMKgIFhNTF9FUlJPUl9SRVNFUlZFRF9OQU1FU1BBQ0VfVVJJ LA0KPiArwqDCoCAvKiBBZGRlZCBpbiAyLjIuMS4gKi8NCj4gKy3CoCBYTUxfRVJST1JfSU5WQUxJ RF9BUkdVTUVOVA0KPiArK8KgIFhNTF9FUlJPUl9JTlZBTElEX0FSR1VNRU5ULA0KPiArK8KgIC8q IEJhY2twb3J0ZWQgZnJvbSAyLjQuMC4gKi8NCj4gKyvCoCBYTUxfRVJST1JfQU1QTElGSUNBVElP Tl9MSU1JVF9CUkVBQ0gNCj4gKyB9Ow0KPiArIA0KPiArIGVudW0gWE1MX0NvbnRlbnRfVHlwZSB7 DQo+ICtAQCAtOTk3LDcgKzk5OSwxMCBAQCBlbnVtIFhNTF9GZWF0dXJlRW51bSB7DQo+ICvCoMKg IFhNTF9GRUFUVVJFX1NJWkVPRl9YTUxfTENIQVIsDQo+ICvCoMKgIFhNTF9GRUFUVVJFX05TLA0K PiArwqDCoCBYTUxfRkVBVFVSRV9MQVJHRV9TSVpFLA0KPiArLcKgIFhNTF9GRUFUVVJFX0FUVFJf SU5GTw0KPiArK8KgIFhNTF9GRUFUVVJFX0FUVFJfSU5GTywNCj4gKyvCoCAvKiBBZGRlZCBpbiBF eHBhdCAyLjQuMC4gKi8NCj4gKysgDQo+IFhNTF9GRUFUVVJFX0JJTExJT05fTEFVR0hTX0FUVEFD S19QUk9URUNUSU9OX01BWElNVU1fQU1QTElGSUNBVElPTl9ERQ0KPiBGQQ0KPiBVTFQsDQo+ICsr IA0KPiBYTUxfRkVBVFVSRV9CSUxMSU9OX0xBVUdIU19BVFRBQ0tfUFJPVEVDVElPTl9BQ1RJVkFU SU9OX1RIUkVTSE9MRF9ERUYNCj4gQVUNCj4gTFQNCj4gK8KgwqAgLyogQWRkaXRpb25hbCBmZWF0 dXJlcyBtdXN0IGJlIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhpcyBlbnVtLiAqLw0KPiArIH07DQo+ ICsgDQo+ICtAQCAtMTAxMCw2ICsxMDE1LDE4IEBAIHR5cGVkZWYgc3RydWN0IHsNCj4gKyBYTUxQ QVJTRUFQSShjb25zdCBYTUxfRmVhdHVyZSAqKQ0KPiArIFhNTF9HZXRGZWF0dXJlTGlzdCh2b2lk KTsNCj4gKyANCj4gKysjaWZkZWYgWE1MX0RURA0KPiArKy8qIEJhY2twb3J0ZWQgZnJvbSBFeHBh dCAyLjQuMC4gKi8NCj4gKytYTUxQQVJTRUFQSShYTUxfQm9vbCkNCj4gKytYTUxfU2V0QmlsbGlv bkxhdWdoc0F0dGFja1Byb3RlY3Rpb25NYXhpbXVtQW1wbGlmaWNhdGlvbigNCj4gKyvCoMKgwqAg WE1MX1BhcnNlciBwYXJzZXIsIGZsb2F0IG1heGltdW1BbXBsaWZpY2F0aW9uRmFjdG9yKTsNCj4g KysNCj4gKysvKiBCYWNrcG9ydGVkIGZyb20gRXhwYXQgMi40LjAuICovDQo+ICsrWE1MUEFSU0VB UEkoWE1MX0Jvb2wpDQo+ICsrWE1MX1NldEJpbGxpb25MYXVnaHNBdHRhY2tQcm90ZWN0aW9uQWN0 aXZhdGlvblRocmVzaG9sZCgNCj4gKyvCoMKgwqAgWE1MX1BhcnNlciBwYXJzZXIsIHVuc2lnbmVk IGxvbmcgbG9uZw0KPiBhY3RpdmF0aW9uVGhyZXNob2xkQnl0ZXMpOw0KPiArKyNlbmRpZg0KPiAr Kw0KPiArIC8qIEV4cGF0IGZvbGxvd3MgdGhlIHNlbWFudGljIHZlcnNpb25pbmcgY29udmVudGlv bi4NCj4gK8KgwqDCoCBTZWUgaHR0cDovL3NlbXZlci5vcmcuDQo+ICsgKi8NCj4gK2RpZmYgLS1n aXQgYS9leHBhdC9saWIvaW50ZXJuYWwuaCBiL2V4cGF0L2xpYi9pbnRlcm5hbC5oDQo+ICtpbmRl eCA2MDkxM2RhYi4uZDhiMzFmYTIgMTAwNjQ0DQo+ICstLS0gYS9leHBhdC9saWIvaW50ZXJuYWwu aA0KPiArKysrIGIvZXhwYXQvbGliL2ludGVybmFsLmgNCj4gK0BAIC0xMDEsMTAgKzEwMSw0MCBA QA0KPiArICPCoCBlbmRpZg0KPiArICNlbmRpZg0KPiArIA0KPiArKyNpbmNsdWRlIDxsaW1pdHMu aD4gLy8gVUxPTkdfTUFYDQo+ICsrDQo+ICsrI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhIGRlZmlu ZWQoX19VU0VfTUlOR1dfQU5TSV9TVERJTykNCj4gKysjwqAgZGVmaW5lIEVYUEFUX0ZNVF9VTEwo bWlkcGFydCkgIiUiIG1pZHBhcnQgIkk2NHUiDQo+ICsrI8KgIGlmIGRlZmluZWQoX1dJTjY0KSAv LyBOb3RlOiBtb2RpZmllciAidGQiIGRvZXMgbm90IHdvcmsgZm9yDQo+IE1pbkdXDQo+ICsrI8Kg wqDCoCBkZWZpbmUgRVhQQVRfRk1UX1BUUkRJRkZfVChtaWRwYXJ0KSAiJSIgbWlkcGFydCAiSTY0 ZCINCj4gKysjwqAgZWxzZQ0KPiArKyPCoMKgwqAgZGVmaW5lIEVYUEFUX0ZNVF9QVFJESUZGX1Qo bWlkcGFydCkgIiUiIG1pZHBhcnQgImQiDQo+ICsrI8KgIGVuZGlmDQo+ICsrI2Vsc2UNCj4gKysj wqAgZGVmaW5lIEVYUEFUX0ZNVF9VTEwobWlkcGFydCkgIiUiIG1pZHBhcnQgImxsdSINCj4gKysj wqAgaWYgISBkZWZpbmVkKFVMT05HX01BWCkNCj4gKysjwqDCoMKgIGVycm9yIENvbXBpbGVyIGRp ZCBub3QgZGVmaW5lIFVMT05HX01BWCBmb3IgdXMNCj4gKysjwqAgZWxpZiBVTE9OR19NQVggPT0g MTg0NDY3NDQwNzM3MDk1NTE2MTV1IC8vIDJeNjQtMQ0KPiArKyPCoMKgwqAgZGVmaW5lIEVYUEFU X0ZNVF9QVFJESUZGX1QobWlkcGFydCkgIiUiIG1pZHBhcnQgImxkIg0KPiArKyPCoCBlbHNlDQo+ ICsrI8KgwqDCoCBkZWZpbmUgRVhQQVRfRk1UX1BUUkRJRkZfVChtaWRwYXJ0KSAiJSIgbWlkcGFy dCAiZCINCj4gKysjwqAgZW5kaWYNCj4gKysjZW5kaWYNCj4gKysNCj4gKyAjaWZuZGVmIFVOVVNF RF9QDQo+ICsgI8KgIGRlZmluZSBVTlVTRURfUChwKSAodm9pZClwDQo+ICsgI2VuZGlmDQo+ICsg DQo+ICsrLyogTk9URSBCRUdJTiBJZiB5b3UgZXZlciBwYXRjaCB0aGVzZSBkZWZhdWx0cyB0byBn cmVhdGVyIHZhbHVlcw0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvciBub24tYXR0 YWNrIFhNTCBwYXlsb2FkIGluIHlvdXIgZW52aXJvbm1lbnQsDQo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcGxlYXNlIGZpbGUgYSBidWcgcmVwb3J0IHdpdGggbGliZXhwYXQuwqAgVGhh bmsgeW91IQ0KPiArKyovDQo+ICsrI2RlZmluZQ0KPiBcDQo+ICsrwqAgMTAwLjBmDQo+ICsrI2Rl ZmluZQ0KPiBcDQo+ICsrwqAgODM4ODYwOCAvLyA4IE1pQiwgMl4yMw0KPiArKy8qIE5PVEUgRU5E ICovDQo+ICsrDQo+ICsgI2lmZGVmIF9fY3BsdXNwbHVzDQo+ICsgZXh0ZXJuICJDIiB7DQo+ICsg I2VuZGlmDQo+ICtkaWZmIC0tZ2l0IGEvZXhwYXQvbGliL2xpYmV4cGF0LmRlZiBiL2V4cGF0L2xp Yi9saWJleHBhdC5kZWYNCj4gK2luZGV4IDE2ZmFmNTk1Li5iNWU1OWQ4ZCAxMDA2NDQNCj4gKy0t LSBhL2V4cGF0L2xpYi9saWJleHBhdC5kZWYNCj4gKysrKyBiL2V4cGF0L2xpYi9saWJleHBhdC5k ZWYNCj4gK0BAIC03NiwzICs3Niw2IEBAIEVYUE9SVFMNCj4gK8KgwqAgWE1MX1NldEhhc2hTYWx0 IEA2Nw0KPiArIDsgYWRkZWQgd2l0aCB2ZXJzaW9uIDIuMi41DQo+ICvCoMKgIF9JTlRFUk5BTF90 cmltX3RvX2NvbXBsZXRlX3V0ZjhfY2hhcmFjdGVycyBANjgNCj4gKys7IGJhY2twb3J0ZWQgZnJv bSB2ZXJzaW9uIDIuNC4wDQo+ICsrwqAgWE1MX1NldEJpbGxpb25MYXVnaHNBdHRhY2tQcm90ZWN0 aW9uQWN0aXZhdGlvblRocmVzaG9sZCBANjkNCj4gKyvCoCBYTUxfU2V0QmlsbGlvbkxhdWdoc0F0 dGFja1Byb3RlY3Rpb25NYXhpbXVtQW1wbGlmaWNhdGlvbiBANzANCj4gK2RpZmYgLS1naXQgYS9l eHBhdC9saWIvbGliZXhwYXR3LmRlZiBiL2V4cGF0L2xpYi9saWJleHBhdHcuZGVmDQo+ICtpbmRl eCAxNmZhZjU5NS4uZWJkNzc3MDcgMTAwNjQ0DQo+ICstLS0gYS9leHBhdC9saWIvbGliZXhwYXR3 LmRlZg0KPiArKysrIGIvZXhwYXQvbGliL2xpYmV4cGF0dy5kZWYNCj4gK0BAIC03NiwzICs3Niw2 IEBAIEVYUE9SVFMNCj4gK8KgwqAgWE1MX1NldEhhc2hTYWx0IEA2Nw0KPiArIDsgYWRkZWQgd2l0 aCB2ZXJzaW9uIDIuMi41DQo+ICvCoMKgIF9JTlRFUk5BTF90cmltX3RvX2NvbXBsZXRlX3V0Zjhf Y2hhcmFjdGVycyBANjgNCj4gKys7IGJhY2twb3J0ZWQgZnJvbSB2ZXJzaW9uIDIuNC4wDQo+ICsr wqAgWE1MX1NldEJpbGxpb25MYXVnaHNBdHRhY2tQcm90ZWN0aW9uQWN0aXZhdGlvblRocmVzaG9s ZCBANjkNCj4gKyvCoCBYTUxfU2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rpb25NYXhpbXVt QW1wbGlmaWNhdGlvbiBANw0KPiArZGlmZiAtLWdpdCBhL2V4cGF0L2xpYi94bWxwYXJzZS5jIGIv ZXhwYXQvbGliL3htbHBhcnNlLmMNCj4gK2luZGV4IDNhYWYzNWI5Li5mZGNjNzI5NiAxMDA2NDQN Cj4gKy0tLSBhL2V4cGF0L2xpYi94bWxwYXJzZS5jDQo+ICsrKysgYi9leHBhdC9saWIveG1scGFy c2UuYw0KPiArQEAgLTQ3LDYgKzQ3LDggQEANCj4gKyAjaW5jbHVkZSA8bGltaXRzLmg+IC8qIFVJ TlRfTUFYICovDQo+ICsgI2luY2x1ZGUgPHN0ZGlvLmg+wqAgLyogZnByaW50ZiAqLw0KPiArICNp bmNsdWRlIDxzdGRsaWIuaD4gLyogZ2V0ZW52LCByYW5kX3MgKi8NCj4gKysjaW5jbHVkZSA8c3Rk aW50Lmg+IC8qIHVpbnRwdHJfdCAqLw0KPiArKyNpbmNsdWRlIDxtYXRoLmg+wqDCoCAvKiBpc25h biAqLw0KPiArIA0KPiArICNpZmRlZiBfV0lOMzINCj4gKyAjwqAgZGVmaW5lIGdldHBpZCBHZXRD dXJyZW50UHJvY2Vzc0lkDQo+ICtAQCAtMzczLDYgKzM3NSwzMSBAQCB0eXBlZGVmIHN0cnVjdCBv cGVuX2ludGVybmFsX2VudGl0eSB7DQo+ICvCoMKgIFhNTF9Cb29sIGJldHdlZW5EZWNsOyAvKiBX RkM6IFBFIEJldHdlZW4gRGVjbGFyYXRpb25zICovDQo+ICsgfSBPUEVOX0lOVEVSTkFMX0VOVElU WTsNCj4gKyANCj4gKytlbnVtIFhNTF9BY2NvdW50IHsNCj4gKyvCoCBYTUxfQUNDT1VOVF9ESVJF Q1QswqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogYnl0ZXMgZGlyZWN0bHkgcGFzc2VkIHRvIHRoZQ0K PiBFeHBhdA0KPiBwYXJzZXIgKi8NCj4gKyvCoCBYTUxfQUNDT1VOVF9FTlRJVFlfRVhQQU5TSU9O LCAvKiBpbnRlcm1lZGlhdGUgYnl0ZXMgcHJvZHVjZWQNCj4gZHVyaW5nDQo+IGVudGl0eQ0KPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGV4cGFuc2lvbiAqLw0KPiArK8KgIFhNTF9BQ0NPVU5UX05PTkXCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBpLmUuIGRvIG5vdCBhY2NvdW50LCB3YXMNCj4gYWNjb3Vu dGVkDQo+IGFscmVhZHkgKi8NCj4gKyt9Ow0KPiArKw0KPiArKyNpZmRlZiBYTUxfRFREDQo+ICsr dHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgWG1sQmlnQ291bnQ7DQo+ICsrdHlwZWRlZiBzdHJ1 Y3QgYWNjb3VudGluZyB7DQo+ICsrwqAgWG1sQmlnQ291bnQgY291bnRCeXRlc0RpcmVjdDsNCj4g KyvCoCBYbWxCaWdDb3VudCBjb3VudEJ5dGVzSW5kaXJlY3Q7DQo+ICsrwqAgaW50IGRlYnVnTGV2 ZWw7DQo+ICsrwqAgZmxvYXQgbWF4aW11bUFtcGxpZmljYXRpb25GYWN0b3I7IC8vID49MS4wDQo+ ICsrwqAgdW5zaWduZWQgbG9uZyBsb25nIGFjdGl2YXRpb25UaHJlc2hvbGRCeXRlczsNCj4gKyt9 IEFDQ09VTlRJTkc7DQo+ICsrDQo+ICsrdHlwZWRlZiBzdHJ1Y3QgZW50aXR5X3N0YXRzIHsNCj4g KyvCoCB1bnNpZ25lZCBpbnQgY291bnRFdmVyT3BlbmVkOw0KPiArK8KgIHVuc2lnbmVkIGludCBj dXJyZW50RGVwdGg7DQo+ICsrwqAgdW5zaWduZWQgaW50IG1heGltdW1EZXB0aFNlZW47DQo+ICsr wqAgaW50IGRlYnVnTGV2ZWw7DQo+ICsrfSBFTlRJVFlfU1RBVFM7DQo+ICsrI2VuZGlmIC8qIFhN TF9EVEQgKi8NCj4gKysNCj4gKyB0eXBlZGVmIGVudW0gWE1MX0Vycm9yIFBUUkNBTEwgUHJvY2Vz c29yKFhNTF9QYXJzZXIgcGFyc2VyLCBjb25zdA0KPiBjaGFyICpzdGFydCwNCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAqZW5kLCBjb25zdA0KPiBjaGFyDQo+ICoqZW5k UHRyKTsNCj4gKyANCj4gK0BAIC00MDMsMTYgKzQzMCwxOCBAQCBzdGF0aWMgZW51bSBYTUxfRXJy b3INCj4gaW5pdGlhbGl6ZUVuY29kaW5nKFhNTF9QYXJzZXIgcGFyc2VyKTsNCj4gKyBzdGF0aWMg ZW51bSBYTUxfRXJyb3IgZG9Qcm9sb2coWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0IEVOQ09ESU5H DQo+ICplbmMsDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICplbmQsIGludA0K PiB0b2ssDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjaGFyICpuZXh0LCBjb25zdCBjaGFyDQo+ICoqbmV4dFB0 ciwNCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgWE1MX0Jvb2wgaGF2ZU1vcmUsIFhNTF9Cb29sDQo+IGFsbG93Q2xvc2luZ0Rv Y3R5cGUpOw0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBYTUxfQm9vbCBoYXZlTW9yZSwgWE1MX0Jvb2wNCj4gYWxsb3dDbG9z aW5nRG9jdHlwZSwNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZW51bSBYTUxfQWNjb3VudCBhY2NvdW50KTsNCj4gKyBzdGF0 aWMgZW51bSBYTUxfRXJyb3IgcHJvY2Vzc0ludGVybmFsRW50aXR5KFhNTF9QYXJzZXIgcGFyc2Vy LA0KPiBFTlRJVFkNCj4gKmVudGl0eSwNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgWE1MX0Jvb2wgYmV0d2VlbkRlY2wpOw0KPiArIHN0YXRpYyBlbnVtIFhNTF9FcnJvciBkb0Nv bnRlbnQoWE1MX1BhcnNlciBwYXJzZXIsIGludA0KPiBzdGFydFRhZ0xldmVsLA0KPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBjb25zdCBFTkNPRElORyAqZW5jLCBjb25zdCBjaGFyDQo+ICpzdGFydCwNCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Y29uc3QgY2hhciAqZW5kLCBjb25zdCBjaGFyDQo+ICoqZW5kUHRyLA0KPiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFhNTF9C b29sIGhhdmVNb3JlKTsNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBYTUxfQm9vbCBoYXZlTW9yZSwgZW51bSBYTUxfQWNj b3VudA0KPiBhY2NvdW50KTsNCj4gKyBzdGF0aWMgZW51bSBYTUxfRXJyb3IgZG9DZGF0YVNlY3Rp b24oWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0DQo+IEVOQ09ESU5HICosDQo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBjb25zdCBjaGFyICoqc3RhcnRQdHIsIGNvbnN0DQo+IGNoYXIgKmVuZCwNCj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAqKm5leHRQdHIsIFhNTF9Cb29sDQo+IGhhdmVNb3Jl KTsNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAqKm5leHRQdHIsIFhNTF9Cb29sDQo+ IGhhdmVNb3JlLA0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnVtIFhNTF9BY2NvdW50IGFjY291bnQp Ow0KPiArICNpZmRlZiBYTUxfRFREDQo+ICsgc3RhdGljIGVudW0gWE1MX0Vycm9yIGRvSWdub3Jl U2VjdGlvbihYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QNCj4gRU5DT0RJTkcgKiwNCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAqKnN0YXJ0UHRyLCBjb25zdA0KPiBjaGFyICplbmQs DQo+ICtAQCAtNDIyLDcgKzQ1MSw4IEBAIHN0YXRpYyBlbnVtIFhNTF9FcnJvciBkb0lnbm9yZVNl Y3Rpb24oWE1MX1BhcnNlcg0KPiBwYXJzZXIsIGNvbnN0IEVOQ09ESU5HICosDQo+ICsgc3RhdGlj IHZvaWQgZnJlZUJpbmRpbmdzKFhNTF9QYXJzZXIgcGFyc2VyLCBCSU5ESU5HICpiaW5kaW5ncyk7 DQo+ICsgc3RhdGljIGVudW0gWE1MX0Vycm9yIHN0b3JlQXR0cyhYTUxfUGFyc2VyIHBhcnNlciwg Y29uc3QgRU5DT0RJTkcNCj4gKiwNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAqcywgVEFHX05BTUUN Cj4gKnRhZ05hbWVQdHIsDQo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklORElORyAqKmJpbmRpbmdzUHRyKTsNCj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBCSU5ESU5HICoqYmluZGluZ3NQdHIsDQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW51bSBYTUxfQWNjb3VudCBh Y2NvdW50KTsNCj4gKyBzdGF0aWMgZW51bSBYTUxfRXJyb3IgYWRkQmluZGluZyhYTUxfUGFyc2Vy IHBhcnNlciwgUFJFRklYICpwcmVmaXgsDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgQVRUUklCVVRFX0lE ICphdHRJZCwgY29uc3QNCj4gWE1MX0NoYXIgKnVyaSwNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSU5ESU5HICoq YmluZGluZ3NQdHIpOw0KPiArQEAgLTQzMSwxNSArNDYxLDE4IEBAIHN0YXRpYyBpbnQgZGVmaW5l QXR0cmlidXRlKEVMRU1FTlRfVFlQRSAqdHlwZSwNCj4gQVRUUklCVVRFX0lEICosIFhNTF9Cb29s IGlzQ2RhdGEsDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgWE1MX1BhcnNlciBwYXJzZXIpOw0KPiArIHN0YXRpYyBlbnVtIFhNTF9FcnJv ciBzdG9yZUF0dHJpYnV0ZVZhbHVlKFhNTF9QYXJzZXIgcGFyc2VyLCBjb25zdA0KPiBFTkNPRElO RyAqLA0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFhNTF9Cb29sIGlzQ2RhdGEsIGNv bnN0DQo+IGNoYXIgKiwNCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIg KiwgU1RSSU5HX1BPT0wNCj4gKik7DQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25z dCBjaGFyICosIFNUUklOR19QT09MDQo+ICosDQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBlbnVtIFhNTF9BY2NvdW50DQo+IGFjY291bnQpOw0KPiArIHN0YXRpYyBlbnVtIFhNTF9FcnJv ciBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QNCj4gRU5DT0RJ TkcgKiwNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFhNTF9Cb29sIGlzQ2RhdGEs IGNvbnN0DQo+IGNoYXIgKiwNCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3Qg Y2hhciAqLA0KPiBTVFJJTkdfUE9PTA0KPiAqKTsNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgY29uc3QgY2hhciAqLA0KPiBTVFJJTkdfUE9PTA0KPiAqLA0KPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBlbnVtIFhNTF9BY2NvdW50DQo+IGFjY291bnQpOw0KPiArIHN0YXRp YyBBVFRSSUJVVEVfSUQgKmdldEF0dHJpYnV0ZUlkKFhNTF9QYXJzZXIgcGFyc2VyLCBjb25zdA0K PiBFTkNPRElORw0KPiAqZW5jLA0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKnN0YXJ0 LCBjb25zdCBjaGFyDQo+ICplbmQpOw0KPiArIHN0YXRpYyBpbnQgc2V0RWxlbWVudFR5cGVQcmVm aXgoWE1MX1BhcnNlciBwYXJzZXIsIEVMRU1FTlRfVFlQRSAqKTsNCj4gKyBzdGF0aWMgZW51bSBY TUxfRXJyb3Igc3RvcmVFbnRpdHlWYWx1ZShYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QNCj4gRU5D T0RJTkcgKmVuYywNCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKnN0YXJ0LCBj b25zdA0KPiBjaGFyDQo+ICplbmQpOw0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hh ciAqc3RhcnQsIGNvbnN0DQo+IGNoYXINCj4gKmVuZCwNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGVudW0gWE1MX0FjY291bnQgYWNjb3VudCk7DQo+ICsgc3RhdGljIGludCByZXBvcnRQcm9jZXNz aW5nSW5zdHJ1Y3Rpb24oWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0DQo+IEVOQ09ESU5HICplbmMs DQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAqc3RhcnQsIGNvbnN0DQo+IGNo YXINCj4gKmVuZCk7DQo+ICsgc3RhdGljIGludCByZXBvcnRDb21tZW50KFhNTF9QYXJzZXIgcGFy c2VyLCBjb25zdCBFTkNPRElORyAqZW5jLA0KPiArQEAgLTUwMyw2ICs1MzYsMzUgQEAgc3RhdGlj IFhNTF9QYXJzZXIgcGFyc2VyQ3JlYXRlKGNvbnN0IFhNTF9DaGFyDQo+ICplbmNvZGluZ05hbWUs DQo+ICsgDQo+ICsgc3RhdGljIHZvaWQgcGFyc2VySW5pdChYTUxfUGFyc2VyIHBhcnNlciwgY29u c3QgWE1MX0NoYXINCj4gKmVuY29kaW5nTmFtZSk7DQo+ICsgDQo+ICsrI2lmZGVmIFhNTF9EVEQN Cj4gKytzdGF0aWMgZmxvYXQgYWNjb3VudGluZ0dldEN1cnJlbnRBbXBsaWZpY2F0aW9uKFhNTF9Q YXJzZXINCj4gcm9vdFBhcnNlcik7DQo+ICsrc3RhdGljIHZvaWQgYWNjb3VudGluZ1JlcG9ydFN0 YXRzKFhNTF9QYXJzZXIgb3JpZ2luUGFyc2VyLCBjb25zdA0KPiBjaGFyDQo+ICplcGlsb2cpOw0K PiArK3N0YXRpYyB2b2lkIGFjY291bnRpbmdPbkFib3J0KFhNTF9QYXJzZXIgb3JpZ2luUGFyc2Vy KTsNCj4gKytzdGF0aWMgdm9pZCBhY2NvdW50aW5nUmVwb3J0RGlmZihYTUxfUGFyc2VyIHJvb3RQ YXJzZXIsDQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQNCj4gbGV2ZWxzQXdheUZyb21Sb290UGFy c2VyLA0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAqYmVmb3JlLCBjb25zdCBjaGFyDQo+ICphZnRl ciwNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHB0cmRpZmZfdCBieXRlc01vcmUsIGludA0KPiBzb3VyY2VfbGluZSwN Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGVudW0gWE1MX0FjY291bnQgYWNjb3VudCk7DQo+ICsrc3RhdGljIFhNTF9C b29sIGFjY291bnRpbmdEaWZmVG9sZXJhdGVkKFhNTF9QYXJzZXIgb3JpZ2luUGFyc2VyLA0KPiBp bnQNCj4gdG9rLA0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjaGFyICpiZWZvcmUs IGNvbnN0DQo+IGNoYXIgKmFmdGVyLA0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgc291 cmNlX2xpbmUsDQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVudW0gWE1MX0FjY291bnQgYWNj b3VudCk7DQo+ICsrDQo+ICsrc3RhdGljIHZvaWQgZW50aXR5VHJhY2tpbmdSZXBvcnRTdGF0cyhY TUxfUGFyc2VyIHBhcnNlciwgRU5USVRZDQo+ICplbnRpdHksDQo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgY29uc3QgY2hhciAqYWN0aW9uLCBpbnQNCj4gc291cmNlTGluZSk7DQo+ICsrc3RhdGljIHZv aWQgZW50aXR5VHJhY2tpbmdPbk9wZW4oWE1MX1BhcnNlciBwYXJzZXIsIEVOVElUWSAqZW50aXR5 LA0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaW50IHNvdXJjZUxpbmUpOw0KPiArK3N0YXRpYyB2b2lkIGVudGl0eVRy YWNraW5nT25DbG9zZShYTUxfUGFyc2VyIHBhcnNlciwgRU5USVRZDQo+ICplbnRpdHksDQo+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGludCBzb3VyY2VMaW5lKTsNCj4gKysNCj4gKytzdGF0aWMgWE1MX1BhcnNlciBn ZXRSb290UGFyc2VyT2YoWE1MX1BhcnNlciBwYXJzZXIsDQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVk IGludCAqb3V0TGV2ZWxEaWZmKTsNCj4gKytzdGF0aWMgY29uc3QgY2hhciAqdW5zaWduZWRDaGFy VG9QcmludGFibGUodW5zaWduZWQgY2hhciBjKTsNCj4gKysjZW5kaWYgLyogWE1MX0RURCAqLw0K PiArKw0KPiArK3N0YXRpYyB1bnNpZ25lZCBsb25nIGdldERlYnVnTGV2ZWwoY29uc3QgY2hhciAq dmFyaWFibGVOYW1lLA0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcNCj4gZGVmYXVsdERl YnVnTGV2ZWwpOw0KPiArKw0KPiArICNkZWZpbmUgcG9vbFN0YXJ0KHBvb2wpICgocG9vbCktPnN0 YXJ0KQ0KPiArICNkZWZpbmUgcG9vbEVuZChwb29sKSAoKHBvb2wpLT5wdHIpDQo+ICsgI2RlZmlu ZSBwb29sTGVuZ3RoKHBvb2wpICgocG9vbCktPnB0ciAtIChwb29sKS0+c3RhcnQpDQo+ICtAQCAt NjE2LDYgKzY3OCwxMCBAQCBzdHJ1Y3QgWE1MX1BhcnNlclN0cnVjdCB7DQo+ICvCoMKgIGVudW0g WE1MX1BhcmFtRW50aXR5UGFyc2luZyBtX3BhcmFtRW50aXR5UGFyc2luZzsNCj4gKyAjZW5kaWYN Cj4gK8KgwqAgdW5zaWduZWQgbG9uZyBtX2hhc2hfc2VjcmV0X3NhbHQ7DQo+ICsrI2lmZGVmIFhN TF9EVEQNCj4gKyvCoCBBQ0NPVU5USU5HIG1fYWNjb3VudGluZzsNCj4gKyvCoCBFTlRJVFlfU1RB VFMgbV9lbnRpdHlfc3RhdHM7DQo+ICsrI2VuZGlmDQo+ICsgfTsNCj4gKyANCj4gKyAjZGVmaW5l IE1BTExPQyhwYXJzZXIsIHMpIChwYXJzZXItPm1fbWVtLm1hbGxvY19mY24oKHMpKSkNCj4gK0BA IC0xMDU1LDYgKzExMjEsMTggQEAgcGFyc2VySW5pdChYTUxfUGFyc2VyIHBhcnNlciwgY29uc3Qg WE1MX0NoYXINCj4gKmVuY29kaW5nTmFtZSkgew0KPiArwqDCoCBwYXJzZXItPm1fcGFyYW1FbnRp dHlQYXJzaW5nID0gWE1MX1BBUkFNX0VOVElUWV9QQVJTSU5HX05FVkVSOw0KPiArICNlbmRpZg0K PiArwqDCoCBwYXJzZXItPm1faGFzaF9zZWNyZXRfc2FsdCA9IDA7DQo+ICsrDQo+ICsrI2lmZGVm IFhNTF9EVEQNCj4gKyvCoCBtZW1zZXQoJnBhcnNlci0+bV9hY2NvdW50aW5nLCAwLCBzaXplb2Yo QUNDT1VOVElORykpOw0KPiArK8KgIHBhcnNlci0+bV9hY2NvdW50aW5nLmRlYnVnTGV2ZWwgPQ0K PiBnZXREZWJ1Z0xldmVsKCJFWFBBVF9BQ0NPVU5USU5HX0RFQlVHIiwgMHUpOw0KPiArK8KgIHBh cnNlci0+bV9hY2NvdW50aW5nLm1heGltdW1BbXBsaWZpY2F0aW9uRmFjdG9yDQo+ICsrwqDCoMKg wqDCoCA9DQo+IEVYUEFUX0JJTExJT05fTEFVR0hTX0FUVEFDS19QUk9URUNUSU9OX01BWElNVU1f QU1QTElGSUNBVElPTl9ERUZBVUxUOw0KPiArK8KgIHBhcnNlci0+bV9hY2NvdW50aW5nLmFjdGl2 YXRpb25UaHJlc2hvbGRCeXRlcw0KPiArK8KgwqDCoMKgwqAgPQ0KPiBFWFBBVF9CSUxMSU9OX0xB VUdIU19BVFRBQ0tfUFJPVEVDVElPTl9BQ1RJVkFUSU9OX1RIUkVTSE9MRF9ERUZBVUxUOw0KPiAr Kw0KPiArK8KgIG1lbXNldCgmcGFyc2VyLT5tX2VudGl0eV9zdGF0cywgMCwgc2l6ZW9mKEVOVElU WV9TVEFUUykpOw0KPiArK8KgIHBhcnNlci0+bV9lbnRpdHlfc3RhdHMuZGVidWdMZXZlbCA9DQo+ IGdldERlYnVnTGV2ZWwoIkVYUEFUX0VOVElUWV9ERUJVRyIsIDB1KTsNCj4gKysjZW5kaWYNCj4g KyB9DQo+ICsgDQo+ICsgLyogbW92ZXMgbGlzdCBvZiBiaW5kaW5ncyB0byBtX2ZyZWVCaW5kaW5n TGlzdCAqLw0KPiArQEAgLTIzMTgsNiArMjM5NiwxMCBAQCBYTUxfRXJyb3JTdHJpbmcoZW51bSBY TUxfRXJyb3IgY29kZSkgew0KPiArwqDCoCAvKiBBZGRlZCBpbiAyLjIuNS4gKi8NCj4gK8KgwqAg Y2FzZSBYTUxfRVJST1JfSU5WQUxJRF9BUkdVTUVOVDogLyogQ29uc3RhbnQgYWRkZWQgaW4gMi4y LjEsDQo+IGFscmVhZHkgKi8NCj4gK8KgwqDCoMKgIHJldHVybiBYTUxfTCgiaW52YWxpZCBhcmd1 bWVudCIpOw0KPiArK8KgIC8qIEJhY2twb3J0ZWQgZnJvbSAyLjQuMC4gKi8NCj4gKyvCoCBjYXNl IFhNTF9FUlJPUl9BTVBMSUZJQ0FUSU9OX0xJTUlUX0JSRUFDSDoNCj4gKyvCoMKgwqAgcmV0dXJu IFhNTF9MKA0KPiArK8KgwqDCoMKgwqDCoMKgICJsaW1pdCBvbiBpbnB1dCBhbXBsaWZpY2F0aW9u IGZhY3RvciAoZnJvbSBEVEQgYW5kDQo+IGVudGl0aWVzKQ0KPiBicmVhY2hlZCIpOw0KPiArwqDC oCB9DQo+ICvCoMKgIHJldHVybiBOVUxMOw0KPiArIH0NCj4gK0BAIC0yMzU0LDQxICsyNDM2LDc1 IEBAIFhNTF9FeHBhdFZlcnNpb25JbmZvKHZvaWQpIHsNCj4gKyANCj4gKyBjb25zdCBYTUxfRmVh dHVyZSAqWE1MQ0FMTA0KPiArIFhNTF9HZXRGZWF0dXJlTGlzdCh2b2lkKSB7DQo+ICstwqAgc3Rh dGljIGNvbnN0IFhNTF9GZWF0dXJlIGZlYXR1cmVzW10NCj4gKy3CoMKgwqDCoMKgID0ge3tYTUxf RkVBVFVSRV9TSVpFT0ZfWE1MX0NIQVIsIFhNTF9MKCJzaXplb2YoWE1MX0NoYXIpIiksDQo+ICst wqDCoMKgwqDCoMKgwqDCoMKgIHNpemVvZihYTUxfQ2hhcil9LA0KPiArLcKgwqDCoMKgwqDCoMKg wqAge1hNTF9GRUFUVVJFX1NJWkVPRl9YTUxfTENIQVIsIFhNTF9MKCJzaXplb2YoWE1MX0xDaGFy KSIpLA0KPiArLcKgwqDCoMKgwqDCoMKgwqDCoCBzaXplb2YoWE1MX0xDaGFyKX0sDQo+ICsrwqAg c3RhdGljIGNvbnN0IFhNTF9GZWF0dXJlIGZlYXR1cmVzW10gPSB7DQo+ICsrwqDCoMKgwqDCoCB7 WE1MX0ZFQVRVUkVfU0laRU9GX1hNTF9DSEFSLCBYTUxfTCgic2l6ZW9mKFhNTF9DaGFyKSIpLA0K PiArK8KgwqDCoMKgwqDCoCBzaXplb2YoWE1MX0NoYXIpfSwNCj4gKyvCoMKgwqDCoMKgIHtYTUxf RkVBVFVSRV9TSVpFT0ZfWE1MX0xDSEFSLCBYTUxfTCgic2l6ZW9mKFhNTF9MQ2hhcikiKSwNCj4g KyvCoMKgwqDCoMKgwqAgc2l6ZW9mKFhNTF9MQ2hhcil9LA0KPiArICNpZmRlZiBYTUxfVU5JQ09E RQ0KPiArLcKgwqDCoMKgwqDCoMKgwqAge1hNTF9GRUFUVVJFX1VOSUNPREUsIFhNTF9MKCJYTUxf VU5JQ09ERSIpLCAwfSwNCj4gKyvCoMKgwqDCoMKgIHtYTUxfRkVBVFVSRV9VTklDT0RFLCBYTUxf TCgiWE1MX1VOSUNPREUiKSwgMH0sDQo+ICsgI2VuZGlmDQo+ICsgI2lmZGVmIFhNTF9VTklDT0RF X1dDSEFSX1QNCj4gKy3CoMKgwqDCoMKgwqDCoMKgIHtYTUxfRkVBVFVSRV9VTklDT0RFX1dDSEFS X1QsDQo+IFhNTF9MKCJYTUxfVU5JQ09ERV9XQ0hBUl9UIiksDQo+IDB9LA0KPiArK8KgwqDCoMKg wqAge1hNTF9GRUFUVVJFX1VOSUNPREVfV0NIQVJfVCwgWE1MX0woIlhNTF9VTklDT0RFX1dDSEFS X1QiKSwNCj4gMH0sDQo+ICsgI2VuZGlmDQo+ICsgI2lmZGVmIFhNTF9EVEQNCj4gKy3CoMKgwqDC oMKgwqDCoMKgIHtYTUxfRkVBVFVSRV9EVEQsIFhNTF9MKCJYTUxfRFREIiksIDB9LA0KPiArK8Kg wqDCoMKgwqAge1hNTF9GRUFUVVJFX0RURCwgWE1MX0woIlhNTF9EVEQiKSwgMH0sDQo+ICsgI2Vu ZGlmDQo+ICsgI2lmZGVmIFhNTF9DT05URVhUX0JZVEVTDQo+ICstwqDCoMKgwqDCoMKgwqDCoCB7 WE1MX0ZFQVRVUkVfQ09OVEVYVF9CWVRFUywgWE1MX0woIlhNTF9DT05URVhUX0JZVEVTIiksDQo+ ICstwqDCoMKgwqDCoMKgwqDCoMKgIFhNTF9DT05URVhUX0JZVEVTfSwNCj4gKyvCoMKgwqDCoMKg IHtYTUxfRkVBVFVSRV9DT05URVhUX0JZVEVTLCBYTUxfTCgiWE1MX0NPTlRFWFRfQllURVMiKSwN Cj4gKyvCoMKgwqDCoMKgwqAgWE1MX0NPTlRFWFRfQllURVN9LA0KPiArICNlbmRpZg0KPiArICNp ZmRlZiBYTUxfTUlOX1NJWkUNCj4gKy3CoMKgwqDCoMKgwqDCoMKgIHtYTUxfRkVBVFVSRV9NSU5f U0laRSwgWE1MX0woIlhNTF9NSU5fU0laRSIpLCAwfSwNCj4gKyvCoMKgwqDCoMKgIHtYTUxfRkVB VFVSRV9NSU5fU0laRSwgWE1MX0woIlhNTF9NSU5fU0laRSIpLCAwfSwNCj4gKyAjZW5kaWYNCj4g KyAjaWZkZWYgWE1MX05TDQo+ICstwqDCoMKgwqDCoMKgwqDCoCB7WE1MX0ZFQVRVUkVfTlMsIFhN TF9MKCJYTUxfTlMiKSwgMH0sDQo+ICsrwqDCoMKgwqDCoCB7WE1MX0ZFQVRVUkVfTlMsIFhNTF9M KCJYTUxfTlMiKSwgMH0sDQo+ICsgI2VuZGlmDQo+ICsgI2lmZGVmIFhNTF9MQVJHRV9TSVpFDQo+ ICstwqDCoMKgwqDCoMKgwqDCoCB7WE1MX0ZFQVRVUkVfTEFSR0VfU0laRSwgWE1MX0woIlhNTF9M QVJHRV9TSVpFIiksIDB9LA0KPiArK8KgwqDCoMKgwqAge1hNTF9GRUFUVVJFX0xBUkdFX1NJWkUs IFhNTF9MKCJYTUxfTEFSR0VfU0laRSIpLCAwfSwNCj4gKyAjZW5kaWYNCj4gKyAjaWZkZWYgWE1M X0FUVFJfSU5GTw0KPiArLcKgwqDCoMKgwqDCoMKgwqAge1hNTF9GRUFUVVJFX0FUVFJfSU5GTywg WE1MX0woIlhNTF9BVFRSX0lORk8iKSwgMH0sDQo+ICsrwqDCoMKgwqDCoCB7WE1MX0ZFQVRVUkVf QVRUUl9JTkZPLCBYTUxfTCgiWE1MX0FUVFJfSU5GTyIpLCAwfSwNCj4gKyAjZW5kaWYNCj4gKy3C oMKgwqDCoMKgwqDCoMKgIHtYTUxfRkVBVFVSRV9FTkQsIE5VTEwsIDB9fTsNCj4gKysjaWZkZWYg WE1MX0RURA0KPiArK8KgwqDCoMKgwqAgLyogQWRkZWQgaW4gRXhwYXQgMi40LjAuICovDQo+ICsr wqDCoMKgwqAgDQo+IHtYTUxfRkVBVFVSRV9CSUxMSU9OX0xBVUdIU19BVFRBQ0tfUFJPVEVDVElP Tl9NQVhJTVVNX0FNUExJRklDQVRJT05fRA0KPiBFRg0KPiBBVUxULA0KPiArK8KgwqDCoMKgwqDC oCBYTUxfTCgiWE1MX0JMQVBfTUFYX0FNUCIpLA0KPiArK8KgwqDCoMKgwqDCoCAobG9uZyBpbnQp DQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgIA0KPiBFWFBBVF9CSUxMSU9OX0xBVUdIU19BVFRBQ0tf UFJPVEVDVElPTl9NQVhJTVVNX0FNUExJRklDQVRJT05fREVGQVVMVH0NCj4gLA0KPiArK8KgwqDC oMKgIA0KPiB7WE1MX0ZFQVRVUkVfQklMTElPTl9MQVVHSFNfQVRUQUNLX1BST1RFQ1RJT05fQUNU SVZBVElPTl9USFJFU0hPTERfREUNCj4gRkENCj4gVUxULA0KPiArK8KgwqDCoMKgwqDCoCBYTUxf TCgiWE1MX0JMQVBfQUNUX1RIUkVTIiksDQo+ICsrwqDCoMKgwqDCoCANCj4gRVhQQVRfQklMTElP Tl9MQVVHSFNfQVRUQUNLX1BST1RFQ1RJT05fQUNUSVZBVElPTl9USFJFU0hPTERfREVGQVVMVH0s DQo+ICsrI2VuZGlmDQo+ICsrwqDCoMKgwqDCoCB7WE1MX0ZFQVRVUkVfRU5ELCBOVUxMLCAwfX07 DQo+ICsgDQo+ICvCoMKgIHJldHVybiBmZWF0dXJlczsNCj4gKyB9DQo+ICsgDQo+ICsrI2lmZGVm IFhNTF9EVEQNCj4gKytYTUxfQm9vbCBYTUxDQUxMDQo+ICsrWE1MX1NldEJpbGxpb25MYXVnaHNB dHRhY2tQcm90ZWN0aW9uTWF4aW11bUFtcGxpZmljYXRpb24oDQo+ICsrwqDCoMKgIFhNTF9QYXJz ZXIgcGFyc2VyLCBmbG9hdCBtYXhpbXVtQW1wbGlmaWNhdGlvbkZhY3Rvcikgew0KPiArK8KgIGlm ICgocGFyc2VyID09IE5VTEwpIHx8IChwYXJzZXItPm1fcGFyZW50UGFyc2VyICE9IE5VTEwpDQo+ ICsrwqDCoMKgwqDCoCB8fCBpc25hbihtYXhpbXVtQW1wbGlmaWNhdGlvbkZhY3RvcikNCj4gKyvC oMKgwqDCoMKgIHx8IChtYXhpbXVtQW1wbGlmaWNhdGlvbkZhY3RvciA8IDEuMGYpKSB7DQo+ICsr wqDCoMKgIHJldHVybiBYTUxfRkFMU0U7DQo+ICsrwqAgfQ0KPiArK8KgIHBhcnNlci0+bV9hY2Nv dW50aW5nLm1heGltdW1BbXBsaWZpY2F0aW9uRmFjdG9yID0NCj4gbWF4aW11bUFtcGxpZmljYXRp b25GYWN0b3I7DQo+ICsrwqAgcmV0dXJuIFhNTF9UUlVFOw0KPiArK30NCj4gKysNCj4gKytYTUxf Qm9vbCBYTUxDQUxMDQo+ICsrWE1MX1NldEJpbGxpb25MYXVnaHNBdHRhY2tQcm90ZWN0aW9uQWN0 aXZhdGlvblRocmVzaG9sZCgNCj4gKyvCoMKgwqAgWE1MX1BhcnNlciBwYXJzZXIsIHVuc2lnbmVk IGxvbmcgbG9uZyBhY3RpdmF0aW9uVGhyZXNob2xkQnl0ZXMpDQo+IHsNCj4gKyvCoCBpZiAoKHBh cnNlciA9PSBOVUxMKSB8fCAocGFyc2VyLT5tX3BhcmVudFBhcnNlciAhPSBOVUxMKSkgew0KPiAr K8KgwqDCoCByZXR1cm4gWE1MX0ZBTFNFOw0KPiArK8KgIH0NCj4gKyvCoCBwYXJzZXItPm1fYWNj b3VudGluZy5hY3RpdmF0aW9uVGhyZXNob2xkQnl0ZXMgPQ0KPiBhY3RpdmF0aW9uVGhyZXNob2xk Qnl0ZXM7DQo+ICsrwqAgcmV0dXJuIFhNTF9UUlVFOw0KPiArK30NCj4gKysjZW5kaWYgLyogWE1M X0RURCAqLw0KPiArKw0KPiArIC8qIEluaXRpYWxseSB0YWctPnJhd05hbWUgYWx3YXlzIHBvaW50 cyBpbnRvIHRoZSBwYXJzZSBidWZmZXI7DQo+ICvCoMKgwqAgZm9yIHRob3NlIFRBRyBpbnN0YW5j ZXMgb3BlbmVkIHdoaWxlIHRoZSBjdXJyZW50IHBhcnNlIGJ1ZmZlcg0KPiB3YXMNCj4gK8KgwqDC oCBwcm9jZXNzZWQsIGFuZCBub3QgeWV0IGNsb3NlZCwgd2UgbmVlZCB0byBzdG9yZSB0YWctPnJh d05hbWUgaW4NCj4gYQ0KPiBtb3JlDQo+ICtAQCAtMjQ0MSw5ICsyNTU3LDkgQEAgc3RvcmVSYXdO YW1lcyhYTUxfUGFyc2VyIHBhcnNlcikgew0KPiArIHN0YXRpYyBlbnVtIFhNTF9FcnJvciBQVFJD QUxMDQo+ICsgY29udGVudFByb2Nlc3NvcihYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QgY2hhciAq c3RhcnQsIGNvbnN0IGNoYXINCj4gKmVuZCwNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgY29uc3QgY2hhciAqKmVuZFB0cikgew0KPiArLcKgIGVudW0gWE1MX0Vycm9yIHJl c3VsdA0KPiArLcKgwqDCoMKgwqAgPSBkb0NvbnRlbnQocGFyc2VyLCAwLCBwYXJzZXItPm1fZW5j b2RpbmcsIHN0YXJ0LCBlbmQsDQo+IGVuZFB0ciwNCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIChYTUxfQm9vbCkhIHBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLmZpbmFsQnVm ZmVyKTsNCj4gKyvCoCBlbnVtIFhNTF9FcnJvciByZXN1bHQgPSBkb0NvbnRlbnQoDQo+ICsrwqDC oMKgwqDCoCBwYXJzZXIsIDAsIHBhcnNlci0+bV9lbmNvZGluZywgc3RhcnQsIGVuZCwgZW5kUHRy LA0KPiArK8KgwqDCoMKgwqAgKFhNTF9Cb29sKSEgcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMuZmlu YWxCdWZmZXIsDQo+IFhNTF9BQ0NPVU5UX0RJUkVDVCk7DQo+ICvCoMKgIGlmIChyZXN1bHQgPT0g WE1MX0VSUk9SX05PTkUpIHsNCj4gK8KgwqDCoMKgIGlmICghIHN0b3JlUmF3TmFtZXMocGFyc2Vy KSkNCj4gK8KgwqDCoMKgwqDCoCByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsNCj4gK0BAIC0y NDY4LDYgKzI1ODQsMTQgQEAgZXh0ZXJuYWxFbnRpdHlJbml0UHJvY2Vzc29yMihYTUxfUGFyc2Vy DQo+IHBhcnNlciwNCj4gY29uc3QgY2hhciAqc3RhcnQsDQo+ICvCoMKgIGludCB0b2sgPSBYbWxD b250ZW50VG9rKHBhcnNlci0+bV9lbmNvZGluZywgc3RhcnQsIGVuZCwgJm5leHQpOw0KPiArwqDC oCBzd2l0Y2ggKHRvaykgew0KPiArwqDCoCBjYXNlIFhNTF9UT0tfQk9NOg0KPiArKyNpZmRlZiBY TUxfRFREDQo+ICsrwqDCoMKgIGlmICghIGFjY291bnRpbmdEaWZmVG9sZXJhdGVkKHBhcnNlciwg dG9rLCBzdGFydCwgbmV4dCwNCj4gX19MSU5FX18sDQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFhNTF9BQ0NPVU5U X0RJUkVDVCkpIHsNCj4gKyvCoMKgwqDCoMKgIGFjY291bnRpbmdPbkFib3J0KHBhcnNlcik7DQo+ ICsrwqDCoMKgwqDCoCByZXR1cm4gWE1MX0VSUk9SX0FNUExJRklDQVRJT05fTElNSVRfQlJFQUNI Ow0KPiArK8KgwqDCoCB9DQo+ICsrI2VuZGlmIC8qIFhNTF9EVEQgKi8NCj4gKysNCj4gK8KgwqDC oMKgIC8qIElmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIsIHRoaXMgd291bGQgY2F1 c2UgdGhlDQo+IG5leHQNCj4gc3RhZ2UsDQo+ICvCoMKgwqDCoMKgwqDCoCBpLmUuIGV4dGVybmFs RW50aXR5SW5pdFByb2Nlc3NvcjMsIHRvIHBhc3MgY29udHJvbCBkaXJlY3RseQ0KPiB0bw0KPiAr wqDCoMKgwqDCoMKgwqAgZG9Db250ZW50IChieSBkZXRlY3RpbmcgWE1MX1RPS19OT05FKSB3aXRo b3V0IHByb2Nlc3NpbmcgYW55DQo+IHhtbCB0ZXh0DQo+ICtAQCAtMjUwNSw2ICsyNjI5LDEwIEBA IGV4dGVybmFsRW50aXR5SW5pdFByb2Nlc3NvcjMoWE1MX1BhcnNlcg0KPiBwYXJzZXIsDQo+IGNv bnN0IGNoYXIgKnN0YXJ0LA0KPiArwqDCoCBjb25zdCBjaGFyICpuZXh0ID0gc3RhcnQ7IC8qIFht bENvbnRlbnRUb2sgZG9lc24ndCBhbHdheXMgc2V0IHRoZQ0KPiBsYXN0IGFyZyAqLw0KPiArwqDC oCBwYXJzZXItPm1fZXZlbnRQdHIgPSBzdGFydDsNCj4gK8KgwqAgdG9rID0gWG1sQ29udGVudFRv ayhwYXJzZXItPm1fZW5jb2RpbmcsIHN0YXJ0LCBlbmQsICZuZXh0KTsNCj4gKyvCoCAvKiBOb3Rl OiBUaGVzZSBieXRlcyBhcmUgYWNjb3VudGVkIGxhdGVyIGluOg0KPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgIC0gcHJvY2Vzc1htbERlY2wNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoCAtIGV4dGVy bmFsRW50aXR5Q29udGVudFByb2Nlc3Nvcg0KPiArK8KgICovDQo+ICvCoMKgIHBhcnNlci0+bV9l dmVudEVuZFB0ciA9IG5leHQ7DQo+ICsgDQo+ICvCoMKgIHN3aXRjaCAodG9rKSB7DQo+ICtAQCAt MjU0Niw3ICsyNjc0LDggQEAgZXh0ZXJuYWxFbnRpdHlDb250ZW50UHJvY2Vzc29yKFhNTF9QYXJz ZXINCj4gcGFyc2VyLCBjb25zdCBjaGFyICpzdGFydCwNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKmVu ZCwgY29uc3QgY2hhcg0KPiAqKmVuZFB0cikNCj4gew0KPiArwqDCoCBlbnVtIFhNTF9FcnJvciBy ZXN1bHQNCj4gK8KgwqDCoMKgwqDCoCA9IGRvQ29udGVudChwYXJzZXIsIDEsIHBhcnNlci0+bV9l bmNvZGluZywgc3RhcnQsIGVuZCwNCj4gZW5kUHRyLA0KPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKFhNTF9Cb29sKSEgcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMuZmluYWxC dWZmZXIpOw0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKFhNTF9Cb29s KSEgcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMuZmluYWxCdWZmZXIsDQo+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBYTUxfQUNDT1VOVF9FTlRJVFlfRVhQQU5TSU9OKTsNCj4g K8KgwqAgaWYgKHJlc3VsdCA9PSBYTUxfRVJST1JfTk9ORSkgew0KPiArwqDCoMKgwqAgaWYgKCEg c3RvcmVSYXdOYW1lcyhwYXJzZXIpKQ0KPiArwqDCoMKgwqDCoMKgIHJldHVybiBYTUxfRVJST1Jf Tk9fTUVNT1JZOw0KPiArQEAgLTI1NTcsNyArMjY4Niw3IEBAIGV4dGVybmFsRW50aXR5Q29udGVu dFByb2Nlc3NvcihYTUxfUGFyc2VyDQo+IHBhcnNlciwgY29uc3QgY2hhciAqc3RhcnQsDQo+ICsg c3RhdGljIGVudW0gWE1MX0Vycm9yDQo+ICsgZG9Db250ZW50KFhNTF9QYXJzZXIgcGFyc2VyLCBp bnQgc3RhcnRUYWdMZXZlbCwgY29uc3QgRU5DT0RJTkcNCj4gKmVuYywNCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgIGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmVuZCwgY29uc3QgY2hhciAqKm5l eHRQdHIsDQo+ICstwqDCoMKgwqDCoMKgwqDCoMKgIFhNTF9Cb29sIGhhdmVNb3JlKSB7DQo+ICsr wqDCoMKgwqDCoMKgwqDCoMKgIFhNTF9Cb29sIGhhdmVNb3JlLCBlbnVtIFhNTF9BY2NvdW50IGFj Y291bnQpIHsNCj4gK8KgwqAgLyogc2F2ZSBvbmUgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gKi8NCj4g K8KgwqAgRFREICpjb25zdCBkdGQgPSBwYXJzZXItPm1fZHRkOw0KPiArIA0KPiArQEAgLTI1NzUs NiArMjcwNCwxNyBAQCBkb0NvbnRlbnQoWE1MX1BhcnNlciBwYXJzZXIsIGludA0KPiBzdGFydFRh Z0xldmVsLA0KPiBjb25zdCBFTkNPRElORyAqZW5jLA0KPiArwqDCoCBmb3IgKDs7KSB7DQo+ICvC oMKgwqDCoCBjb25zdCBjaGFyICpuZXh0ID0gczsgLyogWG1sQ29udGVudFRvayBkb2Vzbid0IGFs d2F5cyBzZXQgdGhlDQo+IGxhc3QgYXJnICovDQo+ICvCoMKgwqDCoCBpbnQgdG9rID0gWG1sQ29u dGVudFRvayhlbmMsIHMsIGVuZCwgJm5leHQpOw0KPiArKyNpZmRlZiBYTUxfRFREDQo+ICsrwqDC oMKgIGNvbnN0IGNoYXIgKmFjY291bnRBZnRlcg0KPiArK8KgwqDCoMKgwqDCoMKgID0gKCh0b2sg PT0gWE1MX1RPS19UUkFJTElOR19SU1FCKSB8fCAodG9rID09DQo+IFhNTF9UT0tfVFJBSUxJTkdf Q1IpKQ0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID8gKGhhdmVNb3JlID8gcyAvKiBp LmUuIDAgYnl0ZXMgKi8gOiBlbmQpDQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOiBu ZXh0Ow0KPiArK8KgwqDCoCBpZiAoISBhY2NvdW50aW5nRGlmZlRvbGVyYXRlZChwYXJzZXIsIHRv aywgcywgYWNjb3VudEFmdGVyLA0KPiBfX0xJTkVfXywNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWNjb3VudCkp IHsNCj4gKyvCoMKgwqDCoMKgIGFjY291bnRpbmdPbkFib3J0KHBhcnNlcik7DQo+ICsrwqDCoMKg wqDCoCByZXR1cm4gWE1MX0VSUk9SX0FNUExJRklDQVRJT05fTElNSVRfQlJFQUNIOw0KPiArK8Kg wqDCoCB9DQo+ICsrI2VuZGlmDQo+ICvCoMKgwqDCoCAqZXZlbnRFbmRQUCA9IG5leHQ7DQo+ICvC oMKgwqDCoCBzd2l0Y2ggKHRvaykgew0KPiArwqDCoMKgwqAgY2FzZSBYTUxfVE9LX1RSQUlMSU5H X0NSOg0KPiArQEAgLTI2MzAsNiArMjc3MCwxNCBAQCBkb0NvbnRlbnQoWE1MX1BhcnNlciBwYXJz ZXIsIGludA0KPiBzdGFydFRhZ0xldmVsLA0KPiBjb25zdCBFTkNPRElORyAqZW5jLA0KPiArwqDC oMKgwqDCoMKgIFhNTF9DaGFyIGNoID0gKFhNTF9DaGFyKVhtbFByZWRlZmluZWRFbnRpdHlOYW1l KA0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW5jLCBzICsgZW5jLT5taW5CeXRlc1BlckNoYXIs IG5leHQgLSBlbmMtDQo+ID4gbWluQnl0ZXNQZXJDaGFyKTsNCj4gK8KgwqDCoMKgwqDCoCBpZiAo Y2gpIHsNCj4gKysjaWZkZWYgWE1MX0RURA0KPiArK8KgwqDCoMKgwqDCoMKgIC8qIE5PVEU6IFdl IGFyZSByZXBsYWNpbmcgNC02IGNoYXJhY3RlcnMgb3JpZ2luYWwgaW5wdXQgZm9yDQo+IDENCj4g Y2hhcmFjdGVyDQo+ICsrwqDCoMKgwqDCoMKgwqDCoCAqwqDCoMKgwqDCoMKgIHNvIHRoZXJlIGlz IG5vIGFtcGxpZmljYXRpb24gYW5kIGhlbmNlIHJlY29yZGluZw0KPiB3aXRob3V0DQo+ICsrwqDC oMKgwqDCoMKgwqDCoCAqwqDCoMKgwqDCoMKgIHByb3RlY3Rpb24uICovDQo+ICsrwqDCoMKgwqDC oMKgwqAgYWNjb3VudGluZ0RpZmZUb2xlcmF0ZWQocGFyc2VyLCB0b2ssIChjaGFyICopJmNoLA0K PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICgoY2hhciAqKSZjaCkgKyBzaXplb2YoWE1MX0NoYXIpLA0KPiBfX0xJTkVfXywN Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBYTUxfQUNDT1VOVF9FTlRJVFlfRVhQQU5TSU9OKTsNCj4gKysjZW5kaWYgLyog WE1MX0RURCAqLw0KPiArwqDCoMKgwqDCoMKgwqDCoCBpZiAocGFyc2VyLT5tX2NoYXJhY3RlckRh dGFIYW5kbGVyKQ0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGFyc2VyLT5tX2NoYXJhY3RlckRh dGFIYW5kbGVyKHBhcnNlci0+bV9oYW5kbGVyQXJnLCAmY2gsDQo+IDEpOw0KPiArwqDCoMKgwqDC oMKgwqDCoCBlbHNlIGlmIChwYXJzZXItPm1fZGVmYXVsdEhhbmRsZXIpDQo+ICtAQCAtMjc0OCw3 ICsyODk2LDggQEAgZG9Db250ZW50KFhNTF9QYXJzZXIgcGFyc2VyLCBpbnQNCj4gc3RhcnRUYWdM ZXZlbCwNCj4gY29uc3QgRU5DT0RJTkcgKmVuYywNCj4gK8KgwqDCoMKgwqDCoCB9DQo+ICvCoMKg wqDCoMKgwqAgdGFnLT5uYW1lLnN0ciA9IChYTUxfQ2hhciAqKXRhZy0+YnVmOw0KPiArwqDCoMKg wqDCoMKgICp0b1B0ciA9IFhNTF9UKCdcMCcpOw0KPiArLcKgwqDCoMKgwqAgcmVzdWx0ID0gc3Rv cmVBdHRzKHBhcnNlciwgZW5jLCBzLCAmKHRhZy0+bmFtZSksICYodGFnLQ0KPiA+IGJpbmRpbmdz KSk7DQo+ICsrwqDCoMKgwqDCoCByZXN1bHQNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqAgPSBzdG9y ZUF0dHMocGFyc2VyLCBlbmMsIHMsICYodGFnLT5uYW1lKSwgJih0YWctDQo+ID5iaW5kaW5ncyks DQo+IGFjY291bnQpOw0KPiArwqDCoMKgwqDCoMKgIGlmIChyZXN1bHQpDQo+ICvCoMKgwqDCoMKg wqDCoMKgIHJldHVybiByZXN1bHQ7DQo+ICvCoMKgwqDCoMKgwqAgaWYgKHBhcnNlci0+bV9zdGFy dEVsZW1lbnRIYW5kbGVyKQ0KPiArQEAgLTI3NzIsNyArMjkyMSw4IEBAIGRvQ29udGVudChYTUxf UGFyc2VyIHBhcnNlciwgaW50DQo+IHN0YXJ0VGFnTGV2ZWwsDQo+IGNvbnN0IEVOQ09ESU5HICpl bmMsDQo+ICvCoMKgwqDCoMKgwqAgaWYgKCEgbmFtZS5zdHIpDQo+ICvCoMKgwqDCoMKgwqDCoMKg IHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOw0KPiArwqDCoMKgwqDCoMKgIHBvb2xGaW5pc2go JnBhcnNlci0+bV90ZW1wUG9vbCk7DQo+ICstwqDCoMKgwqDCoCByZXN1bHQgPSBzdG9yZUF0dHMo cGFyc2VyLCBlbmMsIHMsICZuYW1lLCAmYmluZGluZ3MpOw0KPiArK8KgwqDCoMKgwqAgcmVzdWx0 ID0gc3RvcmVBdHRzKHBhcnNlciwgZW5jLCBzLCAmbmFtZSwgJmJpbmRpbmdzLA0KPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBYTUxfQUNDT1VOVF9O T05FIC8qIHRva2VuIHNwYW5zIHdob2xlDQo+IHN0YXJ0DQo+IHRhZyAqLyk7DQo+ICvCoMKgwqDC oMKgwqAgaWYgKHJlc3VsdCAhPSBYTUxfRVJST1JfTk9ORSkgew0KPiArwqDCoMKgwqDCoMKgwqDC oCBmcmVlQmluZGluZ3MocGFyc2VyLCBiaW5kaW5ncyk7DQo+ICvCoMKgwqDCoMKgwqDCoMKgIHJl dHVybiByZXN1bHQ7DQo+ICtAQCAtMjkwNyw3ICszMDU3LDggQEAgZG9Db250ZW50KFhNTF9QYXJz ZXIgcGFyc2VyLCBpbnQNCj4gc3RhcnRUYWdMZXZlbCwNCj4gY29uc3QgRU5DT0RJTkcgKmVuYywN Cj4gK8KgwqDCoMKgwqDCoCAvKiBFTkQgZGlzYWJsZWQgY29kZSAqLw0KPiArwqDCoMKgwqDCoMKg IGVsc2UgaWYgKHBhcnNlci0+bV9kZWZhdWx0SGFuZGxlcikNCj4gK8KgwqDCoMKgwqDCoMKgwqAg cmVwb3J0RGVmYXVsdChwYXJzZXIsIGVuYywgcywgbmV4dCk7DQo+ICstwqDCoMKgwqDCoCByZXN1 bHQgPSBkb0NkYXRhU2VjdGlvbihwYXJzZXIsIGVuYywgJm5leHQsIGVuZCwgbmV4dFB0ciwNCj4g aGF2ZU1vcmUpOw0KPiArK8KgwqDCoMKgwqAgcmVzdWx0DQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKg ID0gZG9DZGF0YVNlY3Rpb24ocGFyc2VyLCBlbmMsICZuZXh0LCBlbmQsIG5leHRQdHIsDQo+IGhh dmVNb3JlLCBhY2NvdW50KTsNCj4gK8KgwqDCoMKgwqDCoCBpZiAocmVzdWx0ICE9IFhNTF9FUlJP Ul9OT05FKQ0KPiArwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmVzdWx0Ow0KPiArwqDCoMKgwqDC oMKgIGVsc2UgaWYgKCEgbmV4dCkgew0KPiArQEAgLTMwMzYsNyArMzE4Nyw4IEBAIGZyZWVCaW5k aW5ncyhYTUxfUGFyc2VyIHBhcnNlciwgQklORElORw0KPiAqYmluZGluZ3MpIHsNCj4gKyAqLw0K PiArIHN0YXRpYyBlbnVtIFhNTF9FcnJvcg0KPiArIHN0b3JlQXR0cyhYTUxfUGFyc2VyIHBhcnNl ciwgY29uc3QgRU5DT0RJTkcgKmVuYywgY29uc3QgY2hhcg0KPiAqYXR0U3RyLA0KPiArLcKgwqDC oMKgwqDCoMKgwqDCoCBUQUdfTkFNRSAqdGFnTmFtZVB0ciwgQklORElORyAqKmJpbmRpbmdzUHRy KSB7DQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgIFRBR19OQU1FICp0YWdOYW1lUHRyLCBCSU5ESU5H ICoqYmluZGluZ3NQdHIsDQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgIGVudW0gWE1MX0FjY291bnQg YWNjb3VudCkgew0KPiArwqDCoCBEVEQgKmNvbnN0IGR0ZCA9IHBhcnNlci0+bV9kdGQ7IC8qIHNh dmUgb25lIGxldmVsIG9mIGluZGlyZWN0aW9uDQo+ICovDQo+ICvCoMKgIEVMRU1FTlRfVFlQRSAq ZWxlbWVudFR5cGU7DQo+ICvCoMKgIGludCBuRGVmYXVsdEF0dHM7DQo+ICtAQCAtMzE0Niw3ICsz Mjk4LDcgQEAgc3RvcmVBdHRzKFhNTF9QYXJzZXIgcGFyc2VyLCBjb25zdCBFTkNPRElORw0KPiAq ZW5jLCBjb25zdCBjaGFyICphdHRTdHIsDQo+ICvCoMKgwqDCoMKgwqAgLyogbm9ybWFsaXplIHRo ZSBhdHRyaWJ1dGUgdmFsdWUgKi8NCj4gK8KgwqDCoMKgwqDCoCByZXN1bHQgPSBzdG9yZUF0dHJp YnV0ZVZhbHVlKA0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGFyc2VyLCBlbmMsIGlzQ2RhdGEs IHBhcnNlci0+bV9hdHRzW2ldLnZhbHVlUHRyLA0KPiArLcKgwqDCoMKgwqDCoMKgwqDCoCBwYXJz ZXItPm1fYXR0c1tpXS52YWx1ZUVuZCwgJnBhcnNlci0+bV90ZW1wUG9vbCk7DQo+ICsrwqDCoMKg wqDCoMKgwqDCoMKgIHBhcnNlci0+bV9hdHRzW2ldLnZhbHVlRW5kLCAmcGFyc2VyLT5tX3RlbXBQ b29sLA0KPiBhY2NvdW50KTsNCj4gK8KgwqDCoMKgwqDCoCBpZiAocmVzdWx0KQ0KPiArwqDCoMKg wqDCoMKgwqDCoCByZXR1cm4gcmVzdWx0Ow0KPiArwqDCoMKgwqDCoMKgIGFwcEF0dHNbYXR0SW5k ZXhdID0gcG9vbFN0YXJ0KCZwYXJzZXItPm1fdGVtcFBvb2wpOw0KPiArQEAgLTM1MzUsOSArMzY4 Nyw5IEBAIGFkZEJpbmRpbmcoWE1MX1BhcnNlciBwYXJzZXIsIFBSRUZJWCAqcHJlZml4LA0KPiBj b25zdCBBVFRSSUJVVEVfSUQgKmF0dElkLA0KPiArIHN0YXRpYyBlbnVtIFhNTF9FcnJvciBQVFJD QUxMDQo+ICsgY2RhdGFTZWN0aW9uUHJvY2Vzc29yKFhNTF9QYXJzZXIgcGFyc2VyLCBjb25zdCBj aGFyICpzdGFydCwgY29uc3QNCj4gY2hhciAqZW5kLA0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAqKmVuZFB0cikgew0KPiArLcKgIGVu dW0gWE1MX0Vycm9yIHJlc3VsdA0KPiArLcKgwqDCoMKgwqAgPSBkb0NkYXRhU2VjdGlvbihwYXJz ZXIsIHBhcnNlci0+bV9lbmNvZGluZywgJnN0YXJ0LCBlbmQsDQo+IGVuZFB0ciwNCj4gKy3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoWE1MX0Jvb2wpISBwYXJz ZXItDQo+ID4gbV9wYXJzaW5nU3RhdHVzLmZpbmFsQnVmZmVyKTsNCj4gKyvCoCBlbnVtIFhNTF9F cnJvciByZXN1bHQgPSBkb0NkYXRhU2VjdGlvbigNCj4gKyvCoMKgwqDCoMKgIHBhcnNlciwgcGFy c2VyLT5tX2VuY29kaW5nLCAmc3RhcnQsIGVuZCwgZW5kUHRyLA0KPiArK8KgwqDCoMKgwqAgKFhN TF9Cb29sKSEgcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMuZmluYWxCdWZmZXIsDQo+IFhNTF9BQ0NP VU5UX0RJUkVDVCk7DQo+ICvCoMKgIGlmIChyZXN1bHQgIT0gWE1MX0VSUk9SX05PTkUpDQo+ICvC oMKgwqDCoCByZXR1cm4gcmVzdWx0Ow0KPiArwqDCoCBpZiAoc3RhcnQpIHsNCj4gK0BAIC0zNTU3 LDcgKzM3MDksOCBAQCBjZGF0YVNlY3Rpb25Qcm9jZXNzb3IoWE1MX1BhcnNlciBwYXJzZXIsIGNv bnN0DQo+IGNoYXIgKnN0YXJ0LCBjb25zdCBjaGFyICplbmQsDQo+ICsgKi8NCj4gKyBzdGF0aWMg ZW51bSBYTUxfRXJyb3INCj4gKyBkb0NkYXRhU2VjdGlvbihYTUxfUGFyc2VyIHBhcnNlciwgY29u c3QgRU5DT0RJTkcgKmVuYywgY29uc3QgY2hhcg0KPiAqKnN0YXJ0UHRyLA0KPiArLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAqZW5kLCBjb25zdCBjaGFyICoqbmV4dFB0 ciwgWE1MX0Jvb2wNCj4gaGF2ZU1vcmUpIHsNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGNvbnN0IGNoYXIgKmVuZCwgY29uc3QgY2hhciAqKm5leHRQdHIsIFhNTF9Cb29sDQo+IGhh dmVNb3JlLA0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW51bSBYTUxfQWNjb3Vu dCBhY2NvdW50KSB7DQo+ICvCoMKgIGNvbnN0IGNoYXIgKnMgPSAqc3RhcnRQdHI7DQo+ICvCoMKg IGNvbnN0IGNoYXIgKipldmVudFBQOw0KPiArwqDCoCBjb25zdCBjaGFyICoqZXZlbnRFbmRQUDsN Cj4gK0BAIC0zNTc1LDYgKzM3MjgsMTQgQEAgZG9DZGF0YVNlY3Rpb24oWE1MX1BhcnNlciBwYXJz ZXIsIGNvbnN0DQo+IEVOQ09ESU5HICplbmMsIGNvbnN0IGNoYXIgKipzdGFydFB0ciwNCj4gK8Kg wqAgZm9yICg7Oykgew0KPiArwqDCoMKgwqAgY29uc3QgY2hhciAqbmV4dDsNCj4gK8KgwqDCoMKg IGludCB0b2sgPSBYbWxDZGF0YVNlY3Rpb25Ub2soZW5jLCBzLCBlbmQsICZuZXh0KTsNCj4gKysj aWZkZWYgWE1MX0RURA0KPiArK8KgwqDCoCBpZiAoISBhY2NvdW50aW5nRGlmZlRvbGVyYXRlZChw YXJzZXIsIHRvaywgcywgbmV4dCwgX19MSU5FX18sDQo+IGFjY291bnQpKSB7DQo+ICsrwqDCoMKg wqDCoCBhY2NvdW50aW5nT25BYm9ydChwYXJzZXIpOw0KPiArK8KgwqDCoMKgwqAgcmV0dXJuIFhN TF9FUlJPUl9BTVBMSUZJQ0FUSU9OX0xJTUlUX0JSRUFDSDsNCj4gKyvCoMKgwqAgfQ0KPiArKyNl bHNlDQo+ICsrwqDCoMKgIFVOVVNFRF9QKGFjY291bnQpOw0KPiArKyNlbmRpZg0KPiArwqDCoMKg wqAgKmV2ZW50RW5kUFAgPSBuZXh0Ow0KPiArwqDCoMKgwqAgc3dpdGNoICh0b2spIHsNCj4gK8Kg wqDCoMKgIGNhc2UgWE1MX1RPS19DREFUQV9TRUNUX0NMT1NFOg0KPiArQEAgLTM3MTksNiArMzg4 MCwxMyBAQCBkb0lnbm9yZVNlY3Rpb24oWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0DQo+IEVOQ09E SU5HICplbmMsIGNvbnN0IGNoYXIgKipzdGFydFB0ciwNCj4gK8KgwqAgKmV2ZW50UFAgPSBzOw0K PiArwqDCoCAqc3RhcnRQdHIgPSBOVUxMOw0KPiArwqDCoCB0b2sgPSBYbWxJZ25vcmVTZWN0aW9u VG9rKGVuYywgcywgZW5kLCAmbmV4dCk7DQo+ICsrI8KgIGlmZGVmIFhNTF9EVEQNCj4gKyvCoCBp ZiAoISBhY2NvdW50aW5nRGlmZlRvbGVyYXRlZChwYXJzZXIsIHRvaywgcywgbmV4dCwgX19MSU5F X18sDQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgWE1MX0FDQ09VTlRfRElSRUNUKSkgew0KPiArK8KgwqDCoCBhY2NvdW50 aW5nT25BYm9ydChwYXJzZXIpOw0KPiArK8KgwqDCoCByZXR1cm4gWE1MX0VSUk9SX0FNUExJRklD QVRJT05fTElNSVRfQlJFQUNIOw0KPiArK8KgIH0NCj4gKysjwqAgZW5kaWYNCj4gK8KgwqAgKmV2 ZW50RW5kUFAgPSBuZXh0Ow0KPiArwqDCoCBzd2l0Y2ggKHRvaykgew0KPiArwqDCoCBjYXNlIFhN TF9UT0tfSUdOT1JFX1NFQ1Q6DQo+ICtAQCAtMzgwMyw2ICszOTcxLDE1IEBAIHByb2Nlc3NYbWxE ZWNsKFhNTF9QYXJzZXIgcGFyc2VyLCBpbnQNCj4gaXNHZW5lcmFsVGV4dEVudGl0eSwgY29uc3Qg Y2hhciAqcywNCj4gK8KgwqAgY29uc3QgY2hhciAqdmVyc2lvbmVuZDsNCj4gK8KgwqAgY29uc3Qg WE1MX0NoYXIgKnN0b3JlZHZlcnNpb24gPSBOVUxMOw0KPiArwqDCoCBpbnQgc3RhbmRhbG9uZSA9 IC0xOw0KPiArKw0KPiArKyNpZmRlZiBYTUxfRFREDQo+ICsrwqAgaWYgKCEgYWNjb3VudGluZ0Rp ZmZUb2xlcmF0ZWQocGFyc2VyLCBYTUxfVE9LX1hNTF9ERUNMLCBzLCBuZXh0LA0KPiBfX0xJTkVf XywNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBYTUxfQUNDT1VOVF9ESVJFQ1QpKSB7DQo+ICsrwqDCoMKgIGFjY291bnRp bmdPbkFib3J0KHBhcnNlcik7DQo+ICsrwqDCoMKgIHJldHVybiBYTUxfRVJST1JfQU1QTElGSUNB VElPTl9MSU1JVF9CUkVBQ0g7DQo+ICsrwqAgfQ0KPiArKyNlbmRpZg0KPiArKw0KPiArwqDCoCBp ZiAoISAocGFyc2VyLT5tX25zID8gWG1sUGFyc2VYbWxEZWNsTlMgOiBYbWxQYXJzZVhtbERlY2wp KA0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgaXNHZW5lcmFsVGV4dEVudGl0eSwgcGFyc2VyLT5t X2VuY29kaW5nLCBzLCBuZXh0LA0KPiAmcGFyc2VyLQ0KPiA+IG1fZXZlbnRQdHIsDQo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoCAmdmVyc2lvbiwgJnZlcnNpb25lbmQsICZlbmNvZGluZ05hbWUsICZu ZXdFbmNvZGluZywNCj4gJnN0YW5kYWxvbmUpKSB7DQo+ICtAQCAtMzk1Miw2ICs0MTI5LDEwIEBA IGVudGl0eVZhbHVlSW5pdFByb2Nlc3NvcihYTUxfUGFyc2VyIHBhcnNlciwNCj4gY29uc3QgY2hh ciAqcywgY29uc3QgY2hhciAqZW5kLA0KPiArIA0KPiArwqDCoCBmb3IgKDs7KSB7DQo+ICvCoMKg wqDCoCB0b2sgPSBYbWxQcm9sb2dUb2socGFyc2VyLT5tX2VuY29kaW5nLCBzdGFydCwgZW5kLCAm bmV4dCk7DQo+ICsrwqDCoMKgIC8qIE5vdGU6IEV4Y2VwdCBmb3IgWE1MX1RPS19CT00gYmVsb3cs IHRoZXNlIGJ5dGVzIGFyZQ0KPiBhY2NvdW50ZWQNCj4gbGF0ZXIgaW46DQo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIC0gc3RvcmVFbnRpdHlWYWx1ZQ0KPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAtIHByb2Nlc3NYbWxEZWNsDQo+ICsrwqDCoMKgICovDQo+ICvCoMKgwqDCoCBwYXJz ZXItPm1fZXZlbnRFbmRQdHIgPSBuZXh0Ow0KPiArwqDCoMKgwqAgaWYgKHRvayA8PSAwKSB7DQo+ ICvCoMKgwqDCoMKgwqAgaWYgKCEgcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMuZmluYWxCdWZmZXIg JiYgdG9rICE9DQo+IFhNTF9UT0tfSU5WQUxJRCkgew0KPiArQEAgLTM5NzAsNyArNDE1MSw4IEBA IGVudGl0eVZhbHVlSW5pdFByb2Nlc3NvcihYTUxfUGFyc2VyIHBhcnNlciwNCj4gY29uc3QgY2hh ciAqcywgY29uc3QgY2hhciAqZW5kLA0KPiArwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4gK8Kg wqDCoMKgwqDCoCB9DQo+ICvCoMKgwqDCoMKgwqAgLyogZm91bmQgZW5kIG9mIGVudGl0eSB2YWx1 ZSAtIGNhbiBzdG9yZSBpdCBub3cgKi8NCj4gKy3CoMKgwqDCoMKgIHJldHVybiBzdG9yZUVudGl0 eVZhbHVlKHBhcnNlciwgcGFyc2VyLT5tX2VuY29kaW5nLCBzLCBlbmQpOw0KPiArK8KgwqDCoMKg wqAgcmV0dXJuIHN0b3JlRW50aXR5VmFsdWUocGFyc2VyLCBwYXJzZXItPm1fZW5jb2RpbmcsIHMs IGVuZCwNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIFhNTF9BQ0NPVU5UX0RJUkVDVCk7DQo+ICvCoMKgwqDCoCB9IGVsc2UgaWYg KHRvayA9PSBYTUxfVE9LX1hNTF9ERUNMKSB7DQo+ICvCoMKgwqDCoMKgwqAgZW51bSBYTUxfRXJy b3IgcmVzdWx0Ow0KPiArwqDCoMKgwqDCoMKgIHJlc3VsdCA9IHByb2Nlc3NYbWxEZWNsKHBhcnNl ciwgMCwgc3RhcnQsIG5leHQpOw0KPiArQEAgLTM5OTcsNiArNDE3OSwxNCBAQCBlbnRpdHlWYWx1 ZUluaXRQcm9jZXNzb3IoWE1MX1BhcnNlciBwYXJzZXIsDQo+IGNvbnN0IGNoYXIgKnMsIGNvbnN0 IGNoYXIgKmVuZCwNCj4gK8KgwqDCoMKgICovDQo+ICvCoMKgwqDCoCBlbHNlIGlmICh0b2sgPT0g WE1MX1RPS19CT00gJiYgbmV4dCA9PSBlbmQNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICYmICEgcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMuZmluYWxCdWZmZXIpIHsNCj4gKysjwqAgaWZk ZWYgWE1MX0RURA0KPiArK8KgwqDCoMKgwqAgaWYgKCEgYWNjb3VudGluZ0RpZmZUb2xlcmF0ZWQo cGFyc2VyLCB0b2ssIHMsIG5leHQsIF9fTElORV9fLA0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgWE1MX0FD Q09VTlRfRElSRUNUKSkgew0KPiArK8KgwqDCoMKgwqDCoMKgIGFjY291bnRpbmdPbkFib3J0KHBh cnNlcik7DQo+ICsrwqDCoMKgwqDCoMKgwqAgcmV0dXJuIFhNTF9FUlJPUl9BTVBMSUZJQ0FUSU9O X0xJTUlUX0JSRUFDSDsNCj4gKyvCoMKgwqDCoMKgIH0NCj4gKysjwqAgZW5kaWYNCj4gKysNCj4g K8KgwqDCoMKgwqDCoCAqbmV4dFB0ciA9IG5leHQ7DQo+ICvCoMKgwqDCoMKgwqAgcmV0dXJuIFhN TF9FUlJPUl9OT05FOw0KPiArwqDCoMKgwqAgfQ0KPiArQEAgLTQwMzksMTYgKzQyMjksMjQgQEAg ZXh0ZXJuYWxQYXJFbnRQcm9jZXNzb3IoWE1MX1BhcnNlciBwYXJzZXIsDQo+IGNvbnN0IGNoYXIg KnMsIGNvbnN0IGNoYXIgKmVuZCwNCj4gK8KgwqAgfQ0KPiArwqDCoCAvKiBUaGlzIHdvdWxkIGNh dXNlIHRoZSBuZXh0IHN0YWdlLCBpLmUuIGRvUHJvbG9nIHRvIGJlIHBhc3NlZA0KPiBYTUxfVE9L X0JPTS4NCj4gK8KgwqDCoMKgwqAgSG93ZXZlciwgd2hlbiBwYXJzaW5nIGFuIGV4dGVybmFsIHN1 YnNldCwgZG9Qcm9sb2cgd2lsbCBub3QNCj4gYWNjZXB0IGEgQk9NDQo+ICstwqDCoMKgwqAgYXMg dmFsaWQsIGFuZCByZXBvcnQgYSBzeW50YXggZXJyb3IsIHNvIHdlIGhhdmUgdG8gc2tpcCB0aGUN Cj4gQk9NDQo+ICsrwqDCoMKgwqAgYXMgdmFsaWQsIGFuZCByZXBvcnQgYSBzeW50YXggZXJyb3Is IHNvIHdlIGhhdmUgdG8gc2tpcCB0aGUNCj4gQk9NLA0KPiBhbmQNCj4gKyvCoMKgwqDCoCBhY2Nv dW50IGZvciB0aGUgQk9NIGJ5dGVzLg0KPiArwqDCoCAqLw0KPiArwqDCoCBlbHNlIGlmICh0b2sg PT0gWE1MX1RPS19CT00pIHsNCj4gKyvCoMKgwqAgaWYgKCEgYWNjb3VudGluZ0RpZmZUb2xlcmF0 ZWQocGFyc2VyLCB0b2ssIHMsIG5leHQsIF9fTElORV9fLA0KPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBYTUxfQUND T1VOVF9ESVJFQ1QpKSB7DQo+ICsrwqDCoMKgwqDCoCBhY2NvdW50aW5nT25BYm9ydChwYXJzZXIp Ow0KPiArK8KgwqDCoMKgwqAgcmV0dXJuIFhNTF9FUlJPUl9BTVBMSUZJQ0FUSU9OX0xJTUlUX0JS RUFDSDsNCj4gKyvCoMKgwqAgfQ0KPiArKw0KPiArwqDCoMKgwqAgcyA9IG5leHQ7DQo+ICvCoMKg wqDCoCB0b2sgPSBYbWxQcm9sb2dUb2socGFyc2VyLT5tX2VuY29kaW5nLCBzLCBlbmQsICZuZXh0 KTsNCj4gK8KgwqAgfQ0KPiArIA0KPiArwqDCoCBwYXJzZXItPm1fcHJvY2Vzc29yID0gcHJvbG9n UHJvY2Vzc29yOw0KPiArwqDCoCByZXR1cm4gZG9Qcm9sb2cocGFyc2VyLCBwYXJzZXItPm1fZW5j b2RpbmcsIHMsIGVuZCwgdG9rLCBuZXh0LA0KPiBuZXh0UHRyLA0KPiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKFhNTF9Cb29sKSEgcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMu ZmluYWxCdWZmZXIsDQo+IFhNTF9UUlVFKTsNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIChYTUxfQm9vbCkhIHBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLmZpbmFsQnVmZmVy LA0KPiBYTUxfVFJVRSwNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFhN TF9BQ0NPVU5UX0RJUkVDVCk7DQo+ICsgfQ0KPiArIA0KPiArIHN0YXRpYyBlbnVtIFhNTF9FcnJv ciBQVFJDQUxMDQo+ICtAQCAtNDA2MSw2ICs0MjU5LDkgQEAgZW50aXR5VmFsdWVQcm9jZXNzb3Io WE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0DQo+IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmVuZCwNCj4g KyANCj4gK8KgwqAgZm9yICg7Oykgew0KPiArwqDCoMKgwqAgdG9rID0gWG1sUHJvbG9nVG9rKGVu Yywgc3RhcnQsIGVuZCwgJm5leHQpOw0KPiArK8KgwqDCoCAvKiBOb3RlOiBUaGVzZSBieXRlcyBh cmUgYWNjb3VudGVkIGxhdGVyIGluOg0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtIHN0 b3JlRW50aXR5VmFsdWUNCj4gKyvCoMKgwqAgKi8NCj4gK8KgwqDCoMKgIGlmICh0b2sgPD0gMCkg ew0KPiArwqDCoMKgwqDCoMKgIGlmICghIHBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLmZpbmFsQnVm ZmVyICYmIHRvayAhPQ0KPiBYTUxfVE9LX0lOVkFMSUQpIHsNCj4gK8KgwqDCoMKgwqDCoMKgwqAg Km5leHRQdHIgPSBzOw0KPiArQEAgLTQwNzgsNyArNDI3OSw3IEBAIGVudGl0eVZhbHVlUHJvY2Vz c29yKFhNTF9QYXJzZXIgcGFyc2VyLCBjb25zdA0KPiBjaGFyICpzLCBjb25zdCBjaGFyICplbmQs DQo+ICvCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPiArwqDCoMKgwqDCoMKgIH0NCj4gK8KgwqDC oMKgwqDCoCAvKiBmb3VuZCBlbmQgb2YgZW50aXR5IHZhbHVlIC0gY2FuIHN0b3JlIGl0IG5vdyAq Lw0KPiArLcKgwqDCoMKgwqAgcmV0dXJuIHN0b3JlRW50aXR5VmFsdWUocGFyc2VyLCBlbmMsIHMs IGVuZCk7DQo+ICsrwqDCoMKgwqDCoCByZXR1cm4gc3RvcmVFbnRpdHlWYWx1ZShwYXJzZXIsIGVu YywgcywgZW5kLA0KPiBYTUxfQUNDT1VOVF9ESVJFQ1QpOw0KPiArwqDCoMKgwqAgfQ0KPiArwqDC oMKgwqAgc3RhcnQgPSBuZXh0Ow0KPiArwqDCoCB9DQo+ICtAQCAtNDA5MiwxMyArNDI5MywxNCBA QCBwcm9sb2dQcm9jZXNzb3IoWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0DQo+IGNoYXINCj4gKnMs IGNvbnN0IGNoYXIgKmVuZCwNCj4gK8KgwqAgY29uc3QgY2hhciAqbmV4dCA9IHM7DQo+ICvCoMKg IGludCB0b2sgPSBYbWxQcm9sb2dUb2socGFyc2VyLT5tX2VuY29kaW5nLCBzLCBlbmQsICZuZXh0 KTsNCj4gK8KgwqAgcmV0dXJuIGRvUHJvbG9nKHBhcnNlciwgcGFyc2VyLT5tX2VuY29kaW5nLCBz LCBlbmQsIHRvaywgbmV4dCwNCj4gbmV4dFB0ciwNCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIChYTUxfQm9vbCkhIHBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLmZpbmFsQnVm ZmVyLA0KPiBYTUxfVFJVRSk7DQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAoWE1MX0Jvb2wpISBwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5maW5hbEJ1ZmZlciwNCj4gWE1M X1RSVUUsDQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBYTUxfQUNDT1VO VF9ESVJFQ1QpOw0KPiArIH0NCj4gKyANCj4gKyBzdGF0aWMgZW51bSBYTUxfRXJyb3INCj4gKyBk b1Byb2xvZyhYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QgRU5DT0RJTkcgKmVuYywgY29uc3QgY2hh ciAqcywNCj4gY29uc3QNCj4gY2hhciAqZW5kLA0KPiArwqDCoMKgwqDCoMKgwqDCoMKgIGludCB0 b2ssIGNvbnN0IGNoYXIgKm5leHQsIGNvbnN0IGNoYXIgKipuZXh0UHRyLCBYTUxfQm9vbA0KPiBo YXZlTW9yZSwNCj4gKy3CoMKgwqDCoMKgwqDCoMKgIFhNTF9Cb29sIGFsbG93Q2xvc2luZ0RvY3R5 cGUpIHsNCj4gKyvCoMKgwqDCoMKgwqDCoMKgIFhNTF9Cb29sIGFsbG93Q2xvc2luZ0RvY3R5cGUs IGVudW0gWE1MX0FjY291bnQgYWNjb3VudCkgew0KPiArICNpZmRlZiBYTUxfRFREDQo+ICvCoMKg IHN0YXRpYyBjb25zdCBYTUxfQ2hhciBleHRlcm5hbFN1YnNldE5hbWVbXSA9IHtBU0NJSV9IQVNI LCAnXDAnfTsNCj4gKyAjZW5kaWYgLyogWE1MX0RURCAqLw0KPiArQEAgLTQxMjUsNiArNDMyNywx MCBAQCBkb1Byb2xvZyhYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QgRU5DT0RJTkcNCj4gKmVuYywg Y29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqZW5kLA0KPiArwqDCoCBzdGF0aWMgY29uc3QgWE1M X0NoYXIgZW51bVZhbHVlU2VwW10gPSB7QVNDSUlfUElQRSwgJ1wwJ307DQo+ICvCoMKgIHN0YXRp YyBjb25zdCBYTUxfQ2hhciBlbnVtVmFsdWVTdGFydFtdID0ge0FTQ0lJX0xQQVJFTiwgJ1wwJ307 DQo+ICsgDQo+ICsrI2lmbmRlZiBYTUxfRFREDQo+ICsrwqAgVU5VU0VEX1AoYWNjb3VudCk7DQo+ ICsrI2VuZGlmDQo+ICsrDQo+ICvCoMKgIC8qIHNhdmUgb25lIGxldmVsIG9mIGluZGlyZWN0aW9u ICovDQo+ICvCoMKgIERURCAqY29uc3QgZHRkID0gcGFyc2VyLT5tX2R0ZDsNCj4gKyANCj4gK0BA IC00MTg5LDYgKzQzOTUsMTkgQEAgZG9Qcm9sb2coWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0IEVO Q09ESU5HDQo+ICplbmMsIGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmVuZCwNCj4gK8KgwqDC oMKgwqDCoCB9DQo+ICvCoMKgwqDCoCB9DQo+ICvCoMKgwqDCoCByb2xlID0gWG1sVG9rZW5Sb2xl KCZwYXJzZXItPm1fcHJvbG9nU3RhdGUsIHRvaywgcywgbmV4dCwgZW5jKTsNCj4gKysjaWZkZWYg WE1MX0RURA0KPiArK8KgwqDCoCBzd2l0Y2ggKHJvbGUpIHsNCj4gKyvCoMKgwqAgY2FzZSBYTUxf Uk9MRV9JTlNUQU5DRV9TVEFSVDogLy8gYnl0ZXMgYWNjb3VudGVkIGluDQo+IGNvbnRlbnRQcm9j ZXNzb3INCj4gKyvCoMKgwqAgY2FzZSBYTUxfUk9MRV9YTUxfREVDTDrCoMKgwqDCoMKgwqAgLy8g Ynl0ZXMgYWNjb3VudGVkIGluDQo+IHByb2Nlc3NYbWxEZWNsDQo+ICsrwqDCoMKgIGNhc2UgWE1M X1JPTEVfVEVYVF9ERUNMOsKgwqDCoMKgwqAgLy8gYnl0ZXMgYWNjb3VudGVkIGluDQo+IHByb2Nl c3NYbWxEZWNsDQo+ICsrwqDCoMKgwqDCoCBicmVhazsNCj4gKyvCoMKgwqAgZGVmYXVsdDoNCj4g KyvCoMKgwqDCoMKgIGlmICghIGFjY291bnRpbmdEaWZmVG9sZXJhdGVkKHBhcnNlciwgdG9rLCBz LCBuZXh0LCBfX0xJTkVfXywNCj4gYWNjb3VudCkpIHsNCj4gKyvCoMKgwqDCoMKgwqDCoCBhY2Nv dW50aW5nT25BYm9ydChwYXJzZXIpOw0KPiArK8KgwqDCoMKgwqDCoMKgIHJldHVybiBYTUxfRVJS T1JfQU1QTElGSUNBVElPTl9MSU1JVF9CUkVBQ0g7DQo+ICsrwqDCoMKgwqDCoCB9DQo+ICsrwqDC oMKgIH0NCj4gKysjZW5kaWYNCj4gK8KgwqDCoMKgIHN3aXRjaCAocm9sZSkgew0KPiArwqDCoMKg wqAgY2FzZSBYTUxfUk9MRV9YTUxfREVDTDogew0KPiArwqDCoMKgwqDCoMKgIGVudW0gWE1MX0Vy cm9yIHJlc3VsdCA9IHByb2Nlc3NYbWxEZWNsKHBhcnNlciwgMCwgcywgbmV4dCk7DQo+ICtAQCAt NDQ2NCw3ICs0NjgzLDggQEAgZG9Qcm9sb2coWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0IEVOQ09E SU5HDQo+ICplbmMsDQo+IGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmVuZCwNCj4gK8KgwqDC oMKgwqDCoMKgwqAgY29uc3QgWE1MX0NoYXIgKmF0dFZhbDsNCj4gK8KgwqDCoMKgwqDCoMKgwqAg ZW51bSBYTUxfRXJyb3IgcmVzdWx0ID0gc3RvcmVBdHRyaWJ1dGVWYWx1ZSgNCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBwYXJzZXIsIGVuYywgcGFyc2VyLT5tX2RlY2xBdHRyaWJ1dGVJc0Nk YXRhLA0KPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcyArIGVuYy0+bWluQnl0ZXNQZXJDaGFy LCBuZXh0IC0gZW5jLT5taW5CeXRlc1BlckNoYXIsDQo+ICZkdGQtPnBvb2wpOw0KPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgcyArIGVuYy0+bWluQnl0ZXNQZXJDaGFyLCBuZXh0IC0gZW5jLT5t aW5CeXRlc1BlckNoYXIsDQo+ICZkdGQtPnBvb2wsDQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBYTUxfQUNDT1VOVF9OT05FKTsNCj4gK8KgwqDCoMKgwqDCoMKgwqAgaWYgKHJlc3VsdCkNCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXN1bHQ7DQo+ICvCoMKgwqDCoMKgwqDCoMKg IGF0dFZhbCA9IHBvb2xTdGFydCgmZHRkLT5wb29sKTsNCj4gK0BAIC00NDk3LDggKzQ3MTcsOSBA QCBkb1Byb2xvZyhYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QgRU5DT0RJTkcNCj4gKmVuYywNCj4g Y29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqZW5kLA0KPiArwqDCoMKgwqDCoMKgIGJyZWFrOw0K PiArwqDCoMKgwqAgY2FzZSBYTUxfUk9MRV9FTlRJVFlfVkFMVUU6DQo+ICvCoMKgwqDCoMKgwqAg aWYgKGR0ZC0+a2VlcFByb2Nlc3NpbmcpIHsNCj4gKy3CoMKgwqDCoMKgwqDCoCBlbnVtIFhNTF9F cnJvciByZXN1bHQgPSBzdG9yZUVudGl0eVZhbHVlKA0KPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcGFyc2VyLCBlbmMsIHMgKyBlbmMtPm1pbkJ5dGVzUGVyQ2hhciwgbmV4dCAtIGVuYy0NCj4g PiBtaW5CeXRlc1BlckNoYXIpOw0KPiArK8KgwqDCoMKgwqDCoMKgIGVudW0gWE1MX0Vycm9yIHJl c3VsdA0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPSBzdG9yZUVudGl0eVZhbHVlKHBhcnNl ciwgZW5jLCBzICsgZW5jLQ0KPiA+bWluQnl0ZXNQZXJDaGFyLA0KPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZXh0IC0gZW5j LT5taW5CeXRlc1BlckNoYXIsDQo+IFhNTF9BQ0NPVU5UX05PTkUpOw0KPiArwqDCoMKgwqDCoMKg wqDCoCBpZiAocGFyc2VyLT5tX2RlY2xFbnRpdHkpIHsNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg IHBhcnNlci0+bV9kZWNsRW50aXR5LT50ZXh0UHRyID0gcG9vbFN0YXJ0KCZkdGQtDQo+ID4gZW50 aXR5VmFsdWVQb29sKTsNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHBhcnNlci0+bV9kZWNsRW50 aXR5LT50ZXh0TGVuDQo+ICtAQCAtNDg4OCwxMiArNTEwOSwxNSBAQCBkb1Byb2xvZyhYTUxfUGFy c2VyIHBhcnNlciwgY29uc3QgRU5DT0RJTkcNCj4gKmVuYywgY29uc3QgY2hhciAqcywgY29uc3Qg Y2hhciAqZW5kLA0KPiArwqDCoMKgwqDCoMKgwqDCoCBpZiAocGFyc2VyLT5tX2V4dGVybmFsRW50 aXR5UmVmSGFuZGxlcikgew0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHRkLT5wYXJhbUVudGl0 eVJlYWQgPSBYTUxfRkFMU0U7DQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnRpdHktPm9wZW4g PSBYTUxfVFJVRTsNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqAgZW50aXR5VHJhY2tpbmdPbk9wZW4o cGFyc2VyLCBlbnRpdHksIF9fTElORV9fKTsNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICgh IHBhcnNlci0+bV9leHRlcm5hbEVudGl0eVJlZkhhbmRsZXIoDQo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcGFyc2VyLT5tX2V4dGVybmFsRW50aXR5UmVmSGFuZGxlckFy ZywgMCwgZW50aXR5LQ0KPiA+IGJhc2UsDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZW50aXR5LT5zeXN0ZW1JZCwgZW50aXR5LT5wdWJsaWNJZCkpIHsNCj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGVudGl0eVRyYWNraW5nT25DbG9zZShwYXJzZXIsIGVudGl0eSwg X19MSU5FX18pOw0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVudGl0eS0+b3BlbiA9IFhN TF9GQUxTRTsNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gWE1MX0VSUk9SX0VY VEVSTkFMX0VOVElUWV9IQU5ETElORzsNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4gKyvC oMKgwqDCoMKgwqDCoMKgwqAgZW50aXR5VHJhY2tpbmdPbkNsb3NlKHBhcnNlciwgZW50aXR5LCBf X0xJTkVfXyk7DQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnRpdHktPm9wZW4gPSBYTUxfRkFM U0U7DQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBoYW5kbGVEZWZhdWx0ID0gWE1MX0ZBTFNFOw0K PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCEgZHRkLT5wYXJhbUVudGl0eVJlYWQpIHsNCj4g K0BAIC01MDkxLDYgKzUzMTUsMTMgQEAgZXBpbG9nUHJvY2Vzc29yKFhNTF9QYXJzZXIgcGFyc2Vy LCBjb25zdCBjaGFyDQo+ICpzLCBjb25zdCBjaGFyICplbmQsDQo+ICvCoMKgIGZvciAoOzspIHsN Cj4gK8KgwqDCoMKgIGNvbnN0IGNoYXIgKm5leHQgPSBOVUxMOw0KPiArwqDCoMKgwqAgaW50IHRv ayA9IFhtbFByb2xvZ1RvayhwYXJzZXItPm1fZW5jb2RpbmcsIHMsIGVuZCwgJm5leHQpOw0KPiAr KyNpZmRlZiBYTUxfRFREDQo+ICsrwqDCoMKgIGlmICghIGFjY291bnRpbmdEaWZmVG9sZXJhdGVk KHBhcnNlciwgdG9rLCBzLCBuZXh0LCBfX0xJTkVfXywNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgWE1MX0FDQ09V TlRfRElSRUNUKSkgew0KPiArK8KgwqDCoMKgwqAgYWNjb3VudGluZ09uQWJvcnQocGFyc2VyKTsN Cj4gKyvCoMKgwqDCoMKgIHJldHVybiBYTUxfRVJST1JfQU1QTElGSUNBVElPTl9MSU1JVF9CUkVB Q0g7DQo+ICsrwqDCoMKgIH0NCj4gKysjZW5kaWYNCj4gK8KgwqDCoMKgIHBhcnNlci0+bV9ldmVu dEVuZFB0ciA9IG5leHQ7DQo+ICvCoMKgwqDCoCBzd2l0Y2ggKHRvaykgew0KPiArwqDCoMKgwqAg LyogcmVwb3J0IHBhcnRpYWwgbGluZWJyZWFrIC0gaXQgbWlnaHQgYmUgdGhlIGxhc3QgdG9rZW4g Ki8NCj4gK0BAIC01MTY0LDYgKzUzOTUsOSBAQCBwcm9jZXNzSW50ZXJuYWxFbnRpdHkoWE1MX1Bh cnNlciBwYXJzZXIsDQo+IEVOVElUWQ0KPiAqZW50aXR5LCBYTUxfQm9vbCBiZXR3ZWVuRGVjbCkg ew0KPiArwqDCoMKgwqDCoMKgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOw0KPiArwqDCoCB9 DQo+ICvCoMKgIGVudGl0eS0+b3BlbiA9IFhNTF9UUlVFOw0KPiArKyNpZmRlZiBYTUxfRFREDQo+ ICsrwqAgZW50aXR5VHJhY2tpbmdPbk9wZW4ocGFyc2VyLCBlbnRpdHksIF9fTElORV9fKTsNCj4g KysjZW5kaWYNCj4gK8KgwqAgZW50aXR5LT5wcm9jZXNzZWQgPSAwOw0KPiArwqDCoCBvcGVuRW50 aXR5LT5uZXh0ID0gcGFyc2VyLT5tX29wZW5JbnRlcm5hbEVudGl0aWVzOw0KPiArwqDCoCBwYXJz ZXItPm1fb3BlbkludGVybmFsRW50aXRpZXMgPSBvcGVuRW50aXR5Ow0KPiArQEAgLTUxODIsMTcg KzU0MTYsMjIgQEAgcHJvY2Vzc0ludGVybmFsRW50aXR5KFhNTF9QYXJzZXIgcGFyc2VyLA0KPiBF TlRJVFkgKmVudGl0eSwgWE1MX0Jvb2wgYmV0d2VlbkRlY2wpIHsNCj4gK8KgwqDCoMKgIGludCB0 b2sNCj4gK8KgwqDCoMKgwqDCoMKgwqAgPSBYbWxQcm9sb2dUb2socGFyc2VyLT5tX2ludGVybmFs RW5jb2RpbmcsIHRleHRTdGFydCwNCj4gdGV4dEVuZCwgJm5leHQpOw0KPiArwqDCoMKgwqAgcmVz dWx0ID0gZG9Qcm9sb2cocGFyc2VyLCBwYXJzZXItPm1faW50ZXJuYWxFbmNvZGluZywNCj4gdGV4 dFN0YXJ0LA0KPiB0ZXh0RW5kLA0KPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB0b2ssIG5leHQsICZuZXh0LCBYTUxfRkFMU0UsIFhNTF9GQUxTRSk7DQo+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRvaywgbmV4dCwgJm5l eHQsIFhNTF9GQUxTRSwgWE1MX0ZBTFNFLA0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBYTUxfQUNDT1VOVF9FTlRJVFlfRVhQQU5TSU9OKTsNCj4gK8KgwqAg fSBlbHNlDQo+ICsgI2VuZGlmIC8qIFhNTF9EVEQgKi8NCj4gK8KgwqDCoMKgIHJlc3VsdCA9IGRv Q29udGVudChwYXJzZXIsIHBhcnNlci0+bV90YWdMZXZlbCwgcGFyc2VyLQ0KPiA+IG1faW50ZXJu YWxFbmNvZGluZywNCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB0ZXh0U3RhcnQsIHRleHRFbmQsICZuZXh0LCBYTUxfRkFMU0UpOw0KPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRleHRTdGFydCwgdGV4dEVuZCwg Jm5leHQsIFhNTF9GQUxTRSwNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBYTUxfQUNDT1VOVF9FTlRJVFlfRVhQQU5TSU9OKTsNCj4gKyANCj4gK8KgwqAg aWYgKHJlc3VsdCA9PSBYTUxfRVJST1JfTk9ORSkgew0KPiArwqDCoMKgwqAgaWYgKHRleHRFbmQg IT0gbmV4dCAmJiBwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5wYXJzaW5nID09DQo+IFhNTF9TVVNQ RU5ERUQpIHsNCj4gK8KgwqDCoMKgwqDCoCBlbnRpdHktPnByb2Nlc3NlZCA9IChpbnQpKG5leHQg LSB0ZXh0U3RhcnQpOw0KPiArwqDCoMKgwqDCoMKgIHBhcnNlci0+bV9wcm9jZXNzb3IgPSBpbnRl cm5hbEVudGl0eVByb2Nlc3NvcjsNCj4gK8KgwqDCoMKgIH0gZWxzZSB7DQo+ICsrI2lmZGVmIFhN TF9EVEQNCj4gKyvCoMKgwqDCoMKgIGVudGl0eVRyYWNraW5nT25DbG9zZShwYXJzZXIsIGVudGl0 eSwgX19MSU5FX18pOw0KPiArKyNlbmRpZiAvKiBYTUxfRFREICovDQo+ICvCoMKgwqDCoMKgwqAg ZW50aXR5LT5vcGVuID0gWE1MX0ZBTFNFOw0KPiArwqDCoMKgwqDCoMKgIHBhcnNlci0+bV9vcGVu SW50ZXJuYWxFbnRpdGllcyA9IG9wZW5FbnRpdHktPm5leHQ7DQo+ICvCoMKgwqDCoMKgwqAgLyog cHV0IG9wZW5FbnRpdHkgYmFjayBpbiBsaXN0IG9mIGZyZWUgaW5zdGFuY2VzICovDQo+ICtAQCAt NTIyNSwxMiArNTQ2NCwxMyBAQCBpbnRlcm5hbEVudGl0eVByb2Nlc3NvcihYTUxfUGFyc2VyIHBh cnNlciwNCj4gY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqZW5kLA0KPiArwqDCoMKgwqAgaW50 IHRvaw0KPiArwqDCoMKgwqDCoMKgwqDCoCA9IFhtbFByb2xvZ1RvayhwYXJzZXItPm1faW50ZXJu YWxFbmNvZGluZywgdGV4dFN0YXJ0LA0KPiB0ZXh0RW5kLCAmbmV4dCk7DQo+ICvCoMKgwqDCoCBy ZXN1bHQgPSBkb1Byb2xvZyhwYXJzZXIsIHBhcnNlci0+bV9pbnRlcm5hbEVuY29kaW5nLA0KPiB0 ZXh0U3RhcnQsDQo+IHRleHRFbmQsDQo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHRvaywgbmV4dCwgJm5leHQsIFhNTF9GQUxTRSwgWE1MX1RSVUUpOw0KPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0b2ssIG5leHQsICZu ZXh0LCBYTUxfRkFMU0UsIFhNTF9UUlVFLA0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBYTUxfQUNDT1VOVF9FTlRJVFlfRVhQQU5TSU9OKTsNCj4gK8KgwqAg fSBlbHNlDQo+ICsgI2VuZGlmIC8qIFhNTF9EVEQgKi8NCj4gK8KgwqDCoMKgIHJlc3VsdCA9IGRv Q29udGVudChwYXJzZXIsIG9wZW5FbnRpdHktPnN0YXJ0VGFnTGV2ZWwsDQo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBhcnNlci0+bV9pbnRlcm5hbEVu Y29kaW5nLCB0ZXh0U3RhcnQsDQo+IHRleHRFbmQsICZuZXh0LA0KPiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFhNTF9GQUxTRSk7DQo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgWE1MX0ZBTFNFLCBYTUxfQUNDT1VO VF9FTlRJVFlfRVhQQU5TSU9OKTsNCj4gKyANCj4gK8KgwqAgaWYgKHJlc3VsdCAhPSBYTUxfRVJS T1JfTk9ORSkNCj4gK8KgwqDCoMKgIHJldHVybiByZXN1bHQ7DQo+ICtAQCAtNTIzOSw2ICs1NDc5 LDkgQEAgaW50ZXJuYWxFbnRpdHlQcm9jZXNzb3IoWE1MX1BhcnNlciBwYXJzZXIsDQo+IGNvbnN0 DQo+IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmVuZCwNCj4gK8KgwqDCoMKgIGVudGl0eS0+cHJvY2Vz c2VkID0gKGludCkobmV4dCAtIChjaGFyICopZW50aXR5LT50ZXh0UHRyKTsNCj4gK8KgwqDCoMKg IHJldHVybiByZXN1bHQ7DQo+ICvCoMKgIH0gZWxzZSB7DQo+ICsrI2lmZGVmIFhNTF9EVEQNCj4g KyvCoMKgwqAgZW50aXR5VHJhY2tpbmdPbkNsb3NlKHBhcnNlciwgZW50aXR5LCBfX0xJTkVfXyk7 DQo+ICsrI2VuZGlmDQo+ICvCoMKgwqDCoCBlbnRpdHktPm9wZW4gPSBYTUxfRkFMU0U7DQo+ICvC oMKgwqDCoCBwYXJzZXItPm1fb3BlbkludGVybmFsRW50aXRpZXMgPSBvcGVuRW50aXR5LT5uZXh0 Ow0KPiArwqDCoMKgwqAgLyogcHV0IG9wZW5FbnRpdHkgYmFjayBpbiBsaXN0IG9mIGZyZWUgaW5z dGFuY2VzICovDQo+ICtAQCAtNTI1Miw3ICs1NDk1LDggQEAgaW50ZXJuYWxFbnRpdHlQcm9jZXNz b3IoWE1MX1BhcnNlciBwYXJzZXIsDQo+IGNvbnN0DQo+IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmVu ZCwNCj4gK8KgwqDCoMKgIHBhcnNlci0+bV9wcm9jZXNzb3IgPSBwcm9sb2dQcm9jZXNzb3I7DQo+ ICvCoMKgwqDCoCB0b2sgPSBYbWxQcm9sb2dUb2socGFyc2VyLT5tX2VuY29kaW5nLCBzLCBlbmQs ICZuZXh0KTsNCj4gK8KgwqDCoMKgIHJldHVybiBkb1Byb2xvZyhwYXJzZXIsIHBhcnNlci0+bV9l bmNvZGluZywgcywgZW5kLCB0b2ssIG5leHQsDQo+IG5leHRQdHIsDQo+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKFhNTF9Cb29sKSEgcGFyc2VyLQ0KPiA+bV9wYXJz aW5nU3RhdHVzLmZpbmFsQnVmZmVyLA0KPiBYTUxfVFJVRSk7DQo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKFhNTF9Cb29sKSEgcGFyc2VyLQ0KPiA+bV9wYXJzaW5n U3RhdHVzLmZpbmFsQnVmZmVyLA0KPiBYTUxfVFJVRSwNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBYTUxfQUNDT1VOVF9ESVJFQ1QpOw0KPiArwqDCoCB9IGVsc2UN Cj4gKyAjZW5kaWYgLyogWE1MX0RURCAqLw0KPiArwqDCoCB7DQo+ICtAQCAtNTI2MCw3ICs1NTA0 LDggQEAgaW50ZXJuYWxFbnRpdHlQcm9jZXNzb3IoWE1MX1BhcnNlciBwYXJzZXIsDQo+IGNvbnN0 DQo+IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmVuZCwNCj4gK8KgwqDCoMKgIC8qIHNlZSBleHRlcm5h bEVudGl0eUNvbnRlbnRQcm9jZXNzb3IgdnMgY29udGVudFByb2Nlc3NvciAqLw0KPiArwqDCoMKg wqAgcmV0dXJuIGRvQ29udGVudChwYXJzZXIsIHBhcnNlci0+bV9wYXJlbnRQYXJzZXIgPyAxIDog MCwNCj4gcGFyc2VyLQ0KPiA+IG1fZW5jb2RpbmcsDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcywgZW5kLCBuZXh0UHRyLA0KPiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKFhNTF9Cb29sKSEgcGFyc2VyLQ0KPiA+IG1fcGFy c2luZ1N0YXR1cy5maW5hbEJ1ZmZlcik7DQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAoWE1MX0Jvb2wpISBwYXJzZXItDQo+ID5tX3BhcnNpbmdTdGF0dXMuZmlu YWxCdWZmZXIsDQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBY TUxfQUNDT1VOVF9ESVJFQ1QpOw0KPiArwqDCoCB9DQo+ICsgfQ0KPiArIA0KPiArQEAgLTUyNzUs OSArNTUyMCwxMCBAQCBlcnJvclByb2Nlc3NvcihYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QgY2hh cg0KPiAqcywgY29uc3QgY2hhciAqZW5kLA0KPiArIA0KPiArIHN0YXRpYyBlbnVtIFhNTF9FcnJv cg0KPiArIHN0b3JlQXR0cmlidXRlVmFsdWUoWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0IEVOQ09E SU5HICplbmMsDQo+IFhNTF9Cb29sDQo+IGlzQ2RhdGEsDQo+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAqcHRyLCBjb25zdCBjaGFyICplbmQsIFNU UklOR19QT09MDQo+ICpwb29sKSB7DQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgY29uc3QgY2hhciAqcHRyLCBjb25zdCBjaGFyICplbmQsIFNUUklOR19QT09MDQo+ ICpwb29sLA0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVudW0g WE1MX0FjY291bnQgYWNjb3VudCkgew0KPiArwqDCoCBlbnVtIFhNTF9FcnJvciByZXN1bHQNCj4g Ky3CoMKgwqDCoMKgID0gYXBwZW5kQXR0cmlidXRlVmFsdWUocGFyc2VyLCBlbmMsIGlzQ2RhdGEs IHB0ciwgZW5kLCBwb29sKTsNCj4gKyvCoMKgwqDCoMKgID0gYXBwZW5kQXR0cmlidXRlVmFsdWUo cGFyc2VyLCBlbmMsIGlzQ2RhdGEsIHB0ciwgZW5kLCBwb29sLA0KPiBhY2NvdW50KTsNCj4gK8Kg wqAgaWYgKHJlc3VsdCkNCj4gK8KgwqDCoMKgIHJldHVybiByZXN1bHQ7DQo+ICvCoMKgIGlmICgh IGlzQ2RhdGEgJiYgcG9vbExlbmd0aChwb29sKSAmJiBwb29sTGFzdENoYXIocG9vbCkgPT0gMHgy MCkNCj4gK0BAIC01Mjg5LDExICs1NTM1LDIyIEBAIHN0b3JlQXR0cmlidXRlVmFsdWUoWE1MX1Bh cnNlciBwYXJzZXIsIGNvbnN0DQo+IEVOQ09ESU5HICplbmMsIFhNTF9Cb29sIGlzQ2RhdGEsDQo+ ICsgDQo+ICsgc3RhdGljIGVudW0gWE1MX0Vycm9yDQo+ICsgYXBwZW5kQXR0cmlidXRlVmFsdWUo WE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0IEVOQ09ESU5HICplbmMsDQo+IFhNTF9Cb29sDQo+IGlz Q2RhdGEsDQo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25z dCBjaGFyICpwdHIsIGNvbnN0IGNoYXIgKmVuZCwgU1RSSU5HX1BPT0wNCj4gKnBvb2wpIHsNCj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKnB0 ciwgY29uc3QgY2hhciAqZW5kLCBTVFJJTkdfUE9PTA0KPiAqcG9vbCwNCj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVudW0gWE1MX0FjY291bnQgYWNjb3VudCkg ew0KPiArwqDCoCBEVEQgKmNvbnN0IGR0ZCA9IHBhcnNlci0+bV9kdGQ7IC8qIHNhdmUgb25lIGxl dmVsIG9mIGluZGlyZWN0aW9uDQo+ICovDQo+ICsrI2lmbmRlZiBYTUxfRFREDQo+ICsrwqAgVU5V U0VEX1AoYWNjb3VudCk7DQo+ICsrI2VuZGlmDQo+ICsrDQo+ICvCoMKgIGZvciAoOzspIHsNCj4g K8KgwqDCoMKgIGNvbnN0IGNoYXIgKm5leHQ7DQo+ICvCoMKgwqDCoCBpbnQgdG9rID0gWG1sQXR0 cmlidXRlVmFsdWVUb2soZW5jLCBwdHIsIGVuZCwgJm5leHQpOw0KPiArKyNpZmRlZiBYTUxfRFRE DQo+ICsrwqDCoMKgIGlmICghIGFjY291bnRpbmdEaWZmVG9sZXJhdGVkKHBhcnNlciwgdG9rLCBw dHIsIG5leHQsIF9fTElORV9fLA0KPiBhY2NvdW50KSkgew0KPiArK8KgwqDCoMKgwqAgYWNjb3Vu dGluZ09uQWJvcnQocGFyc2VyKTsNCj4gKyvCoMKgwqDCoMKgIHJldHVybiBYTUxfRVJST1JfQU1Q TElGSUNBVElPTl9MSU1JVF9CUkVBQ0g7DQo+ICsrwqDCoMKgIH0NCj4gKysjZW5kaWYNCj4gK8Kg wqDCoMKgIHN3aXRjaCAodG9rKSB7DQo+ICvCoMKgwqDCoCBjYXNlIFhNTF9UT0tfTk9ORToNCj4g K8KgwqDCoMKgwqDCoCByZXR1cm4gWE1MX0VSUk9SX05PTkU7DQo+ICtAQCAtNTM1Myw2ICs1NjEw LDE0IEBAIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKFhNTF9QYXJzZXIgcGFyc2VyLCBjb25zdA0KPiBF TkNPRElORyAqZW5jLCBYTUxfQm9vbCBpc0NkYXRhLA0KPiArwqDCoMKgwqDCoMKgIFhNTF9DaGFy IGNoID0gKFhNTF9DaGFyKVhtbFByZWRlZmluZWRFbnRpdHlOYW1lKA0KPiArwqDCoMKgwqDCoMKg wqDCoMKgwqAgZW5jLCBwdHIgKyBlbmMtPm1pbkJ5dGVzUGVyQ2hhciwgbmV4dCAtIGVuYy0NCj4g PiBtaW5CeXRlc1BlckNoYXIpOw0KPiArwqDCoMKgwqDCoMKgIGlmIChjaCkgew0KPiArKyNpZmRl ZiBYTUxfRFREDQo+ICsrwqDCoMKgwqDCoMKgwqAgLyogTk9URTogV2UgYXJlIHJlcGxhY2luZyA0 LTYgY2hhcmFjdGVycyBvcmlnaW5hbCBpbnB1dCBmb3INCj4gMQ0KPiBjaGFyYWN0ZXINCj4gKyvC oMKgwqDCoMKgwqDCoMKgICrCoMKgwqDCoMKgwqAgc28gdGhlcmUgaXMgbm8gYW1wbGlmaWNhdGlv biBhbmQgaGVuY2UgcmVjb3JkaW5nDQo+IHdpdGhvdXQNCj4gKyvCoMKgwqDCoMKgwqDCoMKgICrC oMKgwqDCoMKgwqAgcHJvdGVjdGlvbi4gKi8NCj4gKyvCoMKgwqDCoMKgwqDCoCBhY2NvdW50aW5n RGlmZlRvbGVyYXRlZChwYXJzZXIsIHRvaywgKGNoYXIgKikmY2gsDQo+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKChjaGFy ICopJmNoKSArIHNpemVvZihYTUxfQ2hhciksDQo+IF9fTElORV9fLA0KPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFhNTF9B Q0NPVU5UX0VOVElUWV9FWFBBTlNJT04pOw0KPiArKyNlbmRpZiAvKiBYTUxfRFREICovDQo+ICvC oMKgwqDCoMKgwqDCoMKgIGlmICghIHBvb2xBcHBlbmRDaGFyKHBvb2wsIGNoKSkNCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOw0KPiArwqDCoMKgwqDC oMKgwqDCoCBicmVhazsNCj4gK0BAIC01NDMwLDkgKzU2OTUsMTYgQEAgYXBwZW5kQXR0cmlidXRl VmFsdWUoWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0DQo+IEVOQ09ESU5HICplbmMsIFhNTF9Cb29s IGlzQ2RhdGEsDQo+ICvCoMKgwqDCoMKgwqDCoMKgIGVudW0gWE1MX0Vycm9yIHJlc3VsdDsNCj4g K8KgwqDCoMKgwqDCoMKgwqAgY29uc3QgWE1MX0NoYXIgKnRleHRFbmQgPSBlbnRpdHktPnRleHRQ dHIgKyBlbnRpdHktDQo+ID50ZXh0TGVuOw0KPiArwqDCoMKgwqDCoMKgwqDCoCBlbnRpdHktPm9w ZW4gPSBYTUxfVFJVRTsNCj4gKysjaWZkZWYgWE1MX0RURA0KPiArK8KgwqDCoMKgwqDCoMKgIGVu dGl0eVRyYWNraW5nT25PcGVuKHBhcnNlciwgZW50aXR5LCBfX0xJTkVfXyk7DQo+ICsrI2VuZGlm DQo+ICvCoMKgwqDCoMKgwqDCoMKgIHJlc3VsdCA9IGFwcGVuZEF0dHJpYnV0ZVZhbHVlKHBhcnNl ciwgcGFyc2VyLQ0KPiA+IG1faW50ZXJuYWxFbmNvZGluZywNCj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBpc0NkYXRhLCAoY2hhciAqKWVudGl0eS0NCj4gPiB0ZXh0UHRyLA0KPiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIChjaGFyICopdGV4dEVuZCwgcG9vbCk7DQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaXND ZGF0YSwgKGNvbnN0IGNoYXINCj4gKillbnRpdHktDQo+ID4gdGV4dFB0ciwNCj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAoY29uc3QgY2hhciAqKXRleHRFbmQsIHBvb2wsDQo+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqANCj4gWE1MX0FDQ09VTlRfRU5USVRZX0VYUEFOU0lPTik7DQo+ICsrI2lmZGVmIFhNTF9E VEQNCj4gKyvCoMKgwqDCoMKgwqDCoCBlbnRpdHlUcmFja2luZ09uQ2xvc2UocGFyc2VyLCBlbnRp dHksIF9fTElORV9fKTsNCj4gKysjZW5kaWYNCj4gK8KgwqDCoMKgwqDCoMKgwqAgZW50aXR5LT5v cGVuID0gWE1MX0ZBTFNFOw0KPiArwqDCoMKgwqDCoMKgwqDCoCBpZiAocmVzdWx0KQ0KPiArwqDC oMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJlc3VsdDsNCj4gK0BAIC01NDYyLDEzICs1NzM0LDE2 IEBAIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKFhNTF9QYXJzZXIgcGFyc2VyLA0KPiBjb25zdA0KPiBF TkNPRElORyAqZW5jLCBYTUxfQm9vbCBpc0NkYXRhLA0KPiArIA0KPiArIHN0YXRpYyBlbnVtIFhN TF9FcnJvcg0KPiArIHN0b3JlRW50aXR5VmFsdWUoWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0IEVO Q09ESU5HICplbmMsDQo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3Qg Y2hhciAqZW50aXR5VGV4dFB0ciwgY29uc3QgY2hhcg0KPiAqZW50aXR5VGV4dEVuZCkgew0KPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKmVudGl0eVRleHRQ dHIsIGNvbnN0IGNoYXINCj4gKmVudGl0eVRleHRFbmQsDQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZW51bSBYTUxfQWNjb3VudCBhY2NvdW50KSB7DQo+ICvCoMKgIERURCAq Y29uc3QgZHRkID0gcGFyc2VyLT5tX2R0ZDsgLyogc2F2ZSBvbmUgbGV2ZWwgb2YgaW5kaXJlY3Rp b24NCj4gKi8NCj4gK8KgwqAgU1RSSU5HX1BPT0wgKnBvb2wgPSAmKGR0ZC0+ZW50aXR5VmFsdWVQ b29sKTsNCj4gK8KgwqAgZW51bSBYTUxfRXJyb3IgcmVzdWx0ID0gWE1MX0VSUk9SX05PTkU7DQo+ ICsgI2lmZGVmIFhNTF9EVEQNCj4gK8KgwqAgaW50IG9sZEluRW50aXR5VmFsdWUgPSBwYXJzZXIt Pm1fcHJvbG9nU3RhdGUuaW5FbnRpdHlWYWx1ZTsNCj4gK8KgwqAgcGFyc2VyLT5tX3Byb2xvZ1N0 YXRlLmluRW50aXR5VmFsdWUgPSAxOw0KPiArKyNlbHNlDQo+ICsrwqAgVU5VU0VEX1AoYWNjb3Vu dCk7DQo+ICsgI2VuZGlmIC8qIFhNTF9EVEQgKi8NCj4gK8KgwqAgLyogbmV2ZXIgcmV0dXJuIE51 bGwgZm9yIHRoZSB2YWx1ZSBhcmd1bWVudCBpbiBFbnRpdHlEZWNsSGFuZGxlciwNCj4gK8KgwqDC oMKgwqAgc2luY2UgdGhpcyB3b3VsZCBpbmRpY2F0ZSBhbiBleHRlcm5hbCBlbnRpdHk7IHRoZXJl Zm9yZSB3ZQ0KPiArQEAgLTU0ODEsNiArNTc1NiwxNiBAQCBzdG9yZUVudGl0eVZhbHVlKFhNTF9Q YXJzZXIgcGFyc2VyLCBjb25zdA0KPiBFTkNPRElORyAqZW5jLA0KPiArwqDCoCBmb3IgKDs7KSB7 DQo+ICvCoMKgwqDCoCBjb25zdCBjaGFyICpuZXh0Ow0KPiArwqDCoMKgwqAgaW50IHRvayA9IFht bEVudGl0eVZhbHVlVG9rKGVuYywgZW50aXR5VGV4dFB0ciwgZW50aXR5VGV4dEVuZCwNCj4gJm5l eHQpOw0KPiArKw0KPiArKyNpZmRlZiBYTUxfRFREDQo+ICsrwqDCoMKgIGlmICghIGFjY291bnRp bmdEaWZmVG9sZXJhdGVkKHBhcnNlciwgdG9rLCBlbnRpdHlUZXh0UHRyLCBuZXh0LA0KPiBfX0xJ TkVfXywNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgYWNjb3VudCkpIHsNCj4gKyvCoMKgwqDCoMKgIGFjY291bnRp bmdPbkFib3J0KHBhcnNlcik7DQo+ICsrwqDCoMKgwqDCoCByZXN1bHQgPSBYTUxfRVJST1JfQU1Q TElGSUNBVElPTl9MSU1JVF9CUkVBQ0g7DQo+ICsrwqDCoMKgwqDCoCBnb3RvIGVuZEVudGl0eVZh bHVlOw0KPiArK8KgwqDCoCB9DQo+ICsrI2VuZGlmDQo+ICsrDQo+ICvCoMKgwqDCoCBzd2l0Y2gg KHRvaykgew0KPiArwqDCoMKgwqAgY2FzZSBYTUxfVE9LX1BBUkFNX0VOVElUWV9SRUY6DQo+ICsg I2lmZGVmIFhNTF9EVEQNCj4gK0BAIC01NTE2LDEzICs1ODAxLDE2IEBAIHN0b3JlRW50aXR5VmFs dWUoWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0DQo+IEVOQ09ESU5HICplbmMsDQo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoCBpZiAocGFyc2VyLT5tX2V4dGVybmFsRW50aXR5UmVmSGFuZGxlcikgew0K PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGR0ZC0+cGFyYW1FbnRpdHlSZWFkID0gWE1MX0ZB TFNFOw0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVudGl0eS0+b3BlbiA9IFhNTF9UUlVF Ow0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW50aXR5VHJhY2tpbmdPbk9wZW4ocGFyc2Vy LCBlbnRpdHksIF9fTElORV9fKTsNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoISBw YXJzZXItPm1fZXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyKA0KPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwYXJzZXItPm1fZXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVy QXJnLCAwLA0KPiBlbnRpdHktDQo+ID4gYmFzZSwNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZW50aXR5LT5zeXN0ZW1JZCwgZW50aXR5LT5wdWJsaWNJZCkpIHsN Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnRpdHlUcmFja2luZ09uQ2xvc2UocGFy c2VyLCBlbnRpdHksIF9fTElORV9fKTsNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ZW50aXR5LT5vcGVuID0gWE1MX0ZBTFNFOw0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZXN1bHQgPSBYTUxfRVJST1JfRVhURVJOQUxfRU5USVRZX0hBTkRMSU5HOw0KPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVuZEVudGl0eVZhbHVlOw0KPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIH0NCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVudGl0eVRyYWNr aW5nT25DbG9zZShwYXJzZXIsIGVudGl0eSwgX19MSU5FX18pOw0KPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGVudGl0eS0+b3BlbiA9IFhNTF9GQUxTRTsNCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpZiAoISBkdGQtPnBhcmFtRW50aXR5UmVhZCkNCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZHRkLT5rZWVwUHJvY2Vzc2luZyA9IGR0ZC0+c3RhbmRhbG9uZTsNCj4gK0BA IC01NTMwLDkgKzU4MTgsMTIgQEAgc3RvcmVFbnRpdHlWYWx1ZShYTUxfUGFyc2VyIHBhcnNlciwg Y29uc3QNCj4gRU5DT0RJTkcgKmVuYywNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkdGQt PmtlZXBQcm9jZXNzaW5nID0gZHRkLT5zdGFuZGFsb25lOw0KPiArwqDCoMKgwqDCoMKgwqDCoCB9 IGVsc2Ugew0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW50aXR5LT5vcGVuID0gWE1MX1RSVUU7 DQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgIGVudGl0eVRyYWNraW5nT25PcGVuKHBhcnNlciwgZW50 aXR5LCBfX0xJTkVfXyk7DQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXN1bHQgPSBzdG9yZUVu dGl0eVZhbHVlKA0KPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBhcnNlciwgcGFyc2Vy LT5tX2ludGVybmFsRW5jb2RpbmcsIChjaGFyICopZW50aXR5LQ0KPiA+IHRleHRQdHIsDQo+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGNoYXIgKikoZW50aXR5LT50ZXh0UHRyICsgZW50 aXR5LT50ZXh0TGVuKSk7DQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGFyc2VyLCBw YXJzZXItPm1faW50ZXJuYWxFbmNvZGluZywgKGNvbnN0IGNoYXINCj4gKillbnRpdHktPnRleHRQ dHIsDQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGNvbnN0IGNoYXIgKikoZW50aXR5 LT50ZXh0UHRyICsgZW50aXR5LT50ZXh0TGVuKSwNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBYTUxfQUNDT1VOVF9FTlRJVFlfRVhQQU5TSU9OKTsNCj4gKyvCoMKgwqDCoMKgwqDCoMKg wqAgZW50aXR5VHJhY2tpbmdPbkNsb3NlKHBhcnNlciwgZW50aXR5LCBfX0xJTkVfXyk7DQo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoCBlbnRpdHktPm9wZW4gPSBYTUxfRkFMU0U7DQo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoCBpZiAocmVzdWx0KQ0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdv dG8gZW5kRW50aXR5VmFsdWU7DQo+ICtAQCAtNjg5MywzICs3MTg0LDc0MSBAQCBjb3B5U3RyaW5n KGNvbnN0IFhNTF9DaGFyICpzLCBjb25zdA0KPiBYTUxfTWVtb3J5X0hhbmRsaW5nX1N1aXRlICpt ZW1zdWl0ZSkgew0KPiArwqDCoCBtZW1jcHkocmVzdWx0LCBzLCBjaGFyc1JlcXVpcmVkICogc2l6 ZW9mKFhNTF9DaGFyKSk7DQo+ICvCoMKgIHJldHVybiByZXN1bHQ7DQo+ICsgfQ0KPiArKw0KPiAr KyNpZmRlZiBYTUxfRFREDQo+ICsrDQo+ICsrc3RhdGljIGZsb2F0DQo+ICsrYWNjb3VudGluZ0dl dEN1cnJlbnRBbXBsaWZpY2F0aW9uKFhNTF9QYXJzZXIgcm9vdFBhcnNlcikgew0KPiArK8KgIGNv bnN0IFhtbEJpZ0NvdW50IGNvdW50Qnl0ZXNPdXRwdXQNCj4gKyvCoMKgwqDCoMKgID0gcm9vdFBh cnNlci0+bV9hY2NvdW50aW5nLmNvdW50Qnl0ZXNEaXJlY3QNCj4gKyvCoMKgwqDCoMKgwqDCoCAr IHJvb3RQYXJzZXItPm1fYWNjb3VudGluZy5jb3VudEJ5dGVzSW5kaXJlY3Q7DQo+ICsrwqAgY29u c3QgZmxvYXQgYW1wbGlmaWNhdGlvbkZhY3Rvcg0KPiArK8KgwqDCoMKgwqAgPSByb290UGFyc2Vy LT5tX2FjY291bnRpbmcuY291bnRCeXRlc0RpcmVjdA0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgPyAoY291bnRCeXRlc091dHB1dA0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg LyAoZmxvYXQpKHJvb3RQYXJzZXItDQo+ID5tX2FjY291bnRpbmcuY291bnRCeXRlc0RpcmVjdCkp DQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA6IDEuMGY7DQo+ICsrwqAgYXNzZXJ0KCEgcm9v dFBhcnNlci0+bV9wYXJlbnRQYXJzZXIpOw0KPiArK8KgIHJldHVybiBhbXBsaWZpY2F0aW9uRmFj dG9yOw0KPiArK30NCj4gKysNCj4gKytzdGF0aWMgdm9pZA0KPiArK2FjY291bnRpbmdSZXBvcnRT dGF0cyhYTUxfUGFyc2VyIG9yaWdpblBhcnNlciwgY29uc3QgY2hhciAqZXBpbG9nKQ0KPiB7DQo+ ICsrwqAgY29uc3QgWE1MX1BhcnNlciByb290UGFyc2VyID0gZ2V0Um9vdFBhcnNlck9mKG9yaWdp blBhcnNlciwNCj4gTlVMTCk7DQo+ICsrwqAgYXNzZXJ0KCEgcm9vdFBhcnNlci0+bV9wYXJlbnRQ YXJzZXIpOw0KPiArKw0KPiArK8KgIGlmIChyb290UGFyc2VyLT5tX2FjY291bnRpbmcuZGVidWdM ZXZlbCA8IDEpIHsNCj4gKyvCoMKgwqAgcmV0dXJuOw0KPiArK8KgIH0NCj4gKysNCj4gKyvCoCBj b25zdCBmbG9hdCBhbXBsaWZpY2F0aW9uRmFjdG9yDQo+ICsrwqDCoMKgwqDCoCA9IGFjY291bnRp bmdHZXRDdXJyZW50QW1wbGlmaWNhdGlvbihyb290UGFyc2VyKTsNCj4gKyvCoCBmcHJpbnRmKHN0 ZGVyciwNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqAgImV4cGF0OiBBY2NvdW50aW5nKCVwKTogRGly ZWN0ICIgRVhQQVRfRk1UX1VMTCgNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiMTAi KSAiLCBpbmRpcmVjdCAiIEVYUEFUX0ZNVF9VTEwoIjEwIikgIiwNCj4gYW1wbGlmaWNhdGlvbiAl OC4yZiVzIiwNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqAgKHZvaWQgKilyb290UGFyc2VyLCByb290 UGFyc2VyLQ0KPiA+IG1fYWNjb3VudGluZy5jb3VudEJ5dGVzRGlyZWN0LA0KPiArK8KgwqDCoMKg wqDCoMKgwqDCoCByb290UGFyc2VyLT5tX2FjY291bnRpbmcuY291bnRCeXRlc0luZGlyZWN0LA0K PiArK8KgwqDCoMKgwqDCoMKgwqDCoCAoZG91YmxlKWFtcGxpZmljYXRpb25GYWN0b3IsIGVwaWxv Zyk7DQo+ICsrfQ0KPiArKw0KPiArK3N0YXRpYyB2b2lkDQo+ICsrYWNjb3VudGluZ09uQWJvcnQo WE1MX1BhcnNlciBvcmlnaW5QYXJzZXIpIHsNCj4gKyvCoCBhY2NvdW50aW5nUmVwb3J0U3RhdHMo b3JpZ2luUGFyc2VyLCAiIEFCT1JUSU5HXG4iKTsNCj4gKyt9DQo+ICsrDQo+ICsrc3RhdGljIHZv aWQNCj4gKythY2NvdW50aW5nUmVwb3J0RGlmZihYTUxfUGFyc2VyIHJvb3RQYXJzZXIsDQo+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgbGV2 ZWxzQXdheUZyb21Sb290UGFyc2VyLCBjb25zdA0KPiBjaGFyICpiZWZvcmUsDQo+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjaGFyICphZnRlciwgcHRy ZGlmZl90IGJ5dGVzTW9yZSwgaW50DQo+IHNvdXJjZV9saW5lLA0KPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW51bSBYTUxfQWNjb3VudCBhY2NvdW50KSB7DQo+ ICsrwqAgYXNzZXJ0KCEgcm9vdFBhcnNlci0+bV9wYXJlbnRQYXJzZXIpOw0KPiArKw0KPiArK8Kg IGZwcmludGYoc3RkZXJyLA0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoCAiICgrIiBFWFBBVF9GTVRf UFRSRElGRl9UKCI2IikgIiBieXRlcyAlc3wlZCwNCj4geG1scGFyc2UuYzolZCkgJSpzXCIiLA0K PiArK8KgwqDCoMKgwqDCoMKgwqDCoCBieXRlc01vcmUsIChhY2NvdW50ID09IFhNTF9BQ0NPVU5U X0RJUkVDVCkgPyAiRElSIiA6DQo+ICJFWFAiLA0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoCBsZXZl bHNBd2F5RnJvbVJvb3RQYXJzZXIsIHNvdXJjZV9saW5lLCAxMCwgIiIpOw0KPiArKw0KPiArK8Kg IGNvbnN0IGNoYXIgZWxsaXBpc1tdID0gIlsuLl0iOw0KPiArK8KgIGNvbnN0IHNpemVfdCBlbGxp cHNpc0xlbmd0aCA9IHNpemVvZihlbGxpcGlzKSAvKiBiZWNhdXNlIGNvbXBpbGUtDQo+IHRpbWUg Ki8gLSAxOw0KPiArK8KgIGNvbnN0IHVuc2lnbmVkIGludCBjb250ZXh0TGVuZ3RoID0gMTA7DQo+ ICsrDQo+ICsrwqAgLyogTm90ZTogUGVyZm9ybWFuY2UgaXMgb2Ygbm8gY29uY2VybiBoZXJlICov DQo+ICsrwqAgY29uc3QgY2hhciAqd2Fsa2VyID0gYmVmb3JlOw0KPiArK8KgIGlmICgocm9vdFBh cnNlci0+bV9hY2NvdW50aW5nLmRlYnVnTGV2ZWwgPj0gMykNCj4gKyvCoMKgwqDCoMKgIHx8IChh ZnRlciAtIGJlZm9yZSkNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPD0gKHB0cmRpZmZf dCkoY29udGV4dExlbmd0aCArIGVsbGlwc2lzTGVuZ3RoICsNCj4gY29udGV4dExlbmd0aCkpIHsN Cj4gKyvCoMKgwqAgZm9yICg7IHdhbGtlciA8IGFmdGVyOyB3YWxrZXIrKykgew0KPiArK8KgwqDC oMKgwqAgZnByaW50ZihzdGRlcnIsICIlcyIsIHVuc2lnbmVkQ2hhclRvUHJpbnRhYmxlKHdhbGtl clswXSkpOw0KPiArK8KgwqDCoCB9DQo+ICsrwqAgfSBlbHNlIHsNCj4gKyvCoMKgwqAgZm9yICg7 IHdhbGtlciA8IGJlZm9yZSArIGNvbnRleHRMZW5ndGg7IHdhbGtlcisrKSB7DQo+ICsrwqDCoMKg wqDCoCBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgdW5zaWduZWRDaGFyVG9QcmludGFibGUod2Fsa2Vy WzBdKSk7DQo+ICsrwqDCoMKgIH0NCj4gKyvCoMKgwqAgZnByaW50ZihzdGRlcnIsIGVsbGlwaXMp Ow0KPiArK8KgwqDCoCB3YWxrZXIgPSBhZnRlciAtIGNvbnRleHRMZW5ndGg7DQo+ICsrwqDCoMKg IGZvciAoOyB3YWxrZXIgPCBhZnRlcjsgd2Fsa2VyKyspIHsNCj4gKyvCoMKgwqDCoMKgIGZwcmlu dGYoc3RkZXJyLCAiJXMiLCB1bnNpZ25lZENoYXJUb1ByaW50YWJsZSh3YWxrZXJbMF0pKTsNCj4g KyvCoMKgwqAgfQ0KPiArK8KgIH0NCj4gKyvCoCBmcHJpbnRmKHN0ZGVyciwgIlwiXG4iKTsNCj4g Kyt9DQo+ICsrDQo+ICsrc3RhdGljIFhNTF9Cb29sDQo+ICsrYWNjb3VudGluZ0RpZmZUb2xlcmF0 ZWQoWE1MX1BhcnNlciBvcmlnaW5QYXJzZXIsIGludCB0b2ssIGNvbnN0DQo+IGNoYXINCj4gKmJl Zm9yZSwNCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGNvbnN0IGNoYXIgKmFmdGVyLCBpbnQgc291cmNlX2xpbmUsDQo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnVtIFhNTF9BY2NvdW50IGFjY291bnQp IHsNCj4gKyvCoCAvKiBOb3RlOiBXZSBuZWVkIHRvIGNoZWNrIHRoZSB0b2tlbiB0eXBlICpmaXJz dCogdG8gYmUgc3VyZSB0aGF0DQo+ICsrwqDCoCAqwqDCoMKgwqDCoMKgIHdlIGNhbiBldmVuIGFj Y2VzcyB2YXJpYWJsZSA8YWZ0ZXI+LCBzYWZlbHkuDQo+ICsrwqDCoCAqwqDCoMKgwqDCoMKgIEUu Zy4gZm9yIFhNTF9UT0tfTk9ORSA8YWZ0ZXI+IG1heSBob2xkIGFuIGludmFsaWQNCj4gcG9pbnRl ci4NCj4gKi8NCj4gKyvCoCBzd2l0Y2ggKHRvaykgew0KPiArK8KgIGNhc2UgWE1MX1RPS19JTlZB TElEOg0KPiArK8KgIGNhc2UgWE1MX1RPS19QQVJUSUFMOg0KPiArK8KgIGNhc2UgWE1MX1RPS19Q QVJUSUFMX0NIQVI6DQo+ICsrwqAgY2FzZSBYTUxfVE9LX05PTkU6DQo+ICsrwqDCoMKgIHJldHVy biBYTUxfVFJVRTsNCj4gKyvCoCB9DQo+ICsrDQo+ICsrwqAgaWYgKGFjY291bnQgPT0gWE1MX0FD Q09VTlRfTk9ORSkNCj4gKyvCoMKgwqAgcmV0dXJuIFhNTF9UUlVFOyAvKiBiZWNhdXNlIHRoZXNl IGJ5dGVzIGhhdmUgYmVlbiBhY2NvdW50ZWQNCj4gZm9yLA0KPiBhbHJlYWR5ICovDQo+ICsrDQo+ ICsrwqAgdW5zaWduZWQgaW50IGxldmVsc0F3YXlGcm9tUm9vdFBhcnNlcjsNCj4gKyvCoCBjb25z dCBYTUxfUGFyc2VyIHJvb3RQYXJzZXINCj4gKyvCoMKgwqDCoMKgID0gZ2V0Um9vdFBhcnNlck9m KG9yaWdpblBhcnNlciwgJmxldmVsc0F3YXlGcm9tUm9vdFBhcnNlcik7DQo+ICsrwqAgYXNzZXJ0 KCEgcm9vdFBhcnNlci0+bV9wYXJlbnRQYXJzZXIpOw0KPiArKw0KPiArK8KgIGNvbnN0IGludCBp c0RpcmVjdA0KPiArK8KgwqDCoMKgwqAgPSAoYWNjb3VudCA9PSBYTUxfQUNDT1VOVF9ESVJFQ1Qp ICYmIChvcmlnaW5QYXJzZXIgPT0NCj4gcm9vdFBhcnNlcik7DQo+ICsrwqAgY29uc3QgcHRyZGlm Zl90IGJ5dGVzTW9yZSA9IGFmdGVyIC0gYmVmb3JlOw0KPiArKw0KPiArK8KgIFhtbEJpZ0NvdW50 ICpjb25zdCBhZGRpdGlvblRhcmdldA0KPiArK8KgwqDCoMKgwqAgPSBpc0RpcmVjdCA/ICZyb290 UGFyc2VyLT5tX2FjY291bnRpbmcuY291bnRCeXRlc0RpcmVjdA0KPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIDogJnJvb3RQYXJzZXItPm1fYWNjb3VudGluZy5jb3VudEJ5dGVz SW5kaXJlY3Q7DQo+ICsrDQo+ICsrwqAgLyogRGV0ZWN0IGFuZCBhdm9pZCBpbnRlZ2VyIG92ZXJm bG93ICovDQo+ICsrwqAgaWYgKCphZGRpdGlvblRhcmdldCA+IChYbWxCaWdDb3VudCkoLTEpIC0g KFhtbEJpZ0NvdW50KWJ5dGVzTW9yZSkNCj4gKyvCoMKgwqAgcmV0dXJuIFhNTF9GQUxTRTsNCj4g KyvCoCAqYWRkaXRpb25UYXJnZXQgKz0gYnl0ZXNNb3JlOw0KPiArKw0KPiArK8KgIGNvbnN0IFht bEJpZ0NvdW50IGNvdW50Qnl0ZXNPdXRwdXQNCj4gKyvCoMKgwqDCoMKgID0gcm9vdFBhcnNlci0+ bV9hY2NvdW50aW5nLmNvdW50Qnl0ZXNEaXJlY3QNCj4gKyvCoMKgwqDCoMKgwqDCoCArIHJvb3RQ YXJzZXItPm1fYWNjb3VudGluZy5jb3VudEJ5dGVzSW5kaXJlY3Q7DQo+ICsrwqAgY29uc3QgZmxv YXQgYW1wbGlmaWNhdGlvbkZhY3Rvcg0KPiArK8KgwqDCoMKgwqAgPSBhY2NvdW50aW5nR2V0Q3Vy cmVudEFtcGxpZmljYXRpb24ocm9vdFBhcnNlcik7DQo+ICsrwqAgY29uc3QgWE1MX0Jvb2wgdG9s ZXJhdGVkDQo+ICsrwqDCoMKgwqDCoCA9IChjb3VudEJ5dGVzT3V0cHV0IDwgcm9vdFBhcnNlci0N Cj4gPiBtX2FjY291bnRpbmcuYWN0aXZhdGlvblRocmVzaG9sZEJ5dGVzKQ0KPiArK8KgwqDCoMKg wqDCoMKgIHx8IChhbXBsaWZpY2F0aW9uRmFjdG9yDQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCA8PSByb290UGFyc2VyLQ0KPiA+bV9hY2NvdW50aW5nLm1heGltdW1BbXBsaWZpY2F0aW9uRmFj dG9yKTsNCj4gKysNCj4gKyvCoCBpZiAocm9vdFBhcnNlci0+bV9hY2NvdW50aW5nLmRlYnVnTGV2 ZWwgPj0gMikgew0KPiArK8KgwqDCoCBhY2NvdW50aW5nUmVwb3J0U3RhdHMocm9vdFBhcnNlciwg IiIpOw0KPiArK8KgwqDCoCBhY2NvdW50aW5nUmVwb3J0RGlmZihyb290UGFyc2VyLCBsZXZlbHNB d2F5RnJvbVJvb3RQYXJzZXIsDQo+IGJlZm9yZSwgYWZ0ZXIsDQo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJ5dGVzTW9yZSwgc291cmNlX2xpbmUs IGFjY291bnQpOw0KPiArK8KgIH0NCj4gKysNCj4gKyvCoCByZXR1cm4gdG9sZXJhdGVkOw0KPiAr K30NCj4gKysNCj4gKytzdGF0aWMgdm9pZA0KPiArK2VudGl0eVRyYWNraW5nUmVwb3J0U3RhdHMo WE1MX1BhcnNlciByb290UGFyc2VyLCBFTlRJVFkgKmVudGl0eSwNCj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjaGFyICphY3Rpb24s IGludCBzb3VyY2VMaW5lKSB7DQo+ICsrwqAgYXNzZXJ0KCEgcm9vdFBhcnNlci0+bV9wYXJlbnRQ YXJzZXIpOw0KPiArK8KgIGlmIChyb290UGFyc2VyLT5tX2VudGl0eV9zdGF0cy5kZWJ1Z0xldmVs IDwgMSkNCj4gKyvCoMKgwqAgcmV0dXJuOw0KPiArKw0KPiArKyPCoCBpZiBkZWZpbmVkKFhNTF9V TklDT0RFKQ0KPiArK8KgIGNvbnN0IGNoYXIgKmNvbnN0IGVudGl0eU5hbWUgPSAiWy4uXSI7DQo+ ICsrI8KgIGVsc2UNCj4gKyvCoCBjb25zdCBjaGFyICpjb25zdCBlbnRpdHlOYW1lID0gZW50aXR5 LT5uYW1lOw0KPiArKyPCoCBlbmRpZg0KPiArKw0KPiArK8KgIGZwcmludGYoDQo+ICsrwqDCoMKg wqDCoCBzdGRlcnIsDQo+ICsrwqDCoMKgwqDCoCAiZXhwYXQ6IEVudGl0aWVzKCVwKTogQ291bnQg JTlkLCBkZXB0aCAlMmQvJTJkICUqcyVzJXM7ICVzDQo+IGxlbmd0aCAlZCAoeG1scGFyc2UuYzol ZClcbiIsDQo+ICsrwqDCoMKgwqDCoCAodm9pZCAqKXJvb3RQYXJzZXIsIHJvb3RQYXJzZXItDQo+ ID5tX2VudGl0eV9zdGF0cy5jb3VudEV2ZXJPcGVuZWQsDQo+ICsrwqDCoMKgwqDCoCByb290UGFy c2VyLT5tX2VudGl0eV9zdGF0cy5jdXJyZW50RGVwdGgsDQo+ICsrwqDCoMKgwqDCoCByb290UGFy c2VyLT5tX2VudGl0eV9zdGF0cy5tYXhpbXVtRGVwdGhTZWVuLA0KPiArK8KgwqDCoMKgwqAgKHJv b3RQYXJzZXItPm1fZW50aXR5X3N0YXRzLmN1cnJlbnREZXB0aCAtIDEpICogMiwgIiIsDQo+ICsr wqDCoMKgwqDCoCBlbnRpdHktPmlzX3BhcmFtID8gIiUiIDogIiYiLCBlbnRpdHlOYW1lLCBhY3Rp b24sIGVudGl0eS0NCj4gPiB0ZXh0TGVuLA0KPiArK8KgwqDCoMKgwqAgc291cmNlTGluZSk7DQo+ ICsrfQ0KPiArKw0KPiArK3N0YXRpYyB2b2lkDQo+ICsrZW50aXR5VHJhY2tpbmdPbk9wZW4oWE1M X1BhcnNlciBvcmlnaW5QYXJzZXIsIEVOVElUWSAqZW50aXR5LCBpbnQNCj4gc291cmNlTGluZSkg ew0KPiArK8KgIGNvbnN0IFhNTF9QYXJzZXIgcm9vdFBhcnNlciA9IGdldFJvb3RQYXJzZXJPZihv cmlnaW5QYXJzZXIsDQo+IE5VTEwpOw0KPiArK8KgIGFzc2VydCghIHJvb3RQYXJzZXItPm1fcGFy ZW50UGFyc2VyKTsNCj4gKysNCj4gKyvCoCByb290UGFyc2VyLT5tX2VudGl0eV9zdGF0cy5jb3Vu dEV2ZXJPcGVuZWQrKzsNCj4gKyvCoCByb290UGFyc2VyLT5tX2VudGl0eV9zdGF0cy5jdXJyZW50 RGVwdGgrKzsNCj4gKyvCoCBpZiAocm9vdFBhcnNlci0+bV9lbnRpdHlfc3RhdHMuY3VycmVudERl cHRoDQo+ICsrwqDCoMKgwqDCoCA+IHJvb3RQYXJzZXItPm1fZW50aXR5X3N0YXRzLm1heGltdW1E ZXB0aFNlZW4pIHsNCj4gKyvCoMKgwqAgcm9vdFBhcnNlci0+bV9lbnRpdHlfc3RhdHMubWF4aW11 bURlcHRoU2VlbisrOw0KPiArK8KgIH0NCj4gKysNCj4gKyvCoCBlbnRpdHlUcmFja2luZ1JlcG9y dFN0YXRzKHJvb3RQYXJzZXIsIGVudGl0eSwgIk9QRU4gIiwNCj4gc291cmNlTGluZSk7DQo+ICsr fQ0KPiArKw0KPiArK3N0YXRpYyB2b2lkDQo+ICsrZW50aXR5VHJhY2tpbmdPbkNsb3NlKFhNTF9Q YXJzZXIgb3JpZ2luUGFyc2VyLCBFTlRJVFkgKmVudGl0eSwgaW50DQo+IHNvdXJjZUxpbmUpIHsN Cj4gKyvCoCBjb25zdCBYTUxfUGFyc2VyIHJvb3RQYXJzZXIgPSBnZXRSb290UGFyc2VyT2Yob3Jp Z2luUGFyc2VyLA0KPiBOVUxMKTsNCj4gKyvCoCBhc3NlcnQoISByb290UGFyc2VyLT5tX3BhcmVu dFBhcnNlcik7DQo+ICsrDQo+ICsrwqAgZW50aXR5VHJhY2tpbmdSZXBvcnRTdGF0cyhyb290UGFy c2VyLCBlbnRpdHksICJDTE9TRSIsDQo+IHNvdXJjZUxpbmUpOw0KPiArK8KgIHJvb3RQYXJzZXIt Pm1fZW50aXR5X3N0YXRzLmN1cnJlbnREZXB0aC0tOw0KPiArK30NCj4gKysNCj4gKytzdGF0aWMg WE1MX1BhcnNlcg0KPiArK2dldFJvb3RQYXJzZXJPZihYTUxfUGFyc2VyIHBhcnNlciwgdW5zaWdu ZWQgaW50ICpvdXRMZXZlbERpZmYpIHsNCj4gKyvCoCBYTUxfUGFyc2VyIHJvb3RQYXJzZXIgPSBw YXJzZXI7DQo+ICsrwqAgdW5zaWduZWQgaW50IHN0ZXBzVGFrZW5VcHdhcmRzID0gMDsNCj4gKyvC oCB3aGlsZSAocm9vdFBhcnNlci0+bV9wYXJlbnRQYXJzZXIpIHsNCj4gKyvCoMKgwqAgcm9vdFBh cnNlciA9IHJvb3RQYXJzZXItPm1fcGFyZW50UGFyc2VyOw0KPiArK8KgwqDCoCBzdGVwc1Rha2Vu VXB3YXJkcysrOw0KPiArK8KgIH0NCj4gKyvCoCBhc3NlcnQoISByb290UGFyc2VyLT5tX3BhcmVu dFBhcnNlcik7DQo+ICsrwqAgaWYgKG91dExldmVsRGlmZiAhPSBOVUxMKSB7DQo+ICsrwqDCoMKg ICpvdXRMZXZlbERpZmYgPSBzdGVwc1Rha2VuVXB3YXJkczsNCj4gKyvCoCB9DQo+ICsrwqAgcmV0 dXJuIHJvb3RQYXJzZXI7DQo+ICsrfQ0KPiArKw0KPiArK3N0YXRpYyBjb25zdCBjaGFyICoNCj4g Kyt1bnNpZ25lZENoYXJUb1ByaW50YWJsZSh1bnNpZ25lZCBjaGFyIGMpIHsNCj4gKyvCoCBzd2l0 Y2ggKGMpIHsNCj4gKyvCoCBjYXNlIDA6DQo+ICsrwqDCoMKgIHJldHVybiAiXFwwIjsNCj4gKyvC oCBjYXNlIDE6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4MSI7DQo+ICsrwqAgY2FzZSAyOg0KPiAr K8KgwqDCoCByZXR1cm4gIlxceDIiOw0KPiArK8KgIGNhc2UgMzoNCj4gKyvCoMKgwqAgcmV0dXJu ICJcXHgzIjsNCj4gKyvCoCBjYXNlIDQ6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4NCI7DQo+ICsr wqAgY2FzZSA1Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceDUiOw0KPiArK8KgIGNhc2UgNjoNCj4g KyvCoMKgwqAgcmV0dXJuICJcXHg2IjsNCj4gKyvCoCBjYXNlIDc6DQo+ICsrwqDCoMKgIHJldHVy biAiXFx4NyI7DQo+ICsrwqAgY2FzZSA4Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceDgiOw0KPiAr K8KgIGNhc2UgOToNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHQiOw0KPiArK8KgIGNhc2UgMTA6DQo+ ICsrwqDCoMKgIHJldHVybiAiXFxuIjsNCj4gKyvCoCBjYXNlIDExOg0KPiArK8KgwqDCoCByZXR1 cm4gIlxceEIiOw0KPiArK8KgIGNhc2UgMTI6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4QyI7DQo+ ICsrwqAgY2FzZSAxMzoNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHIiOw0KPiArK8KgIGNhc2UgMTQ6 DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4RSI7DQo+ICsrwqAgY2FzZSAxNToNCj4gKyvCoMKgwqAg cmV0dXJuICJcXHhGIjsNCj4gKyvCoCBjYXNlIDE2Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceDEw IjsNCj4gKyvCoCBjYXNlIDE3Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceDExIjsNCj4gKyvCoCBj YXNlIDE4Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceDEyIjsNCj4gKyvCoCBjYXNlIDE5Og0KPiAr K8KgwqDCoCByZXR1cm4gIlxceDEzIjsNCj4gKyvCoCBjYXNlIDIwOg0KPiArK8KgwqDCoCByZXR1 cm4gIlxceDE0IjsNCj4gKyvCoCBjYXNlIDIxOg0KPiArK8KgwqDCoCByZXR1cm4gIlxceDE1IjsN Cj4gKyvCoCBjYXNlIDIyOg0KPiArK8KgwqDCoCByZXR1cm4gIlxceDE2IjsNCj4gKyvCoCBjYXNl IDIzOg0KPiArK8KgwqDCoCByZXR1cm4gIlxceDE3IjsNCj4gKyvCoCBjYXNlIDI0Og0KPiArK8Kg wqDCoCByZXR1cm4gIlxceDE4IjsNCj4gKyvCoCBjYXNlIDI1Og0KPiArK8KgwqDCoCByZXR1cm4g IlxceDE5IjsNCj4gKyvCoCBjYXNlIDI2Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceDFBIjsNCj4g KyvCoCBjYXNlIDI3Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceDFCIjsNCj4gKyvCoCBjYXNlIDI4 Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceDFDIjsNCj4gKyvCoCBjYXNlIDI5Og0KPiArK8KgwqDC oCByZXR1cm4gIlxceDFEIjsNCj4gKyvCoCBjYXNlIDMwOg0KPiArK8KgwqDCoCByZXR1cm4gIlxc eDFFIjsNCj4gKyvCoCBjYXNlIDMxOg0KPiArK8KgwqDCoCByZXR1cm4gIlxceDFGIjsNCj4gKyvC oCBjYXNlIDMyOg0KPiArK8KgwqDCoCByZXR1cm4gIiAiOw0KPiArK8KgIGNhc2UgMzM6DQo+ICsr wqDCoMKgIHJldHVybiAiISI7DQo+ICsrwqAgY2FzZSAzNDoNCj4gKyvCoMKgwqAgcmV0dXJuICJc XFwiIjsNCj4gKyvCoCBjYXNlIDM1Og0KPiArK8KgwqDCoCByZXR1cm4gIiMiOw0KPiArK8KgIGNh c2UgMzY6DQo+ICsrwqDCoMKgIHJldHVybiAiJCI7DQo+ICsrwqAgY2FzZSAzNzoNCj4gKyvCoMKg wqAgcmV0dXJuICIlIjsNCj4gKyvCoCBjYXNlIDM4Og0KPiArK8KgwqDCoCByZXR1cm4gIiYiOw0K PiArK8KgIGNhc2UgMzk6DQo+ICsrwqDCoMKgIHJldHVybiAiJyI7DQo+ICsrwqAgY2FzZSA0MDoN Cj4gKyvCoMKgwqAgcmV0dXJuICIoIjsNCj4gKyvCoCBjYXNlIDQxOg0KPiArK8KgwqDCoCByZXR1 cm4gIikiOw0KPiArK8KgIGNhc2UgNDI6DQo+ICsrwqDCoMKgIHJldHVybiAiKiI7DQo+ICsrwqAg Y2FzZSA0MzoNCj4gKyvCoMKgwqAgcmV0dXJuICIrIjsNCj4gKyvCoCBjYXNlIDQ0Og0KPiArK8Kg wqDCoCByZXR1cm4gIiwiOw0KPiArK8KgIGNhc2UgNDU6DQo+ICsrwqDCoMKgIHJldHVybiAiLSI7 DQo+ICsrwqAgY2FzZSA0NjoNCj4gKyvCoMKgwqAgcmV0dXJuICIuIjsNCj4gKyvCoCBjYXNlIDQ3 Og0KPiArK8KgwqDCoCByZXR1cm4gIi8iOw0KPiArK8KgIGNhc2UgNDg6DQo+ICsrwqDCoMKgIHJl dHVybiAiMCI7DQo+ICsrwqAgY2FzZSA0OToNCj4gKyvCoMKgwqAgcmV0dXJuICIxIjsNCj4gKyvC oCBjYXNlIDUwOg0KPiArK8KgwqDCoCByZXR1cm4gIjIiOw0KPiArK8KgIGNhc2UgNTE6DQo+ICsr wqDCoMKgIHJldHVybiAiMyI7DQo+ICsrwqAgY2FzZSA1MjoNCj4gKyvCoMKgwqAgcmV0dXJuICI0 IjsNCj4gKyvCoCBjYXNlIDUzOg0KPiArK8KgwqDCoCByZXR1cm4gIjUiOw0KPiArK8KgIGNhc2Ug NTQ6DQo+ICsrwqDCoMKgIHJldHVybiAiNiI7DQo+ICsrwqAgY2FzZSA1NToNCj4gKyvCoMKgwqAg cmV0dXJuICI3IjsNCj4gKyvCoCBjYXNlIDU2Og0KPiArK8KgwqDCoCByZXR1cm4gIjgiOw0KPiAr K8KgIGNhc2UgNTc6DQo+ICsrwqDCoMKgIHJldHVybiAiOSI7DQo+ICsrwqAgY2FzZSA1ODoNCj4g KyvCoMKgwqAgcmV0dXJuICI6IjsNCj4gKyvCoCBjYXNlIDU5Og0KPiArK8KgwqDCoCByZXR1cm4g IjsiOw0KPiArK8KgIGNhc2UgNjA6DQo+ICsrwqDCoMKgIHJldHVybiAiPCI7DQo+ICsrwqAgY2Fz ZSA2MToNCj4gKyvCoMKgwqAgcmV0dXJuICI9IjsNCj4gKyvCoCBjYXNlIDYyOg0KPiArK8KgwqDC oCByZXR1cm4gIj4iOw0KPiArK8KgIGNhc2UgNjM6DQo+ICsrwqDCoMKgIHJldHVybiAiPyI7DQo+ ICsrwqAgY2FzZSA2NDoNCj4gKyvCoMKgwqAgcmV0dXJuICJAIjsNCj4gKyvCoCBjYXNlIDY1Og0K PiArK8KgwqDCoCByZXR1cm4gIkEiOw0KPiArK8KgIGNhc2UgNjY6DQo+ICsrwqDCoMKgIHJldHVy biAiQiI7DQo+ICsrwqAgY2FzZSA2NzoNCj4gKyvCoMKgwqAgcmV0dXJuICJDIjsNCj4gKyvCoCBj YXNlIDY4Og0KPiArK8KgwqDCoCByZXR1cm4gIkQiOw0KPiArK8KgIGNhc2UgNjk6DQo+ICsrwqDC oMKgIHJldHVybiAiRSI7DQo+ICsrwqAgY2FzZSA3MDoNCj4gKyvCoMKgwqAgcmV0dXJuICJGIjsN Cj4gKyvCoCBjYXNlIDcxOg0KPiArK8KgwqDCoCByZXR1cm4gIkciOw0KPiArK8KgIGNhc2UgNzI6 DQo+ICsrwqDCoMKgIHJldHVybiAiSCI7DQo+ICsrwqAgY2FzZSA3MzoNCj4gKyvCoMKgwqAgcmV0 dXJuICJJIjsNCj4gKyvCoCBjYXNlIDc0Og0KPiArK8KgwqDCoCByZXR1cm4gIkoiOw0KPiArK8Kg IGNhc2UgNzU6DQo+ICsrwqDCoMKgIHJldHVybiAiSyI7DQo+ICsrwqAgY2FzZSA3NjoNCj4gKyvC oMKgwqAgcmV0dXJuICJMIjsNCj4gKyvCoCBjYXNlIDc3Og0KPiArK8KgwqDCoCByZXR1cm4gIk0i Ow0KPiArK8KgIGNhc2UgNzg6DQo+ICsrwqDCoMKgIHJldHVybiAiTiI7DQo+ICsrwqAgY2FzZSA3 OToNCj4gKyvCoMKgwqAgcmV0dXJuICJPIjsNCj4gKyvCoCBjYXNlIDgwOg0KPiArK8KgwqDCoCBy ZXR1cm4gIlAiOw0KPiArK8KgIGNhc2UgODE6DQo+ICsrwqDCoMKgIHJldHVybiAiUSI7DQo+ICsr wqAgY2FzZSA4MjoNCj4gKyvCoMKgwqAgcmV0dXJuICJSIjsNCj4gKyvCoCBjYXNlIDgzOg0KPiAr K8KgwqDCoCByZXR1cm4gIlMiOw0KPiArK8KgIGNhc2UgODQ6DQo+ICsrwqDCoMKgIHJldHVybiAi VCI7DQo+ICsrwqAgY2FzZSA4NToNCj4gKyvCoMKgwqAgcmV0dXJuICJVIjsNCj4gKyvCoCBjYXNl IDg2Og0KPiArK8KgwqDCoCByZXR1cm4gIlYiOw0KPiArK8KgIGNhc2UgODc6DQo+ICsrwqDCoMKg IHJldHVybiAiVyI7DQo+ICsrwqAgY2FzZSA4ODoNCj4gKyvCoMKgwqAgcmV0dXJuICJYIjsNCj4g KyvCoCBjYXNlIDg5Og0KPiArK8KgwqDCoCByZXR1cm4gIlkiOw0KPiArK8KgIGNhc2UgOTA6DQo+ ICsrwqDCoMKgIHJldHVybiAiWiI7DQo+ICsrwqAgY2FzZSA5MToNCj4gKyvCoMKgwqAgcmV0dXJu ICJbIjsNCj4gKyvCoCBjYXNlIDkyOg0KPiArK8KgwqDCoCByZXR1cm4gIlxcXFwiOw0KPiArK8Kg IGNhc2UgOTM6DQo+ICsrwqDCoMKgIHJldHVybiAiXSI7DQo+ICsrwqAgY2FzZSA5NDoNCj4gKyvC oMKgwqAgcmV0dXJuICJeIjsNCj4gKyvCoCBjYXNlIDk1Og0KPiArK8KgwqDCoCByZXR1cm4gIl8i Ow0KPiArK8KgIGNhc2UgOTY6DQo+ICsrwqDCoMKgIHJldHVybiAiYCI7DQo+ICsrwqAgY2FzZSA5 NzoNCj4gKyvCoMKgwqAgcmV0dXJuICJhIjsNCj4gKyvCoCBjYXNlIDk4Og0KPiArK8KgwqDCoCBy ZXR1cm4gImIiOw0KPiArK8KgIGNhc2UgOTk6DQo+ICsrwqDCoMKgIHJldHVybiAiYyI7DQo+ICsr wqAgY2FzZSAxMDA6DQo+ICsrwqDCoMKgIHJldHVybiAiZCI7DQo+ICsrwqAgY2FzZSAxMDE6DQo+ ICsrwqDCoMKgIHJldHVybiAiZSI7DQo+ICsrwqAgY2FzZSAxMDI6DQo+ICsrwqDCoMKgIHJldHVy biAiZiI7DQo+ICsrwqAgY2FzZSAxMDM6DQo+ICsrwqDCoMKgIHJldHVybiAiZyI7DQo+ICsrwqAg Y2FzZSAxMDQ6DQo+ICsrwqDCoMKgIHJldHVybiAiaCI7DQo+ICsrwqAgY2FzZSAxMDU6DQo+ICsr wqDCoMKgIHJldHVybiAiaSI7DQo+ICsrwqAgY2FzZSAxMDY6DQo+ICsrwqDCoMKgIHJldHVybiAi aiI7DQo+ICsrwqAgY2FzZSAxMDc6DQo+ICsrwqDCoMKgIHJldHVybiAiayI7DQo+ICsrwqAgY2Fz ZSAxMDg6DQo+ICsrwqDCoMKgIHJldHVybiAibCI7DQo+ICsrwqAgY2FzZSAxMDk6DQo+ICsrwqDC oMKgIHJldHVybiAibSI7DQo+ICsrwqAgY2FzZSAxMTA6DQo+ICsrwqDCoMKgIHJldHVybiAibiI7 DQo+ICsrwqAgY2FzZSAxMTE6DQo+ICsrwqDCoMKgIHJldHVybiAibyI7DQo+ICsrwqAgY2FzZSAx MTI6DQo+ICsrwqDCoMKgIHJldHVybiAicCI7DQo+ICsrwqAgY2FzZSAxMTM6DQo+ICsrwqDCoMKg IHJldHVybiAicSI7DQo+ICsrwqAgY2FzZSAxMTQ6DQo+ICsrwqDCoMKgIHJldHVybiAiciI7DQo+ ICsrwqAgY2FzZSAxMTU6DQo+ICsrwqDCoMKgIHJldHVybiAicyI7DQo+ICsrwqAgY2FzZSAxMTY6 DQo+ICsrwqDCoMKgIHJldHVybiAidCI7DQo+ICsrwqAgY2FzZSAxMTc6DQo+ICsrwqDCoMKgIHJl dHVybiAidSI7DQo+ICsrwqAgY2FzZSAxMTg6DQo+ICsrwqDCoMKgIHJldHVybiAidiI7DQo+ICsr wqAgY2FzZSAxMTk6DQo+ICsrwqDCoMKgIHJldHVybiAidyI7DQo+ICsrwqAgY2FzZSAxMjA6DQo+ ICsrwqDCoMKgIHJldHVybiAieCI7DQo+ICsrwqAgY2FzZSAxMjE6DQo+ICsrwqDCoMKgIHJldHVy biAieSI7DQo+ICsrwqAgY2FzZSAxMjI6DQo+ICsrwqDCoMKgIHJldHVybiAieiI7DQo+ICsrwqAg Y2FzZSAxMjM6DQo+ICsrwqDCoMKgIHJldHVybiAieyI7DQo+ICsrwqAgY2FzZSAxMjQ6DQo+ICsr wqDCoMKgIHJldHVybiAifCI7DQo+ICsrwqAgY2FzZSAxMjU6DQo+ICsrwqDCoMKgIHJldHVybiAi fSI7DQo+ICsrwqAgY2FzZSAxMjY6DQo+ICsrwqDCoMKgIHJldHVybiAifiI7DQo+ICsrwqAgY2Fz ZSAxMjc6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4N0YiOw0KPiArK8KgIGNhc2UgMTI4Og0KPiAr K8KgwqDCoCByZXR1cm4gIlxceDgwIjsNCj4gKyvCoCBjYXNlIDEyOToNCj4gKyvCoMKgwqAgcmV0 dXJuICJcXHg4MSI7DQo+ICsrwqAgY2FzZSAxMzA6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4ODIi Ow0KPiArK8KgIGNhc2UgMTMxOg0KPiArK8KgwqDCoCByZXR1cm4gIlxceDgzIjsNCj4gKyvCoCBj YXNlIDEzMjoNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHg4NCI7DQo+ICsrwqAgY2FzZSAxMzM6DQo+ ICsrwqDCoMKgIHJldHVybiAiXFx4ODUiOw0KPiArK8KgIGNhc2UgMTM0Og0KPiArK8KgwqDCoCBy ZXR1cm4gIlxceDg2IjsNCj4gKyvCoCBjYXNlIDEzNToNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHg4 NyI7DQo+ICsrwqAgY2FzZSAxMzY6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4ODgiOw0KPiArK8Kg IGNhc2UgMTM3Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceDg5IjsNCj4gKyvCoCBjYXNlIDEzODoN Cj4gKyvCoMKgwqAgcmV0dXJuICJcXHg4QSI7DQo+ICsrwqAgY2FzZSAxMzk6DQo+ICsrwqDCoMKg IHJldHVybiAiXFx4OEIiOw0KPiArK8KgIGNhc2UgMTQwOg0KPiArK8KgwqDCoCByZXR1cm4gIlxc eDhDIjsNCj4gKyvCoCBjYXNlIDE0MToNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHg4RCI7DQo+ICsr wqAgY2FzZSAxNDI6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4OEUiOw0KPiArK8KgIGNhc2UgMTQz Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceDhGIjsNCj4gKyvCoCBjYXNlIDE0NDoNCj4gKyvCoMKg wqAgcmV0dXJuICJcXHg5MCI7DQo+ICsrwqAgY2FzZSAxNDU6DQo+ICsrwqDCoMKgIHJldHVybiAi XFx4OTEiOw0KPiArK8KgIGNhc2UgMTQ2Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceDkyIjsNCj4g KyvCoCBjYXNlIDE0NzoNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHg5MyI7DQo+ICsrwqAgY2FzZSAx NDg6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4OTQiOw0KPiArK8KgIGNhc2UgMTQ5Og0KPiArK8Kg wqDCoCByZXR1cm4gIlxceDk1IjsNCj4gKyvCoCBjYXNlIDE1MDoNCj4gKyvCoMKgwqAgcmV0dXJu ICJcXHg5NiI7DQo+ICsrwqAgY2FzZSAxNTE6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4OTciOw0K PiArK8KgIGNhc2UgMTUyOg0KPiArK8KgwqDCoCByZXR1cm4gIlxceDk4IjsNCj4gKyvCoCBjYXNl IDE1MzoNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHg5OSI7DQo+ICsrwqAgY2FzZSAxNTQ6DQo+ICsr wqDCoMKgIHJldHVybiAiXFx4OUEiOw0KPiArK8KgIGNhc2UgMTU1Og0KPiArK8KgwqDCoCByZXR1 cm4gIlxceDlCIjsNCj4gKyvCoCBjYXNlIDE1NjoNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHg5QyI7 DQo+ICsrwqAgY2FzZSAxNTc6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4OUQiOw0KPiArK8KgIGNh c2UgMTU4Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceDlFIjsNCj4gKyvCoCBjYXNlIDE1OToNCj4g KyvCoMKgwqAgcmV0dXJuICJcXHg5RiI7DQo+ICsrwqAgY2FzZSAxNjA6DQo+ICsrwqDCoMKgIHJl dHVybiAiXFx4QTAiOw0KPiArK8KgIGNhc2UgMTYxOg0KPiArK8KgwqDCoCByZXR1cm4gIlxceEEx IjsNCj4gKyvCoCBjYXNlIDE2MjoNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHhBMiI7DQo+ICsrwqAg Y2FzZSAxNjM6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4QTMiOw0KPiArK8KgIGNhc2UgMTY0Og0K PiArK8KgwqDCoCByZXR1cm4gIlxceEE0IjsNCj4gKyvCoCBjYXNlIDE2NToNCj4gKyvCoMKgwqAg cmV0dXJuICJcXHhBNSI7DQo+ICsrwqAgY2FzZSAxNjY6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4 QTYiOw0KPiArK8KgIGNhc2UgMTY3Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceEE3IjsNCj4gKyvC oCBjYXNlIDE2ODoNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHhBOCI7DQo+ICsrwqAgY2FzZSAxNjk6 DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4QTkiOw0KPiArK8KgIGNhc2UgMTcwOg0KPiArK8KgwqDC oCByZXR1cm4gIlxceEFBIjsNCj4gKyvCoCBjYXNlIDE3MToNCj4gKyvCoMKgwqAgcmV0dXJuICJc XHhBQiI7DQo+ICsrwqAgY2FzZSAxNzI6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4QUMiOw0KPiAr K8KgIGNhc2UgMTczOg0KPiArK8KgwqDCoCByZXR1cm4gIlxceEFEIjsNCj4gKyvCoCBjYXNlIDE3 NDoNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHhBRSI7DQo+ICsrwqAgY2FzZSAxNzU6DQo+ICsrwqDC oMKgIHJldHVybiAiXFx4QUYiOw0KPiArK8KgIGNhc2UgMTc2Og0KPiArK8KgwqDCoCByZXR1cm4g IlxceEIwIjsNCj4gKyvCoCBjYXNlIDE3NzoNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHhCMSI7DQo+ ICsrwqAgY2FzZSAxNzg6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4QjIiOw0KPiArK8KgIGNhc2Ug MTc5Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceEIzIjsNCj4gKyvCoCBjYXNlIDE4MDoNCj4gKyvC oMKgwqAgcmV0dXJuICJcXHhCNCI7DQo+ICsrwqAgY2FzZSAxODE6DQo+ICsrwqDCoMKgIHJldHVy biAiXFx4QjUiOw0KPiArK8KgIGNhc2UgMTgyOg0KPiArK8KgwqDCoCByZXR1cm4gIlxceEI2IjsN Cj4gKyvCoCBjYXNlIDE4MzoNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHhCNyI7DQo+ICsrwqAgY2Fz ZSAxODQ6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4QjgiOw0KPiArK8KgIGNhc2UgMTg1Og0KPiAr K8KgwqDCoCByZXR1cm4gIlxceEI5IjsNCj4gKyvCoCBjYXNlIDE4NjoNCj4gKyvCoMKgwqAgcmV0 dXJuICJcXHhCQSI7DQo+ICsrwqAgY2FzZSAxODc6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4QkIi Ow0KPiArK8KgIGNhc2UgMTg4Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceEJDIjsNCj4gKyvCoCBj YXNlIDE4OToNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHhCRCI7DQo+ICsrwqAgY2FzZSAxOTA6DQo+ ICsrwqDCoMKgIHJldHVybiAiXFx4QkUiOw0KPiArK8KgIGNhc2UgMTkxOg0KPiArK8KgwqDCoCBy ZXR1cm4gIlxceEJGIjsNCj4gKyvCoCBjYXNlIDE5MjoNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHhD MCI7DQo+ICsrwqAgY2FzZSAxOTM6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4QzEiOw0KPiArK8Kg IGNhc2UgMTk0Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceEMyIjsNCj4gKyvCoCBjYXNlIDE5NToN Cj4gKyvCoMKgwqAgcmV0dXJuICJcXHhDMyI7DQo+ICsrwqAgY2FzZSAxOTY6DQo+ICsrwqDCoMKg IHJldHVybiAiXFx4QzQiOw0KPiArK8KgIGNhc2UgMTk3Og0KPiArK8KgwqDCoCByZXR1cm4gIlxc eEM1IjsNCj4gKyvCoCBjYXNlIDE5ODoNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHhDNiI7DQo+ICsr wqAgY2FzZSAxOTk6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4QzciOw0KPiArK8KgIGNhc2UgMjAw Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceEM4IjsNCj4gKyvCoCBjYXNlIDIwMToNCj4gKyvCoMKg wqAgcmV0dXJuICJcXHhDOSI7DQo+ICsrwqAgY2FzZSAyMDI6DQo+ICsrwqDCoMKgIHJldHVybiAi XFx4Q0EiOw0KPiArK8KgIGNhc2UgMjAzOg0KPiArK8KgwqDCoCByZXR1cm4gIlxceENCIjsNCj4g KyvCoCBjYXNlIDIwNDoNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHhDQyI7DQo+ICsrwqAgY2FzZSAy MDU6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4Q0QiOw0KPiArK8KgIGNhc2UgMjA2Og0KPiArK8Kg wqDCoCByZXR1cm4gIlxceENFIjsNCj4gKyvCoCBjYXNlIDIwNzoNCj4gKyvCoMKgwqAgcmV0dXJu ICJcXHhDRiI7DQo+ICsrwqAgY2FzZSAyMDg6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4RDAiOw0K PiArK8KgIGNhc2UgMjA5Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceEQxIjsNCj4gKyvCoCBjYXNl IDIxMDoNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHhEMiI7DQo+ICsrwqAgY2FzZSAyMTE6DQo+ICsr wqDCoMKgIHJldHVybiAiXFx4RDMiOw0KPiArK8KgIGNhc2UgMjEyOg0KPiArK8KgwqDCoCByZXR1 cm4gIlxceEQ0IjsNCj4gKyvCoCBjYXNlIDIxMzoNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHhENSI7 DQo+ICsrwqAgY2FzZSAyMTQ6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4RDYiOw0KPiArK8KgIGNh c2UgMjE1Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceEQ3IjsNCj4gKyvCoCBjYXNlIDIxNjoNCj4g KyvCoMKgwqAgcmV0dXJuICJcXHhEOCI7DQo+ICsrwqAgY2FzZSAyMTc6DQo+ICsrwqDCoMKgIHJl dHVybiAiXFx4RDkiOw0KPiArK8KgIGNhc2UgMjE4Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceERB IjsNCj4gKyvCoCBjYXNlIDIxOToNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHhEQiI7DQo+ICsrwqAg Y2FzZSAyMjA6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4REMiOw0KPiArK8KgIGNhc2UgMjIxOg0K PiArK8KgwqDCoCByZXR1cm4gIlxceEREIjsNCj4gKyvCoCBjYXNlIDIyMjoNCj4gKyvCoMKgwqAg cmV0dXJuICJcXHhERSI7DQo+ICsrwqAgY2FzZSAyMjM6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4 REYiOw0KPiArK8KgIGNhc2UgMjI0Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceEUwIjsNCj4gKyvC oCBjYXNlIDIyNToNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHhFMSI7DQo+ICsrwqAgY2FzZSAyMjY6 DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4RTIiOw0KPiArK8KgIGNhc2UgMjI3Og0KPiArK8KgwqDC oCByZXR1cm4gIlxceEUzIjsNCj4gKyvCoCBjYXNlIDIyODoNCj4gKyvCoMKgwqAgcmV0dXJuICJc XHhFNCI7DQo+ICsrwqAgY2FzZSAyMjk6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4RTUiOw0KPiAr K8KgIGNhc2UgMjMwOg0KPiArK8KgwqDCoCByZXR1cm4gIlxceEU2IjsNCj4gKyvCoCBjYXNlIDIz MToNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHhFNyI7DQo+ICsrwqAgY2FzZSAyMzI6DQo+ICsrwqDC oMKgIHJldHVybiAiXFx4RTgiOw0KPiArK8KgIGNhc2UgMjMzOg0KPiArK8KgwqDCoCByZXR1cm4g IlxceEU5IjsNCj4gKyvCoCBjYXNlIDIzNDoNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHhFQSI7DQo+ ICsrwqAgY2FzZSAyMzU6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4RUIiOw0KPiArK8KgIGNhc2Ug MjM2Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceEVDIjsNCj4gKyvCoCBjYXNlIDIzNzoNCj4gKyvC oMKgwqAgcmV0dXJuICJcXHhFRCI7DQo+ICsrwqAgY2FzZSAyMzg6DQo+ICsrwqDCoMKgIHJldHVy biAiXFx4RUUiOw0KPiArK8KgIGNhc2UgMjM5Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceEVGIjsN Cj4gKyvCoCBjYXNlIDI0MDoNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHhGMCI7DQo+ICsrwqAgY2Fz ZSAyNDE6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4RjEiOw0KPiArK8KgIGNhc2UgMjQyOg0KPiAr K8KgwqDCoCByZXR1cm4gIlxceEYyIjsNCj4gKyvCoCBjYXNlIDI0MzoNCj4gKyvCoMKgwqAgcmV0 dXJuICJcXHhGMyI7DQo+ICsrwqAgY2FzZSAyNDQ6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4RjQi Ow0KPiArK8KgIGNhc2UgMjQ1Og0KPiArK8KgwqDCoCByZXR1cm4gIlxceEY1IjsNCj4gKyvCoCBj YXNlIDI0NjoNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHhGNiI7DQo+ICsrwqAgY2FzZSAyNDc6DQo+ ICsrwqDCoMKgIHJldHVybiAiXFx4RjciOw0KPiArK8KgIGNhc2UgMjQ4Og0KPiArK8KgwqDCoCBy ZXR1cm4gIlxceEY4IjsNCj4gKyvCoCBjYXNlIDI0OToNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHhG OSI7DQo+ICsrwqAgY2FzZSAyNTA6DQo+ICsrwqDCoMKgIHJldHVybiAiXFx4RkEiOw0KPiArK8Kg IGNhc2UgMjUxOg0KPiArK8KgwqDCoCByZXR1cm4gIlxceEZCIjsNCj4gKyvCoCBjYXNlIDI1MjoN Cj4gKyvCoMKgwqAgcmV0dXJuICJcXHhGQyI7DQo+ICsrwqAgY2FzZSAyNTM6DQo+ICsrwqDCoMKg IHJldHVybiAiXFx4RkQiOw0KPiArK8KgIGNhc2UgMjU0Og0KPiArK8KgwqDCoCByZXR1cm4gIlxc eEZFIjsNCj4gKyvCoCBjYXNlIDI1NToNCj4gKyvCoMKgwqAgcmV0dXJuICJcXHhGRiI7DQo+ICsr wqAgZGVmYXVsdDoNCj4gKyvCoMKgwqAgYXNzZXJ0KDApOyAvKiBuZXZlciBnZXRzIGhlcmUgKi8N Cj4gKyvCoMKgwqAgcmV0dXJuICJkZWFkIGNvZGUiOw0KPiArK8KgIH0NCj4gKyvCoCBhc3NlcnQo MCk7IC8qIG5ldmVyIGdldHMgaGVyZSAqLw0KPiArK30NCj4gKysNCj4gKysjZW5kaWYgLyogWE1M X0RURCAqLw0KPiArKw0KPiArK3N0YXRpYyB1bnNpZ25lZCBsb25nDQo+ICsrZ2V0RGVidWdMZXZl bChjb25zdCBjaGFyICp2YXJpYWJsZU5hbWUsIHVuc2lnbmVkIGxvbmcNCj4gZGVmYXVsdERlYnVn TGV2ZWwpIHsNCj4gKyvCoCBjb25zdCBjaGFyICpjb25zdCB2YWx1ZU9yTnVsbCA9IGdldGVudih2 YXJpYWJsZU5hbWUpOw0KPiArK8KgIGlmICh2YWx1ZU9yTnVsbCA9PSBOVUxMKSB7DQo+ICsrwqDC oMKgIHJldHVybiBkZWZhdWx0RGVidWdMZXZlbDsNCj4gKyvCoCB9DQo+ICsrwqAgY29uc3QgY2hh ciAqY29uc3QgdmFsdWUgPSB2YWx1ZU9yTnVsbDsNCj4gKysNCj4gKyvCoCBlcnJubyA9IDA7DQo+ ICsrwqAgY2hhciAqYWZ0ZXJWYWx1ZSA9IChjaGFyICopdmFsdWU7DQo+ICsrwqAgdW5zaWduZWQg bG9uZyBkZWJ1Z0xldmVsID0gc3RydG91bCh2YWx1ZSwgJmFmdGVyVmFsdWUsIDEwKTsNCj4gKyvC oCBpZiAoKGVycm5vICE9IDApIHx8IChhZnRlclZhbHVlWzBdICE9ICdcMCcpKSB7DQo+ICsrwqDC oMKgIGVycm5vID0gMDsNCj4gKyvCoMKgwqAgcmV0dXJuIGRlZmF1bHREZWJ1Z0xldmVsOw0KPiAr K8KgIH0NCj4gKysNCj4gKyvCoCByZXR1cm4gZGVidWdMZXZlbDsNCj4gKyt9DQo+ICstLSANCj4g KzIuMzIuMA0KPiArDQo+IGRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBh dF8yLjIuOS5iYiBiL21ldGEvcmVjaXBlcy0NCj4gY29yZS9leHBhdC9leHBhdF8yLjIuOS5iYg0K PiBpbmRleCA4ZjNkYjQxMzUyLi4zYWY0NTdiMmFmIDEwMDY0NA0KPiAtLS0gYS9tZXRhL3JlY2lw ZXMtY29yZS9leHBhdC9leHBhdF8yLjIuOS5iYg0KPiArKysgYi9tZXRhL3JlY2lwZXMtY29yZS9l eHBhdC9leHBhdF8yLjIuOS5iYg0KPiBAQCAtNiw4ICs2LDkgQEAgTElDRU5TRSA9ICJNSVQiDQo+ IMKgDQo+IMKgTElDX0ZJTEVTX0NIS1NVTSA9DQo+ICJmaWxlOi8vQ09QWUlORzttZDU9NWI4NjIw ZDk4ZTQ5NzcyZDk1ZmMxZDI5MWMyNmFhNzkiDQo+IMKgDQo+IC1TUkNfVVJJID0gIiR7U09VUkNF Rk9SR0VfTUlSUk9SfS9leHBhdC9leHBhdC0ke1BWfS50YXIuYnoyIFwNCj4gK1NSQ19VUkkgPSAi JHtTT1VSQ0VGT1JHRV9NSVJST1J9L2V4cGF0L2V4cGF0LSR7UFZ9LVJFTkFNRUQtDQo+IFZVTE5F UkFCTEUtDQo+IFBMRUFTRS1VU0UtMi40LjEtSU5TVEVBRC50YXIuYnoyIFwNCj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBmaWxlOi8vbGlidG9vbC10YWcucGF0Y2jCoFwNCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgIGZpbGU6Ly8wMDAxLWV4cGF0LUJhY2twb3J0LWZpeC1mb3ItQ1ZFLTIwMTMtMDM0 MC5wYXRjaMKgXA0KPiDCoMKgwqDCoMKgwqDCoMKgwqAgIg0KPiDCoA0KPiDCoFNSQ19VUklbbWQ1 c3VtXSA9ICI4NzVhMmMyZmYzZThlYjllNWE1Y2Q2MmRiMjAzM2FiNSINCj4gDQo+IA0KPiANCi0t LS0tQkVHSU4gUEdQIFNJR05BVFVSRS0tLS0tDQoNCmlRRXpCQUVCQ0FBZEZpRUU0V3lQTUlDNUFw NCtPb28xWWdxZXcwN1ZNTlVGQW1ES0R5Z0FDZ2tRWWdxZXcwN1YNCk1OVnBIQWdBanhEaUhKKzBa bCt4eEJSS2tEM0UzYkdsS2x3c240TU9sUDFIV041empDb211QWRueVF3dlRtQWoNCjJIUkR4R1VR L1puWFVsU0RiTnpIU2dyRzJJRGExZGxCV0dSQVNSWDNZeElYVEoxVUw1TFdIdXByREwyUDN4TnAN ClhNYUFlWDJhODZnSktEQkE3L1hYa3JiVnVDYWZqR1o2cjArdXJ2Y3FwSkZPMUZSMVFiMGFrbEFl L3BFVnRFWVMNClhjTjJ0V2ZxZU95OUhCT3ZMSUJmRndrUkUwN29CZnIwZVd4S3pFQ09xMU1QT1VZ cjlrL0U0THdxR0VXY3JPcnENCnJKTTJVMDdFc3UwTmtRUVNQWlhQK05UWU85djV6dFpqQ0x6T2Iw ZUk3dEdiZHVXM2F5N2ZPbGF3ZlA4ZmdpT04NCllWTU96Y3ZBOURGT0s3WjN1cjNuQ0w3TVduTjNP QT09DQo9SkZaWQ0KLS0tLS1FTkQgUEdQIFNJR05BVFVSRS0tLS0tDQo=