From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 15F4DA0526; Wed, 8 Jul 2020 16:08:06 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id AB0BD1DB08; Wed, 8 Jul 2020 16:08:05 +0200 (CEST) Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10078.outbound.protection.outlook.com [40.107.1.78]) by dpdk.org (Postfix) with ESMTP id 8B52C1D5F9 for ; Wed, 8 Jul 2020 16:08:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4a6bj4hl79ZYeTGxWJN7k6SwzqPc7htuLMAVtL6Fnrw=; b=xWV0KB0ETiab/IagF1vsdC67zNhzk8q1A5/54WxJ6rikHINJQAIhR5ssbXdVVmVv37CtYxGCK5tdtUXa0z41Y/VI5H17vwI4T8umZPM6Hj+rxh/r1WDbCl0c60aOF43CG9xsjTNz8Mihby5DT+nyJ14Pfeibw6gzmreJgB01374= Received: from AM0PR10CA0060.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:150::40) by VI1PR08MB3582.eurprd08.prod.outlook.com (2603:10a6:803:89::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3153.24; Wed, 8 Jul 2020 14:08:01 +0000 Received: from VE1EUR03FT004.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:150:cafe::8e) by AM0PR10CA0060.outlook.office365.com (2603:10a6:20b:150::40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3153.23 via Frontend Transport; Wed, 8 Jul 2020 14:08:01 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dpdk.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dpdk.org; dmarc=bestguesspass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT004.mail.protection.outlook.com (10.152.18.106) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.21 via Frontend Transport; Wed, 8 Jul 2020 14:08:00 +0000 Received: ("Tessian outbound 1c27ecaec3d6:v62"); Wed, 08 Jul 2020 14:08:00 +0000 X-CR-MTA-TID: 64aa7808 Received: from a144ca08809d.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id DB75D877-0ABC-49D2-803E-8F74FB5EC0D9.1; Wed, 08 Jul 2020 14:07:55 +0000 Received: from EUR04-DB3-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id a144ca08809d.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 08 Jul 2020 14:07:55 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ot+HTFGFpgef772O9WgU9eaeH1NmrpRbBgmsMxMuIglNwndDnfbENBPNt6vhFJs0UIWBcsaWSxCD22LoN/WSkoiMmYA95lLXPTiMH5Mv17uflAPlPUNBv/nSonFLX/YCEkbrHKr7OHnz6mRic6N9e8WNFILJOyYoN24TPo+Svuh7OiVjsTDxksAHLXyOY3c6Xq2A1FoUqNQtNG4F2A8lq2UiHSe0kWPa+2HpdG8N7x0TUJ3mEfPDiyg11fbkio1c71qOzmrxmFhw7V5RQs2RFdl6dXXoVDGk4z1N6skwtCFI5kY8UaeZDLaCLRryecV/bvuXthxwa7pwED4nLRC2OQ== 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=4a6bj4hl79ZYeTGxWJN7k6SwzqPc7htuLMAVtL6Fnrw=; b=h+aMIizGkLm3HqR+JtFc2pGelhlp/qLBY6TAXv7kBqSIgusNcetv3QEh2EnbAjfsEdZLI3iQgFDgxG6LU27/6+7qnDCM0go6UmC8VKQ5FZ6wUECXcAjXWK2tp8V6jCH3tHfpazrNpLJP0D0oIJTDIth41XDW4a8tD1vcO2CvYS2zt16BnoSXC0tYSmCeedFBommOHUaZyijr3f3U/DjL5f4QZUhL5vgqoUIyf6foKqGH86Mpk1Gp0uRWtywnWPvSYpmlaGa8f3FVDABFa+KH52rDtOjBh9cWAY7oK+eMmZJukmcCJX62xCMuoC3hgn1PCc87E0fA1BU+E4phfQ3SrA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4a6bj4hl79ZYeTGxWJN7k6SwzqPc7htuLMAVtL6Fnrw=; b=xWV0KB0ETiab/IagF1vsdC67zNhzk8q1A5/54WxJ6rikHINJQAIhR5ssbXdVVmVv37CtYxGCK5tdtUXa0z41Y/VI5H17vwI4T8umZPM6Hj+rxh/r1WDbCl0c60aOF43CG9xsjTNz8Mihby5DT+nyJ14Pfeibw6gzmreJgB01374= Received: from HE1PR0801MB2025.eurprd08.prod.outlook.com (2603:10a6:3:50::14) by HE1PR0802MB2507.eurprd08.prod.outlook.com (2603:10a6:3:e1::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3153.29; Wed, 8 Jul 2020 14:07:52 +0000 Received: from HE1PR0801MB2025.eurprd08.prod.outlook.com ([fe80::e863:15c9:b803:6533]) by HE1PR0801MB2025.eurprd08.prod.outlook.com ([fe80::e863:15c9:b803:6533%7]) with mapi id 15.20.3174.021; Wed, 8 Jul 2020 14:07:52 +0000 From: Ruifeng Wang To: "Medvedkin, Vladimir" , Bruce Richardson CC: "dev@dpdk.org" , "mdr@ashroe.eu" , "konstantin.ananyev@intel.com" , Honnappa Nagarahalli , nd , nd Thread-Topic: [PATCH v7 3/3] test/lpm: add RCU integration performance tests Thread-Index: AQHWVSSlehTbtexTd0aaNHYNJ7Fa1Kj9tq+A Date: Wed, 8 Jul 2020 14:07:51 +0000 Message-ID: References: <20190906094534.36060-1-ruifeng.wang@arm.com> <20200707151554.64431-1-ruifeng.wang@arm.com> <20200707151554.64431-4-ruifeng.wang@arm.com> <0f200402-18e3-93f8-dc8f-a0f254c65032@intel.com> In-Reply-To: <0f200402-18e3-93f8-dc8f-a0f254c65032@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: ec46f98f-0757-48da-ab5d-d4cc1ede8eb1.0 x-checkrecipientchecked: true Authentication-Results-Original: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [203.126.0.113] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 303277ea-7d22-499f-d571-08d8234852f3 x-ms-traffictypediagnostic: HE1PR0802MB2507:|VI1PR08MB3582: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:4941;OLM:4941; x-forefront-prvs: 04583CED1A X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: ikKLk6sX5zqQUevBiWZ6UqsDPx5ksjyurpinpiFsYtyH4MFSi07wVbzOhGVbk6hwAOQeRMqUR2sw+jDhzWLTGBemXv9UQJpNZJyfcQTa++AUuBASpNLxTIdi9kzjgEV/7Pvc49aqQoCLD2kfFV3ORJyVvbnV1LlE3zxWAFW+OpeVPeT8u/3Gj0Fie8Pfc9C1B9LiDXRvj/rgEPDmY2Qrebgta3Y26KamFwGbIDdikD+xpunBSrQWw6pRIKJdiNdNFyaipKJw4373F8mBHy8tyO2hNXu+x7ugdBQyceLwridI6vY29usYpXqZ20b/oaxl X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:HE1PR0801MB2025.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(346002)(136003)(396003)(376002)(39860400002)(366004)(26005)(7696005)(4326008)(186003)(86362001)(9686003)(55016002)(33656002)(110136005)(54906003)(316002)(30864003)(8676002)(8936002)(76116006)(6506007)(83380400001)(53546011)(64756008)(66556008)(66476007)(66446008)(66946007)(5660300002)(52536014)(71200400001)(478600001)(2906002)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: WoKn+GLXr24taE/MebodL9cJ9w9OMMKCFtQSlWAk5XOKhR+APwBqVdVbHxE7rcwd92BcO2RQTo+10GzfZjKrM/pcsw0uVa9fgSbxFo5qzzpejAQIyCoXNbc3LCRqiZC90/OOYn6QAdutYdxPEy2oYrZbI4ws5kQdFT99/2FJtPEl0LTdlSqNAvcynPjxuJ8pmKgS5qHKDzgBXB7r9ar85HVGOjYBKjJ0nuTkNBEExftrL29CJxJ82Bx10Z4E/cuUBITKJUpWSzKLj6MAhdzJooKNKIeJIAT+2rOXofzIQAX40X7jfcmbWNND3hpnv4lJO8MiuPJ4fAAZFWn7nLbfMaTF9P/sHFbJ/EccLhVNuKg2qPXGTLDln/DiN9vONi2uaBvM0TU0l8pxo4XYHochj/G5GzT7CBcDKe1C5c9r6pavhXJDZCVMTAvyzw6ePkfWHNqVHt7oDx0wIuyYnQiJpZg6G7Gz7FxftxUQtdFbF5I= MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0802MB2507 Original-Authentication-Results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT004.eop-EUR03.prod.protection.outlook.com X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFTY:; SFS:(4636009)(396003)(39860400002)(376002)(136003)(346002)(46966005)(9686003)(5660300002)(52536014)(81166007)(8936002)(336012)(316002)(82310400002)(70206006)(86362001)(356005)(30864003)(36906005)(70586007)(47076004)(186003)(82740400003)(33964004)(53546011)(110136005)(2906002)(8676002)(54906003)(478600001)(55016002)(7696005)(26005)(33656002)(4326008)(6506007)(83380400001)(559001)(579004); DIR:OUT; SFP:1101; X-MS-Office365-Filtering-Correlation-Id-Prvs: d41a4f6d-17c4-4d2c-c652-08d823484dbc X-Forefront-PRVS: 04583CED1A X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: CqNYtJsnc7B/ovi8DVLDblvhNfqVhT1dUiM584DpcHYe5z82wN2QnKht7x1cu1KYy8HZPmOuWjsO+PcQKR+EkHDioqMvFDjAnxJiNziT54N1AcennU6HZqdog/3ejaEiC6n6olebdI1GCFKGi8a9O9VEt3gFzRbW197w8XPsqocKCuHOEfia35VzXqoh0QbVImmuwJN4xxBKUHB9QeRha/HVWt71+zkxzTpRcwGDsBpufWCcbfzMURcFv0bdUqvvzQlt3P8+W061A+Exy//3Mjv5gvuOs46vGEg10KK1teQjxXGP+Xj0DSNMgAkRIdd6hrvJT23bHYPNh19cS51CIiDQLROc1oFNVktTgi4OPmZFG0jjtOd1Hz8Rl47kKOpOqw0+Ad98495/ZAnffHxVgA== X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jul 2020 14:08:00.7765 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 303277ea-7d22-499f-d571-08d8234852f3 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT004.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB3582 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [PATCH v7 3/3] test/lpm: add RCU integration performance tests X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" DQpGcm9tOiBNZWR2ZWRraW4sIFZsYWRpbWlyIDx2bGFkaW1pci5tZWR2ZWRraW5AaW50ZWwuY29t Pg0KU2VudDogV2VkbmVzZGF5LCBKdWx5IDgsIDIwMjAgODozNyBQTQ0KVG86IFJ1aWZlbmcgV2Fu ZyA8UnVpZmVuZy5XYW5nQGFybS5jb20+OyBCcnVjZSBSaWNoYXJkc29uIDxicnVjZS5yaWNoYXJk c29uQGludGVsLmNvbT4NCkNjOiBkZXZAZHBkay5vcmc7IG1kckBhc2hyb2UuZXU7IGtvbnN0YW50 aW4uYW5hbnlldkBpbnRlbC5jb207IEhvbm5hcHBhIE5hZ2FyYWhhbGxpIDxIb25uYXBwYS5OYWdh cmFoYWxsaUBhcm0uY29tPjsgbmQgPG5kQGFybS5jb20+DQpTdWJqZWN0OiBSZTogW1BBVENIIHY3 IDMvM10gdGVzdC9scG06IGFkZCBSQ1UgaW50ZWdyYXRpb24gcGVyZm9ybWFuY2UgdGVzdHMNCg0K DQoNCk9uIDA3LzA3LzIwMjAgMTY6MTUsIFJ1aWZlbmcgV2FuZyB3cm90ZToNCg0KRnJvbTogSG9u bmFwcGEgTmFnYXJhaGFsbGkgPGhvbm5hcHBhLm5hZ2FyYWhhbGxpQGFybS5jb20+PG1haWx0bzpo b25uYXBwYS5uYWdhcmFoYWxsaUBhcm0uY29tPg0KDQoNCg0KQWRkIHBlcmZvcm1hbmNlIHRlc3Rz IGZvciBSQ1UgaW50ZWdyYXRpb24uIFRoZSBwZXJmb3JtYW5jZQ0KDQpkaWZmZXJlbmNlIHdpdGgg YW5kIHdpdGhvdXQgUkNVIGludGVncmF0aW9uIGlzIHZlcnkgc21hbGwNCg0KKH4xJSB0byB+MiUp IG9uIGJvdGggQXJtIGFuZCB4ODYgcGxhdGZvcm1zLg0KDQoNCg0KU2lnbmVkLW9mZi1ieTogSG9u bmFwcGEgTmFnYXJhaGFsbGkgPGhvbm5hcHBhLm5hZ2FyYWhhbGxpQGFybS5jb20+PG1haWx0bzpo b25uYXBwYS5uYWdhcmFoYWxsaUBhcm0uY29tPg0KDQpSZXZpZXdlZC1ieTogR2F2aW4gSHUgPGdh dmluLmh1QGFybS5jb20+PG1haWx0bzpnYXZpbi5odUBhcm0uY29tPg0KDQpSZXZpZXdlZC1ieTog UnVpZmVuZyBXYW5nIDxydWlmZW5nLndhbmdAYXJtLmNvbT48bWFpbHRvOnJ1aWZlbmcud2FuZ0Bh cm0uY29tPg0KDQotLS0NCg0KIGFwcC90ZXN0L3Rlc3RfbHBtX3BlcmYuYyB8IDQ5MiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0NCg0KIDEgZmlsZSBjaGFuZ2VkLCA0ODkg aW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkNCg0KDQoNCmRpZmYgLS1naXQgYS9hcHAvdGVz dC90ZXN0X2xwbV9wZXJmLmMgYi9hcHAvdGVzdC90ZXN0X2xwbV9wZXJmLmMNCg0KaW5kZXggNDg5 NzE5YzQwLi5kZmUxODY0MjYgMTAwNjQ0DQoNCi0tLSBhL2FwcC90ZXN0L3Rlc3RfbHBtX3BlcmYu Yw0KDQorKysgYi9hcHAvdGVzdC90ZXN0X2xwbV9wZXJmLmMNCg0KQEAgLTEsNSArMSw2IEBADQoN CiAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQoNCiAgKiBDb3B5cmln aHQoYykgMjAxMC0yMDE0IEludGVsIENvcnBvcmF0aW9uDQoNCisgKiBDb3B5cmlnaHQoYykgMjAy MCBBcm0gTGltaXRlZA0KDQogICovDQoNCg0KDQogI2luY2x1ZGUgPHN0ZGlvLmg+DQoNCkBAIC0x MCwxMiArMTEsMjcgQEANCg0KICNpbmNsdWRlIDxydGVfY3ljbGVzLmg+DQoNCiAjaW5jbHVkZSA8 cnRlX3JhbmRvbS5oPg0KDQogI2luY2x1ZGUgPHJ0ZV9icmFuY2hfcHJlZGljdGlvbi5oPg0KDQor I2luY2x1ZGUgPHJ0ZV9tYWxsb2MuaD4NCg0KICNpbmNsdWRlIDxydGVfaXAuaD4NCg0KICNpbmNs dWRlIDxydGVfbHBtLmg+DQoNCg0KDQogI2luY2x1ZGUgInRlc3QuaCINCg0KICNpbmNsdWRlICJ0 ZXN0X3htbXRfb3BzLmgiDQoNCg0KDQorc3RydWN0IHJ0ZV9scG0gKmxwbTsNCg0KK3N0YXRpYyBz dHJ1Y3QgcnRlX3JjdV9xc2JyICpydjsNCg0KK3N0YXRpYyB2b2xhdGlsZSB1aW50OF90IHdyaXRl cl9kb25lOw0KDQorc3RhdGljIHZvbGF0aWxlIHVpbnQzMl90IHRocl9pZDsNCg0KK3N0YXRpYyB1 aW50NjRfdCBnd3JpdGVfY3ljbGVzOw0KDQorc3RhdGljIHVpbnQ2NF90IGd3cml0ZXM7DQoNCisv KiBMUE0gQVBJcyBhcmUgbm90IHRocmVhZCBzYWZlLCB1c2UgbXV0ZXggdG8gcHJvdmlkZSB0aHJl YWQgc2FmZXR5ICovDQoNCitzdGF0aWMgcHRocmVhZF9tdXRleF90IGxwbV9tdXRleCA9IFBUSFJF QURfTVVURVhfSU5JVElBTElaRVI7DQoNCisNCg0KKy8qIFJlcG9ydCBxdWllc2NlbnQgc3RhdGUg aW50ZXJ2YWwgZXZlcnkgMTAyNCBsb29rdXBzLiBMYXJnZXIgY3JpdGljYWwNCg0KKyAqIHNlY3Rp b25zIGluIHJlYWRlciB3aWxsIHJlc3VsdCBpbiB3cml0ZXIgcG9sbGluZyBtdWx0aXBsZSB0aW1l cy4NCg0KKyAqLw0KDQorI2RlZmluZSBRU0JSX1JFUE9SVElOR19JTlRFUlZBTCAxMDI0DQoNCisN Cg0KICNkZWZpbmUgVEVTVF9MUE1fQVNTRVJUKGNvbmQpIGRvIHsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCg0KICAgICAgICBpZiAoIShjb25kKSkgeyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KDQog ICAgICAgICAgICAgICAgcHJpbnRmKCJFcnJvciBhdCBsaW5lICVkOiBcbiIsIF9fTElORV9fKTsg ICAgICAgICAgICAgICAgICAgICBcDQoNCkBAIC0yNCw2ICs0MCw3IEBADQoNCiB9IHdoaWxlKDAp DQoNCg0KDQogI2RlZmluZSBJVEVSQVRJT05TICgxIDw8IDEwKQ0KDQorI2RlZmluZSBSQ1VfSVRF UkFUSU9OUyAxMA0KDQogI2RlZmluZSBCQVRDSF9TSVpFICgxIDw8IDEyKQ0KDQogI2RlZmluZSBC VUxLX1NJWkUgMzINCg0KDQoNCkBAIC0zNSw5ICs1MiwxMyBAQCBzdHJ1Y3Qgcm91dGVfcnVsZSB7 DQoNCiB9Ow0KDQoNCg0KIHN0YXRpYyBzdHJ1Y3Qgcm91dGVfcnVsZSBsYXJnZV9yb3V0ZV90YWJs ZVtNQVhfUlVMRV9OVU1dOw0KDQorLyogUm91dGUgdGFibGUgZm9yIHJvdXRlcyB3aXRoIGRlcHRo ID4gMjQgKi8NCg0KK3N0cnVjdCByb3V0ZV9ydWxlIGxhcmdlX2xkZXB0aF9yb3V0ZV90YWJsZVtN QVhfUlVMRV9OVU1dOw0KDQoNCg0KIHN0YXRpYyB1aW50MzJfdCBudW1fcm91dGVfZW50cmllczsN Cg0KK3N0YXRpYyB1aW50MzJfdCBudW1fbGRlcHRoX3JvdXRlX2VudHJpZXM7DQoNCiAjZGVmaW5l IE5VTV9ST1VURV9FTlRSSUVTIG51bV9yb3V0ZV9lbnRyaWVzDQoNCisjZGVmaW5lIE5VTV9MREVQ VEhfUk9VVEVfRU5UUklFUyBudW1fbGRlcHRoX3JvdXRlX2VudHJpZXMNCg0KDQoNCiBlbnVtIHsN Cg0KICAgICAgICBJUF9DTEFTU19BLA0KDQpAQCAtMTkxLDcgKzIxMiw3IEBAIHN0YXRpYyB2b2lk IGdlbmVyYXRlX3JhbmRvbV9ydWxlX3ByZWZpeCh1aW50MzJfdCBpcF9jbGFzcywgdWludDhfdCBk ZXB0aCkNCg0KICAgICAgICB1aW50MzJfdCBpcF9oZWFkX21hc2s7DQoNCiAgICAgICAgdWludDMy X3QgcnVsZV9udW07DQoNCiAgICAgICAgdWludDMyX3QgazsNCg0KLSAgICAgICBzdHJ1Y3Qgcm91 dGVfcnVsZSAqcHRyX3J1bGU7DQoNCisgICAgICAgc3RydWN0IHJvdXRlX3J1bGUgKnB0cl9ydWxl LCAqcHRyX2xkZXB0aF9ydWxlOw0KDQoNCg0KICAgICAgICBpZiAoaXBfY2xhc3MgPT0gSVBfQ0xB U1NfQSkgeyAgICAgICAgLyogSVAgQWRkcmVzcyBjbGFzcyBBICovDQoNCiAgICAgICAgICAgICAg ICBmaXhlZF9iaXRfbnVtID0gSVBfSEVBRF9CSVRfTlVNX0E7DQoNCkBAIC0yMzYsMTAgKzI1Nywy MCBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZV9yYW5kb21fcnVsZV9wcmVmaXgodWludDMyX3QgaXBf Y2xhc3MsIHVpbnQ4X3QgZGVwdGgpDQoNCiAgICAgICAgICovDQoNCiAgICAgICAgc3RhcnQgPSBs cmFuZDQ4KCkgJiBtYXNrOw0KDQogICAgICAgIHB0cl9ydWxlID0gJmxhcmdlX3JvdXRlX3RhYmxl W251bV9yb3V0ZV9lbnRyaWVzXTsNCg0KKyAgICAgICBwdHJfbGRlcHRoX3J1bGUgPSAmbGFyZ2Vf bGRlcHRoX3JvdXRlX3RhYmxlW251bV9sZGVwdGhfcm91dGVfZW50cmllc107DQoNCiAgICAgICAg Zm9yIChrID0gMDsgayA8IHJ1bGVfbnVtOyBrKyspIHsNCg0KICAgICAgICAgICAgICAgIHB0cl9y dWxlLT5pcCA9IChzdGFydCA8PCAoUlRFX0xQTV9NQVhfREVQVEggLSBkZXB0aCkpDQoNCiAgICAg ICAgICAgICAgICAgICAgICAgIHwgaXBfaGVhZF9tYXNrOw0KDQogICAgICAgICAgICAgICAgcHRy X3J1bGUtPmRlcHRoID0gZGVwdGg7DQoNCisgICAgICAgICAgICAgICAvKiBJZiB0aGUgZGVwdGgg b2YgdGhlIHJvdXRlIGlzIG1vcmUgdGhhbiAyNCwgc3RvcmUgaXQNCg0KKyAgICAgICAgICAgICAg ICAqIGluIGFub3RoZXIgdGFibGUgYXMgd2VsbC4NCg0KKyAgICAgICAgICAgICAgICAqLw0KDQor ICAgICAgICAgICAgICAgaWYgKGRlcHRoID4gMjQpIHsNCg0KKyAgICAgICAgICAgICAgICAgICAg ICAgcHRyX2xkZXB0aF9ydWxlLT5pcCA9IHB0cl9ydWxlLT5pcDsNCg0KKyAgICAgICAgICAgICAg ICAgICAgICAgcHRyX2xkZXB0aF9ydWxlLT5kZXB0aCA9IHB0cl9ydWxlLT5kZXB0aDsNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgcHRyX2xkZXB0aF9ydWxlKys7DQoNCisgICAgICAgICAgICAg ICAgICAgICAgIG51bV9sZGVwdGhfcm91dGVfZW50cmllcysrOw0KDQorICAgICAgICAgICAgICAg fQ0KDQogICAgICAgICAgICAgICAgcHRyX3J1bGUrKzsNCg0KICAgICAgICAgICAgICAgIHN0YXJ0 ID0gKHN0YXJ0ICsgc3RlcCkgJiBtYXNrOw0KDQogICAgICAgIH0NCg0KQEAgLTI3Myw2ICszMDQs NyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZV9sYXJnZV9yb3V0ZV9ydWxlX3RhYmxlKHZvaWQpDQoN CiAgICAgICAgdWludDhfdCAgZGVwdGg7DQoNCg0KDQogICAgICAgIG51bV9yb3V0ZV9lbnRyaWVz ID0gMDsNCg0KKyAgICAgICBudW1fbGRlcHRoX3JvdXRlX2VudHJpZXMgPSAwOw0KDQogICAgICAg IG1lbXNldChsYXJnZV9yb3V0ZV90YWJsZSwgMCwgc2l6ZW9mKGxhcmdlX3JvdXRlX3RhYmxlKSk7 DQoNCg0KDQogICAgICAgIGZvciAoaXBfY2xhc3MgPSBJUF9DTEFTU19BOyBpcF9jbGFzcyA8PSBJ UF9DTEFTU19DOyBpcF9jbGFzcysrKSB7DQoNCkBAIC0zMTYsMTAgKzM0OCw0NjAgQEAgcHJpbnRf cm91dGVfZGlzdHJpYnV0aW9uKGNvbnN0IHN0cnVjdCByb3V0ZV9ydWxlICp0YWJsZSwgdWludDMy X3QgbikNCg0KICAgICAgICBwcmludGYoIlxuIik7DQoNCiB9DQoNCg0KDQorLyogQ2hlY2sgY29u ZGl0aW9uIGFuZCByZXR1cm4gYW4gZXJyb3IgaWYgdHJ1ZS4gKi8NCg0KK3N0YXRpYyB1aW50MTZf dCBlbmFibGVkX2NvcmVfaWRzW1JURV9NQVhfTENPUkVdOw0KDQorc3RhdGljIHVuc2lnbmVkIGlu dCBudW1fY29yZXM7DQoNCisNCg0KKy8qIFNpbXBsZSB3YXkgdG8gYWxsb2NhdGUgdGhyZWFkIGlk cyBpbiAwIHRvIFJURV9NQVhfTENPUkUgc3BhY2UgKi8NCg0KK3N0YXRpYyBpbmxpbmUgdWludDMy X3QNCg0KK2FsbG9jX3RocmVhZF9pZCh2b2lkKQ0KDQorew0KDQorICAgICAgIHVpbnQzMl90IHRt cF90aHJfaWQ7DQoNCisNCg0KKyAgICAgICB0bXBfdGhyX2lkID0gX19hdG9taWNfZmV0Y2hfYWRk KCZ0aHJfaWQsIDEsIF9fQVRPTUlDX1JFTEFYRUQpOw0KDQorICAgICAgIGlmICh0bXBfdGhyX2lk ID49IFJURV9NQVhfTENPUkUpDQoNCisgICAgICAgICAgICAgICBwcmludGYoIkludmFsaWQgdGhy ZWFkIGlkICV1XG4iLCB0bXBfdGhyX2lkKTsNCg0KKw0KDQorICAgICAgIHJldHVybiB0bXBfdGhy X2lkOw0KDQorfQ0KDQorDQoNCisvKg0KDQorICogUmVhZGVyIHRocmVhZCB1c2luZyBydGVfbHBt IGRhdGEgc3RydWN0dXJlIHdpdGhvdXQgUkNVLg0KDQorICovDQoNCitzdGF0aWMgaW50DQoNCit0 ZXN0X2xwbV9yZWFkZXIodm9pZCAqYXJnKQ0KDQorew0KDQorICAgICAgIGludCBpOw0KDQorICAg ICAgIHVpbnQzMl90IGlwX2JhdGNoW1FTQlJfUkVQT1JUSU5HX0lOVEVSVkFMXTsNCg0KKyAgICAg ICB1aW50MzJfdCBuZXh0X2hvcF9yZXR1cm4gPSAwOw0KDQorDQoNCisgICAgICAgUlRFX1NFVF9V U0VEKGFyZyk7DQoNCisgICAgICAgZG8gew0KDQorICAgICAgICAgICAgICAgZm9yIChpID0gMDsg aSA8IFFTQlJfUkVQT1JUSU5HX0lOVEVSVkFMOyBpKyspDQoNCisgICAgICAgICAgICAgICAgICAg ICAgIGlwX2JhdGNoW2ldID0gcnRlX3JhbmQoKTsNCg0KKw0KDQorICAgICAgICAgICAgICAgZm9y IChpID0gMDsgaSA8IFFTQlJfUkVQT1JUSU5HX0lOVEVSVkFMOyBpKyspDQoNCisgICAgICAgICAg ICAgICAgICAgICAgIHJ0ZV9scG1fbG9va3VwKGxwbSwgaXBfYmF0Y2hbaV0sICZuZXh0X2hvcF9y ZXR1cm4pOw0KDQorDQoNCisgICAgICAgfSB3aGlsZSAoIXdyaXRlcl9kb25lKTsNCg0KKw0KDQor ICAgICAgIHJldHVybiAwOw0KDQorfQ0KDQorDQoNCisvKg0KDQorICogUmVhZGVyIHRocmVhZCB1 c2luZyBydGVfbHBtIGRhdGEgc3RydWN0dXJlIHdpdGggUkNVLg0KDQorICovDQoNCitzdGF0aWMg aW50DQoNCit0ZXN0X2xwbV9yY3VfcXNicl9yZWFkZXIodm9pZCAqYXJnKQ0KDQorew0KDQorICAg ICAgIGludCBpOw0KDQorICAgICAgIHVpbnQzMl90IHRocmVhZF9pZCA9IGFsbG9jX3RocmVhZF9p ZCgpOw0KDQorICAgICAgIHVpbnQzMl90IGlwX2JhdGNoW1FTQlJfUkVQT1JUSU5HX0lOVEVSVkFM XTsNCg0KKyAgICAgICB1aW50MzJfdCBuZXh0X2hvcF9yZXR1cm4gPSAwOw0KDQorDQoNCisgICAg ICAgUlRFX1NFVF9VU0VEKGFyZyk7DQoNCisgICAgICAgLyogUmVnaXN0ZXIgdGhpcyB0aHJlYWQg dG8gcmVwb3J0IHF1aWVzY2VudCBzdGF0ZSAqLw0KDQorICAgICAgIHJ0ZV9yY3VfcXNicl90aHJl YWRfcmVnaXN0ZXIocnYsIHRocmVhZF9pZCk7DQoNCisgICAgICAgcnRlX3JjdV9xc2JyX3RocmVh ZF9vbmxpbmUocnYsIHRocmVhZF9pZCk7DQoNCisNCg0KKyAgICAgICBkbyB7DQoNCisgICAgICAg ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUVNCUl9SRVBPUlRJTkdfSU5URVJWQUw7IGkrKykNCg0K KyAgICAgICAgICAgICAgICAgICAgICAgaXBfYmF0Y2hbaV0gPSBydGVfcmFuZCgpOw0KDQorDQoN CisgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUVNCUl9SRVBPUlRJTkdfSU5URVJWQUw7 IGkrKykNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgcnRlX2xwbV9sb29rdXAobHBtLCBpcF9i YXRjaFtpXSwgJm5leHRfaG9wX3JldHVybik7DQoNCisNCg0KKyAgICAgICAgICAgICAgIC8qIFVw ZGF0ZSBxdWllc2NlbnQgc3RhdGUgKi8NCg0KKyAgICAgICAgICAgICAgIHJ0ZV9yY3VfcXNicl9x dWllc2NlbnQocnYsIHRocmVhZF9pZCk7DQoNCisgICAgICAgfSB3aGlsZSAoIXdyaXRlcl9kb25l KTsNCg0KKw0KDQorICAgICAgIHJ0ZV9yY3VfcXNicl90aHJlYWRfb2ZmbGluZShydiwgdGhyZWFk X2lkKTsNCg0KKyAgICAgICBydGVfcmN1X3FzYnJfdGhyZWFkX3VucmVnaXN0ZXIocnYsIHRocmVh ZF9pZCk7DQoNCisNCg0KKyAgICAgICByZXR1cm4gMDsNCg0KK30NCg0KKw0KDQorLyoNCg0KKyAq IFdyaXRlciB0aHJlYWQgdXNpbmcgcnRlX2xwbSBkYXRhIHN0cnVjdHVyZSB3aXRoIFJDVS4NCg0K KyAqLw0KDQorc3RhdGljIGludA0KDQordGVzdF9scG1fcmN1X3FzYnJfd3JpdGVyKHZvaWQgKmFy ZykNCg0KK3sNCg0KKyAgICAgICB1bnNpZ25lZCBpbnQgaSwgaiwgc2ksIGVpOw0KDQorICAgICAg IHVpbnQ2NF90IGJlZ2luLCB0b3RhbF9jeWNsZXM7DQoNCisgICAgICAgdWludDhfdCBjb3JlX2lk ID0gKHVpbnQ4X3QpKCh1aW50cHRyX3QpYXJnKTsNCg0KKyAgICAgICB1aW50MzJfdCBuZXh0X2hv cF9hZGQgPSAweEFBOw0KDQorDQoNCisgICAgICAgUlRFX1NFVF9VU0VEKGFyZyk7DQoNCisgICAg ICAgLyogMiB3cml0ZXIgdGhyZWFkcyBhcmUgdXNlZCAqLw0KDQorICAgICAgIGlmIChjb3JlX2lk ICUgMiA9PSAwKSB7DQoNCisgICAgICAgICAgICAgICBzaSA9IDA7DQoNCisgICAgICAgICAgICAg ICBlaSA9IE5VTV9MREVQVEhfUk9VVEVfRU5UUklFUyAvIDI7DQoNCisgICAgICAgfSBlbHNlIHsN Cg0KKyAgICAgICAgICAgICAgIHNpID0gTlVNX0xERVBUSF9ST1VURV9FTlRSSUVTIC8gMjsNCg0K KyAgICAgICAgICAgICAgIGVpID0gTlVNX0xERVBUSF9ST1VURV9FTlRSSUVTOw0KDQorICAgICAg IH0NCg0KKw0KDQorICAgICAgIC8qIE1lYXN1cmUgYWRkL2RlbGV0ZS4gKi8NCg0KKyAgICAgICBi ZWdpbiA9IHJ0ZV9yZHRzY19wcmVjaXNlKCk7DQoNCisgICAgICAgZm9yIChpID0gMDsgaSA8IFJD VV9JVEVSQVRJT05TOyBpKyspIHsNCg0KKyAgICAgICAgICAgICAgIC8qIEFkZCBhbGwgdGhlIGVu dHJpZXMgKi8NCg0KKyAgICAgICAgICAgICAgIGZvciAoaiA9IHNpOyBqIDwgZWk7IGorKykgew0K DQorICAgICAgICAgICAgICAgICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmxwbV9tdXRleCk7 DQoNCisgICAgICAgICAgICAgICAgICAgICAgIGlmIChydGVfbHBtX2FkZChscG0sIGxhcmdlX2xk ZXB0aF9yb3V0ZV90YWJsZVtqXS5pcCwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGFyZ2VfbGRlcHRoX3JvdXRlX3RhYmxlW2pdLmRlcHRoLA0KDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0X2hvcF9hZGQpICE9IDApIHsNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiRmFpbGVkIHRvIGFkZCBpdGVyYXRp b24gJWQsIHJvdXRlIyAlZFxuIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaSwgaik7DQoNCisgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KKyAgICAgICAgICAg ICAgICAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmxwbV9tdXRleCk7DQoNCisgICAgICAg ICAgICAgICB9DQoNCisNCg0KKyAgICAgICAgICAgICAgIC8qIERlbGV0ZSBhbGwgdGhlIGVudHJp ZXMgKi8NCg0KKyAgICAgICAgICAgICAgIGZvciAoaiA9IHNpOyBqIDwgZWk7IGorKykgew0KDQor ICAgICAgICAgICAgICAgICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmxwbV9tdXRleCk7DQoN CisgICAgICAgICAgICAgICAgICAgICAgIGlmIChydGVfbHBtX2RlbGV0ZShscG0sIGxhcmdlX2xk ZXB0aF9yb3V0ZV90YWJsZVtqXS5pcCwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxhcmdlX2xkZXB0aF9yb3V0ZV90YWJsZVtqXS5kZXB0aCkgIT0gMCkgew0KDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJGYWlsZWQgdG8gZGVsZXRlIGl0ZXJhdGlvbiAl ZCwgcm91dGUjICVkXG4iLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpLCBqKTsNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQorICAgICAgICAgICAgICAg ICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmbHBtX211dGV4KTsNCg0KKyAgICAgICAgICAg ICAgIH0NCg0KKyAgICAgICB9DQoNCisNCg0KKyAgICAgICB0b3RhbF9jeWNsZXMgPSBydGVfcmR0 c2NfcHJlY2lzZSgpIC0gYmVnaW47DQoNCisNCg0KKyAgICAgICBfX2F0b21pY19mZXRjaF9hZGQo Jmd3cml0ZV9jeWNsZXMsIHRvdGFsX2N5Y2xlcywgX19BVE9NSUNfUkVMQVhFRCk7DQoNCisgICAg ICAgX19hdG9taWNfZmV0Y2hfYWRkKCZnd3JpdGVzLA0KDQorICAgICAgICAgICAgICAgICAgICAg ICAyICogTlVNX0xERVBUSF9ST1VURV9FTlRSSUVTICogUkNVX0lURVJBVElPTlMsDQoNCisgICAg ICAgICAgICAgICAgICAgICAgIF9fQVRPTUlDX1JFTEFYRUQpOw0KDQorDQoNCisgICAgICAgcmV0 dXJuIDA7DQoNCit9DQoNCisNCg0KKy8qDQoNCisgKiBGdW5jdGlvbmFsIHRlc3Q6DQoNCisgKiAy IHdyaXRlcnMsIHJlc3QgYXJlIHJlYWRlcnMNCg0KKyAqLw0KDQorc3RhdGljIGludA0KDQordGVz dF9scG1fcmN1X3BlcmZfbXVsdGlfd3JpdGVyKHZvaWQpDQoNCit7DQoNCisgICAgICAgc3RydWN0 IHJ0ZV9scG1fY29uZmlnIGNvbmZpZzsNCg0KKyAgICAgICBzaXplX3Qgc3o7DQoNCisgICAgICAg dW5zaWduZWQgaW50IGk7DQoNCisgICAgICAgdWludDE2X3QgY29yZV9pZDsNCg0KKyAgICAgICBz dHJ1Y3QgcnRlX2xwbV9yY3VfY29uZmlnIHJjdV9jZmcgPSB7MH07DQoNCisNCg0KKyAgICAgICBp ZiAocnRlX2xjb3JlX2NvdW50KCkgPCAzKSB7DQoNCisgICAgICAgICAgICAgICBwcmludGYoIk5v dCBlbm91Z2ggY29yZXMgZm9yIGxwbV9yY3VfcGVyZl9hdXRvdGVzdCwgZXhwZWN0aW5nIGF0IGxl YXN0IDNcbiIpOw0KDQorICAgICAgICAgICAgICAgcmV0dXJuIFRFU1RfU0tJUFBFRDsNCg0KKyAg ICAgICB9DQoNCisNCg0KKyAgICAgICBudW1fY29yZXMgPSAwOw0KDQorICAgICAgIFJURV9MQ09S RV9GT1JFQUNIX1NMQVZFKGNvcmVfaWQpIHsNCg0KKyAgICAgICAgICAgICAgIGVuYWJsZWRfY29y ZV9pZHNbbnVtX2NvcmVzXSA9IGNvcmVfaWQ7DQoNCisgICAgICAgICAgICAgICBudW1fY29yZXMr KzsNCg0KKyAgICAgICB9DQoNCisNCg0KKyAgICAgICBwcmludGYoIlxuUGVyZiB0ZXN0OiAyIHdy aXRlcnMsICVkIHJlYWRlcnMsIFJDVSBpbnRlZ3JhdGlvbiBlbmFibGVkXG4iLA0KDQorICAgICAg ICAgICAgICAgbnVtX2NvcmVzIC0gMik7DQoNCisNCg0KKyAgICAgICAvKiBDcmVhdGUgTFBNIHRh YmxlICovDQoNCisgICAgICAgY29uZmlnLm1heF9ydWxlcyA9IE5VTV9MREVQVEhfUk9VVEVfRU5U UklFUzsNCg0KKyAgICAgICBjb25maWcubnVtYmVyX3RibDhzID0gTlVNX0xERVBUSF9ST1VURV9F TlRSSUVTOw0KDQorICAgICAgIGNvbmZpZy5mbGFncyA9IDA7DQoNCisgICAgICAgbHBtID0gcnRl X2xwbV9jcmVhdGUoX19mdW5jX18sIFNPQ0tFVF9JRF9BTlksICZjb25maWcpOw0KDQorICAgICAg IFRFU1RfTFBNX0FTU0VSVChscG0gIT0gTlVMTCk7DQoNCisNCg0KKyAgICAgICAvKiBJbml0IFJD VSB2YXJpYWJsZSAqLw0KDQorICAgICAgIHN6ID0gcnRlX3JjdV9xc2JyX2dldF9tZW1zaXplKG51 bV9jb3Jlcyk7DQoNCisgICAgICAgcnYgPSAoc3RydWN0IHJ0ZV9yY3VfcXNiciAqKXJ0ZV96bWFs bG9jKCJyY3UwIiwgc3osDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUlRFX0NBQ0hFX0xJTkVfU0laRSk7DQoNCisgICAgICAgcnRlX3JjdV9xc2JyX2lu aXQocnYsIG51bV9jb3Jlcyk7DQoNCisNCg0KKyAgICAgICByY3VfY2ZnLnYgPSBydjsNCg0KKyAg ICAgICAvKiBBc3NpZ24gdGhlIFJDVSB2YXJpYWJsZSB0byBMUE0gKi8NCg0KKyAgICAgICBpZiAo cnRlX2xwbV9yY3VfcXNicl9hZGQobHBtLCAmcmN1X2NmZywgTlVMTCkgIT0gMCkgew0KDQorICAg ICAgICAgICAgICAgcHJpbnRmKCJSQ1UgdmFyaWFibGUgYXNzaWdubWVudCBmYWlsZWRcbiIpOw0K DQorICAgICAgICAgICAgICAgZ290byBlcnJvcjsNCg0KKyAgICAgICB9DQoNCisNCg0KKyAgICAg ICB3cml0ZXJfZG9uZSA9IDA7DQoNCisgICAgICAgX19hdG9taWNfc3RvcmVfbigmZ3dyaXRlX2N5 Y2xlcywgMCwgX19BVE9NSUNfUkVMQVhFRCk7DQoNCisgICAgICAgX19hdG9taWNfc3RvcmVfbigm Z3dyaXRlcywgMCwgX19BVE9NSUNfUkVMQVhFRCk7DQoNCisNCg0KKyAgICAgICBfX2F0b21pY19z dG9yZV9uKCZ0aHJfaWQsIDAsIF9fQVRPTUlDX1NFUV9DU1QpOw0KDQorDQoNCisgICAgICAgLyog TGF1bmNoIHJlYWRlciB0aHJlYWRzICovDQoNCisgICAgICAgZm9yIChpID0gMjsgaSA8IG51bV9j b3JlczsgaSsrKQ0KDQorICAgICAgICAgICAgICAgcnRlX2VhbF9yZW1vdGVfbGF1bmNoKHRlc3Rf bHBtX3JjdV9xc2JyX3JlYWRlciwgTlVMTCwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZW5hYmxlZF9jb3JlX2lkc1tpXSk7DQoNCisNCg0KKyAgICAgICAvKiBMYXVu Y2ggd3JpdGVyIHRocmVhZHMgKi8NCg0KKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKQ0K DQorICAgICAgICAgICAgICAgcnRlX2VhbF9yZW1vdGVfbGF1bmNoKHRlc3RfbHBtX3JjdV9xc2Jy X3dyaXRlciwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQg KikodWludHB0cl90KWksDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGVuYWJsZWRfY29yZV9pZHNbaV0pOw0KDQorDQoNCisgICAgICAgLyogV2FpdCBmb3Igd3JpdGVy IHRocmVhZHMgKi8NCg0KKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKQ0KDQorICAgICAg ICAgICAgICAgaWYgKHJ0ZV9lYWxfd2FpdF9sY29yZShlbmFibGVkX2NvcmVfaWRzW2ldKSA8IDAp DQoNCisgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7DQoNCisNCg0KKyAgICAgICBw cmludGYoIlRvdGFsIExQTSBBZGRzOiAlZFxuIiwNCg0KKyAgICAgICAgICAgICAgIDIgKiBJVEVS QVRJT05TICogTlVNX0xERVBUSF9ST1VURV9FTlRSSUVTKTsNCg0KKyAgICAgICBwcmludGYoIlRv dGFsIExQTSBEZWxldGVzOiAlZFxuIiwNCg0KKyAgICAgICAgICAgICAgIDIgKiBJVEVSQVRJT05T ICogTlVNX0xERVBUSF9ST1VURV9FTlRSSUVTKTsNCg0KKyAgICAgICBwcmludGYoIkF2ZXJhZ2Ug TFBNIEFkZC9EZWw6ICUiUFJJdTY0IiBjeWNsZXNcbiIsDQoNCisgICAgICAgICAgICAgICBfX2F0 b21pY19sb2FkX24oJmd3cml0ZV9jeWNsZXMsIF9fQVRPTUlDX1JFTEFYRUQpIC8NCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgX19hdG9taWNfbG9hZF9uKCZnd3JpdGVzLCBfX0FUT01JQ19SRUxB WEVEKQ0KDQorICAgICAgICAgICAgICAgKTsNCg0KKw0KDQorICAgICAgIC8qIFdhaXQgYW5kIGNo ZWNrIHJldHVybiB2YWx1ZSBmcm9tIHJlYWRlciB0aHJlYWRzICovDQoNCisgICAgICAgd3JpdGVy X2RvbmUgPSAxOw0KDQorICAgICAgIGZvciAoaSA9IDI7IGkgPCBudW1fY29yZXM7IGkrKykNCg0K KyAgICAgICAgICAgICAgIGlmIChydGVfZWFsX3dhaXRfbGNvcmUoZW5hYmxlZF9jb3JlX2lkc1tp XSkgPCAwKQ0KDQorICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOw0KDQorDQoNCisg ICAgICAgcnRlX2xwbV9mcmVlKGxwbSk7DQoNCisgICAgICAgcnRlX2ZyZWUocnYpOw0KDQorICAg ICAgIGxwbSA9IE5VTEw7DQoNCisgICAgICAgcnYgPSBOVUxMOw0KDQorDQoNCisgICAgICAgLyog VGVzdCB3aXRob3V0IFJDVSBpbnRlZ3JhdGlvbiAqLw0KDQorICAgICAgIHByaW50ZigiXG5QZXJm IHRlc3Q6IDIgd3JpdGVycywgJWQgcmVhZGVycywgUkNVIGludGVncmF0aW9uIGRpc2FibGVkXG4i LA0KDQorICAgICAgICAgICAgICAgbnVtX2NvcmVzIC0gMik7DQoNCisNCg0KKyAgICAgICAvKiBD cmVhdGUgTFBNIHRhYmxlICovDQoNCisgICAgICAgY29uZmlnLm1heF9ydWxlcyA9IE5VTV9MREVQ VEhfUk9VVEVfRU5UUklFUzsNCg0KKyAgICAgICBjb25maWcubnVtYmVyX3RibDhzID0gTlVNX0xE RVBUSF9ST1VURV9FTlRSSUVTOw0KDQorICAgICAgIGNvbmZpZy5mbGFncyA9IDA7DQoNCisgICAg ICAgbHBtID0gcnRlX2xwbV9jcmVhdGUoX19mdW5jX18sIFNPQ0tFVF9JRF9BTlksICZjb25maWcp Ow0KDQorICAgICAgIFRFU1RfTFBNX0FTU0VSVChscG0gIT0gTlVMTCk7DQoNCisNCg0KKyAgICAg ICB3cml0ZXJfZG9uZSA9IDA7DQoNCisgICAgICAgX19hdG9taWNfc3RvcmVfbigmZ3dyaXRlX2N5 Y2xlcywgMCwgX19BVE9NSUNfUkVMQVhFRCk7DQoNCisgICAgICAgX19hdG9taWNfc3RvcmVfbigm Z3dyaXRlcywgMCwgX19BVE9NSUNfUkVMQVhFRCk7DQoNCisgICAgICAgX19hdG9taWNfc3RvcmVf bigmdGhyX2lkLCAwLCBfX0FUT01JQ19TRVFfQ1NUKTsNCg0KKw0KDQorICAgICAgIC8qIExhdW5j aCByZWFkZXIgdGhyZWFkcyAqLw0KDQorICAgICAgIGZvciAoaSA9IDI7IGkgPCBudW1fY29yZXM7 IGkrKykNCg0KKyAgICAgICAgICAgICAgIHJ0ZV9lYWxfcmVtb3RlX2xhdW5jaCh0ZXN0X2xwbV9y ZWFkZXIsIE5VTEwsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu YWJsZWRfY29yZV9pZHNbaV0pOw0KDQorDQoNCisgICAgICAgLyogTGF1bmNoIHdyaXRlciB0aHJl YWRzICovDQoNCisgICAgICAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykNCg0KKyAgICAgICAgICAg ICAgIHJ0ZV9lYWxfcmVtb3RlX2xhdW5jaCh0ZXN0X2xwbV9yY3VfcXNicl93cml0ZXIsDQoNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopKHVpbnRwdHJfdClp LA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkX2NvcmVf aWRzW2ldKTsNCg0KKw0KDQorICAgICAgIC8qIFdhaXQgZm9yIHdyaXRlciB0aHJlYWRzICovDQoN CisgICAgICAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykNCg0KKyAgICAgICAgICAgICAgIGlmIChy dGVfZWFsX3dhaXRfbGNvcmUoZW5hYmxlZF9jb3JlX2lkc1tpXSkgPCAwKQ0KDQorICAgICAgICAg ICAgICAgICAgICAgICBnb3RvIGVycm9yOw0KDQorDQoNCisgICAgICAgcHJpbnRmKCJUb3RhbCBM UE0gQWRkczogJWRcbiIsDQoNCisgICAgICAgICAgICAgICAyICogSVRFUkFUSU9OUyAqIE5VTV9M REVQVEhfUk9VVEVfRU5UUklFUyk7DQoNCisgICAgICAgcHJpbnRmKCJUb3RhbCBMUE0gRGVsZXRl czogJWRcbiIsDQoNCisgICAgICAgICAgICAgICAyICogSVRFUkFUSU9OUyAqIE5VTV9MREVQVEhf Uk9VVEVfRU5UUklFUyk7DQoNCisgICAgICAgcHJpbnRmKCJBdmVyYWdlIExQTSBBZGQvRGVsOiAl IlBSSXU2NCIgY3ljbGVzXG4iLA0KDQorICAgICAgICAgICAgICAgX19hdG9taWNfbG9hZF9uKCZn d3JpdGVfY3ljbGVzLCBfX0FUT01JQ19SRUxBWEVEKSAvDQoNCisgICAgICAgICAgICAgICAgICAg ICAgIF9fYXRvbWljX2xvYWRfbigmZ3dyaXRlcywgX19BVE9NSUNfUkVMQVhFRCkNCg0KKyAgICAg ICAgICAgICAgICk7DQoNCisNCg0KKyAgICAgICB3cml0ZXJfZG9uZSA9IDE7DQoNCisgICAgICAg LyogV2FpdCBhbmQgY2hlY2sgcmV0dXJuIHZhbHVlIGZyb20gcmVhZGVyIHRocmVhZHMgKi8NCg0K KyAgICAgICBmb3IgKGkgPSAyOyBpIDwgbnVtX2NvcmVzOyBpKyspDQoNCisgICAgICAgICAgICAg ICBpZiAocnRlX2VhbF93YWl0X2xjb3JlKGVuYWJsZWRfY29yZV9pZHNbaV0pIDwgMCkNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsNCg0KKw0KDQorICAgICAgIHJ0ZV9scG1f ZnJlZShscG0pOw0KDQorDQoNCisgICAgICAgcmV0dXJuIDA7DQoNCisNCg0KK2Vycm9yOg0KDQor ICAgICAgIHdyaXRlcl9kb25lID0gMTsNCg0KKyAgICAgICAvKiBXYWl0IHVudGlsIGFsbCByZWFk ZXJzIGhhdmUgZXhpdGVkICovDQoNCisgICAgICAgcnRlX2VhbF9tcF93YWl0X2xjb3JlKCk7DQoN CisNCg0KKyAgICAgICBydGVfbHBtX2ZyZWUobHBtKTsNCg0KKyAgICAgICBydGVfZnJlZShydik7 DQoNCisNCg0KKyAgICAgICByZXR1cm4gLTE7DQoNCit9DQoNCisNCg0KKy8qDQoNCisgKiBGdW5j dGlvbmFsIHRlc3Q6DQoNCisgKiBTaW5nbGUgd3JpdGVyLCByZXN0IGFyZSByZWFkZXJzDQoNCisg Ki8NCg0KK3N0YXRpYyBpbnQNCg0KK3Rlc3RfbHBtX3JjdV9wZXJmKHZvaWQpDQoNCit7DQoNCisg ICAgICAgc3RydWN0IHJ0ZV9scG1fY29uZmlnIGNvbmZpZzsNCg0KKyAgICAgICB1aW50NjRfdCBi ZWdpbiwgdG90YWxfY3ljbGVzOw0KDQorICAgICAgIHNpemVfdCBzejsNCg0KKyAgICAgICB1bnNp Z25lZCBpbnQgaSwgajsNCg0KKyAgICAgICB1aW50MTZfdCBjb3JlX2lkOw0KDQorICAgICAgIHVp bnQzMl90IG5leHRfaG9wX2FkZCA9IDB4QUE7DQoNCisgICAgICAgc3RydWN0IHJ0ZV9scG1fcmN1 X2NvbmZpZyByY3VfY2ZnID0gezB9Ow0KDQorDQoNCisgICAgICAgaWYgKHJ0ZV9sY29yZV9jb3Vu dCgpIDwgMikgew0KDQorICAgICAgICAgICAgICAgcHJpbnRmKCJOb3QgZW5vdWdoIGNvcmVzIGZv ciBscG1fcmN1X3BlcmZfYXV0b3Rlc3QsIGV4cGVjdGluZyBhdCBsZWFzdCAyXG4iKTsNCg0KKyAg ICAgICAgICAgICAgIHJldHVybiBURVNUX1NLSVBQRUQ7DQoNCisgICAgICAgfQ0KDQorDQoNCisg ICAgICAgbnVtX2NvcmVzID0gMDsNCg0KKyAgICAgICBSVEVfTENPUkVfRk9SRUFDSF9TTEFWRShj b3JlX2lkKSB7DQoNCisgICAgICAgICAgICAgICBlbmFibGVkX2NvcmVfaWRzW251bV9jb3Jlc10g PSBjb3JlX2lkOw0KDQorICAgICAgICAgICAgICAgbnVtX2NvcmVzKys7DQoNCisgICAgICAgfQ0K DQorDQoNCisgICAgICAgcHJpbnRmKCJcblBlcmYgdGVzdDogMSB3cml0ZXIsICVkIHJlYWRlcnMs IFJDVSBpbnRlZ3JhdGlvbiBlbmFibGVkXG4iLA0KDQorICAgICAgICAgICAgICAgbnVtX2NvcmVz KTsNCg0KKw0KDQorICAgICAgIC8qIENyZWF0ZSBMUE0gdGFibGUgKi8NCg0KKyAgICAgICBjb25m aWcubWF4X3J1bGVzID0gTlVNX0xERVBUSF9ST1VURV9FTlRSSUVTOw0KDQorICAgICAgIGNvbmZp Zy5udW1iZXJfdGJsOHMgPSBOVU1fTERFUFRIX1JPVVRFX0VOVFJJRVM7DQoNCisgICAgICAgY29u ZmlnLmZsYWdzID0gMDsNCg0KKyAgICAgICBscG0gPSBydGVfbHBtX2NyZWF0ZShfX2Z1bmNfXywg U09DS0VUX0lEX0FOWSwgJmNvbmZpZyk7DQoNCisgICAgICAgVEVTVF9MUE1fQVNTRVJUKGxwbSAh PSBOVUxMKTsNCg0KKw0KDQorICAgICAgIC8qIEluaXQgUkNVIHZhcmlhYmxlICovDQoNCisgICAg ICAgc3ogPSBydGVfcmN1X3FzYnJfZ2V0X21lbXNpemUobnVtX2NvcmVzKTsNCg0KKyAgICAgICBy diA9IChzdHJ1Y3QgcnRlX3JjdV9xc2JyICopcnRlX3ptYWxsb2MoInJjdTAiLCBzeiwNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVEVfQ0FDSEVfTElO RV9TSVpFKTsNCg0KKyAgICAgICBydGVfcmN1X3FzYnJfaW5pdChydiwgbnVtX2NvcmVzKTsNCg0K Kw0KDQorICAgICAgIHJjdV9jZmcudiA9IHJ2Ow0KDQorICAgICAgIC8qIEFzc2lnbiB0aGUgUkNV IHZhcmlhYmxlIHRvIExQTSAqLw0KDQorICAgICAgIGlmIChydGVfbHBtX3JjdV9xc2JyX2FkZChs cG0sICZyY3VfY2ZnLCBOVUxMKSAhPSAwKSB7DQoNCisgICAgICAgICAgICAgICBwcmludGYoIlJD VSB2YXJpYWJsZSBhc3NpZ25tZW50IGZhaWxlZFxuIik7DQoNCisgICAgICAgICAgICAgICBnb3Rv IGVycm9yOw0KDQorICAgICAgIH0NCg0KKw0KDQorICAgICAgIHdyaXRlcl9kb25lID0gMDsNCg0K KyAgICAgICBfX2F0b21pY19zdG9yZV9uKCZ0aHJfaWQsIDAsIF9fQVRPTUlDX1NFUV9DU1QpOw0K DQorDQoNCisgICAgICAgLyogTGF1bmNoIHJlYWRlciB0aHJlYWRzICovDQoNCisgICAgICAgZm9y IChpID0gMDsgaSA8IG51bV9jb3JlczsgaSsrKQ0KDQorICAgICAgICAgICAgICAgcnRlX2VhbF9y ZW1vdGVfbGF1bmNoKHRlc3RfbHBtX3JjdV9xc2JyX3JlYWRlciwgTlVMTCwNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZF9jb3JlX2lkc1tpXSk7DQoNCisN Cg0KKyAgICAgICAvKiBNZWFzdXJlIGFkZC9kZWxldGUuICovDQoNCisgICAgICAgYmVnaW4gPSBy dGVfcmR0c2NfcHJlY2lzZSgpOw0KDQorICAgICAgIGZvciAoaSA9IDA7IGkgPCBSQ1VfSVRFUkFU SU9OUzsgaSsrKSB7DQoNCisgICAgICAgICAgICAgICAvKiBBZGQgYWxsIHRoZSBlbnRyaWVzICov DQoNCisgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgTlVNX0xERVBUSF9ST1VURV9FTlRS SUVTOyBqKyspDQoNCisgICAgICAgICAgICAgICAgICAgICAgIGlmIChydGVfbHBtX2FkZChscG0s IGxhcmdlX2xkZXB0aF9yb3V0ZV90YWJsZVtqXS5pcCwNCg0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGFyZ2VfbGRlcHRoX3JvdXRlX3RhYmxlW2pdLmRlcHRoLA0KDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0X2hvcF9hZGQpICE9IDAp IHsNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiRmFpbGVkIHRvIGFk ZCBpdGVyYXRpb24gJWQsIHJvdXRlIyAlZFxuIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaSwgaik7DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn b3RvIGVycm9yOw0KDQorICAgICAgICAgICAgICAgICAgICAgICB9DQoNCisNCg0KKyAgICAgICAg ICAgICAgIC8qIERlbGV0ZSBhbGwgdGhlIGVudHJpZXMgKi8NCg0KKyAgICAgICAgICAgICAgIGZv ciAoaiA9IDA7IGogPCBOVU1fTERFUFRIX1JPVVRFX0VOVFJJRVM7IGorKykNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgaWYgKHJ0ZV9scG1fZGVsZXRlKGxwbSwgbGFyZ2VfbGRlcHRoX3JvdXRl X3RhYmxlW2pdLmlwLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFyZ2VfbGRl cHRoX3JvdXRlX3RhYmxlW2pdLmRlcHRoKSAhPSAwKSB7DQoNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwcmludGYoIkZhaWxlZCB0byBkZWxldGUgaXRlcmF0aW9uICVkLCByb3V0ZSMg JWRcbiIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksIGopOw0K DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgfQ0KDQorICAgICAgIH0NCg0KKyAgICAgICB0b3RhbF9jeWNsZXMgPSBy dGVfcmR0c2NfcHJlY2lzZSgpIC0gYmVnaW47DQoNCisNCg0KKyAgICAgICBwcmludGYoIlRvdGFs IExQTSBBZGRzOiAlZFxuIiwgSVRFUkFUSU9OUyAqIE5VTV9MREVQVEhfUk9VVEVfRU5UUklFUyk7 DQoNCisgICAgICAgcHJpbnRmKCJUb3RhbCBMUE0gRGVsZXRlczogJWRcbiIsDQoNCisgICAgICAg ICAgICAgICBJVEVSQVRJT05TICogTlVNX0xERVBUSF9ST1VURV9FTlRSSUVTKTsNCg0KKyAgICAg ICBwcmludGYoIkF2ZXJhZ2UgTFBNIEFkZC9EZWw6ICVnIGN5Y2xlc1xuIiwNCg0KKyAgICAgICAg ICAgICAgIChkb3VibGUpdG90YWxfY3ljbGVzIC8gKE5VTV9MREVQVEhfUk9VVEVfRU5UUklFUyAq IElURVJBVElPTlMpKTsNCg0KKw0KDQorICAgICAgIHdyaXRlcl9kb25lID0gMTsNCg0KKyAgICAg ICAvKiBXYWl0IGFuZCBjaGVjayByZXR1cm4gdmFsdWUgZnJvbSByZWFkZXIgdGhyZWFkcyAqLw0K DQorICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1fY29yZXM7IGkrKykNCg0KKyAgICAgICAgICAg ICAgIGlmIChydGVfZWFsX3dhaXRfbGNvcmUoZW5hYmxlZF9jb3JlX2lkc1tpXSkgPCAwKQ0KDQor ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOw0KDQorDQoNCisgICAgICAgcnRlX2xw bV9mcmVlKGxwbSk7DQoNCisgICAgICAgcnRlX2ZyZWUocnYpOw0KDQorICAgICAgIGxwbSA9IE5V TEw7DQoNCisgICAgICAgcnYgPSBOVUxMOw0KDQorDQoNCisgICAgICAgLyogVGVzdCB3aXRob3V0 IFJDVSBpbnRlZ3JhdGlvbiAqLw0KDQorICAgICAgIHByaW50ZigiXG5QZXJmIHRlc3Q6IDEgd3Jp dGVyLCAlZCByZWFkZXJzLCBSQ1UgaW50ZWdyYXRpb24gZGlzYWJsZWRcbiIsDQoNCisgICAgICAg ICAgICAgICBudW1fY29yZXMpOw0KDQorDQoNCisgICAgICAgLyogQ3JlYXRlIExQTSB0YWJsZSAq Lw0KDQorICAgICAgIGNvbmZpZy5tYXhfcnVsZXMgPSBOVU1fTERFUFRIX1JPVVRFX0VOVFJJRVM7 DQoNCisgICAgICAgY29uZmlnLm51bWJlcl90Ymw4cyA9IE5VTV9MREVQVEhfUk9VVEVfRU5UUklF UzsNCg0KKyAgICAgICBjb25maWcuZmxhZ3MgPSAwOw0KDQorICAgICAgIGxwbSA9IHJ0ZV9scG1f Y3JlYXRlKF9fZnVuY19fLCBTT0NLRVRfSURfQU5ZLCAmY29uZmlnKTsNCg0KKyAgICAgICBURVNU X0xQTV9BU1NFUlQobHBtICE9IE5VTEwpOw0KDQorDQoNCisgICAgICAgd3JpdGVyX2RvbmUgPSAw Ow0KDQorICAgICAgIF9fYXRvbWljX3N0b3JlX24oJnRocl9pZCwgMCwgX19BVE9NSUNfU0VRX0NT VCk7DQoNCisNCg0KKyAgICAgICAvKiBMYXVuY2ggcmVhZGVyIHRocmVhZHMgKi8NCg0KKyAgICAg ICBmb3IgKGkgPSAwOyBpIDwgbnVtX2NvcmVzOyBpKyspDQoNCisgICAgICAgICAgICAgICBydGVf ZWFsX3JlbW90ZV9sYXVuY2godGVzdF9scG1fcmVhZGVyLCBOVUxMLA0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkX2NvcmVfaWRzW2ldKTsNCg0KKw0KDQor ICAgICAgIC8qIE1lYXN1cmUgYWRkL2RlbGV0ZS4gKi8NCg0KKyAgICAgICBiZWdpbiA9IHJ0ZV9y ZHRzY19wcmVjaXNlKCk7DQoNCisgICAgICAgZm9yIChpID0gMDsgaSA8IFJDVV9JVEVSQVRJT05T OyBpKyspIHsNCg0KKyAgICAgICAgICAgICAgIC8qIEFkZCBhbGwgdGhlIGVudHJpZXMgKi8NCg0K KyAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBOVU1fTERFUFRIX1JPVVRFX0VOVFJJRVM7 IGorKykNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ0ZV9scG1fYWRkKGxwbSwgbGFy Z2VfbGRlcHRoX3JvdXRlX3RhYmxlW2pdLmlwLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsYXJnZV9sZGVwdGhfcm91dGVfdGFibGVbal0uZGVwdGgsDQoNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfaG9wX2FkZCkgIT0gMCkgew0K DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJGYWlsZWQgdG8gYWRkIGl0 ZXJhdGlvbiAlZCwgcm91dGUjICVkXG4iLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpLCBqKTsNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g ZXJyb3I7DQoNCisgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KKw0KDQorICAgICAgICAgICAg ICAgLyogRGVsZXRlIGFsbCB0aGUgZW50cmllcyAqLw0KDQorICAgICAgICAgICAgICAgZm9yIChq ID0gMDsgaiA8IE5VTV9MREVQVEhfUk9VVEVfRU5UUklFUzsgaisrKQ0KDQorICAgICAgICAgICAg ICAgICAgICAgICBpZiAocnRlX2xwbV9kZWxldGUobHBtLCBsYXJnZV9sZGVwdGhfcm91dGVfdGFi bGVbal0uaXAsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXJnZV9sZGVwdGhf cm91dGVfdGFibGVbal0uZGVwdGgpICE9IDApIHsNCg0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHByaW50ZigiRmFpbGVkIHRvIGRlbGV0ZSBpdGVyYXRpb24gJWQsIHJvdXRlIyAlZFxu IiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSwgaik7DQoNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOw0KDQorICAgICAgICAgICAg ICAgICAgICAgICB9DQoNCisgICAgICAgfQ0KDQorICAgICAgIHRvdGFsX2N5Y2xlcyA9IHJ0ZV9y ZHRzY19wcmVjaXNlKCkgLSBiZWdpbjsNCg0KKw0KDQorICAgICAgIHByaW50ZigiVG90YWwgTFBN IEFkZHM6ICVkXG4iLCBJVEVSQVRJT05TICogTlVNX0xERVBUSF9ST1VURV9FTlRSSUVTKTsNCg0K KyAgICAgICBwcmludGYoIlRvdGFsIExQTSBEZWxldGVzOiAlZFxuIiwNCg0KKyAgICAgICAgICAg ICAgIElURVJBVElPTlMgKiBOVU1fTERFUFRIX1JPVVRFX0VOVFJJRVMpOw0KDQorICAgICAgIHBy aW50ZigiQXZlcmFnZSBMUE0gQWRkL0RlbDogJWcgY3ljbGVzXG4iLA0KDQorICAgICAgICAgICAg ICAgKGRvdWJsZSl0b3RhbF9jeWNsZXMgLyAoTlVNX0xERVBUSF9ST1VURV9FTlRSSUVTICogSVRF UkFUSU9OUykpOw0KDQorDQoNCisgICAgICAgd3JpdGVyX2RvbmUgPSAxOw0KDQorICAgICAgIC8q IFdhaXQgYW5kIGNoZWNrIHJldHVybiB2YWx1ZSBmcm9tIHJlYWRlciB0aHJlYWRzICovDQoNCisg ICAgICAgZm9yIChpID0gMDsgaSA8IG51bV9jb3JlczsgaSsrKQ0KDQorICAgICAgICAgICAgICAg aWYgKHJ0ZV9lYWxfd2FpdF9sY29yZShlbmFibGVkX2NvcmVfaWRzW2ldKSA8IDApDQoNCisgICAg ICAgICAgICAgICAgICAgICAgIHByaW50ZigiV2FybmluZzogbGNvcmUgJXUgbm90IGZpbmlzaGVk LlxuIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWRfY29yZV9pZHNb aV0pOw0KDQorDQoNCisgICAgICAgcnRlX2xwbV9mcmVlKGxwbSk7DQoNCisNCg0KKyAgICAgICBy ZXR1cm4gMDsNCg0KKw0KDQorZXJyb3I6DQoNCisgICAgICAgd3JpdGVyX2RvbmUgPSAxOw0KDQor ICAgICAgIC8qIFdhaXQgdW50aWwgYWxsIHJlYWRlcnMgaGF2ZSBleGl0ZWQgKi8NCg0KKyAgICAg ICBydGVfZWFsX21wX3dhaXRfbGNvcmUoKTsNCg0KKw0KDQorICAgICAgIHJ0ZV9scG1fZnJlZShs cG0pOw0KDQorICAgICAgIHJ0ZV9mcmVlKHJ2KTsNCg0KKw0KDQorICAgICAgIHJldHVybiAtMTsN Cg0KK30NCg0KKw0KDQogc3RhdGljIGludA0KDQogdGVzdF9scG1fcGVyZih2b2lkKQ0KDQogew0K DQotICAgICAgIHN0cnVjdCBydGVfbHBtICpscG0gPSBOVUxMOw0KDQogICAgICAgIHN0cnVjdCBy dGVfbHBtX2NvbmZpZyBjb25maWc7DQoNCg0KDQogICAgICAgIGNvbmZpZy5tYXhfcnVsZXMgPSAy MDAwMDAwOw0KDQpAQCAtMzQzLDcgKzgyNSw3IEBAIHRlc3RfbHBtX3BlcmYodm9pZCkNCg0KICAg ICAgICBscG0gPSBydGVfbHBtX2NyZWF0ZShfX2Z1bmNfXywgU09DS0VUX0lEX0FOWSwgJmNvbmZp Zyk7DQoNCiAgICAgICAgVEVTVF9MUE1fQVNTRVJUKGxwbSAhPSBOVUxMKTsNCg0KDQoNCi0gICAg ICAgLyogTWVhc3VlIGFkZC4gKi8NCg0KDQoNCnVuaW50ZW50aW9uYWwgdHlwbz8NCg0KW1J1aWZl bmddIFllcywgdGhpcyBpcyBhIHR5cG8gZml4LiBJIGFzc3VtZSBpdCBpcyBPSyBub3QgdG8gYmUg c3BsaXQgb3V0Lg0KDQoNCg0KKyAgICAgICAvKiBNZWFzdXJlIGFkZC4gKi8NCg0KICAgICAgICBi ZWdpbiA9IHJ0ZV9yZHRzYygpOw0KDQoNCg0KICAgICAgICBmb3IgKGkgPSAwOyBpIDwgTlVNX1JP VVRFX0VOVFJJRVM7IGkrKykgew0KDQpAQCAtNDc4LDYgKzk2MCwxMCBAQCB0ZXN0X2xwbV9wZXJm KHZvaWQpDQoNCiAgICAgICAgcnRlX2xwbV9kZWxldGVfYWxsKGxwbSk7DQoNCiAgICAgICAgcnRl X2xwbV9mcmVlKGxwbSk7DQoNCg0KDQorICAgICAgIHRlc3RfbHBtX3JjdV9wZXJmKCk7DQoNCisN Cg0KKyAgICAgICB0ZXN0X2xwbV9yY3VfcGVyZl9tdWx0aV93cml0ZXIoKTsNCg0KKw0KDQogICAg ICAgIHJldHVybiAwOw0KDQogfQ0KDQoNCg0KDQoNCkFja2VkLWJ5OiBWbGFkaW1pciBNZWR2ZWRr aW4gPHZsYWRpbWlyLm1lZHZlZGtpbkBpbnRlbC5jb20+PG1haWx0bzp2bGFkaW1pci5tZWR2ZWRr aW5AaW50ZWwuY29tPg0KDQoNCg0KDQoNCg0KDQotLQ0KDQpSZWdhcmRzLA0KDQpWbGFkaW1pcg0K