From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F2FA7C3A59F for ; Sat, 31 Aug 2019 10:00:03 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A8C3C21874 for ; Sat, 31 Aug 2019 10:00:03 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="dzzL/6eI" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A8C3C21874 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=virtuozzo.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:43794 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i40As-0003k7-L6 for qemu-devel@archiver.kernel.org; Sat, 31 Aug 2019 06:00:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59905) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i4092-0003AG-JW for qemu-devel@nongnu.org; Sat, 31 Aug 2019 05:58:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i408z-0004pF-LD for qemu-devel@nongnu.org; Sat, 31 Aug 2019 05:58:07 -0400 Received: from mail-eopbgr70124.outbound.protection.outlook.com ([40.107.7.124]:50886 helo=EUR04-HE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1i408y-0004id-FD; Sat, 31 Aug 2019 05:58:05 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dphMrad3fDzhjstKXPzjL76DocHoeDD69Kdhq97Vc5N7TI8Ra6A2CHggG3Zyx8Mn6ymDWkHaNbQD+kZ8RuqlNWs4R60Gc8pbaRcL+JlReczHhS+PVt70/sy4OWCsQolGFThNjEBWCgXtXkjgm/kz/9DXI7MW4C0Cef6gEUAK0OJcBjGlxy7oB+XwRWEPpyoHLOwMWf+bZAyzM1VcADIY3hLG7TVXdALZKlGdpAg1J4C/PXpsfA9tW6dzLzhP9JFHSVCsKNFKyNTzrsouqQqnh0QAFFZZprnZ6T+BjqzAFv8pDw0DX1vDYxqTjF2mceyM4BWF+ATSPOW3ulQfnWe4fQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=38YWni5DYEALolLAXeFDY68asqa/t0FnhoeUNQMQK98=; b=h2UM3KobicOvi3eSS1QiLNo1lNRoOakmiuZpE/kvsljDbwfaBBMpiY4VW5LcHWmsL0bwQ7wzOgvLcnQwktUQK02uoLVvsfCRfPZRp3ytl5nkd3G01iA5h2HX6rJJ/aiVElLtjXri0cG7lYhBzr++OIfuhMiHvJ2kdq3vw1k6bz9Dp4YMloARjv4hxaciGQT8wiI+3HrAwa0STN4tbbLxCuICFKJP6O1Ik8BseqQkgSNX+K6xb8rIqpb18xMtG4KQ6AO9d12u/XnZgkgcaaWvUtpo/WsybtBzqH9WE5/EY2/TR8X+TlY6y4Ax21UfBe0mTLaa3Hzaw6i7+yoeHNTN3w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=38YWni5DYEALolLAXeFDY68asqa/t0FnhoeUNQMQK98=; b=dzzL/6eIReoyOkUypfI7x8A0Ec8HGOoMbxV0ie+8rH3aFcAZJYHApMg1ACcEvXUxWeGrtDO8BvZHQPGxC2qo+HAoEcIaR74C1Hrczuch4Cu1GuktRR6peFghIjE0/RDnIVBxbPgrshMm0DSkLMC+NyMzxQhhPWPW4OhWqH7bipY= Received: from DB8PR08MB5498.eurprd08.prod.outlook.com (52.133.242.216) by DB8PR08MB4105.eurprd08.prod.outlook.com (20.179.12.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2220.18; Sat, 31 Aug 2019 09:57:59 +0000 Received: from DB8PR08MB5498.eurprd08.prod.outlook.com ([fe80::b5c0:6b97:438d:77ed]) by DB8PR08MB5498.eurprd08.prod.outlook.com ([fe80::b5c0:6b97:438d:77ed%2]) with mapi id 15.20.2220.020; Sat, 31 Aug 2019 09:57:59 +0000 From: Vladimir Sementsov-Ogievskiy To: Max Reitz , "qemu-block@nongnu.org" Thread-Topic: [PATCH v6 25/42] mirror: Deal with filters Thread-Index: AQHVTs2fW9lDc3qUnk+iNbQLgM6ojqcVJ4OA Date: Sat, 31 Aug 2019 09:57:59 +0000 Message-ID: References: <20190809161407.11920-1-mreitz@redhat.com> <20190809161407.11920-26-mreitz@redhat.com> In-Reply-To: <20190809161407.11920-26-mreitz@redhat.com> Accept-Language: ru-RU, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: HE1PR0301CA0009.eurprd03.prod.outlook.com (2603:10a6:3:76::19) To DB8PR08MB5498.eurprd08.prod.outlook.com (2603:10a6:10:11c::24) authentication-results: spf=none (sender IP is ) smtp.mailfrom=vsementsov@virtuozzo.com; x-ms-exchange-messagesentrepresentingtype: 1 x-tagtoolbar-keys: D20190831125755906 x-originating-ip: [185.231.240.5] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0b1ffdec-5b1e-4e33-4c37-08d72df9b42b x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600166)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:DB8PR08MB4105; x-ms-traffictypediagnostic: DB8PR08MB4105: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3826; x-forefront-prvs: 014617085B x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(366004)(396003)(376002)(39830400003)(136003)(346002)(189003)(199004)(476003)(31696002)(186003)(25786009)(102836004)(256004)(3846002)(6116002)(30864003)(66066001)(81166006)(81156014)(478600001)(7736002)(71190400001)(86362001)(14454004)(8936002)(305945005)(6512007)(66476007)(66556008)(64756008)(66446008)(446003)(76176011)(11346002)(6436002)(386003)(53936002)(6506007)(6246003)(8676002)(2616005)(14444005)(6486002)(2906002)(4326008)(36756003)(316002)(99286004)(52116002)(26005)(54906003)(2501003)(486006)(31686004)(53946003)(5660300002)(71200400001)(66946007)(110136005)(229853002)(21314003)(309714004); DIR:OUT; SFP:1102; SCL:1; SRVR:DB8PR08MB4105; H:DB8PR08MB5498.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: HqFuuwEJQjf3m9xo1B1UnrK/Y+I7i41OclabYEELfjYB5LJBJQSvN+6uURGXWQygPQ0N1kZMcv2PlkYhfOGerVS0b4diP4wH3xt9eb17T0/xeNGlGaq/EMBh9LI1y4xS1LfOcQ+RLBQtvtbw4B/ewaNEyJq7rv9KtvFEzaTLDyZ4aEw3NgIYfYs3vg660oCk6FKZ2CLryx2ekcRkzU7GxY323s0zNGFPYONNxjoIo6stzoisTfbXwvo9AHZCwO46RNVmsNtct+X3CcB/fwqWdWX8NXECSrgxTj0AKQojIutL3dMBEkTbko08NcM7GWclUYAyrkp0x1pKpYhBHtQi39HM8MbLnl6g/bjVpDAgKepIaDNel2jaD8YriBy9o8q35UnJn40UM4ZZtW8KXmEYcs5E4FP6MQGdfRN5OqZMzxM= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: <982E2AD5FF27F64B823CABE490FA2BDA@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0b1ffdec-5b1e-4e33-4c37-08d72df9b42b X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Aug 2019 09:57:59.3010 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: /mbnqw/E0HVRTsvU1dWAKFfoYILxN/sFks/Tc1v73qBaN5IRAKCYlpB/jgmnKR73Yu/YojevBLgLHyJNe9wfk0XidDCSvvZ8sEQTwm5hzmg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB4105 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.7.124 Subject: Re: [Qemu-devel] [PATCH v6 25/42] mirror: Deal with filters X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , "qemu-devel@nongnu.org" Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" MDkuMDguMjAxOSAxOToxMywgTWF4IFJlaXR6IHdyb3RlOg0KPiBUaGlzIGluY2x1ZGVzIHNvbWUg cGVybWlzc2lvbiBsaW1pdGluZyAoZm9yIGV4YW1wbGUsIHdlIG9ubHkgbmVlZCB0bw0KPiB0YWtl IHRoZSBSRVNJWkUgcGVybWlzc2lvbiBmb3IgYWN0aXZlIGNvbW1pdHMgd2hlcmUgdGhlIGJhc2Ug aXMgc21hbGxlcg0KPiB0aGFuIHRoZSB0b3ApLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogTWF4IFJl aXR6IDxtcmVpdHpAcmVkaGF0LmNvbT4NCj4gLS0tDQo+ICAgYmxvY2svbWlycm9yLmMgfCAxMTcg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQ0KPiAgIGJs b2NrZGV2LmMgICAgIHwgIDQ3ICsrKysrKysrKysrKysrKysrLS0tDQo+ICAgMiBmaWxlcyBjaGFu Z2VkLCAxMzEgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0 IGEvYmxvY2svbWlycm9yLmMgYi9ibG9jay9taXJyb3IuYw0KPiBpbmRleCA1NGJhZmRmMTc2Li42 ZGRiZmI5NzA4IDEwMDY0NA0KPiAtLS0gYS9ibG9jay9taXJyb3IuYw0KPiArKysgYi9ibG9jay9t aXJyb3IuYw0KPiBAQCAtNDIsNiArNDIsNyBAQCB0eXBlZGVmIHN0cnVjdCBNaXJyb3JCbG9ja0pv YiB7DQo+ICAgICAgIEJsb2NrQmFja2VuZCAqdGFyZ2V0Ow0KPiAgICAgICBCbG9ja0RyaXZlclN0 YXRlICptaXJyb3JfdG9wX2JzOw0KPiAgICAgICBCbG9ja0RyaXZlclN0YXRlICpiYXNlOw0KPiAr ICAgIEJsb2NrRHJpdmVyU3RhdGUgKmJhc2Vfb3ZlcmxheTsNCj4gICANCj4gICAgICAgLyogVGhl IG5hbWUgb2YgdGhlIGdyYXBoIG5vZGUgdG8gcmVwbGFjZSAqLw0KPiAgICAgICBjaGFyICpyZXBs YWNlczsNCj4gQEAgLTY2NSw4ICs2NjYsMTAgQEAgc3RhdGljIGludCBtaXJyb3JfZXhpdF9jb21t b24oSm9iICpqb2IpDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3JfYWJv cnQpOw0KPiAgICAgICBpZiAoIWFib3J0ICYmIHMtPmJhY2tpbmdfbW9kZSA9PSBNSVJST1JfU09V UkNFX0JBQ0tJTkdfQ0hBSU4pIHsNCj4gICAgICAgICAgIEJsb2NrRHJpdmVyU3RhdGUgKmJhY2tp bmcgPSBzLT5pc19ub25lX21vZGUgPyBzcmMgOiBzLT5iYXNlOw0KPiAtICAgICAgICBpZiAoYmFj a2luZ19icyh0YXJnZXRfYnMpICE9IGJhY2tpbmcpIHsNCj4gLSAgICAgICAgICAgIGJkcnZfc2V0 X2JhY2tpbmdfaGQodGFyZ2V0X2JzLCBiYWNraW5nLCAmbG9jYWxfZXJyKTsNCj4gKyAgICAgICAg QmxvY2tEcml2ZXJTdGF0ZSAqdW5maWx0ZXJlZF90YXJnZXQgPSBiZHJ2X3NraXBfcndfZmlsdGVy cyh0YXJnZXRfYnMpOw0KPiArDQo+ICsgICAgICAgIGlmIChiZHJ2X2ZpbHRlcmVkX2Nvd19icyh1 bmZpbHRlcmVkX3RhcmdldCkgIT0gYmFja2luZykgew0KPiArICAgICAgICAgICAgYmRydl9zZXRf YmFja2luZ19oZCh1bmZpbHRlcmVkX3RhcmdldCwgYmFja2luZywgJmxvY2FsX2Vycik7DQo+ICAg ICAgICAgICAgICAgaWYgKGxvY2FsX2Vycikgew0KPiAgICAgICAgICAgICAgICAgICBlcnJvcl9y ZXBvcnRfZXJyKGxvY2FsX2Vycik7DQo+ICAgICAgICAgICAgICAgICAgIHJldCA9IC1FUEVSTTsN Cj4gQEAgLTcxNSw3ICs3MTgsNyBAQCBzdGF0aWMgaW50IG1pcnJvcl9leGl0X2NvbW1vbihKb2Ig KmpvYikNCj4gICAgICAgICogdmFsaWQuDQo+ICAgICAgICAqLw0KPiAgICAgICBibG9ja19qb2Jf cmVtb3ZlX2FsbF9iZHJ2KGJqb2IpOw0KPiAtICAgIGJkcnZfcmVwbGFjZV9ub2RlKG1pcnJvcl90 b3BfYnMsIGJhY2tpbmdfYnMobWlycm9yX3RvcF9icyksICZlcnJvcl9hYm9ydCk7DQo+ICsgICAg YmRydl9yZXBsYWNlX25vZGUobWlycm9yX3RvcF9icywgbWlycm9yX3RvcF9icy0+YmFja2luZy0+ YnMsICZlcnJvcl9hYm9ydCk7DQo+ICAgDQo+ICAgICAgIC8qIFdlIGp1c3QgY2hhbmdlZCB0aGUg QkRTIHRoZSBqb2IgQkIgcmVmZXJzIHRvICh3aXRoIGVpdGhlciBvciBib3RoIG9mIHRoZQ0KPiAg ICAgICAgKiBiZHJ2X3JlcGxhY2Vfbm9kZSgpIGNhbGxzKSwgc28gc3dpdGNoIHRoZSBCQiBiYWNr IHNvIHRoZSBjbGVhbnVwIGRvZXMNCj4gQEAgLTgxMiw3ICs4MTUsOCBAQCBzdGF0aWMgaW50IGNv cm91dGluZV9mbiBtaXJyb3JfZGlydHlfaW5pdChNaXJyb3JCbG9ja0pvYiAqcykNCj4gICAgICAg ICAgICAgICByZXR1cm4gMDsNCj4gICAgICAgICAgIH0NCj4gICANCj4gLSAgICAgICAgcmV0ID0g YmRydl9pc19hbGxvY2F0ZWRfYWJvdmUoYnMsIGJhc2UsIGZhbHNlLCBvZmZzZXQsIGJ5dGVzLCAm Y291bnQpOw0KPiArICAgICAgICByZXQgPSBiZHJ2X2lzX2FsbG9jYXRlZF9hYm92ZShicywgcy0+ YmFzZV9vdmVybGF5LCB0cnVlLCBvZmZzZXQsIGJ5dGVzLA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmY291bnQpOw0KPiAgICAgICAgICAgaWYgKHJldCA8IDApIHsN Cj4gICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiAgICAgICAgICAgfQ0KPiBAQCAtOTA4LDcg KzkxMiw3IEBAIHN0YXRpYyBpbnQgY29yb3V0aW5lX2ZuIG1pcnJvcl9ydW4oSm9iICpqb2IsIEVy cm9yICoqZXJycCkNCj4gICAgICAgfSBlbHNlIHsNCj4gICAgICAgICAgIHMtPnRhcmdldF9jbHVz dGVyX3NpemUgPSBCRFJWX1NFQ1RPUl9TSVpFOw0KPiAgICAgICB9DQo+IC0gICAgaWYgKGJhY2tp bmdfZmlsZW5hbWVbMF0gJiYgIXRhcmdldF9icy0+YmFja2luZyAmJg0KPiArICAgIGlmIChiYWNr aW5nX2ZpbGVuYW1lWzBdICYmICFiZHJ2X2JhY2tpbmdfY2hhaW5fbmV4dCh0YXJnZXRfYnMpICYm DQo+ICAgICAgICAgICBzLT5ncmFudWxhcml0eSA8IHMtPnRhcmdldF9jbHVzdGVyX3NpemUpIHsN Cj4gICAgICAgICAgIHMtPmJ1Zl9zaXplID0gTUFYKHMtPmJ1Zl9zaXplLCBzLT50YXJnZXRfY2x1 c3Rlcl9zaXplKTsNCj4gICAgICAgICAgIHMtPmNvd19iaXRtYXAgPSBiaXRtYXBfbmV3KGxlbmd0 aCk7DQo+IEBAIC0xMDg4LDggKzEwOTIsOSBAQCBzdGF0aWMgdm9pZCBtaXJyb3JfY29tcGxldGUo Sm9iICpqb2IsIEVycm9yICoqZXJycCkNCj4gICAgICAgaWYgKHMtPmJhY2tpbmdfbW9kZSA9PSBN SVJST1JfT1BFTl9CQUNLSU5HX0NIQUlOKSB7DQo+ICAgICAgICAgICBpbnQgcmV0Ow0KPiAgIA0K PiAtICAgICAgICBhc3NlcnQoIXRhcmdldC0+YmFja2luZyk7DQo+IC0gICAgICAgIHJldCA9IGJk cnZfb3Blbl9iYWNraW5nX2ZpbGUodGFyZ2V0LCBOVUxMLCAiYmFja2luZyIsIGVycnApOw0KPiAr ICAgICAgICBhc3NlcnQoIWJkcnZfYmFja2luZ19jaGFpbl9uZXh0KHRhcmdldCkpOw0KDQpQcmVl eGlzdGluZywgYnV0IHNlZW1zIHdlIG1heSBjcmFzaCBoZXJlLCBJIGRvbid0IHNlZSB3aGVyZSBp dCBpcyBjaGVja2VkIGJlZm9yZSwgdG8NCnJldHVybiBlcnJvciBpZiB0aGVyZSBpcyBzb21lIGJh Y2tpbmcuIEFuZCBldmVuIGlmIHdlIGRvIHNvLCB3ZSBkb24ndCBwcmV2ZW50IGFwcGVhcmluZw0K b2YgdGFyZ2V0IGJhY2tpbmcgZHVyaW5nIG1pcnJvciBvcGVyYXRpb24uDQoNCj4gKyAgICAgICAg cmV0ID0gYmRydl9vcGVuX2JhY2tpbmdfZmlsZShiZHJ2X3NraXBfcndfZmlsdGVycyh0YXJnZXQp LCBOVUxMLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWNraW5n IiwgZXJycCk7DQo+ICAgICAgICAgICBpZiAocmV0IDwgMCkgew0KPiAgICAgICAgICAgICAgIHJl dHVybjsNCj4gICAgICAgICAgIH0NCj4gQEAgLTE1MzEsOCArMTUzNiw4IEBAIHN0YXRpYyBCbG9j a0pvYiAqbWlycm9yX3N0YXJ0X2pvYigNCj4gICAgICAgTWlycm9yQmxvY2tKb2IgKnM7DQo+ICAg ICAgIE1pcnJvckJEU09wYXF1ZSAqYnNfb3BhcXVlOw0KPiAgICAgICBCbG9ja0RyaXZlclN0YXRl ICptaXJyb3JfdG9wX2JzOw0KPiAtICAgIGJvb2wgdGFyZ2V0X2dyYXBoX21vZDsNCj4gICAgICAg Ym9vbCB0YXJnZXRfaXNfYmFja2luZzsNCj4gKyAgICB1aW50NjRfdCB0YXJnZXRfcGVybXMsIHRh cmdldF9zaGFyZWRfcGVybXM7DQo+ICAgICAgIEVycm9yICpsb2NhbF9lcnIgPSBOVUxMOw0KPiAg ICAgICBpbnQgcmV0Ow0KPiAgIA0KPiBAQCAtMTU1MSw3ICsxNTU2LDcgQEAgc3RhdGljIEJsb2Nr Sm9iICptaXJyb3Jfc3RhcnRfam9iKA0KPiAgICAgICAgICAgYnVmX3NpemUgPSBERUZBVUxUX01J UlJPUl9CVUZfU0laRTsNCj4gICAgICAgfQ0KPiAgIA0KPiAtICAgIGlmIChicyA9PSB0YXJnZXQp IHsNCj4gKyAgICBpZiAoYmRydl9za2lwX3J3X2ZpbHRlcnMoYnMpID09IGJkcnZfc2tpcF9yd19m aWx0ZXJzKHRhcmdldCkpIHsNCj4gICAgICAgICAgIGVycm9yX3NldGcoZXJycCwgIkNhbid0IG1p cnJvciBub2RlIGludG8gaXRzZWxmIik7DQo+ICAgICAgICAgICByZXR1cm4gTlVMTDsNCj4gICAg ICAgfQ0KPiBAQCAtMTYxNSwxNSArMTYyMCw1MCBAQCBzdGF0aWMgQmxvY2tKb2IgKm1pcnJvcl9z dGFydF9qb2IoDQo+ICAgICAgICAqIEluIHRoZSBjYXNlIG9mIGFjdGl2ZSBjb21taXQsIHRoaW5n cyBsb29rIGEgYml0IGRpZmZlcmVudCwgdGhvdWdoLA0KPiAgICAgICAgKiBiZWNhdXNlIHRoZSB0 YXJnZXQgaXMgYW4gYWxyZWFkeSBwb3B1bGF0ZWQgYmFja2luZyBmaWxlIGluIGFjdGl2ZSB1c2Uu DQo+ICAgICAgICAqIFdlIGNhbiBhbGxvdyBhbnl0aGluZyBleGNlcHQgcmVzaXplIHRoZXJlLiov DQo+ICsNCj4gKyAgICB0YXJnZXRfcGVybXMgPSBCTEtfUEVSTV9XUklURTsNCj4gKyAgICB0YXJn ZXRfc2hhcmVkX3Blcm1zID0gQkxLX1BFUk1fV1JJVEVfVU5DSEFOR0VEOw0KPiArDQo+ICAgICAg IHRhcmdldF9pc19iYWNraW5nID0gYmRydl9jaGFpbl9jb250YWlucyhicywgdGFyZ2V0KTsNCj4g LSAgICB0YXJnZXRfZ3JhcGhfbW9kID0gKGJhY2tpbmdfbW9kZSAhPSBNSVJST1JfTEVBVkVfQkFD S0lOR19DSEFJTik7DQo+ICsgICAgaWYgKHRhcmdldF9pc19iYWNraW5nKSB7DQo+ICsgICAgICAg IGludDY0X3QgYnNfc2l6ZSwgdGFyZ2V0X3NpemU7DQoNCjxlbXB0eSBhZnRlciBkZWZpbml0aW9u cz4NCg0KPiArICAgICAgICBic19zaXplID0gYmRydl9nZXRsZW5ndGgoYnMpOw0KPiArICAgICAg ICBpZiAoYnNfc2l6ZSA8IDApIHsNCj4gKyAgICAgICAgICAgIGVycm9yX3NldGdfZXJybm8oZXJy cCwgLWJzX3NpemUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3Qg aW5xdWlyZSB0b3AgaW1hZ2Ugc2l6ZSIpOw0KPiArICAgICAgICAgICAgZ290byBmYWlsOw0KPiAr ICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgdGFyZ2V0X3NpemUgPSBiZHJ2X2dldGxlbmd0aCh0 YXJnZXQpOw0KPiArICAgICAgICBpZiAodGFyZ2V0X3NpemUgPCAwKSB7DQo+ICsgICAgICAgICAg ICBlcnJvcl9zZXRnX2Vycm5vKGVycnAsIC10YXJnZXRfc2l6ZSwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBpbnF1aXJlIGJhc2UgaW1hZ2Ugc2l6ZSIpOw0KPiAr ICAgICAgICAgICAgZ290byBmYWlsOw0KPiArICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgaWYg KHRhcmdldF9zaXplIDwgYnNfc2l6ZSkgew0KPiArICAgICAgICAgICAgdGFyZ2V0X3Blcm1zIHw9 IEJMS19QRVJNX1JFU0laRTsNCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIHRhcmdldF9z aGFyZWRfcGVybXMgfD0gQkxLX1BFUk1fQ09OU0lTVEVOVF9SRUFEDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgQkxLX1BFUk1fV1JJVEUNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICBCTEtfUEVSTV9HUkFQSF9NT0Q7DQo+ICsgICAgfSBlbHNlIGlmIChiZHJ2X2No YWluX2NvbnRhaW5zKGJzLCBiZHJ2X3NraXBfcndfZmlsdGVycyh0YXJnZXQpKSkgew0KPiArICAg ICAgICAvKg0KPiArICAgICAgICAgKiBXZSBtYXkgd2FudCB0byBhbGxvdyB0aGlzIGluIHRoZSBm dXR1cmUsIGJ1dCBpdCB3b3VsZA0KPiArICAgICAgICAgKiByZXF1aXJlIHRha2luZyBzb21lIGV4 dHJhIGNhcmUuDQo+ICsgICAgICAgICAqLw0KPiArICAgICAgICBlcnJvcl9zZXRnKGVycnAsICJD YW5ub3QgbWlycm9yIHRvIGEgZmlsdGVyIG9uIHRvcCBvZiBhIG5vZGUgaW4gdGhlICINCj4gKyAg ICAgICAgICAgICAgICAgICAic291cmNlJ3MgYmFja2luZyBjaGFpbiIpOw0KPiArICAgICAgICBn b3RvIGZhaWw7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgaWYgKGJhY2tpbmdfbW9kZSAhPSBNSVJS T1JfTEVBVkVfQkFDS0lOR19DSEFJTikgew0KPiArICAgICAgICB0YXJnZXRfcGVybXMgfD0gQkxL X1BFUk1fR1JBUEhfTU9EOw0KPiArICAgIH0NCj4gKw0KPiAgICAgICBzLT50YXJnZXQgPSBibGtf bmV3KHMtPmNvbW1vbi5qb2IuYWlvX2NvbnRleHQsDQo+IC0gICAgICAgICAgICAgICAgICAgICAg ICBCTEtfUEVSTV9XUklURSB8IEJMS19QRVJNX1JFU0laRSB8DQo+IC0gICAgICAgICAgICAgICAg ICAgICAgICAodGFyZ2V0X2dyYXBoX21vZCA/IEJMS19QRVJNX0dSQVBIX01PRCA6IDApLA0KPiAt ICAgICAgICAgICAgICAgICAgICAgICAgQkxLX1BFUk1fV1JJVEVfVU5DSEFOR0VEIHwNCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICh0YXJnZXRfaXNfYmFja2luZyA/IEJMS19QRVJNX0NPTlNJ U1RFTlRfUkVBRCB8DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBCTEtfUEVSTV9XUklURSB8DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBCTEtfUEVSTV9HUkFQSF9NT0QgOiAwKSk7DQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICB0YXJnZXRfcGVybXMsIHRhcmdldF9zaGFyZWRfcGVybXMpOw0KPiAgICAgICBy ZXQgPSBibGtfaW5zZXJ0X2JzKHMtPnRhcmdldCwgdGFyZ2V0LCBlcnJwKTsNCj4gICAgICAgaWYg KHJldCA8IDApIHsNCj4gICAgICAgICAgIGdvdG8gZmFpbDsNCj4gQEAgLTE2NDcsNiArMTY4Nyw3 IEBAIHN0YXRpYyBCbG9ja0pvYiAqbWlycm9yX3N0YXJ0X2pvYigNCj4gICAgICAgcy0+YmFja2lu Z19tb2RlID0gYmFja2luZ19tb2RlOw0KPiAgICAgICBzLT5jb3B5X21vZGUgPSBjb3B5X21vZGU7 DQo+ICAgICAgIHMtPmJhc2UgPSBiYXNlOw0KPiArICAgIHMtPmJhc2Vfb3ZlcmxheSA9IGJkcnZf ZmluZF9vdmVybGF5KGJzLCBiYXNlKTsNCj4gICAgICAgcy0+Z3JhbnVsYXJpdHkgPSBncmFudWxh cml0eTsNCj4gICAgICAgcy0+YnVmX3NpemUgPSBST1VORF9VUChidWZfc2l6ZSwgZ3JhbnVsYXJp dHkpOw0KPiAgICAgICBzLT51bm1hcCA9IHVubWFwOw0KPiBAQCAtMTY5MywxNSArMTczNCwzOSBA QCBzdGF0aWMgQmxvY2tKb2IgKm1pcnJvcl9zdGFydF9qb2IoDQo+ICAgICAgIC8qIEluIGNvbW1p dF9hY3RpdmVfc3RhcnQoKSBhbGwgaW50ZXJtZWRpYXRlIG5vZGVzIGRpc2FwcGVhciwgc28NCj4g ICAgICAgICogYW55IGpvYnMgaW4gdGhlbSBtdXN0IGJlIGJsb2NrZWQgKi8NCj4gICAgICAgaWYg KHRhcmdldF9pc19iYWNraW5nKSB7DQo+IC0gICAgICAgIEJsb2NrRHJpdmVyU3RhdGUgKml0ZXI7 DQo+IC0gICAgICAgIGZvciAoaXRlciA9IGJhY2tpbmdfYnMoYnMpOyBpdGVyICE9IHRhcmdldDsg aXRlciA9IGJhY2tpbmdfYnMoaXRlcikpIHsNCj4gLSAgICAgICAgICAgIC8qIFhYWCBCTEtfUEVS TV9XUklURSBuZWVkcyB0byBiZSBhbGxvd2VkIHNvIHdlIGRvbid0IGJsb2NrDQo+IC0gICAgICAg ICAgICAgKiBvdXJzZWx2ZXMgYXQgcy0+YmFzZSAoaWYgd3JpdGVzIGFyZSBibG9ja2VkIGZvciBh IG5vZGUsIHRoZXkgYXJlDQo+IC0gICAgICAgICAgICAgKiBhbHNvIGJsb2NrZWQgZm9yIGl0cyBi YWNraW5nIGZpbGUpLiBUaGUgb3RoZXIgb3B0aW9ucyB3b3VsZCBiZSBhDQo+IC0gICAgICAgICAg ICAgKiBzZWNvbmQgZmlsdGVyIGRyaXZlciBhYm92ZSBzLT5iYXNlICg9PSB0YXJnZXQpLiAqLw0K PiArICAgICAgICBCbG9ja0RyaXZlclN0YXRlICppdGVyLCAqZmlsdGVyZWRfdGFyZ2V0Ow0KPiAr ICAgICAgICB1aW50NjRfdCBpdGVyX3NoYXJlZF9wZXJtczsNCj4gKw0KPiArICAgICAgICAvKg0K PiArICAgICAgICAgKiBUaGUgdG9wbW9zdCBub2RlIHdpdGgNCj4gKyAgICAgICAgICogYmRydl9z a2lwX3J3X2ZpbHRlcnMoZmlsdGVyZWRfdGFyZ2V0KSA9PSBiZHJ2X3NraXBfcndfZmlsdGVycyh0 YXJnZXQpDQo+ICsgICAgICAgICAqLw0KPiArICAgICAgICBmaWx0ZXJlZF90YXJnZXQgPSBiZHJ2 X2ZpbHRlcmVkX2Nvd19icyhiZHJ2X2ZpbmRfb3ZlcmxheShicywgdGFyZ2V0KSk7DQo+ICsNCj4g KyAgICAgICAgYXNzZXJ0KGJkcnZfc2tpcF9yd19maWx0ZXJzKGZpbHRlcmVkX3RhcmdldCkgPT0N Cj4gKyAgICAgICAgICAgICAgIGJkcnZfc2tpcF9yd19maWx0ZXJzKHRhcmdldCkpOw0KPiArDQo+ ICsgICAgICAgIC8qDQo+ICsgICAgICAgICAqIFhYWCBCTEtfUEVSTV9XUklURSBuZWVkcyB0byBi ZSBhbGxvd2VkIHNvIHdlIGRvbid0IGJsb2NrDQo+ICsgICAgICAgICAqIG91cnNlbHZlcyBhdCBz LT5iYXNlIChpZiB3cml0ZXMgYXJlIGJsb2NrZWQgZm9yIGEgbm9kZSwgdGhleSBhcmUNCj4gKyAg ICAgICAgICogYWxzbyBibG9ja2VkIGZvciBpdHMgYmFja2luZyBmaWxlKS4gVGhlIG90aGVyIG9w dGlvbnMgd291bGQgYmUgYQ0KPiArICAgICAgICAgKiBzZWNvbmQgZmlsdGVyIGRyaXZlciBhYm92 ZSBzLT5iYXNlICg9PSB0YXJnZXQpLg0KPiArICAgICAgICAgKi8NCj4gKyAgICAgICAgaXRlcl9z aGFyZWRfcGVybXMgPSBCTEtfUEVSTV9XUklURV9VTkNIQU5HRUQgfCBCTEtfUEVSTV9XUklURTsN Cj4gKw0KPiArICAgICAgICBmb3IgKGl0ZXIgPSBiZHJ2X2ZpbHRlcmVkX2JzKGJzKTsgaXRlciAh PSB0YXJnZXQ7DQo+ICsgICAgICAgICAgICAgaXRlciA9IGJkcnZfZmlsdGVyZWRfYnMoaXRlcikp DQo+ICsgICAgICAgIHsNCj4gKyAgICAgICAgICAgIGlmIChpdGVyID09IGZpbHRlcmVkX3Rhcmdl dCkgew0KPiArICAgICAgICAgICAgICAgIC8qDQo+ICsgICAgICAgICAgICAgICAgICogRnJvbSBo ZXJlIG9uLCBhbGwgbm9kZXMgYXJlIGZpbHRlcnMgb24gdGhlIGJhc2UuDQo+ICsgICAgICAgICAg ICAgICAgICogVGhpcyBhbGxvd3MgdXMgdG8gc2hhcmUgQkxLX1BFUk1fQ09OU0lTVEVOVF9SRUFE Lg0KDQpJJ2QgcHJlZmVyZSB0byBhZGQgc29tZXRoaW5nIGxpa2U6ICJiZWNhdXNlIHdlIHNoYXJl IGl0IG9uIHRhcmdldCAoc2VlIHRhcmdldCBCbG9ja0JhY2tlbmQgY3JlYXRpb24NCmFuZCBjb3Jy ZXNwb25kaW5nIGNvbW1lbnQgYWJvdmUpIi4NCg0KPiArICAgICAgICAgICAgICAgICAqLw0KPiAr ICAgICAgICAgICAgICAgIGl0ZXJfc2hhcmVkX3Blcm1zIHw9IEJMS19QRVJNX0NPTlNJU1RFTlRf UkVBRDsNCj4gKyAgICAgICAgICAgIH0NCj4gKw0KPiAgICAgICAgICAgICAgIHJldCA9IGJsb2Nr X2pvYl9hZGRfYmRydigmcy0+Y29tbW9uLCAiaW50ZXJtZWRpYXRlIG5vZGUiLCBpdGVyLCAwLA0K PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJMS19QRVJNX1dSSVRFX1VO Q0hBTkdFRCB8IEJMS19QRVJNX1dSSVRFLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVycnApOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGl0ZXJfc2hhcmVkX3Blcm1zLCBlcnJwKTsNCj4gICAgICAgICAgICAgICBpZiAocmV0IDwgMCkg ew0KPiAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7DQo+ICAgICAgICAgICAgICAgfQ0KPiBA QCAtMTczNyw3ICsxODAyLDcgQEAgZmFpbDoNCj4gICAgICAgYnNfb3BhcXVlLT5zdG9wID0gdHJ1 ZTsNCj4gICAgICAgYmRydl9jaGlsZF9yZWZyZXNoX3Blcm1zKG1pcnJvcl90b3BfYnMsIG1pcnJv cl90b3BfYnMtPmJhY2tpbmcsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJy b3JfYWJvcnQpOw0KPiAtICAgIGJkcnZfcmVwbGFjZV9ub2RlKG1pcnJvcl90b3BfYnMsIGJhY2tp bmdfYnMobWlycm9yX3RvcF9icyksICZlcnJvcl9hYm9ydCk7DQo+ICsgICAgYmRydl9yZXBsYWNl X25vZGUobWlycm9yX3RvcF9icywgbWlycm9yX3RvcF9icy0+YmFja2luZy0+YnMsICZlcnJvcl9h Ym9ydCk7DQo+ICAgDQo+ICAgICAgIGJkcnZfdW5yZWYobWlycm9yX3RvcF9icyk7DQo+ICAgDQo+ IEBAIC0xNzY0LDcgKzE4MjksNyBAQCB2b2lkIG1pcnJvcl9zdGFydChjb25zdCBjaGFyICpqb2Jf aWQsIEJsb2NrRHJpdmVyU3RhdGUgKmJzLA0KPiAgICAgICAgICAgcmV0dXJuOw0KPiAgICAgICB9 DQo+ICAgICAgIGlzX25vbmVfbW9kZSA9IG1vZGUgPT0gTUlSUk9SX1NZTkNfTU9ERV9OT05FOw0K PiAtICAgIGJhc2UgPSBtb2RlID09IE1JUlJPUl9TWU5DX01PREVfVE9QID8gYmFja2luZ19icyhi cykgOiBOVUxMOw0KPiArICAgIGJhc2UgPSBtb2RlID09IE1JUlJPUl9TWU5DX01PREVfVE9QID8g YmRydl9iYWNraW5nX2NoYWluX25leHQoYnMpIDogTlVMTDsNCj4gICAgICAgbWlycm9yX3N0YXJ0 X2pvYihqb2JfaWQsIGJzLCBjcmVhdGlvbl9mbGFncywgdGFyZ2V0LCByZXBsYWNlcywNCj4gICAg ICAgICAgICAgICAgICAgICAgICBzcGVlZCwgZ3JhbnVsYXJpdHksIGJ1Zl9zaXplLCBiYWNraW5n X21vZGUsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgb25fc291cmNlX2Vycm9yLCBvbl90YXJn ZXRfZXJyb3IsIHVubWFwLCBOVUxMLCBOVUxMLA0KPiBkaWZmIC0tZ2l0IGEvYmxvY2tkZXYuYyBi L2Jsb2NrZGV2LmMNCj4gaW5kZXggYzU0MDgwMjEyNy4uYzQ1MWY1NTNmNyAxMDA2NDQNCg0KDQpi bG9jay9taXJyb2MuYyBpcyBPSyBmb3IgbWUuIENvbnRpbnVlIHdpdGggYmxvY2tkZXYuYy4uLg0K DQo+IC0tLSBhL2Jsb2NrZGV2LmMNCj4gKysrIGIvYmxvY2tkZXYuYw0KPiBAQCAtMzg1MSw3ICsz ODUxLDcgQEAgc3RhdGljIHZvaWQgYmxvY2tkZXZfbWlycm9yX2NvbW1vbihjb25zdCBjaGFyICpq b2JfaWQsIEJsb2NrRHJpdmVyU3RhdGUgKmJzLA0KPiAgICAgICAgICAgcmV0dXJuOw0KPiAgICAg ICB9DQo+ICAgDQo+IC0gICAgaWYgKCFicy0+YmFja2luZyAmJiBzeW5jID09IE1JUlJPUl9TWU5D X01PREVfVE9QKSB7DQo+ICsgICAgaWYgKCFiZHJ2X2JhY2tpbmdfY2hhaW5fbmV4dChicykgJiYg c3luYyA9PSBNSVJST1JfU1lOQ19NT0RFX1RPUCkgew0KPiAgICAgICAgICAgc3luYyA9IE1JUlJP Ul9TWU5DX01PREVfRlVMTDsNCj4gICAgICAgfQ0KPiAgIA0KPiBAQCAtMzkwMCw3ICszOTAwLDcg QEAgc3RhdGljIHZvaWQgYmxvY2tkZXZfbWlycm9yX2NvbW1vbihjb25zdCBjaGFyICpqb2JfaWQs IEJsb2NrRHJpdmVyU3RhdGUgKmJzLA0KPiAgIA0KPiAgIHZvaWQgcW1wX2RyaXZlX21pcnJvcihE cml2ZU1pcnJvciAqYXJnLCBFcnJvciAqKmVycnApDQo+ICAgew0KPiAtICAgIEJsb2NrRHJpdmVy U3RhdGUgKmJzOw0KPiArICAgIEJsb2NrRHJpdmVyU3RhdGUgKmJzLCAqdW5maWx0ZXJlZF9iczsN Cj4gICAgICAgQmxvY2tEcml2ZXJTdGF0ZSAqc291cmNlLCAqdGFyZ2V0X2JzOw0KPiAgICAgICBB aW9Db250ZXh0ICphaW9fY29udGV4dDsNCj4gICAgICAgQmxvY2tNaXJyb3JCYWNraW5nTW9kZSBi YWNraW5nX21vZGU7DQo+IEBAIC0zOTA5LDYgKzM5MDksNyBAQCB2b2lkIHFtcF9kcml2ZV9taXJy b3IoRHJpdmVNaXJyb3IgKmFyZywgRXJyb3IgKiplcnJwKQ0KPiAgICAgICBpbnQgZmxhZ3M7DQo+ ICAgICAgIGludDY0X3Qgc2l6ZTsNCj4gICAgICAgY29uc3QgY2hhciAqZm9ybWF0ID0gYXJnLT5m b3JtYXQ7DQo+ICsgICAgY29uc3QgY2hhciAqcmVwbGFjZXNfbm9kZV9uYW1lID0gTlVMTDsNCj4g ICAgICAgaW50IHJldDsNCj4gICANCj4gICAgICAgYnMgPSBxbXBfZ2V0X3Jvb3RfYnMoYXJnLT5k ZXZpY2UsIGVycnApOw0KPiBAQCAtMzkyMSw2ICszOTIyLDE2IEBAIHZvaWQgcW1wX2RyaXZlX21p cnJvcihEcml2ZU1pcnJvciAqYXJnLCBFcnJvciAqKmVycnApDQo+ICAgICAgICAgICByZXR1cm47 DQo+ICAgICAgIH0NCj4gICANCj4gKyAgICAvKg0KPiArICAgICAqIElmIHRoZSB1c2VyIGhhcyBu b3QgaW5zdHJ1Y3RlZCB1cyBvdGhlcndpc2UsIHdlIHNob3VsZCBsZXQgdGhlDQo+ICsgICAgICog YmxvY2sgam9iIHJ1biBmcm9tIEBicyAodGh1cyB0YWtpbmcgaW50byBhY2NvdW50IGFsbCBmaWx0 ZXJzIG9uDQo+ICsgICAgICogaXQpIGJ1dCByZXBsYWNlIEB1bmZpbHRlcmVkX2JzIHdoZW4gaXQg ZmluaXNoZXMgKHRodXMgbm90DQo+ICsgICAgICogcmVtb3ZpbmcgdGhvc2UgZmlsdGVycykuDQo+ ICsgICAgICogKEFuZCBpZiB0aGVyZSBhcmUgYW55IGV4cGxpY2l0IGZpbHRlcnMsIHdlIHNob3Vs ZCBhc3N1bWUgdGhlDQo+ICsgICAgICogIHVzZXIga25vd3MgaG93IHRvIHVzZSB0aGUgQHJlcGxh Y2VzIG9wdGlvbi4pDQo+ICsgICAgICovDQo+ICsgICAgdW5maWx0ZXJlZF9icyA9IGJkcnZfc2tp cF9pbXBsaWNpdF9maWx0ZXJzKGJzKTsNCj4gKw0KPiAgICAgICBhaW9fY29udGV4dCA9IGJkcnZf Z2V0X2Fpb19jb250ZXh0KGJzKTsNCj4gICAgICAgYWlvX2NvbnRleHRfYWNxdWlyZShhaW9fY29u dGV4dCk7DQo+ICAgDQo+IEBAIC0zOTM0LDggKzM5NDUsMTQgQEAgdm9pZCBxbXBfZHJpdmVfbWly cm9yKERyaXZlTWlycm9yICphcmcsIEVycm9yICoqZXJycCkNCj4gICAgICAgfQ0KPiAgIA0KPiAg ICAgICBmbGFncyA9IGJzLT5vcGVuX2ZsYWdzIHwgQkRSVl9PX1JEV1I7DQo+IC0gICAgc291cmNl ID0gYmFja2luZ19icyhicyk7DQo+ICsgICAgc291cmNlID0gYmRydl9maWx0ZXJlZF9jb3dfYnMo dW5maWx0ZXJlZF9icyk7DQo+ICAgICAgIGlmICghc291cmNlICYmIGFyZy0+c3luYyA9PSBNSVJS T1JfU1lOQ19NT0RFX1RPUCkgew0KDQoNCkhtbSwgeW91IGhhbmRsZSB0aGlzIGNhc2UgYSBiaXQg ZGlmZmVyZW50bHkgaGVyZSBhbmQgaW4gYmxvY2tkZXZfbWlycm9yX2NvbW1vbi4uDQpDYW4gd2Ug aGFuZGxlIGl0IG9ubHkgaW4gYmxvY2tkZXZfbWlycm9yX2NvbW1vbiwgdG8gYmUgY29uc2lzdGVu dCB3aXRoIHFtcF9ibG9ja2Rldl9taXJyb3I/DQoNCj4gKyAgICAgICAgaWYgKGJkcnZfZmlsdGVy ZWRfYnModW5maWx0ZXJlZF9icykpIHsNCj4gKyAgICAgICAgICAgIC8qIEB1bmZpbHRlcmVkX2Jz IGlzIGFuIGV4cGxpY2l0IGZpbHRlciAqLw0KPiArICAgICAgICAgICAgZXJyb3Jfc2V0ZyhlcnJw LCAiQ2Fubm90IHBlcmZvcm0gc3luYz10b3AgbWlycm9yIHRocm91Z2ggYW4gIg0KPiArICAgICAg ICAgICAgICAgICAgICAgICAiZXhwbGljaXRseSBhZGRlZCBmaWx0ZXIgbm9kZSBvbiB0aGUgc291 cmNlIik7DQo+ICsgICAgICAgICAgICBnb3RvIG91dDsNCj4gKyAgICAgICAgfQ0KPiAgICAgICAg ICAgYXJnLT5zeW5jID0gTUlSUk9SX1NZTkNfTU9ERV9GVUxMOw0KPiAgICAgICB9DQo+ICAgICAg IGlmIChhcmctPnN5bmMgPT0gTUlSUk9SX1NZTkNfTU9ERV9OT05FKSB7DQo+IEBAIC0zOTU0LDYg KzM5NzEsOSBAQCB2b2lkIHFtcF9kcml2ZV9taXJyb3IoRHJpdmVNaXJyb3IgKmFyZywgRXJyb3Ig KiplcnJwKQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBuYW1lZCBub2RlIG9m IHRoZSBncmFwaCIpOw0KPiAgICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiAgICAgICAgICAgfQ0K PiArICAgICAgICByZXBsYWNlc19ub2RlX25hbWUgPSBhcmctPnJlcGxhY2VzOw0KPiArICAgIH0g ZWxzZSBpZiAodW5maWx0ZXJlZF9icyAhPSBicykgew0KPiArICAgICAgICByZXBsYWNlc19ub2Rl X25hbWUgPSB1bmZpbHRlcmVkX2JzLT5ub2RlX25hbWU7DQo+ICAgICAgIH0NCj4gICANCj4gICAg ICAgaWYgKGFyZy0+bW9kZSA9PSBORVdfSU1BR0VfTU9ERV9BQlNPTFVURV9QQVRIUykgew0KPiBA QCAtMzk3Myw2ICszOTkzLDkgQEAgdm9pZCBxbXBfZHJpdmVfbWlycm9yKERyaXZlTWlycm9yICph cmcsIEVycm9yICoqZXJycCkNCj4gICAgICAgICAgIGJkcnZfaW1nX2NyZWF0ZShhcmctPnRhcmdl dCwgZm9ybWF0LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEws IHNpemUsIGZsYWdzLCBmYWxzZSwgJmxvY2FsX2Vycik7DQo+ICAgICAgIH0gZWxzZSB7DQo+ICsg ICAgICAgIC8qIEltcGxpY2l0IGZpbHRlcnMgc2hvdWxkIG5vdCBhcHBlYXIgaW4gdGhlIGZpbGVu YW1lICovDQo+ICsgICAgICAgIEJsb2NrRHJpdmVyU3RhdGUgKmV4cGxpY2l0X2JhY2tpbmcgPSBi ZHJ2X3NraXBfaW1wbGljaXRfZmlsdGVycyhzb3VyY2UpOw0KPiArDQo+ICAgICAgICAgICBzd2l0 Y2ggKGFyZy0+bW9kZSkgew0KPiAgICAgICAgICAgY2FzZSBORVdfSU1BR0VfTU9ERV9FWElTVElO RzoNCj4gICAgICAgICAgICAgICBicmVhazsNCj4gQEAgLTM5ODAsOCArNDAwMyw4IEBAIHZvaWQg cW1wX2RyaXZlX21pcnJvcihEcml2ZU1pcnJvciAqYXJnLCBFcnJvciAqKmVycnApDQo+ICAgICAg ICAgICAgICAgLyogY3JlYXRlIG5ldyBpbWFnZSB3aXRoIGJhY2tpbmcgZmlsZSAqLw0KPiAgICAg ICAgICAgICAgIGJkcnZfcmVmcmVzaF9maWxlbmFtZShzb3VyY2UpOw0KPiAgICAgICAgICAgICAg IGJkcnZfaW1nX2NyZWF0ZShhcmctPnRhcmdldCwgZm9ybWF0LA0KPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNvdXJjZS0+ZmlsZW5hbWUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgc291cmNlLT5kcnYtPmZvcm1hdF9uYW1lLA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGV4cGxpY2l0X2JhY2tpbmctPmZpbGVuYW1lLA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGV4cGxpY2l0X2JhY2tpbmctPmRydi0+Zm9ybWF0X25hbWUsDQo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIHNpemUsIGZsYWdzLCBmYWxzZSwgJmxvY2FsX2Vy cik7DQo+ICAgICAgICAgICAgICAgYnJlYWs7DQo+ICAgICAgICAgICBkZWZhdWx0Og0KPiBAQCAt NDAxNyw3ICs0MDQwLDcgQEAgdm9pZCBxbXBfZHJpdmVfbWlycm9yKERyaXZlTWlycm9yICphcmcs IEVycm9yICoqZXJycCkNCj4gICAgICAgfQ0KPiAgIA0KPiAgICAgICBibG9ja2Rldl9taXJyb3Jf Y29tbW9uKGFyZy0+aGFzX2pvYl9pZCA/IGFyZy0+am9iX2lkIDogTlVMTCwgYnMsIHRhcmdldF9i cywNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy0+aGFzX3JlcGxhY2VzLCBhcmct PnJlcGxhY2VzLCBhcmctPnN5bmMsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAhIXJl cGxhY2VzX25vZGVfbmFtZSwgcmVwbGFjZXNfbm9kZV9uYW1lLCBhcmctPnN5bmMsDQo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYmFja2luZ19tb2RlLCBhcmctPmhhc19zcGVlZCwgYXJn LT5zcGVlZCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPmhhc19ncmFudWxh cml0eSwgYXJnLT5ncmFudWxhcml0eSwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh cmctPmhhc19idWZfc2l6ZSwgYXJnLT5idWZfc2l6ZSwNCj4gQEAgLTQwNTMsNyArNDA3Niw3IEBA IHZvaWQgcW1wX2Jsb2NrZGV2X21pcnJvcihib29sIGhhc19qb2JfaWQsIGNvbnN0IGNoYXIgKmpv Yl9pZCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYXNfYXV0b19kaXNtaXNz LCBib29sIGF1dG9fZGlzbWlzcywNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3Ig KiplcnJwKQ0KPiAgIHsNCj4gLSAgICBCbG9ja0RyaXZlclN0YXRlICpiczsNCj4gKyAgICBCbG9j a0RyaXZlclN0YXRlICpicywgKnVuZmlsdGVyZWRfYnM7DQo+ICAgICAgIEJsb2NrRHJpdmVyU3Rh dGUgKnRhcmdldF9iczsNCj4gICAgICAgQWlvQ29udGV4dCAqYWlvX2NvbnRleHQ7DQo+ICAgICAg IEJsb2NrTWlycm9yQmFja2luZ01vZGUgYmFja2luZ19tb2RlID0gTUlSUk9SX0xFQVZFX0JBQ0tJ TkdfQ0hBSU47DQo+IEBAIC00MDY1LDYgKzQwODgsMTYgQEAgdm9pZCBxbXBfYmxvY2tkZXZfbWly cm9yKGJvb2wgaGFzX2pvYl9pZCwgY29uc3QgY2hhciAqam9iX2lkLA0KPiAgICAgICAgICAgcmV0 dXJuOw0KPiAgICAgICB9DQo+ICAgDQo+ICsgICAgLyoNCj4gKyAgICAgKiBTYW1lIGFzIGluIHFt cF9kcml2ZV9taXJyb3IoKToNCg0KVGhlbiwgbWF5IGJlIGJldHRlciBkbyBpdCBpbiBibG9ja2Rl dl9taXJyb3JfY29tbW9uID8NCg0KPiBXZSB3YW50IHRvIHJ1biB0aGUgam9iIGZyb20gQGJzLA0K PiArICAgICAqIGJ1dCB3ZSB3YW50IHRvIHJlcGxhY2UgQHVuZmlsdGVyZWRfYnMgb24gY29tcGxl dGlvbi4NCj4gKyAgICAgKi8NCj4gKyAgICB1bmZpbHRlcmVkX2JzID0gYmRydl9za2lwX2ltcGxp Y2l0X2ZpbHRlcnMoYnMpOw0KPiArICAgIGlmICghaGFzX3JlcGxhY2VzICYmIHVuZmlsdGVyZWRf YnMgIT0gYnMpIHsNCj4gKyAgICAgICAgcmVwbGFjZXMgPSB1bmZpbHRlcmVkX2JzLT5ub2RlX25h bWU7DQo+ICsgICAgICAgIGhhc19yZXBsYWNlcyA9IHRydWU7DQo+ICsgICAgfQ0KPiArDQo+ICAg ICAgIHRhcmdldF9icyA9IGJkcnZfbG9va3VwX2JzKHRhcmdldCwgdGFyZ2V0LCBlcnJwKTsNCj4g ICAgICAgaWYgKCF0YXJnZXRfYnMpIHsNCj4gICAgICAgICAgIHJldHVybjsNCj4gDQoNCg0KLS0g DQpCZXN0IHJlZ2FyZHMsDQpWbGFkaW1pcg0K