From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-114.mimecast.com (us-smtp-delivery-114.mimecast.com [170.10.133.114]) by sourceware.org (Postfix) with ESMTPS id 390663858D3C for ; Tue, 12 Sep 2023 13:45:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 390663858D3C Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=labware.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=labware.com Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2104.outbound.protection.outlook.com [104.47.55.104]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-450-mBAlFKN_PsOP8dnX5ZBhMg-1; Tue, 12 Sep 2023 09:45:33 -0400 X-MC-Unique: mBAlFKN_PsOP8dnX5ZBhMg-1 Received: from SA0PR17MB4314.namprd17.prod.outlook.com (2603:10b6:806:e7::16) by CY8PR17MB6651.namprd17.prod.outlook.com (2603:10b6:930:7e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6768.38; Tue, 12 Sep 2023 13:45:29 +0000 Received: from SA0PR17MB4314.namprd17.prod.outlook.com ([fe80::30eb:4c4a:cb5a:dd91]) by SA0PR17MB4314.namprd17.prod.outlook.com ([fe80::30eb:4c4a:cb5a:dd91%4]) with mapi id 15.20.6768.036; Tue, 12 Sep 2023 13:45:29 +0000 From: =?utf-8?B?SmFuIFZyYW7DvQ==?= To: "gdb-patches@sourceware.org" , "aburgess@redhat.com" Subject: Re: [PATCH 2/2] gdb/python: implement support for sending custom MI async notifications Thread-Topic: [PATCH 2/2] gdb/python: implement support for sending custom MI async notifications Thread-Index: AQHZ4pg2zA51+UGLX0GD3mZiKN9az7AVrz6AgAFbroCAACQcgIAACo4A Date: Tue, 12 Sep 2023 13:45:29 +0000 Message-ID: <74e472763ab2a0c34353f2767606408ee7e92862.camel@labware.com> References: <20230908210504.89194-1-jan.vrany@labware.com> <20230908210504.89194-2-jan.vrany@labware.com> <877cowlrv8.fsf@redhat.com> <87ttrzilpe.fsf@redhat.com> In-Reply-To: <87ttrzilpe.fsf@redhat.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SA0PR17MB4314:EE_|CY8PR17MB6651:EE_ x-ms-office365-filtering-correlation-id: 3147e353-3d05-4a0b-0645-08dbb3968710 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0 x-microsoft-antispam-message-info: 4osyakBup5xZPUHqCC9PixmfnVVxtTW5W3/SrY2whMf3PVk7Ab/f+6SqGOfUjf8WC8ortef3ycClM9bV3dDUFcf2yUsF/2YHmUEYDeqn42/qyB2uupqD8gMRj5U9y0dzHWhSIGDDsXnZAvI8skthC9da0Gerv7ZEOCRsbAan9lL5dUQATycWRr4o1mq6pzP+mqQZp+ZW6/IQho1mYXpeWS+CzslwQAV4U40TIFqczaS9o2tYhHVIM7ZYyBEdBpvVZrnqunIFeO4037KmAdnbPuSVk2tG81jLvG8kQyAip9bC6J/6sZS99BXenhvzb2F1aa/sEUJZDNx3FYjKcODJIjAjRmj7O6AxDcaGudzr0VtM35d/NLFVKY6zfe5Qgg5oXiRGb5GQAUf3h5GRKWP1VJWgnMwZ3VstuPtaP4jHw9ou7Yv3kpFfzgOpOTBIq9FtIyDXwICQShcRidP022+6dpjSwEZxn9ubcwUVT/LhNZ1YSI9bna69u5fjnnLC1yfM1cwCliXgjICf8oAC0AFdnlkQQ/x5WuNOUV0+14eEndVWuQzr3PZyxRwgQ/E02Q4VsCXCg5whSmIuAgderAv2SRt3saTuzBe6IqJk/KcPkEvx6piuaQZE6bteTmiZ+V/x x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA0PR17MB4314.namprd17.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(346002)(136003)(396003)(39850400004)(376002)(366004)(451199024)(186009)(1800799009)(8676002)(8936002)(86362001)(66899024)(5660300002)(15650500001)(30864003)(2906002)(85182001)(36756003)(38070700005)(38100700002)(83380400001)(71200400001)(2616005)(6506007)(6486002)(6512007)(478600001)(122000001)(26005)(66476007)(316002)(66446008)(64756008)(66556008)(66946007)(91956017)(110136005)(76116006)(41300700001)(2004002);DIR:OUT;SFP:1101 x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cE42TzJDZFhDek9kTWpsUHhWUGI0MGNvYnVLRG5ybVhUeURCQlBONEh4aFc2?= =?utf-8?B?ampINEV5RVI5cVpndjc3T1l5YzUzVElGODdtSkUwdk9HSy9GMFBBRlBqTExl?= =?utf-8?B?NFYrK01XQlA2cDNwRHlxUjRFZVlESkk2Ni8vL1N4S3ZVeG5wOXpydW4rL1Nz?= =?utf-8?B?Uk50WlVRWmRPWW9xMGNyWGE2emI5OXFrb3Rmeko1TERhOUNzNGR1VzBCTDZO?= =?utf-8?B?cEY0Y1BTMlpZRmFFZ3VwZ09EUVh0NFFGenBBYWd4eXNSRDhBektzY3BpRW1j?= =?utf-8?B?SzdiVEh0MlMvSkNCUjZTVXJZUWVZYW54KzVWWDh1cnRyaW5ldVZjSlpMMHFu?= =?utf-8?B?TXRhaWxGWWxGT292QzNwdTNPUWsvOXBzUDE5b0NFK1A3WG1JZ0JwSEZNbGVY?= =?utf-8?B?MXZlRGxDQTZEVXBTVHdxTEh6eXl3dzJwMVFXMm1YSVJwcExmMk85SEVTcHVo?= =?utf-8?B?cFJCMUptRmNYWEkrNTRQNHViTys1QXF1MHlTdTRBOE53bnp4ZFR0N3MwaVp5?= =?utf-8?B?THRpd2hMNk1QUWZYRGJyT3FzRFRKMjdzTHBMNys2YzNmQW9TU0lDRlRkdHNY?= =?utf-8?B?eEtVOWtKMmdGVFNuQjVDVTA4dUNJcytySWNVN25yMlF1WE5hOE9CS0pMUXhP?= =?utf-8?B?UWdtdE9PMWRUOVlud2ZWOFM4YkxjV29YaFcrQWowQ0tFSFFGbXlRd08rM1JT?= =?utf-8?B?dUVJbk8vU0VTWWQvYURITGhRM29rTlFvdXFlclo2em92U3BkTkJFa1QzOGxa?= =?utf-8?B?MktBOEwxUmw0UWhBSStrK0F0TEtEY2R4anJGKzlmRU5rVktudEttWjNqMmtB?= =?utf-8?B?L25CS3N4QUgwVDlLQlJhWUpETFF2SW1VeDNQRlFsMkNaRlhKZTVtQjlLNHVF?= =?utf-8?B?a21aTlhkTUpxNGdnU1lzaVdFUE1FTDMzU2NYTHNwWlFaMnJCV09KaDVETGZw?= =?utf-8?B?N0Erd29vakpQWkk1cUxtWk1jQ24rcWVpaU05UGlENGFPTnVMc0FIeHN2RmxS?= =?utf-8?B?MFh1LzM2cnpCVmo5TlJ1b1d4bGRLUHVMMXovclJUQmN5TkRNbW1MNmRvbFVC?= =?utf-8?B?Z21ZNTRuRXVCa3RWeSsyT2tlUmFpbnZsSU5pNXVCWFpKUytyR05Wd2N0cE5q?= =?utf-8?B?dHZ0dlVXMUVLNTBXMnpvbUJ6VHkyQ1dqWDFvSUZ1VEI4ck9uTlVHcGtRUjBq?= =?utf-8?B?WHo2V0JNVzczVmpTNXprbG5yaXhsTzdDYlROK0xObUFwam4vc2F0eUVIWHJl?= =?utf-8?B?b09ORy9GekdJellmNHRORS93ZG5DTGJHVEs3NDlyTUdGdy9MOWUrdjhlTkEv?= =?utf-8?B?VGhmYjhGR2lRc1l2WGdLMWlTM1YxdzlXVGRBM3YwaTczMUNBenFVb3JTREw1?= =?utf-8?B?K1R1K1VEL3RQSlB6WXo3SmRuNHNjbWlNdFVWM0tpc3BDNDZmUWovRVp0OWZt?= =?utf-8?B?VVBiZHdHU1RrL055WHNqdFpZaW5MbVpiMnBmZkpEUm96cWFiOFBsNVNIdEZu?= =?utf-8?B?N2c5RC9ob2svMGJlclpKM1pOZC9NMnI3U2lNWjRlNEZpWjhlTVRXTVBkVVpy?= =?utf-8?B?TTVJUGREMGJQTkRxR29WR3AyYU0wTFJpYlpxdlZtd2MyZ0lrVUVJRXVaK3pR?= =?utf-8?B?bHJkN3Z0eUUyY1Y5YksxT28yaG1WRTNtRThLUkJwaS8xWEVhdUFNVXJuOE5m?= =?utf-8?B?YjBKYmJMTTVUSWhoakhXeGo2TVkreDAwcWQwRHJSTXlmeGs3UlBzQTZRcEh2?= =?utf-8?B?K2x1b29JdWxvMVIzNDEzMTkrOGxCZnJSOTlkWlF4ZW5zZUFjTyt5V0hIVCs2?= =?utf-8?B?Qnd3KzNEcGlYVVljcFlpajJYRzR1TGVmbGt6c2J3cXRaVm9kOFRUVG8yc3B0?= =?utf-8?B?d01IV0hTOXZ6VnpURWpKdlN3NTM4T3I5UG1yWXhlZkxWSzhmMlcrcE9jNHlR?= =?utf-8?B?Mm12dWduTkpxaUZ3MFBYZG8zTXdhNkpmeXZXTDBXNTR3RkVHMXhGTGEwTC84?= =?utf-8?B?cGRNTnpyS0cyZWp3U3lhNVpBZC9FWklGRmg3L0ptOFVWYzdoOHdMRzhwY2hk?= =?utf-8?B?NFB4cFdrMHpJbHlHMTFzQkJLaTNWa1NxdDlRUTh4a0Z6cEJUa3Fsckt6MHp3?= =?utf-8?B?YjVrbWlFNk1TM1Zja3BqMnVyVTJLVGhtYzJDVDI3c1NnU0hVVWI1ZFVlVit4?= =?utf-8?B?Umc9PQ==?= MIME-Version: 1.0 X-OriginatorOrg: labware.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SA0PR17MB4314.namprd17.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3147e353-3d05-4a0b-0645-08dbb3968710 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Sep 2023 13:45:29.5038 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b5db0322-1aa0-4c0a-859c-ad0f96966f4c X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: K+VG5iXF623iUzQENh7l8G2F+pLWul/cY52VeZs9OTscMMP3RgraUl8SD7rdmYXfgb1+5Gt/QYTmVcI1s40agA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR17MB6651 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: labware.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-ID: <068A1EB93FD7B044B9C2DEB06F559B98@namprd17.prod.outlook.com> Content-Transfer-Encoding: base64 X-Spam-Status: No, score=-12.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_STATUS,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: T24gVHVlLCAyMDIzLTA5LTEyIGF0IDE0OjA3ICswMTAwLCBBbmRyZXcgQnVyZ2VzcyB3cm90ZToN Cj4gSmFuIFZyYW7DvSA8SmFuLlZyYW55QGxhYndhcmUuY29tPiB3cml0ZXM6DQo+IA0KPiA+IE9u IE1vbiwgMjAyMy0wOS0xMSBhdCAxNToxNCArMDEwMCwgQW5kcmV3IEJ1cmdlc3Mgd3JvdGU6DQo+ ID4gPiBKYW4gVnJhbnkgdmlhIEdkYi1wYXRjaGVzIDxnZGItcGF0Y2hlc0Bzb3VyY2V3YXJlLm9y Zz4gd3JpdGVzOg0KPiA+ID4gDQo+ID4gPiA+IFRoaXMgY29tbWl0IGFkZHMgYSBuZXcgUHl0aG9u IGZ1bmN0aW9uLCBnZGIubm90aWZ5X21pLCB0aGF0IGNhbiBiZSB1c2VkDQo+ID4gPiA+IHRvIGVt aXQgY3VzdG9tIGFzeW5jIG5vdGlmaWNhdGlvbiB0byBNSSBjaGFubmVsLiAgVGhpcyBjYW4gYmUg dXNlZCwgYW1vbmcNCj4gPiA+ID4gb3RoZXIgdGhpbmdzLCB0byBpbXBsZW1lbnQgbm90aWZpY2F0 aW9ucyBhYm91dCBldmVudHMgTUkgZG9lcyBub3Qgc3VwcG9ydCwNCj4gPiA+ID4gc3VjaCBhcyBy ZW1vdGUgY29ubmVjdGlvbiBjbG9zZWQgb3IgcmVnaXN0ZXIgY2hhbmdlLg0KPiA+ID4gPiAtLS0N Cj4gPiA+ID4gIGdkYi9ORVdTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMg KysNCj4gPiA+ID4gIGdkYi9kb2MvcHl0aG9uLnRleGkgICAgICAgICAgICAgICAgICAgICAgIHwg MzggKysrKysrKysrKysrKysrKysrDQo+ID4gPiA+ICBnZGIvcHl0aG9uL3B5LW1pLmMgICAgICAg ICAgICAgICAgICAgICAgICB8IDQ5ICsrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gPiA+ICBn ZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oICAgICAgICAgICAgICB8ICAzICsrDQo+ID4gPiA+ ICBnZGIvcHl0aG9uL3B5dGhvbi5jICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrDQo+ID4g PiA+ICBnZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktbWktbm90aWZ5LmV4cCB8IDQ3ICsrKysr KysrKysrKysrKysrKysrKysNCj4gPiA+ID4gIDYgZmlsZXMgY2hhbmdlZCwgMTQ0IGluc2VydGlv bnMoKykNCj4gPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktbWktbm90aWZ5LmV4cA0KPiA+ID4gPiANCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2dkYi9O RVdTIGIvZ2RiL05FV1MNCj4gPiA+ID4gaW5kZXggOThmZjAwZDVlZmMuLjRhMWYzODNhNjY2IDEw MDY0NA0KPiA+ID4gPiAtLS0gYS9nZGIvTkVXUw0KPiA+ID4gPiArKysgYi9nZGIvTkVXUw0KPiA+ ID4gPiBAQCAtMjg2LDYgKzI4Niw5IEBAIGluZm8gbWFpbg0KPiA+ID4gPiAgICAgICBtaWdodCBi ZSBhcnJheS0gb3Igc3RyaW5nLWxpa2UsIGV2ZW4gaWYgdGhleSBkbyBub3QgaGF2ZSB0aGUNCj4g PiA+ID4gICAgICAgY29ycmVzcG9uZGluZyB0eXBlIGNvZGUuDQo+ID4gPiA+ICANCj4gPiA+ID4g KyAgKiogTmV3IGZ1bmN0aW9uIGdkYi5ub3RpZnlfbWkoTkFNRSwgREFUQSksIHRoYXQgZW1pdHMg Y3VzdG9tDQo+ID4gPiA+ICsgICAgIEdEQi9NSSBhc3luYyBub3RpZmljYXRpb24uDQo+ID4gPiA+ ICsNCj4gPiA+ID4gICoqKiBDaGFuZ2VzIGluIEdEQiAxMw0KPiA+ID4gPiAgDQo+ID4gPiA+ICAq IE1JIHZlcnNpb24gMSBpcyBkZXByZWNhdGVkLCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIEdEQiAx NC4NCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2dkYi9kb2MvcHl0aG9uLnRleGkgYi9nZGIvZG9jL3B5 dGhvbi50ZXhpDQo+ID4gPiA+IGluZGV4IGU5OTM2OTkxYzQ5Li5jYjIwNzM5NzZiYSAxMDA2NDQN Cj4gPiA+ID4gLS0tIGEvZ2RiL2RvYy9weXRob24udGV4aQ0KPiA+ID4gPiArKysgYi9nZGIvZG9j L3B5dGhvbi50ZXhpDQo+ID4gPiA+IEBAIC00NzA0LDYgKzQ3MDQsNDQgQEAgSGVyZSBpcyBob3cg dGhpcyB3b3JrcyB1c2luZyB0aGUgY29tbWFuZHMgZnJvbSB0aGUgZXhhbXBsZSBhYm92ZToNCj4g PiA+ID4gIEB7J3N0cmluZyc6ICdhYmMsIGRlZiwgZ2hpJ0B9DQo+ID4gPiA+ICBAZW5kIHNtYWxs ZXhhbXBsZQ0KPiA+ID4gPiAgDQo+ID4gPiA+ICtAbm9kZSBHREIvTUkgTm90aWZpY2F0aW9ucyBJ biBQeXRob24NCj4gPiA+ID4gK0BzdWJzdWJzZWN0aW9uIEBzY3tnZGIvbWl9IE5vdGlmaWNhdGlv bnMgSW4gUHl0aG9uDQo+ID4gPiA+ICsNCj4gPiA+ID4gK0BjaW5kZXggTUkgbm90aWZpY2F0aW9u cyBpbiBweXRob24NCj4gPiA+ID4gK0BjaW5kZXggbm90aWZpY2F0aW9ucyBpbiBweXRob24sIEdE Qi9NSQ0KPiA+ID4gPiArQGNpbmRleCBweXRob24gbm90aWZpY2F0aW9ucywgR0RCL01JDQo+ID4g PiA+ICsNCj4gPiA+ID4gK0l0IGlzIHBvc3NpYmxlIHRvIGVtaXQgQHNje2dkYi9taX0gbm90aWZp Y2F0aW9ucyBmcm9tDQo+ID4gPiA+ICtQeXRob24uICBUaGlzIGlzIGRvbmUgd2l0aCB0aGUgQGNv ZGV7Z2RiLm5vdGlmeV9taX0gZnVuY3Rpb24uDQo+ID4gPiA+ICsNCj4gPiA+ID4gK0BkZWZ1biBn ZGIubm90aWZ5X21pIChuYW1lICwgZGF0YSkNCj4gPiA+ID4gK0VtaXQgYSBAc2N7Z2RiL21pfSBh c3luY2hyb25vdXMgbm90aWZpY2F0aW9uLiAgQHZhcntuYW1lfSBpcyB0aGUgbmFtZSBvZiB0aGUN Cj4gPiA+ID4gK25vdGlmaWNhdGlvbiwgYSBzdHJpbmcuICBAdmFye2RhdGF9IGFyZSBhZGRpdGlv bmFsIHZhbHVlcyBlbWl0dGVkIHdpdGggdGhlIG5vdGlmaWNhdGlvbiwgcGFzc2VkDQo+ID4gPiAN Cj4gPiA+IEkgdGhpbmsgdGhpcyByZWFkcyBiZXR0ZXI6DQo+ID4gPiANCj4gPiA+ICAgQHZhcntk YXRhfSBpcyBhbnkgYWRkaXRpb25hbCBkYXRhIHRvIGJlIGVtaXR0ZWQgd2l0aCB0aGUgbm90aWZp Y2F0aW9uLA0KPiA+ID4gICBwYXNzZWQgYXMgYSBQeXRob24gZGljdGlvbmFyeS4NCj4gPiA+IA0K PiA+ID4gRWxpIGFscmVhZHkgYXNrZWQgYWJvdXQgd2hpY2ggdmFsdWVzIG9mIEB2YXJ7bmFtZX0g YXJlIHZhbGlkLiAgSSBjYW4gc2VlDQo+ID4gPiBmcm9tIHRoZSBjb2RlIHRoYXQgX2FueV8gdmFs dWUgaXMgYWNjZXB0ZWQsIGhvd2V2ZXIsIGEgdXNlciBzaG91bGQNCj4gPiA+IHByb2JhYmx5IGJl IGNhcmVmdWwgbm90IHRvIHJldXNlIGEgbmFtZSB0aGF0IEdEQiBhbHJlYWR5IHVzZXMgLS0gb3Ig aWYNCj4gPiA+IHRoZXkgZG8gdGhlbiB0aGV5IHNob3VsZCBlbnN1cmUgdGhhdCBhbGwgdGhlIHJl cXVpcmVkIGZpZWxkcyBhcmUNCj4gPiA+IGVtaXR0ZWQuDQo+ID4gPiANCj4gPiA+IE5vdCBzdXJl IGV4YWN0bHkgbmVlZHMgc2F5aW5nIGhlcmUsIGJ1dCB3ZSBwcm9iYWJseSBzaG91bGQgYXQgYSBt aW5pbXVtDQo+ID4gPiBpbmNsdWRlIGEgY3Jvc3MtcmVmZXJlbmNlIHRvICdHREIvTUkgQXN5bmMg UmVjb3Jkcycgc28gdXNlcnMgY2FuIGZpbmQNCj4gPiA+IHRoZSBsaXN0IG9mIG5hbWVzIHRoYXQg YXJlIGN1cnJlbnRseSBpbiB1c2UuDQo+ID4gDQo+ID4gU3VyZSwgd2lsbCBkby4gDQo+ID4gDQo+ ID4gPiANCj4gPiA+IEkgYWxzbyB3b25kZXIgaWYgd2Ugc2hvdWxkIHByb3ZpZGUgc29tZSBndWlk YW5jZSBhYm91dCBob3cgdXNlciBjcmVhdGVkDQo+ID4gPiBhc3luYyBub3RpZmljYXRpb25zIGFy ZSBuYW1lZCwgc29tZXRoaW5nIGxpa2U6DQo+ID4gPiANCj4gPiA+ICAgIlVzZXIgY3JlYXRlZCBu b3RpZmljYXRpb25zIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoIGEgJ18nIGNoYXJhY3RlciwNCj4g PiA+ICAgZS5nLiBnZGIubm90aWZ5X21pICgnX2ZvbycsIC4uLi4pIg0KPiA+ID4gDQo+ID4gPiBB bmQgdGhlbiBHREIgY2FuIHByb21pc2UgdG8gbmV2ZXIgY3JlYXRlIGFuIGludGVybmFsIEFzeW5j IHJlY29yZCB0aGF0DQo+ID4gPiBzdGFydHMgd2l0aCBhICdfJyBjaGFyYWN0ZXIuDQo+ID4gPiAN Cj4gPiA+IEknbSB0aGlua2luZzogdGhlIGV4YW1wbGUgeW91IGdpdmUgY3JlYXRlcyBhICdjb25u ZWN0aW9uLXJlbW92ZWQnIGV2ZW50LA0KPiA+ID4gYnV0IHdoYXQgaWYsIGF0IHNvbWUgZnV0dXJl IHBvaW50LCBHREIgYWN0dWFsbHksIG9mZmljaWFsbHksIGFkZHMgYQ0KPiA+ID4gY29ubmVjdGlv bi1yZW1vdmVkIGV2ZW50LCB0aGlzIGlzIGdvaW5nIHRvIGNvbmZsaWN0IHdpdGggdGhlIHVzZXIN Cj4gPiA+IGRlZmluZWQgbm90aWZpY2F0aW9uLiAgSWYgd2UgcmVxdWlyZSAob3Igc3VnZ2VzdCkg dGhhdCB1c2VyIGRlZmluZWQNCj4gPiA+IG5vdGlmaWNhdGlvbnMgYXJlIHBsYWNlZCBpbnRvIHRo ZWlyIG93biBuYW1lc3BhY2UgaW4gc29tZSB3YXksIHRoZW4gd2UNCj4gPiA+IGNhbiBlbnN1cmUg R0RCJ3MgaW50ZXJuYWwgbm90aWZpY2F0aW9ucywgYW5kIHVzZXIgbm90aWZpY2F0aW9ucyB3aWxs DQo+ID4gPiBhbHdheXMgYmUgc2VwYXJhdGUuICBXaGF0IGRvIHlvdSB0aGluaz8gIChPYnZpb3Vz bHkgJ18nIGlzIGp1c3QgdGhlDQo+ID4gPiBmaXJzdCBpZGVhIGluIG15IGhlYWQsIG90aGVyIHN0 cmF0ZWdpZXMgZXhpc3QpLg0KPiA+IA0KPiA+IEdvb2QgcG9pbnQuIEluIGNhc2Ugb2YgcHl0aG9u LWltcGxlbWVudGVkIE1JIGNvbW1hbmRzLCBvdmVycmlkaW5nIGV4aXN0aW5nDQo+ID4gKGJ1aWx0 LWluKSBjb21tYW5kIGlzIGZvcmJpZGRlbi7CoEknbSBpbmNsaW5lZCB0byBkbyB0aGUgc2FtZSBp biBjYXNlIG9mwqANCj4gPiBub3RpZmljYXRpb25zLCBtb3N0bHkgYmVjYXVzZSBpdCBpcyBjb25z aXN0ZW50IHdpdGggTUkgY29tbWFuZHMgYW5kwqANCj4gPiBpcyByZWxhdGl2ZWx5IGVhc3kgdG8g aW1wbGVtZW50ICh0aG91Z2ggaXQnZCB3b3VsZCByZXF1aXJlIG1hbnVhbGx5IGNvZGVkDQo+ID4g bGlzdCBvZiBidWlsdC1pbiBub3RpZmljYXRpb25zKS4gDQo+ID4gDQo+ID4gU3VnZ2VzdGluZyBw eXRob24gbm90aWZpY2F0aW9uIHNob3VsZCBnbyBpbnRvIHNlcGFyYXRlIG5hbWVzcGFjZSBhbmQg cHJvbWlzaW5nwqANCj4gPiBidWlsdC1pbiBub3RpZmljYXRpb25zIG5ldmVyIHVzZSB0aGF0IG5h bWVzcGFjZSBpcyBhIGdvb2QgaWRlYS4gDQo+ID4gDQo+ID4gQXMgZm9yIHJlcXVpcmluZyBweXRo b24gbm90aWZpY2F0aW9ucyB0byBiZSBpbiBzZXBhcmF0ZSBuYW1lc3BhY2UsIEknbSBub3Qgc3Vy ZS4NCj4gPiBBZ2Fpbiwgd2UgZGlkIG5vdCByZXF1aXJlZCB0aGF0IGZvciBweXRob24gTUkgY29t bWFuZHMgc28gaXQgZmVlbHMgaXQnZCBiZSBhIGJpdMKgDQo+ID4gaW5jb25zaXN0ZW50LiAoQWxz bywgaWYgYXQgc29tZSBmdXR1cmUgcG9pbnQgR0RCIGFjdHVhbGx5IGRlY2lkZXMgdG8gYWRkIC0g c2F5IC0NCj4gPiBjb25uZWN0aW9uLXJlbW92ZWQgZXZlbnQsIHdoeSBub3QgaW1wbGVtZW50IGl0 IGluIHB5dGhvbj8gQnV0IHRoYXQncyBwcm9iYWJseQ0KPiA+IGEgZGlmZmVyZW50IGRpc2N1c3Np b24pDQo+IA0KPiBJZiB3ZSBvZmZpY2lhbGx5IGltcGxlbWVudGVkIGl0LCB0aGVuIEkgdGhpbmsg X2hvd18gd2UgaW1wbGVtZW50ZWQgaXQNCj4gaXNuJ3QgaW1wb3J0YW50LiAgV2hhdCdzIGltcG9y dGFudCwgaXMgd2UgaWRlYWxseSB3YW50IHRvIG1ha2UgdGhlIHVzZXINCj4gYSBwcm9taXNlIHRo YXQgaWYgdGhleSBmb2xsb3cgc29tZSBydWxlLCBHREIgaXNuJ3QgZ29pbmcgdG8gY29tZSBhbG9u Zw0KPiBhbmQgY29uZmxpY3Qgd2l0aCB0aGVtLg0KDQpJIGFncmVlLg0KDQo+IA0KPiBJIGFncmVl IHdpdGggeW91IHRoYXQgd2Ugc2hvdWxkbid0IF9wcmV2ZW50XyB1c2VycyBmcm9tIGNyZWF0aW5n DQo+IHBvc3NpYmx5IGNvbmZsaWN0aW5nIG5hbWVzLCBlLmcuIGlmIHRoZXkgd2FudGVkIHRvIGVt aXQgbm90aWZpY2F0aW9ucw0KPiB0aGF0IGFscmVhZHkgZXhpc3QsIG9yIGFyZSBoYXBweSB0byBh Y2NlcHQgdGhlIHJpc2sgdGhhdCBhIGxhdGVyIEdEQg0KPiBtaWdodCBjb25mbGljdCwgdGhlbiB0 aGF0J3Mgb24gdGhlbSAtLSBzbyBsb25nIGFzIHRoZXkgYXJlIGF3YXJlIHRoYXQNCj4gdGhleSBh cmUgdGFraW5nIG9uIHRoaXMgcmlzaywgSSdtIGhhcHB5IHdpdGggdGhhdC4NCg0KVGhhdCdzIG5v dCBleGFjdGx5IHdoYXQgSSBtZWFudC4gV2hhdCBJIG1lYW50IGlzOsKgDQogICAoaSkgICAgZm9y YmlkIHVzZXIgdG8gZW1pdCBub3RpZmljYXRpb25zIHdpdGggdGhlIFNBTUUgbmFtZSBhcyBleGlz dGluZywgaW50ZXJuYWzCoA0KICAgICAgICAgIChidWlsdC1pbikgbm90aWZpY2F0aW9ucyAobGlz dGVkIGluIGRvY3VtZW50YXRpb24pLCBidXQNCiAgIChpaSkgICBhbGxvdyB1c2VyIHRvIGVtaXQg bm90aWZpY2F0aW9ucyB0aGF0IG1heSBQT1NTSUJMWSBjb25mbGljdCB3aXRoIGZ1dHVyZSBHREIN CiAgICAgICAgICB2ZXJzaW9uIChzdWNoIGFzID1jb25uZWN0aW9uLWNsb3NlZCkNCiAgIChpaWkp ICBwcm9taXNlIHRoYXQgR0RCIHdvdWxkIG5ldmVyIGFkZCBub3RpZmljYXRpb25zIGluIHNvbWUg bmFtZXNwYWNlIChzYXksIHdpdGggbGVhZGluZw0KICAgICAgICAgIHVuZGVyc2NvcmUpLiANCg0K VGhlIHJlYXNvbiBmb3IgKGkpIGZvcmJpZGRpbmcgZXhpc3Rpbmcgbm90aWZpY2F0aW9ucyBpcyB0 byBtYWtlIGl0IGNvbnNpc3RlbnQgd2l0aA0KTUkgY29tbWFuZHMgLSB3ZSBkZWNpZGVkIHRvIGZv cmJpZCByZXBsYWNpbmcgb2YgZXhpc3RpbmcgaW50ZXJuYWwgKGJ1aWx0LWluKSBjb21tYW5kcw0K d2l0aCB1c2VyIG9uZXMuIA0KDQpUaGF0IGJlaW5nIHNhaWQsIEkgZG8gbm90IGZlZWwgc3Ryb25n bHkgYWJvdXQgaXQgc28gaWYgeW91IHRoaW5rIGlzIG9rYXkgdG8gYWxsb3cNCnVzZXJzIHRvIGVt aXQgY3VycmVudGx5IGV4aXN0aW5nIG5vdGlmaWNhdGlvbiwgZmluZSB3aXRoIG1lLiANCg0KQmVz dCwNCkphbg0KDQo+IA0KPiBUaGFua3MsDQo+IEFuZHJldw0KPiANCj4gDQo+ID4gDQo+ID4gPiAN Cj4gPiA+ID4gK2FzIFB5dGhvbiBkaWN0aW9uYXJ5LiBUaGUgZGljdGlvbmFyeSBpcyBjb252ZXJ0 ZWQgdG8gY29udmVydGVkDQo+ID4gPiA+ICt0byBhIEBzY3tnZGIvbWl9IEB2YXJ7cmVzdWx0LXJl Y29yZH0gKEBweHJlZntHREIvTUkgT3V0cHV0IFN5bnRheH0pIHRoZSBzYW1lIHdheQ0KPiA+ID4g PiArYXMgcmVzdWx0IG9mIFB5dGhvbiBNSSBjb21tYW5kIChAcHhyZWZ7R0RCL01JIENvbW1hbmRz IEluIFB5dGhvbn0pLg0KPiA+ID4gPiArDQo+ID4gPiA+ICtJZiBAdmFye2RhdGF9IGlzIEBjb2Rl e05vbmV9IHRoZW4gbm8gYWRkaXRpb25hbCB2YWx1ZXMgYXJlIGVtaXR0ZWQuDQo+ID4gPiA+ICtA ZW5kIGRlZnVuDQo+ID4gPiA+ICsNCj4gPiA+ID4gK0hlcmUgaXMgaG93IHRvIGVtaXQgQGNvZGV7 PWNvbm5lY3Rpb24tcmVtb3ZlZH0gd2hlbmV2ZXIgYSBjb25uZWN0aW9uIHRvIHJlbW90ZQ0KPiA+ ID4gPiArR0RCIHNlcnZlciBpcyBjbG9zZWQgKHNlZSBAcHhyZWZ7Q29ubmVjdGlvbnMgSW4gUHl0 aG9ufSk6DQo+ID4gPiA+ICsNCj4gPiA+ID4gK0BzbWFsbGV4YW1wbGUNCj4gPiA+ID4gK2RlZiBu b3RpZnlfY29ubmVjdGlvbl9yZW1vdmVkIChldmVudCk6DQo+ID4gPiA+ICsgICAgZGF0YSA9IEB7 ICdpZCcgICA6IGV2ZW50LmNvbm5lY3Rpb24ubnVtLA0KPiA+ID4gPiArICAgICAgICAgICAgICAn dHlwZScgOiBldmVudC5jb25uZWN0aW9uLnR5cGUgQH0NCj4gPiA+ID4gKyAgICBnZGIubm90aWZ5 X21pKCJjb25uZWN0aW9uLXJlbW92ZWQiLCBkYXRhKQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtnZGIu ZXZlbnRzLmNvbm5lY3Rpb25fcmVtb3ZlZC5jb25uZWN0IChub3RpZnlfY29ubmVjdGlvbl9yZW1v dmVkKQ0KPiA+ID4gPiArQGVuZCBzbWFsbGV4YW1wbGUNCj4gPiA+ID4gKw0KPiA+ID4gPiArVGhl biwgZWFjaCB0aW1lIGEgY29ubmVjdGlvbiBpcyBjbG9zZWQsIHRoZXJlIHdpbGwgYmUgYSBub3Rp ZmljYXRpb24gb24gTUkgY2hhbm5lbDoNCj4gPiA+ID4gKw0KPiA+ID4gPiArQHNtYWxsZXhhbXBs ZQ0KPiA+ID4gPiArPWNvbm5lY3Rpb24tcmVtb3ZlZCxpZD0iMSIsdHlwZT0icmVtb3RlIg0KPiA+ ID4gPiArQGVuZCBzbWFsbGV4YW1wbGUNCj4gPiA+ID4gKw0KPiA+ID4gPiAgQG5vZGUgUGFyYW1l dGVycyBJbiBQeXRob24NCj4gPiA+ID4gIEBzdWJzdWJzZWN0aW9uIFBhcmFtZXRlcnMgSW4gUHl0 aG9uDQo+ID4gPiA+ICANCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktbWkuYyBi L2dkYi9weXRob24vcHktbWkuYw0KPiA+ID4gPiBpbmRleCA2NmRjNmZiOGEzMi4uZGMyZWM1ZGRk MGYgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2dkYi9weXRob24vcHktbWkuYw0KPiA+ID4gPiArKysg Yi9nZGIvcHl0aG9uL3B5LW1pLmMNCj4gPiA+ID4gQEAgLTE5LDggKzE5LDE0IEBADQo+ID4gPiA+ ICANCj4gPiA+ID4gICNpbmNsdWRlICJkZWZzLmgiDQo+ID4gPiA+ICAjaW5jbHVkZSAicHl0aG9u LWludGVybmFsLmgiDQo+ID4gPiA+ICsjaW5jbHVkZSAidXRpbHMuaCINCj4gPiA+ID4gKyNpbmNs dWRlICJ1aS5oIg0KPiA+ID4gPiAgI2luY2x1ZGUgInVpLW91dC5oIg0KPiA+ID4gPiArI2luY2x1 ZGUgImludGVycHMuaCINCj4gPiA+ID4gKyNpbmNsdWRlICJ0YXJnZXQuaCINCj4gPiA+ID4gICNp bmNsdWRlICJtaS9taS1wYXJzZS5oIg0KPiA+ID4gPiArI2luY2x1ZGUgIm1pL21pLWNvbnNvbGUu aCINCj4gPiA+ID4gKyNpbmNsdWRlICJtaS9taS1pbnRlcnAuaCINCj4gPiA+ID4gIA0KPiA+ID4g PiAgLyogQSB1aV9vdXQgc3ViY2xhc3MgdGhhdCBjcmVhdGVzIGEgUHl0aG9uIG9iamVjdCBiYXNl ZCBvbiB0aGUgZGF0YQ0KPiA+ID4gPiAgICAgdGhhdCBpcyBwYXNzZWQgaW4uICAqLw0KPiA+ID4g PiBAQCAtMjk2LDMgKzMwMiw0NiBAQCBnZGJweV9leGVjdXRlX21pX2NvbW1hbmQgKFB5T2JqZWN0 ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQ0KPiA+ID4gPiAgDQo+ID4gPiA+ ICAgIHJldHVybiB1aW91dC5yZXN1bHQgKCk7DQo+ID4gPiA+ICB9DQo+ID4gPiA+ICsNCj4gPiA+ ID4gKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBnZGIubm90aWZ5X21pIGZ1bmN0aW9uLiAgKi8N Cj4gPiA+IA0KPiA+ID4gVGhpcyBjb21tZW50IHNob3VsZCBiZSBpbiB0aGUgaGVhZGVyIGZpbGUs IGFuZCBoZXJlIHdlIHNob3VsZCBzYXk6DQo+ID4gPiANCj4gPiA+ICAgLyogU2VlIHB5dGhvbi1p bnRlcm5hbC5oLiAgKi8NCj4gPiA+IA0KPiA+ID4gPiArDQo+ID4gPiA+ICtQeU9iamVjdCAqDQo+ ID4gPiA+ICtnZGJweV9ub3RpZnlfbWkgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywg UHlPYmplY3QgKmt3YXJncykNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgc3RhdGljIGNvbnN0IGNo YXIgKmtleXdvcmRzW10gPSB7ICJuYW1lIiwgImRhdGEiLCBudWxscHRyIH07DQo+ID4gPiA+ICsg IGNvbnN0IGNoYXIgKm5hbWU7DQo+ID4gPiA+ICsgIFB5T2JqZWN0ICpkYXRhOw0KPiA+ID4gPiAr DQo+ID4gPiA+ICsgIGlmICghZ2RiX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyAoYXJncywg a3dhcmdzLCAic08iLCBrZXl3b3JkcywNCj4gPiA+ID4gKwkJCQkJJm5hbWUsICZkYXRhKSkNCj4g PiA+ID4gKyAgICByZXR1cm4gbnVsbHB0cjsgLy8gRklYTUU6IGlzIHRoaXMgdGhlIGNvcnJlY3Qg d2F5IHRvIHNpZ25hbCBlcnJvcj8NCj4gPiA+IA0KPiA+ID4gWWVzIGl0IGlzLiAgSWYgZ2RiX1B5 QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyBlbmNvdW50ZXJzIGFuIGVycm9yIHRoZW4NCj4gPiA+ IGEgUHl0aG9uIGV4Y2VwdGlvbiB3aWxsIGhhdmUgYWxyZWFkeSBiZWVuIHNldC4gIFJldHVybmlu ZyBudWxscHRyIGNhdXNlcw0KPiA+ID4gdGhlIFB5dGhvbiBydW50aW1lIHRvIHRocm93IHRoZSBl eGNlcHRpb24uDQo+ID4gPiANCj4gPiA+IEkgd29uZGVyIGlmIHdlIHNob3VsZCBtYWtlIHRoZSBk YXRhIGFyZ3VtZW50IG9wdGlvbmFsLCB3aXRoIFB5X05vbmUNCj4gPiA+IGJlaW5nIHRoZSBkZWZh dWx0PyAgWW91IGNhbiB3cml0ZToNCj4gPiA+IA0KPiA+ID4gICBQeU9iamVjdCAqZGF0YSA9IFB5 X05vbmU7DQo+ID4gPiANCj4gPiA+ICAgaWYgKCFnZGJfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdv cmRzIChhcmdzLCBrd2FyZ3MsICJzfE8iLCBrZXl3b3JkcywNCj4gPiA+ICAgCQkJICAgICAgICAg ICAgICAgICZuYW1lLCAmZGF0YSkpDQo+ID4gPiAgICAgcmV0dXJuIG51bGxwdHI7DQo+ID4gPiAN Cj4gPiA+IEFuZCB0aGF0IHNob3VsZCBtYWtlIGl0IHNvLiAgT2J2aW91c2x5IHlvdSdkIG5lZWQg YSBjb3JyZXNwb25kaW5nIGRvY3MNCj4gPiA+IHVwZGF0ZS4NCj4gPiA+IA0KPiA+ID4gPiArDQo+ ID4gPiA+ICsgIFNXSVRDSF9USFJVX0FMTF9VSVMgKCkNCj4gPiA+ID4gKyAgICB7DQo+ID4gPiA+ ICsgICAgICBzdHJ1Y3QgbWlfaW50ZXJwICptaSA9IGFzX21pX2ludGVycCAodG9wX2xldmVsX2lu dGVycHJldGVyICgpKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgaWYgKG1pID09IE5VTEwp DQo+ID4gPiANCj4gPiA+IHMvTlVMTC9udWxscHRyLw0KPiA+ID4gDQo+ID4gPiA+ICsgICAgICAg IGNvbnRpbnVlOw0KPiA+ID4gPiArICAgICAgDQo+ID4gPiANCj4gPiA+IFRoZSBgY29udGludWVg IHNob3VsZCB1c2UgYSB0YWIgdG8gaW5kZW50Lg0KPiA+ID4gDQo+ID4gPiBBbmQgdGhlIGZvbGxv d2luZyBsaW5lLCBhbmQgc29tZSBvdGhlciBsaW5lcyBpbiB0aGlzIGRpZmYsIGhhdmUgdHJhaWxp bmcNCj4gPiA+IHdoaXRlc3BhY2UuICBUaGUgLmdpdGF0dHJpYnV0ZXMgZmlsZXMgYXQgdGhlIHRv cC1sZXZlbCBzaG91bGQgdHVybiBvbg0KPiA+ID4gaGlnaGxpZ2h0aW5nIG9mIHdoaXRlc3BhY2Ug ZXJyb3JzIGxpa2UgdGhpcy4gIE9PSSwgaWYgeW91ICdnaXQgc2hvdycNCj4gPiA+IHRoaXMgcGF0 Y2gsIGFyZSB0aGUgZXJyb3JzIG5vdCBoaWdobGlnaHRlZCBmb3IgeW91PyAgSSBvbmx5IGFzayBi ZWNhdXNlDQo+ID4gPiBtYXliZSB3ZSd2ZSBub3Qgc2V0IHVwIG91ciAuZ2l0YXR0cmlidXRlcyBj b3JyZWN0bHkuDQo+ID4gPiANCj4gPiA+ID4gKyAgICAgIGdkYl9wcmludGYgKG1pLT5ldmVudF9j aGFubmVsLCAiJXMiLCBuYW1lKTsNCj4gPiA+ID4gKyAgICAgIGlmIChkYXRhICE9IFB5X05vbmUp ICAgICAgDQo+ID4gPiA+ICsgICAgICAgIHsNCj4gPiA+ID4gKyAgICAgICAgICAvKiBBdCB0aGUg dG9wLWxldmVsLCB0aGUgZGF0YSBtdXN0IGJlIGEgZGljdGlvbmFyeS4gICovDQo+ID4gPiA+ICsg ICAgICAgICAgaWYgKCFQeURpY3RfQ2hlY2sgKGRhdGEpKQ0KPiA+ID4gPiArICAgICAgICAgICAg Z2RicHlfZXJyb3IgKF8oIkRhdGEgcGFzc2VkIHRvIG5vdGlmeV9taSBtdXN0IGJlIGVpdGhlciBO b25lIG9yIGEgZGljdGlvbmFyeSIpKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgICAgIHRh cmdldF90ZXJtaW5hbDo6c2NvcGVkX3Jlc3RvcmVfdGVybWluYWxfc3RhdGUgdGVybV9zdGF0ZTsN Cj4gPiA+ID4gKyAgICAgICAgICB0YXJnZXRfdGVybWluYWw6Om91cnNfZm9yX291dHB1dCAoKTsN Cj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgICAgIHVpX291dCAqbWlfdWlvdXQgPSBtaS0+aW50 ZXJwX3VpX291dCAoKTsNCj4gPiA+ID4gKyAgICAgICAgICB1aV9vdXRfcmVkaXJlY3RfcG9wIHJl ZGlyIChtaV91aW91dCwgbWktPmV2ZW50X2NoYW5uZWwpOw0KPiA+ID4gPiArICAgICAgICAgIHNj b3BlZF9yZXN0b3JlIHJlc3RvcmVfdWlvdXQNCj4gPiA+ID4gKyAgICAgICAgICAgID0gbWFrZV9z Y29wZWRfcmVzdG9yZSAoJmN1cnJlbnRfdWlvdXQsIG1pX3Vpb3V0KTsNCj4gPiA+ID4gKw0KPiA+ ID4gPiArICAgICAgICAgIHNlcmlhbGl6ZV9taV9kYXRhIChkYXRhKTsJICANCj4gPiA+ID4gKyAg ICAgICAgfQ0KPiA+ID4gPiArICAgICAgZ2RiX2ZsdXNoIChtaS0+ZXZlbnRfY2hhbm5lbCk7DQo+ ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiArICAgIA0KPiA+ID4gPiArICBQeV9SRVRVUk5fTk9ORTsN Cj4gPiA+ID4gK30NCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHl0aG9uLWludGVy bmFsLmggYi9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oDQo+ID4gPiA+IGluZGV4IDNmNTNi MGFiNmYwLi4yYTdlOGQ2ODE3OSAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvZ2RiL3B5dGhvbi9weXRo b24taW50ZXJuYWwuaA0KPiA+ID4gPiArKysgYi9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5o DQo+ID4gPiA+IEBAIC01MDEsNiArNTAxLDkgQEAgZXh0ZXJuIFB5T2JqZWN0ICpnZGJweV9leGVj dXRlX21pX2NvbW1hbmQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywNCj4gPiA+ID4g IA0KPiA+ID4gPiAgZXh0ZXJuIHZvaWQgc2VyaWFsaXplX21pX2RhdGEgKFB5T2JqZWN0ICpyZXN1 bHQpOw0KPiA+ID4gPiAgDQo+ID4gPiA+ICtleHRlcm4gUHlPYmplY3QgKmdkYnB5X25vdGlmeV9t aSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLA0KPiA+ID4gPiArCQkJCSAgUHlPYmpl Y3QgKmt3KTsNCj4gPiA+ID4gKw0KPiA+ID4gPiAgLyogQ29udmVydCBQeXRob24gb2JqZWN0IE9C SiB0byBhIHByb2dyYW1fc3BhY2UgcG9pbnRlci4gIE9CSiBtdXN0IGJlIGENCj4gPiA+ID4gICAg IGdkYi5Qcm9nc3BhY2UgcmVmZXJlbmNlLiAgUmV0dXJuIG51bGxwdHIgaWYgdGhlIGdkYi5Qcm9n c3BhY2UgaXMgbm90DQo+ID4gPiA+ICAgICB2YWxpZCAoc2VlIGdkYi5Qcm9nc3BhY2UuaXNfdmFs aWQpLCBvdGhlcndpc2UgcmV0dXJuIHRoZSBwcm9ncmFtX3NwYWNlDQo+ID4gPiA+IGRpZmYgLS1n aXQgYS9nZGIvcHl0aG9uL3B5dGhvbi5jIGIvZ2RiL3B5dGhvbi9weXRob24uYw0KPiA+ID4gPiBp bmRleCA2YTk3OGQ2MzJlOS4uZmFhN2UwYzIxN2QgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2dkYi9w eXRob24vcHl0aG9uLmMNCj4gPiA+ID4gKysrIGIvZ2RiL3B5dGhvbi9weXRob24uYw0KPiA+ID4g PiBAQCAtMjY2OSw2ICsyNjY5LDEwIEBAIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5 IHNlbGVjdGVkIGxhbmd1YWdlLiIgfSwNCj4gPiA+ID4gICAgICAicHJpbnRfb3B0aW9ucyAoKSAt PiBkaWN0XG5cDQo+ID4gPiA+ICBSZXR1cm4gdGhlIGN1cnJlbnQgcHJpbnQgb3B0aW9ucy4iIH0s DQo+ID4gPiA+ICANCj4gPiA+ID4gKyAgeyAibm90aWZ5X21pIiwgKFB5Q0Z1bmN0aW9uKSBnZGJw eV9ub3RpZnlfbWksDQo+ID4gPiA+ICsgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywN Cj4gPiA+ID4gKyAgICAibm90aWZ5X21pIChuYW1lLCBkYXRhKSAtPiBOb25lXG5cDQo+ID4gPiA+ ICtPdXRwdXQgYXN5bmMgcmVjb3JkIHRvIE1JIGNoYW5uZWxzIGlmIGFueS4iIH0sDQo+ID4gPiA+ ICAgIHtOVUxMLCBOVUxMLCAwLCBOVUxMfQ0KPiA+ID4gPiAgfTsNCj4gPiA+ID4gIA0KPiA+ID4g PiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW1pLW5vdGlmeS5leHAg Yi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktbWktbm90aWZ5LmV4cA0KPiA+ID4gPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiBpbmRleCAwMDAwMDAwMDAwMC4uODIyMTc5NGM0ZjMN Cj4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktbWktbm90aWZ5LmV4cA0KPiA+ID4gPiBAQCAtMCwwICsxLDQ3IEBADQo+ID4gPiA+ ICsjIENvcHlyaWdodCAoQykgMjAxOS0yMDIzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j Lg0KPiA+ID4gDQo+ID4gPiBDb3B5cmlnaHQgZGF0YSBzaG91bGQgcHJvYmFibHkgYmUganVzdCAn MjAyMycgaGVyZS4NCj4gPiA+IA0KPiA+ID4gVGhhbmtzLA0KPiA+ID4gQW5kcmV3DQo+ID4gPiAN Cj4gPiA+ID4gKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCj4gPiA+ID4gKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCj4gPiA+ID4g KyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3INCj4gPiA+ID4gKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4NCj4gPiA+ID4gKyMNCj4gPiA+ID4gKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQo+ID4gPiA+ICsjIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQo+ID4g PiA+ICsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUNCj4gPiA+ID4gKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4NCj4gPiA+ID4gKyMNCj4gPiA+ID4gKyMgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCj4gPiA+ID4gKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzPi4NCj4gPiA+ID4gKw0KPiA+ID4gPiArIyBUZXN0IGN1c3RvbSBNSSBub3RpZmlj YXRpb25zIGltcGxlbWVudGVkIGluIFB5dGhvbi4NCj4gPiA+ID4gKw0KPiA+ID4gPiArbG9hZF9s aWIgZ2RiLXB5dGhvbi5leHANCj4gPiA+ID4gK2xvYWRfbGliIG1pLXN1cHBvcnQuZXhwDQo+ID4g PiA+ICtzZXQgTUlGTEFHUyAiLWk9bWkiDQo+ID4gPiA+ICsNCj4gPiA+ID4gK2dkYl9leGl0DQo+ ID4gPiA+ICtpZiB7W21pX2dkYl9zdGFydF19IHsNCj4gPiA+ID4gKyAgICByZXR1cm4NCj4gPiA+ ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiAraWYge1tsc2VhcmNoIC1leGFjdCBbbWlfZ2V0X2Zl YXR1cmVzXSBweXRob25dIDwgMH0gew0KPiA+ID4gPiArICAgIHVuc3VwcG9ydGVkICJweXRob24g c3VwcG9ydCBpcyBkaXNhYmxlZCINCj4gPiA+ID4gKyAgICByZXR1cm4gLTENCj4gPiA+ID4gK30N Cj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhbmRhcmRfdGVzdGZpbGUNCj4gPiA+ID4gKw0KPiA+ID4g PiArbWlfZ2RiX3Rlc3QgInNldCBweXRob24gcHJpbnQtc3RhY2sgZnVsbCIgXA0KPiA+ID4gPiAr ICAgICIuKlxcXmRvbmUiIFwNCj4gPiA+ID4gKyAgICAic2V0IHB5dGhvbiBwcmludC1zdGFjayBm dWxsIg0KPiA+ID4gPiArDQo+ID4gPiA+ICttaV9nZGJfdGVzdCAicHl0aG9uIGdkYi5ub3RpZnlf bWkoJ3Rlc3Qtbm90aWZpY2F0aW9uJywgTm9uZSkiIFwNCj4gPiA+ID4gKyAgICAiLio9dGVzdC1u b3RpZmljYXRpb25cclxuXFxeZG9uZSIgXA0KPiA+ID4gPiArICAgICJweXRob24gbm90aWZpY2F0 aW9uLCBubyBhZGRpdGlvbmFsIGRhdGEiDQo+ID4gPiA+ICsNCj4gPiA+ID4gK21pX2dkYl90ZXN0 ICJweXRob24gZ2RiLm5vdGlmeV9taSgndGVzdC1ub3RpZmljYXRpb24nLCBceyAnZGF0YTEnIDog MSAsICdkYXRhMicgOiAyIH0pIiBcDQo+ID4gPiA+ICsgICAgIi4qPXRlc3Qtbm90aWZpY2F0aW9u LGRhdGExPVwiMVwiLGRhdGEyPVwiMlwiXHJcblxcXmRvbmUiIFwNCj4gPiA+ID4gKyAgICAicHl0 aG9uIG5vdGlmaWNhdGlvbiwgd2l0aCBhZGRpdGlvbmFsIGRhdGEiDQo+ID4gPiA+ICsNCj4gPiA+ ID4gK21pX2dkYl90ZXN0ICJweXRob24gZ2RiLm5vdGlmeV9taSgndGVzdC1ub3RpZmljYXRpb24n LCAxKSIgXA0KPiA+ID4gPiArICAgICIuKlxcXmVycm9yLG1zZz1cIi4qXCIiIFwNCj4gPiA+ID4g KyAgICAicHl0aG9uIG5vdGlmaWNhdGlvbiwgaW52YWxpZCBhZGRpdGlvbmFsIGRhdGEiDQo+ID4g PiA+IC0tIA0KPiA+ID4gPiAyLjQwLjENCj4gPiANCj4gPiBUDQoNCg==