From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) by mx.groups.io with SMTP id smtpd.web09.3912.1621564065386120094 for ; Thu, 20 May 2021 19:27:45 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@hpe.com header.s=pps0720 header.b=V+gnXEzl; spf=pass (domain: hpe.com, ip: 148.163.143.35, mailfrom: prvs=07758c9eba=daniel.schaefer@hpe.com) Received: from pps.filterd (m0148664.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 14L2NPr8013822; Fri, 21 May 2021 02:27:38 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : mime-version; s=pps0720; bh=06HenKcJr7CnYlQ32TRVqUWNUG4b83RJwUP77urgjZY=; b=V+gnXEzlBiv2WQl1s56I5qDjOf6nDWt9BIrZ/gg5PQwZecg+G9+MgIXR09DPeTAUqpTf w4I//Oo6OVbc6wdPsyRoJ3AiUfn8yU8ZG27DvDL3EEQAg7E+Je+ovZGq7BoZXBVY+USG 8uxbyVZ4WzDoA35V9Kwrhk6juiKQB0lTAt+3VUSRgwhO8Aif1hZbIPrw9JsWEnz+EKam cRmEc6xFtH38R4K0k7CeVHtsJF3rkPRRCrUgxM/ge0jFkCQsVltyjhkCf8tlfSfCtNRV b+ZYoiBOqiBxI34D9Cuw5SLai0LLB+PyjHCt8B2eBc842n9iCRxJ6OZREYjiy4pCV0D8 1A== Received: from g4t3426.houston.hpe.com (g4t3426.houston.hpe.com [15.241.140.75]) by mx0b-002e3701.pphosted.com with ESMTP id 38p21bgsu1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 21 May 2021 02:27:37 +0000 Received: from G4W9119.americas.hpqcorp.net (g4w9119.houston.hp.com [16.210.20.214]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by g4t3426.houston.hpe.com (Postfix) with ESMTPS id 7FAC169; Fri, 21 May 2021 02:27:36 +0000 (UTC) Received: from G4W9120.americas.hpqcorp.net (2002:10d2:150f::10d2:150f) by G4W9119.americas.hpqcorp.net (2002:10d2:14d6::10d2:14d6) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 21 May 2021 02:26:48 +0000 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (15.241.52.11) by G4W9120.americas.hpqcorp.net (16.210.21.15) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Fri, 21 May 2021 02:26:48 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ELFmc8UPD7fbLmBsozeaagv9pSWyi3fYDh7KZBcPnZtWO2RD1GNoq1dreBaQ17OKdt6NH3835qgg0YL7Kt7ubbphz4i191SmaXBgkcWBinJOFs0a/IL36M/H9AIi8PRQeS6xUx/Zaof8iE9LhhmK98vPHGOUwKrz/U+ZUai3De4fHhv+b1V+2BPV3KrEYRq8NOaz6lFVUqS9Pm35E2GinzdtSAej6TIauJCh39glpTO/W/c00c0wj3TG03YWEF9yxsPX1DuPW0Ld9nvc/ELefAL4/CTVtnJprS0NmlWLBgpCAgC5CyTvGaYFCPecS0LLvTuOzjmF/et0ufvZI1D16g== 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=XlzrVhJvbfI71VxpVn90+6yodvKWdGLAsKN8pGyAHz0=; b=kPt7kniFQqFdng9DffWl0bGN4IAR+Gev1sOpfE92jLcy8TN3+7Laflw8lSkKLfjPK73sSp+79Rzgo2OhTx8sBFqp7i1OO9UmoWFyJaS8A70A2Z04k/yW0XXjAOK59V6tRjlmhMnEX0Jf+SJeklwDFe4AoWrhpSSKszKFQkCxyWqGCYWv10/TYnGU3N/WWH3v5qWbADs3+Gu5p2sX63Vv0Y7DfpS+8bNZr74+CAl67v6rYn59AdCIpz1aQ3UbifEx0a8VPrLJ4Wv4Fj95oDD6vkvzeMwSSHd7yYnRImOvHR4C6zb51jLXJOmJRU3Ai7PJwKnp2dvDNuQfGIkBdkjSMQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none Received: from DF4PR8401MB0444.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:760d::23) by DF4PR8401MB0507.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7605::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.25; Fri, 21 May 2021 02:26:45 +0000 Received: from DF4PR8401MB0444.NAMPRD84.PROD.OUTLOOK.COM ([fe80::1055:761b:7ee6:52ca]) by DF4PR8401MB0444.NAMPRD84.PROD.OUTLOOK.COM ([fe80::1055:761b:7ee6:52ca%11]) with mapi id 15.20.4129.033; Fri, 21 May 2021 02:26:45 +0000 From: "Daniel Schaefer" To: "Oram, Isaac W" , "devel@edk2.groups.io" , "gaoliming@byosoft.com.cn" , "kaaira7319@gmail.com" , "Ni, Ray" , "mikuback@linux.microsoft.com" CC: "Chang, Abner (HPS SW/FW Technologist)" Subject: =?UTF-8?B?UmU6IOWbnuWkjTogW2VkazItZGV2ZWxdIEdTb0MgMjAyMSBRZW11IE9wZW5Cb2FyZFBrZyBQcm9qZWN0?= Thread-Topic: =?gb2312?B?u9i4tDogW2VkazItZGV2ZWxdIEdTb0MgMjAyMSBRZW11IE9wZW5Cb2FyZFBr?= =?gb2312?Q?g_Project?= Thread-Index: AQHXS/K0noN0AvjGCEuUmy2X8qaYIqrpT/+AgACuQ4CAARL+gIAAGICAgACQJuGAALQj4IAAJZEAgACb2GY= Date: Fri, 21 May 2021 02:26:45 +0000 Message-ID: References: <20210518143156.GA24025@kaaira-HP-Pavilion-Notebook> <20210518144155.GA25679@kaaira-HP-Pavilion-Notebook> <000001d74c4b$1ae82a80$50b87f80$@byosoft.com.cn> <2162525c-4e35-0c09-4594-ecbfbc740dcc@linux.microsoft.com> <276316c8-9355-2a6d-3786-ca743e1e772d@linux.microsoft.com> ,<6b42f62c-9f91-7310-4156-530da5c49012@linux.microsoft.com> In-Reply-To: <6b42f62c-9f91-7310-4156-530da5c49012@linux.microsoft.com> Accept-Language: en-US, de-DE X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=hpe.com; x-originating-ip: [123.193.59.220] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b89498fe-dbeb-4e3c-a84f-08d91bffe13a x-ms-traffictypediagnostic: DF4PR8401MB0507: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: nTDzrIjqHBYaazGMY7j4w9ab5j3VUB8ZSDAUmZNsYCK6KVQuEFVtFQU4Uvcgeibuq508BSbXfyn9TrLLKauAnvJfO8Hw9bLRHAlglpv1ecC2OIE+lPY2ZKja3qGqPdq6ljTIunN1HlfZrBIxnKDLlkndwJaO4zGzbkWPiJqbXTZ6dCYe1csn2S65WZCIqQtezASvaC0tFKby+kFCyZaztijKxAt07HHNUO5YhJMAWoJVZaw0oGH9gDXVf7Hxf+9Yxy/D/H4Kx+jUQBzCEolFxB+6/6Z3nGvAAljHleXzEr14e3D7SXiVd0iKVA4anOckr7b2271FbCUmcKVsS6/eFp6Bg00OLxJJRFbSeZiYJEsL5GnT22/xMMsxAU5cpxh6xMP4ptDSE3D6Hb0Ti+VZbBuHqLl9nqb8IfvOcwMZxvBdQucmgwbiQ/IxHdTeSnzP/3cz/xHkgab5sL3+CPT7/LXgLhJ8zN4ZidhfhwL3A8SDt060zmqtkIsuaTPXVSRWaTQVyv4g+gSrvRkIrl7PEQaOmw3UptC99QdCUY1mSiYtnDLCmzSoasSguC1pCITDOFAkCZZN1pbfzgCayS9W78wtPK/Nwp3VElwfDVA2q0Gg+CPtHCLARNDqePl5XE3XQJDd2sNAGPfHW7aQCisBMRhMUILXZIBB1hmNDSU3tmxXeEHgxUW8tv0JNxBPaDhsAemMZg+kt1T6ETEI61Xj5f9B5CkPXA3fruVrjVN/cyJYcQyNrQywe3rpdyWozvrr x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DF4PR8401MB0444.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(366004)(136003)(396003)(346002)(376002)(39860400002)(53546011)(186003)(6506007)(86362001)(45080400002)(26005)(91956017)(478600001)(18265965003)(66476007)(110136005)(66446008)(64756008)(9686003)(7696005)(19627235002)(224303003)(83380400001)(66556008)(30864003)(52536014)(55016002)(166002)(8936002)(76116006)(966005)(2906002)(122000001)(4326008)(71200400001)(33656002)(5660300002)(38100700002)(19627405001)(66946007)(21615005)(316002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?gb2312?B?aGhrZVMwTkxuTGw1MGtmd1JRNGpaUU9teXBFaU5CZjJrZEVkU2pDbk5TLzRv?= =?gb2312?B?ejJSWTZJcHFZdlUzeCtrK1ZNVURnaVk2OW13aG5JNk5JajhQcTZia1lCdmkv?= =?gb2312?B?UEhvendSZmd4L1NsVFRQNnk2TSsyeXNQTzV5SmFxc3RYdmZHZGV0UUJJbDlU?= =?gb2312?B?YStrRFhTYlNPWmEyZktrVjE0b0UrY2dRa0wyWW5VeUFCSVJRV0VsMXNYU1gz?= =?gb2312?B?dkZCZDhvNmQ4cnUrdnFHU3o0cWJTanl4em03WmRCZTA0SmJLMkpnQnNaN1px?= =?gb2312?B?SWRRZE5aSWNRTWdlYXNUVVNraU1uL0hOMWk2THcrWVRjVmhTR0dMZHI0cFpB?= =?gb2312?B?WW4zd0NTWG5xa25NeXNaTUEvaDhJOFhZS1NKQVR2MDUzVHAzK01MRmNMejZB?= =?gb2312?B?cGwxaG9kQzI5Z2xKOHllWE9SbTM1OTZSbHlFeU9iWExPQW9QWmkybDI4RFg3?= =?gb2312?B?cW5hQ3VLUGh5QjBoU3huV0ZiV1ZwVEJQNHczWnZHQ2twVDMzV2RIODhwc1VB?= =?gb2312?B?U0lBR3oxdEtmQUVLeWY4MjUvM0FMRlkzak1wdUp6YTFRK3dnN3pPcnMxbloy?= =?gb2312?B?RGx1S1grMVU0TTYvWkpHK3ZhYTgvVDNDSHZJOFFoc1JDN1JxWUNFdVpaK1Vl?= =?gb2312?B?dkhncXdDcndmblBjK0dzMWdOb0tRb0gybWgwOTExQW54bWJ4MW1hNmhyanFk?= =?gb2312?B?eThKOTYveWlCT1VxcjVxam54SGg3cEF5OHVjQ05UZU85U2ZqV2lOQmxNQmQ4?= =?gb2312?B?UkIwcnRSNUY2ZVgrdFdmZ1JVRm9wd3lFZmJlSi95TkNNUGR4WHJYV2N2V2xw?= =?gb2312?B?WkNJa2s2QnU0RHh5WkM2SlNhYmZJMEcyNnJiYXMzS2xVR1JXQWp4b044dnJH?= =?gb2312?B?dHJoLzNlUG9GTUY5YlFKTFNucWZZRlRlbWJXVkJxRHhpYUNaTGFiZHkvV2dh?= =?gb2312?B?R0FPZUdBTDBNa0ZSTlhmdlAzTUhXREtQazI5Sml0VG9TMHFiMjcwQ2lOQTV2?= =?gb2312?B?RTVvNGtHdnpaTXdmenpjUHk0Nm13ZHVoNk10aTgyTU05MnVBbmJCL0JTTm8w?= =?gb2312?B?TjNVUlRiamN1NEJaaWNab05TakNMT2pHaGNjRjNJdUdxTTFiZ1FPVmpoM2NJ?= =?gb2312?B?cHN0MlNwOHBscDkzWHlpTlVGcHVYUWtUYkhYcGdhYjA4ODVLQ2NVTlVxR0Fp?= =?gb2312?B?U0FaMVlldmU2N2lKbko2elYydW5TL3RkbHZEeFBtc0J1SkRUUjdxSGhBcUgx?= =?gb2312?B?TitpMTNKdnM0R3lhMWNtSFRxdVl0RHgyNTBUdEtEbFlpR1VZZjhzcDI2MStu?= =?gb2312?B?SUxDQXNzWXNkOEE4Rk8rK3pYaUdpeEZtWDdmK2s4Umw1UnpNWXQvWDgvZzhk?= =?gb2312?B?UGZ0ZEZkbFRDbWJaNWdkL1JJeWhBUDdaTEpNWG5mUitzTFRZZ04veUhqZERz?= =?gb2312?B?ZEpVaVdqeEhhOWhvYWNpNTFZZTN1VkZHYy9SaGRWaUc2NENCeVNyYjFmcUE2?= =?gb2312?B?cURVVzd2alA4bFNXSm03L3l2bkUyUFkycEg3US9jNXhEb2tWT0oyRUEybkgz?= =?gb2312?B?UGE1UkgvOGFCaS9rNmxiam5MYTRkbERVd2g2dGI0TWs4bC9JK3JBSURmVHRj?= =?gb2312?B?ckVBL0I5cDJ4b1dhQU9QUzBsRU5oNWlvbWtnUjF1MjdQSHlCbUE2d1pTOE9B?= =?gb2312?B?Q3l4cDhEYklyUFplMUx3aUFSTXcvdFd2WU1lUHJFOG9PbDFRT1hZWnFhWjZm?= =?gb2312?Q?UfUzg5u48DCEozEPB71QxZ6wrhsPDLk6P+jtZJd?= X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DF4PR8401MB0444.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: b89498fe-dbeb-4e3c-a84f-08d91bffe13a X-MS-Exchange-CrossTenant-originalarrivaltime: 21 May 2021 02:26:45.7524 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ga3LoNd2EEOyaOICHgtDj0bIY7r/a8eI1lGSUANO+bjST+e1mBjx5yjfmZna63UMRmUqLpo/2qqHqCopMU+hBw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DF4PR8401MB0507 X-OriginatorOrg: hpe.com X-Proofpoint-ORIG-GUID: o27i9Wd4TSUCJVDeNVVy51OoX0oNddFb X-Proofpoint-GUID: o27i9Wd4TSUCJVDeNVVy51OoX0oNddFb X-Proofpoint-UnRewURL: 24 URL's were un-rewritten MIME-Version: 1.0 X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391,18.0.761 definitions=2021-05-20_07:2021-05-20,2021-05-20 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 spamscore=0 clxscore=1015 impostorscore=0 lowpriorityscore=0 priorityscore=1501 mlxlogscore=999 suspectscore=0 mlxscore=0 adultscore=0 phishscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2105210015 Content-Language: en-US Content-Type: multipart/alternative; boundary="_000_DF4PR8401MB0444C140FEDFC1764785483FE0299DF4PR8401MB0444_" --_000_DF4PR8401MB0444C140FEDFC1764785483FE0299DF4PR8401MB0444_ Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 VGhhbmtzIGZvciB0aGUgYW5zd2VycywgdGhhdCdzIHZlcnkgaGVscGZ1bCwgZ3V5cyENCg0KSSd2 ZSBzdGFydGVkIHRvIHJlcGxhY2Ugc29tZSBvZiBteSBEU0MgYW5kIEZERiB3aXRoIHRoZSBpbmNs dWRlIGZpbGVzIG1lbnRpb25lZCBieSBNaWNoYWVsLg0KU2luY2UgUklTQy1WIGRvZXNuJ3QgaGF2 ZSBJL08gcmVnaXN0ZXJzLCBTTU0gYW5kIHNvbWUgb3RoZXIgdGhpbmdzLCBJIGhhZCB0byBtYWtl IHNvbWUgY2hhbmdlcyBidXQgbm90IHRvbyBtYW55Lg0KTWF5YmUgZm9yIFFlbXUgdGhlcmUgd291 bGQgaGF2ZSBiZSBzb21lIG1vcmUgbm9uLUludGVsIGNoYW5nZXMuDQpXb3VsZCB5b3UgYWNjZXB0 IHBhdGNoZXMgdG8gbWFrZSBpdCBtb3JlIGFyY2ggYWdub3N0aWM/IE9yIHNob3VsZCB3ZSBmaXJz dCBtb3ZlIGl0IG91dCBvZiB0aGUgSW50ZWwgZGlyZWN0b3J5Pw0KDQpTb3JyeSBmb3IgaGlqYWNr aW5nIHlvdXIgdGhyZWFkIEthYWlyYSwgYnV0IEkgaG9wZSB0aGlzIGRpc2N1c3Npb24gd291bGQg YWxzbyBiZSBoZWxwZnVsIGZvciB5b3UgPz8NCkp1c3QgbGlrZSB5b3UsIEknbSB0cnlpbmcgdG8g Y29udmVydCBhIFFFTVUgcGxhdGZvcm0gdG8gTWluUGxhdGZvcm0uIChBbmQgdGhlbiB0aGUgb3Ro ZXIgUklTQy1WIHBsYXRmb3JtcykNCklmIHlvdSB3YW50IHRvIGhhdmUgYSBsb29rLCB5b3UgY2Fu IGNoZWNrIG91dCBteSBwcm9ncmVzcyBoZXJlOiBodHRwczovL2dpdGh1Yi5jb20vcmlzY3Yvcmlz Y3YtZWRrMi1wbGF0Zm9ybXMvY29tbWl0cy9yaXNjdi12aXJ0LW1pbnBsYXRmb3JtLWdoLWFjdGlv bnMNCg0KTXkgcGxhbiBpczoNCg0KICAxLiAgTWFrZSBEU0MgYW5kIEZERiBzbWFsbGVyIGJ5IGlu Y2x1ZGluZyBnZW5lcmljIGZpbGVzIChXSVApDQogIDIuICBUcnkgdG8gdGFrZSBhZHZhbnRhZ2Ug b2YgIkFkdmFuY2VkRmVhdHVyZXMiDQogIDMuICBSZWZvcm1hdCB0aGUgRkQgaW50byB0aGUgRlZz IG1hbmRhdGVkIGJ5IHRoZSBNaW5QbGF0Zm9ybSBzcGVjDQogIDQuICBDaGVjayB0aGUgZGV0YWls ZWQgcmVxdWlyZW1lbnRzIG9mIGVhY2ggc3RhZ2UgKGUuZy4gcmVxdWlyZWQgZnVuY3Rpb25zLCBi dWlsZCBmaWxlcywgLi4uKQ0KDQpJIHNlZSB0aGF0IGVhY2ggc3RhZ2UgaW4gdGhlIE1pblBsYXRm b3JtIHNwZWMgaGFzIGEgY2hlY2tsaXN0LiBUaGV5IGRvbid0IGxvb2sgbGlrZSBjaGVja2xpc3Qg YnV0IHJhdGhlciBzdGVwcyB0byBhY2hpZXZlIGEgY2VydGFpbiBzdGF0ZSBidXQgdGhhdCdzIGFs c28gb2suDQpTZWU6IGh0dHBzOi8vZWRrMi1kb2NzLmdpdGJvb2suaW8vZWRrLWlpLW1pbmltdW0t cGxhdGZvcm0tc3BlY2lmaWNhdGlvbi8zX3N0YWdlXzFfbWluaW11bV9kZWJ1Zy8zMTFfc3RhZ2Vf ZW5hYmxpbmdfY2hlY2tsaXN0DQoNClRoYW5rcywNCkRhbmllbA0KDQpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXw0KRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIu Z3JvdXBzLmlvPiBvbiBiZWhhbGYgb2YgTWljaGFlbCBLdWJhY2tpIDxtaWt1YmFja0BsaW51eC5t aWNyb3NvZnQuY29tPg0KU2VudDogRnJpZGF5LCBNYXkgMjEsIDIwMjEgMDA6MzINClRvOiBPcmFt LCBJc2FhYyBXIDxpc2FhYy53Lm9yYW1AaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW8g PGRldmVsQGVkazIuZ3JvdXBzLmlvPjsgU2NoYWVmZXIsIERhbmllbCA8ZGFuaWVsLnNjaGFlZmVy QGhwZS5jb20+OyBnYW9saW1pbmdAYnlvc29mdC5jb20uY24gPGdhb2xpbWluZ0BieW9zb2Z0LmNv bS5jbj47IGthYWlyYTczMTlAZ21haWwuY29tIDxrYWFpcmE3MzE5QGdtYWlsLmNvbT47IE5pLCBS YXkgPHJheS5uaUBpbnRlbC5jb20+DQpTdWJqZWN0OiBSZTogu9i4tDogW2VkazItZGV2ZWxdIEdT b0MgMjAyMSBRZW11IE9wZW5Cb2FyZFBrZyBQcm9qZWN0DQoNCkRhbmllbCwNCg0KWW91IHdpbGwg c3BlY2lmaWNhbGx5IGZpbmQgYXR0ZW1wdHMgdG8gY29uc29saWRhdGUgY29tbW9uIGxpYnJhcmll cyBhbmQNCm1vZHVsZXMgaW4gRFNDIGFuZCBGREYgZmlsZXMgdGhhdCBjYW4gYmUgaW5jbHVkZWQg aW50byBhIGJvYXJkIHBhY2thZ2UNCmhlcmUgLQ0KaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29y ZS9lZGsyLXBsYXRmb3Jtcy90cmVlL21hc3Rlci9QbGF0Zm9ybS9JbnRlbC9NaW5QbGF0Zm9ybVBr Zy9JbmNsdWRlLg0KRmlsZXMgYXJlIHNwbGl0IHN1Y2ggdGhhdCB0aGV5IGNhbiBiZSBpbmNsdWRl ZCBpbiB0aGUgY29ycmVzcG9uZGluZw0Kc2VjdGlvbiBpbiB0aGUgYm9hcmQgcGFja2FnZSBEU0Mv RkRGIGZpbGUuIE5vdGUgdGhlcmUgYXJlIHNvbWUgbWl4ZWQNCm9waW5pb25zIEkndmUgZW5jb3Vu dGVyZWQgaW4gdGhlIGluZHVzdHJ5IG9uIHRoZSBjb21wbGV4aXR5IHRyYWRlIG9mZg0KYXNzb2Np YXRlZCB3aXRoIGluY2x1ZGVzIGluIERTQyBhbmQgRkRGIGZpbGVzLg0KDQpCdXQgYXMgSXNhYWMg bWVudGlvbmVkLCB3aGlsZSBNaW5QbGF0Zm9ybSBpcyBkZXNpZ25lZCB0byBzdXBwb3J0DQptdWx0 aXBsZSBhcmNoaXRlY3R1cmVzLCBpdCBoYXMgb25seSBiZSBlbmFibGVkIG9uIEludGVsIHBsYXRm b3JtcywNCnRoZXJlZm9yZSwgeW91IHNob3VsZCBleHBlY3QgdG8gZW5jb3VudGVyIHNvbWUgcHJv YmxlbXMgZW5hYmxpbmcgYQ0KZGlmZmVyZW50IGFyY2hpdGVjdHVyZSBidXQgaWRlbnRpZnlpbmcg YW5kL29yIHJlc29sdmluZyB0aG9zZSB3b3VsZCBiZQ0KdmVyeSB2YWx1YWJsZS4NCg0KQXMgeW91 IGFyZSBleHBsb3JpbmcgaG93IHRvIHBvcnQgYSBwbGF0Zm9ybSB0byBNaW5QbGF0Zm9ybSBJIGFs c28NCnJlY29tbWVuZCBmYW1pbGlhcml6aW5nIHlvdXJzZWxmIHRoZSBjb25jZXB0IG9mIGFkdmFu Y2VkIGZlYXR1cmVzDQpkZXNjcmliZWQgaGVyZSAtDQpodHRwczovL2dpdGh1Yi5jb20vdGlhbm9j b3JlL2VkazItcGxhdGZvcm1zL2Jsb2IvbWFzdGVyL0ZlYXR1cmVzL0ludGVsL1JlYWRtZS5tZC4N CllvdSBtaWdodCBmaW5kIHlvdXIgYm9hcmQgcGFja2FnZSBpcyByZWxhdGl2ZWx5IHNpbXBsZXIg dGhhbiB0aGUNCm9yaWdpbmFsIHBsYXRmb3JtIHBhY2thZ2UgYWZ0ZXIgYWNjb3VudGluZyBmb3Ig YWR2YW5jZWQgZmVhdHVyZXMgYmVpbmcNCnNlcGFyYXRlZCBvdXQuDQoNClRoYW5rcywNCk1pY2hh ZWwNCg0KDQpPbiA1LzIwLzIwMjEgODowNSBBTSwgT3JhbSwgSXNhYWMgVyB3cm90ZToNCj4gRGFu aWVsLA0KPg0KPiBUaGUgTWluUGxhdGZvcm0gc3BlYyB3YXMgaW50ZW5kZWQgdG8gYmUgYXJjaGl0 ZWN0dXJlIGFuZCBwcm9kdWN0DQo+IGluZGVwZW5kZW50IGZvciBhIKGwbWFpbnN0cmVhbaGxIHNl dCBvZiBwcm9kdWN0cy4gIEl0IGlzIGludGVuZGVkIHRvDQo+IGNvbnN0cmFpbiBzb21lIG9mIHRo ZSBuZWFybHkgdW5saW1pdGVkIGV4dGVuc2liaWxpdHkgYW5kIGZsZXhpYmlsaXR5IG9mDQo+IFVF Rkkgc3BlY3MgYW5kIGVkazIgY29kZWJhc2UuICBXZSB0b29rIGFuIDgwLzIwIGtpbmQgb2YgYXBw cm9hY2guICBCYXNlDQo+IGRlc2lnbiBzaG91bGQgd29yayBmb3IgODAlIG9mIGRlc2lnbnMsIGJ1 dCBzb21lIHdpbGwgbmVlZCB0byBsZXZlcmFnZQ0KPiBmdWxsIGVkazIgYW5kIFVFRkkgc3BlY2lm aWNhdGlvbiBmbGV4aWJpbGl0eS4gIEkgdGhpbmsgdGhhdCBhIGJhc2ljIFFFTVUNCj4ga2luZCBv ZiBwb3J0IHdvdWxkIGZpdCBpbiA4MCUgdGFyZ2V0LiAgSSB3b3VsZCB1bHRpbWF0ZWx5IGxpa2Ug dG8gc2VlIGENCj4gcHJvZ3Jlc3Npb24gb2YgZWRrMiB1c2UgdGhhdCBzdGFydHMgd2l0aCBRRU1V IHRoZW4gbW92ZXMgbW9yZSBzZWFtbGVzc2x5DQo+IHRvIG9wZW4gZGVzaWducyBhbmQgdGhlbiBw cm9wcmlldGFyeSBwcm9kdWN0IGRlc2lnbnMuICBNaW5QbGF0Zm9ybQ0KPiBjb25zaXN0ZW5jeSBp cyBob3BlZCB0byBoZWxwIHRoYXQgZGV2ZWxvcGVyIHJhbXAgaW50byBzeXN0ZW0gZmlybXdhcmUN Cj4gcHJvZHVjdGl2aXR5Lg0KPg0KPiBXZSBoYXZlIG9ubHkgc2VlbiBNaW5QbGF0Zm9ybSBhcHBs aWVkIHRvIEludGVsIGJhc2VkIHByb2R1Y3RzIHNvIGZhci4NCj4gV2hpY2ggaXMgd2h5IHdlIGFy ZSBub3QgcnVzaGluZyB0byBtb3ZlIHRoZSBzcGVjIGZyb20gYSAwLjcgobBicm9hZA0KPiBmZWVk YmFja6GxIHN0YXRlIHRvIGEgMS4wIKGwaW5pdGlhbGx5IGNvbXBsZXRlobEgc3RhdGUuICBMaWtl IGVkazIsDQo+IE1pblBsYXRmb3JtUGtnIGFuZCBCb2FyZE1vZHVsZVBrZyBjb250ZW50IGlzIGlu dGVuZGVkIHRvIHN1cHBvcnQNCj4gbXVsdGlwbGUgc2lsaWNvbiBhbmQgcHJvZHVjdCBhcmNoaXRl Y3R1cmVzIGFuZCB3ZSB3aWxsIGhhcHBpbHkgcHJvbW90ZQ0KPiBjb250ZW50IG91dCBvZiChsElu dGVsobEgc2NvcGUgd2hlbiB0aGF0IGlzIGFuIGFjY3VyYXRlIHJlZmxlY3Rpb24gb2YgdXNlDQo+ IGFuZCBub3QganVzdCB3aXNoZnVsIHRoaW5raW5nLiAgV2hpbGUgMTAwJSBvZiB1c2VzIGFyZSBJ bnRlbCBzY29wZSwgaXQNCj4gbWFrZXMgc2Vuc2UgdG8gbGFuZCBpbiB0aGUgSW50ZWwgcGFydCBv ZiBlZGsyLXBsYXRmb3JtcyByZXBvLiAgU2ltaWxhcg0KPiBsb2dpYyBhcHBsaWVzIHRvIEZlYXR1 cmVzL0ludGVsIGNvbnRlbnQsIHRob3VnaCBtb3JlIHRoZXJlIG1heSBoYXZlIHRpZXMNCj4gdG8g SW50ZWwgc3BlY2lmaWMgcHJvZHVjdCBmZWF0dXJlcy4NCj4NCj4gVGhlIE1pbmltdW0gUGxhdGZv cm0gQXJjaCBzcGVjIGRldGFpbHMgYmFzZSByZXF1aXJlbWVudHMgZm9yIEZWIGxheW91dA0KPiAo dGh1cyBlbmFibGluZyBtb3JlIGNvbW1vbiBjb2RlIHRvIHB1Ymxpc2ggRlYgZGV0YWlscyksIGJh c2Ugc2lsaWNvbg0KPiBwb2xpY3kgY29uZmlndXJhdGlvbiBmbG93ICh0aHVzIG1vcmUgY29tbW9u IFBFSU0vZHJpdmVycyB0byBnYXRoZXINCj4gY29uZmlnIGluZm9ybWF0aW9uIGFuZCByZWR1Y2Ug Ym9hcmQgcG9ydGluZyB0byByZWxhdGl2ZWx5IHNpbXBsZQ0KPiBsaWJyYXJpZXMpLCBhbmQgc3Vj aCB0aGluZ3MuICBCeSBlbmFibGluZyBtb3JlIGNvbW1vbiBQRUlNIGFuZCBkcml2ZXJzLA0KPiB3 ZSBob3BlIHRvIHNlZSBiZW5lZml0cyB0byBlYXNlIG9mIHVzZSBhbmQgY29uc2lzdGVudCBxdWFs aXR5LiBTaW1pbGFyDQo+IGFwcHJvYWNoZXMgZm9yIHRoZSBvdGhlciBlbGVtZW50cyBvZiB0aGUg c3BlYyBzaG91bGQgaGVscCB0byBpbXByb3ZlDQo+IGNvZGUgc2hhcmluZy4NCj4NCj4gQW55d2F5 LCB5ZXMsIGl0IHNob3VsZCBiZSBhYmxlIHRvIGhlbHAgeW91IHJlZHVjZSB0aGUgY29waWVzIG9m IKGwbW9zdGx5DQo+IGNvbW1vbqGxIGNvZGUgdGhhdCB5b3UgZW5jb3VudGVyZWQgYW5kIHRoZSBj b2RlIGFuZCBzcGVjIGFyZSBvcGVuIHRvDQo+IHdlbGNvbWUgdGhlIGFkZGl0aW9uYWwgdXNlIGFu ZCBmZWVkYmFjayBmcm9tIGFkZGl0aW9uYWwgYXBwbGljYXRpb25zLg0KPg0KPiBSZWdhcmRzLA0K PiBJc2FhYw0KPg0KPiAqRnJvbToqZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3Jv dXBzLmlvPiAqT24gQmVoYWxmIE9mICpEYW5pZWwNCj4gU2NoYWVmZXINCj4gKlNlbnQ6KiBXZWRu ZXNkYXksIE1heSAxOSwgMjAyMSA4OjQwIFBNDQo+ICpUbzoqIGRldmVsQGVkazIuZ3JvdXBzLmlv OyBnYW9saW1pbmdAYnlvc29mdC5jb20uY247DQo+IGthYWlyYTczMTlAZ21haWwuY29tOyBOaSwg UmF5IDxyYXkubmlAaW50ZWwuY29tPjsNCj4gbWlrdWJhY2tAbGludXgubWljcm9zb2Z0LmNvbQ0K PiAqU3ViamVjdDoqIFJlOiC72Li0OiBbZWRrMi1kZXZlbF0gR1NvQyAyMDIxIFFlbXUgT3BlbkJv YXJkUGtnIFByb2plY3QNCj4NCj4gSGksDQo+DQo+IHRoYXQgc291bmRzIGxpa2UgYSBncmVhdCBw cm9qZWN0IQ0KPg0KPiBJJ20gY3VycmVudGx5IHRyeWluZyB0byBjcmVhdGUgYW4gZXF1aXZhbGVu dCBvZiBPdm1mUGtnIGZvciB0aGUgUklTQ1Y2NA0KPiBnZW5lcmljIFFFTVUgdmlydCBtYWNoaW5l Lg0KPg0KPiBJIGRvbid0IGxpa2UgaG93IG11Y2ggb2YgbXkgRFNDIGFuZCBGREYgZmlsZSBoYXMg bW9kdWxlcyB0aGF0IHByZXR0eQ0KPiBtdWNoIGFsbCBwbGF0Zm9ybXMgc2hvdWxkIGhhdmUuDQo+ DQo+IE1pblBsYXRmb3JtIHdvdWxkIGhlbHAgcmVkdWNlIHRoYXQsIHJpZ2h0Pw0KPg0KPiBJcyBN aW5QbGF0Zm9ybSBmbGV4aWJsZSBlbm91Z2ggdG8gYWNjb3VudCBmb3Igbm9uLVg2NCBwbGF0Zm9y bXM/DQo+DQo+IElmIHNvLCB0aGVuIEkgdGhpbmsgS2FhaXJhIGFuZCBJIGNvdWxkIGNvbGxhYm9y YXRlLg0KPg0KPiBDaGVlcnMsDQo+IERhbmllbA0KPg0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4NCj4g KkZyb206KmRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IDxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMu aW8+PGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IDxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8+ PiBvbiBiZWhhbGYgb2YgTWljaGFlbCBLdWJhY2tpDQo+IDxtaWt1YmFja0BsaW51eC5taWNyb3Nv ZnQuY29tIDxtYWlsdG86bWlrdWJhY2tAbGludXgubWljcm9zb2Z0LmNvbT4+DQo+ICpTZW50Oiog VGh1cnNkYXksIE1heSAyMCwgMjAyMSAwMjo1Nw0KPiAqVG86KiBkZXZlbEBlZGsyLmdyb3Vwcy5p bw0KPiA8bWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvPjxkZXZlbEBlZGsyLmdyb3Vwcy5pbw0K PiA8bWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvPj47IGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5j bg0KPiA8bWFpbHRvOmdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj48Z2FvbGltaW5nQGJ5b3NvZnQu Y29tLmNuDQo+IDxtYWlsdG86Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPj47IGthYWlyYTczMTlA Z21haWwuY29tDQo+IDxtYWlsdG86a2FhaXJhNzMxOUBnbWFpbC5jb20+PGthYWlyYTczMTlAZ21h aWwuY29tDQo+IDxtYWlsdG86a2FhaXJhNzMxOUBnbWFpbC5jb20+PjsgJ1JheSBOaScgPHJheS5u aUBpbnRlbC5jb20NCj4gPG1haWx0bzpyYXkubmlAaW50ZWwuY29tPj4NCj4gKlN1YmplY3Q6KiBS ZTogu9i4tDogW2VkazItZGV2ZWxdIEdTb0MgMjAyMSBRZW11IE9wZW5Cb2FyZFBrZyBQcm9qZWN0 DQo+DQo+IEkgYWxzbyB3YW50ZWQgdG8gYWRkIHRoYXQgSSB3aWxsIGJlIHNldHRpbmcgdXAgd2Vl a2x5IHZpZGVvIGNhbGxzDQo+IGluY2x1ZGluZyBSYXkgdGhhdCB3ZSBjYW4gdXNlIHRvIHN1cHBs ZW1lbnQgbWFpbGluZyBsaXN0IGNvbW11bmljYXRpb24uDQo+DQo+IEkgc3VnZ2VzdCB0aGUgcHJp bWFyeSBjb21tdW5pY2F0aW9uIG1lY2hhbmlzbSBiZSB0aGUgbWFpbGluZyBsaXN0IGFuZCB3ZQ0K PiB1c2UgdGhvc2UgY2FsbHMgZm9yIGNsYXJpZmljYXRpb24sIGRldGFpbGVkIHByb2plY3QgcGxh bm5pbmcsIGFuZCB0b3BpY3MNCj4gbm90IGRpcmVjdGx5IHJlbGV2YW50IHRvIHRoZSBsaXN0Lg0K Pg0KPiBSZWdhcmRzLA0KPiBNaWNoYWVsDQo+DQo+IE9uIDUvMTkvMjAyMSAxMDoyOSBBTSwgTWlj aGFlbCBLdWJhY2tpIHdyb3RlOg0KPj4gVGhhbmtzIExpbWluZy4NCj4+DQo+PiBIaSBLYWFpcmEs DQo+Pg0KPj4gV2VsY29tZSEgWW91IGNhbiBjb250YWN0IG1lIGF0IG1pa3ViYWNrQGxpbnV4Lm1p Y3Jvc29mdC5jb20gPG1haWx0bzptaWt1YmFja0BsaW51eC5taWNyb3NvZnQuY29tPi4gWW91DQo+ IHdpbGwNCj4+IHNvbWV0aW1lcyBzZWUgbXkgZW1haWwgYXMgbWljaGFlbC5rdWJhY2tpQG1pY3Jv c29mdC5jb20gPG1haWx0bzptaWNoYWVsLmt1YmFja2lAbWljcm9zb2Z0LmNvbT5hbmQNCj4gdGhh dCBpcyBmaW5lDQo+PiB0byB1c2UgZm9yIGNvbW11bmljYXRpb24gdGhvdWdoIEkgdGVuZCB0byBu b3QgdXNlIGl0IG9uIHRoZSBtYWlsaW5nIGxpc3QNCj4+IGR1ZSB0byB3YXkgdGhlIG1haWwgc2Vy dmVyIG1hbmlwdWxhdGVzIHBsYWludGV4dCBlbWFpbC4NCj4+DQo+PiBHRU5FUklDIFJFU09VUkNF Uw0KPj4NCj4+IEknbSBzaGFyaW5nIHNvbWUgZ2VuZXJhbCByZXNvdXJjZXMgaW4gY2FzZSB5b3Ug YXJlIG5vdCBhbHJlYWR5IGZhbWlsaWFyDQo+PiB3aXRoIHRoZW06DQo+Pg0KPj4gMS4gaHR0cHM6 Ly9naXRodWIuY29tL3RpYW5vY29yZS10cmFpbmluZy9UaWFub2NvcmVfVHJhaW5pbmdfQ29udGVu dHMvd2lraQ0KPiA8aHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS10cmFpbmluZy9UaWFub2Nv cmVfVHJhaW5pbmdfQ29udGVudHMvd2lraT4NCj4+DQo+PiBUaGlzIG9uZSBpcyBnb29kIGZvciB0 b3BpY3MgbGlrZSBVRUZJIG92ZXJ2aWV3LCBFREsgSUkgY29uY2VwdHMsIGFuZA0KPj4gTWluaW11 bSBQbGF0Zm9ybS4NCj4+DQo+PiBJbiBwYXJ0aWN1bGFyIGZvciB5b3VyIHByb2plY3QsIEkgcmVj b21tZW5kIGxvb2tpbmcgdGhyb3VnaCB0aGUNCj4+IE1pblBsYXRmb3JtIHRyYWluaW5nIC0NCj4+ IGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUtdHJhaW5pbmcvUHJlc2VudGF0aW9uX0ZXL2Js b2IvbWFzdGVyL0ZXL1ByZXNlbnRhdGlvbnMvX0RfMDVfRURLX0lJX09wZW5fU291cmNlX01pblBs YXRmb3JtX3ByZXNfZ3AucGRmDQo+IDxodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlLXRyYWlu aW5nL1ByZXNlbnRhdGlvbl9GVy9ibG9iL21hc3Rlci9GVy9QcmVzZW50YXRpb25zL19EXzA1X0VE S19JSV9PcGVuX1NvdXJjZV9NaW5QbGF0Zm9ybV9wcmVzX2dwLnBkZj4NCj4+DQo+Pg0KPj4gMi4N Cj4+IGh0dHBzOi8vc29mdHdhcmUuaW50ZWwuY29tL2NvbnRlbnQvd3d3L3VzL2VuL2RldmVsb3Av YXJ0aWNsZXMvdW5pZmllZC1leHRlbnNpYmxlLWZpcm13YXJlLWludGVyZmFjZS5odG1sDQo+IDxo dHRwczovL3NvZnR3YXJlLmludGVsLmNvbS9jb250ZW50L3d3dy91cy9lbi9kZXZlbG9wL2FydGlj bGVzL3VuaWZpZWQtZXh0ZW5zaWJsZS1maXJtd2FyZS1pbnRlcmZhY2UuaHRtbD4NCj4+DQo+Pg0K Pj4gVGhlc2Ugd2hpdGVwYXBlcnMgYXJlIHVzZWZ1bCB3aGVuIHlvdSBuZWVkIG1vcmUgaW4gZGVw dGggZGV0YWlsIGFib3V0IGENCj4+IHBhcnRpY3VsYXIgYXJlYSAobGlrZSBjYXBzdWxlIHVwZGF0 ZSBvciB3b3JrIHJlbGF0ZWQgdG8gdGhlIG1lbW9yeSBtYXApLg0KPj4gSSByZWNvbW1lbmQgYm9v a21hcmtpbmcgaXQgYW5kIGtlZXBpbmcgaXQgaW4gbWluZCBhcyBhIHJlZmVyZW5jZS4NCj4+DQo+ PiAzLiBodHRwczovL3VlZmkub3JnL2xlYXJuaW5nX2NlbnRlci9wcmVzZW50YXRpb25zYW5kdmlk ZW9zLw0KPiA8aHR0cHM6Ly91ZWZpLm9yZy9sZWFybmluZ19jZW50ZXIvcHJlc2VudGF0aW9uc2Fu ZHZpZGVvcy8+DQo+Pg0KPj4gU2Nyb2xsIHRocm91Z2ggaGVyZSBpZiB5b3UgaGF2ZSBzb21lIHRp bWUgYW5kIHNlZSBpZiB0aGVyZSdzIGFueXRoaW5nDQo+PiBpbnRlcmVzdGluZy4gVG8gaGVscCBr ZWVwIG9uIHlvdXIgcHJvamVjdCBzY2hlZHVsZSBJIGRvbid0IHRoaW5rIHRoZXNlDQo+PiBhcmUg YXMgaW1wb3J0YW50IGJ1dCB0aGVyZSBpcyBhIGxvdCBvZiBpbnRlcmVzdGluZyBtYXRlcmlhbCB0 aGVyZS4NCj4+DQo+PiBSZWFkaW5nIHRocm91Z2ggc29tZSBvZiB0aGUga2V5IGNvbmNlcHRzIGlu IEJleW9uZCBCSU9TIGNhbiBiZSBoZWxwZnVsDQo+PiBhbmQgbGlrZSB0aGUgVUVGSSwgQUNQSSwg YW5kIFBJIChQbGF0Zm9ybSBJbml0aWFsaXphdGlvbikgc3BlY3MgYXQNCj4+IGh0dHBzOi8vdWVm aS5vcmcvc3BlY2lmaWNhdGlvbnMgPGh0dHBzOi8vdWVmaS5vcmcvc3BlY2lmaWNhdGlvbnM+LCBJ DQo+IGJlbGlldmUgdGhleSBhcmUgbW9zdCB1c2VmdWwgYXMNCj4+IHJlZmVyZW5jZXMgd2hlbiB5 b3UgYXJlIHNvbHZpbmcgc3BlY2lmaWMgcHJvYmxlbXMuDQo+Pg0KPj4gUFJPSkVDVC1TUEVDSUZJ QyBSRVNPVVJDRVMNCj4+DQo+PiBTaW5jZSB5b3VyIHByb2plY3QgaW52b2x2ZXMgY3JlYXRpbmcg UUVNVSBib2FyZCB3aXRoaW4gdGhlIE1pbmltdW0NCj4+IFBsYXRmb3JtIGFyY2hpdGVjdHVyZSwg eW91IGNhbiBzdGFydCBsb29raW5nIGludG86DQo+Pg0KPj4gMS4gUUVNVSAtIEFuIG9wZW4gc291 cmNlIG1hY2hpbmUgZW11bGF0b3INCj4+IDIuIE1pbmltdW0gUGxhdGZvcm0gQXJjaGl0ZWN0dXJl IC0gQSBzb2Z0d2FyZSBhcmNoaXRlY3R1cmUgdG8gY3JlYXRlDQo+PiBiYXNpYyBwbGF0Zm9ybSBm aXJtd2FyZSB0aGF0IGNhbiBiZSBleHRlbmRlZCB3aXRoIGFkdmFuY2VkIGZ1bmN0aW9uYWxpdHku DQo+PiAzLiBJbnRlbCBGU1AgLSBUcnkgdG8gdW5kZXJzdGFuZCB0aGUgaGlnaC1sZXZlbCBnb2Fs cyBhbmQgaG93IEZTUA0KPj4gaW50ZXJmYWNlcyB3aXRoIGZpcm13YXJlLg0KPj4NCj4+IDEuIFFF TVUgLSBodHRwczovL3d3dy5xZW11Lm9yZy8gIDxodHRwczovL3d3dy5xZW11Lm9yZy8gPg0KPj4N Cj4+IFBsZWFzZSBzZXQgdXAgdGhlIFFFTVUgZW52aXJvbm1lbnQuIFlvdXIgUWVtdU9wZW5Cb2Fy ZFBrZyB3aWxsIG5lZWQgdG8NCj4+IHJ1biBvbiBxZW11LXN5c3RlbS14ODZfNjQgYXQgYSBtaW5p bXVtIHdpdGggYSAzMi1iaXQgUEVJIGFuZCBhIDY0LWJpdA0KPj4gRFhFIHBoYXNlLiBNb3N0IHJl YWwgaGFyZHdhcmUgZmlybXdhcmVzIGFsc28gdXNlIGEgMzItYml0IFBFSSBhbmQgYQ0KPj4gNjQt Yml0IERYRS4NCj4+DQo+PiBJIHN1Z2dlc3QgeW91IHN0YXJ0IHdpdGggdGhlIE92bWZQa2cgUkVB RE1FIC0NCj4+IGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi9ibG9iL21hc3Rlci9P dm1mUGtnL1JFQURNRQ0KPiA8aHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyL2Jsb2Iv bWFzdGVyL092bWZQa2cvUkVBRE1FPg0KPj4NCj4+IEFzIGFuIGluaXRpYWwgc3RlcCB5b3UgY2Fu IHRyeSB0byBidWlsZCBhbiBPVk1GIEZXIHdpdGggYSAzMi1iaXQgUEVJDQo+PiAoSUEzMikgYW5k IDY0LWJpdCBEWEUgKFg2NCkgYW5kIGJvb3QgdG8gdGhlIEVGSSBzaGVsbC4NCj4+IE92bWZQa2cv T3ZtZlBrZ0lhMzJYNjQuZHNjIGNhbiBiZSB1c2VkIHRvIGJ1aWxkIGEgZmlybXdhcmUgZm9yIHRo ZXNlDQo+PiB0YXJnZXQgYXJjaGl0ZWN0dXJlcy4NCj4+DQo+PiBBbnkgdGltZSB5b3Ugc3VibWl0 IHBhdGNoZXMgdG8gZWRrMiwgeW91IGNhbiBjaGVjayBlZGsyL21haW50YWluZXJzLnR4dA0KPj4g LSBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIvYmxvYi9tYXN0ZXIvTWFpbnRhaW5l cnMudHh0DQo+IDxodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIvYmxvYi9tYXN0ZXIv TWFpbnRhaW5lcnMudHh0PmZvciB0aGUNCj4+IGFwcHJvcHJpYXRlIG1haW50YWluZXJzIGFuZCBy ZXZpZXdlcnMgdG8gQ0Mgb24gdGhlIHBhdGNoLiBBcyB5b3UgY2FuDQo+PiBzZWUsIExhc3psbyBh bmQgQXJkIGFyZSB0aGUgbWFpbnRhaW5lcnMgZm9yIE92bWZQa2cgYW5kIEpvcmRhbiBpcyBhDQo+ PiByZXZpZXdlci4gSWYgdGhlcmUgYXJlIGFueSBxdWVzdGlvbnMgdGhhdCByZXF1aXJlIGRlZXAg ZXhwZXJ0aXNlIGluIFFFTVUNCj4+IG9yIE9WTUYsIHdlIHdpbGwgcmVhY2ggb3V0IHRvIHRoZW0u IFRoZSBNaW5pbXVtIFBsYXRmb3JtIGNvZGUgaXMNCj4+IG1haW50YWluZWQgaW4gdGhlIGVkazIt cGxhdGZvcm1zIHJlcG9zaXRvcnkgYW5kIGl0IGhhcyBhIHNpbWlsYXINCj4+IG1haW50YWluZXJz LnR4dCBmaWxlIGZvciBpdHMgcGFja2FnZXMgLQ0KPj4gaHR0cHM6Ly9naXRodWIuY29tL3RpYW5v Y29yZS9lZGsyLXBsYXRmb3Jtcy9ibG9iL21hc3Rlci9NYWludGFpbmVycy50eHQNCj4gPGh0dHBz Oi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi1wbGF0Zm9ybXMvYmxvYi9tYXN0ZXIvTWFpbnRh aW5lcnMudHh0Pi4NCj4+DQo+PiBJIHN1Z2dlc3QgeW91IHRyeSBzZW5kaW5nIGEgdmVyeSB0cml2 aWFsIHBhdGNoIGZvciBhIGNoYW5nZSBpbiB0aGUNCj4+IGVkazItcGxhdGZvcm1zIHJlcG9zaXRv cnkgLSBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazItcGxhdGZvcm1zDQo+IDxodHRw czovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazItcGxhdGZvcm1zPg0KPj4gdG8gbWFrZSBzdXJl IHRoYXQgeW91ciBnaXQgZW52aXJvbm1lbnQgaXMgc2V0IHVwIHByb3Blcmx5IHRvIGZvcm1hdCBl ZGsyDQo+PiBwYXRjaGVzIGFuZCB5b3VyIGVtYWlsIHNlcnZpY2UgY2FuIHNlbmQgcGF0Y2hlcyBj b3JyZWN0bHkuDQo+Pg0KPj4gV2UgY2FuIGRpc2N1c3MgdGhlIGRldGFpbHMgYWJvdXQgaG93IHRv IHNldCB1cCB5b3VyIGVudmlyb25tZW50IGFuZCB3aGF0DQo+PiB0byBjaGFuZ2Ugd2hlbiB5b3Ug YXJlIHJlYWR5LiBZb3UgY2FuIHVzZSB0aGlzIHBhZ2UgdG8gZ2V0IHN0YXJ0ZWQgLQ0KPj4gaHR0 cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS90aWFub2NvcmUuZ2l0aHViLmlvL3dpa2kvSG93LVRv LUNvbnRyaWJ1dGUNCj4gPGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvdGlhbm9jb3JlLmdp dGh1Yi5pby93aWtpL0hvdy1Uby1Db250cmlidXRlPi4NCj4+DQo+PiAyLiBFREsgSUkgTWluaW11 bSBQbGF0Zm9ybSBTcGVjaWZpY2F0aW9uIC0NCj4+IGh0dHBzOi8vZWRrMi1kb2NzLmdpdGJvb2su aW8vZWRrLWlpLW1pbmltdW0tcGxhdGZvcm0tc3BlY2lmaWNhdGlvbi8NCj4gPGh0dHBzOi8vZWRr Mi1kb2NzLmdpdGJvb2suaW8vZWRrLWlpLW1pbmltdW0tcGxhdGZvcm0tc3BlY2lmaWNhdGlvbi8g Pg0KPj4NCj4+IEZvciB5b3VyIHByb2plY3QsIHRoaXMgc3BlYyB3aWxsIGJlIHZlcnkgdXNlZnVs LiBJdCBkZXNjcmliZXMgd2h5DQo+PiBNaW5pbXVtIFBsYXRmb3JtIHdhcyBjcmVhdGVkIGFuZCBo b3cgaXQgd29ya3MgYXQgYSBoaWdoLWxldmVsLiBMaWtlIHRoZQ0KPj4gY29kZSwgdGhpcyBkb2N1 bWVudCBpcyBvcGVuIGFuZCBhdmFpbGFibGUgdG8gdGhlIGNvbW11bml0eS4gWW91IG1pZ2h0DQo+ PiBjb250cmlidXRlIGNvbnRlbnQgaGVyZSBpbiBhZGRpdGlvbiB0byB5b3VyIGNvZGUuIFlvdSBj YW4gZml4IGFueSBidWdzDQo+PiBvciB1cGRhdGUgY29udGVudCBpbiB0aGUgc3BlYyB1c2luZyBn aXQgcGF0Y2hlcyBhbmQgdGhlIG1haWxpbmcgbGlzdA0KPj4gc2ltaWxhciB0byBjb2RlLg0KPj4N Cj4+IDMuIEludGVsIEZTUCAtDQo+PiBodHRwczovL3d3dy5pbnRlbC5jb20vY29udGVudC93d3cv dXMvZW4vaW50ZWxsaWdlbnQtc3lzdGVtcy9pbnRlbC1maXJtd2FyZS1zdXBwb3J0LXBhY2thZ2Uv aW50ZWwtZnNwLW92ZXJ2aWV3Lmh0bWwNCj4gPGh0dHBzOi8vd3d3LmludGVsLmNvbS9jb250ZW50 L3d3dy91cy9lbi9pbnRlbGxpZ2VudC1zeXN0ZW1zL2ludGVsLWZpcm13YXJlLXN1cHBvcnQtcGFj a2FnZS9pbnRlbC1mc3Atb3ZlcnZpZXcuaHRtbD4NCj4+DQo+Pg0KPj4gRm9yIG1vcmUgaW5mb3Jt YXRpb24gYWJvdXQgSW50ZWwgRlNQIGNoZWNrIG91dCB0aGUgSW50ZWwgRlNQIEV4dGVybmFsDQo+ PiBBcmNoaXRlY3R1cmUgU3BlY2lmaWNhdGlvbiBpbiB0aGUgbGluayBhYm92ZS4gdjIuMiBpcyBj dXJyZW50bHkgdGhlDQo+PiBsYXRlc3QgdmVyc2lvbi4NCj4+DQo+PiBUaGVyZSBpcyBhbiBvcGVu IHNvdXJjZSBRRU1VIEZTUCBhdmFpbGFibGUgaGVyZQ0KPj4gaHR0cHM6Ly9naXRodWIuY29tL3Vu aXZlcnNhbHBheWxvYWQvZnNwc2RrL3RyZWUvcWVtdV9mc3BfeDY0DQo+IDxodHRwczovL2dpdGh1 Yi5jb20vdW5pdmVyc2FscGF5bG9hZC9mc3BzZGsvdHJlZS9xZW11X2ZzcF94NjQ+LiBZb3Ugd2ls bA0KPj4gZmluZCB0aGUgZXhpc3RpbmcgTWluaW11bSBQbGF0Zm9ybSBib2FyZHMgdXNlIEludGVs IEZTUCB3aGlsZSBPdm1mUGtnDQo+PiBkb2VzIG5vdCB1c2UgRlNQLg0KPj4NCj4+IEZpcm13YXJl IGlzIHJlYWxseSBiZXN0IGxlYXJuZWQgaGFuZHMgb24uIFVzaW5nIHRoZSBsaW5rcyBhbmQgYmFj a2dyb3VuZA0KPj4gaW5mbyBhYm92ZSwgSSBzdWdnZXN0Og0KPj4NCj4+IDEuIFJlYWQgdGhlIE92 bWZQa2cgcmVhZG1lLg0KPj4gMi4gQnVpbGQgYSAzMi1iaXQgUEVJIGFuZCA2NC1iaXQgRFhFIE9W TUYgRlcgYW5kIGJvb3QgaXQgdG8gRUZJIHNoZWxsDQo+PiB1c2luZyBRRU1VLg0KPj4gMy4gUmVh ZGluZyB0aHJvdWdoIHRoZSBFREsgSUkgTWluaW11bSBQbGF0Zm9ybSBTcGVjaWZpY2F0aW9uIHRv IGdhaW4gYQ0KPj4gaGlnaCBsZXZlbCB1bmRlcnN0YW5kaW5nIG9mIE1pbmltdW0gUGxhdGZvcm0u DQo+PiA0LiBDb25uZWN0IHdoYXQgeW91IHJlYWQgdG8gdGhlIGNvZGUgaW4NCj4+IGh0dHBzOi8v Z2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi1wbGF0Zm9ybXMvdHJlZS9tYXN0ZXIvUGxhdGZvcm0v SW50ZWwNCj4gPGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi1wbGF0Zm9ybXMvdHJl ZS9tYXN0ZXIvUGxhdGZvcm0vSW50ZWw+Lg0KPj4gRm9jdXMgb24gaGlnaGVyIGxldmVsIHBpZWNl cyBsaWtlIHRoZSBib2FyZCBpbml0aWFsaXphdGlvbiBsaWJyYXJ5Lg0KPj4gNS4gTm90ZSB3aGF0 IGVhY2ggYm9hcmQgcGFja2FnZSBpcyBkb2luZy4gWW91IHdpbGwgZmluZCBjb21tb24gcGF0dGVy bnMNCj4+IGZvciB3aGF0IGEgYm9hcmQgcGFja2FnZSBuZWVkcyB0byBpbXBsZW1lbnQgdG8gbWFr ZSB0aGUgc3lzdGVtIGJvb3QuDQo+PiA2LiBBcyB5b3UgcmVhZCB0aHJvdWdoIHRoZSBjb2RlLCBy ZWZlcmVuY2UgdGhlIGdlbmVyYWwgcmVzb3VyY2VzIGxpc3RlZA0KPj4gYWJvdmUgdG8gdW5kZXJz dGFuZCBhbnl0aGluZyBub3QgTWluaW11bSBQbGF0Zm9ybSBzcGVjaWZpYy4gUGFydCBvZiB0aGUN Cj4+IGxlYXJuaW5nIHByb2Nlc3MgaXMga25vd2luZyB3aGljaCBzcGVjIHRvIHVzZSBmb3IgZGlm ZmVyZW50IGludGVyZmFjZXMuDQo+PiBJZiB5b3UncmUgdW5zdXJlIHdoaWNoIHNwZWMgc29tZXRo aW5nIGlzIGluLCBmZWVsIGZyZWUgdG8gcmVhY2ggb3V0Lg0KPj4gNy4gV2hpbGUgbG9va2luZyB0 aHJvdWdoIHRoZSBjb2RlIGluIGVkazItcGxhdGZvcm1zLCB0aGluayBhYm91dCBhIHBhdGNoDQo+ PiB5b3UgY2FuIHNlbmQgdG8gZWRrMi1wbGF0Zm9ybXMgZm9yIHNvbWV0aGluZyB2ZXJ5IHRyaXZp YWwgc3VjaCBhcyBhIGJ1Zw0KPj4gZml4IG9yIGRvY3VtZW50YXRpb24gdXBkYXRlLg0KPj4gOC4g U2VuZCB0aGUgcGF0Y2ggYW5kIGdldCBpdCByZXZpZXdlZC1ieSB0aGUgYXBwcm9wcmlhdGUNCj4+ IG1haW50YWluZXJzL3Jldmlld2VycyBhbmQgbWVyZ2VkIGludG8gdGhlIG1hc3RlciBicmFuY2gu DQo+PiA5LiBSZWFkIHRocm91Z2ggdGhlIGNvZGUgaW4gT3ZtZlBrZy4gVHJ5IHRvIG1hcCB0aGUg d29yayBpdCBpcyBkb2luZyB0bw0KPj4gdGhlIGJvYXJkIGNvZGUgeW91IHJldmlld2VkIGluIGVk azItcGxhdGZvcm1zLg0KPj4gMTAuIEF0IHRoaXMgcG9pbnQsIHlvdSBjb3VsZCBzdGFydCBvdXRs aW5pbmcgbWFqb3IgcGllY2VzIG9mDQo+PiBpbml0aWFsaXphdGlvbiBpbiBPVk1GIGFuZCBob3cg dGhleSBtaWdodCBtYXAgdG8gYSBib2FyZCBwYWNrYWdlLiBUcnkgdG8NCj4+IGlkZW50aWZ5IHdo ZXJlIHRoZSBpbml0aWFsaXphdGlvbiBwaWVjZXMgd291bGQgcmVzaWRlIGluIHRoZSBib2FyZA0K Pj4gcGFja2FnZSBhbmQgdHJ5IHRvIGlkZW50aWZ5IGNoYWxsZW5nZXMgdGhhdCBtaWdodCBhcmlz ZS4gV2Ugd2lsbCBsaWtlbHkNCj4+IHNwZW5kIHF1aXRlIGEgYml0IG9mIHRpbWUgaGVyZSBiZWZv cmUganVtcGluZyBpbnRvIHRvbyBtdWNoIGNvZGUuDQo+Pg0KPj4gSSBrbm93IHRoaXMgaXMgYSBs b3Qgb2YgaW5mby4gUGxlYXNlIGRvbid0IGhlc2l0YXRlIHRvIHJlYWNoIG91dCBpZiB5b3UNCj4+ IGhhdmUgYW55IHF1ZXN0aW9ucyBhbmQgSSBsb29rIGZvcndhcmQgdG8gd29ya2luZyB3aXRoIHlv dS4NCj4+DQo+PiBSZWdhcmRzLA0KPj4gTWljaGFlbA0KPj4NCj4+IE9uIDUvMTgvMjAyMSA2OjA1 IFBNLCBnYW9saW1pbmcgd3JvdGU6DQo+Pj4gSW5jbHVkZSBNaWNoYWVsIEt1YmFja2kuDQo+Pj4N Cj4+PiBUaGFua3MNCj4+PiBMaW1pbmcNCj4+Pj4gLS0tLS3Tyrz+1K28/i0tLS0tDQo+Pj4+ILei vP7IyzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5p bz48ZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbz4+ ILT6se0gS0FBSVJBDQo+Pj4+IEdVUFRBDQo+Pj4+ILeiy83KsbzkOiAyMDIxxOo11MIxOMjVIDIy OjQyDQo+Pj4+IMrVvP7IyzogUmF5IE5pIDxyYXkubmlAaW50ZWwuY29tIDxtYWlsdG86cmF5Lm5p QGludGVsLmNvbT4+Ow0KPiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8bWFpbHRvOmRldmVsQGVkazIu Z3JvdXBzLmlvPg0KPj4+PiDW98ziOiBSZTogW2VkazItZGV2ZWxdIEdTb0MgMjAyMSBRZW11IE9w ZW5Cb2FyZFBrZyBQcm9qZWN0DQo+Pj4+DQo+Pj4+IE9uIFR1ZSwgTWF5IDE4LCAyMDIxIGF0IDA4 OjAxOjU3UE0gKzA1MzAsIEthYWlyYSBHdXB0YSB3cm90ZToNCj4+Pj4+IEhleSBldmVyeW9uZSwN Cj4+Pj4+DQo+Pj4+PiBJIGhhdmUgYmVlbiBzZWxlY3RlZCBhcyBhIHN0dWRlbnQgZGV2ZWxvcGVy IGZvciB0aGUgcHJvamVjdCBNaW5QbGF0Zm9ybQ0KPj4+Pj4gUWVtdSBPcGVuQm9hcmRQa2cgdW5k ZXIgdGhlIG1lbnRvcnMgUmF5IE5pIGFuZCBNaWNoYWVsIEt1YmFja2kuDQo+Pj4+IFRoYW5reW91 DQo+Pj4+PiBmb3IgdGhpcyBvcHBvcnR1bml0eS4gSSBoYXZlIGJlZW4gb3ZlciB0aGUgbWFqb3Ig Y2hhcHRlcnMgb2YgQmV5b25kDQo+Pj4+PiBCSU9TDQo+Pj4+PiBhcyByZWNvbW1lbmRlZCBieSBO YXRlIERlU2ltb25lLiBJIHdhbnQgdG8gZ2V0IGZhbWlsaWFyIHdpdGggdGhlIGNvZGUNCj4+Pj4+ IG5vdyB0byBoZWxwIG1lIHVuZGVyc2F0bmQgdGhlIGNvbW11bml0eSBwcmFjdGljZXMgYW5kIGdl dCBteSBoYW5kcw0KPj4+Pj4gZGlydHkuIFdoZXJlIHNob3VsZCBJIHN0YXJ0PyBXaGF0IGRldmVs b3BtZW50IGVudmlyb25tZW50IGRvIEkgbmVlZD8NCj4+Pj4+IEhvdyBjYW4gSSB1c2UgdGhpcyBj b21tdW5pdHkgYm9uZGluZyBwZXJpb2QgdG8gZ2l2ZSBtZSBhIGJldHRlciBzdGFydA0KPj4+Pj4g Zm9yIHRoZSBjb2RpbmcgcGhhc2U/DQo+Pj4+Pg0KPj4+Pj4gSG93IGRvIHRoZSBtZW50b3JzIHdh bnQgbWUgdG8gY29ubmVjdCB3aXRoIHRoZW0/IENhbiB3ZSBoYXZlIGEgbWVldA0KPj4+PiB0bw0K Pj4+Pj4gZGlzY3VzcyB0aGlzIHByb2plY3QncyBwbGFuIHRvIGFkZCBtb3JlIGRldGFpbHM/IFRo aXMgd291bGQgYmUgdmVyeQ0KPj4+Pj4gaGVscGZ1bCBmb3IgbWUgY29uc2lkZXJpbmcgSSBkb24n dCBoYXZlIHByaW9yIGV4cGVyaWVuY2Ugd2l0aCBFREsyLg0KPj4+Pg0KPj4+PiBJIG5vdGljZWQg dGhhdCB0aGUgbWFpbC1pZCB0aGF0IEkgaGF2ZSB1c2VkIG9mIE1pY2hhZWwgS3ViYWNraSBkb2Vz bid0DQo+Pj4+IGV4aXN0IGFueW1vcmUuIFBsZWFzZSBsZXQgbWUga25vdyBob3cgSSBjYW4gY29u dGFjdCBoaW0uDQo+Pj4+DQo+Pj4+Pg0KPj4+Pj4gVGhhbmsgeW91LA0KPj4+Pj4gS2FhaXJhDQo+ Pj4+DQo+Pj4+IFRoYW5rcywNCj4+Pj4gS2FhaXJhDQo+Pj4+DQo+Pj4+DQo+Pj4+DQo+Pj4+DQo+ Pj4NCj4+Pg0KPj4+DQo+Pj4NCj4+Pg0KPj4+DQo+Pj4NCj4NCj4NCj4NCj4NCj4NCj4NCg0KDQoN Cg0KDQo= --_000_DF4PR8401MB0444C140FEDFC1764785483FE0299DF4PR8401MB0444_ Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: quoted-printable
Thanks for the answers, that's very helpful, guys!

I've started to replace some of my DSC and FDF with the include files ment= ioned by Michael.
Since RISC-V doesn't have I/O registers, SMM and some other things, I had = to make some changes but not too many.
Maybe for Qemu there would have be some more non-Intel changes.
Would you accept patches to make it more arch agnostic? Or should we first= move it out of the Intel directory?

Sorry for hijacking your thread Kaaira, but I hope this discussion would a= lso be helpful for you ��
Just like you, I'm trying to convert a QEMU platform to MinPlatform. (And = then the other RISC-V platforms)
If you want to have a look, you can check out my progress here: https://github.com/riscv/riscv-edk2-platf= orms/commits/riscv-virt-minplatform-gh-actions

My plan is:
  1. Make DSC and FDF smaller by including generic files (WIP)
  2. Try to take advantage of "AdvancedFeatures"= ;
  3. Reformat the FD into the FVs mandated by the MinPlat= form spec
  4. Check the detailed requirements of each stag= e (e.g. required functions, build files, ...)
I see that each stage in the MinPlatform spec has a checklist. They d= on't look like checklist but rather steps to achieve a certain state but th= at's also ok.

Thanks,
Daniel


From: devel@edk2.groups.io= <devel@edk2.groups.io> on behalf of Michael Kubacki <mikuback@lin= ux.microsoft.com>
Sent: Friday, May 21, 2021 00:32
To: Oram, Isaac W <isaac.w.oram@intel.com>; devel@edk2.groups= .io <devel@edk2.groups.io>; Schaefer, Daniel <daniel.schaefer@hpe.= com>; gaoliming@byosoft.com.cn <gaoliming@byosoft.com.cn>; kaaira7= 319@gmail.com <kaaira7319@gmail.com>; Ni, Ray <ray.ni@intel.com>= ;
Subject: Re: =BB=D8=B8=B4: [edk2-devel] GSoC 2021 Qemu OpenBoardPkg= Project
 
Daniel,

You will specifically find attempts to consolidate common libraries and modules in DSC and FDF files that can be included into a board package here -
https://github.com/tianocore/edk2-platforms= /tree/master/Platform/Intel/MinPlatformPkg/Include.
Files are split such that they can be included in the corresponding
section in the board package DSC/FDF file. Note there are some mixed
opinions I've encountered in the industry on the complexity trade off
associated with includes in DSC and FDF files.

But as Isaac mentioned, while MinPlatform is designed to support
multiple architectures, it has only be enabled on Intel platforms,
therefore, you should expect to encounter some problems enabling a
different architecture but identifying and/or resolving those would be very valuable.

As you are exploring how to port a platform to MinPlatform I also
recommend familiarizing yourself the concept of advanced features
described here -
https://github.com/tianocore/edk2-platforms/blob/master/= Features/Intel/Readme.md.
You might find your board package is relatively simpler than the
original platform package after accounting for advanced features being separated out.

Thanks,
Michael


On 5/20/2021 8:05 AM, Oram, Isaac W wrote:
> Daniel,
>
> The MinPlatform spec was intended to be architecture and product
> independent for a =A1=B0mainstream=A1=B1 set of products.  It is= intended to
> constrain some of the nearly unlimited extensibility and flexibility = of
> UEFI specs and edk2 codebase.  We took an 80/20 kind of approach= .  Base
> design should work for 80% of designs, but some will need to leverage=
> full edk2 and UEFI specification flexibility.  I think that a ba= sic QEMU
> kind of port would fit in 80% target.  I would ultimately like t= o see a
> progression of edk2 use that starts with QEMU then moves more seamles= sly
> to open designs and then proprietary product designs.  MinPlatfo= rm
> consistency is hoped to help that developer ramp into system firmware=
> productivity.
>
> We have only seen MinPlatform applied to Intel based products so far.=
> Which is why we are not rushing to move the spec from a 0.7 =A1=B0bro= ad
> feedback=A1=B1 state to a 1.0 =A1=B0initially complete=A1=B1 state.&n= bsp; Like edk2,
> MinPlatformPkg and BoardModulePkg content is intended to support
> multiple silicon and product architectures and we will happily promot= e
> content out of =A1=B0Intel=A1=B1 scope when that is an accurate refle= ction of use
> and not just wishful thinking.  While 100% of uses are Intel sco= pe, it
> makes sense to land in the Intel part of edk2-platforms repo.  S= imilar
> logic applies to Features/Intel content, though more there may have t= ies
> to Intel specific product features.
>
> The Minimum Platform Arch spec details base requirements for FV layou= t
> (thus enabling more common code to publish FV details), base silicon =
> policy configuration flow (thus more common PEIM/drivers to gather > config information and reduce board porting to relatively simple
> libraries), and such things.  By enabling more common PEIM and d= rivers,
> we hope to see benefits to ease of use and consistent quality. Simila= r
> approaches for the other elements of the spec should help to improve =
> code sharing.
>
> Anyway, yes, it should be able to help you reduce the copies of =A1= =B0mostly
> common=A1=B1 code that you encountered and the code and spec are open= to
> welcome the additional use and feedback from additional applications.=
>
> Regards,
> Isaac
>
> *From:*devel@edk2.groups.io <devel@edk2.groups.io> *On Behalf O= f *Daniel
> Schaefer
> *Sent:* Wednesday, May 19, 2021 8:40 PM
> *To:* devel@edk2.groups.io; gaoliming@byosoft.com.cn;
> kaaira7319@gmail.com; Ni, Ray <ray.ni@intel.com>;
> mikuback@linux.microsoft.com
> *Subject:* Re: =BB=D8=B8=B4: [edk2-devel] GSoC 2021 Qemu OpenBoardPkg= Project
>
> Hi,
>
> that sounds like a great project!
>
> I'm currently trying to create an equivalent of OvmfPkg for the RISCV= 64
> generic QEMU virt machine.
>
> I don't like how much of my DSC and FDF file has modules that pretty =
> much all platforms should have.
>
> MinPlatform would help reduce that, right?
>
> Is MinPlatform flexible enough to account for non-X64 platforms?
>
> If so, then I think Kaaira and I could collaborate.
>
> Cheers,
> Daniel
>
> ---------------------------------------------------------------------= ---
>
> *From:*devel@edk2.groups.io
> <mailto:devel@edk2.groups.= io><devel@edk2.groups.io
> <mailto:devel@edk2.groups.= io>> on behalf of Michael Kubacki
> <mikuback@linux.microsoft.com <mailto:mikuback@linux.microsoft.com>>
> *Sent:* Thursday, May 20, 2021 02:57
> *To:* devel@edk2.groups.io
> <mailto:devel@edk2.groups.= io><devel@edk2.groups.io
> <mailto:devel@edk2.groups.= io>>; gaoliming@byosoft.com.cn
> <mailto:gaoliming@byos= oft.com.cn><gaoliming@byosoft.com.cn
> <mailto:gaoliming@byos= oft.com.cn>>; kaaira7319@gmail.com
> <mailto:kaaira7319@gmail.c= om><kaaira7319@gmail.com
> <mailto:kaaira7319@gmail.c= om>>; 'Ray Ni' <ray.ni@intel.com
> <mailto:ray.ni@intel.com&g= t;>
> *Subject:* Re: =BB=D8=B8=B4: [edk2-devel] GSoC 2021 Qemu OpenBoardPkg= Project
>
> I also wanted to add that I will be setting up weekly video calls
> including Ray that we can use to supplement mailing list communicatio= n.
>
> I suggest the primary communication mechanism be the mailing list and= we
> use those calls for clarification, detailed project planning, and top= ics
> not directly relevant to the list.
>
> Regards,
> Michael
>
> On 5/19/2021 10:29 AM, Michael Kubacki wrote:
>> Thanks Liming.
>>
>> Hi Kaaira,
>>
>> Welcome! You can contact me at mikuback@linux.microsoft.com <<= a href=3D"mailto:mikuback@linux.microsoft.com">mailto:mikuback@linux.micros= oft.com>. You
> will
>> sometimes see my email as michael.kubacki@microsoft.com <mailto:michael.kubacki@microsof= t.com>and
> that is fine
>> to use for communication though I tend to not use it on the maili= ng list
>> due to way the mail server manipulates plaintext email.
>>
>> GENERIC RESOURCES
>>
>> I'm sharing some general resources in case you are not already fa= miliar
>> with them:
>>
>> 1. https://github.com/tianocore-training/Tianocore_Traini= ng_Contents/wiki
> <https://github.com/tianocore-training/Tianocore_Training_= Contents/wiki>
>>
>> This one is good for topics like UEFI overview, EDK II concepts, = and
>> Minimum Platform.
>>
>> In particular for your project, I recommend looking through the <= br> >> MinPlatform training -
>> https://github.com/tianocore-training/Presentation_FW/blob/master/FW/Pr= esentations/_D_05_EDK_II_Open_Source_MinPlatform_pres_gp.pdf
> <https://github.com/tianocore-training/Presentation_FW/blob/master/FW/Pr= esentations/_D_05_EDK_II_Open_Source_MinPlatform_pres_gp.pdf>
>>
>>
>> 2.
>> https://software.intel.= com/content/www/us/en/develop/articles/unified-extensible-firmware-interfac= e.html
> <https://software.intel.= com/content/www/us/en/develop/articles/unified-extensible-firmware-interfac= e.html>
>>
>>
>> These whitepapers are useful when you need more in depth detail a= bout a
>> particular area (like capsule update or work related to the memor= y map).
>> I recommend bookmarking it and keeping it in mind as a reference.=
>>
>> 3. https://uefi.org/learning_center/presentationsandvideos/
> <https://uefi.org/learning_center/presentationsandvideos/>
>>
>> Scroll through here if you have some time and see if there's anyt= hing
>> interesting. To help keep on your project schedule I don't think = these
>> are as important but there is a lot of interesting material there= .
>>
>> Reading through some of the key concepts in Beyond BIOS can be he= lpful
>> and like the UEFI, ACPI, and PI (Platform Initialization) specs a= t
>> https://uefi.org/spec= ifications <https://uefi= .org/specifications>, I
> believe they are most useful as
>> references when you are solving specific problems.
>>
>> PROJECT-SPECIFIC RESOURCES
>>
>> Since your project involves creating QEMU board within the Minimu= m
>> Platform architecture, you can start looking into:
>>
>> 1. QEMU - An open source machine emulator
>> 2. Minimum Platform Architecture - A software architecture to cre= ate
>> basic platform firmware that can be extended with advanced functi= onality.
>> 3. Intel FSP - Try to understand the high-level goals and how FSP=
>> interfaces with firmware.
>>
>> 1. QEMU - https://www.qemu.org/=   <https://www.qemu.org/ >
>>
>> Please set up the QEMU environment. Your QemuOpenBoardPkg will ne= ed to
>> run on qemu-system-x86_64 at a minimum with a 32-bit PEI and a 64= -bit
>> DXE phase. Most real hardware firmwares also use a 32-bit PEI and= a
>> 64-bit DXE.
>>
>> I suggest you start with the OvmfPkg README -
>> https://github.com/tianocore/edk2/blob/master/OvmfPkg/README
> <https://github.com/tianocore/edk2/blob/master/OvmfPkg/README>= ;
>>
>> As an initial step you can try to build an OVMF FW with a 32-bit = PEI
>> (IA32) and 64-bit DXE (X64) and boot to the EFI shell.
>> OvmfPkg/OvmfPkgIa32X64.dsc can be used to build a firmware for th= ese
>> target architectures.
>>
>> Any time you submit patches to edk2, you can check edk2/maintaine= rs.txt
>> - https://github.com/tianocore/edk2/blob/master/Maintainers.txt
> <
https://github.com/tianocore/edk2/blob/master/Maintainers.txt&= gt;for the
>> appropriate maintainers and reviewers to CC on the patch. As you = can
>> see, Laszlo and Ard are the maintainers for OvmfPkg and Jordan is= a
>> reviewer. If there are any questions that require deep expertise = in QEMU
>> or OVMF, we will reach out to them. The Minimum Platform code is =
>> maintained in the edk2-platforms repository and it has a similar =
>> maintainers.txt file for its packages -
>> https://github.com/tianocore/edk2-platforms/blob/master/= Maintainers.txt
> <https://github.com/tianocore/edk2-platforms/blob/master/= Maintainers.txt>.
>>
>> I suggest you try sending a very trivial patch for a change in th= e
>> edk2-platforms repository - https://github.com/tianocore/edk2-platforms
> <https://g= ithub.com/tianocore/edk2-platforms>
>> to make sure that your git environment is set up properly to form= at edk2
>> patches and your email service can send patches correctly.
>>
>> We can discuss the details about how to set up your environment a= nd what
>> to change when you are ready. You can use this page to get starte= d -
>> https://github.com/tianocore/tianocore.github.io/wiki/Ho= w-To-Contribute
> <https://github.com/tianocore/tianocore.github.io/wiki/Ho= w-To-Contribute>.
>>
>> 2. EDK II Minimum Platform Specification -
>> https://edk2-docs.gitbook.io/edk-ii-minimum-platform-specifi= cation/ 
> <https://edk2-docs.gitbook.io/edk-ii-minimum-plat= form-specification/ >
>>
>> For your project, this spec will be very useful. It describes why=
>> Minimum Platform was created and how it works at a high-level. Li= ke the
>> code, this document is open and available to the community. You m= ight
>> contribute content here in addition to your code. You can fix any= bugs
>> or update content in the spec using git patches and the mailing l= ist
>> similar to code.
>>
>> 3. Intel FSP -
>> https://www.i= ntel.com/content/www/us/en/intelligent-systems/intel-firmware-support-packa= ge/intel-fsp-overview.html
> <https://www.i= ntel.com/content/www/us/en/intelligent-systems/intel-firmware-support-packa= ge/intel-fsp-overview.html>
>>
>>
>> For more information about Intel FSP check out the Intel FSP Exte= rnal
>> Architecture Specification in the link above. v2.2 is currently t= he
>> latest version.
>>
>> There is an open source QEMU FSP available here
>> https://github.com/universalpayload/fspsdk/tree/qemu_fsp_x64
> <https://github.com/universalpayload/fspsdk/tree/qemu_fsp_x64>= ;. You will
>> find the existing Minimum Platform boards use Intel FSP while Ovm= fPkg
>> does not use FSP.
>>
>> Firmware is really best learned hands on. Using the links and bac= kground
>> info above, I suggest:
>>
>> 1. Read the OvmfPkg readme.
>> 2. Build a 32-bit PEI and 64-bit DXE OVMF FW and boot it to EFI s= hell
>> using QEMU.
>> 3. Reading through the EDK II Minimum Platform Specification to g= ain a
>> high level understanding of Minimum Platform.
>> 4. Connect what you read to the code in
>> https://github.com/tianocore/edk2-platforms/tree/master/P= latform/Intel
> <https://github.com/tianocore/edk2-platforms/tree/master/P= latform/Intel>.
>> Focus on higher level pieces like the board initialization librar= y.
>> 5. Note what each board package is doing. You will find common pa= tterns
>> for what a board package needs to implement to make the system bo= ot.
>> 6. As you read through the code, reference the general resources = listed
>> above to understand anything not Minimum Platform specific. Part = of the
>> learning process is knowing which spec to use for different inter= faces.
>> If you're unsure which spec something is in, feel free to reach o= ut.
>> 7. While looking through the code in edk2-platforms, think about = a patch
>> you can send to edk2-platforms for something very trivial such as= a bug
>> fix or documentation update.
>> 8. Send the patch and get it reviewed-by the appropriate
>> maintainers/reviewers and merged into the master branch.
>> 9. Read through the code in OvmfPkg. Try to map the work it is do= ing to
>> the board code you reviewed in edk2-platforms.
>> 10. At this point, you could start outlining major pieces of
>> initialization in OVMF and how they might map to a board package.= Try to
>> identify where the initialization pieces would reside in the boar= d
>> package and try to identify challenges that might arise. We will = likely
>> spend quite a bit of time here before jumping into too much code.=
>>
>> I know this is a lot of info. Please don't hesitate to reach out = if you
>> have any questions and I look forward to working with you.
>>
>> Regards,
>> Michael
>>
>> On 5/18/2021 6:05 PM, gaoliming wrote:
>>> Include Michael Kubacki.
>>>
>>> Thanks
>>> Liming
>>>> -----=D3=CA=BC=FE=D4=AD=BC=FE-----
>>>> =B7=A2=BC=FE=C8=CB: devel@edk2.groups.io
> <mailto:devel@edk2.groups.= io><devel@edk2.groups.io
> <mailto:devel@edk2.groups.= io>> =B4=FA=B1=ED KAAIRA
>>>> GUPTA
>>>> =B7=A2=CB=CD=CA=B1=BC=E4: 2021=C4=EA5=D4=C218=C8=D5 22:42=
>>>> =CA=D5=BC=FE=C8=CB: Ray Ni <ray.ni@intel.com <mailto:ray.ni@intel.com>>;
> devel@edk2.groups.io <mail= to:devel@edk2.groups.io>
>>>> =D6=F7=CC=E2: Re: [edk2-devel] GSoC 2021 Qemu OpenBoardPk= g Project
>>>>
>>>> On Tue, May 18, 2021 at 08:01:57PM +0530, Kaaira Gupta wr= ote:
>>>>> Hey everyone,
>>>>>
>>>>> I have been selected as a student developer for the p= roject MinPlatform
>>>>> Qemu OpenBoardPkg under the mentors Ray Ni and Michae= l Kubacki.
>>>> Thankyou
>>>>> for this opportunity. I have been over the major chap= ters of Beyond
>>>>> BIOS
>>>>> as recommended by Nate DeSimone. I want to get famili= ar with the code
>>>>> now to help me undersatnd the community practices and= get my hands
>>>>> dirty. Where should I start? What development environ= ment do I need?
>>>>> How can I use this community bonding period to give m= e a better start
>>>>> for the coding phase?
>>>>>
>>>>> How do the mentors want me to connect with them? Can = we have a meet
>>>> to
>>>>> discuss this project's plan to add more details? This= would be very
>>>>> helpful for me considering I don't have prior experie= nce with EDK2.
>>>>
>>>> I noticed that the mail-id that I have used of Michael Ku= backi doesn't
>>>> exist anymore. Please let me know how I can contact him.<= br> >>>>
>>>>>
>>>>> Thank you,
>>>>> Kaaira
>>>>
>>>> Thanks,
>>>> Kaaira
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>
>
>
>
>
>





--_000_DF4PR8401MB0444C140FEDFC1764785483FE0299DF4PR8401MB0444_--