From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web11.2965.1648070412258758248 for ; Wed, 23 Mar 2022 14:20:13 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=bRD0bU1A; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: guo.dong@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1648070412; x=1679606412; h=from:to:subject:date:message-id:references:in-reply-to: mime-version; bh=mrWFhGNBCch6RIdt1K1PRR5Lg0P+Kv7pEt7mrBmAELc=; b=bRD0bU1AtxfwbNq4ajNMrEjZVI6P0EsqD07h8yKXi+kl2sL4NmjfFSWz pFJX89riUny9U5UviZ4vqRuJBre8sza1dkW8Y8NJJp97DNzoaIrzYZh1e NU8g6s4+TUUOEK7E8opJaaeTdu04MyYYfeHNUGx6cbX4ZWuyuIGXIbky+ sjqTKwnlVa/E1Fom42rkvSTeZN+agkcu7CgRZbNrIvLU89X3PfAoxbTkx JJ9MOE+yxT4q139NB7+0rqBBVGmKh/kWjIRMYePB31x0sqT1E6ht11Xxg m9BBS7zYlBlZNns9w8ga0cpfyQkCK5vKd5CpcKHiSUaqAfpg8MosZIBFE Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10295"; a="258414969" X-IronPort-AV: E=Sophos;i="5.90,205,1643702400"; d="scan'208,217";a="258414969" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Mar 2022 14:20:11 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,205,1643702400"; d="scan'208,217";a="825457224" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by fmsmga005.fm.intel.com with ESMTP; 23 Mar 2022 14:20:10 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Wed, 23 Mar 2022 14:20:10 -0700 Received: from orsmsx602.amr.corp.intel.com (10.22.229.15) by ORSMSX610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21; Wed, 23 Mar 2022 14:20:09 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Wed, 23 Mar 2022 14:20:09 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.173) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.21; Wed, 23 Mar 2022 14:20:09 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kh+qwGXvqMctGiIOF/hhUtQJVWX4A6hsylU/YgmJ9fLPpL1H4V6sI+mmYBSoVxaacldnsLntoamsD6qfQ01EZ6okZlXHFFalQQJZLWh/VblpBl7ZAP5KPZ6UP7BN8PALYPJ1446rEAd4tLYyEVt4AilDJ7Mkd2/6Z1L8qEZqXuaw1/wOV7PKczz2EHnfDGavbrixnK2HWHFz9ayA7C8ImQczBrYU5y9aiE3UWpETng7B5vZoq8r5DCXDa7FUey+NWGUr6mslxetvUblBGSX0663hd8+LgibDTDi4gPnOGGKFupXjjhrEGLUpea5CJIk+5WPzmxNwtGY1kVnFKhSdrg== 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=VDnN19rNHsdQB/X+N7V2T2r6YDI1pfIXq/YcGOrGIYo=; b=nh6vosAFu4yDtiWgtVt+uRIUIzGE+rUzTsTRfh3gjh3U7CdsdrMLgH0mOVBkU36fnTpk8aHxXbdP0NkA3szl3CTCKf1w2t7e2s3MFTI3+q12VgWfbP6imbmyrmjUwg8W9opdOtZA1XhXcuzyhwLmXcYGfohj82B+qQ8O0Cf3tf2xmYAVKP1B8uVBNExZzj3zFT4H9l14mx5Cze39YNSWzGF+k93FgcwcF7nJjBFL/nyLS3xR1+qrApYciNKJqfRvs9srkZWLF5NeGFEQDl/pxOnOq/n2gZziw6kJWxLN4M/YXc5ITWhf+qHibNd/DqApjvmAs5W5n0LqgY2dOC7xRA== 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 BYAPR11MB3622.namprd11.prod.outlook.com (2603:10b6:a03:fe::30) by MWHPR11MB1629.namprd11.prod.outlook.com (2603:10b6:301:d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.16; Wed, 23 Mar 2022 21:20:04 +0000 Received: from BYAPR11MB3622.namprd11.prod.outlook.com ([fe80::b4d1:1ea2:e9c:f4ec]) by BYAPR11MB3622.namprd11.prod.outlook.com ([fe80::b4d1:1ea2:e9c:f4ec%7]) with mapi id 15.20.5081.023; Wed, 23 Mar 2022 21:20:04 +0000 From: "Guo Dong" To: "devel@edk2.groups.io" , "kingsumos@gmail.com" , "Rhodes, Sean" Subject: Re: [edk2-devel] [PATCH 5/5] UefiPayloadPkg: Add support for Firmware Volume Block Protocol Thread-Topic: [edk2-devel] [PATCH 5/5] UefiPayloadPkg: Add support for Firmware Volume Block Protocol Thread-Index: AQHYPQOpVqMjXgVgIkiasvA5zAVnXKzNRs0AgAAFsACAAA0s4IAAC0yAgAAUtgCAAALCkA== Date: Wed, 23 Mar 2022 21:20:04 +0000 Message-ID: References: <6952.1648065135281733577@groups.io> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.401.20 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: 202e9b8e-fdb1-4f88-f4e6-08da0d12e62c x-ms-traffictypediagnostic: MWHPR11MB1629:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: uJ8kt25E2Zv763cpbqpm2SJJIf1glcCLBcfNwK4AkFRPaW8QHAr5om4cBaAIzBmffq+64y1sI/8sB02DzADkIdclaTM0Z9IexDWEtbGmfUdwwo+FKi553r8hYCCX0ybl9aQsXSKxMOhYjtxYjrE+8fXwrqhrcNCJtqRiIkWw9D+QW9jqKvtRcXg+WM+MzT6GUQytRGncOQtXsMDJpFk8i1YtoF2TxUtKqdDQNgHS5K+DEA62o71QKSfN8qMpFvkhfYSoOh+i0z9YhrVcqXA72nB2k2u9VG6QKdQJmMnRpUp7Z/54duuJBEi8AapvhOnDSaGYj4Kgyj0Q0oT+p1j7kuHcFRz8KnYRLom8BcnXJFctJVyaXVK8RXHh+kmDZJ/mrToUNmY9VXZJzcLacMCamzjO4ZMfWMMLBD0HqbtcQNPrkp3fIr7EPsFK328MhBGUPPltvFh4HGymMbNVYY/PnF+5FDx1QelaFYdBH7yrCbSHELTAhXDKxia9TCBrrsLu8QP0Ghhe5/IPXVK8+s4WrkeXAM0EhOoMkxDckISFEPuV7jeeeymQhkdGAxtiKe6pmdiyvX6mobkPVMAENKcx9dok7cZXpZtOdRQiZPw2XlWcgPEtE8RBLM3bhzCQ2CnNRPMJmDjrL7g6CuycQIp+yGDCGAHz8mY4pb5ZVc20YfYUf3BJkt+5YdODlbzbGxJoqXtkRpPkttEM4dh06AlKRBHsLZetzE1RZ5J2/fBQ4f0QGHVmCRMkwCESU6XmJDimSEUa9oQiqdfGlc8dClu5nnIiQRqJ+sMIPioq5yM6dEUYNi1Zhz3OW8j1Bcldk7KO6tZIB11IKfK4k/JPUVQXRw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR11MB3622.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(71200400001)(6506007)(8936002)(122000001)(52536014)(82960400001)(5660300002)(99936003)(38100700002)(2906002)(66946007)(76116006)(9686003)(66476007)(66556008)(7696005)(66446008)(64756008)(8676002)(33656002)(508600001)(53546011)(38070700005)(166002)(110136005)(86362001)(55016003)(76236003)(316002)(186003)(26005)(83380400001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZTI3bU44a0pqTkRxSzMydjFMeVdMZHVqUDIreUh6T3M1V3d2ZVhBNklRUC9N?= =?utf-8?B?MnlabTZCT1g2dnk0QTB3NldJLzJwSllRaDFscXJEOG8yV2JBVzVqblV0MFFI?= =?utf-8?B?eStSbWJFV2w2aFA3RXFBSE9HSnRGUCtPdXNNZFJnSTdNK2I1cEdDZkViRTd4?= =?utf-8?B?dms1UU9oeGc3V3Z4R2lzR216YVNmNWw2WXNoNUhub1I3V1IxS0xMNGcwelVi?= =?utf-8?B?c0I2OUtBR2QvL05SZEZmenhoek1uc2xVU3JqUjZrZ2ZpSDJzcHd6WlpKQ1Ba?= =?utf-8?B?aWZvbTliT0wyNHoxUE8wOGRUekNYWWdQRHZoa2x6Z1N2L3dIc0lnRmpGSHlq?= =?utf-8?B?VWV0UDVFRVJzRUE4UEcyQUt0a2dMUTNTTCtWRHFyWTFyTzdteU5aT0JFbzJM?= =?utf-8?B?MXBPUVQzY2VNcmMrbmRzMWxXMCt1T0JydlJ6aWRHS09tMkxCcXpaZGdZZnlW?= =?utf-8?B?RUl3TVB3ZUs4ZTNNRVRGS2U0S0Y5QVhrQmhpUzFsa1NCSTZHY2JxQk43MXZK?= =?utf-8?B?cXFLU2JoZWxSaUQvZnF3VnVuU003Z01NZU16RVBoWCt5NjdUd0crMmtQSGlX?= =?utf-8?B?THpTWjNMUFYrREt5VlpFZVdSQXAyZ2JUeG1sS2RsNWRNNGs2VHBpeGpCcUNt?= =?utf-8?B?eElKbWdEM01QcmJ6SEhxTEl2NkEwbnVPSmFwelBmc1BBZGRIMERCYjFGdnAw?= =?utf-8?B?eXJMeHVCQ1l5QkJqTWt6OWNuRTJ6TTFqWFpzQ3kzRXh0SzUveDR1RkZqSkE0?= =?utf-8?B?MWZqMDEwU2crTWZBbjBvMXVzTUMvcXU5aXZ0OEdUYWlkdDZHbUxMQU5VdldN?= =?utf-8?B?VmdvajQ2M1BWQ2ROZ3liQnpvOFE2cEhTN3JoamlXUkt5UW9OVDhQVXQ2cThT?= =?utf-8?B?NHB2V1dSdGl1MVB3cmtGWjJrUG9OdW9mZjNwNkFJYVR6Z2xBa2o2RC8xZllM?= =?utf-8?B?ODg2VWJUQS9zdkIzSVYzMEpFMUovdHY1bk9TeTE0UGxQN1F2NlRhNGNKLyti?= =?utf-8?B?TlBYbHJlSUhaWGFBOGt2S2F0aEd1dDBGOG51Um0rL1Q3VU9UM3dwREZpL0hH?= =?utf-8?B?eVlLME5FNHR0bk45VzhqS1lCckpnckYyVjZlWjBobjJWajN6elk1VFNEd0wy?= =?utf-8?B?dDNGbkZSNHZ4SUNkSk5xd3JEVVd0TXVIVEdXNkJNREQ3ZWVXU1NjOTRKSWpB?= =?utf-8?B?QVBoaHV0VWIrWTMxN2tTalhCKzJuNmhiUkkyUjZ6Q3NncTAyc3ZuQ093YzRU?= =?utf-8?B?ZFBxYUpWUkJaR0ozVVE0UXJZTk94SXNCblJla0NiTnVNM1FJczQ2QUdycUlu?= =?utf-8?B?dC8vbVh5a2lHbUE1eXBRNTBVUWd5dFlqVG1sOEp3NEFuWUI3ZDEwVE1XY2tD?= =?utf-8?B?em9LLzIzY0RFUFlwVEs4d2haOW5adC9neWFyaThFQXBKMDh1c05NdjlUcmVv?= =?utf-8?B?bkMwL2w4NW1oNjdpNzk2b3d0M3lQNU1BTURqNVpaaS96UkNUZmMzOWsxbi9l?= =?utf-8?B?UHpHUVhMQmtrRmFnUE1qSW9LRE4xYW5xK3JSc0RZM09YNkU1RGVuekg4SFhB?= =?utf-8?B?SWpYblZwaVlwVDFTV1dQeUdCUHdvS1BCN0pIMG5mV3dmejdpTUJ3Z25nY250?= =?utf-8?B?N2FHZ2o1UkkvcTZrNDZaVEJRUnQrYk13SmdQZ0VabVdWZVdaWGFRazVMbU1K?= =?utf-8?B?MHl5UDBnOS9FcXhoQ2NJQ3V1REVQaFByV01ELzFxcWpDZzJFM0RGM080Vm5V?= =?utf-8?B?ZDRJRmZSRnFGOCtibVJGTUxacEE2VS9JTUlnVjYydU9uRk1HZTcxSDFJbDQy?= =?utf-8?B?TUFCWjN2S25sNG50RW9iR0Izb2N6bldjU2ZGVFlST3BhUkg3d3VCTnhVWTBX?= =?utf-8?B?NTRtWTd3U3h3RjEzUTgrWGtYYnBVTVdHeXFwTVZidUI5d2Y2dmg2SU1wZ2FY?= =?utf-8?Q?cuT89t56ksIzXn/Q7tlk4HhZPLNXXhAx?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BYAPR11MB3622.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 202e9b8e-fdb1-4f88-f4e6-08da0d12e62c X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Mar 2022 21:20:04.7377 (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: 2TrZBw5spNy139YZrZY/Wxrfu/zjYTwPHKkHuMbOmWnfNMgaq1MMEH05rVk14wR1f6rpKcN4dEm6Ts9Pv2tOLw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB1629 Return-Path: guo.dong@intel.com X-OriginatorOrg: intel.com X-Groupsio-MsgNum: 87915 Content-Language: en-US Content-Type: multipart/mixed; boundary="_004_BYAPR11MB36226A9E0D4F66E6F68A0D8E9E189BYAPR11MB3622namp_" --_004_BYAPR11MB36226A9E0D4F66E6F68A0D8E9E189BYAPR11MB3622namp_ Content-Type: multipart/alternative; boundary="_000_BYAPR11MB36226A9E0D4F66E6F68A0D8E9E189BYAPR11MB3622namp_" --_000_BYAPR11MB36226A9E0D4F66E6F68A0D8E9E189BYAPR11MB3622namp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQpJIHRoaW5rIHRoZXNlIHF1ZXN0aW9ucyBjb3VsZCBiZSBhbnN3ZXJlZCBpbiB0aGUgYXR0YWNo ZWQgZW1haWwgd2hpY2ggSSByZXBsaWVkIHRvIFJ1ZG9scGggZm9yIHNpbWlsYXIgcXVlc3Rpb25z Lg0KDQpUaGFua3MsDQpHdW8NCg0KRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVk azIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YgS2luZyBTdW1vDQpTZW50OiBXZWRuZXNkYXksIE1h cmNoIDIzLCAyMDIyIDI6MDYgUE0NClRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgUmhvZGVzLCBT ZWFuIDxzZWFuQHN0YXJsYWJzLnN5c3RlbXM+DQpDYzogRG9uZywgR3VvIDxndW8uZG9uZ0BpbnRl bC5jb20+DQpTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFtQQVRDSCA1LzVdIFVlZmlQYXlsb2Fk UGtnOiBBZGQgc3VwcG9ydCBmb3IgRmlybXdhcmUgVm9sdW1lIEJsb2NrIFByb3RvY29sDQoNCkxv b2tzIGxpa2UgZm9yIEd1bydzIHBhdGNoIFNNTVNUT1JFIGRyaXZlciBpcyBub3QgbmVlZGVkIHNp bmNlIGl0IGltcGxlbWVudHMgYSBTcGlGbGFzaExpYiBmb3IgYWNjZXNzaW5nIHRoZSBTUEkgRmxh c2ggY29udHJvbGxlciAodmlhIGhhcmR3YXJlIHNlcXVlbmNlcikgb2YgSW50ZWwgQ1BVIHRhcmdl dHMuLi4NCkJ1dCB0aGlzIGlzIGZvciBVbml2ZXJzYWwgUGF5bG9hZCBvbmx5IHJpZ2h0PyBJIGd1 ZXNzIGNvcmVib290IHN1cHBvcnRzIG9ubHkgdGhlIG5vbi11bml2ZXJzYWwgbW9kZS4NClRoaXMg c3R1ZmYgd2FzIHRlc3RlZCBvbmx5IGluIFNCTCByaWdodD8NCg0KT24gV2VkLCBNYXIgMjMsIDIw MjIgYXQgNDo1MiBQTSBTZWFuIFJob2RlcyA8c2VhbkBzdGFybGFicy5zeXN0ZW1zPG1haWx0bzpz ZWFuQHN0YXJsYWJzLnN5c3RlbXM+PiB3cm90ZToNCkhleSBHdW8NCg0KVG8gaGF2ZSB0aGUgcGFy c2VsaWIgYW5kIG5vdCBTTU1TVE9SRSBzdXBwb3J0IGlzIGEgYml0IG9mIGEgcGFyYWRveDsgY29y ZWJvb3QgaXNuJ3QgZnVsbHkgZnVuY3Rpb25hbCB3aXRob3V0IG9uZS4gSSB0aGluayBtb3Zpbmcg dGhpcyBhbmQgYW55IHN1YnNlcXVlbnQgcGF0Y2hlcyBpbnRvIGVkazItcGxhdGZvcm1zIHdpbGwg aW5ldml0YWJseSBsZWFkIHRvIGZvcmtzLCB3aGljaCBpc24ndCBiZW5lZmljaWFsIHRvIGFueW9u ZS4NCg0KSXMgdGhlcmUgYW55IG1ldGhvZCAob3IgaWRlYWxseSBleGNlcHRpb24gOykgKSB5b3Ug Y2FuIHN1Z2dlc3QgZm9yIGFsbG93aW5nIGJvb3Rsb2FkZXIgc3BlY2lmaWMgcGF0Y2hlcz8NCg0K TWFueSB0aGFua3MNCg0KU2Vhbg0KDQo= --_000_BYAPR11MB36226A9E0D4F66E6F68A0D8E9E189BYAPR11MB3622namp_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv VFIvUkVDLWh0bWw0MCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IkdlbmVyYXRv ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPg0KPCEtLVtp ZiAhbXNvXT48c3R5bGU+dlw6KiB7YmVoYXZpb3I6dXJsKCNkZWZhdWx0I1ZNTCk7fQ0Kb1w6KiB7 YmVoYXZpb3I6dXJsKCNkZWZhdWx0I1ZNTCk7fQ0Kd1w6KiB7YmVoYXZpb3I6dXJsKCNkZWZhdWx0 I1ZNTCk7fQ0KLnNoYXBlIHtiZWhhdmlvcjp1cmwoI2RlZmF1bHQjVk1MKTt9DQo8L3N0eWxlPjwh W2VuZGlmXS0tPjxzdHlsZT48IS0tDQovKiBGb250IERlZmluaXRpb25zICovDQpAZm9udC1mYWNl DQoJe2ZvbnQtZmFtaWx5OiJDYW1icmlhIE1hdGgiOw0KCXBhbm9zZS0xOjIgNCA1IDMgNSA0IDYg MyAyIDQ7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseTpEZW5nWGlhbjsNCglwYW5vc2UtMToy IDEgNiAwIDMgMSAxIDEgMSAxO30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6Q2FsaWJyaTsN CglwYW5vc2UtMToyIDE1IDUgMiAyIDIgNCAzIDIgNDt9DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFt aWx5OiJcQERlbmdYaWFuIjsNCglwYW5vc2UtMToyIDEgNiAwIDMgMSAxIDEgMSAxO30NCi8qIFN0 eWxlIERlZmluaXRpb25zICovDQpwLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9y bWFsDQoJe21hcmdpbjowaW47DQoJZm9udC1zaXplOjExLjBwdDsNCglmb250LWZhbWlseToiQ2Fs aWJyaSIsc2Fucy1zZXJpZjt9DQphOmxpbmssIHNwYW4uTXNvSHlwZXJsaW5rDQoJe21zby1zdHls ZS1wcmlvcml0eTo5OTsNCgljb2xvcjpibHVlOw0KCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7 fQ0Kc3Bhbi5FbWFpbFN0eWxlMjENCgl7bXNvLXN0eWxlLXR5cGU6cGVyc29uYWwtY29tcG9zZTsN Cglmb250LWZhbWlseToiQ2FsaWJyaSIsc2Fucy1zZXJpZjsNCgljb2xvcjp3aW5kb3d0ZXh0O30N Ci5Nc29DaHBEZWZhdWx0DQoJe21zby1zdHlsZS10eXBlOmV4cG9ydC1vbmx5Ow0KCWZvbnQtZmFt aWx5OiJDYWxpYnJpIixzYW5zLXNlcmlmO30NCkBwYWdlIFdvcmRTZWN0aW9uMQ0KCXtzaXplOjgu NWluIDExLjBpbjsNCgltYXJnaW46MS4waW4gMS4waW4gMS4waW4gMS4waW47fQ0KZGl2LldvcmRT ZWN0aW9uMQ0KCXtwYWdlOldvcmRTZWN0aW9uMTt9DQotLT48L3N0eWxlPjwhLS1baWYgZ3RlIG1z byA5XT48eG1sPg0KPG86c2hhcGVkZWZhdWx0cyB2OmV4dD0iZWRpdCIgc3BpZG1heD0iMTAyNiIg Lz4NCjwveG1sPjwhW2VuZGlmXS0tPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPg0KPG86c2hhcGVs YXlvdXQgdjpleHQ9ImVkaXQiPg0KPG86aWRtYXAgdjpleHQ9ImVkaXQiIGRhdGE9IjEiIC8+DQo8 L286c2hhcGVsYXlvdXQ+PC94bWw+PCFbZW5kaWZdLS0+DQo8L2hlYWQ+DQo8Ym9keSBsYW5nPSJF Ti1VUyIgbGluaz0iYmx1ZSIgdmxpbms9InB1cnBsZSIgc3R5bGU9IndvcmQtd3JhcDpicmVhay13 b3JkIj4NCjxkaXYgY2xhc3M9IldvcmRTZWN0aW9uMSI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48 bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPkkgdGhpbmsgdGhlc2Ug cXVlc3Rpb25zIGNvdWxkIGJlIGFuc3dlcmVkIGluIHRoZSBhdHRhY2hlZCBlbWFpbCB3aGljaCBJ IHJlcGxpZWQgdG8gUnVkb2xwaCBmb3Igc2ltaWxhciBxdWVzdGlvbnMuPG86cD48L286cD48L3A+ DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxwIGNsYXNzPSJN c29Ob3JtYWwiPlRoYW5rcyw8bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPkd1 bzxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48 L3A+DQo8ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItdG9wOnNvbGlkICNFMUUxRTEgMS4w cHQ7cGFkZGluZzozLjBwdCAwaW4gMGluIDBpbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Yj5G cm9tOjwvYj4gZGV2ZWxAZWRrMi5ncm91cHMuaW8gJmx0O2RldmVsQGVkazIuZ3JvdXBzLmlvJmd0 OyA8Yj4NCk9uIEJlaGFsZiBPZiA8L2I+S2luZyBTdW1vPGJyPg0KPGI+U2VudDo8L2I+IFdlZG5l c2RheSwgTWFyY2ggMjMsIDIwMjIgMjowNiBQTTxicj4NCjxiPlRvOjwvYj4gZGV2ZWxAZWRrMi5n cm91cHMuaW87IFJob2RlcywgU2VhbiAmbHQ7c2VhbkBzdGFybGFicy5zeXN0ZW1zJmd0Ozxicj4N CjxiPkNjOjwvYj4gRG9uZywgR3VvICZsdDtndW8uZG9uZ0BpbnRlbC5jb20mZ3Q7PGJyPg0KPGI+ U3ViamVjdDo8L2I+IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIDUvNV0gVWVmaVBheWxvYWRQa2c6 IEFkZCBzdXBwb3J0IGZvciBGaXJtd2FyZSBWb2x1bWUgQmxvY2sgUHJvdG9jb2w8bzpwPjwvbzpw PjwvcD4NCjwvZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+ DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+TG9va3MgbGlrZSBmb3IgR3VvJ3MgcGF0Y2gg U01NU1RPUkUgZHJpdmVyIGlzIG5vdCBuZWVkZWQgc2luY2UgaXQgaW1wbGVtZW50cyBhJm5ic3A7 U3BpRmxhc2hMaWIgZm9yIGFjY2Vzc2luZyB0aGUgU1BJIEZsYXNoIGNvbnRyb2xsZXIgKHZpYSBo YXJkd2FyZSBzZXF1ZW5jZXIpIG9mIEludGVsIENQVSB0YXJnZXRzLi4uPG86cD48L286cD48L3A+ DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+QnV0IHRoaXMgaXMgZm9yIFVuaXZlcnNhbCBQ YXlsb2FkIG9ubHkgcmlnaHQ/IEkgZ3Vlc3MgY29yZWJvb3Qgc3VwcG9ydHMgb25seSB0aGUgbm9u LXVuaXZlcnNhbCBtb2RlLjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCI+VGhpcyBzdHVmZiB3YXMgdGVzdGVkIG9ubHkgaW4gU0JMIHJpZ2h0PzxvOnA+ PC9vOnA+PC9wPg0KPC9kaXY+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5i c3A7PC9vOnA+PC9wPg0KPGRpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5PbiBXZWQs IE1hciAyMywgMjAyMiBhdCA0OjUyIFBNIFNlYW4gUmhvZGVzICZsdDs8YSBocmVmPSJtYWlsdG86 c2VhbkBzdGFybGFicy5zeXN0ZW1zIj5zZWFuQHN0YXJsYWJzLnN5c3RlbXM8L2E+Jmd0OyB3cm90 ZTo8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlcjpub25l O2JvcmRlci1sZWZ0OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzowaW4gMGluIDBpbiA2LjBw dDttYXJnaW4tbGVmdDo0LjhwdDttYXJnaW4tcmlnaHQ6MGluIj4NCjxwIGNsYXNzPSJNc29Ob3Jt YWwiPkhleSBHdW88YnI+DQo8YnI+DQpUbyBoYXZlIHRoZSBwYXJzZWxpYiBhbmQgbm90IFNNTVNU T1JFIHN1cHBvcnQgaXMgYSBiaXQgb2YgYSBwYXJhZG94OyBjb3JlYm9vdCBpc24ndCBmdWxseSBm dW5jdGlvbmFsIHdpdGhvdXQgb25lLiBJIHRoaW5rIG1vdmluZyB0aGlzIGFuZCBhbnkgc3Vic2Vx dWVudCBwYXRjaGVzIGludG8gZWRrMi1wbGF0Zm9ybXMgd2lsbCBpbmV2aXRhYmx5IGxlYWQgdG8g Zm9ya3MsIHdoaWNoIGlzbid0IGJlbmVmaWNpYWwgdG8gYW55b25lLjxicj4NCjxicj4NCklzIHRo ZXJlIGFueSBtZXRob2QgKG9yIGlkZWFsbHkgZXhjZXB0aW9uIDspICkgeW91IGNhbiBzdWdnZXN0 IGZvciBhbGxvd2luZyBib290bG9hZGVyIHNwZWNpZmljIHBhdGNoZXM/PGJyPg0KPGJyPg0KTWFu eSB0aGFua3M8YnI+DQo8YnI+DQpTZWFuIDxvOnA+PC9vOnA+PC9wPg0KPC9ibG9ja3F1b3RlPg0K PC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PC9vOnA+PC9zcGFuPjwvcD4NCjwv ZGl2Pg0KPC9kaXY+DQo8L2JvZHk+DQo8L2h0bWw+DQo= --_000_BYAPR11MB36226A9E0D4F66E6F68A0D8E9E189BYAPR11MB3622namp_-- --_004_BYAPR11MB36226A9E0D4F66E6F68A0D8E9E189BYAPR11MB3622namp_ Content-Type: message/rfc822 Content-Disposition: attachment; creation-date="Wed, 23 Mar 2022 21:20:03 GMT"; modification-date="Wed, 23 Mar 2022 21:20:04 GMT" Received: from CY4PR11MB1895.namprd11.prod.outlook.com (2603:10b6:903:126::7) by BYAPR11MB3622.namprd11.prod.outlook.com with HTTPS; Wed, 23 Mar 2022 19:28:12 +0000 Received: from BN6PR1201CA0005.namprd12.prod.outlook.com (2603:10b6:405:4c::15) by CY4PR11MB1895.namprd11.prod.outlook.com (2603:10b6:903:126::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.17; Wed, 23 Mar 2022 19:28:08 +0000 Received: from BN1NAM02FT044.eop-nam02.prod.protection.outlook.com (2603:10b6:405:4c:cafe::5) by BN6PR1201CA0005.outlook.office365.com (2603:10b6:405:4c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.17 via Frontend Transport; Wed, 23 Mar 2022 19:28:08 +0000 Received: from edgegateway.intel.com (192.55.55.70) by BN1NAM02FT044.mail.protection.outlook.com (10.13.2.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.17 via Frontend Transport; Wed, 23 Mar 2022 19:28:08 +0000 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by edgegateway.intel.com (10.1.192.135) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21; Wed, 23 Mar 2022 12:27:59 -0700 Received: from fmsmsx609.amr.corp.intel.com (10.18.126.89) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Wed, 23 Mar 2022 12:27:58 -0700 Received: from fmsmga006.fm.intel.com (10.253.24.20) by fmsmsx609.amr.corp.intel.com (10.18.126.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Wed, 23 Mar 2022 12:27:58 -0700 Received: from fmsmga103.fm.intel.com ([10.1.193.90]) by fmsmga006-1.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Mar 2022 12:27:57 -0700 Received: from mail02.groups.io ([66.175.222.108]) by mga14.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Mar 2022 12:27:53 -0700 From: "Dong, Guo" To: "devel@edk2.groups.io" , "patrick.rudolph@9elements.com" CC: "Rhodes, Sean" , "Ni, Ray" , "Ma, Maurice" , "You, Benjamin" Subject: Re: [edk2-devel] [PATCH 5/5] UefiPayloadPkg: Add support for Firmware Volume Block Protocol Thread-Topic: [edk2-devel] [PATCH 5/5] UefiPayloadPkg: Add support for Firmware Volume Block Protocol Thread-Index: AQHYPQOpVqMjXgVgIkiasvA5zAVnXKzNRs0AgAAFsACAAA0s4A== Sender: "devel@edk2.groups.io" Date: Wed, 23 Mar 2022 19:27:41 +0000 Message-ID: <16DF192D66911040.2188@groups.io> References: <11ad7629288bc1e0e4f3b61333efe448cd81b5a4.1647853813.git.sean@starlabs.systems> List-Help: List-Subscribe: List-Unsubscribe: In-Reply-To: Reply-To: "devel@edk2.groups.io" , "Dong, Guo" Accept-Language: en-US Content-Language: en-US X-MS-Exchange-Organization-AuthSource: fmsmsx609.amr.corp.intel.com X-MS-Has-Attach: X-Auto-Response-Suppress: All X-MS-Exchange-Organization-Network-Message-Id: e1ba1c04-32f1-466b-e5d7-08da0d0342e3 X-MS-TNEF-Correlator: X-MS-Exchange-Organization-RecordReviewCfmType: 0 x-extloop1: 1 list-id: dkim-signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1648063672; bh=5Zc3t2IgPbJpb2MSMKBL3C6mMJ9/vOEddF2LgiJkPg0=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=FNeP8DmMjRBYmBUMdKDWF1wWe4Y7HX5jWmrGoFu7yz2TH1aGCIWjEG5mILQCY3GFuhp lTSigqrJmWl/fz3x4VGwP7agHKT861tQTqep9eUpM4G8vROw6uPWyJxlr1++xwFrOE7rG 4jTb6V4nX2cTEuAz6eLpmq769GNaRS+7oZQ= x-ironport-av: E=Sophos;i="5.90,204,1643702400"; d="scan'208";a="552612484" x-ironport-anti-spam-filtered: true dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.401.20 received-spf: None (mga14.intel.com: no sender authenticity information available from domain of postmaster@mail02.groups.io) identity=helo; client-ip=66.175.222.108; receiver=mga14.intel.com; envelope-from="bounce+27952+87911+1781375+3887810@groups.io"; x-sender="postmaster@mail02.groups.io"; x-conformance=sidf_compatible.downgrade_pra x-ms-exchange-organization-originalclientipaddress: 10.253.24.20 x-ms-exchange-organization-originalserveripaddress: 10.13.2.155 x-ms-publictraffictype: Email x-forefront-antispam-report: CIP:192.55.55.70;CTRY:US;LANG:en;SCL:-1;SRV:;IPV:NLI;SFV:SKN;H:edgegateway.intel.com;PTR:edgegateway.intel.com;CAT:NONE;SFS:;DIR:INB; authentication-results: spf=softfail (sender IP is 192.55.55.70) smtp.mailfrom=groups.io; dkim=pass (signature was verified) header.d=groups.io;dmarc=fail action=none header.from=intel.com; x-ms-exchange-crosstenant-network-message-id: e1ba1c04-32f1-466b-e5d7-08da0d0342e3 x-ms-exchange-crosstenant-originalarrivaltime: 23 Mar 2022 19:28:08.2610 (UTC) x-ms-traffictypediagnostic: MWHPR1101MB2238:EE_|BN1NAM02FT044:EE_|CY4PR11MB1895:EE_ x-microsoft-antispam: BCL:0; x-ms-exchange-crosstenant-fromentityheader: HybridOnPrem x-ms-exchange-transport-crosstenantheadersstamped: CY4PR11MB1895 x-ms-exchange-crosstenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d x-ms-office365-filtering-correlation-id: e1ba1c04-32f1-466b-e5d7-08da0d0342e3 x-ms-exchange-transport-endtoendlatency: 00:00:04.3873914 x-ms-exchange-processed-by-bccfoldering: 15.20.5081.023 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-organizationheaderspreserved: fmsmsx601.amr.corp.intel.com x-crosspremisesheaderspromoted: BN1NAM02FT044.eop-nam02.prod.protection.outlook.com x-crosspremisesheadersfiltered: BN1NAM02FT044.eop-nam02.prod.protection.outlook.com x-originatororg: intel.onmicrosoft.com x-ms-exchange-crosstenant-originalattributedtenantconnectingip: TenantId=46c98d88-e344-4ed4-8496-4ed7712e255d;Ip=[192.55.55.70];Helo=[edgegateway.intel.com] x-eopattributedmessage: 0 ironport-sdr: h77rm1uufwUPbNNc6IYq/SSAT8IJe2M7wvc/SU78nfE6B4dPUcHp49Th/4Si5CSZi2PO9d/UF5 K0G0VpcyFPVUpMyPvODQtRTC53XiPGwjM= authentication-results-original: mga14.intel.com; spf=None smtp.pra=devel@edk2.groups.io; spf=Pass smtp.mailfrom=bounce+27952+87911+1781375+3887810@groups.io; spf=None smtp.helo=postmaster@mail02.groups.io; dkim=pass (signature verified) header.i=@groups.io x-ipas-result: A0EBAAADdDtih2zer0JaGQEBAQEBAQEBAQEBAQEBAQEBARIBAQEBAQEBAQEBAQFAgUYEAQEBAQELAYF/KBkBZFYsBE+EVYgmiHIDgROPLowiFAyBVxABAQEBAQEBAQEJLAsMBAEBAwSFAAIXhDYCHQcBBDAJDQEBAgEDAQEBAQMCAQIBAQEBAQEDAQEBAgIBAQECAQECBAIBAQEBAhABAQEBDQsJBQgKBx4FPGRoZgZjXAZAUg0BMQ2CNQUCAx8BBm6BCAEBAQEBAQEBAQEBAQEBAQEBAQEWAg1SZgEBAQEDAQIXAQgEDQwBAQQIEBsBBQECAQIDAQEBAQgRBAEBAQICBRMOAgICAQIKIhYCAQUIAgQBDQUFGASCBV4BgxYFCq1Nen8ygQGCCAEBBoE/AYEHhRsJgRAsAYEShhUQgwqECCcQgVVEehuBPIE3BzA+hAcBByAWBw4lgmCCZZcbFQFSDhEBATwcGwcTASUGBRJsAgsIASoXDgMXAgsoBgsGEAgCEpFgHQcCCzCDG41mmzl6NAcDg0mBQQIKiUKUZDODdIFOkT6QS3WWWyCMdZQLAjAYAQyFC4FBIIIWcFCBPg8JgRMJRQECAQINAQICAwECAQICAQECAwEBAgIBAgEBiFKFRAkDFhWGH4EOd4UYXUQxOAIGCwEBAwmOCwEmByuBbgEB x-amp-result: SKIPPED(no attachment in message) x-amp-file-uploaded: False x-ms-exchange-crosstenant-authas: Anonymous x-ms-exchange-crosstenant-authsource: fmsmsx609.amr.corp.intel.com arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YqqPFdEmiMRJYUcly8rLQI4Huy0Ltb+KmS9MnKwNZcJwqQRpYJ93b12r1K68YyDjFBDMInPszdJ8xhQBSWNosooQcRDgKU/5+NlxrqGta5jdgbZkIXQQ+2RaRN1sBRs1rF27V9qrh3cey9S/0ZMyjhvFLbhxfHu0ukK+0/gDBk+cxwe1NhR7zq2TPQJp6oGNffjhUrNodSN2EARAGkBsSdkWQ/9kTus0GQ6z4qU883n6sJwkRZbnWcuRD0yefjEH5a2OHJaPlUUcC0TdDojZrXdoV9n48U6hHbo7i/YKAaE4FSCtn6sFpn+d5k+IwmiQyXroNCmRcJIpPFE7cy4hfA== 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=Awm0eftCfJgc9wFdomcQDTKTMsKeSofLqo7AwO27edI=; b=NpWYWTD9C2Y0M02PLy63aAERm5wxQxpGRTyIFqKtwrSpz46pD/aPP6s2sZIMyBktVk8dvG3HOQwdcRN1dM1MMTlgfF3Ue1vow4aGC+Tm9KFJbhmPCKsZxxz0G3c2gHHXIrn5OGi3LBsdc5ZH+RD4deLcL33F/tXF/gaMwl0xyt+DqUs3DeDvepyDuA2TCi1Rc996PWGbAmNSkrBmmFptJJU31a++t648N1mJg7bjxVTt6QANYDpWy3XiDBUCReUTQ2LFj8mniWJdUSsBAeG4sr30D8UL+r5/kobMAOMl6a22e7vph/Ce943E+q/nfjoBMuWgO7y6Qhoq6Yq4dh0BvA== 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 x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 delivered-to: mailing list devel@edk2.groups.io mailing-list: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io x-ironport-dmarc-check-result: validskip x-received: from BYAPR11MB3622.namprd11.prod.outlook.com ([fe80::b4d1:1ea2:e9c:f4ec]) by BYAPR11MB3622.namprd11.prod.outlook.com ([fe80::b4d1:1ea2:e9c:f4ec%7]) with mapi id 15.20.5081.023; Wed, 23 Mar 2022 19:27:42 +0000 x-gm-message-state: WjcI49IFsOpoImtePostkGfzx1781375AA= x-microsoft-antispam-message-info-original: mnC5iy61hWUzinykFGbWaNAIIPyt1+Lj0u4MRrCzUCPGy1RQNpD4gyNvABgcNB6iuAsq8O+INt3dEE0td8oaUjZNhfopXn1xD2779IbyIzP+Zo6Q9+MOuFjsXRtJQ0zoWvEx2pFCjoRcimovCYIvNhJVFKY03gTLecvjED4jlH9iYeN27JbK17VMG4qgLf+lO1PLjQdc4+GO+2QnPa3L+N2ZWpHWtJ9Q5Gbfl0C4qyIXq5mCidNCGzANYqMIQhBfEeZ3vR5TyRQqNeDwRIsvO3nvA3mlWgzJ6esFqM2WByP5t4m16gUS5h9sa95PKWQeZ+KXrEdudqPoPa3SYgRC06tqvTSXod30fhPdteNC4+tsgKxVmIgFCawcTg2ZlDOLtp5InlNuYt2nG8n+r0Kr4nnNiOkd/Orl3qkRVZSBvqRSti5lXSLc4kRkleNoT6KLsuI6p2wCVx7GhI8w7nWfNoVdNJxOcyHj/v/hx0mraoVChNEQrR0yBKgqRf3E6AMeLCX+ijnN9QzsOfbatJcpxUUmnnU04jj+l4Mbt2fiQDiPV/NNj+tl6FB8x2bcLckcTUQpEkJG/2fuAi8sUEkptO6dbsujePfpRDpDAK3131ImFKwaaetuh6J6REwRyb/B3XvoJNJwX/hstpAfHlUp2hJq0dLjcFkHXt9OZFKkUYKPgjR+IVEgEHFmXcllpJxAJNLDeC2L6wVJNr0iWib6M69vyXUcWA+/uoh3WI3L/+zO+8h/RciHvUtve2FuT+okb8rOTx6Y018KxVno6NVcrVEf8gTHveqkMwGteyqBS+yBccGsKQXDxsTa9bAJcLFO4JyZPkQCkXW3A6fultY2rHbN8o+x7vxEk+A6DqulqoI= x-ms-exchange-transport-crosstenantheadersstripped: BN1NAM02FT044.eop-nam02.prod.protection.outlook.com x-ms-office365-filtering-correlation-id-prvs: 763dde65-b4ee-4a23-3e65-08da0d03331f ironport-hdrordr: A9a23:IE/pg6GYk7T8RzxzpLqF9pLXdLJyesId70hD6qkvc20tTiXIrb HJoB1E726StN9IYgBVpTiBUJPwPU80hqQFy7X5Wo3ScDUO2VHYAb2KiLGS7AEIdBeOhtK1v5 0QJZSWZOeAd2SSyPyKlTVRPb4bsYu6GYqT9LPjJ50Ed3A4V0gY1XYoNu/5KDwzeOGWb6BJQ6 Z0mPA31AZIIk5nP/hTb0NtN9Qr5ee75q4OByR2LiLPxzP+2A9Ag4SKbCRwqy1uIg+nto1Sj1 Qt/TaJm5lL9MvU9vYe7R75031RoraMq+drNYipsIw4Oz/sggGnaMBKQLuZpg04p+mp9RIDjM TMiw1IBbU111rhOkWO5Tf90Qjp1zgjr1X4z0WDvHflqcvlABonFst6g55DeBex0TtngDg86t MT44uqjesNMfryplWm2zEObWA2qqOAmwt7rQfUtQ0CbWJRUs4PkWVVxjIjLH5JJlON1KkXVM 90DM+ZwPpNa1uVYzT4swBUsfSRtzIIb0m7q4E50ab7s0k07RIJqjp9tbRv5UvpLP8GOtB5Dz +oCNUhqFmVI/VmJp6Vq91xDvdfMFa9Ai4k8Vjib2jPBeUCITbAupT36LI66KWjf4EJ1oI7nN DEXElDvWA/dkryAYnWtac7tyzlUSG4R3Dg28te7592tvn1Q6fqKzSKTBQrn9G7q/sSD8XHU7 K4OY5QAfXkMWzycLw5nTHWSt1XMz0TQccVstE0VxaHpd/KMJTjsqjBfPPaNNPWYHYZs6PEcz o+tRTIVYh9BxqQKzXFaTDqKj/QRnA= X-Microsoft-Antispam-Mailbox-Delivery: wl:1;pcwl:1;ucf:1;jmr:0;auth:0;dest:C;OFR:CustomRules;ENG:(910001)(944506458)(944626604)(920097)(810001)(250001)(410001)(930097); X-Microsoft-Antispam-Message-Info: =?utf-8?B?QmVRaklYUWl6bzlXS2pWdUlJNkhuUE9GS1hVMWdoenlaVWh6azRyTm9wVEdS?= =?utf-8?B?bnJZUkhiYjU5VVhiQjhrNTA4cGZiczVTN2hMSzdCdzJpSTR3cnppM3hhOGpY?= =?utf-8?B?MXpLY2t6UW5uMjVKRXZsT2srWERkZURvSEZHWnFGS1B4bnZMVk1FbXd3UG5N?= =?utf-8?B?NHBKS0JoeDYwdVliMmo3TjZ3b1NxTjRiUms5UUwyWnNJTjNWQjh5Tjc5NXo1?= =?utf-8?B?aFZqQkVuVUEvNjN4eEJxWk5qdFl6MzN4NExCRnltTkJwSUlXTXJqY0paVnJi?= =?utf-8?B?RVhJZm5keFZ5bDlzTHdKYjBTUnA5b3BMVU1Fc0lBU28zOSt1ZzBHcGRocU5X?= =?utf-8?B?ZHpzWUIydTNFc2lmczBRSlYzeWpnZVBmUWdINFErd1lPTzQ5UXF3NG83MThS?= =?utf-8?B?VFJ1SmV3SDc0KzNJQ0swL0RrUGMyc0Jwa0Q5T0RFWkFjaTIvRTZNMEtNMElB?= =?utf-8?B?Z1BrZmNRSXZQSGFsemUzRzlNc1ZtM2p6QXdDc0tZb0lMVFVlZWR1T2xDMDlL?= =?utf-8?B?aWlnSFN6OFIybWpjcDY2NTVubU11MDdjT3lob3lPWTAvQ2JERnJWUEdtc1dX?= =?utf-8?B?SFNiUjdWODFMRHZSd3NKZTdIaFBGaHJzbTZVdHp3NE1Wc21BM0ZBQmZmVFBK?= =?utf-8?B?b253UUtSQ1BaSU5tQm5MKy9TTkh0QTNSc0NxVkJ6ME9RRHpiMUtOZnNGaXVJ?= =?utf-8?B?ODlXaDdVa09nMFNQWE42KzJSemdHZEhvbWRNeTVMeUV0ZDNRQ0oxVEhPVGRI?= =?utf-8?B?VlNmL1hqN0JKYmJKOTBOQXdpNGdjOGhubjFwMEVreisyTEw1UUVFNDlVaThY?= =?utf-8?B?UGRJMGRsR0VnRU9hYk13REpxZ2ZPTFFnK0tsQm9qTmtsaWZyRUlxKzRveTZl?= =?utf-8?B?U0RVeGZCTnFuZzltSjZBMkxoSlZhUmg0cU1DMlBpWk1EUDNrTk5yZGIwWHU0?= =?utf-8?B?Wkt2OEZrSGJ1cFFNZjIwQU1iRG4vbkVVZGdaY0pRR2ZDVmNqcmZzZHBaOXNl?= =?utf-8?B?Yy9DQmMvZktiSEpVRGRTSlJOMStNV0U2aE9KRkFnUzRoL3lMalhmNVVZVnIy?= =?utf-8?B?WWxjS0E4NXlBUHJxaStIcXZaOUNrczRpNE9pVUNrNlBkTkZ6Tm4vd2NUbzBQ?= =?utf-8?B?bW9XejVUOTNtTVROTWV5Z004OGFFZ0ZUQi9uNUhKSzMwcmdNd25HYlVRSGM3?= =?utf-8?B?UkxwTlpVdzFOOVFxTmxadW5jOGtLTmUyb3hXM0o3Qlh6aDNmZ3EvWmMrZTl3?= =?utf-8?B?eWtBMHJvZkdJNEt6TGxISlJGcjZXaTZwbSs5MjBzb3dUb09oOHR5U3ppNENn?= =?utf-8?B?Q3lndmxBSW4yMCs1UzM1YjJEQ0J5LzlmcGNvTmdCNFBkdXNxR1hhbTJNMFFM?= =?utf-8?B?NExZRFMwcEtCU1ppTWc4VElMOGx3Z0VOamdjUm5BR1I1enZ5azVTd2NMWkFD?= =?utf-8?B?ZTV3VEhFN3kxOUttNmhoZG9qZkJlZ0tqelFNRXpXTFcvOHd6dUFDbWlZL1VL?= =?utf-8?B?S3J2T2UrT2sxUVBPQm1tQmlyaVZrcFpMZm9NbUFJSjZWWjlkZ0dYNTNUV1hq?= =?utf-8?B?THBMZWxwTFpJMjNnYlhIeFdtaGpvNVNmbXJ5SmJUc2JQRGZwekxUeVlCaWds?= =?utf-8?B?SGFOMFZ1czM0d0RWVDA2Ujd1blgxN2VrVUVhVXBzVmlmWWhxVU1paVgwM21W?= =?utf-8?B?MzJWM3NwVmZrL3NYcjBxbkNreUZuT1o0MzVGYjFKbGNIellwdEFGT0VUaTg0?= =?utf-8?B?Z3Fja3VUWXV0V1gwUDF3cmhEaEFHYWtBV3pvbWlncllJa3RERkI0aEk4REZi?= =?utf-8?B?UEJTaE1QL0RhYTEwQ3llLzlJSjd2ejRibGhNdjk4ZEwyVHhBMkh2RmlhS3pT?= =?utf-8?B?Z2tLZVkzaERRMDZVMFJ6UmJYdGVqdWh0UkZHcVM0Q094VkoxR0tqcE9WVkhv?= =?utf-8?B?NFpzYXhOalhXSmM0ZzkzandXT2JyajRidnlpdVZKd2l3cUh1aVhMRWEzeHpy?= =?utf-8?B?OTZpTnpNMHBtVjJzTTRvaWdpMFVNa2Z6dCs4aEZxV1NleFVaSmVhTlZWVmw5?= =?utf-8?B?V3lPZ2VLK2NCV2g2UGNCNGY5RmNpNURxdHRhK3FoRTBsMlcyZ2pGQXRnN0RB?= =?utf-8?B?LzV0V2pVbkRyZGlmYjVPYjh1MVdRZEtRMEkwYk9pNHQxalRkTTQvOG1OQWxR?= =?utf-8?B?ejVQRUtXK3ZnM0xxVnBUSThOTWpTeEw4a0hiRzdVVWVLM0dwcG55dUdwYkpw?= =?utf-8?B?MGhKQnhyYzBwTHhBVlZUMng3R3B1MlRJeG1ueE9LcVVjYkg5T1MvWHpRZXRt?= =?utf-8?B?QjhyRzlMcE5sVktjcmo1NlFkTTFnZ0swNnBsYVpDdnk5QzBYd0FWdDc0dm03?= =?utf-8?B?ZysxZlRlb21Eb04ySEhSSWNhSmJOTGlrS0oyTzc4QWJCOGZXajFXVjJxaG83?= =?utf-8?B?MXhheEdXTVR1RjdFUlB3MHhJeGN2Ui9mcmRta1l2b2V2UkdDdXlkOEhESDRx?= =?utf-8?B?NHJQbWlicWl4ZEJvNkR5SE9vdUx1VkRGVGwvOGdlS3lzNFBaTWtOT2FhZ1Uz?= =?utf-8?B?Y1lGcUJabjZ5Zm5HOEZVOC9ZWWlxQkU5YTZidUxCV0RsZk4zUll0SlkxK2Q1?= =?utf-8?B?VEwybmVNc1hDTWdyOEJDMkxvb1NHUXdSeVRhcVh4QzIzSzhsWTZ2L0ZCQnpt?= =?utf-8?B?ek5EVS9PUjlzZzBKdS9mMkpIdU5PaWwvY3c9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <5FC157CA0B02EF4AB4691E641E03E1B3@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 DQpIaSBSdWRvbHBoLA0KDQpCeSBteSB1bmRlcnN0YW5kaW5nLCBlZGsyIHJlcG8gaXMgbWFpbmx5 IGZvciB0aGUgbW9kdWxlcyBkZWZpbmVkIGJ5IGluZHVzdHJ5IHN0YW5kYXJkcyAoZS5nLiBVRUZJ IGFuZCBQSSBzcGVjaWZpY2F0aW9ucykuDQpGb3IgdGhlIG1vZHVsZXMgdGhhdCBpcyBzcGVjaWZp YyB0byBhIHZlbmRvciAoZS5nLiBJbnRlbCBQQ0gpLCBvciBhIGJvb3Rsb2FkZXIsIGVkazItcGxh dGZvcm0gd291bGQgYmUgYSBiZXR0ZXIgcGxhY2VzLg0KDQpDdXJyZW50bHkgaW4gdGhlIEVESzIg VWVmaVBheWxvYWRwa2csIGJlc2lkZSB0aGUgUENIIG1vZHVsZXMgSSBtZW50aW9uZWQgYmVmb3Jl LCBvbmx5IFBhcnN0TGliIGlzIGJvb3Rsb2FkZXIgc3BlY2lmaWMuDQpTbyBmb3IgUENIIG1vZHVs ZXMsIEkgYWxyZWFkeSBzdWJtaXR0ZWQgYSBwYXRjaCB0byBtb3ZlIHRvIGVkazItcGxhdGZvcm1z IHJlcG8uDQpGb3IgUGFyc2VMaWIsIGl0IGlzIG5vdCB1c2VkIGluIHVuaXZlcnNhbCBVRUZJIHBh eWxvYWQuIFdpbGwga2VlcCBpdCBhcy1pcyB0byBiZSB1c2VkIGZvciBub24tdW5pdmVyc2FsIFVF RkkgcGF5bG9hZCBmb3IgYmFjay1jb21iYXRhYmxlLg0KSG9wZSB0aGlzIGNvdWxkIGhlbHAuDQoN ClRoYW5rcywNCkd1bw0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogZGV2ZWxA ZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YgUGF0cmlj ayBSdWRvbHBoDQpTZW50OiBXZWRuZXNkYXksIE1hcmNoIDIzLCAyMDIyIDExOjI1IEFNDQpUbzog RG9uZywgR3VvIDxndW8uZG9uZ0BpbnRlbC5jb20+DQpDYzogUmhvZGVzLCBTZWFuIDxzZWFuQHN0 YXJsYWJzLnN5c3RlbXM+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgTmksIFJheSA8cmF5Lm5pQGlu dGVsLmNvbT47IE1hLCBNYXVyaWNlIDxtYXVyaWNlLm1hQGludGVsLmNvbT47IFlvdSwgQmVuamFt aW4gPGJlbmphbWluLnlvdUBpbnRlbC5jb20+DQpTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFtQ QVRDSCA1LzVdIFVlZmlQYXlsb2FkUGtnOiBBZGQgc3VwcG9ydCBmb3IgRmlybXdhcmUgVm9sdW1l IEJsb2NrIFByb3RvY29sDQoNCkhpIEd1bywNCkkgZG9uJ3Qgc2VlIHdoZXJlIGl0J3Mgd3JpdHRl biB0aGF0IFVlZmlQYXlsb2FkUGtnIGlzIGJvb3Rsb2FkZXINCmluZGVwZW5kZW50LiBDYW4geW91 IHBvaW50IG1lIHRvIHRoYXQgZG9jdW1lbnRhdGlvbj8NClJlYWRpbmcgdGhlIEJ1aWxkQW5kSW50 ZWdyYXRpb25JbnN0cnVjdGlvbnMudHh0IEkgdW5kZXJzdGFuZCB0aGF0IGl0DQppcyB2ZXJ5IGJv b3Rsb2FkZXIgc3BlY2lmaWMsIGFzIGl0J3MgIGJhc2ljYWxseSBkZXNpZ25lZCBhcyBhDQpib290 bG9hZGVyIHBheWxvYWQuDQpXaGVyZSBkbyB5b3UgZHJhdyB0aGUgbGluZSBiZXR3ZWVuIHBsYXRm b3JtIGNvZGUgYW5kICJnZW5lcmljIiBwYXlsb2FkIGNvZGU/DQoNClJlZ2FyZHMsDQpQYXRyaWNr IFJ1ZG9scGgNCg0KT24gV2VkLCBNYXIgMjMsIDIwMjIgYXQgNzoxMiBQTSBEb25nLCBHdW8gPGd1 by5kb25nQGludGVsLmNvbT4gd3JvdGU6DQo+DQo+DQo+IEhpIFNlYW4sDQo+IFNNTVNUT1JFIGFu ZCB0aGlzIEZWQiBtb2R1bGUgYXJlIHNwZWNpZmljIGZvciBjb3JlYm9vdCB3aGlsZSBVZWZpUGF5 bG9hZFBrZyBpbiBFZGsyIGlzIHRhcmdldGluZyBwbGF0Zm9ybS9ib290bG9hZGVyIGluZGVwZW5k ZW50Lg0KPiBJIGp1c3Qgc3VibWl0dGVkIGFuICJhZGQgVUVGSSBwYXlsb2FkIHBsYXRmb3JtIEZW IiBwYXRjaCB0byBlZGsyLXBsYXRmb3JtcyByZXBvLCBpbiB0aGlzIHBhdGNoIGl0IG1vdmVzIFBD SCBzcGVjaWZpYyBtb2R1bGVzIGZyb20NCj4gRWRrMiBVZWZpUGF5bG9hZFBrZyB0byBlZGsyLXBs YXRmb3JtcyBQbGF0Zm9ybS9JbnRlbC9QYXlsb2FkUGxhdGZvcm1Qa2cuIE1heWJlIHRoZXNlIGNv cmVib290IHNwZWNpZmljIG1vZHVsZXMgY291bGQgYWxzbyB0YXJnZXQNCj4gdG8gZWRrMi1wbGF0 Zm9ybXMgcmVwbz8NCj4NCj4gVGhhbmtzLA0KPiBHdW8NCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0NCj4gRnJvbTogU2VhbiBSaG9kZXMgPHNlYW5Ac3RhcmxhYnMuc3lzdGVtcz4NCj4gU2Vu dDogTW9uZGF5LCBNYXJjaCAyMSwgMjAyMiAyOjEwIEFNDQo+IFRvOiBkZXZlbEBlZGsyLmdyb3Vw cy5pbw0KPiBDYzogUmhvZGVzLCBTZWFuIDxzZWFuQHN0YXJsYWJzLnN5c3RlbXM+OyBEb25nLCBH dW8gPGd1by5kb25nQGludGVsLmNvbT47IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+OyBNYSwg TWF1cmljZSA8bWF1cmljZS5tYUBpbnRlbC5jb20+OyBZb3UsIEJlbmphbWluIDxiZW5qYW1pbi55 b3VAaW50ZWwuY29tPjsgUGF0cmljayBSdWRvbHBoIDxwYXRyaWNrLnJ1ZG9scGhAOWVsZW1lbnRz LmNvbT4NCj4gU3ViamVjdDogW1BBVENIIDUvNV0gVWVmaVBheWxvYWRQa2c6IEFkZCBzdXBwb3J0 IGZvciBGaXJtd2FyZSBWb2x1bWUgQmxvY2sgUHJvdG9jb2wNCj4NCj4gVGhpcyBhZGRzIHN1cHBv cnQgZm9yIEZWQiBpbiBvcmRlciB0byBzdXBwb3J0IGEgcGxhdGZvcm0gaW5kZXBlbmRlbnQNCj4g YW5kIG5vbi12b2xhdGlsZSB2YXJpYWJsZSBzdG9yZSBvbiBVZWZpUGF5bG9hZFBrZy4gVGhlIHZh cmlhYmxlIHN0b3JlDQo+IG1ha2VzIHVzZSB0aGUgU21tU3RvcmVMaWIgdG8gcHJvdmlkZSBhbiB1 bmF1dGhlbnRpY2VkIHZhcmlhYmxlIHN0b3JlLg0KPg0KPiBTaW5jZSBjb21taXQgYmM3NDRmNTg5 M2ZjNGQ1MzI3NWVkMjZkZDhkOTY4MDExYzZhMDljMSBjb3JlYm9vdCBzdXBwb3J0cw0KPiB0aGUg U01NU1RPUkUgdjIgZmVhdHVyZS4gSXQgaW1wbGVtZW50cyBhIFNNSSBoYW5kbGVyIHRoYXQgaXMg YWJsZSB0bw0KPiB3cml0ZSwgcmVhZCBhbmQgZXJhc2UgcGFnZXMgaW4gdGhlIGJvb3QgbWVkaWEg KFNQSSBmbGFzaCkuDQo+IFRoZSBjb21tdW5pY2F0aW9uIGlzIGRvbmUgdXNpbmcgYSBmaXhlZCBj b21tdW5pY2F0aW9uIGJ1ZmZlciB0aGF0IGlzDQo+IGFsbG9jYXRlZCBpbiBDQk1FTS4gVGhlIGV4 aXN0ZW5jZSBvZiB0aGlzIG9wdGlvbmFsIGZlYXR1cmUgaXMgYWR2ZXJ0aXNlZA0KPiBieSBhIGNv cmVib290IHRhYmxlLg0KPiBXaGVuIHRoZSBTTU1TVE9SRSBmZWF0dXJlIGlzIG5vdCBhdmFpbGFi bGUgdGhlIHZhcmlhYmxlIGVtdWxhdGlvbiBpcyB1c2VkDQo+IGJ5IHNldHRpbmcgUGNkRW11VmFy aWFibGVOdk1vZGVFbmFibGUgdG8gVFJVRS4NCj4NCj4gVGhlIERYRSBjb21wb25lbnQgcHJvdmlk ZXMgcnVudGltZSBzZXJ2aWNlcyBhbmQgdGFrZXMgY2FyZSBvZiB2aXJ0dWFsIHRvDQo+IHBoeXNp Y2FsIG1hcHBpbmcgdGhlIGNvbW11bmljYXRpb24gYnVmZmVycyBiZXR3ZWVuIFNNTSBhbmQgT1Mu DQo+DQo+IFRoZSBjb250ZW50cyBvZiB0aGUgdmFyaWFibGUgc3RvcmUgY2FuIGJlIGFjY2Vzc2Vk IGFuZCBtb2RpZmllZCBieSBhbnkNCj4gcHJpdmlsZWRnZWQgYXBwbGljYXRpb24uIEFzIGF1dGhl bnRpY2F0aW9uIGlzIGRvbmUgYnkgcnVudGltZSBzZXJ2aWNlcw0KPiBvbmx5IHRoZSBzdG9yZSBz aG91bGRuJ3QgYmUgdXNlZCB0byBzdG9yZSBhdXRoZW50aWNhdGVkIHZhcmlhYmxlcy4NCj4NCj4g VGVzdGVkIG9uIExpbnV4IGFuZCBXaW5kb3dzIDEwIG9uIHJlYWwgaGFyZHdhcmUuDQo+IEN1cnJl bnRseSB0aGlzIGNhbm5vdCBiZSB0ZXN0ZWQgb24gY29yZWJvb3QgYW5kIHFlbXUgYXMgaXQgZG9l c24ndCBzdXBwb3J0DQo+IHRoZSBTTU1TVE9SRSBvbiBxZW11Lg0KPg0KPiBDYzogR3VvIERvbmcg PGd1by5kb25nQGludGVsLmNvbT4NCj4gQ2M6IFJheSBOaSA8cmF5Lm5pQGludGVsLmNvbT4NCj4g Q2M6IE1hdXJpY2UgTWEgPG1hdXJpY2UubWFAaW50ZWwuY29tPg0KPiBDYzogQmVuamFtaW4gWW91 IDxiZW5qYW1pbi55b3VAaW50ZWwuY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIFJ1ZG9s cGggPHBhdHJpY2sucnVkb2xwaEA5ZWxlbWVudHMuY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBTZWFu IFJob2RlcyA8c2VhbkBzdGFybGFicy5zeXN0ZW1zPg0KPiAtLS0NCj4gIC4uLi9TbW1TdG9yZUZ2 Yi9TbW1TdG9yZUZ2YlJ1bnRpbWUuYyAgICAgICAgICB8IDI4MiArKysrKysNCj4gIC4uLi9TbW1T dG9yZUZ2Yi9TbW1TdG9yZUZ2YlJ1bnRpbWUuaCAgICAgICAgICB8IDExMSArKysNCj4gIC4uLi9T bW1TdG9yZUZ2Yi9TbW1TdG9yZUZ2YlJ1bnRpbWVEeGUuYyAgICAgICB8IDg0OSArKysrKysrKysr KysrKysrKysNCj4gIC4uLi9TbW1TdG9yZUZ2Yi9TbW1TdG9yZUZ2YlJ1bnRpbWVEeGUuaW5mICAg ICB8ICA2NiArKw0KPiAgVWVmaVBheWxvYWRQa2cvVWVmaVBheWxvYWRQa2cuZHNjICAgICAgICAg ICAgIHwgIDI0ICstDQo+ICBVZWZpUGF5bG9hZFBrZy9VZWZpUGF5bG9hZFBrZy5mZGYgICAgICAg ICAgICAgfCAgIDQgKw0KPiAgNiBmaWxlcyBjaGFuZ2VkLCAxMzMwIGluc2VydGlvbnMoKyksIDYg ZGVsZXRpb25zKC0pDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgVWVmaVBheWxvYWRQa2cvU21tU3Rv cmVGdmIvU21tU3RvcmVGdmJSdW50aW1lLmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBVZWZpUGF5 bG9hZFBrZy9TbW1TdG9yZUZ2Yi9TbW1TdG9yZUZ2YlJ1bnRpbWUuaA0KPiAgY3JlYXRlIG1vZGUg MTAwNjQ0IFVlZmlQYXlsb2FkUGtnL1NtbVN0b3JlRnZiL1NtbVN0b3JlRnZiUnVudGltZUR4ZS5j DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgVWVmaVBheWxvYWRQa2cvU21tU3RvcmVGdmIvU21tU3Rv cmVGdmJSdW50aW1lRHhlLmluZg0KPg0KPiBkaWZmIC0tZ2l0IGEvVWVmaVBheWxvYWRQa2cvU21t U3RvcmVGdmIvU21tU3RvcmVGdmJSdW50aW1lLmMgYi9VZWZpUGF5bG9hZFBrZy9TbW1TdG9yZUZ2 Yi9TbW1TdG9yZUZ2YlJ1bnRpbWUuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAw MDAwMDAwMDAwLi4wOGQ1YzQwOGZiDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvVWVmaVBheWxv YWRQa2cvU21tU3RvcmVGdmIvU21tU3RvcmVGdmJSdW50aW1lLmMNCj4gQEAgLTAsMCArMSwyODIg QEANCj4gKy8qKiBAZmlsZSAgU21tU3RvcmVGdmJSdW50aW1lLmMNCj4NCj4gKw0KPg0KPiArICBD b3B5cmlnaHQgKGMpIDIwMjIsIDllbGVtZW50cyBHbWJIPEJSPg0KPg0KPiArDQo+DQo+ICsgIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+DQo+ICsNCj4NCj4g KyoqLw0KPg0KPiArDQo+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+DQo+ICsj aW5jbHVkZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+DQo+ICsjaW5jbHVkZSA8TGlicmFy eS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+DQo+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9EeGVTZXJ2 aWNlc1RhYmxlTGliLmg+DQo+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9EZXZpY2VQYXRoTGliLmg+ DQo+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCj4N Cj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1BjZExpYi5oPg0KPg0KPiArI2luY2x1ZGUgPExpYnJhcnkv U21tU3RvcmVMaWIuaD4NCj4NCj4gKw0KPg0KPiArI2luY2x1ZGUgIlNtbVN0b3JlRnZiUnVudGlt ZS5oIg0KPg0KPiArDQo+DQo+ICtTVEFUSUMgRUZJX0VWRU5UICBtU21tU3RvcmVWaXJ0dWFsQWRk ckNoYW5nZUV2ZW50Ow0KPg0KPiArDQo+DQo+ICsvLw0KPg0KPiArLy8gR2xvYmFsIHZhcmlhYmxl IGRlY2xhcmF0aW9ucw0KPg0KPiArLy8NCj4NCj4gK1NNTVNUT1JFX0lOU1RBTkNFICAqbVNtbVN0 b3JlSW5zdGFuY2U7DQo+DQo+ICsNCj4NCj4gK1NNTVNUT1JFX0lOU1RBTkNFICBtU21tU3RvcmVJ bnN0YW5jZVRlbXBsYXRlID0gew0KPg0KPiArICBTTU1TVE9SRV9TSUdOQVRVUkUsIC8vIFNpZ25h dHVyZQ0KPg0KPiArICBOVUxMLCAgICAgICAgICAgICAgIC8vIEhhbmRsZSAuLi4gTkVFRCBUTyBC RSBGSUxMRUQNCj4NCj4gKyAgew0KPg0KPiArICAgIEZ2YkdldEF0dHJpYnV0ZXMsICAgICAgLy8g R2V0QXR0cmlidXRlcw0KPg0KPiArICAgIEZ2YlNldEF0dHJpYnV0ZXMsICAgICAgLy8gU2V0QXR0 cmlidXRlcw0KPg0KPiArICAgIEZ2YkdldFBoeXNpY2FsQWRkcmVzcywgLy8gR2V0UGh5c2ljYWxB ZGRyZXNzDQo+DQo+ICsgICAgRnZiR2V0QmxvY2tTaXplLCAgICAgICAvLyBHZXRCbG9ja1NpemUN Cj4NCj4gKyAgICBGdmJSZWFkLCAgICAgICAgICAgICAgIC8vIFJlYWQNCj4NCj4gKyAgICBGdmJX cml0ZSwgICAgICAgICAgICAgIC8vIFdyaXRlDQo+DQo+ICsgICAgRnZiRXJhc2VCbG9ja3MsICAg ICAgICAvLyBFcmFzZUJsb2Nrcw0KPg0KPiArICAgIE5VTEwsICAgICAgICAgICAgICAgICAgLy8g UGFyZW50SGFuZGxlDQo+DQo+ICsgIH0sIC8vICBGdmJQcm90b2Njb2wNCj4NCj4gKyAgMCwgLy8g QmxvY2tTaXplIC4uLiBORUVEIFRPIEJFIEZJTExFRA0KPg0KPiArICAwLCAvLyBMYXN0QmxvY2sg Li4uIE5FRUQgVE8gQkUgRklMTEVEDQo+DQo+ICsgIDAsIC8vIE1taW9BZGRyZXNzIC4uLiBORUVE IFRPIEJFIEZJTExFRA0KPg0KPiArICB7DQo+DQo+ICsgICAgew0KPg0KPiArICAgICAgew0KPg0K PiArICAgICAgICBIQVJEV0FSRV9ERVZJQ0VfUEFUSCwNCj4NCj4gKyAgICAgICAgSFdfTUVNTUFQ X0RQLA0KPg0KPiArICAgICAgICB7DQo+DQo+ICsgICAgICAgICAgKFVJTlQ4KShzaXplb2YgKE1F TU1BUF9ERVZJQ0VfUEFUSCkpLA0KPg0KPiArICAgICAgICAgIChVSU5UOCkoc2l6ZW9mIChNRU1N QVBfREVWSUNFX1BBVEgpID4+IDgpDQo+DQo+ICsgICAgICAgIH0NCj4NCj4gKyAgICAgIH0sDQo+ DQo+ICsgICAgICBFZmlNZW1vcnlNYXBwZWRJTywNCj4NCj4gKyAgICAgIChFRklfUEhZU0lDQUxf QUREUkVTUykwLCAvLyBORUVEIFRPIEJFIEZJTExFRA0KPg0KPiArICAgICAgKEVGSV9QSFlTSUNB TF9BRERSRVNTKTAsIC8vIE5FRUQgVE8gQkUgRklMTEVEDQo+DQo+ICsgICAgfSwNCj4NCj4gKyAg ICB7DQo+DQo+ICsgICAgICBFTkRfREVWSUNFX1BBVEhfVFlQRSwNCj4NCj4gKyAgICAgIEVORF9F TlRJUkVfREVWSUNFX1BBVEhfU1VCVFlQRSwNCj4NCj4gKyAgICAgIHsNCj4NCj4gKyAgICAgICAg RU5EX0RFVklDRV9QQVRIX0xFTkdUSCwNCj4NCj4gKyAgICAgICAgMA0KPg0KPiArICAgICAgfQ0K Pg0KPiArICAgIH0NCj4NCj4gKyAgfSAvLyBEZXZpY2VQYXRoDQo+DQo+ICt9Ow0KPg0KPiArDQo+ DQo+ICsvKioNCj4NCj4gKyAgSW5pdGlhbGl6ZSB0aGUgU21tU3RvcmUgaW5zdGFuY2UuDQo+DQo+ ICsNCj4NCj4gKw0KPg0KPiArICBAcGFyYW1baW5dICAgICAgRnZCYXNlICAgICAgICAgVGhlIHBo eXNpY2FsIE1NSU8gYmFzZSBhZGRyZXNzIG9mIHRoZSBGViBjb250YWluaW5nDQo+DQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdmFyaWFibGUgc3RvcmUuDQo+DQo+ICsN Cj4NCj4gKyAgQHBhcmFtW2luXSAgICAgIE51bWJlcm9mQmxvY2tzIE51bWJlciBvZiBibG9ja3Mg d2l0aGluIHRoZSBGVi4NCj4NCj4gKyAgQHBhcmFtW2luXSAgICAgIEJsb2NrU2l6ZSAgICAgIFRo ZSBzaXplIGluIGJ5dGVzIG9mIG9uZSBibG9jayB3aXRoaW4gdGhlIEZWLg0KPg0KPiArICBAcGFy YW1baW4sIG91dF0gSW5zdGFuY2UgICAgICAgVGhlIFNtbVN0b3JlIGluc3RhY2UgdG8gaW5pdGlh bGl6ZQ0KPg0KPiArDQo+DQo+ICsqKi8NCj4NCj4gK1NUQVRJQw0KPg0KPiArRUZJX1NUQVRVUw0K Pg0KPiArU21tU3RvcmVJbml0SW5zdGFuY2UgKA0KPg0KPiArICBJTiBFRklfUEhZU0lDQUxfQURE UkVTUyAgIEZ2QmFzZSwNCj4NCj4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICBOdW1iZXJv ZkJsb2NrcywNCj4NCj4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICBCbG9ja1NpemUsDQo+ DQo+ICsgIElOIE9VVCBTTU1TVE9SRV9JTlNUQU5DRSAgKkluc3RhbmNlDQo+DQo+ICsgICkNCj4N Cj4gK3sNCj4NCj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICBTdGF0dXM7DQo+DQo+ICsgIEZW X01FTU1BUF9ERVZJQ0VfUEFUSCAgKkZ2RGV2aWNlUGF0aDsNCj4NCj4gKw0KPg0KPiArICBBU1NF UlQgKEluc3RhbmNlICE9IE5VTEwpOw0KPg0KPiArDQo+DQo+ICsgIEluc3RhbmNlLT5CbG9ja1Np emUgICA9IEJsb2NrU2l6ZTsNCj4NCj4gKyAgSW5zdGFuY2UtPkxhc3RCbG9jayAgID0gTnVtYmVy b2ZCbG9ja3MgLSAxOw0KPg0KPiArICBJbnN0YW5jZS0+TW1pb0FkZHJlc3MgPSBGdkJhc2U7DQo+ DQo+ICsNCj4NCj4gKyAgRnZEZXZpY2VQYXRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA9ICZJbnN0YW5jZS0+RGV2aWNlUGF0aDsNCj4NCj4gKyAgRnZEZXZpY2VQYXRoLT5NZW1NYXBE ZXZQYXRoLlN0YXJ0aW5nQWRkcmVzcyA9IEZ2QmFzZTsNCj4NCj4gKyAgRnZEZXZpY2VQYXRoLT5N ZW1NYXBEZXZQYXRoLkVuZGluZ0FkZHJlc3MgICA9IEZ2QmFzZSArIEJsb2NrU2l6ZSAqIE51bWJl cm9mQmxvY2tzIC0gMTsNCj4NCj4gKw0KPg0KPiArICBTdGF0dXMgPSBGdmJJbml0aWFsaXplIChJ bnN0YW5jZSk7DQo+DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4NCj4gKyAgICBy ZXR1cm4gU3RhdHVzOw0KPg0KPiArICB9DQo+DQo+ICsNCj4NCj4gKyAgU3RhdHVzID0gZ0JTLT5J bnN0YWxsTXVsdGlwbGVQcm90b2NvbEludGVyZmFjZXMgKA0KPg0KPiArICAgICAgICAgICAgICAg ICAgJkluc3RhbmNlLT5IYW5kbGUsDQo+DQo+ICsgICAgICAgICAgICAgICAgICAmZ0VmaURldmlj ZVBhdGhQcm90b2NvbEd1aWQsDQo+DQo+ICsgICAgICAgICAgICAgICAgICAmSW5zdGFuY2UtPkRl dmljZVBhdGgsDQo+DQo+ICsgICAgICAgICAgICAgICAgICAmZ0VmaUZpcm13YXJlVm9sdW1lQmxv Y2tQcm90b2NvbEd1aWQsDQo+DQo+ICsgICAgICAgICAgICAgICAgICAmSW5zdGFuY2UtPkZ2YlBy b3RvY29sLA0KPg0KPiArICAgICAgICAgICAgICAgICAgTlVMTA0KPg0KPiArICAgICAgICAgICAg ICAgICAgKTsNCj4NCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPg0KPiArICAgIHJl dHVybiBTdGF0dXM7DQo+DQo+ICsgIH0NCj4NCj4gKw0KPg0KPiArICBERUJVRyAoKERFQlVHX0lO Rk8sICIlYTogQ3JlYXRlZCBhIG5ldyBpbnN0YW5jZVxuIiwgX19GVU5DVElPTl9fKSk7DQo+DQo+ ICsNCj4NCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4NCj4gK30NCj4NCj4gKw0KPg0KPiArLyoqDQo+ DQo+ICsgIEZpeHVwIGludGVybmFsIGRhdGEgc28gdGhhdCBFRkkgY2FuIGJlIGNhbGwgaW4gdmly dHVhbCBtb2RlLg0KPg0KPiArICBDYWxsIHRoZSBwYXNzZWQgaW4gQ2hpbGQgTm90aWZ5IGV2ZW50 IGFuZCBjb252ZXJ0IGFueSBwb2ludGVycyBpbg0KPg0KPiArICBsaWIgdG8gdmlydHVhbCBtb2Rl Lg0KPg0KPiArDQo+DQo+ICsgIEBwYXJhbVtpbl0gICAgRXZlbnQgICBUaGUgRXZlbnQgdGhhdCBp cyBiZWluZyBwcm9jZXNzZWQNCj4NCj4gKyAgQHBhcmFtW2luXSAgICBDb250ZXh0IEV2ZW50IENv bnRleHQNCj4NCj4gKyoqLw0KPg0KPiArU1RBVElDDQo+DQo+ICtWT0lEDQo+DQo+ICtFRklBUEkN Cj4NCj4gK1NtbVN0b3JlVmlydHVhbE5vdGlmeUV2ZW50ICgNCj4NCj4gKyAgSU4gRUZJX0VWRU5U ICBFdmVudCwNCj4NCj4gKyAgSU4gVk9JRCAgICAgICAqQ29udGV4dA0KPg0KPiArICApDQo+DQo+ ICt7DQo+DQo+ICsgIC8vIENvbnZlcnQgRnZiDQo+DQo+ICsgIEVmaUNvbnZlcnRQb2ludGVyICgw eDAsIChWT0lEICoqKSZtU21tU3RvcmVJbnN0YW5jZS0+RnZiUHJvdG9jb2wuRXJhc2VCbG9ja3Mp Ow0KPg0KPiArICBFZmlDb252ZXJ0UG9pbnRlciAoMHgwLCAoVk9JRCAqKikmbVNtbVN0b3JlSW5z dGFuY2UtPkZ2YlByb3RvY29sLkdldEF0dHJpYnV0ZXMpOw0KPg0KPiArICBFZmlDb252ZXJ0UG9p bnRlciAoMHgwLCAoVk9JRCAqKikmbVNtbVN0b3JlSW5zdGFuY2UtPkZ2YlByb3RvY29sLkdldEJs b2NrU2l6ZSk7DQo+DQo+ICsgIEVmaUNvbnZlcnRQb2ludGVyICgweDAsIChWT0lEICoqKSZtU21t U3RvcmVJbnN0YW5jZS0+RnZiUHJvdG9jb2wuR2V0UGh5c2ljYWxBZGRyZXNzKTsNCj4NCj4gKyAg RWZpQ29udmVydFBvaW50ZXIgKDB4MCwgKFZPSUQgKiopJm1TbW1TdG9yZUluc3RhbmNlLT5GdmJQ cm90b2NvbC5SZWFkKTsNCj4NCj4gKyAgRWZpQ29udmVydFBvaW50ZXIgKDB4MCwgKFZPSUQgKiop Jm1TbW1TdG9yZUluc3RhbmNlLT5GdmJQcm90b2NvbC5TZXRBdHRyaWJ1dGVzKTsNCj4NCj4gKyAg RWZpQ29udmVydFBvaW50ZXIgKDB4MCwgKFZPSUQgKiopJm1TbW1TdG9yZUluc3RhbmNlLT5GdmJQ cm90b2NvbC5Xcml0ZSk7DQo+DQo+ICsgIEVmaUNvbnZlcnRQb2ludGVyICgweDAsIChWT0lEICoq KSZtU21tU3RvcmVJbnN0YW5jZS0+TW1pb0FkZHJlc3MpOw0KPg0KPiArICBFZmlDb252ZXJ0UG9p bnRlciAoMHgwLCAoVk9JRCAqKikmbVNtbVN0b3JlSW5zdGFuY2UpOw0KPg0KPiArDQo+DQo+ICsg IHJldHVybjsNCj4NCj4gK30NCj4NCj4gKw0KPg0KPiArLyoqDQo+DQo+ICsgIFRoZSB1c2VyIEVu dHJ5IFBvaW50IGZvciBtb2R1bGUgU21tU3RvcmVGdmJSdW50aW1lRHhlLiBUaGUgdXNlciBjb2Rl IHN0YXJ0cyB3aXRoIHRoaXMgZnVuY3Rpb24uDQo+DQo+ICsNCj4NCj4gKyAgQHBhcmFtW2luXSBJ bWFnZUhhbmRsZSAgICBUaGUgZmlybXdhcmUgYWxsb2NhdGVkIGhhbmRsZSBmb3IgdGhlIEVGSSBp bWFnZS4NCj4NCj4gKyAgQHBhcmFtW2luXSBTeXN0ZW1UYWJsZSAgICBBIHBvaW50ZXIgdG8gdGhl IEVGSSBTeXN0ZW0gVGFibGUuDQo+DQo+ICsNCj4NCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICBUaGUgZW50cnkgcG9pbnQgaXMgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5Lg0KPg0KPiArICBA cmV0dmFsIG90aGVyICAgICAgICAgICAgIFNvbWUgZXJyb3Igb2NjdXJzIHdoZW4gZXhlY3V0aW5n IHRoaXMgZW50cnkgcG9pbnQuDQo+DQo+ICsNCj4NCj4gKyoqLw0KPg0KPiArRUZJX1NUQVRVUw0K Pg0KPiArRUZJQVBJDQo+DQo+ICtTbW1TdG9yZUluaXRpYWxpemUgKA0KPg0KPiArICBJTiBFRklf SEFORExFICAgICAgICBJbWFnZUhhbmRsZSwNCj4NCj4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSAg KlN5c3RlbVRhYmxlDQo+DQo+ICsgICkNCj4NCj4gK3sNCj4NCj4gKyAgRUZJX1NUQVRVUyAgICAg ICAgICAgIFN0YXR1czsNCj4NCj4gKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgIE1taW9BZGRyZXNz Ow0KPg0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgQmxvY2tTaXplOw0KPg0KPiArICBVSU5U TiAgICAgICAgICAgICAgICAgQmxvY2tDb3VudDsNCj4NCj4gKyAgVUlOVDMyICAgICAgICAgICAg ICAgIE52U3RvcmFnZUJhc2U7DQo+DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICBOdlN0b3Jh Z2VTaXplOw0KPg0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgTnZWYXJpYWJsZVNpemU7DQo+ DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICBGdHdXb3JraW5nU2l6ZTsNCj4NCj4gKyAgVUlO VDMyICAgICAgICAgICAgICAgIEZ0d1NwYXJlU2l6ZTsNCj4NCj4gKw0KPg0KPiArICBTdGF0dXMg PSBTbW1TdG9yZUxpYkluaXRpYWxpemUgKCk7DQo+DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsNCj4NCj4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEZhaWxlZCB0byBpbml0 aWFsaXplIFNtbVN0b3JlTGliXG4iLCBfX0ZVTkNUSU9OX18pKTsNCj4NCj4gKyAgICByZXR1cm4g U3RhdHVzOw0KPg0KPiArICB9DQo+DQo+ICsNCj4NCj4gKyAgU3RhdHVzID0gU21tU3RvcmVMaWJH ZXRNbWlvQWRkcmVzcyAoJk1taW9BZGRyZXNzKTsNCj4NCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KPg0KPiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogRmFpbGVkIHRvIGdl dCBTbW1TdG9yZSBNTUlPIGFkZHJlc3NcbiIsIF9fRlVOQ1RJT05fXykpOw0KPg0KPiArICAgIFNt bVN0b3JlTGliRGVpbml0aWFsaXplICgpOw0KPg0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+DQo+ ICsgIH0NCj4NCj4gKw0KPg0KPiArICBTdGF0dXMgPSBTbW1TdG9yZUxpYkdldE51bUJsb2NrcyAo JkJsb2NrQ291bnQpOw0KPg0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+DQo+ICsg ICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBGYWlsZWQgdG8gZ2V0IFNtbVN0b3JlIE5vLiBi bG9ja3NcbiIsIF9fRlVOQ1RJT05fXykpOw0KPg0KPiArICAgIFNtbVN0b3JlTGliRGVpbml0aWFs aXplICgpOw0KPg0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+DQo+ICsgIH0NCj4NCj4gKw0KPg0K PiArICBTdGF0dXMgPSBTbW1TdG9yZUxpYkdldEJsb2NrU2l6ZSAoJkJsb2NrU2l6ZSk7DQo+DQo+ ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4NCj4gKyAgICBERUJVRyAoKERFQlVHX0VS Uk9SLCAiJWE6IEZhaWxlZCB0byBnZXQgU21tU3RvcmUgYmxvY2sgc2l6ZVxuIiwgX19GVU5DVElP Tl9fKSk7DQo+DQo+ICsgICAgU21tU3RvcmVMaWJEZWluaXRpYWxpemUgKCk7DQo+DQo+ICsgICAg cmV0dXJuIFN0YXR1czsNCj4NCj4gKyAgfQ0KPg0KPiArDQo+DQo+ICsgIE52U3RvcmFnZVNpemUg PSBCbG9ja0NvdW50ICogQmxvY2tTaXplOw0KPg0KPiArICBOdlN0b3JhZ2VCYXNlID0gTW1pb0Fk ZHJlc3M7DQo+DQo+ICsNCj4NCj4gKyAgRnR3U3BhcmVTaXplICAgPSAoQmxvY2tDb3VudCAvIDIp ICogQmxvY2tTaXplOw0KPg0KPiArICBGdHdXb3JraW5nU2l6ZSA9IEJsb2NrU2l6ZTsNCj4NCj4g KyAgTnZWYXJpYWJsZVNpemUgPSBOdlN0b3JhZ2VTaXplIC0gRnR3U3BhcmVTaXplIC0gRnR3V29y a2luZ1NpemU7DQo+DQo+ICsgIERFQlVHICgoREVCVUdfSU5GTywgIk52U3RvcmFnZUJhc2U6MHgl eCwgTnZTdG9yYWdlU2l6ZToweCV4XG4iLCBOdlN0b3JhZ2VCYXNlLCBOdlN0b3JhZ2VTaXplKSk7 DQo+DQo+ICsNCj4NCj4gKyAgaWYgKE52VmFyaWFibGVTaXplID49IDB4ODAwMDAwMDApIHsNCj4N Cj4gKyAgICBTbW1TdG9yZUxpYkRlaW5pdGlhbGl6ZSAoKTsNCj4NCj4gKyAgICByZXR1cm4gRUZJ X0lOVkFMSURfUEFSQU1FVEVSOw0KPg0KPiArICB9DQo+DQo+ICsNCj4NCj4gKyAgU3RhdHVzID0g UGNkU2V0MzJTIChQY2RGbGFzaE52U3RvcmFnZVZhcmlhYmxlU2l6ZSwgTnZWYXJpYWJsZVNpemUp Ow0KPg0KPiArICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPg0KPiArICBTdGF0dXMgPSBQ Y2RTZXQzMlMgKFBjZEZsYXNoTnZTdG9yYWdlVmFyaWFibGVCYXNlLCBOdlN0b3JhZ2VCYXNlKTsN Cj4NCj4gKyAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4NCj4gKyAgU3RhdHVzID0gUGNk U2V0NjRTIChQY2RGbGFzaE52U3RvcmFnZVZhcmlhYmxlQmFzZTY0LCBOdlN0b3JhZ2VCYXNlKTsN Cj4NCj4gKyAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4NCj4gKw0KPg0KPiArICBTdGF0 dXMgPSBQY2RTZXQzMlMgKFBjZEZsYXNoTnZTdG9yYWdlRnR3V29ya2luZ1NpemUsIEZ0d1dvcmtp bmdTaXplKTsNCj4NCj4gKyAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4NCj4gKyAgU3Rh dHVzID0gUGNkU2V0MzJTIChQY2RGbGFzaE52U3RvcmFnZUZ0d1dvcmtpbmdCYXNlLCBOdlN0b3Jh Z2VCYXNlICsgTnZWYXJpYWJsZVNpemUpOw0KPg0KPiArICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0 dXMpOw0KPg0KPiArICBTdGF0dXMgPSBQY2RTZXQ2NFMgKFBjZEZsYXNoTnZTdG9yYWdlRnR3V29y a2luZ0Jhc2U2NCwgTnZTdG9yYWdlQmFzZSArIE52VmFyaWFibGVTaXplKTsNCj4NCj4gKyAgQVNT RVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4NCj4gKw0KPg0KPiArICBTdGF0dXMgPSBQY2RTZXQz MlMgKFBjZEZsYXNoTnZTdG9yYWdlRnR3U3BhcmVTaXplLCBGdHdTcGFyZVNpemUpOw0KPg0KPiAr ICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPg0KPiArICBTdGF0dXMgPSBQY2RTZXQzMlMg KFBjZEZsYXNoTnZTdG9yYWdlRnR3U3BhcmVCYXNlLCBOdlN0b3JhZ2VCYXNlICsgTnZWYXJpYWJs ZVNpemUgKyBGdHdXb3JraW5nU2l6ZSk7DQo+DQo+ICsgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1 cyk7DQo+DQo+ICsgIFN0YXR1cyA9IFBjZFNldDY0UyAoUGNkRmxhc2hOdlN0b3JhZ2VGdHdTcGFy ZUJhc2U2NCwgTnZTdG9yYWdlQmFzZSArIE52VmFyaWFibGVTaXplICsgRnR3V29ya2luZ1NpemUp Ow0KPg0KPiArICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPg0KPiArDQo+DQo+ICsgIG1T bW1TdG9yZUluc3RhbmNlID0gQWxsb2NhdGVSdW50aW1lQ29weVBvb2wgKHNpemVvZiAoU01NU1RP UkVfSU5TVEFOQ0UpLCAmbVNtbVN0b3JlSW5zdGFuY2VUZW1wbGF0ZSk7DQo+DQo+ICsgIGlmICht U21tU3RvcmVJbnN0YW5jZSA9PSBOVUxMKSB7DQo+DQo+ICsgICAgU21tU3RvcmVMaWJEZWluaXRp YWxpemUgKCk7DQo+DQo+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBPdXQgb2YgcmVz b3VyY2VzXG4iLCBfX0ZVTkNUSU9OX18pKTsNCj4NCj4gKyAgICByZXR1cm4gRUZJX09VVF9PRl9S RVNPVVJDRVM7DQo+DQo+ICsgIH0NCj4NCj4gKw0KPg0KPiArICBTdGF0dXMgPSBTbW1TdG9yZUlu aXRJbnN0YW5jZSAoDQo+DQo+ICsgICAgICAgICAgICAgTW1pb0FkZHJlc3MsDQo+DQo+ICsgICAg ICAgICAgICAgQmxvY2tDb3VudCwNCj4NCj4gKyAgICAgICAgICAgICBCbG9ja1NpemUsDQo+DQo+ ICsgICAgICAgICAgICAgbVNtbVN0b3JlSW5zdGFuY2UNCj4NCj4gKyAgICAgICAgICAgICApOw0K Pg0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+DQo+ICsgICAgREVCVUcgKA0KPg0K PiArICAgICAgKA0KPg0KPiArICAgICAgIERFQlVHX0VSUk9SLA0KPg0KPiArICAgICAgICIlYTog RmFpbCB0byBjcmVhdGUgaW5zdGFuY2UgZm9yIFNtbVN0b3JlXG4iLA0KPg0KPiArICAgICAgIF9f RlVOQ1RJT05fXw0KPg0KPiArICAgICAgKQ0KPg0KPiArICAgICAgKTsNCj4NCj4gKyAgICBGcmVl UG9vbCAobVNtbVN0b3JlSW5zdGFuY2UpOw0KPg0KPiArICAgIFNtbVN0b3JlTGliRGVpbml0aWFs aXplICgpOw0KPg0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+DQo+ICsgIH0NCj4NCj4gKw0KPg0K PiArICAvLw0KPg0KPiArICAvLyBSZWdpc3RlciBmb3IgdGhlIHZpcnR1YWwgYWRkcmVzcyBjaGFu Z2UgZXZlbnQNCj4NCj4gKyAgLy8NCj4NCj4gKyAgU3RhdHVzID0gZ0JTLT5DcmVhdGVFdmVudEV4 ICgNCj4NCj4gKyAgICAgICAgICAgICAgICAgIEVWVF9OT1RJRllfU0lHTkFMLA0KPg0KPiArICAg ICAgICAgICAgICAgICAgVFBMX05PVElGWSwNCj4NCj4gKyAgICAgICAgICAgICAgICAgIFNtbVN0 b3JlVmlydHVhbE5vdGlmeUV2ZW50LA0KPg0KPiArICAgICAgICAgICAgICAgICAgTlVMTCwNCj4N Cj4gKyAgICAgICAgICAgICAgICAgICZnRWZpRXZlbnRWaXJ0dWFsQWRkcmVzc0NoYW5nZUd1aWQs DQo+DQo+ICsgICAgICAgICAgICAgICAgICAmbVNtbVN0b3JlVmlydHVhbEFkZHJDaGFuZ2VFdmVu dA0KPg0KPiArICAgICAgICAgICAgICAgICAgKTsNCj4NCj4gKyAgQVNTRVJUX0VGSV9FUlJPUiAo U3RhdHVzKTsNCj4NCj4gKw0KPg0KPiArICByZXR1cm4gU3RhdHVzOw0KPg0KPiArfQ0KPg0KPiBk aWZmIC0tZ2l0IGEvVWVmaVBheWxvYWRQa2cvU21tU3RvcmVGdmIvU21tU3RvcmVGdmJSdW50aW1l LmggYi9VZWZpUGF5bG9hZFBrZy9TbW1TdG9yZUZ2Yi9TbW1TdG9yZUZ2YlJ1bnRpbWUuaA0KPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi44MDE1ZDEyZDEzDQo+IC0t LSAvZGV2L251bGwNCj4gKysrIGIvVWVmaVBheWxvYWRQa2cvU21tU3RvcmVGdmIvU21tU3RvcmVG dmJSdW50aW1lLmgNCj4gQEAgLTAsMCArMSwxMTEgQEANCj4gKy8qKiBAZmlsZSAgU21tU3RvcmVG dmJSdW50aW1lLmgNCj4NCj4gKw0KPg0KPiArICBDb3B5cmlnaHQgKGMpIDIwMjIsIDllbGVtZW50 cyBHbWJIPEJSPg0KPg0KPiArDQo+DQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt Mi1DbGF1c2UtUGF0ZW50DQo+DQo+ICsNCj4NCj4gKyoqLw0KPg0KPiArDQo+DQo+ICsjaWZuZGVm IFNNTV9TVE9SRV9EWEVfSF8NCj4NCj4gKyNkZWZpbmUgU01NX1NUT1JFX0RYRV9IXw0KPg0KPiAr DQo+DQo+ICsjaW5jbHVkZSA8QmFzZS5oPg0KPg0KPiArI2luY2x1ZGUgPFBpRHhlLmg+DQo+DQo+ ICsNCj4NCj4gKyNpbmNsdWRlIDxHdWlkL0V2ZW50R3JvdXAuaD4NCj4NCj4gKw0KPg0KPiArI2lu Y2x1ZGUgPFByb3RvY29sL0Zpcm13YXJlVm9sdW1lQmxvY2suaD4NCj4NCj4gKw0KPg0KPiArI2lu Y2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0lvTGli Lmg+DQo+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+DQo+ICsjaW5jbHVkZSA8 TGlicmFyeS9VZWZpUnVudGltZUxpYi5oPg0KPg0KPiArDQo+DQo+ICsjZGVmaW5lIFNNTVNUT1JF X1NJR05BVFVSRSAgU0lHTkFUVVJFXzMyKCdTJywgJ00nLCAnTScsICdTJykNCj4NCj4gKyNkZWZp bmUgSU5TVEFOQ0VfRlJPTV9GVkJfVEhJUyhhKSAgQ1IoYSwgU01NU1RPUkVfSU5TVEFOQ0UsIEZ2 YlByb3RvY29sLCBTTU1TVE9SRV9TSUdOQVRVUkUpDQo+DQo+ICsNCj4NCj4gK3R5cGVkZWYgc3Ry dWN0IF9TTU1TVE9SRV9JTlNUQU5DRSBTTU1TVE9SRV9JTlNUQU5DRTsNCj4NCj4gKw0KPg0KPiAr dHlwZWRlZiBzdHJ1Y3Qgew0KPg0KPiArICBNRU1NQVBfREVWSUNFX1BBVEggICAgICAgICAgTWVt TWFwRGV2UGF0aDsNCj4NCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgIEVuZERldlBh dGg7DQo+DQo+ICt9IEZWX01FTU1BUF9ERVZJQ0VfUEFUSDsNCj4NCj4gKw0KPg0KPiArc3RydWN0 IF9TTU1TVE9SRV9JTlNUQU5DRSB7DQo+DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFNpZ25hdHVyZTsNCj4NCj4gKyAgRUZJX0hBTkRMRSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSGFuZGxlOw0KPg0KPiArICBFRklfRklSTVdBUkVfVk9MVU1FX0JMT0NL Ml9QUk9UT0NPTCAgICBGdmJQcm90b2NvbDsNCj4NCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQmxvY2tTaXplOw0KPg0KPiArICBVSU5UTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMYXN0QmxvY2s7DQo+DQo+ICsgIEVGSV9QSFlTSUNBTF9BRERS RVNTICAgICAgICAgICAgICAgICAgIE1taW9BZGRyZXNzOw0KPg0KPiArICBGVl9NRU1NQVBfREVW SUNFX1BBVEggICAgICAgICAgICAgICAgICBEZXZpY2VQYXRoOw0KPg0KPiArfTsNCj4NCj4gKw0K Pg0KPiArLy8NCj4NCj4gKy8vIFNtbVN0b3JlRnZiUnVudGltZUR4ZS5jDQo+DQo+ICsvLw0KPg0K PiArDQo+DQo+ICtFRklfU1RBVFVTDQo+DQo+ICtFRklBUEkNCj4NCj4gK0Z2YkluaXRpYWxpemUg KA0KPg0KPiArICBJTiBTTU1TVE9SRV9JTlNUQU5DRSAgKkluc3RhbmNlDQo+DQo+ICsgICk7DQo+ DQo+ICsNCj4NCj4gK0VGSV9TVEFUVVMNCj4NCj4gK0VGSUFQSQ0KPg0KPiArRnZiR2V0QXR0cmli dXRlcyAoDQo+DQo+ICsgIElOIENPTlNUICBFRklfRklSTVdBUkVfVk9MVU1FX0JMT0NLMl9QUk9U T0NPTCAgKlRoaXMsDQo+DQo+ICsgIE9VVCAgICAgICBFRklfRlZCX0FUVFJJQlVURVNfMiAgICAg ICAgICAgICAgICAgKkF0dHJpYnV0ZXMNCj4NCj4gKyAgKTsNCj4NCj4gKw0KPg0KPiArRUZJX1NU QVRVUw0KPg0KPiArRUZJQVBJDQo+DQo+ICtGdmJTZXRBdHRyaWJ1dGVzICgNCj4NCj4gKyAgSU4g Q09OU1QgIEVGSV9GSVJNV0FSRV9WT0xVTUVfQkxPQ0syX1BST1RPQ09MICAqVGhpcywNCj4NCj4g KyAgSU4gT1VUICAgIEVGSV9GVkJfQVRUUklCVVRFU18yICAgICAgICAgICAgICAgICAqQXR0cmli dXRlcw0KPg0KPiArICApOw0KPg0KPiArDQo+DQo+ICtFRklfU1RBVFVTDQo+DQo+ICtFRklBUEkN Cj4NCj4gK0Z2YkdldFBoeXNpY2FsQWRkcmVzcyAoDQo+DQo+ICsgIElOIENPTlNUICBFRklfRklS TVdBUkVfVk9MVU1FX0JMT0NLMl9QUk9UT0NPTCAgKlRoaXMsDQo+DQo+ICsgIE9VVCAgICAgICBF RklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgICAgICAgICAgKkFkZHJlc3MNCj4NCj4gKyAgKTsN Cj4NCj4gKw0KPg0KPiArRUZJX1NUQVRVUw0KPg0KPiArRUZJQVBJDQo+DQo+ICtGdmJHZXRCbG9j a1NpemUgKA0KPg0KPiArICBJTiBDT05TVCAgRUZJX0ZJUk1XQVJFX1ZPTFVNRV9CTE9DSzJfUFJP VE9DT0wgICpUaGlzLA0KPg0KPiArICBJTiAgICAgICAgRUZJX0xCQSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExiYSwNCj4NCj4gKyAgT1VUICAgICAgIFVJTlROICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqQmxvY2tTaXplLA0KPg0KPiArICBPVVQgICAgICAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpOdW1iZXJPZkJsb2Nrcw0KPg0KPiArICApOw0K Pg0KPiArDQo+DQo+ICtFRklfU1RBVFVTDQo+DQo+ICtFRklBUEkNCj4NCj4gK0Z2YlJlYWQgKA0K Pg0KPiArICBJTiBDT05TVCAgRUZJX0ZJUk1XQVJFX1ZPTFVNRV9CTE9DSzJfUFJPVE9DT0wgICpU aGlzLA0KPg0KPiArICBJTiAgICAgICAgRUZJX0xCQSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExiYSwNCj4NCj4gKyAgSU4gICAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPZmZzZXQsDQo+DQo+ICsgIElOIE9VVCAgICBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKk51bUJ5dGVzLA0KPg0KPiArICBJTiBPVVQgICAgVUlOVDggICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICpCdWZmZXINCj4NCj4gKyAgKTsNCj4NCj4gKw0KPg0K PiArRUZJX1NUQVRVUw0KPg0KPiArRUZJQVBJDQo+DQo+ICtGdmJXcml0ZSAoDQo+DQo+ICsgIElO IENPTlNUICBFRklfRklSTVdBUkVfVk9MVU1FX0JMT0NLMl9QUk9UT0NPTCAgKlRoaXMsDQo+DQo+ ICsgIElOICAgICAgICBFRklfTEJBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGJhLA0K Pg0KPiArICBJTiAgICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9m ZnNldCwNCj4NCj4gKyAgSU4gT1VUICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqTnVtQnl0ZXMsDQo+DQo+ICsgIElOICAgICAgICBVSU5UOCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKkJ1ZmZlcg0KPg0KPiArICApOw0KPg0KPiArDQo+DQo+ICtFRklfU1RB VFVTDQo+DQo+ICtFRklBUEkNCj4NCj4gK0Z2YkVyYXNlQmxvY2tzICgNCj4NCj4gKyAgSU4gQ09O U1QgIEVGSV9GSVJNV0FSRV9WT0xVTUVfQkxPQ0syX1BST1RPQ09MICAqVGhpcywNCj4NCj4gKyAg Li4uDQo+DQo+ICsgICk7DQo+DQo+ICsNCj4NCj4gKyNlbmRpZiAvLyBTTU1fU1RPUkVfRFhFX0hf DQo+DQo+IGRpZmYgLS1naXQgYS9VZWZpUGF5bG9hZFBrZy9TbW1TdG9yZUZ2Yi9TbW1TdG9yZUZ2 YlJ1bnRpbWVEeGUuYyBiL1VlZmlQYXlsb2FkUGtnL1NtbVN0b3JlRnZiL1NtbVN0b3JlRnZiUnVu dGltZUR4ZS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjE0 ZDRlYzMyNGQNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9VZWZpUGF5bG9hZFBrZy9TbW1TdG9y ZUZ2Yi9TbW1TdG9yZUZ2YlJ1bnRpbWVEeGUuYw0KPiBAQCAtMCwwICsxLDg0OSBAQA0KPiArLyoq IEBmaWxlICBTbW1TdG9yZUZ2YlJ1bnRpbWVEeGUuYw0KPg0KPiArDQo+DQo+ICsgIENvcHlyaWdo dCAoYykgMjAyMiwgOWVsZW1lbnRzIEdtYkg8QlI+DQo+DQo+ICsNCj4NCj4gKyAgU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4NCj4gKw0KPg0KPiArKiovDQo+ DQo+ICsNCj4NCj4gKyNpbmNsdWRlIDxQaUR4ZS5oPg0KPg0KPiArDQo+DQo+ICsjaW5jbHVkZSA8 TGlicmFyeS9QY2RMaWIuaD4NCj4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4NCj4N Cj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0hvYkxpYi5oPg0KPg0KPiArI2luY2x1ZGUgPExpYnJhcnkv VWVmaUxpYi5oPg0KPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KPg0K PiArI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPg0KPiArI2luY2x1 ZGUgPExpYnJhcnkvRHhlU2VydmljZXNUYWJsZUxpYi5oPg0KPg0KPiArI2luY2x1ZGUgPExpYnJh cnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQo+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9T bW1TdG9yZUxpYi5oPg0KPg0KPiArDQo+DQo+ICsjaW5jbHVkZSA8R3VpZC9WYXJpYWJsZUZvcm1h dC5oPg0KPg0KPiArI2luY2x1ZGUgPEd1aWQvU3lzdGVtTnZEYXRhR3VpZC5oPg0KPg0KPiArI2lu Y2x1ZGUgPEd1aWQvTnZWYXJTdG9yZUZvcm1hdHRlZC5oPg0KPg0KPiArDQo+DQo+ICsjaW5jbHVk ZSAiU21tU3RvcmVGdmJSdW50aW1lLmgiDQo+DQo+ICsNCj4NCj4gKy8vLw0KPg0KPiArLy8vIFRo ZSBGaXJtd2FyZSBWb2x1bWUgQmxvY2sgUHJvdG9jb2wgaXMgdGhlIGxvdy1sZXZlbCBpbnRlcmZh Y2UNCj4NCj4gKy8vLyB0byBhIGZpcm13YXJlIHZvbHVtZS4gRmlsZS1sZXZlbCBhY2Nlc3MgdG8g YSBmaXJtd2FyZSB2b2x1bWUNCj4NCj4gKy8vLyBzaG91bGQgbm90IGJlIGRvbmUgdXNpbmcgdGhl IEZpcm13YXJlIFZvbHVtZSBCbG9jayBQcm90b2NvbC4NCj4NCj4gKy8vLyBOb3JtYWwgYWNjZXNz IHRvIGEgZmlybXdhcmUgdm9sdW1lIG11c3QgdXNlIHRoZSBGaXJtd2FyZQ0KPg0KPiArLy8vIFZv bHVtZSBQcm90b2NvbC4gVHlwaWNhbGx5LCBvbmx5IHRoZSBmaWxlIHN5c3RlbSBkcml2ZXIgdGhh dA0KPg0KPiArLy8vIHByb2R1Y2VzIHRoZSBGaXJtd2FyZSBWb2x1bWUgUHJvdG9jb2wgd2lsbCBi aW5kIHRvIHRoZQ0KPg0KPiArLy8vIEZpcm13YXJlIFZvbHVtZSBCbG9jayBQcm90b2NvbC4NCj4N Cj4gKy8vLw0KPg0KPiArDQo+DQo+ICsvKioNCj4NCj4gKyAgSW5pdGlhbGlzZXMgdGhlIEZWIEhl YWRlciBhbmQgVmFyaWFibGUgU3RvcmUgSGVhZGVyDQo+DQo+ICsgIHRvIHN1cHBvcnQgdmFyaWFi bGUgb3BlcmF0aW9ucy4NCj4NCj4gKw0KPg0KPiArICBAcGFyYW1baW5dICBJbnN0YW5jZSAtIFBv aW50ZXIgdG8gU21tU3RvcmUgaW5zdGFuY2UNCj4NCj4gKw0KPg0KPiArKiovDQo+DQo+ICtFRklf U1RBVFVTDQo+DQo+ICtJbml0aWFsaXplRnZBbmRWYXJpYWJsZVN0b3JlSGVhZGVycyAoDQo+DQo+ ICsgIElOIFNNTVNUT1JFX0lOU1RBTkNFICAqSW5zdGFuY2UNCj4NCj4gKyAgKQ0KPg0KPiArew0K Pg0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPg0KPiArICBWT0lE ICAgICAgICAgICAgICAgICAgICAgICAgKkhlYWRlcnM7DQo+DQo+ICsgIFVJTlROICAgICAgICAg ICAgICAgICAgICAgICBIZWFkZXJzTGVuZ3RoOw0KPg0KPiArICBFRklfRklSTVdBUkVfVk9MVU1F X0hFQURFUiAgKkZpcm13YXJlVm9sdW1lSGVhZGVyOw0KPg0KPiArICBWQVJJQUJMRV9TVE9SRV9I RUFERVIgICAgICAgKlZhcmlhYmxlU3RvcmVIZWFkZXI7DQo+DQo+ICsgIFVJTlQzMiAgICAgICAg ICAgICAgICAgICAgICBOdlN0b3JhZ2VGdHdTcGFyZVNpemU7DQo+DQo+ICsgIFVJTlQzMiAgICAg ICAgICAgICAgICAgICAgICBOdlN0b3JhZ2VGdHdXb3JraW5nU2l6ZTsNCj4NCj4gKyAgVUlOVDMy ICAgICAgICAgICAgICAgICAgICAgIE52U3RvcmFnZVZhcmlhYmxlU2l6ZTsNCj4NCj4gKyAgVUlO VDY0ICAgICAgICAgICAgICAgICAgICAgIE52U3RvcmFnZUZ0d1NwYXJlQmFzZTsNCj4NCj4gKyAg VUlOVDY0ICAgICAgICAgICAgICAgICAgICAgIE52U3RvcmFnZUZ0d1dvcmtpbmdCYXNlOw0KPg0K PiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgTnZTdG9yYWdlVmFyaWFibGVCYXNlOw0K Pg0KPiArDQo+DQo+ICsgIEhlYWRlcnNMZW5ndGggPSBzaXplb2YgKEVGSV9GSVJNV0FSRV9WT0xV TUVfSEVBREVSKSArIHNpemVvZiAoRUZJX0ZWX0JMT0NLX01BUF9FTlRSWSkgKyBzaXplb2YgKFZB UklBQkxFX1NUT1JFX0hFQURFUik7DQo+DQo+ICsgIEhlYWRlcnMgICAgICAgPSBBbGxvY2F0ZVpl cm9Qb29sIChIZWFkZXJzTGVuZ3RoKTsNCj4NCj4gKw0KPg0KPiArICBOdlN0b3JhZ2VGdHdXb3Jr aW5nU2l6ZSA9IFBjZEdldDMyIChQY2RGbGFzaE52U3RvcmFnZUZ0d1dvcmtpbmdTaXplKTsNCj4N Cj4gKyAgTnZTdG9yYWdlRnR3U3BhcmVTaXplICAgPSBQY2RHZXQzMiAoUGNkRmxhc2hOdlN0b3Jh Z2VGdHdTcGFyZVNpemUpOw0KPg0KPiArICBOdlN0b3JhZ2VWYXJpYWJsZVNpemUgICA9IFBjZEdl dDMyIChQY2RGbGFzaE52U3RvcmFnZVZhcmlhYmxlU2l6ZSk7DQo+DQo+ICsNCj4NCj4gKyAgTnZT dG9yYWdlRnR3U3BhcmVCYXNlID0gKFBjZEdldDY0IChQY2RGbGFzaE52U3RvcmFnZUZ0d1NwYXJl QmFzZTY0KSAhPSAwKSA/DQo+DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIFBjZEdldDY0 IChQY2RGbGFzaE52U3RvcmFnZUZ0d1NwYXJlQmFzZTY0KSA6IFBjZEdldDMyIChQY2RGbGFzaE52 U3RvcmFnZUZ0d1NwYXJlQmFzZSk7DQo+DQo+ICsgIE52U3RvcmFnZUZ0d1dvcmtpbmdCYXNlID0g KFBjZEdldDY0IChQY2RGbGFzaE52U3RvcmFnZUZ0d1dvcmtpbmdCYXNlNjQpICE9IDApID8NCj4N Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQY2RHZXQ2NCAoUGNkRmxhc2hOdlN0b3Jh Z2VGdHdXb3JraW5nQmFzZTY0KSA6IFBjZEdldDMyIChQY2RGbGFzaE52U3RvcmFnZUZ0d1dvcmtp bmdCYXNlKTsNCj4NCj4gKyAgTnZTdG9yYWdlVmFyaWFibGVCYXNlID0gKFBjZEdldDY0IChQY2RG bGFzaE52U3RvcmFnZVZhcmlhYmxlQmFzZTY0KSAhPSAwKSA/DQo+DQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgIFBjZEdldDY0IChQY2RGbGFzaE52U3RvcmFnZVZhcmlhYmxlQmFzZTY0KSA6 IFBjZEdldDMyIChQY2RGbGFzaE52U3RvcmFnZVZhcmlhYmxlQmFzZSk7DQo+DQo+ICsNCj4NCj4g KyAgLy8gRmlybXdhcmVWb2x1bWVIZWFkZXItPkZ2TGVuZ3RoIGlzIGRlY2xhcmVkIHRvIGhhdmUg dGhlIFZhcmlhYmxlIGFyZWEgQU5EIHRoZSBGVFcgd29ya2luZyBhcmVhIEFORCB0aGUgRlRXIFNw YXJlIGNvbnRpZ3VvdXMuDQo+DQo+ICsgIGlmICgoTnZTdG9yYWdlVmFyaWFibGVCYXNlICsgTnZT dG9yYWdlVmFyaWFibGVTaXplKSAhPSBOdlN0b3JhZ2VGdHdXb3JraW5nQmFzZSkgew0KPg0KPiAr ICAgIERFQlVHICgoDQo+DQo+ICsgICAgICBERUJVR19FUlJPUiwNCj4NCj4gKyAgICAgICIlYTog TnZTdG9yYWdlRnR3V29ya2luZ0Jhc2UgaXMgbm90IGNvbnRpZ3VvdXMgd2l0aCBOdlN0b3JhZ2VW YXJpYWJsZUJhc2UgcmVnaW9uXG4iLA0KPg0KPiArICAgICAgX19GVU5DVElPTl9fDQo+DQo+ICsg ICAgICApKTsNCj4NCj4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPg0KPiAr ICB9DQo+DQo+ICsNCj4NCj4gKyAgaWYgKChOdlN0b3JhZ2VGdHdXb3JraW5nQmFzZSArIE52U3Rv cmFnZUZ0d1dvcmtpbmdTaXplKSAhPSBOdlN0b3JhZ2VGdHdTcGFyZUJhc2UpIHsNCj4NCj4gKyAg ICBERUJVRyAoKA0KPg0KPiArICAgICAgREVCVUdfRVJST1IsDQo+DQo+ICsgICAgICAiJWE6IE52 U3RvcmFnZUZ0d1NwYXJlQmFzZSBpcyBub3QgY29udGlndW91cyB3aXRoIE52U3RvcmFnZUZ0d1dv cmtpbmdCYXNlIHJlZ2lvblxuIiwNCj4NCj4gKyAgICAgIF9fRlVOQ1RJT05fXw0KPg0KPiArICAg ICAgKSk7DQo+DQo+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4NCj4gKyAg fQ0KPg0KPiArDQo+DQo+ICsgIC8vIENoZWNrIGlmIHRoZSBzaXplIG9mIHRoZSBhcmVhIGlzIGF0 IGxlYXN0IG9uZSBibG9jayBzaXplDQo+DQo+ICsgIGlmICgoTnZTdG9yYWdlVmFyaWFibGVTaXpl IDw9IDApIHx8IChOdlN0b3JhZ2VWYXJpYWJsZVNpemUgLyBJbnN0YW5jZS0+QmxvY2tTaXplIDw9 IDApKSB7DQo+DQo+ICsgICAgREVCVUcgKCgNCj4NCj4gKyAgICAgIERFQlVHX0VSUk9SLA0KPg0K PiArICAgICAgIiVhOiBOdlN0b3JhZ2VWYXJpYWJsZVNpemUgaXMgMHgleCwgc2hvdWxkIGJlIGF0 bGVhc3Qgb25lIGJsb2NrIHNpemVcbiIsDQo+DQo+ICsgICAgICBfX0ZVTkNUSU9OX18sDQo+DQo+ ICsgICAgICBOdlN0b3JhZ2VWYXJpYWJsZVNpemUNCj4NCj4gKyAgICAgICkpOw0KPg0KPiArICAg IHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+DQo+ICsgIH0NCj4NCj4gKw0KPg0KPiAr ICBpZiAoKE52U3RvcmFnZUZ0d1dvcmtpbmdTaXplIDw9IDApIHx8IChOdlN0b3JhZ2VGdHdXb3Jr aW5nU2l6ZSAvIEluc3RhbmNlLT5CbG9ja1NpemUgPD0gMCkpIHsNCj4NCj4gKyAgICBERUJVRyAo KA0KPg0KPiArICAgICAgREVCVUdfRVJST1IsDQo+DQo+ICsgICAgICAiJWE6IE52U3RvcmFnZUZ0 d1dvcmtpbmdTaXplIGlzIDB4JXgsIHNob3VsZCBiZSBhdGxlYXN0IG9uZSBibG9jayBzaXplXG4i LA0KPg0KPiArICAgICAgX19GVU5DVElPTl9fLA0KPg0KPiArICAgICAgTnZTdG9yYWdlRnR3V29y a2luZ1NpemUNCj4NCj4gKyAgICAgICkpOw0KPg0KPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9Q QVJBTUVURVI7DQo+DQo+ICsgIH0NCj4NCj4gKw0KPg0KPiArICBpZiAoKE52U3RvcmFnZUZ0d1Nw YXJlU2l6ZSA8PSAwKSB8fCAoTnZTdG9yYWdlRnR3U3BhcmVTaXplIC8gSW5zdGFuY2UtPkJsb2Nr U2l6ZSA8PSAwKSkgew0KPg0KPiArICAgIERFQlVHICgoDQo+DQo+ICsgICAgICBERUJVR19FUlJP UiwNCj4NCj4gKyAgICAgICIlYTogTnZTdG9yYWdlRnR3U3BhcmVTaXplIGlzIDB4JXgsIHNob3Vs ZCBiZSBhdGxlYXN0IG9uZSBibG9jayBzaXplXG4iLA0KPg0KPiArICAgICAgX19GVU5DVElPTl9f LA0KPg0KPiArICAgICAgTnZTdG9yYWdlRnR3U3BhcmVTaXplDQo+DQo+ICsgICAgICApKTsNCj4N Cj4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPg0KPiArICB9DQo+DQo+ICsN Cj4NCj4gKyAgLy8gRW5zdXJlIHRoZSBWYXJpYWJsZSBhcmVhIEJhc2UgQWRkcmVzc2VzIGFyZSBh bGlnbmVkIG9uIGEgYmxvY2sgc2l6ZSBib3VuZGFyaWVzDQo+DQo+ICsgIGlmICgoTnZTdG9yYWdl VmFyaWFibGVCYXNlICUgSW5zdGFuY2UtPkJsb2NrU2l6ZSAhPSAwKSB8fA0KPg0KPiArICAgICAg KE52U3RvcmFnZUZ0d1dvcmtpbmdCYXNlICUgSW5zdGFuY2UtPkJsb2NrU2l6ZSAhPSAwKSB8fA0K Pg0KPiArICAgICAgKE52U3RvcmFnZUZ0d1NwYXJlQmFzZSAlIEluc3RhbmNlLT5CbG9ja1NpemUg IT0gMCkpDQo+DQo+ICsgIHsNCj4NCj4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IE52 U3RvcmFnZSBCYXNlIGFkZHJlc3NlcyBtdXN0IGJlIGFsaWduZWQgdG8gYmxvY2sgc2l6ZSBib3Vu ZGFyaWVzIiwgX19GVU5DVElPTl9fKSk7DQo+DQo+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BB UkFNRVRFUjsNCj4NCj4gKyAgfQ0KPg0KPiArDQo+DQo+ICsgIC8vDQo+DQo+ICsgIC8vIEVGSV9G SVJNV0FSRV9WT0xVTUVfSEVBREVSDQo+DQo+ICsgIC8vDQo+DQo+ICsgIEZpcm13YXJlVm9sdW1l SGVhZGVyID0gKEVGSV9GSVJNV0FSRV9WT0xVTUVfSEVBREVSICopSGVhZGVyczsNCj4NCj4gKyAg Q29weUd1aWQgKCZGaXJtd2FyZVZvbHVtZUhlYWRlci0+RmlsZVN5c3RlbUd1aWQsICZnRWZpU3lz dGVtTnZEYXRhRnZHdWlkKTsNCj4NCj4gKyAgRmlybXdhcmVWb2x1bWVIZWFkZXItPkZ2TGVuZ3Ro ID0NCj4NCj4gKyAgICBQY2RHZXQzMiAoUGNkRmxhc2hOdlN0b3JhZ2VWYXJpYWJsZVNpemUpICsN Cj4NCj4gKyAgICBQY2RHZXQzMiAoUGNkRmxhc2hOdlN0b3JhZ2VGdHdXb3JraW5nU2l6ZSkgKw0K Pg0KPiArICAgIFBjZEdldDMyIChQY2RGbGFzaE52U3RvcmFnZUZ0d1NwYXJlU2l6ZSk7DQo+DQo+ ICsgIEZpcm13YXJlVm9sdW1lSGVhZGVyLT5TaWduYXR1cmUgID0gRUZJX0ZWSF9TSUdOQVRVUkU7 DQo+DQo+ICsgIEZpcm13YXJlVm9sdW1lSGVhZGVyLT5BdHRyaWJ1dGVzID0gKEVGSV9GVkJfQVRU UklCVVRFU18yKSgNCj4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEVGSV9GVkIyX1JFQURfRU5BQkxFRF9DQVAgICB8IC8vIFJl YWRzIG1heSBiZSBlbmFibGVkDQo+DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfRlZCMl9SRUFEX1NUQVRVUyAgICAgICAg fCAvLyBSZWFkcyBhcmUgY3VycmVudGx5IGVuYWJsZWQNCj4NCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9GVkIyX1NUSUNL WV9XUklURSAgICAgICB8IC8vIEEgYmxvY2sgZXJhc2UgaXMgcmVxdWlyZWQgdG8gZmxpcCBiaXRz IGludG8gRUZJX0ZWQjJfRVJBU0VfUE9MQVJJVFkNCj4NCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9GVkIyX01FTU9SWV9N QVBQRUQgICAgICB8IC8vIEl0IGlzIG1lbW9yeSBtYXBwZWQNCj4NCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9GVkIyX0VS QVNFX1BPTEFSSVRZICAgICB8IC8vIEFmdGVyIGVyYXN1cmUgYWxsIGJpdHMgdGFrZSB0aGlzIHZh bHVlIChpLmUuICcxJykNCj4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9GVkIyX1dSSVRFX1NUQVRVUyAgICAgICB8IC8v IFdyaXRlcyBhcmUgY3VycmVudGx5IGVuYWJsZWQNCj4NCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9GVkIyX1dSSVRFX0VO QUJMRURfQ0FQICAgIC8vIFdyaXRlcyBtYXkgYmUgZW5hYmxlZA0KPg0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4NCj4g KyAgRmlybXdhcmVWb2x1bWVIZWFkZXItPkhlYWRlckxlbmd0aCAgICAgICAgICA9IHNpemVvZiAo RUZJX0ZJUk1XQVJFX1ZPTFVNRV9IRUFERVIpICsgc2l6ZW9mIChFRklfRlZfQkxPQ0tfTUFQX0VO VFJZKTsNCj4NCj4gKyAgRmlybXdhcmVWb2x1bWVIZWFkZXItPlJldmlzaW9uICAgICAgICAgICAg ICA9IEVGSV9GVkhfUkVWSVNJT047DQo+DQo+ICsgIEZpcm13YXJlVm9sdW1lSGVhZGVyLT5CbG9j a01hcFswXS5OdW1CbG9ja3MgPSBJbnN0YW5jZS0+TGFzdEJsb2NrICsgMTsNCj4NCj4gKyAgRmly bXdhcmVWb2x1bWVIZWFkZXItPkJsb2NrTWFwWzBdLkxlbmd0aCAgICA9IEluc3RhbmNlLT5CbG9j a1NpemU7DQo+DQo+ICsgIEZpcm13YXJlVm9sdW1lSGVhZGVyLT5CbG9ja01hcFsxXS5OdW1CbG9j a3MgPSAwOw0KPg0KPiArICBGaXJtd2FyZVZvbHVtZUhlYWRlci0+QmxvY2tNYXBbMV0uTGVuZ3Ro ICAgID0gMDsNCj4NCj4gKyAgRmlybXdhcmVWb2x1bWVIZWFkZXItPkNoZWNrc3VtICAgICAgICAg ICAgICA9IENhbGN1bGF0ZUNoZWNrU3VtMTYgKChVSU5UMTYgKilGaXJtd2FyZVZvbHVtZUhlYWRl ciwgRmlybXdhcmVWb2x1bWVIZWFkZXItPkhlYWRlckxlbmd0aCk7DQo+DQo+ICsNCj4NCj4gKyAg Ly8NCj4NCj4gKyAgLy8gVkFSSUFCTEVfU1RPUkVfSEVBREVSDQo+DQo+ICsgIC8vDQo+DQo+ICsg IFZhcmlhYmxlU3RvcmVIZWFkZXIgPSAoVkFSSUFCTEVfU1RPUkVfSEVBREVSICopKChVSU5UTilI ZWFkZXJzICsgRmlybXdhcmVWb2x1bWVIZWFkZXItPkhlYWRlckxlbmd0aCk7DQo+DQo+ICsgIENv cHlHdWlkICgmVmFyaWFibGVTdG9yZUhlYWRlci0+U2lnbmF0dXJlLCAmZ0VmaVZhcmlhYmxlR3Vp ZCk7DQo+DQo+ICsgIFZhcmlhYmxlU3RvcmVIZWFkZXItPlNpemUgICA9IFBjZEdldDMyIChQY2RG bGFzaE52U3RvcmFnZVZhcmlhYmxlU2l6ZSkgLSBGaXJtd2FyZVZvbHVtZUhlYWRlci0+SGVhZGVy TGVuZ3RoOw0KPg0KPiArICBWYXJpYWJsZVN0b3JlSGVhZGVyLT5Gb3JtYXQgPSBWQVJJQUJMRV9T VE9SRV9GT1JNQVRURUQ7DQo+DQo+ICsgIFZhcmlhYmxlU3RvcmVIZWFkZXItPlN0YXRlICA9IFZB UklBQkxFX1NUT1JFX0hFQUxUSFk7DQo+DQo+ICsNCj4NCj4gKyAgLy8gSW5zdGFsbCB0aGUgY29t YmluZWQgc3VwZXItaGVhZGVyIGluIHRoZSBOb3JGbGFzaA0KPg0KPiArICBTdGF0dXMgPSBGdmJX cml0ZSAoJkluc3RhbmNlLT5GdmJQcm90b2NvbCwgMCwgMCwgJkhlYWRlcnNMZW5ndGgsIEhlYWRl cnMpOw0KPg0KPiArDQo+DQo+ICsgIEZyZWVQb29sIChIZWFkZXJzKTsNCj4NCj4gKyAgcmV0dXJu IFN0YXR1czsNCj4NCj4gK30NCj4NCj4gKw0KPg0KPiArLyoqDQo+DQo+ICsgIENoZWNrIHRoZSBp bnRlZ3JpdHkgb2YgZmlybXdhcmUgdm9sdW1lIGhlYWRlci4NCj4NCj4gKw0KPg0KPiArICBAcmV0 dmFsICBFRklfU1VDQ0VTUyAgIC0gVGhlIGZpcm13YXJlIHZvbHVtZSBpcyBjb25zaXN0ZW50DQo+ DQo+ICsgIEByZXR2YWwgIEVGSV9OT1RfRk9VTkQgLSBUaGUgZmlybXdhcmUgdm9sdW1lIGhhcyBi ZWVuIGNvcnJ1cHRlZC4NCj4NCj4gKw0KPg0KPiArKiovDQo+DQo+ICtFRklfU1RBVFVTDQo+DQo+ ICtWYWxpZGF0ZUZ2SGVhZGVyICgNCj4NCj4gKyAgVk9JRA0KPg0KPiArICApDQo+DQo+ICt7DQo+ DQo+ICsgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICBDaGVja3N1bTsNCj4NCj4gKyAgRUZJ X0ZJUk1XQVJFX1ZPTFVNRV9IRUFERVIgICpGd1ZvbEhlYWRlcjsNCj4NCj4gKyAgVkFSSUFCTEVf U1RPUkVfSEVBREVSICAgICAgICpWYXJpYWJsZVN0b3JlSGVhZGVyOw0KPg0KPiArICBVSU5UTiAg ICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVTdG9yZUxlbmd0aDsNCj4NCj4gKyAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICAgIEZ2TGVuZ3RoOw0KPg0KPiArICBFRklfU1RBVFVTICAgICAg ICAgICAgICAgICAgVGVtcFN0YXR1czsNCj4NCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAg ICAgIEJ1ZmZlclNpemU7DQo+DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICBCdWZm ZXJTaXplUmVxZXN0ZWQ7DQo+DQo+ICsNCj4NCj4gKyAgQnVmZmVyU2l6ZVJlcWVzdGVkID0gc2l6 ZW9mIChFRklfRklSTVdBUkVfVk9MVU1FX0hFQURFUik7DQo+DQo+ICsgIEZ3Vm9sSGVhZGVyICAg ICAgICA9IChFRklfRklSTVdBUkVfVk9MVU1FX0hFQURFUiAqKUFsbG9jYXRlUG9vbCAoQnVmZmVy U2l6ZVJlcWVzdGVkKTsNCj4NCj4gKyAgaWYgKCFGd1ZvbEhlYWRlcikgew0KPg0KPiArICAgIHJl dHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4NCj4gKyAgfQ0KPg0KPiArDQo+DQo+ICsgIEJ1 ZmZlclNpemUgPSBCdWZmZXJTaXplUmVxZXN0ZWQ7DQo+DQo+ICsgIFRlbXBTdGF0dXMgPSBTbW1T dG9yZUxpYlJlYWQgKDAsIDAsICZCdWZmZXJTaXplLCAoVUlOVDggKilGd1ZvbEhlYWRlcik7DQo+ DQo+ICsgIGlmIChFRklfRVJST1IgKFRlbXBTdGF0dXMpIHx8IChCdWZmZXJTaXplUmVxZXN0ZWQg IT0gQnVmZmVyU2l6ZSkpIHsNCj4NCj4gKyAgICBGcmVlUG9vbCAoRndWb2xIZWFkZXIpOw0KPg0K PiArICAgIHJldHVybiBFRklfREVWSUNFX0VSUk9SOw0KPg0KPiArICB9DQo+DQo+ICsNCj4NCj4g KyAgRnZMZW5ndGggPSBQY2RHZXQzMiAoUGNkRmxhc2hOdlN0b3JhZ2VWYXJpYWJsZVNpemUpICsg UGNkR2V0MzIgKFBjZEZsYXNoTnZTdG9yYWdlRnR3V29ya2luZ1NpemUpICsNCj4NCj4gKyAgICAg ICAgICAgICBQY2RHZXQzMiAoUGNkRmxhc2hOdlN0b3JhZ2VGdHdTcGFyZVNpemUpOw0KPg0KPiAr DQo+DQo+ICsgIC8vDQo+DQo+ICsgIC8vIFZlcmlmeSB0aGUgaGVhZGVyIHJldmlzaW9uLCBoZWFk ZXIgc2lnbmF0dXJlLCBsZW5ndGgNCj4NCj4gKyAgLy8gTGVuZ3RoIG9mIEZ2QmxvY2sgY2Fubm90 IGJlIDIqKjY0LTENCj4NCj4gKyAgLy8gSGVhZGVyTGVuZ3RoIGNhbm5vdCBiZSBhbiBvZGQgbnVt YmVyDQo+DQo+ICsgIC8vDQo+DQo+ICsgIGlmICggIChGd1ZvbEhlYWRlci0+UmV2aXNpb24gICE9 IEVGSV9GVkhfUkVWSVNJT04pDQo+DQo+ICsgICAgIHx8IChGd1ZvbEhlYWRlci0+U2lnbmF0dXJl ICE9IEVGSV9GVkhfU0lHTkFUVVJFKQ0KPg0KPiArICAgICB8fCAoRndWb2xIZWFkZXItPkZ2TGVu Z3RoICAhPSBGdkxlbmd0aCkNCj4NCj4gKyAgICAgICAgKQ0KPg0KPiArICB7DQo+DQo+ICsgICAg REVCVUcgKCgNCj4NCj4gKyAgICAgIERFQlVHX0lORk8sDQo+DQo+ICsgICAgICAiJWE6IE5vIEZp cm13YXJlIFZvbHVtZSBoZWFkZXIgcHJlc2VudFxuIiwNCj4NCj4gKyAgICAgIF9fRlVOQ1RJT05f Xw0KPg0KPiArICAgICAgKSk7DQo+DQo+ICsgICAgRnJlZVBvb2wgKEZ3Vm9sSGVhZGVyKTsNCj4N Cj4gKyAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4NCj4gKyAgfQ0KPg0KPiArDQo+DQo+ICsg IC8vIENoZWNrIHRoZSBGaXJtd2FyZSBWb2x1bWUgR3VpZA0KPg0KPiArICBpZiAoIENvbXBhcmVH dWlkICgmRndWb2xIZWFkZXItPkZpbGVTeXN0ZW1HdWlkLCAmZ0VmaVN5c3RlbU52RGF0YUZ2R3Vp ZCkgPT0gRkFMU0UgKSB7DQo+DQo+ICsgICAgREVCVUcgKCgNCj4NCj4gKyAgICAgIERFQlVHX0lO Rk8sDQo+DQo+ICsgICAgICAiJWE6IEZpcm13YXJlIFZvbHVtZSBHdWlkIG5vbi1jb21wYXRpYmxl XG4iLA0KPg0KPiArICAgICAgX19GVU5DVElPTl9fDQo+DQo+ICsgICAgICApKTsNCj4NCj4gKyAg ICBGcmVlUG9vbCAoRndWb2xIZWFkZXIpOw0KPg0KPiArICAgIHJldHVybiBFRklfTk9UX0ZPVU5E Ow0KPg0KPiArICB9DQo+DQo+ICsNCj4NCj4gKyAgQnVmZmVyU2l6ZVJlcWVzdGVkID0gRndWb2xI ZWFkZXItPkhlYWRlckxlbmd0aDsNCj4NCj4gKyAgRnJlZVBvb2wgKEZ3Vm9sSGVhZGVyKTsNCj4N Cj4gKyAgRndWb2xIZWFkZXIgPSAoRUZJX0ZJUk1XQVJFX1ZPTFVNRV9IRUFERVIgKilBbGxvY2F0 ZVBvb2wgKEJ1ZmZlclNpemVSZXFlc3RlZCk7DQo+DQo+ICsgIGlmICghRndWb2xIZWFkZXIpIHsN Cj4NCj4gKyAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+DQo+ICsgIH0NCj4NCj4g Kw0KPg0KPiArICBCdWZmZXJTaXplID0gQnVmZmVyU2l6ZVJlcWVzdGVkOw0KPg0KPiArICBUZW1w U3RhdHVzID0gU21tU3RvcmVMaWJSZWFkICgwLCAwLCAmQnVmZmVyU2l6ZSwgKFVJTlQ4ICopRndW b2xIZWFkZXIpOw0KPg0KPiArICBpZiAoRUZJX0VSUk9SIChUZW1wU3RhdHVzKSB8fCAoQnVmZmVy U2l6ZVJlcWVzdGVkICE9IEJ1ZmZlclNpemUpKSB7DQo+DQo+ICsgICAgRnJlZVBvb2wgKEZ3Vm9s SGVhZGVyKTsNCj4NCj4gKyAgICByZXR1cm4gRUZJX0RFVklDRV9FUlJPUjsNCj4NCj4gKyAgfQ0K Pg0KPiArDQo+DQo+ICsgIC8vIFZlcmlmeSB0aGUgaGVhZGVyIGNoZWNrc3VtDQo+DQo+ICsgIENo ZWNrc3VtID0gQ2FsY3VsYXRlU3VtMTYgKChVSU5UMTYgKilGd1ZvbEhlYWRlciwgRndWb2xIZWFk ZXItPkhlYWRlckxlbmd0aCk7DQo+DQo+ICsgIGlmIChDaGVja3N1bSAhPSAwKSB7DQo+DQo+ICsg ICAgREVCVUcgKCgNCj4NCj4gKyAgICAgIERFQlVHX0lORk8sDQo+DQo+ICsgICAgICAiJWE6IEZW IGNoZWNrc3VtIGlzIGludmFsaWQgKENoZWNrc3VtOjB4JVgpXG4iLA0KPg0KPiArICAgICAgX19G VU5DVElPTl9fLA0KPg0KPiArICAgICAgQ2hlY2tzdW0NCj4NCj4gKyAgICAgICkpOw0KPg0KPiAr ICAgIEZyZWVQb29sIChGd1ZvbEhlYWRlcik7DQo+DQo+ICsgICAgcmV0dXJuIEVGSV9OT1RfRk9V TkQ7DQo+DQo+ICsgIH0NCj4NCj4gKw0KPg0KPiArICBCdWZmZXJTaXplUmVxZXN0ZWQgID0gc2l6 ZW9mIChWQVJJQUJMRV9TVE9SRV9IRUFERVIpOw0KPg0KPiArICBWYXJpYWJsZVN0b3JlSGVhZGVy ID0gKFZBUklBQkxFX1NUT1JFX0hFQURFUiAqKUFsbG9jYXRlUG9vbCAoQnVmZmVyU2l6ZVJlcWVz dGVkKTsNCj4NCj4gKyAgaWYgKCFWYXJpYWJsZVN0b3JlSGVhZGVyKSB7DQo+DQo+ICsgICAgcmV0 dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPg0KPiArICB9DQo+DQo+ICsNCj4NCj4gKyAgQnVm ZmVyU2l6ZSA9IEJ1ZmZlclNpemVSZXFlc3RlZDsNCj4NCj4gKyAgVGVtcFN0YXR1cyA9IFNtbVN0 b3JlTGliUmVhZCAoMCwgRndWb2xIZWFkZXItPkhlYWRlckxlbmd0aCwgJkJ1ZmZlclNpemUsIChV SU5UOCAqKVZhcmlhYmxlU3RvcmVIZWFkZXIpOw0KPg0KPiArICBpZiAoRUZJX0VSUk9SIChUZW1w U3RhdHVzKSB8fCAoQnVmZmVyU2l6ZVJlcWVzdGVkICE9IEJ1ZmZlclNpemUpKSB7DQo+DQo+ICsg ICAgRnJlZVBvb2wgKFZhcmlhYmxlU3RvcmVIZWFkZXIpOw0KPg0KPiArICAgIEZyZWVQb29sIChG d1ZvbEhlYWRlcik7DQo+DQo+ICsgICAgcmV0dXJuIEVGSV9ERVZJQ0VfRVJST1I7DQo+DQo+ICsg IH0NCj4NCj4gKw0KPg0KPiArICAvLyBDaGVjayB0aGUgVmFyaWFibGUgU3RvcmUgR3VpZA0KPg0K PiArICBpZiAoIUNvbXBhcmVHdWlkICgmVmFyaWFibGVTdG9yZUhlYWRlci0+U2lnbmF0dXJlLCAm Z0VmaVZhcmlhYmxlR3VpZCkgJiYNCj4NCj4gKyAgICAgICFDb21wYXJlR3VpZCAoJlZhcmlhYmxl U3RvcmVIZWFkZXItPlNpZ25hdHVyZSwgJmdFZmlBdXRoZW50aWNhdGVkVmFyaWFibGVHdWlkKSkN Cj4NCj4gKyAgew0KPg0KPiArICAgIERFQlVHICgoDQo+DQo+ICsgICAgICBERUJVR19JTkZPLA0K Pg0KPiArICAgICAgIiVhOiBWYXJpYWJsZSBTdG9yZSBHdWlkIG5vbi1jb21wYXRpYmxlXG4iLA0K Pg0KPiArICAgICAgX19GVU5DVElPTl9fDQo+DQo+ICsgICAgICApKTsNCj4NCj4gKyAgICBGcmVl UG9vbCAoRndWb2xIZWFkZXIpOw0KPg0KPiArICAgIEZyZWVQb29sIChWYXJpYWJsZVN0b3JlSGVh ZGVyKTsNCj4NCj4gKyAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4NCj4gKyAgfQ0KPg0KPiAr DQo+DQo+ICsgIFZhcmlhYmxlU3RvcmVMZW5ndGggPSBQY2RHZXQzMiAoUGNkRmxhc2hOdlN0b3Jh Z2VWYXJpYWJsZVNpemUpIC0gRndWb2xIZWFkZXItPkhlYWRlckxlbmd0aDsNCj4NCj4gKyAgaWYg KFZhcmlhYmxlU3RvcmVIZWFkZXItPlNpemUgIT0gVmFyaWFibGVTdG9yZUxlbmd0aCkgew0KPg0K PiArICAgIERFQlVHICgoDQo+DQo+ICsgICAgICBERUJVR19JTkZPLA0KPg0KPiArICAgICAgIiVh OiBWYXJpYWJsZSBTdG9yZSBMZW5ndGggZG9lcyBub3QgbWF0Y2hcbiIsDQo+DQo+ICsgICAgICBf X0ZVTkNUSU9OX18NCj4NCj4gKyAgICAgICkpOw0KPg0KPiArICAgIEZyZWVQb29sIChGd1ZvbEhl YWRlcik7DQo+DQo+ICsgICAgRnJlZVBvb2wgKFZhcmlhYmxlU3RvcmVIZWFkZXIpOw0KPg0KPiAr ICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPg0KPiArICB9DQo+DQo+ICsNCj4NCj4gKyAgRnJl ZVBvb2wgKEZ3Vm9sSGVhZGVyKTsNCj4NCj4gKyAgRnJlZVBvb2wgKFZhcmlhYmxlU3RvcmVIZWFk ZXIpOw0KPg0KPiArDQo+DQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4NCj4gK30NCj4NCj4g Kw0KPg0KPiArLyoqDQo+DQo+ICsgVGhlIEdldEF0dHJpYnV0ZXMoKSBmdW5jdGlvbiByZXRyaWV2 ZXMgdGhlIGF0dHJpYnV0ZXMgYW5kDQo+DQo+ICsgY3VycmVudCBzZXR0aW5ncyBvZiB0aGUgYmxv Y2suDQo+DQo+ICsNCj4NCj4gKyBAcGFyYW0gVGhpcyAgICAgICAgIEluZGljYXRlcyB0aGUgRUZJ X0ZJUk1XQVJFX1ZPTFVNRV9CTE9DSzJfUFJPVE9DT0wgaW5zdGFuY2UuDQo+DQo+ICsNCj4NCj4g KyBAcGFyYW0gQXR0cmlidXRlcyAgIFBvaW50ZXIgdG8gRUZJX0ZWQl9BVFRSSUJVVEVTXzIgaW4g d2hpY2ggdGhlIGF0dHJpYnV0ZXMgYW5kDQo+DQo+ICsgICAgICAgICAgICAgICAgICAgICBjdXJy ZW50IHNldHRpbmdzIGFyZSByZXR1cm5lZC4NCj4NCj4gKyAgICAgICAgICAgICAgICAgICAgIFR5 cGUgRUZJX0ZWQl9BVFRSSUJVVEVTXzIgaXMgZGVmaW5lZCBpbiBFRklfRklSTVdBUkVfVk9MVU1F X0hFQURFUi4NCj4NCj4gKw0KPg0KPiArIEByZXR2YWwgRUZJX1NVQ0NFU1MgVGhlIGZpcm13YXJl IHZvbHVtZSBhdHRyaWJ1dGVzIHdlcmUgcmV0dXJuZWQuDQo+DQo+ICsNCj4NCj4gKyAqKi8NCj4N Cj4gK0VGSV9TVEFUVVMNCj4NCj4gK0VGSUFQSQ0KPg0KPiArRnZiR2V0QXR0cmlidXRlcyAoDQo+ DQo+ICsgIElOIENPTlNUICBFRklfRklSTVdBUkVfVk9MVU1FX0JMT0NLMl9QUk9UT0NPTCAgKlRo aXMsDQo+DQo+ICsgIE9VVCAgICAgICBFRklfRlZCX0FUVFJJQlVURVNfMiAgICAgICAgICAgICAg ICAgKkF0dHJpYnV0ZXMNCj4NCj4gKyAgKQ0KPg0KPiArew0KPg0KPiArICBFRklfRlZCX0FUVFJJ QlVURVNfMiAgRmxhc2hGdmJBdHRyaWJ1dGVzOw0KPg0KPiArDQo+DQo+ICsgIEZsYXNoRnZiQXR0 cmlidXRlcyA9IChFRklfRlZCX0FUVFJJQlVURVNfMikoDQo+DQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0ZWQjJfUkVBRF9TVEFUVVMgICAgICB8 IC8vIFJlYWRzIGFyZSBjdXJyZW50bHkgZW5hYmxlZA0KPg0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9GVkIyX1dSSVRFX1NUQVRVUyAgICAgfCAv LyBXcml0ZXMgYXJlIGVuYWJsZWQNCj4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBFRklfRlZCMl9TVElDS1lfV1JJVEUgICAgIHwgLy8gQSBibG9jayBl cmFzZSBpcyByZXF1aXJlZCB0byBmbGlwIGJpdHMgaW50byBFRklfRlZCMl9FUkFTRV9QT0xBUklU WQ0KPg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVG SV9GVkIyX01FTU9SWV9NQVBQRUQgICAgfCAvLyBJdCBpcyBtZW1vcnkgbWFwcGVkDQo+DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0ZWQjJfRVJB U0VfUE9MQVJJVFkgICAgIC8vIEFmdGVyIGVyYXN1cmUgYWxsIGJpdHMgdGFrZSB0aGlzIHZhbHVl IChpLmUuICcxJykNCj4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICApOw0KPg0KPiArDQo+DQo+ICsgICpBdHRyaWJ1dGVzID0gRmxhc2hGdmJBdHRyaWJ1 dGVzOw0KPg0KPiArDQo+DQo+ICsgIERFQlVHICgoREVCVUdfQkxLSU8sICJGdmJHZXRBdHRyaWJ1 dGVzKDB4JVgpXG4iLCAqQXR0cmlidXRlcykpOw0KPg0KPiArDQo+DQo+ICsgIHJldHVybiBFRklf U1VDQ0VTUzsNCj4NCj4gK30NCj4NCj4gKw0KPg0KPiArLyoqDQo+DQo+ICsgVGhlIFNldEF0dHJp YnV0ZXMoKSBmdW5jdGlvbiBzZXRzIGNvbmZpZ3VyYWJsZSBmaXJtd2FyZSB2b2x1bWUgYXR0cmli dXRlcw0KPg0KPiArIGFuZCByZXR1cm5zIHRoZSBuZXcgc2V0dGluZ3Mgb2YgdGhlIGZpcm13YXJl IHZvbHVtZS4NCj4NCj4gKw0KPg0KPiArDQo+DQo+ICsgQHBhcmFtIFRoaXMgICAgICAgICAgICAg ICAgICAgICBJbmRpY2F0ZXMgdGhlIEVGSV9GSVJNV0FSRV9WT0xVTUVfQkxPQ0syX1BST1RPQ09M IGluc3RhbmNlLg0KPg0KPiArDQo+DQo+ICsgQHBhcmFtIEF0dHJpYnV0ZXMgICAgICAgICAgICAg ICBPbiBpbnB1dCwgQXR0cmlidXRlcyBpcyBhIHBvaW50ZXIgdG8gRUZJX0ZWQl9BVFRSSUJVVEVT XzINCj4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgY29udGFpbnMg dGhlIGRlc2lyZWQgZmlybXdhcmUgdm9sdW1lIHNldHRpbmdzLg0KPg0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT24gc3VjY2Vzc2Z1bCByZXR1cm4sIGl0IGNvbnRhaW5zIHRo ZSBuZXcgc2V0dGluZ3Mgb2YNCj4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRoZSBmaXJtd2FyZSB2b2x1bWUuDQo+DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBUeXBlIEVGSV9GVkJfQVRUUklCVVRFU18yIGlzIGRlZmluZWQgaW4gRUZJX0ZJUk1XQVJF X1ZPTFVNRV9IRUFERVIuDQo+DQo+ICsNCj4NCj4gKyBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAg ICAgICAgIFRoZSBmaXJtd2FyZSB2b2x1bWUgYXR0cmlidXRlcyB3ZXJlIHJldHVybmVkLg0KPg0K PiArDQo+DQo+ICsgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICBUaGUgYXR0cmlidXRl cyByZXF1ZXN0ZWQgYXJlIGluIGNvbmZsaWN0IHdpdGggdGhlIGNhcGFiaWxpdGllcw0KPg0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgZGVjbGFyZWQgaW4gdGhlIGZpcm13 YXJlIHZvbHVtZSBoZWFkZXIuDQo+DQo+ICsNCj4NCj4gKyAqKi8NCj4NCj4gK0VGSV9TVEFUVVMN Cj4NCj4gK0VGSUFQSQ0KPg0KPiArRnZiU2V0QXR0cmlidXRlcyAoDQo+DQo+ICsgIElOIENPTlNU ICBFRklfRklSTVdBUkVfVk9MVU1FX0JMT0NLMl9QUk9UT0NPTCAgKlRoaXMsDQo+DQo+ICsgIElO IE9VVCAgICBFRklfRlZCX0FUVFJJQlVURVNfMiAgICAgICAgICAgICAgICAgKkF0dHJpYnV0ZXMN Cj4NCj4gKyAgKQ0KPg0KPiArew0KPg0KPiArICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRnZiU2V0 QXR0cmlidXRlcygweCVYKSBpcyBub3Qgc3VwcG9ydGVkXG4iLCAqQXR0cmlidXRlcykpOw0KPg0K PiArICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPg0KPiArfQ0KPg0KPiArDQo+DQo+ICsvKioN Cj4NCj4gKyBUaGUgR2V0UGh5c2ljYWxBZGRyZXNzKCkgZnVuY3Rpb24gcmV0cmlldmVzIHRoZSBi YXNlIGFkZHJlc3Mgb2YNCj4NCj4gKyBhIG1lbW9yeS1tYXBwZWQgZmlybXdhcmUgdm9sdW1lLiBU aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQNCj4NCj4gKyBvbmx5IGZvciBtZW1vcnktbWFw cGVkIGZpcm13YXJlIHZvbHVtZXMuDQo+DQo+ICsNCj4NCj4gKyBAcGFyYW0gVGhpcyAgICAgICAg ICAgICAgIEluZGljYXRlcyB0aGUgRUZJX0ZJUk1XQVJFX1ZPTFVNRV9CTE9DSzJfUFJPVE9DT0wg aW5zdGFuY2UuDQo+DQo+ICsNCj4NCj4gKyBAcGFyYW0gQWRkcmVzcyAgICAgICAgICAgIFBvaW50 ZXIgdG8gYSBjYWxsZXItYWxsb2NhdGVkDQo+DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICBFRklfUEhZU0lDQUxfQUREUkVTUyB0aGF0LCBvbiBzdWNjZXNzZnVsDQo+DQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJvbSBHZXRQaHlzaWNhbEFkZHJlc3MoKSwgY29u dGFpbnMgdGhlDQo+DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlIGFkZHJlc3Mg b2YgdGhlIGZpcm13YXJlIHZvbHVtZS4NCj4NCj4gKw0KPg0KPiArIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgVGhlIGZpcm13YXJlIHZvbHVtZSBiYXNlIGFkZHJlc3Mgd2FzIHJldHVybmVkLg0K Pg0KPiArDQo+DQo+ICsgQHJldHZhbCBFRklfTk9UX1NVUFBPUlRFRCBUaGUgZmlybXdhcmUgdm9s dW1lIGlzIG5vdCBtZW1vcnkgbWFwcGVkLg0KPg0KPiArDQo+DQo+ICsgKiovDQo+DQo+ICtFRklf U1RBVFVTDQo+DQo+ICtFRklBUEkNCj4NCj4gK0Z2YkdldFBoeXNpY2FsQWRkcmVzcyAoDQo+DQo+ ICsgIElOIENPTlNUICBFRklfRklSTVdBUkVfVk9MVU1FX0JMT0NLMl9QUk9UT0NPTCAgKlRoaXMs DQo+DQo+ICsgIE9VVCAgICAgICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgICAgICAgICAg KkFkZHJlc3MNCj4NCj4gKyAgKQ0KPg0KPiArew0KPg0KPiArICBTTU1TVE9SRV9JTlNUQU5DRSAg Kkluc3RhbmNlOw0KPg0KPiArDQo+DQo+ICsgIEluc3RhbmNlID0gSU5TVEFOQ0VfRlJPTV9GVkJf VEhJUyAoVGhpcyk7DQo+DQo+ICsNCj4NCj4gKyAgQVNTRVJUIChBZGRyZXNzICE9IE5VTEwpOw0K Pg0KPiArICAqQWRkcmVzcyA9IEluc3RhbmNlLT5NbWlvQWRkcmVzczsNCj4NCj4gKw0KPg0KPiAr ICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+DQo+ICt9DQo+DQo+ICsNCj4NCj4gKy8qKg0KPg0KPiAr IFRoZSBHZXRCbG9ja1NpemUoKSBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIHNpemUgb2YgdGhlIHJl cXVlc3RlZA0KPg0KPiArIGJsb2NrLiBJdCBhbHNvIHJldHVybnMgdGhlIG51bWJlciBvZiBhZGRp dGlvbmFsIGJsb2NrcyB3aXRoDQo+DQo+ICsgdGhlIGlkZW50aWNhbCBzaXplLiBUaGUgR2V0Qmxv Y2tTaXplKCkgZnVuY3Rpb24gaXMgdXNlZCB0bw0KPg0KPiArIHJldHJpZXZlIHRoZSBibG9jayBt YXAgKHNlZSBFRklfRklSTVdBUkVfVk9MVU1FX0hFQURFUikuDQo+DQo+ICsNCj4NCj4gKw0KPg0K PiArIEBwYXJhbSBUaGlzICAgICAgICAgICAgICAgICAgICAgSW5kaWNhdGVzIHRoZSBFRklfRklS TVdBUkVfVk9MVU1FX0JMT0NLMl9QUk9UT0NPTCBpbnN0YW5jZS4NCj4NCj4gKw0KPg0KPiArIEBw YXJhbSBMYmEgICAgICAgICAgICAgICAgICAgICAgSW5kaWNhdGVzIHRoZSBibG9jayBmb3Igd2hp Y2ggdG8gcmV0dXJuIHRoZSBzaXplLg0KPg0KPiArDQo+DQo+ICsgQHBhcmFtIEJsb2NrU2l6ZSAg ICAgICAgICAgICAgICBQb2ludGVyIHRvIGEgY2FsbGVyLWFsbG9jYXRlZCBVSU5UTiBpbiB3aGlj aA0KPg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNpemUgb2YgdGhl IGJsb2NrIGlzIHJldHVybmVkLg0KPg0KPiArDQo+DQo+ICsgQHBhcmFtIE51bWJlck9mQmxvY2tz ICAgICAgICAgICBQb2ludGVyIHRvIGEgY2FsbGVyLWFsbG9jYXRlZCBVSU5UTiBpbg0KPg0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggdGhlIG51bWJlciBvZiBjb25z ZWN1dGl2ZSBibG9ja3MsDQo+DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dGFydGluZyB3aXRoIExiYSwgaXMgcmV0dXJuZWQuIEFsbA0KPg0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYmxvY2tzIGluIHRoaXMgcmFuZ2UgaGF2ZSBhIHNpemUgb2YNCj4N Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrU2l6ZS4NCj4NCj4gKw0K Pg0KPiArDQo+DQo+ICsgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBUaGUgZmlybXdh cmUgdm9sdW1lIGJhc2UgYWRkcmVzcyB3YXMgcmV0dXJuZWQuDQo+DQo+ICsNCj4NCj4gKyBAcmV0 dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIFRoZSByZXF1ZXN0ZWQgTEJBIGlzIG91dCBvZiBy YW5nZS4NCj4NCj4gKw0KPg0KPiArICoqLw0KPg0KPiArRUZJX1NUQVRVUw0KPg0KPiArRUZJQVBJ DQo+DQo+ICtGdmJHZXRCbG9ja1NpemUgKA0KPg0KPiArICBJTiBDT05TVCAgRUZJX0ZJUk1XQVJF X1ZPTFVNRV9CTE9DSzJfUFJPVE9DT0wgICpUaGlzLA0KPg0KPiArICBJTiAgICAgICAgRUZJX0xC QSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExiYSwNCj4NCj4gKyAgT1VUICAgICAgIFVJ TlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqQmxvY2tTaXplLA0KPg0KPiArICBP VVQgICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpOdW1iZXJPZkJs b2Nrcw0KPg0KPiArICApDQo+DQo+ICt7DQo+DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICBTdGF0 dXM7DQo+DQo+ICsgIFNNTVNUT1JFX0lOU1RBTkNFICAqSW5zdGFuY2U7DQo+DQo+ICsNCj4NCj4g KyAgSW5zdGFuY2UgPSBJTlNUQU5DRV9GUk9NX0ZWQl9USElTIChUaGlzKTsNCj4NCj4gKw0KPg0K PiArICBERUJVRyAoKERFQlVHX0JMS0lPLCAiRnZiR2V0QmxvY2tTaXplKExiYT0lbGQsIEJsb2Nr U2l6ZT0weCV4LCBMYXN0QmxvY2s9JWxkKVxuIiwgTGJhLCBJbnN0YW5jZS0+QmxvY2tTaXplLCBJ bnN0YW5jZS0+TGFzdEJsb2NrKSk7DQo+DQo+ICsNCj4NCj4gKyAgaWYgKExiYSA+IEluc3RhbmNl LT5MYXN0QmxvY2spIHsNCj4NCj4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRnZiR2V0Qmxv Y2tTaXplOiBFUlJPUiAtIFBhcmFtZXRlciBMQkEgJWxkIGlzIGJleW9uZCB0aGUgbGFzdCBMYmEg KCVsZCkuXG4iLCBMYmEsIEluc3RhbmNlLT5MYXN0QmxvY2spKTsNCj4NCj4gKyAgICBTdGF0dXMg PSBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+DQo+ICsgIH0gZWxzZSB7DQo+DQo+ICsgICAgKkJs b2NrU2l6ZSAgICAgID0gKFVJTlROKUluc3RhbmNlLT5CbG9ja1NpemU7DQo+DQo+ICsgICAgKk51 bWJlck9mQmxvY2tzID0gKFVJTlROKShJbnN0YW5jZS0+TGFzdEJsb2NrIC0gTGJhICsgMSk7DQo+ DQo+ICsNCj4NCj4gKyAgICBERUJVRyAoKERFQlVHX0JMS0lPLCAiRnZiR2V0QmxvY2tTaXplOiAq QmxvY2tTaXplPTB4JXgsICpOdW1iZXJPZkJsb2Nrcz0weCV4LlxuIiwgKkJsb2NrU2l6ZSwgKk51 bWJlck9mQmxvY2tzKSk7DQo+DQo+ICsNCj4NCj4gKyAgICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsN Cj4NCj4gKyAgfQ0KPg0KPiArDQo+DQo+ICsgIHJldHVybiBTdGF0dXM7DQo+DQo+ICt9DQo+DQo+ ICsNCj4NCj4gKy8qKg0KPg0KPiArIFJlYWRzIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJ5dGVz IGludG8gYSBidWZmZXIgZnJvbSB0aGUgc3BlY2lmaWVkIGJsb2NrLg0KPg0KPiArDQo+DQo+ICsg VGhlIFJlYWQoKSBmdW5jdGlvbiByZWFkcyB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBieXRlcyBm cm9tIHRoZQ0KPg0KPiArIHJlcXVlc3RlZCBibG9jayBhbmQgc3RvcmVzIHRoZW0gaW4gdGhlIHBy b3ZpZGVkIGJ1ZmZlci4NCj4NCj4gKyBJbXBsZW1lbnRhdGlvbnMgc2hvdWxkIGJlIG1pbmRmdWwg dGhhdCB0aGUgZmlybXdhcmUgdm9sdW1lDQo+DQo+ICsgbWlnaHQgYmUgaW4gdGhlIFJlYWREaXNh YmxlZCBzdGF0ZS4gSWYgaXQgaXMgaW4gdGhpcyBzdGF0ZSwNCj4NCj4gKyB0aGUgUmVhZCgpIGZ1 bmN0aW9uIG11c3QgcmV0dXJuIHRoZSBzdGF0dXMgY29kZQ0KPg0KPiArIEVGSV9BQ0NFU1NfREVO SUVEIHdpdGhvdXQgbW9kaWZ5aW5nIHRoZSBjb250ZW50cyBvZiB0aGUNCj4NCj4gKyBidWZmZXIu IFRoZSBSZWFkKCkgZnVuY3Rpb24gbXVzdCBhbHNvIHByZXZlbnQgc3Bhbm5pbmcgYmxvY2sNCj4N Cj4gKyBib3VuZGFyaWVzLiBJZiBhIHJlYWQgaXMgcmVxdWVzdGVkIHRoYXQgd291bGQgc3BhbiBh IGJsb2NrDQo+DQo+ICsgYm91bmRhcnksIHRoZSByZWFkIG11c3QgcmVhZCB1cCB0byB0aGUgYm91 bmRhcnkgYnV0IG5vdA0KPg0KPiArIGJleW9uZC4gVGhlIG91dHB1dCBwYXJhbWV0ZXIgTnVtQnl0 ZXMgbXVzdCBiZSBzZXQgdG8gY29ycmVjdGx5DQo+DQo+ICsgaW5kaWNhdGUgdGhlIG51bWJlciBv ZiBieXRlcyBhY3R1YWxseSByZWFkLiBUaGUgY2FsbGVyIG11c3QgYmUNCj4NCj4gKyBhd2FyZSB0 aGF0IGEgcmVhZCBtYXkgYmUgcGFydGlhbGx5IGNvbXBsZXRlZC4NCj4NCj4gKw0KPg0KPiArIEBw YXJhbSBUaGlzICAgICAgICAgICAgICAgICBJbmRpY2F0ZXMgdGhlIEVGSV9GSVJNV0FSRV9WT0xV TUVfQkxPQ0syX1BST1RPQ09MIGluc3RhbmNlLg0KPg0KPiArDQo+DQo+ICsgQHBhcmFtIExiYSAg ICAgICAgICAgICAgICAgIFRoZSBzdGFydGluZyBsb2dpY2FsIGJsb2NrIGluZGV4IGZyb20gd2hp Y2ggdG8gcmVhZC4NCj4NCj4gKw0KPg0KPiArIEBwYXJhbSBPZmZzZXQgICAgICAgICAgICAgICBP ZmZzZXQgaW50byB0aGUgYmxvY2sgYXQgd2hpY2ggdG8gYmVnaW4gcmVhZGluZy4NCj4NCj4gKw0K Pg0KPiArIEBwYXJhbSBOdW1CeXRlcyAgICAgICAgICAgICBQb2ludGVyIHRvIGEgVUlOVE4uDQo+ DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0IGVudHJ5LCAqTnVtQnl0ZXMgY29u dGFpbnMgdGhlIHRvdGFsIHNpemUgb2YgdGhlIGJ1ZmZlci4NCj4NCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQXQgZXhpdCwgKk51bUJ5dGVzIGNvbnRhaW5zIHRoZSB0b3RhbCBudW1i ZXIgb2YgYnl0ZXMgcmVhZC4NCj4NCj4gKw0KPg0KPiArIEBwYXJhbSBCdWZmZXIgICAgICAgICAg ICAgICBQb2ludGVyIHRvIGEgY2FsbGVyLWFsbG9jYXRlZCBidWZmZXIgdGhhdCB3aWxsIGJlIHVz ZWQNCj4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gaG9sZCB0aGUgZGF0YSB0 aGF0IGlzIHJlYWQuDQo+DQo+ICsNCj4NCj4gKyBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAg VGhlIGZpcm13YXJlIHZvbHVtZSB3YXMgcmVhZCBzdWNjZXNzZnVsbHksICBhbmQgY29udGVudHMg YXJlDQo+DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEJ1ZmZlci4NCj4NCj4g Kw0KPg0KPiArIEByZXR2YWwgRUZJX0JBRF9CVUZGRVJfU0laRSBSZWFkIGF0dGVtcHRlZCBhY3Jv c3MgYW4gTEJBIGJvdW5kYXJ5Lg0KPg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP biBvdXRwdXQsIE51bUJ5dGVzIGNvbnRhaW5zIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMNCj4N Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQgaW4gQnVmZmVyLg0KPg0K PiArDQo+DQo+ICsgQHJldHZhbCBFRklfQUNDRVNTX0RFTklFRCAgIFRoZSBmaXJtd2FyZSB2b2x1 bWUgaXMgaW4gdGhlIFJlYWREaXNhYmxlZCBzdGF0ZS4NCj4NCj4gKw0KPg0KPiArIEByZXR2YWwg RUZJX0RFVklDRV9FUlJPUiAgICBUaGUgYmxvY2sgZGV2aWNlIGlzIG5vdCBmdW5jdGlvbmluZyBj b3JyZWN0bHkgYW5kIGNvdWxkIG5vdCBiZSByZWFkLg0KPg0KPiArDQo+DQo+ICsgKiovDQo+DQo+ ICtFRklfU1RBVFVTDQo+DQo+ICtFRklBUEkNCj4NCj4gK0Z2YlJlYWQgKA0KPg0KPiArICBJTiBD T05TVCAgRUZJX0ZJUk1XQVJFX1ZPTFVNRV9CTE9DSzJfUFJPVE9DT0wgICpUaGlzLA0KPg0KPiAr ICBJTiAgICAgICAgRUZJX0xCQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExiYSwNCj4N Cj4gKyAgSU4gICAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPZmZz ZXQsDQo+DQo+ICsgIElOIE9VVCAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKk51bUJ5dGVzLA0KPg0KPiArICBJTiBPVVQgICAgVUlOVDggICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICpCdWZmZXINCj4NCj4gKyAgKQ0KPg0KPiArew0KPg0KPiArICBVSU5UTiAg ICAgICAgICAgICAgQmxvY2tTaXplOw0KPg0KPiArICBTTU1TVE9SRV9JTlNUQU5DRSAgKkluc3Rh bmNlOw0KPg0KPiArDQo+DQo+ICsgIEluc3RhbmNlID0gSU5TVEFOQ0VfRlJPTV9GVkJfVEhJUyAo VGhpcyk7DQo+DQo+ICsNCj4NCj4gKyAgREVCVUcgKChERUJVR19CTEtJTywgIkZ2YlJlYWQoUGFy YW1ldGVyczogTGJhPSVsZCwgT2Zmc2V0PTB4JXgsICpOdW1CeXRlcz0weCV4LCBCdWZmZXIgQCAw eCUwOHgpXG4iLCBMYmEsIE9mZnNldCwgKk51bUJ5dGVzLCBCdWZmZXIpKTsNCj4NCj4gKw0KPg0K PiArICAvLyBDYWNoZSB0aGUgYmxvY2sgc2l6ZSB0byBhdm9pZCBkZS1yZWZlcmVuY2luZyBwb2lu dGVycyBhbGwgdGhlIHRpbWUNCj4NCj4gKyAgQmxvY2tTaXplID0gSW5zdGFuY2UtPkJsb2NrU2l6 ZTsNCj4NCj4gKw0KPg0KPiArICAvLyBUaGUgcmVhZCBtdXN0IG5vdCBzcGFuIGJsb2NrIGJvdW5k YXJpZXMuDQo+DQo+ICsgIC8vIFdlIG5lZWQgdG8gY2hlY2sgZWFjaCB2YXJpYWJsZSBpbmRpdmlk dWFsbHkgYmVjYXVzZSBhZGRpbmcgdHdvIGxhcmdlIHZhbHVlcyB0b2dldGhlciBvdmVyZmxvd3Mu DQo+DQo+ICsgIGlmICgoT2Zmc2V0ICAgICAgICAgICAgICAgPj0gQmxvY2tTaXplKSB8fA0KPg0K PiArICAgICAgKCpOdW1CeXRlcyAgICAgICAgICAgID4gIEJsb2NrU2l6ZSkgfHwNCj4NCj4gKyAg ICAgICgoT2Zmc2V0ICsgKk51bUJ5dGVzKSA+ICBCbG9ja1NpemUpKQ0KPg0KPiArICB7DQo+DQo+ ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkZ2YlJlYWQ6IEVSUk9SIC0gRUZJX0JBRF9CVUZG RVJfU0laRTogKE9mZnNldD0weCV4ICsgTnVtQnl0ZXM9MHgleCkgPiBCbG9ja1NpemU9MHgleFxu IiwgT2Zmc2V0LCAqTnVtQnl0ZXMsIEJsb2NrU2l6ZSkpOw0KPg0KPiArICAgIHJldHVybiBFRklf QkFEX0JVRkZFUl9TSVpFOw0KPg0KPiArICB9DQo+DQo+ICsNCj4NCj4gKyAgLy8gV2UgbXVzdCBo YXZlIHNvbWUgYnl0ZXMgdG8gcmVhZA0KPg0KPiArICBpZiAoKk51bUJ5dGVzID09IDApIHsNCj4N Cj4gKyAgICByZXR1cm4gRUZJX0JBRF9CVUZGRVJfU0laRTsNCj4NCj4gKyAgfQ0KPg0KPiArDQo+ DQo+ICsgIHJldHVybiBTbW1TdG9yZUxpYlJlYWQgKExiYSwgT2Zmc2V0LCBOdW1CeXRlcywgQnVm ZmVyKTsNCj4NCj4gK30NCj4NCj4gKw0KPg0KPiArLyoqDQo+DQo+ICsgV3JpdGVzIHRoZSBzcGVj aWZpZWQgbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIGlucHV0IGJ1ZmZlciB0byB0aGUgYmxvY2su DQo+DQo+ICsNCj4NCj4gKyBUaGUgV3JpdGUoKSBmdW5jdGlvbiB3cml0ZXMgdGhlIHNwZWNpZmll ZCBudW1iZXIgb2YgYnl0ZXMgZnJvbQ0KPg0KPiArIHRoZSBwcm92aWRlZCBidWZmZXIgdG8gdGhl IHNwZWNpZmllZCBibG9jayBhbmQgb2Zmc2V0LiBJZiB0aGUNCj4NCj4gKyBmaXJtd2FyZSB2b2x1 bWUgaXMgc3RpY2t5IHdyaXRlLCB0aGUgY2FsbGVyIG11c3QgZW5zdXJlIHRoYXQNCj4NCj4gKyBh bGwgdGhlIGJpdHMgb2YgdGhlIHNwZWNpZmllZCByYW5nZSB0byB3cml0ZSBhcmUgaW4gdGhlDQo+ DQo+ICsgRUZJX0ZWQl9FUkFTRV9QT0xBUklUWSBzdGF0ZSBiZWZvcmUgY2FsbGluZyB0aGUgV3Jp dGUoKQ0KPg0KPiArIGZ1bmN0aW9uLCBvciBlbHNlIHRoZSByZXN1bHQgd2lsbCBiZSB1bnByZWRp Y3RhYmxlLiBUaGlzDQo+DQo+ICsgdW5wcmVkaWN0YWJpbGl0eSBhcmlzZXMgYmVjYXVzZSwgZm9y IGEgc3RpY2t5LXdyaXRlIGZpcm13YXJlDQo+DQo+ICsgdm9sdW1lLCBhIHdyaXRlIG1heSBuZWdh dGUgYSBiaXQgaW4gdGhlIEVGSV9GVkJfRVJBU0VfUE9MQVJJVFkNCj4NCj4gKyBzdGF0ZSBidXQg Y2Fubm90IGZsaXAgaXQgYmFjayBhZ2Fpbi4gIEJlZm9yZSBjYWxsaW5nIHRoZQ0KPg0KPiArIFdy aXRlKCkgZnVuY3Rpb24sICBpdCBpcyByZWNvbW1lbmRlZCBmb3IgdGhlIGNhbGxlciB0byBmaXJz dCBjYWxsDQo+DQo+ICsgdGhlIEVyYXNlQmxvY2tzKCkgZnVuY3Rpb24gdG8gZXJhc2UgdGhlIHNw ZWNpZmllZCBibG9jayB0bw0KPg0KPiArIHdyaXRlLiBBIGJsb2NrIGVyYXNlIGN5Y2xlIHdpbGwg dHJhbnNpdGlvbiBiaXRzIGZyb20gdGhlDQo+DQo+ICsgKE5PVClFRklfRlZCX0VSQVNFX1BPTEFS SVRZIHN0YXRlIGJhY2sgdG8gdGhlDQo+DQo+ICsgRUZJX0ZWQl9FUkFTRV9QT0xBUklUWSBzdGF0 ZS4gSW1wbGVtZW50YXRpb25zIHNob3VsZCBiZQ0KPg0KPiArIG1pbmRmdWwgdGhhdCB0aGUgZmly bXdhcmUgdm9sdW1lIG1pZ2h0IGJlIGluIHRoZSBXcml0ZURpc2FibGVkDQo+DQo+ICsgc3RhdGUu IElmIGl0IGlzIGluIHRoaXMgc3RhdGUsIHRoZSBXcml0ZSgpIGZ1bmN0aW9uIG11c3QNCj4NCj4g KyByZXR1cm4gdGhlIHN0YXR1cyBjb2RlIEVGSV9BQ0NFU1NfREVOSUVEIHdpdGhvdXQgbW9kaWZ5 aW5nIHRoZQ0KPg0KPiArIGNvbnRlbnRzIG9mIHRoZSBmaXJtd2FyZSB2b2x1bWUuIFRoZSBXcml0 ZSgpIGZ1bmN0aW9uIG11c3QNCj4NCj4gKyBhbHNvIHByZXZlbnQgc3Bhbm5pbmcgYmxvY2sgYm91 bmRhcmllcy4gSWYgYSB3cml0ZSBpcw0KPg0KPiArIHJlcXVlc3RlZCB0aGF0IHNwYW5zIGEgYmxv Y2sgYm91bmRhcnksIHRoZSB3cml0ZSBtdXN0IHN0b3JlIHVwDQo+DQo+ICsgdG8gdGhlIGJvdW5k YXJ5IGJ1dCBub3QgYmV5b25kLiBUaGUgb3V0cHV0IHBhcmFtZXRlciBOdW1CeXRlcw0KPg0KPiAr IG11c3QgYmUgc2V0IHRvIGNvcnJlY3RseSBpbmRpY2F0ZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIGFj dHVhbGx5DQo+DQo+ICsgd3JpdHRlbi4gVGhlIGNhbGxlciBtdXN0IGJlIGF3YXJlIHRoYXQgYSB3 cml0ZSBtYXkgYmUNCj4NCj4gKyBwYXJ0aWFsbHkgY29tcGxldGVkLiBBbGwgd3JpdGVzLCBwYXJ0 aWFsIG9yIG90aGVyd2lzZSwgbXVzdCBiZQ0KPg0KPiArIGZ1bGx5IGZsdXNoZWQgdG8gdGhlIGhh cmR3YXJlIGJlZm9yZSB0aGUgV3JpdGUoKSBzZXJ2aWNlDQo+DQo+ICsgcmV0dXJucy4NCj4NCj4g Kw0KPg0KPiArIEBwYXJhbSBUaGlzICAgICAgICAgICAgICAgICBJbmRpY2F0ZXMgdGhlIEVGSV9G SVJNV0FSRV9WT0xVTUVfQkxPQ0syX1BST1RPQ09MIGluc3RhbmNlLg0KPg0KPiArDQo+DQo+ICsg QHBhcmFtIExiYSAgICAgICAgICAgICAgICAgIFRoZSBzdGFydGluZyBsb2dpY2FsIGJsb2NrIGlu ZGV4IHRvIHdyaXRlIHRvLg0KPg0KPiArDQo+DQo+ICsgQHBhcmFtIE9mZnNldCAgICAgICAgICAg ICAgIE9mZnNldCBpbnRvIHRoZSBibG9jayBhdCB3aGljaCB0byBiZWdpbiB3cml0aW5nLg0KPg0K PiArDQo+DQo+ICsgQHBhcmFtIE51bUJ5dGVzICAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIGEg VUlOVE4uDQo+DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0IGVudHJ5LCAqTnVt Qnl0ZXMgY29udGFpbnMgdGhlIHRvdGFsIHNpemUgb2YgdGhlIGJ1ZmZlci4NCj4NCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQXQgZXhpdCwgKk51bUJ5dGVzIGNvbnRhaW5zIHRoZSB0 b3RhbCBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbi4NCj4NCj4gKw0KPg0KPiArIEBw YXJhbSBCdWZmZXIgICAgICAgICAgICAgICBUaGUgcG9pbnRlciB0byBhIGNhbGxlci1hbGxvY2F0 ZWQgYnVmZmVyIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBmb3IgdGhlIHdyaXRlLg0KPg0KPiAr DQo+DQo+ICsgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgIFRoZSBmaXJtd2FyZSB2b2x1bWUg d2FzIHdyaXR0ZW4gc3VjY2Vzc2Z1bGx5Lg0KPg0KPiArDQo+DQo+ICsgQHJldHZhbCBFRklfQkFE X0JVRkZFUl9TSVpFIFRoZSB3cml0ZSB3YXMgYXR0ZW1wdGVkIGFjcm9zcyBhbiBMQkEgYm91bmRh cnkuDQo+DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgTnVtQnl0 ZXMgY29udGFpbnMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcw0KPg0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhY3R1YWxseSB3cml0dGVuLg0KPg0KPiArDQo+DQo+ICsgQHJldHZh bCBFRklfQUNDRVNTX0RFTklFRCAgIFRoZSBmaXJtd2FyZSB2b2x1bWUgaXMgaW4gdGhlIFdyaXRl RGlzYWJsZWQgc3RhdGUuDQo+DQo+ICsNCj4NCj4gKyBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1Ig ICAgVGhlIGJsb2NrIGRldmljZSBpcyBtYWxmdW5jdGlvbmluZyBhbmQgY291bGQgbm90IGJlIHdy aXR0ZW4uDQo+DQo+ICsNCj4NCj4gKw0KPg0KPiArICoqLw0KPg0KPiArRUZJX1NUQVRVUw0KPg0K PiArRUZJQVBJDQo+DQo+ICtGdmJXcml0ZSAoDQo+DQo+ICsgIElOIENPTlNUICBFRklfRklSTVdB UkVfVk9MVU1FX0JMT0NLMl9QUk9UT0NPTCAgKlRoaXMsDQo+DQo+ICsgIElOICAgICAgICBFRklf TEJBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGJhLA0KPg0KPiArICBJTiAgICAgICAg VUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCwNCj4NCj4gKyAgSU4g T1VUICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqTnVtQnl0ZXMsDQo+ DQo+ICsgIElOICAgICAgICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkJ1 ZmZlcg0KPg0KPiArICApDQo+DQo+ICt7DQo+DQo+ICsgIFVJTlROICAgICAgICAgICAgICBCbG9j a1NpemU7DQo+DQo+ICsgIFNNTVNUT1JFX0lOU1RBTkNFICAqSW5zdGFuY2U7DQo+DQo+ICsNCj4N Cj4gKyAgSW5zdGFuY2UgPSBJTlNUQU5DRV9GUk9NX0ZWQl9USElTIChUaGlzKTsNCj4NCj4gKw0K Pg0KPiArICBERUJVRyAoKERFQlVHX0JMS0lPLCAiRnZiV3JpdGUoUGFyYW1ldGVyczogTGJhPSVs ZCwgT2Zmc2V0PTB4JXgsICpOdW1CeXRlcz0weCV4LCBCdWZmZXIgQCAweCUwOHgpXG4iLCBMYmEs IE9mZnNldCwgKk51bUJ5dGVzLCBCdWZmZXIpKTsNCj4NCj4gKw0KPg0KPiArICAvLyBDYWNoZSB0 aGUgYmxvY2sgc2l6ZSB0byBhdm9pZCBkZS1yZWZlcmVuY2luZyBwb2ludGVycyBhbGwgdGhlIHRp bWUNCj4NCj4gKyAgQmxvY2tTaXplID0gSW5zdGFuY2UtPkJsb2NrU2l6ZTsNCj4NCj4gKw0KPg0K PiArICAvLyBUaGUgcmVhZCBtdXN0IG5vdCBzcGFuIGJsb2NrIGJvdW5kYXJpZXMuDQo+DQo+ICsg IC8vIFdlIG5lZWQgdG8gY2hlY2sgZWFjaCB2YXJpYWJsZSBpbmRpdmlkdWFsbHkgYmVjYXVzZSBh ZGRpbmcgdHdvIGxhcmdlIHZhbHVlcyB0b2dldGhlciBvdmVyZmxvd3MuDQo+DQo+ICsgIGlmICgo T2Zmc2V0ICAgICAgICAgICAgICAgPj0gQmxvY2tTaXplKSB8fA0KPg0KPiArICAgICAgKCpOdW1C eXRlcyAgICAgICAgICAgID4gIEJsb2NrU2l6ZSkgfHwNCj4NCj4gKyAgICAgICgoT2Zmc2V0ICsg Kk51bUJ5dGVzKSA+ICBCbG9ja1NpemUpKQ0KPg0KPiArICB7DQo+DQo+ICsgICAgREVCVUcgKChE RUJVR19FUlJPUiwgIkZ2YlJlYWQ6IEVSUk9SIC0gRUZJX0JBRF9CVUZGRVJfU0laRTogKE9mZnNl dD0weCV4ICsgTnVtQnl0ZXM9MHgleCkgPiBCbG9ja1NpemU9MHgleFxuIiwgT2Zmc2V0LCAqTnVt Qnl0ZXMsIEJsb2NrU2l6ZSkpOw0KPg0KPiArICAgIHJldHVybiBFRklfQkFEX0JVRkZFUl9TSVpF Ow0KPg0KPiArICB9DQo+DQo+ICsNCj4NCj4gKyAgLy8gV2UgbXVzdCBoYXZlIHNvbWUgYnl0ZXMg dG8gcmVhZA0KPg0KPiArICBpZiAoKk51bUJ5dGVzID09IDApIHsNCj4NCj4gKyAgICByZXR1cm4g RUZJX0JBRF9CVUZGRVJfU0laRTsNCj4NCj4gKyAgfQ0KPg0KPiArDQo+DQo+ICsgIHJldHVybiBT bW1TdG9yZUxpYldyaXRlIChMYmEsIE9mZnNldCwgTnVtQnl0ZXMsIEJ1ZmZlcik7DQo+DQo+ICt9 DQo+DQo+ICsNCj4NCj4gKy8qKg0KPg0KPiArIEVyYXNlcyBhbmQgaW5pdGlhbGlzZXMgYSBmaXJt d2FyZSB2b2x1bWUgYmxvY2suDQo+DQo+ICsNCj4NCj4gKyBUaGUgRXJhc2VCbG9ja3MoKSBmdW5j dGlvbiBlcmFzZXMgb25lIG9yIG1vcmUgYmxvY2tzIGFzIGRlbm90ZWQNCj4NCj4gKyBieSB0aGUg dmFyaWFibGUgYXJndW1lbnQgbGlzdC4gVGhlIGVudGlyZSBwYXJhbWV0ZXIgbGlzdCBvZg0KPg0K PiArIGJsb2NrcyBtdXN0IGJlIHZlcmlmaWVkIGJlZm9yZSBlcmFzaW5nIGFueSBibG9ja3MuIElm IGEgYmxvY2sgaXMNCj4NCj4gKyByZXF1ZXN0ZWQgdGhhdCBkb2VzIG5vdCBleGlzdCB3aXRoaW4g dGhlIGFzc29jaWF0ZWQgZmlybXdhcmUNCj4NCj4gKyB2b2x1bWUgKGl0IGhhcyBhIGxhcmdlciBp bmRleCB0aGFuIHRoZSBsYXN0IGJsb2NrIG9mIHRoZQ0KPg0KPiArIGZpcm13YXJlIHZvbHVtZSks IHRoZSBFcmFzZUJsb2NrcygpIGZ1bmN0aW9uIG11c3QgcmV0dXJuIHRoZQ0KPg0KPiArIHN0YXR1 cyBjb2RlIEVGSV9JTlZBTElEX1BBUkFNRVRFUiB3aXRob3V0IG1vZGlmeWluZyB0aGUgY29udGVu dHMNCj4NCj4gKyBvZiB0aGUgZmlybXdhcmUgdm9sdW1lLiBJbXBsZW1lbnRhdGlvbnMgc2hvdWxk IGJlIG1pbmRmdWwgdGhhdA0KPg0KPiArIHRoZSBmaXJtd2FyZSB2b2x1bWUgbWlnaHQgYmUgaW4g dGhlIFdyaXRlRGlzYWJsZWQgc3RhdGUuIElmIGl0DQo+DQo+ICsgaXMgaW4gdGhpcyBzdGF0ZSwg dGhlIEVyYXNlQmxvY2tzKCkgZnVuY3Rpb24gbXVzdCByZXR1cm4gdGhlDQo+DQo+ICsgc3RhdHVz IGNvZGUgRUZJX0FDQ0VTU19ERU5JRUQgd2l0aG91dCBtb2RpZnlpbmcgdGhlIGNvbnRlbnRzIG9m DQo+DQo+ICsgdGhlIGZpcm13YXJlIHZvbHVtZS4gQWxsIGNhbGxzIHRvIEVyYXNlQmxvY2tzKCkg bXVzdCBiZSBmdWxseQ0KPg0KPiArIGZsdXNoZWQgdG8gdGhlIGhhcmR3YXJlIGJlZm9yZSB0aGUg RXJhc2VCbG9ja3MoKSBzZXJ2aWNlDQo+DQo+ICsgcmV0dXJucy4NCj4NCj4gKw0KPg0KPiArIEBw YXJhbSBUaGlzICAgICAgICAgICAgICAgICAgICAgSW5kaWNhdGVzIHRoZSBFRklfRklSTVdBUkVf Vk9MVU1FX0JMT0NLMl9QUk9UT0NPTA0KPg0KPiArIGluc3RhbmNlLg0KPg0KPiArDQo+DQo+ICsg QHBhcmFtIC4uLiAgICAgICAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgYXJndW1lbnQgbGlz dCBpcyBhIGxpc3Qgb2YgdHVwbGVzLg0KPg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRWFjaCB0dXBsZSBkZXNjcmliZXMgYSByYW5nZSBvZiBMQkFzIHRvIGVyYXNlDQo+DQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgY29uc2lzdHMgb2YgdGhlIGZv bGxvd2luZzoNCj4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gQW4gRUZJ X0xCQSB0aGF0IGluZGljYXRlcyB0aGUgc3RhcnRpbmcgTEJBDQo+DQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtIEEgVUlOVE4gdGhhdCBpbmRpY2F0ZXMgdGhlIG51bWJlciBv ZiBibG9ja3MgdG8gZXJhc2UuDQo+DQo+ICsNCj4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFRoZSBsaXN0IGlzIHRlcm1pbmF0ZWQgd2l0aCBhbiBFRklfTEJBX0xJU1RfVEVS TUlOQVRPUi4NCj4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFt cGxlLCB0aGUgZm9sbG93aW5nIGluZGljYXRlcyB0aGF0IHR3byByYW5nZXMgb2YgYmxvY2tzDQo+ DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoNS03IGFuZCAxMC0xMSkgYXJl IHRvIGJlIGVyYXNlZDoNCj4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVy YXNlQmxvY2tzIChUaGlzLCA1LCAzLCAxMCwgMiwgRUZJX0xCQV9MSVNUX1RFUk1JTkFUT1IpOw0K Pg0KPiArDQo+DQo+ICsgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBUaGUgZXJhc2Ug cmVxdWVzdCBzdWNjZXNzZnVsbHkgY29tcGxldGVkLg0KPg0KPiArDQo+DQo+ICsgQHJldHZhbCBF RklfQUNDRVNTX0RFTklFRCAgICAgICBUaGUgZmlybXdhcmUgdm9sdW1lIGlzIGluIHRoZSBXcml0 ZURpc2FibGVkIHN0YXRlLg0KPg0KPiArDQo+DQo+ICsgQHJldHZhbCBFRklfREVWSUNFX0VSUk9S ICAgICAgICBUaGUgYmxvY2sgZGV2aWNlIGlzIG5vdCBmdW5jdGlvbmluZyBjb3JyZWN0bHkgYW5k IGNvdWxkIG5vdCBiZSB3cml0dGVuLg0KPg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVGhlIGZpcm13YXJlIGRldmljZSBtYXkgaGF2ZSBiZWVuIHBhcnRpYWxseSBlcmFzZWQu DQo+DQo+ICsNCj4NCj4gKyBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIE9uZSBvciBt b3JlIG9mIHRoZSBMQkFzIGxpc3RlZCBpbiB0aGUgdmFyaWFibGUgYXJndW1lbnQgbGlzdCBkbw0K Pg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGV4aXN0IGluIHRoZSBm aXJtd2FyZSB2b2x1bWUuDQo+DQo+ICsNCj4NCj4gKyAqKi8NCj4NCj4gK0VGSV9TVEFUVVMNCj4N Cj4gK0VGSUFQSQ0KPg0KPiArRnZiRXJhc2VCbG9ja3MgKA0KPg0KPiArICBJTiBDT05TVCBFRklf RklSTVdBUkVfVk9MVU1FX0JMT0NLMl9QUk9UT0NPTCAgKlRoaXMsDQo+DQo+ICsgIC4uLg0KPg0K PiArICApDQo+DQo+ICt7DQo+DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICBTdGF0dXM7DQo+DQo+ ICsgIFZBX0xJU1QgICAgICAgICAgICBBcmdzOw0KPg0KPiArICBFRklfTEJBICAgICAgICAgICAg U3RhcnRpbmdMYmE7IC8vIExiYSBmcm9tIHdoaWNoIHdlIHN0YXJ0IGVyYXNpbmcNCj4NCj4gKyAg VUlOVE4gICAgICAgICAgICAgIE51bU9mTGJhOyAgICAvLyBOdW1iZXIgb2YgTGJhIGJsb2NrcyB0 byBlcmFzZQ0KPg0KPiArICBTTU1TVE9SRV9JTlNUQU5DRSAgKkluc3RhbmNlOw0KPg0KPiArDQo+ DQo+ICsgIEluc3RhbmNlID0gSU5TVEFOQ0VfRlJPTV9GVkJfVEhJUyAoVGhpcyk7DQo+DQo+ICsN Cj4NCj4gKyAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+DQo+ICsNCj4NCj4gKyAgLy8gQmVmb3Jl IGVyYXNpbmcsIGNoZWNrIHRoZSBlbnRpcmUgbGlzdCBvZiBwYXJhbWV0ZXJzIHRvIGVuc3VyZSBh bGwgc3BlY2lmaWVkIGJsb2NrcyBhcmUgdmFsaWQNCj4NCj4gKw0KPg0KPiArICBWQV9TVEFSVCAo QXJncywgVGhpcyk7DQo+DQo+ICsgIGRvIHsNCj4NCj4gKyAgICAvLyBHZXQgdGhlIExiYSBmcm9t IHdoaWNoIHdlIHN0YXJ0IGVyYXNpbmcNCj4NCj4gKyAgICBTdGFydGluZ0xiYSA9IFZBX0FSRyAo QXJncywgRUZJX0xCQSk7DQo+DQo+ICsNCj4NCj4gKyAgICAvLyBIYXZlIHdlIHJlYWNoZWQgdGhl IGVuZCBvZiB0aGUgbGlzdD8NCj4NCj4gKyAgICBpZiAoU3RhcnRpbmdMYmEgPT0gRUZJX0xCQV9M SVNUX1RFUk1JTkFUT1IpIHsNCj4NCj4gKyAgICAgIC8vIEV4aXQgdGhlIHdoaWxlIGxvb3ANCj4N Cj4gKyAgICAgIGJyZWFrOw0KPg0KPiArICAgIH0NCj4NCj4gKw0KPg0KPiArICAgIC8vIEhvdyBt YW55IExiYSBibG9ja3MgYXJlIHdlIHJlcXVlc3RlZCB0byBlcmFzZT8NCj4NCj4gKyAgICBOdW1P ZkxiYSA9IFZBX0FSRyAoQXJncywgVUlOVE4pOw0KPg0KPiArDQo+DQo+ICsgICAgLy8gQWxsIGJs b2NrcyBtdXN0IGJlIHdpdGhpbiByYW5nZQ0KPg0KPiArICAgIERFQlVHICgoDQo+DQo+ICsgICAg ICBERUJVR19CTEtJTywNCj4NCj4gKyAgICAgICJGdmJFcmFzZUJsb2NrczogQ2hlY2sgaWY6ICgg U3RhcnRpbmdMYmE9JWxkICsgTnVtT2ZMYmE9JUx1IC0gMSApID4gTGFzdEJsb2NrPSVsZC5cbiIs DQo+DQo+ICsgICAgICBTdGFydGluZ0xiYSwNCj4NCj4gKyAgICAgIChVSU5UNjQpTnVtT2ZMYmEs DQo+DQo+ICsgICAgICBJbnN0YW5jZS0+TGFzdEJsb2NrDQo+DQo+ICsgICAgICApKTsNCj4NCj4g KyAgICBpZiAoKE51bU9mTGJhID09IDApIHx8ICgoU3RhcnRpbmdMYmEgKyBOdW1PZkxiYSAtIDEp ID4gSW5zdGFuY2UtPkxhc3RCbG9jaykpIHsNCj4NCj4gKyAgICAgIFZBX0VORCAoQXJncyk7DQo+ DQo+ICsgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRnZiRXJhc2VCbG9ja3M6IEVSUk9SIC0g TGJhIHJhbmdlIGdvZXMgcGFzdCB0aGUgbGFzdCBMYmEuXG4iKSk7DQo+DQo+ICsgICAgICBTdGF0 dXMgPSBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+DQo+ICsgICAgICBnb3RvIEVYSVQ7DQo+DQo+ ICsgICAgfQ0KPg0KPiArICB9IHdoaWxlIChUUlVFKTsNCj4NCj4gKw0KPg0KPiArICBWQV9FTkQg KEFyZ3MpOw0KPg0KPiArDQo+DQo+ICsgIC8vDQo+DQo+ICsgIC8vIFRvIGdldCBoZXJlLCBhbGwg bXVzdCBiZSBvaywgc28gc3RhcnQgZXJhc2luZw0KPg0KPiArICAvLw0KPg0KPiArICBWQV9TVEFS VCAoQXJncywgVGhpcyk7DQo+DQo+ICsgIGRvIHsNCj4NCj4gKyAgICAvLyBHZXQgdGhlIExiYSBm cm9tIHdoaWNoIHdlIHN0YXJ0IGVyYXNpbmcNCj4NCj4gKyAgICBTdGFydGluZ0xiYSA9IFZBX0FS RyAoQXJncywgRUZJX0xCQSk7DQo+DQo+ICsNCj4NCj4gKyAgICAvLyBIYXZlIHdlIHJlYWNoZWQg dGhlIGVuZCBvZiB0aGUgbGlzdD8NCj4NCj4gKyAgICBpZiAoU3RhcnRpbmdMYmEgPT0gRUZJX0xC QV9MSVNUX1RFUk1JTkFUT1IpIHsNCj4NCj4gKyAgICAgIC8vIEV4aXQgdGhlIHdoaWxlIGxvb3AN Cj4NCj4gKyAgICAgIGJyZWFrOw0KPg0KPiArICAgIH0NCj4NCj4gKw0KPg0KPiArICAgIC8vIEhv dyBtYW55IExiYSBibG9ja3MgYXJlIHdlIHJlcXVlc3RlZCB0byBlcmFzZT8NCj4NCj4gKyAgICBO dW1PZkxiYSA9IFZBX0FSRyAoQXJncywgVUlOVE4pOw0KPg0KPiArDQo+DQo+ICsgICAgLy8gR28g dGhyb3VnaCBlYWNoIG9uZSBhbmQgZXJhc2UgaXQNCj4NCj4gKyAgICB3aGlsZSAoTnVtT2ZMYmEg PiAwKSB7DQo+DQo+ICsgICAgICAvLyBFcmFzZSBpdA0KPg0KPiArICAgICAgREVCVUcgKChERUJV R19CTEtJTywgIkZ2YkVyYXNlQmxvY2tzOiBFcmFzaW5nIExiYT0lbGRcbiIsIFN0YXJ0aW5nTGJh KSk7DQo+DQo+ICsgICAgICBTdGF0dXMgPSBTbW1TdG9yZUxpYkVyYXNlQmxvY2sgKFN0YXJ0aW5n TGJhKTsNCj4NCj4gKyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4NCj4gKyAgICAg ICAgVkFfRU5EIChBcmdzKTsNCj4NCj4gKyAgICAgICAgU3RhdHVzID0gRUZJX0RFVklDRV9FUlJP UjsNCj4NCj4gKyAgICAgICAgZ290byBFWElUOw0KPg0KPiArICAgICAgfQ0KPg0KPiArDQo+DQo+ ICsgICAgICAvLyBNb3ZlIHRvIHRoZSBuZXh0IExiYQ0KPg0KPiArICAgICAgU3RhcnRpbmdMYmEr KzsNCj4NCj4gKyAgICAgIE51bU9mTGJhLS07DQo+DQo+ICsgICAgfQ0KPg0KPiArICB9IHdoaWxl IChUUlVFKTsNCj4NCj4gKw0KPg0KPiArICBWQV9FTkQgKEFyZ3MpOw0KPg0KPiArDQo+DQo+ICtF WElUOg0KPg0KPiArICByZXR1cm4gU3RhdHVzOw0KPg0KPiArfQ0KPg0KPiArDQo+DQo+ICsvKioN Cj4NCj4gKyAgSW5pdGlhbGl6ZWQgdGhlIEZpcm13YXJlIFZvbHVtZSBpZiBuZWNlc3NhcnkgYW5k IGluc3RhbGxzIHRoZQ0KPg0KPiArICBnRWRraWlOdlZhclN0b3JlRm9ybWF0dGVkR3VpZCBwcm90 b2NvbC4NCj4NCj4gKw0KPg0KPiArICBAcGFyYW0gSW5zdGFuY2UgICAgICAgICAgICAgICAgICAg IFBvaW50ZXIgdG8gU21tU3RvcmUgaW5zdGFuY2UNCj4NCj4gKw0KPg0KPiArICoqLw0KPg0KPiAr RUZJX1NUQVRVUw0KPg0KPiArRUZJQVBJDQo+DQo+ICtGdmJJbml0aWFsaXplICgNCj4NCj4gKyAg SU4gU01NU1RPUkVfSU5TVEFOQ0UgICpJbnN0YW5jZQ0KPg0KPiArICApDQo+DQo+ICt7DQo+DQo+ ICsgIEVGSV9TVEFUVVMgICAgIFN0YXR1czsNCj4NCj4gKyAgVUlOVDMyICAgICAgICAgRnZiTnVt TGJhOw0KPg0KPiArICBFRklfQk9PVF9NT0RFICBCb290TW9kZTsNCj4NCj4gKw0KPg0KPiArICBB U1NFUlQgKChJbnN0YW5jZSAhPSBOVUxMKSk7DQo+DQo+ICsNCj4NCj4gKyAgQm9vdE1vZGUgPSBH ZXRCb290TW9kZUhvYiAoKTsNCj4NCj4gKyAgaWYgKEJvb3RNb2RlID09IEJPT1RfV0lUSF9ERUZB VUxUX1NFVFRJTkdTKSB7DQo+DQo+ICsgICAgU3RhdHVzID0gRUZJX0lOVkFMSURfUEFSQU1FVEVS Ow0KPg0KPiArICB9IGVsc2Ugew0KPg0KPiArICAgIC8vIERldGVybWluZSBpZiB0aGVyZSBpcyBh IHZhbGlkIGhlYWRlciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBOb3JGbGFzaA0KPg0KPiArICAg IFN0YXR1cyA9IFZhbGlkYXRlRnZIZWFkZXIgKCk7DQo+DQo+ICsgIH0NCj4NCj4gKw0KPg0KPiAr ICAvLyBJbnN0YWxsIHRoZSBEZWZhdWx0IEZWQiBoZWFkZXIgaWYgcmVxdWlyZWQNCj4NCj4gKyAg aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPg0KPiArICAgIC8vIFRoZXJlIGlzIG5vIHZhbGlk IGhlYWRlciwgc28gdGltZSB0byBpbnN0YWxsIG9uZS4NCj4NCj4gKyAgICBERUJVRyAoKERFQlVH X0lORk8sICIlYTogVGhlIEZWQiBIZWFkZXIgaXMgbm90IHZhbGlkLlxuIiwgX19GVU5DVElPTl9f KSk7DQo+DQo+ICsgICAgREVCVUcgKCgNCj4NCj4gKyAgICAgIERFQlVHX0lORk8sDQo+DQo+ICsg ICAgICAiJWE6IEluc3RhbGxpbmcgYSBjb3JyZWN0IG9uZSBmb3IgdGhpcyB2b2x1bWUuXG4iLA0K Pg0KPiArICAgICAgX19GVU5DVElPTl9fDQo+DQo+ICsgICAgICApKTsNCj4NCj4gKw0KPg0KPiAr ICAgIC8vIEVyYXNlIGFsbCB0aGUgTm9yRmxhc2ggdGhhdCBpcyByZXNlcnZlZCBmb3IgdmFyaWFi bGUgc3RvcmFnZQ0KPg0KPiArICAgIEZ2Yk51bUxiYSA9IChQY2RHZXQzMiAoUGNkRmxhc2hOdlN0 b3JhZ2VWYXJpYWJsZVNpemUpICsNCj4NCj4gKyAgICAgICAgICAgICAgICAgUGNkR2V0MzIgKFBj ZEZsYXNoTnZTdG9yYWdlRnR3V29ya2luZ1NpemUpICsNCj4NCj4gKyAgICAgICAgICAgICAgICAg UGNkR2V0MzIgKFBjZEZsYXNoTnZTdG9yYWdlRnR3U3BhcmVTaXplKSkgLyBJbnN0YW5jZS0+Qmxv Y2tTaXplOw0KPg0KPiArDQo+DQo+ICsgICAgU3RhdHVzID0gRnZiRXJhc2VCbG9ja3MgKCZJbnN0 YW5jZS0+RnZiUHJvdG9jb2wsIChFRklfTEJBKTAsIEZ2Yk51bUxiYSwgRUZJX0xCQV9MSVNUX1RF Uk1JTkFUT1IpOw0KPg0KPiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4NCj4gKyAg ICAgIHJldHVybiBTdGF0dXM7DQo+DQo+ICsgICAgfQ0KPg0KPiArDQo+DQo+ICsgICAgLy8gSW5z dGFsbCBhbGwgYXBwcm9wcmlhdGUgaGVhZGVycw0KPg0KPiArICAgIFN0YXR1cyA9IEluaXRpYWxp emVGdkFuZFZhcmlhYmxlU3RvcmVIZWFkZXJzIChJbnN0YW5jZSk7DQo+DQo+ICsgICAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPg0KPiArICAgICAgcmV0dXJuIFN0YXR1czsNCj4NCj4gKyAg ICB9DQo+DQo+ICsgIH0gZWxzZSB7DQo+DQo+ICsgICAgREVCVUcgKChERUJVR19JTkZPLCAiJWE6 IEZWQiBoZWFkZXIgaXMgdmFsaWRcbiIsIF9fRlVOQ1RJT05fXykpOw0KPg0KPiArICB9DQo+DQo+ ICsNCj4NCj4gKyAgLy8NCj4NCj4gKyAgLy8gVGhlIGRyaXZlciBpbXBsZW1lbnRpbmcgdGhlIHZh cmlhYmxlIHJlYWQgc2VydmljZSBjYW4gbm93IGJlIGRpc3BhdGNoZWQ7DQo+DQo+ICsgIC8vIHRo ZSB2YXJzdG9yZSBoZWFkZXJzIGFyZSBpbiBwbGFjZS4NCj4NCj4gKyAgLy8NCj4NCj4gKyAgU3Rh dHVzID0gZ0JTLT5JbnN0YWxsUHJvdG9jb2xJbnRlcmZhY2UgKA0KPg0KPiArICAgICAgICAgICAg ICAgICAgJmdJbWFnZUhhbmRsZSwNCj4NCj4gKyAgICAgICAgICAgICAgICAgICZnRWRraWlOdlZh clN0b3JlRm9ybWF0dGVkR3VpZCwNCj4NCj4gKyAgICAgICAgICAgICAgICAgIEVGSV9OQVRJVkVf SU5URVJGQUNFLA0KPg0KPiArICAgICAgICAgICAgICAgICAgTlVMTA0KPg0KPiArICAgICAgICAg ICAgICAgICAgKTsNCj4NCj4gKyAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4NCj4gKw0K Pg0KPiArICByZXR1cm4gU3RhdHVzOw0KPg0KPiArfQ0KPg0KPiBkaWZmIC0tZ2l0IGEvVWVmaVBh eWxvYWRQa2cvU21tU3RvcmVGdmIvU21tU3RvcmVGdmJSdW50aW1lRHhlLmluZiBiL1VlZmlQYXls b2FkUGtnL1NtbVN0b3JlRnZiL1NtbVN0b3JlRnZiUnVudGltZUR4ZS5pbmYNCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uMmJkODg4NmJjYw0KPiAtLS0gL2Rldi9u dWxsDQo+ICsrKyBiL1VlZmlQYXlsb2FkUGtnL1NtbVN0b3JlRnZiL1NtbVN0b3JlRnZiUnVudGlt ZUR4ZS5pbmYNCj4gQEAgLTAsMCArMSw2NiBAQA0KPiArIyMgQGZpbGUNCj4NCj4gKyMgIENvbXBv bmVudCBkZXNjcmlwdGlvbiBmaWxlIGZvciBTbW1TdG9yZSBtb2R1bGUNCj4NCj4gKyMNCj4NCj4g KyMgIFRoaXMgbW9kdWxlIHByb2R1Y2VzIHRoZSBGaXJtd2FyZVZvbHVtZUJsb2NrIHByb3RvY29s IG9uIHRvcCBvZiB0aGUNCj4NCj4gKyMgIFNtbVN0b3JlIHByb3ZpZGVkIGJ5IGJvb3Rsb2FkZXIg YW5kIGluc3RhbGxzIHRoZSBOdlZhclN0b3JlRm9ybWF0dGVkIHByb3RvY29sLg0KPg0KPiArIw0K Pg0KPiArIyAgQ29weXJpZ2h0IChjKSAyMDIyLCA5ZWxlbWVudHMgR21iSDxCUj4NCj4NCj4gKyMN Cj4NCj4gKyMgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ DQo+ICsjDQo+DQo+ICsjIw0KPg0KPiArDQo+DQo+ICtbRGVmaW5lc10NCj4NCj4gKyAgSU5GX1ZF UlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAxMDAwNQ0KPg0KPiArICBCQVNFX05BTUUg ICAgICAgICAgICAgICAgICAgICAgPSBTbW1TdG9yZUZ2YlJ1bnRpbWVEeGUNCj4NCj4gKyAgRklM RV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0gQTA0MDJGQ0EtNkIyNS00Q0VBLUI3REQtQzA4 Rjk5NzE0QjI5DQo+DQo+ICsgIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAgICA9IERYRV9S VU5USU1FX0RSSVZFUg0KPg0KPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAx LjANCj4NCj4gKyAgRU5UUllfUE9JTlQgICAgICAgICAgICAgICAgICAgID0gU21tU3RvcmVJbml0 aWFsaXplDQo+DQo+ICsNCj4NCj4gK1tTb3VyY2VzLmNvbW1vbl0NCj4NCj4gKyAgU21tU3RvcmVG dmJSdW50aW1lRHhlLmMNCj4NCj4gKyAgU21tU3RvcmVGdmJSdW50aW1lLmgNCj4NCj4gKyAgU21t U3RvcmVGdmJSdW50aW1lLmMNCj4NCj4gKw0KPg0KPiArW1BhY2thZ2VzXQ0KPg0KPiArICBNZGVQ a2cvTWRlUGtnLmRlYw0KPg0KPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPg0K PiArICBFbWJlZGRlZFBrZy9FbWJlZGRlZFBrZy5kZWMNCj4NCj4gKyAgVWVmaVBheWxvYWRQa2cv VWVmaVBheWxvYWRQa2cuZGVjDQo+DQo+ICsNCj4NCj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4NCj4g KyAgQmFzZUxpYg0KPg0KPiArICBEZWJ1Z0xpYg0KPg0KPiArICBIb2JMaWINCj4NCj4gKyAgU21t U3RvcmVMaWINCj4NCj4gKyAgVWVmaUxpYg0KPg0KPiArICBVZWZpRHJpdmVyRW50cnlQb2ludA0K Pg0KPiArICBVZWZpQm9vdFNlcnZpY2VzVGFibGVMaWINCj4NCj4gKyAgVWVmaVJ1bnRpbWVMaWIN Cj4NCj4gKyAgRHhlU2VydmljZXNUYWJsZUxpYg0KPg0KPiArDQo+DQo+ICtbR3VpZHNdDQo+DQo+ ICsgIGdFZmlTeXN0ZW1OdkRhdGFGdkd1aWQNCj4NCj4gKyAgZ0VmaVZhcmlhYmxlR3VpZCAgICAg ICAgICAgICAgICAgICMjIFBST0RVQ0VTICMjIFBST1RPQ09MDQo+DQo+ICsgIGdFZmlBdXRoZW50 aWNhdGVkVmFyaWFibGVHdWlkDQo+DQo+ICsgIGdFZmlFdmVudFZpcnR1YWxBZGRyZXNzQ2hhbmdl R3VpZA0KPg0KPiArICBnRWRraWlOdlZhclN0b3JlRm9ybWF0dGVkR3VpZCAgICAgIyMgUFJPRFVD RVMgIyMgUFJPVE9DT0wNCj4NCj4gKw0KPg0KPiArW1Byb3RvY29sc10NCj4NCj4gKyAgZ0VmaURl dmljZVBhdGhQcm90b2NvbEd1aWQgICAgICAgICAgIyMgQllfU1RBUlQNCj4NCj4gKyAgZ0VmaUZp cm13YXJlVm9sdW1lQmxvY2tQcm90b2NvbEd1aWQgIyMgQllfU1RBUlQNCj4NCj4gKw0KPg0KPiAr W1BjZF0NCj4NCj4gKyAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEZsYXNoTnZT dG9yYWdlVmFyaWFibGVCYXNlDQo+DQo+ICsgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3Vp ZC5QY2RGbGFzaE52U3RvcmFnZVZhcmlhYmxlU2l6ZQ0KPg0KPiArICBnRWZpTWRlTW9kdWxlUGtn VG9rZW5TcGFjZUd1aWQuUGNkRmxhc2hOdlN0b3JhZ2VGdHdXb3JraW5nQmFzZQ0KPg0KPiArICBn RWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkRmxhc2hOdlN0b3JhZ2VGdHdXb3JraW5n U2l6ZQ0KPg0KPiArICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkRmxhc2hOdlN0 b3JhZ2VGdHdTcGFyZUJhc2UNCj4NCj4gKyAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlk LlBjZEZsYXNoTnZTdG9yYWdlRnR3U3BhcmVTaXplDQo+DQo+ICsgIGdFZmlNZGVNb2R1bGVQa2dU b2tlblNwYWNlR3VpZC5QY2RGbGFzaE52U3RvcmFnZUZ0d1NwYXJlQmFzZTY0DQo+DQo+ICsgIGdF ZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RGbGFzaE52U3RvcmFnZUZ0d1dvcmtpbmdC YXNlNjQNCj4NCj4gKyAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEZsYXNoTnZT dG9yYWdlVmFyaWFibGVCYXNlNjQNCj4NCj4gKw0KPg0KPiArW0RlcGV4XQ0KPg0KPiArICBUUlVF DQo+DQo+IGRpZmYgLS1naXQgYS9VZWZpUGF5bG9hZFBrZy9VZWZpUGF5bG9hZFBrZy5kc2MgYi9V ZWZpUGF5bG9hZFBrZy9VZWZpUGF5bG9hZFBrZy5kc2MNCj4gaW5kZXggY2Y0NDBmZWU1OC4uMGY2 NDIxNjEyYyAxMDA2NDQNCj4gLS0tIGEvVWVmaVBheWxvYWRQa2cvVWVmaVBheWxvYWRQa2cuZHNj DQo+ICsrKyBiL1VlZmlQYXlsb2FkUGtnL1VlZmlQYXlsb2FkUGtnLmRzYw0KPiBAQCAtOTcsNiAr OTcsNyBAQA0KPiAgICAjDQo+DQo+ICAgICMgRU1VOiAgICAgIFVFRkkgcGF5bG9hZCB3aXRoIEVN VSB2YXJpYWJsZQ0KPg0KPiAgICAjIFNQSTogICAgICBVRUZJIHBheWxvYWQgd2l0aCBTUEkgTlYg dmFyaWFibGUgc3VwcG9ydA0KPg0KPiArICAjIFNNTVNUT1JFOiBVRUZJIHBheWxvYWQgd2l0aCBj b3JlYm9vdCBTTU0gTlYgdmFyaWFibGUgc3VwcG9ydA0KPg0KPiAgICAjIE5PTkU6ICAgICBVRUZJ IHBheWxvYWQgd2l0aCBubyB2YXJpYWJsZSBtb2R1bGVzDQo+DQo+ICAgICMNCj4NCj4gICAgREVG SU5FIFZBUklBQkxFX1NVUFBPUlQgICAgICA9IEVNVQ0KPg0KPiBAQCAtMjYxLDkgKzI2MiwxMSBA QA0KPiAgICBMb2NrQm94TGlifE1kZU1vZHVsZVBrZy9MaWJyYXJ5L0xvY2tCb3hOdWxsTGliL0xv Y2tCb3hOdWxsTGliLmluZg0KPg0KPiAgICBGaWxlRXhwbG9yZXJMaWJ8TWRlTW9kdWxlUGtnL0xp YnJhcnkvRmlsZUV4cGxvcmVyTGliL0ZpbGVFeHBsb3JlckxpYi5pbmYNCj4NCj4gICAgQXV0aFZh cmlhYmxlTGlifE1kZU1vZHVsZVBrZy9MaWJyYXJ5L0F1dGhWYXJpYWJsZUxpYk51bGwvQXV0aFZh cmlhYmxlTGliTnVsbC5pbmYNCj4NCj4gLSAgU21tU3RvcmVMaWJ8VWVmaVBheWxvYWRQa2cvTGli cmFyeS9TbW1TdG9yZUxpYi9TbW1TdG9yZUxpYi5pbmYNCj4NCj4gICFpZiAkKFZBUklBQkxFX1NV UFBPUlQpID09ICJFTVUiDQo+DQo+ICAgIFRwbU1lYXN1cmVtZW50TGlifE1kZU1vZHVsZVBrZy9M aWJyYXJ5L1RwbU1lYXN1cmVtZW50TGliTnVsbC9UcG1NZWFzdXJlbWVudExpYk51bGwuaW5mDQo+ DQo+ICshZWxzZWlmICQoVkFSSUFCTEVfU1VQUE9SVCkgPT0gIlNNTVNUT1JFIg0KPg0KPiArICBT bW1TdG9yZUxpYnxVZWZpUGF5bG9hZFBrZy9MaWJyYXJ5L1NtbVN0b3JlTGliL1NtbVN0b3JlTGli LmluZg0KPg0KPiArICBUcG1NZWFzdXJlbWVudExpYnxNZGVNb2R1bGVQa2cvTGlicmFyeS9UcG1N ZWFzdXJlbWVudExpYk51bGwvVHBtTWVhc3VyZW1lbnRMaWJOdWxsLmluZg0KPg0KPiAgIWVsc2Vp ZiAkKFZBUklBQkxFX1NVUFBPUlQpID09ICJTUEkiDQo+DQo+ICAgIFBsYXRmb3JtU2VjdXJlTGli fFNlY3VyaXR5UGtnL0xpYnJhcnkvUGxhdGZvcm1TZWN1cmVMaWJOdWxsL1BsYXRmb3JtU2VjdXJl TGliTnVsbC5pbmYNCj4NCj4gICAgVHBtTWVhc3VyZW1lbnRMaWJ8U2VjdXJpdHlQa2cvTGlicmFy eS9EeGVUcG1NZWFzdXJlbWVudExpYi9EeGVUcG1NZWFzdXJlbWVudExpYi5pbmYNCj4NCj4gQEAg LTM3OSwxNSArMzgyLDEzIEBADQo+ICAgIGdVZWZpQ3B1UGtnVG9rZW5TcGFjZUd1aWQuUGNkQ3B1 U21tRW5hYmxlQnNwRWxlY3Rpb258RkFMU0UNCj4NCj4NCj4NCj4gIFtQY2RzRml4ZWRBdEJ1aWxk XQ0KPg0KPiAtICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkTWF4VmFyaWFibGVT aXplfDB4MTAwMDANCj4NCj4gICAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZE1h eEhhcmR3YXJlRXJyb3JWYXJpYWJsZVNpemV8MHg4MDAwDQo+DQo+ICAgIGdFZmlNZGVNb2R1bGVQ a2dUb2tlblNwYWNlR3VpZC5QY2RWYXJpYWJsZVN0b3JlU2l6ZXwweDEwMDAwDQo+DQo+ICAhaWYg JChWQVJJQUJMRV9TVVBQT1JUKSA9PSAiRU1VIg0KPg0KPiAgICBnRWZpTWRlTW9kdWxlUGtnVG9r ZW5TcGFjZUd1aWQuUGNkRW11VmFyaWFibGVOdk1vZGVFbmFibGUgICAgICAgIHxUUlVFDQo+DQo+ IC0hZWxzZQ0KPg0KPiArIWVsc2VpZiAkKFZBUklBQkxFX1NVUFBPUlQpID09ICJTUEkiIHx8ICQo VkFSSUFCTEVfU1VQUE9SVCkgPT0gIlNNTVNUT1JFIg0KPg0KPiAgICBnRWZpTWRlTW9kdWxlUGtn VG9rZW5TcGFjZUd1aWQuUGNkRW11VmFyaWFibGVOdk1vZGVFbmFibGUgICAgICAgIHxGQUxTRQ0K Pg0KPiAgIWVuZGlmDQo+DQo+IC0NCj4NCj4gICAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VH dWlkLlBjZFZwZEJhc2VBZGRyZXNzfDB4MA0KPg0KPiAgICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5T cGFjZUd1aWQuUGNkU3RhdHVzQ29kZVVzZU1lbW9yeXxGQUxTRQ0KPg0KPiAgICBnRWZpTWRlTW9k dWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkVXNlMUdQYWdlVGFibGV8VFJVRQ0KPg0KPiBAQCAtNDQ1 LDcgKzQ0Niw2IEBADQo+ICAgIGdVZWZpQ3B1UGtnVG9rZW5TcGFjZUd1aWQuUGNkQ3B1TWF4TG9n aWNhbFByb2Nlc3Nvck51bWJlcnwkKE1BWF9MT0dJQ0FMX1BST0NFU1NPUlMpDQo+DQo+ICAgIGdV ZWZpQ3B1UGtnVG9rZW5TcGFjZUd1aWQuUGNkQ3B1TnVtYmVyT2ZSZXNlcnZlZFZhcmlhYmxlTXRy cnN8MA0KPg0KPiAgICBnVWVmaVBheWxvYWRQa2dUb2tlblNwYWNlR3VpZC5QY2RCb290bG9hZGVy UGFyYW1ldGVyfDANCj4NCj4gLQ0KPg0KPiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4NCj4g ICMNCj4NCj4gICMgUGNkIER5bmFtaWNFeCBTZWN0aW9uIC0gbGlzdCBvZiBhbGwgRURLIElJIFBD RCBFbnRyaWVzIGRlZmluZWQgYnkgdGhpcyBQbGF0Zm9ybQ0KPg0KPiBAQCAtNDczLDE1ICs0NzMs MTkgQEANCj4gICFlbmRpZg0KPg0KPiAgICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQu UGNkUmVzZXRPbk1lbW9yeVR5cGVJbmZvcm1hdGlvbkNoYW5nZXxGQUxTRQ0KPg0KPiAgICBnRWZp TWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkRW11VmFyaWFibGVOdlN0b3JlUmVzZXJ2ZWR8 MA0KPg0KPiArICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkRmxhc2hOdlN0b3Jh Z2VWYXJpYWJsZUJhc2V8MA0KPg0KPiAgICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQu UGNkRmxhc2hOdlN0b3JhZ2VWYXJpYWJsZUJhc2U2NHwwDQo+DQo+ICAgIGdFZmlNZGVNb2R1bGVQ a2dUb2tlblNwYWNlR3VpZC5QY2RGbGFzaE52U3RvcmFnZUZ0d1dvcmtpbmdCYXNlfDANCj4NCj4g ICAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEZsYXNoTnZTdG9yYWdlRnR3U3Bh cmVCYXNlfDANCj4NCj4gICAgZ0VmaU1kZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFBsYXRmb3JtQm9v dFRpbWVPdXR8Mw0KPg0KPiAtIWlmICQoVkFSSUFCTEVfU1VQUE9SVCkgPT0gIlNQSSINCj4NCj4g KyFpZiAkKFZBUklBQkxFX1NVUFBPUlQpID09ICJTUEkiIHx8ICQoVkFSSUFCTEVfU1VQUE9SVCkg PT0gIlNNTVNUT1JFIg0KPg0KPiAgICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNk Rmxhc2hOdlN0b3JhZ2VWYXJpYWJsZVNpemUgIHwwDQo+DQo+ICAgIGdFZmlNZGVNb2R1bGVQa2dU b2tlblNwYWNlR3VpZC5QY2RGbGFzaE52U3RvcmFnZUZ0d1dvcmtpbmdTaXplfDANCj4NCj4gICAg Z0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEZsYXNoTnZTdG9yYWdlRnR3U3BhcmVT aXplICB8MA0KPg0KPiAgICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkRmxhc2hO dlN0b3JhZ2VWYXJpYWJsZUJhc2UgIHwwDQo+DQo+ICsgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNw YWNlR3VpZC5QY2RGbGFzaE52U3RvcmFnZVZhcmlhYmxlQmFzZTY0fDANCj4NCj4gKyAgZ0VmaU1k ZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEZsYXNoTnZTdG9yYWdlRnR3V29ya2luZ0Jhc2U2 NHwwDQo+DQo+ICsgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RGbGFzaE52U3Rv cmFnZUZ0d1NwYXJlQmFzZTY0fDANCj4NCj4gICFlbmRpZg0KPg0KPiAgICAjIERpc2FibGUgU01N IFMzIHNjcmlwdA0KPg0KPiAgICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkQWNw aVMzRW5hYmxlfEZBTFNFDQo+DQo+IEBAIC02OTcsNiArNzAxLDE0IEBADQo+DQo+DQo+ICAhaWYg JChWQVJJQUJMRV9TVVBQT1JUKSA9PSAiRU1VIg0KPg0KPiAgICBNZGVNb2R1bGVQa2cvVW5pdmVy c2FsL1ZhcmlhYmxlL1J1bnRpbWVEeGUvVmFyaWFibGVSdW50aW1lRHhlLmluZg0KPg0KPiArIWVs c2VpZiAkKFZBUklBQkxFX1NVUFBPUlQpID09ICJTTU1TVE9SRSINCj4NCj4gKyAgVWVmaVBheWxv YWRQa2cvU21tU3RvcmVGdmIvU21tU3RvcmVGdmJSdW50aW1lRHhlLmluZg0KPg0KPiArICBNZGVN b2R1bGVQa2cvVW5pdmVyc2FsL0ZhdWx0VG9sZXJhbnRXcml0ZUR4ZS9GYXVsdFRvbGVyYW50V3Jp dGVEeGUuaW5mDQo+DQo+ICsgIE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvVmFyaWFibGUvUnVudGlt ZUR4ZS9WYXJpYWJsZVJ1bnRpbWVEeGUuaW5mIHsNCj4NCj4gKyAgICA8TGlicmFyeUNsYXNzZXM+ DQo+DQo+ICsgICAgICBOVUxMfE1kZU1vZHVsZVBrZy9MaWJyYXJ5L1ZhckNoZWNrVWVmaUxpYi9W YXJDaGVja1VlZmlMaWIuaW5mDQo+DQo+ICsgICAgICBOVUxMfEVtYmVkZGVkUGtnL0xpYnJhcnkv TnZWYXJTdG9yZUZvcm1hdHRlZExpYi9OdlZhclN0b3JlRm9ybWF0dGVkTGliLmluZg0KPg0KPiAr ICB9DQo+DQo+ICAhZWxzZWlmICQoVkFSSUFCTEVfU1VQUE9SVCkgPT0gIlNQSSINCj4NCj4gICAg TWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9WYXJpYWJsZS9SdW50aW1lRHhlL1ZhcmlhYmxlU21tLmlu ZiB7DQo+DQo+ICAgICAgPExpYnJhcnlDbGFzc2VzPg0KPg0KPiBkaWZmIC0tZ2l0IGEvVWVmaVBh eWxvYWRQa2cvVWVmaVBheWxvYWRQa2cuZmRmIGIvVWVmaVBheWxvYWRQa2cvVWVmaVBheWxvYWRQ a2cuZmRmDQo+IGluZGV4IGM3YjA0OTc4YWQuLmNhNDRmNDhmNmQgMTAwNjQ0DQo+IC0tLSBhL1Vl ZmlQYXlsb2FkUGtnL1VlZmlQYXlsb2FkUGtnLmZkZg0KPiArKysgYi9VZWZpUGF5bG9hZFBrZy9V ZWZpUGF5bG9hZFBrZy5mZGYNCj4gQEAgLTE0MCw2ICsxNDAsMTAgQEAgSU5GIFBjQXRDaGlwc2V0 UGtnL1BjYXRSZWFsVGltZUNsb2NrUnVudGltZUR4ZS9QY2F0UmVhbFRpbWVDbG9ja1J1bnRpbWVE eGUuaW5mDQo+DQo+DQo+ICAhaWYgJChWQVJJQUJMRV9TVVBQT1JUKSA9PSAiRU1VIg0KPg0KPiAg ICBJTkYgTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9WYXJpYWJsZS9SdW50aW1lRHhlL1ZhcmlhYmxl UnVudGltZUR4ZS5pbmYNCj4NCj4gKyFlbHNlaWYgJChWQVJJQUJMRV9TVVBQT1JUKSA9PSAiU01N U1RPUkUiDQo+DQo+ICsgIElORiBVZWZpUGF5bG9hZFBrZy9TbW1TdG9yZUZ2Yi9TbW1TdG9yZUZ2 YlJ1bnRpbWVEeGUuaW5mDQo+DQo+ICsgIElORiBNZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0ZhdWx0 VG9sZXJhbnRXcml0ZUR4ZS9GYXVsdFRvbGVyYW50V3JpdGVEeGUuaW5mDQo+DQo+ICsgIElORiBN ZGVNb2R1bGVQa2cvVW5pdmVyc2FsL1ZhcmlhYmxlL1J1bnRpbWVEeGUvVmFyaWFibGVSdW50aW1l RHhlLmluZg0KPg0KPiAgIWVsc2VpZiAkKFZBUklBQkxFX1NVUFBPUlQpID09ICJTUEkiDQo+DQo+ ICAgIElORiBVZWZpUGF5bG9hZFBrZy9GdmJSdW50aW1lRHhlL0Z2YlNtbS5pbmYNCj4NCj4gICAg SU5GIE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvRmF1bHRUb2xlcmFudFdyaXRlRHhlL0ZhdWx0VG9s ZXJhbnRXcml0ZVNtbS5pbmYNCj4NCj4gLS0NCj4gMi4zMi4wDQo+DQoNCg0KDQoNCg0KDQoNCi09 LT0tPS09LT0tPS09LT0tPS09LT0tDQpHcm91cHMuaW8gTGlua3M6IFlvdSByZWNlaXZlIGFsbCBt ZXNzYWdlcyBzZW50IHRvIHRoaXMgZ3JvdXAuDQpWaWV3L1JlcGx5IE9ubGluZSAoIzg3OTExKTog aHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL21lc3NhZ2UvODc5MTENCk11dGUgVGhpcyBU b3BpYzogaHR0cHM6Ly9ncm91cHMuaW8vbXQvODk5MjM3OTkvMTc4MTM3NQ0KR3JvdXAgT3duZXI6 IGRldmVsK293bmVyQGVkazIuZ3JvdXBzLmlvDQpVbnN1YnNjcmliZTogaHR0cHM6Ly9lZGsyLmdy b3Vwcy5pby9nL2RldmVsL3Vuc3ViIFtndW8uZG9uZ0BpbnRlbC5jb21dDQotPS09LT0tPS09LT0t PS09LT0tPS09LQ0KDQoNCg== --_004_BYAPR11MB36226A9E0D4F66E6F68A0D8E9E189BYAPR11MB3622namp_--