Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oQqjF-0008MV-Ss for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Aug 2022 13:47:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oQqjE-0004Ja-4t for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Aug 2022 13:47:32 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oQqjD-0004JO-DX for pgsql-hackers@lists.postgresql.org; Wed, 24 Aug 2022 13:47:31 +0000 Received: from esa6.fujitsucc.c3s2.iphmx.com ([68.232.159.83]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oQqj6-0004MM-5B for pgsql-hackers@lists.postgresql.org; Wed, 24 Aug 2022 13:47:31 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1661348844; x=1692884844; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=bfXWj4kWRmwwo2H16TTZoBf7Y0ueJHorweP3YyvABtg=; b=HJgskP8RxhkyCseyVZgmTy8ETmFmkrDqetxUdGPDZp6oWchKHZVNOcOO OnBILZMI0KibERsF1sAL7jLEnW3yhOIdWRaP74WyQ7FxvbA3DLLbeVwuk DTuKIvbj+E3h1rkJszSUTMGs8sp37UZL7Dx1j97UiuuhWbVL8TmB5Yf1X 3b9iqUkn08fppgAziNik5P/f7JVuRDU/9by8NDtDSsRyFklBqbRRg3DkY ZIM5kOO53VO4nI8OFEOsE87C9jeU1e1tNZZzio78YBl/7N1/XMYgZPNCi zg+tTmYuQd8jYdXoxLiy5nxOYjBHL5pn6UxlFvqmegQ+feo9DFfZ6k1TO Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10449"; a="63443471" X-IronPort-AV: E=Sophos;i="5.93,260,1654527600"; d="scan'208,223";a="63443471" Received: from mail-os0jpn01lp2109.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.109]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Aug 2022 22:47:19 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BtEonhs6YSzZSEWk3RSuR/5A9UIs3slaG2WEr2C2Dm+SLnGZAJPXJqLHd3TL0IXl3PpIMAWVL41VWrPVdt3dWOzupOjxITDHiaY8EAXIlFuSz/zUWzMi8ynuDywJh4z1nrRDg5Bn7ByuEkbcL0cOOXYOuuzmGxpbXcvoHVi4k0uCNEcm/tUwWz7tqBl3sCS4zt5wYLl50NQc4D1YXc7Stqb77/AZp2nUHiBrJ30gDUGdhyboDFcAE/diqtqHS7IBxgqQSqrUC1mT5rQoDSHih7NATclGpSZPVVX6OCB9gebRUfeaBpc5ZEkJwmylX1W6eD974u5WY1Sc4S+Y/Kg6cQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ZNIhzCzmMVQRwvvCRaYW3O4Lk4X/Zt9OgudS1cx1oP0=; b=its+YJoTt7Au9NLTX93vu+76S8UzCSQ0lraxok+ohaEpRqHCQ1mahy0zOw/rsLMwHI9yrGFeQffBJsoD/txpN7rK3qbmcw1fe7VHamOA+T1zPdUbUWjUygM52trpS3EsMWK1RmF2YaQGufKRvoiIFewcyby8MdaqVWjw+Anj+NKExKZA9EHrLtNyCZJ4ubbjvGEcPwVIgfisSyUsHvMxBYo0d9QH3jrYm28byflgLCbliztFyq/Xaao9bPVgjRQa8rS4WqUzuKypShZIc1pjKpIrHGUswzjZzRLSXTJAecwrmFflWsaG6FL4630QW6C6+VF2y2lpC6cWn1DlK159lA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com (2603:1096:604:bb::12) by TYAPR01MB3936.jpnprd01.prod.outlook.com (2603:1096:404:c7::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5546.19; Wed, 24 Aug 2022 13:47:15 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::1da0:1ce2:1710:fda]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::1da0:1ce2:1710:fda%4]) with mapi id 15.20.5546.024; Wed, 24 Aug 2022 13:47:15 +0000 From: "houzj.fnst@fujitsu.com" To: Amit Kapila , "wangw.fnst@fujitsu.com" CC: Peter Smith , Dilip Kumar , Masahiko Sawada , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHYSXX5zhPsn/DiHU+5DFLHlN8Fn6zlu9SQgAkSooCACBQ0gIABsTcwgAA1vECAAqHFgIAE/jVwgAXct9CAADkRgIALO/aAgAsRZICAB606AIAS+CyAgAAufICAAWQLgIABHxKAgAA3o4CAAeE3gIAJPr0AgAkxzACAAiJoAIAC0hUAgARvDICABQA2gIAAFvcAgAeBmICABO9ggIAJO+YAgABu1YCACQzpAIAJSy6AgAS+zICABq7mgIABSJUAgAAOtoCAACghoIAB8TqAgAqL+oCADJWRgIAGVm0AgAGAQICAAerMgIABYRWAgAgnZ+A= Date: Wed, 24 Aug 2022 13:47:15 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9MzZmYjUxYTAtMTNmMy00MjMwLThkMDItYzllNDliMjBl?= =?utf-8?B?ZDk1O01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFRO+/ou++gA==?= =?utf-8?B?776LO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX1NldERhdGU9MjAyMi0wOC0yNFQxMzoxOTo0OFo7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 71b6f92a-3d9c-4d4d-9564-08da85d72779 x-ms-traffictypediagnostic: TYAPR01MB3936:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: KhhNtzFhIkUrpC8FkzqdxB77rcu9VjkEyRc4mZWhgJh7jq+ln1/FshLw8bnPqQgHaRl3Vx1GUotiOGet3X4r24BXpH/epFWduuV9DOiF5B4seE855ve0LkfB3xapNau2IYfa6Ucp3yhGQcgIx/xu3tTE0yZdSKKNOVaRIp4Dgy7mdw90GrEIbGTHtsKfPLTbtgi4NHm34J4ebVDhwYG4zFvGuGA6SIuWhwJux963aC0/9lLDQfzUvVwF6fS8EE9+MLqsmwQw53QWAigiiyLzD3089r2VKQxoQx2f4m0j9gq6R5SDAjfHGI+Z0kBP55ma6wZ+4L/gzLu+UMy9SJXViWDH7FkfKSTRY+eVINfaI2EeqdrDZrHpyUJxTtZKRvgkKP1eZr2sg0J8GwtZI+MiLCWG+nsnFyVGDXundiw75L56VrbzdJRIFWbFYLr2e6s40MHms8wO/fERVS+FA60b/fKPwiHrkjq+1QmViWfLET+QJLPbglD2YSfFsMsLH2glVgZ2PMR5VRXnsHFogL/hpG/ekSnvV9fBrdsbuxHqM6/o8kyrvFkbOQmY94iACFp+BhQhO5KCt6q+kjG1U/GU5UKeo5Cu5coxVIE/W4x45jMGWndPHHDFm2G/eFtj2OGsTB18TbRPVLNRddcGcAy/R3jHyVZso9QBLAu9tiQJ0pjpBDD7EW33Q7qqWQ+P5oOJd/l/tJOU1ncq/zqwNdlJNpEFFWqlJr1ohsulJFP6bPBX3CcvLh3DLFphQXvdP3giJ1L/AJz/f471V9dcj5M+/C+ktQc+gWYkSIvNlbhIjak= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS0PR01MB5716.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(346002)(39860400002)(136003)(396003)(366004)(376002)(1590799006)(186003)(4326008)(66946007)(86362001)(8676002)(66556008)(64756008)(66446008)(66476007)(76116006)(38070700005)(99936003)(6636002)(54906003)(110136005)(316002)(82960400001)(7696005)(53546011)(6506007)(83380400001)(41300700001)(1580799003)(55016003)(9686003)(26005)(122000001)(38100700002)(71200400001)(8936002)(478600001)(33656002)(2906002)(85182001)(52536014)(5660300002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZzBDcllMT1BOQzQwcHM0V2txeFVFL2FDZ2dXZnhlWnUvY2FSNnkwb0hwQnZV?= =?utf-8?B?Y3IxUWcvTWpQeEJSZ0lTanJ6R2RlNUdBQjNCbTNSWTFxUkM4c24xUDVSRG9G?= =?utf-8?B?MVFMaWExRFhEbzViM0ZLRFJlOUpFYkt0TWRUU1FJS2xuZlVsUE1Balo4bWR3?= =?utf-8?B?RllaSmNqSDRXb0JoNFgzUjVTdzdnSU15VTlFbk9kbFUrL3lCUC9HN2UrQnZx?= =?utf-8?B?ZjB2MXU3eEJTQkE5eTZjbVpFN1ZHTU1HeGtWUHgwclVMaUUxd2ltQlVaVTJK?= =?utf-8?B?ekk4VldoMHp6MDZnOWl6MEkwWm55bzVKRktieHFjZEt3b04raXdIb3oyTStI?= =?utf-8?B?Q2ZxK1Y5NVdZSmhaYWZRUkd3WUc1RTRYc3E2UjJPRUJPVGU5QlBwaFR3Mkl4?= =?utf-8?B?MVdEUmpwYzJnREtscklISE1BQkQvZU9YaUNVdG05OUxQSU9GMnNHOVRBU2Ro?= =?utf-8?B?U2ZZRlMwVjlVeHBmZ1ZnMkFYYTdTeHloVEJhVnlEUkxyK2tkMWluVFM0OHdB?= =?utf-8?B?ZnNoYlFKU3R4ZHFjanNaTE9KR3pIa1RwYnhlb3lNVU1IRFBxdGJmWG12MVl0?= =?utf-8?B?R1kxamJ6bFRIbDBQQWdTK096Ykd5ZVNYd1NXeGZEVEllZ3pPeWZ3clcyUGFu?= =?utf-8?B?TVJIbldldXo2TWk1UzN5VFpMNC9lNUVuYjFPZ0RuWXZNU1paWThsbTVrNEJq?= =?utf-8?B?QnRPa1FxMkpuemJVTmo4WVo1bTJqVWIvbG85MmE4bERicituYnpSUi9kcHh4?= =?utf-8?B?Mlc4K2drbGxDOXEyK2k0UVhJcVppVzl5UWpPamt6Wk12SHo4enlkc1N3SThu?= =?utf-8?B?QXZGZ1RnZHBJcXg0MUxLQ2Vva2txakw2N1BLVmRSLzBnS3d1eFJDUG1TVWVL?= =?utf-8?B?UmsyM0JoSnloK01jaitSV1U0Q25Yc0xiVzlSbDk0THRRQTgzc3JDZFAzUGYr?= =?utf-8?B?Ny9YeWJ5UDB6cXFWR0IxcTMzbjJLRUl2dzlKNURVUnZPaHBJTUtkOUdTdTU4?= =?utf-8?B?WVVFRjBYN2Vwd1p5Mm52M0FQYkxGNm0rY0RZTWt3RjI0NEh5WndHZ0FTVS9L?= =?utf-8?B?WkUzY2x4U01oVW92NHgxSjNQOWZxMDkzZDdWZjF6dHY3WVZEaUhSZEMzK0pw?= =?utf-8?B?cUdvNWR2OERvUWloK0JsVFkvRDhNTzI1YkdYU0RVc01ncENkS3dzdlBVSVZF?= =?utf-8?B?NnI2dXRnWHZWQU1GSXNwRkY4UWVzL2xoRlR0bDFpampoekxFM1E3K3FGL0Fz?= =?utf-8?B?SEQzaVBUbUNvZkxscndmMWYyTmFIck5CQ0UxT3BHVnFCQW5vZXlaVmZaUGFm?= =?utf-8?B?STlCbUhWVGZYT3JYRkN6QXF3V0l6Y1poOS9aQTRCTDgyOEpCUjI5aWZnczMw?= =?utf-8?B?aHdGZGRNTzdlQW4vWTJQVUx1OEVVcmJmRktuSmR6amdVVlZJQjhJN3I2TVVs?= =?utf-8?B?MEJ5UWlxRzhSRU81NUNIQVRicU8xODh1VUdUbk9aN3BzR2pkUks3dy9xR3RP?= =?utf-8?B?WkdZUEhTWnNpMHNxRklIYjBVOTBlN1V1Q3JDQzhwdE80NHowVWRha1I0UXNT?= =?utf-8?B?NHpLSTBZSFBrZEduQmVPWVNTQ2J0dDFSVnZISkRTc2FWemVodW1HamZnTFZZ?= =?utf-8?B?Z1piZEFzVnBBZWhBZmEvMzFkQksvNzBLNDZhVk9NbGNNMCswUWlMTTE1WmVJ?= =?utf-8?B?NnEyZzlsSmdKakk3TExXZmVJUXQwOThsN3FIdGtlQUVaYmVVS3RUaVZGWVFh?= =?utf-8?B?cW8rMlpSNXVmZmt1SXYzbUV2SUlQdjNMUTdsYjdJMHNSbS9DRnlsK3BNN3JT?= =?utf-8?B?ZTQ5KzUzaUtnZDNVOWludExNcGR3Rk8vOHdiNlFmM2J4QjBlSnZrZUlkaDdy?= =?utf-8?B?QXhidzIwL2xkbmFRMnhvTzdTM2NNUFlFK1A0Y2xsR201Q0NoR3Q3MG1yUmda?= =?utf-8?B?WkNTNXNkcm1XTFVKSmNLcEFXK2lCd1plWTFQVjZnRzFrVmE2dHhCNnowU3dJ?= =?utf-8?B?cVVvNGUrYzIrQ2c3MEpTQm9wcVE1Z05UbEl3N0liMDczSjBuNjJnUjZuOFp3?= =?utf-8?B?L3p3d0QvbXJjS0NoekVVL2hpOEtKQ1UvSXM4REdYanVGMUM5cTFiQnlSTDg3?= =?utf-8?Q?JPLoqOJZV/2UXmHHP3b9j+FtW?= Content-Type: multipart/mixed; boundary="_006_OS0PR01MB57166F15F4542FAE69A74EC094739OS0PR01MB5716jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS0PR01MB5716.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 71b6f92a-3d9c-4d4d-9564-08da85d72779 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Aug 2022 13:47:15.2933 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 9pue2l1GbI5VYtYi4dqSOw7QW/+LXiuzxgQpIaiYgDuoZaM19vfWMeema7OiJxjyTeuNZuLIhS0qAM3wHYcNcg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYAPR01MB3936 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_OS0PR01MB57166F15F4542FAE69A74EC094739OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gRnJpZGF5LCBBdWd1c3QgMTksIDIwMjIgNDo0OSBQTSBBbWl0IEthcGlsYSA8YW1pdC5rYXBp bGExNkBnbWFpbC5jb20+DQo+IA0KPiBPbiBUaHUsIEF1ZyAxOCwgMjAyMiBhdCA1OjE0IFBNIEFt aXQgS2FwaWxhIDxhbWl0LmthcGlsYTE2QGdtYWlsLmNvbT4NCj4gd3JvdGU6DQo+ID4NCj4gPiBP biBXZWQsIEF1ZyAxNywgMjAyMiBhdCAxMTo1OCBBTSB3YW5ndy5mbnN0QGZ1aml0c3UuY29tDQo+ ID4gPHdhbmd3LmZuc3RAZnVqaXRzdS5jb20+IHdyb3RlOg0KPiA+ID4NCj4gPiA+IEF0dGFjaCB0 aGUgbmV3IHBhdGNoZXMuDQo+ID4gPg0KPiA+DQo+ID4gRmV3IGNvbW1lbnRzIG9uIHYyMy0wMDAx DQo+ID4gPT09PT09PT09PT09PT09PT09PT09PT0NCj4gPg0KPiANCj4gU29tZSBtb3JlIGNvbW1l bnRzIG9uIHYyMy0wMDAxDQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gMS4NCj4g c3RhdGljIGJvb2wNCj4gIGhhbmRsZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMb2dpY2FsUmVwTXNn VHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcykgeyAuLi4NCj4gLSAvKiBub3QgaW4gc3RyZWFtaW5n IG1vZGUgKi8NCj4gLSBpZiAoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQ0KPiArIC8qIE5vdCBp biBzdHJlYW1pbmcgbW9kZSBhbmQgbm90IGluIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLiAqLyBp Zg0KPiArICghKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uIHx8IGFtX2FwcGx5X2Jnd29ya2VyKCkp KQ0KPiAgIHJldHVybiBmYWxzZTsNCj4gDQo+IFRoaXMgY2hlY2sgYXBwZWFycyBhIGJpdCBzdHJh bmdlIGJlY2F1c2UgaWRlYWxseSBpbiBiZ3dvcmtlcg0KPiBpbl9zdHJlYW1lZF90cmFuc2FjdGlv biBzaG91bGQgYmUgZmFsc2UuIEkgdGhpbmsgd2Ugc2hvdWxkIHNldA0KPiBpbl9zdHJlYW1lZF90 cmFuc2FjdGlvbiB0byB0cnVlIGluIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoKSBvbmx5IHdo ZW4gd2UNCj4gYXJlIGdvaW5nIHRvIHdyaXRlIHRvIGZpbGUuIElzIHRoZXJlIGEgcmVhc29uIGZv ciBub3QgZG9pbmcgdGhlIHNhbWU/DQoNCk5vLCBJIHJlbW92ZWQgdGhpcy4NCg0KPiAyLg0KPiAr IHsNCj4gKyAvKiBUaGlzIGlzIHRoZSBtYWluIGFwcGx5IHdvcmtlci4gKi8NCj4gKyBBcHBseUJn d29ya2VySW5mbyAqd3N0YXRlID0gYXBwbHlfYmd3b3JrZXJfZmluZCh4aWQpOw0KPiArDQo+ICsg LyoNCj4gKyAqIENoZWNrIGlmIHdlIGFyZSBwcm9jZXNzaW5nIHRoaXMgdHJhbnNhY3Rpb24gdXNp bmcgYW4gYXBwbHkNCj4gKyAqIGJhY2tncm91bmQgd29ya2VyIGFuZCBpZiBzbywgc2VuZCB0aGUg Y2hhbmdlcyB0byB0aGF0IHdvcmtlci4NCj4gKyAqLw0KPiArIGlmICh3c3RhdGUpDQo+ICsgew0K PiArIC8qIFNlbmQgU1RSRUFNIEFCT1JUIG1lc3NhZ2UgdG8gdGhlIGFwcGx5IGJhY2tncm91bmQg d29ya2VyLiAqLw0KPiArIGFwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YSh3c3RhdGUsIHMtPmxlbiwg cy0+ZGF0YSk7DQo+IA0KPiBXaHkgYXQgc29tZSBwbGFjZXMgdGhlIHBhdGNoIG5lZWRzIHRvIHNl cGFyYXRlbHkgZmV0Y2ggQXBwbHlCZ3dvcmtlckluZm8NCj4gd2hlcmVhcyBhdCBvdGhlciBwbGFj ZXMgaXQgZGlyZWN0bHkgdXNlcyBzdHJlYW1fYXBwbHlfd29ya2VyIHRvIHBhc3MgdGhlIGRhdGEN Cj4gdG8gYmd3b3JrZXIuDQo+IDMuIFdoeSBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KCkgb3Ig YXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKCkNCj4gZG9lc24ndCB1c2UgYXBwbHlfYmd3b3Jr ZXJfYWN0aXZlKCkgdG8gaWRlbnRpZnkgd2hldGhlciBpdCBuZWVkcyB0byBzZW5kIHRoZQ0KPiBp bmZvcm1hdGlvbiB0byBiZ3dvcmtlcj8NCg0KSSB0aGluayBzdHJlYW1fYXBwbHlfd29ya2VyIGlz IG9ubHkgdmFsaWQgYmV0d2VlbiBTVFJFQU1fU1RBUlQgYW5kIFNUUkVBTV9FTkQsDQpCdXQgaXQg c2VlbXMgaXQncyBub3QgY2xlYXIgZnJvbSB0aGUgY29kZS4gU28gSSBhZGRlZCBzb21lIGNvbW1l bnRzIGFuZCBzbGlnaHRseSByZWZhY3Rvcg0KdGhlIGNvZGUuDQoNCg0KPiA0LiBJbiBhcHBseV9o YW5kbGVfc3RyZWFtX3ByZXBhcmUoKSwgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydCgpLCBhbmQg c29tZQ0KPiBvdGhlciBzaW1pbGFyIGZ1bmN0aW9ucywgdGhlIHBhdGNoIGhhbmRsZXMgdGhyZWUg Y2FzZXMgKGEpIGFwcGx5IGJhY2tncm91bmQNCj4gd29ya2VyLCAoYikgc2VuZGluZyBkYXRhIHRv IGJnd29ya2VyLCAoYykgaGFuZGxpbmcgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9uIGluDQo+IGFw cGx5IHdvcmtlci4gSSB0aGluayB0aGUgY29kZSB3aWxsIGxvb2sgYmV0dGVyIGlmIHlvdSBtb3Zl IHRoZSByZXNwZWN0aXZlIGNvZGUNCj4gZm9yIGFsbCB0aHJlZSBjYXNlcyBpbnRvIHNlcGFyYXRl IGZ1bmN0aW9ucy4gU3VyZWx5LCBpZiB0aGUgY29kZSB0byBkZWFsIHdpdGggZWFjaA0KPiBvZiB0 aGUgY2FzZXMgaXMgbGVzcyB0aGVuIHdlIGRvbid0IG5lZWQgdG8gbW92ZSBpdCB0byBhIHNlcGFy YXRlIGZ1bmN0aW9uLg0KDQpSZWZhY3RvcmVkIGFuZCBzaW1wbGlmaWVkLg0KDQo+IDUuDQo+IEBA IC0xMDg4LDI0ICsxMTc3LDc4IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJ bmZvIHMpIHsgLi4uDQo+ICsgaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7DQo+ICsNCj4g KyAvKiBVbmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0 IGluZm8uICovDQo+ICsgc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5z dWJpZCwgcHJlcGFyZV9kYXRhLnhpZCk7IH0gfQ0KPiANCj4gICBpbl9yZW1vdGVfdHJhbnNhY3Rp b24gPSBmYWxzZTsNCj4gLi4uDQo+IA0KPiBXZSBkb24ndCBuZWVkIHRvIGluX3JlbW90ZV90cmFu c2FjdGlvbiB0byBmYWxzZSBpbiBtdWx0aXBsZSBwbGFjZXMuDQoNClJlbW92ZWQuDQoNCj4gNi4N Cj4gQEAgLTExNzcsMzYgKzEzMTEsOTMgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJp bmdJbmZvIHMpIHsgLi4uDQo+IC4uLg0KPiArIGlmIChhbV9hcHBseV9iZ3dvcmtlcigpKQ0KPiAg IHsNCj4gLSBNZW1vcnlDb250ZXh0IG9sZGN0eDsNCj4gLQ0KPiAtIG9sZGN0eCA9IE1lbW9yeUNv bnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOw0KPiArIC8qDQo+ICsgKiBNYWtlIHN1cmUgdGhl IGhhbmRsZSBhcHBseV9kaXNwYXRjaCBtZXRob2RzIGFyZSBhd2FyZSB3ZSdyZSBpbiBhDQo+ICsg KiByZW1vdGUgdHJhbnNhY3Rpb24uDQo+ICsgKi8NCj4gKyBpbl9yZW1vdGVfdHJhbnNhY3Rpb24g PSB0cnVlOw0KPiANCj4gLSBNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ID0gcGFs bG9jKHNpemVvZihGaWxlU2V0KSk7DQo+IC0gRmlsZVNldEluaXQoTXlMb2dpY2FsUmVwV29ya2Vy LT5zdHJlYW1fZmlsZXNldCk7DQo+ICsgLyogQmVnaW4gdGhlIHRyYW5zYWN0aW9uLiAqLw0KPiAr IEFjY2VwdEludmFsaWRhdGlvbk1lc3NhZ2VzKCk7DQo+ICsgbWF5YmVfcmVyZWFkX3N1YnNjcmlw dGlvbigpOw0KPiANCj4gLSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsNCj4gKyBTdGFy dFRyYW5zYWN0aW9uQ29tbWFuZCgpOw0KPiArIEJlZ2luVHJhbnNhY3Rpb25CbG9jaygpOw0KPiAr IENvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOw0KPiAgIH0NCj4gLi4uDQo+IA0KPiBXaHkgZG8g d2UgbmVlZCB0byBzdGFydCBhIHRyYW5zYWN0aW9uIGhlcmU/IFdoeSBjYW4ndCBpdCBiZSBkb25l IHZpYQ0KPiBiZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCkgZHVyaW5nIHRoZSBmaXJzdCBvcGVyYXRp b24gYXBwbHk/IElzIGl0IGJlY2F1c2Ugd2UgbWF5DQo+IG5lZWQgdG8gZGVmaW5lIGEgc2F2ZSBw b2ludCBpbiBiZ3dvcmtlciBhbmQgd2UgZG9uJ3QgdGhhdCBpbmZvcm1hdGlvbg0KPiBiZWZvcmVo YW5kPyBJZiBzbywgdGhlbiBhbHNvLCBjYW4ndCBpdCBiZSBoYW5kbGVkIGJ5DQo+IGJlZ2luX3Jl cGxpY2F0aW9uX3N0ZXAoKSBlaXRoZXIgYnkgZXhwbGljaXRseSBwYXNzaW5nIHRoZSBpbmZvcm1h dGlvbiBvcg0KPiBjaGVja2luZyBpdCB0aGVyZSBhbmQgdGhlbiBzdGFydGluZyBhIHRyYW5zYWN0 aW9uIGJsb2NrPyBJbiBhbnkgY2FzZSwgcGxlYXNlIGFkZA0KPiBhIGZldyBjb21tZW50cyB0byBl eHBsYWluIHdoeSB0aGlzIHNlcGFyYXRlIGhhbmRsaW5nIGlzIHJlcXVpcmVkIGZvcg0KPiBiZ3dv cmtlcj8NCg0KVGhlIHRyYW5zYWN0aW9uIGJsb2NrIGlzIHVzZWQgdG8gZGVmaW5lIHRoZSBzYXZl cG9pbnQgYW5kIEkgbW92ZWQgdGhlc2UNCmNvZGVzIHRvIHRoZSBwbGFjZSB3aGVyZSB0aGUgc2F2 ZXBvaW50IGlzIGRlZmluZWQgd2hpY2ggbG9va3MgYmV0dGVyIG5vdy4NCg0KPiA3LiBXaGVuIHdl IGFyZSBhbHJlYWR5IHNldHRpbmcgYmd3b3JrZXIgc3RhdHVzIGFzIEFQUExZX0JHV09SS0VSX0JV U1kgaW4NCj4gYXBwbHlfYmd3b3JrZXJfc2V0dXBfZHNtKCkgdGhlbiB3aHkgZG8gd2UgbmVlZCB0 byBzZXQgaXQgYWdhaW4gaW4NCj4gYXBwbHlfYmd3b3JrZXJfc3RhcnQoKT8NCg0KUmVtb3ZlZC4N Cg0KPiA4LiBJdCBpcyBub3QgY2xlYXIgdG8gbWUgaG93IEFQUExZX0JHV09SS0VSX0VYSVQgc3Rh dHVzIGlzIHVzZWQuIElzIGl0IHJlcXVpcmVkDQo+IGZvciB0aGUgY2FzZXMgd2hlcmUgYmd3b3Jr ZXIgZXhpc3RzIGR1ZSB0byBzb21lIGVycm9yIGFuZCB0aGVuIGFwcGx5IHdvcmtlcg0KPiB1c2Vz IGl0IHRvIGRldGVjdCB0aGF0IGFuZCBleGl0cz8gSG93IG90aGVyIGJnd29ya2VycyB3b3VsZCBu b3RpY2UgdGhpcywgaXMgaXQNCj4gZG9uZSB2aWEgYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVz KCk/DQoNCkl0IHdhcyB1c2VkIHRvIGRldGVjdCB0aGUgdW5leHBlY3RlZCBleGl0IG9mIGJnd29y a2VyIGFuZCBJIGhhdmUgY2hhbmdlZCB0aGUgZGVzaWduDQpvZiB0aGlzIHdoaWNoIGlzIG5vdyBz aW1pbGFyIHRvIHdoYXQgd2UgaGF2ZSBpbiBwYXJhbGxlbCBxdWVyeS4NCg0KQXR0YWNoIHRoZSBu ZXcgdmVyc2lvbiBwYXRjaCBzZXQodjI0KSB3aGljaCBhZGRyZXNzIGFib3ZlIGNvbW1lbnRzLg0K QmVzaWRlcywgSSBhZGRlZCBzb21lIGxvZ2ljIHdoaWNoIHRyeSB0byBzdG9wIHRoZSBiZ3dvcmtl ciBhdCB0cmFuc2FjdGlvbiBlbmQNCmlmIHRoZXJlIGFyZSBlbm91Z2ggd29ya2VycyBpbiB0aGUg cG9vbC4NCg0KQmVzdCByZWdhcmRzLA0KSG91IHpqDQo= --_006_OS0PR01MB57166F15F4542FAE69A74EC094739OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v24-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v24-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v24-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=32100; creation-date="Wed, 24 Aug 2022 13:45:00 GMT"; modification-date="Wed, 24 Aug 2022 13:47:08 GMT" Content-Transfer-Encoding: base64 RnJvbSA2NGI4ZDJhODZlNTAwMWY1ZTEwZjJhZGE4OGJlOWFlMTZkN2IxNmU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjQgQXVnIDIwMjIgMjE6MDc6NDQgKzA4MDAKU3ViamVjdDogW1BBVENI IHYyNCA0LzVdIFJldHJ5IHRvIGFwcGx5IHN0cmVhbWluZyB4YWN0IG9ubHkgaW4gYXBwbHkgd29y a2VyCgpXaGVuIHRoZSBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIGlzIHNldCBzdHJlYW1pbmc9cGFy YWxsZWwsIHRoZSBsb2dpYyB0cmllcyB0bwphcHBseSB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9u IHVzaW5nIGFuIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLiBJZiB0aGlzCmZhaWxzIHRoZSBiYWNr Z3JvdW5kIHdvcmtlciBleGl0cyB3aXRoIGFuIGVycm9yLgoKSW4gdGhpcyBjYXNlLCByZXRyeSBh cHBseWluZyB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHVzaW5nIHRoZSBub3JtYWwKc3RyZWFt aW5nPW9uIG1vZGUuIFRoaXMgaXMgZG9uZSB0byBhdm9pZCBnZXR0aW5nIGNhdWdodCBpbiBhIGxv b3Agb2YgdGhlIHNhbWUKcmV0cnkgZXJyb3JzLgoKQSBuZXcgZmxhZyBmaWVsZCAic3VicmV0cnki IGhhcyBiZWVuIGludHJvZHVjZWQgdG8gY2F0YWxvZyAicGdfc3Vic2NyaXB0aW9uIi4KSWYgdGhl IHN1YnNjcmliZXIgZXhpdHMgd2l0aCBhbiBlcnJvciwgdGhpcyBmbGFnIHdpbGwgYmUgc2V0IHRy dWUsIGFuZAp3aGVuZXZlciB0aGUgdHJhbnNhY3Rpb24gaXMgYXBwbGllZCBzdWNjZXNzZnVsbHks IHRoaXMgZmxhZyBpcyByZXNldCBmYWxzZS4KTm93LCB3aGVuIGRlY2lkaW5nIGhvdyB0byBhcHBs eSBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgdGhlIGxvZ2ljIGNhbiBrbm93IGlmCnRoaXMgdHJh bnNhY3Rpb24gaGFzIHByZXZpb3VzbHkgZmFpbGVkIG9yIG5vdCAoYnkgY2hlY2tpbmcgdGhlICJz dWJyZXRyeSIKZmllbGQpLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAg ICAgICAgICAgICAgIHwgICA5ICsrCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRp b24uc2dtbCAgICAgICB8ICAgNSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlv bi5jICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5z cWwgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9u Y21kcy5jICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9h cHBseWJnd29ya2VyLmMgfCAgMTYgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv d29ya2VyLmMgICAgICAgIHwgMTg4ICsrKysrKysrKysrKysrKysrKy0tLS0tLQogc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9pbmNs dWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAgICAgIHwgICA0ICsKIHNyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwgIHwgMTM0ICsrKysrKysrLS0t LS0tLS0tCiAxMCBmaWxlcyBjaGFuZ2VkLCAyMzcgaW5zZXJ0aW9ucygrKSwgMTI4IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9z Z21sL2NhdGFsb2dzLnNnbWwKaW5kZXggNjczYzgxMi4uMzUzMzVlNiAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTc5MTksNiArNzkxOSwxNSBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRl cmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogCiAgICAgIDxy b3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJyZXRyeTwvc3RydWN0 ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAg ICAgICBUcnVlIGlmIHRoZSBwcmV2aW91cyBhcHBseSBjaGFuZ2UgZmFpbGVkLCBuZWNlc3NpdGF0 aW5nIGEgcmV0cnkKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+c3ViY29ubmluZm88L3N0 cnVjdGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+ CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IDQ3YmNhYTIu LmNiMjAxYTggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlv bi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBA IC0yNDUsNiArMjQ1LDExIEBAIENSRUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgICAgICAgICAgYWxz byBiZSB0aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcHVibGlzaGVyLXNpZGU7IDIpIHRoZXJlIGNh bm5vdCBiZQogICAgICAgICAgIGFueSBub24taW1tdXRhYmxlIGZ1bmN0aW9ucyB1c2VkIGJ5IHRo ZSBzdWJzY3JpYmVyLXNpZGUgcmVwbGljYXRlZAogICAgICAgICAgIHRhYmxlLgorICAgICAgICAg IFdoZW4gYXBwbHlpbmcgYSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIGlmIGVpdGhlciByZXF1aXJl bWVudCBpcyBub3QKKyAgICAgICAgICBtZXQsIHRoZSBiYWNrZ3JvdW5kIHdvcmtlciB3aWxsIGV4 aXQgd2l0aCBhbiBlcnJvci4KKyAgICAgICAgICBUaGUgPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVy YWw+IG1vZGUgaXMgZGlzcmVnYXJkZWQgd2hlbiByZXRyeWluZzsKKyAgICAgICAgICBpbnN0ZWFk IHRoZSB0cmFuc2FjdGlvbiB3aWxsIGJlIGFwcGxpZWQgdXNpbmcgPGxpdGVyYWw+b248L2xpdGVy YWw+CisgICAgICAgICAgbW9kZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRl bT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlv bi5jCmluZGV4IGE1MDZmYzMuLjcyM2IxNDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3Jp cHRpb24uYwpAQCAtNzEsNiArNzEsNyBAQCBHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29s IG1pc3Npbmdfb2spCiAJc3ViLT5zdHJlYW0gPSBzdWJmb3JtLT5zdWJzdHJlYW07CiAJc3ViLT50 d29waGFzZXN0YXRlID0gc3ViZm9ybS0+c3VidHdvcGhhc2VzdGF0ZTsKIAlzdWItPmRpc2FibGVv bmVyciA9IHN1YmZvcm0tPnN1YmRpc2FibGVvbmVycjsKKwlzdWItPnJldHJ5ID0gc3ViZm9ybS0+ c3VicmV0cnk7CiAKIAkvKiBHZXQgY29ubmluZm8gKi8KIAlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0 cihTVUJTQ1JJUFRJT05PSUQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3Rl bV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXgg NWE4NDRiNi4uNjUyZDc2ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1f dmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAt MTI5OSw3ICsxMjk5LDcgQEAgUkVWT0tFIEFMTCBPTiBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc3Rh dHVzIEZST00gcHVibGljOwogUkVWT0tFIEFMTCBPTiBwZ19zdWJzY3JpcHRpb24gRlJPTSBwdWJs aWM7CiBHUkFOVCBTRUxFQ1QgKG9pZCwgc3ViZGJpZCwgc3Vic2tpcGxzbiwgc3VibmFtZSwgc3Vi b3duZXIsIHN1YmVuYWJsZWQsCiAgICAgICAgICAgICAgIHN1YmJpbmFyeSwgc3Vic3RyZWFtLCBz dWJ0d29waGFzZXN0YXRlLCBzdWJkaXNhYmxlb25lcnIsCi0gICAgICAgICAgICAgIHN1YnNsb3Ru YW1lLCBzdWJzeW5jY29tbWl0LCBzdWJwdWJsaWNhdGlvbnMsIHN1Ym9yaWdpbikKKyAgICAgICAg ICAgICAgc3VicmV0cnksIHN1YnNsb3RuYW1lLCBzdWJzeW5jY29tbWl0LCBzdWJwdWJsaWNhdGlv bnMsIHN1Ym9yaWdpbikKICAgICBPTiBwZ19zdWJzY3JpcHRpb24gVE8gcHVibGljOwogCiBDUkVB VEUgVklFVyBwZ19zdGF0X3N1YnNjcmlwdGlvbl9zdGF0cyBBUwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv c3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IDNkYzAzZGMuLmFjOTJjYmIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTY4OSw2ICs2ODksNyBAQCBDcmVhdGVTdWJz Y3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10 LAogCQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9QRU5ESU5HIDoKIAkJCQkJIExPR0lD QUxSRVBfVFdPUEhBU0VfU1RBVEVfRElTQUJMRUQpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlw dGlvbl9zdWJkaXNhYmxlb25lcnIgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLmRpc2FibGVvbmVy cik7CisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSBCb29sR2V0 RGF0dW0oZmFsc2UpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25uaW5mbyAt IDFdID0KIAkJQ1N0cmluZ0dldFRleHREYXR1bShjb25uaW5mbyk7CiAJaWYgKG9wdHMuc2xvdF9u YW1lKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJn d29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIu YwppbmRleCBkMzVkZDc0Li45ZDkwNWM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYwpAQCAtMTMxLDYgKzEzMSwxOCBAQCBhcHBseV9iZ3dv cmtlcl9jYW5fc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpCiAJCXJldHVybiBmYWxzZTsKIAogCS8q CisJICogRG9uJ3QgdXNlIGFwcGx5IGJhY2tncm91bmQgd29ya2VycyBmb3IgcmV0cmllcywgYmVj YXVzZSBpdCBpcyBwb3NzaWJsZQorCSAqIHRoYXQgdGhlIGxhc3QgdGltZSB3ZSB0cmllZCB0byBh cHBseSBhIHRyYW5zYWN0aW9uIHVzaW5nIGFuIGFwcGx5CisJICogYmFja2dyb3VuZCB3b3JrZXIg dGhlIGNoZWNrcyBmYWlsZWQgKHNlZSBmdW5jdGlvbgorCSAqIGFwcGx5X2Jnd29ya2VyX3JlbGF0 aW9uX2NoZWNrKS4KKwkgKi8KKwlpZiAoTXlTdWJzY3JpcHRpb24tPnJldHJ5KQorCXsKKwkJZWxv ZyhERUJVRzEsICJhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMgYXJlIG5vdCB1c2VkIGZvciByZXRy aWVzIik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwkvKgogCSAqIEZvciBzdHJlYW1pbmcgdHJh bnNhY3Rpb25zIHRoYXQgYXJlIGJlaW5nIGFwcGxpZWQgdXNpbmcgYXBwbHkgYmFja2dyb3VuZAog CSAqIHdvcmtlciwgd2UgY2Fubm90IGRlY2lkZSB3aGV0aGVyIHRvIGFwcGx5IHRoZSBjaGFuZ2Ug Zm9yIGEgcmVsYXRpb24gdGhhdAogCSAqIGlzIG5vdCBpbiB0aGUgUkVBRFkgc3RhdGUgKHNlZSBz aG91bGRfYXBwbHlfY2hhbmdlc19mb3JfcmVsKSBhcyB3ZSB3b24ndApAQCAtMTAxOSw3ICsxMDMx LDUgQEAgYXBwbHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2soTG9naWNhbFJlcFJlbE1hcEVudHJ5 ICpyZWwpCiAJCQkJCQkic3RyZWFtaW5nID0gcGFyYWxsZWwiKSwKIAkJCQkgZXJyZGV0YWlsKCJU aGUgdW5pcXVlIGNvbHVtbiBvbiBzdWJzY3JpYmVyIGlzIG5vdCB0aGUgdW5pcXVlICIKIAkJCQkJ CSAgICJjb2x1bW4gb24gcHVibGlzaGVyIG9yIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSAiCi0JCQkJ CQkgICAibm9uLWltbXV0YWJsZSBmdW5jdGlvbi4iKSwKLQkJCQkgZXJyaGludCgiUGxlYXNlIGNo YW5nZSB0byB1c2Ugc3Vic2NyaXB0aW9uIHBhcmFtZXRlciAlcy4iLAotCQkJCQkJInN0cmVhbWlu ZyA9IG9uIikpKTsKKwkJCQkJCSAgICJub24taW1tdXRhYmxlIGZ1bmN0aW9uLiIpKSk7CiB9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCBiMWQ4OTljLi5mMDU3 MTVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTM0MCw3 ICszNDAsNyBAQCBzdGF0aWMgdm9pZCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJl bW90ZV9sc24pOwogCiBzdGF0aWMgdm9pZCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQp OwogCi1zdGF0aWMgdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKTsKK3N0YXRp YyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25PbkVycm9yKHZvaWQpOwogCiBzdGF0aWMgdm9pZCBh cHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRf ZGF0YSk7CiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfaW5zZXJ0X2ludGVybmFsKEFwcGx5RXhl Y3V0aW9uRGF0YSAqZWRhdGEsCkBAIC0zNzcsNiArMzc3LDggQEAgc3RhdGljIHZvaWQgY2xlYXJf c3Vic2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbik7CiBzdGF0aWMgaW5s aW5lIHZvaWQgc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChUcmFuc2FjdGlvbklkIHhpZCwg WExvZ1JlY1B0ciBsc24pOwogc3RhdGljIGlubGluZSB2b2lkIHJlc2V0X2FwcGx5X2Vycm9yX2Nv bnRleHRfaW5mbyh2b2lkKTsKIAorc3RhdGljIHZvaWQgc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShi b29sIHJldHJ5KTsKKwogLyoKICAqIFNob3VsZCB0aGlzIHdvcmtlciBhcHBseSBjaGFuZ2VzIGZv ciBnaXZlbiByZWxhdGlvbi4KICAqCkBAIC05MzAsNiArOTMyLDkgQEAgYXBwbHlfaGFuZGxlX2Nv bW1pdChTdHJpbmdJbmZvIHMpCiAKIAlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21t aXRfZGF0YSk7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0 aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWlu ZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhj b21taXRfZGF0YS5lbmRfbHNuKTsKIApAQCAtMTAzOSw2ICsxMDQ0LDkgQEAgYXBwbHlfaGFuZGxl X3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7 CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5 KGZhbHNlKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJv bml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2Rh dGEuZW5kX2xzbik7CiAKQEAgLTEwODksNiArMTA5Nyw5IEBAIGFwcGx5X2hhbmRsZV9jb21taXRf cHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0 YS5lbmRfbHNuKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0 IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJ LyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJh bGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsK IApAQCAtMTE0NCw2ICsxMTU1LDkgQEAgYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0 cmluZ0luZm8gcykKIAlzdG9yZV9mbHVzaF9wb3NpdGlvbihyb2xsYmFja19kYXRhLnJvbGxiYWNr X2VuZF9sc24pOwogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCisJLyogUmVzZXQg dGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAkv KiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFs bGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMocm9sbGJhY2tfZGF0YS5yb2xsYmFja19l bmRfbHNuKTsKIApAQCAtMTIwOSw2ICsxMjIzLDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVw YXJlKFN0cmluZ0luZm8gcykKIAkJYXBwbHlfYmd3b3JrZXJfZnJlZSh3aW5mbyk7CiAKIAkJc3Rv cmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCisJCS8qIFJlc2V0IHRo ZSByZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKIAl9CiAJ ZWxzZQogCXsKQEAgLTEyMjcsNiArMTI0NCw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFy ZShTdHJpbmdJbmZvIHMpCiAKIAkJLyogVW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQg Y2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLwogCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxv Z2ljYWxSZXBXb3JrZXItPnN1YmlkLCBwcmVwYXJlX2RhdGEueGlkKTsKKworCQkvKiBSZXNldCB0 aGUgcmV0cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CiAJfQog CiAJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKQEAgLTE2NzEsMTQgKzE2OTEsMjIgQEAgYXBw bHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCQlhcHBseV9iZ3dvcmtlcl93 YWl0X2Zvcih3aW5mbywgQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOwogCQkJYXBwbHlfYmd3b3Jr ZXJfZnJlZSh3aW5mbyk7CiAJCX0KKworCQkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJ c2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CiAJfQogCWVsc2UKKwl7CiAJCS8qCiAJCSAq IFdlIGFyZSBpbiBtYWluIGFwcGx5IHdvcmtlciBhbmQgdGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVu CiAJCSAqIHNlcmlhbGl6ZWQgdG8gZmlsZS4KIAkJICovCiAJCXNlcmlhbGl6ZV9zdHJlYW1fYWJv cnQoeGlkLCBzdWJ4aWQpOwogCisJCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQlzZXRf c3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwl9CisKIAlyZXNldF9hcHBseV9lcnJvcl9jb250 ZXh0X2luZm8oKTsKIH0KIApAQCAtMTg1OSw2ICsxODg3LDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVh bV9jb21taXQoU3RyaW5nSW5mbyBzKQogCQkgKiBzdWJza2lwbHNuLgogCQkgKi8KIAkJY2xlYXJf c3Vic2NyaXB0aW9uX3NraXBfbHNuKGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCisJCS8qIFJl c2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsK IAl9CiAJZWxzZQogCXsKQEAgLTE4NzIsNiArMTkwMyw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1f Y29tbWl0KFN0cmluZ0luZm8gcykKIAogCQkvKiBVbmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFs aXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCiAJCXN0cmVhbV9jbGVhbnVwX2ZpbGVz KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisKKwkJLyogUmVzZXQgdGhlIHJldHJ5 IGZsYWcuICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOwogCX0KIAogCS8qIFBy b2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwu ICovCkBAIC0zOTE5LDIwICszOTUzLDI4IEBAIHN0YXJ0X3RhYmxlX3N5bmMoWExvZ1JlY1B0ciAq b3JpZ2luX3N0YXJ0cG9zLCBjaGFyICoqbXlzbG90bmFtZSkKIAl9CiAJUEdfQ0FUQ0goKTsKIAl7 CisJCS8qCisJCSAqIEVtaXQgdGhlIGVycm9yIG1lc3NhZ2UsIGFuZCByZWNvdmVyIGZyb20gdGhl IGVycm9yIHN0YXRlIHRvIGFuIGlkbGUKKwkJICogc3RhdGUKKwkJICovCisJCUhPTERfSU5URVJS VVBUUygpOworCisJCUVtaXRFcnJvclJlcG9ydCgpOworCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rp b24oKTsKKwkJRmx1c2hFcnJvclN0YXRlKCk7CisKKwkJUkVTVU1FX0lOVEVSUlVQVFMoKTsKKwor CQkvKiBSZXBvcnQgdGhlIHdvcmtlciBmYWlsZWQgZHVyaW5nIHRhYmxlIHN5bmNocm9uaXphdGlv biAqLworCQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+ b2lkLCBmYWxzZSk7CisKIAkJaWYgKE15U3Vic2NyaXB0aW9uLT5kaXNhYmxlb25lcnIpCi0JCQlE aXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCgpOwotCQllbHNlCi0JCXsKLQkJCS8qCi0JCQkgKiBS ZXBvcnQgdGhlIHdvcmtlciBmYWlsZWQgZHVyaW5nIHRhYmxlIHN5bmNocm9uaXphdGlvbi4gQWJv cnQKLQkJCSAqIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIHNvIHRoYXQgdGhlIHN0YXRzIG1lc3Nh Z2UgaXMgc2VudCBpbiBhbgotCQkJICogaWRsZSBzdGF0ZS4KLQkJCSAqLwotCQkJQWJvcnRPdXRP ZkFueVRyYW5zYWN0aW9uKCk7Ci0JCQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihN eVN1YnNjcmlwdGlvbi0+b2lkLCBmYWxzZSk7CisJCQlEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJv cigpOwogCi0JCQlQR19SRV9USFJPVygpOwotCQl9CisJCS8qIFNldCB0aGUgcmV0cnkgZmxhZy4g Ki8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeSh0cnVlKTsKKworCQlwcm9jX2V4aXQoMCk7CiAJ fQogCVBHX0VORF9UUlkoKTsKIApAQCAtMzk1NywyMCArMzk5OSwyNyBAQCBzdGFydF9hcHBseShY TG9nUmVjUHRyIG9yaWdpbl9zdGFydHBvcykKIAl9CiAJUEdfQ0FUQ0goKTsKIAl7CisJCS8qCisJ CSAqIEVtaXQgdGhlIGVycm9yIG1lc3NhZ2UsIGFuZCByZWNvdmVyIGZyb20gdGhlIGVycm9yIHN0 YXRlIHRvIGFuIGlkbGUKKwkJICogc3RhdGUKKwkJICovCisJCUhPTERfSU5URVJSVVBUUygpOwor CisJCUVtaXRFcnJvclJlcG9ydCgpOworCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKKwkJ Rmx1c2hFcnJvclN0YXRlKCk7CisKKwkJUkVTVU1FX0lOVEVSUlVQVFMoKTsKKworCQkvKiBSZXBv cnQgdGhlIHdvcmtlciBmYWlsZWQgd2hpbGUgYXBwbHlpbmcgY2hhbmdlcyAqLworCQlwZ3N0YXRf cmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lkLAorCQkJCQkJCQkJ CSAhYW1fdGFibGVzeW5jX3dvcmtlcigpKTsKKwogCQlpZiAoTXlTdWJzY3JpcHRpb24tPmRpc2Fi bGVvbmVycikKLQkJCURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KCk7Ci0JCWVsc2UKLQkJewot CQkJLyoKLQkJCSAqIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCB3aGlsZSBhcHBseWluZyBjaGFu Z2VzLiBBYm9ydCB0aGUKLQkJCSAqIGN1cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUgc3Rh dHMgbWVzc2FnZSBpcyBzZW50IGluIGFuCi0JCQkgKiBpZGxlIHN0YXRlLgotCQkJICovCi0JCQlB Ym9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKLQkJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9u X2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsICFhbV90YWJsZXN5bmNfd29ya2VyKCkpOworCQkJ RGlzYWJsZVN1YnNjcmlwdGlvbk9uRXJyb3IoKTsKIAotCQkJUEdfUkVfVEhST1coKTsKLQkJfQor CQkvKiBTZXQgdGhlIHJldHJ5IGZsYWcuICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkodHJ1 ZSk7CiAJfQogCVBHX0VORF9UUlkoKTsKIH0KQEAgLTQyMzIsMzkgKzQyODEsMjAgQEAgQXBwbHlX b3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogfQogCiAvKgotICogQWZ0ZXIgZXJyb3IgcmVjb3Zl cnksIGRpc2FibGUgdGhlIHN1YnNjcmlwdGlvbiBpbiBhIG5ldyB0cmFuc2FjdGlvbgotICogYW5k IGV4aXQgY2xlYW5seS4KKyAqIERpc2FibGUgdGhlIHN1YnNjcmlwdGlvbiBpbiBhIG5ldyB0cmFu c2FjdGlvbi4KICAqLwogc3RhdGljIHZvaWQKLURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZv aWQpCitEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJvcih2b2lkKQogewotCS8qCi0JICogRW1pdCB0 aGUgZXJyb3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4g aWRsZQotCSAqIHN0YXRlCi0JICovCi0JSE9MRF9JTlRFUlJVUFRTKCk7Ci0KLQlFbWl0RXJyb3JS ZXBvcnQoKTsKLQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKLQlGbHVzaEVycm9yU3RhdGUo KTsKLQotCVJFU1VNRV9JTlRFUlJVUFRTKCk7Ci0KLQkvKiBSZXBvcnQgdGhlIHdvcmtlciBmYWls ZWQgZHVyaW5nIGVpdGhlciB0YWJsZSBzeW5jaHJvbml6YXRpb24gb3IgYXBwbHkgKi8KLQlwZ3N0 YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLAot CQkJCQkJCQkJICFhbV90YWJsZXN5bmNfd29ya2VyKCkpOwotCiAJLyogRGlzYWJsZSB0aGUgc3Vi c2NyaXB0aW9uICovCiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlEaXNhYmxlU3Vic2Ny aXB0aW9uKE15U3Vic2NyaXB0aW9uLT5vaWQpOwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OwogCi0JLyogTm90aWZ5IHRoZSBzdWJzY3JpcHRpb24gaGFzIGJlZW4gZGlzYWJsZWQgYW5kIGV4 aXQgKi8KKwkvKiBOb3RpZnkgdGhlIHN1YnNjcmlwdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCAqLwog CWVyZXBvcnQoTE9HLAogCQkJZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHN1YnNjcmlwdGlv biBcIiVzXCIgaGFzIGJlZW4gZGlzYWJsZWQgZHVlIHRvIGFuIGVycm9yIiwKIAkJCQkgICBNeVN1 YnNjcmlwdGlvbi0+bmFtZSkpOwotCi0JcHJvY19leGl0KDApOwogfQogCiAvKgpAQCAtNDQ5OSwz ICs0NTI5LDY3IEBAIHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2b2lkKQogCWFwcGx5 X2Vycm9yX2NhbGxiYWNrX2FyZy5yZW1vdGVfYXR0bnVtID0gLTE7CiAJc2V0X2FwcGx5X2Vycm9y X2NvbnRleHRfeGFjdChJbnZhbGlkVHJhbnNhY3Rpb25JZCwgSW52YWxpZFhMb2dSZWNQdHIpOwog fQorCisvKgorICogU2V0IHN1YnJldHJ5IG9mIHBnX3N1YnNjcmlwdGlvbiBjYXRhbG9nLgorICoK KyAqIElmIHJldHJ5IGlzIHRydWUsIHN1YnNjcmliZXIgaXMgYWJvdXQgdG8gZXhpdCB3aXRoIGFu IGVycm9yLiBPdGhlcndpc2UsIGl0CisgKiBtZWFucyB0aGF0IHRoZSB0cmFuc2FjdGlvbiB3YXMg YXBwbGllZCBzdWNjZXNzZnVsbHkuCisgKi8KK3N0YXRpYyB2b2lkCitzZXRfc3Vic2NyaXB0aW9u X3JldHJ5KGJvb2wgcmV0cnkpCit7CisJUmVsYXRpb24JcmVsOworCUhlYXBUdXBsZQl0dXA7CisJ Ym9vbAkJc3RhcnRlZF90eCA9IGZhbHNlOworCWJvb2wJCW51bGxzW05hdHRzX3BnX3N1YnNjcmlw dGlvbl07CisJYm9vbAkJcmVwbGFjZXNbTmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsKKwlEYXR1bQkJ dmFsdWVzW05hdHRzX3BnX3N1YnNjcmlwdGlvbl07CisKKwkvKiBGYXN0IHBhdGggLSBpZiBubyBz dGF0ZSBjaGFuZ2UgdGhlbiBub3RoaW5nIHRvIGRvICovCisJaWYgKE15U3Vic2NyaXB0aW9uLT5y ZXRyeSA9PSByZXRyeSkKKwkJcmV0dXJuOworCisJLyogRmFzdCBwYXRoIC0gc2tpcCBmb3IgYXBw bHkgYmFja2dyb3VuZCB3b3JrZXJzICovCisJaWYgKGFtX2FwcGx5X2Jnd29ya2VyKCkpCisJCXJl dHVybjsKKworCWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCisJeworCQlTdGFydFRyYW5zYWN0 aW9uQ29tbWFuZCgpOworCQlzdGFydGVkX3R4ID0gdHJ1ZTsKKwl9CisKKwkvKiBMb29rIHVwIHRo ZSBzdWJzY3JpcHRpb24gaW4gdGhlIGNhdGFsb2cgKi8KKwlyZWwgPSB0YWJsZV9vcGVuKFN1YnNj cmlwdGlvblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCXR1cCA9IFNlYXJjaFN5c0Nh Y2hlQ29weTEoU1VCU0NSSVBUSU9OT0lELAorCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShNeVN1 YnNjcmlwdGlvbi0+b2lkKSk7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJZWxv ZyhFUlJPUiwgInN1YnNjcmlwdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLCBNeVN1YnNjcmlw dGlvbi0+bmFtZSk7CisKKwlMb2NrU2hhcmVkT2JqZWN0KFN1YnNjcmlwdGlvblJlbGF0aW9uSWQs IE15U3Vic2NyaXB0aW9uLT5vaWQsIDAsCisJCQkJCSBBY2Nlc3NTaGFyZUxvY2spOworCisJLyog Rm9ybSBhIG5ldyB0dXBsZS4gKi8KKwltZW1zZXQodmFsdWVzLCAwLCBzaXplb2YodmFsdWVzKSk7 CisJbWVtc2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9mKG51bGxzKSk7CisJbWVtc2V0KHJlcGxhY2Vz LCBmYWxzZSwgc2l6ZW9mKHJlcGxhY2VzKSk7CisKKwkvKiBSZXNldCBzdWJyZXRyeSAqLworCXZh bHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJyZXRyeSAtIDFdID0gQm9vbEdldERhdHVtKHJl dHJ5KTsKKwlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJyZXRyeSAtIDFdID0gdHJ1 ZTsKKworCXR1cCA9IGhlYXBfbW9kaWZ5X3R1cGxlKHR1cCwgUmVsYXRpb25HZXREZXNjcihyZWwp LCB2YWx1ZXMsIG51bGxzLAorCQkJCQkJCXJlcGxhY2VzKTsKKworCS8qIFVwZGF0ZSB0aGUgY2F0 YWxvZy4gKi8KKwlDYXRhbG9nVHVwbGVVcGRhdGUocmVsLCAmdHVwLT50X3NlbGYsIHR1cCk7CisK KwkvKiBDbGVhbnVwLiAqLworCWhlYXBfZnJlZXR1cGxlKHR1cCk7CisJdGFibGVfY2xvc2UocmVs LCBOb0xvY2spOworCisJaWYgKHN0YXJ0ZWRfdHgpCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFu ZCgpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggNDZhM2QwMS4uNDI2Y2I5ZiAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBA IC00NTA3LDggKzQ1MDcsOSBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJbnR1 cHMgPSBQUW50dXBsZXMocmVzKTsKIAogCS8qCi0JICogR2V0IHN1YnNjcmlwdGlvbiBmaWVsZHMu IFdlIGRvbid0IGluY2x1ZGUgc3Vic2tpcGxzbiBpbiB0aGUgZHVtcCBhcwotCSAqIGFmdGVyIHJl c3RvcmluZyB0aGUgZHVtcCB0aGlzIHZhbHVlIG1heSBubyBsb25nZXIgYmUgcmVsZXZhbnQuCisJ ICogR2V0IHN1YnNjcmlwdGlvbiBmaWVsZHMuIFdlIGRvbid0IGluY2x1ZGUgc3Vic2tpcGxzbiBh bmQgc3VicmV0cnkgaW4KKwkgKiB0aGUgZHVtcCBhcyBhZnRlciByZXN0b3JpbmcgdGhlIGR1bXAg dGhpcyB2YWx1ZSBtYXkgbm8gbG9uZ2VyIGJlCisJICogcmVsZXZhbnQuCiAJICovCiAJaV90YWJs ZW9pZCA9IFBRZm51bWJlcihyZXMsICJ0YWJsZW9pZCIpOwogCWlfb2lkID0gUFFmbnVtYmVyKHJl cywgIm9pZCIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRp b24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKaW5kZXggZjRlMWU5 NC4uMDk2OWI5ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRp b24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC04OCw2 ICs4OCw4IEBAIENBVEFMT0cocGdfc3Vic2NyaXB0aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRp b25JZCkgQktJX1NIQVJFRF9SRUxBVElPTiBCS0lfUk9XCiAJYm9vbAkJc3ViZGlzYWJsZW9uZXJy OwkvKiBUcnVlIGlmIGEgd29ya2VyIGVycm9yIHNob3VsZCBjYXVzZSB0aGUKIAkJCQkJCQkJCSAq IHN1YnNjcmlwdGlvbiB0byBiZSBkaXNhYmxlZCAqLwogCisJYm9vbAkJc3VicmV0cnkgQktJX0RF RkFVTFQoZik7CS8qIFRydWUgaWYgdGhlIHByZXZpb3VzIGFwcGx5IGNoYW5nZSBmYWlsZWQuICov CisKICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3Rh cnQgaGVyZSAqLwogCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJsaXNoZXIgKi8KIAl0 ZXh0CQlzdWJjb25uaW5mbyBCS0lfRk9SQ0VfTk9UX05VTEw7CkBAIC0xMzEsNiArMTMzLDggQEAg dHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJYm9vbAkJZGlzYWJsZW9uZXJyOwkvKiBJbmRp Y2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUKIAkJCQkJCQkJICogYXV0b21hdGlj YWxseSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJvcgogCQkJCQkJCQkgKiBvY2N1cnMgKi8KKwli b29sCQlyZXRyeTsJCQkvKiBJbmRpY2F0ZXMgaWYgdGhlIHByZXZpb3VzIGFwcGx5IGNoYW5nZQor CQkJCQkJCQkgKiBmYWlsZWQuICovCiAJY2hhcgkgICAqY29ubmluZm87CQkvKiBDb25uZWN0aW9u IHN0cmluZyB0byB0aGUgcHVibGlzaGVyICovCiAJY2hhcgkgICAqc2xvdG5hbWU7CQkvKiBOYW1l IG9mIHRoZSByZXBsaWNhdGlvbiBzbG90ICovCiAJY2hhcgkgICAqc3luY2NvbW1pdDsJCS8qIFN5 bmNocm9ub3VzIGNvbW1pdCBzZXR0aW5nIGZvciB3b3JrZXIgKi8KZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwgYi9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsCmluZGV4IDA1ZDNlODYuLjAxYzIzMWUg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHku cGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19hcHBseS5wbApA QCAtODEsNyArODEsOCBAQCBteSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCiAjID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K ICMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCB0aGUgdW5pcXVlIGNvbHVtbiBpbiB0aGUgcmVsYXRp b24gb24gdGhlCiAjIHN1YnNjcmliZXItc2lkZSBpcyBub3QgdGhlIHVuaXF1ZSBjb2x1bW4gb24g dGhlIHB1Ymxpc2hlci1zaWRlLiBDaGVjayB0aGUKLSMgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dy b3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyBlcnJvciByZXBvcnRlZCBieSBiYWNrZ3JvdW5k IHdvcmtlciBpbiB0aGlzIGNhc2UuIEFuZCBhZnRlciByZXRyeWluZyBpbgorIyBhcHBseSB3b3Jr ZXIsIHdlIGNoZWNrIGlmIHRoZSBkYXRhIGlzIHJlcGxpY2F0ZWQgc3VjY2Vzc2Z1bGx5LgogIyA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CiAKICMgRmlyc3Qgd2UgY2hlY2sgdGhlIHVuaXF1ZSBpbmRleCBv biBub3JtYWwgdGFibGUuCkBAIC0xMDYsNiArMTA3LDEwIEBAICRub2RlX3N1YnNjcmliZXItPndh aXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0 YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJh bWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCiskbm9kZV9zdWJzY3Jp YmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGR1cGxpY2F0ZSBr ZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgImlkeF90YWIxIi8sCisJJG9mZnNl dCk7CisKICMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQg d29ya3MuCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5E RVggaWR4X3RhYjEiKTsKIApAQCAtMTE0LDcgKzExOSw3IEBAICRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKIG15ICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi MSIpOwotaXMoJHJlc3VsdCwgcXEoNTAwMSksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJl ciBhZnRlciBkcm9wcGluZyBpbmRleCcpOworaXMoJHJlc3VsdCwgcXEoNTAwMSksICdkYXRhIHJl cGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB1bmlxdWUgaW5kZXggdG8gcmV0 cnkgYXBwbHknKTsKIAogIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQu CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUg dGVzdF90YWIxIik7CkBAIC0xMzUsMTkgKzE0MCwyMSBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0 X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFy Z2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlw dGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIERy b3AgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIHRlc3RfdGFi X2JfcGFydGl0aW9uX2lkeCIpOwotCiAjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0 aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi X3BhcnRpdGlvbmVkIik7Ci1pcygkcmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0 byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4Jyk7CitpcygkcmVzdWx0LCBxcSg1MDAw KSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ug b2YgdW5pcXVlIGluZGV4Jyk7CisKKyMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJz Y3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElO REVYIHRlc3RfdGFiX2JfcGFydGl0aW9uX2lkeCIpOwogCiAjID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K ICMgVHJpZ2dlcnMgd2hpY2ggZXhlY3V0ZSBub24taW1tdXRhYmxlIGZ1bmN0aW9uIGFyZSBub3Qg YWxsb3dlZCBvbiB0aGUKICMgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0 ZWQgYnkgYmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyBBbmQgYWZ0ZXIgcmV0cnlp bmcgaW4gYXBwbHkgd29ya2VyLCB3ZSBjaGVjayBpZiB0aGUgZGF0YSBpcyByZXBsaWNhdGVkCisj IHN1Y2Nlc3NmdWxseS4KICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAjIEZpcnN0IHdlIGNoZWNr IHRoZSB0cmlnZ2VyIGZ1bmN0aW9uIG9uIG5vcm1hbCB0YWJsZS4KQEAgLTE2OCwxNyArMTc1LDYg QEAgQ1JFQVRFIFRSSUdHRVIgdHJpX3RhYjFfdW5zYWZlCiBCRUZPUkUgSU5TRVJUIE9OIHB1Ymxp Yy50ZXN0X3RhYjEKIEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmNf dGFiMV91bnNhZmUoKTsKIEFMVEVSIFRBQkxFIHRlc3RfdGFiMSBFTkFCTEUgUkVQTElDQSBUUklH R0VSIHRyaV90YWIxX3Vuc2FmZTsKLQotQ1JFQVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY190YWIx X3NhZmUoKSBSRVRVUk5TIFRSSUdHRVIgQVMgXCRcJAotICBCRUdJTgotICAgIFJBSVNFIE5PVElD RSAndGVzdCBmb3Igc2FmZSB0cmlnZ2VyIGZ1bmN0aW9uJzsKLQlSRVRVUk4gTkVXOwotICBFTkQK LVwkXCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKLUFMVEVSIEZVTkNUSU9OIHRyaWdnZXJfZnVuY190YWIx X3NhZmUgSU1NVVRBQkxFOwotQ1JFQVRFIFRSSUdHRVIgdHJpX3RhYjFfc2FmZQotQkVGT1JFIElO U0VSVCBPTiBwdWJsaWMudGVzdF90YWIxCi1GT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUg dHJpZ2dlcl9mdW5jX3RhYjFfc2FmZSgpOwogfSk7CiAKICMgQ2hlY2sgdGhlIHN1YnNjcmliZXIg bG9nIGZyb20gbm93IG9uLgpAQCAtMjAzLDI3ICsxOTksMjUgQEAgJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRl IHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBh cmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgVXNpbmcgdHJp Z2dlciB3aXRoIGltbXV0YWJsZSBmdW5jdGlvbiwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFxewotQUxURVIgVEFCTEUgdGVzdF90YWIx IEVOQUJMRSBSRVBMSUNBIFRSSUdHRVIgdHJpX3RhYjFfc2FmZTsKLURST1AgVFJJR0dFUiB0cmlf dGFiMV91bnNhZmUgT04gcHVibGljLnRlc3RfdGFiMTsKLX0pOworJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBkdXBsaWNhdGUga2V5IHZh bHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50ICJpZHhfdGFiMiIvLAorCSRvZmZzZXQpOwor CisjIERyb3AgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtz LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIGlk eF90YWIyIik7CiAKICMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUg YXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7Ci1pcygk cmVzdWx0LCBxcSgyKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHVzaW5n IGltbXV0YWJsZSBleHByZXNzaW9uJyk7CitpcygkcmVzdWx0LCBxcSgyKSwgJ2RhdGEgcmVwbGlj YXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgdHJpZ2dlcicpOwog CiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBxcXsKLURST1AgSU5ERVggaWR4X3RhYjI7 Ci1EUk9QIFRSSUdHRVIgdHJpX3RhYjFfc2FmZSBPTiBwdWJsaWMudGVzdF90YWIxOworRFJPUCBU UklHR0VSIHRyaV90YWIxX3Vuc2FmZSBPTiBwdWJsaWMudGVzdF90YWIxOwogRFJPUCBmdW5jdGlv biB0cmlnZ2VyX2Z1bmNfdGFiMV91bnNhZmU7Ci1EUk9QIGZ1bmN0aW9uIHRyaWdnZXJfZnVuY190 YWIxX3NhZmU7CiB9KTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3Jlcycs IHFxewpAQCAtMjU2LDIxICsyNTAsMjIgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9n KAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxh dGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFy YW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIHRoZSB0 cmlnZ2VyIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiRFJPUCBUUklHR0VSIGluc2VydF90cmlnIE9OIHRl c3RfdGFiX3BhcnRpdGlvbiIpOwotCiAjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0 aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi X3BhcnRpdGlvbmVkIik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBz dWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRyaWdnZXInKTsKK2lzKCRyZXN1bHQsIHFxKDApLCAn ZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiB0 cmlnZ2VyJyk7CisKKyMgRHJvcCB0aGUgdHJpZ2dlciBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJEUk9QIFRSSUdHRVIgaW5zZXJ0 X3RyaWcgT04gdGVzdF90YWJfcGFydGl0aW9uIik7CiAKICMgPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQog IyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24g Y29udGFpbnMgYQogIyBub24taW1tdXRhYmxlIGZ1bmN0aW9uIG9uIHRoZSBzdWJzY3JpYmVyIHNp ZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieQotIyBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0 aGlzIGNhc2UuCisjIGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJl dHJ5aW5nIGluIGFwcGx5IHdvcmtlciwgd2UgY2hlY2sKKyMgaWYgdGhlIGRhdGEgaXMgcmVwbGlj YXRlZCBzdWNjZXNzZnVsbHkuCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogIyBGaXJzdCB3ZSBj aGVjayB0aGUgY29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBvbiBub3JtYWwgdGFibGUu CkBAIC0zMDgsMTcgKzMwMywxMyBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJ cXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9u ICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWlu ZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBBbHRlciBkZWZhdWx0IHZhbHVlcyB0byBp bW11dGFibGUgZXhwcmVzc2lvbiwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBBTFRFUiBDT0xVTU4g YiBTRVQgREVGQVVMVCAxIik7Ci0KICMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rp b24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIx Iik7CiBpcygkcmVzdWx0LCBxcSg1MDAxKSwKLQknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmli ZXIgYWZ0ZXIgdXNpbmcgaW1tdXRhYmxlIGV4cHJlc3Npb24nKTsKKwknZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBjb2x1bW4gZGVmYXVsdCB2 YWx1ZScpOwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90 YWIxIERST1AgQ09MVU1OIGIiKTsKQEAgLTM0NCwyMiArMzM1LDIzIEBAICRub2RlX3N1YnNjcmli ZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxp Y2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcg c3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7 CiAKLSMgRHJvcCBkZWZhdWx0IHZhbHVlIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3Mu Ci0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUg dGVzdF90YWJfcGFydGl0aW9uIEFMVEVSIENPTFVNTiBiIERST1AgREVGQVVMVCIpOwotCiAjIFdh aXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFw cGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7CiBpcygkcmVzdWx0 LCBxcSg1MDAwKSwKLQknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBp bmcgZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uJyk7CisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJz Y3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgY29sdW1uIGRlZmF1bHQgdmFsdWUnKTsK KworIyBEcm9wIGRlZmF1bHQgdmFsdWUgb24gdGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0 aW9uIEFMVEVSIENPTFVNTiBiIERST1AgREVGQVVMVCIpOwogCiAjID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KICMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBkb21haW4gY29uc3RyYWludCBleHByZXNzaW9u IGNvbnRhaW5zIGEgbm9uLWltbXV0YWJsZQogIyBmdW5jdGlvbiBvbiB0aGUgc3Vic2NyaWJlciBz aWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZAotIyB3b3JrZXIgaW4g dGhpcyBjYXNlLgorIyB3b3JrZXIgaW4gdGhpcyBjYXNlLiBBbmQgYWZ0ZXIgcmV0cnlpbmcgaW4g YXBwbHkgd29ya2VyLCB3ZSBjaGVjayBpZiB0aGUKKyMgZGF0YSBpcyByZXBsaWNhdGVkIHN1Y2Nl c3NmdWxseS4KICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAjIEJlY2F1c2UgdGhlIGNvbHVtbiB0 eXBlIG9mIHRoZSBwYXJ0aXRpb24gdGFibGUgbXVzdCBiZSB0aGUgc2FtZSBhcyBpdHMgcGFyZW50 CkBAIC00MDAsMTcgKzM5MiwxMyBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJ cXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9u ICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWlu ZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIGRvbWFpbiBjb25zdHJhaW50IGV4 cHJlc3Npb24sIG5vdyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAotCSJBTFRFUiBET01BSU4gdG1wX2RvbWFpbiBEUk9QIENPTlNUUkFJTlQgZG9tYWlu X2NoZWNrIik7Ci0KICMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUg YXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7CiBpcygk cmVzdWx0LCBxcSg1MDAxKSwKLQknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIg dXNpbmcgaW1tdXRhYmxlIGV4cHJlc3Npb24nCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3Jp YmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgZG9tYWluJwogKTsKIAogIyBDbGVhbiB1cCB0 ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCkBAIC00MjQsOSArNDEyLDEwIEBAIFRSVU5D QVRFIFRBQkxFIHRlc3RfdGFiMjsKICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CiAKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIyBJdCBpcyBub3QgYWxsb3dlZCB0 aGF0IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUgZnVuY3Rp b24KLSMgb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5 IGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMKLSMgY2FzZS4KKyMgSXQgaXMgbm90IGFsbG93ZWQg dGhhdCBjb25zdHJhaW50IGV4cHJlc3Npb24gY29udGFpbnMgYSBub24taW1tdXRhYmxlCisjIGZ1 bmN0aW9uIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBi eSBiYWNrZ3JvdW5kCisjIHdvcmtlciBpbiB0aGlzIGNhc2UuIEFuZCBhZnRlciByZXRyeWluZyBp biBhcHBseSB3b3JrZXIsIHdlIGNoZWNrIGlmIHRoZQorIyBkYXRhIGlzIHJlcGxpY2F0ZWQgc3Vj Y2Vzc2Z1bGx5LgogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKICMgRmlyc3Qgd2UgY2hlY2sgdGhl IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBvbiBub3JtYWwgdGFibGUuCkBAIC00NTksMjMgKzQ0OCwx NiBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAt OV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIx IiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkk b2Zmc2V0KTsKIAotIyBBbHRlciBjb25zdHJhaW50IGV4cHJlc3Npb24gdG8gaW1tdXRhYmxlIGV4 cHJlc3Npb24sIG5vdyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKLQkn cG9zdGdyZXMnLCBxcXsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTlNUUkFJTlQgY29u c3RfdGFiMV91bnNhZmU7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYjEgQUREIENPTlNUUkFJTlQgY29u c3RfdGFiMV9zYWZlIENIRUNLKGEgPj0gMCk7Ci19KTsKLQogIyBXYWl0IGZvciB0aGlzIHN0cmVh bWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSB0ZXN0X3RhYjEiKTsKIGlzKCRyZXN1bHQsIHFxKDUwMDEpLAotCSdkYXRhIHJlcGxpY2F0 ZWQgdG8gc3Vic2NyaWJlciBhZnRlciB1c2luZyBpbW11dGFibGUgZXhwcmVzc2lvbicpOworCSdk YXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIGNv bnN0cmFpbnQnKTsKIAogIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQu Ci0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRl c3RfdGFiMSBEUk9QIENPTlNUUkFJTlQgY29uc3RfdGFiMV9zYWZlIik7Ciskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9QIENP TlNUUkFJTlQgY29uc3RfdGFiMV91bnNhZmUiKTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAogCSdwb3N0Z3JlcycsIHFxewogVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxOwpAQCAtNDk4LDIx ICs0ODAsMjIgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAo IFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRl c3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWlu ZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIGNvbnN0cmFpbnQgb24gdGhlIHN1 YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAotCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5U IHRlc3RfdGFiX2NvbiIpOwotCiAjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9u IHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3Bh cnRpdGlvbmVkIik7CiBpcygkcmVzdWx0LCBxcSgwKSwKLQknZGF0YSByZXBsaWNhdGVkIHRvIHN1 YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgY29uc3RyYWludCBleHByZXNzaW9uJyk7CisJJ2RhdGEg cmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgY29uc3Ry YWludCcpOworCisjIERyb3AgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9w YXJ0aXRpb24gRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX2NvbiIpOwogCiAjID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KICMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBmb3JlaWduIGtleSBvbiB0aGUgc3Vi c2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IKLSMgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZCB3 b3JrZXIgaW4gdGhpcyBjYXNlLgorIyByZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0 aGlzIGNhc2UuIEFuZCBhZnRlciByZXRyeWluZyBpbiBhcHBseQorIyB3b3JrZXIsIHdlIGNoZWNr IGlmIHRoZSBkYXRhIGlzIHJlcGxpY2F0ZWQgc3VjY2Vzc2Z1bGx5LgogIyA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CiAKICMgRmlyc3Qgd2UgY2hlY2sgdGhlIGZvcmVpZ24ga2V5IG9uIG5vcm1hbCB0YWJs ZS4KQEAgLTU1Myw4ICs1MzYsOCBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJ cXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9u ICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWlu ZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25z dHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTlNU UkFJTlQgdGVzdF90YWIxZmsiKTsKKyMgSW5zZXJ0IGRlcGVuZGVudCBkYXRhIG9uIHRoZSBwdWJs aXNoZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIyIFZBTFVFUygxKSIpOwogCiAjIFdhaXQgZm9yIHRo aXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtl ci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CkBAIC01NjIs OSArNTQ1LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKIGlzKCRyZXN1bHQsIHFxKDEpLAotCSdk YXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0aGUgZm9yZWlnbiBr ZXknKTsKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVj YXVzZSBvZiBmb3JlaWduIGtleScpOwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBl bnZpcm9ubWVudC4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxU RVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYjFmayIpOwogJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgcXF7CiBUUlVOQ0FURSBUQUJMRSB0 ZXN0X3RhYjE7CkBAIC01OTAsMTcgKzU3NCwxNyBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0 IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlv biBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIERyb3Ag dGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jr cy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBUQUJM RSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX3BhdGl0aW9uX2Zr Iik7Ci0KICMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGll ZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsK IGlzKCRyZXN1bHQsIHFxKDUwMDApLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBh ZnRlciBkcm9wcGluZyB0aGUgZm9yZWlnbiBrZXknKTsKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1 YnNjcmliZXJzIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgZm9yZWlnbiBrZXknKTsKKworIyBE cm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLgorJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFi X3BhcnRpdGlvbiBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWJfcGF0aXRpb25fZmsiKTsKIAogJG5v ZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKLS0gCjIuNy4yLndp bmRvd3MuMQoK --_006_OS0PR01MB57166F15F4542FAE69A74EC094739OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v24-0001-Perform-streaming-logical-transactions-by-backgr.patch" Content-Description: v24-0001-Perform-streaming-logical-transactions-by-backgr.patch Content-Disposition: attachment; filename="v24-0001-Perform-streaming-logical-transactions-by-backgr.patch"; size=128449; creation-date="Wed, 24 Aug 2022 13:45:00 GMT"; modification-date="Wed, 24 Aug 2022 13:47:09 GMT" Content-Transfer-Encoding: base64 RnJvbSBhYWE3NTMyMjU0MGEzMDY1MTBhNzFmMjZjZjJkNjE5OGNlOTBkNDJhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHYyNCAxLzVdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IGJhY2tn cm91bmQKIHdvcmtlcnMKCkN1cnJlbnRseSwgZm9yIGxhcmdlIHRyYW5zYWN0aW9ucywgdGhlIHB1 Ymxpc2hlciBzZW5kcyB0aGUgZGF0YSBpbiBtdWx0aXBsZQpzdHJlYW1zIChjaGFuZ2VzIGRpdmlk ZWQgaW50byBjaHVua3MgZGVwZW5kaW5nIHVwb24gbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSks CmFuZCB0aGVuIG9uIHRoZSBzdWJzY3JpYmVyLXNpZGUsIHRoZSBhcHBseSB3b3JrZXIgd3JpdGVz IHRoZSBjaGFuZ2VzIGludG8KdGVtcG9yYXJ5IGZpbGVzIGFuZCBvbmNlIGl0IHJlY2VpdmVzIHRo ZSBjb21taXQsIGl0IHJlYWRzIGZyb20gdGhlIGZpbGUgYW5kCmFwcGxpZXMgdGhlIGVudGlyZSB0 cmFuc2FjdGlvbi4gVG8gaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2Ugb2Ygc3VjaAp0cmFuc2FjdGlv bnMsIHdlIGNhbiBpbnN0ZWFkIGFsbG93IHRoZW0gdG8gYmUgYXBwbGllZCB2aWEgYmFja2dyb3Vu ZCB3b3JrZXJzLgoKSW4gdGhpcyBhcHByb2FjaCwgd2UgYXNzaWduIGEgbmV3IGFwcGx5IGJhY2tn cm91bmQgd29ya2VyIChpZiBhdmFpbGFibGUpIGFzCnNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBz dHJlYW0gaXMgcmVjZWl2ZWQgYW5kIHRoZSBtYWluIGFwcGx5IHdvcmtlciB3aWxsIHNlbmQKY2hh bmdlcyB0byB0aGlzIG5ldyB3b3JrZXIgdmlhIHNoYXJlZCBtZW1vcnkuIFRoZSBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlciB3aWxsCmRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3 cml0aW5nIGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gV2Uga2VlcAp0aGlzIHdvcmtlciBhc3NpZ25l ZCB0aWxsIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdCBm b3IKdGhlIHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQg b3JkZXJpbmcgYW5kIGF2b2lkcwp3cml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gZmlsZSBpbiBt b3N0IGNhc2VzLiBXZSBzdGlsbCBuZWVkIHRvIHNwaWxsIGlmIHRoZXJlCmlzIG5vIHdvcmtlciBh dmFpbGFibGUuCgpUaGlzIHBhdGNoIGFsc28gZXh0ZW5kcyB0aGUgU1VCU0NSSVBUSU9OICdzdHJl YW1pbmcnIHBhcmFtZXRlciBzbyB0aGF0IHRoZSB1c2VyCmNhbiBjb250cm9sIHdoZXRoZXIgdG8g YXBwbHkgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBpbiBhbiBhcHBseSBiYWNrZ3JvdW5kCndv cmtlciBvciBzcGlsbCB0aGUgY2hhbmdlIHRvIGRpc2suIFRoZSB1c2VyIGNhbiBzZXQgdGhlIHN0 cmVhbWluZyBwYXJhbWV0ZXIgdG8KJ29uL29mZicsICdwYXJhbGxlbCcuIFRoZSBwYXJhbWV0ZXIg dmFsdWUgJ3BhcmFsbGVsJyBtZWFucyB0aGUgc3RyZWFtaW5nIHdpbGwKYmUgYXBwbGllZCB2aWEg YW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsIGlmIGF2YWlsYWJsZS4gVGhlIHBhcmFtZXRlciB2 YWx1ZQonb24nIG1lYW5zIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gd2lsbCBiZSBzcGlsbGVk IHRvIGRpc2suIFRoZSBkZWZhdWx0IHZhbHVlCmlzICdvZmYnIChzYW1lIGFzIGN1cnJlbnQgYmVo YXZpb3VyKS4KCkluIGFkZGl0aW9uLCB0aGUgcGF0Y2ggZXh0ZW5kcyB0aGUgbG9naWNhbCByZXBs aWNhdGlvbiBTVFJFQU1fQUJPUlQgbWVzc2FnZSBzbwp0aGF0IGFib3J0X3RpbWUgYW5kIGFib3J0 X2xzbiBjYW4gYWxzbyBiZSBzZW50IHdoaWNoIGNhbiBiZSB1c2VkIHRvIHVwZGF0ZSB0aGUKcmVw bGljYXRpb24gb3JpZ2luIGluIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHdoZW4gdGhlIHN0cmVh bWluZyB0cmFuc2FjdGlvbiBpcwphYm9ydGVkLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sICAgICAgICAgICAgICAgICAgICAgIHwgIDExICstCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwgICAgICAgICAgICAgICAgICAgICAgICB8ICAyOCArLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWwt cmVwbGljYXRpb24uc2dtbCAgICAgICAgICAgfCAgMTMgKy0KIGRvYy9zcmMvc2dtbC9wcm90b2Nv bC5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgIDI5ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgICAgICB8ICAyNCArLQogc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGFjdC5jICAgICAgICAgICAgICAgfCAgMTMgKwogc3JjL2JhY2tlbmQvY29tbWFu ZHMvc3Vic2NyaXB0aW9uY21kcy5jICAgICAgICAgfCAgNjYgKy0KIHNyYy9iYWNrZW5kL2xpYnBx L3BxbXEuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEwICsKIHNyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvYmd3b3JrZXIuYyAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jIHwgOTczICsrKysrKysrKysrKysrKysrKysr KysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyAgICAgICAgfCAg MTAgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyAgICAgIHwg MTUzICsrKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMgICAgICAg IHwgIDIzICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgICAgICAg ICB8ICA0MSArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVy LmMgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMg ICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAg ICAgICB8IDc5OCArKysrKysrKysrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9w Z291dHB1dC9wZ291dHB1dC5jICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv cHJvY3NpZ25hbC5jICAgICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jl cy5jICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvd2FpdF9ldmVudC5jICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWMuYyAgICAgICAgICAgICAgICAgICAgfCAgMTIgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9w b3N0Z3Jlc3FsLmNvbmYuc2FtcGxlICAgfCAgIDEgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu YyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdf c3Vic2NyaXB0aW9uLmggICAgICAgICAgIHwgIDIxICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9sb2dpY2FsbGF1bmNoZXIuaCAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9sb2dpY2FscHJvdG8uaCAgICAgICAgICB8ICAyNyArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vbG9naWNhbHdvcmtlci5oICAgICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vb3JpZ2luLmggICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3Jlb3JkZXJidWZmZXIuaCAgICAgICAgIHwgICA3ICstCiBzcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgICB8IDEzMCArKystCiBzcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2NzaWduYWwuaCAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGls cy93YWl0X2V2ZW50LmggICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgICAgICB8ICAxMiArLQogc3JjL3Rlc3QvcmVncmVz cy9zcWwvc3Vic2NyaXB0aW9uLnNxbCAgICAgICAgICAgfCAgIDYgKy0KIHNyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICAgIHwgICA1ICsKIDM3IGZpbGVzIGNoYW5n ZWQsIDIyMDkgaW5zZXJ0aW9ucygrKSwgMjYwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jCgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxv Z3Muc2dtbAppbmRleCAyY2U1MzlhLi42NzNjODEyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv Y2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtNzg4Miwx MSArNzg4MiwxNiBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNv dW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogCiAgICAgIDxyb3c+CiAgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2Rl ZmluaXRpb24iPgotICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJzdHJlYW08L3N0cnVjdGZpZWxkPiA8 dHlwZT5ib29sPC90eXBlPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJzdHJlYW08L3N0cnVjdGZp ZWxkPiA8dHlwZT5jaGFyPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAg ICAgSWYgdHJ1ZSwgdGhlIHN1YnNjcmlwdGlvbiB3aWxsIGFsbG93IHN0cmVhbWluZyBvZiBpbi1w cm9ncmVzcwotICAgICAgIHRyYW5zYWN0aW9ucworICAgICAgIENvbnRyb2xzIGhvdyB0byBoYW5k bGUgdGhlIHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnM6CisgICAgICAgPGxp dGVyYWw+ZjwvbGl0ZXJhbD4gPSBkaXNhbGxvdyBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJh bnNhY3Rpb25zLAorICAgICAgIDxsaXRlcmFsPnQ8L2xpdGVyYWw+ID0gc3BpbGwgdGhlIGNoYW5n ZXMgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIHRvCisgICAgICAgZGlzayBhbmQgYXBwbHkg YXQgb25jZSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHRoZQorICAgICAg IHB1Ymxpc2hlciwKKyAgICAgICA8bGl0ZXJhbD5wPC9saXRlcmFsPiA9IGFwcGx5IGNoYW5nZXMg ZGlyZWN0bHkgdXNpbmcgYSBiYWNrZ3JvdW5kCisgICAgICAgd29ya2VyIGlmIGF2YWlsYWJsZSAo c2FtZSBhcyAndCcgaWYgbm8gd29ya2VyIGlzIGF2YWlsYWJsZSkKICAgICAgIDwvcGFyYT48L2Vu dHJ5PgogICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21s IGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IGE1Y2Q0ZTQuLmUzOWU5NWIgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmln LnNnbWwKQEAgLTQ5NDAsNyArNDk0MCw4IEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAg ICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIFNwZWNpZmllcyBtYXhpbXVtIG51 bWJlciBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlcnMuIFRoaXMgaW5jbHVkZXMKLSAgICAg ICAgYm90aCBhcHBseSB3b3JrZXJzIGFuZCB0YWJsZSBzeW5jaHJvbml6YXRpb24gd29ya2Vycy4K KyAgICAgICAgYXBwbHkgbWFpbiB3b3JrZXJzLCBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMsIGFu ZCB0YWJsZSBzeW5jaHJvbml6YXRpb24KKyAgICAgICAgd29ya2Vycy4KICAgICAgICA8L3BhcmE+ CiAgICAgICAgPHBhcmE+CiAgICAgICAgIExvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VycyBhcmUg dGFrZW4gZnJvbSB0aGUgcG9vbCBkZWZpbmVkIGJ5CkBAIC00OTgwLDYgKzQ5ODEsMzEgQEAgQU5Z IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICgg PHJlcGxhY2VhYmxlIGNsYXNzPSIKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVu dHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1tYXgtYXBwbHktYmd3b3JrZXJzLXBl ci1zdWJzY3JpcHRpb24iIHhyZWZsYWJlbD0ibWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vic2Ny aXB0aW9uIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPm1heF9hcHBseV9iZ3dvcmtlcnNfcGVyX3N1 YnNjcmlwdGlvbjwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICAgPGluZGV4 dGVybT4KKyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5tYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9z dWJzY3JpcHRpb248L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5Pgor ICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAg ICAgPHBhcmE+CisgICAgICAgIE1heGltdW0gbnVtYmVyIG9mIGFwcGx5IGJhY2tncm91bmQgd29y a2VycyBwZXIgc3Vic2NyaXB0aW9uLiBUaGlzCisgICAgICAgIHBhcmFtZXRlciBjb250cm9scyB0 aGUgYW1vdW50IG9mIHBhcmFsbGVsaXNtIGZvciBzdHJlYW1pbmcgb2YKKyAgICAgICAgaW4tcHJv Z3Jlc3MgdHJhbnNhY3Rpb25zIHdpdGggc3Vic2NyaXB0aW9uIHBhcmFtZXRlcgorICAgICAgICA8 bGl0ZXJhbD5zdHJlYW1pbmcgPSBwYXJhbGxlbDwvbGl0ZXJhbD4uCisgICAgICAgPC9wYXJhPgor ICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzIGFyZSB0 YWtlbiBmcm9tIHRoZSBwb29sIGRlZmluZWQgYnkKKyAgICAgICAgPHZhcm5hbWU+bWF4X2xvZ2lj YWxfcmVwbGljYXRpb25fd29ya2VyczwvdmFybmFtZT4uCisgICAgICAgPC9wYXJhPgorICAgICAg IDxwYXJhPgorICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAyLiBUaGlzIHBhcmFtZXRlciBj YW4gb25seSBiZSBzZXQgaW4gdGhlCisgICAgICAgIDxmaWxlbmFtZT5wb3N0Z3Jlc3FsLmNvbmY8 L2ZpbGVuYW1lPiBmaWxlIG9yIG9uIHRoZSBzZXJ2ZXIgY29tbWFuZAorICAgICAgICBsaW5lLgor ICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5Pgor CiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvc2VjdDI+CiAKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1y ZXBsaWNhdGlvbi5zZ21sCmluZGV4IGJkZjFlN2IuLjM1YTI1YzMgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2lj YWwtcmVwbGljYXRpb24uc2dtbApAQCAtMTE1Myw2ICsxMTUzLDE2IEBAIENPTlRFWFQ6ICBwcm9j ZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJp bmcgIklOU0VSCiAgICBtaWdodCBub3QgdmlvbGF0ZSBhbnkgY29uc3RyYWludC4gIFRoaXMgY2Fu IGVhc2lseSBtYWtlIHRoZSBzdWJzY3JpYmVyCiAgICBpbmNvbnNpc3RlbnQuCiAgIDwvcGFyYT4K KworICA8cGFyYT4KKyAgIFdoZW4gdGhlIHN0cmVhbWluZyBtb2RlIGlzIDxsaXRlcmFsPnBhcmFs bGVsPC9saXRlcmFsPiwgdGhlIGZpbmlzaCBMU04gb2YKKyAgIGZhaWxlZCB0cmFuc2FjdGlvbnMg bWF5IG5vdCBiZSBsb2dnZWQuIEluIHRoYXQgY2FzZSwgaXQgbWF5IGJlIG5lY2Vzc2FyeSB0bwor ICAgY2hhbmdlIHRoZSBzdHJlYW1pbmcgbW9kZSB0byA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4gb3Ig PGxpdGVyYWw+b2ZmPC9saXRlcmFsPiBhbmQKKyAgIGNhdXNlIHRoZSBzYW1lIGNvbmZsaWN0cyBh Z2FpbiBzbyB0aGUgZmluaXNoIExTTiBvZiB0aGUgZmFpbGVkIHRyYW5zYWN0aW9uIHdpbGwKKyAg IGJlIHdyaXR0ZW4gdG8gdGhlIHNlcnZlciBsb2cuIEZvciB0aGUgdXNhZ2Ugb2YgZmluaXNoIExT TiwgcGxlYXNlIHJlZmVyIHRvIDxsaW5rCisgICBsaW5rZW5kPSJzcWwtYWx0ZXJzdWJzY3JpcHRp b24iPjxjb21tYW5kPkFMVEVSIFNVQlNDUklQVElPTiAuLi4KKyAgIFNLSVA8L2NvbW1hbmQ+PC9s aW5rPi4KKyAgPC9wYXJhPgogIDwvc2VjdDE+CiAKICA8c2VjdDEgaWQ9ImxvZ2ljYWwtcmVwbGlj YXRpb24tcmVzdHJpY3Rpb25zIj4KQEAgLTEzMzQsNyArMTM0NCw4IEBAIENPTlRFWFQ6ICBwcm9j ZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJp bmcgIklOU0VSCiAgICBzdWJzY3JpcHRpb24uICBBIGRpc2FibGVkIHN1YnNjcmlwdGlvbiBvciBh IGNyYXNoZWQgc3Vic2NyaXB0aW9uIHdpbGwgaGF2ZQogICAgemVybyByb3dzIGluIHRoaXMgdmll dy4gIElmIHRoZSBpbml0aWFsIGRhdGEgc3luY2hyb25pemF0aW9uIG9mIGFueQogICAgdGFibGUg aXMgaW4gcHJvZ3Jlc3MsIHRoZXJlIHdpbGwgYmUgYWRkaXRpb25hbCB3b3JrZXJzIGZvciB0aGUg dGFibGVzCi0gICBiZWluZyBzeW5jaHJvbml6ZWQuCisgICBiZWluZyBzeW5jaHJvbml6ZWQuIE1v cmVvdmVyLCBpZiB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGlzIGFwcGxpZWQgaW4KKyAgIHBh cmFsbGVsLCB0aGVyZSB3aWxsIGJlIGFkZGl0aW9uYWwgd29ya2Vycy4KICAgPC9wYXJhPgogIDwv c2VjdDE+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3Byb3RvY29sLnNnbWwKaW5kZXggODc4NzBjNS4uZDEwN2RkMiAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNn bWwKQEAgLTMwOTYsNyArMzA5Niw3IEBAIHBzcWwgImRibmFtZT1wb3N0Z3JlcyByZXBsaWNhdGlv bj1kYXRhYmFzZSIgLWMgIklERU5USUZZX1NZU1RFTTsiCiAgICAgIDxsaXN0aXRlbT4KICAgICAg IDxwYXJhPgogICAgICAgIFByb3RvY29sIHZlcnNpb24uIEN1cnJlbnRseSB2ZXJzaW9ucyA8bGl0 ZXJhbD4xPC9saXRlcmFsPiwgPGxpdGVyYWw+MjwvbGl0ZXJhbD4sCi0gICAgICAgYW5kIDxsaXRl cmFsPjM8L2xpdGVyYWw+IGFyZSBzdXBwb3J0ZWQuCisgICAgICAgPGxpdGVyYWw+MzwvbGl0ZXJh bD4sIGFuZCA8bGl0ZXJhbD40PC9saXRlcmFsPiBhcmUgc3VwcG9ydGVkLgogICAgICAgPC9wYXJh PgogICAgICAgPHBhcmE+CiAgICAgICAgVmVyc2lvbiA8bGl0ZXJhbD4yPC9saXRlcmFsPiBpcyBz dXBwb3J0ZWQgb25seSBmb3Igc2VydmVyIHZlcnNpb24gMTQKQEAgLTMxMDYsNiArMzEwNiwxMSBA QCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGljYXRpb249ZGF0YWJhc2UiIC1jICJJREVOVElG WV9TWVNURU07IgogICAgICAgIFZlcnNpb24gPGxpdGVyYWw+MzwvbGl0ZXJhbD4gaXMgc3VwcG9y dGVkIG9ubHkgZm9yIHNlcnZlciB2ZXJzaW9uIDE1CiAgICAgICAgYW5kIGFib3ZlLCBhbmQgaXQg YWxsb3dzIHN0cmVhbWluZyBvZiB0d28tcGhhc2UgY29tbWl0cy4KICAgICAgIDwvcGFyYT4KKyAg ICAgIDxwYXJhPgorICAgICAgIFZlcnNpb24gPGxpdGVyYWw+NDwvbGl0ZXJhbD4gaXMgc3VwcG9y dGVkIG9ubHkgZm9yIHNlcnZlciB2ZXJzaW9uIDE2CisgICAgICAgYW5kIGFib3ZlLCBhbmQgaXQg YWxsb3dzIGFwcGx5aW5nIHN0cmVhbXMgb2YgbGFyZ2UgaW4tcHJvZ3Jlc3MKKyAgICAgICB0cmFu c2FjdGlvbnMgaW4gcGFyYWxsZWwuCisgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAg ICAgPC92YXJsaXN0ZW50cnk+CiAKQEAgLTY4NzYsNiArNjg4MSwyOCBAQCBwc3FsICJkYm5hbWU9 cG9zdGdyZXMgcmVwbGljYXRpb249ZGF0YWJhc2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAg ICAgICA8L3BhcmE+CiAgICAgICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5Pgor CisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPkludDY0IChYTG9nUmVjUHRyKTwv dGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIExT TiBvZiB0aGUgYWJvcnQuIFRoaXMgZmllbGQgaXMgYXZhaWxhYmxlIHNpbmNlIHByb3RvY29sIHZl cnNpb24KKyAgICAgICAgIDQuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgor ICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRl cm0+SW50NjQgKFRpbWVzdGFtcFR6KTwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAg IDxwYXJhPgorICAgICAgICAgQWJvcnQgdGltZXN0YW1wIG9mIHRoZSB0cmFuc2FjdGlvbi4gVGhl IHZhbHVlIGlzIGluIG51bWJlcgorICAgICAgICAgb2YgbWljcm9zZWNvbmRzIHNpbmNlIFBvc3Rn cmVTUUwgZXBvY2ggKDIwMDAtMDEtMDEpLiBUaGlzIGZpZWxkIGlzCisgICAgICAgICBhdmFpbGFi bGUgc2luY2UgcHJvdG9jb2wgdmVyc2lvbiA0LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9s aXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0Pgog ICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfc3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggNzM5MGM3MS4uZTJmOTk2OCAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTIxNywxMyArMjE3LDI5IEBAIENS RUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlw dGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKICAgICAgICA8 dmFybGlzdGVudHJ5PgotICAgICAgICA8dGVybT48bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+ ICg8dHlwZT5ib29sZWFuPC90eXBlPik8L3Rlcm0+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN0 cmVhbWluZzwvbGl0ZXJhbD4gKDx0eXBlPmVudW08L3R5cGU+KTwvdGVybT4KICAgICAgICAgPGxp c3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgdG8g ZW5hYmxlIHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMKLSAgICAgICAgICBm b3IgdGhpcyBzdWJzY3JpcHRpb24uICBCeSBkZWZhdWx0LCBhbGwgdHJhbnNhY3Rpb25zCi0gICAg ICAgICAgYXJlIGZ1bGx5IGRlY29kZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgb25seSB0aGVuIHNl bnQgdG8gdGhlCi0gICAgICAgICAgc3Vic2NyaWJlciBhcyBhIHdob2xlLgorICAgICAgICAgIGZv ciB0aGlzIHN1YnNjcmlwdGlvbi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDxsaXRlcmFsPm9mZjwv bGl0ZXJhbD4sCisgICAgICAgICAgbWVhbmluZyBhbGwgdHJhbnNhY3Rpb25zIGFyZSBmdWxseSBk ZWNvZGVkIG9uIHRoZSBwdWJsaXNoZXIgYW5kIG9ubHkKKyAgICAgICAgICB0aGVuIHNlbnQgdG8g dGhlIHN1YnNjcmliZXIgYXMgYSB3aG9sZS4KKyAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAg PHBhcmE+CisgICAgICAgICAgSWYgc2V0IHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiwgdGhlIGlu Y29taW5nIGNoYW5nZXMgYXJlIHdyaXR0ZW4gdG8KKyAgICAgICAgICB0ZW1wb3JhcnkgZmlsZXMg YW5kIHRoZW4gYXBwbGllZCBvbmx5IGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcworICAgICAgICAg IGNvbW1pdHRlZCBvbiB0aGUgcHVibGlzaGVyIGFuZCByZWNlaXZlZCBieSB0aGUgc3Vic2NyaWJl ci4KKyAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSWYgc2V0 IHRvIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiwgaW5jb21pbmcgY2hhbmdlcyBhcmUgZGly ZWN0bHkKKyAgICAgICAgICBhcHBsaWVkIHZpYSBvbmUgb2YgdGhlIGFwcGx5IGJhY2tncm91bmQg d29ya2VycywgaWYgYXZhaWxhYmxlLiBJZiBubworICAgICAgICAgIGJhY2tncm91bmQgd29ya2Vy IGlzIGZyZWUgdG8gaGFuZGxlIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgdGhlbiB0aGUKKyAgICAg ICAgICBjaGFuZ2VzIGFyZSB3cml0dGVuIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgYXBwbGllZCBh ZnRlciB0aGUKKyAgICAgICAgICB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuIE5vdGUgdGhhdCBp ZiBhbiBlcnJvciBoYXBwZW5zIHdoZW4KKyAgICAgICAgICBhcHBseWluZyBjaGFuZ2VzIGluIGEg YmFja2dyb3VuZCB3b3JrZXIsIHRoZSBmaW5pc2ggTFNOIG9mIHRoZQorICAgICAgICAgIHJlbW90 ZSB0cmFuc2FjdGlvbiBtaWdodCBub3QgYmUgcmVwb3J0ZWQgaW4gdGhlIHNlcnZlciBsb2cuCiAg ICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50 cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKaW5kZXggNTBmMDkyZC4uNWE3NmQ5YyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwpAQCAtMTcxMSw2ICsxNzExLDcgQEAgUmVjb3JkVHJh bnNhY3Rpb25BYm9ydChib29sIGlzU3ViWGFjdCkKIAlpbnQJCQluY2hpbGRyZW47CiAJVHJhbnNh Y3Rpb25JZCAqY2hpbGRyZW47CiAJVGltZXN0YW1wVHogeGFjdF90aW1lOworCWJvb2wJCXJlcGxv cmlnaW47CiAKIAkvKgogCSAqIElmIHdlIGhhdmVuJ3QgYmVlbiBhc3NpZ25lZCBhbiBYSUQsIG5v Ym9keSB3aWxsIGNhcmUgd2hldGhlciB3ZSBhYm9ydGVkCkBAIC0xNzQxLDYgKzE3NDIsMTMgQEAg UmVjb3JkVHJhbnNhY3Rpb25BYm9ydChib29sIGlzU3ViWGFjdCkKIAkJZWxvZyhQQU5JQywgImNh bm5vdCBhYm9ydCB0cmFuc2FjdGlvbiAldSwgaXQgd2FzIGFscmVhZHkgY29tbWl0dGVkIiwKIAkJ CSB4aWQpOwogCisJLyoKKwkgKiBBcmUgd2UgdXNpbmcgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbnMg ZmVhdHVyZT8gIE9yLCBpbiBvdGhlciB3b3JkcywKKwkgKiBhcmUgd2UgcmVwbGF5aW5nIHJlbW90 ZSBhY3Rpb25zPworCSAqLworCXJlcGxvcmlnaW4gPSAocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdp biAhPSBJbnZhbGlkUmVwT3JpZ2luSWQgJiYKKwkJCQkgIHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmln aW4gIT0gRG9Ob3RSZXBsaWNhdGVJZCk7CisKIAkvKiBGZXRjaCB0aGUgZGF0YSB3ZSBuZWVkIGZv ciB0aGUgYWJvcnQgcmVjb3JkICovCiAJbnJlbHMgPSBzbWdyR2V0UGVuZGluZ0RlbGV0ZXMoZmFs c2UsICZyZWxzKTsKIAluY2hpbGRyZW4gPSB4YWN0R2V0Q29tbWl0dGVkQ2hpbGRyZW4oJmNoaWxk cmVuKTsKQEAgLTE3NjUsNiArMTc3MywxMSBAQCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0KGJvb2wg aXNTdWJYYWN0KQogCQkJCQkgICBNeVhhY3RGbGFncywgSW52YWxpZFRyYW5zYWN0aW9uSWQsCiAJ CQkJCSAgIE5VTEwpOwogCisJaWYgKHJlcGxvcmlnaW4pCisJCS8qIE1vdmUgTFNOcyBmb3J3YXJk IGZvciB0aGlzIHJlcGxpY2F0aW9uIG9yaWdpbiAqLworCQlyZXBsb3JpZ2luX3Nlc3Npb25fYWR2 YW5jZShyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiwKKwkJCQkJCQkJICAgWGFjdExhc3RS ZWNFbmQpOworCiAJLyoKIAkgKiBSZXBvcnQgdGhlIGxhdGVzdCBhc3luYyBhYm9ydCBMU04sIHNv IHRoYXQgdGhlIFdBTCB3cml0ZXIga25vd3MgdG8KIAkgKiBmbHVzaCB0aGlzIGFib3J0LiBUaGVy ZSdzIG5vdGhpbmcgdG8gYmUgZ2FpbmVkIGJ5IGRlbGF5aW5nIHRoaXMsIHNpbmNlCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggNjcwYjIxOS4uM2RjMDNkYyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtODQsNyArODQsNyBAQCB0 eXBlZGVmIHN0cnVjdCBTdWJPcHRzCiAJYm9vbAkJY29weV9kYXRhOwogCWJvb2wJCXJlZnJlc2g7 CiAJYm9vbAkJYmluYXJ5OwotCWJvb2wJCXN0cmVhbWluZzsKKwljaGFyCQlzdHJlYW1pbmc7CiAJ Ym9vbAkJdHdvcGhhc2U7CiAJYm9vbAkJZGlzYWJsZW9uZXJyOwogCWNoYXIJICAgKm9yaWdpbjsK QEAgLTk4LDYgKzk4LDYyIEBAIHN0YXRpYyB2b2lkIFJlcG9ydFNsb3RDb25uZWN0aW9uRXJyb3Io TGlzdCAqcnN0YXRlcywgT2lkIHN1YmlkLCBjaGFyICpzbG90bmFtZSwKIAogCiAvKgorICogRXh0 cmFjdCB0aGUgc3RyZWFtaW5nIG1vZGUgdmFsdWUgZnJvbSBhIERlZkVsZW0uICBUaGlzIGlzIGxp a2UKKyAqIGRlZkdldEJvb2xlYW4oKSBidXQgYWxzbyBhY2NlcHRzIHRoZSBzcGVjaWFsIHZhbHVl IG9mICJwYXJhbGxlbCIuCisgKi8KK3N0YXRpYyBjaGFyCitkZWZHZXRTdHJlYW1pbmdNb2RlKERl ZkVsZW0gKmRlZikKK3sKKwkvKgorCSAqIElmIG5vIHBhcmFtZXRlciB2YWx1ZSBnaXZlbiwgYXNz dW1lICJ0cnVlIiBpcyBtZWFudC4KKwkgKi8KKwlpZiAoZGVmLT5hcmcgPT0gTlVMTCkKKwkJcmV0 dXJuIFNVQlNUUkVBTV9PTjsKKworCS8qCisJICogQWxsb3cgMCwgMSwgImZhbHNlIiwgInRydWUi LCAib2ZmIiwgIm9uIiBvciAicGFyYWxsZWwiLgorCSAqLworCXN3aXRjaCAobm9kZVRhZyhkZWYt PmFyZykpCisJeworCQljYXNlIFRfSW50ZWdlcjoKKwkJCXN3aXRjaCAoaW50VmFsKGRlZi0+YXJn KSkKKwkJCXsKKwkJCQljYXNlIDA6CisJCQkJCXJldHVybiBTVUJTVFJFQU1fT0ZGOworCQkJCWNh c2UgMToKKwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9PTjsKKwkJCQlkZWZhdWx0OgorCQkJCQkvKiBv dGhlcndpc2UsIGVycm9yIG91dCBiZWxvdyAqLworCQkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFr OworCQlkZWZhdWx0OgorCQkJeworCQkJCWNoYXIJICAgKnN2YWwgPSBkZWZHZXRTdHJpbmcoZGVm KTsKKworCQkJCS8qCisJCQkJICogVGhlIHNldCBvZiBzdHJpbmdzIGFjY2VwdGVkIGhlcmUgc2hv dWxkIG1hdGNoIHVwIHdpdGggdGhlCisJCQkJICogZ3JhbW1hcidzIG9wdF9ib29sZWFuX29yX3N0 cmluZyBwcm9kdWN0aW9uLgorCQkJCSAqLworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJm YWxzZSIpID09IDAgfHwKKwkJCQkJcGdfc3RyY2FzZWNtcChzdmFsLCAib2ZmIikgPT0gMCkKKwkJ CQkJcmV0dXJuIFNVQlNUUkVBTV9PRkY7CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgInRy dWUiKSA9PSAwIHx8CisJCQkJCXBnX3N0cmNhc2VjbXAoc3ZhbCwgIm9uIikgPT0gMCkKKwkJCQkJ cmV0dXJuIFNVQlNUUkVBTV9PTjsKKwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAicGFyYWxs ZWwiKSA9PSAwKQorCQkJCQlyZXR1cm4gU1VCU1RSRUFNX1BBUkFMTEVMOworCQkJfQorCQkJYnJl YWs7CisJfQorCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCisJCQkgZXJybXNnKCIlcyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUgb3IgXCJwYXJhbGxl bFwiIiwKKwkJCQkJZGVmLT5kZWZuYW1lKSkpOworCXJldHVybiBTVUJTVFJFQU1fT0ZGOwkJLyog a2VlcCBjb21waWxlciBxdWlldCAqLworfQorCisvKgogICogQ29tbW9uIG9wdGlvbiBwYXJzaW5n IGZ1bmN0aW9uIGZvciBDUkVBVEUgYW5kIEFMVEVSIFNVQlNDUklQVElPTiBjb21tYW5kcy4KICAq CiAgKiBTaW5jZSBub3QgYWxsIG9wdGlvbnMgY2FuIGJlIHNwZWNpZmllZCBpbiBib3RoIGNvbW1h bmRzLCB0aGlzIGZ1bmN0aW9uCkBAIC0xMzQsNyArMTkwLDcgQEAgcGFyc2Vfc3Vic2NyaXB0aW9u X29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpzdG10X29wdGlvbnMsCiAJaWYgKElz U2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfQklOQVJZKSkKIAkJb3B0cy0+YmluYXJ5ID0gZmFs c2U7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfU1RSRUFNSU5HKSkKLQkJb3B0 cy0+c3RyZWFtaW5nID0gZmFsc2U7CisJCW9wdHMtPnN0cmVhbWluZyA9IFNVQlNUUkVBTV9PRkY7 CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfVFdPUEhBU0VfQ09NTUlUKSkKIAkJ b3B0cy0+dHdvcGhhc2UgPSBmYWxzZTsKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9Q VF9ESVNBQkxFX09OX0VSUikpCkBAIC0yMzcsNyArMjkzLDcgQEAgcGFyc2Vfc3Vic2NyaXB0aW9u X29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpzdG10X29wdGlvbnMsCiAJCQkJZXJy b3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CiAKIAkJCW9wdHMtPnNwZWNpZmll ZF9vcHRzIHw9IFNVQk9QVF9TVFJFQU1JTkc7Ci0JCQlvcHRzLT5zdHJlYW1pbmcgPSBkZWZHZXRC b29sZWFuKGRlZmVsKTsKKwkJCW9wdHMtPnN0cmVhbWluZyA9IGRlZkdldFN0cmVhbWluZ01vZGUo ZGVmZWwpOwogCQl9CiAJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInR3b19waGFz ZSIpID09IDApCiAJCXsKQEAgLTYyNyw3ICs2ODMsNyBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFy c2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCXZhbHVlc1tB bnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJvd25lciAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShvd25l cik7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmVuYWJsZWQgLSAxXSA9IEJvb2xH ZXREYXR1bShvcHRzLmVuYWJsZWQpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJi aW5hcnkgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLmJpbmFyeSk7Ci0JdmFsdWVzW0FudW1fcGdf c3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuc3RyZWFtaW5n KTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPSBDaGFyR2V0 RGF0dW0ob3B0cy5zdHJlYW1pbmcpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJ0 d29waGFzZXN0YXRlIC0gMV0gPQogCQlDaGFyR2V0RGF0dW0ob3B0cy50d29waGFzZSA/CiAJCQkJ CSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX1BFTkRJTkcgOgpAQCAtMTA4OSw3ICsxMTQ1LDcg QEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNjcmlwdGlv blN0bXQgKnN0bXQsCiAJCQkJaWYgKElzU2V0KG9wdHMuc3BlY2lmaWVkX29wdHMsIFNVQk9QVF9T VFJFQU1JTkcpKQogCQkJCXsKIAkJCQkJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0 cmVhbSAtIDFdID0KLQkJCQkJCUJvb2xHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7CisJCQkJCQlD aGFyR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOwogCQkJCQlyZXBsYWNlc1tBbnVtX3BnX3N1YnNj cmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IHRydWU7CiAJCQkJfQogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9saWJwcS9wcW1xLmMgYi9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMKaW5kZXggNGQw NDE1ZS4uNzI4MzAxZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jCisrKyBi L3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYwpAQCAtMTYyLDEwICsxNjIsMjAgQEAgbXFfcHV0bWVz c2FnZShjaGFyIG1zZ3R5cGUsIGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pCiAJCXJlc3VsdCA9 IHNobV9tcV9zZW5kdihwcV9tcV9oYW5kbGUsIGlvdiwgMiwgdHJ1ZSwgdHJ1ZSk7CiAKIAkJaWYg KHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQgIT0gMCkKKwkJewogCQkJU2VuZFByb2NTaWduYWwo cHFfbXFfcGFyYWxsZWxfbGVhZGVyX3BpZCwKIAkJCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfTUVT U0FHRSwKIAkJCQkJCSAgIHBxX21xX3BhcmFsbGVsX2xlYWRlcl9iYWNrZW5kX2lkKTsKIAorCQkJ LyoKKwkJCSAqIFhYWCBtYXliZSB3ZSBjYW4gcmV1c2UgdGhlIFBST0NTSUdfUEFSQUxMRUxfTUVT U0FHRSBpbnN0ZWFkIG9mCisJCQkgKiBpbnRyb2R1Y2luZyBhIG5ldyBzaWduYWwgcmVhc29uLgor CQkJICovCisJCQlTZW5kUHJvY1NpZ25hbChwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlkLAorCQkJ CQkJICAgUFJPQ1NJR19BUFBMWV9CR1dPUktFUl9NRVNTQUdFLAorCQkJCQkJICAgcHFfbXFfcGFy YWxsZWxfbGVhZGVyX2JhY2tlbmRfaWQpOworCQl9CisKIAkJaWYgKHJlc3VsdCAhPSBTSE1fTVFf V09VTERfQkxPQ0spCiAJCQlicmVhazsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9iZ3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCmluZGV4 IDQwNjAxYWUuLjQwY2NiODkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3 b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKQEAgLTEyOCw2 ICsxMjgsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0CiAJfSwKIAl7CiAJCSJBcHBseVdvcmtlck1h aW4iLCBBcHBseVdvcmtlck1haW4KKwl9LAorCXsKKwkJIkFwcGx5Qmd3b3JrZXJNYWluIiwgQXBw bHlCZ3dvcmtlck1haW4KIAl9CiB9OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9N YWtlZmlsZQppbmRleCBjNGUyZmRlLi5jYmZiNWQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvTWFrZWZpbGUKQEAgLTE1LDYgKzE1LDcgQEAgaW5jbHVkZSAkKHRvcF9idWlsZGRp cikvc3JjL01ha2VmaWxlLmdsb2JhbAogb3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLUkkKHNyY2Rpcikg JChDUFBGTEFHUykKIAogT0JKUyA9IFwKKwlhcHBseWJnd29ya2VyLm8gXAogCWRlY29kZS5vIFwK IAlsYXVuY2hlci5vIFwKIAlsb2dpY2FsLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9hcHBseWJnd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4wODUyZmZhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9hcHBseWJnd29ya2VyLmMKQEAgLTAsMCArMSw5NzMgQEAKKy8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICogYXBwbHliZ3dvcmtlci5jCisgKiAgICAgU3VwcG9ydCByb3V0aW5lcyBmb3IgYXBw bHlpbmcgeGFjdCBieSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcgorICoKKyAqIENvcHlyaWdodCAo YykgMjAxNi0yMDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAq IElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBw bHliZ3dvcmtlci5jCisgKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHJvdXRpbmVzIHRoYXQgYXJl IGludGVuZGVkIHRvIHN1cHBvcnQgc2V0dGluZyB1cCwgdXNpbmcsCisgKiBhbmQgdGVhcmluZyBk b3duIGEgQXBwbHlCZ3dvcmtlckluZm8uCisgKgorICogUmVmZXIgdG8gdGhlIGNvbW1lbnRzIGlu IGZpbGUgaGVhZGVyIG9mIGxvZ2ljYWwvd29ya2VyLmMgdG8gc2VlIG1vcmUKKyAqIGluZm9ybWF0 aW9uIGFib3V0IGFwcGx5IGJhY2tncm91bmQgd29ya2VyLgorICoKKyAqLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAibGlicHEvcHFmb3Jt YXQuaCIKKyNpbmNsdWRlICJsaWJwcS9wcW1xLmgiCisjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIK KyNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgor I2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgorI2luY2x1ZGUgInJlcGxp Y2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9vcmlnaW4uaCIK KyNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0 aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCisjaW5j bHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1 ZGUgInV0aWxzL3Jlc293bmVyLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKworI2Rl ZmluZSBQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQyAweDc4N2NhMDY3CisKKy8qCisgKiBEU00g a2V5cyBmb3IgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuICBVbmxpa2Ugb3RoZXIgcGFyYWxsZWwg ZXhlY3V0aW9uIGNvZGUsCisgKiBzaW5jZSB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IERT TSBrZXlzIGNvbmZsaWN0aW5nIHdpdGggcGxhbl9ub2RlX2lkIHdlCisgKiBjYW4gdXNlIHNtYWxs IGludGVnZXJzLgorICovCisjZGVmaW5lIEFQUExZX0JHV09SS0VSX0tFWV9TSEFSRUQJCTEKKyNk ZWZpbmUgQVBQTFlfQkdXT1JLRVJfS0VZX01RCQkJMgorI2RlZmluZSBBUFBMWV9CR1dPUktFUl9L RVlfRVJST1JfUVVFVUUJMworCisvKiBRdWV1ZSBzaXplIG9mIERTTSwgMTYgTUIgZm9yIG5vdy4g Ki8KKyNkZWZpbmUgRFNNX1FVRVVFX1NJWkUJKDE2ICogMTAyNCAqIDEwMjQpCisKKy8qCisgKiBF cnJvciBxdWV1ZSBzaXplIG9mIERTTS4gSXQgaXMgZGVzaXJhYmxlIHRvIG1ha2UgaXQgbGFyZ2Ug ZW5vdWdoIHRoYXQgYQorICogdHlwaWNhbCBFcnJvclJlc3BvbnNlIGNhbiBiZSBzZW50IHdpdGhv dXQgYmxvY2tpbmcuICBUaGF0IHdheSwgYSB3b3JrZXIgdGhhdAorICogZXJyb3JzIG91dCBjYW4g d3JpdGUgdGhlIHdob2xlIG1lc3NhZ2UgaW50byB0aGUgcXVldWUgYW5kIHRlcm1pbmF0ZSB3aXRo b3V0CisgKiB3YWl0aW5nIGZvciB0aGUgdXNlciBiYWNrZW5kLgorICovCisjZGVmaW5lIERTTV9F UlJPUl9RVUVVRV9TSVpFCQkJMTYzODQKKworLyoKKyAqIFRoZXJlIGFyZSB0aHJlZSBmaWVsZHMg aW4gbWVzc2FnZTogc3RhcnRfbHNuLCBlbmRfbHNuIGFuZCBzZW5kX3RpbWUuIEJlY2F1c2UKKyAq IHdlIGhhdmUgdXBkYXRlZCB0aGVzZSBzdGF0aXN0aWNzIGluIGFwcGx5IHdvcmtlciwgd2UgY291 bGQgaWdub3JlIHRoZXNlCisgKiBmaWVsZHMgaW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgKHNl ZSBmdW5jdGlvbiBMb2dpY2FsUmVwQXBwbHlMb29wKS4KKyAqLworI2RlZmluZSBTSVpFX1NUQVRT X01FU1NBR0UgKDIgKiBzaXplb2YoWExvZ1JlY1B0cikgKyBzaXplb2YoVGltZXN0YW1wVHopKQor CisvKgorICogRW50cnkgZm9yIGEgaGFzaCB0YWJsZSB3ZSB1c2UgdG8gbWFwIGZyb20geGlkIHRv IHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcgorICogc3RhdGUuCisgKi8KK3R5cGVkZWYgc3Ry dWN0IEFwcGx5Qmd3b3JrZXJFbnRyeQoreworCVRyYW5zYWN0aW9uSWQgeGlkOwkvKiBIYXNoIGtl eSAtLSBtdXN0IGJlIGZpcnN0ICovCisJQXBwbHlCZ3dvcmtlckluZm8gKndpbmZvOworfSBBcHBs eUJnd29ya2VyRW50cnk7CisKKy8qIEFwcGx5IGJhY2tncm91bmQgd29ya2VycyBoYXNoIHRhYmxl IChpbml0aWFsaXplZCBvbiBmaXJzdCB1c2UpLiAqLworc3RhdGljIEhUQUIgKkFwcGx5Qmd3b3Jr ZXJzSGFzaCA9IE5VTEw7CitzdGF0aWMgTGlzdCAqQXBwbHlCZ3dvcmtlcnNGcmVlTGlzdCA9IE5J TDsKK3N0YXRpYyBMaXN0ICpBcHBseUJnd29ya2Vyc0xpc3QgPSBOSUw7CisKKy8qCisgKiBJbmZv cm1hdGlvbiBzaGFyZWQgYmV0d2VlbiBtYWluIGFwcGx5IHdvcmtlciBhbmQgYXBwbHkgYmFja2dy b3VuZCB3b3JrZXIuCisgKi8KK3ZvbGF0aWxlIEFwcGx5Qmd3b3JrZXJTaGFyZWQgKk15UGFyYWxs ZWxTaGFyZWQgPSBOVUxMOworCisvKgorICogSXMgdGhlcmUgYSBtZXNzYWdlIHBlbmRpbmcgaW4g YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgd2hpY2ggd2UgbmVlZCB0bworICogcmVjZWl2ZT8KKyAq Lwordm9sYXRpbGUgYm9vbCBBcHBseUJnd29ya2VyTWVzc2FnZVBlbmRpbmcgPSBmYWxzZTsKKwor LyoKKyAqIENhY2hlIGEgcG9pbnRlciB0byB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgd2hp Y2ggaXMgcmVzcG9uc2libGUgZm9yCisgKiBhcHBseWluZyB0aGUgY3VycmVudCBzdHJlYW1pbmcg dHJhbnNhY3Rpb25zLiBJdCBpcyB1c2VkIHRvIHNhdmUgdGhlCisgKiBjb3N0IG9mIHNlYXJoaW5n IHRoZSBoYXNoIHRhYmxlIHdoZW4gYXBwbHlpbmcgdGhlIGNoYW5nZXMgYmV0d2VlbgorICogU1RS RUFNX1NUQVJUIGFuZCBTVFJFQU1fU1RPUC4KKyAqLworQXBwbHlCZ3dvcmtlckluZm8gKnN0cmVh bV9hcHBseV93b3JrZXIgPSBOVUxMOworCitMaXN0CSAgICpzdWJ4YWN0bGlzdCA9IE5JTDsKKwor c3RhdGljIGJvb2wgYXBwbHlfYmd3b3JrZXJfY2FuX3N0YXJ0KFRyYW5zYWN0aW9uSWQgeGlkKTsK K3N0YXRpYyBBcHBseUJnd29ya2VySW5mbyAqYXBwbHlfYmd3b3JrZXJfc2V0dXAodm9pZCk7Citz dGF0aWMgYm9vbCBhcHBseV9iZ3dvcmtlcl9zZXR1cF9kc20oQXBwbHlCZ3dvcmtlckluZm8gKndp bmZvKTsKKworLyoKKyAqIENoZWNrIGlmIHN0YXJ0aW5nIGEgbmV3IGFwcGx5IGJhY2tncm91bmQg d29ya2VyIGlzIGFsbG93ZWQuCisgKi8KK3N0YXRpYyBib29sCithcHBseV9iZ3dvcmtlcl9jYW5f c3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4 aWQpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIERvbid0IHN0YXJ0IGEgbmV3IGJhY2tn cm91bmQgd29ya2VyIGlmIG5vdCBpbiBzdHJlYW1pbmcgcGFyYWxsZWwgbW9kZS4KKwkgKi8KKwlp ZiAoTXlTdWJzY3JpcHRpb24tPnN0cmVhbSAhPSBTVUJTVFJFQU1fUEFSQUxMRUwpCisJCXJldHVy biBmYWxzZTsKKworCS8qCisJICogRG9uJ3Qgc3RhcnQgYSBuZXcgYmFja2dyb3VuZCB3b3JrZXIg aWYgdXNlciBoYXMgc2V0IHNraXBsc24gYXMgaXQncworCSAqIHBvc3NpYmxlIHRoYXQgdXNlciB3 YW50IHRvIHNraXAgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gRm9yCisJICogc3RyZWFtaW5n IHRyYW5zYWN0aW9uLCB3ZSBuZWVkIHRvIHNwaWxsIHRoZSB0cmFuc2FjdGlvbiB0byBkaXNrIHNv IHRoYXQKKwkgKiB3ZSBjYW4gZ2V0IHRoZSBsYXN0IExTTiBvZiB0aGUgdHJhbnNhY3Rpb24gdG8g anVkZ2Ugd2hldGhlciB0byBza2lwCisJICogYmVmb3JlIHN0YXJ0aW5nIHRvIGFwcGx5IHRoZSBj aGFuZ2UuCisJICovCisJaWYgKCFYTG9nUmVjUHRySXNJbnZhbGlkKE15U3Vic2NyaXB0aW9uLT5z a2lwbHNuKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBGb3Igc3RyZWFtaW5nIHRyYW5z YWN0aW9ucyB0aGF0IGFyZSBiZWluZyBhcHBsaWVkIHVzaW5nIGFwcGx5IGJhY2tncm91bmQKKwkg KiB3b3JrZXIsIHdlIGNhbm5vdCBkZWNpZGUgd2hldGhlciB0byBhcHBseSB0aGUgY2hhbmdlIGZv ciBhIHJlbGF0aW9uIHRoYXQKKwkgKiBpcyBub3QgaW4gdGhlIFJFQURZIHN0YXRlIChzZWUgc2hv dWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbCkgYXMgd2Ugd29uJ3QKKwkgKiBrbm93IHJlbW90ZV9m aW5hbF9sc24gYnkgdGhhdCB0aW1lLiBTbywgd2UgZG9uJ3Qgc3RhcnQgdGhlIG5ldyBhcHBseQor CSAqIGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMgY2FzZS4KKwkgKi8KKwlpZiAoIUFsbFRhYmxl c3luY3NSZWFkeSgpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoK KyAqIFJldHVybiB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgdGhhdCB3aWxsIGJlIHVzZWQg Zm9yIHRoZSBzcGVjaWZpZWQgeGlkLgorICoKKyAqIElmIGFuIGFwcGx5IGJhY2tncm91bmQgd29y a2VyIGlzIGZvdW5kIGluIHRoZSBmcmVlIGxpc3QgdGhlbiByZS11c2UgaXQsCisgKiBvdGhlcndp c2Ugc3RhcnQgYSBmcmVzaCBvbmUuIENhY2hlIHRoZSB3b3JrZXIgaW4gQXBwbHlCZ3dvcmtlcnNI YXNoIGtleWVkIGJ5CisgKiB0aGUgc3BlY2lmaWVkIHhpZC4KKyAqLworQXBwbHlCZ3dvcmtlcklu Zm8gKgorYXBwbHlfYmd3b3JrZXJfc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJYm9vbAkJ Zm91bmQ7CisJaW50CQkJc2VydmVyX3ZlcnNpb247CisJQXBwbHlCZ3dvcmtlckluZm8gKndpbmZv ID0gTlVMTDsKKwlBcHBseUJnd29ya2VyRW50cnkgKmVudHJ5ID0gTlVMTDsKKworCWlmICghYXBw bHlfYmd3b3JrZXJfY2FuX3N0YXJ0KHhpZCkpCisJCXJldHVybiBOVUxMOworCisJLyogRmlyc3Qg dGltZSB0aHJvdWdoLCBpbml0aWFsaXplIGFwcGx5IHdvcmtlcnMgaGFzaHRhYmxlLiAqLworCWlm IChBcHBseUJnd29ya2Vyc0hhc2ggPT0gTlVMTCkKKwl7CisJCUhBU0hDVEwJCWN0bDsKKworCQlN ZW1TZXQoJmN0bCwgMCwgc2l6ZW9mKGN0bCkpOworCQljdGwua2V5c2l6ZSA9IHNpemVvZihUcmFu c2FjdGlvbklkKTsKKwkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihBcHBseUJnd29ya2VyRW50cnkp OworCQljdGwuaGN4dCA9IEFwcGx5Q29udGV4dDsKKworCQlBcHBseUJnd29ya2Vyc0hhc2ggPSBo YXNoX2NyZWF0ZSgibG9naWNhbCBhcHBseSB3b3JrZXJzIGhhc2giLCAxNiwgJmN0bCwKKwkJCQkJ CQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCX0KKworCS8q IFRyeSB0byBnZXQgYSBmcmVlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLiAqLworCXdoaWxlIChB cHBseUJnd29ya2Vyc0ZyZWVMaXN0ICE9IE5JTCkKKwl7CisJCUFwcGx5Qmd3b3JrZXJJbmZvICp0 bXBfd2luZm87CisKKwkJdG1wX3dpbmZvID0gKEFwcGx5Qmd3b3JrZXJJbmZvICopIGxsYXN0KEFw cGx5Qmd3b3JrZXJzRnJlZUxpc3QpOworCQlBcHBseUJnd29ya2Vyc0ZyZWVMaXN0ID0gbGlzdF9k ZWxldGVfbGFzdChBcHBseUJnd29ya2Vyc0ZyZWVMaXN0KTsKKworCQlpZiAodG1wX3dpbmZvLT5l cnJvcl9tcV9oYW5kbGUgIT0gTlVMTCkKKwkJeworCQkJd2luZm8gPSB0bXBfd2luZm87CisJCQl3 aW5mby0+c2hhcmVkLT5zdGF0ZSA9IEFQUExZX0JHV09SS0VSX0JVU1k7CisJCQlicmVhazsKKwkJ fQorCisJCS8qCisJCSAqIFJlbGVhc2UgdGhlIHdvcmtlciBpbmZvcm1hdGlvbiBhbmQgdHJ5IG5l eHQgb25lIGlmIHRoZSBhcHBseQorCQkgKiBiYWNrZ3JvdW5kIHdvcmtlciBleGl0ZWQgY2xlYW5s eS4KKwkJICovCisJCUFwcGx5Qmd3b3JrZXJzTGlzdCA9IGxpc3RfZGVsZXRlKEFwcGx5Qmd3b3Jr ZXJzTGlzdCwgdG1wX3dpbmZvKTsKKwkJc2htX21xX2RldGFjaCh0bXBfd2luZm8tPm1xX2hhbmRs ZSk7CisJCWRzbV9kZXRhY2godG1wX3dpbmZvLT5kc21fc2VnKTsKKwkJcGZyZWUodG1wX3dpbmZv KTsKKwl9CisKKwkvKiBUcnkgdG8gc3RhcnQgYSBuZXcgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIu ICovCisJaWYgKHdpbmZvID09IE5VTEwpCisJCXdpbmZvID0gYXBwbHlfYmd3b3JrZXJfc2V0dXAo KTsKKworCS8qIEZhaWxlZCB0byBzdGFydCBhIG5ldyBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4g Ki8KKwlpZiAod2luZm8gPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBDcmVhdGUgZW50 cnkgZm9yIHJlcXVlc3RlZCB0cmFuc2FjdGlvbi4gKi8KKwllbnRyeSA9IGhhc2hfc2VhcmNoKEFw cGx5Qmd3b3JrZXJzSGFzaCwgJnhpZCwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKwlpZiAoZm91bmQp CisJCWVsb2coRVJST1IsICJoYXNoIHRhYmxlIGNvcnJ1cHRlZCIpOworCisJc2VydmVyX3ZlcnNp b24gPSB3YWxyY3Zfc2VydmVyX3ZlcnNpb24oTG9nUmVwV29ya2VyV2FsUmN2Q29ubik7CisJd2lu Zm8tPnNoYXJlZC0+cHJvdG9fdmVyc2lvbiA9CisJCXNlcnZlcl92ZXJzaW9uID49IDE2MDAwMCA/ IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNIDoKKwkJc2VydmVy X3ZlcnNpb24gPj0gMTUwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05V TSA6CisJCXNlcnZlcl92ZXJzaW9uID49IDE0MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFN X1ZFUlNJT05fTlVNIDoKKwkJTE9HSUNBTFJFUF9QUk9UT19WRVJTSU9OX05VTTsKKworCXdpbmZv LT5zaGFyZWQtPnN0cmVhbV94aWQgPSB4aWQ7CisJZW50cnktPndpbmZvID0gd2luZm87CisJZW50 cnktPnhpZCA9IHhpZDsKKworCXJldHVybiB3aW5mbzsKK30KKworLyoKKyAqIEZpbmQgdGhlIHBy ZXZpb3VzbHkgYXNzaWduZWQgd29ya2VyIGZvciB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24sIGlmIGFu eS4KKyAqLworQXBwbHlCZ3dvcmtlckluZm8gKgorYXBwbHlfYmd3b3JrZXJfZmluZChUcmFuc2Fj dGlvbklkIHhpZCkKK3sKKwlib29sCQlmb3VuZDsKKwlBcHBseUJnd29ya2VyRW50cnkgKmVudHJ5 ID0gTlVMTDsKKworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSkKKwkJcmV0dXJuIE5V TEw7CisKKwlpZiAoQXBwbHlCZ3dvcmtlcnNIYXNoID09IE5VTEwpCisJCXJldHVybiBOVUxMOwor CisJLyogUmV0dXJuIHRoZSBjYWNoZWQgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaWYgdmFsaWQu ICovCisJaWYgKHN0cmVhbV9hcHBseV93b3JrZXIgIT0gTlVMTCkKKwkJcmV0dXJuIHN0cmVhbV9h cHBseV93b3JrZXI7CisKKwkvKgorCSAqIEZpbmQgZW50cnkgZm9yIHJlcXVlc3RlZCB0cmFuc2Fj dGlvbi4KKwkgKi8KKwllbnRyeSA9IGhhc2hfc2VhcmNoKEFwcGx5Qmd3b3JrZXJzSGFzaCwgJnhp ZCwgSEFTSF9GSU5ELCAmZm91bmQpOworCWlmIChmb3VuZCkKKwl7CisJCS8qIElmIGFueSB3b3Jr ZXJzIChvciB0aGUgcG9zdG1hc3RlcikgaGF2ZSBkaWVkLCB3ZSBoYXZlIGZhaWxlZC4gKi8KKwkJ aWYgKGVudHJ5LT53aW5mby0+ZXJyb3JfbXFfaGFuZGxlID09IE5VTEwpCisJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NU QVRFKSwKKwkJCQkJIGVycm1zZygiYmFja2dyb3VuZCB3b3JrZXIgJXUgZmFpbGVkIHRvIGFwcGx5 IHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCQllbnRyeS0+d2luZm8tPnNoYXJlZC0+d29ya2VyX2lk LAorCQkJCQkJCWVudHJ5LT53aW5mby0+c2hhcmVkLT5zdHJlYW1feGlkKSkpOworCisJCUFzc2Vy dChlbnRyeS0+d2luZm8tPnNoYXJlZC0+c3RhdGUgPT0gQVBQTFlfQkdXT1JLRVJfQlVTWSk7CisK KwkJcmV0dXJuIGVudHJ5LT53aW5mbzsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAq IFJlbW92ZSB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgZW50cnkgZnJvbSB0aGUgaGFzaCB0 YWJsZS4gQW5kIHN0b3AgdGhlCisgKiB3b3JrZXIgaWYgdGhlcmUgYXJlIGVub3VnaCB3b3JrZXJz IGluIHRoZSBwb29sLCBvdGhlcndpc2UgYWRkIGl0IHRvIHRoZSBmcmVlCisgKiBsaXN0LgorICov Cit2b2lkCithcHBseV9iZ3dvcmtlcl9mcmVlKEFwcGx5Qmd3b3JrZXJJbmZvICp3aW5mbykKK3sK KwlUcmFuc2FjdGlvbklkIHhpZCA9IHdpbmZvLT5zaGFyZWQtPnN0cmVhbV94aWQ7CisJaW50CQkJ bmFwcGx5d29ya2VyczsKKworCUFzc2VydCh3aW5mby0+c2hhcmVkLT5zdGF0ZSA9PSBBUFBMWV9C R1dPUktFUl9GSU5JU0hFRCk7CisKKwloYXNoX3NlYXJjaChBcHBseUJnd29ya2Vyc0hhc2gsICZ4 aWQsIEhBU0hfUkVNT1ZFLCBOVUxMKTsKKworCWVsb2coREVCVUcxLCAiYWRkaW5nIGZpbmlzaGVk IGFwcGx5IHdvcmtlciAldSBmb3IgeGlkICV1IHRvIHRoZSBmcmVlIGxpc3QiLAorCQkgd2luZm8t PnNoYXJlZC0+d29ya2VyX2lkLCB3aW5mby0+c2hhcmVkLT5zdHJlYW1feGlkKTsKKworCS8qIENo ZWNrIGlmIHRoZXJlIGFyZSBmcmVlIHdvcmtlciBzbG90KHMpLiAqLworCUxXTG9ja0FjcXVpcmUo TG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CisJbmFwcGx5d29ya2VycyA9IGxvZ2lj YWxyZXBfYXBwbHlfYmd3b3JrZXJfY291bnQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCk7CisJ TFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CisKKwlpZiAobmFwcGx5d29ya2Vy cyA+IChtYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gLyAyKSkKKwl7CisJCWxv Z2ljYWxyZXBfd29ya2VyX3N0b3BfYnlfc2xvdCh3aW5mby0+c2hhcmVkLT5sb2dpY2FscmVwX3dv cmtlcl9zbG90X25vLAorCQkJCQkJCQkJICAgd2luZm8tPnNoYXJlZC0+bG9naWNhbHJlcF93b3Jr ZXJfZ2VuZXJhdGlvbik7CisKKwkJQXBwbHlCZ3dvcmtlcnNMaXN0ID0gbGlzdF9kZWxldGVfcHRy KEFwcGx5Qmd3b3JrZXJzTGlzdCwgd2luZm8pOworCisJCXNobV9tcV9kZXRhY2god2luZm8tPm1x X2hhbmRsZSk7CisJCXNobV9tcV9kZXRhY2god2luZm8tPmVycm9yX21xX2hhbmRsZSk7CisJCWRz bV9kZXRhY2god2luZm8tPmRzbV9zZWcpOworCQlwZnJlZSh3aW5mbyk7CisJfQorCWVsc2UKKwl7 CisJCU1lbW9yeUNvbnRleHQJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29u dGV4dCk7CisJCUFwcGx5Qmd3b3JrZXJzRnJlZUxpc3QgPSBsYXBwZW5kKEFwcGx5Qmd3b3JrZXJz RnJlZUxpc3QsIHdpbmZvKTsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJfQor fQorCisvKiBBcHBseSBCYWNrZ3JvdW5kIFdvcmtlciBtYWluIGxvb3AuICovCitzdGF0aWMgdm9p ZAorTG9naWNhbEFwcGx5Qmd3TG9vcChzaG1fbXFfaGFuZGxlICptcWgsIHZvbGF0aWxlIEFwcGx5 Qmd3b3JrZXJTaGFyZWQgKnNoYXJlZCkKK3sKKwlzaG1fbXFfcmVzdWx0IHNobXFfcmVzOworCVBH UFJPQwkgICAqcmVnaXN0cmFudDsKKwlFcnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsK KworCXJlZ2lzdHJhbnQgPSBCYWNrZW5kUGlkR2V0UHJvYyhNeUJnd29ya2VyRW50cnktPmJnd19u b3RpZnlfcGlkKTsKKwlTZXRMYXRjaCgmcmVnaXN0cmFudC0+cHJvY0xhdGNoKTsKKworCS8qCisJ ICogSW5pdCB0aGUgQXBwbHlNZXNzYWdlQ29udGV4dCB3aGljaCB3ZSBjbGVhbiB1cCBhZnRlciBl YWNoIHJlcGxpY2F0aW9uCisJICogcHJvdG9jb2wgbWVzc2FnZS4KKwkgKi8KKwlBcHBseU1lc3Nh Z2VDb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEFwcGx5Q29udGV4dCwKKwkJCQkJCQkJ CQkJCSJBcHBseU1lc3NhZ2VDb250ZXh0IiwKKwkJCQkJCQkJCQkJCUFMTE9DU0VUX0RFRkFVTFRf U0laRVMpOworCisJLyoKKwkgKiBQdXNoIGFwcGx5IGVycm9yIGNvbnRleHQgY2FsbGJhY2suIEZp ZWxkcyB3aWxsIGJlIGZpbGxlZCB3aGlsZSBhcHBseWluZworCSAqIGEgY2hhbmdlLgorCSAqLwor CWVycmNhbGxiYWNrLmNhbGxiYWNrID0gYXBwbHlfZXJyb3JfY2FsbGJhY2s7CisJZXJyY2FsbGJh Y2sucHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOworCWVycm9yX2NvbnRleHRfc3RhY2sg PSAmZXJyY2FsbGJhY2s7CisKKwlmb3IgKDs7KQorCXsKKwkJdm9pZAkgICAqZGF0YTsKKwkJU2l6 ZQkJbGVuOworCQlpbnQJCQljOworCQlTdHJpbmdJbmZvRGF0YSBzOworCQlNZW1vcnlDb250ZXh0 IG9sZGN0eDsKKworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8qIEVuc3VyZSB3ZSBh cmUgcmVhZGluZyB0aGUgZGF0YSBpbnRvIG91ciBtZW1vcnkgY29udGV4dC4gKi8KKwkJb2xkY3R4 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5TWVzc2FnZUNvbnRleHQpOworCisJCXNobXFf cmVzID0gc2htX21xX3JlY2VpdmUobXFoLCAmbGVuLCAmZGF0YSwgZmFsc2UpOworCisJCWlmIChz aG1xX3JlcyAhPSBTSE1fTVFfU1VDQ0VTUykKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJj b2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJy bXNnKCJsb3N0IGNvbm5lY3Rpb24gdG8gdGhlIG1haW4gYXBwbHkgd29ya2VyIikpKTsKKworCQlp ZiAobGVuID09IDApCisJCQlicmVhazsKKworCQlzLmN1cnNvciA9IDA7CisJCXMubWF4bGVuID0g LTE7CisJCXMuZGF0YSA9IChjaGFyICopIGRhdGE7CisJCXMubGVuID0gbGVuOworCisJCS8qCisJ CSAqIFRoZSBmaXJzdCBieXRlIG9mIG1lc3NhZ2UgZm9yIGFkZGl0aW9uYWwgY29tbXVuaWNhdGlv biBiZXR3ZWVuIG1haW4KKwkJICogTG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgYW5kIGFwcGx5 IGJhY2tncm91bmQgd29ya2VycyBjYW4gb25seSBiZQorCQkgKiAndycuCisJCSAqLworCQljID0g cHFfZ2V0bXNnYnl0ZSgmcyk7CisJCWlmIChjICE9ICd3JykKKwkJCWVsb2coRVJST1IsICJbQXBw bHkgQkdXICMldV0gdW5leHBlY3RlZCBtZXNzYWdlIFwiJWNcIiIsCisJCQkJIHNoYXJlZC0+d29y a2VyX2lkLCBjKTsKKworCQkvKgorCQkgKiBJZ25vcmUgc3RhdGlzdGljcyBmaWVsZHMgdGhhdCBo YXZlIGJlZW4gdXBkYXRlZCBieSB0aGUgbWFpbiBhcHBseQorCQkgKiB3b3JrZXIuCisJCSAqLwor CQlzLmN1cnNvciArPSBTSVpFX1NUQVRTX01FU1NBR0U7CisKKwkJYXBwbHlfZGlzcGF0Y2goJnMp OworCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCQlNZW1vcnlDb250ZXh0UmVz ZXQoQXBwbHlNZXNzYWdlQ29udGV4dCk7CisKKwkJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCisJ CXsKKwkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwkJCVByb2Nlc3NDb25maWdGaWxl KFBHQ19TSUdIVVApOworCQl9CisJfQorCisJLyogUG9wIHRoZSBlcnJvciBjb250ZXh0IHN0YWNr LiAqLworCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKKworCWVs b2coREVCVUcxLCAiW0FwcGx5IEJHVyAjJXVdIGV4aXRpbmciLCBzaGFyZWQtPndvcmtlcl9pZCk7 CisKKwkvKiBTaWduYWwgbWFpbiBwcm9jZXNzIHRoYXQgd2UgYXJlIGRvbmUuICovCisJU2V0TGF0 Y2goJnJlZ2lzdHJhbnQtPnByb2NMYXRjaCk7Cit9CisKKy8qCisgKiBNYWtlIHN1cmUgdGhlIG1h aW4gYXBwbHkgd29ya2VyIHRyaWVzIHRvIHJlYWQgZnJvbSBvdXIgZXJyb3IgcXVldWUgb25lIG1v cmUKKyAqIHRpbWUuIFRoaXMgZ3VhcmRzIGFnYWluc3QgdGhlIGNhc2Ugd2hlcmUgd2UgZXhpdCB1 bmNsZWFubHkgd2l0aG91dCBzZW5kaW5nCisgKiBhbiBFcnJvclJlc3BvbnNlLCBmb3IgZXhhbXBs ZSBiZWNhdXNlIHNvbWUgY29kZSBjYWxscyBwcm9jX2V4aXQgZGlyZWN0bHkuCisgKi8KK3N0YXRp YyB2b2lkCithcHBseV9iZ3dvcmtlcl9zaHV0ZG93bihpbnQgY29kZSwgRGF0dW0gYXJnKQorewor CVNlbmRQcm9jU2lnbmFsKE15TG9naWNhbFJlcFdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCwKKwkJ CQkgICBQUk9DU0lHX0FQUExZX0JHV09SS0VSX01FU1NBR0UsCisJCQkJICAgSW52YWxpZEJhY2tl bmRJZCk7CisKKwlkc21fZGV0YWNoKChkc21fc2VnbWVudCAqKSBEYXR1bUdldFBvaW50ZXIoYXJn KSk7Cit9CisKKy8qCisgKiBBcHBseSBCYWNrZ3JvdW5kIFdvcmtlciBlbnRyeSBwb2ludC4KKyAq Lwordm9pZAorQXBwbHlCZ3dvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCit7CisJdm9sYXRpbGUg QXBwbHlCZ3dvcmtlclNoYXJlZCAqc2hhcmVkOworCisJZHNtX2hhbmRsZQloYW5kbGU7CisJZHNt X3NlZ21lbnQgKnNlZzsKKwlzaG1fdG9jICAgICp0b2M7CisJc2htX21xCSAgICptcTsKKwlzaG1f bXFfaGFuZGxlICptcWg7CisJc2htX21xX2hhbmRsZSAqZXJyb3JfbXFoOworCVJlcE9yaWdpbklk IG9yaWdpbmlkOworCWludAkJCXdvcmtlcl9zbG90ID0gRGF0dW1HZXRJbnQzMihtYWluX2FyZyk7 CisJY2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07CisKKwkvKiBTZXR1cCBzaWduYWwgaGFu ZGxpbmcuICovCisJcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2Fk KTsKKwlwcXNpZ25hbChTSUdURVJNLCBkaWUpOworCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2ln bmFscygpOworCisJLyoKKwkgKiBBdHRhY2ggdG8gdGhlIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBz ZWdtZW50IGZvciB0aGUgcGFyYWxsZWwgcXVlcnksIGFuZAorCSAqIGZpbmQgaXRzIHRhYmxlIG9m IGNvbnRlbnRzLgorCSAqCisJICogTm90ZTogYXQgdGhpcyBwb2ludCwgd2UgaGF2ZSBub3QgY3Jl YXRlZCBhbnkgUmVzb3VyY2VPd25lciBpbiB0aGlzCisJICogcHJvY2Vzcy4gIFRoaXMgd2lsbCBy ZXN1bHQgaW4gb3VyIERTTSBtYXBwaW5nIHN1cnZpdmluZyB1bnRpbCBwcm9jZXNzCisJICogZXhp dCwgd2hpY2ggaXMgZmluZS4gIElmIHRoZXJlIHdlcmUgYSBSZXNvdXJjZU93bmVyLCBpdCB3b3Vs ZCBhY3F1aXJlCisJICogb3duZXJzaGlwIG9mIHRoZSBtYXBwaW5nLCBidXQgd2UgaGF2ZSBubyBu ZWVkIGZvciB0aGF0LgorCSAqLworCW1lbWNweSgmaGFuZGxlLCBNeUJnd29ya2VyRW50cnktPmJn d19leHRyYSwgc2l6ZW9mKGRzbV9oYW5kbGUpKTsKKwlzZWcgPSBkc21fYXR0YWNoKGhhbmRsZSk7 CisJaWYgKHNlZyA9PSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coInVuYWJs ZSB0byBtYXAgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQiKSkpOworCisJdG9jID0gc2ht X3RvY19hdHRhY2goUEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMsIGRzbV9zZWdtZW50X2FkZHJl c3Moc2VnKSk7CisJaWYgKHRvYyA9PSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJt c2coImJhZCBtYWdpYyBudW1iZXIgaW4gZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQiKSkp OworCisJYmVmb3JlX3NobWVtX2V4aXQoYXBwbHlfYmd3b3JrZXJfc2h1dGRvd24sIFBvaW50ZXJH ZXREYXR1bShzZWcpKTsKKworCS8qIExvb2sgdXAgdGhlIHNoYXJlZCBpbmZvcm1hdGlvbi4gKi8K KwlzaGFyZWQgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIEFQUExZX0JHV09SS0VSX0tFWV9TSEFSRUQs IGZhbHNlKTsKKwlNeVBhcmFsbGVsU2hhcmVkID0gc2hhcmVkOworCisJLyoKKwkgKiBBdHRhY2gg dG8gdGhlIG1lc3NhZ2UgcXVldWUuCisJICovCisJbXEgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIEFQ UExZX0JHV09SS0VSX0tFWV9NUSwgZmFsc2UpOworCXNobV9tcV9zZXRfcmVjZWl2ZXIobXEsIE15 UHJvYyk7CisJbXFoID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCS8qCisJICog QXR0YWNoIHRvIHRoZSBtZXNzYWdlIHF1ZXVlLgorCSAqLworCW1xID0gc2htX3RvY19sb29rdXAo dG9jLCBBUFBMWV9CR1dPUktFUl9LRVlfRVJST1JfUVVFVUUsIGZhbHNlKTsKKwlzaG1fbXFfc2V0 X3NlbmRlcihtcSwgTXlQcm9jKTsKKwllcnJvcl9tcWggPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcs IE5VTEwpOworCXBxX3JlZGlyZWN0X3RvX3NobV9tcShzZWcsIGVycm9yX21xaCk7CisKKwkvKgor CSAqIE5vdywgd2UgaGF2ZSBpbml0aWFsaXplZCBEU00uIEF0dGFjaCB0byBzbG90LgorCSAqLwor CWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7CisJTXlQYXJhbGxlbFNoYXJl ZC0+bG9naWNhbHJlcF93b3JrZXJfZ2VuZXJhdGlvbiA9IE15TG9naWNhbFJlcFdvcmtlci0+Z2Vu ZXJhdGlvbjsKKwlNeVBhcmFsbGVsU2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9zbG90X25vID0g d29ya2VyX3Nsb3Q7CisKKwlwcV9zZXRfcGFyYWxsZWxfbGVhZGVyKE15TG9naWNhbFJlcFdvcmtl ci0+YXBwbHlfbGVhZGVyX3BpZCwKKwkJCQkJCSAgIEludmFsaWRCYWNrZW5kSWQpOworCisJTXlM b2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRfdGltZSA9IE15TG9naWNhbFJlcFdvcmtlci0+bGFz dF9yZWN2X3RpbWUgPQorCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnJlcGx5X3RpbWUgPSAwOworCisJ SW5pdGlhbGl6ZUFwcGx5V29ya2VyKCk7CisKKwkvKiBTZXR1cCByZXBsaWNhdGlvbiBvcmlnaW4g dHJhY2tpbmcuICovCisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlzbnByaW50Zihvcmln aW5uYW1lLCBzaXplb2Yob3JpZ2lubmFtZSksICJwZ18ldSIsIE15U3Vic2NyaXB0aW9uLT5vaWQp OworCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9ieV9uYW1lKG9yaWdpbm5hbWUsIHRydWUpOworCWlm ICghT2lkSXNWYWxpZChvcmlnaW5pZCkpCisJCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9jcmVhdGUo b3JpZ2lubmFtZSk7CisKKwkvKgorCSAqIFRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBkb2Vz bid0IG5lZWQgdG8gbW9ub3BvbGl6ZSB0aGlzIHJlcGxpY2F0aW9uCisJICogb3JpZ2luIHdoaWNo IHdhcyBhbHJlYWR5IGFjcXVpcmVkIGJ5IGl0cyBsZWFkZXIgcHJvY2Vzcy4KKwkgKi8KKwlyZXBs b3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIE15TG9naWNhbFJlcFdvcmtlci0+YXBwbHlf bGVhZGVyX3BpZCk7CisJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOworCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyoKKwkgKiBTZXR1cCBjYWxsYmFjayBmb3Ig c3lzY2FjaGUgc28gdGhhdCB3ZSBrbm93IHdoZW4gc29tZXRoaW5nIGNoYW5nZXMgaW4KKwkgKiB0 aGUgc3Vic2NyaXB0aW9uIHJlbGF0aW9uIHN0YXRlLgorCSAqLworCUNhY2hlUmVnaXN0ZXJTeXNj YWNoZUNhbGxiYWNrKFNVQlNDUklQVElPTlJFTE1BUCwKKwkJCQkJCQkJICBpbnZhbGlkYXRlX3N5 bmNpbmdfdGFibGVfc3RhdGVzLAorCQkJCQkJCQkgIChEYXR1bSkgMCk7CisKKwkvKgorCSAqIEFs bG9jYXRlIHRoZSBvcmlnaW4gbmFtZSBpbiBsb25nLWxpdmVkIGNvbnRleHQgZm9yIGVycm9yIGNv bnRleHQKKwkgKiBtZXNzYWdlLgorCSAqLworCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5vcmln aW5fbmFtZSA9IE1lbW9yeUNvbnRleHRTdHJkdXAoQXBwbHlDb250ZXh0LAorCQkJCQkJCQkJCQkJ CQkJICAgb3JpZ2lubmFtZSk7CisKKwllbG9nKERFQlVHMSwgIltBcHBseSBCR1cgIyV1XSBzdGFy dGVkIiwgc2hhcmVkLT53b3JrZXJfaWQpOworCisJTG9naWNhbEFwcGx5Qmd3TG9vcChtcWgsIHNo YXJlZCk7CisKKwlwcm9jX2V4aXQoMCk7Cit9CisKKy8qCisgKiBIYW5kbGUgcmVjZWlwdCBvZiBh biBpbnRlcnJ1cHQgaW5kaWNhdGluZyBhIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIG1lc3NhZ2Uu CisgKgorICogTm90ZTogdGhpcyBpcyBjYWxsZWQgd2l0aGluIGEgc2lnbmFsIGhhbmRsZXIhICBB bGwgd2UgY2FuIGRvIGlzIHNldCBhIGZsYWcKKyAqIHRoYXQgd2lsbCBjYXVzZSB0aGUgbmV4dCBD SEVDS19GT1JfSU5URVJSVVBUUygpIHRvIGludm9rZQorICogSGFuZGxlQXBwbHlCZ3dvcmtlck1l c3NhZ2VzKCkuCisgKi8KK3ZvaWQKK0hhbmRsZUFwcGx5Qmd3b3JrZXJNZXNzYWdlSW50ZXJydXB0 KHZvaWQpCit7CisJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7CisJQXBwbHlCZ3dvcmtlck1lc3Nh Z2VQZW5kaW5nID0gdHJ1ZTsKKwlTZXRMYXRjaChNeUxhdGNoKTsKK30KKworLyoKKyAqIEhhbmRs ZSBhIHNpbmdsZSBwcm90b2NvbCBtZXNzYWdlIHJlY2VpdmVkIGZyb20gYSBzaW5nbGUgYXBwbHkg YmFja2dyb3VuZAorICogd29ya2VyLgorICovCitzdGF0aWMgdm9pZAorSGFuZGxlQXBwbHlCZ3dv cmtlck1lc3NhZ2UoQXBwbHlCZ3dvcmtlckluZm8gKndpbmZvLCBTdHJpbmdJbmZvIG1zZykKK3sK KwljaGFyCQltc2d0eXBlOworCisJbXNndHlwZSA9IHBxX2dldG1zZ2J5dGUobXNnKTsKKworCXN3 aXRjaCAobXNndHlwZSkKKwl7CisJCWNhc2UgJ0UnOgkJCQkvKiBFcnJvclJlc3BvbnNlICovCisJ CQl7CisJCQkJRXJyb3JEYXRhCWVkYXRhOworCQkJCUVycm9yQ29udGV4dENhbGxiYWNrICpzYXZl X2Vycm9yX2NvbnRleHRfc3RhY2s7CisKKwkJCQkvKiBQYXJzZSBFcnJvclJlc3BvbnNlLiAqLwor CQkJCXBxX3BhcnNlX2Vycm9ybm90aWNlKG1zZywgJmVkYXRhKTsKKworCQkJCS8qIERlYXRoIG9m IGEgd29ya2VyIGlzbid0IGVub3VnaCBqdXN0aWZpY2F0aW9uIGZvciBzdWljaWRlLiAqLworCQkJ CWVkYXRhLmVsZXZlbCA9IE1pbihlZGF0YS5lbGV2ZWwsIEVSUk9SKTsKKworCQkJCS8qCisJCQkJ ICogSWYgZGVzaXJlZCwgYWRkIGEgY29udGV4dCBsaW5lIHRvIHNob3cgdGhhdCB0aGlzIGlzIGEK KwkJCQkgKiBtZXNzYWdlIHByb3BhZ2F0ZWQgZnJvbSBhIGFwcGx5IGJhY2tncm91bmQgd29ya2Vy LgorCQkJCSAqIE90aGVyd2lzZSwgaXQgY2FuIHNvbWV0aW1lcyBiZSBjb25mdXNpbmcgdG8gdW5k ZXJzdGFuZCB3aGF0CisJCQkJICogYWN0dWFsbHkgaGFwcGVuZWQuCisJCQkJICovCisJCQkJaWYg KGVkYXRhLmNvbnRleHQpCisJCQkJCWVkYXRhLmNvbnRleHQgPSBwc3ByaW50ZigiJXNcbiVzIiwg ZWRhdGEuY29udGV4dCwKKwkJCQkJCQkJCQkJIF8oImFwcGx5IGJhY2tncm91bmQgd29ya2VyIikp OworCQkJCWVsc2UKKwkJCQkJZWRhdGEuY29udGV4dCA9IHBzdHJkdXAoXygiYXBwbHkgYmFja2dy b3VuZCB3b3JrZXIiKSk7CisKKwkJCQkvKgorCQkJCSAqIENvbnRleHQgYmV5b25kIHRoYXQgc2hv dWxkIHVzZSB0aGUgZXJyb3IgY29udGV4dCBjYWxsYmFja3MKKwkJCQkgKiB0aGF0IHdlcmUgaW4g ZWZmZWN0IGluIExvZ2ljYWxSZXBBcHBseUxvb3AoKS4KKwkJCQkgKi8KKwkJCQlzYXZlX2Vycm9y X2NvbnRleHRfc3RhY2sgPSBlcnJvcl9jb250ZXh0X3N0YWNrOworCQkJCWVycm9yX2NvbnRleHRf c3RhY2sgPSBhcHBseV9lcnJvcl9jb250ZXh0X3N0YWNrOworCisJCQkJVGhyb3dFcnJvckRhdGEo JmVkYXRhKTsKKworCQkJCS8qIFNob3VsZCBub3QgcmVhY2ggaGVyZSBhZnRlciByZXRocm93aW5n IGFuIGVycm9yLiAqLworCQkJCWVycm9yX2NvbnRleHRfc3RhY2sgPSBzYXZlX2Vycm9yX2NvbnRl eHRfc3RhY2s7CisKKwkJCQlicmVhazsKKwkJCX0KKworCQljYXNlICdYJzoJCQkJLyogVGVybWlu YXRlLCBpbmRpY2F0aW5nIGNsZWFuIGV4aXQgKi8KKwkJCXsKKwkJCQlzaG1fbXFfZGV0YWNoKHdp bmZvLT5lcnJvcl9tcV9oYW5kbGUpOworCQkJCXdpbmZvLT5lcnJvcl9tcV9oYW5kbGUgPSBOVUxM OworCQkJCWJyZWFrOworCQkJfQorCisJCQkvKgorCQkJICogRG9uJ3QgbmVlZCB0byBkbyBhbnl0 aGluZyBhYm91dCBOb3RpY2VSZXNwb25zZSBhbmQKKwkJCSAqIE5vdGlmeVJlc3BvbnNlIGFzIHRo ZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBkb2Vzbid0IG5lZWQgdG8KKwkJCSAqIHNlbmQg bWVzc2FnZXMgdG8gdGhlIGNsaWVudC4KKwkJCSAqLworCQljYXNlICdOJzoKKwkJY2FzZSAnQSc6 CisJCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQl7CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2du aXplZCBtZXNzYWdlIHR5cGUgcmVjZWl2ZWQgZnJvbSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcjog JWMgKG1lc3NhZ2UgbGVuZ3RoICVkIGJ5dGVzKSIsCisJCQkJCSBtc2d0eXBlLCBtc2ctPmxlbik7 CisJCQl9CisJfQorfQorCisvKgorICogSGFuZGxlIGFueSBxdWV1ZWQgcHJvdG9jb2wgbWVzc2Fn ZXMgcmVjZWl2ZWQgZnJvbSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMuCisgKi8KK3ZvaWQKK0hh bmRsZUFwcGx5Qmd3b3JrZXJNZXNzYWdlcyh2b2lkKQoreworCUxpc3RDZWxsCSAqbGM7CisJTWVt b3J5Q29udGV4dCBvbGRjb250ZXh0OworCisJc3RhdGljIE1lbW9yeUNvbnRleHQgaHBtX2NvbnRl eHQgPSBOVUxMOworCisJLyoKKwkgKiBUaGlzIGlzIGludm9rZWQgZnJvbSBQcm9jZXNzSW50ZXJy dXB0cygpLCBhbmQgc2luY2Ugc29tZSBvZiB0aGUKKwkgKiBmdW5jdGlvbnMgaXQgY2FsbHMgY29u dGFpbiBDSEVDS19GT1JfSU5URVJSVVBUUygpLCB0aGVyZSBpcyBhIHBvdGVudGlhbAorCSAqIGZv ciByZWN1cnNpdmUgY2FsbHMgaWYgbW9yZSBzaWduYWxzIGFyZSByZWNlaXZlZCB3aGlsZSB0aGlz IHJ1bnMuICBJdCdzCisJICogdW5jbGVhciB0aGF0IHJlY3Vyc2l2ZSBlbnRyeSB3b3VsZCBiZSBz YWZlLCBhbmQgaXQgZG9lc24ndCBzZWVtIHVzZWZ1bAorCSAqIGV2ZW4gaWYgaXQgaXMgc2FmZSwg c28gbGV0J3MgYmxvY2sgaW50ZXJydXB0cyB1bnRpbCBkb25lLgorCSAqLworCUhPTERfSU5URVJS VVBUUygpOworCisJLyoKKwkgKiBNb3Jlb3ZlciwgQ3VycmVudE1lbW9yeUNvbnRleHQgbWlnaHQg YmUgcG9pbnRpbmcgYWxtb3N0IGFueXdoZXJlLiAgV2UKKwkgKiBkb24ndCB3YW50IHRvIHJpc2sg bGVha2luZyBkYXRhIGludG8gbG9uZy1saXZlZCBjb250ZXh0cywgc28gbGV0J3MgZG8KKwkgKiBv dXIgd29yayBoZXJlIGluIGEgcHJpdmF0ZSBjb250ZXh0IHRoYXQgd2UgY2FuIHJlc2V0IG9uIGVh Y2ggdXNlLgorCSAqLworCWlmIChocG1fY29udGV4dCA9PSBOVUxMKQkvKiBmaXJzdCB0aW1lIHRo cm91Z2g/ICovCisJCWhwbV9jb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcE1lbW9y eUNvbnRleHQsCisJCQkJCQkJCQkJCSJIYW5kbGVBcHBseUJnd29ya2VyTWVzc2FnZXMiLAorCQkJ CQkJCQkJCQlBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKKwllbHNlCisJCU1lbW9yeUNvbnRleHRS ZXNldChocG1fY29udGV4dCk7CisKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KGhwbV9jb250ZXh0KTsKKworCS8qIE9LIHRvIHByb2Nlc3MgbWVzc2FnZXMuICBSZXNldCB0aGUg ZmxhZyBzYXlpbmcgdGhlcmUgYXJlIG1vcmUgdG8gZG8uICovCisJQXBwbHlCZ3dvcmtlck1lc3Nh Z2VQZW5kaW5nID0gZmFsc2U7CisKKwlmb3JlYWNoKGxjLCBBcHBseUJnd29ya2Vyc0xpc3QpCisJ eworCQlzaG1fbXFfcmVzdWx0IHJlczsKKwkJU2l6ZQkJbmJ5dGVzOworCQl2b2lkCSAgICpkYXRh OworCQlBcHBseUJnd29ya2VySW5mbyAqd2luZm8gPSAoQXBwbHlCZ3dvcmtlckluZm8gKikgbGZp cnN0KGxjKTsKKworCQlpZiAod2luZm8tPmVycm9yX21xX2hhbmRsZSA9PSBOVUxMKQorCQkJY29u dGludWU7CisKKwkJcmVzID0gc2htX21xX3JlY2VpdmUod2luZm8tPmVycm9yX21xX2hhbmRsZSwg Jm5ieXRlcywKKwkJCQkJCQkgJmRhdGEsIHRydWUpOworCisJCWlmIChyZXMgPT0gU0hNX01RX1dP VUxEX0JMT0NLKQorCQkJYnJlYWs7CisJCWVsc2UgaWYgKHJlcyA9PSBTSE1fTVFfU1VDQ0VTUykK KwkJeworCQkJU3RyaW5nSW5mb0RhdGEgbXNnOworCisJCQlpbml0U3RyaW5nSW5mbygmbXNnKTsK KwkJCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8oJm1zZywgZGF0YSwgbmJ5dGVzKTsKKwkJCUhhbmRs ZUFwcGx5Qmd3b3JrZXJNZXNzYWdlKHdpbmZvLCAmbXNnKTsKKwkJCXBmcmVlKG1zZy5kYXRhKTsK KwkJfQorCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09C SkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygibG9zdCBjb25u ZWN0aW9uIHRvIHRoZSBtYWluIGFwcGx5IHdvcmtlciIpKSk7CisJfQorCisJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJLyogTWlnaHQgYXMgd2VsbCBjbGVhciB0aGUgY29u dGV4dCBvbiBvdXIgd2F5IG91dCAqLworCU1lbW9yeUNvbnRleHRSZXNldChocG1fY29udGV4dCk7 CisKKwlSRVNVTUVfSU5URVJSVVBUUygpOworfQorCisvKgorICogU2V0IHVwIGEgZHluYW1pYyBz aGFyZWQgbWVtb3J5IHNlZ21lbnQuCisgKgorICogV2Ugc2V0IHVwIGEgY29udHJvbCByZWdpb24g dGhhdCBjb250YWlucyBhIEFwcGx5Qmd3b3JrZXJTaGFyZWQsCisgKiBwbHVzIG9uZSByZWdpb24g cGVyIG1lc3NhZ2UgcXVldWUuIFRoZXJlIGFyZSBhcyBtYW55IG1lc3NhZ2UgcXVldWVzIGFzCisg KiB0aGUgbnVtYmVyIG9mIHdvcmtlcnMuCisgKgorICogUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3Ms IGZhbHNlIG9uIGZhaWx1cmUuCisgKi8KK3N0YXRpYyBib29sCithcHBseV9iZ3dvcmtlcl9zZXR1 cF9kc20oQXBwbHlCZ3dvcmtlckluZm8gKndpbmZvKQoreworCXNobV90b2NfZXN0aW1hdG9yIGU7 CisJU2l6ZQkJc2Vnc2l6ZTsKKwlkc21fc2VnbWVudCAqc2VnOworCXNobV90b2MgICAgKnRvYzsK KwlBcHBseUJnd29ya2VyU2hhcmVkICpzaGFyZWQ7CisJc2htX21xCSAgICptcTsKKwlTaXplCQlx dWV1ZV9zaXplID0gRFNNX1FVRVVFX1NJWkU7CisJU2l6ZQkJZXJyb3JfcXVldWVfc2l6ZSA9IERT TV9FUlJPUl9RVUVVRV9TSVpFOworCWludAkJCXNlcnZlcl92ZXJzaW9uOworCisJLyoKKwkgKiBF c3RpbWF0ZSBob3cgbXVjaCBzaGFyZWQgbWVtb3J5IHdlIG5lZWQuCisJICoKKwkgKiBCZWNhdXNl IHRoZSBUT0MgbWFjaGluZXJ5IG1heSBjaG9vc2UgdG8gaW5zZXJ0IHBhZGRpbmcgb2Ygb2RkbHkt c2l6ZWQKKwkgKiByZXF1ZXN0cywgd2UgbXVzdCBlc3RpbWF0ZSBlYWNoIGNodW5rIHNlcGFyYXRl bHkuCisJICoKKwkgKiBXZSBuZWVkIG9uZSBrZXkgdG8gcmVnaXN0ZXIgdGhlIGxvY2F0aW9uIG9m IHRoZSBoZWFkZXIsIGFuZCB3ZSBuZWVkCisJICogYW5vdGhlciBrZXkgdG8gdHJhY2sgdGhlIGxv Y2F0aW9uIG9mIHRoZSBtZXNzYWdlIHF1ZXVlLgorCSAqLworCXNobV90b2NfaW5pdGlhbGl6ZV9l c3RpbWF0b3IoJmUpOworCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJmUsIHNpemVvZihBcHBseUJn d29ya2VyU2hhcmVkKSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmZSwgcXVldWVfc2l6ZSk7 CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmZSwgZXJyb3JfcXVldWVfc2l6ZSk7CisKKwlzaG1f dG9jX2VzdGltYXRlX2tleXMoJmUsIDIpOworCXNlZ3NpemUgPSBzaG1fdG9jX2VzdGltYXRlKCZl KTsKKworCS8qIENyZWF0ZSB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50IGFuZCBlc3RhYmxpc2gg YSB0YWJsZSBvZiBjb250ZW50cy4gKi8KKwlzZWcgPSBkc21fY3JlYXRlKHNobV90b2NfZXN0aW1h dGUoJmUpLCAwKTsKKwlpZiAoc2VnID09IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKworCXRvYyA9 IHNobV90b2NfY3JlYXRlKFBHX0xPR0lDQUxfQVBQTFlfU0hNX01BR0lDLCBkc21fc2VnbWVudF9h ZGRyZXNzKHNlZyksCisJCQkJCQkgc2Vnc2l6ZSk7CisKKwkvKiBTZXQgdXAgdGhlIGhlYWRlciBy ZWdpb24uICovCisJc2hhcmVkID0gc2htX3RvY19hbGxvY2F0ZSh0b2MsIHNpemVvZihBcHBseUJn d29ya2VyU2hhcmVkKSk7CisJU3BpbkxvY2tJbml0KCZzaGFyZWQtPm11dGV4KTsKKwlzaGFyZWQt PnN0YXRlID0gQVBQTFlfQkdXT1JLRVJfQlVTWTsKKworCXNlcnZlcl92ZXJzaW9uID0gd2FscmN2 X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4pOworCXNoYXJlZC0+cHJvdG9f dmVyc2lvbiA9CisJCXNlcnZlcl92ZXJzaW9uID49IDE2MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9f U1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNIDoKKwkJc2VydmVyX3ZlcnNpb24gPj0gMTUwMDAw ID8gTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05VTSA6CisJCXNlcnZlcl92ZXJz aW9uID49IDE0MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVNIDoKKwkJ TE9HSUNBTFJFUF9QUk9UT19WRVJTSU9OX05VTTsKKworCXNoYXJlZC0+c3RyZWFtX3hpZCA9IHN0 cmVhbV94aWQ7CisJc2hhcmVkLT53b3JrZXJfaWQgPSBsaXN0X2xlbmd0aChBcHBseUJnd29ya2Vy c0xpc3QpICsgMTsKKworCXNobV90b2NfaW5zZXJ0KHRvYywgQVBQTFlfQkdXT1JLRVJfS0VZX1NI QVJFRCwgc2hhcmVkKTsKKworCS8qIFNldCB1cCBtZXNzYWdlIHF1ZXVlIGZvciB0aGUgd29ya2Vy LiAqLworCW1xID0gc2htX21xX2NyZWF0ZShzaG1fdG9jX2FsbG9jYXRlKHRvYywgcXVldWVfc2l6 ZSksIHF1ZXVlX3NpemUpOworCXNobV90b2NfaW5zZXJ0KHRvYywgQVBQTFlfQkdXT1JLRVJfS0VZ X01RLCBtcSk7CisJc2htX21xX3NldF9zZW5kZXIobXEsIE15UHJvYyk7CisKKwkvKiBBdHRhY2gg dGhlIHF1ZXVlLiAqLworCXdpbmZvLT5tcV9oYW5kbGUgPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcs IE5VTEwpOworCisJLyogU2V0IHVwIGVycm9yIHF1ZXVlIGZvciB0aGUgd29ya2VyLiAqLworCW1x ID0gc2htX21xX2NyZWF0ZShzaG1fdG9jX2FsbG9jYXRlKHRvYywgZXJyb3JfcXVldWVfc2l6ZSks CisJCQkJCSAgIGVycm9yX3F1ZXVlX3NpemUpOworCXNobV90b2NfaW5zZXJ0KHRvYywgQVBQTFlf QkdXT1JLRVJfS0VZX0VSUk9SX1FVRVVFLCBtcSk7CisJc2htX21xX3NldF9yZWNlaXZlcihtcSwg TXlQcm9jKTsKKworCS8qIEF0dGFjaCB0aGUgcXVldWUuICovCisJd2luZm8tPmVycm9yX21xX2hh bmRsZSA9IHNobV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CisKKwkvKiBSZXR1cm4gcmVzdWx0 cyB0byBjYWxsZXIuICovCisJd2luZm8tPmRzbV9zZWcgPSBzZWc7CisJd2luZm8tPnNoYXJlZCA9 IHNoYXJlZDsKKworCXJldHVybiB0cnVlOworfQorCisvKgorICogU3RhcnQgYXBwbHkgYmFja2dy b3VuZCB3b3JrZXIgcHJvY2VzcyBhbmQgYWxsb2NhdGUgc2hhcmVkIG1lbW9yeSBmb3IgaXQuCisg Ki8KK3N0YXRpYyBBcHBseUJnd29ya2VySW5mbyAqCithcHBseV9iZ3dvcmtlcl9zZXR1cCh2b2lk KQoreworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlib29sCQlsYXVuY2hlZDsKKwlBcHBs eUJnd29ya2VySW5mbyAqd2luZm87CisJaW50CQkJbmFwcGx5d29ya2VyczsKKworCWVsb2coREVC VUcxLCAic2V0dGluZyB1cCBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciAldSIsCisJCSBsaXN0X2xl bmd0aChBcHBseUJnd29ya2Vyc0xpc3QpICsgMSk7CisKKwkvKiBDaGVjayBpZiB0aGVyZSBhcmUg ZnJlZSB3b3JrZXIgc2xvdChzKS4gKi8KKwlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJM b2NrLCBMV19TSEFSRUQpOworCW5hcHBseXdvcmtlcnMgPSBsb2dpY2FscmVwX2FwcGx5X2Jnd29y a2VyX2NvdW50KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQpOworCUxXTG9ja1JlbGVhc2UoTG9n aWNhbFJlcFdvcmtlckxvY2spOworCisJaWYgKG5hcHBseXdvcmtlcnMgPj0gbWF4X2FwcGx5X2Jn d29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uKQorCQlyZXR1cm4gTlVMTDsKKworCW9sZGNvbnRleHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKworCXdpbmZvID0gKEFwcGx5 Qmd3b3JrZXJJbmZvICopIHBhbGxvYzAoc2l6ZW9mKEFwcGx5Qmd3b3JrZXJJbmZvKSk7CisKKwkv KiBTZXR1cCBzaGFyZWQgbWVtb3J5LiAqLworCWlmICghYXBwbHlfYmd3b3JrZXJfc2V0dXBfZHNt KHdpbmZvKSkKKwl7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwkJcGZy ZWUod2luZm8pOworCisJCXJldHVybiBOVUxMOworCX0KKworCWxhdW5jaGVkID0gbG9naWNhbHJl cF93b3JrZXJfbGF1bmNoKE15TG9naWNhbFJlcFdvcmtlci0+ZGJpZCwKKwkJCQkJCQkJCQlNeVN1 YnNjcmlwdGlvbi0+b2lkLAorCQkJCQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lLAorCQkJCQkJ CQkJCU15TG9naWNhbFJlcFdvcmtlci0+dXNlcmlkLAorCQkJCQkJCQkJCUludmFsaWRPaWQsCisJ CQkJCQkJCQkJZHNtX3NlZ21lbnRfaGFuZGxlKHdpbmZvLT5kc21fc2VnKSk7CisKKwlpZiAobGF1 bmNoZWQpCisJCUFwcGx5Qmd3b3JrZXJzTGlzdCA9IGxhcHBlbmQoQXBwbHlCZ3dvcmtlcnNMaXN0 LCB3aW5mbyk7CisJZWxzZQorCXsKKwkJc2htX21xX2RldGFjaCh3aW5mby0+bXFfaGFuZGxlKTsK KwkJc2htX21xX2RldGFjaCh3aW5mby0+ZXJyb3JfbXFfaGFuZGxlKTsKKwkJZHNtX2RldGFjaCh3 aW5mby0+ZHNtX3NlZyk7CisJCXBmcmVlKHdpbmZvKTsKKworCQl3aW5mbyA9IE5VTEw7CisJfQor CisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJcmV0dXJuIHdpbmZvOwor fQorCisvKgorICogU2VuZCB0aGUgZGF0YSB0byB0aGUgc3BlY2lmaWVkIGFwcGx5IGJhY2tncm91 bmQgd29ya2VyIHZpYSBzaGFyZWQtbWVtb3J5IHF1ZXVlLgorICovCit2b2lkCithcHBseV9iZ3dv cmtlcl9zZW5kX2RhdGEoQXBwbHlCZ3dvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywgY29u c3Qgdm9pZCAqZGF0YSkKK3sKKwlzaG1fbXFfcmVzdWx0IHJlc3VsdDsKKworCXJlc3VsdCA9IHNo bV9tcV9zZW5kKHdpbmZvLT5tcV9oYW5kbGUsIG5ieXRlcywgZGF0YSwgZmFsc2UsIHRydWUpOwor CisJaWYgKHJlc3VsdCAhPSBTSE1fTVFfU1VDQ0VTUykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkg ZXJybXNnKCJjb3VsZCBub3Qgc2VuZCBkYXRhIHRvIHNoYXJlZC1tZW1vcnkgcXVldWUiKSkpOwor fQorCisvKgorICogV2FpdCB1bnRpbCB0aGUgc3RhdGUgb2YgYXBwbHkgYmFja2dyb3VuZCB3b3Jr ZXIgcmVhY2hlcyB0aGUKKyAqICd3YWl0X2Zvcl9zdGF0ZScuCisgKi8KK3ZvaWQKK2FwcGx5X2Jn d29ya2VyX3dhaXRfZm9yKEFwcGx5Qmd3b3JrZXJJbmZvICp3aW5mbywKKwkJCQkJCUFwcGx5Qmd3 b3JrZXJTdGF0ZSB3YWl0X2Zvcl9zdGF0ZSkKK3sKKwlmb3IgKDs7KQorCXsKKwkJY2hhcgkJc3Rh dGU7CisKKwkJU3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisJCXN0YXRl ID0gd2luZm8tPnNoYXJlZC0+c3RhdGU7CisJCVNwaW5Mb2NrUmVsZWFzZSgmd2luZm8tPnNoYXJl ZC0+bXV0ZXgpOworCisJCS8qIERvbmUgaWYgYWxyZWFkeSBpbiBjb3JyZWN0IHN0YXRlLiAqLwor CQlpZiAoc3RhdGUgPT0gd2FpdF9mb3Jfc3RhdGUpCisJCQlicmVhazsKKworCQkvKiBJZiBhbnkg d29ya2VycyBoYXZlIGRpZWQsIHdlIGhhdmUgZmFpbGVkLiAqLworCQlpZiAod2luZm8tPmVycm9y X21xX2hhbmRsZSA9PSBOVUxMKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJS Q09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImFw cGx5IGJhY2tncm91bmQgd29ya2VyICV1IGZhaWxlZCB0byBhcHBseSB0cmFuc2FjdGlvbiAldSIs CisJCQkJCQkJd2luZm8tPnNoYXJlZC0+d29ya2VyX2lkLCB3aW5mby0+c2hhcmVkLT5zdHJlYW1f eGlkKSkpOworCisJCS8qIFdhaXQgdG8gYmUgc2lnbmFsbGVkLiAqLworCQkodm9pZCkgV2FpdExh dGNoKE15TGF0Y2gsCisJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRf T05fUE1fREVBVEgsCisJCQkJCQkgMTAwMEwsCisJCQkJCQkgV0FJVF9FVkVOVF9MT0dJQ0FMX0FQ UExZX0JHV09SS0VSX1NUQVRFX0NIQU5HRSk7CisKKwkJLyogUmVzZXQgdGhlIGxhdGNoIHNvIHdl IGRvbid0IHNwaW4uICovCisJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisKKwkJLyogQW4gaW50ZXJy dXB0IG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KKwkJQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKTsKKwl9Cit9CisKKy8qIFNldCB0aGUgYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIgc3RhdGUuICovCit2b2lkCithcHBseV9iZ3dvcmtlcl9zZXRfc3RhdGUoQXBwbHlCZ3dv cmtlclN0YXRlIHN0YXRlKQoreworCWVsb2coREVCVUcxLCAiW0FwcGx5IEJHVyAjJXVdIHNldCBz dGF0ZSB0byAlZCIsIE15UGFyYWxsZWxTaGFyZWQtPndvcmtlcl9pZCwgc3RhdGUpOworCisJU3Bp bkxvY2tBY3F1aXJlKCZNeVBhcmFsbGVsU2hhcmVkLT5tdXRleCk7CisJTXlQYXJhbGxlbFNoYXJl ZC0+c3RhdGUgPSBzdGF0ZTsKKwlTcGluTG9ja1JlbGVhc2UoJk15UGFyYWxsZWxTaGFyZWQtPm11 dGV4KTsKK30KKworLyoKKyAqIERlZmluZSBhIHNhdmVwb2ludCBmb3IgYSBzdWJ4YWN0IGluIGFw cGx5IGJhY2tncm91bmQgd29ya2VyIGlmIG5lZWRlZC4KKyAqCisgKiBUaGUgYXBwbHkgYmFja2dy b3VuZCB3b3JrZXIgY2FuIGZpZ3VyZSBvdXQgaWYgYSBuZXcgc3VidHJhbnNhY3Rpb24gd2FzCisg KiBzdGFydGVkIGJ5IGNoZWNraW5nIGlmIHRoZSBuZXcgY2hhbmdlIGFycml2ZWQgd2l0aCBkaWZm ZXJlbnQgeGlkLiBJbiB0aGF0CisgKiBjYXNlIGRlZmluZSBhIG5hbWVkIHNhdmVwb2ludCwgc28g dGhhdCB3ZSBhcmUgYWJsZSB0byBjb21taXQvcm9sbGJhY2sgaXQKKyAqIHNlcGFyYXRlbHkgbGF0 ZXIuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX3N1YnhhY3RfaW5mb19hZGQoVHJhbnNhY3Rp b25JZCBjdXJyZW50X3hpZCkKK3sKKwlpZiAoY3VycmVudF94aWQgIT0gc3RyZWFtX3hpZCAmJgor CQkhbGlzdF9tZW1iZXJfaW50KHN1YnhhY3RsaXN0LCAoaW50KSBjdXJyZW50X3hpZCkpCisJewor CQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJY2hhcgkJc3BuYW1lW01BWFBHUEFUSF07CisKKwkJ YXBwbHlfYmd3b3JrZXJfc2F2ZXBvaW50X25hbWUoTXlTdWJzY3JpcHRpb24tPm9pZCwgY3VycmVu dF94aWQsCisJCQkJCQkJCQkgIHNwbmFtZSwgc2l6ZW9mKHNwbmFtZSkpOworCisJCWVsb2coREVC VUcxLCAiW0FwcGx5IEJHVyAjJXVdIGRlZmluaW5nIHNhdmVwb2ludCAlcyIsCisJCQkgTXlQYXJh bGxlbFNoYXJlZC0+d29ya2VyX2lkLCBzcG5hbWUpOworCisJCS8qIFdlIG11c3QgYmUgaW4gdHJh bnNhY3Rpb24gYmxvY2sgdG8gZGVmaW5lIHRoZSBTQVZFUE9JTlQuICovCisJCWlmICghSXNUcmFu c2FjdGlvbkJsb2NrKCkpCisJCXsKKwkJCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygpOworCQkJQ29t bWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCX0KKworCQlEZWZpbmVTYXZlcG9pbnQoc3BuYW1l KTsKKworCQkvKgorCQkgKiBDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQgaXMgbmVlZGVkIHRvIHN0 YXJ0IGEgc3VidHJhbnNhY3Rpb24gYWZ0ZXIKKwkJICogaXNzdWluZyBhIFNBVkVQT0lOVCBpbnNp ZGUgYSB0cmFuc2FjdGlvbiBibG9jayAoc2VlCisJCSAqIFN0YXJ0U3ViVHJhbnNhY3Rpb24oKSku CisJCSAqLworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQlvbGRjdHggPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKwkJc3VieGFjdGxpc3QgPSBsYXBwZW5k X2ludChzdWJ4YWN0bGlzdCwgKGludCkgY3VycmVudF94aWQpOworCQlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY3R4KTsKKwl9Cit9CisKKy8qCisgKiBGb3JtIHRoZSBzYXZlcG9pbnQgbmFtZSBm b3IgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KKyAqCisgKiBSZXR1cm4gdGhlIG5hbWUgaW4g dGhlIHN1cHBsaWVkIGJ1ZmZlci4KKyAqLwordm9pZAorYXBwbHlfYmd3b3JrZXJfc2F2ZXBvaW50 X25hbWUoT2lkIHN1Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCQkJICBjaGFyICpzcG5h bWUsIGludCBzenNwKQoreworCXNucHJpbnRmKHNwbmFtZSwgc3pzcCwgInBnX3NwXyV1XyV1Iiwg c3Vib2lkLCB4aWQpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9kZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMK aW5kZXggMTY2N2Q3Mi4uYTQzNzY4MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2RlY29kZS5jCkBAIC02NTIsOSArNjUyLDEwIEBAIERlY29kZUNvbW1pdChMb2dpY2FsRGVjb2Rp bmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZiwKIAl7CiAJCWZvciAoaSA9IDA7 IGkgPCBwYXJzZWQtPm5zdWJ4YWN0czsgaSsrKQogCQl7Ci0JCQlSZW9yZGVyQnVmZmVyRm9yZ2V0 KGN0eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tpXSwgYnVmLT5vcmlncHRyKTsKKwkJCVJl b3JkZXJCdWZmZXJGb3JnZXQoY3R4LT5yZW9yZGVyLCBwYXJzZWQtPnN1YnhhY3RzW2ldLCBidWYt Pm9yaWdwdHIsCisJCQkJCQkJCWNvbW1pdF90aW1lKTsKIAkJfQotCQlSZW9yZGVyQnVmZmVyRm9y Z2V0KGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPm9yaWdwdHIpOworCQlSZW9yZGVyQnVmZmVyRm9y Z2V0KGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPm9yaWdwdHIsIGNvbW1pdF90aW1lKTsKIAogCQly ZXR1cm47CiAJfQpAQCAtODIyLDEwICs4MjMsMTEgQEAgRGVjb2RlQWJvcnQoTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYsCiAJCWZvciAoaSA9IDA7IGkg PCBwYXJzZWQtPm5zdWJ4YWN0czsgaSsrKQogCQl7CiAJCQlSZW9yZGVyQnVmZmVyQWJvcnQoY3R4 LT5yZW9yZGVyLCBwYXJzZWQtPnN1YnhhY3RzW2ldLAotCQkJCQkJCSAgIGJ1Zi0+cmVjb3JkLT5F bmRSZWNQdHIpOworCQkJCQkJCSAgIGJ1Zi0+cmVjb3JkLT5FbmRSZWNQdHIsIGFib3J0X3RpbWUp OwogCQl9CiAKLQkJUmVvcmRlckJ1ZmZlckFib3J0KGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPnJl Y29yZC0+RW5kUmVjUHRyKTsKKwkJUmVvcmRlckJ1ZmZlckFib3J0KGN0eC0+cmVvcmRlciwgeGlk LCBidWYtPnJlY29yZC0+RW5kUmVjUHRyLAorCQkJCQkJICAgYWJvcnRfdGltZSk7CiAJfQogCiAJ LyogdXBkYXRlIHRoZSBkZWNvZGluZyBzdGF0cyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9sYXVuY2hlci5jCmluZGV4IDNiYmQ1MjIuLmM3ZmZjYzMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKQEAgLTU0LDYgKzU0LDcgQEAKIAogaW50 CQkJbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDQ7CiBpbnQJCQltYXhfc3luY193 b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyOworaW50CQkJbWF4X2FwcGx5X2Jnd29ya2Vyc19w ZXJfc3Vic2NyaXB0aW9uID0gMjsKIAogTG9naWNhbFJlcFdvcmtlciAqTXlMb2dpY2FsUmVwV29y a2VyID0gTlVMTDsKIApAQCAtNzMsNiArNzQsNyBAQCBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX2xh dW5jaGVyX29uZXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIGxvZ2ljYWxy ZXBfd29ya2VyX29uZXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIGxvZ2lj YWxyZXBfd29ya2VyX2RldGFjaCh2b2lkKTsKIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfd29ya2Vy X2NsZWFudXAoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKTsKK3N0YXRpYyB2b2lkIGxvZ2ljYWxy ZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKTsKIAogc3Rh dGljIGJvb2wgb25fY29tbWl0X2xhdW5jaGVyX3dha2V1cCA9IGZhbHNlOwogCkBAIC0xNTEsOCAr MTUzLDEwIEBAIGdldF9zdWJzY3JpcHRpb25fbGlzdCh2b2lkKQogICoKICAqIFRoaXMgaXMgb25s eSBuZWVkZWQgZm9yIGNsZWFuaW5nIHVwIHRoZSBzaGFyZWQgbWVtb3J5IGluIGNhc2UgdGhlIHdv cmtlcgogICogZmFpbHMgdG8gYXR0YWNoLgorICoKKyAqIFJldHVybiB3aGV0aGVyIHRoZSBhdHRh Y2ggd2FzIHN1Y2Nlc3NmdWwuCiAgKi8KLXN0YXRpYyB2b2lkCitzdGF0aWMgYm9vbAogV2FpdEZv clJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAkJCQkJ CQkgICB1aW50MTYgZ2VuZXJhdGlvbiwKIAkJCQkJCQkgICBCYWNrZ3JvdW5kV29ya2VySGFuZGxl ICpoYW5kbGUpCkBAIC0xNjgsMTEgKzE3MiwxMSBAQCBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJB dHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAogCiAJCUxXTG9ja0FjcXVpcmUoTG9naWNh bFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CiAKLQkJLyogV29ya2VyIGVpdGhlciBkaWVkIG9y IGhhcyBzdGFydGVkOyBubyBuZWVkIHRvIGRvIGFueXRoaW5nLiAqLworCQkvKiBXb3JrZXIgZWl0 aGVyIGRpZWQgb3IgaGFzIHN0YXJ0ZWQuIFJldHVybiBmYWxzZSBpZiBkaWVkLiAqLwogCQlpZiAo IXdvcmtlci0+aW5fdXNlIHx8IHdvcmtlci0+cHJvYykKIAkJewogCQkJTFdMb2NrUmVsZWFzZShM b2dpY2FsUmVwV29ya2VyTG9jayk7Ci0JCQlyZXR1cm47CisJCQlyZXR1cm4gd29ya2VyLT5pbl91 c2U7CiAJCX0KIAogCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKQEAgLTE4 Nyw3ICsxOTEsNyBAQCBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdv cmtlciAqd29ya2VyLAogCQkJaWYgKGdlbmVyYXRpb24gPT0gd29ya2VyLT5nZW5lcmF0aW9uKQog CQkJCWxvZ2ljYWxyZXBfd29ya2VyX2NsZWFudXAod29ya2VyKTsKIAkJCUxXTG9ja1JlbGVhc2Uo TG9naWNhbFJlcFdvcmtlckxvY2spOwotCQkJcmV0dXJuOworCQkJcmV0dXJuIGZhbHNlOwogCQl9 CiAKIAkJLyoKQEAgLTIwOSw2ICsyMTMsOCBAQCBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRh Y2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAogLyoKICAqIFdhbGtzIHRoZSB3b3JrZXJzIGFy cmF5IGFuZCBzZWFyY2hlcyBmb3Igb25lIHRoYXQgbWF0Y2hlcyBnaXZlbgogICogc3Vic2NyaXB0 aW9uIGlkIGFuZCByZWxpZC4KKyAqCisgKiBXZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBt YWluIGFwcGx5IHdvcmtlciBvciB0YWJsZSBzeW5jIHdvcmtlci4KICAqLwogTG9naWNhbFJlcFdv cmtlciAqCiBsb2dpY2FscmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlkLCBib29s IG9ubHlfcnVubmluZykKQEAgLTIyMyw2ICsyMjksMTAgQEAgbG9naWNhbHJlcF93b3JrZXJfZmlu ZChPaWQgc3ViaWQsIE9pZCByZWxpZCwgYm9vbCBvbmx5X3J1bm5pbmcpCiAJewogCQlMb2dpY2Fs UmVwV29ya2VyICp3ID0gJkxvZ2ljYWxSZXBDdHgtPndvcmtlcnNbaV07CiAKKwkJLyogU2tpcCBh cHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMuICovCisJCWlmIChpc0FwcGx5QmdXb3JrZXIodykpCisJ CQljb250aW51ZTsKKwogCQlpZiAody0+aW5fdXNlICYmIHctPnN1YmlkID09IHN1YmlkICYmIHct PnJlbGlkID09IHJlbGlkICYmCiAJCQkoIW9ubHlfcnVubmluZyB8fCB3LT5wcm9jKSkKIAkJewpA QCAtMjU5LDExICsyNjksMTMgQEAgbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoT2lkIHN1YmlkLCBi b29sIG9ubHlfcnVubmluZykKIH0KIAogLyoKLSAqIFN0YXJ0IG5ldyBhcHBseSBiYWNrZ3JvdW5k IHdvcmtlciwgaWYgcG9zc2libGUuCisgKiBTdGFydCBuZXcgYmFja2dyb3VuZCB3b3JrZXIsIGlm IHBvc3NpYmxlLgorICoKKyAqIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWls dXJlLgogICovCi12b2lkCitib29sCiBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQs IE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwgT2lkIHVzZXJpZCwKLQkJCQkJCSBPaWQg cmVsaWQpCisJCQkJCQkgT2lkIHJlbGlkLCBkc21faGFuZGxlIHN1Yndvcmtlcl9kc20pCiB7CiAJ QmFja2dyb3VuZFdvcmtlciBiZ3c7CiAJQmFja2dyb3VuZFdvcmtlckhhbmRsZSAqYmd3X2hhbmRs ZTsKQEAgLTI3Myw2ICsyODUsMTAgQEAgbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlk LCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsIE9pZCB1c2VyaWQsCiAJTG9naWNhbFJl cFdvcmtlciAqd29ya2VyID0gTlVMTDsKIAlpbnQJCQluc3luY3dvcmtlcnM7CiAJVGltZXN0YW1w VHogbm93OworCWJvb2wJCWlzX3N1YndvcmtlciA9IChzdWJ3b3JrZXJfZHNtICE9IERTTV9IQU5E TEVfSU5WQUxJRCk7CisKKwkvKiBTYW5pdHkgY2hlY2s6IHdlIGRvbid0IHN1cHBvcnQgdGFibGUg c3luYyBpbiBzdWJ3b3JrZXIuICovCisJQXNzZXJ0KCEoaXNfc3Vid29ya2VyICYmIE9pZElzVmFs aWQocmVsaWQpKSk7CiAKIAllcmVwb3J0KERFQlVHMSwKIAkJCShlcnJtc2dfaW50ZXJuYWwoInN0 YXJ0aW5nIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wi IiwKQEAgLTM1MCw3ICszNjYsNyBAQCByZXRyeToKIAlpZiAoT2lkSXNWYWxpZChyZWxpZCkgJiYg bnN5bmN3b3JrZXJzID49IG1heF9zeW5jX3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbikKIAl7CiAJ CUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQlyZXR1cm47CisJCXJldHVy biBmYWxzZTsKIAl9CiAKIAkvKgpAQCAtMzY0LDcgKzM4MCw3IEBAIHJldHJ5OgogCQkJCShlcnJj b2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCiAJCQkJIGVycm1zZygi b3V0IG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIHNsb3RzIiksCiAJCQkJIGVycmhpbnQo IllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtl cnMuIikpKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJLyogUHJlcGFyZSB0 aGUgd29ya2VyIHNsb3QuICovCkBAIC0zNzksNiArMzk1LDcgQEAgcmV0cnk6CiAJd29ya2VyLT5y ZWxzdGF0ZSA9IFNVQlJFTF9TVEFURV9VTktOT1dOOwogCXdvcmtlci0+cmVsc3RhdGVfbHNuID0g SW52YWxpZFhMb2dSZWNQdHI7CiAJd29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IE5VTEw7CisJd29y a2VyLT5hcHBseV9sZWFkZXJfcGlkID0gaXNfc3Vid29ya2VyID8gTXlQcm9jUGlkIDogSW52YWxp ZFBpZDsKIAl3b3JrZXItPmxhc3RfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJVElNRVNUQU1Q X05PQkVHSU4od29ya2VyLT5sYXN0X3NlbmRfdGltZSk7CiAJVElNRVNUQU1QX05PQkVHSU4od29y a2VyLT5sYXN0X3JlY3ZfdGltZSk7CkBAIC0zOTYsMTAgKzQxMywxOCBAQCByZXRyeToKIAkJQkdX T1JLRVJfQkFDS0VORF9EQVRBQkFTRV9DT05ORUNUSU9OOwogCWJndy5iZ3dfc3RhcnRfdGltZSA9 IEJnV29ya2VyU3RhcnRfUmVjb3ZlcnlGaW5pc2hlZDsKIAlzbnByaW50ZihiZ3cuYmd3X2xpYnJh cnlfbmFtZSwgQkdXX01BWExFTiwgInBvc3RncmVzIik7Ci0Jc25wcmludGYoYmd3LmJnd19mdW5j dGlvbl9uYW1lLCBCR1dfTUFYTEVOLCAiQXBwbHlXb3JrZXJNYWluIik7CisKKwlpZiAoaXNfc3Vi d29ya2VyKQorCQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJB cHBseUJnd29ya2VyTWFpbiIpOworCWVsc2UKKwkJc25wcmludGYoYmd3LmJnd19mdW5jdGlvbl9u YW1lLCBCR1dfTUFYTEVOLCAiQXBwbHlXb3JrZXJNYWluIik7CisKIAlpZiAoT2lkSXNWYWxpZChy ZWxpZCkpCiAJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKIAkJCQkgImxvZ2lj YWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUgc3luYyAldSIsIHN1Ymlk LCByZWxpZCk7CisJZWxzZSBpZiAoaXNfc3Vid29ya2VyKQorCQlzbnByaW50ZihiZ3cuYmd3X25h bWUsIEJHV19NQVhMRU4sCisJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IGJhY2tncm91 bmQgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUiLCBzdWJpZCk7CiAJZWxzZQogCQlzbnByaW50 ZihiZ3cuYmd3X25hbWUsIEJHV19NQVhMRU4sCiAJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHdv cmtlciBmb3Igc3Vic2NyaXB0aW9uICV1Iiwgc3ViaWQpOwpAQCAtNDA5LDYgKzQzNCw5IEBAIHJl dHJ5OgogCWJndy5iZ3dfbm90aWZ5X3BpZCA9IE15UHJvY1BpZDsKIAliZ3cuYmd3X21haW5fYXJn ID0gSW50MzJHZXREYXR1bShzbG90KTsKIAorCWlmIChpc19zdWJ3b3JrZXIpCisJCW1lbWNweShi Z3cuYmd3X2V4dHJhLCAmc3Vid29ya2VyX2RzbSwgc2l6ZW9mKGRzbV9oYW5kbGUpKTsKKwogCWlm ICghUmVnaXN0ZXJEeW5hbWljQmFja2dyb3VuZFdvcmtlcigmYmd3LCAmYmd3X2hhbmRsZSkpCiAJ ewogCQkvKiBGYWlsZWQgdG8gc3RhcnQgd29ya2VyLCBzbyBjbGVhbiB1cCB0aGUgd29ya2VyIHNs b3QuICovCkBAIC00MjEsMTEgKzQ0OSwxMSBAQCByZXRyeToKIAkJCQkoZXJyY29kZShFUlJDT0RF X0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVERUQpLAogCQkJCSBlcnJtc2coIm91dCBvZiBiYWNr Z3JvdW5kIHdvcmtlciBzbG90cyIpLAogCQkJCSBlcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBp bmNyZWFzZSBtYXhfd29ya2VyX3Byb2Nlc3Nlcy4iKSkpOwotCQlyZXR1cm47CisJCXJldHVybiBm YWxzZTsKIAl9CiAKIAkvKiBOb3cgd2FpdCB1bnRpbCBpdCBhdHRhY2hlcy4gKi8KLQlXYWl0Rm9y UmVwbGljYXRpb25Xb3JrZXJBdHRhY2god29ya2VyLCBnZW5lcmF0aW9uLCBiZ3dfaGFuZGxlKTsK KwlyZXR1cm4gV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKHdvcmtlciwgZ2VuZXJhdGlv biwgYmd3X2hhbmRsZSk7CiB9CiAKIC8qCkBAIC00MzYsMTkgKzQ2NCw1MiBAQCB2b2lkCiBsb2dp Y2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQogewogCUxvZ2ljYWxSZXBX b3JrZXIgKndvcmtlcjsKLQl1aW50MTYJCWdlbmVyYXRpb247CiAKIAlMV0xvY2tBY3F1aXJlKExv Z2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwogCiAJd29ya2VyID0gbG9naWNhbHJlcF93 b3JrZXJfZmluZChzdWJpZCwgcmVsaWQsIGZhbHNlKTsKIAotCS8qIE5vIHdvcmtlciwgbm90aGlu ZyB0byBkby4gKi8KLQlpZiAoIXdvcmtlcikKKwlpZiAod29ya2VyKQogCXsKLQkJTFdMb2NrUmVs ZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0JCXJldHVybjsKKwkJQXNzZXJ0KCFpc0FwcGx5 QmdXb3JrZXIod29ya2VyKSk7CisJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwod29y a2VyKTsKIAl9CiAKKwlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKK30KKwor LyoKKyAqIFN0b3AgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGNvcnJlc3BvbmRpbmcg dG8gdGhlIGlucHV0IHNsb3QgbnVtYmVyLAorICogYW5kIHdhaXQgdW50aWwgaXQgZGV0YWNoZXMg ZnJvbSB0aGUgc2xvdC4KKyAqLwordm9pZAorbG9naWNhbHJlcF93b3JrZXJfc3RvcF9ieV9zbG90 KGludCBzbG90X25vLCB1aW50MTYgZ2VuZXJhdGlvbikKK3sKKwlMb2dpY2FsUmVwV29ya2VyICp3 b3JrZXIgPSAmTG9naWNhbFJlcEN0eC0+d29ya2Vyc1tzbG90X25vXTsKKworCUxXTG9ja0FjcXVp cmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CisKKwkvKiBSZXR1cm4gaWYgdGhl IGdlbmVyYXRpb24gZG9lc24ndCBtYXRjaCBvciB0aGUgd29ya2VyIGlzIG5vdCBhbGl2ZS4gKi8K KwlpZiAod29ya2VyLT5nZW5lcmF0aW9uICE9IGdlbmVyYXRpb24gfHwKKwkJd29ya2VyLT5wcm9j ID09IE5VTEwpCisJCXJldHVybjsKKworCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwo d29ya2VyKTsKKworCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOworfQorCisv KgorICogV29ya2hvcnNlIGZvciBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKCkgYW5kIGxvZ2ljYWxy ZXBfd29ya2VyX2RldGFjaCgpLiBTdG9wCisgKiB0aGUgd29ya2VyIGFuZCB3YWl0IGZvciBpdCB0 byBkaWUuCisgKi8KK3N0YXRpYyB2b2lkCitsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFs KExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcikKK3sKKwl1aW50MTYJCWdlbmVyYXRpb247CisKKwlB c3NlcnQoTFdMb2NrSGVsZEJ5TWUoTG9naWNhbFJlcFdvcmtlckxvY2spKTsKKwogCS8qCiAJICog UmVtZW1iZXIgd2hpY2ggZ2VuZXJhdGlvbiB3YXMgb3VyIHdvcmtlciBzbyB3ZSBjYW4gY2hlY2sg aWYgd2hhdCB3ZSBzZWUKIAkgKiBpcyBzdGlsbCB0aGUgc2FtZSBvbmUuCkBAIC00ODUsMTAgKzU0 Niw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAJCSAq IGRpZmZlcmVudCwgbWVhbmluZyB0aGF0IGEgZGlmZmVyZW50IHdvcmtlciBoYXMgdGFrZW4gdGhl IHNsb3QuCiAJCSAqLwogCQlpZiAoIXdvcmtlci0+aW5fdXNlIHx8IHdvcmtlci0+Z2VuZXJhdGlv biAhPSBnZW5lcmF0aW9uKQotCQl7Ci0JCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJM b2NrKTsKIAkJCXJldHVybjsKLQkJfQogCiAJCS8qIFdvcmtlciBoYXMgYXNzaWduZWQgcHJvYywg c28gaXQgaGFzIHN0YXJ0ZWQuICovCiAJCWlmICh3b3JrZXItPnByb2MpCkBAIC01MjIsOCArNTgw LDYgQEAgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKIAogCQlM V0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwogCX0KLQotCUxX TG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwogfQogCiAvKgpAQCAtNTk5LDYgKzY1 NSwyOSBAQCBsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2goaW50IHNsb3QpCiBzdGF0aWMgdm9pZAog bG9naWNhbHJlcF93b3JrZXJfZGV0YWNoKHZvaWQpCiB7CisJLyoKKwkgKiBUaGlzIGlzIHRoZSBt YWluIGFwcGx5IHdvcmtlcjsgc3RvcCBhbGwgdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2Vycwor CSAqIHByZXZpb3VzbHkgc3RhcnRlZCBmcm9tIGhlcmUuCisJICovCisJaWYgKCFpc0FwcGx5QmdX b3JrZXIoTXlMb2dpY2FsUmVwV29ya2VyKSkKKwl7CisJCUxpc3QJICAgKndvcmtlcnM7CisJCUxp c3RDZWxsICAgKmxjOworCisJCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExX X1NIQVJFRCk7CisKKwkJd29ya2VycyA9IGxvZ2ljYWxyZXBfd29ya2Vyc19maW5kKE15TG9naWNh bFJlcFdvcmtlci0+c3ViaWQsIHRydWUpOworCQlmb3JlYWNoKGxjLCB3b3JrZXJzKQorCQl7CisJ CQlMb2dpY2FsUmVwV29ya2VyICp3ID0gKExvZ2ljYWxSZXBXb3JrZXIgKikgbGZpcnN0KGxjKTsK KworCQkJaWYgKGlzQXBwbHlCZ1dvcmtlcih3KSkKKwkJCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9w X2ludGVybmFsKHcpOworCQl9CisKKwkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9j ayk7CisJfQorCiAJLyogQmxvY2sgY29uY3VycmVudCBhY2Nlc3MuICovCiAJTFdMb2NrQWNxdWly ZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfRVhDTFVTSVZFKTsKIApAQCAtNjIxLDYgKzcwMCw3 IEBAIGxvZ2ljYWxyZXBfd29ya2VyX2NsZWFudXAoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKQog CXdvcmtlci0+dXNlcmlkID0gSW52YWxpZE9pZDsKIAl3b3JrZXItPnN1YmlkID0gSW52YWxpZE9p ZDsKIAl3b3JrZXItPnJlbGlkID0gSW52YWxpZE9pZDsKKwl3b3JrZXItPmFwcGx5X2xlYWRlcl9w aWQgPSBJbnZhbGlkUGlkOwogfQogCiAvKgpAQCAtNjgwLDYgKzc2MCwzMyBAQCBsb2dpY2FscmVw X3N5bmNfd29ya2VyX2NvdW50KE9pZCBzdWJpZCkKIH0KIAogLyoKKyAqIENvdW50IHRoZSBudW1i ZXIgb2YgcmVnaXN0ZXJlZCAoYnV0IG5vdCBuZWNlc3NhcmlseSBydW5uaW5nKSBhcHBseQorICog YmFja2dyb3VuZCB3b3JrZXJzIGZvciBhIHN1YnNjcmlwdGlvbi4KKyAqLworaW50Citsb2dpY2Fs cmVwX2FwcGx5X2Jnd29ya2VyX2NvdW50KE9pZCBzdWJpZCkKK3sKKwlpbnQJCQlpOworCWludAkJ CXJlcyA9IDA7CisKKwlBc3NlcnQoTFdMb2NrSGVsZEJ5TWUoTG9naWNhbFJlcFdvcmtlckxvY2sp KTsKKworCS8qCisJICogU2NhbiBhbGwgYXR0YWNoZWQgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXJz LCBvbmx5IGNvdW50aW5nIHRob3NlIHdoaWNoCisJICogaGF2ZSB0aGUgZ2l2ZW4gc3Vic2NyaXB0 aW9uIGlkLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93 b3JrZXJzOyBpKyspCisJeworCQlMb2dpY2FsUmVwV29ya2VyICp3ID0gJkxvZ2ljYWxSZXBDdHgt PndvcmtlcnNbaV07CisKKwkJaWYgKHctPnN1YmlkID09IHN1YmlkICYmIGlzQXBwbHlCZ1dvcmtl cih3KSkKKwkJCXJlcysrOworCX0KKworCXJldHVybiByZXM7Cit9CisKKy8qCiAgKiBBcHBseUxh dW5jaGVyU2htZW1TaXplCiAgKgkJQ29tcHV0ZSBzcGFjZSBuZWVkZWQgZm9yIHJlcGxpY2F0aW9u IGxhdW5jaGVyIHNoYXJlZCBtZW1vcnkKICAqLwpAQCAtODY4LDcgKzk3NSw3IEBAIEFwcGx5TGF1 bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQkJCQl3YWl0X3RpbWUgPSB3YWxfcmV0cmlldmVf cmV0cnlfaW50ZXJ2YWw7CiAKIAkJCQkJbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKHN1Yi0+ZGJp ZCwgc3ViLT5vaWQsIHN1Yi0+bmFtZSwKLQkJCQkJCQkJCQkJIHN1Yi0+b3duZXIsIEludmFsaWRP aWQpOworCQkJCQkJCQkJCQkgc3ViLT5vd25lciwgSW52YWxpZE9pZCwgRFNNX0hBTkRMRV9JTlZB TElEKTsKIAkJCQl9CiAJCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvb3JpZ2luLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdp bi5jCmluZGV4IDllYjk3ZmEuLmE1ZjYyYTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9vcmlnaW4uYwpAQCAtMTA3NSwxMiArMTA3NSwyMSBAQCBSZXBsaWNhdGlvbk9yaWdpbkV4 aXRDbGVhbnVwKGludCBjb2RlLCBEYXR1bSBhcmcpCiAgKiBhcnJheSBkb2Vzbid0IGhhdmUgdG8g YmUgc2VhcmNoZWQgd2hlbiBjYWxsaW5nCiAgKiByZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZSgp LgogICoKLSAqIE9idmlvdXNseSBvbmx5IG9uZSBzdWNoIGNhY2hlZCBvcmlnaW4gY2FuIGV4aXN0 IHBlciBwcm9jZXNzIGFuZCB0aGUgY3VycmVudAorICogTm9ybWFsbHkgb25seSBvbmUgc3VjaCBj YWNoZWQgb3JpZ2luIGNhbiBleGlzdCBwZXIgcHJvY2VzcyBhbmQgdGhlIGN1cnJlbnQKICAqIGNh Y2hlZCB2YWx1ZSBjYW4gb25seSBiZSBzZXQgYWdhaW4gYWZ0ZXIgdGhlIHByZXZpb3VzIHZhbHVl IGlzIHRvcm4gZG93bgogICogd2l0aCByZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQoKS4KKyAqCisg KiBIb3dldmVyLCBpZiB0aGUgZnVuY3Rpb24gcGFyYW1ldGVyICdhcHBseV9sZWFkZXJfcGlkJyBp cyBub3QgMCwgd2UgYWxsb3cgdGhlCisgKiBwcm9jZXNzIHRvIHVzZSB0aGUgc2FtZSBzbG90IGFs cmVhZHkgYWNxdWlyZWQgYnkgYW5vdGhlciBwcm9jZXNzLiBJdCdzIHNhZmUKKyAqIGJlY2F1c2Ug MSkgVGhlIG9ubHkgY2FsbGVyIChhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMpIHdpbGwgbWFpbnRh aW4gdGhlCisgKiBjb21taXQgb3JkZXIgYnkgYWxsb3dpbmcgb25seSBvbmUgcHJvY2VzcyB0byBj b21taXQgYXQgYSB0aW1lLCBzbyBubyB0d28KKyAqIHdvcmtlcnMgd2lsbCBiZSBvcGVyYXRpbmcg b24gdGhlIHNhbWUgb3JpZ2luIGF0IHRoZSBzYW1lIHRpbWUgKHNlZSBjb21tZW50cworICogaW4g bG9naWNhbC93b3JrZXIuYykuIDIpIEV2ZW4gdGhvdWdoIHdlIHRyeSB0byBhZHZhbmNlIHRoZSBz ZXNzaW9uJ3Mgb3JpZ2luCisgKiBjb25jdXJyZW50bHksIGl0J3Mgc2FmZSB0byBkbyBzbyBhcyB3 ZSBjaGFuZ2UvYWR2YW5jZSB0aGUgc2Vzc2lvbl9vcmlnaW4KKyAqIExTTnMgdW5kZXIgcmVwbGlj YXRlX3N0YXRlIExXTG9jay4KICAqLwogdm9pZAotcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJl cE9yaWdpbklkIG5vZGUpCityZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9k ZSwgaW50IGFwcGx5X2xlYWRlcl9waWQpCiB7CiAJc3RhdGljIGJvb2wgcmVnaXN0ZXJlZF9jbGVh bnVwOwogCWludAkJCWk7CkBAIC0xMTIyLDcgKzExMzEsNyBAQCByZXBsb3JpZ2luX3Nlc3Npb25f c2V0dXAoUmVwT3JpZ2luSWQgbm9kZSkKIAkJaWYgKGN1cnN0YXRlLT5yb2lkZW50ICE9IG5vZGUp CiAJCQljb250aW51ZTsKIAotCQllbHNlIGlmIChjdXJzdGF0ZS0+YWNxdWlyZWRfYnkgIT0gMCkK KwkJZWxzZSBpZiAoY3Vyc3RhdGUtPmFjcXVpcmVkX2J5ICE9IDAgJiYgYXBwbHlfbGVhZGVyX3Bp ZCA9PSAwKQogCQl7CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX09C SkVDVF9JTl9VU0UpLApAQCAtMTE1Myw3ICsxMTYyLDExIEBAIHJlcGxvcmlnaW5fc2Vzc2lvbl9z ZXR1cChSZXBPcmlnaW5JZCBub2RlKQogCiAJQXNzZXJ0KHNlc3Npb25fcmVwbGljYXRpb25fc3Rh dGUtPnJvaWRlbnQgIT0gSW52YWxpZFJlcE9yaWdpbklkKTsKIAotCXNlc3Npb25fcmVwbGljYXRp b25fc3RhdGUtPmFjcXVpcmVkX2J5ID0gTXlQcm9jUGlkOworCWlmIChhcHBseV9sZWFkZXJfcGlk ID09IDApCisJCXNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVpcmVkX2J5ID0gTXlQcm9j UGlkOworCWVsc2UgaWYgKHNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVpcmVkX2J5ICE9 IGFwcGx5X2xlYWRlcl9waWQpCisJCSBlbG9nKEVSUk9SLCAiY291bGQgbm90IGZpbmQgcmVwbGlj YXRpb24gc3RhdGUgc2xvdCBmb3IgcmVwbGljYXRpb24iCisJCQkgICJvcmlnaW4gd2l0aCBPSUQg JXUgd2hpY2ggd2FzIGFjcXVpcmVkIGJ5ICVkIiwgbm9kZSwgYXBwbHlfbGVhZGVyX3BpZCk7CiAK IAlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uT3JpZ2luTG9jayk7CiAKQEAgLTEzMzcsNyArMTM1 MCw3IEBAIHBnX3JlcGxpY2F0aW9uX29yaWdpbl9zZXNzaW9uX3NldHVwKFBHX0ZVTkNUSU9OX0FS R1MpCiAKIAluYW1lID0gdGV4dF90b19jc3RyaW5nKCh0ZXh0ICopIERhdHVtR2V0UG9pbnRlcihQ R19HRVRBUkdfREFUVU0oMCkpKTsKIAlvcmlnaW4gPSByZXBsb3JpZ2luX2J5X25hbWUobmFtZSwg ZmFsc2UpOwotCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW4pOworCXJlcGxvcmlnaW5f c2Vzc2lvbl9zZXR1cChvcmlnaW4sIDApOwogCiAJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9 IG9yaWdpbjsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9w cm90by5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCmluZGV4IGZm ODUxM2UuLjQ3YmQ4MTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcHJvdG8uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMK QEAgLTExNjMsMzEgKzExNjMsNTYgQEAgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9jb21taXQoU3Ry aW5nSW5mbyBpbiwgTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKQogLyoKICAqIFdy aXRlIFNUUkVBTSBBQk9SVCB0byB0aGUgb3V0cHV0IHN0cmVhbS4gTm90ZSB0aGF0IHhpZCBhbmQg c3VieGlkIHdpbGwgYmUKICAqIHNhbWUgZm9yIHRoZSB0b3AtbGV2ZWwgdHJhbnNhY3Rpb24gYWJv cnQuCisgKgorICogSWYgd3JpdGVfYWJvcnRfbHNuIGlzIHRydWUsIHNlbmQgdGhlIGFib3J0X2xz biBhbmQgYWJvcnRfdGltZSBmaWVsZHMsCisgKiBvdGhlcndpc2UgZG9uJ3QuCiAgKi8KIHZvaWQK IGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlv bklkIHhpZCwKLQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkKQorCQkJCQkJCSAgUmVvcmRl ckJ1ZmZlclRYTiAqdHhuLCBYTG9nUmVjUHRyIGFib3J0X2xzbiwKKwkJCQkJCQkgIGJvb2wgd3Jp dGVfYWJvcnRfbHNuKQogewogCXBxX3NlbmRieXRlKG91dCwgTE9HSUNBTF9SRVBfTVNHX1NUUkVB TV9BQk9SVCk7CiAKLQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSAmJiBUcmFuc2Fj dGlvbklkSXNWYWxpZChzdWJ4aWQpKTsKKwlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlk KSAmJiBUcmFuc2FjdGlvbklkSXNWYWxpZCh0eG4tPnhpZCkpOwogCiAJLyogdHJhbnNhY3Rpb24g SUQgKi8KIAlwcV9zZW5kaW50MzIob3V0LCB4aWQpOwotCXBxX3NlbmRpbnQzMihvdXQsIHN1Ynhp ZCk7CisJcHFfc2VuZGludDMyKG91dCwgdHhuLT54aWQpOworCisJaWYgKHdyaXRlX2Fib3J0X2xz bikKKwl7CisJCXBxX3NlbmRpbnQ2NChvdXQsIGFib3J0X2xzbik7CisJCXBxX3NlbmRpbnQ2NChv dXQsIHR4bi0+eGFjdF90aW1lLmFib3J0X3RpbWUpOworCX0KIH0KIAogLyoKICAqIFJlYWQgU1RS RUFNIEFCT1JUIGZyb20gdGhlIG91dHB1dCBzdHJlYW0uCisgKgorICogSWYgcmVhZF9hYm9ydF9s c24gaXMgdHJ1ZSwgdHJ5IHRvIHJlYWQgdGhlIGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZSBmaWVs ZHMsCisgKiBvdGhlcndpc2UgZG9uJ3QuCiAgKi8KIHZvaWQKLWxvZ2ljYWxyZXBfcmVhZF9zdHJl YW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwgVHJhbnNhY3Rpb25JZCAqeGlkLAotCQkJCQkJCSBUcmFu c2FjdGlvbklkICpzdWJ4aWQpCitsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0lu Zm8gaW4sCisJCQkJCQkJIExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEsCisJ CQkJCQkJIGJvb2wgcmVhZF9hYm9ydF9sc24pCiB7Ci0JQXNzZXJ0KHhpZCAmJiBzdWJ4aWQpOwor CUFzc2VydChhYm9ydF9kYXRhKTsKIAotCSp4aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOwotCSpz dWJ4aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOworCWFib3J0X2RhdGEtPnhpZCA9IHBxX2dldG1z Z2ludChpbiwgNCk7CisJYWJvcnRfZGF0YS0+c3VieGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsK KworCWlmIChyZWFkX2Fib3J0X2xzbikKKwl7CisJCWFib3J0X2RhdGEtPmFib3J0X2xzbiA9IHBx X2dldG1zZ2ludDY0KGluKTsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfdGltZSA9IHBxX2dldG1zZ2lu dDY0KGluKTsKKwl9CisJZWxzZQorCXsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfbHNuID0gSW52YWxp ZFhMb2dSZWNQdHI7CisJCWFib3J0X2RhdGEtPmFib3J0X3RpbWUgPSAwOworCX0KIH0KIAogLyoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZl ci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKaW5k ZXggMWMyMWExZC4uYmNhN2RhMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9yZW9yZGVyYnVmZmVyLmMKQEAgLTI4MzcsNyArMjgzNyw4IEBAIFJlb3JkZXJCdWZmZXJG aW5pc2hQcmVwYXJlZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAgKiBk aXNrLgogICovCiB2b2lkCi1SZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRy YW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKK1Jlb3JkZXJCdWZmZXJBYm9ydChSZW9y ZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAorCQkJCSAg IFRpbWVzdGFtcFR6IGFib3J0X3RpbWUpCiB7CiAJUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogCkBA IC0yODQ4LDYgKzI4NDksOCBAQCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIs IFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAlpZiAodHhuID09IE5VTEwpCiAJ CXJldHVybjsKIAorCXR4bi0+eGFjdF90aW1lLmFib3J0X3RpbWUgPSBhYm9ydF90aW1lOworCiAJ LyogRm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBub3RpZnkgdGhlIHJlbW90ZSBub2RlIGFib3V0 IHRoZSBhYm9ydC4gKi8KIAlpZiAocmJ0eG5faXNfc3RyZWFtZWQodHhuKSkKIAl7CkBAIC0yOTIy LDcgKzI5MjUsOCBAQCBSZW9yZGVyQnVmZmVyQWJvcnRPbGQoUmVvcmRlckJ1ZmZlciAqcmIsIFRy YW5zYWN0aW9uSWQgb2xkZXN0UnVubmluZ1hpZCkKICAqIHRvIHRoaXMgeGlkIG1pZ2h0IHJlLWNy ZWF0ZSB0aGUgdHJhbnNhY3Rpb24gaW5jb21wbGV0ZWx5LgogICovCiB2b2lkCi1SZW9yZGVyQnVm ZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0 ciBsc24pCitSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlv bklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJCVRpbWVzdGFtcFR6IGFib3J0X3RpbWUpCiB7 CiAJUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogCkBAIC0yOTMzLDYgKzI5MzcsOCBAQCBSZW9yZGVy QnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1Jl Y1B0ciBsc24pCiAJaWYgKHR4biA9PSBOVUxMKQogCQlyZXR1cm47CiAKKwl0eG4tPnhhY3RfdGlt ZS5hYm9ydF90aW1lID0gYWJvcnRfdGltZTsKKwogCS8qIEZvciBzdHJlYW1lZCB0cmFuc2FjdGlv bnMgbm90aWZ5IHRoZSByZW1vdGUgbm9kZSBhYm91dCB0aGUgYWJvcnQuICovCiAJaWYgKHJidHhu X2lzX3N0cmVhbWVkKHR4bikpCiAJCXJiLT5zdHJlYW1fYWJvcnQocmIsIHR4biwgbHNuKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IGQzN2Q4YTAu LjY4ODhlZWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFi bGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMu YwpAQCAtNTY4LDcgKzU2OCw4IEBAIHByb2Nlc3Nfc3luY2luZ190YWJsZXNfZm9yX2FwcGx5KFhM b2dSZWNQdHIgY3VycmVudF9sc24pCiAJCQkJCQkJCQkJCQkgTXlTdWJzY3JpcHRpb24tPm9pZCwK IAkJCQkJCQkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+bmFtZSwKIAkJCQkJCQkJCQkJCSBNeUxvZ2lj YWxSZXBXb3JrZXItPnVzZXJpZCwKLQkJCQkJCQkJCQkJCSByc3RhdGUtPnJlbGlkKTsKKwkJCQkJ CQkJCQkJCSByc3RhdGUtPnJlbGlkLAorCQkJCQkJCQkJCQkJIERTTV9IQU5ETEVfSU5WQUxJRCk7 CiAJCQkJCQloZW50cnktPmxhc3Rfc3RhcnRfdGltZSA9IG5vdzsKIAkJCQkJfQogCQkJCX0KQEAg LTU4OSw2ICs1OTAsOSBAQCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9hcHBseShYTG9nUmVj UHRyIGN1cnJlbnRfbHNuKQogdm9pZAogcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRy IGN1cnJlbnRfbHNuKQogeworCWlmIChhbV9hcHBseV9iZ3dvcmtlcigpKQorCQlyZXR1cm47CisK IAlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigpKQogCQlwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zv cl9zeW5jKGN1cnJlbnRfbHNuKTsKIAllbHNlCkBAIC0xMjY2LDcgKzEyNzAsNyBAQCBMb2dpY2Fs UmVwU3luY1RhYmxlU3RhcnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCQkgKiB0aW1l IHRoaXMgdGFibGVzeW5jIHdhcyBsYXVuY2hlZC4KIAkJICovCiAJCW9yaWdpbmlkID0gcmVwbG9y aWdpbl9ieV9uYW1lKG9yaWdpbm5hbWUsIGZhbHNlKTsKLQkJcmVwbG9yaWdpbl9zZXNzaW9uX3Nl dHVwKG9yaWdpbmlkKTsKKwkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCAwKTsK IAkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOwogCQkqb3JpZ2luX3N0YXJ0 cG9zID0gcmVwbG9yaWdpbl9zZXNzaW9uX2dldF9wcm9ncmVzcyhmYWxzZSk7CiAKQEAgLTEzNzcs NyArMTM4MSw3IEBAIExvZ2ljYWxSZXBTeW5jVGFibGVTdGFydChYTG9nUmVjUHRyICpvcmlnaW5f c3RhcnRwb3MpCiAJCQkJCQkgICB0cnVlIC8qIGdvIGJhY2t3YXJkICovICwgdHJ1ZSAvKiBXQUwg bG9nICovICk7CiAJCVVubG9ja1JlbGF0aW9uT2lkKFJlcGxpY2F0aW9uT3JpZ2luUmVsYXRpb25J ZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKLQkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdp bmlkKTsKKwkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCAwKTsKIAkJcmVwbG9y aWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOwogCX0KIAllbHNlCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCA1ZjhjNTQxLi5hMWE2MGIwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTIyLDggKzIyLDI4IEBACiAg KiBTVFJFQU1FRCBUUkFOU0FDVElPTlMKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogU3Ry ZWFtZWQgdHJhbnNhY3Rpb25zIChsYXJnZSB0cmFuc2FjdGlvbnMgZXhjZWVkaW5nIGEgbWVtb3J5 IGxpbWl0IG9uIHRoZQotICogdXBzdHJlYW0pIGFyZSBub3QgYXBwbGllZCBpbW1lZGlhdGVseSwg YnV0IGluc3RlYWQsIHRoZSBkYXRhIGlzIHdyaXR0ZW4KLSAqIHRvIHRlbXBvcmFyeSBmaWxlcyBh bmQgdGhlbiBhcHBsaWVkIGF0IG9uY2Ugd2hlbiB0aGUgZmluYWwgY29tbWl0IGFycml2ZXMuCisg KiB1cHN0cmVhbSkgYXJlIGFwcGxpZWQgdXNpbmcgb25lIG9mIHR3byBhcHByb2FjaGVzOgorICoK KyAqIDEpIFNlcGFyYXRlIGJhY2tncm91bmQgd29ya2VycworICoKKyAqIElmIHN0cmVhbWluZyA9 IHBhcmFsbGVsLCB3ZSBhc3NpZ24gYSBuZXcgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgKGlmCisg KiBhdmFpbGFibGUpIGFzIHNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBzdHJlYW0gaXMgcmVjZWl2 ZWQuIFRoZSBtYWluIGFwcGx5CisgKiB3b3JrZXIgd2lsbCBzZW5kIGNoYW5nZXMgdG8gdGhpcyBu ZXcgd29ya2VyIHZpYSBzaGFyZWQgbWVtb3J5LiBXZSBrZWVwIHRoaXMKKyAqIHdvcmtlciBhc3Np Z25lZCB0aWxsIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2Fp dCBmb3IKKyAqIHRoZSB3b3JrZXIgdG8gZmluaXNoIGF0IGNvbW1pdC4gVGhpcyBwcmVzZXJ2ZXMg Y29tbWl0IG9yZGVyaW5nIGFuZCBhdm9pZHMKKyAqIGZpbGUgSS9PIGluIG1vc3QgY2FzZXMuIFdl IHN0aWxsIG5lZWQgdG8gc3BpbGwgdG8gYSBmaWxlIGlmIHRoZXJlIGlzIG5vCisgKiB3b3JrZXIg YXZhaWxhYmxlLiBJdCBpcyBpbXBvcnRhbnQgdG8gbWFpbnRhaW4gY29tbWl0IG9yZGVyIHRvIGF2 b2lkIGZhaWx1cmVzCisgKiBkdWUgdG8gKGEpIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcywgc2F5 IGlmIHdlIGluc2VydCBhIHJvdyBpbiB0aGUgZmlyc3QKKyAqIHRyYW5zYWN0aW9uIGFuZCB1cGRh dGUgaXQgaW4gdGhlIHNlY29uZCB0cmFuc2FjdGlvbiB0aGVuIGFsbG93aW5nIHRvIGFwcGx5Cisg KiBib3RoIGluIHBhcmFsbGVsIGNhbiBsZWFkIHRvIGZhaWx1cmUgaW4gdGhlIHVwZGF0ZS4gKGIp IGRlYWRsb2NrcywgYWxsb3dpbmcKKyAqIHRyYW5zYWN0aW9ucyB0aGF0IHVwZGF0ZSB0aGUgc2Ft ZSBzZXQgb2Ygcm93cy90YWJsZXMgaW4gb3Bwb3NpdGUgb3JkZXIgdG8gYmUKKyAqIGFwcGxpZWQg aW4gcGFyYWxsZWwgY2FuIGxlYWQgdG8gZGVhZGxvY2tzLgorICoKKyAqIDIpIFdyaXRlIHRvIHRl bXBvcmFyeSBmaWxlcyBhbmQgYXBwbHkgd2hlbiB0aGUgZmluYWwgY29tbWl0IGFycml2ZXMKKyAq CisgKiBJZiBubyB3b3JrZXIgaXMgYXZhaWxhYmxlIHRvIGhhbmRsZSB0aGUgc3RyZWFtZWQgdHJh bnNhY3Rpb24sIHRoZSBkYXRhIGlzCisgKiB3cml0dGVuIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQg dGhlbiBhcHBsaWVkIGF0IG9uY2Ugd2hlbiB0aGUgZmluYWwgY29tbWl0CisgKiBhcnJpdmVzLgog ICoKICAqIFVubGlrZSB0aGUgcmVndWxhciAobm9uLXN0cmVhbWVkKSBjYXNlLCBoYW5kbGluZyBz dHJlYW1lZCB0cmFuc2FjdGlvbnMgaGFzCiAgKiB0byBoYW5kbGUgYWJvcnRzIG9mIGJvdGggdGhl IHRvcGxldmVsIHRyYW5zYWN0aW9uIGFuZCBzdWJ0cmFuc2FjdGlvbnMuIFRoaXMKQEAgLTIxOSwy MCArMjM5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwbHlFeGVjdXRpb25EYXRhCiAJUGFydGl0aW9u VHVwbGVSb3V0aW5nICpwcm91dGU7CS8qIHBhcnRpdGlvbiByb3V0aW5nIGluZm8gKi8KIH0gQXBw bHlFeGVjdXRpb25EYXRhOwogCi0vKiBTdHJ1Y3QgZm9yIHNhdmluZyBhbmQgcmVzdG9yaW5nIGFw cGx5IGVycmNvbnRleHQgaW5mb3JtYXRpb24gKi8KLXR5cGVkZWYgc3RydWN0IEFwcGx5RXJyb3JD YWxsYmFja0FyZwotewotCUxvZ2ljYWxSZXBNc2dUeXBlIGNvbW1hbmQ7CS8qIDAgaWYgaW52YWxp ZCAqLwotCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsOwotCi0JLyogUmVtb3RlIG5vZGUgaW5m b3JtYXRpb24gKi8KLQlpbnQJCQlyZW1vdGVfYXR0bnVtOwkvKiAtMSBpZiBpbnZhbGlkICovCi0J VHJhbnNhY3Rpb25JZCByZW1vdGVfeGlkOwotCVhMb2dSZWNQdHIJZmluaXNoX2xzbjsKLQljaGFy CSAgICpvcmlnaW5fbmFtZTsKLX0gQXBwbHlFcnJvckNhbGxiYWNrQXJnOwotCi1zdGF0aWMgQXBw bHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9CisvKiBlcnJjb250 ZXh0IHRyYWNrZXIgKi8KK0FwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFj a19hcmcgPQogewogCS5jb21tYW5kID0gMCwKIAkucmVsID0gTlVMTCwKQEAgLTI0Miw3ICsyNTAs OSBAQCBzdGF0aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2Fy ZyA9CiAJLm9yaWdpbl9uYW1lID0gTlVMTCwKIH07CiAKLXN0YXRpYyBNZW1vcnlDb250ZXh0IEFw cGx5TWVzc2FnZUNvbnRleHQgPSBOVUxMOworRXJyb3JDb250ZXh0Q2FsbGJhY2sJKmFwcGx5X2Vy cm9yX2NvbnRleHRfc3RhY2sgPSBOVUxMOworCitNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNv bnRleHQgPSBOVUxMOwogTWVtb3J5Q29udGV4dCBBcHBseUNvbnRleHQgPSBOVUxMOwogCiAvKiBw ZXIgc3RyZWFtIGNvbnRleHQgZm9yIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgKi8KQEAgLTI1MSwy NyArMjYxLDM1IEBAIHN0YXRpYyBNZW1vcnlDb250ZXh0IExvZ2ljYWxTdHJlYW1pbmdDb250ZXh0 ID0gTlVMTDsKIFdhbFJlY2VpdmVyQ29ubiAqTG9nUmVwV29ya2VyV2FsUmN2Q29ubiA9IE5VTEw7 CiAKIFN1YnNjcmlwdGlvbiAqTXlTdWJzY3JpcHRpb24gPSBOVUxMOwotc3RhdGljIGJvb2wgTXlT dWJzY3JpcHRpb25WYWxpZCA9IGZhbHNlOworYm9vbCBNeVN1YnNjcmlwdGlvblZhbGlkID0gZmFs c2U7CiAKIGJvb2wJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogc3RhdGljIFhMb2dS ZWNQdHIgcmVtb3RlX2ZpbmFsX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCiAvKiBmaWVsZHMg dmFsaWQgb25seSB3aGVuIHByb2Nlc3Npbmcgc3RyZWFtZWQgdHJhbnNhY3Rpb24gKi8KLXN0YXRp YyBib29sIGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7Citib29sIGluX3N0cmVhbWVk X3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKLXN0YXRpYyBUcmFuc2FjdGlvbklkIHN0cmVhbV94aWQg PSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKK1RyYW5zYWN0aW9uSWQgc3RyZWFtX3hpZCA9IEludmFs aWRUcmFuc2FjdGlvbklkOworCisvKgorICogVGhlIG51bWJlciBvZiBjaGFuZ2VzIHNlbnQgdG8g YXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzIGR1cmluZyBvbmUgc3RyZWFtaW5nCisgKiBibG9jay4K KyAqLworc3RhdGljIHVpbnQzMiBuY2hhbmdlcyA9IDA7CiAKIC8qCiAgKiBXZSBlbmFibGUgc2tp cHBpbmcgYWxsIGRhdGEgbW9kaWZpY2F0aW9uIGNoYW5nZXMgKElOU0VSVCwgVVBEQVRFLCBldGMu KSBmb3IKICAqIHRoZSBzdWJzY3JpcHRpb24gaWYgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbidzIGZp bmlzaCBMU04gbWF0Y2hlcyB0aGUgc3Vic2tpcGxzbi4KICAqIE9uY2Ugd2Ugc3RhcnQgc2tpcHBp bmcgY2hhbmdlcywgd2UgZG9uJ3Qgc3RvcCBpdCB1bnRpbCB3ZSBza2lwIGFsbCBjaGFuZ2VzIG9m CiAgKiB0aGUgdHJhbnNhY3Rpb24gZXZlbiBpZiBwZ19zdWJzY3JpcHRpb24gaXMgdXBkYXRlZCBh bmQgTXlTdWJzY3JpcHRpb24tPnNraXBsc24KLSAqIGdldHMgY2hhbmdlZCBvciByZXNldCBkdXJp bmcgdGhhdC4gQWxzbywgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGNhc2VzLCB3ZQotICogZG9u J3Qgc2tpcCByZWNlaXZpbmcgYW5kIHNwb29saW5nIHRoZSBjaGFuZ2VzIHNpbmNlIHdlIGRlY2lk ZSB3aGV0aGVyIG9yIG5vdAorICogZ2V0cyBjaGFuZ2VkIG9yIHJlc2V0IGR1cmluZyB0aGF0LiBB bHNvLCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gY2FzZXMgKHN0cmVhbWluZyA9IG9uKSwKKyAq IHdlIGRvbid0IHNraXAgcmVjZWl2aW5nIGFuZCBzcG9vbGluZyB0aGUgY2hhbmdlcyBzaW5jZSB3 ZSBkZWNpZGUgd2hldGhlciBvciBub3QKICAqIHRvIHNraXAgYXBwbHlpbmcgdGhlIGNoYW5nZXMg d2hlbiBzdGFydGluZyB0byBhcHBseSBjaGFuZ2VzLiBUaGUgc3Vic2tpcGxzbiBpcwogICogY2xl YXJlZCBhZnRlciBzdWNjZXNzZnVsbHkgc2tpcHBpbmcgdGhlIHRyYW5zYWN0aW9uIG9yIGFwcGx5 aW5nIG5vbi1lbXB0eQogICogdHJhbnNhY3Rpb24uIFRoZSBsYXR0ZXIgcHJldmVudHMgdGhlIG1p c3Rha2VubHkgc3BlY2lmaWVkIHN1YnNraXBsc24gZnJvbQotICogYmVpbmcgbGVmdC4KKyAqIGJl aW5nIGxlZnQuIE5vdGUgdGhhdCB3ZSBjYW5ub3Qgc2tpcCB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0 aW9ucyB3aGVuIHVzaW5nCisgKiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMgYmVjYXVzZSB3ZSBj YW5ub3QgZ2V0IHRoZSBmaW5pc2ggTFNOIGJlZm9yZQorICogYXBwbHlpbmcgdGhlIGNoYW5nZXMu CiAgKi8KIHN0YXRpYyBYTG9nUmVjUHRyIHNraXBfeGFjdF9maW5pc2hfbHNuID0gSW52YWxpZFhM b2dSZWNQdHI7CiAjZGVmaW5lIGlzX3NraXBwaW5nX2NoYW5nZXMoKSAodW5saWtlbHkoIVhMb2dS ZWNQdHJJc0ludmFsaWQoc2tpcF94YWN0X2ZpbmlzaF9sc24pKSkKQEAgLTMyNCw5ICszNDIsNiBA QCBzdGF0aWMgdm9pZCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpOwogCiBzdGF0aWMg dm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKTsKIAotLyogcHJvdG90eXBlIG5l ZWRlZCBiZWNhdXNlIG9mIHN0cmVhbV9jb21taXQgKi8KLXN0YXRpYyB2b2lkIGFwcGx5X2Rpc3Bh dGNoKFN0cmluZ0luZm8gcyk7Ci0KIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9jb21taXRfaW50 ZXJuYWwoTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKTsKIHN0YXRpYyB2b2lkIGFw cGx5X2hhbmRsZV9pbnNlcnRfaW50ZXJuYWwoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKIAkJ CQkJCQkJCQkgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKQEAgLTM1OSw3ICszNzQsNiBAQCBzdGF0 aWMgdm9pZCBzdG9wX3NraXBwaW5nX2NoYW5nZXModm9pZCk7CiBzdGF0aWMgdm9pZCBjbGVhcl9z dWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKTsKIAogLyogRnVuY3Rp b25zIGZvciBhcHBseSBlcnJvciBjYWxsYmFjayAqLwotc3RhdGljIHZvaWQgYXBwbHlfZXJyb3Jf Y2FsbGJhY2sodm9pZCAqYXJnKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfYXBwbHlfZXJyb3Jf Y29udGV4dF94YWN0KFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CiBzdGF0aWMg aW5saW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKHZvaWQpOwogCkBAIC0z NzUsMTIgKzM4OSwzNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29u dGV4dF9pbmZvKHZvaWQpOwogICogcmVjb3JkICsgMSAoaWUgc3RhcnQgb2YgbmV4dCByZWNvcmQp IGFuZCBuZXh0IHJlY29yZCBjYW4gYmUgQ09NTUlUIG9mCiAgKiB0cmFuc2FjdGlvbiB3ZSBhcmUg bm93IHByb2Nlc3NpbmcgKHdoaWNoIGlzIHdoYXQgd2Ugc2V0IHJlbW90ZV9maW5hbF9sc24KICAq IHRvIGluIGFwcGx5X2hhbmRsZV9iZWdpbikuCisgKgorICogTm90ZSB0aGF0IGZvciBzdHJlYW1p bmcgdHJhbnNhY3Rpb25zIHRoYXQgYXJlIGJlaW5nIGFwcGxpZWQgaW4gYXBwbHkKKyAqIGJhY2tn cm91bmQgd29ya2VyLCB3ZSBkaXNhbGxvdyBhcHBseWluZyBjaGFuZ2VzIG9uIGEgdGFibGUgdGhh dCBpcyBub3QgaW4KKyAqIHRoZSBSRUFEWSBzdGF0ZSwgYmVjYXVzZSB3ZSBjYW5ub3QgZGVjaWRl IHdoZXRoZXIgdG8gYXBwbHkgdGhlIGNoYW5nZSBhcyB3ZQorICogd29uJ3Qga25vdyByZW1vdGVf ZmluYWxfbHNuIGJ5IHRoYXQgdGltZS4KKyAqCisgKiBXZSBhbHJlYWR5IGNoZWNrZWQgdGhpcyBp biBhcHBseV9iZ3dvcmtlcl9jYW5fc3RhcnQoKSBiZWZvcmUgYXNzaWduaW5nIHRoZQorICogc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uIHRvIHRoZSBiYWNrZ3JvdW5kIHdvcmtlciwgYnV0IGl0IGFsc28g bmVlZHMgdG8gYmUKKyAqIGNoZWNrZWQgaGVyZSBiZWNhdXNlIGlmIHRoZSB1c2VyIGV4ZWN1dGVz IEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSAorICogUFVCTElDQVRJT04gaW4gcGFyYWxs ZWwsIHRoZSBuZXcgdGFibGUgY2FuIGJlIGFkZGVkIHRvIHBnX3N1YnNjcmlwdGlvbl9yZWwKKyAq IGluIHBhcmFsbGVsIHdoaWxlIGFwcGx5aW5nIHRoaXMgdHJhbnNhY3Rpb24uCiAgKi8KIHN0YXRp YyBib29sCiBzaG91bGRfYXBwbHlfY2hhbmdlc19mb3JfcmVsKExvZ2ljYWxSZXBSZWxNYXBFbnRy eSAqcmVsKQogewogCWlmIChhbV90YWJsZXN5bmNfd29ya2VyKCkpCiAJCXJldHVybiBNeUxvZ2lj YWxSZXBXb3JrZXItPnJlbGlkID09IHJlbC0+bG9jYWxyZWxvaWQ7CisJZWxzZSBpZiAoYW1fYXBw bHlfYmd3b3JrZXIoKSkKKwl7CisJCWlmIChyZWwtPnN0YXRlICE9IFNVQlJFTF9TVEFURV9SRUFE WSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24g YXBwbHkgd29ya2VycyBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHJlc3RhcnQiLAorCQkJ CQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSwKKwkJCQkJIGVycmRldGFpbCgiQ2Fubm90IGhhbmRs ZSBzdHJlYW1lZCByZXBsaWNhdGlvbiB0cmFuc2FjdGlvbiBieSBhcHBseSAiCisJCQkJCQkJICAg ImJhY2tncm91bmQgd29ya2VycyB1bnRpbCBhbGwgdGFibGVzIGFyZSBzeW5jaHJvbml6ZWQiKSkp OworCisJCXJldHVybiB0cnVlOworCX0KIAllbHNlCiAJCXJldHVybiAocmVsLT5zdGF0ZSA9PSBT VUJSRUxfU1RBVEVfUkVBRFkgfHwKIAkJCQkocmVsLT5zdGF0ZSA9PSBTVUJSRUxfU1RBVEVfU1lO Q0RPTkUgJiYKQEAgLTQyNiw0MyArNDYyLDkzIEBAIGVuZF9yZXBsaWNhdGlvbl9zdGVwKHZvaWQp CiB9CiAKIC8qCi0gKiBIYW5kbGUgc3RyZWFtZWQgdHJhbnNhY3Rpb25zLgorICogSGFuZGxlIHN0 cmVhbWVkIHRyYW5zYWN0aW9ucyBmb3IgYm90aCB0aGUgbWFpbiBhcHBseSB3b3JrZXIgYW5kIHRo ZSBhcHBseQorICogYmFja2dyb3VuZCB3b3JrZXJzLgorICoKKyAqIEluIHN0cmVhbWluZyBjYXNl IChyZWNlaXZpbmcgYSBibG9jayBvZiBzdHJlYW1lZCB0cmFuc2FjdGlvbiksIGZvcgorICogU1VC U1RSRUFNX09OIG1vZGUsIHNpbXBseSByZWRpcmVjdCBpdCB0byBhIGZpbGUgZm9yIHRoZSBwcm9w ZXIgdG9wbGV2ZWwKKyAqIHRyYW5zYWN0aW9uLCBhbmQgZm9yIFNVQlNUUkVBTV9QQVJBTExFTCBt b2RlLCBzZW5kIHRoZSBjaGFuZ2VzIHRvIGFwcGx5CisgKiBiYWNrZ3JvdW5kIHdvcmtlcnMgKExP R0lDQUxfUkVQX01TR19SRUxBVElPTiBvciBMT0dJQ0FMX1JFUF9NU0dfVFlQRSBjaGFuZ2VzCisg KiB3aWxsIGJlIGFwcGxpZWQgYnkgYm90aCBtYWluIGFuZCBhcHBseSBiYWNrZ3JvdW5kIHdvcmtl cnMpLgogICoKLSAqIElmIGluIHN0cmVhbWluZyBtb2RlIChyZWNlaXZpbmcgYSBibG9jayBvZiBz dHJlYW1lZCB0cmFuc2FjdGlvbiksIHdlCi0gKiBzaW1wbHkgcmVkaXJlY3QgaXQgdG8gYSBmaWxl IGZvciB0aGUgcHJvcGVyIHRvcGxldmVsIHRyYW5zYWN0aW9uLgorICogRm9yIG5vbi1zdHJlYW1l ZCB0cmFuc2FjdGlvbnMsIHJldHVybnMgZmFsc2U7CisgKiBGb3Igc3RyZWFtZWQgdHJhbnNhY3Rp b25zLCByZXR1cm5zIHRydWUgaWYgaW4gbWFpbiBhcHBseSB3b3JrZXIsIGZhbHNlCisgKiBvdGhl cndpc2UuCiAgKgotICogUmV0dXJucyB0cnVlIGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMsIGZh bHNlIG90aGVyd2lzZSAocmVndWxhciBtb2RlKS4KKyAqIEV4Y2VwdGlvbjogV2hlbiB0aGUgbWFp biBhcHBseSB3b3JrZXIgaXMgYXBwbHlpbmcgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBpbgorICog cGFyYWxsZWwgbW9kZSAoZS5nLiB3aGVuIGFkZHJlc3NpbmcgTE9HSUNBTF9SRVBfTVNHX1JFTEFU SU9OIG9yCisgKiBMT0dJQ0FMX1JFUF9NU0dfVFlQRSBjaGFuZ2VzKSwgdGhlbiByZXR1cm4gZmFs c2UuCiAgKi8KIHN0YXRpYyBib29sCiBoYW5kbGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oTG9naWNh bFJlcE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJbmZvIHMpCiB7Ci0JVHJhbnNhY3Rpb25JZCB4aWQ7 CisJVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCUFw cGx5Qmd3b3JrZXJJbmZvICp3aW5mbzsKIAogCS8qIG5vdCBpbiBzdHJlYW1pbmcgbW9kZSAqLwot CWlmICghaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCisJaWYgKCFpbl9zdHJlYW1lZF90cmFuc2Fj dGlvbiAmJgorCQlzdHJlYW1fYXBwbHlfd29ya2VyID09IE5VTEwgJiYgIWFtX2FwcGx5X2Jnd29y a2VyKCkpCiAJCXJldHVybiBmYWxzZTsKIAotCUFzc2VydChzdHJlYW1fZmQgIT0gTlVMTCk7CiAJ QXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0cmVhbV94aWQpKTsKIAogCS8qCiAJICogV2Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgWElEIG9mIHRoZSBzdWJ4YWN0IGFzIHRoZSBmaXJzdCBwYXJ0 IG9mIHRoZQogCSAqIG1lc3NhZ2UsIHNvIGV4dHJhY3QgaXQuCiAJICovCi0JeGlkID0gcHFfZ2V0 bXNnaW50KHMsIDQpOworCWN1cnJlbnRfeGlkID0gcHFfZ2V0bXNnaW50KHMsIDQpOwogCi0JaWYg KCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKQorCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQo Y3VycmVudF94aWQpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJP VE9DT0xfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJpbnZhbGlkIHRyYW5zYWN0 aW9uIElEIGluIHN0cmVhbWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0aW9uIikpKTsKIAotCS8qIEFk ZCB0aGUgbmV3IHN1YnhhY3QgdG8gdGhlIGFycmF5ICh1bmxlc3MgYWxyZWFkeSB0aGVyZSkuICov Ci0Jc3VieGFjdF9pbmZvX2FkZCh4aWQpOworCWlmIChhbV9hcHBseV9iZ3dvcmtlcigpKQorCXsK KwkJLyogRGVmaW5lIGEgc2F2ZXBvaW50IGZvciBhIHN1YnhhY3QgaWYgbmVlZGVkLiAqLworCQlh cHBseV9iZ3dvcmtlcl9zdWJ4YWN0X2luZm9fYWRkKGN1cnJlbnRfeGlkKTsKKworCQlyZXR1cm4g ZmFsc2U7CisJfQorCisJLyoKKwkgKiBDaGVjayBpZiB3ZSBhcmUgcHJvY2Vzc2luZyB0aGlzIHRy YW5zYWN0aW9uIHVzaW5nIGFuIGFwcGx5CisJICogYmFja2dyb3VuZCB3b3JrZXIgYW5kIGlmIHNv LCBzZW5kIHRoZSBjaGFuZ2VzIHRvIHRoYXQgd29ya2VyLgorCSAqLworCWVsc2UgaWYgKCh3aW5m byA9IGFwcGx5X2Jnd29ya2VyX2ZpbmQoc3RyZWFtX3hpZCkpKQorCXsKKwkJYXBwbHlfYmd3b3Jr ZXJfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOworCQluY2hhbmdlcyArPSAxOwor CisJCS8qCisJCSAqIFhYWCBUaGUgcHVibGlzaGVyIHNpZGUgZG9lc24ndCBhbHdheXMgc2VuZCBy ZWxhdGlvbi90eXBlIHVwZGF0ZQorCQkgKiBtZXNzYWdlcyBhZnRlciB0aGUgc3RyZWFtaW5nIHRy YW5zYWN0aW9uLCBzbyBhbHNvIHVwZGF0ZSB0aGUKKwkJICogcmVsYXRpb24vdHlwZSBpbiBtYWlu IGFwcGx5IHdvcmtlciBoZXJlLiBTZWUgZnVuY3Rpb24KKwkJICogY2xlYW51cF9yZWxfc3luY19j YWNoZS4KKwkJICovCisJCWlmIChhY3Rpb24gPT0gTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OIHx8 CisJCQlhY3Rpb24gPT0gTE9HSUNBTF9SRVBfTVNHX1RZUEUpCisJCQlyZXR1cm4gZmFsc2U7CiAK LQkvKiB3cml0ZSB0aGUgY2hhbmdlIHRvIHRoZSBjdXJyZW50IGZpbGUgKi8KLQlzdHJlYW1fd3Jp dGVfY2hhbmdlKGFjdGlvbiwgcyk7CisJCXJldHVybiB0cnVlOworCX0KKwllbHNlCisJeworCQlB c3NlcnQoc3RyZWFtX2ZkICE9IE5VTEwpOwogCi0JcmV0dXJuIHRydWU7CisJCS8qCisJCSAqIFRo aXMgaXMgdGhlIG1haW4gYXBwbHkgd29ya2VyLCBidXQgdGhlcmUgaXMgbm8gYXBwbHkgYmFja2dy b3VuZCB3b3JrZXIsCisJCSAqIHNvIHdyaXRlIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgYXBwbHkg d2hlbiB0aGUgZmluYWwgY29tbWl0IGFycml2ZXMuCisJCSAqCisJCSAqIEFkZCB0aGUgbmV3IHN1 YnhhY3QgdG8gdGhlIGFycmF5ICh1bmxlc3MgYWxyZWFkeSB0aGVyZSkuCisJCSAqLworCQlzdWJ4 YWN0X2luZm9fYWRkKGN1cnJlbnRfeGlkKTsKKworCQkvKiB3cml0ZSB0aGUgY2hhbmdlIHRvIHRo ZSBjdXJyZW50IGZpbGUgKi8KKwkJc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24sIHMpOworCisJ CXJldHVybiB0cnVlOworCX0KIH0KIAogLyoKQEAgLTg5OCw4ICs5ODQsMTEgQEAgYXBwbHlfaGFu ZGxlX3ByZXBhcmVfaW50ZXJuYWwoTG9naWNhbFJlcFByZXBhcmVkVHhuRGF0YSAqcHJlcGFyZV9k YXRhKQogCSAqIEJlZ2luVHJhbnNhY3Rpb25CbG9jayBpcyBuZWNlc3NhcnkgdG8gYmFsYW5jZSB0 aGUgRW5kVHJhbnNhY3Rpb25CbG9jawogCSAqIGNhbGxlZCB3aXRoaW4gdGhlIFByZXBhcmVUcmFu c2FjdGlvbkJsb2NrIGJlbG93LgogCSAqLwotCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygpOwotCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOyAvKiBDb21wbGV0ZXMgdGhlIHByZWNlZGluZyBCZWdp biBjb21tYW5kLiAqLworCWlmICghSXNUcmFuc2FjdGlvbkJsb2NrKCkpCisJeworCQlCZWdpblRy YW5zYWN0aW9uQmxvY2soKTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7IC8qIENvbXBs ZXRlcyB0aGUgcHJlY2VkaW5nIEJlZ2luIGNvbW1hbmQuICovCisJfQogCiAJLyoKIAkgKiBVcGRh dGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0IHN0cmVhbWluZyBmcm9tIGNvcnJlY3Qg cG9zaXRpb24KQEAgLTEwNjQsMTUgKzExNTMsMTIgQEAgYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3By ZXBhcmVkKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBTVFJFQU0gUFJFUEFSRS4KLSAq Ci0gKiBMb2dpYyBpcyBpbiB0d28gcGFydHM6Ci0gKiAxLiBSZXBsYXkgYWxsIHRoZSBzcG9vbGVk IG9wZXJhdGlvbnMKLSAqIDIuIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkCiAgKi8K IHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQog ewogCUxvZ2ljYWxSZXBQcmVwYXJlZFR4bkRhdGEgcHJlcGFyZV9kYXRhOworCUFwcGx5Qmd3b3Jr ZXJJbmZvICp3aW5mbzsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJZXJlcG9y dChFUlJPUiwKQEAgLTEwODgsMjQgKzExNzQsNjQgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVw YXJlKFN0cmluZ0luZm8gcykKIAlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX3ByZXBhcmUocywgJnBy ZXBhcmVfZGF0YSk7CiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChwcmVwYXJlX2RhdGEu eGlkLCBwcmVwYXJlX2RhdGEucHJlcGFyZV9sc24pOwogCi0JZWxvZyhERUJVRzEsICJyZWNlaXZl ZCBwcmVwYXJlIGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHByZXBhcmVfZGF0YS54aWQp OworCWlmIChhbV9hcHBseV9iZ3dvcmtlcigpKQorCXsKKwkJLyogTWFyayB0aGUgdHJhbnNhY3Rp b24gYXMgcHJlcGFyZWQuICovCisJCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKCZwcmVw YXJlX2RhdGEpOwogCi0JLyogUmVwbGF5IGFsbCB0aGUgc3Bvb2xlZCBvcGVyYXRpb25zLiAqLwot CWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMocHJlcGFyZV9kYXRhLnhpZCwgcHJlcGFyZV9kYXRhLnBy ZXBhcmVfbHNuKTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBNYXJrIHRo ZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJlZC4gKi8KLQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRl cm5hbCgmcHJlcGFyZV9kYXRhKTsKKwkJbGlzdF9mcmVlKHN1YnhhY3RsaXN0KTsKKwkJc3VieGFj dGxpc3QgPSBOSUw7CiAKLQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJYXBwbHlfYmd3 b3JrZXJfc2V0X3N0YXRlKEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsKKwl9CiAKLQlwZ3N0YXRf cmVwb3J0X3N0YXQoZmFsc2UpOworCS8qCisJICogQ2hlY2sgaWYgd2UgYXJlIHByb2Nlc3Npbmcg dGhpcyB0cmFuc2FjdGlvbiB1c2luZyBhbiBhcHBseQorCSAqIGJhY2tncm91bmQgd29ya2VyIGFu ZCBpZiBzbywgc2VuZCB0aGUgY2hhbmdlcyB0byB0aGF0IHdvcmtlci4KKwkgKi8KKwllbHNlIGlm ICgod2luZm8gPSBhcHBseV9iZ3dvcmtlcl9maW5kKHByZXBhcmVfZGF0YS54aWQpKSkKKwl7CisJ CWVsb2coREVCVUcxLCAicmVjZWl2ZWQgcHJlcGFyZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24g JXUiLAorCQkJIHByZXBhcmVfZGF0YS54aWQpOwogCi0Jc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJl cGFyZV9kYXRhLmVuZF9sc24pOworCQkvKiBTZW5kIFNUUkVBTSBQUkVQQVJFIG1lc3NhZ2UgdG8g dGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLiAqLworCQlhcHBseV9iZ3dvcmtlcl9zZW5kX2Rh dGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CiAKLQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBm YWxzZTsKKwkJLyoKKwkJICogQWZ0ZXIgc2VuZGluZyB0aGUgZGF0YSB0byB0aGUgYXBwbHkgYmFj a2dyb3VuZCB3b3JrZXIsIHdhaXQgZm9yCisJCSAqIHRoYXQgd29ya2VyIHRvIGZpbmlzaC4gVGhp cyBpcyBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0CisJCSAqIG9yZGVyIHdoaWNoIGF2b2lk cyBmYWlsdXJlcyBkdWUgdG8gdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVzIGFuZAorCQkgKiBkZWFk bG9ja3MuCisJCSAqLworCQlhcHBseV9iZ3dvcmtlcl93YWl0X2Zvcih3aW5mbywgQVBQTFlfQkdX T1JLRVJfRklOSVNIRUQpOworCQlhcHBseV9iZ3dvcmtlcl9mcmVlKHdpbmZvKTsKKworCQlzdG9y ZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbik7CisJfQorCWVsc2UKKwl7CisJ CS8qCisJCSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBzZXJpYWxpemVkIHRvIGZpbGUsIHNv IHJlcGxheSBhbGwgdGhlCisJCSAqIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJICovCisJCWFwcGx5 X3Nwb29sZWRfbWVzc2FnZXMocHJlcGFyZV9kYXRhLnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVf bHNuKTsKIAotCS8qIHVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5k IHN1YnhhY3QgaW5mby4gKi8KLQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN1YmlkLCBwcmVwYXJlX2RhdGEueGlkKTsKKwkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24g YXMgcHJlcGFyZWQuICovCisJCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKCZwcmVwYXJl X2RhdGEpOworCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCXN0b3JlX2ZsdXNo X3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKworCQkvKiBVbmxpbmsgdGhlIGZpbGVz IHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCisJCXN0cmVhbV9j bGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHByZXBhcmVfZGF0YS54aWQp OworCX0KKworCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CisKKwlpbl9yZW1vdGVfdHJhbnNh Y3Rpb24gPSBmYWxzZTsKIAogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBz eW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVw YXJlX2RhdGEuZW5kX2xzbik7CkBAIC0xMTM0LDcgKzEyNjAsNyBAQCBhcHBseV9oYW5kbGVfb3Jp Z2luKFN0cmluZ0luZm8gcykKIAkgKiBPUklHSU4gbWVzc2FnZSBjYW4gb25seSBjb21lIGluc2lk ZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gb3IgaW5zaWRlCiAJICogcmVtb3RlIHRyYW5zYWN0aW9u IGFuZCBiZWZvcmUgYW55IGFjdHVhbCB3cml0ZXMuCiAJICovCi0JaWYgKCFpbl9zdHJlYW1lZF90 cmFuc2FjdGlvbiAmJgorCWlmICghaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gJiYgc3RyZWFtX2Fw cGx5X3dvcmtlciA9PSBOVUxMICYmCiAJCSghaW5fcmVtb3RlX3RyYW5zYWN0aW9uIHx8CiAJCSAo SXNUcmFuc2FjdGlvblN0YXRlKCkgJiYgIWFtX3RhYmxlc3luY193b3JrZXIoKSkpKQogCQllcmVw b3J0KEVSUk9SLApAQCAtMTE1NSwxOCArMTI4MSw2IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3Rh cnQoU3RyaW5nSW5mbyBzKQogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9O KSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJkdXBsaWNhdGUgU1RSRUFNIFNUQVJUIG1lc3NhZ2Ui KSkpOwogCi0JLyoKLQkgKiBTdGFydCBhIHRyYW5zYWN0aW9uIG9uIHN0cmVhbSBzdGFydCwgdGhp cyB0cmFuc2FjdGlvbiB3aWxsIGJlIGNvbW1pdHRlZAotCSAqIG9uIHRoZSBzdHJlYW0gc3RvcCB1 bmxlc3MgaXQgaXMgYSB0YWJsZXN5bmMgd29ya2VyIGluIHdoaWNoIGNhc2UgaXQKLQkgKiB3aWxs IGJlIGNvbW1pdHRlZCBhZnRlciBwcm9jZXNzaW5nIGFsbCB0aGUgbWVzc2FnZXMuIFdlIG5lZWQg dGhlCi0JICogdHJhbnNhY3Rpb24gZm9yIGhhbmRsaW5nIHRoZSBidWZmaWxlLCB1c2VkIGZvciBz ZXJpYWxpemluZyB0aGUKLQkgKiBzdHJlYW1pbmcgZGF0YSBhbmQgc3VieGFjdCBpbmZvLgotCSAq LwotCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKLQotCS8qIG5vdGlmeSBoYW5kbGUgbWV0aG9k cyB3ZSdyZSBwcm9jZXNzaW5nIGEgcmVtb3RlIHRyYW5zYWN0aW9uICovCi0JaW5fc3RyZWFtZWRf dHJhbnNhY3Rpb24gPSB0cnVlOwotCiAJLyogZXh0cmFjdCBYSUQgb2YgdGhlIHRvcC1sZXZlbCB0 cmFuc2FjdGlvbiAqLwogCXN0cmVhbV94aWQgPSBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX3N0YXJ0 KHMsICZmaXJzdF9zZWdtZW50KTsKIApAQCAtMTE3NywzNiArMTI5MSw5NCBAQCBhcHBseV9oYW5k bGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIAogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0 X3hhY3Qoc3RyZWFtX3hpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogCi0JLyoKLQkgKiBJbml0aWFs aXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBoYXZlbid0IHlldC4gVGhpcyB3 aWxsIGJlCi0JICogdXNlZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiB0aGUgd29ya2VyIHNv IGNyZWF0ZSBpdCBpbiBhIHBlcm1hbmVudAotCSAqIGNvbnRleHQuIFdlIGNyZWF0ZSB0aGlzIG9u IHRoZSB2ZXJ5IGZpcnN0IHN0cmVhbWluZyBtZXNzYWdlIGZyb20gYW55Ci0JICogdHJhbnNhY3Rp b24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzIGFuZCBvdGhlciBzdHJlYW1pbmcgdHJhbnNhY3Rp b25zLgotCSAqIE5vdywgd2UgY291bGQgY3JlYXRlIGEgZmlsZXNldCBhdCB0aGUgc3RhcnQgb2Yg dGhlIHdvcmtlciBhcyB3ZWxsIGJ1dAotCSAqIHRoZW4gd2Ugd29uJ3QgYmUgc3VyZSB0aGF0IGl0 IHdpbGwgZXZlciBiZSB1c2VkLgotCSAqLwotCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVh bV9maWxlc2V0ID09IE5VTEwpCisJaWYgKGFtX2FwcGx5X2Jnd29ya2VyKCkpCiAJewotCQlNZW1v cnlDb250ZXh0IG9sZGN0eDsKKwkJLyoKKwkJICogTWFrZSBzdXJlIHRoZSBoYW5kbGUgYXBwbHlf ZGlzcGF0Y2ggbWV0aG9kcyBhcmUgYXdhcmUgd2UncmUgaW4gYQorCQkgKiByZW1vdGUgdHJhbnNh Y3Rpb24uCisJCSAqLworCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSB0cnVlOworCX0KKwllbHNl CisJeworCQlBcHBseUJnd29ya2VySW5mbyAqd2luZm87CiAKLQkJb2xkY3R4ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisJCS8qCisJCSAqIFRoaXMgaXMgdGhlIG1haW4g YXBwbHkgd29ya2VyLiBDaGVjayBpZiB0aGVyZSBpcyBhbnkgZnJlZSBhcHBseQorCQkgKiBiYWNr Z3JvdW5kIHdvcmtlciB3ZSBjYW4gdXNlIHRvIHByb2Nlc3MgdGhpcyB0cmFuc2FjdGlvbi4KKwkJ ICovCisJCWlmIChmaXJzdF9zZWdtZW50KQorCQkJd2luZm8gPSBhcHBseV9iZ3dvcmtlcl9zdGFy dChzdHJlYW1feGlkKTsKKwkJZWxzZQorCQkJd2luZm8gPSBhcHBseV9iZ3dvcmtlcl9maW5kKHN0 cmVhbV94aWQpOwogCi0JCU15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPSBwYWxs b2Moc2l6ZW9mKEZpbGVTZXQpKTsKLQkJRmlsZVNldEluaXQoTXlMb2dpY2FsUmVwV29ya2VyLT5z dHJlYW1fZmlsZXNldCk7CisJCWlmICh3aW5mbykKKwkJeworCQkJLyoKKwkJCSAqIElmIHdlIGhh dmUgZm91bmQgYSBmcmVlIHdvcmtlciBvciBpZiB3ZSBhcmUgYWxyZWFkeSBhcHBseWluZworCQkJ ICogdGhpcyB0cmFuc2FjdGlvbiB1c2luZyBhbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgdGhl biB3ZSBwYXNzCisJCQkgKiB0aGUgZGF0YSB0byB0aGF0IHdvcmtlci4KKwkJCSAqLworCQkJaWYg KGZpcnN0X3NlZ21lbnQpCisJCQkJYXBwbHlfYmd3b3JrZXJfc2VuZF9kYXRhKHdpbmZvLCBzLT5s ZW4sIHMtPmRhdGEpOwogCi0JCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwotCX0KKwkJ CW5jaGFuZ2VzID0gMDsKKwkJCWVsb2coREVCVUcxLCAic3RhcnRpbmcgc3RyZWFtaW5nIG9mIHhp ZCAldSIsIHN0cmVhbV94aWQpOworCisJCQkvKiBDYWNoZSB0aGUgYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIgZm9yIHRoaXMgdHJhbnNhY3Rpb24uICovCisJCQlzdHJlYW1fYXBwbHlfd29ya2VyID0g d2luZm87CisJCX0KKwkJZWxzZQorCQl7CiAKLQkvKiBvcGVuIHRoZSBzcG9vbCBmaWxlIGZvciB0 aGlzIHRyYW5zYWN0aW9uICovCi0Jc3RyZWFtX29wZW5fZmlsZShNeUxvZ2ljYWxSZXBXb3JrZXIt PnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsKKwkJCS8qIG5vdGlmeSBoYW5kbGUg bWV0aG9kcyB3ZSdyZSBwcm9jZXNzaW5nIGEgcmVtb3RlIHRyYW5zYWN0aW9uICovCisJCQlpbl9z dHJlYW1lZF90cmFuc2FjdGlvbiA9IHRydWU7CiAKLQkvKiBpZiB0aGlzIGlzIG5vdCB0aGUgZmly c3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUgKi8KLQlpZiAoIWZpcnN0X3Nl Z21lbnQpCi0JCXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0 cmVhbV94aWQpOworCQkJLyoKKwkJCSAqIFNpbmNlIG5vIGFwcGx5IGJhY2tncm91bmQgd29ya2Vy IGlzIGF2YWlsYWJsZSBmb3IgdGhlIGZpcnN0CisJCQkgKiBzdHJlYW0gc3RhcnQsIHNlcmlhbGl6 ZSBhbGwgdGhlIGNoYW5nZXMgb2YgdGhlIHRyYW5zYWN0aW9uLgorCQkJICoKKwkJCSAqIFN0YXJ0 IGEgdHJhbnNhY3Rpb24gb24gc3RyZWFtIHN0YXJ0LCB0aGlzIHRyYW5zYWN0aW9uIHdpbGwgYmUK KwkJCSAqIGNvbW1pdHRlZCBvbiB0aGUgc3RyZWFtIHN0b3AgdW5sZXNzIGl0IGlzIGEgdGFibGVz eW5jIHdvcmtlciBpbgorCQkJICogd2hpY2ggY2FzZSBpdCB3aWxsIGJlIGNvbW1pdHRlZCBhZnRl ciBwcm9jZXNzaW5nIGFsbCB0aGUKKwkJCSAqIG1lc3NhZ2VzLiBXZSBuZWVkIHRoZSB0cmFuc2Fj dGlvbiBmb3IgaGFuZGxpbmcgdGhlIGJ1ZmZpbGUsCisJCQkgKiB1c2VkIGZvciBzZXJpYWxpemlu ZyB0aGUgc3RyZWFtaW5nIGRhdGEgYW5kIHN1YnhhY3QgaW5mby4KKwkJCSAqLworCQkJYmVnaW5f cmVwbGljYXRpb25fc3RlcCgpOwogCi0JcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9SVU5O SU5HLCBOVUxMKTsKKwkJCS8qCisJCQkgKiBJbml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1f ZmlsZXNldCBpZiB3ZSBoYXZlbid0IHlldC4gVGhpcyB3aWxsCisJCQkgKiBiZSB1c2VkIGZvciB0 aGUgZW50aXJlIGR1cmF0aW9uIG9mIHRoZSB3b3JrZXIgc28gY3JlYXRlIGl0IGluIGEKKwkJCSAq IHBlcm1hbmVudCBjb250ZXh0LiBXZSBjcmVhdGUgdGhpcyBvbiB0aGUgdmVyeSBmaXJzdCBzdHJl YW1pbmcKKwkJCSAqIG1lc3NhZ2UgZnJvbSBhbnkgdHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0 IGZvciB0aGlzIGFuZCBvdGhlcgorCQkJICogc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4gTm93LCB3 ZSBjb3VsZCBjcmVhdGUgYSBmaWxlc2V0IGF0IHRoZSBzdGFydAorCQkJICogb2YgdGhlIHdvcmtl ciBhcyB3ZWxsIGJ1dCB0aGVuIHdlIHdvbid0IGJlIHN1cmUgdGhhdCBpdCB3aWxsIGV2ZXIKKwkJ CSAqIGJlIHVzZWQuCisJCQkgKi8KKwkJCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9m aWxlc2V0ID09IE5VTEwpCisJCQl7CisJCQkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CiAKLQllbmRf cmVwbGljYXRpb25fc3RlcCgpOworCQkJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhB cHBseUNvbnRleHQpOworCisJCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9 IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOworCQkJCUZpbGVTZXRJbml0KE15TG9naWNhbFJlcFdv cmtlci0+c3RyZWFtX2ZpbGVzZXQpOworCisJCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0 eCk7CisJCQl9CisKKwkJCS8qIE9wZW4gdGhlIHNwb29sIGZpbGUgZm9yIHRoaXMgdHJhbnNhY3Rp b24uICovCisJCQlzdHJlYW1fb3Blbl9maWxlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0 cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOworCisJCQkvKiBJZiB0aGlzIGlzIG5vdCB0aGUgZmly c3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUuICovCisJCQlpZiAoIWZpcnN0 X3NlZ21lbnQpCisJCQkJc3VieGFjdF9pbmZvX3JlYWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJp ZCwgc3RyZWFtX3hpZCk7CisKKwkJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CisJCX0KKwl9CisK KwlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX1JVTk5JTkcsIE5VTEwpOwogfQogCiAvKgpA QCAtMTIxNSw1OCArMTM4Nyw3MyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0lu Zm8gcykKIHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5nSW5mbyBz KQogewotCWlmICghaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCi0JCWVyZXBvcnQoRVJST1IsCi0J CQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAotCQkJCSBlcnJtc2dfaW50 ZXJuYWwoIlNUUkVBTSBTVE9QIG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RBUlQiKSkpOworCUFw cGx5Qmd3b3JrZXJJbmZvICp3aW5mbzsKKworCWlmIChhbV9hcHBseV9iZ3dvcmtlcigpKQorCXsK KwkJZWxvZyhERUJVRzEsICJbQXBwbHkgQkdXICMldV0gZW5kZWQgcHJvY2Vzc2luZyBzdHJlYW1p bmcgY2h1bmssICIKKwkJCSAid2FpdGluZyBvbiBzaG1fbXFfcmVjZWl2ZSIsIE15UGFyYWxsZWxT aGFyZWQtPndvcmtlcl9pZCk7CisKKwkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExF SU5UUkFOU0FDVElPTiwgTlVMTCk7CisJfQogCiAJLyoKLQkgKiBDbG9zZSB0aGUgZmlsZSB3aXRo IHNlcmlhbGl6ZWQgY2hhbmdlcywgYW5kIHNlcmlhbGl6ZSBpbmZvcm1hdGlvbiBhYm91dAotCSAq IHN1YnhhY3RzIGZvciB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCisJICogQ2hlY2sgaWYgd2Ug YXJlIHByb2Nlc3NpbmcgdGhpcyB0cmFuc2FjdGlvbiB1c2luZyBhbiBhcHBseQorCSAqIGJhY2tn cm91bmQgd29ya2VyIGFuZCBpZiBzbywgc2VuZCB0aGUgY2hhbmdlcyB0byB0aGF0IHdvcmtlci4K IAkgKi8KLQlzdWJ4YWN0X2luZm9fd3JpdGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3Ry ZWFtX3hpZCk7Ci0Jc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKKwllbHNlIGlmICgod2luZm8gPSBhcHBs eV9iZ3dvcmtlcl9maW5kKHN0cmVhbV94aWQpKSkKKwl7CisJCWFwcGx5X2Jnd29ya2VyX3NlbmRf ZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsKIAotCS8qIFdlIG11c3QgYmUgaW4gYSB2YWxp ZCB0cmFuc2FjdGlvbiBzdGF0ZSAqLwotCUFzc2VydChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CisJ CWVsb2coREVCVUcxLCAic3RvcHBlZCBzdHJlYW1pbmcgb2YgeGlkICV1LCAldSBjaGFuZ2VzIHN0 cmVhbWVkIiwgc3RyZWFtX3hpZCwgbmNoYW5nZXMpOwogCi0JLyogQ29tbWl0IHRoZSBwZXItc3Ry ZWFtIHRyYW5zYWN0aW9uICovCi0JQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCXN0cmVh bV9hcHBseV93b3JrZXIgPSBOVUxMOwogCi0JaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxz ZTsKKwkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKKwl9CisJZWxz ZQorCXsKKwkJaWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwkJCWVyZXBvcnQoRVJST1Is CisJCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKKwkJCQkJIGVycm1z Z19pbnRlcm5hbCgiU1RSRUFNIFNUT1AgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVEFSVCIpKSk7 CisKKwkJLyoKKwkJICogQ2xvc2UgdGhlIGZpbGUgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMsIGFu ZCBzZXJpYWxpemUgaW5mb3JtYXRpb24KKwkJICogYWJvdXQgc3VieGFjdHMgZm9yIHRoZSB0b3Bs ZXZlbCB0cmFuc2FjdGlvbi4KKwkJICovCisJCXN1YnhhY3RfaW5mb193cml0ZShNeUxvZ2ljYWxS ZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKKwkJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKIAot CS8qIFJlc2V0IHBlci1zdHJlYW0gY29udGV4dCAqLwotCU1lbW9yeUNvbnRleHRSZXNldChMb2dp Y2FsU3RyZWFtaW5nQ29udGV4dCk7CisJCS8qIFdlIG11c3QgYmUgaW4gYSB2YWxpZCB0cmFuc2Fj dGlvbiBzdGF0ZSAqLworCQlBc3NlcnQoSXNUcmFuc2FjdGlvblN0YXRlKCkpOworCisJCS8qIENv bW1pdCB0aGUgcGVyLXN0cmVhbSB0cmFuc2FjdGlvbiAqLworCQlDb21taXRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKKworCQkvKiBSZXNldCBwZXItc3RyZWFtIGNvbnRleHQgKi8KKwkJTWVtb3J5Q29u dGV4dFJlc2V0KExvZ2ljYWxTdHJlYW1pbmdDb250ZXh0KTsKKworCQlwZ3N0YXRfcmVwb3J0X2Fj dGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOworCX0KKworCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9u ID0gZmFsc2U7CiAKLQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOwog CXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwogfQogCiAvKgotICogSGFuZGxlIFNU UkVBTSBhYm9ydCBtZXNzYWdlLgorICogSGFuZGxlIFNUUkVBTSBBQk9SVCBtZXNzYWdlIHdoZW4g dGhlIHRyYW5zYWN0aW9uIHdhcyBzcGlsbGVkIHRvIGRpc2suCiAgKi8KIHN0YXRpYyB2b2lkCi1h cHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKK3NlcmlhbGl6ZV9zdHJlYW1f YWJvcnQoVHJhbnNhY3Rpb25JZCB4aWQsIFRyYW5zYWN0aW9uSWQgc3VieGlkKQogewotCVRyYW5z YWN0aW9uSWQgeGlkOwotCVRyYW5zYWN0aW9uSWQgc3VieGlkOwotCi0JaWYgKGluX3N0cmVhbWVk X3RyYW5zYWN0aW9uKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfUFJP VE9DT0xfVklPTEFUSU9OKSwKLQkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gQUJPUlQgbWVz c2FnZSB3aXRob3V0IFNUUkVBTSBTVE9QIikpKTsKLQotCWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1f YWJvcnQocywgJnhpZCwgJnN1YnhpZCk7Ci0KIAkvKgogCSAqIElmIHRoZSB0d28gWElEcyBhcmUg dGhlIHNhbWUsIGl0J3MgaW4gZmFjdCBhYm9ydCBvZiB0b3BsZXZlbCB4YWN0LCBzbwogCSAqIGp1 c3QgZGVsZXRlIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgaW5mby4KIAkgKi8KIAlpZiAoeGlk ID09IHN1YnhpZCkKLQl7Ci0JCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoeGlkLCBJbnZh bGlkWExvZ1JlY1B0cik7CiAJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtl ci0+c3ViaWQsIHhpZCk7Ci0JfQogCWVsc2UKIAl7CiAJCS8qCkBAIC0xMjkwLDggKzE0NzcsNiBA QCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJYm9vbAkJZm91bmQg PSBmYWxzZTsKIAkJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOwogCi0JCXNldF9hcHBseV9lcnJvcl9j b250ZXh0X3hhY3Qoc3VieGlkLCBJbnZhbGlkWExvZ1JlY1B0cik7Ci0KIAkJc3ViaWR4ID0gLTE7 CiAJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAkJc3VieGFjdF9pbmZvX3JlYWQoTXlMb2dp Y2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKQEAgLTEzMTYsNyArMTUwMSw2IEBAIGFwcGx5X2hh bmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQkJY2xlYW51cF9zdWJ4YWN0X2luZm8o KTsKIAkJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CiAJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKLQkJCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwogCQkJcmV0dXJuOwog CQl9CiAKQEAgLTEzMzksNiArMTUyMywxNTMgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChT dHJpbmdJbmZvIHMpCiAJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CiAJCUNvbW1pdFRyYW5zYWN0 aW9uQ29tbWFuZCgpOwogCX0KK30KKworLyoKKyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQgbWVzc2Fn ZSB3aGVuIHRoZSB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCBpbiBhIGFwcGx5CisgKiBiYWNrZ3Jv dW5kIHdvcmtlci4KKyAqLworc3RhdGljIHZvaWQKK2FwcGx5X3N0cmVhbV9hYm9ydF9pbl9iZ3dv cmtlcihMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhLAorCQkJCQkJCSAgIGJv b2wgcmVhZF9hYm9ydF9sc24pCit7CisJVHJhbnNhY3Rpb25JZCB4aWQgPSBhYm9ydF9kYXRhLT54 aWQ7CisJVHJhbnNhY3Rpb25JZCBzdWJ4aWQgPSBhYm9ydF9kYXRhLT5zdWJ4aWQ7CisKKwllbG9n KERFQlVHMSwgIltBcHBseSBCR1cgIyV1XSBhYm9ydGluZyBjdXJyZW50IHRyYW5zYWN0aW9uIHhp ZD0ldSwgc3VieGlkPSV1IiwKKwkJIE15UGFyYWxsZWxTaGFyZWQtPndvcmtlcl9pZCAsIEdldEN1 cnJlbnRUcmFuc2FjdGlvbklkSWZBbnkoKSwKKwkJIEdldEN1cnJlbnRTdWJUcmFuc2FjdGlvbklk KCkpOworCisJLyoKKwkgKiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0IHN0 cmVhbWluZyBmcm9tIGNvcnJlY3QKKwkgKiBwb3NpdGlvbiBpbiBjYXNlIG9mIGNyYXNoLgorCSAq LworCWlmIChyZWFkX2Fib3J0X2xzbikKKwl7CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5f bHNuID0gYWJvcnRfZGF0YS0+YWJvcnRfbHNuOworCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2lu X3RpbWVzdGFtcCA9IGFib3J0X2RhdGEtPmFib3J0X3RpbWU7CisJfQorCisJLyoKKwkgKiBJZiB0 aGUgdHdvIFhJRHMgYXJlIHRoZSBzYW1lLCBpdCdzIGluIGZhY3QgYWJvcnQgb2YgdG9wbGV2ZWwg eGFjdCwKKwkgKiBzbyBqdXN0IGZyZWUgdGhlIHN1YnhhY3RsaXN0LgorCSAqLworCWlmIChzdWJ4 aWQgPT0geGlkKQorCXsKKwkJQWJvcnRDdXJyZW50VHJhbnNhY3Rpb24oKTsKKworCQlpZiAoSXNU cmFuc2FjdGlvbkJsb2NrKCkpCisJCXsKKwkJCUVuZFRyYW5zYWN0aW9uQmxvY2soZmFsc2UpOwor CQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCX0KKworCQlpbl9yZW1vdGVfdHJhbnNh Y3Rpb24gPSBmYWxzZTsKKwkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxM KTsKKworCQlsaXN0X2ZyZWUoc3VieGFjdGxpc3QpOworCQlzdWJ4YWN0bGlzdCA9IE5JTDsKKwor CQlhcHBseV9iZ3dvcmtlcl9zZXRfc3RhdGUoQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCX0K KwllbHNlCisJeworCQkvKgorCQkgKiBPSywgc28gaXQncyBhIHN1YnhhY3QuIFJvbGxiYWNrIHRv IHRoZSBzYXZlcG9pbnQuCisJCSAqCisJCSAqIFdlIGFsc28gbmVlZCB0byByZWFkIHRoZSBzdWJ4 YWN0bGlzdCwgZGV0ZXJtaW5lIHRoZSBvZmZzZXQKKwkJICogdHJhY2tlZCBmb3IgdGhlIHN1Ynhh Y3QsIGFuZCB0cnVuY2F0ZSB0aGUgbGlzdC4KKwkJICovCisJCWludAkJCWk7CisJCWJvb2wJCWZv dW5kID0gZmFsc2U7CisJCWNoYXIJCXNwbmFtZVtNQVhQR1BBVEhdOworCisJCWFwcGx5X2Jnd29y a2VyX3NhdmVwb2ludF9uYW1lKE15U3Vic2NyaXB0aW9uLT5vaWQsIHN1YnhpZCwgc3BuYW1lLAor CQkJCQkJCQkJICBzaXplb2Yoc3BuYW1lKSk7CisKKwkJZWxvZyhERUJVRzEsICJbQXBwbHkgQkdX ICMldV0gcm9sbGluZyBiYWNrIHRvIHNhdmVwb2ludCAlcyIsCisJCQkgTXlQYXJhbGxlbFNoYXJl ZC0+d29ya2VyX2lkLCBzcG5hbWUpOworCisJCWZvciAoaSA9IGxpc3RfbGVuZ3RoKHN1YnhhY3Rs aXN0KSAtIDE7IGkgPj0gMDsgaS0tKQorCQl7CisJCQl4aWQgPSAoVHJhbnNhY3Rpb25JZCkgbGlz dF9udGhfaW50KHN1YnhhY3RsaXN0LCBpKTsKKwkJCWlmICh4aWQgPT0gc3VieGlkKQorCQkJewor CQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCWlmIChmb3VuZCkK KwkJeworCQkJUm9sbGJhY2tUb1NhdmVwb2ludChzcG5hbWUpOworCQkJQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7CisJCQlzdWJ4YWN0bGlzdCA9IGxpc3RfdHJ1bmNhdGUoc3VieGFjdGxpc3Qs IGkgKyAxKTsKKwkJfQorCisJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRUlOVFJB TlNBQ1RJT04sIE5VTEwpOworCX0KK30KKworLyoKKyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQgbWVz c2FnZS4KKyAqLworc3RhdGljIHZvaWQKK2FwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5n SW5mbyBzKQoreworCVRyYW5zYWN0aW9uSWQgeGlkOworCVRyYW5zYWN0aW9uSWQgc3VieGlkOwor CUxvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgYWJvcnRfZGF0YTsKKwlib29sIHJlYWRfYWJvcnRf bHNuID0gZmFsc2U7CisJQXBwbHlCZ3dvcmtlckluZm8gKndpbmZvOworCisJaWYgKGluX3N0cmVh bWVkX3RyYW5zYWN0aW9uKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf UFJPVE9DT0xfVklPTEFUSU9OKSwKKwkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gQUJPUlQg bWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVE9QIikpKTsKKworCS8qIENoZWNrIHdoZXRoZXIgdGhl IHB1Ymxpc2hlciBzZW5kcyBhYm9ydF9sc24gYW5kIGFib3J0X3RpbWUuICovCisJaWYgKGFtX2Fw cGx5X2Jnd29ya2VyKCkpCisJCXJlYWRfYWJvcnRfbHNuID0gTXlQYXJhbGxlbFNoYXJlZC0+cHJv dG9fdmVyc2lvbiA+PQorCQkJCQkJIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZF UlNJT05fTlVNOworCisJbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChzLCAmYWJvcnRfZGF0 YSwgcmVhZF9hYm9ydF9sc24pOworCisJeGlkID0gYWJvcnRfZGF0YS54aWQ7CisJc3VieGlkID0g YWJvcnRfZGF0YS5zdWJ4aWQ7CisKKwlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHN1Ynhp ZCwgYWJvcnRfZGF0YS5hYm9ydF9sc24pOworCisJaWYgKGFtX2FwcGx5X2Jnd29ya2VyKCkpCisJ CWFwcGx5X3N0cmVhbV9hYm9ydF9pbl9iZ3dvcmtlcigmYWJvcnRfZGF0YSwgcmVhZF9hYm9ydF9s c24pOworCisJLyoKKwkgKiBDaGVjayBpZiB3ZSBhcmUgcHJvY2Vzc2luZyB0aGlzIHRyYW5zYWN0 aW9uIHVzaW5nIGFuIGFwcGx5CisJICogYmFja2dyb3VuZCB3b3JrZXIgYW5kIGlmIHNvLCBzZW5k IHRoZSBjaGFuZ2VzIHRvIHRoYXQgd29ya2VyLgorCSAqLworCWVsc2UgaWYgKCh3aW5mbyA9IGFw cGx5X2Jnd29ya2VyX2ZpbmQoeGlkKSkpCisJeworCQkvKiBTZW5kIFNUUkVBTSBBQk9SVCBtZXNz YWdlIHRvIHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4gKi8KKwkJYXBwbHlfYmd3b3JrZXJf c2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOworCisJCS8qCisJCSAqIEFmdGVyIHNl bmRpbmcgdGhlIGRhdGEgdG8gdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLCB3YWl0IGZvcgor CQkgKiB0aGF0IHdvcmtlciB0byBmaW5pc2guIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1haW50YWlu IGNvbW1pdAorCQkgKiBvcmRlciB3aGljaCBhdm9pZHMgZmFpbHVyZXMgZHVlIHRvIHRyYW5zYWN0 aW9uIGRlcGVuZGVuY2llcyBhbmQKKwkJICogZGVhZGxvY2tzLgorCQkgKi8KKwkJaWYgKHN1Ynhp ZCA9PSB4aWQpCisJCXsKKwkJCWFwcGx5X2Jnd29ya2VyX3dhaXRfZm9yKHdpbmZvLCBBUFBMWV9C R1dPUktFUl9GSU5JU0hFRCk7CisJCQlhcHBseV9iZ3dvcmtlcl9mcmVlKHdpbmZvKTsKKwkJfQor CX0KKwllbHNlCisJCS8qCisJCSAqIFdlIGFyZSBpbiBtYWluIGFwcGx5IHdvcmtlciBhbmQgdGhl IHRyYW5zYWN0aW9uIGhhcyBiZWVuCisJCSAqIHNlcmlhbGl6ZWQgdG8gZmlsZS4KKwkJICovCisJ CXNlcmlhbGl6ZV9zdHJlYW1fYWJvcnQoeGlkLCBzdWJ4aWQpOwogCiAJcmVzZXRfYXBwbHlfZXJy b3JfY29udGV4dF9pbmZvKCk7CiB9CkBAIC0xNDcwLDYgKzE4MDEsNyBAQCBhcHBseV9oYW5kbGVf c3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiB7CiAJVHJhbnNhY3Rpb25JZCB4aWQ7CiAJTG9n aWNhbFJlcENvbW1pdERhdGEgY29tbWl0X2RhdGE7CisJQXBwbHlCZ3dvcmtlckluZm8gKndpbmZv OwogCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLApAQCAt MTQ3OSwxNCArMTgxMSw2MCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZv IHMpCiAJeGlkID0gbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9jb21taXQocywgJmNvbW1pdF9kYXRh KTsKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgY29tbWl0X2RhdGEuY29tbWl0 X2xzbik7CiAKLQllbG9nKERFQlVHMSwgInJlY2VpdmVkIGNvbW1pdCBmb3Igc3RyZWFtZWQgdHJh bnNhY3Rpb24gJXUiLCB4aWQpOworCWlmIChhbV9hcHBseV9iZ3dvcmtlcigpKQorCXsKKwkJYXBw bHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOwogCi0JYXBwbHlfc3Bvb2xl ZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCQlsaXN0X2ZyZWUoc3Vi eGFjdGxpc3QpOworCQlzdWJ4YWN0bGlzdCA9IE5JTDsKIAotCWFwcGx5X2hhbmRsZV9jb21taXRf aW50ZXJuYWwoJmNvbW1pdF9kYXRhKTsKKwkJYXBwbHlfYmd3b3JrZXJfc2V0X3N0YXRlKEFQUExZ X0JHV09SS0VSX0ZJTklTSEVEKTsKKwl9CisKKwkvKgorCSAqIENoZWNrIGlmIHdlIGFyZSBwcm9j ZXNzaW5nIHRoaXMgdHJhbnNhY3Rpb24gdXNpbmcgYW4gYXBwbHkKKwkgKiBiYWNrZ3JvdW5kIHdv cmtlciBhbmQgaWYgc28sIHNlbmQgdGhlIGNoYW5nZXMgdG8gdGhhdCB3b3JrZXIuCisJICovCisJ ZWxzZSBpZiAoKHdpbmZvID0gYXBwbHlfYmd3b3JrZXJfZmluZCh4aWQpKSkKKwl7CisJCWVsb2co REVCVUcxLCAicmVjZWl2ZWQgY29tbWl0IGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHhp ZCk7CiAKLQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBz dWJ4YWN0IGluZm8gKi8KLQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXIt PnN1YmlkLCB4aWQpOworCQkvKiBTZW5kIFNUUkVBTSBDT01NSVQgbWVzc2FnZSB0byB0aGUgYXBw bHkgYmFja2dyb3VuZCB3b3JrZXIuICovCisJCWFwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YSh3aW5m bywgcy0+bGVuLCBzLT5kYXRhKTsKKworCQkvKgorCQkgKiBBZnRlciBzZW5kaW5nIHRoZSBkYXRh IHRvIHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgd2FpdCBmb3IKKwkJICogdGhhdCB3b3Jr ZXIgdG8gZmluaXNoLiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBtYWludGFpbiBjb21taXQKKwkJICog b3JkZXIgd2hpY2ggYXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbiBkZXBlbmRlbmNp ZXMgYW5kCisJCSAqIGRlYWRsb2Nrcy4KKwkJICovCisJCWFwcGx5X2Jnd29ya2VyX3dhaXRfZm9y KHdpbmZvLCBBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCk7CisKKwkJcGdzdGF0X3JlcG9ydF9zdGF0 KGZhbHNlKTsKKwkJc3RvcmVfZmx1c2hfcG9zaXRpb24oY29tbWl0X2RhdGEuZW5kX2xzbik7CisJ CXN0b3Bfc2tpcHBpbmdfY2hhbmdlcygpOworCisJCWFwcGx5X2Jnd29ya2VyX2ZyZWUod2luZm8p OworCisJCS8qCisJCSAqIFRoZSB0cmFuc2FjdGlvbiBpcyBlaXRoZXIgbm9uLWVtcHR5IG9yIHNr aXBwZWQsIHNvIHdlIGNsZWFyIHRoZQorCQkgKiBzdWJza2lwbHNuLgorCQkgKi8KKwkJY2xlYXJf c3Vic2NyaXB0aW9uX3NraXBfbHNuKGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCX0KKwllbHNl CisJeworCQkvKgorCQkgKiBUaGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gc2VyaWFsaXplZCB0byBm aWxlLCBzbyByZXBsYXkgYWxsIHRoZQorCQkgKiBzcG9vbGVkIG9wZXJhdGlvbnMuCisJCSAqLwor CQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisK KwkJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOworCisJCS8qIFVu bGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4g Ki8KKwkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlk KTsKKwl9CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25p emVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29tbWl0X2RhdGEu ZW5kX2xzbik7CkBAIC0xNTMwLDYgKzE5MDgsMTMgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRl cm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpCiAJCXJlcGxvcmlnaW5fc2Vz c2lvbl9vcmlnaW5fdGltZXN0YW1wID0gY29tbWl0X2RhdGEtPmNvbW1pdHRpbWU7CiAKIAkJQ29t bWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJaWYgKElzVHJhbnNhY3Rpb25CbG9jaygpKQor CQl7CisJCQlFbmRUcmFuc2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9u Q29tbWFuZCgpOworCQl9CisKIAkJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKIAogCQlzdG9y ZV9mbHVzaF9wb3NpdGlvbihjb21taXRfZGF0YS0+ZW5kX2xzbik7CkBAIC0yNDY3LDcgKzI4NTIs NyBAQCBhcHBseV9oYW5kbGVfdHJ1bmNhdGUoU3RyaW5nSW5mbyBzKQogLyoKICAqIExvZ2ljYWwg cmVwbGljYXRpb24gcHJvdG9jb2wgbWVzc2FnZSBkaXNwYXRjaGVyLgogICovCi1zdGF0aWMgdm9p ZAordm9pZAogYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKQogewogCUxvZ2ljYWxSZXBNc2dU eXBlIGFjdGlvbiA9IHBxX2dldG1zZ2J5dGUocyk7CkBAIC0yNjM2LDYgKzMwMjEsMTAgQEAgc3Rv cmVfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciByZW1vdGVfbHNuKQogewogCUZsdXNoUG9zaXRp b24gKmZsdXNocG9zOwogCisJLyogU2tpcCBpZiBub3QgdGhlIG1haW4gYXBwbHkgd29ya2VyICov CisJaWYgKGFtX2FwcGx5X2Jnd29ya2VyKCkpCisJCXJldHVybjsKKwogCS8qIE5lZWQgdG8gZG8g dGhpcyBpbiBwZXJtYW5lbnQgY29udGV4dCAqLwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBs eUNvbnRleHQpOwogCkBAIC0yNjUwLDcgKzMwMzksNyBAQCBzdG9yZV9mbHVzaF9wb3NpdGlvbihY TG9nUmVjUHRyIHJlbW90ZV9sc24pCiAKIAogLyogVXBkYXRlIHN0YXRpc3RpY3Mgb2YgdGhlIHdv cmtlci4gKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBVcGRhdGVXb3JrZXJTdGF0cyhYTG9nUmVjUHRy IGxhc3RfbHNuLCBUaW1lc3RhbXBUeiBzZW5kX3RpbWUsIGJvb2wgcmVwbHkpCiB7CiAJTXlMb2dp Y2FsUmVwV29ya2VyLT5sYXN0X2xzbiA9IGxhc3RfbHNuOwpAQCAtMjcwMCw2ICszMDg5LDcgQEAg TG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAJZXJyY2FsbGJh Y2suY2FsbGJhY2sgPSBhcHBseV9lcnJvcl9jYWxsYmFjazsKIAllcnJjYWxsYmFjay5wcmV2aW91 cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CiAJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxs YmFjazsKKwlhcHBseV9lcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyb3JfY29udGV4dF9zdGFjazsK IAogCS8qIFRoaXMgb3V0ZXIgbG9vcCBpdGVyYXRlcyBvbmNlIHBlciB3YWl0LiAqLwogCWZvciAo OzspCkBAIC0yOTE0LDYgKzMzMDQsNyBAQCBMb2dpY2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQdHIg bGFzdF9yZWNlaXZlZCkKIAogCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLwogCWVy cm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKKwlhcHBseV9lcnJvcl9j b250ZXh0X3N0YWNrID0gZXJyb3JfY29udGV4dF9zdGFjazsKIAogCS8qIEFsbCBkb25lICovCiAJ d2FscmN2X2VuZHN0cmVhbWluZyhMb2dSZXBXb3JrZXJXYWxSY3ZDb25uLCAmdGxpKTsKQEAgLTMx MTQsNyArMzUwNSw3IEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIC8qCiAgKiBD YWxsYmFjayBmcm9tIHN1YnNjcmlwdGlvbiBzeXNjYWNoZSBpbnZhbGlkYXRpb24uCiAgKi8KLXN0 YXRpYyB2b2lkCit2b2lkCiBzdWJzY3JpcHRpb25fY2hhbmdlX2NiKERhdHVtIGFyZywgaW50IGNh Y2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7CiAJTXlTdWJzY3JpcHRpb25WYWxpZCA9IGZhbHNl OwpAQCAtMzU2OSwzNyArMzk2MCwxNCBAQCBzdGFydF9hcHBseShYTG9nUmVjUHRyIG9yaWdpbl9z dGFydHBvcykKIAlQR19FTkRfVFJZKCk7CiB9CiAKLS8qIExvZ2ljYWwgUmVwbGljYXRpb24gQXBw bHkgd29ya2VyIGVudHJ5IHBvaW50ICovCisvKgorICogSW5pdGlhbGl6ZSB0aGUgZGF0YWJhc2Ug Y29ubmVjdGlvbiwgaW4tbWVtb3J5IHN1YnNjcmlwdGlvbiBhbmQgbmVjZXNzYXJ5CisgKiBjb25m aWcgb3B0aW9ucy4KKyAqLwogdm9pZAotQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQor SW5pdGlhbGl6ZUFwcGx5V29ya2VyKHZvaWQpCiB7Ci0JaW50CQkJd29ya2VyX3Nsb3QgPSBEYXR1 bUdldEludDMyKG1haW5fYXJnKTsKIAlNZW1vcnlDb250ZXh0IG9sZGN0eDsKLQljaGFyCQlvcmln aW5uYW1lW05BTUVEQVRBTEVOXTsKLQlYTG9nUmVjUHRyCW9yaWdpbl9zdGFydHBvcyA9IEludmFs aWRYTG9nUmVjUHRyOwotCWNoYXIJICAgKm15c2xvdG5hbWUgPSBOVUxMOwotCVdhbFJjdlN0cmVh bU9wdGlvbnMgb3B0aW9uczsKLQlpbnQJCQlzZXJ2ZXJfdmVyc2lvbjsKLQotCS8qIEF0dGFjaCB0 byBzbG90ICovCi0JbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKHdvcmtlcl9zbG90KTsKLQotCS8q IFNldHVwIHNpZ25hbCBoYW5kbGluZyAqLwotCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxl ckZvckNvbmZpZ1JlbG9hZCk7Ci0JcHFzaWduYWwoU0lHVEVSTSwgZGllKTsKLQlCYWNrZ3JvdW5k V29ya2VyVW5ibG9ja1NpZ25hbHMoKTsKLQotCS8qCi0JICogV2UgZG9uJ3QgY3VycmVudGx5IG5l ZWQgYW55IFJlc291cmNlT3duZXIgaW4gYSB3YWxyZWNlaXZlciBwcm9jZXNzLCBidXQKLQkgKiBp ZiB3ZSBkaWQsIHdlIGNvdWxkIGNhbGwgQ3JlYXRlQXV4UHJvY2Vzc1Jlc291cmNlT3duZXIgaGVy ZS4KLQkgKi8KLQotCS8qIEluaXRpYWxpc2Ugc3RhdHMgdG8gYSBzYW5pc2ggdmFsdWUgKi8KLQlN eUxvZ2ljYWxSZXBXb3JrZXItPmxhc3Rfc2VuZF90aW1lID0gTXlMb2dpY2FsUmVwV29ya2VyLT5s YXN0X3JlY3ZfdGltZSA9Ci0JCU15TG9naWNhbFJlcFdvcmtlci0+cmVwbHlfdGltZSA9IEdldEN1 cnJlbnRUaW1lc3RhbXAoKTsKLQotCS8qIExvYWQgdGhlIGxpYnBxLXNwZWNpZmljIGZ1bmN0aW9u cyAqLwotCWxvYWRfZmlsZSgibGlicHF3YWxyZWNlaXZlciIsIGZhbHNlKTsKIAogCS8qIFJ1biBh cyByZXBsaWNhIHNlc3Npb24gcmVwbGljYXRpb24gcm9sZS4gKi8KIAlTZXRDb25maWdPcHRpb24o InNlc3Npb25fcmVwbGljYXRpb25fcm9sZSIsICJyZXBsaWNhIiwKQEAgLTM2NTksMTIgKzQwMjcs NTAgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQllcmVwb3J0KExPRywKIAkJ CQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3Jr ZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIsIHRhYmxlIFwiJXNcIiBoYXMgc3RhcnRlZCIsCiAJ CQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSwgZ2V0X3JlbF9uYW1lKE15TG9naWNhbFJlcFdvcmtl ci0+cmVsaWQpKSkpOworCWVsc2UgaWYgKGFtX2FwcGx5X2Jnd29ya2VyKCkpCisJCWVyZXBvcnQo TE9HLAorCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIHN0YXJ0ZWQiLAorCQkJCQkJTXlTdWJz Y3JpcHRpb24tPm5hbWUpKSk7CiAJZWxzZQogCQllcmVwb3J0KExPRywKIAkJCQkoZXJybXNnKCJs b2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiBo YXMgc3RhcnRlZCIsCiAJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAogCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOworfQorCisvKiBMb2dpY2FsIFJlcGxpY2F0aW9uIEFwcGx5IHdv cmtlciBlbnRyeSBwb2ludCAqLwordm9pZAorQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJn KQoreworCWludAkJCXdvcmtlcl9zbG90ID0gRGF0dW1HZXRJbnQzMihtYWluX2FyZyk7CisJY2hh cgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07CisJWExvZ1JlY1B0cglvcmlnaW5fc3RhcnRwb3Mg PSBJbnZhbGlkWExvZ1JlY1B0cjsKKwljaGFyCSAgICpteXNsb3RuYW1lID0gTlVMTDsKKwlXYWxS Y3ZTdHJlYW1PcHRpb25zIG9wdGlvbnM7CisJaW50CQkJc2VydmVyX3ZlcnNpb247CisKKwkvKiBB dHRhY2ggdG8gc2xvdCAqLworCWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7 CisKKwkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcgKi8KKwlwcXNpZ25hbChTSUdIVVAsIFNpZ25h bEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOworCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7CisJQmFj a2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7CisKKwkvKgorCSAqIFdlIGRvbid0IGN1cnJl bnRseSBuZWVkIGFueSBSZXNvdXJjZU93bmVyIGluIGEgd2FscmVjZWl2ZXIgcHJvY2VzcywgYnV0 CisJICogaWYgd2UgZGlkLCB3ZSBjb3VsZCBjYWxsIENyZWF0ZUF1eFByb2Nlc3NSZXNvdXJjZU93 bmVyIGhlcmUuCisJICovCisKKwkvKiBJbml0aWFsaXNlIHN0YXRzIHRvIGEgc2FuaXNoIHZhbHVl ICovCisJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRfdGltZSA9IE15TG9naWNhbFJlcFdv cmtlci0+bGFzdF9yZWN2X3RpbWUgPQorCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnJlcGx5X3RpbWUg PSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisKKwkvKiBMb2FkIHRoZSBsaWJwcS1zcGVjaWZpYyBm dW5jdGlvbnMgKi8KKwlsb2FkX2ZpbGUoImxpYnBxd2FscmVjZWl2ZXIiLCBmYWxzZSk7CisKKwlJ bml0aWFsaXplQXBwbHlXb3JrZXIoKTsKIAogCS8qIENvbm5lY3QgdG8gdGhlIG9yaWdpbiBhbmQg c3RhcnQgdGhlIHJlcGxpY2F0aW9uLiAqLwogCWVsb2coREVCVUcxLCAiY29ubmVjdGluZyB0byBw dWJsaXNoZXIgdXNpbmcgY29ubmVjdGlvbiBzdHJpbmcgXCIlc1wiIiwKQEAgLTM3MTAsNyArNDEx Niw3IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJb3JpZ2luaWQgPSByZXBs b3JpZ2luX2J5X25hbWUob3JpZ2lubmFtZSwgdHJ1ZSk7CiAJCWlmICghT2lkSXNWYWxpZChvcmln aW5pZCkpCiAJCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fY3JlYXRlKG9yaWdpbm5hbWUpOwotCQly ZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQpOworCQlyZXBsb3JpZ2luX3Nlc3Npb25f c2V0dXAob3JpZ2luaWQsIDApOwogCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gb3JpZ2lu aWQ7CiAJCW9yaWdpbl9zdGFydHBvcyA9IHJlcGxvcmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3Mo ZmFsc2UpOwogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKQEAgLTM3NTEsMTMgKzQxNTcs MTQgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCiAJc2VydmVyX3ZlcnNpb24g PSB3YWxyY3Zfc2VydmVyX3ZlcnNpb24oTG9nUmVwV29ya2VyV2FsUmN2Q29ubik7CiAJb3B0aW9u cy5wcm90by5sb2dpY2FsLnByb3RvX3ZlcnNpb24gPQorCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNjAw MDAgPyBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSA6CiAJCXNl cnZlcl92ZXJzaW9uID49IDE1MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lP Tl9OVU0gOgogCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNDAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1NU UkVBTV9WRVJTSU9OX05VTSA6CiAJCUxPR0lDQUxSRVBfUFJPVE9fVkVSU0lPTl9OVU07CiAKIAlv cHRpb25zLnByb3RvLmxvZ2ljYWwucHVibGljYXRpb25fbmFtZXMgPSBNeVN1YnNjcmlwdGlvbi0+ cHVibGljYXRpb25zOwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5iaW5hcnkgPSBNeVN1YnNjcmlw dGlvbi0+YmluYXJ5OwotCW9wdGlvbnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmcgPSBNeVN1YnNj cmlwdGlvbi0+c3RyZWFtOworCW9wdGlvbnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmcgPSAoTXlT dWJzY3JpcHRpb24tPnN0cmVhbSAhPSBTVUJTVFJFQU1fT0ZGKTsKIAlvcHRpb25zLnByb3RvLmxv Z2ljYWwudHdvcGhhc2UgPSBmYWxzZTsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwub3JpZ2luID0g cHN0cmR1cChNeVN1YnNjcmlwdGlvbi0+b3JpZ2luKTsKIApAQCAtMzkxNiw3ICs0MzIzLDggQEAg Y2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbikKIAlYTG9n UmVjUHRyCW15c2tpcGxzbiA9IE15U3Vic2NyaXB0aW9uLT5za2lwbHNuOwogCWJvb2wJCXN0YXJ0 ZWRfdHggPSBmYWxzZTsKIAotCWlmIChsaWtlbHkoWExvZ1JlY1B0cklzSW52YWxpZChteXNraXBs c24pKSkKKwlpZiAobGlrZWx5KFhMb2dSZWNQdHJJc0ludmFsaWQobXlza2lwbHNuKSkgfHwKKwkJ YW1fYXBwbHlfYmd3b3JrZXIoKSkKIAkJcmV0dXJuOwogCiAJaWYgKCFJc1RyYW5zYWN0aW9uU3Rh dGUoKSkKQEAgLTM5ODgsNyArNDM5Niw3IEBAIGNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihY TG9nUmVjUHRyIGZpbmlzaF9sc24pCiB9CiAKIC8qIEVycm9yIGNhbGxiYWNrIHRvIGdpdmUgbW9y ZSBjb250ZXh0IGluZm8gYWJvdXQgdGhlIGNoYW5nZSBiZWluZyBhcHBsaWVkICovCi1zdGF0aWMg dm9pZAordm9pZAogYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKQogewogCUFwcGx5RXJy b3JDYWxsYmFja0FyZyAqZXJyYXJnID0gJmFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZzsKQEAgLTQw MTYsMjMgKzQ0MjQsNDcgQEAgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKQogCQkJCQkg ICBlcnJhcmctPnJlbW90ZV94aWQsCiAJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZp bmlzaF9sc24pKTsKIAl9Ci0JZWxzZSBpZiAoZXJyYXJnLT5yZW1vdGVfYXR0bnVtIDwgMCkKLQkJ ZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2lu IFwiJXNcIiBkdXJpbmcgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIl cy4lc1wiIGluIHRyYW5zYWN0aW9uICV1IGZpbmlzaGVkIGF0ICVYLyVYIiwKLQkJCQkgICBlcnJh cmctPm9yaWdpbl9uYW1lLAotCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+ Y29tbWFuZCksCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAotCQkJCSAg IGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbW90ZV94 aWQsCi0JCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOwogCWVsc2UK LQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3Jp Z2luIFwiJXNcIiBkdXJpbmcgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24g XCIlcy4lc1wiIGNvbHVtbiBcIiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUgZmluaXNoZWQgYXQgJVgv JVgiLAotCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCi0JCQkJICAgbG9naWNhbHJlcF9tZXNz YWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVs Lm5zcG5hbWUsCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAotCQkJCSAg IGVycmFyZy0+cmVsLT5yZW1vdGVyZWwuYXR0bmFtZXNbZXJyYXJnLT5yZW1vdGVfYXR0bnVtXSwK LQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCi0JCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFy Zy0+ZmluaXNoX2xzbikpOworCXsKKwkJaWYgKGVycmFyZy0+cmVtb3RlX2F0dG51bSA8IDApCisJ CXsKKwkJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKGVycmFyZy0+ZmluaXNoX2xzbikpCisJCQkJ ZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2lu IFwiJXNcIiBkdXJpbmcgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIl cy4lc1wiIGluIHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUs CisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJ CQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5y ZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkKTsKKwkJ CWVsc2UKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNh dGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCBy ZWxhdGlvbiBcIiVzLiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUgZmluaXNoZWQgYXQgJVgvJVgiLAor CQkJCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKKwkJCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2Fn ZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVs Lm5zcG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJ CQkgICBlcnJhcmctPnJlbW90ZV94aWQsCisJCQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJn LT5maW5pc2hfbHNuKSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlpZiAoWExvZ1JlY1B0cklzSW52 YWxpZChlcnJhcmctPmZpbmlzaF9sc24pKQorCQkJCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVt b3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIFwiJXNcIiBmb3Ig cmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBjb2x1bW4gXCIlc1wiIGluIHRy YW5zYWN0aW9uICV1IiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBs b2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJn LT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJl bC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJh cmctPnJlbW90ZV9hdHRudW1dLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkKTsKKwkJCWVs c2UKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlv biBvcmlnaW4gXCIlc1wiIGR1cmluZyBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxh dGlvbiBcIiVzLiVzXCIgY29sdW1uIFwiJXNcIiBpbiB0cmFuc2FjdGlvbiAldSBmaW5pc2hlZCBh dCAlWC8lWCIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAorCQkJCQkJICAgbG9naWNh bHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJCSAgIGVycmFyZy0+cmVs LT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVs bmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwuYXR0bmFtZXNbZXJyYXJnLT5y ZW1vdGVfYXR0bnVtXSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKKwkJCQkJCSAgIExT Tl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24pKTsKKwkJfQorCX0KIH0KIAogLyogU2V0 IHRyYW5zYWN0aW9uIGluZm9ybWF0aW9uIG9mIGFwcGx5IGVycm9yIGNhbGxiYWNrICovCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCA2MmUwZmZlLi5k M2YxOWI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291 dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMK QEAgLTE4NDMsNiArMTg0Myw5IEBAIHBnb3V0cHV0X3N0cmVhbV9hYm9ydChzdHJ1Y3QgTG9naWNh bERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkgIFhMb2dSZWNQdHIgYWJvcnRfbHNuKQogewog CVJlb3JkZXJCdWZmZXJUWE4gKnRvcHR4bjsKKwlQR091dHB1dERhdGEgKmRhdGEgPSAoUEdPdXRw dXREYXRhICopIGN0eC0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCWJvb2wgd3JpdGVfYWJvcnRf bHNuID0gKGRhdGEtPnByb3RvY29sX3ZlcnNpb24gPj0KKwkJCQkJCQlMT0dJQ0FMUkVQX1BST1RP X1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSk7CiAKIAkvKgogCSAqIFRoZSBhYm9ydCBzaG91 bGQgaGFwcGVuIG91dHNpZGUgc3RyZWFtaW5nIGJsb2NrLCBldmVuIGZvciBzdHJlYW1lZApAQCAt MTg1Niw3ICsxODU5LDggQEAgcGdvdXRwdXRfc3RyZWFtX2Fib3J0KHN0cnVjdCBMb2dpY2FsRGVj b2RpbmdDb250ZXh0ICpjdHgsCiAJQXNzZXJ0KHJidHhuX2lzX3N0cmVhbWVkKHRvcHR4bikpOwog CiAJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1ZSk7Ci0JbG9naWNhbHJlcF93cml0 ZV9zdHJlYW1fYWJvcnQoY3R4LT5vdXQsIHRvcHR4bi0+eGlkLCB0eG4tPnhpZCk7CisJbG9naWNh bHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoY3R4LT5vdXQsIHRvcHR4bi0+eGlkLCB0eG4sIGFib3J0 X2xzbiwKKwkJCQkJCQkJICB3cml0ZV9hYm9ydF9sc24pOwogCU91dHB1dFBsdWdpbldyaXRlKGN0 eCwgdHJ1ZSk7CiAKIAljbGVhbnVwX3JlbF9zeW5jX2NhY2hlKHRvcHR4bi0+eGlkLCBmYWxzZSk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5kZXggMjFhOWZjMC4uOThhOTE2MyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpAQCAtMjIsNiArMjIsNyBAQAogI2lu Y2x1ZGUgImNvbW1hbmRzL2FzeW5jLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVk ZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgogI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0 aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKQEAgLTY1Nyw2ICs2NTgs OSBAQCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcihTSUdOQUxfQVJHUykKIAlpZiAoQ2hlY2tQ cm9jU2lnbmFsKFBST0NTSUdfTE9HX01FTU9SWV9DT05URVhUKSkKIAkJSGFuZGxlTG9nTWVtb3J5 Q29udGV4dEludGVycnVwdCgpOwogCisJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX0FQUExZ X0JHV09SS0VSX01FU1NBR0UpKQorCQlIYW5kbGVBcHBseUJnd29ya2VyTWVzc2FnZUludGVycnVw dCgpOworCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0RB VEFCQVNFKSkKIAkJUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChQUk9DU0lHX1JFQ09WRVJZX0NP TkZMSUNUX0RBVEFCQVNFKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jl cy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDdiZWM0ZTQuLjdlZGIzZDEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2Vu ZC90Y29wL3Bvc3RncmVzLmMKQEAgLTMzNzcsNiArMzM3Nyw5IEBAIFByb2Nlc3NJbnRlcnJ1cHRz KHZvaWQpCiAKIAlpZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcpCiAJCVByb2Nlc3NMb2dNZW1v cnlDb250ZXh0SW50ZXJydXB0KCk7CisKKwlpZiAoQXBwbHlCZ3dvcmtlck1lc3NhZ2VQZW5kaW5n KQorCQlIYW5kbGVBcHBseUJnd29ya2VyTWVzc2FnZXMoKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwppbmRleCA5MmYyNGE2Li43YjY2NzY2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCkBAIC0zODgsNiArMzg4LDkgQEAgcGdz dGF0X2dldF93YWl0X2lwYyhXYWl0RXZlbnRJUEMgdykKIAkJY2FzZSBXQUlUX0VWRU5UX0hBU0hf R1JPV19CVUNLRVRTX1JFSU5TRVJUOgogCQkJZXZlbnRfbmFtZSA9ICJIYXNoR3Jvd0J1Y2tldHNS ZWluc2VydCI7CiAJCQlicmVhazsKKwkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfQVBQTFlfQkdX T1JLRVJfU1RBVEVfQ0hBTkdFOgorCQkJZXZlbnRfbmFtZSA9ICJMb2dpY2FsQXBwbHlCZ3dvcmtl clN0YXRlQ2hhbmdlIjsKKwkJCWJyZWFrOwogCQljYXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5D X0RBVEE6CiAJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxTeW5jRGF0YSI7CiAJCQlicmVhazsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgYi9zcmMvYmFja2VuZC91dGls cy9taXNjL2d1Yy5jCmluZGV4IDlmYmJmYjEuLjgxNmIxMDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwpA QCAtMzIyMyw2ICszMjIzLDE4IEBAIHN0YXRpYyBzdHJ1Y3QgY29uZmlnX2ludCBDb25maWd1cmVO YW1lc0ludFtdID0KIAl9LAogCiAJeworCQl7Im1heF9hcHBseV9iZ3dvcmtlcnNfcGVyX3N1YnNj cmlwdGlvbiIsCisJCQlQR0NfU0lHSFVQLAorCQkJUkVQTElDQVRJT05fU1VCU0NSSUJFUlMsCisJ CQlnZXR0ZXh0X25vb3AoIk1heGltdW0gbnVtYmVyIG9mIGFwcGx5IGJhY2tncm91bmQgd29ya2Vy cyBwZXIgc3Vic2NyaXB0aW9uLiIpLAorCQkJTlVMTCwKKwkJfSwKKwkJJm1heF9hcHBseV9iZ3dv cmtlcnNfcGVyX3N1YnNjcmlwdGlvbiwKKwkJMiwgMCwgTUFYX0JBQ0tFTkRTLAorCQlOVUxMLCBO VUxMLCBOVUxMCisJfSwKKworCXsKIAkJeyJsb2dfcm90YXRpb25fYWdlIiwgUEdDX1NJR0hVUCwg TE9HR0lOR19XSEVSRSwKIAkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgYW1vdW50IG9mIHRpbWUg dG8gd2FpdCBiZWZvcmUgZm9yY2luZyAiCiAJCQkJCQkgImxvZyBmaWxlIHJvdGF0aW9uLiIpLApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxl IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IDkw YmVjMDUuLjczNGQwN2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdy ZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwu Y29uZi5zYW1wbGUKQEAgLTM2MCw2ICszNjAsNyBAQAogI21heF9sb2dpY2FsX3JlcGxpY2F0aW9u X3dvcmtlcnMgPSA0CSMgdGFrZW4gZnJvbSBtYXhfd29ya2VyX3Byb2Nlc3NlcwogCQkJCQkjIChj aGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKICNtYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRp b24gPSAyCSMgdGFrZW4gZnJvbSBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzCisjbWF4 X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMgkjIHRha2VuIGZyb20gbWF4X2xv Z2ljYWxfcmVwbGljYXRpb25fd29ya2VycwogCiAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jCmluZGV4IDJjNjg5MTUuLjQ2YTNkMDEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNDQ4MCw3ICs0 NDgwLDcgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCWlmIChmb3V0LT5yZW1v dGVWZXJzaW9uID49IDE0MDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgcy5z dWJzdHJlYW0sXG4iKTsKIAllbHNlCi0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIGZh bHNlIEFTIHN1YnN0cmVhbSxcbiIpOworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiAn ZicgQVMgc3Vic3RyZWFtLFxuIik7CiAKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNTAw MDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LApAQCAtNDYxNyw4ICs0NjE3LDEwIEBA IGR1bXBTdWJzY3JpcHRpb24oQXJjaGl2ZSAqZm91dCwgY29uc3QgU3Vic2NyaXB0aW9uSW5mbyAq c3ViaW5mbykKIAlpZiAoc3RyY21wKHN1YmluZm8tPnN1YmJpbmFyeSwgInQiKSA9PSAwKQogCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgYmluYXJ5ID0gdHJ1ZSIpOwogCi0JaWYgKHN0 cmNtcChzdWJpbmZvLT5zdWJzdHJlYW0sICJmIikgIT0gMCkKKwlpZiAoc3RyY21wKHN1YmluZm8t PnN1YnN0cmVhbSwgInQiKSA9PSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwg c3RyZWFtaW5nID0gb24iKTsKKwllbHNlIGlmIChzdHJjbXAoc3ViaW5mby0+c3Vic3RyZWFtLCAi cCIpID09IDApCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBzdHJlYW1pbmcgPSBw YXJhbGxlbCIpOwogCiAJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJ0d29waGFzZXN0YXRlLCB0d29f cGhhc2VfZGlzYWJsZWQpICE9IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCB0 d29fcGhhc2UgPSBvbiIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJz Y3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKaW5kZXgg N2I5ODcxNC4uZjRlMWU5NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJz Y3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBA IC04MCw3ICs4MCw4IEBAIENBVEFMT0cocGdfc3Vic2NyaXB0aW9uLDYxMDAsU3Vic2NyaXB0aW9u UmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxBVElPTiBCS0lfUk9XCiAJYm9vbAkJc3ViYmluYXJ5 OwkJLyogVHJ1ZSBpZiB0aGUgc3Vic2NyaXB0aW9uIHdhbnRzIHRoZQogCQkJCQkJCQkgKiBwdWJs aXNoZXIgdG8gc2VuZCBkYXRhIGluIGJpbmFyeSAqLwogCi0JYm9vbAkJc3Vic3RyZWFtOwkJLyog U3RyZWFtIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gKi8KKwljaGFyCQlzdWJzdHJlYW07CQkv KiBTdHJlYW0gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLgorCQkJCQkJCQkgKiBTZWUgU1VCU1RS RUFNX3h4eCBjb25zdGFudHMuICovCiAKIAljaGFyCQlzdWJ0d29waGFzZXN0YXRlOwkvKiBTdHJl YW0gdHdvLXBoYXNlIHRyYW5zYWN0aW9ucyAqLwogCkBAIC0xMjQsNyArMTI1LDggQEAgdHlwZWRl ZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJYm9vbAkJZW5hYmxlZDsJCS8qIEluZGljYXRlcyBpZiB0 aGUgc3Vic2NyaXB0aW9uIGlzIGVuYWJsZWQgKi8KIAlib29sCQliaW5hcnk7CQkJLyogSW5kaWNh dGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gd2FudHMgZGF0YSBpbgogCQkJCQkJCQkgKiBiaW5hcnkg Zm9ybWF0ICovCi0JYm9vbAkJc3RyZWFtOwkJCS8qIEFsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVz cyB0cmFuc2FjdGlvbnMuICovCisJY2hhcgkJc3RyZWFtOwkJCS8qIEFsbG93IHN0cmVhbWluZyBp bi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuCisJCQkJCQkJCSAqIFNlZSBTVUJTVFJFQU1feHh4IGNv bnN0YW50cy4gKi8KIAljaGFyCQl0d29waGFzZXN0YXRlOwkvKiBBbGxvdyBzdHJlYW1pbmcgdHdv LXBoYXNlIHRyYW5zYWN0aW9ucyAqLwogCWJvb2wJCWRpc2FibGVvbmVycjsJLyogSW5kaWNhdGVz IGlmIHRoZSBzdWJzY3JpcHRpb24gc2hvdWxkIGJlCiAJCQkJCQkJCSAqIGF1dG9tYXRpY2FsbHkg ZGlzYWJsZWQgaWYgYSB3b3JrZXIgZXJyb3IKQEAgLTEzNyw2ICsxMzksMjEgQEAgdHlwZWRlZiBz dHJ1Y3QgU3Vic2NyaXB0aW9uCiAJCQkJCQkJCSAqIHNwZWNpZmllZCBvcmlnaW4gKi8KIH0gU3Vi c2NyaXB0aW9uOwogCisvKiBEaXNhbGxvdyBzdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rp b25zLiAqLworI2RlZmluZSBTVUJTVFJFQU1fT0ZGICdmJworCisvKgorICogU3RyZWFtaW5nIGlu LXByb2dyZXNzIHRyYW5zYWN0aW9ucyBhcmUgd3JpdHRlbiB0byBhIHRlbXBvcmFyeSBmaWxlIGFu ZAorICogYXBwbGllZCBvbmx5IGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24g dXBzdHJlYW0uCisgKi8KKyNkZWZpbmUgU1VCU1RSRUFNX09OICd0JworCisvKgorICogU3RyZWFt aW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyBhcmUgYXBwbGllZCBpbW1lZGlhdGVseSB2aWEg YSBiYWNrZ3JvdW5kCisgKiB3b3JrZXIuCisgKi8KKyNkZWZpbmUgU1VCU1RSRUFNX1BBUkFMTEVM ICdwJworCiBleHRlcm4gU3Vic2NyaXB0aW9uICpHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBi b29sIG1pc3Npbmdfb2spOwogZXh0ZXJuIHZvaWQgRnJlZVN1YnNjcmlwdGlvbihTdWJzY3JpcHRp b24gKnN1Yik7CiBleHRlcm4gdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uKE9pZCBzdWJpZCk7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCmluZGV4IGYxZTI4MjEuLmFj OGVmOTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hl ci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCkBAIC0x NCw2ICsxNCw3IEBACiAKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X2xvZ2ljYWxfcmVwbGlj YXRpb25fd29ya2VyczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3N5bmNfd29ya2Vyc19w ZXJfc3Vic2NyaXB0aW9uOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfYXBwbHlfYmd3b3Jr ZXJzX3Blcl9zdWJzY3JpcHRpb247CiAKIGV4dGVybiB2b2lkIEFwcGx5TGF1bmNoZXJSZWdpc3Rl cih2b2lkKTsKIGV4dGVybiB2b2lkIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKaW5kZXggYTc3MWFiOC4uZWIwZmQy NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysr IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTMyLDEyICszMiwx NyBAQAogICoKICAqIExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0gaXMgdGhl IG1pbmltdW0gcHJvdG9jb2wgdmVyc2lvbiB3aXRoCiAgKiBzdXBwb3J0IGZvciB0d28tcGhhc2Ug Y29tbWl0IGRlY29kaW5nIChhdCBwcmVwYXJlIHRpbWUpLiBJbnRyb2R1Y2VkIGluIFBHMTUuCisg KgorICogTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gaXMgdGhl IG1pbmltdW0gcHJvdG9jb2wgdmVyc2lvbgorICogd2l0aCBzdXBwb3J0IGZvciBzdHJlYW1pbmcg bGFyZ2UgdHJhbnNhY3Rpb25zIHVzaW5nIGFwcGx5IGJhY2tncm91bmQKKyAqIHdvcmtlcnMuIElu dHJvZHVjZWQgaW4gUEcxNi4KICAqLwogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX01JTl9WRVJT SU9OX05VTSAxCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fVkVSU0lPTl9OVU0gMQogI2RlZmlu ZSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05VTSAyCiAjZGVmaW5lIExPR0lDQUxS RVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0gMwotI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RP X01BWF9WRVJTSU9OX05VTSBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNCisj ZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNIDQKKyNk ZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19NQVhfVkVSU0lPTl9OVU0gTE9HSUNBTFJFUF9QUk9UT19T VFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0KIAogLyoKICAqIExvZ2ljYWwgbWVzc2FnZSB0eXBl cwpAQCAtMTc1LDYgKzE4MCwxNyBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwUm9sbGJhY2tQ cmVwYXJlZFR4bkRhdGEKIAljaGFyCQlnaWRbR0lEU0laRV07CiB9IExvZ2ljYWxSZXBSb2xsYmFj a1ByZXBhcmVkVHhuRGF0YTsKIAorLyoKKyAqIFRyYW5zYWN0aW9uIHByb3RvY29sIGluZm9ybWF0 aW9uIGZvciBzdHJlYW0gYWJvcnQuCisgKi8KK3R5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBTdHJl YW1BYm9ydERhdGEKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIHN1Ynhp ZDsKKwlYTG9nUmVjUHRyCWFib3J0X2xzbjsKKwlUaW1lc3RhbXBUeiBhYm9ydF90aW1lOworfSBM b2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhOworCiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRl X2JlZ2luKFN0cmluZ0luZm8gb3V0LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4pOwogZXh0ZXJuIHZv aWQgbG9naWNhbHJlcF9yZWFkX2JlZ2luKFN0cmluZ0luZm8gaW4sCiAJCQkJCQkJCSAgTG9naWNh bFJlcEJlZ2luRGF0YSAqYmVnaW5fZGF0YSk7CkBAIC0yNDYsOSArMjYyLDEyIEBAIGV4dGVybiB2 b2lkIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIG91dCwgUmVvcmRl ckJ1ZmZlclRYTiAqdHhuCiBleHRlcm4gVHJhbnNhY3Rpb25JZCBsb2dpY2FscmVwX3JlYWRfc3Ry ZWFtX2NvbW1pdChTdHJpbmdJbmZvIG91dCwKIAkJCQkJCQkJCQkJCSAgIExvZ2ljYWxSZXBDb21t aXREYXRhICpjb21taXRfZGF0YSk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3N0cmVh bV9hYm9ydChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCi0JCQkJCQkJCQkJICBU cmFuc2FjdGlvbklkIHN1YnhpZCk7Ci1leHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfc3RyZWFt X2Fib3J0KFN0cmluZ0luZm8gaW4sIFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJCQkJCQkJCQkgVHJh bnNhY3Rpb25JZCAqc3VieGlkKTsKKwkJCQkJCQkJCQkgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwK KwkJCQkJCQkJCQkgIFhMb2dSZWNQdHIgYWJvcnRfbHNuLAorCQkJCQkJCQkJCSAgYm9vbCB3cml0 ZV9hYm9ydF9sc24pOworZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChT dHJpbmdJbmZvIGluLAorCQkJCQkJCQkJCSBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9y dF9kYXRhLAorCQkJCQkJCQkJCSBib29sIHJlYWRfYWJvcnRfbHNuKTsKIGV4dGVybiBjaGFyICps b2dpY2FscmVwX21lc3NhZ2VfdHlwZShMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24pOwogCiAjZW5k aWYJCQkJCQkJLyogTE9HSUNBTF9QUk9UT19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dp Y2Fsd29ya2VyLmgKaW5kZXggY2QxYjZlOC4uMDAwZTIzZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL2xvZ2ljYWx3b3JrZXIuaApAQCAtMTIsOCArMTIsMTMgQEAKICNpZm5kZWYgTE9HSUNBTFdP UktFUl9ICiAjZGVmaW5lIExPR0lDQUxXT1JLRVJfSAogCitleHRlcm4gUEdETExJTVBPUlQgdm9s YXRpbGUgYm9vbCBBcHBseUJnd29ya2VyTWVzc2FnZVBlbmRpbmc7CisKIGV4dGVybiB2b2lkIEFw cGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZyk7CitleHRlcm4gdm9pZCBBcHBseUJnd29ya2Vy TWFpbihEYXR1bSBtYWluX2FyZyk7CiAKIGV4dGVybiBib29sIElzTG9naWNhbFdvcmtlcih2b2lk KTsKK2V4dGVybiB2b2lkIEhhbmRsZUFwcGx5Qmd3b3JrZXJNZXNzYWdlSW50ZXJydXB0KHZvaWQp OworZXh0ZXJuIHZvaWQgSGFuZGxlQXBwbHlCZ3dvcmtlck1lc3NhZ2VzKHZvaWQpOwogCiAjZW5k aWYJCQkJCQkJLyogTE9HSUNBTFdPUktFUl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9vcmlnaW4uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oCmlu ZGV4IDJkMWI1ZTUuLmU4ZWQ0NTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L29yaWdpbi5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oCkBAIC01Myw3 ICs1Myw3IEBAIGV4dGVybiBYTG9nUmVjUHRyIHJlcGxvcmlnaW5fZ2V0X3Byb2dyZXNzKFJlcE9y aWdpbklkIG5vZGUsIGJvb2wgZmx1c2gpOwogCiBleHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Np b25fYWR2YW5jZShYTG9nUmVjUHRyIHJlbW90ZV9jb21taXQsCiAJCQkJCQkJCQkgICBYTG9nUmVj UHRyIGxvY2FsX2NvbW1pdCk7Ci1leHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAo UmVwT3JpZ2luSWQgbm9kZSk7CitleHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAo UmVwT3JpZ2luSWQgbm9kZSwgaW50IGFwcGx5X2xlYWRlcl9waWQpOwogZXh0ZXJuIHZvaWQgcmVw bG9yaWdpbl9zZXNzaW9uX3Jlc2V0KHZvaWQpOwogZXh0ZXJuIFhMb2dSZWNQdHIgcmVwbG9yaWdp bl9zZXNzaW9uX2dldF9wcm9ncmVzcyhib29sIGZsdXNoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vcmVvcmRlcmJ1ZmZlci5oCmluZGV4IDg2OTU5MDEuLmE3NGI2MTYgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAorKysgYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKQEAgLTMwMSw2ICszMDEsNyBAQCB0eXBlZGVmIHN0 cnVjdCBSZW9yZGVyQnVmZmVyVFhOCiAJewogCQlUaW1lc3RhbXBUeiBjb21taXRfdGltZTsKIAkJ VGltZXN0YW1wVHogcHJlcGFyZV90aW1lOworCQlUaW1lc3RhbXBUeiBhYm9ydF90aW1lOwogCX0J CQl4YWN0X3RpbWU7CiAKIAkvKgpAQCAtNjU4LDkgKzY1OSwxMSBAQCBleHRlcm4gdm9pZCBSZW9y ZGVyQnVmZmVyRmluaXNoUHJlcGFyZWQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQg eGlkLAogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFzc2lnbkNoaWxkKFJlb3JkZXJCdWZmZXIg KiwgVHJhbnNhY3Rpb25JZCwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBjb21taXRfbHNuKTsK IGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJDb21taXRDaGlsZChSZW9yZGVyQnVmZmVyICosIFRy YW5zYWN0aW9uSWQsIFRyYW5zYWN0aW9uSWQsCiAJCQkJCQkJCQkgWExvZ1JlY1B0ciBjb21taXRf bHNuLCBYTG9nUmVjUHRyIGVuZF9sc24pOwotZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFib3J0 KFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBsc24pOworZXh0ZXJu IHZvaWQgUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwg WExvZ1JlY1B0ciBsc24sCisJCQkJCQkJICAgVGltZXN0YW1wVHogYWJvcnRfdGltZSk7CiBleHRl cm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnRPbGQoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlv bklkIHhpZCk7Ci1leHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIg KiwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBsc24pOworZXh0ZXJuIHZvaWQgUmVvcmRlckJ1 ZmZlckZvcmdldChSZW9yZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQsIFhMb2dSZWNQdHIgbHNu LAorCQkJCQkJCQlUaW1lc3RhbXBUeiBhYm9ydF90aW1lKTsKIGV4dGVybiB2b2lkIFJlb3JkZXJC dWZmZXJJbnZhbGlkYXRlKFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0 ciBsc24pOwogCiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyU2V0QmFzZVNuYXBzaG90KFJlb3Jk ZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBsc24sIHN0cnVjdCBTbmFwc2hv dERhdGEgKnNuYXApOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2Vy X2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApp bmRleCA5MDE4NDVhLi40MzA4MDA2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJf aW50ZXJuYWwuaApAQCAtMTcsOCArMTcsMTIgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImRhdGF0 eXBlL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInJlcGxp Y2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmlsZXNldC5oIgog I2luY2x1ZGUgInN0b3JhZ2UvbG9jay5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htX21xLmgiCisj aW5jbHVkZSAic3RvcmFnZS9zaG1fdG9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAK IApAQCAtNjAsNiArNjQsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFdvcmtlcgogCSAq LwogCUZpbGVTZXQgICAgKnN0cmVhbV9maWxlc2V0OwogCisJLyoKKwkgKiBQSUQgb2YgbWFpbiBh cHBseSB3b3JrZXIgaWYgdGhpcyBzbG90IGlzIHVzZWQgZm9yIGFuIGFwcGx5IGJhY2tncm91bmQK KwkgKiB3b3JrZXIsIEludmFsaWRQaWQgb3RoZXJ3aXNlLgorCSAqLworCXBpZF90CQkJYXBwbHlf bGVhZGVyX3BpZDsKKwogCS8qIFN0YXRzLiAqLwogCVhMb2dSZWNQdHIJbGFzdF9sc247CiAJVGlt ZXN0YW1wVHogbGFzdF9zZW5kX3RpbWU7CkBAIC02OCw4ICs3OCw4NCBAQCB0eXBlZGVmIHN0cnVj dCBMb2dpY2FsUmVwV29ya2VyCiAJVGltZXN0YW1wVHogcmVwbHlfdGltZTsKIH0gTG9naWNhbFJl cFdvcmtlcjsKIAorLyogU3RydWN0IGZvciBzYXZpbmcgYW5kIHJlc3RvcmluZyBhcHBseSBlcnJj b250ZXh0IGluZm9ybWF0aW9uICovCit0eXBlZGVmIHN0cnVjdCBBcHBseUVycm9yQ2FsbGJhY2tB cmcKK3sKKwlMb2dpY2FsUmVwTXNnVHlwZSBjb21tYW5kOwkvKiAwIGlmIGludmFsaWQgKi8KKwlM b2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbDsKKworCS8qIFJlbW90ZSBub2RlIGluZm9ybWF0aW9u ICovCisJaW50CQkJcmVtb3RlX2F0dG51bTsJLyogLTEgaWYgaW52YWxpZCAqLworCVRyYW5zYWN0 aW9uSWQgcmVtb3RlX3hpZDsKKwlYTG9nUmVjUHRyCWZpbmlzaF9sc247CisJY2hhcgkgICAqb3Jp Z2luX25hbWU7Cit9IEFwcGx5RXJyb3JDYWxsYmFja0FyZzsKKworLyoKKyAqIEFwcGx5IGJhY2tn cm91bmQgd29ya2VyIHN0YXRlcy4KKyAqLwordHlwZWRlZiBlbnVtIEFwcGx5Qmd3b3JrZXJTdGF0 ZQoreworCUFQUExZX0JHV09SS0VSX0JVU1ksCQkvKiBhc3NpZ25lZCB0byBhIHRyYW5zYWN0aW9u ICovCisJQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQJCS8qIHRyYW5zYWN0aW9uIGlzIGNvbXBsZXRl ZCAqLworfSBBcHBseUJnd29ya2VyU3RhdGU7CisKKy8qCisgKiBTdHJ1Y3QgZm9yIHNoYXJpbmcg aW5mb3JtYXRpb24gYmV0d2VlbiBhcHBseSBtYWluIGFuZCBhcHBseSBiYWNrZ3JvdW5kCisgKiB3 b3JrZXJzLgorICovCit0eXBlZGVmIHN0cnVjdCBBcHBseUJnd29ya2VyU2hhcmVkCit7CisJc2xv Y2tfdAltdXRleDsKKworCS8qIFN0YXRlIG9mIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLiAqLwor CUFwcGx5Qmd3b3JrZXJTdGF0ZQlzdGF0ZTsKKworCS8qIExvZ2ljYWwgcHJvdG9jb2wgdmVyc2lv bi4gKi8KKwl1aW50MzIJcHJvdG9fdmVyc2lvbjsKKworCVRyYW5zYWN0aW9uSWQJc3RyZWFtX3hp ZDsKKworCS8qIElEIG9mIGFwcGx5IGJhY2tncm91bmQgd29ya2VyICovCisJdWludDMyCXdvcmtl cl9pZDsKKworCS8qIEluZm9ybWF0aW9uIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgTG9naWNhbFJl cFdvcmtlciBzbG90ICovCisJdWludDE2CQkJCQlsb2dpY2FscmVwX3dvcmtlcl9nZW5lcmF0aW9u OworCisJaW50CQkJCQkJbG9naWNhbHJlcF93b3JrZXJfc2xvdF9ubzsKK30gQXBwbHlCZ3dvcmtl clNoYXJlZDsKKworLyoKKyAqIEluZm9ybWF0aW9uIHdoaWNoIGlzIHVzZWQgdG8gbWFuYWdlIHRo ZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgQXBwbHlCZ3dv cmtlckluZm8KK3sKKwlzaG1fbXFfaGFuZGxlCQkJKm1xX2hhbmRsZTsKKworCS8qCisJICogVGhl IHF1ZXVlIHVzZWQgdG8gdHJhbnNmZXIgbWVzc2FnZXMgZnJvbSB0aGUgYXBwbHkgYmFja2dyb3Vu ZCB3b3JrZXIgdG8KKwkgKiB0aGUgbWFpbiBhcHBseSB3b3JrZXIuIE5VTEwgaWYgdGhlIGFwcGx5 IGJhY2tncm91bmQgd29ya2VyIGV4aXRlZAorCSAqIGNsZWFubHkuCisJICovCisJc2htX21xX2hh bmRsZQkJCSplcnJvcl9tcV9oYW5kbGU7CisKKwlkc21fc2VnbWVudAkJCQkqZHNtX3NlZzsKKwor CUFwcGx5Qmd3b3JrZXJTaGFyZWQgdm9sYXRpbGUJKnNoYXJlZDsKK30gQXBwbHlCZ3dvcmtlcklu Zm87CisKIC8qIE1haW4gbWVtb3J5IGNvbnRleHQgZm9yIGFwcGx5IHdvcmtlci4gUGVybWFuZW50 IGR1cmluZyB3b3JrZXIgbGlmZXRpbWUuICovCiBleHRlcm4gUEdETExJTVBPUlQgTWVtb3J5Q29u dGV4dCBBcHBseUNvbnRleHQ7CitleHRlcm4gUEdETExJTVBPUlQgTWVtb3J5Q29udGV4dCBBcHBs eU1lc3NhZ2VDb250ZXh0OworCitleHRlcm4gUEdETExJTVBPUlQgRXJyb3JDb250ZXh0Q2FsbGJh Y2sJKmFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2s7CitleHRlcm4gUEdETExJTVBPUlQgQXBwbHlF cnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZzsKKworZXh0ZXJuIFBHRExM SU1QT1JUIGJvb2wgTXlTdWJzY3JpcHRpb25WYWxpZDsKKworZXh0ZXJuIFBHRExMSU1QT1JUIHZv bGF0aWxlIEFwcGx5Qmd3b3JrZXJTaGFyZWQgKk15UGFyYWxsZWxTaGFyZWQ7CisKK2V4dGVybiBQ R0RMTElNUE9SVCBMaXN0ICpzdWJ4YWN0bGlzdDsKIAogLyogbGlicHFyZWNlaXZlciBjb25uZWN0 aW9uICovCiBleHRlcm4gUEdETExJTVBPUlQgc3RydWN0IFdhbFJlY2VpdmVyQ29ubiAqTG9nUmVw V29ya2VyV2FsUmN2Q29ubjsKQEAgLTc5LDE4ICsxNjUsMjQgQEAgZXh0ZXJuIFBHRExMSU1QT1JU IFN1YnNjcmlwdGlvbiAqTXlTdWJzY3JpcHRpb247CiBleHRlcm4gUEdETExJTVBPUlQgTG9naWNh bFJlcFdvcmtlciAqTXlMb2dpY2FsUmVwV29ya2VyOwogCiBleHRlcm4gUEdETExJTVBPUlQgYm9v bCBpbl9yZW1vdGVfdHJhbnNhY3Rpb247CitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBpbl9zdHJl YW1lZF90cmFuc2FjdGlvbjsKK2V4dGVybiBQR0RMTElNUE9SVCBUcmFuc2FjdGlvbklkIHN0cmVh bV94aWQ7CitleHRlcm4gUEdETExJTVBPUlQgQXBwbHlCZ3dvcmtlckluZm8gKnN0cmVhbV9hcHBs eV93b3JrZXI7CiAKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaChpbnQgc2xv dCk7CiBleHRlcm4gTG9naWNhbFJlcFdvcmtlciAqbG9naWNhbHJlcF93b3JrZXJfZmluZChPaWQg c3ViaWQsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQkJCWJvb2wgb25seV9ydW5uaW5nKTsKIGV4dGVy biBMaXN0ICpsb2dpY2FscmVwX3dvcmtlcnNfZmluZChPaWQgc3ViaWQsIGJvb2wgb25seV9ydW5u aW5nKTsKLWV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lk IHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLAotCQkJCQkJCQkJIE9pZCB1c2VyaWQsIE9pZCBy ZWxpZCk7CitleHRlcm4gYm9vbCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9p ZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwKKwkJCQkJCQkJCSBPaWQgdXNlcmlkLCBPaWQg cmVsaWQsCisJCQkJCQkJCQkgZHNtX2hhbmRsZSBzdWJ3b3JrZXJfZHNtKTsKIGV4dGVybiB2b2lk IGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpOworZXh0ZXJuIHZv aWQgbG9naWNhbHJlcF93b3JrZXJfc3RvcF9ieV9zbG90KGludCBzbG90X25vLCB1aW50MTYgZ2Vu ZXJhdGlvbik7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl93YWtldXAoT2lkIHN1Ymlk LCBPaWQgcmVsaWQpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwX3B0cihM b2dpY2FsUmVwV29ya2VyICp3b3JrZXIpOwogCiBleHRlcm4gaW50CWxvZ2ljYWxyZXBfc3luY193 b3JrZXJfY291bnQoT2lkIHN1YmlkKTsKK2V4dGVybiBpbnQJbG9naWNhbHJlcF9hcHBseV9iZ3dv cmtlcl9jb3VudChPaWQgc3ViaWQpOwogCiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvbk9yaWdpbk5h bWVGb3JUYWJsZXN5bmMoT2lkIHN1Ym9pZCwgT2lkIHJlbGlkLAogCQkJCQkJCQkJCQkgIGNoYXIg Km9yaWdpbm5hbWUsIGludCBzem9yZ25hbWUpOwpAQCAtMTAzLDEwICsxOTUsNDQgQEAgZXh0ZXJu IHZvaWQgcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKTsKIGV4 dGVybiB2b2lkIGludmFsaWRhdGVfc3luY2luZ190YWJsZV9zdGF0ZXMoRGF0dW0gYXJnLCBpbnQg Y2FjaGVpZCwKIAkJCQkJCQkJCQkJdWludDMyIGhhc2h2YWx1ZSk7CiAKK2V4dGVybiB2b2lkIFVw ZGF0ZVdvcmtlclN0YXRzKFhMb2dSZWNQdHIgbGFzdF9sc24sIFRpbWVzdGFtcFR6IHNlbmRfdGlt ZSwKKwkJCQkJCQkgIGJvb2wgcmVwbHkpOworCitleHRlcm4gdm9pZCBhcHBseV9kaXNwYXRjaChT dHJpbmdJbmZvIHMpOworCitleHRlcm4gdm9pZCBJbml0aWFsaXplQXBwbHlXb3JrZXIodm9pZCk7 CisKKy8qIEZ1bmN0aW9uIGZvciBhcHBseSBlcnJvciBjYWxsYmFjayAqLworZXh0ZXJuIHZvaWQg YXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKKworZXh0ZXJuIHZvaWQgc3Vic2NyaXB0 aW9uX2NoYW5nZV9jYihEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKTsK KworLyogQXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgc2V0dXAgYW5kIGludGVyYWN0aW9ucyAqLwor ZXh0ZXJuIEFwcGx5Qmd3b3JrZXJJbmZvICphcHBseV9iZ3dvcmtlcl9zdGFydChUcmFuc2FjdGlv bklkIHhpZCk7CitleHRlcm4gQXBwbHlCZ3dvcmtlckluZm8gKmFwcGx5X2Jnd29ya2VyX2ZpbmQo VHJhbnNhY3Rpb25JZCB4aWQpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfZnJlZShBcHBs eUJnd29ya2VySW5mbyAqd2luZm8pOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfc2V0X3N0 YXRlKEFwcGx5Qmd3b3JrZXJTdGF0ZSBzdGF0ZSk7CitleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtl cl93YWl0X2ZvcihBcHBseUJnd29ya2VySW5mbyAqd2luZm8sCisJCQkJCQkJCQlBcHBseUJnd29y a2VyU3RhdGUgd2FpdF9mb3Jfc3RhdGUpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfc2Vu ZF9kYXRhKEFwcGx5Qmd3b3JrZXJJbmZvICp3aW5mbywgU2l6ZSBuYnl0ZXMsCisJCQkJCQkJCQkg Y29uc3Qgdm9pZCAqZGF0YSk7CisKK2V4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX3N1YnhhY3Rf aW5mb19hZGQoVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCk7CitleHRlcm4gdm9pZCBhcHBseV9i Z3dvcmtlcl9zYXZlcG9pbnRfbmFtZShPaWQgc3Vib2lkLCBPaWQgcmVsaWQsCisJCQkJCQkJCQkJ ICBjaGFyICpzcG5hbWUsIGludCBzenNwKTsKKworI2RlZmluZSBpc0FwcGx5QmdXb3JrZXIod29y a2VyKSAod29ya2VyLT5hcHBseV9sZWFkZXJfcGlkICE9IEludmFsaWRQaWQpCisKIHN0YXRpYyBp bmxpbmUgYm9vbAogYW1fdGFibGVzeW5jX3dvcmtlcih2b2lkKQogewogCXJldHVybiBPaWRJc1Zh bGlkKE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wK K2FtX2FwcGx5X2Jnd29ya2VyKHZvaWQpCit7CisJcmV0dXJuIGlzQXBwbHlCZ1dvcmtlcihNeUxv Z2ljYWxSZXBXb3JrZXIpOworfQorCiAjZW5kaWYJCQkJCQkJLyogV09SS0VSX0lOVEVSTkFMX0gg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKaW5kZXggZWU2MzY5MC4uMzNhZjMzZSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIvc3JjL2luY2x1ZGUv c3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTM1LDYgKzM1LDcgQEAgdHlwZWRlZiBlbnVtCiAJUFJP Q1NJR19XQUxTTkRfSU5JVF9TVE9QUElORywJLyogYXNrIHdhbHNlbmRlcnMgdG8gcHJlcGFyZSBm b3Igc2h1dGRvd24gICovCiAJUFJPQ1NJR19CQVJSSUVSLAkJCS8qIGdsb2JhbCBiYXJyaWVyIGlu dGVycnVwdCAgKi8KIAlQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwgLyogYXNrIGJhY2tlbmQg dG8gbG9nIHRoZSBtZW1vcnkgY29udGV4dHMgKi8KKwlQUk9DU0lHX0FQUExZX0JHV09SS0VSX01F U1NBR0UsCS8qIE1lc3NhZ2UgZnJvbSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMgKi8KIAogCS8q IFJlY292ZXJ5IGNvbmZsaWN0IHJlYXNvbnMgKi8KIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X0RBVEFCQVNFLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oIGIv c3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCmluZGV4IDZmMmQ1NjEuLjhhY2VlNjMgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAorKysgYi9zcmMvaW5jbHVk ZS91dGlscy93YWl0X2V2ZW50LmgKQEAgLTEwNSw2ICsxMDUsNyBAQCB0eXBlZGVmIGVudW0KIAlX QUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX0FMTE9DQVRFLAogCVdBSVRfRVZFTlRfSEFTSF9H Uk9XX0JVQ0tFVFNfRUxFQ1QsCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19SRUlOU0VS VCwKKwlXQUlUX0VWRU5UX0xPR0lDQUxfQVBQTFlfQkdXT1JLRVJfU1RBVEVfQ0hBTkdFLAogCVdB SVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RBVEEsCiAJV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfU1RB VEVfQ0hBTkdFLAogCVdBSVRfRVZFTlRfTVFfSU5URVJOQUwsCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKaW5kZXggZWYwZWJmOS4uOTliOWU4NiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dApAQCAtMjE3LDkgKzIxNyw5IEBA IEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05F KTsKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViOwotLS0gZmFp bCAtIHN0cmVhbWluZyBtdXN0IGJlIGJvb2xlYW4KKy0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBi ZSBib29sZWFuIG9yICdwYXJhbGxlbCcKIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04g dGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIHN0cmVhbWluZyA9IGZvbyk7Ci1FUlJPUjog IHN0cmVhbWluZyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUKK0VSUk9SOiAgc3RyZWFtaW5nIHJl cXVpcmVzIGEgQm9vbGVhbiB2YWx1ZSBvciAicGFyYWxsZWwiCiAtLSBub3cgaXQgd29ya3MKIENS RUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFs c2UsIHN0cmVhbWluZyA9IHRydWUpOwogV0FSTklORzogIHRhYmxlcyB3ZXJlIG5vdCBzdWJzY3Jp YmVkLCB5b3Ugd2lsbCBoYXZlIHRvIHJ1biBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0gg UFVCTElDQVRJT04gdG8gc3Vic2NyaWJlIHRoZSB0YWJsZXMKQEAgLTIzMCw2ICsyMzAsMTQgQEAg V0FSTklORzogIHRhYmxlcyB3ZXJlIG5vdCBzdWJzY3JpYmVkLCB5b3Ugd2lsbCBoYXZlIHRvIHJ1 biBBTFRFUiBTVUJTQ1JJUFRJT04gLi4KICByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNj cmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgdCAgICAgICAg IHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAg ICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykK IAorQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IHBh cmFsbGVsKTsKK1xkUnMrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Yg c3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhh c2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1p dCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9u X3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwICAgICAgICAgfCBkICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorKDEgcm93KQorCiBBTFRF UiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gZmFsc2UpOwog QUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUp OwogXGRScysKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCmluZGV4IDQ0MjVmYWYu LmVkMTQ4ZTQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbApAQCAtMTU2LDcg KzE1Niw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25h bWUgPSBOT05FKTsKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViOwogCi0tLSBm YWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbgorLS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0 IGJlIGJvb2xlYW4gb3IgJ3BhcmFsbGVsJwogQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElP TiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgc3RyZWFtaW5nID0gZm9vKTsKIAogLS0g bm93IGl0IHdvcmtzCkBAIC0xNjQsNiArMTY0LDEwIEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVC CiAKIFxkUnMrCiAKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJl YW1pbmcgPSBwYXJhbGxlbCk7CisKK1xkUnMrCisKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBmYWxzZSk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiAKZGlmZiAtLWdpdCBhL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QKaW5kZXggMzVjOWYxZS4uNDc4MmNhMSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK QEAgLTExNiw2ICsxMTYsMTAgQEAgQXBwZW5kCiBBcHBlbmRQYXRoCiBBcHBlbmRSZWxJbmZvCiBB cHBlbmRTdGF0ZQorQXBwbHlCZ3dvcmtlckVudHJ5CitBcHBseUJnd29ya2VySW5mbworQXBwbHlC Z3dvcmtlclNoYXJlZAorQXBwbHlCZ3dvcmtlclN0YXRlCiBBcHBseUVycm9yQ2FsbGJhY2tBcmcK IEFwcGx5RXhlY3V0aW9uRGF0YQogQXBwbHlTdWJYYWN0RGF0YQpAQCAtMTQ4NSw2ICsxNDg5LDcg QEAgTG9naWNhbFJlcFJlbElkCiBMb2dpY2FsUmVwUmVsTWFwRW50cnkKIExvZ2ljYWxSZXBSZWxh dGlvbgogTG9naWNhbFJlcFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhCitMb2dpY2FsUmVwU3RyZWFt QWJvcnREYXRhCiBMb2dpY2FsUmVwVHVwbGVEYXRhCiBMb2dpY2FsUmVwVHlwCiBMb2dpY2FsUmVw V29ya2VyCi0tIAoyLjcuMi53aW5kb3dzLjEKCg== --_006_OS0PR01MB57166F15F4542FAE69A74EC094739OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v24-0002-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v24-0002-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v24-0002-Test-streaming-parallel-option-in-tap-test.patch"; size=70796; creation-date="Wed, 24 Aug 2022 13:45:00 GMT"; modification-date="Wed, 24 Aug 2022 13:47:10 GMT" Content-Transfer-Encoding: base64 RnJvbSBmN2UyZTVlYzYyY2QxMDhiZjFhZmFmMzg4OWMwMjM3YzVlYTRlZDA0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2MjQg Mi81XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgICAgICAgfCAxOTkg KysrKystLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCAg ICAgIHwgMTIxICsrKy0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5w bCAgICAgICAgICB8IDE5NCArKysrKy0tLQogLi4uL3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1f c3VieGFjdF9hYm9ydC5wbCAgICAgfCAyMDEgKysrKysrLS0tCiAuLi4vc3Vic2NyaXB0aW9uL3Qv MDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCB8IDExMiArKystLQogc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgICAgfCAzNjMgKysrKysrKystLS0t LS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsICAgICB8 IDQ5OCArKysrKysrKysrKystLS0tLS0tLS0KIDcgZmlsZXMgY2hhbmdlZCwgMTA0MyBpbnNlcnRp b25zKCspLCA2NDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0u cGwKaW5kZXggY2JhYTMyNy4uOWY0OTQ2ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3Ry ZWFtLnBsCkBAIC04LDYgKzgsMTE2IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwog dXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5jYXBz dWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3Ry ZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9y IHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0 ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIs ICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwkjIEludGVybGVhdmUgYSBwYWlyIG9m IHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0IgbGltaXQuCisJbXkgJGluICA9 ICcnOworCW15ICRvdXQgPSAnJzsKKworCW15ICR0aW1lciA9IElQQzo6UnVuOjp0aW1lb3V0KCRQ b3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKKworCW15ICRoID0gJG5v ZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwgXCRvdXQsICR0 aW1lciwKKwkJb25fZXJyb3Jfc3RvcCA9PiAwKTsKKworCSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91 bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMKKwkjIHNwZWNpZmll ZCBhcyAicGFyYWxsZWwiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNz YWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJv c2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIp OworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJJGluIC49IHF7CisJQkVHSU47 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShi KSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEs MykgPSAwOworCX07CisJJGgtPnB1bXBfbmI7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJ JG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFy dGVkLywgMCk7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmli ZXItPnJlbG9hZDsKKwl9CisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3Rn cmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7CisJREVMRVRFIEZS T00gdGVzdF90YWIgV0hFUkUgYSA+IDUwMDA7CisJQ09NTUlUOworCX0pOworCisJJGluIC49IHF7 CisJQ09NTUlUOworCVxxCisJfTsKKwkkaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRoZSBu ZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRoZW0gaGVyZQorCisJJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMz NHwzMzM0fDMzMzQpLAorCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1 bHRzJyk7CisKKwkjIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQorCSRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQUxURVIgU1VCU0NSSVBUSU9OIHRh cF9zdWIgU0VUIChiaW5hcnkgPSBvbikiKTsKKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0 ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAx MDAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEs MikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlDT01N SVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCisJCSdjaGVjayBleHRy YSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKworCSMgQ2hhbmdlIHRoZSBsb2Nh bCB2YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVtbnMgb24gdGhlIHN1YnNjcmliZXIsCisJIyB1cGRh dGUgcHVibGlzaGVyLCBhbmQgY2hlY2sgdGhhdCBzdWJzY3JpYmVyIHJldGFpbnMgdGhlIGV4cGVj dGVkCisJIyB2YWx1ZXMuIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFu c2FjdGlvbnMgYmVoYXZlCisJIyBwcm9wZXJseSBhZnRlciBhIHN0cmVhbWluZyB0cmFuc2FjdGlv bi4KKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlVQREFURSB0 ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRpbWVzdGFtcHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2 YWwgJzFzJyIKKwkpOworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsKKworCSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGV4dHJhY3QoZXBvY2ggZnJvbSBjKSA9IDk4NzY1NDMyMSksIGNvdW50KGQgPSA5OTkpIEZST00g dGVzdF90YWIiCisJKTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCisJCSdjaGVj ayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWxseSBjaGFuZ2VkIGRhdGEnKTsKKworCSMgQ2xl YW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNo ZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5n ID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxNDcsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxF IHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04g JyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElP TiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBAIC00OSw4MiArMTYzLDI1IEBA IG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFs IGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgSW50ZXJsZWF2ZSBhIHBhaXIg b2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KLW15ICRpbiAg PSAnJzsKLW15ICRvdXQgPSAnJzsKLQotbXkgJHRpbWVyID0gSVBDOjpSdW46OnRpbWVvdXQoJFBv c3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOwotCi1teSAkaCA9ICRub2Rl X3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGlt ZXIsCi0Jb25fZXJyb3Jfc3RvcCA9PiAwKTsKLQotJGluIC49IHF7Ci1CRUdJTjsKLUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MywgNTAwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2Qo YSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci19Owot JGgtPnB1bXBfbmI7Ci0KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgOTk5OSkgcyhpKTsKLURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIGEgPiA1MDAwOwotQ09NTUlUOwotfSk7Ci0KLSRpbiAuPSBxewotQ09NTUlUOwot XHEKLX07Ci0kaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCwg c28gaWdub3JlIHRoZW0gaGVyZQotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwgJ2NoZWNrIGV4 dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOwordGVzdF9zdHJlYW1pbmcoJG5v ZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CiAKLSMgVGVzdCB0 aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBtb2RlCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChiaW5hcnkgPSBv bikiKTsKLQotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2Vl ZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jl cycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgMTAwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwg Y291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoNjY2N3w2NjY3 fDY2NjcpLCAnY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJyk7Cisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVh bWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25f bmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorKTsKIAotIyBDaGFu Z2UgdGhlIGxvY2FsIHZhbHVlcyBvZiB0aGUgZXh0cmEgY29sdW1ucyBvbiB0aGUgc3Vic2NyaWJl ciwKLSMgdXBkYXRlIHB1Ymxpc2hlciwgYW5kIGNoZWNrIHRoYXQgc3Vic2NyaWJlciByZXRhaW5z IHRoZSBleHBlY3RlZAotIyB2YWx1ZXMuIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgbm9uLXN0cmVh bWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCi0jIHByb3Blcmx5IGFmdGVyIGEgc3RyZWFtaW5nIHRy YW5zYWN0aW9uLgogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlVQ REFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRpbWVzdGFtcHR6ICsgOTg3NjU0MzIxICog aW50ZXJ2YWwgJzFzJyIKLSk7Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAotCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsKKwkiQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsLCBiaW5hcnkgPSBvZmYp Iik7CiAKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ciskbm9k ZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAh PSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1l ID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisg ICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFu Z2luZyBTVUJTQ1JJUFRJT04iOwogCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoZXh0cmFjdChlcG9jaCBm cm9tIGMpID0gOTg3NjU0MzIxKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIKLSk7Ci1p cygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCi0JJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29u dGFpbiBsb2NhbGx5IGNoYW5nZWQgZGF0YScpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CiAKICRub2RlX3N1YnNjcmliZXIt PnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKaW5kZXggYmMwYTljZC4uMTA0YTE2OSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCisrKyBiL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbApAQCAtOCw2ICs4LDcy IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24g dGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIg c28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5k CisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15 ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxs ZWwpID0gQF87CisKKwkjIENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYg InN0cmVhbWluZyIgcGFyYW1ldGVyIGlzCisJIyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIi4gIFdl IGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMKKwkjIGFib3V0IHRoYXQs IHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJh bGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJl ci0+cmVsb2FkOworCX0KKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93 cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJ J3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKCAgICAzLCAgNTAwKSBzKGkpOworCVVQ REFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCVNBVkVQT0lOVCBzMTsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDUwMSwgIDEwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdI RVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9 IDA7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgIDE1MDApIHMoaSk7CisJVVBEQVRF IHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MTUwMSwgIDIwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJF IG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7 CisJU0FWRVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwgMjUwMCkgcyhpKTsKKwlVUERBVEUgdGVz dF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlDT01NSVQ7CisJfSk7CisKKwlpZiAoJGlzX3Bh cmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkg QkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJ CSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyks IGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgxNjY3fDE2 Njd8MTY2NyksCisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJl YW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7 CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyBDcmVh dGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dz X3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiArMTAzLDEwIEBAICRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHVi IEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9k ZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBD T05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScg UFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDksNDEg KzExOSwyNiBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291 bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hl Y2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIEluc2VydCwg dXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIDY0a0IgbGltaXQuCi0kbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KCAgICAzLCAgNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJF IG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsK LVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAgMTAwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsICAxNTAw KSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0g MDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBz MzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMTUwMSwgIDIwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9k KGEsMykgPSAwOwotU0FWRVBPSU5UIHM0OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLCAyNTAwKSBzKGkpOwotVVBE QVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFx KDE2Njd8MTY2N3wxNjY3KSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIg aW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0 cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFw cG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBU ZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hF UkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7 IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVS IFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKKworJG5v ZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQg IT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFt ZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQor ICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hh bmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAk bm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7 CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxN19zdHJlYW1fZGRsLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0 cmVhbV9kZGwucGwKaW5kZXggODY2ZjE1MS4uZWNhYzNhMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKQEAgLTgsNiArOCwxMTEgQEAgdXNlIFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6 TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFy ZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNh biBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFs bGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKworCSMgYSBz bWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJU IElOVE8gdGVzdF90YWIgVkFMVUVTICgzLCBtZDUoMzo6dGV4dCkpOworCUFMVEVSIFRBQkxFIHRl c3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQpLCAtNCk7CisJQ09NTUlUOworCX0pOworCisJ IyBDaGVjayB0aGF0IGEgYmFja2dyb3VuZCB3b3JrZXIgc3RhcnRzIGlmICJzdHJlYW1pbmciIHBh cmFtZXRlciBpcworCSMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIuICBXZSBoYXZlIHRvIGxvb2sg Zm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzCisJIyBhYm91dCB0aGF0LCBzbyB0ZW1wb3Jhcmls eSBidW1wIHVwIHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkk bm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2df bWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9 CisKKwkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAorCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJh dGVfc2VyaWVzKDUsIDEwMDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVN TiBkIElOVDsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAyMDAwKSBz KGkpOworCUNPTU1JVDsKKwl9KTsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAw KTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJ CQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVs b2FkOworCX0KKworCSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERE TCBhbmQgRE1MCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7 CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAxLCBtZDUoMjAwMTo6 dGV4dCksIC0yMDAxLCAyKjIwMDEpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4g ZSBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAw MiwgbWQ1KDIwMDI6OnRleHQpLCAtMjAwMiwgMioyMDAyLCAtMyoyMDAyKTsKKwlDT01NSVQ7CisJ fSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJ bXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSBGUk9NIHRl c3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjAwMnwxOTk5fDEwMDJ8MSksCisJCSdjaGVjayBk YXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEg Y29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIEEgbGFyZ2UgKHN0cmVh bWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MLiBPbmUgb2YgdGhlIERETCBpcyBwZXJm b3JtZWQKKwkjIGFmdGVyIERNTCB0byBlbnN1cmUgdGhhdCB3ZSBpbnZhbGlkYXRlIHRoZSBzY2hl bWEgc2VudCBmb3IgdGVzdF90YWIgc28gdGhhdAorCSMgdGhlIG5leHQgdHJhbnNhY3Rpb24gaGFz IHRvIHNlbmQgdGhlIHNjaGVtYSBhZ2Fpbi4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK KwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDMs NTAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGYgSU5UOworCUNP TU1JVDsKKwl9KTsKKworCSMgQSBzbWFsbCB0cmFuc2FjdGlvbiB0aGF0IHdvbid0IGdldCBzdHJl YW1lZC4gVGhpcyBpcyBqdXN0IHRvIGVuc3VyZSB0aGF0IHdlCisJIyBzZW5kIHRoZSBzY2hlbWEg YWdhaW4gdG8gcmVmbGVjdCB0aGUgbGFzdCBjb2x1bW4gYWRkZWQgaW4gdGhlIHByZXZpb3VzIHRl c3QuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVH SU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIq aSwgLTMqaSwgNCppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKKwlDT01N SVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUpLCBjb3VudChm KSBGUk9NIHRlc3RfdGFiIgorCSk7CisJaXMoJHJlc3VsdCwgcXEoNTAwNXw1MDAyfDQwMDV8MzAw NHw1KSwKKwkJJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGZvciBib3RoIHN0 cmVhbWluZyBhbmQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMnCisJKTsKKworCSMgQ2xlYW51 cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jl cycsIHF7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKTsKKwlBTFRFUiBUQUJM RSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjLCBEUk9QIENPTFVNTiBkLCBEUk9QIENPTFVNTiBlLCBE Uk9QIENPTFVNTiBmOworCX0pOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNo ZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVf cHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYg KzE0MiwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVB VEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5h bWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRl c3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUg U1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxp Y2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5n ID0gb24pIgogKTsKQEAgLTQ5LDc3ICsxNTgsMjYgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRy ZXN1bHQsIHFxKDJ8MHwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNj cmliZXInKTsKIAotIyBhIHNtYWxsIChub24tc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERM IGFuZCBETUwKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1C RUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsKLUFM VEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7Ci1TQVZFUE9JTlQgczE7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDQsIG1kNSg0Ojp0ZXh0KSwgLTQpOwotQ09NTUlUOwot fSk7Ci0KLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCi0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRl X3Nlcmllcyg1LCAxMDAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBk IElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCksIC1pLCAyKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgMjAwMCkgcyhpKTsK LUNPTU1JVDsKLX0pOwotCi0jIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0 aCBEREwgYW5kIERNTAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywg cXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAxLCBtZDUoMjAwMTo6 dGV4dCksIC0yMDAxLCAyKjIwMDEpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBl IElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMiwg bWQ1KDIwMDI6OnRleHQpLCAtMjAwMiwgMioyMDAyLCAtMyoyMDAyKTsKLUNPTU1JVDsKLX0pOwot Ci0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0 ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSBGUk9NIHRlc3RfdGFiIik7Ci1p cygkcmVzdWx0LCBxcSgyMDAyfDE5OTl8MTAwMnwxKSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVk IHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFp biBsb2NhbCBkZWZhdWx0cycKLSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRu b2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAotIyBBIGxhcmdlIChzdHJlYW1lZCkgdHJh bnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTC4gT25lIG9mIHRoZSBEREwgaXMgcGVyZm9ybWVkCi0j IGFmdGVyIERNTCB0byBlbnN1cmUgdGhhdCB3ZSBpbnZhbGlkYXRlIHRoZSBzY2hlbWEgc2VudCBm b3IgdGVzdF90YWIgc28gdGhhdAotIyB0aGUgbmV4dCB0cmFuc2FjdGlvbiBoYXMgdG8gc2VuZCB0 aGUgc2NoZW1hIGFnYWluLgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVz JywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAzLDUwMDApIHMoaSk7Ci1B TFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGYgSU5UOwotQ09NTUlUOwotfSk7Ci0KLSMg QSBzbWFsbCB0cmFuc2FjdGlvbiB0aGF0IHdvbid0IGdldCBzdHJlYW1lZC4gVGhpcyBpcyBqdXN0 IHRvIGVuc3VyZSB0aGF0IHdlCi0jIHNlbmQgdGhlIHNjaGVtYSBhZ2FpbiB0byByZWZsZWN0IHRo ZSBsYXN0IGNvbHVtbiBhZGRlZCBpbiB0aGUgcHJldmlvdXMgdGVzdC4KLSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmksIDQqaSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg1MDAxLDUwMDUpIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpLCBjb3VudChkKSwgY291bnQoZSksIGNvdW50KGYpIEZST00gdGVzdF90YWIiKTsKLWlzKCRy ZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMwMDR8NSksCi0JJ2NoZWNrIGRhdGEgd2FzIGNvcGll ZCB0byBzdWJzY3JpYmVyIGZvciBib3RoIHN0cmVhbWluZyBhbmQgbm9uLXN0cmVhbWluZyB0cmFu c2FjdGlvbnMnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0 IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Igog KTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNV QlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKKworJG5vZGVf cHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0g JG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9 ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAi VGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdp bmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9k ZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAk bm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbAppbmRleCA1NTFmMTZkLi4wNDE1ZWY3IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQu cGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0 LnBsCkBAIC04LDYgKzgsMTEzIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5jYXBzdWxh dGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFt aW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRo ZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0 X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRh cHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwkjIENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5k IHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzCisJIyBzcGVjaWZpZWQg YXMgInBhcmFsbGVsIi4gIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2Fn ZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3Np dHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsK KwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKKwkkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBz KGkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOworCVNBVkVQT0lO VCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEwMDEsMTUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxNTAxLDIwMDApIHMoaSk7CisJUk9MTEJBQ0sgVE8gczI7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLDI1MDAp IHMoaSk7CisJUk9MTEJBQ0sgVE8gczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyNTAxLDMwMDApIHMoaSk7CisJU0FW RVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzAwMSwzNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzNTsKKwlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDM1MDEsNDAwMCkgcyhpKTsKKwlDT01NSVQ7CisJfSk7CisKKwlpZiAoJGlzX3BhcmFs bGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdX ICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdw b3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRu b2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJP TSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDIwMDB8MCksCisJCSdjaGVjayByb2xsYmFj ayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1 bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2aW5nIG91dCBvZiBvcmRlcgorCSMgc3Vi dHJhbnNhY3Rpb24gUk9MTEJBQ0tzCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg0MDAxLDQ1MDApIHMoaSk7CisJU0FWRVBP SU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSw1NTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDYwMDEsNjUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg3MDAxLDc1MDAp IHMoaSk7CisJUkVMRUFTRSBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDgwMDEsODUwMCkgcyhpKTsKKwlST0xMQkFD SyBUTyBzMTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0 X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksCisJCSdjaGVjayByb2xsYmFjayB0byBz YXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIGxhcmdlIChzdHJl YW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyByb2xsYmFjaworCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoODUwMSw5MDAwKSBzKGkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDkwMDEsOTUw MCkgcyhpKTsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5NTAxLDEwMDAwKSBzKGkpOworCVJP TExCQUNLOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworCSRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlp cygkcmVzdWx0LCBxcSgyNTAwfDApLCAnY2hlY2sgcm9sbGJhY2sgd2FzIHJlZmxlY3RlZCBvbiBz dWJzY3JpYmVyJyk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAo YSA+IDIpIik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK K30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXIt PmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzYsNiArMTQzLDEwIEBA ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNB VElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBf c3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBz dHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJ T04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFt ZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiAp OwpAQCAtNDgsODEgKzE1OSwyNSBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBj b3VudChjKSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDApLCAnY2hlY2sgaW5p dGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIGxhcmdlIChzdHJlYW1l ZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCi0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBz KGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLVNBVkVQT0lOVCBz MjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAx LDIwMDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwyNTAwKSBzKGkpOwot Uk9MTEJBQ0sgVE8gczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDI1MDEsMzAwMCkgcyhpKTsKLVNBVkVQT0lOVCBzNDsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMzAwMSwzNTAwKSBzKGkpOwotU0FWRVBPSU5UIHM1OwotSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzNTAxLDQw MDApIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIi KTsKLWlzKCRyZXN1bHQsIHFxKDIwMDB8MCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2lu dCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBs b2NhbCBkZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vi c2NyaWJlciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVw bGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0g J3N0cmVhbWluZyc7IgogKTsKIAotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGgg c3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9yZGVyCi0jIHN1YnRyYW5zYWN0aW9uIFJPTExC QUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lO OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg0MDAxLDQ1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEs NTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNjAwMSw2NTAwKSBzKGkpOwotU0FW RVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg3MDAxLDc1MDApIHMoaSk7Ci1SRUxFQVNFIHMyOwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cyg4MDAxLDg1MDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUNPTU1JVDsKLX0pOwotCi0kbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgq KSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwKLQkn Y2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicp OwotCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2Vp dmluZyByb2xsYmFjawotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywg cXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg4NTAxLDkwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDkwMDEsOTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTUwMSwxMDAwMCkg cyhpKTsKLVJPTExCQUNLOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7 Ci1pcygkcmVzdWx0LCBxcSgyNTAwfDApLCAnY2hlY2sgcm9sbGJhY2sgd2FzIHJlZmxlY3RlZCBv biBzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIp OworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNh dGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAg b3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBh ZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJs aXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKIAogJG5vZGVfc3Vic2NyaWJl ci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsCmluZGV4IDRkN2Rh ODIuLmNlZWJkMDMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJl YW1fc3VieGFjdF9kZGxfYWJvcnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5 X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbApAQCAtOSw2ICs5LDY5IEBAIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRl c3Q6Ok1vcmU7CiAKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGlj aCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29k ZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1w YXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNo ZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwkj IENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgcGFy YW1ldGVyIGlzCisJIyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIi4gIFdlIGhhdmUgdG8gbG9vayBm b3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5 IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRu b2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19t aW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0K KworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xM QkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlC RUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBD T0xVTU4gYyBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkp OworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7CisJU0FWRVBPSU5UIHMy OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3Rf dGFiIEFERCBDT0xVTU4gZSBJTlQ7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMTUwMSwyMDAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1O IGM7CisJUk9MTEJBQ0sgVE8gczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSwgaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKKwlDT01N SVQ7CisJfSk7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2Rl X3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5f bWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisK Kwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJbXkgJHJl c3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFx KDEwMDB8NTAwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVk IG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycK KwkpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+ IDIpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGM7CisJfSk7CisJJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyBDcmVhdGUgcHVi bGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVh bWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiArMTAwLDEwIEBAICRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBU QUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24n CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNU SU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElD QVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDksMzUgKzExNiwy NiBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3Rf dGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3Bp ZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0 aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkn cG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOwotQUxURVIgVEFCTEUg dGVzdF90YWIgQUREIENPTFVNTiBjIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUw MSwxMDAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBkIElOVDsKLVNB VkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCks IC1pLCAyKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOwotQUxURVIgVEFC TEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMTUwMSwyMDAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgRFJPUCBD T0xVTU4gYzsKLVJPTExCQUNLIFRPIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSwgaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLUNP TU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3Vs dCwgcXEoMTAwMHw1MDApLAotCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxl Y3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVs dHMnCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRh cHBuYW1lLCAwKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg VGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdI RVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcn OyIKICk7CiAKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRF UiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwpIik7CisKKyRu b2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlk ICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25h bWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUK KyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNo YW5naW5nIFNVQlNDUklQVElPTiI7CisKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOworCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9w OwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCmluZGV4IDdhNzk3ZjMuLjBhNDE1MmQgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCisrKyBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCkBAIC0xMSw2 ICsxMSwyMDggQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNR TDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhl IGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIHBhcmFt ZXRlcgorIyBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWlu Zz1vbiBhbmQgc3RyZWFtaW5nPXBhcmFsbGVsCisjIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5n Cit7CisJbXkgKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1l X0MsICRzdHJlYW1pbmdfbW9kZSkgPQorCSAgQF87CisKKwlteSAkb2xkcGlkX0IgPSAkbm9kZV9B LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRf cmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQg c3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKKwlteSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5zYWZlX3Bz cWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAn c3RyZWFtaW5nJzsiKTsKKworCSMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbiBzdHJlYW1pbmcg bW9kZQorCisJJG5vZGVfQi0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUFMVEVSIFNV QlNDUklQVElPTiB0YXBfc3ViX0IKKwkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5nX21vZGUp OyIpOworCSRub2RlX0MtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlBTFRFUiBTVUJT Q1JJUFRJT04gdGFwX3N1Yl9DCisJCVNFVCAoc3RyZWFtaW5nID0gJHN0cmVhbWluZ19tb2RlKSIp OworCisJIyBXYWl0IGZvciBzdWJzY3JpYmVycyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KKwor CSRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBp ZCAhPSAkb2xkcGlkX0IgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCisJCVdIRVJFIGFwcGxpY2F0 aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSkgb3Ig ZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7CisJJG5v ZGVfQi0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkICE9 ICRvbGRwaWRfQyBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25f bmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJKSBvciBkaWUg IlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKKworCSMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQg UFJFUEFSRUQuCisJIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgor CSMgMi4gVGhlbiBkbyBjb21taXQgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlz IHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0LgorCSMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29y a2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBvcHRwYXJhbWV0ZXJpb24gaXMKKwkjIHNwZWNpZmll ZCBhcyAicGFyYWxsZWwiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNz YWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJv c2l0eS4KKwlpZiAoJHN0cmVhbWluZ19tb2RlIGVxICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9C LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1 ZzEiKTsKKwkJJG5vZGVfQi0+cmVsb2FkOworCisJCSRub2RlX0MtPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9DLT5y ZWxvYWQ7CisJfQorCisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRv IGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkjIFRoZW4gMlBDIFBSRVBBUkUKKwkkbm9kZV9BLT5z YWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDAp IHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9 IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFS RSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJaWYgKCRzdHJlYW1pbmdf bW9kZSBlcSAncGFyYWxsZWwnKQorCXsKKwkJJG5vZGVfQi0+d2FpdF9mb3JfbG9nKHFyL1xbQXBw bHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX0ItPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfQi0+ cmVsb2FkOworCisJCSRub2RlX0MtPndhaXRfZm9yX2xvZyhxci9cW0FwcGx5IEJHVyAjXGQrXF0g c3RhcnRlZC8sIDApOworCQkkbm9kZV9DLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywg ImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX0MtPnJlbG9hZDsKKwl9CisK Kwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0 ZSBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9C LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBh cmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFy ZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIp OworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2Ny aWJlciBDJyk7CisKKwkjIDJQQyBDT01NSVQKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfQS0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lX0MpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIHdhcyBjb21taXR0ZWQg b24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2Vy dGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBjb2x1 bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCisJKTsKKwkkcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAor CQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDLCBh bmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIGNoZWNrIHRo ZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3VsdCA9 CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rp b24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVf Qy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVw YXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1p dHRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9J TlQuCisJIyAwLiBDbGVhbnVwIGZyb20gcHJldmlvdXMgdGVzdCBsZWF2aW5nIG9ubHkgMiByb3dz LgorCSMgMS4gSW5zZXJ0IG9uZSBtb3JlIHJvdy4KKwkjIDIuIFJlY29yZCBhIFNBVkVQT0lOVC4K KwkjIDMuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgNC4gRG8gcm9sbGJhY2sgdG8g U0FWRVBPSU5UIHByaW9yIHRvIHRoZSBzdHJlYW1lZCBpbnNlcnRzLgorCSMgNS4gVGhlbiBDT01N SVQgUFJFUEFSRUQuCisJIworCSMgRXhwZWN0IGRhdGEgYWZ0ZXIgdGhlIFNBVkVQT0lOVCBpcyBh Ym9ydGVkIGxlYXZpbmcgb25seSAzIHJvd3MgKD0gMiBvcmlnaW5hbCArIDEgZnJvbSBzdGVwIDEp LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0 aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAoZGVsZXRlIHdpbGwgYmUgcmVwbGljYXRlZCkKKwkk bm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJF IGEgPiAyOyIpOworCisJIyAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNB VkVQT0lOVAorCSRub2RlX0EtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlCRUdJTjsK KwkJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5LCAnZm9vYmFyJyk7CisJCVNBVkVQ T0lOVCBzcF9pbm5lcjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9pbm5l cjsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAnb3V0ZXInOworCQkiKTsKKworCSRub2RlX0EtPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZV9DKTsKKworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIHByZXBhcmVkIG9u IHN1YnNjcmliZXIocykKKwkkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMo JHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEIn KTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEo MSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMgMlBD IENPTU1JVAorCSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVE ICdvdXRlcic7Iik7CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwor CSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoZSB0 cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9CisJICAk bm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMg ZW5kZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2Ny aWJlciBDJyk7CisKKwkjIGNoZWNrIGluc2VydHMgYXJlIHZpc2libGUgYXQgc3Vic2NyaWJlcihz KS4KKwkjIEFsbCB0aGUgc3RyZWFtZWQgZGF0YSAocHJpb3IgdG8gdGhlIFNBVkVQT0lOVCkgc2hv dWxkIGJlIHJvbGxlZCBiYWNrLgorCSMgKDk5OTksICdmb29iYXInKSBzaG91bGQgYmUgY29tbWl0 dGVkLgorCSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVD VCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlpcygkcmVz dWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicp OworCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKKwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29t bWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPSAkbm9kZV9D LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi IHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0 dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycpOworCSRyZXN1bHQgPQorCSAgJG5vZGVf Qy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsi KTsKKwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1 YnNjcmliZXIgQycpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9BLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwor CSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKK30KKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogIyBTZXR1cCBhIGNhc2NhZGUgb2YgcHViL3N1YiBub2Rlcy4KICMgbm9kZV9BIC0+IG5v ZGVfQiAtPiBub2RlX0MKQEAgLTI2MCwxNjAgKzQ2MiwxNSBAQCBpcygkcmVzdWx0LCBxcSgyMSks ICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsKICMgMlBDICsg U1RSRUFNSU5HIFRFU1RTCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1teSAkb2xkcGlkX0Ig PSAkbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgRlJPTSBw Z19zdGF0X3JlcGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9C JyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKLW15ICRvbGRwaWRfQyA9ICRub2RlX0ItPnNh ZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGlj YXRpb24KLQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9 ICdzdHJlYW1pbmcnOyIpOwotCi0jIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24gKHN0cmVhbWlu ZyA9IG9uKQotCi0kbm9kZV9CLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCUFMVEVSIFNV QlNDUklQVElPTiB0YXBfc3ViX0IKLQlTRVQgKHN0cmVhbWluZyA9IG9uKTsiKTsKLSRub2RlX0Mt PnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJf QwotCVNFVCAoc3RyZWFtaW5nID0gb24pIik7Ci0KLSMgV2FpdCBmb3Igc3Vic2NyaWJlcnMgdG8g ZmluaXNoIGluaXRpYWxpemF0aW9uCi0KLSRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwoCi0JJ3Bv c3RncmVzJywgIgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9CIEZST00gcGdfc3RhdF9yZXBsaWNh dGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRlID0g J3N0cmVhbWluZyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBs eSB0byByZXN0YXJ0IjsKLSRub2RlX0ItPnBvbGxfcXVlcnlfdW50aWwoCi0JJ3Bvc3RncmVzJywg IgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9DIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgotCVdI RVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQycgQU5EIHN0YXRlID0gJ3N0cmVhbWlu Zyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0 YXJ0IjsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQ QVJFIC8gQ09NTUlUIFBSRVBBUkVELgotIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRy YW5zYWN0aW9uLgotIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KLSMKLSMgRXhwZWN0IGFs bCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0Lgot IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEluc2VydCwgdXBkYXRlIGFuZCBk ZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotIyBUaGVuIDJQQyBQ UkVQQVJFCi0kbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdI RVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9 IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9k ZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZV9DKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRl c3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1l X0IsICRhcHBuYW1lX0MsICdvbicpOwogCi0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBp cyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2Ny aWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFx KDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMgMlBD IENPTU1JVAotJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQg J3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0KLSMgY2hl Y2sgdGhhdCB0cmFuc2FjdGlvbiB3YXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIocykKLSRyZXN1 bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBj b3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEo MzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBv biBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCi0p OwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVz dWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIgQywgYW5kIGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2NhbCBkZWZh dWx0cycKLSk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1 YnNjcmliZXIocykKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwg cXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVz dWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rp b24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBU TyBTQVZFUE9JTlQuCi0jIDAuIENsZWFudXAgZnJvbSBwcmV2aW91cyB0ZXN0IGxlYXZpbmcgb25s eSAyIHJvd3MuCi0jIDEuIEluc2VydCBvbmUgbW9yZSByb3cuCi0jIDIuIFJlY29yZCBhIFNBVkVQ T0lOVC4KLSMgMy4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDQuIERvIHJvbGxiYWNr IHRvIFNBVkVQT0lOVCBwcmlvciB0byB0aGUgc3RyZWFtZWQgaW5zZXJ0cy4KLSMgNS4gVGhlbiBD T01NSVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCBkYXRhIGFmdGVyIHRoZSBTQVZFUE9JTlQgaXMg YWJvcnRlZCBsZWF2aW5nIG9ubHkgMyByb3dzICg9IDIgb3JpZ2luYWwgKyAxIGZyb20gc3RlcCAx KS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRo ZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzIChkZWxldGUgd2lsbCBiZSByZXBsaWNhdGVkKQotJG5v ZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBh ID4gMjsiKTsKLQotIyAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQ T0lOVAotJG5vZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlCRUdJTjsKLQlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTksICdmb29iYXInKTsKLQlTQVZFUE9JTlQgc3Bf aW5uZXI7Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9 IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg bW9kKGEsMykgPSAwOwotCVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9pbm5lcjsKLQlQUkVQQVJF IFRSQU5TQUNUSU9OICdvdXRlcic7Ci0JIik7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwotCi0j IGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCi0k cmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNh Y3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVf Qy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJl ZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQg b24gc3Vic2NyaWJlciBDJyk7Ci0KLSMgMlBDIENPTU1JVAotJG5vZGVfQS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQgJ291dGVyJzsiKTsKLQotJG5vZGVfQS0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWVfQyk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNj cmliZXIKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCks ICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPQotICAk bm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRl ZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxlIGF0IHN1 YnNjcmliZXIocykuCi0jIEFsbCB0aGUgc3RyZWFtZWQgZGF0YSAocHJpb3IgdG8gdGhlIFNBVkVQ T0lOVCkgc2hvdWxkIGJlIHJvbGxlZCBiYWNrLgotIyAoOTk5OSwgJ2Zvb2JhcicpIHNob3VsZCBi ZSBjb21taXR0ZWQuCi0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKLWlz KCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJl ciBCJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKLWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21t aXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdo ZXJlIGIgPSAnZm9vYmFyJzsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQg YXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKLWlzKCRy ZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBD Jyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5n IHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCit0ZXN0X3N0cmVhbWluZygkbm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBw bmFtZV9CLCAkYXBwbmFtZV9DLCAncGFyYWxsZWwnKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwogIyBjaGVjayBhbGwgdGhlIGNsZWFudXAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCmluZGV4IDliNDU0MTAuLmVhMWY0NzYgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwK KysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbApAQCAt OCw2ICs4LDI2NiBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIEVuY2Fwc3VsYXRlIGFsbCB0 aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMg cGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFt aW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1p bmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwg JGlzX3BhcmFsbGVsKSA9IEBfOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor CSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KKwkjIDEuIERhdGEgaXMgc3Ry ZWFtZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCisJIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJl ZC4KKwkjCisJIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNp ZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK KwkjIENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIg cGFyYW1ldGVyIGlzCisJIyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIi4gIFdlIGhhdmUgdG8gbG9v ayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFy aWx5IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJ CSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxv Z19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwor CX0KKworCSMgY2hlY2sgdGhhdCAyUEMgZ2V0cyByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIKKwkj IEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtC IGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxewor CQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VU IGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRf dGFiJzt9KTsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVf c3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9t ZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKwor CSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNr IHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCW15 ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFx KDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMg dHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisK Kwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVj ayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9 ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1 bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVm YXVsdHMnCisJKTsKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlp cygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVy Jyk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQ QVJFIC8gUk9MTEJBQ0sgUFJFUEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8g MiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlz IHN0cmVhbWVkIHVzaW5nIDJQQy4KKwkjIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgorCSMKKwkj IEV4cGVjdCBkYXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3Mu CisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRo ZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIGEgPiAyOyIpOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdo IHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkp OworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwor CQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJB TlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMg aW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJl cGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVk CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBS RVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFi b3J0ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5 OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyfDJ8MiksCisJCSdSb3dzIGlu c2VydGVkIGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwg MiByb3dzJworCSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsK KwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJl cicpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgQ2hlY2sgdGhhdCAy UEMgQ09NTUlUIFBSRVBBUkVEIGlzIGRlY29kZWQgcHJvcGVybHkgb24gY3Jhc2ggcmVzdGFydC4K KwkjIDEuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRo ZSA2NGtCIGxpbWl0LgorCSMgMi4gVGhlbiBzZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0 cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCisJIyAzLiBBZnRlciBzZXJ2ZXJzIGFyZSByZXN0YXJ0 ZWQgdGhlIHBlbmRpbmcgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgorCSMKKwkjIEV4cGVjdCBh bGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0 LgorCSMgTm90ZTogYm90aCBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgZG8gY3Jhc2gvcmVzdGFy dC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAw MCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIp ID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQ QVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9zdWJzY3Jp YmVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKKwkkbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0 ZScpOworCisJJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdGFy dDsKKworCSMgY29tbWl0IHBvc3QgdGhlIHJlc3RhcnQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7 Iik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMg Y2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZQorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50 KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMz NCksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVy LCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBB UkUgYnV0IGJlZm9yZSBST0xMQkFDSyBQUkVQQVJFRC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQg YmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIu IERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBp cyBkb25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQQVJFLgorCSMgNC4gVGhlbiBkbyBhIFJPTExC QUNLIFBSRVBBUkVELgorCSMKKwkjIEV4cGVjdCB0aGUgMlBDIGRhdGEgcm9sbHMgYmFjayBsZWF2 aW5nIG9ubHkgMyByb3dzIG9uIHRoZSBzdWJzY3JpYmVyCisJIyAodGhlIG9yaWdpbmFsIDIgKyBp bnNlcnRlZCAxKS4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0 LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkK Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRl bGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2Qo YSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJ UFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFu c2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2Fj dGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIEluc2VydCBhIGRpZmZlcmVu dCByZWNvcmQgKG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQorCSMg Tm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBz dXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5CisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZB TFVFUyAoOTk5OTksICdmb29iYXInKSIpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9y dGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNL IFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlz IGFib3J0ZWQgb24gc3Vic2NyaWJlciwKKwkjIGJ1dCB0aGUgZXh0cmEgSU5TRVJUIG91dHNpZGUg b2YgdGhlIDJQQyBzdGlsbCB3YXMgcmVwbGljYXRlZAorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyks IGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzfDN8Myks CisJCSdjaGVjayB0aGUgb3V0c2lkZSBpbnNlcnQgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7 CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0 LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQ QVJFIGJ1dCBiZWZvcmUgQ09NTUlUIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBi YWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4g RGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlz IGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgQ09NTUlU IFBSRVBBUkVELgorCSMKKwkjIEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9u IHRoZSBzdWJzY3JpYmVyCisJIyAodGhlIDMzMzQgKyBpbnNlcnRlZCAxID0gMzMzNSkuCisJIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRh IGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEg PiAyOyIpOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3Mg dG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAor CQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlV UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxF VEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJ T04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJl cGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVk X3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQg b24gc3Vic2NyaWJlcicpOworCisJIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2Ug YXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKKwkjIE5vdGU6IHRoZSAyUEMgdHJh bnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBp cyBmb3IgYSBzZXBhcmFyZSBwcmltYXJ5IGtleQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9v YmFyJykiKTsKKworCSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9w cmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vi c2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM1fDMzMzV8MzMzNSksCisJCSdSb3dzIGluc2Vy dGVkIGJ5IDJQQyAoYXMgd2VsbCBhcyBvdXRzaWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24g c3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkp OworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3Vs dCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOworCisJ IyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisJJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwogIyBTZXR1cAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwpAQCAtNDgsNiArMzA4LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIp OwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0 Z3JlcycsICIKIAlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKQEAgLTY0LDIzNiArMzI4LDMw IEBAIG15ICR0d29waGFzZV9xdWVyeSA9CiAkbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3Vu dGlsKCdwb3N0Z3JlcycsICR0d29waGFzZV9xdWVyeSkKICAgb3IgZGllICJUaW1lZCBvdXQgd2hp bGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBlbmFibGUgdHdvcGhhc2UiOwogCi0jIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIENoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVk IHRvIHN1YnNjcmliZXIKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG15ICRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJl c3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2Ny aWJlcicpOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBS RVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCi0jIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMg dHJhbnNhY3Rpb24uCi0jIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgotIwotIyBFeHBlY3Qg YWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1p dC4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2Rl X3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0jIGNoZWNrIHRo YXQgMlBDIGdldHMgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCi0jIEluc2VydCwgdXBkYXRlIGFu ZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChh LDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJF UEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rp b24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMg cHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1p dHRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09NTUlUIFBS RVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21t aXR0ZWQgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jv d3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRy YSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBn X3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5E IHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRf eGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBv biBzdWJzY3JpYmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVz dCAyUEMgUFJFUEFSRSAvIFJPTExCQUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVk IGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIu IERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBEbyByb2xsYmFjayBwcmVwYXJlZC4K LSMKLSMgRXhwZWN0IGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIg cm93cy4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRl IHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCBy b3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQ REFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04g J3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKIAotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVk IHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7 Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNj cmliZXInKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVw YXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVy Ci0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsK LWlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgYXJlIHJvbGxl ZCBiYWNrLCBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cycpOwotCi0kcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgq KSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2Fj dGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwotIyBDaGVjayB0aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMgZGVjb2RlZCBw cm9wZXJseSBvbiBjcmFzaCByZXN0YXJ0LgotIyAxLiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRl IGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSMgMi4gVGhlbiBzZXJ2ZXIg Y3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCi0jIDMuIEFm dGVyIHNlcnZlcnMgYXJlIHJlc3RhcnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlvbiBpcyBjb21t aXR0ZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIg c2lkZSBhZnRlciB0aGUgY29tbWl0LgotIyBOb3RlOiBib3RoIHB1Ymxpc2hlciBhbmQgc3Vic2Ny aWJlciBkbyBjcmFzaC9yZXN0YXJ0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwot Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwot CUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikg V0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMp ID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRu b2RlX3N1YnNjcmliZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotJG5vZGVfcHVibGlzaGVyLT5zdG9w KCdpbW1lZGlhdGUnKTsKLQotJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKLSRub2RlX3N1YnNjcmli ZXItPnN0YXJ0OwotCi0jIGNvbW1pdCBwb3N0IHRoZSByZXN0YXJ0Ci0kbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRf dGFiJzsiKTsKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0K LSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZQotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3Vu dChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMz NCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIs IGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCi0pOwotCi0jIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBi dXQgYmVmb3JlIFJPTExCQUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sg dG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERhdGEg aXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUg d2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQuIFRoZW4gZG8gYSBST0xMQkFDSyBQUkVQ QVJFRC4KLSMKLSMgRXhwZWN0IHRoZSAyUEMgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcgb25seSAz IHJvd3Mgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSBvcmlnaW5hbCAyICsgaW5zZXJ0ZWQgMSku Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUg ZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEg PiAyOyIpOwotCi0jIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0 byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkn cG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUg dGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0 X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0 ZSBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwot aXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVy Jyk7Ci0KLSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9m IHRoZSAyUEMgdHJhbnNhY3Rpb24pCi0jIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwg aG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmF0 ZSBwcmltYXJ5IGtleQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki SU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7Ci0KLSMgMlBD IHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKLQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQot JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlciwKLSMgYnV0IHRoZSBleHRy YSBJTlNFUlQgb3V0c2lkZSBvZiB0aGUgMlBDIHN0aWxsIHdhcyByZXBsaWNhdGVkCi0kcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1 bHQsIHFxKDN8M3wzKSwgJ2NoZWNrIHRoZSBvdXRzaWRlIGluc2VydCB3YXMgY29waWVkIHRvIHN1 YnNjcmliZXInKTsKLQotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlz KCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7 Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgRG8gSU5TRVJUIGFmdGVyIHRo ZSBQUkVQQVJFIGJ1dCBiZWZvcmUgQ09NTUlUIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxl dGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0j IDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJU IGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQuIFRoZW4gZG8gYSBDT01N SVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9u IHRoZSBzdWJzY3JpYmVyCi0jICh0aGUgMzMzNCArIGluc2VydGVkIDEgPSAzMzM1KS4KLSMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4 Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7 Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2Vl ZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jl cycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFy ZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1 YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVz dWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQot IyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQ QyB0cmFuc2FjdGlvbikKLSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyBy b3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXJlIHByaW1h cnkga2V5Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJTlNFUlQg SU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKLQotIyAyUEMgdHJhbnNh Y3Rpb24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChz dHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKIAotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNv bW1pdHRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5 OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzV8MzMzNXwzMzM1KSwKLQkn Um93cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMgb3V0c2lkZSBpbnNlcnQpIGhhdmUgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVm YXVsdHMnCi0pOworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Igor ICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJl c3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMg Y29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hl ciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCiAjIGNoZWNrIGFsbCB0aGUgY2xlYW51cAotLSAKMi43LjIud2luZG93cy4x Cgo= --_006_OS0PR01MB57166F15F4542FAE69A74EC094739OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v24-0003-Add-some-checks-before-using-apply-background-wo.patch" Content-Description: v24-0003-Add-some-checks-before-using-apply-background-wo.patch Content-Disposition: attachment; filename="v24-0003-Add-some-checks-before-using-apply-background-wo.patch"; size=57038; creation-date="Wed, 24 Aug 2022 13:45:00 GMT"; modification-date="Wed, 24 Aug 2022 13:47:12 GMT" Content-Transfer-Encoding: base64 RnJvbSAzY2QzMmJlNjZjMzJhOWQ2NGNmNTM5MDY2NmJkMWJjMGUwNjI0MTc2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMTAgQXVnIDIwMjIgMjA6Mzc6MjIgKzA4MDAKU3ViamVjdDogW1BBVENI IHYyNCAzLzVdIEFkZCBzb21lIGNoZWNrcyBiZWZvcmUgdXNpbmcgYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIKIHRvIGFwcGx5IGNoYW5nZXMuCgpzdHJlYW1pbmc9cGFyYWxsZWwgbW9kZSBoYXMgdHdv IHJlcXVpcmVtZW50czoKMSkgVGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHJlbGF0aW9uIG9uIHRo ZSBzdWJzY3JpYmVyLXNpZGUgc2hvdWxkIGFsc28gYmUgdGhlCnVuaXF1ZSBjb2x1bW4gb24gdGhl IHB1Ymxpc2hlci1zaWRlOwoyKSBUaGVyZSBjYW5ub3QgYmUgYW55IG5vbi1pbW11dGFibGUgZnVu Y3Rpb25zIHVzZWQgYnkgdGhlIHN1YnNjcmliZXItc2lkZQpyZXBsaWNhdGVkIHRhYmxlLiBMb29r IGZvciBmdW5jdGlvbnMgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CiogYS4gVHJpZ2dlciBmdW5j dGlvbnMKKiBiLiBDb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9ucyBhbmQgZG9tYWluIGNv bnN0cmFpbnRzCiogYy4gQ29uc3RyYWludCBleHByZXNzaW9ucwoqIGQuIEZvcmVpZ24ga2V5cwoK V2l0aG91dCB0aGVzZSByZXN0cmljdGlvbnMsIHRoZSBmb2xsb3dpbmcgc2NlbmFyaW8gbWF5IG9j Y3VyOgpUaGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgbG9ja3MgYSByb3cgd2hlbiBwcm9jZXNz aW5nIGEgc3RyZWFtaW5nCnRyYW5zYWN0aW9uLCBhZnRlciB0aGF0IHRoZSBtYWluIGFwcGx5IHdv cmtlciB0cmllcyB0byBsb2NrIHRoZSBzYW1lIHJvdyB3aGVuCnByb2Nlc3NpbmcgYW5vdGhlciBu b24tc3RyZWFtZWQgdHJhbnNhY3Rpb24uIEF0IHRoaXMgdGltZSwgdGhlIG1haW4gYXBwbHkKd29y a2VyIHdhaXRzIGZvciB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGNvbXBsZXRlIGFuZCB0 aGUgbG9jayB0byBiZQpyZWxlYXNlZCwgaXQgd29uJ3Qgc2VuZCBzdWJzZXF1ZW50IGRhdGEgb2Yg dGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byB0aGUKYXBwbHkgYmFja2dyb3VuZCB3b3JrZXI7 IHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciB3YWl0cyB0byByZWNlaXZlIHRoZSByZXN0Cm9m IHN0cmVhbWluZyB0cmFuc2FjdGlvbiBhbmQgY2FuJ3QgZmluaXNoIHRoaXMgdHJhbnNhY3Rpb24u IE5vdyBhIGRlYWRsb2NrIGhhcwpvY2N1cnJlZCwgc28gYm90aCB3b3JrZXJzIHdpbGwgd2FpdCBp bmRlZmluaXRlbHkuCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNn bWwgICAgICAgfCAgIDUgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJn d29ya2VyLmMgfCAgNTIgKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8u YyAgICAgICAgIHwgIDg2ICsrKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVs YXRpb24uYyAgICAgIHwgMjE1ICsrKysrKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC90YWJsZXN5bmMuYyAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC93b3JrZXIuYyAgICAgICAgfCAgMjMgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5 cGNhY2hlLmMgICAgICAgICAgICAgIHwgIDE3ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xv Z2ljYWxwcm90by5oICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xv Z2ljYWxyZWxhdGlvbi5oICAgICAgIHwgIDEzICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dv cmtlcl9pbnRlcm5hbC5oICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hl LmggICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAx NV9zdHJlYW0ucGwgICAgICAgICAgIHwgIDMzICstCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MTZfc3RyZWFtX3N1YnhhY3QucGwgICB8ICAzMyArLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgfCAgIDggKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDIzX3R3b3BoYXNlX3N0cmVhbS5wbCAgfCAgMzMgKy0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwgIHwgNjA4ICsrKysrKysrKysrKysrKysrKysrKysrKwog c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgICAgfCAgIDEgKwog MTcgZmlsZXMgY2hhbmdlZCwgMTA1NSBpbnNlcnRpb25zKCspLCA3OCBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2Fw cGx5LnBsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9u LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRleCBl MmY5OTY4Li40N2JjYWEyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJz Y3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24u c2dtbApAQCAtMjQwLDYgKzI0MCwxMSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAgICAg ICAgIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9yIGhhcHBl bnMgd2hlbgogICAgICAgICAgIGFwcGx5aW5nIGNoYW5nZXMgaW4gYSBiYWNrZ3JvdW5kIHdvcmtl ciwgdGhlIGZpbmlzaCBMU04gb2YgdGhlCiAgICAgICAgICAgcmVtb3RlIHRyYW5zYWN0aW9uIG1p Z2h0IG5vdCBiZSByZXBvcnRlZCBpbiB0aGUgc2VydmVyIGxvZy4KKyAgICAgICAgICBUaGVyZSBh cmUgdHdvIHByZXJlcXVpc2l0ZXMgZm9yIHVzaW5nIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFs PgorICAgICAgICAgIG1vZGU6IDEpIHRoZSB1bmlxdWUgY29sdW1uIGluIHRoZSB0YWJsZSBvbiB0 aGUgc3Vic2NyaWJlci1zaWRlIG11c3QKKyAgICAgICAgICBhbHNvIGJlIHRoZSB1bmlxdWUgY29s dW1uIG9uIHRoZSBwdWJsaXNoZXItc2lkZTsgMikgdGhlcmUgY2Fubm90IGJlCisgICAgICAgICAg YW55IG5vbi1pbW11dGFibGUgZnVuY3Rpb25zIHVzZWQgYnkgdGhlIHN1YnNjcmliZXItc2lkZSBy ZXBsaWNhdGVkCisgICAgICAgICAgdGFibGUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwv bGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jCmluZGV4IDA4NTJmZmEuLmQzNWRkNzQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jCkBA IC05NzEsMyArOTcxLDU1IEBAIGFwcGx5X2Jnd29ya2VyX3NhdmVwb2ludF9uYW1lKE9pZCBzdWJv aWQsIFRyYW5zYWN0aW9uSWQgeGlkLAogewogCXNucHJpbnRmKHNwbmFtZSwgc3pzcCwgInBnX3Nw XyV1XyV1Iiwgc3Vib2lkLCB4aWQpOwogfQorCisvKgorICogQ2hlY2sgaWYgY2hhbmdlcyBvbiB0 aGlzIHJlbGF0aW9uIGNhbiBiZSBhcHBsaWVkIHVzaW5nIGFuIGFwcGx5IGJhY2tncm91bmQKKyAq IHdvcmtlci4KKyAqCisgKiBBbHRob3VnaCB0aGUgY29tbWl0IG9yZGVyIGlzIG1haW50YWluZWQg Ynkgb25seSBhbGxvd2luZyBvbmUgcHJvY2VzcyB0bworICogY29tbWl0IGF0IGEgdGltZSwgdGhl IGFjY2VzcyBvcmRlciB0byB0aGUgcmVsYXRpb24gaGFzIGNoYW5nZWQuIFRoaXMgY291bGQKKyAq IGNhdXNlIHVuZXhwZWN0ZWQgcHJvYmxlbXMgd2hlbiBhcHBseWluZyB0cmFuc2FjdGlvbnMgdXNp bmcgYW4gYXBwbHkKKyAqIGJhY2tncm91bmQgd29ya2VyIGlmIHRoZSB1bmlxdWUgY29sdW1uIG9u IHRoZSByZXBsaWNhdGVkIHRhYmxlIGlzCisgKiBpbmNvbnNpc3RlbnQgd2l0aCB0aGUgcHVibGlz aGVyLXNpZGUsIG9yIGlmIHRoZSByZWxhdGlvbiBjb250YWlucworICogbm9uLWltbXV0YWJsZSBm dW5jdGlvbnMuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKExvZ2lj YWxSZXBSZWxNYXBFbnRyeSAqcmVsKQoreworCS8qCisJICogU2tpcCBjaGVjayBpZiBub3QgdXNp bmcgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzLgorCSAqCisJICogSWYgYW55IHdvcmtlciBpcyBo YW5kbGluZyB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLCB0aGlzIGNoZWNrIG5vdCBvbmx5CisJ ICogbmVlZHMgdG8gYmUgcGVyZm9ybWVkIGJ5IGFwcGx5IGJhY2tncm91bmQgd29ya2VyLCBidXQg YWxzbyBieSB0aGUgbWFpbgorCSAqIGFwcGx5IHdvcmtlci4gVGhpcyBpcyBiZWNhdXNlIHdpdGhv dXQgdGhlc2UgcmVzdHJpY3Rpb25zLCBtYWluIGFwcGx5CisJICogd29ya2VyIG1heSBibG9jayBh cHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgd2hpY2ggd2lsbCBjYXVzZSBpbmZpbml0ZQorCSAqIHdh aXRzLgorCSAqCisJICogRGV0ZXJtaW5lIHdoZXRoZXIgbWFpbiBhcHBseSB3b3JrZXIgaXMgdXNp bmcgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgYnkKKwkgKiB3aGV0aGVyIHRoZSBsZW5ndGhzIG9m IEFwcGx5Qmd3b3JrZXJzRnJlZUxpc3QgYW5kIEFwcGx5Qmd3b3JrZXJzTGlzdCBhcmUKKwkgKiBl cXVhbC4KKwkgKi8KKwlpZiAoIWFtX2FwcGx5X2Jnd29ya2VyKCkgJiYKKwkJKGxpc3RfbGVuZ3Ro KEFwcGx5Qmd3b3JrZXJzRnJlZUxpc3QpID09IGxpc3RfbGVuZ3RoKEFwcGx5Qmd3b3JrZXJzTGlz dCkpKQorCQlyZXR1cm47CisKKwkvKgorCSAqIFBhcnRpdGlvbiB0YWJsZSBjaGVja3MgYXJlIGRv bmUgbGF0ZXIgaW4gZnVuY3Rpb24KKwkgKiBhcHBseV9oYW5kbGVfdHVwbGVfcm91dGluZy4KKwkg Ki8KKwlpZiAocmVsLT5sb2NhbHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElU SU9ORURfVEFCTEUpCisJCXJldHVybjsKKworCWlmIChyZWwtPnBhcmFsbGVsX2FwcGx5X3NhZmUg IT0gUEFSQUxMRUxfQVBQTFlfU0FGRSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJj YW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgdXNpbmcgIgorCQkJCQkJ InN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgJXMiLAorCQkJCQkJcmVsLT5yZW1vdGVyZWwubnNwbmFt ZSwgcmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSJzdHJlYW1pbmcgPSBwYXJhbGxlbCIp LAorCQkJCSBlcnJkZXRhaWwoIlRoZSB1bmlxdWUgY29sdW1uIG9uIHN1YnNjcmliZXIgaXMgbm90 IHRoZSB1bmlxdWUgIgorCQkJCQkJICAgImNvbHVtbiBvbiBwdWJsaXNoZXIgb3IgdGhlcmUgaXMg YXQgbGVhc3Qgb25lICIKKwkJCQkJCSAgICJub24taW1tdXRhYmxlIGZ1bmN0aW9uLiIpLAorCQkJ CSBlcnJoaW50KCJQbGVhc2UgY2hhbmdlIHRvIHVzZSBzdWJzY3JpcHRpb24gcGFyYW1ldGVyICVz LiIsCisJCQkJCQkic3RyZWFtaW5nID0gb24iKSkpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9wcm90by5jCmluZGV4IDQ3YmQ4MTEuLjczYjI4MDcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKQEAgLTIzLDcgKzIzLDggQEAKIC8qCiAgKiBQcm90b2Nv bCBtZXNzYWdlIGZsYWdzLgogICovCi0jZGVmaW5lIExPR0lDQUxSRVBfSVNfUkVQTElDQV9JREVO VElUWSAxCisjZGVmaW5lIEFUVFJfSVNfUkVQTElDQV9JREVOVElUWQkoMSA8PCAwKQorI2RlZmlu ZSBBVFRSX0lTX1VOSVFVRQkJCQkoMSA8PCAxKQogCiAjZGVmaW5lIE1FU1NBR0VfVFJBTlNBQ1RJ T05BTCAoMTw8MCkKICNkZWZpbmUgVFJVTkNBVEVfQ0FTQ0FERQkJKDE8PDApCkBAIC00MSw2ICs0 Miw2NiBAQCBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3dyaXRlX25hbWVzcGFjZShTdHJpbmdJbmZv IG91dCwgT2lkIG5zcGlkKTsKIHN0YXRpYyBjb25zdCBjaGFyICpsb2dpY2FscmVwX3JlYWRfbmFt ZXNwYWNlKFN0cmluZ0luZm8gaW4pOwogCiAvKgorICogUmVsYXRpb25HZXRVbmlxdWVLZXlCaXRt YXAgLS0gZ2V0IGEgYml0bWFwIG9mIHVuaXF1ZSBhdHRyaWJ1dGUgbnVtYmVycworICoKKyAqIFRo aXMgaXMgc2ltaWxhciB0byBSZWxhdGlvbkdldElkZW50aXR5S2V5Qml0bWFwKCksIGJ1dCByZXR1 cm5zIGEgYml0bWFwIG9mCisgKiBpbmRleCBhdHRyaWJ1dGUgbnVtYmVycyBmb3IgYWxsIHVuaXF1 ZSBpbmRleGVzLgorICovCitzdGF0aWMgQml0bWFwc2V0ICoKK1JlbGF0aW9uR2V0VW5pcXVlS2V5 Qml0bWFwKFJlbGF0aW9uIHJlbCkKK3sKKwlMaXN0CQkgICAqaW5kZXhvaWRsaXN0ID0gTklMOwor CUxpc3RDZWxsCSAgICppbmRleG9pZHNjYW47CisJQml0bWFwc2V0CSAgICphdHR1bmlxdWUgPSBO VUxMOworCisJaWYgKCFyZWwtPnJkX3JlbC0+cmVsaGFzaW5kZXgpCisJCXJldHVybiBOVUxMOwor CisJaW5kZXhvaWRsaXN0ID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVsKTsKKworCWZvcmVhY2go aW5kZXhvaWRzY2FuLCBpbmRleG9pZGxpc3QpCisJeworCQlPaWQJCQlpbmRleG9pZCA9IGxmaXJz dF9vaWQoaW5kZXhvaWRzY2FuKTsKKwkJUmVsYXRpb24JaW5kZXhSZWw7CisJCWludAkJCWk7CisK KwkJLyogTG9vayB1cCB0aGUgZGVzY3JpcHRpb24gZm9yIGluZGV4ICovCisJCWluZGV4UmVsID0g UmVsYXRpb25JZEdldFJlbGF0aW9uKGluZGV4b2lkKTsKKworCQlpZiAoIVJlbGF0aW9uSXNWYWxp ZChpbmRleFJlbCkpCisJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IG9wZW4gcmVsYXRpb24gd2l0 aCBPSUQgJXUiLCBpbmRleG9pZCk7CisKKwkJaWYgKCFpbmRleFJlbC0+cmRfaW5kZXgtPmluZGlz dW5pcXVlKQorCQl7CisJCQlSZWxhdGlvbkNsb3NlKGluZGV4UmVsKTsKKwkJCWNvbnRpbnVlOwor CQl9CisKKwkJLyogQWRkIHJlZmVyZW5jZWQgYXR0cmlidXRlcyB0byBhdHR1bmlxdWUgKi8KKwkJ Zm9yIChpID0gMDsgaSA8IGluZGV4UmVsLT5yZF9pbmRleC0+aW5kbmF0dHM7IGkrKykKKwkJewor CQkJaW50IGF0dHJudW0gPSBpbmRleFJlbC0+cmRfaW5kZXgtPmluZGtleS52YWx1ZXNbaV07CisK KwkJCS8qCisJCQkgKiBXZSBkb24ndCBpbmNsdWRlIG5vbi1rZXkgY29sdW1ucyBpbnRvIGF0dHVu aXF1ZQorCQkJICogYml0bWFwcy4gU2VlIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwLgorCQkJ ICovCisJCQlpZiAoYXR0cm51bSAhPSAwKQorCQkJeworCQkJCWlmIChpIDwgaW5kZXhSZWwtPnJk X2luZGV4LT5pbmRua2V5YXR0cyAmJgorCQkJCQkhYm1zX2lzX21lbWJlcihhdHRybnVtIC0gRmly c3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciwgYXR0dW5pcXVlKSkKKwkJCQkJYXR0dW5p cXVlID0gYm1zX2FkZF9tZW1iZXIoYXR0dW5pcXVlLAorCQkJCQkJCQkJCQkgICBhdHRybnVtIC0g Rmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJCQl9CisJCX0KKwkJUmVsYXRp b25DbG9zZShpbmRleFJlbCk7CisJfQorCWxpc3RfZnJlZShpbmRleG9pZGxpc3QpOworCisJcmV0 dXJuIGF0dHVuaXF1ZTsKK30KKworLyoKICAqIENoZWNrIGlmIGEgY29sdW1uIGlzIGNvdmVyZWQg YnkgYSBjb2x1bW4gbGlzdC4KICAqCiAgKiBOZWVkIHRvIGJlIGNhcmVmdWwgYWJvdXQgTlVMTCwg d2hpY2ggaXMgdHJlYXRlZCBhcyBhIGNvbHVtbiBsaXN0IGNvdmVyaW5nCkBAIC05MzMsNyArOTk0 LDggQEAgbG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVs LCBCaXRtYXBzZXQgKmNvbHVtbnMpCiAJVHVwbGVEZXNjCWRlc2M7CiAJaW50CQkJaTsKIAl1aW50 MTYJCW5saXZlYXR0cyA9IDA7Ci0JQml0bWFwc2V0ICAqaWRhdHRycyA9IE5VTEw7CisJQml0bWFw c2V0ICAqaWRhdHRycyA9IE5VTEwsCisJCQkgICAqYXR0dW5pcXVlID0gTlVMTDsKIAlib29sCQly ZXBsaWRlbnRmdWxsOwogCiAJZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKQEAgLTk1OCw2 ICsxMDIwLDkgQEAgbG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRp b24gcmVsLCBCaXRtYXBzZXQgKmNvbHVtbnMpCiAJaWYgKCFyZXBsaWRlbnRmdWxsKQogCQlpZGF0 dHJzID0gUmVsYXRpb25HZXRJZGVudGl0eUtleUJpdG1hcChyZWwpOwogCisJLyogZmV0Y2ggYml0 bWFwIG9mIFVOSVFVRSBhdHRyaWJ1dGVzICovCisJYXR0dW5pcXVlID0gUmVsYXRpb25HZXRVbmlx dWVLZXlCaXRtYXAocmVsKTsKKwogCS8qIHNlbmQgdGhlIGF0dHJpYnV0ZXMgKi8KIAlmb3IgKGkg PSAwOyBpIDwgZGVzYy0+bmF0dHM7IGkrKykKIAl7CkBAIC05NzQsNyArMTAzOSwxMSBAQCBsb2dp Y2FscmVwX3dyaXRlX2F0dHJzKFN0cmluZ0luZm8gb3V0LCBSZWxhdGlvbiByZWwsIEJpdG1hcHNl dCAqY29sdW1ucykKIAkJaWYgKHJlcGxpZGVudGZ1bGwgfHwKIAkJCWJtc19pc19tZW1iZXIoYXR0 LT5hdHRudW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAogCQkJCQkJICBp ZGF0dHJzKSkKLQkJCWZsYWdzIHw9IExPR0lDQUxSRVBfSVNfUkVQTElDQV9JREVOVElUWTsKKwkJ CWZsYWdzIHw9IEFUVFJfSVNfUkVQTElDQV9JREVOVElUWTsKKworCQlpZiAoYm1zX2lzX21lbWJl cihhdHQtPmF0dG51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCisJCQkJ CQkgIGF0dHVuaXF1ZSkpCisJCQlmbGFncyB8PSBBVFRSX0lTX1VOSVFVRTsKIAogCQlwcV9zZW5k Ynl0ZShvdXQsIGZsYWdzKTsKIApAQCAtOTg5LDYgKzEwNTgsNyBAQCBsb2dpY2FscmVwX3dyaXRl X2F0dHJzKFN0cmluZ0luZm8gb3V0LCBSZWxhdGlvbiByZWwsIEJpdG1hcHNldCAqY29sdW1ucykK IAl9CiAKIAlibXNfZnJlZShpZGF0dHJzKTsKKwlibXNfZnJlZShhdHR1bmlxdWUpOwogfQogCiAv KgpAQCAtMTAwMSw3ICsxMDcxLDggQEAgbG9naWNhbHJlcF9yZWFkX2F0dHJzKFN0cmluZ0luZm8g aW4sIExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVsKQogCWludAkJCW5hdHRzOwogCWNoYXIJICAqKmF0 dG5hbWVzOwogCU9pZAkJICAgKmF0dHR5cHM7Ci0JQml0bWFwc2V0ICAqYXR0a2V5cyA9IE5VTEw7 CisJQml0bWFwc2V0ICAqYXR0a2V5cyA9IE5VTEwsCisJCQkgICAqYXR0dW5pcXVlID0gTlVMTDsK IAogCW5hdHRzID0gcHFfZ2V0bXNnaW50KGluLCAyKTsKIAlhdHRuYW1lcyA9IHBhbGxvYyhuYXR0 cyAqIHNpemVvZihjaGFyICopKTsKQEAgLTEwMTQsOSArMTA4NSwxMyBAQCBsb2dpY2FscmVwX3Jl YWRfYXR0cnMoU3RyaW5nSW5mbyBpbiwgTG9naWNhbFJlcFJlbGF0aW9uICpyZWwpCiAKIAkJLyog Q2hlY2sgZm9yIHJlcGxpY2EgaWRlbnRpdHkgY29sdW1uICovCiAJCWZsYWdzID0gcHFfZ2V0bXNn Ynl0ZShpbik7Ci0JCWlmIChmbGFncyAmIExPR0lDQUxSRVBfSVNfUkVQTElDQV9JREVOVElUWSkK KwkJaWYgKGZsYWdzICYgQVRUUl9JU19SRVBMSUNBX0lERU5USVRZKQogCQkJYXR0a2V5cyA9IGJt c19hZGRfbWVtYmVyKGF0dGtleXMsIGkpOwogCisJCS8qIENoZWNrIGZvciB1bmlxdWUgY29sdW1u ICovCisJCWlmIChmbGFncyAmIEFUVFJfSVNfVU5JUVVFKQorCQkJYXR0dW5pcXVlID0gYm1zX2Fk ZF9tZW1iZXIoYXR0dW5pcXVlLCBpKTsKKwogCQkvKiBhdHRyaWJ1dGUgbmFtZSAqLwogCQlhdHRu YW1lc1tpXSA9IHBzdHJkdXAocHFfZ2V0bXNnc3RyaW5nKGluKSk7CiAKQEAgLTEwMzAsNiArMTEw NSw3IEBAIGxvZ2ljYWxyZXBfcmVhZF9hdHRycyhTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwUmVs YXRpb24gKnJlbCkKIAlyZWwtPmF0dG5hbWVzID0gYXR0bmFtZXM7CiAJcmVsLT5hdHR0eXBzID0g YXR0dHlwczsKIAlyZWwtPmF0dGtleXMgPSBhdHRrZXlzOworCXJlbC0+YXR0dW5pcXVlID0gYXR0 dW5pcXVlOwogCXJlbC0+bmF0dHMgPSBuYXR0czsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9yZWxhdGlvbi5jCmluZGV4IGU5ODkwNDcuLjFiMWZhZDUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKQEAgLTE5LDEyICsxOSwxOSBAQAog CiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2Uu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1 YnNjcmlwdGlvbl9yZWwuaCIKKyNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVk ZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKKyNp bmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9n aWNhbHJlbGF0aW9uLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgi CisjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgogI2luY2x1ZGUgInV0aWxzL2lu dmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc3lz Y2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogCiAKIHN0YXRpYyBNZW1vcnlD b250ZXh0IExvZ2ljYWxSZXBSZWxNYXBDb250ZXh0ID0gTlVMTDsKQEAgLTkyLDYgKzk5LDI2IEBA IGxvZ2ljYWxyZXBfcmVsbWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQgcmVsb2lkKQog fQogCiAvKgorICogUmVsY2FjaGUgaW52YWxpZGF0aW9uIGNhbGxiYWNrIHRvIHJlc2V0IHBhcmFs bGVsX2FwcGx5X3NhZmUgZmxhZy4KKyAqLworc3RhdGljIHZvaWQKK2xvZ2ljYWxyZXBfcmVsbWFw X3Jlc2V0X3BhcmFsbGVsX2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFs dWUpCit7CisJSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOworCUxvZ2ljYWxSZXBSZWxNYXBFbnRy eSAqZW50cnk7CisKKwlpZiAoTG9naWNhbFJlcFJlbE1hcCA9PSBOVUxMKQorCQlyZXR1cm47CisK KwloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgTG9naWNhbFJlcFJlbE1hcCk7CisJd2hpbGUgKChl bnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCXsKKwkJZW50cnkt PnBhcmFsbGVsX2FwcGx5X3NhZmUgPSBQQVJBTExFTF9BUFBMWV9TQUZFVFlfVU5LTk9XTjsKKwkJ ZW50cnktPmxvY2FscmVsdmFsaWQgPSBmYWxzZTsKKwl9Cit9CisKKy8qCiAgKiBJbml0aWFsaXpl IHRoZSByZWxhdGlvbiBtYXAgY2FjaGUuCiAgKi8KIHN0YXRpYyB2b2lkCkBAIC0xMTYsNiArMTQz LDkgQEAgbG9naWNhbHJlcF9yZWxtYXBfaW5pdCh2b2lkKQogCS8qIFdhdGNoIGZvciBpbnZhbGlk YXRpb24gZXZlbnRzLiAqLwogCUNhY2hlUmVnaXN0ZXJSZWxjYWNoZUNhbGxiYWNrKGxvZ2ljYWxy ZXBfcmVsbWFwX2ludmFsaWRhdGVfY2IsCiAJCQkJCQkJCSAgKERhdHVtKSAwKTsKKwlDYWNoZVJl Z2lzdGVyU3lzY2FjaGVDYWxsYmFjayhQUk9DT0lELAorCQkJCQkJCQkgIGxvZ2ljYWxyZXBfcmVs bWFwX3Jlc2V0X3BhcmFsbGVsX2NiLAorCQkJCQkJCQkgIChEYXR1bSkgMCk7CiB9CiAKIC8qCkBA IC0xNDIsNiArMTcyLDcgQEAgbG9naWNhbHJlcF9yZWxtYXBfZnJlZV9lbnRyeShMb2dpY2FsUmVw UmVsTWFwRW50cnkgKmVudHJ5KQogCQlwZnJlZShyZW1vdGVyZWwtPmF0dHR5cHMpOwogCX0KIAli bXNfZnJlZShyZW1vdGVyZWwtPmF0dGtleXMpOworCWJtc19mcmVlKHJlbW90ZXJlbC0+YXR0dW5p cXVlKTsKIAogCWlmIChlbnRyeS0+YXR0cm1hcCkKIAkJZnJlZV9hdHRybWFwKGVudHJ5LT5hdHRy bWFwKTsKQEAgLTE5MCw2ICsyMjEsNyBAQCBsb2dpY2FscmVwX3JlbG1hcF91cGRhdGUoTG9naWNh bFJlcFJlbGF0aW9uICpyZW1vdGVyZWwpCiAJfQogCWVudHJ5LT5yZW1vdGVyZWwucmVwbGlkZW50 ID0gcmVtb3RlcmVsLT5yZXBsaWRlbnQ7CiAJZW50cnktPnJlbW90ZXJlbC5hdHRrZXlzID0gYm1z X2NvcHkocmVtb3RlcmVsLT5hdHRrZXlzKTsKKwllbnRyeS0+cmVtb3RlcmVsLmF0dHVuaXF1ZSA9 IGJtc19jb3B5KHJlbW90ZXJlbC0+YXR0dW5pcXVlKTsKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY3R4KTsKIH0KIApAQCAtMzExLDYgKzM0MywxODIgQEAgbG9naWNhbHJlcF9yZWxfbWFya191 cGRhdGFibGUoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSkKIH0KIAogLyoKKyAqIENoZWNr IGlmIGNoYW5nZXMgb24gb25lIHJlbGF0aW9uIGNhbiBiZSBhcHBsaWVkIHVzaW5nIGFuIGFwcGx5 IGJhY2tncm91bmQKKyAqIHdvcmtlciBhbmQgYXNzaWduIHRoZSAncGFyYWxsZWxfYXBwbHlfc2Fm ZScgZmxhZy4KKyAqCisgKiBUaGVyZSBhcmUgdHdvIHJlcXVpcmVtZW50cyBmb3IgYXBwbHlpbmcg Y2hhbmdlcyB1c2luZyBhbiBhcHBseSBiYWNrZ3JvdW5kCisgKiB3b3JrZXI6IDEpIHRoZSB1bmlx dWUgY29sdW1uIGluIHRoZSB0YWJsZSBvbiB0aGUgc3Vic2NyaWJlci1zaWRlIHNob3VsZCBhbHNv CisgKiBiZSB0aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcHVibGlzaGVyLXNpZGU7IDIpIHRoZXJl IGNhbm5vdCBiZSBhbnkKKyAqIG5vbi1pbW11dGFibGUgZnVuY3Rpb25zIHVzZWQgYnkgdGhlIHN1 YnNjcmliZXItc2lkZSByZXBsaWNhdGVkIHRhYmxlLgorICoKKyAqIFdpdGhvdXQgdGhlc2UgcmVz dHJpY3Rpb25zLCB0aGUgZm9sbG93aW5nIHNjZW5hcmlvIG1heSBvY2N1cjogVGhlIGFwcGx5Cisg KiBiYWNrZ3JvdW5kIHdvcmtlciBsb2NrcyBhIHJvdyB3aGVuIHByb2Nlc3NpbmcgYSBzdHJlYW1p bmcgdHJhbnNhY3Rpb24sIGFmdGVyCisgKiB0aGF0IHRoZSBtYWluIGFwcGx5IHdvcmtlciB0cmll cyB0byBsb2NrIHRoZSBzYW1lIHJvdyB3aGVuIHByb2Nlc3NpbmcKKyAqIGFub3RoZXIgbm9uLXN0 cmVhbWVkIHRyYW5zYWN0aW9uLiBBdCB0aGlzIHRpbWUsIHRoZSBtYWluIGFwcGx5IHdvcmtlciB3 YWl0cworICogZm9yIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gY29tcGxldGUgYW5kIHRo ZSBsb2NrIHRvIGJlIHJlbGVhc2VkLCBpdAorICogd29uJ3Qgc2VuZCBzdWJzZXF1ZW50IGRhdGEg b2YgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byB0aGUgYXBwbHkKKyAqIGJhY2tncm91bmQg d29ya2VyOyB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgd2FpdHMgdG8gcmVjZWl2ZSB0aGUg cmVzdCBvZgorICogc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGFuZCBjYW4ndCBmaW5pc2ggdGhpcyB0 cmFuc2FjdGlvbi4gTm93IGEgZGVhZGxvY2sgaGFzCisgKiBvY2N1cnJlZCwgc28gYm90aCB3b3Jr ZXJzIHdpbGwgd2FpdCBpbmRlZmluaXRlbHkuCisgKgorICogV2UganVzdCBtYXJrIHRoZSByZWxh dGlvbiBlbnRyeSBhcyAnUEFSQUxMRUxfQVBQTFlfVU5TQUZFJyBoZXJlIGlmIGNoYW5nZXMKKyAq IG9uIG9uZSByZWxhdGlvbiBjYW4gbm90IGJlIGFwcGxpZWQgdXNpbmcgYW4gYXBwbHkgYmFja2dy b3VuZCB3b3JrZXIgYW5kCisgKiBsZWF2ZSBpdCB0byBhcHBseV9iZ3dvcmtlcl9yZWxhdGlvbl9j aGVjaygpIHRvIHRocm93IHRoZSBhY3R1YWwgZXJyb3IgaWYKKyAqIG5lZWRlZC4KKyAqLworc3Rh dGljIHZvaWQKK2xvZ2ljYWxyZXBfcmVsX21hcmtfcGFyYWxsZWxfYXBwbHkoTG9naWNhbFJlcFJl bE1hcEVudHJ5ICplbnRyeSkKK3sKKwlCaXRtYXBzZXQgICAqdWtleTsKKwlpbnQJCQlpOworCVR1 cGxlRGVzYwl0dXBkZXNjOworCWludAkJCWF0dG51bTsKKwlMaXN0CSAgICpma2V5cyA9IE5JTDsK KworCS8qIEZhc3QgcGF0aCBpZiAncGFyYWxsZWxfYXBwbHlfc2FmZScgZmxhZyBpcyBhbHJlYWR5 IGtub3duLiAqLworCWlmIChlbnRyeS0+cGFyYWxsZWxfYXBwbHlfc2FmZSAhPSBQQVJBTExFTF9B UFBMWV9TQUZFVFlfVU5LTk9XTikKKwkJcmV0dXJuOworCisJLyogSW5pdGlhbGl6ZSB0aGUgZmxh Zy4gKi8KKwllbnRyeS0+cGFyYWxsZWxfYXBwbHlfc2FmZSA9IFBBUkFMTEVMX0FQUExZX1NBRkU7 CisKKwkvKgorCSAqIEZpcnN0LCBjaGVjayBpZiB0aGUgdW5pcXVlIGNvbHVtbiBpbiB0aGUgcmVs YXRpb24gb24gdGhlIHN1YnNjcmliZXItc2lkZQorCSAqIGlzIGFsc28gdGhlIHVuaXF1ZSBjb2x1 bW4gb24gdGhlIHB1Ymxpc2hlci1zaWRlLgorCSAqLworCXVrZXkgPSBSZWxhdGlvbkdldEluZGV4 QXR0ckJpdG1hcChlbnRyeS0+bG9jYWxyZWwsCisJCQkJCQkJCQkgIElOREVYX0FUVFJfQklUTUFQ X0tFWSk7CisKKwlpZiAodWtleSkKKwl7CisJCWkgPSAtMTsKKwkJd2hpbGUgKChpID0gYm1zX25l eHRfbWVtYmVyKHVrZXksIGkpKSA+PSAwKQorCQl7CisJCQlhdHRudW0gPSBBdHRyTnVtYmVyR2V0 QXR0ck9mZnNldChpICsgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisKKwkJ CWlmIChlbnRyeS0+YXR0cm1hcC0+YXR0bnVtc1thdHRudW1dIDwgMCB8fAorCQkJCSFibXNfaXNf bWVtYmVyKGVudHJ5LT5hdHRybWFwLT5hdHRudW1zW2F0dG51bV0sIGVudHJ5LT5yZW1vdGVyZWwu YXR0dW5pcXVlKSkKKwkJCXsKKwkJCQllbnRyeS0+cGFyYWxsZWxfYXBwbHlfc2FmZSA9IFBBUkFM TEVMX0FQUExZX1VOU0FGRTsKKwkJCQlibXNfZnJlZSh1a2V5KTsKKwkJCQlyZXR1cm47CisJCQl9 CisJCX0KKworCQlibXNfZnJlZSh1a2V5KTsKKwl9CisKKwkvKgorCSAqIFRoZW4sIGNoZWNrIGlm IHRoZXJlIGlzIGFueSBub24taW1tdXRhYmxlIGZ1bmN0aW9uIHVzZWQgYnkgdGhlCisJICogc3Vi c2NyaWJlci1zaWRlIHJlbGF0aW9uLiBMb29rIGZvciBmdW5jdGlvbnMgaW4gdGhlIGZvbGxvd2lu ZyBwbGFjZXM6CisJICogYS4gdHJpZ2dlciBmdW5jdGlvbnM7CisJICogYi4gQ29sdW1uIGRlZmF1 bHQgdmFsdWUgZXhwcmVzc2lvbnMgYW5kIGRvbWFpbiBjb25zdHJhaW50czsKKwkgKiBjLiBDb25z dHJhaW50IGV4cHJlc3Npb25zOworCSAqIGQuIEZvcmVpZ24ga2V5cy4KKwkgKi8KKwkvKiBDaGVj ayB0aGUgdHJpZ2dlciBmdW5jdGlvbnMuICovCisJaWYgKGVudHJ5LT5sb2NhbHJlbC0+dHJpZ2Rl c2MgIT0gTlVMTCkKKwl7CisJCWZvciAoaSA9IDA7IGkgPCBlbnRyeS0+bG9jYWxyZWwtPnRyaWdk ZXNjLT5udW10cmlnZ2VyczsgaSsrKQorCQl7CisJCQlUcmlnZ2VyICAgICp0cmlnID0gZW50cnkt PmxvY2FscmVsLT50cmlnZGVzYy0+dHJpZ2dlcnMgKyBpOworCisJCQlpZiAodHJpZy0+dGdlbmFi bGVkICE9IFRSSUdHRVJfRklSRVNfQUxXQVlTICYmCisJCQkJdHJpZy0+dGdlbmFibGVkICE9IFRS SUdHRVJfRklSRVNfT05fUkVQTElDQSkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKGZ1bmNfdm9s YXRpbGUodHJpZy0+dGdmb2lkKSAhPSBQUk9WT0xBVElMRV9JTU1VVEFCTEUpCisJCQl7CisJCQkJ ZW50cnktPnBhcmFsbGVsX2FwcGx5X3NhZmUgPSBQQVJBTExFTF9BUFBMWV9VTlNBRkU7CisJCQkJ cmV0dXJuOworCQkJfQorCQl9CisJfQorCisJLyogQ2hlY2sgdGhlIGNvbHVtbnMuICovCisJdHVw ZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IoZW50cnktPmxvY2FscmVsKTsKKwlmb3IgKGF0dG51bSA9 IDA7IGF0dG51bSA8IHR1cGRlc2MtPm5hdHRzOyBhdHRudW0rKykKKwl7CisJCUZvcm1fcGdfYXR0 cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIodHVwZGVzYywgYXR0bnVtKTsKKworCQkvKiBXZSBk b24ndCBjaGVjayBkcm9wcGVkIG9yIGdlbmVyYXRlZCBhdHRyaWJ1dGVzICovCisJCWlmIChhdHQt PmF0dGlzZHJvcHBlZCB8fCBhdHQtPmF0dGdlbmVyYXRlZCkKKwkJCWNvbnRpbnVlOworCisJCWlm IChhdHQtPmF0dGhhc2RlZikKKwkJeworCQkJTm9kZQkgICAqZGVmYXVsdGV4cHI7CisKKwkJCWRl ZmF1bHRleHByID0gYnVpbGRfY29sdW1uX2RlZmF1bHQoZW50cnktPmxvY2FscmVsLCBhdHRudW0g KyAxKTsKKwkJCWlmIChjb250YWluX211dGFibGVfZnVuY3Rpb25zKGRlZmF1bHRleHByKSkKKwkJ CXsKKwkJCQllbnRyeS0+cGFyYWxsZWxfYXBwbHlfc2FmZSA9IFBBUkFMTEVMX0FQUExZX1VOU0FG RTsKKwkJCQlyZXR1cm47CisJCQl9CisJCX0KKworCQkvKgorCQkgKiBJZiB0aGUgY29sdW1uIGlz IG9mIGEgRE9NQUlOIHR5cGUsIGRldGVybWluZSB3aGV0aGVyCisJCSAqIHRoYXQgZG9tYWluIGhh cyBhbnkgQ0hFQ0sgZXhwcmVzc2lvbnMgdGhhdCBhcmUgbm90CisJCSAqIGltbXV0YWJsZS4KKwkJ ICovCisJCWlmIChnZXRfdHlwdHlwZShhdHQtPmF0dHR5cGlkKSA9PSBUWVBUWVBFX0RPTUFJTikK KwkJeworCQkJTGlzdAkgICAqZG9tYWluX2NvbnN0cmFpbnRzOworCQkJTGlzdENlbGwgICAqbGM7 CisKKwkJCWRvbWFpbl9jb25zdHJhaW50cyA9IEdldERvbWFpbkNvbnN0cmFpbnRzKGF0dC0+YXR0 dHlwaWQpOworCisJCQlmb3JlYWNoKGxjLCBkb21haW5fY29uc3RyYWludHMpCisJCQl7CisJCQkJ RG9tYWluQ29uc3RyYWludFN0YXRlICpjb24gPSAoRG9tYWluQ29uc3RyYWludFN0YXRlICopIGxm aXJzdChsYyk7CisKKwkJCQlpZiAoY29uLT5jaGVja19leHByICYmIGNvbnRhaW5fbXV0YWJsZV9m dW5jdGlvbnMoKE5vZGUgKikgY29uLT5jaGVja19leHByKSkKKwkJCQl7CisJCQkJCWVudHJ5LT5w YXJhbGxlbF9hcHBseV9zYWZlID0gUEFSQUxMRUxfQVBQTFlfVU5TQUZFOworCQkJCQlyZXR1cm47 CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJLyogQ2hlY2sgdGhlIGNvbnN0cmFpbnRzLiAqLwor CWlmICh0dXBkZXNjLT5jb25zdHIpCisJeworCQlDb25zdHJDaGVjayAqY2hlY2sgPSB0dXBkZXNj LT5jb25zdHItPmNoZWNrOworCisJCS8qCisJCSAqIERldGVybWluZSBpZiB0aGVyZSBhcmUgYW55 IENIRUNLIGNvbnN0cmFpbnRzIHdoaWNoCisJCSAqIGNvbnRhaW5zIG5vbi1pbW11dGFibGUgZnVu Y3Rpb24uCisJCSAqLworCQlmb3IgKGkgPSAwOyBpIDwgdHVwZGVzYy0+Y29uc3RyLT5udW1fY2hl Y2s7IGkrKykKKwkJeworCQkJRXhwcgkgICAqY2hlY2tfZXhwciA9IHN0cmluZ1RvTm9kZShjaGVj a1tpXS5jY2Jpbik7CisKKwkJCWlmIChjb250YWluX211dGFibGVfZnVuY3Rpb25zKChOb2RlICop IGNoZWNrX2V4cHIpKQorCQkJeworCQkJCWVudHJ5LT5wYXJhbGxlbF9hcHBseV9zYWZlID0gUEFS QUxMRUxfQVBQTFlfVU5TQUZFOworCQkJCXJldHVybjsKKwkJCX0KKwkJfQorCX0KKworCS8qCisJ ICogQ2hlY2sgdGhlIGZvcmVpZ24ga2V5cy4KKwkgKgorCSAqIFhYWCBJdCBpcyBiZXR0ZXIgdG8g b25seSBjaGVjayB0aGUgZm9yZWlnbiBrZXkgd2hlbiBpdCBpcyBkZXRlY3RlZCB0aGF0CisJICog dGhlIHB1Ymxpc2hlciBkb2VzIG5vdCBoYXZlIHRoZSBmb3JlaWduIGtleSBhbmQgdGhlIHN1YnNj cmliZXIgZG9lcy4gQnV0CisJICogdGhpcyByZXF1aXJlcyB0aGUgcHVibGlzaGVyIHRvIHNlbmQg bW9yZSBpbmZvcm1hdGlvbi4gSW4gYWRkaXRpb24sIHNpbmNlCisJICogZm9yZWlnbiBrZXkgZG9l cyBub3QgdGFrZSBlZmZlY3QgaW4gdGhlIHN1YnNjcmliZXIncyBhcHBseSB3b3JrZXIgYnkKKwkg KiBkZWZhdWx0LCBpdCBzZWVtcyB0aGF0IGZvcmVpZ24ga2V5IGRvZXMgbm90IGhpdCB0aGlzIEVS Uk9SIGZyZXF1ZW50bHkuCisJICogU28sIG9ubHkgYSBzaW1wbGUgY2hlY2sgYmFzZWQgb24gdGhl IHN1YnNjcmliZXIgc2NoZW1hIGlzIGtlcHQgaGVyZS4KKwkgKi8KKwlma2V5cyA9IFJlbGF0aW9u R2V0RktleUxpc3QoZW50cnktPmxvY2FscmVsKTsKKwlpZiAoZmtleXMpCisJCWVudHJ5LT5wYXJh bGxlbF9hcHBseV9zYWZlID0gUEFSQUxMRUxfQVBQTFlfVU5TQUZFOworfQorCisvKgogICogT3Bl biB0aGUgbG9jYWwgcmVsYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSByZW1vdGUgb25lLgogICoK ICAqIFJlYnVpbGRzIHRoZSBSZWxjYWNoZSBtYXBwaW5nIGlmIGl0IHdhcyBpbnZhbGlkYXRlZCBi eSBsb2NhbCBEREwuCkBAIC00MzgsNiArNjQ2LDkgQEAgbG9naWNhbHJlcF9yZWxfb3BlbihMb2dp Y2FsUmVwUmVsSWQgcmVtb3RlaWQsIExPQ0tNT0RFIGxvY2ttb2RlKQogCQkgKi8KIAkJbG9naWNh bHJlcF9yZWxfbWFya191cGRhdGFibGUoZW50cnkpOwogCisJCS8qIFNldCBpZiBjaGFuZ2VzIGNv dWxkIGJlIGFwcGxpZWQgdXNpbmcgYW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuICovCisJCWxv Z2ljYWxyZXBfcmVsX21hcmtfcGFyYWxsZWxfYXBwbHkoZW50cnkpOworCiAJCWVudHJ5LT5sb2Nh bHJlbHZhbGlkID0gdHJ1ZTsKIAl9CiAKQEAgLTY1Myw2ICs4NjQsNyBAQCBsb2dpY2FscmVwX3Bh cnRpdGlvbl9vcGVuKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcm9vdCwKIAkJfQogCQllbnRyeS0+ cmVtb3RlcmVsLnJlcGxpZGVudCA9IHJlbW90ZXJlbC0+cmVwbGlkZW50OwogCQllbnRyeS0+cmVt b3RlcmVsLmF0dGtleXMgPSBibXNfY29weShyZW1vdGVyZWwtPmF0dGtleXMpOworCQllbnRyeS0+ cmVtb3RlcmVsLmF0dHVuaXF1ZSA9IGJtc19jb3B5KHJlbW90ZXJlbC0+YXR0dW5pcXVlKTsKIAl9 CiAKIAllbnRyeS0+bG9jYWxyZWwgPSBwYXJ0cmVsOwpAQCAtNjk2LDYgKzkwOCw5IEBAIGxvZ2lj YWxyZXBfcGFydGl0aW9uX29wZW4oTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyb290LAogCS8qIFNl dCBpZiB0aGUgdGFibGUncyByZXBsaWNhIGlkZW50aXR5IGlzIGVub3VnaCB0byBhcHBseSB1cGRh dGUvZGVsZXRlLiAqLwogCWxvZ2ljYWxyZXBfcmVsX21hcmtfdXBkYXRhYmxlKGVudHJ5KTsKIAor CS8qIFNldCBpZiBjaGFuZ2VzIGNvdWxkIGJlIGFwcGxpZWQgdXNpbmcgYW4gYXBwbHkgYmFja2dy b3VuZCB3b3JrZXIuICovCisJbG9naWNhbHJlcF9yZWxfbWFya19wYXJhbGxlbF9hcHBseShlbnRy eSk7CisKIAllbnRyeS0+bG9jYWxyZWx2YWxpZCA9IHRydWU7CiAKIAkvKiBzdGF0ZSBhbmQgc3Rh dGVsc24gYXJlIGxlZnQgc2V0IHRvIDAuICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC90YWJsZXN5bmMuYwppbmRleCA2ODg4ZWVlLi5mZDZmNDhhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTg4MCw2ICs4ODAsNyBAQCBmZXRj aF9yZW1vdGVfdGFibGVfaW5mbyhjaGFyICpuc3BuYW1lLCBjaGFyICpyZWxuYW1lLAogCWxyZWwt PmF0dG5hbWVzID0gcGFsbG9jMChNYXhUdXBsZUF0dHJpYnV0ZU51bWJlciAqIHNpemVvZihjaGFy ICopKTsKIAlscmVsLT5hdHR0eXBzID0gcGFsbG9jMChNYXhUdXBsZUF0dHJpYnV0ZU51bWJlciAq IHNpemVvZihPaWQpKTsKIAlscmVsLT5hdHRrZXlzID0gTlVMTDsKKwlscmVsLT5hdHR1bmlxdWUg PSBOVUxMOwogCiAJLyoKIAkgKiBTdG9yZSB0aGUgY29sdW1ucyBhcyBhIGxpc3Qgb2YgbmFtZXMu ICBJZ25vcmUgdGhvc2UgdGhhdCBhcmUgbm90CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC93b3JrZXIuYwppbmRleCBhMWE2MGIwLi5iMWQ4OTljIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTE0MDMsNiArMTQwMywxNCBAQCBhcHBseV9oYW5kbGVf c3RyZWFtX3N0b3AoU3RyaW5nSW5mbyBzKQogCSAqLwogCWVsc2UgaWYgKCh3aW5mbyA9IGFwcGx5 X2Jnd29ya2VyX2ZpbmQoc3RyZWFtX3hpZCkpKQogCXsKKwkJLyoKKwkJICogVW5saWtlIHN0cmVh bV9jb21taXQsIHdlIGRvbid0IG5lZWQgdG8gd2FpdCBoZXJlIGZvciBzdHJlYW1fc3RvcCB0bwor CQkgKiBmaW5pc2guIEFsbG93aW5nIHRoZSBvdGhlciB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVk IGJlZm9yZQorCQkgKiBzdHJlYW1fc3RvcCBpcyBmaW5pc2hlZCBjYW4gbGVhZCB0byBmYWlsdXJl cyBpZiB0aGUgdW5pcXVlCisJCSAqIGluZGV4L2NvbnN0cmFpbnQgaXMgZGlmZmVyZW50IGJldHdl ZW4gcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyLiBCdXQKKwkJICogZm9yIHN1Y2ggY2FzZXMsIHdl IGRvbid0IGFsbG93IHN0cmVhbWVkIHRyYW5zYWN0aW9ucyB0byBiZSBhcHBsaWVkCisJCSAqIGlu IHBhcmFsbGVsLiBTZWUgYXBwbHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2suCisJCSAqLwogCQlh cHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CiAKIAkJZWxv ZyhERUJVRzEsICJzdG9wcGVkIHN0cmVhbWluZyBvZiB4aWQgJXUsICV1IGNoYW5nZXMgc3RyZWFt ZWQiLCBzdHJlYW1feGlkLCBuY2hhbmdlcyk7CkBAIC0yMDYyLDYgKzIwNzAsOCBAQCBhcHBseV9o YW5kbGVfaW5zZXJ0KFN0cmluZ0luZm8gcykKIAkvKiBTZXQgcmVsYXRpb24gZm9yIGVycm9yIGNh bGxiYWNrICovCiAJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLnJlbCA9IHJlbDsKIAorCWFwcGx5 X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKHJlbCk7CisKIAkvKiBJbml0aWFsaXplIHRoZSBleGVj dXRvciBzdGF0ZS4gKi8KIAllZGF0YSA9IGNyZWF0ZV9lZGF0YV9mb3JfcmVsYXRpb24ocmVsKTsK IAllc3RhdGUgPSBlZGF0YS0+ZXN0YXRlOwpAQCAtMjIwNSw2ICsyMjE1LDggQEAgYXBwbHlfaGFu ZGxlX3VwZGF0ZShTdHJpbmdJbmZvIHMpCiAJLyogQ2hlY2sgaWYgd2UgY2FuIGRvIHRoZSB1cGRh dGUuICovCiAJY2hlY2tfcmVsYXRpb25fdXBkYXRhYmxlKHJlbCk7CiAKKwlhcHBseV9iZ3dvcmtl cl9yZWxhdGlvbl9jaGVjayhyZWwpOworCiAJLyogSW5pdGlhbGl6ZSB0aGUgZXhlY3V0b3Igc3Rh dGUuICovCiAJZWRhdGEgPSBjcmVhdGVfZWRhdGFfZm9yX3JlbGF0aW9uKHJlbCk7CiAJZXN0YXRl ID0gZWRhdGEtPmVzdGF0ZTsKQEAgLTIzNzMsNiArMjM4NSw4IEBAIGFwcGx5X2hhbmRsZV9kZWxl dGUoU3RyaW5nSW5mbyBzKQogCS8qIENoZWNrIGlmIHdlIGNhbiBkbyB0aGUgZGVsZXRlLiAqLwog CWNoZWNrX3JlbGF0aW9uX3VwZGF0YWJsZShyZWwpOwogCisJYXBwbHlfYmd3b3JrZXJfcmVsYXRp b25fY2hlY2socmVsKTsKKwogCS8qIEluaXRpYWxpemUgdGhlIGV4ZWN1dG9yIHN0YXRlLiAqLwog CWVkYXRhID0gY3JlYXRlX2VkYXRhX2Zvcl9yZWxhdGlvbihyZWwpOwogCWVzdGF0ZSA9IGVkYXRh LT5lc3RhdGU7CkBAIC0yNTU4LDEzICsyNTcyLDE0IEBAIGFwcGx5X2hhbmRsZV90dXBsZV9yb3V0 aW5nKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJfQogCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjdHgpOwogCisJcGFydF9lbnRyeSA9IGxvZ2ljYWxyZXBfcGFydGl0aW9uX29wZW4ocmVs bWFwZW50cnksIHBhcnRyZWwsCisJCQkJCQkJCQkJICAgYXR0cm1hcCk7CisKIAkvKiBDaGVjayBp ZiB3ZSBjYW4gZG8gdGhlIHVwZGF0ZSBvciBkZWxldGUgb24gdGhlIGxlYWYgcGFydGl0aW9uLiAq LwogCWlmIChvcGVyYXRpb24gPT0gQ01EX1VQREFURSB8fCBvcGVyYXRpb24gPT0gQ01EX0RFTEVU RSkKLQl7Ci0JCXBhcnRfZW50cnkgPSBsb2dpY2FscmVwX3BhcnRpdGlvbl9vcGVuKHJlbG1hcGVu dHJ5LCBwYXJ0cmVsLAotCQkJCQkJCQkJCQkgICBhdHRybWFwKTsKIAkJY2hlY2tfcmVsYXRpb25f dXBkYXRhYmxlKHBhcnRfZW50cnkpOwotCX0KKworCWFwcGx5X2Jnd29ya2VyX3JlbGF0aW9uX2No ZWNrKHBhcnRfZW50cnkpOwogCiAJc3dpdGNoIChvcGVyYXRpb24pCiAJewpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3R5cGNhY2hlLmMKaW5kZXggODA4ZjllYi4uYjI0ODg5OSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS90eXBjYWNoZS5jCkBAIC0yNTQxLDYgKzI1NDEsMjMgQEAgY29tcGFyZV92YWx1ZXNfb2ZfZW51 bShUeXBlQ2FjaGVFbnRyeSAqdGNhY2hlLCBPaWQgYXJnMSwgT2lkIGFyZzIpCiB9CiAKIC8qCisg KiBHZXREb21haW5Db25zdHJhaW50cyAtLS0gZ2V0IERvbWFpbkNvbnN0cmFpbnRTdGF0ZSBsaXN0 IG9mIHNwZWNpZmllZCBkb21haW4gdHlwZQorICovCitMaXN0ICoKK0dldERvbWFpbkNvbnN0cmFp bnRzKE9pZCB0eXBlX2lkKQoreworCVR5cGVDYWNoZUVudHJ5ICp0eXBlbnRyeTsKKwlMaXN0CQkg ICAqY29uc3RyYWludHMgPSBOSUw7CisKKwl0eXBlbnRyeSA9IGxvb2t1cF90eXBlX2NhY2hlKHR5 cGVfaWQsIFRZUEVDQUNIRV9ET01BSU5fQ09OU1RSX0lORk8pOworCisJaWYodHlwZW50cnktPmRv bWFpbkRhdGEgIT0gTlVMTCkKKwkJY29uc3RyYWludHMgPSB0eXBlbnRyeS0+ZG9tYWluRGF0YS0+ Y29uc3RyYWludHM7CisKKwlyZXR1cm4gY29uc3RyYWludHM7Cit9CisKKy8qCiAgKiBMb2FkIChv ciByZS1sb2FkKSB0aGUgZW51bURhdGEgbWVtYmVyIG9mIHRoZSB0eXBjYWNoZSBlbnRyeS4KICAq Lwogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWxwcm90by5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKaW5kZXgg ZWIwZmQyNC4uNDM5NWMxMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9n aWNhbHByb3RvLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgK QEAgLTExMyw2ICsxMTMsNyBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwUmVsYXRpb24KIAlj aGFyCQlyZXBsaWRlbnQ7CQkvKiByZXBsaWNhIGlkZW50aXR5ICovCiAJY2hhcgkJcmVsa2luZDsJ CS8qIHJlbW90ZSByZWxhdGlvbiBraW5kICovCiAJQml0bWFwc2V0ICAqYXR0a2V5czsJCS8qIEJp dG1hcCBvZiBrZXkgY29sdW1ucyAqLworCUJpdG1hcHNldCAgKmF0dHVuaXF1ZTsJCS8qIEJpdG1h cCBvZiB1bmlxdWUgY29sdW1ucyAqLwogfSBMb2dpY2FsUmVwUmVsYXRpb247CiAKIC8qIFR5cGUg bWFwcGluZyBpbmZvICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dp Y2FscmVsYXRpb24uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5o CmluZGV4IDc4Y2Q3ZTcuLjJiMzNmZTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWxyZWxhdGlvbi5oCkBAIC0xNSw2ICsxNSwxNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9hdHRtYXAu aCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCIKIAorLyoKKyAqCVN0YXRl cyB0byBkZXRlcm1pbmUgaWYgY2hhbmdlcyBvbiBvbmUgcmVsYXRpb24gY2FuIGJlIGFwcGxpZWQg dXNpbmcgYW4KKyAqCWFwcGx5IGJhY2tncm91bmQgd29ya2VyLgorICovCit0eXBlZGVmIGVudW0g UGFyYWxsZWxBcHBseVNhZmV0eQoreworCVBBUkFMTEVMX0FQUExZX1NBRkVUWV9VTktOT1dOLAor CVBBUkFMTEVMX0FQUExZX1NBRkUsCisJUEFSQUxMRUxfQVBQTFlfVU5TQUZFCit9IFBhcmFsbGVs QXBwbHlTYWZldHk7CisKIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBSZWxNYXBFbnRyeQogewog CUxvZ2ljYWxSZXBSZWxhdGlvbiByZW1vdGVyZWw7CS8qIGtleSBpcyByZW1vdGVyZWwucmVtb3Rl aWQgKi8KQEAgLTMxLDYgKzQyLDggQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJlbE1hcEVu dHJ5CiAJUmVsYXRpb24JbG9jYWxyZWw7CQkvKiByZWxjYWNoZSBlbnRyeSAoTlVMTCB3aGVuIGNs b3NlZCkgKi8KIAlBdHRyTWFwICAgICphdHRybWFwOwkJLyogbWFwIG9mIGxvY2FsIGF0dHJpYnV0 ZXMgdG8gcmVtb3RlIG9uZXMgKi8KIAlib29sCQl1cGRhdGFibGU7CQkvKiBDYW4gYXBwbHkgdXBk YXRlcy9kZWxldGVzPyAqLworCVBhcmFsbGVsQXBwbHlTYWZldHkJcGFyYWxsZWxfYXBwbHlfc2Fm ZTsJLyogQ2FuIGFwcGx5IGNoYW5nZXMgaW4gYW4gYXBwbHkKKwkJCQkJCQkJCQkJCSAgIGJhY2tn cm91bmQgd29ya2VyPyAqLwogCiAJLyogU3luYyBzdGF0ZS4gKi8KIAljaGFyCQlzdGF0ZTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggNDMwODAwNi4uMjk2 NzEyZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFs LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTIy MSw2ICsyMjEsOCBAQCBleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtlcl9zdWJ4YWN0X2luZm9fYWRk KFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQpOwogZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJf c2F2ZXBvaW50X25hbWUoT2lkIHN1Ym9pZCwgT2lkIHJlbGlkLAogCQkJCQkJCQkJCSAgY2hhciAq c3BuYW1lLCBpbnQgc3pzcCk7CiAKK2V4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX3JlbGF0aW9u X2NoZWNrKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKTsKKwogI2RlZmluZSBpc0FwcGx5QmdX b3JrZXIod29ya2VyKSAod29ya2VyLT5hcHBseV9sZWFkZXJfcGlkICE9IEludmFsaWRQaWQpCiAK IHN0YXRpYyBpbmxpbmUgYm9vbApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2Fj aGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmgKaW5kZXggNDMxYWQ3Zi4uZWQ3YzJl NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaAorKysgYi9zcmMvaW5j bHVkZS91dGlscy90eXBjYWNoZS5oCkBAIC0xOTksNiArMTk5LDggQEAgZXh0ZXJuIHVpbnQ2NCBh c3NpZ25fcmVjb3JkX3R5cGVfaWRlbnRpZmllcihPaWQgdHlwZV9pZCwgaW50MzIgdHlwbW9kKTsK IAogZXh0ZXJuIGludAljb21wYXJlX3ZhbHVlc19vZl9lbnVtKFR5cGVDYWNoZUVudHJ5ICp0Y2Fj aGUsIE9pZCBhcmcxLCBPaWQgYXJnMik7CiAKK2V4dGVybiBMaXN0ICpHZXREb21haW5Db25zdHJh aW50cyhPaWQgdHlwZV9pZCk7CisKIGV4dGVybiBzaXplX3QgU2hhcmVkUmVjb3JkVHlwbW9kUmVn aXN0cnlFc3RpbWF0ZSh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgU2hhcmVkUmVjb3JkVHlwbW9kUmVn aXN0cnlJbml0KFNoYXJlZFJlY29yZFR5cG1vZFJlZ2lzdHJ5ICosCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDE1X3N0cmVhbS5wbAppbmRleCA5ZjQ5NDZkLi43YTZjZWU2IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxNV9zdHJlYW0ucGwKQEAgLTEzLDcgKzEzLDcgQEAgdXNlIFRlc3Q6Ok1vcmU7CiAj IHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KIHN1YiB0ZXN0X3N0cmVhbWluZwogewotCW15ICgk bm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwp ID0gQF87CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUp ID0gQF87CiAKIAkjIEludGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNl ZWRpbmcgdGhlIDY0a0IgbGltaXQuCiAJbXkgJGluICA9ICcnOwpAQCAtMjQsMTYgKzI0LDYgQEAg c3ViIHRlc3Rfc3RyZWFtaW5nCiAJbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRf cHNxbCgncG9zdGdyZXMnLCBcJGluLCBcJG91dCwgJHRpbWVyLAogCQlvbl9lcnJvcl9zdG9wID0+ IDApOwogCi0JIyBDaGVjayB0aGF0IGEgYmFja2dyb3VuZCB3b3JrZXIgc3RhcnRzIGlmICJzdHJl YW1pbmciIHBhcmFtZXRlciBpcwotCSMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIuICBXZSBoYXZl IHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzCi0JIyBhYm91dCB0aGF0LCBzbyB0 ZW1wb3JhcmlseSBidW1wIHVwIHRoZSBsb2cgdmVyYm9zaXR5LgotCWlmICgkaXNfcGFyYWxsZWwp Ci0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywK LQkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7Ci0JCSRub2RlX3N1YnNjcmliZXItPnJl bG9hZDsKLQl9Ci0KIAkkaW4gLj0gcXsKIAlCRUdJTjsKIAlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7 CkBAIC00MiwxNCArMzIsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAl9OwogCSRoLT5wdW1wX25i OwogCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9y X2xvZyhxci9cW0FwcGx5IEJHVyAjXGQrXF0gc3RhcnRlZC8sIDApOwotCQkkbm9kZV9zdWJzY3Jp YmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKLQkJCSJsb2dfbWluX21lc3NhZ2Vz ID0gd2FybmluZyIpOwotCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7Ci0JfQotCiAJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJCSdwb3N0Z3JlcycsIHF7CiAJQkVHSU47CkBAIC0xNjMs NyArMTQ1LDcgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNv dW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwgJ2No ZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotdGVzdF9zdHJl YW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7Cit0 ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1l KTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgVGVzdCB1c2lu ZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCkBAIC0xNzIsOCArMTU0LDEzIEBAIG15ICRvbGRw aWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgcGlk IEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBu YW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCi0kbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0 cmVhbWluZyA9IHBhcmFsbGVsLCBiaW5hcnkgPSBvZmYpIik7CisjICJzdHJlYW1pbmcgPSBwYXJh bGxlbCIgZG9lcyBub3Qgc3VwcG9ydCBub24taW1tdXRhYmxlIGZ1bmN0aW9ucywgc28gY2hhbmdl CisjIHRoZSBmdW5jdGlvbiBpbiB0aGUgZGVmYXVsdCBleHByZXNzaW9uIG9mIGNvbHVtbiAiYyIu Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitBTFRFUiBU QUJMRSB0ZXN0X3RhYiBBTFRFUiBDT0xVTU4gYyBTRVQgREVGQVVMVCB0b190aW1lc3RhbXAoMCk7 CitBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwsIGJp bmFyeSA9IG9mZik7Cit9KTsKIAogJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdw b3N0Z3JlcycsCiAJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVh bWluZyc7IgpAQCAtMTgxLDcgKzE2OCw3IEBAICRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91 bnRpbCgncG9zdGdyZXMnLAogICBvciBkaWUKICAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZv ciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CiAKLXRlc3Rf c3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEp OwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBw bmFtZSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3Qu cGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKaW5kZXgg MTA0YTE2OS4uODVmYzU3ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2 X3N0cmVhbV9zdWJ4YWN0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJl YW1fc3VieGFjdC5wbApAQCAtMTMsMTcgKzEzLDcgQEAgdXNlIFRlc3Q6Ok1vcmU7CiAjIHN0cmVh bWluZz1wYXJhbGxlbCBjYXNlcy4KIHN1YiB0ZXN0X3N0cmVhbWluZwogewotCW15ICgkbm9kZV9w dWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87 Ci0KLQkjIENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWlu ZyIgcGFyYW1ldGVyIGlzCi0JIyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIi4gIFdlIGhhdmUgdG8g bG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMKLQkjIGFib3V0IHRoYXQsIHNvIHRlbXBv cmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7 Ci0JCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCQkJ ImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2Fk OwotCX0KKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSkg PSBAXzsKIAogCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNl ZWQgNjRrQiBsaW1pdC4KIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKQEAgLTUxLDE0ICs0 MSw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCUNPTU1JVDsKIAl9KTsKIAotCWlmICgkaXNfcGFy YWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBC R1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsCi0JCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJ JG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KLQogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKIAlteSAkcmVzdWx0ID0KQEAgLTExOSw3ICsxMDEsNyBA QCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5 OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlh bCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi10ZXN0X3N0cmVhbWluZygkbm9k ZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKK3Rlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBUZXN0IHVzaW5nIHN0cmVhbWlu ZyBtb2RlICdwYXJhbGxlbCcKQEAgLTEyOCw4ICsxMTAsMTMgQEAgbXkgJG9sZHBpZCA9ICRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBwaWQgRlJPTSBwZ19z dGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBz dGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0g cGFyYWxsZWwpIik7CisjICJzdHJlYW1pbmcgPSBwYXJhbGxlbCIgZG9lcyBub3Qgc3VwcG9ydCBu b24taW1tdXRhYmxlIGZ1bmN0aW9ucywgc28gY2hhbmdlCisjIHRoZSBmdW5jdGlvbiBpbiB0aGUg ZGVmYXVsdCBleHByZXNzaW9uIG9mIGNvbHVtbiAiYyIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBTFRFUiBDT0xV TU4gYyBTRVQgREVGQVVMVCB0b190aW1lc3RhbXAoMCk7CitBTFRFUiBTVUJTQ1JJUFRJT04gdGFw X3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwpOworfSk7CiAKICRub2RlX3B1Ymxpc2hlci0+ cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJP TSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUn IEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKQEAgLTEzNyw3ICsxMjQsNyBAQCAkbm9kZV9wdWJs aXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKICAgb3IgZGllCiAgICJUaW1lZCBv dXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJT Q1JJUFRJT04iOwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNj cmliZXIsICRhcHBuYW1lLCAxKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5v ZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5v ZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdv cGhhc2VfY2FzY2FkZS5wbAppbmRleCAwYTQxNTJkLi4zZGYxNjIxIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbAorKysgYi9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbApAQCAtNDcwLDYgKzQ3MCwx NCBAQCB0ZXN0X3N0cmVhbWluZygkbm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9C LCAkYXBwbmFtZV9DLCAnb24nKTsKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiAjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJwogIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyAic3RyZWFtaW5nID0gcGFyYWxsZWwiIGRv ZXMgbm90IHN1cHBvcnQgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMsIHNvIGNoYW5nZQorIyB0aGUg ZnVuY3Rpb24gaW4gdGhlIGRlZmF1bHQgZXhwcmVzc2lvbiBvZiBjb2x1bW4gImMiLgorJG5vZGVf Qi0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsICJBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBTFRFUiBD T0xVTU4gYyBTRVQgREVGQVVMVCB0b190aW1lc3RhbXAoMCk7Iik7Ciskbm9kZV9DLT5zYWZlX3Bz cWwoCisJJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBjIFNF VCBERUZBVUxUIHRvX3RpbWVzdGFtcCgwKTsiKTsKKwogdGVzdF9zdHJlYW1pbmcoJG5vZGVfQSwg JG5vZGVfQiwgJG5vZGVfQywgJGFwcG5hbWVfQiwgJGFwcG5hbWVfQywgJ3BhcmFsbGVsJyk7CiAK ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCmluZGV4IGVhMWY0NzYuLmM0OWNiMTAgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKKysr IGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbApAQCAtMTMs NyArMTMsNyBAQCB1c2UgVGVzdDo6TW9yZTsKICMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgog c3ViIHRlc3Rfc3RyZWFtaW5nCiB7Ci0JbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2Ny aWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKwlteSAoJG5vZGVfcHVibGlzaGVy LCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSkgPSBAXzsKIAogCSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKIAkjIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCkBA IC0yMywxNiArMjMsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkjIEV4cGVjdCBhbGwgZGF0YSBp cyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgogCSMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotCSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91bmQg d29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMKLQkjIHNwZWNpZmllZCBh cyAicGFyYWxsZWwiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdl cwotCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0 eS4KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2Nv bmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOwot CQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7Ci0JfQotCiAJIyBjaGVjayB0aGF0IDJQQyBnZXRz IHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcgogCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBl bm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCiAJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCkBAIC00MywxNCArMzMsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkJREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwogCQlQUkVQQVJFIFRSQU5TQUNUSU9O ICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CiAKLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5v ZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVk LywgMCk7Ci0JCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYn LAotCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7Ci0JCSRub2RlX3N1YnNjcmliZXIt PnJlbG9hZDsKLQl9Ci0KIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOwogCiAJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9u IHN1YnNjcmliZXIKQEAgLTMzMyw3ICszMTUsNyBAQCBteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyks IGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwg J2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotdGVzdF9z dHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7 Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBu YW1lKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgVGVzdCB1 c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCkBAIC0zNDIsOCArMzI0LDEzIEBAIG15ICRv bGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1Qg cGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRh cHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCi0kbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VU KHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworIyAic3RyZWFtaW5nID0gcGFyYWxsZWwiIGRvZXMg bm90IHN1cHBvcnQgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMsIHNvIGNoYW5nZQorIyB0aGUgZnVu Y3Rpb24gaW4gdGhlIGRlZmF1bHQgZXhwcmVzc2lvbiBvZiBjb2x1bW4gImMiLgorJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUgdGVzdF90 YWIgQUxURVIgQ09MVU1OIGMgU0VUIERFRkFVTFQgdG9fdGltZXN0YW1wKDApOworQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKTsKK30pOwogCiAkbm9k ZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIHBpZCAh PSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1l ID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCkBAIC0zNTEsNyArMzM4LDcg QEAgJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAgIG9yIGRp ZQogICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIg Y2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotdGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVy LCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9w dWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKTsKIAogIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogIyBjaGVjayBhbGwgdGhlIGNsZWFudXAKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjA1ZDNlODYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsCkBAIC0wLDAgKzEsNjA4IEBACisjIENv cHlyaWdodCAoYykgMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwor IyBUZXN0IHRoZSByZXN0cmljdGlvbnMgb2Ygc3RyZWFtaW5nIG1vZGUgInBhcmFsbGVsIiBpbiBs b2dpY2FsIHJlcGxpY2F0aW9uLgorIyBXaXRob3V0IHRoZXNlIHJlc3RyaWN0aW9ucywgdGhlIHN1 YnNjcmliZXIncyBhcHBseSB3b3JrZXIgbWF5IGZhbGwgaW50byBhbgorIyBpbmZpbml0ZSB3YWl0 IHdpdGhvdXQgdGhlIHVzZXIga25vd2luZy4KKyMKKyMgRm9yIG5vcm1hbCB0YWJsZXMsIHdlIHVz ZSBkZWFkbG9jay1wcm9kdWNpbmcgdGVzdCBjYXNlcyB0byBlbnN1cmUgdGhhdCBmdXR1cmUKKyMg bW9kaWZpY2F0aW9ucyBkbyBub3QgaW52YWxpZGF0ZSBjb25zdHJhaW50IGNoZWNrcy4KKyMKKyMg Rm9yIHBhcnRpdGlvbmVkIHRhYmxlcywgd2UganVzdCB1c2UgdGVzdCBjYXNlcyB0byBjb25maXJt IHRoYXQgdGhlIGNvbnN0cmFpbnQKKyMgY2hlY2tzIGFyZSBhcyBleHBlY3RlZC4KKwordXNlIHN0 cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK215ICRvZmZzZXQg PSAwOworCisjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQorbXkgJG5vZGVfcHVibGlzaGVyID0gUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRub2RlX3B1Ymxpc2hl ci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNoZXIt PmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSdsb2dpY2FsX2RlY29kaW5nX3dvcmtf bWVtID0gNjRrQicpOworJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKworIyBDcmVhdGUgc3Vic2Ny aWJlciBub2RlCitteSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl ci0+bmV3KCdzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5pbml0OworJG5vZGVfc3Vi c2NyaWJlci0+c3RhcnQ7CisKKyMgU2V0dXAgc3RydWN0dXJlIG9uIHB1Ymxpc2hlcgorJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFi MSAoYSBpbnQpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJD UkVBVEUgVEFCTEUgdGVzdF90YWIyIChhIGludCkiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCAoYSBp bnQgcHJpbWFyeSBrZXksIGIgdmFyY2hhcikiKTsKKworIyBTZXR1cCBzdHJ1Y3R1cmUgb24gc3Vi c2NyaWJlcgorIyBXZSBuZWVkIHRvIHRlc3Qgbm9ybWFsIHRhYmxlIGFuZCBwYXJ0aXRpb24gdGFi bGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRB QkxFIHRlc3RfdGFiMSAoYSBpbnQpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiMiAoYSBpbnQpIik7Ciskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiX3Bh cnRpdGlvbmVkIChhIGludCBwcmltYXJ5IGtleSwgYiB2YXJjaGFyKSBQQVJUSVRJT04gQlkgUkFO R0UoYSkiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVB VEUgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIChMSUtFIHRlc3RfdGFiX3BhcnRpdGlvbmVkKSIp OworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxF IHRlc3RfdGFiX3BhcnRpdGlvbmVkIEFUVEFDSCBQQVJUSVRJT04gdGVzdF90YWJfcGFydGl0aW9u IERFRkFVTFQiCispOworCisjIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24KK215ICRwdWJsaXNo ZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVz JzsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJM SUNBVElPTiB0YXBfcHViX25vcm1hbCBGT1IgVEFCTEUgdGVzdF90YWIxLCB0ZXN0X3RhYjIiKTsK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNB VElPTiB0YXBfcHViX3BhcnRpdGlvbmVkIEZPUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIp OworCitteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgKKwkncG9zdGdyZXMnLCAiCisJQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViCisJQ09OTkVD VElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnCisJUFVC TElDQVRJT04gdGFwX3B1Yl9ub3JtYWwsIHRhcF9wdWJfcGFydGl0aW9uZWQKKwlXSVRIIChzdHJl YW1pbmcgPSBwYXJhbGxlbCwgY29weV9kYXRhID0gZmFsc2UpIik7CisKKyRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgSW50ZXJsZWF2ZSBhIHBhaXIgb2Yg dHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KK215ICRpbiAgPSAn JzsKK215ICRvdXQgPSAnJzsKKworbXkgJHRpbWVyID0gSVBDOjpSdW46OnRpbWVvdXQoJFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworCitteSAkaCA9ICRub2RlX3B1 Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGltZXIs CisJb25fZXJyb3Jfc3RvcCA9PiAwKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEl0IGlz IG5vdCBhbGxvd2VkIHRoYXQgdGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHJlbGF0aW9uIG9uIHRo ZQorIyBzdWJzY3JpYmVyLXNpZGUgaXMgbm90IHRoZSB1bmlxdWUgY29sdW1uIG9uIHRoZSBwdWJs aXNoZXItc2lkZS4gQ2hlY2sgdGhlCisjIGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQgd29y a2VyIGluIHRoaXMgY2FzZS4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjIEZpcnN0IHdlIGNo ZWNrIHRoZSB1bmlxdWUgaW5kZXggb24gbm9ybWFsIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBVTklRVUUgSU5ERVggaWR4X3RhYjEgb24g dGVzdF90YWIxKGEpIik7CisKKyRpbiAuPSBxeworQkVHSU47CitJTlNFUlQgSU5UTyB0ZXN0X3Rh YjEgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307CiskaC0+ cHVtcF9uYjsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VS VCBJTlRPIHRlc3RfdGFiMSB2YWx1ZXMoMSkiKTsKKworJGluIC49IHF7CitDT01NSVQ7CitccQor fTsKKyRoLT5maW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9F UlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1 YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0g cGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUg c3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJEUk9QIElOREVYIGlkeF90YWIxIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJl YW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworbXkgJHJlc3VsdCA9 CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50 KCopIEZST00gdGVzdF90YWIxIik7CitpcygkcmVzdWx0LCBxcSg1MDAxKSwgJ2RhdGEgcmVwbGlj YXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4Jyk7CisKKyMgQ2xlYW4gdXAg dGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMSIpOworJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBUaGVuIHdlIGNoZWNrIHRoZSB1 bmlxdWUgaW5kZXggb24gcGFydGl0aW9uIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBVTklRVUUgSU5ERVggdGVzdF90YWJfYl9wYXJ0aXRp b25faWR4IE9OIHRlc3RfdGFiX3BhcnRpdGlvbiAoYikiKTsKKworIyBDaGVjayB0aGUgc3Vic2Ny aWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9n ZmlsZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJU IElOVE8gdGVzdF90YWJfcGFydGl0aW9uZWQgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpIgorKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2Fp dF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRh cmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3Jp cHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBE cm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCB0ZXN0X3Rh Yl9iX3BhcnRpdGlvbl9pZHgiKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2Fj dGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3Rh Yl9wYXJ0aXRpb25lZCIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksICdkYXRhIHJlcGxpY2F0ZWQg dG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcpOworCisjID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKyMgVHJpZ2dlcnMgd2hpY2ggZXhlY3V0ZSBub24taW1tdXRhYmxlIGZ1bmN0aW9uIGFy ZSBub3QgYWxsb3dlZCBvbiB0aGUKKyMgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3Ig cmVwb3J0ZWQgYnkgYmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CisKKyMgRmlyc3Qgd2UgY2hlY2sgdGhlIHRyaWdnZXIgZnVuY3Rpb24gb24gbm9y bWFsIHRhYmxlLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JF QVRFIFVOSVFVRSBJTkRFWCBpZHhfdGFiMiBvbiB0ZXN0X3RhYjIoYSkiKTsKKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVU5JUVVFIElOREVYIGlkeF90 YWIyIG9uIHRlc3RfdGFiMihhKSIpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJ J3Bvc3RncmVzJywgcXF7CitDUkVBVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jX3RhYjFfdW5zYWZl KCkgUkVUVVJOUyBUUklHR0VSIEFTIFwkXCQKKyAgQkVHSU4KKyAgICBJTlNFUlQgSU5UTyBwdWJs aWMudGVzdF90YWIyIFZBTFVFUyAoTkVXLiopOworICAgIFJFVFVSTiBORVc7CisgIEVORAorXCRc JCBsYW5ndWFnZSBwbHBnc3FsOworQ1JFQVRFIFRSSUdHRVIgdHJpX3RhYjFfdW5zYWZlCitCRUZP UkUgSU5TRVJUIE9OIHB1YmxpYy50ZXN0X3RhYjEKK0ZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NF RFVSRSB0cmlnZ2VyX2Z1bmNfdGFiMV91bnNhZmUoKTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMSBF TkFCTEUgUkVQTElDQSBUUklHR0VSIHRyaV90YWIxX3Vuc2FmZTsKKworQ1JFQVRFIEZVTkNUSU9O IHRyaWdnZXJfZnVuY190YWIxX3NhZmUoKSBSRVRVUk5TIFRSSUdHRVIgQVMgXCRcJAorICBCRUdJ TgorICAgIFJBSVNFIE5PVElDRSAndGVzdCBmb3Igc2FmZSB0cmlnZ2VyIGZ1bmN0aW9uJzsKKwlS RVRVUk4gTkVXOworICBFTkQKK1wkXCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKK0FMVEVSIEZVTkNUSU9O IHRyaWdnZXJfZnVuY190YWIxX3NhZmUgSU1NVVRBQkxFOworQ1JFQVRFIFRSSUdHRVIgdHJpX3Rh YjFfc2FmZQorQkVGT1JFIElOU0VSVCBPTiBwdWJsaWMudGVzdF90YWIxCitGT1IgRUFDSCBST1cg RVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jX3RhYjFfc2FmZSgpOworfSk7CisKKyMgQ2hl Y2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1 YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRpbiAuPSBxeworQkVHSU47CitJTlNFUlQgSU5UTyB0ZXN0 X3RhYjEgVkFMVUVTKDUwMDEpOworSU5TRVJUIElOVE8gdGVzdF90YWIyIFNFTEVDVCBpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjEg VkFMVUVTKDUwMDEpIik7CisKKyRpbiAuPSBxeworQ09NTUlUOworXHEKK307CiskaC0+ZmluaXNo OworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAt OV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIx IiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKKwkk b2Zmc2V0KTsKKworIyBVc2luZyB0cmlnZ2VyIHdpdGggaW1tdXRhYmxlIGZ1bmN0aW9uLCBub3cg aXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7 CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiB0cmlfdGFiMV9z YWZlOworRFJPUCBUUklHR0VSIHRyaV90YWIxX3Vuc2FmZSBPTiBwdWJsaWMudGVzdF90YWIxOwor fSk7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGll ZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7CitpcygkcmVzdWx0 LCBxcSgyKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHVzaW5nIGltbXV0 YWJsZSBleHByZXNzaW9uJyk7CisKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmly b25tZW50LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxewor RFJPUCBJTkRFWCBpZHhfdGFiMjsKK0RST1AgVFJJR0dFUiB0cmlfdGFiMV9zYWZlIE9OIHB1Ymxp Yy50ZXN0X3RhYjE7CitEUk9QIGZ1bmN0aW9uIHRyaWdnZXJfZnVuY190YWIxX3Vuc2FmZTsKK0RS T1AgZnVuY3Rpb24gdHJpZ2dlcl9mdW5jX3RhYjFfc2FmZTsKK30pOworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitEUk9QIElOREVYIGlkeF90YWIyOworVFJV TkNBVEUgVEFCTEUgdGVzdF90YWIxOworVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIyOworfSk7Cisk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIFRoZW4gd2Ug Y2hlY2sgdGhlIHRyaWdnZXIgZnVuY3Rpb24gb24gcGFydGl0aW9uIHRhYmxlLgorJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQ1JFQVRFIEZVTkNUSU9OIHRy aWdnZXJfZnVuYygpIFJFVFVSTlMgVFJJR0dFUiBBUyBcJFwkCisgIEJFR0lOCisgICAgUkVUVVJO IE5VTEw7CisgIEVORAorXCRcJCBsYW5ndWFnZSBwbHBnc3FsOworQ1JFQVRFIFRSSUdHRVIgaW5z ZXJ0X3RyaWcKK0JFRk9SRSBJTlNFUlQgT04gdGVzdF90YWJfcGFydGl0aW9uCitGT1IgRUFDSCBS T1cgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jKCk7CitBTFRFUiBUQUJMRSB0ZXN0X3Rh Yl9wYXJ0aXRpb24gRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiBpbnNlcnRfdHJpZzsKK30pOworCisj IENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9k ZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKKworJG5vZGVfc3Vi c2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3Qg cmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1 c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKKwkkb2Zm c2V0KTsKKworIyBEcm9wIHRoZSB0cmlnZ2VyIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29y a3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiRFJPUCBUUklH R0VSIGluc2VydF90cmlnIE9OIHRlc3RfdGFiX3BhcnRpdGlvbiIpOworCisjIFdhaXQgZm9yIHRo aXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtl ci4KKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1 bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBj b3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7CitpcygkcmVzdWx0LCBxcSgwKSwg J2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRyaWdnZXInKTsK KworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgY29sdW1u IGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBjb250YWlucyBhCisjIG5vbi1pbW11dGFibGUgZnVu Y3Rpb24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5 CisjIGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorCisjIEZpcnN0IHdlIGNoZWNrIHRoZSBjb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9u IG9uIG5vcm1hbCB0YWJsZS4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjIgVkFMVUVTKDEpIik7CisKKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBGVU5DVElPTiBmdW5jX2NvdW50 X3RhYjIoKSBSRVRVUk5TIElOVCBBUyBcJFwkCisgIEJFR0lOCisgICAgUkVUVVJOIChTRUxFQ1Qg Y291bnQoKikgRlJPTSBwdWJsaWMudGVzdF90YWIyKTsKKyAgRU5ECitcJFwkIGxhbmd1YWdlIHBs cGdzcWw7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgQUREIENPTFVNTiBiIGludCBERUZBVUxUIGZ1 bmNfY291bnRfdGFiMigpOworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20g bm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRpbiAu PSBxeworQkVHSU47CitUUlVOQ0FURSB0ZXN0X3RhYjI7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYjEg U0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307CiskaC0+cHVt cF9uYjsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJ TlRPIHRlc3RfdGFiMShhKSBWQUxVRVMoMSkiKTsKKworJGluIC49IHF7CitDT01NSVQ7CitccQor fTsKKyRoLT5maW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9F UlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1 YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0g cGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIEFsdGVyIGRlZmF1bHQgdmFsdWVzIHRvIGltbXV0 YWJsZSBleHByZXNzaW9uLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIxIEFMVEVSIENPTFVNTiBiIFNF VCBERUZBVUxUIDEiKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0 byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsK K2lzKCRyZXN1bHQsIHFxKDUwMDEpLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBh ZnRlciB1c2luZyBpbW11dGFibGUgZXhwcmVzc2lvbicpOworCisjIENsZWFuIHVwIHRlc3QgZGF0 YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09MVU1OIGIiKTsKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworVFJVTkNBVEUgVEFCTEUgdGVz dF90YWIxOworVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIyOworfSk7Ciskbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIFRoZW4gd2UgY2hlY2sgdGhlIGNvbHVt biBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gb24gcGFydGl0aW9uIHRhYmxlLgorJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3Bh cnRpdGlvbiBBTFRFUiBDT0xVTU4gYiBTRVQgREVGQVVMVCByYW5kb20oKSIpOworCisjIENoZWNr IHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJz Y3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9kZV9zdWJz Y3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCBy ZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVz aW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAorCSRvZmZz ZXQpOworCisjIERyb3AgZGVmYXVsdCB2YWx1ZSBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdv cmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRB QkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBTFRFUiBDT0xVTU4gYiBEUk9QIERFRkFVTFQiKTsKKwor IyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRo ZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworaXMoJHJl c3VsdCwgcXEoNTAwMCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRy b3BwaW5nIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbicpOworCisjID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKyMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBkb21haW4gY29uc3RyYWludCBleHByZXNzaW9u IGNvbnRhaW5zIGEgbm9uLWltbXV0YWJsZQorIyBmdW5jdGlvbiBvbiB0aGUgc3Vic2NyaWJlciBz aWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZAorIyB3b3JrZXIgaW4g dGhpcyBjYXNlLgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMgQmVjYXVzZSB0aGUgY29sdW1u IHR5cGUgb2YgdGhlIHBhcnRpdGlvbiB0YWJsZSBtdXN0IGJlIHRoZSBzYW1lIGFzIGl0cyBwYXJl bnQKKyMgdGFibGUsIG9ubHkgdGVzdCBub3JtYWwgdGFibGUgaGVyZS4KKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjIgVkFMVUVTKDEp Iik7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQ1JF QVRFIERPTUFJTiB0bXBfZG9tYWluIEFTIGludCBDSEVDSyAoVkFMVUUgPiAtMSk7CitBTFRFUiBU QUJMRSB0ZXN0X3RhYjEgQUxURVIgQ09MVU1OIGEgVFlQRSB0bXBfZG9tYWluOworfSk7CisKKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBET01B SU4gdG1wX2RvbWFpbiBBUyBJTlQgQ09OU1RSQUlOVCBkb21haW5fY2hlY2sgQ0hFQ0sgKFZBTFVF ID49IGZ1bmNfY291bnRfdGFiMigpKTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMSBBTFRFUiBDT0xV TU4gYSBUWVBFIHRtcF9kb21haW47Cit9KTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cg ZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKwor JGluIC49IHF7CitCRUdJTjsKK1RSVU5DQVRFIHRlc3RfdGFiMjsKK0lOU0VSVCBJTlRPIHRlc3Rf dGFiMSBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworfTsKKyRo LT5wdW1wX25iOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5T RVJUIElOVE8gdGVzdF90YWIxKGEpIFZBTFVFUygxKSIpOworCiskaW4gLj0gcXsKK0NPTU1JVDsK K1xxCit9OworJGgtPmZpbmlzaDsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAor CXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlv biAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1p bmcgPSBwYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCBkb21haW4gY29uc3RyYWludCBl eHByZXNzaW9uLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiQUxURVIgRE9NQUlOIHRtcF9kb21haW4gRFJPUCBDT05TVFJBSU5UIGRvbWFp bl9jaGVjayIpOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJl IGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiMSIpOworaXMo JHJlc3VsdCwgcXEoNTAwMSksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVy IHVzaW5nIGltbXV0YWJsZSBleHByZXNzaW9uJworKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEg ZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIxIEFMVEVSIENPTFVNTiBhIFRZUEUgaW50Iik7 Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK1RSVU5DQVRF IFRBQkxFIHRlc3RfdGFiMTsKK1RSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMjsKK30pOworJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgY29uc3RyYWludCBleHByZXNzaW9uIGNv bnRhaW5zIGEgbm9uLWltbXV0YWJsZSBmdW5jdGlvbgorIyBvbiB0aGUgc3Vic2NyaWJlciBzaWRl LiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcwor IyBjYXNlLgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMgRmlyc3Qgd2UgY2hlY2sgdGhlIGNv bnN0cmFpbnQgZXhwcmVzc2lvbiBvbiBub3JtYWwgdGFibGUuCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIyIFZBTFVFUygxKSIpOwor Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitBTFRFUiBU QUJMRSB0ZXN0X3RhYjEgQUREIENPTlNUUkFJTlQgY29uc3RfdGFiMV91bnNhZmUgQ0hFQ0soYSA+ PSBmdW5jX2NvdW50X3RhYjIoKSk7Cit9KTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cg ZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKwor JGluIC49IHF7CitCRUdJTjsKK1RSVU5DQVRFIHRlc3RfdGFiMjsKK0lOU0VSVCBJTlRPIHRlc3Rf dGFiMSBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworfTsKKyRo LT5wdW1wX25iOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5T RVJUIElOVE8gdGVzdF90YWIxKGEpIFZBTFVFUygxKSIpOworCiskaW4gLj0gcXsKK0NPTU1JVDsK K1xxCit9OworJGgtPmZpbmlzaDsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAor CXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlv biAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1p bmcgPSBwYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgQWx0ZXIgY29uc3RyYWludCBleHByZXNz aW9uIHRvIGltbXV0YWJsZSBleHByZXNzaW9uLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjEg RFJPUCBDT05TVFJBSU5UIGNvbnN0X3RhYjFfdW5zYWZlOworQUxURVIgVEFCTEUgdGVzdF90YWIx IEFERCBDT05TVFJBSU5UIGNvbnN0X3RhYjFfc2FmZSBDSEVDSyhhID49IDApOworfSk7CisKKyMg V2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUg YXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7CitpcygkcmVzdWx0LCBxcSg1MDAx KSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgdXNpbmcgaW1tdXRhYmxl IGV4cHJlc3Npb24nKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1l bnQuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxF IHRlc3RfdGFiMSBEUk9QIENPTlNUUkFJTlQgY29uc3RfdGFiMV9zYWZlIik7Ciskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK1RSVU5DQVRFIFRBQkxFIHRlc3Rf dGFiMTsKK1RSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMjsKK30pOworJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBUaGVuIHdlIGNoZWNrIHRoZSBjb25zdHJh aW50IGV4cHJlc3Npb24gb24gcGFydGl0aW9uIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9u IEFERCBDT05TVFJBSU5UIHRlc3RfdGFiX2NvbiBjaGVjayAoYSA+IHJhbmRvbSgpKTsKK30pOwor CisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAk bm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKKworJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5u b3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVk IiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKKwkk b2Zmc2V0KTsKKworIyBEcm9wIGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3 b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBU QUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX2NvbiIpOwor CisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4g dGhlIGFwcGx5IHdvcmtlci4KKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7Citpcygk cmVzdWx0LCBxcSgwKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJv cHBpbmcgY29uc3RyYWludCBleHByZXNzaW9uJyk7CisKKyMgPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor IyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGZvcmVpZ24ga2V5IG9uIHRoZSBzdWJzY3JpYmVyIHNp ZGUuIENoZWNrIHRoZSBlcnJvcgorIyByZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0 aGlzIGNhc2UuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBGaXJzdCB3ZSBjaGVjayB0aGUg Zm9yZWlnbiBrZXkgb24gbm9ybWFsIHRhYmxlLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo CisJJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUgVEFCTEUgdGFiX25vcHVibGljKGEgaW50KTsKK0FM VEVSIFRBQkxFIHRlc3RfdGFiMiBBREQgUFJJTUFSWSBLRVkgKGEpOworQUxURVIgVEFCTEUgdGVz dF90YWIyIFJFUExJQ0EgSURFTlRJVFkgRlVMTDsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiMiBWQUxV RVMoMSk7Cit9KTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxU RVIgVEFCTEUgdGVzdF90YWIyIEFERCBQUklNQVJZIEtFWSAoYSk7Iik7CisKKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVSIFRBQkxFIHRlc3RfdGFi MSBBREQgQ09OU1RSQUlOVCB0ZXN0X3RhYjFmayBGT1JFSUdOIEtFWShhKSBSRUZFUkVOQ0VTIHRl c3RfdGFiMihhKTsKK1NFTEVDVCAnQUxURVIgVEFCTEUgdGVzdF90YWIxIEVOQUJMRSBSRVBMSUNB IFRSSUdHRVIgIicgfHwgdGduYW1lIHx8ICciJyBGUk9NIHBnX3RyaWdnZXIgV0hFUkUgdGdyZWxp ZCA9ICd0ZXN0X3RhYjEnOjpyZWdjbGFzczo6b2lkIFxcZ2V4ZWMKK30pOworCisjIENoZWNrIHRo ZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3Jp YmVyLT5sb2dmaWxlOworCiskaW4gLj0gcXsKK0JFR0lOOworSU5TRVJUIElOVE8gdGVzdF90YWIx KGEpIFZBTFVFUygxKTsKK0lOU0VSVCBJTlRPIHRhYl9ub3B1YmxpYyBTRUxFQ1QgaSBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworfTsKKyRoLT5wdW1wX25iOworCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIyIik7 CisKKyRpbiAuPSBxeworQ09NTUlUOworXHEKK307CiskaC0+ZmluaXNoOworCiskbm9kZV9zdWJz Y3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCBy ZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3Jp cHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBE cm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQg d29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRB QkxFIHRlc3RfdGFiMSBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWIxZmsiKTsKKworIyBXYWl0IGZv ciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3 b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisk cmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDEpLAorCSdkYXRh IHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0aGUgZm9yZWlnbiBrZXkn KTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK1RSVU5DQVRFIFRBQkxFIHRl c3RfdGFiMTsKK1RSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMjsKK30pOworJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBUaGVuIHdlIGNoZWNrIHRoZSBmb3Jl aWduIGtleSBvbiBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo CisJJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uX2YgKGEg aW50IHByaW1hcnkga2V5KTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBREQgQ09O U1RSQUlOVCB0ZXN0X3RhYl9wYXRpdGlvbl9mayBGT1JFSUdOIEtFWShhKSBSRUZFUkVOQ0VTIHRl c3RfdGFiX3BhcnRpdGlvbl9mKGEpOworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9n IGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRl c3RfdGFiX3BhcnRpdGlvbmVkIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNTAwMCkgcyhpKSIKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xv ZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVs YXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBh cmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUg Zm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRl c3RfdGFiX3BhcnRpdGlvbiBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWJfcGF0aXRpb25fZmsiKTsK KworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGlu IHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworaXMo JHJlc3VsdCwgcXEoNTAwMCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVy IGRyb3BwaW5nIHRoZSBmb3JlaWduIGtleScpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwor JG5vZGVfcHVibGlzaGVyLT5zdG9wOworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKaW5kZXggNDc4MmNhMS4uNzRhNWEwZCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKQEAgLTE4OTEsNiArMTg5MSw3IEBAIFBhZ2VYTG9nUmVjUHRyCiBQYWdldGFibGVFbnRyeQog UGFpcnMKIFBhcmFsbGVsQXBwZW5kU3RhdGUKK1BhcmFsbGVsQXBwbHlTYWZldHkKIFBhcmFsbGVs Qml0bWFwSGVhcFN0YXRlCiBQYXJhbGxlbEJsb2NrVGFibGVTY2FuRGVzYwogUGFyYWxsZWxCbG9j a1RhYmxlU2NhbldvcmtlcgotLSAKMi43LjIud2luZG93cy4xCgo= --_006_OS0PR01MB57166F15F4542FAE69A74EC094739OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v24-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v24-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v24-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=7837; creation-date="Wed, 24 Aug 2022 13:45:00 GMT"; modification-date="Wed, 24 Aug 2022 13:47:13 GMT" Content-Transfer-Encoding: base64 RnJvbSA3NzQ0NWQzMzI3M2I0OWNhNDU5NWYwN2ZkZWJmMWRmMDQ0MzhjOTE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgMTEgQXVnIDIwMjIgMTE6NDk6MDggKzA4MDAKU3ViamVjdDogW1BBVENI IHYyNCA1LzVdIEFkZCBhIG1haW5fd29ya2VyX3BpZCB0byBwZ19zdGF0X3N1YnNjcmlwdGlvbgoK bWFpbl93b3JrZXJfcGlkIGlzIFByb2Nlc3MgSUQgb2YgdGhlIG1haW4gYXBwbHkgd29ya2VyLCBp ZiB0aGlzIHByb2Nlc3MgaXMgYQphcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4gTlVMTCBpZiB0aGlz IHByb2Nlc3MgaXMgYSBtYWluIGFwcGx5IHdvcmtlciBvciBhCnN5bmNocm9uaXphdGlvbiB3b3Jr ZXIuCgpUaGUgbmV3IGNvbHVtbiBjYW4gbWFrZSBpdCBlYXNpZXIgdG8gZGlzdGluZ3Vpc2ggbWFp biBhcHBseSB3b3JrZXIgYW5kIGFwcGx5CmJhY2tncm91bmQgd29ya2VyIHdoaWNoIGlzIGFsc28g c2ltaWxhciB0byB0aGUgJ2xlYWRlcl9waWQnIGNvbHVtbiBpbgpwZ19zdGF0X2FjdGl2aXR5Lgot LS0KIGRvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgICAgICAgICAgICAgICB8IDIxICsrKysr KysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAg ICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIHwg MjggKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdCAgICAgICAgICAgIHwgIDYgKysrLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3J1bGVzLm91dCAgICAgICAgfCAgMyArKy0KIDUgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9u cygrKSwgMTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jp bmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKaW5kZXggMWQ5NTA5YS4uNTRk ZTQzNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCkBAIC0zMTgwLDExICszMTgwLDIyIEBAIFNFTEVDVCBw aWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hF UkUgd2FpdF9ldmVudCBpCiAKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9n X3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0 cnVjdGZpZWxkPmFwcGx5X2xlYWRlcl9waWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnRlZ2VyPC90 eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUHJvY2VzcyBJRCBvZiB0 aGUgbWFpbiBhcHBseSB3b3JrZXIsIGlmIHRoaXMgcHJvY2VzcyBpcyBhbiBhcHBseQorICAgICAg IGJhY2tncm91bmQgd29ya2VyLiBOVUxMIGlmIHRoaXMgcHJvY2VzcyBpcyBhIG1haW4gYXBwbHkg d29ya2VyIG9yIGEKKyAgICAgICBzeW5jaHJvbml6YXRpb24gd29ya2VyLgorICAgICAgPC9wYXJh PjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0i Y2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgogICAg ICAgIDxzdHJ1Y3RmaWVsZD5yZWxpZDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KICAg ICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgIE9JRCBvZiB0aGUgcmVsYXRpb24gdGhh dCB0aGUgd29ya2VyIGlzIHN5bmNocm9uaXppbmc7IG51bGwgZm9yIHRoZQotICAgICAgIG1haW4g YXBwbHkgd29ya2VyCisgICAgICAgbWFpbiBhcHBseSB3b3JrZXIgYW5kIHRoZSBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlcgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCkBAIC0z MTk0LDcgKzMyMDUsNyBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQg RlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogICAgICAgPC9wYXJhPgog ICAgICAgPHBhcmE+CiAgICAgICAgTGFzdCB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVjZWl2 ZWQsIHRoZSBpbml0aWFsIHZhbHVlIG9mCi0gICAgICAgdGhpcyBmaWVsZCBiZWluZyAwCisgICAg ICAgdGhpcyBmaWVsZCBiZWluZyAwOyBudWxsIGZvciB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3Jr ZXIKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApAQCAtMzIwMyw3ICszMjE0 LDggQEAgU0VMRUNUIHBpZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3Rh dF9hY3Rpdml0eSBXSEVSRSB3YWl0X2V2ZW50IGkKICAgICAgICA8c3RydWN0ZmllbGQ+bGFzdF9t c2dfc2VuZF90aW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGltZXN0YW1wIHdpdGggdGltZSB6b25l PC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgU2VuZCB0aW1lIG9m IGxhc3QgbWVzc2FnZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVyCisgICAgICAgU2Vu ZCB0aW1lIG9mIGxhc3QgbWVzc2FnZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVyOyBu dWxsIGZvciB0aGUKKyAgICAgICBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcgogICAgICAgPC9wYXJh PjwvZW50cnk+CiAgICAgIDwvcm93PgogCkBAIC0zMjEyLDcgKzMyMjQsOCBAQCBTRUxFQ1QgcGlk LCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJF IHdhaXRfZXZlbnQgaQogICAgICAgIDxzdHJ1Y3RmaWVsZD5sYXN0X21zZ19yZWNlaXB0X3RpbWU8 L3N0cnVjdGZpZWxkPiA8dHlwZT50aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmU8L3R5cGU+CiAgICAg ICA8L3BhcmE+CiAgICAgICA8cGFyYT4KLSAgICAgICBSZWNlaXB0IHRpbWUgb2YgbGFzdCBtZXNz YWdlIHJlY2VpdmVkIGZyb20gb3JpZ2luIFdBTCBzZW5kZXIKKyAgICAgICBSZWNlaXB0IHRpbWUg b2YgbGFzdCBtZXNzYWdlIHJlY2VpdmVkIGZyb20gb3JpZ2luIFdBTCBzZW5kZXI7IG51bGwgZm9y CisgICAgICAgdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRy eT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCA2 NTJkNzZmLi5kMzU3NDhiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92 aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC05 NDcsNiArOTQ3LDcgQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF9zdWJzY3JpcHRpb24gQVMKICAgICAg ICAgICAgIHN1Lm9pZCBBUyBzdWJpZCwKICAgICAgICAgICAgIHN1LnN1Ym5hbWUsCiAgICAgICAg ICAgICBzdC5waWQsCisgICAgICAgICAgICBzdC5hcHBseV9sZWFkZXJfcGlkLAogICAgICAgICAg ICAgc3QucmVsaWQsCiAgICAgICAgICAgICBzdC5yZWNlaXZlZF9sc24sCiAgICAgICAgICAgICBz dC5sYXN0X21zZ19zZW5kX3RpbWUsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2xhdW5jaGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xh dW5jaGVyLmMKaW5kZXggYzdmZmNjMy4uZTdmNWY2MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwpAQCAtMTAzMiw3ICsxMDMyLDcgQEAgSXNMb2dpY2FsTGF1 bmNoZXIodm9pZCkKIERhdHVtCiBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oUEdfRlVOQ1RJT05f QVJHUykKIHsKLSNkZWZpbmUgUEdfU1RBVF9HRVRfU1VCU0NSSVBUSU9OX0NPTFMJOAorI2RlZmlu ZSBQR19TVEFUX0dFVF9TVUJTQ1JJUFRJT05fQ09MUwk5CiAJT2lkCQkJc3ViaWQgPSBQR19BUkdJ U05VTEwoMCkgPyBJbnZhbGlkT2lkIDogUEdfR0VUQVJHX09JRCgwKTsKIAlpbnQJCQlpOwogCVJl dHVyblNldEluZm8gKnJzaW5mbyA9IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5m bzsKQEAgLTEwNjYsMjYgKzEwNjYsMzIgQEAgcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKFBHX0ZV TkNUSU9OX0FSR1MpCiAJCWVsc2UKIAkJCW51bGxzWzFdID0gdHJ1ZTsKIAkJdmFsdWVzWzJdID0g SW50MzJHZXREYXR1bSh3b3JrZXJfcGlkKTsKLQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQod29y a2VyLmxhc3RfbHNuKSkKKworCQlpZiAod29ya2VyLmFwcGx5X2xlYWRlcl9waWQgPT0gMCkKIAkJ CW51bGxzWzNdID0gdHJ1ZTsKIAkJZWxzZQotCQkJdmFsdWVzWzNdID0gTFNOR2V0RGF0dW0od29y a2VyLmxhc3RfbHNuKTsKLQkJaWYgKHdvcmtlci5sYXN0X3NlbmRfdGltZSA9PSAwKQorCQkJdmFs dWVzWzNdID0gSW50MzJHZXREYXR1bSh3b3JrZXIuYXBwbHlfbGVhZGVyX3BpZCk7CisKKwkJaWYg KFhMb2dSZWNQdHJJc0ludmFsaWQod29ya2VyLmxhc3RfbHNuKSkKIAkJCW51bGxzWzRdID0gdHJ1 ZTsKIAkJZWxzZQotCQkJdmFsdWVzWzRdID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIubGFz dF9zZW5kX3RpbWUpOwotCQlpZiAod29ya2VyLmxhc3RfcmVjdl90aW1lID09IDApCisJCQl2YWx1 ZXNbNF0gPSBMU05HZXREYXR1bSh3b3JrZXIubGFzdF9sc24pOworCQlpZiAod29ya2VyLmxhc3Rf c2VuZF90aW1lID09IDApCiAJCQludWxsc1s1XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s1 XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLmxhc3RfcmVjdl90aW1lKTsKLQkJaWYgKFhM b2dSZWNQdHJJc0ludmFsaWQod29ya2VyLnJlcGx5X2xzbikpCisJCQl2YWx1ZXNbNV0gPSBUaW1l c3RhbXBUekdldERhdHVtKHdvcmtlci5sYXN0X3NlbmRfdGltZSk7CisJCWlmICh3b3JrZXIubGFz dF9yZWN2X3RpbWUgPT0gMCkKIAkJCW51bGxzWzZdID0gdHJ1ZTsKIAkJZWxzZQotCQkJdmFsdWVz WzZdID0gTFNOR2V0RGF0dW0od29ya2VyLnJlcGx5X2xzbik7Ci0JCWlmICh3b3JrZXIucmVwbHlf dGltZSA9PSAwKQorCQkJdmFsdWVzWzZdID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIubGFz dF9yZWN2X3RpbWUpOworCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZCh3b3JrZXIucmVwbHlfbHNu KSkKIAkJCW51bGxzWzddID0gdHJ1ZTsKIAkJZWxzZQotCQkJdmFsdWVzWzddID0gVGltZXN0YW1w VHpHZXREYXR1bSh3b3JrZXIucmVwbHlfdGltZSk7CisJCQl2YWx1ZXNbN10gPSBMU05HZXREYXR1 bSh3b3JrZXIucmVwbHlfbHNuKTsKKwkJaWYgKHdvcmtlci5yZXBseV90aW1lID09IDApCisJCQlu dWxsc1s4XSA9IHRydWU7CisJCWVsc2UKKwkJCXZhbHVlc1s4XSA9IFRpbWVzdGFtcFR6R2V0RGF0 dW0od29ya2VyLnJlcGx5X3RpbWUpOwogCiAJCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+ c2V0UmVzdWx0LCByc2luZm8tPnNldERlc2MsCiAJCQkJCQkJIHZhbHVlcywgbnVsbHMpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggYmU0NzU4My4uYjY4ODQzZCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CkBAIC01MzkzLDkgKzUzOTMsOSBAQAogICBwcm9uYW1lID0+ICdwZ19zdGF0X2dl dF9zdWJzY3JpcHRpb24nLCBwcm9yb3dzID0+ICcxMCcsIHByb2lzc3RyaWN0ID0+ICdmJywKICAg cHJvcmV0c2V0ID0+ICd0JywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9wYXJhbGxlbCA9PiAncics CiAgIHByb3JldHR5cGUgPT4gJ3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAotICBwcm9h bGxhcmd0eXBlcyA9PiAne29pZCxvaWQsb2lkLGludDQscGdfbHNuLHRpbWVzdGFtcHR6LHRpbWVz dGFtcHR6LHBnX2xzbix0aW1lc3RhbXB0en0nLAotICBwcm9hcmdtb2RlcyA9PiAne2ksbyxvLG8s byxvLG8sbyxvfScsCi0gIHByb2FyZ25hbWVzID0+ICd7c3ViaWQsc3ViaWQscmVsaWQscGlkLHJl Y2VpdmVkX2xzbixsYXN0X21zZ19zZW5kX3RpbWUsbGFzdF9tc2dfcmVjZWlwdF90aW1lLGxhdGVz dF9lbmRfbHNuLGxhdGVzdF9lbmRfdGltZX0nLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne29pZCxv aWQsb2lkLGludDQsaW50NCxwZ19sc24sdGltZXN0YW1wdHosdGltZXN0YW1wdHoscGdfbHNuLHRp bWVzdGFtcHR6fScsCisgIHByb2FyZ21vZGVzID0+ICd7aSxvLG8sbyxvLG8sbyxvLG8sb30nLAor ICBwcm9hcmduYW1lcyA9PiAne3N1YmlkLHN1YmlkLHJlbGlkLHBpZCxhcHBseV9sZWFkZXJfcGlk LHJlY2VpdmVkX2xzbixsYXN0X21zZ19zZW5kX3RpbWUsbGFzdF9tc2dfcmVjZWlwdF90aW1lLGxh dGVzdF9lbmRfbHNuLGxhdGVzdF9lbmRfdGltZX0nLAogICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0 X3N1YnNjcmlwdGlvbicgfSwKIHsgb2lkID0+ICcyMDI2JywgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6 IGN1cnJlbnQgYmFja2VuZCBQSUQnLAogICBwcm9uYW1lID0+ICdwZ19iYWNrZW5kX3BpZCcsIHBy b3ZvbGF0aWxlID0+ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLApkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3J1bGVzLm91dAppbmRleCA3ZWMzZDI2Li4wMDdlNzEwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3J1bGVzLm91dApAQCAtMjA5MSw2ICsyMDkxLDcgQEAgcGdfc3RhdF9zc2x8IFNFTEVDVCBzLnBp ZCwKIHBnX3N0YXRfc3Vic2NyaXB0aW9ufCBTRUxFQ1Qgc3Uub2lkIEFTIHN1YmlkLAogICAgIHN1 LnN1Ym5hbWUsCiAgICAgc3QucGlkLAorICAgIHN0LmFwcGx5X2xlYWRlcl9waWQsCiAgICAgc3Qu cmVsaWQsCiAgICAgc3QucmVjZWl2ZWRfbHNuLAogICAgIHN0Lmxhc3RfbXNnX3NlbmRfdGltZSwK QEAgLTIwOTgsNyArMjA5OSw3IEBAIHBnX3N0YXRfc3Vic2NyaXB0aW9ufCBTRUxFQ1Qgc3Uub2lk IEFTIHN1YmlkLAogICAgIHN0LmxhdGVzdF9lbmRfbHNuLAogICAgIHN0LmxhdGVzdF9lbmRfdGlt ZQogICAgRlJPTSAocGdfc3Vic2NyaXB0aW9uIHN1Ci0gICAgIExFRlQgSk9JTiBwZ19zdGF0X2dl dF9zdWJzY3JpcHRpb24oTlVMTDo6b2lkKSBzdChzdWJpZCwgcmVsaWQsIHBpZCwgcmVjZWl2ZWRf bHNuLCBsYXN0X21zZ19zZW5kX3RpbWUsIGxhc3RfbXNnX3JlY2VpcHRfdGltZSwgbGF0ZXN0X2Vu ZF9sc24sIGxhdGVzdF9lbmRfdGltZSkgT04gKChzdC5zdWJpZCA9IHN1Lm9pZCkpKTsKKyAgICAg TEVGVCBKT0lOIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihOVUxMOjpvaWQpIHN0KHN1YmlkLCBy ZWxpZCwgcGlkLCBhcHBseV9sZWFkZXJfcGlkLCByZWNlaXZlZF9sc24sIGxhc3RfbXNnX3NlbmRf dGltZSwgbGFzdF9tc2dfcmVjZWlwdF90aW1lLCBsYXRlc3RfZW5kX2xzbiwgbGF0ZXN0X2VuZF90 aW1lKSBPTiAoKHN0LnN1YmlkID0gc3Uub2lkKSkpOwogcGdfc3RhdF9zdWJzY3JpcHRpb25fc3Rh dHN8IFNFTEVDVCBzcy5zdWJpZCwKICAgICBzLnN1Ym5hbWUsCiAgICAgc3MuYXBwbHlfZXJyb3Jf Y291bnQsCi0tIAoyLjcuMi53aW5kb3dzLjEKCg== --_006_OS0PR01MB57166F15F4542FAE69A74EC094739OS0PR01MB5716jpnp_--