From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web09.1956.1660103552140484101 for ; Tue, 09 Aug 2022 20:52:32 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=NXYTumbt; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: ray.ni@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1660103552; x=1691639552; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=cAP39vwR3S4GNfgTlAgZx792kp09I7xbBKem7g6jkvk=; b=NXYTumbtG0T96ZPyuBr5YlI9FdFwgSKM6gqm4ikQXlFEGxWzQ2fMCkB/ AHad/r1W9Uat3HIIhn7F489ysMpzGiqEHktTfq2mW89sbKIW2mmKxE5M7 tGyDKGZOMxne9k6IaeMS5O3VMt4p+Y41QQYSMOprsFEs0X7XlYg6NIvbc cgYjdmOtvZzK6s4v44VnhM64MUylbWIEQvL95UHIgQuqtIzGv7xNTzq64 3tjmDOb2OFYwklz+retX5acdLz/EY4nhd2lIyRdmX9WbAUzo9zu/oK14u 3o/QLyQBRQ6I04zEpR9GgL4s1m2DABm7ZiHLjsK60PoaFy7Y88deq3Jtl g==; X-IronPort-AV: E=McAfee;i="6400,9594,10434"; a="288555195" X-IronPort-AV: E=Sophos;i="5.93,226,1654585200"; d="scan'208";a="288555195" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Aug 2022 20:52:31 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,226,1654585200"; d="scan'208";a="581068349" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga006.jf.intel.com with ESMTP; 09 Aug 2022 20:52:31 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Tue, 9 Aug 2022 20:52:31 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Tue, 9 Aug 2022 20:52:30 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28 via Frontend Transport; Tue, 9 Aug 2022 20:52:30 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.173) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.28; Tue, 9 Aug 2022 20:52:29 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HlekXHcHeGjlPOeo/SD6rHy7IPgUcYNJOjSU9ANQW11jBRX7eueOt1SS0WhHE7KZRCeUUMw7hBauLCAznbejWRBvJLAdmGnn7XLLbaQNGhyFxdaHtw/P5KRxuuQha2NgG/rdDQzpfF7xjei22jLHCgdbe4a9a5dJy99wMRvQcURwj/qSzPI55kV2cF7GyIW9wY5c+2/s+jWcvsYEcm1UCwHtULfmbzmjykDIlMZCTjrjy+B0efjGSY/qKrMvC+Ncsf/fpySS8huhdOo1wU6r51LnuW51vyY7j/qPWBhcmTbsrbJqaGsCVLM1PXTS2uBaO8KyKuj5djthPxDrlWBQyA== 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=cAP39vwR3S4GNfgTlAgZx792kp09I7xbBKem7g6jkvk=; b=cam3fYw1R86QmiEkCmruZ39hpTSIfErU/GuA5nj34B+fXBrvByrSu+7d3aZBi0edt/40BWoPgj5YclHkNkFgrjdAlXOy7nQEKvDlBUfb7R2g7Bijj6up2TK9N6XVgzmTVlwuO8q+h1SD/XsvfEnhWvaTjo2M159vSbp4L4IynIzmjf2keAvmMf4YX6d3QcoXi9EnSrG5K8V73yrHyPyueFp6qMHe4qnwe0TWlm+5FoJ5gQ1ou2PyiPa1BB8xda0CxR1USi4FTaZrfkS10jMBmOm41QThNW+4QiaEIB5Bw+AL2+xSEGBxIE6P+FY53L5qzfFdz1FeFnIG7jtGraadpA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from MWHPR11MB1631.namprd11.prod.outlook.com (2603:10b6:301:10::10) by DM6PR11MB4756.namprd11.prod.outlook.com (2603:10b6:5:2a7::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.14; Wed, 10 Aug 2022 03:52:27 +0000 Received: from MWHPR11MB1631.namprd11.prod.outlook.com ([fe80::991b:97a0:7836:5174]) by MWHPR11MB1631.namprd11.prod.outlook.com ([fe80::991b:97a0:7836:5174%10]) with mapi id 15.20.5504.020; Wed, 10 Aug 2022 03:52:27 +0000 From: "Ni, Ray" To: "Lin, JackX" , "Sinha, Ankit" CC: "Chiu, Chasel" , "Dong, Eric" , "Yao, Jiewen" , "Chaganty, Rangasai V" , "devel@edk2.groups.io" , "Kuo, Donald" , "Kumar, Chandana C" , "Palakshareddy, Lavanya C" , "Palakshareddy, Lavanya C" Subject: Re: [edk2-platforms: PATCH] Modify processor _UID ordering by CPU default fused in MADT Thread-Topic: [edk2-platforms: PATCH] Modify processor _UID ordering by CPU default fused in MADT Thread-Index: AQHYqv/rxuV9HgBBk06A3zrSlAd8i62nediggAAI+wD////5oA== Date: Wed, 10 Aug 2022 03:52:27 +0000 Message-ID: References: <20220808082123.1999-1-jackx.lin@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 44fe707e-f2a6-47d2-b441-08da7a83be11 x-ms-traffictypediagnostic: DM6PR11MB4756:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: U4sWrmonA+Wf+4jwE5Lbe88Bwm2kiG+oRt9QB8yKIjheORYwZqu+962/sM94dQpaUZCVMtt5jr+p2S1SsfGv03T7k1iawWKeUL5VzbKMIeaysTEbrRzlm6c/JC6gO0nE8l1qoceQMc0+1DiF5OkTJ+W9dRq3uvWh7Ak+yGhFRdhD0voewfkcol/voCehXr1dphOIsPVxeyuI4lQaeAitVju5vPp493k4AHopywgvyRznzDtmtwNKf7y93zHWMczvvyc/73BDIwauh7hjAYEZuKsqbaJEL7WmBxQzkjbZ48FhpG2/jOYJmH3VE/c7pcy2mjYd1XVqXZ76yR/92gLBA+a8pycv58IINqN0MZsgRDNgecMHhpHtdPRrLg5ZS+EMIcT3JSb5NA4jO9ll1MoalOWgbPZ666EfAKjRBmYTr9l19RGqtaG2RtzZzGJMlDW/5l/cuBX7In/rsZL1DuV6+JqEB9VZeHldpVO9Gg5JBf3F7dVhEjZ14EUUhqnUCDk7jWSCVLrsMQwQ6ij0SXDXL01tt/ZPtovsQt94k8KMapLienoUrpWepV0bSpnHZEOzI54XxCf/OJqpshYNwDni/qCCq3mCwZE+A+Lnbh5ImJfExtrdaVCf3eF2YYn3MSP05/4caUAFMwUwmOYBum887KmSZ/I5TqK8XCXWTUXhgvv22bXZ9dDiNbCC0knEqrzhbSCxLaqeLkYpRMAsY7lSE+QdCXLHAZzolSnKR1/KqogeFPpNsSkogWYwBX5Cxgn/Be5lme9gX5yYEJXaMJrLglkIY/j+FUOT8zwimV/kMz/IqLB5CohuaYsjcJZQAKtg x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR11MB1631.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(346002)(39860400002)(376002)(396003)(366004)(136003)(76116006)(66556008)(66476007)(66946007)(107886003)(30864003)(478600001)(5660300002)(8936002)(55016003)(86362001)(52536014)(83380400001)(122000001)(66446008)(6636002)(33656002)(54906003)(71200400001)(186003)(110136005)(19627235002)(316002)(7696005)(6506007)(53546011)(26005)(82960400001)(41300700001)(64756008)(2906002)(38070700005)(4326008)(8676002)(38100700002)(9686003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?K1hOWUpUNjRvZkxMR3lvcVBkMGxLdzExM08xY1NZSmtubldNczJwYUJmcDVX?= =?utf-8?B?bUxqeGJBODJUY2p3MGttQWlkVUZqbmFSV2RyYzdwYUEyMDR6YXVERk0wejdX?= =?utf-8?B?UVNrN0x0bHVRRUhTelQ4YTBaY1ZUdTlNTzZlSjhQZDB0Y1l1SXIrWXlGdXQr?= =?utf-8?B?NFl2cEJsYzM0NUZRRm5wcmxoQlJFMEJiTmZzcVlKK25kTEtjTk5kUXU0NURm?= =?utf-8?B?WWI0M2JVVUJKSU9rcEgyT2huUkRweU1WeFBuejR6N3M5ZU5EQTBtU0xLM0xV?= =?utf-8?B?enV5VktDVzR6VFpTRzN5OU9tWllINERxY0tyT1M0K3ZyZ016aUFaMWRvZDMx?= =?utf-8?B?U3Z4SXRzMTVvMWlmbjZzODdCd1h3dmkyVGppeFVxdU9PUUdFejdzZXo3aDR3?= =?utf-8?B?RG1IOXEyN2llb2dMcUlqb1VrOUdjUEV4L3hIZUF4RVRCUDQ0VFdRWkZJNTNm?= =?utf-8?B?SVlhZSs1d0FsL1hlUW1lU3JRR1JkUUF5Ky8vK0gyM3NwMExGWThwU3VOa0hL?= =?utf-8?B?cm5MYmlqWnowUlp1M3JzaWtoaFFVV3E3ckpMK1VEaWJ0ZkQ1ditQOWs5ME94?= =?utf-8?B?NnhibjB5U3pjaEs1cEV4SVowWTB2ditaVGpLZ0kvZ2NENDRMWmFWMk9SemNE?= =?utf-8?B?T3RYNW1PeitJaTJlck1Jb3p6SmNrUWZrSGd5bzgvUFowbFB0N3E4RUI5Y0d0?= =?utf-8?B?M2ZGM01pc0MrUlRKa04wV0FwQmRVMWtpdjltaUtPQmtaVzBQbkVSRVVjUUNm?= =?utf-8?B?bUpROU15TWRJK21yZDhKNGlSRk5ndmM4bGJ2UUJvcFZONlJvVWhHZlVvWERG?= =?utf-8?B?UzBlTVZHT1BsZGhHMzZST05ZOXhJMGVXbjB3dlVBK2JUMkhwdGtlY2lVVFRl?= =?utf-8?B?WUdpVzB2S1Z0MDk4SmFFbEtMcTVzeC8zKzFWdVVuaVpCNm9vM2JUdFI1OHho?= =?utf-8?B?R2NTR3c0NEx0R0xoTldDV21BMnAxZ21UclEwYTcyYk5MVU8wV3JLcEd1R2tQ?= =?utf-8?B?VzJONUliaXlNcEkySkN2UHZQU3JWMzMrdUJwNGREdDVtUi9EclZxbUZBVk1q?= =?utf-8?B?Qnd5MERaRkFaejl2WXlGSnRhQlJ0WGc0dHkzWkduaVpjVlhmcEpBQkdTWXRh?= =?utf-8?B?ZWdkZGJidXptVTc5WFZEVDh2MzYvRTRQRmNNNlB2RFVTMm4zZ3BWb1o4TkxN?= =?utf-8?B?Ty9xYmVaOE10LzhCeE5FbmVtRDNCZFlpNDJVcmhiMVp6eFYzY2ZMejZnM2NT?= =?utf-8?B?NDE2WE45YVQrcmtyZkg0a2IvQ3BaSGp5TTBiUXZmalJJUEZNV2JkNlRhVHBO?= =?utf-8?B?d0o4L0U1a0VYaW9pdXRTUFg0aW41dnIwYlF6ZHl4enNOMzVBNFhBMzcyam1n?= =?utf-8?B?VnJ5TmhFSjZvNVozbDJGSmNyREkrZncwamFXbmFCS05TdWQ2VXRuS1orejNu?= =?utf-8?B?dXU0bEtJaFRjNjN5aGtmd3lTOTdJYlJDMmpyVm1GNzBhbVh2V0FrMitaMmhp?= =?utf-8?B?eUQ1T2MyWUNCem1jSkxwTXdyUExJUXNQb3lrcTlWN1Y2d2lrY29FbDBoNXRh?= =?utf-8?B?SkV3RXlDYWRlOTlsQzBSZ0V4TmpjMDYyTWNGUDI3QWlMVEQvWE5kMEYybTEv?= =?utf-8?B?MXlEYkllR0tVZWtuZzQ3OVdOem5vL3pWeitPY3YvMHh3bTNWbjBiOGhteVdp?= =?utf-8?B?MnpvYkllSUx3TUYvR2RIcjRnZ2J6UGgxUzUzRVFzb1RmTXhUck04b3FhTU8v?= =?utf-8?B?d0xZTzN6c0dPVlcwVWd2T3BjOGN5S3d5b2ZZblI2TXJoMmIveThmTUhVSkdG?= =?utf-8?B?bCszK1Y3ZjZ3UDVPdk5ISVZaa0g0LzlVdkpZRXZQOUw0Y3dBV2YzSjA3bVh2?= =?utf-8?B?dWlIaHRNR29wZHFvN20vZi9GZHJJVHdHYzdJcUgwVDBKMGF3UnY3aUhTbFMw?= =?utf-8?B?RWR4Yy8wSG9CdTJSQk1MZUVZN0l3UFgxeW1nTEtrNFVKSDJpcmhEeW9VWmZz?= =?utf-8?B?TTFhMVlpa0tJUjNCWmY5akJyaFdEZ2phSXcvcCt4cGhJc1l0TGhpY0NhR29t?= =?utf-8?B?U2VZRWpmVEZONVN2bTIyQ3dKeUNDOW40b2NHVmFDclJDZ1RNRmM5K2pjRUdP?= =?utf-8?Q?VpLo=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR11MB1631.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 44fe707e-f2a6-47d2-b441-08da7a83be11 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Aug 2022 03:52:27.2607 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: LUJe1DuO14A8vANa8HRU1J/FelO+nzvP72kg3SL1ayHwiJLSuME54kGT1GKutayeVIhnvF8dCxaUwOzPI3adhg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB4756 Return-Path: ray.ni@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 R29vZCB0byBrbm93LiBUaGFua3Pwn5iKDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gRnJvbTogTGluLCBKYWNrWCA8amFja3gubGluQGludGVsLmNvbT4NCj4gU2VudDogV2VkbmVz ZGF5LCBBdWd1c3QgMTAsIDIwMjIgMTE6NTEgQU0NCj4gVG86IE5pLCBSYXkgPHJheS5uaUBpbnRl bC5jb20+OyBTaW5oYSwgQW5raXQgPGFua2l0LnNpbmhhQGludGVsLmNvbT4NCj4gQ2M6IENoaXUs IENoYXNlbCA8Y2hhc2VsLmNoaXVAaW50ZWwuY29tPjsgRG9uZywgRXJpYyA8ZXJpYy5kb25nQGlu dGVsLmNvbT47DQo+IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IENoYWdhbnR5 LCBSYW5nYXNhaSBWDQo+IDxyYW5nYXNhaS52LmNoYWdhbnR5QGludGVsLmNvbT47IGRldmVsQGVk azIuZ3JvdXBzLmlvOyBLdW8sIERvbmFsZA0KPiA8ZG9uYWxkLmt1b0BpbnRlbC5jb20+OyBLdW1h ciwgQ2hhbmRhbmEgQw0KPiA8Y2hhbmRhbmEuYy5rdW1hckBpbnRlbC5jb20+OyBQYWxha3NoYXJl ZGR5LCBMYXZhbnlhIEMNCj4gPGxhdmFueWEuYy5wYWxha3NoYXJlZGR5QGludGVsLmNvbT47IFBh bGFrc2hhcmVkZHksIExhdmFueWEgQw0KPiA8bGF2YW55YS5jLnBhbGFrc2hhcmVkZHlAaW50ZWwu Y29tPg0KPiBTdWJqZWN0OiBSRTogW2VkazItcGxhdGZvcm1zOiBQQVRDSF0gTW9kaWZ5IHByb2Nl c3NvciBfVUlEIG9yZGVyaW5nIGJ5DQo+IENQVSBkZWZhdWx0IGZ1c2VkIGluIE1BRFQNCj4gDQo+ IEhpIFJheSwNCj4gDQo+IEkga25vdyB0aGlzIHBhdGNoLCBhbmQgdGhlIHRocmVhZCAyIGFuZCAz IGFyZSBhZGRlZCBieSBteSByZXF1ZXN0IGZvciBhDQo+IHJlYXNvbiBvbiB0aGF0IHRpbWUuDQo+ IEkgd2lsbCByZS1zZW50IHRoZSBjb2RlIHBhdGNoLg0KPiBUaGFuayB5b3UuDQo+IA0KPiBKYWNr DQo+IA0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBOaSwgUmF5IDxyYXku bmlAaW50ZWwuY29tPg0KPiBTZW50OiBXZWRuZXNkYXksIEF1Z3VzdCAxMCwgMjAyMiAxMTo0OCBB TQ0KPiBUbzogTGluLCBKYWNrWCA8amFja3gubGluQGludGVsLmNvbT47IFNpbmhhLCBBbmtpdCA8 YW5raXQuc2luaGFAaW50ZWwuY29tPg0KPiBDYzogQ2hpdSwgQ2hhc2VsIDxjaGFzZWwuY2hpdUBp bnRlbC5jb20+OyBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPjsNCj4gWWFvLCBKaWV3 ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgQ2hhZ2FudHksIFJhbmdhc2FpIFYNCj4gPHJhbmdh c2FpLnYuY2hhZ2FudHlAaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW87IEt1bywgRG9u YWxkDQo+IDxkb25hbGQua3VvQGludGVsLmNvbT47IEt1bWFyLCBDaGFuZGFuYSBDDQo+IDxjaGFu ZGFuYS5jLmt1bWFyQGludGVsLmNvbT47IFBhbGFrc2hhcmVkZHksIExhdmFueWEgQw0KPiA8bGF2 YW55YS5jLnBhbGFrc2hhcmVkZHlAaW50ZWwuY29tPjsgUGFsYWtzaGFyZWRkeSwgTGF2YW55YSBD DQo+IDxsYXZhbnlhLmMucGFsYWtzaGFyZWRkeUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBb ZWRrMi1wbGF0Zm9ybXM6IFBBVENIXSBNb2RpZnkgcHJvY2Vzc29yIF9VSUQgb3JkZXJpbmcgYnkN Cj4gQ1BVIGRlZmF1bHQgZnVzZWQgaW4gTUFEVA0KPiANCj4gSmFjaywNCj4gWW91ciBwYXRjaCBj YW5ub3QgYmUgbWVyZ2VkIHRvIHRydW5rIGJlY2F1c2UgQW5raXQganVzdCBkaWQgc29tZSBjaGFu Z2UgaW4NCj4gdGhlIHNhbWUgQyBmaWxlLCBpbiBiZWxvdyBjb21taXQuDQo+ICogTWluUGxhdGZv cm1Qa2cvQWNwaVRhYmxlczogQWRkIGFkZGl0aW9uYWwgdGhyZWFkIG1hcHBpbmcgaW4gTUFEVA0K PiANCj4gQW5raXQsDQo+IEl0IHNlZW1zIHlvdXIgcGF0Y2ggaXMgdG8gYWRkIHN1cHBvcnQgZm9y IHRocmVhZCAjMiBhbmQgIzMuIEphY2sncyBwYXRjaCBpcyB0bw0KPiByZW1vdmUgdGhlIGFkZGl0 aW9uYWwgc29ydGluZyB0aGF0IHB1dCBzZWNvbmRhcnkgdGhyZWFkcyBhZnRlciBmaXJzdCB0aHJl YWRzLg0KPiBEbyB5b3Ugc2VlIGFuIGlzc3VlIHRoYXQgd2UgcmVtb3ZlIHRoZSB0aHJlYWQgc29y dGluZyBsb2dpYz8NCj4gDQo+IFRoYW5rcywNCj4gUmF5DQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogTGluLCBKYWNrWCA8amFja3gubGluQGludGVsLmNvbT4N Cj4gPiBTZW50OiBNb25kYXksIEF1Z3VzdCA4LCAyMDIyIDQ6MjEgUE0NCj4gPiBUbzogZGV2ZWxA ZWRrMi5ncm91cHMuaW8NCj4gPiBDYzogTGluLCBKYWNrWCA8amFja3gubGluQGludGVsLmNvbT47 IExpbiwgSmFja1gNCj4gPiA8amFja3gubGluQGludGVsLmNvbT47IENoaXUsIENoYXNlbCA8Y2hh c2VsLmNoaXVAaW50ZWwuY29tPjsgRG9uZywNCj4gPiBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29t PjsgWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgTmksDQo+ID4gUmF5IDxyYXku bmlAaW50ZWwuY29tPjsgQ2hhZ2FudHksIFJhbmdhc2FpIFYNCj4gPiA8cmFuZ2FzYWkudi5jaGFn YW50eUBpbnRlbC5jb20+OyBLdW8sIERvbmFsZCA8ZG9uYWxkLmt1b0BpbnRlbC5jb20+Ow0KPiA+ IEt1bWFyLCBDaGFuZGFuYSBDIDxjaGFuZGFuYS5jLmt1bWFyQGludGVsLmNvbT47IFBhbGFrc2hh cmVkZHk7DQo+ID4gUGFsYWtzaGFyZWRkeSwgTGF2YW55YSBDIDxsYXZhbnlhLmMucGFsYWtzaGFy ZWRkeUBpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogW2VkazItcGxhdGZvcm1zOiBQQVRDSF0gTW9k aWZ5IHByb2Nlc3NvciBfVUlEIG9yZGVyaW5nIGJ5IENQVQ0KPiA+IGRlZmF1bHQgZnVzZWQgaW4g TUFEVA0KPiA+DQo+ID4gQklPUyBzaG91bGQgbm90IHJlb3JkZXJpbmcgY3B1IHByb2Nlc3Nvcl91 aWQNCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IEphY2tYIExpbiA8SmFja1guTGluQGludGVsLmNv bT4NCj4gPiBDYzogQ2hhc2VsIENoaXUgPGNoYXNlbC5jaGl1QGludGVsLmNvbT4NCj4gPiBDYzog RG9uZyBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPg0KPiA+IENjOiBKaWV3ZW4gWWFvIDxqaWV3 ZW4ueWFvQGludGVsLmNvbT4NCj4gPiBDYzogUmF5IE5pIDxyYXkubmlAaW50ZWwuY29tPg0KPiA+ IENjOiBSYW5nYXNhaSBWIENoYWdhbnR5IDxyYW5nYXNhaS52LmNoYWdhbnR5QGludGVsLmNvbT4N Cj4gPiBDYzogRG9uYWxkIEt1byA8RG9uYWxkLkt1b0BpbnRlbC5jb20+DQo+ID4gQ2M6IENoYW5k YW5hIEMgS3VtYXIgPGNoYW5kYW5hLmMua3VtYXJAaW50ZWwuY29tPg0KPiA+IENjOiBQYWxha3No YXJlZGR5LCBMYXZhbnlhIEMgPGxhdmFueWEuYy5wYWxha3NoYXJlZGR5QGludGVsLmNvbT4NCj4g PiBDYzogSmFja1ggTGluIDxKYWNrWC5MaW5AaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICBQbGF0 Zm9ybS9JbnRlbC9NaW5QbGF0Zm9ybVBrZy9BY3BpL0FjcGlUYWJsZXMvQWNwaVBsYXRmb3JtLmMg fCAxNzQNCj4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAtLQ0KPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiAtLS0tLS0tLS0tDQo+ID4gIDEgZmlsZSBjaGFuZ2Vk LCAzOSBpbnNlcnRpb25zKCspLCAxMzUgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0 DQo+ID4gYS9QbGF0Zm9ybS9JbnRlbC9NaW5QbGF0Zm9ybVBrZy9BY3BpL0FjcGlUYWJsZXMvQWNw aVBsYXRmb3JtLmMNCj4gPiBiL1BsYXRmb3JtL0ludGVsL01pblBsYXRmb3JtUGtnL0FjcGkvQWNw aVRhYmxlcy9BY3BpUGxhdGZvcm0uYw0KPiA+IGluZGV4IGM3ZTg3Y2JkN2QuLjE3NmU0MjJlODEg MTAwNjQ0DQo+ID4gLS0tIGEvUGxhdGZvcm0vSW50ZWwvTWluUGxhdGZvcm1Qa2cvQWNwaS9BY3Bp VGFibGVzL0FjcGlQbGF0Zm9ybS5jDQo+ID4gKysrIGIvUGxhdGZvcm0vSW50ZWwvTWluUGxhdGZv cm1Qa2cvQWNwaS9BY3BpVGFibGVzL0FjcGlQbGF0Zm9ybS5jDQo+ID4gQEAgLTU3LDM4ICs1Nyw5 IEBAIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICBtRm9yY2VYMkFwaWNJZDsNCj4gPiAgQk9P TEVBTiAgICAgICAgICAgICAgICAgICAgIG1YMkFwaWNFbmFibGVkOw0KPiA+DQo+ID4gIEVGSV9N UF9TRVJWSUNFU19QUk9UT0NPTCAgICAqbU1wU2VydmljZTsNCj4gPiAtQk9PTEVBTiAgICAgICAg ICAgICAgICAgICAgIG1DcHVPcmRlclNvcnRlZDsNCj4gPiAtRUZJX0NQVV9JRF9PUkRFUl9NQVAg ICAgICAgICptQ3B1QXBpY0lkT3JkZXJUYWJsZSA9IE5VTEw7DQo+ID4gIFVJTlROICAgICAgICAg ICAgICAgICAgICAgICBtTnVtYmVyT2ZDcHVzID0gMDsNCj4gPiAgVUlOVE4gICAgICAgICAgICAg ICAgICAgICAgIG1OdW1iZXJPZkVuYWJsZWRDUFVzID0gMDsNCj4gPg0KPiA+IC0NCj4gPiAtLyoq DQo+ID4gLSAgVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBQZXJmb3JtUXVpY2tTb3J0IHRvIGNv bXBhcmUgaW50IHZhbHVlcy4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtW2luXSBMZWZ0ICAgICAgICAg ICAgVGhlIHBvaW50ZXIgdG8gZmlyc3QgYnVmZmVyLg0KPiA+IC0gIEBwYXJhbVtpbl0gUmlnaHQg ICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHNlY29uZCBidWZmZXIuDQo+ID4gLQ0KPiA+IC0gIEBy ZXR1cm4gLTEgICAgICAgICAgICAgICAgIEJ1ZmZlcjEgaXMgbGVzcyB0aGFuIEJ1ZmZlcjIuDQo+ ID4gLSAgQHJldHVybiAgMSAgICAgICAgICAgICAgICAgQnVmZmVyMSBpcyBncmVhdGVyIHRoYW4g QnVmZmVyMi4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1JTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1B cGljSWRDb21wYXJlRnVuY3Rpb24gKA0KPiA+IC0gIElOIENPTlNUIFZPSUQgICAgICAgICAgICAg ICAgICAgICAgICAgKkxlZnQsDQo+ID4gLSAgSU4gQ09OU1QgVk9JRCAgICAgICAgICAgICAgICAg ICAgICAgICAqUmlnaHQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5UMzIgIExlZnRBcGlj SWQ7DQo+ID4gLSAgVUlOVDMyICBSaWdodEFwaWNJZDsNCj4gPiAtDQo+ID4gLSAgTGVmdEFwaWNJ ZCA9ICgoRUZJX0NQVV9JRF9PUkRFUl9NQVAgKikgTGVmdCktPkFwaWNJZDsNCj4gPiAtICBSaWdo dEFwaWNJZCA9ICgoRUZJX0NQVV9JRF9PUkRFUl9NQVAgKikgUmlnaHQpLT5BcGljSWQ7DQo+ID4g LQ0KPiA+IC0gIHJldHVybiAoTGVmdEFwaWNJZCA+IFJpZ2h0QXBpY0lkKT8gMSA6ICgtMSk7IC19 DQo+ID4gLQ0KPiA+ICAvKioNCj4gPiAgICBQcmludCBDcHUgQXBpYyBJRCBUYWJsZQ0KPiA+DQo+ ID4gQEAgLTExNiw3ICs4Nyw4IEBAIERlYnVnRGlzcGxheVJlT3JkZXJUYWJsZSAoICBFRklfU1RB VFVTDQo+ID4gQXBwZW5kQ3B1TWFwVGFibGVFbnRyeSAoDQo+ID4gICAgICBJTiBWT0lEICAgKkFw aWNQdHIsDQo+ID4gLSAgICBJTiBVSU5UMzIgTG9jYWxBcGljQ291bnRlcg0KPiA+ICsgICAgSU4g VUlOVDMyIExvY2FsQXBpY0NvdW50ZXIsDQo+ID4gKyAgICBJTiBFRklfQ1BVX0lEX09SREVSX01B UCAqQ3B1QXBpY0lkT3JkZXJUYWJsZQ0KPiA+ICAgICkNCj4gPiAgew0KPiA+ICAgIEVGSV9TVEFU VVMgICAgU3RhdHVzOw0KPiA+IEBAIC0xMzEsOSArMTAzLDkgQEAgQXBwZW5kQ3B1TWFwVGFibGVF bnRyeSAoDQo+ID4NCj4gPiAgICBpZihUeXBlID09IEVGSV9BQ1BJXzZfM19QUk9DRVNTT1JfTE9D QUxfQVBJQykgew0KPiA+ICAgICAgaWYoIW1YMkFwaWNFbmFibGVkKSB7DQo+ID4gLSAgICAgIExv Y2FsQXBpY1B0ci0+RmxhZ3MgICAgICAgICAgICA9DQo+ID4gKFVJTlQ4KW1DcHVBcGljSWRPcmRl clRhYmxlW0xvY2FsQXBpY0NvdW50ZXJdLkZsYWdzOw0KPiA+IC0gICAgICBMb2NhbEFwaWNQdHIt PkFwaWNJZCAgICAgICAgICAgPQ0KPiA+IChVSU5UOCltQ3B1QXBpY0lkT3JkZXJUYWJsZVtMb2Nh bEFwaWNDb3VudGVyXS5BcGljSWQ7DQo+ID4gLSAgICAgIExvY2FsQXBpY1B0ci0+QWNwaVByb2Nl c3NvclVpZCA9DQo+ID4gKFVJTlQ4KW1DcHVBcGljSWRPcmRlclRhYmxlW0xvY2FsQXBpY0NvdW50 ZXJdLkFjcGlQcm9jZXNzb3JVaWQ7DQo+ID4gKyAgICAgIExvY2FsQXBpY1B0ci0+RmxhZ3MgICAg ICAgICAgICA9DQo+ID4gKFVJTlQ4KUNwdUFwaWNJZE9yZGVyVGFibGVbTG9jYWxBcGljQ291bnRl cl0uRmxhZ3M7DQo+ID4gKyAgICAgIExvY2FsQXBpY1B0ci0+QXBpY0lkICAgICAgICAgICA9DQo+ ID4gKFVJTlQ4KUNwdUFwaWNJZE9yZGVyVGFibGVbTG9jYWxBcGljQ291bnRlcl0uQXBpY0lkOw0K PiA+ICsgICAgICBMb2NhbEFwaWNQdHItPkFjcGlQcm9jZXNzb3JVaWQgPQ0KPiA+IChVSU5UOClD cHVBcGljSWRPcmRlclRhYmxlW0xvY2FsQXBpY0NvdW50ZXJdLkFjcGlQcm9jZXNzb3JVaWQ7DQo+ ID4gICAgICB9IGVsc2Ugew0KPiA+ICAgICAgICBMb2NhbEFwaWNQdHItPkZsYWdzICAgICAgICAg ICAgPSAwOw0KPiA+ICAgICAgICBMb2NhbEFwaWNQdHItPkFwaWNJZCAgICAgICAgICAgPSAweEZG Ow0KPiA+IEBAIC0xNDIsOSArMTE0LDkgQEAgQXBwZW5kQ3B1TWFwVGFibGVFbnRyeSAoDQo+ID4g ICAgICB9DQo+ID4gICAgfSBlbHNlIGlmKFR5cGUgPT0gRUZJX0FDUElfNl8zX1BST0NFU1NPUl9M T0NBTF9YMkFQSUMpIHsNCj4gPiAgICAgIGlmKG1YMkFwaWNFbmFibGVkKSB7DQo+ID4gLSAgICAg IExvY2FsWDJBcGljUHRyLT5GbGFncyAgICAgICAgICAgID0NCj4gPiAoVUlOVDgpbUNwdUFwaWNJ ZE9yZGVyVGFibGVbTG9jYWxBcGljQ291bnRlcl0uRmxhZ3M7DQo+ID4gLSAgICAgIExvY2FsWDJB cGljUHRyLT5YMkFwaWNJZCAgICAgICAgID0NCj4gPiBtQ3B1QXBpY0lkT3JkZXJUYWJsZVtMb2Nh bEFwaWNDb3VudGVyXS5BcGljSWQ7DQo+ID4gLSAgICAgIExvY2FsWDJBcGljUHRyLT5BY3BpUHJv Y2Vzc29yVWlkID0NCj4gPiBtQ3B1QXBpY0lkT3JkZXJUYWJsZVtMb2NhbEFwaWNDb3VudGVyXS5B Y3BpUHJvY2Vzc29yVWlkOw0KPiA+ICsgICAgICBMb2NhbFgyQXBpY1B0ci0+RmxhZ3MgICAgICAg ICAgICA9DQo+ID4gKFVJTlQ4KUNwdUFwaWNJZE9yZGVyVGFibGVbTG9jYWxBcGljQ291bnRlcl0u RmxhZ3M7DQo+ID4gKyAgICAgIExvY2FsWDJBcGljUHRyLT5YMkFwaWNJZCAgICAgICAgID0NCj4g PiBDcHVBcGljSWRPcmRlclRhYmxlW0xvY2FsQXBpY0NvdW50ZXJdLkFwaWNJZDsNCj4gPiArICAg ICAgTG9jYWxYMkFwaWNQdHItPkFjcGlQcm9jZXNzb3JVaWQgPQ0KPiA+IENwdUFwaWNJZE9yZGVy VGFibGVbTG9jYWxBcGljQ291bnRlcl0uQWNwaVByb2Nlc3NvclVpZDsNCj4gPiAgICAgIH0gZWxz ZSB7DQo+ID4gICAgICAgIExvY2FsWDJBcGljUHRyLT5GbGFncyAgICAgICAgICAgID0gMDsNCj4g PiAgICAgICAgTG9jYWxYMkFwaWNQdHItPlgyQXBpY0lkICAgICAgICAgPSAoVUlOVDMyKS0xOw0K PiA+IEBAIC0xNTksMzIgKzEzMSwyNSBAQCBBcHBlbmRDcHVNYXBUYWJsZUVudHJ5ICgNCj4gPg0K PiA+ICB9DQo+ID4NCj4gPiArLyoqDQo+ID4gKyAgQ29sbGVjdCBhbGwgcHJvY2Vzc29ycyBpbmZv cm1hdGlvbiBhbmQgY3JlYXRlIGEgQ3B1IEFwaWMgSWQgdGFibGUuDQo+ID4gKw0KPiA+ICsgIEBw YXJhbVtpbl0gIENwdUFwaWNJZE9yZGVyVGFibGUgICAgICAgQnVmZmVyIHRvIHN0b3JlIGluZm9y bWF0aW9uIG9mIENwdS4NCj4gPiArKiovDQo+ID4gIEVGSV9TVEFUVVMNCj4gPiAtU29ydENwdUxv Y2FsQXBpY0luVGFibGUgKA0KPiA+IC0gIFZPSUQNCj4gPiArQ3JlYXRlQ3B1TG9jYWxBcGljSW5U YWJsZSAoDQo+ID4gKyAgSU4gRUZJX0NQVV9JRF9PUkRFUl9NQVAgKkNwdUFwaWNJZE9yZGVyVGFi bGUNCj4gPiAgICApDQo+ID4gIHsNCj4gPiAgICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gICAgRUZJX1BST0NFU1NPUl9JTkZPUk1BVElPTiAg ICAgICAgICAgICAgICAgUHJvY2Vzc29ySW5mb0J1ZmZlcjsNCj4gPiAgICBVSU5UMzIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleDsNCj4gPiAgICBVSU5UMzIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJyUHJvY2Vzc29yOw0KPiA+IC0gIFVJTlQz MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJzcEFwaWNJZDsNCj4gPiAtICBF RklfQ1BVX0lEX09SREVSX01BUCAgICAgICAgICAgICAgICAgICAgICBUZW1wVmFsOw0KPiA+ICAg IEVGSV9DUFVfSURfT1JERVJfTUFQICAgICAgICAgICAgICAgICAgICAgICpDcHVJZE1hcFB0cjsN Cj4gPiAtICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlVGhy ZWFkTWFzazsNCj4gPiAtICBFRklfQ1BVX0lEX09SREVSX01BUCAgICAgICAgICAgICAgICAgICAg ICAqVGVtcENwdUFwaWNJZE9yZGVyVGFibGU7DQo+ID4gICAgVUlOVDMyICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU29ja2V0Ow0KPiA+DQo+ID4gLSAgSW5kZXggICAgICA9IDA7 DQo+ID4gICAgU3RhdHVzICAgICA9IEVGSV9TVUNDRVNTOw0KPiA+DQo+ID4gLSAgaWYgKG1DcHVP cmRlclNvcnRlZCkgew0KPiA+IC0gICAgcmV0dXJuIFN0YXR1czsNCj4gPiAtICB9DQo+ID4gLQ0K PiA+IC0gIFRlbXBDcHVBcGljSWRPcmRlclRhYmxlID0gQWxsb2NhdGVaZXJvUG9vbCAobU51bWJl ck9mQ3B1cyAqDQo+IHNpemVvZg0KPiA+IChFRklfQ1BVX0lEX09SREVSX01BUCkpOw0KPiA+IC0g IENvcmVUaHJlYWRNYXNrID0gKFVJTlQzMikgKCgxIDw8IG1OdW1PZkJpdFNoaWZ0KSAtIDEpOw0K PiA+IC0NCj4gPiAgICBmb3IgKEN1cnJQcm9jZXNzb3IgPSAwLCBJbmRleCA9IDA7IEN1cnJQcm9j ZXNzb3IgPCBtTnVtYmVyT2ZDcHVzOw0KPiA+IEN1cnJQcm9jZXNzb3IrKywgSW5kZXgrKykgew0K PiA+ICAgICAgU3RhdHVzID0gbU1wU2VydmljZS0+R2V0UHJvY2Vzc29ySW5mbyAoDQo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1NcFNlcnZpY2UsIEBAIC0xOTIsNyArMTU3LDcgQEAN Cj4gPiBTb3J0Q3B1TG9jYWxBcGljSW5UYWJsZSAoDQo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZQcm9jZXNzb3JJbmZvQnVmZmVyDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICk7DQo+ID4NCj4gPiAtICAgIENwdUlkTWFwUHRyID0gKEVGSV9DUFVfSURfT1JERVJfTUFQ ICopDQo+ID4gJlRlbXBDcHVBcGljSWRPcmRlclRhYmxlW0luZGV4XTsNCj4gPiArICAgIENwdUlk TWFwUHRyID0gKEVGSV9DUFVfSURfT1JERVJfTUFQICopDQo+ID4gJkNwdUFwaWNJZE9yZGVyVGFi bGVbSW5kZXhdOw0KPiA+ICAgICAgaWYgKChQcm9jZXNzb3JJbmZvQnVmZmVyLlN0YXR1c0ZsYWcg JiBQUk9DRVNTT1JfRU5BQkxFRF9CSVQpICE9IDApIHsNCj4gPiAgICAgICAgQ3B1SWRNYXBQdHIt PkFwaWNJZCAgPSAoVUlOVDMyKVByb2Nlc3NvckluZm9CdWZmZXIuUHJvY2Vzc29ySWQ7DQo+ID4g ICAgICAgIENwdUlkTWFwUHRyLT5UaHJlYWQgID0gUHJvY2Vzc29ySW5mb0J1ZmZlci5Mb2NhdGlv bi5UaHJlYWQ7DQo+ID4gQEAgLTIxNCw4OSArMTc5LDI2IEBAIFNvcnRDcHVMb2NhbEFwaWNJblRh YmxlICgNCj4gPiAgICAgIH0gLy9lbmQgaWYgUFJPQyBFTkFCTEUNCj4gPiAgICB9IC8vZW5kIGZv ciBDdXJyZW50UHJvY2Vzc29yDQo+ID4NCj4gPiAtICAvL2tlZXAgZm9yIGRlYnVnIHB1cnBvc2UN Cj4gPiAtICBERUJVRyAoKERFQlVHX0lORk8sICI6OkFDUEk6OiAgQVBJQyBJRCBPcmRlciBUYWJs ZSBJbml0Lg0KPiA+IENvcmVUaHJlYWRNYXNrID0gJXgsICBtTnVtT2ZCaXRTaGlmdCA9ICV4XG4i LCBDb3JlVGhyZWFkTWFzaywNCj4gPiBtTnVtT2ZCaXRTaGlmdCkpOw0KPiA+IC0gIERlYnVnRGlz cGxheVJlT3JkZXJUYWJsZSAoVGVtcENwdUFwaWNJZE9yZGVyVGFibGUpOw0KPiA+IC0NCj4gPiAg ICAvLw0KPiA+ICAgIC8vIEdldCBCc3AgQXBpYyBJZA0KPiA+ICAgIC8vDQo+ID4gLSAgQnNwQXBp Y0lkID0gR2V0QXBpY0lkICgpOw0KPiA+IC0gIERFQlVHICgoREVCVUdfSU5GTywgIkJzcEFwaWNJ ZCAtIDB4JXhcbiIsIEJzcEFwaWNJZCkpOw0KPiA+IC0NCj4gPiAtICAvLw0KPiA+IC0gIC8vY2hl Y2sgdG8gc2VlIGlmIDFzdCBlbnRyeSBpcyBCU1AsIGlmIG5vdCBzd2FwIGl0DQo+ID4gLSAgLy8N Cj4gPiAtICBpZiAoVGVtcENwdUFwaWNJZE9yZGVyVGFibGVbMF0uQXBpY0lkICE9IEJzcEFwaWNJ ZCkgew0KPiA+IC0gICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgbU51bWJlck9mQ3B1czsgSW5k ZXgrKykgew0KPiA+IC0gICAgICBpZiAoKFRlbXBDcHVBcGljSWRPcmRlclRhYmxlW0luZGV4XS5G bGFncyA9PSAxKSAmJg0KPiA+IChUZW1wQ3B1QXBpY0lkT3JkZXJUYWJsZVtJbmRleF0uQXBpY0lk ID09IEJzcEFwaWNJZCkpIHsNCj4gPiAtICAgICAgICBDb3B5TWVtICgmVGVtcFZhbCwgJlRlbXBD cHVBcGljSWRPcmRlclRhYmxlW0luZGV4XSwgc2l6ZW9mDQo+ID4gKEVGSV9DUFVfSURfT1JERVJf TUFQKSk7DQo+ID4gLSAgICAgICAgQ29weU1lbSAoJlRlbXBDcHVBcGljSWRPcmRlclRhYmxlW0lu ZGV4XSwNCj4gPiAmVGVtcENwdUFwaWNJZE9yZGVyVGFibGVbMF0sIHNpemVvZiAoRUZJX0NQVV9J RF9PUkRFUl9NQVApKTsNCj4gPiAtICAgICAgICBDb3B5TWVtICgmVGVtcENwdUFwaWNJZE9yZGVy VGFibGVbMF0sICZUZW1wVmFsLCBzaXplb2YNCj4gPiAoRUZJX0NQVV9JRF9PUkRFUl9NQVApKTsN Cj4gPiAtICAgICAgICBicmVhazsNCj4gPiAtICAgICAgfQ0KPiA+IC0gICAgfQ0KPiA+IC0NCj4g PiAtICAgIGlmIChtTnVtYmVyT2ZDcHVzIDw9IEluZGV4KSB7DQo+ID4gLSAgICAgIERFQlVHICgo REVCVUdfRVJST1IsICJBc3NlcnRpbmcgdGhlIFNvcnRDcHVMb2NhbEFwaWNJblRhYmxlIEluZGV4 DQo+ID4gQnVmZmVyZmxvd1xuIikpOw0KPiA+IC0gICAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFS QU1FVEVSOw0KPiA+IC0gICAgfQ0KPiA+IC0gIH0NCj4gPiAtDQo+ID4gLSAgLy8NCj4gPiAtICAv LyAxLiBTb3J0IFRlbXBDcHVBcGljSWRPcmRlclRhYmxlLA0KPiA+IC0gIC8vICAgIHNvcnQgaXQg YnkgdXNpbmcgQXBpY0lkIGZyb20gbWluaW11bSB0byBtYXhpbXVtIChTb2NrZXQwIHRvDQo+IFNv Y2tldE4pLA0KPiA+IGFuZCB0aGUgQlNQIG11c3QgaW4gdGhlIGZpc3QgbG9jYXRpb24gb2YgdGhl IHRhYmxlLg0KPiA+IC0gIC8vICAgIFNvLCBzdGFydCBzb3J0aW5nIHRoZSB0YWJsZSBmcm9tIHRo ZSBzZWNvbmQgZWxlbWVudCBhbmQgdG90YWwNCj4gZWxlbWVudHMNCj4gPiBhcmUgbU51bWJlck9m Q3B1cy0xLg0KPiA+IC0gIC8vDQo+ID4gLSAgUGVyZm9ybVF1aWNrU29ydCAoKFRlbXBDcHVBcGlj SWRPcmRlclRhYmxlICsgMSksIChtTnVtYmVyT2ZDcHVzIC0NCj4gPiAxKSwgc2l6ZW9mIChFRklf Q1BVX0lEX09SREVSX01BUCksIChTT1JUX0NPTVBBUkUpDQo+ID4gQXBpY0lkQ29tcGFyZUZ1bmN0 aW9uKTsNCj4gPiAtDQo+ID4gLSAgLy8NCj4gPiAtICAvLyAyLiBTb3J0IGFuZCBtYXAgdGhlIHBy aW1hcnkgdGhyZWFkcyB0byB0aGUgZnJvbnQgb2YgdGhlDQo+ID4gQ3B1QXBpY0lkT3JkZXJUYWJs ZQ0KPiA+IC0gIC8vDQo+ID4gLSAgZm9yIChDdXJyUHJvY2Vzc29yID0gMCwgSW5kZXggPSAwOyBJ bmRleCA8IG1OdW1iZXJPZkNwdXM7IEluZGV4KyspIHsNCj4gPiAtICAgIGlmICgoVGVtcENwdUFw aWNJZE9yZGVyVGFibGVbSW5kZXhdLlRocmVhZCkgPT0gMCkgeyAvLyBwcmltYXJ5IHRocmVhZA0K PiA+IC0gICAgICBDb3B5TWVtICgmbUNwdUFwaWNJZE9yZGVyVGFibGVbQ3VyclByb2Nlc3Nvcl0s DQo+ID4gJlRlbXBDcHVBcGljSWRPcmRlclRhYmxlW0luZGV4XSwgc2l6ZW9mIChFRklfQ1BVX0lE X09SREVSX01BUCkpOw0KPiA+IC0gICAgICBDdXJyUHJvY2Vzc29yKys7DQo+ID4gLSAgICB9DQo+ ID4gLSAgfQ0KPiA+ICsgIERFQlVHICgoREVCVUdfSU5GTywgIkJzcEFwaWNJZCAtIDB4JXhcbiIs IEdldEFwaWNJZCAoKSkpOw0KPiA+DQo+ID4gLSAgLy8NCj4gPiAtICAvLyAzLiBTb3J0IGFuZCBt YXAgdGhlIHNlY29uZCB0aHJlYWRzIHRvIHRoZSBtaWRkbGUgb2YgdGhlDQo+ID4gQ3B1QXBpY0lk T3JkZXJUYWJsZQ0KPiA+IC0gIC8vDQo+ID4gLSAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgbU51 bWJlck9mQ3B1czsgSW5kZXgrKykgew0KPiA+IC0gICAgaWYgKChUZW1wQ3B1QXBpY0lkT3JkZXJU YWJsZVtJbmRleF0uVGhyZWFkKSA9PSAxKSB7IC8vc2Vjb25kIHRocmVhZA0KPiA+IC0gICAgICBD b3B5TWVtICgmbUNwdUFwaWNJZE9yZGVyVGFibGVbQ3VyclByb2Nlc3Nvcl0sDQo+ID4gJlRlbXBD cHVBcGljSWRPcmRlclRhYmxlW0luZGV4XSwgc2l6ZW9mIChFRklfQ1BVX0lEX09SREVSX01BUCkp Ow0KPiA+IC0gICAgICBDdXJyUHJvY2Vzc29yKys7DQo+ID4gLSAgICB9DQo+ID4gLSAgfQ0KPiA+ DQo+ID4gICAgLy8NCj4gPiAtICAvLyA0LiBTb3J0IGFuZCBtYXAgdGhlIG5vdCBlbmFibGVkIHRo cmVhZHMgdG8gdGhlIGJvdHRvbSBvZiB0aGUNCj4gPiBDcHVBcGljSWRPcmRlclRhYmxlDQo+ID4g LSAgLy8NCj4gPiAtICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBtTnVtYmVyT2ZDcHVzOyBJbmRl eCsrKSB7DQo+ID4gLSAgICBpZiAoVGVtcENwdUFwaWNJZE9yZGVyVGFibGVbSW5kZXhdLkZsYWdz ID09IDApIHsgLy8gbm90IGVuYWJsZWQNCj4gPiAtICAgICAgQ29weU1lbSAoJm1DcHVBcGljSWRP cmRlclRhYmxlW0N1cnJQcm9jZXNzb3JdLA0KPiA+ICZUZW1wQ3B1QXBpY0lkT3JkZXJUYWJsZVtJ bmRleF0sIHNpemVvZiAoRUZJX0NQVV9JRF9PUkRFUl9NQVApKTsNCj4gPiAtICAgICAgQ3VyclBy b2Nlc3NvcisrOw0KPiA+IC0gICAgfQ0KPiA+IC0gIH0NCj4gPiAtDQo+ID4gLSAgLy8NCj4gPiAt ICAvLyA1LiBSZS1hc3NpZ24gQWNwaVByb2Nlc3NvcklkIGZvciBBY3BpUHJvY2Vzc29yVWlkIHVz ZXMgcHVycG9zZS4NCj4gPiArICAvLyBGaWxsIGluIEFjcGlQcm9jZXNzb3JVaWQuDQo+ID4gICAg Ly8NCj4gPiAgICBmb3IgKFNvY2tldCA9IDA7IFNvY2tldCA8IEZpeGVkUGNkR2V0MzIgKFBjZE1h eENwdVNvY2tldENvdW50KTsNCj4gPiBTb2NrZXQrKykgew0KPiA+ICAgICAgZm9yIChDdXJyUHJv Y2Vzc29yID0gMCwgSW5kZXggPSAwOyBDdXJyUHJvY2Vzc29yIDwgbU51bWJlck9mQ3B1czsNCj4g PiBDdXJyUHJvY2Vzc29yKyspIHsNCj4gPiAtICAgICAgaWYgKG1DcHVBcGljSWRPcmRlclRhYmxl W0N1cnJQcm9jZXNzb3JdLkZsYWdzICYmDQo+ID4gKG1DcHVBcGljSWRPcmRlclRhYmxlW0N1cnJQ cm9jZXNzb3JdLlNvY2tldE51bSA9PSBTb2NrZXQpKSB7DQo+ID4gLSAgICAgICAgbUNwdUFwaWNJ ZE9yZGVyVGFibGVbQ3VyclByb2Nlc3Nvcl0uQWNwaVByb2Nlc3NvclVpZCA9DQo+ID4gKG1DcHVB cGljSWRPcmRlclRhYmxlW0N1cnJQcm9jZXNzb3JdLlNvY2tldE51bSA8PCBtTnVtT2ZCaXRTaGlm dCkgKw0KPiA+IEluZGV4Ow0KPiA+ICsgICAgICBpZiAoQ3B1QXBpY0lkT3JkZXJUYWJsZVtDdXJy UHJvY2Vzc29yXS5GbGFncyAmJg0KPiA+IChDcHVBcGljSWRPcmRlclRhYmxlW0N1cnJQcm9jZXNz b3JdLlNvY2tldE51bSA9PSBTb2NrZXQpKSB7DQo+ID4gKyAgICAgICAgQ3B1QXBpY0lkT3JkZXJU YWJsZVtDdXJyUHJvY2Vzc29yXS5BY3BpUHJvY2Vzc29yVWlkID0NCj4gPiAoQ3B1QXBpY0lkT3Jk ZXJUYWJsZVtDdXJyUHJvY2Vzc29yXS5Tb2NrZXROdW0gPDwgbU51bU9mQml0U2hpZnQpICsNCj4g PiBJbmRleDsNCj4gPiAgICAgICAgICBJbmRleCsrOw0KPiA+ICAgICAgICB9DQo+ID4gICAgICB9 DQo+ID4gICAgfQ0KPiA+DQo+ID4gLSAgLy9rZWVwIGZvciBkZWJ1ZyBwdXJwb3NlDQo+ID4gLSAg REVCVUcgKChERUJVR19JTkZPLCAiQVBJQyBJRCBPcmRlciBUYWJsZSBSZU9yZGVyZWRcbiIpKTsN Cj4gPiAtICBEZWJ1Z0Rpc3BsYXlSZU9yZGVyVGFibGUgKG1DcHVBcGljSWRPcmRlclRhYmxlKTsN Cj4gPiAtDQo+ID4gLSAgbUNwdU9yZGVyU29ydGVkID0gVFJVRTsNCj4gPiArICBERUJVRyAoKERF QlVHX0lORk8sICI6OkFDUEk6OiAgQVBJQyBJRCBPcmRlciBUYWJsZSBJbml0Lg0KPiA+IG1OdW1P ZkJpdFNoaWZ0ID0gJXhcbiIsIG1OdW1PZkJpdFNoaWZ0KSk7DQo+ID4gKyAgRGVidWdEaXNwbGF5 UmVPcmRlclRhYmxlIChDcHVBcGljSWRPcmRlclRhYmxlKTsNCj4gPg0KPiA+ICAgIHJldHVybiBT dGF0dXM7DQo+ID4gIH0NCj4gPiBAQCAtNzUwLDYgKzY1Miw3IEBAIEluc3RhbGxNYWR0RnJvbVNj cmF0Y2ggKA0KPiA+ICAgIEVGSV9BQ1BJXzZfM19MT0NBTF9BUElDX05NSV9TVFJVQ1RVUkUgICAg ICAgICAgICAgICBMb2NhbEFwY2lObWlTdHJ1Y3Q7DQo+ID4gICAgRUZJX0FDUElfNl8zX1BST0NF U1NPUl9MT0NBTF9YMkFQSUNfU1RSVUNUVVJFDQo+ID4gUHJvY0xvY2FsWDJBcGljU3RydWN0Ow0K PiA+ICAgIEVGSV9BQ1BJXzZfM19MT0NBTF9YMkFQSUNfTk1JX1NUUlVDVFVSRQ0KPiA+IExvY2Fs WDJBcGljTm1pU3RydWN0Ow0KPiA+ICsgIEVGSV9DUFVfSURfT1JERVJfTUFQICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqQ3B1QXBpY0lkT3JkZXJUYWJsZTsNCj4gPiAgICBTVFJVQ1RV UkVfSEVBREVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipNYWR0U3RydWN0 czsNCj4gPiAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTWF4TWFkdFN0cnVjdENvdW50Ow0KPiA+ICAgIFVJTlROICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWR0U3RydWN0c0luZGV4Ow0KPiA+IEBAIC03 NjAsMTggKzY2MywxOSBAQCBJbnN0YWxsTWFkdEZyb21TY3JhdGNoICgNCj4gPg0KPiA+ICAgIE1h ZHRTdHJ1Y3RzID0gTlVMTDsNCj4gPiAgICBOZXdNYWR0VGFibGUgPSBOVUxMOw0KPiA+ICsgIENw dUFwaWNJZE9yZGVyVGFibGUgPSBOVUxMOw0KPiA+ICAgIE1heE1hZHRTdHJ1Y3RDb3VudCA9IDA7 DQo+ID4NCj4gPiAtICBtQ3B1QXBpY0lkT3JkZXJUYWJsZSA9IEFsbG9jYXRlWmVyb1Bvb2wgKG1O dW1iZXJPZkNwdXMgKiBzaXplb2YNCj4gPiAoRUZJX0NQVV9JRF9PUkRFUl9NQVApKTsNCj4gPiAt ICBpZiAobUNwdUFwaWNJZE9yZGVyVGFibGUgPT0gTlVMTCkgew0KPiA+IC0gICAgREVCVUcgKChE RUJVR19FUlJPUiwgIkNvdWxkIG5vdCBhbGxvY2F0ZSBtQ3B1QXBpY0lkT3JkZXJUYWJsZQ0KPiA+ IHN0cnVjdHVyZSBwb2ludGVyIGFycmF5XG4iKSk7DQo+ID4gKyAgQ3B1QXBpY0lkT3JkZXJUYWJs ZSA9IEFsbG9jYXRlWmVyb1Bvb2wgKG1OdW1iZXJPZkNwdXMgKiBzaXplb2YNCj4gPiAoRUZJX0NQ VV9JRF9PUkRFUl9NQVApKTsNCj4gPiArICBpZiAoQ3B1QXBpY0lkT3JkZXJUYWJsZSA9PSBOVUxM KSB7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiQ291bGQgbm90IGFsbG9jYXRlIENw dUFwaWNJZE9yZGVyVGFibGUNCj4gPiBzdHJ1Y3R1cmUgcG9pbnRlciBhcnJheVxuIikpOw0KPiA+ ICAgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ICAgIH0NCj4gPg0KPiA+ICAg IC8vIENhbGwgZm9yIExvY2FsIEFQSUMgSUQgUmVvcmRlcg0KPiA+IC0gIFN0YXR1cyA9IFNvcnRD cHVMb2NhbEFwaWNJblRhYmxlICgpOw0KPiA+ICsgIFN0YXR1cyA9IENyZWF0ZUNwdUxvY2FsQXBp Y0luVGFibGUgKENwdUFwaWNJZE9yZGVyVGFibGUpOw0KPiA+ICAgIGlmIChFRklfRVJST1IgKFN0 YXR1cykpIHsNCj4gPiAtICAgIERFQlVHICgoREVCVUdfRVJST1IsICJTb3J0Q3B1TG9jYWxBcGlj SW5UYWJsZSBmYWlsZWQ6ICVyXG4iLA0KPiBTdGF0dXMpKTsNCj4gPiArICAgIERFQlVHICgoREVC VUdfRVJST1IsICJDcmVhdGVDcHVMb2NhbEFwaWNJblRhYmxlIGZhaWxlZDogJXJcbiIsDQo+ID4g U3RhdHVzKSk7DQo+ID4gICAgICBnb3RvIERvbmU7DQo+ID4gICAgfQ0KPiA+DQo+ID4gQEAgLTgy NCwxMCArNzI4LDEwIEBAIEluc3RhbGxNYWR0RnJvbVNjcmF0Y2ggKA0KPiA+ICAgICAgLy8gQVBJ QyBJRCBhcyBhIFVJTlQ4LCB1c2UgYSBwcm9jZXNzb3IgbG9jYWwgQVBJQyBzdHJ1Y3R1cmUuIE90 aGVyd2lzZSwNCj4gPiAgICAgIC8vIHVzZSBhIHByb2Nlc3NvciBsb2NhbCB4MkFQSUMgc3RydWN0 dXJlLg0KPiA+ICAgICAgLy8NCj4gPiAtICAgIGlmICghbVgyQXBpY0VuYWJsZWQgJiYgbUNwdUFw aWNJZE9yZGVyVGFibGVbSW5kZXhdLkFwaWNJZCA8DQo+ID4gTUFYX1VJTlQ4KSB7DQo+ID4gLSAg ICAgIFByb2NMb2NhbEFwaWNTdHJ1Y3QuRmxhZ3MgICAgICAgICAgICA9IChVSU5UOCkNCj4gPiBt Q3B1QXBpY0lkT3JkZXJUYWJsZVtJbmRleF0uRmxhZ3M7DQo+ID4gLSAgICAgIFByb2NMb2NhbEFw aWNTdHJ1Y3QuQXBpY0lkICAgICAgICAgICA9IChVSU5UOCkNCj4gPiBtQ3B1QXBpY0lkT3JkZXJU YWJsZVtJbmRleF0uQXBpY0lkOw0KPiA+IC0gICAgICBQcm9jTG9jYWxBcGljU3RydWN0LkFjcGlQ cm9jZXNzb3JVaWQgPSAoVUlOVDgpDQo+ID4gbUNwdUFwaWNJZE9yZGVyVGFibGVbSW5kZXhdLkFj cGlQcm9jZXNzb3JVaWQ7DQo+ID4gKyAgICBpZiAoIW1YMkFwaWNFbmFibGVkICYmIENwdUFwaWNJ ZE9yZGVyVGFibGVbSW5kZXhdLkFwaWNJZCA8DQo+ID4gTUFYX1VJTlQ4KSB7DQo+ID4gKyAgICAg IFByb2NMb2NhbEFwaWNTdHJ1Y3QuRmxhZ3MgICAgICAgICAgICA9IChVSU5UOCkNCj4gPiBDcHVB cGljSWRPcmRlclRhYmxlW0luZGV4XS5GbGFnczsNCj4gPiArICAgICAgUHJvY0xvY2FsQXBpY1N0 cnVjdC5BcGljSWQgICAgICAgICAgID0gKFVJTlQ4KQ0KPiA+IENwdUFwaWNJZE9yZGVyVGFibGVb SW5kZXhdLkFwaWNJZDsNCj4gPiArICAgICAgUHJvY0xvY2FsQXBpY1N0cnVjdC5BY3BpUHJvY2Vz c29yVWlkID0gKFVJTlQ4KQ0KPiA+IENwdUFwaWNJZE9yZGVyVGFibGVbSW5kZXhdLkFjcGlQcm9j ZXNzb3JVaWQ7DQo+ID4NCj4gPiAgICAgICAgQVNTRVJUIChNYWR0U3RydWN0c0luZGV4IDwgTWF4 TWFkdFN0cnVjdENvdW50KTsNCj4gPiAgICAgICAgU3RhdHVzID0gQ29weVN0cnVjdHVyZSAoDQo+ ID4gQEAgLTgzNSwxMCArNzM5LDEwIEBAIEluc3RhbGxNYWR0RnJvbVNjcmF0Y2ggKA0KPiA+ICAg ICAgICAgICAgICAgICAgIChTVFJVQ1RVUkVfSEVBREVSICopICZQcm9jTG9jYWxBcGljU3RydWN0 LA0KPiA+ICAgICAgICAgICAgICAgICAgICZNYWR0U3RydWN0c1tNYWR0U3RydWN0c0luZGV4Kytd DQo+ID4gICAgICAgICAgICAgICAgICAgKTsNCj4gPiAtICAgIH0gZWxzZSBpZiAobUNwdUFwaWNJ ZE9yZGVyVGFibGVbSW5kZXhdLkFwaWNJZCAhPSAweEZGRkZGRkZGKSB7DQo+ID4gLSAgICAgIFBy b2NMb2NhbFgyQXBpY1N0cnVjdC5GbGFncyAgICAgICAgICAgID0gKFVJTlQ4KQ0KPiA+IG1DcHVB cGljSWRPcmRlclRhYmxlW0luZGV4XS5GbGFnczsNCj4gPiAtICAgICAgUHJvY0xvY2FsWDJBcGlj U3RydWN0LlgyQXBpY0lkICAgICAgICAgPQ0KPiA+IG1DcHVBcGljSWRPcmRlclRhYmxlW0luZGV4 XS5BcGljSWQ7DQo+ID4gLSAgICAgIFByb2NMb2NhbFgyQXBpY1N0cnVjdC5BY3BpUHJvY2Vzc29y VWlkID0NCj4gPiBtQ3B1QXBpY0lkT3JkZXJUYWJsZVtJbmRleF0uQWNwaVByb2Nlc3NvclVpZDsN Cj4gPiArICAgIH0gZWxzZSBpZiAoQ3B1QXBpY0lkT3JkZXJUYWJsZVtJbmRleF0uQXBpY0lkICE9 IDB4RkZGRkZGRkYpIHsNCj4gPiArICAgICAgUHJvY0xvY2FsWDJBcGljU3RydWN0LkZsYWdzICAg ICAgICAgICAgPSAoVUlOVDgpDQo+ID4gQ3B1QXBpY0lkT3JkZXJUYWJsZVtJbmRleF0uRmxhZ3M7 DQo+ID4gKyAgICAgIFByb2NMb2NhbFgyQXBpY1N0cnVjdC5YMkFwaWNJZCAgICAgICAgID0NCj4g PiBDcHVBcGljSWRPcmRlclRhYmxlW0luZGV4XS5BcGljSWQ7DQo+ID4gKyAgICAgIFByb2NMb2Nh bFgyQXBpY1N0cnVjdC5BY3BpUHJvY2Vzc29yVWlkID0NCj4gPiBDcHVBcGljSWRPcmRlclRhYmxl W0luZGV4XS5BY3BpUHJvY2Vzc29yVWlkOw0KPiA+DQo+ID4gICAgICAgIEFTU0VSVCAoTWFkdFN0 cnVjdHNJbmRleCA8IE1heE1hZHRTdHJ1Y3RDb3VudCk7DQo+ID4gICAgICAgIFN0YXR1cyA9IENv cHlTdHJ1Y3R1cmUgKA0KPiA+IEBAIC0xMDMzLDggKzkzNyw4IEBAIERvbmU6DQo+ID4gICAgICBG cmVlUG9vbCAoTmV3TWFkdFRhYmxlKTsNCj4gPiAgICB9DQo+ID4NCj4gPiAtICBpZiAobUNwdUFw aWNJZE9yZGVyVGFibGUgIT0gTlVMTCkgew0KPiA+IC0gICAgRnJlZVBvb2wgKG1DcHVBcGljSWRP cmRlclRhYmxlKTsNCj4gPiArICBpZiAoQ3B1QXBpY0lkT3JkZXJUYWJsZSAhPSBOVUxMKSB7DQo+ ID4gKyAgICBGcmVlUG9vbCAoQ3B1QXBpY0lkT3JkZXJUYWJsZSk7DQo+ID4gICAgfQ0KPiA+DQo+ ID4gICAgcmV0dXJuIFN0YXR1czsNCj4gPiAtLQ0KPiA+IDIuMzIuMC53aW5kb3dzLjINCg0K