From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mx.groups.io with SMTP id smtpd.web12.2646.1627516145968999685 for ; Wed, 28 Jul 2021 16:49:06 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=pEme/BrD; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: jiewen.yao@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10059"; a="276553330" X-IronPort-AV: E=Sophos;i="5.84,276,1620716400"; d="scan'208";a="276553330" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jul 2021 16:49:02 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,276,1620716400"; d="scan'208";a="464861156" Received: from orsmsx606.amr.corp.intel.com ([10.22.229.19]) by orsmga008.jf.intel.com with ESMTP; 28 Jul 2021 16:49:02 -0700 Received: from orsmsx602.amr.corp.intel.com (10.22.229.15) by ORSMSX606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Wed, 28 Jul 2021 16:49:01 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) 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.2242.10 via Frontend Transport; Wed, 28 Jul 2021 16:49:01 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.177) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.10; Wed, 28 Jul 2021 16:49:01 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j/ODtwlL4q4fNHMfJ+wbWd089I2xUXSeSBCHLw6XUPBglwuc0Asw1kPsI2VWjhTQ5tn5GlnoDoyptHqZYKBuvl/N/hVvk+3BPZ1220DYWbuXG1r+I8lBYfKlexbuQ4rU5rIw1/DCCZ4aqFWMz1U0FkZdx0pvmUPut6/WEavRSL9mGCEaWcWxxtiUris/5H88yL8MSx/NMJblfBsxhG3pvBtGk6YQGSoitG0cfMF+1qoj64OAticBzj5SwMxSvk2BknoOLwUz1MG74qermFsFNzS25A32Y7i4VCgJ04xq7ThqiqrugupC9EGumjCAjKJvc3m05qzFBIysefkSr1nSRQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wclmPr0n4gU/ilCSy6jGAJk0iEW9FtGss+iieoX3ocY=; b=ck8HLqV9h2I2xMvmhvGWXVvQKO6nBVkRPLOSFBdZKH0H4xWMDB+H+vU88X5p65uomgV5QtcaILV6NU08ORXPklVgNDSUQVySh67rrfKO94teB4DWVMPfp2P8+rwYZKl/aZgVoflyKoemMm+wuyEha8ZPozBKlF+QmjwzGN6TEBUgtK1yeiSbioSi78eg+DTPKUMs6LNVg8XeU3rvjkEdahrlsWp9m/h0FD40JZTegcESJh7PMdP3WkMlbeQ/NERJXu9NUF6QV9IMEiijTPsthY8G+qbvN1i9A8bwGZctgj84jdbwq1D/pr6+6xBzZQC75Aa8gy/ACimb9XUTYAW1QA== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wclmPr0n4gU/ilCSy6jGAJk0iEW9FtGss+iieoX3ocY=; b=pEme/BrDOeA7iljXeMJ6SSnBjIiCH70FmO8sEVEt/1mDan28+yyQG/zJvNPovUX/JmwuYI7Fme5/LpGpEd9TozKqHdVrPWt/45tUfDYVNwYKRzfv2Og2WX2KhLR8QzbVfIwdCA7w6B+e34GGTpwsEhcz4S69vnZQUa6DAMHY8NA= Received: from PH0PR11MB4885.namprd11.prod.outlook.com (2603:10b6:510:35::14) by PH0PR11MB4806.namprd11.prod.outlook.com (2603:10b6:510:31::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4373.18; Wed, 28 Jul 2021 23:49:00 +0000 Received: from PH0PR11MB4885.namprd11.prod.outlook.com ([fe80::6c99:8170:1c3c:9121]) by PH0PR11MB4885.namprd11.prod.outlook.com ([fe80::6c99:8170:1c3c:9121%3]) with mapi id 15.20.4352.031; Wed, 28 Jul 2021 23:49:00 +0000 From: "Yao, Jiewen" To: Brijesh Singh , "devel@edk2.groups.io" , "Xu, Min M" CC: Ard Biesheuvel , "Justen, Jordan L" , Erdem Aktas , "James Bottomley" , Tom Lendacky Subject: Re: [edk2-devel] [PATCH V3 06/10] OvmfPkg: Add AmdSev.asm in ResetVector Thread-Topic: [edk2-devel] [PATCH V3 06/10] OvmfPkg: Add AmdSev.asm in ResetVector Thread-Index: AQHXgqpMyZ2YEZCZ4k+xX9pxDyR89KtWps2AgAAPQgCAAAs5AIAAAmzQgAET7wCAABAEfIAADumAgAAIn1CAAHbDgIAACPhQgAAOxoCAAAHlwIAAMDcAgABCitA= Date: Wed, 28 Jul 2021 23:48:59 +0000 Message-ID: References: <4E4F0C83-ED04-4CFC-BDE2-33825C106DB9@intel.com> <97ad36da-13cd-ccb1-48f3-17ee03934aa6@amd.com> <1e234d04-6348-5ac8-9c99-0557d6b44ef6@amd.com> In-Reply-To: <1e234d04-6348-5ac8-9c99-0557d6b44ef6@amd.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.5.1.3 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: be5f6b7e-50ae-4867-4632-08d9522245a4 x-ms-traffictypediagnostic: PH0PR11MB4806: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Zt3/wwZtHVRD/GH3t9R6vBZSZ7kE6uDe1qiVkSTnltVAagwjisfTQuow8haBPnq0n2BELJWjUYn/rz1zp75idauuL6gBLMzEKKqvSMiJUgWAQ+pr1NfQIejhVxuT/IM2zFrCowk9dWxdW7gg2sFGihTKPAnWb1Pq4BEgNbVqqtIQVIUJtWKzSMpH3Glc2Tj480fV2p99Tb6YRNXeukeJjKuX96KNKGFeVWb6GFj+E7HjTDAWooG2KfyK8d5hV0un99G8SlpnrRM8fwUl7j9raOlB/q4liq7nbQ9RWViBluOvNO72fnzo5GwZNNVjH1sCz7SLV39vDMsF4EihI38luRFq99kmz3W3gsGAiAOzeNpXbrKHS9p8nlPEyDWCeN7IyqaAG77zlTn5yREGAMBo2Z0FmmodKBZiuw5AaGunmk5QDgpoPOh16iZaQwAL6Z0Z1wjHONjMBUOd6HoQ1nMlJH8+K0VE1MxMuaNYeMImBlDoSEI5TSeqXG+o71l3mvcRLXMwMtK2zkpbdeqZS1a0XxXDh0LbNRn6gcyI+cYjCssKZJbhrmU6gXpKkd9EwAv19nIE7vD7AxFymRYUZGgTVaD31O36S1cLc01trIaodzHwoBz0mGwXYLER08p6ppG4i6BSjhQW9vfUnh1TcbftL62FZ0s8jTVaZV+NB8Uu2j9T19mYFj7YQtDS7+E+N4sm9XooU2Q7S3XmVrB/3ZUphT5s3/XMz5dDfQOgzeWr/byfT04SkkhaqQ9zGFOiKUfM+MVfBMjGKi88p/fuNa6L1GBRGSfqBUeVTXnP+BLl8ds= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB4885.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(66556008)(66476007)(4326008)(66446008)(38070700005)(86362001)(316002)(64756008)(6506007)(71200400001)(26005)(6636002)(2906002)(8936002)(76116006)(45080400002)(53546011)(8676002)(186003)(966005)(54906003)(83380400001)(38100700002)(30864003)(110136005)(52536014)(508600001)(9686003)(5660300002)(66946007)(7696005)(122000001)(55016002)(33656002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dTF1bVBSNFB2MUx2K1JPQ1g5QkZtNXkycnU5RllpVHlFN3JKWUlEWHhoV2NV?= =?utf-8?B?MkZ4RUF6MHNCdnZ1aStFQ3RQbGhzQ2kyRy9YQ0xJUmluTS82dzVPMlZCMHh0?= =?utf-8?B?SjU1RjJucmtDSDkvbUd0UVFPNENWb2xzcnVudlgwVVh3MHV3TnVUd3p6NlVr?= =?utf-8?B?K2tBcGtSYS9kZmcxUUxtNE1zVUNMTEUvaml0N1NJckpkYjRTN01EZnNGYTV4?= =?utf-8?B?ZnRRMTJpR0Rxam42amkwNS8rOWhRKytnZXFZZzkyMlpXcFRsaER6MVJLMThB?= =?utf-8?B?ZHQrVllsajgyV2dLV2ptQmw2Sm4wcWtpeGtwWjNhRGF6OXpPdlI3eUVIL2dO?= =?utf-8?B?eDIxMlVJcjU3VTVSa1U1djgxYVlQbFMwU0Z4MndsVWw2SEJjTG1iRXRWL05P?= =?utf-8?B?U3lNQ1crbDh2QWVQRERiTDZURjRKUzVZb3RXMmZzZkQ3NmJ0UTNieC9uY1BX?= =?utf-8?B?ZlRyQkh0OU4xNW4vUG4zN25jWHJJMDcxcTBIOXUydlEwdHdTRi9taU1UdFdN?= =?utf-8?B?Z1EwQjYvQ2YzZGs3dnkza1UvTW1hYzVOcnNSMlNTb1gyV1JBbUlHV3JFWVIy?= =?utf-8?B?bDhteWcvSWVyNVRya3oyWW1BTHgyV3hnSlFTNnl3enlES0xPdSt6dUdYOTNC?= =?utf-8?B?RTdzVlZ4eWFmY3Z4T09HTjRPaGZ2RXY2ZFJmbFl0YW5MU05BZkxTbExtaXBR?= =?utf-8?B?clpiNEw4ZXV6YWRlYmZ2RGZWdmRkMkM2Tk55QmM3akplUm1naTEzMzVjOXcw?= =?utf-8?B?SjNLbFhGeUhSc1RZZ0taT2ZvNDBHc3VxaXF2cHM0TWdSYjlJVzF3ZnNnSEla?= =?utf-8?B?NXZpeU9XdzJaWHU4MGFTMGZLUkZpQTQyWVZhekt6Q3R6VHpGcTJIdEZKdnFo?= =?utf-8?B?bW9wUGdxTHY1MVFMSFVCdVhtS3M4ZFhVdldzd3ppT0VGS2FTN2UrTHlXRDJ5?= =?utf-8?B?NDlGd2dqeWNPNmh0THZTZS9yVDFpYm0ydjRJblNUclZ3UHpuMHY0MStHNFRx?= =?utf-8?B?L283QUtjUTVtNXJFSVdSRnJMRXR4RVlsOFE0dXZNY1ZwemhZZnROVmhJajhx?= =?utf-8?B?OUhuQkJiMGhTVVZnWGIwTXhaOEZUTnhCR005dThkQTRpbCsxT0ZGWTRRaTkr?= =?utf-8?B?L0c2S3prK3NvVzJvcThlZ2F2YkVUS3FlWXltandVTWFtaUlVeDNnZmx1aEpY?= =?utf-8?B?aHkwQTFHMGtpWGZRa2JEaUJ2eFVRZDF5ejV4RDV2NmN0WURYNVpvWEIxL3ZN?= =?utf-8?B?TWczZ2NsaXNIVFlza2xla2phbzlXTG1PanNqMjRiRldTRFZBajM0WWhtc1Q5?= =?utf-8?B?NDBPRjRIYndxMERVdHJRRUZNbGpuK3ZxM3VsdlNNSm1XYVVub0FUQ21HUWNl?= =?utf-8?B?U3lNeHFPNzVqVytzR3hScUd4VEtKaWxMbmJpOWpSeU9WRmFvY3VoTDJoZTIy?= =?utf-8?B?dDVoODlIcDA0dndnQmJxUisxOUorZEUxdENobHhnZjl2Q3lkNVlMSVNVOUJn?= =?utf-8?B?dFp2a1VBcFR5TTVjZWNzM0hMQitrMmpvbnFLc2hBampndzZlSXVUbFl2YndK?= =?utf-8?B?K09nYlR6TGtQd3JJYXgwQk04U1dSV1dURTlld0FkZklRYUZGeDByaS9oNDFW?= =?utf-8?B?UVlmY3U1a0xxZWx0cElTeDRuOTFBcVh4Q2pEaCtjWU5wb1I2bDFvS2RGelpz?= =?utf-8?B?M3BFbWhab2l6ZTN1aEtxTUV2T0NvYUpQd2xDd2t3N2xUa3QrZEMrUlRBcE9w?= =?utf-8?Q?ESHSIPfbJ4m2il2LtJVzwbTcCfIaExrfHSJcZyP?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB4885.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: be5f6b7e-50ae-4867-4632-08d9522245a4 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Jul 2021 23:48:59.9608 (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: QgrOjHHXNhCvm5SjPabjo0KkCUOhUH9UeYKZYqfbJON6r0WhPje4J4kIr9ND1+ZCEaZpklO/d9vFUXobQdfreQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB4806 Return-Path: jiewen.yao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Q29tbWVudCBiZWxvdzoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBC cmlqZXNoIFNpbmdoIDxicmlqZXNoLnNpbmdoQGFtZC5jb20+DQo+IFNlbnQ6IFRodXJzZGF5LCBK dWx5IDI5LCAyMDIxIDI6NTkgQU0NCj4gVG86IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVs LmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBYdSwgTWluIE0NCj4gPG1pbi5tLnh1QGludGVs LmNvbT4NCj4gQ2M6IGJyaWplc2guc2luZ2hAYW1kLmNvbTsgQXJkIEJpZXNoZXV2ZWwgPGFyZGIr dGlhbm9jb3JlQGtlcm5lbC5vcmc+Ow0KPiBKdXN0ZW4sIEpvcmRhbiBMIDxqb3JkYW4ubC5qdXN0 ZW5AaW50ZWwuY29tPjsgRXJkZW0gQWt0YXMNCj4gPGVyZGVtYWt0YXNAZ29vZ2xlLmNvbT47IEph bWVzIEJvdHRvbWxleSA8amVqYkBsaW51eC5pYm0uY29tPjsgVG9tDQo+IExlbmRhY2t5IDx0aG9t YXMubGVuZGFja3lAYW1kLmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0gg VjMgMDYvMTBdIE92bWZQa2c6IEFkZCBBbWRTZXYuYXNtIGluDQo+IFJlc2V0VmVjdG9yDQo+IA0K PiANCj4gDQo+IE9uIDcvMjgvMjEgMTE6MjYgQU0sIFlhbywgSmlld2VuIHdyb3RlOg0KPiA+IEkg d291bGQgc2F5IGl0IGlzIE5PVCB0aGUgYmVzdCBzb2Z0d2FyZSBwcmFjdGljZSB0byBkZWZpbmUg MiBlbmFibGUgZmllbGRzIHRvDQo+IGluZGljYXRlIG9uZSB0eXBlLg0KPiA+DQo+ID4gV2hhdCBp ZiBzb21lIHNvZnR3YXJlIGVycm9yLCBzZXQgYm90aCBUZHhFbmFibGUgYW5kIFNldkVuYWJsZSBh dCBzYW1lIHRpbWU/DQo+ID4gSG93IGRvIHlvdSBkZXRlY3Qgc3VjaCBlcnJvcj8NCj4gDQo+IEht bSwgYXJlbid0IHdlIHNheWluZyBpdCBpcyBhIHNvZnR3YXJlIGJ1Zy4gSW4gdGhhdCBjYXNlIGFu b3RoZXIgYnVnIGNhbg0KPiBhbHNvIG1lc3MgdXAgdGhlIHN0cnVjdHVyZSBoZWFkZXIuDQpbSmll d2VuXSBZZXMuIEkgdHJlYXQgaXQgYXMgYSBzb2Z0d2FyZSBpbXBsZW1lbnRhdGlvbiBidWcuDQpU aGUga2V5IHRoaW5nIGluIHNvZnR3YXJlIGRlc2lnbiBpcyB0byBhdm9pZCB0aGUgZGV2ZWxvcGVy IG1ha2luZyBtaXN0YWtlLCBoZWxwIGRlYnVnIGlzc3VlcywgaGVscCBtYWludGFpbiB0aGUgY29k ZSBlYXNpbHkuDQoNCg0KPiANCj4gPg0KPiA+IElmIHNvbWUgY29kZSBtYXkgY2hlY2sgdGhlIFNF ViBvbmx5LCBhbmQgc29tZSBjb2RlIG1heSBjaGVjayBURFggb25seSwNCj4gdGhlbiBib3RoIGNv ZGUgY2FuIHJ1bi4gVGhhdCB3aWxsIGJlIGEgZGlzYXN0ZXIuIFRoZSBjb2RlIGlzIGhhcmQgdG8g bWFpbnRhaW4gYW5kDQo+IGhhcmQgdG8gZGVidWcuDQo+ID4NCj4gPiBBbm90aGVyIGNvbnNpZGVy YXRpb24gaXM6IHdoYXQgaWYgc29tZW9uZSB3YW50cyB0byBzZXQgdGhlIHRoaXJkIHR5cGU/DQo+ ID4gRG8gd2Ugd2FudCB0byByZXNlcnZlIHRoZSAzcmQgYnl0ZT8gVG8gaW5kaWNhdGUgdGhlIHRo aXJkIHR5cGU/IEl0IGlzIG5vdA0KPiBzY2FsYWJsZS4NCj4gPg0KPiA+IFRoZSBiZXN0IHNvZnR3 YXJlIHByYWN0aWNlIGl0IHRvIGp1c3QgZGVmaW5lIG9uZSBmaWVsZCBhcyBlbnVtZXJhdGlvbi4g U28gYW55DQo+IHNvZnR3YXJlIGNhbiBvbmx5IHNldCBUZHggb3IgU2V2LiBUaGUgcmVzdWx0IGlz IGNvbnNpc3RlbnQsIG5vIG1hdHRlciB5b3UgY2hlY2sNCj4gdGhlIFNFViBhdCBmaXJzdCBvciBU RFggYXQgZmlyc3QuDQo+ID4gSWYgdGhlcmUgaXMgM3JkIGJ5dGVzLCB3ZSBqdXN0IG5lZWQgYXNz aWduIHRoZSAzcmQgdmFsdWUgdG8gaXQsIHdpdGhvdXQgaW1wYWN0IGFueQ0KPiBvdGhlciBmaWVs ZC4NCj4gPg0KPiANCj4gSSB3YXMgdHJ5aW5nIHRvIHNlZSBpZiB3ZSBjYW4gbWFrZSBpdCB3b3Jr IHdpdGhvdXQgcmVxdWlyaW5nIGFueSBjaGFuZ2VzDQo+IHRvIFVlZmlDcHVQa2cgZXRjICh3aGlj aCB1c2VzIHRoZSBFc1dvcmtBcmVhKS4NCltKaWV3ZW5dIEkgYWdyZWUgd2l0aCB5b3UuDQpBbmQg SSB0aGluayB0aGUgcHJpb3JpdHkgc2hvdWxkIGJlOg0KMSkgbWFrZSBhIGdvb2QgZGVzaWduIGZv bGxvd2luZyB0aGUgYmVzdCBwcmFjdGljZS4NCjIpIG1pbmltaXplIHRoZSBjaGFuZ2UuDQoNCkkg ZG9u4oCZdCB0aGluayB0d28gKmVuYWJsZSogZmllbGRzIGNhbiBzYXRpc2Z5ICMxLg0KQW5kIEkg YW0gb3BlbiBvbiBob3cgdG8gZG8gIzIuIChTZWUgcmVzdCBjb21tZW50IGJlbG93KQ0KDQoNCg0K PiANCj4gDQo+ID4NCj4gPiBJIHRoaW5rIHdlIGNhbiBhZGQgIm11c3QgemVybyIgaW4gdGhlIGNv bW1lbnQuIEJ1dCBpdCBkb2VzIG5vdCBtZWFuIHRoZXJlIHdpbGwNCj4gYmUgbm8gZXJyb3IgZHVy aW5nIGRldmVsb3BtZW50Lg0KPiA+DQo+ID4gVU5JT04gaXMgbm90IGEgdHlwZSBzYWZlIHN0cnVj dHVyZS4gVXN1YWxseSwgdGhlIGNvbnN1bWVyIG9mIFVOSU9OIHNoYWxsDQo+IHJlZmVyIHRvIGEg Y29tbW9uIGZpZWxkIHRvIGtub3cgd2hhdCB0aGUgdHlwZSBvZiB1bmlvbiBpcyAtIEkgdHJlYXQg dGhhdCBhcw0KPiBoZWFkZXIuDQo+ID4NCj4gPiBTaW5jZSB3ZSBhcmUgZGVmaW5pbmcgYSBjb21t b24gZGF0YSBzdHJ1Y3R1cmUsIEkgdGhpbmsgd2UgY2FuIGRvIHNvbWUgY2xlYW4NCj4gdXAuDQo+ ID4gT3IgaWYgeW91IGhhdmUgY29uY2VybiB0byBjaGFuZ2UgU0VDX1NFVl9FU19XT1JLX0FSRUEs IHdlIGNhbiBkZWZpbmUgYQ0KPiBuZXcgQ0MgV09SS19BUkVBIHdpdGhvdXQgdG91Y2hpbmcgU0VW X1NFVl9FU19XT1JLSU5HX0FSRUEuDQo+ID4NCj4gDQo+IEluIHlvdXIgYmVsb3cgc3RydWN0dXJl LCBJIGFzc3VtZSB0aGUgU0VWIG9yIFREWCBwcm9iZSB3aWxsIHNldCB0aGUgVHlwZQ0KPiBvbmx5 IHdoZW4gaXQgZGV0ZWN0cyB0aGF0IGZlYXR1cmUgaXMgYWN0aXZlLiBCdXQgd2hpY2ggbGF5ZXIg b2YgdGhlDQo+IHNvZnR3YXJlIGlzIGdvaW5nIHRvIHNldCB0aGUgdHlwZSB0byB6ZXJvIHRvIGlu ZGljYXRlIGl0cyBhIGxlZ2FjeSBndWVzdCA/DQpbSmlld2VuXSBHb29kIHF1ZXN0aW9uLg0KSSBl eHBlY3Qgc29tZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiwgc3VjaCBhcyBJbml0Q2NXb3JrQXJl YVNldiwgSW5pdENjV29ya0FyZWFUZHguDQpUaGUgZGVmYXVsdCB2YWx1ZSBMZWdhY3kgc2hhbGwg YmUgb3ZlcnJpZGUgaW4gSW5pdENjV29ya0FyZWEgYWZ0ZXIgY2FwYWJpbGl0eSBjaGVjay4NClBy ZU1haW5GdW5jdGlvbkhvb2tYWFggaXMgY29tbW9uIHBhdHRlciBmb3IgYWxsIGZ1bmN0aW9uLiBJ dCBqdXN0IGNoZWNrcyB0aGUgQ2NXb3JrQXJlYS4NCg0KDQoNCj4gDQo+IHR5cGVkZWYgc3RydWN0 IHsNCj4gCVVJTlQ4ICAgIEhlYWRlclZlcnNpb247IC8vIDANCj4gCVVJTlQ4ICAgIEhlYWRMZW5n dGg7IC8vIDQNCj4gCVVJTlQ4ICAgIFR5cGU7IC8vIDAgLSBsZWdhY3ksIDEgLSBTRVYsIDIgLSBU RFgNCj4gCVVJTlQ4ICAgIFN1YlR5cGU7IC8vIFR5cGUgc3BlY2lmaWMgc3ViIHR5cGUsIGlmIG5l ZWRlZC4NCj4gfSBDQ19DT01NT05fV09SS19BUkVBX0hFQURFUjsNCj4gDQo+IGkuZSBJbiB0aGlz IGNhbGwgc2VxdWVuY2U6DQo+IA0KPiBPbmVUaW1lQ2FsbCAgIFByZU1haW5GdW5jdGlvbkhvb2tT ZXYNCj4gT25lVGltZUNhbGwgICBQcmVNYWluRnVuY3Rpb25Ib29rVGR4DQo+IA0KPiAuLi4uDQo+ IA0KPiBUaGUgUHJlTWFpbkZ1bmN0aW9uSG9va1NldiB3aWxsIGRldGVjdCB3aGV0aGVyIFNFViBp cyBhY3RpdmUgb3Igbm90LiBJZg0KPiBpdHMgYWN0aXZlIHRoZW4gc2V0IHRoZSB0eXBlID0gTUVN X0VOQ1JZUFRfU0VWOyBhbmQgc2ltaWxhcmx5IHRoZSBUZHgNCj4gaG9vayB3aWxsIHNldCB0aGUg dHlwZT1NRU1fRU5DUllQVF9URFguIFdoYXQgaWYgbmVpdGhlciBURFggb3IgU0VWIGlzDQo+IGVu YWJsZWQuIEF0IHRoaXMgdGltZSB3ZSB3aWxsIGRlcGVuZCBvbiBoeXBlcnZpc29yIHRvIGVuc3Vy ZSB0aGF0IHZhbHVlDQo+IGF0IHRoYXQgbWVtb3J5IGlzIHplcm8uDQpbSmlld2VuXSBJIHRoaW5r IHdlIGp1c3QgbGV0IEluaXRDY1dvcmtBcmVhU2V2IGFuZCBJbml0Q2NXb3JrQXJlYVRkeCBvdmVy cmlkZSB0aGUgZGVmYXVsdCB2YWx1ZS4NCkluaXRDY1dvcmtBcmVhe1NldixUZHh9Og0KCS8vIERl dGVjdCBIYXJkd2FyZSBDYXBhYmlsaXR5IA0KCS8vIElmIGRpc2NvdmVyZWQsIHRoZW4gc2V0IFR5 cGUgPSB7U0VWLFREWH0NCgkvLyBFbHNlLCBsZWF2ZSBpdCBhcyBpcw0KDQoNCg0KDQo+IA0KPiBB ZGRpdGlvbmFsbHksIGRvIHlvdSBzZWUgYSBuZWVkIGZvciB0aGUgSGVhZExlbmd0aCBmaWVsZCBp biB0aGlzDQo+IHN0cnVjdHVyZSA/IEluIGFzbSBpdCBpcyBwcmVmZXJyZWQgaWYgd2UgY2FuIGFj Y2VzcyB0aGUgYWN0dWFsIHdvcmthcmVhDQo+IHBvaW50ZXIgYXQgdGhlIGZpeGVkIGxvY2F0aW9u IGluc3RlYWQgb2YgZmlyc3QgcmVhZGluZyB0aGUgSGVhZExlbmd0aCB0bw0KPiBkZXRlcm1pbmUg aG93IG11Y2ggaXQgbmVlZCB0byBza2lwLg0KW0ppZXdlbl0gWW91IGFyZSByaWdodC4NCkxlbmd0 aC9WZXJzaW9uIGlzIE5PVCBhYnNvbHV0ZWx5IG5lY2Vzc2FyeSwgaWYgdGhlIGhlYWRlciBpcyBz aW1wbGUgZW5vdWdoLiBJZiB5b3UgdGhpbmsgd2UgZG9u4oCZdCBuZWVkIHRoZW0sIEkgYW0gT0sg dG8gcmVtb3ZlIHRoZW0uDQpJIHRoaW5rIG9ubHkgIlR5cGUiIGlzIG1hbmRhdG9yeSwgd2hpY2gg dGVsbHMgdXMgdGhlIGNhdGVnb3J5Lg0KSSB0aGluayAiU3ViVHlwZSIgaXMgdXNlZnVsLCBiZWNh dXNlIHdlIG1pZ2h0IHdhbnQgdG8ga25vdyBpZiBpdCBpcyBTRVYsIG9yIFNFVi1FUywgb3IgU0VW LVNOUCwgYW5kIGlmIGl0IGlzIFREWCAxLjAsIG9yIFREWC5mdXR1cmUuIFBsZWFzZSBsZXQgbWUg a25vdyB5b3VyIHRob3VnaHQuDQoNCg0KT25lIHF1ZXN0aW9uIG9uIFNFQ19TRVZfRVNfV09SS19B UkVBLiBTaW5jZSB5b3UgaGF2ZSBTRVYvU0VWLUVTL1NFVi1TTlAsIGlzIHRoaXMgU0VWX0VTX1dP UktfQVJFQSBvbmx5IGZvciBTRVZfRVM/IE9yIGl0IGlzIGFsc28gdXNlZCBpbiBTRVYgKG5vIFNF Vl9FUyksIGFuZCBTRVZfU05QID8NCkZvciBleGFtcGxlLCB3aGVuIHdlIHNlZSBTZXZFc0VuYWJs ZT0wLCBob3cgZG8gd2Uga25vdyBpdCBpcyBTRVYgKG5vIFNFVl9FUykgb3IgbGVnYWN5IChubyBT RVYsIG5vIFNFVl9FUyk/IE9yIHdlIGRvbuKAmXQgbmVlZCBjYXJlIGluIFNFViAobm8gU0VWX0VT KSBjYXNlLg0KDQoNCg0KDQo+IA0KPiANCj4gPiBUaGFuayB5b3UNCj4gPiBZYW8gSmlld2VuDQo+ ID4NCj4gPg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiBGcm9tOiBkZXZl bEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZiBCcmlq ZXNoDQo+ID4+IFNpbmdoIHZpYSBncm91cHMuaW8NCj4gPj4gU2VudDogV2VkbmVzZGF5LCBKdWx5 IDI4LCAyMDIxIDExOjU5IFBNDQo+ID4+IFRvOiBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRl bC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgWHUsIE1pbiBNDQo+ID4+IDxtaW4ubS54dUBp bnRlbC5jb20+DQo+ID4+IENjOiBicmlqZXNoLnNpbmdoQGFtZC5jb207IEFyZCBCaWVzaGV1dmVs IDxhcmRiK3RpYW5vY29yZUBrZXJuZWwub3JnPjsNCj4gPj4gSnVzdGVuLCBKb3JkYW4gTCA8am9y ZGFuLmwuanVzdGVuQGludGVsLmNvbT47IEVyZGVtIEFrdGFzDQo+ID4+IDxlcmRlbWFrdGFzQGdv b2dsZS5jb20+OyBKYW1lcyBCb3R0b21sZXkgPGplamJAbGludXguaWJtLmNvbT47IFRvbQ0KPiA+ PiBMZW5kYWNreSA8dGhvbWFzLmxlbmRhY2t5QGFtZC5jb20+DQo+ID4+IFN1YmplY3Q6IFJlOiBb ZWRrMi1kZXZlbF0gW1BBVENIIFYzIDA2LzEwXSBPdm1mUGtnOiBBZGQgQW1kU2V2LmFzbSBpbg0K PiA+PiBSZXNldFZlY3Rvcg0KPiA+Pg0KPiA+PiBIaSBZYW8gSmlld2VuLA0KPiA+Pg0KPiA+PiBJ IGd1ZXNzIEkgYW0gc3RpbGwgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2h5IHdlIG5lZWQgdGhlIGhl YWRlciBpbiB0aGUNCj4gPj4gd29yayBhcmVhLiBDYW4ndCB3ZSBkbyBzb21ldGhpbmcgbGlrZSB0 aGlzOg0KPiA+Pg0KPiA+PiB0eXBlZGVmIHN0cnVjdCB7DQo+ID4+IAlVSU5UOCAgICBTZXZFc0Vu YWJsZWQ7DQo+ID4+DQo+ID4+IAkvLyBJZiBFcyBpcyBlbmFibGVkIHRoZW4gdGhpcyBmaWVsZCBt dXN0IGJlIHplcm9lZA0KPiA+PiAJVUlOVDggICAgTXVzdEJlWmVybzsNCj4gPj4NCj4gPj4gCVVJ TlQ4ICAgIFJlc2VydmVkMVs2XTsNCj4gPj4NCj4gPj4gCVVJTlQ2NCAgIFJhbmRvbURhdGE7DQo+ ID4+DQo+ID4+IAlVSU5UNjQgICBFbmNyeXB0aW9uTWFzazsNCj4gPj4gfSBTRUNfU0VWX0VTX1dP UktfQVJFQTsNCj4gPj4NCj4gPj4gdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+PiAJLy8gSWYgVGR4IGlz IGVuYWJsZWQgdGhlbiBpdCBtdXN0IGJlIHplcm9lZA0KPiA+PiAJVUlOVDggICAgTXVzdEJlWmVy bw0KPiA+Pg0KPiA+PiAJVUlOVDggICAgVGR4RW5hYmxlZDsNCj4gPj4NCj4gPj4gCVVJTlQ4ICAg IFJlc2VydmVkMls2XTsNCj4gPj4gCS4uLi4NCj4gPj4NCj4gPj4gfSBUWF9XT1JLX0FSRUE7DQo+ ID4+DQo+ID4+IHR5cGVkZWYgdW5pb24gew0KPiA+PiAJU0VDX1NFVl9FU19XT1JLX0FSRUEgU2V2 RXNXb3JrQXJlYTsNCj4gPj4gCVREWF9XT1JLX0FSRUEJICAgICBUZHhXb3JrQXJlYTsNCj4gPj4g fSBDQ19XT1JLX0FSRUE7DQo+ID4+DQo+ID4+IEkgYW0gdHJ5aW5nIHRvIG1pbmltaXplIHRoZSBj aGFuZ2VzIHRvIHRoZSBleGlzdGluZyBjb2RlLiBUaGUgU0VWIGFuZA0KPiA+PiBURFggcHJvYmUg bG9naWMgc2hvdWxkIGVuc3VyZSB0aGF0IGlmIHRoZSBmZWF0dXJlIGlzIGRldGVjdGVkLCB0aGVu IGl0DQo+ID4+IG11c3QgY2xlYXIgdGhlIE11c3RCZVplcm8nZWQgZmllbGQuDQo+ID4+DQo+ID4+ IEJhc2ljYWxseSwgd2UgYWxyZWFkeSBoYXZlIGEgNjQtYml0IHZhbHVlIHJlc2VydmVkIGluIHRo ZSBTZXZFc1dvcmsgYXJlYQ0KPiA+PiBhbmQgY3VycmVudGx5IG9ubHkgb25lIGJ5dGUgaXMgdXNl ZCBhbmQgc2Vjb25kIGJ5dGUgY2FuIGJlIGRldGVjdGVkIGZvcg0KPiA+PiB0aGUgVERYLiBCYXNp Y2FsbHkgdGhlIHdoaWNoIGVuY3J5cHRpb24gdGVjaG5vbG9neSBpcyBhY3RpdmUgdGhlDQo+ID4+ IGRlZmluaXRpb24gb2YgdGhlIHdvcmsgYXJlYSB3aWxsIGNoYW5nZS4NCj4gPj4NCj4gPj4gQW0g SSBtaXNzaW5nIHNvbWV0aGluZyA/DQo+ID4+DQo+ID4+IFRoYW5rcw0KPiA+Pg0KPiA+PiBPbiA3 LzI4LzIxIDEwOjIyIEFNLCBZYW8sIEppZXdlbiB3cm90ZToNCj4gPj4+IEhpIEJyaWplc2gNCj4g Pj4+IFRoYW5rcyENCj4gPj4+DQo+ID4+PiBJIHRoaW5rIGlmIHdlIHdhbnQgdG8gcmV1c2UgdGhp cywgd2UgbmVlZCByZW5hbWUgdGhlIGRhdGEgc3RydWN0dXJlLg0KPiA+Pj4NCj4gPj4+IEZpcnN0 LCB3ZSBzaG91bGQgdXNlIGEgZ2VuZXJpYyBuYW1lLg0KPiA+Pj4NCj4gPj4+IFNlY29uZCwgSSBk b27igJl0IHRoaW5rIGl0IGlzIGdvb2QgaWRlYSB0byBkZWZpbmUgdHdvICplbmFibGUqIGZpZWxk cy4gU2luY2Ugb25seQ0KPiA+PiBvbmUgb2YgdGhlbSBzaG91bGQgYmUgZW5hYmxlZCwgd2Ugc2hv dWxkIHVzZSAxIGZpZWxkIGFzIGVudW1lcmF0aW9uLg0KPiA+Pj4NCj4gPj4+IFRoaXJkLCB3ZSBz aG91bGQgaGlkZSB0aGUgU0VWIHNwZWNpZmljIGFuZCBURFggc3BlY2lmaWMgZGVmaW5pdGlvbiBp biBDQw0KPiA+PiBjb21tb24gd29yayBhcmVhLg0KPiA+Pj4NCj4gPj4+IElmIHdlIGFncmVlIHRv IHVzZSBhIGNvbW1vbiB3b3JrIGFyZWEsIEkgcmVjb21tZW5kIGJlbG93Og0KPiA+Pj4NCj4gPj4+ IHR5cGVkZWYgc3RydWN0IHsNCj4gPj4+ICAgICAgVUlOVDggICAgSGVhZGVyVmVyc2lvbjsgLy8g MA0KPiA+Pj4gICAgICBVSU5UOCAgICBIZWFkTGVuZ3RoOyAvLyA0DQo+ID4+PiAgICAgIFVJTlQ4 ICAgIFR5cGU7IC8vIDAgLSBsZWdhY3ksIDEgLSBTRVYsIDIgLSBURFgNCj4gPj4+ICAgICAgVUlO VDggICAgU3ViVHlwZTsgLy8gVHlwZSBzcGVjaWZpYyBzdWIgdHlwZSwgaWYgbmVlZGVkLg0KPiA+ Pj4gfSBDQ19DT01NT05fV09SS19BUkVBX0hFQURFUjsNCj4gPj4+DQo+ID4+PiB0eXBlZGVmIHN0 cnVjdCB7DQo+ID4+PiAgICAgIENDX0NPTU1PTl9XT1JLX0FSRUFfSEVBREVSIEhlYWRlcjsNCj4g Pj4+ICAgICAgLy8gcmVzZXQgaXMgdmFsaWQgaWYgVHlwZSA9PSAxDQo+ID4+PiAgICAgIFVJTlQ4 ICAgIFJlc2VydmVkMVs0XTsNCj4gPj4+ICAgICAgVUlOVDY0ICAgUmFuZG9tRGF0YTsNCj4gPj4+ ICAgICAgVUlOVDY0ICAgRW5jcnlwdGlvbk1hc2s7DQo+ID4+PiB9IFNFQ19TRVZfRVNfV09SS19B UkVBOw0KPiA+Pj4NCj4gPj4+IHR5cGVkZWYgc3RydWN0IHsNCj4gPj4+ICAgICAgQ0NfQ09NTU9O X1dPUktfQVJFQV9IRUFERVIgSGVhZGVyOw0KPiA+Pj4gICAgICAvLyByZXNldCBpcyB2YWxpZCBp ZiBUeXBlID09IDINCj4gPj4+ICAgICAgVUlOVDggICAgVGR4U3BlY2lmaWNbXTsgIC8vIFRCRA0K PiA+Pj4gfSBURFhfV09SS19BUkVBOw0KPiA+Pj4NCj4gPj4+IFRoYW5rIHlvdQ0KPiA+Pj4gWWFv IEppZXdlbg0KPiA+Pj4NCj4gPj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+ IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4gT24gQmVo YWxmIE9mIEJyaWplc2gNCj4gPj4+PiBTaW5naCB2aWEgZ3JvdXBzLmlvDQo+ID4+Pj4gU2VudDog V2VkbmVzZGF5LCBKdWx5IDI4LCAyMDIxIDEwOjM0IFBNDQo+ID4+Pj4gVG86IFlhbywgSmlld2Vu IDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IFh1LCBNaW4gTQ0KPiA8bWluLm0ueHVAaW50ZWwuY29t Pg0KPiA+Pj4+IENjOiBicmlqZXNoLnNpbmdoQGFtZC5jb207IGRldmVsQGVkazIuZ3JvdXBzLmlv OyBBcmQgQmllc2hldXZlbA0KPiA+Pj4+IDxhcmRiK3RpYW5vY29yZUBrZXJuZWwub3JnPjsgSnVz dGVuLCBKb3JkYW4gTA0KPiA8am9yZGFuLmwuanVzdGVuQGludGVsLmNvbT47DQo+ID4+Pj4gRXJk ZW0gQWt0YXMgPGVyZGVtYWt0YXNAZ29vZ2xlLmNvbT47IEphbWVzIEJvdHRvbWxleQ0KPiA+Pj4+ IDxqZWpiQGxpbnV4LmlibS5jb20+OyBUb20gTGVuZGFja3kgPHRob21hcy5sZW5kYWNreUBhbWQu Y29tPg0KPiA+Pj4+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIFYzIDA2LzEwXSBP dm1mUGtnOiBBZGQgQW1kU2V2LmFzbSBpbg0KPiA+Pj4+IFJlc2V0VmVjdG9yDQo+ID4+Pj4NCj4g Pj4+PiBIaSBKaWV3ZW4gYW5kIE1pbiwNCj4gPj4+Pg0KPiA+Pj4+IFNlZSBteSBjb21tZW50cyBi ZWxvdy4NCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+Pj4gT24gNy8yOC8yMSAyOjU0IEFNLCBZYW8sIEpp ZXdlbiB3cm90ZToNCj4gPj4+Pj4gWWVzLiBJIGFtIHRoaW5raW5nIHRoZSBzYW1lIHRoaW5nLg0K PiA+Pj4+Pg0KPiA+Pj4+PiBbQ0MgRmxhZyBtZW1vcnkgbG9jYXRpb25dDQo+ID4+Pj4+IDEpIEEg Z2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVyLCBzdWNoIGFzIEVCUC4NCj4gPj4+Pj4NCj4gPj4+Pj4g MikgQSBnbG9iYWwgdmFyaWFibGUsIHN1Y2ggYXMNCj4gPj4+Pj4gLmRhdGENCj4gPj4+Pj4gVGVl RmxhZ3M6IEREIDANCj4gPj4+Pj4NCj4gPj4+Pj4gMykgQSBmaXhlZCByZWdpb24gaW4gc3RhY2ss IHN1Y2ggYXMNCj4gPj4+Pj4gZHdvcmRbU1RBQ0tfVE9QIC0gNF0NCj4gPj4+Pj4NCj4gPj4+Pj4g NCkgQSBuZXcgQ0MgY29tbW9uIGZpeGVkIHJlZ2lvbiwgc3VjaCBhcw0KPiA+Pj4+PiBkd29yZFtD Q19DT01NT05fRkxBR1NdDQo+ID4+Pj4+DQo+ID4+Pj4+IDUpIEEgZml4ZWQgcmVnaW9uIHBpZ2d5 YmFjayBvbiBleGlzdGluZyBDQyB3b3JraW5nIGFyZWEsIHN1Y2ggYXMNCj4gPj4+Pj4gZHdvcmRb Q0NfV09SS0lOR19BUkVBXQ0KPiA+Pj4+Pg0KPiA+Pj4+PiBIaSBCcmlqZXNoL01pbg0KPiA+Pj4+ PiBBbnkgcHJlZmVyZW5jZT8NCj4gPj4+Pj4NCj4gPj4+Pj4gW0NDIEluZGljYXRvciBGbGFnc10N Cj4gPj4+Pj4gUHJvcG9zYWw6IFVJTlQ4WzRdDQo+ID4+Pj4+DQo+ID4+Pj4+IEJ5dGUgWzBdIFZl cnNpb246IDANCj4gPj4+Pj4gYnl0ZSBbMV0gTGVuZ3RoOiA0DQo+ID4+Pj4+IGJ5dGUgWzJdIFR5 cGU6DQo+ID4+Pj4+IAkwOiBsZWdhY3kNCj4gPj4+Pj4gCTE6IFNFVg0KPiA+Pj4+PiAJMjogVERY DQo+ID4+Pj4+IGJ5dGUgWzNdIFN1YiBUeXBlOg0KPiA+Pj4+PiAJSWYgVHlwZSBpcyAwIChsZWdh Y3kpLCB0aGVuDQo+ID4+Pj4+IAkJMDogbGVnYWN5DQo+ID4+Pj4+IAlJZiBUeXBlIGlzIDEgKFNF ViksIHRoZW4NCj4gPj4+Pj4gCQkwOiBTRVYNCj4gPj4+Pj4gCQkxOiBTRVYtRVMNCj4gPj4+Pj4g CQkyOiBTRVYtU05QDQo+ID4+Pj4+IAlJZiBUeXBlIGlzIDIgKFREWCksIHRoZW4NCj4gPj4+Pj4g CQkwOiBURFggMS4wDQo+ID4+Pj4+DQo+ID4+Pj4+IFRoYW5rIHlvdQ0KPiA+Pj4+PiBZYW8gSmll d2VuDQo+ID4+Pj4+DQo+ID4+Pj4+DQo+ID4+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiA+Pj4+Pj4gRnJvbTogWHUsIE1pbiBNIDxtaW4ubS54dUBpbnRlbC5jb20+DQo+ID4+Pj4+ PiBTZW50OiBXZWRuZXNkYXksIEp1bHkgMjgsIDIwMjEgMjo1OCBQTQ0KPiA+Pj4+Pj4gVG86IFlh bywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPj4+Pj4+IENjOiBCcmlqZXNoIFNp bmdoIDxicmlqZXNoLnNpbmdoQGFtZC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgQXJkDQo+ ID4+Pj4+PiBCaWVzaGV1dmVsIDxhcmRiK3RpYW5vY29yZUBrZXJuZWwub3JnPjsgSnVzdGVuLCBK b3JkYW4gTA0KPiA+Pj4+Pj4gPGpvcmRhbi5sLmp1c3RlbkBpbnRlbC5jb20+OyBFcmRlbSBBa3Rh cyA8ZXJkZW1ha3Rhc0Bnb29nbGUuY29tPjsNCj4gPj4+PiBKYW1lcw0KPiA+Pj4+Pj4gQm90dG9t bGV5IDxqZWpiQGxpbnV4LmlibS5jb20+OyBUb20gTGVuZGFja3kNCj4gPj4+PiA8dGhvbWFzLmxl bmRhY2t5QGFtZC5jb20+DQo+ID4+Pj4+PiBTdWJqZWN0OiBSRTogW1BBVENIIFYzIDA2LzEwXSBP dm1mUGtnOiBBZGQgQW1kU2V2LmFzbSBpbg0KPiBSZXNldFZlY3Rvcg0KPiA+Pj4+Pj4NCj4gPj4+ Pj4+IE9uIEp1bHkgMjgsIDIwMjEgMjowNSBQTSwgWWFvLCBKaWV3ZW4gd3JvdGU6DQo+ID4+Pj4+ Pj4gSXQgZG9lcyBub3QgbmVjZXNzYXJ5IHRvIGJlIGEgd29ya2luZyBhcmVhLg0KPiA+Pj4+Pj4+ DQo+ID4+Pj4+Pj4gV2UganVzdCBuZWVkIGEgY29tbW9uIFRFRSBmbGFnIHRvIGluZGljYXRlIGlm IHRoZSBzeXN0ZW0gcnVuIGluIGxlZ2FjeSwNCj4gPj4gU0VWLA0KPiA+Pj4+Pj4gb3INCj4gPj4+ Pj4+PiBURFgsIHJpZ2h0Pw0KPiA+Pj4+Pj4gUmlnaHQuIFdlIG5lZWQgc29tZXdoZXJlIHRvIHN0 b3JlIHRoaXMgZmxhZywgZWl0aGVyIGluIGEgUmVnaXN0ZXIgb3IgaW4NCj4gPj4+PiBNZW1vcnku DQo+ID4+Pj4+PiBJZiBpdCBpcyBtZW1vcnksIHRoZW4gaW4gVGR4IHRoZSBtZW1vcnkgcmVnaW9u IHNob3VsZCBiZSBpbml0aWFsaXplZCBieQ0KPiBob3N0DQo+ID4+Pj4gVk1NLg0KPiA+Pj4+Pj4+ DQo+ID4+Pj4+Pj4gdGhhbmsgeW91IQ0KPiA+Pj4+Pj4+IFlhbywgSmlld2VuDQo+ID4+Pj4+Pj4N Cj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+PiDlnKggMjAyMeW5tDfmnIgyOOaXpe+8jOS4i+WNiDE6MDfv vIxYdSwgTWluIE0gPG1pbi5tLnh1QGludGVsLmNvbT4NCj4gPj4g5YaZDQo+ID4+Pj4g6YGT77ya DQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IO+7v09uIEp1bHkgMjcsIDIwMjEgODo0NiBQTSwgWWFv LCBKaWV3ZW4gd3JvdGU6DQo+ID4+Pj4+Pj4+PiBISSBNaW4NCj4gPj4+Pj4+Pj4+IEkgYWdyZWUg d2l0aCBCcmlqZXNoLg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IFRoZSBiYXNpYyBydWxlIGlz OiBTRVYgZmlsZSBzaGFsbCBuZXZlciByZWZlciB0byBURFggZGF0YSBzdHJ1Y3R1cmUuDQo+ID4+ Pj4+Pj4+PiBURFggZmlsZSBzaGFsbCBuZXZlciByZWZlciB0byBTRVYgZGF0YSBzdHJ1Y3R1cmUu DQo+ID4+Pj4+Pj4+PiBUaGVzZSBjb2RlIHNob3VsZCBiZSBpc29sYXRlZCBjbGVhcmx5Lg0KPiA+ Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IERvIHdlIHN0aWxsIG5lZWQgdGhhdCBsb2dpYyBpZiB3ZSBm b2xsb3cgdGhlIG5ldyBwYXR0ZXJuPw0KPiA+Pj4+Pj4+PiBJIGhhdmUgcmVwbGllZCB0byBCcmlq ZXNoJ3MgbWFpbCBhYm91dCB0aGUgY29uY2VybiBvZiB0aGUgbmV3IHBhdHRlcm4uDQo+ID4+Pj4+ Pj4+DQo+ID4+Pj4+Pj4+IEkgaGF2ZSBzb21lIGNvbmNlcm4gaW4gdGhlIGN1cnJlbnQgcGF0dGVy bjoNCj4gPj4+Pj4+Pj4gPT09PT09PT09PT09PT09PT09PT0NCj4gPj4+Pj4+Pj4gICAgICAgT25l VGltZUNhbGwgICBQcmVNYWluRnVuY3Rpb25Ib29rU2V2DQo+ID4+Pj4+Pj4+ICAgICAgIE9uZVRp bWVDYWxsICAgUHJlTWFpbkZ1bmN0aW9uSG9va1RkeA0KPiA+Pj4+Pj4+PiBNYWluRnVuY3Rpb246 DQo+ID4+Pj4+Pj4+ICAgICAgIFhYWFhYWA0KPiA+Pj4+Pj4+PiAgICAgICBPbmVUaW1lQ2FsbCAg IFBvc3RNYWluRnVuY3Rpb25Ib29rU2V2DQo+ID4+Pj4+Pj4+ICAgICAgIE9uZVRpbWVDYWxsICAg UG9zdE1haW5GdW5jdGlvbkhvb2tUZHgNCj4gPj4+Pj4+Pj4gPT09PT09PT09PT09PT09PT09PT0N Cj4gPj4+Pj4+Pj4gVGhlIFRFRSBmdW5jdGlvbiBuZWVkIGltcGxlbWVudCBhIFRFRSBjaGVjayBm dW5jdGlvbiAoc3VjaCBhcyBJc1NldiwNCj4gb3INCj4gPj4+Pj4+IElzVGR4KS4NCj4gPj4+Pj4+ Pj4NCj4gPj4+Pj4+Pj4gVGR4IGNhbGwgQ1BVSUQoMHgyMSkgdG8gZGV0ZXJtaW5lIGlmIGl0IGlz IHRkeCBndWVzdCBpbiB0aGUgdmVyeQ0KPiA+Pj4+Pj4+PiBiZWdpbm5pbmcgb2YgUmVzZXRWZWN0 b3IuIFRoZW4gJ1REWEcnIGlzIHNldCBpbiBURFhfV09SS19BUkVBLg0KPiBTRVYNCj4gPj4+PiBk b2VzDQo+ID4+Pj4+Pj4gdGhlIHNpbWlsYXIgd29yayB3aGljaCBjYWxsIENoZWNrU2V2RmVhdHVy ZXMgdG8gc2V0DQo+IFNFVl9FU19XT1JLX0FSRUENCj4gPj4gdG8NCj4gPj4+PiAxLg0KPiA+Pj4+ Pj4+Pg0KPiA+Pj4+Pj4+PiBBZnRlciB0aGF0IGJvdGggVERYIGFuZCBTRVYgcmVhZCB0aGUgYWJv dmUgV09SS19BUkVBIHRvIGNoZWNrIGlmIGl0DQo+IGlzDQo+ID4+Pj4gVERYDQo+ID4+Pj4+Pj4g b3IgU0VWIG9yIGxlZ2FjeSBndWVzdC4NCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gSW4gVGR4IHRo ZSBhY2Nlc3MgdG8gU0VWX0VTX1dPUktfQVJFQSB3aWxsIHRyaWdnZXIgZXJyb3IgYmVjYXVzZQ0K PiA+Pj4+Pj4+IFNFVl9FU19XT1JLX0FSRUEgaXMgKk5PVCogaW5pdGlhbGl6ZWQgYnkgaG9zdCBW TU0uDQo+ID4+Pj4+Pj4+IEluIFNFVi1TTlAgSSBhbSBhZnJhaWQgdGhlIGFjY2VzcyB0byBURFhf V09SS19BUkVBIHdpbGwgdHJpZ2dlcg0KPiBlcnJvcg0KPiA+Pj4+IHRvby4NCj4gPj4+Pj4+Pj4N Cj4gPj4+Pj4+Pj4gSSBhbSB3b25kZXJpbmcgaWYgVERYIGFuZCBTRVYgY2FuIHVzZSB0aGUgc2Ft ZSBtZW1vcnkgcmVnaW9uIChmb3INCj4gPj4+Pj4+IGV4YW1wbGUsDQo+ID4+Pj4+Pj4gVEVFX1dP UktfQVJFQSkgYXMgdGhlIHdvcmsgYXJlYT8NCj4gPj4+Pj4+Pj4gU28gdGhhdCB0aGlzIHdvcmsg YXJlYSBpcyBndWFyYW50ZWVkIHRvIGJlIGluaXRpYWxpemVkIGluIGJvdGggVERYIGFuZA0KPiA+ Pj4+Pj4+PiBTRVYuIFN0cnVjdHVyZSBvZiB0aGUgVEVFX1dPUktfQVJFQSBtYXkgbG9vayBsaWtl IHRoaXM6DQo+ID4+Pj4+Pj4+ICAgICB0eXBlZGVmIHN0cnVjdCB7DQo+ID4+Pj4+Pj4+ICAgICAg ICAgVUlOVDggIEZsYWdbNF07ICAgICAgICAgJ1REWEcnIG9yICdTRVZHJyBvciBhbGwtMA0KPiA+ Pj4+Pj4+PiAgICAgICAgIFVJTlQ4ICBPdGhlcnNbXTsNCj4gPj4+Pj4+Pj4gICAgIH0gVEVFX1dP UktfQVJFQTsNCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4NCj4gPj4+PiBBcmUgd2UgcmVzZXJ2aW5nIGEg bmV3IHBhZ2UgZm9yIHRoZSBURFhfV09SS19BUkVBID8gSSBhbSB3b25kZXJpbmcNCj4gd2h5DQo+ ID4+Pj4gY2FuJ3Qgd2UgdXNlIHRoZSBTRVZfRVNfV09SS19BUkVBIGluc3RlYWQgb2Ygd2FzdGlu ZyBzcGFjZSBpbiB0aGUNCj4gPj4gTUVNRkQuDQo+ID4+Pj4NCj4gPj4+PiBUaGUgU0VWX0VTX1dP UktfQVJFQSBsYXlvdXQgbG9va3MgbGlrZSB0aGlzOg0KPiA+Pj4+DQo+ID4+Pj4gdHlwZWRlZiBz dHJ1Y3QgX1NFQ19TRVZfRVNfV09SS19BUkVBIHsNCj4gPj4+PiAgICAgIFVJTlQ4ICAgIFNldkVz RW5hYmxlZDsNCj4gPj4+PiAgICAgIFVJTlQ4ICAgIFJlc2VydmVkMVs3XTsNCj4gPj4+Pg0KPiA+ Pj4+ICAgICAgVUlOVDY0ICAgUmFuZG9tRGF0YTsNCj4gPj4+Pg0KPiA+Pj4+ICAgICAgVUlOVDY0 ICAgRW5jcnlwdGlvbk1hc2s7DQo+ID4+Pj4gfSBTRUNfU0VWX0VTX1dPUktfQVJFQTsNCj4gPj4+ Pg0KPiA+Pj4+IFRoZXJlIGlzIHJlc2VydmVkIGJpdCBhZnRlciB0aGUgU2V2RXNFbmFibGVkIGFu ZCBvbmUgYnl0ZSBjYW4gYmUgdXNlZA0KPiA+Pj4+IGZvciB0aGUgVGR4RW5hYmxlZDsNCj4gPj4+ Pg0KPiA+Pj4+IHR5cGVkZWYgc3RydWN0IF9TRUNfU0VWX0VTX1dPUktfQVJFQSB7DQo+ID4+Pj4g ICAgICBVSU5UOCAgICBTZXZFc0VuYWJsZWQ7DQo+ID4+Pj4gICAgICBVSU5UOCAgICBUZHhFbmFi bGVkOw0KPiA+Pj4+ICAgICAgVUlOVDggICAgUmVzZXJ2ZWQyWzZdOw0KPiA+Pj4+DQo+ID4+Pj4g ICAgICBVSU5UNjQgICBSYW5kb21EYXRhOw0KPiA+Pj4+DQo+ID4+Pj4gICAgICBVSU5UNjQgICBF bmNyeXB0aW9uTWFzazsNCj4gPj4+PiB9IFNFQ19TRVZfRVNfV09SS19BUkVBOw0KPiA+Pj4+DQo+ ID4+Pj4gVGhlIFNFVl9FU19XT1JLX0FSRUEgY2FuIGJlIHRyZWF0ZWQgYXMgYSBURUVfV09SS19B UkVBIGFuZCB3ZQ0KPiBjYW4NCj4gPj4gYmUNCj4gPj4+PiBwdWxsIG91dCBmcm9tIE1lbUVuY3J5 cFNldkxpYi5oIHRvIENjV29ya0FyZWFMaWIuaCBhbmQgcmVuYW1lIHRoZQ0KPiA+Pj4+IHN0cnVj dHVyZSAoaWYgbmVlZGVkKS4NCj4gPj4+Pg0KPiA+Pj4+IEJvdGggdGhlIFNFVi1TTlAgYW5kIFRF RSBob3N0LVZNTSBhY2NlcHRzIHRoZSBURUVfV09SS19BUkVBDQo+IGJlZm9yZQ0KPiA+Pj4+IGJv b3RpbmcgdGhlIGd1ZXN0IHRvIGVuc3VyZSB0aGF0IGl0cyBzYWZlIHRvIGFjY2VzcyB0aGUgbWVt b3J5IHdpdGhvdXQNCj4gPj4+PiBnb2luZyB0aHJvdWdoIHRoZSBhY2NlcHQvdmFsaWRhdGlvbiBw cm9jZXNzLg0KPiA+Pj4+DQo+ID4+Pj4gSW4gY2FzZSBvZiB0aGUgVERYLCB0aGUgcmVzZXQgdmVj dG9yIGNvZGUgc2V0cyB0aGUgVGR4RW5hYmxlZCBvbiB0aGUNCj4gPj4+PiBlbnRyeS4gSW4gY2Fz ZSBvZiB0aGUgU0VWLCB0aGUgd29ya2FyZWEgaXMgdmFsaWQgZnJvbSBTRUMgdG8gUEVJIHBoYXNl DQo+ID4+Pj4gb25seSBhbmQgaXQgZ2V0cyByZXVzZWQgZm9yIG90aGVyIHB1cnBvc2VzLiBUaGUg UEVJIHBoYXNlIHNldCB0aGUgUGNkJ3MNCj4gPj4+PiAoc3VjaCBhcyBTZXZFc0VuYWJsZWQgb3Ig U2V2RW5hYmxlZCBldGMpIHNvIHRoYXQgRHhlIG9yIG90aGVyIEVESzIgY29yZQ0KPiA+Pj4+IGRv ZXMgbm90IG5lZWQgdG8ga25vdyBhbnl0aGluZyBhYm91dCB0aGUgd29ya2FyZWEgYW5kIHRoZXkg c2ltcGx5IGNhbg0KPiA+Pj4+IHJlYWQgdGhlIFBDRHMuDQo+ID4+Pj4NCj4gPj4+PiAtQnJpamVz aA0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+Pg0KPiA+Pg0KPiA+Pg0KPiA+ PiANCj4gPj4NCj4gPg0K