From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web09.3207.1627006057092306388 for ; Thu, 22 Jul 2021 19:07:37 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=R/bMoGcf; spf=pass (domain: intel.com, ip: 192.55.52.136, mailfrom: nathaniel.l.desimone@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10053"; a="191376083" X-IronPort-AV: E=Sophos;i="5.84,262,1620716400"; d="scan'208";a="191376083" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Jul 2021 19:07:32 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,262,1620716400"; d="scan'208";a="633195408" Received: from fmsmsx605.amr.corp.intel.com ([10.18.126.85]) by orsmga005.jf.intel.com with ESMTP; 22 Jul 2021 19:07:26 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Thu, 22 Jul 2021 19:07:14 -0700 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Thu, 22 Jul 2021 19:07:14 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10 via Frontend Transport; Thu, 22 Jul 2021 19:07:14 -0700 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (104.47.56.44) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.10; Thu, 22 Jul 2021 19:07:14 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aeFzxlqKt0YMkzVX5SELL3In7Nxyvp+DmRiWf8XH6ga5sXRqlHKFKvymYS8qjuDvbxsubim473rYj0llfdifLohr+SuSX5n0cWvSiYhKU2HW/2da4gYj4KrjMMJtRJOyMsNyfcQQwww2JMllnZLMGwJJUsOkoC/NpXMWFVWquIQCrx2Je+1ZxUI5E87mbe2cMrqESUBeCwqHjU8rKc1PYILh7k6XPDScn46t9S7B4sFvcgizFuBCxKMnPa0NsDc00HInQrKPvoKl3PhvZ7QK1N/ykqDCYFO/b9BeGr6JNucXym4f8BEHvbXR5Sl0l+oL/choIiw/s+K9h68lX4CJow== 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=LClEuqplPKBE+PVWHCyhw6OEqeQM12YikUaNpEeciQk=; b=lHzs4lxgACdvdmdefNy124+rnv6zfHp+BH+q70IKDPr6qxJxD2MiRNdP12fgprRH22pVKk0T0CWj1C2TsONmngT9Zz8YiFOnGD+B2EthKG313ZzSeFlUaka0KDazDqb1Mzx2AYKuy+i8pVx4QEAT/uR47FSibH+zJpT88l47IZ7j+tqkiL1VZBHW4eT9a6uz935JoA/XIR+k1uTSnqGlWXkImqny69hEZiivNYyI6H4FTiJS2jxPu56Q6H7XWls+LKnhCelT/q8rOx0yBql8kxht5fk071Cu+TvaT/Zjfzhb/JyaYti92mnx8rgXEp89kKR2y2raPwp6FJWFpwO84Q== 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=LClEuqplPKBE+PVWHCyhw6OEqeQM12YikUaNpEeciQk=; b=R/bMoGcftT4IDclufO4V2v3P1nHUFjK+Rbm/xL6kbQAwI2OIDUhU1Hnc2bPDxMDZW7A/vdnZq0rsCuXePZLRMbI9majeDfF75TZRvCcyxTnBnZWDB755aNtd5MueD2JDQHp5ClWIfwG5uFOItXPRUhZ4FYcBH5zxCZBqAex3alI= Received: from MWHPR1101MB2160.namprd11.prod.outlook.com (2603:10b6:301:5b::12) by CO1PR11MB5028.namprd11.prod.outlook.com (2603:10b6:303:9a::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4352.26; Fri, 23 Jul 2021 02:07:12 +0000 Received: from MWHPR1101MB2160.namprd11.prod.outlook.com ([fe80::64ce:a6b0:9ae8:e644]) by MWHPR1101MB2160.namprd11.prod.outlook.com ([fe80::64ce:a6b0:9ae8:e644%12]) with mapi id 15.20.4352.028; Fri, 23 Jul 2021 02:07:12 +0000 From: "Nate DeSimone" To: "devel@edk2.groups.io" , "pedro.falcato@gmail.com" , Andrew Fish CC: "mhaeuser@posteo.de" , "rfc@edk2.groups.io" Subject: Re: [edk2-devel] RFC: EXT4 filesystem driver Thread-Topic: [edk2-devel] RFC: EXT4 filesystem driver Thread-Index: AQHXfoXjqAz2bPSnVk+M6pafBiVKQ6tOypCAgABdLwCAAA+sAIAAmRRQ Date: Fri, 23 Jul 2021 02:07:12 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.5.1.3 dlp-product: dlpe-windows authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 839e53d9-c54f-49e2-de54-08d94d7e95e5 x-ms-traffictypediagnostic: CO1PR11MB5028: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:242; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Hp+qONlB89G4/2oViSeGJ6m2+yXu1wDvubtKN528IdQNiQM+RtYkJQESDNze4H5VgAARRXKIJGpuObm9J3vMCIU7azQ1FOqXmXbHt1V+JORGR7zPwvpPBrt3k1AD+/52UamxQW0bcChRVTlZOF09Nfi1mvBJA56i4/ofig5ths8wKGCvLYnC76pNgXSXw0iXNke5zdO4iI3dR2fYhKYqb9u1Y2d19kbySZB4DU82Yg65pmJUy01rvFR682rIrDHCCDFOFDm2ryNu+7V47PpNGOG7MTSWfDQXml7E1y2mKG5LAOrfrClHfcQwfDNra7dAu0OBFsrPsGGFJaZe7KLXXFZk8P2onS6SQLT7Y7hRDdTmZzYCLKrek3DP7TK7c3E4DzdUG/X8hEY/zMNQ3k7dq5Og6YW1DhKXI0hVYVlj0TQVPfB/ZMUdv02OrNGeGv8yyXCbFLBAiicXEkWK06eZfbRn9M3cQtxS0GTYD1odUMsBONeq2QWubV6rBifFhccNRE7u9xwIdh5tEyqFEusR4xg1jpB5zXdJFGaW9zLdPeYLNT0Iu0d0Jq0ciETvk/N/MuZY2BF5uNQOzIGUrEoa6iGY5YPzk4a9OyypW3hYTI83lDbIya76eIDp47WQDYpgd11z5JN4uZbXnZbPXPjIk1BBuusVHJs1azjQF0LrglB+le0T3EqkEeBY3OL0pO8snOqqTSt/yrpIPQAzVL3ELy1tety3SYZS8GKElFlJix9zOkCUDgbNDahLghnlw1aaJoRHMFlNcgLvNlnY0/84+4uf/eFWQgx+prNDxaHubq5jePsbgnLKrZwtA5kfe9W5FxTw/3IF82WZDz6NfS1VNg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR1101MB2160.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(376002)(136003)(39860400002)(346002)(396003)(366004)(8936002)(186003)(122000001)(30864003)(9686003)(53546011)(4326008)(2906002)(966005)(66574015)(38100700002)(6506007)(26005)(7696005)(33656002)(76116006)(45080400002)(55016002)(8676002)(71200400001)(19627235002)(478600001)(110136005)(54906003)(64756008)(66476007)(5660300002)(66446008)(66556008)(66946007)(83380400001)(316002)(86362001)(52536014)(38070700004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RnBWekxrcHNrKzdJdVQwN1FmRlJMaUQzRDFYL0hlcmcrYThNY3FQdzBuMUwr?= =?utf-8?B?MjBsd21rMm8zbkJzUWJWMzhHOVR5dnpiZG0wVlZhQWJKWXczTTdld05XQlNx?= =?utf-8?B?RzVjRUxXdDBxbm9FQkxqVWREQVNuOHYvTURkOFpNbElYMUpjand2SXRkMXc0?= =?utf-8?B?d0duQzRzdkpwa1ZmZWNpb2JDTi9sU0hseWFJWXE0KzRqeEViWDBUcWorUXp2?= =?utf-8?B?eVJBMXhvY1VmRXJVYjl1bWFueHg2bENkcVZMTkY1S2ZDbHZIQ1JxSHptM2I2?= =?utf-8?B?bU5SeWhTQ0VNSkU1M0EwQ3YzYTlmNWUrbjRKLy9aWG1NMjFUQ0MvanNuVms3?= =?utf-8?B?eTllaTFxdzFSZ0ZJNDlSYnJPSk5PTnBJRUVwRVFJdEtZRkJsRFNISW10dFZE?= =?utf-8?B?cUIyMDVMeDI4SE9LVjVOcWR1WkFtQnpIemtUb3lDMXdXMUhKazFXb1VjeTBP?= =?utf-8?B?Q1FZNDIxamNVVlRhNUFnZWJmL2tWNURvOER3R0djQVcxVWZoUVNvZnVTdVRF?= =?utf-8?B?cGJLS0FLNlZGMDZXUXpmNE5lSHZPSVo1S25KNzJYNGdSUXFwVjNVc2NvMVhH?= =?utf-8?B?R0w1V0dhd3NjbkNLOGZXR2NySkFURWp2aWtDbUowa2FXQU0zY2M4anRoZ3E5?= =?utf-8?B?MXNCMm5sU0N1NmFoZjlHTzlHM3RsM1p2OFJEcjRqRS9uclhjQ2VRMEtlTGZn?= =?utf-8?B?YWRYZmQwM3Y1SzZhMEc2WHRvd0hTdW9RT2lFQVdQa2s2VjdTeXJYL01HdHBm?= =?utf-8?B?ZVVaMUpYZW1qa2dDWnRtUURXdmpsR3UveGxtM21Zc1ZtTlFDeEVsL0VwNm8v?= =?utf-8?B?QldraVFsUnAwbHFYM0VtSFY4VmJoNjlBYi9QM05PMnI4UUtQMy9kcFlUUUs1?= =?utf-8?B?SGhiRm5HLy96aFFqUHlkTFpOcjl3QjI4cmpsNFVXV0JvUDQ5VGlqdFRMWXo2?= =?utf-8?B?RmY1OVAzd3I0UDNzck55K3hiTXlKVkhiaVQvSUVTTlUyemlHRjM0QnRXSkNx?= =?utf-8?B?TENIWi9oaDQyT0twc29DMldMNkNoK1pYTjQ2MXdaay96OTVXZU12SlBRdWtP?= =?utf-8?B?b0sxS05WR3JMYWlITWlVTExZcjdLRFBJM2V2SGxGK00wM0RxSGZ4MTM5V1lI?= =?utf-8?B?NjVDU2Q3UnozVngxdG93Wmp2L3BqV2lKQTZFZngwK2hEaDR0VzlueDhKWVNM?= =?utf-8?B?SXQzQTlzWnZKN2x2NnB3cE9ocDFVcXBxWS9GWEJXM3gzV2U1SkdGNndNY0s1?= =?utf-8?B?L3dxMEhQeWFyaVFjUlRpQTA5di9VbC90U0RwL0dMUUNyK3BKdjhKQWd5SHVX?= =?utf-8?B?UmpjK2l0QmI1ampMdHpwdEJzaGFkK1g1SzEwSFRWaktJb2dsb1ZZRGloUmhX?= =?utf-8?B?ZnM0SG9uT0MvNTlTdlAvUE5kVVVEWjQ2QWV5KzFlN3BhMEhIbThoNk03K3dQ?= =?utf-8?B?VXlBeGJJWTVWZlBMa0tHU1JwbG1HbVNJSXdsZjBkcXJRaElKV1g5UEMrR2JW?= =?utf-8?B?SEM1TlFySTRDNkxOMnhFa1VvS0F4N2kxTTAvd3hjUkg5akN4WkdrODM5SVdV?= =?utf-8?B?R2N0czlpazlVRWVSLzJZZVYyNnJ4THpDenVnNG5Ld3I5SmQ2SGl4dUJ3RFpM?= =?utf-8?B?K1cvU3dIMlFrMkNhbWttaHI0ZVY4Ullta3FWU0lQWFg0bmxXMEdNcERzdnBF?= =?utf-8?B?TERuNnB6ZWozRS9OVG5CM25pbUNGazNUY01OdWV6NlRwWnorNU5Qb0FuOExi?= =?utf-8?Q?QX3+xR1DUaLXUIhz1RNMEGKzHHgZR5NoK51TsB1?= x-ms-exchange-transport-forked: True MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR1101MB2160.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 839e53d9-c54f-49e2-de54-08d94d7e95e5 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Jul 2021 02:07:12.4414 (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: 4cbUwKLyEN/XdU78q8lJPAD7qaqGsw0LCXmmG7PRGezKj7JZH6PIdAF90YOTbLsi7j3zKAj0r6anI8r+k/f0BnBjEN70EKkXz10EUDXkg5Q= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR11MB5028 Return-Path: nathaniel.l.desimone@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgUGVkcm8sDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2ZWxA ZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YgUGVkcm8N Cj4gRmFsY2F0bw0KPiBTZW50OiBUaHVyc2RheSwgSnVseSAyMiwgMjAyMSA5OjU0IEFNDQo+IFRv OiBBbmRyZXcgRmlzaCA8YWZpc2hAYXBwbGUuY29tPg0KPiBDYzogZWRrMi1kZXZlbC1ncm91cHMt aW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPjsgbWhhZXVzZXJAcG9zdGVvLmRlOw0KPiByZmNAZWRr Mi5ncm91cHMuaW8NCj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBSRkM6IEVYVDQgZmlsZXN5 c3RlbSBkcml2ZXINCj4gDQo+IEhpIEFuZHJldywgTWFydmluLA0KPiANCj4gUkU6IFRoZSBwYWNr YWdlIG5hbWU6IEl0IGRvZXNuJ3Qgc291bmQgbGlrZSBhIGJhZCBpZGVhIHRvIGhhdmUgc29tZXRo aW5nDQo+IGxpa2UgYSBGaWxlU3lzdGVtUGtnIGFuZCBoYXZlIGEgYnVuY2ggb2YgZGlmZmVyZW50 IGZpbGVzeXN0ZW1zIGluc2lkZSBvZiBpdCwNCj4gYnV0IEknbGwgZGVmZXIgdG8geW91IGFuZCBt eSBtZW50b3JzJyBqdWRnZW1lbnQ7IHdlIGNvdWxkIGFsc28gZHJvcCB0aGF0DQo+IGlzc3VlIGZv ciBub3cgYW5kIHRha2UgY2FyZSBvZiBpdCBhZnRlcndhcmRzLCBzaW5jZSBpdCBtYXkgbmVlZCBm dXJ0aGVyDQo+IGNoYW5nZXMgdGhhdCBhcmUgbm90IGEgcGFydCBvZiBHU29DIGFuZCB3b3VsZCBq dXN0IGRlbGF5IHRoZSBwcm9jZXNzLg0KPiANCj4gV2l0aCByZXNwZWN0IHRvIHRoZSB3cml0ZSBj YXBhYmlsaXRpZXMgb2YgdGhlIGRyaXZlciwgSSdtIG5vdCBlbnRpcmVseSBzdXJlDQo+IHdoZXRo ZXIgb3Igbm90IGl0J3MgdXNlZnVsLiBJJ3ZlIGJlZW4gdGhpbmtpbmcgYWJvdXQgaXQgdG9kYXks IGFuZCBpdCBzZWVtcyBsaWtlDQo+IHRoZXJlJ3Mgbm90IG11Y2ggdGhhdCBjb3VsZCBnbyB3cm9u Zz8gVGhlIHdyaXRlIHBhdGggaXNuJ3QgZXhjZXNzaXZlbHkNCj4gY29tcGxleC4gRXhjZXB0IG9m IGNvdXJzZSBpbiB0aGUgZXZlbnQgb2YgYW4gdW50aW1lbHkgcG93ZXIgY3V0LCBidXQgdGhvc2UN Cj4gL3Nob3VsZC8gYmUgZWFzaWx5IGRldGVjdGVkIGJ5IHRoZSBjaGVja3N1bXMuIE15IGluaXRp YWwgaWRlYSB3YXMgdG8gaGF2ZSBpdA0KPiB1cCB0byBzcGVlZCB3aXRoIEZhdFBrZyBhbmQgb3Ro ZXIgZmlsZXN5c3RlbXMgYnkgaW1wbGVtZW50aW5nIGFsbCBvZg0KPiBFRklfRklMRV9QUk9UT0NP TCwgaW5jbHVkaW5nIHRoZSB3cml0ZSBwb3J0aW9ucy4gSWYgQXBwbGUncyBIRlMrIGFuZCBBUEZT DQo+IGRyaXZlcnMgZG9uJ3QgaGF2ZSB0aG9zZSwgaXQgbWF5IGJlIGEgZGVjZW50IGlkZWEgdG8g cmVkdWNlIHRoZSBzY29wZSBvZiB0aGUNCj4gZXh0NCBkcml2ZXIgYXMgd2VsbC4gSSBkb24ndCBz ZWUgYSBiaWcgbmVlZCBmb3Igd3JpdGUgc3VwcG9ydDsgb24gdGhlIG90aGVyDQo+IGhhbmQsIEkn dmUgb25seSB3b3JrZWQgb24gVUVGSSBib290bG9hZGVycyBiZWZvcmUsIHdoaWNoIG1heSBiZSBh biBvdXRsaWVyDQo+IGluIHRoYXQgcmVnYXJkLiBGdXJ0aGVyIGZlZWRiYWNrIGlzIGFwcHJlY2lh dGVkLg0KDQpUaGUgbW9zdCBjb21tb25seSB1c2VkIHJlYXNvbiB0byBmb3Igd3JpdGluZyB0byB0 aGUgZmlsZXN5c3RlbSBpbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQgaXMgY2Fwc3VsZSB1cGRh dGVzLiBNb3N0IGNhcHN1bGUgdXBkYXRlIGltcGxlbWVudGF0aW9ucyB3aWxsIHN0YWdlIHRoZSBj YXBzdWxlIG9uIHRoZSBFRkkgU3lzdGVtIFBhcnRpdGlvbiBhbmQgdGhlbiByZXNldCB0aGUgc3lz dGVtIHRvIHVubG9jayBmbGFzaC4gVGhlIHNlY29uZCBtb3N0IHVzZWZ1bCBpcyB0aGUgVUVGSSBT aGVsbCBhbmQgYWxsIHRoZSBtYW55IGFwcGxpY2F0aW9ucyB0aGF0IHJ1biB3aXRoaW4gaXQgd2ls bCB3cml0ZSB0byB0aGUgZmlsZXN5c3RlbSBmb3IgYSBsYXJnZSB2YXJpZXR5IG9mIHJlYXNvbnMu IEkgdGhpbmsgaXQgd291bGQgYmUgYSB1c2VmdWwgZmVhdHVyZSB0byBoYXZlIGFzIG9uZSBjb3Vs ZCBjb25jZWl2YWJseSBzdGFydCB1c2luZyBFRkkgU3lzdGVtIFBhcnRpdGlvbnMgZm9ybWF0dGVk IGFzIGV4dDQuDQoNCj4gDQo+IEFzIGZvciB0aGUgdGVzdHMsIFVFRkkgU0NUcyBhbHJlYWR5IHNl ZW0gdG8gaGF2ZSBzb21lIHRlc3RzIG9uDQo+IEVGSV9GSUxFX1BST1RPQ09MJ3MuIEZ1cnRoZXIg dGVzdGluZyBtYXkgcmVxdWlyZSBzb21lIHNvcnQgb2YgZnV6emluZywNCj4gd2hpY2ggaXMgd2hh dCBJIHdhbnQgdG8sIGFsdGhvdWdoIGluIGEgc2ltcGxpZmllZCB3YXkuIFdpdGggZnV6emluZyB3 ZSBjb3VsZA0KPiBoYW1tZXIgdGhlIGZpbGVzeXN0ZW0gY29kZSB3aXRoIGFsbCBzb3J0cyBvZiBk aWZmZXJlbnQgY2FsbHMgaW4gZGlmZmVyZW50DQo+IG9yZGVycywgd2UgY291bGQgYWxzbyBtdXRh dGUgdGhlIGRpc2sgc3RydWN0dXJlcyB0byB0ZXN0IGlmIHRoZSBkcml2ZXIgaXMgc2VjdXJlDQo+ IGFuZCBjYW4gaGFuZGxlIGNvcnJ1cHRpb24gaW4gYSBuaWNlLCBzYWZlIHdheS4gQSBmdXR1cmUg KEdTb0Mgb3Igbm90KSBwcm9qZWN0DQo+IGNvdWxkIGFsc28gYXR0ZW1wdCB0byB1c2UgY29tcGls ZXItZ2VuZXJhdGVkIGNvdmVyYWdlIGluc3RydW1lbnRhdGlvbiAoc2VlDQo+IExMVk0ncyBMaWJG dXp6ZXIgYW5kIFNhbml0aXplckNvdmVyYWdlIGZvciBhbiBleGFtcGxlKS4NCj4gDQo+IEknbSBu b3Qgc3VyZSBhYm91dCBhbGwgT1NlcywgYnV0IGF0IGxlYXN0IExpbnV4IGV4dDIvMy80IGRyaXZl cnMgYXJlIHZlcnkgcm9idXN0DQo+IGFuZCBjYW4gaGFuZGxlIGFuZCB3b3JrIGFyb3VuZCBhbnkg Y29ycnVwdGVkIEZTIEkNCj4gKGFjY2lkZW50YWxseSkgdGhyb3cgYXQgdGhlbS4gSG93ZXZlciwg cnVubmluZyBmc2NrIGlzIHRoZSBiZXN0IHdheSB0byBkZXRlY3QNCj4gY29ycnVwdGlvbjsgbm90 ZSB0aGF0IGxpY2Vuc2luZyBtYXkgYmUgYW4gaXNzdWUgYXMsIGZvciBleGFtcGxlLCBleHQ0J3Mg ZnNjayBpcw0KPiBHUEwyIGxpY2Vuc2VkLg0KPiANCj4gQmVzdCBSZWdhcmRzLA0KPiBQZWRybw0K PiANCj4gT24gVGh1LCAyMiBKdWwgMjAyMSBhdCAxNjo1OCwgQW5kcmV3IEZpc2ggPGFmaXNoQGFw cGxlLmNvbT4gd3JvdGU6DQo+ID4NCj4gPg0KPiA+DQo+ID4gT24gSnVsIDIyLCAyMDIxLCBhdCAz OjI0IEFNLCBNYXJ2aW4gSMOkdXNlciA8bWhhZXVzZXJAcG9zdGVvLmRlPiB3cm90ZToNCj4gPg0K PiA+IE9uIDIyLjA3LjIxIDAxOjEyLCBQZWRybyBGYWxjYXRvIHdyb3RlOg0KPiA+DQo+ID4gRVhU NCAoZm91cnRoIGV4dGVuZGVkIGZpbGVzeXN0ZW0pIGlzIGEgZmlsZXN5c3RlbSBkZXZlbG9wZWQg Zm9yIExpbnV4DQo+ID4gdGhhdCBoYXMgYmVlbiBpbiB3aWRlIHVzZSAoZGVza3RvcHMsIHNlcnZl cnMsIHNtYXJ0cGhvbmVzKSBzaW5jZSAyMDA4Lg0KPiA+DQo+ID4gVGhlIEV4dDRQa2cgaW1wbGVt ZW50cyB0aGUgU2ltcGxlIEZpbGUgU3lzdGVtIFByb3RvY29sIGZvciBhIHBhcnRpdGlvbg0KPiA+ IHRoYXQgaXMgZm9ybWF0dGVkIHdpdGggdGhlIEVYVDQgZmlsZSBzeXN0ZW0uIFRoaXMgYWxsb3dz IFVFRkkgRHJpdmVycywNCj4gPiBVRUZJIEFwcGxpY2F0aW9ucywgVUVGSSBPUyBMb2FkZXJzLCBh bmQgdGhlIFVFRkkgU2hlbGwgdG8gYWNjZXNzIGZpbGVzDQo+ID4gb24gYW4gRVhUNCBwYXJ0aXRp b24gYW5kIHN1cHBvcnRzIGJvb3RpbmcgYSBVRUZJIE9TIExvYWRlciBmcm9tIGFuDQo+ID4gRVhU NCBwYXJ0aXRpb24uDQo+ID4gVGhpcyBwcm9qZWN0IGlzIG9uZSBvZiB0aGUgVGlhbm9Db3JlIEdv b2dsZSBTdW1tZXIgb2YgQ29kZSBwcm9qZWN0cy4NCj4gPg0KPiA+IFJpZ2h0IG5vdywgRXh0NFBr ZyBvbmx5IGNvbnRhaW5zIGEgc2luZ2xlIG1lbWJlciwgRXh0NER4ZSwgd2hpY2ggaXMgYQ0KPiA+ IFVFRkkgZHJpdmVyIHRoYXQgY29uc3VtZXMgQmxvY2sgSS9PLCBEaXNrIEkvTyBhbmQgKG9wdGlv bmFsbHkpIERpc2sNCj4gPiBJL08gMiBQcm90b2NvbHMsIGFuZCBwcm9kdWNlcyB0aGUgU2ltcGxl IEZpbGUgU3lzdGVtIHByb3RvY29sLiBJdA0KPiA+IGFsbG93cyBtb3VudGluZyBleHQ0IGZpbGVz eXN0ZW1zIGV4Y2x1c2l2ZWx5Lg0KPiA+DQo+ID4gQnJpZWYgb3ZlcmhlYWQgb2YgRVhUNDoNCj4g PiBMYXlvdXQgb2YgYW4gRVhUMi8zLzQgZmlsZXN5c3RlbToNCj4gPiAobm90ZTogdGhpcyBkcml2 ZXIgaGFzIGJlZW4gZGV2ZWxvcGVkIHVzaW5nDQo+ID4gaHR0cHM6Ly93d3cua2VybmVsLm9yZy9k b2MvaHRtbC9sYXRlc3QvZmlsZXN5c3RlbXMvZXh0NC9pbmRleC5odG1sIGFzDQo+ID4gZG9jdW1l bnRhdGlvbikuDQo+ID4NCj4gPiBBbiBleHQyLzMvNCBmaWxlc3lzdGVtIChoZXJlIG9uIG91dCBy ZWZlcnJlZCB0byBhcyBzaW1wbHkgYW4gZXh0NA0KPiA+IGZpbGVzeXN0ZW0sIGR1ZSB0byB0aGUg c2ltaWxhcml0aWVzKSBpcyBjb21wb3NlZCBvZiB2YXJpb3VzIGNvbmNlcHRzOg0KPiA+DQo+ID4g MSkgU3VwZXJibG9jaw0KPiA+IFRoZSBzdXBlcmJsb2NrIGlzIHRoZSBzdHJ1Y3R1cmUgbmVhciAo MTAyNCBieXRlcyBvZmZzZXQgZnJvbSB0aGUNCj4gPiBzdGFydCkgdGhlIHN0YXJ0IG9mIHRoZSBw YXJ0aXRpb24sIGFuZCBkZXNjcmliZXMgdGhlIGZpbGVzeXN0ZW0gaW4gZ2VuZXJhbC4NCj4gPiBI ZXJlLCB3ZSBnZXQgdG8ga25vdyB0aGUgc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbSdzIGJsb2Nrcywg d2hpY2gNCj4gPiBmZWF0dXJlcyBpdCBzdXBwb3J0cyBvciBub3QsIHdoZXRoZXIgaXQncyBiZWVu IGNsZWFubHkgdW5tb3VudGVkLCBob3cNCj4gPiBtYW55IGJsb2NrcyB3ZSBoYXZlLCBldGMuDQo+ ID4NCj4gPiAyKSBCbG9jayBncm91cHMNCj4gPiBFWFQ0IGZpbGVzeXN0ZW1zIGFyZSBkaXZpZGVk IGludG8gYmxvY2sgZ3JvdXBzLCBhbmQgZWFjaCBibG9jayBncm91cA0KPiA+IGNvdmVycw0KPiA+ IHNfYmxvY2tzX3Blcl9ncm91cCg4ICogQmxvY2sgU2l6ZSkgYmxvY2tzLiBFYWNoIGJsb2NrIGdy b3VwIGhhcyBhbg0KPiA+IGFzc29jaWF0ZWQgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcjsgdGhlc2Ug YXJlIHByZXNlbnQgZGlyZWN0bHkgYWZ0ZXINCj4gPiB0aGUgc3VwZXJibG9jay4gRWFjaCBibG9j ayBncm91cCBkZXNjcmlwdG9yIGNvbnRhaW5zIHRoZSBsb2NhdGlvbiBvZg0KPiA+IHRoZSBpbm9k ZSB0YWJsZSwgYW5kIHRoZSBpbm9kZSBhbmQgYmxvY2sgYml0bWFwcyAobm90ZSB0aGVzZSBiaXRt YXBzDQo+ID4gYXJlIG9ubHkgYSBibG9jayBsb25nLCB3aGljaCBnZXRzIHVzIHRoZSA4ICogQmxv Y2sgU2l6ZSBmb3JtdWxhIGNvdmVyZWQNCj4gcHJldmlvdXNseSkuDQo+ID4NCj4gPiAzKSBCbG9j a3MNCj4gPiBUaGUgZXh0NCBmaWxlc3lzdGVtIGlzIGRpdmlkZWQgaW50byBibG9ja3MsIG9mIHNp emUgc19sb2dfYmxvY2tfc2l6ZSBeIDEwMjQuDQo+ID4gQmxvY2tzIGNhbiBiZSBhbGxvY2F0ZWQg dXNpbmcgaW5kaXZpZHVhbCBibG9jayBncm91cHMncyBiaXRtYXBzLiBOb3RlDQo+ID4gdGhhdCBi bG9jayAwIGlzIGludmFsaWQgYW5kIGl0cyBwcmVzZW5jZSBvbiBleHRlbnRzL2Jsb2NrIHRhYmxl cyBtZWFucw0KPiA+IGl0J3MgcGFydCBvZiBhIGZpbGUgaG9sZSwgYW5kIHRoYXQgcGFydGljdWxh ciBsb2NhdGlvbiBtdXN0IGJlIHJlYWQgYXMNCj4gPiBhIGJsb2NrIGZ1bGwgb2YgemVyb3MuDQo+ ID4NCj4gPiA0KSBJbm9kZXMNCj4gPiBUaGUgZXh0NCBmaWxlc3lzdGVtIGRpdmlkZXMgZmlsZXMv ZGlyZWN0b3JpZXMgaW50byBpbm9kZXMgKG9yaWdpbmFsbHkNCj4gPiBpbmRleCBub2RlcykuIEVh Y2ggZmlsZS9zb2NrZXQvc3ltbGluay9kaXJlY3RvcnkvZXRjIChoZXJlIG9uIG91dA0KPiA+IHJl ZmVycmVkIHRvIGFzIGEgZmlsZSwgc2luY2UgdGhlcmUgaXMgbm8gZGlzdGluY3Rpb24gdW5kZXIg dGhlIGV4dDQNCj4gPiBmaWxlc3lzdGVtKSBpcyBzdG9yZWQgYXMgYSAvbmFtZWxlc3MvIGlub2Rl LCB0aGF0IGlzIHN0b3JlZCBpbiBzb21lDQo+ID4gYmxvY2sgZ3JvdXAncyBpbm9kZSB0YWJsZS4g RWFjaCBpbm9kZSBoYXMgc19pbm9kZV9zaXplIHNpemUgKG9yDQo+ID4gR09PRF9PTERfSU5PREVf U0laRSBpZiBpdCdzIGFuIG9sZCBmaWxlc3lzdGVtKSwgYW5kIGhvbGRzIHZhcmlvdXMNCj4gPiBt ZXRhZGF0YSBhYm91dCB0aGUgZmlsZS4gU2luY2UgdGhlIGxhcmdlc3QgaW5vZGUgc3RydWN0dXJl IHJpZ2h0IG5vdw0KPiA+IGlzIH4xNjAgYnl0ZXMsIHRoZSByZXN0IG9mIHRoZSBpbm9kZSBjb250 YWlucyBpbmxpbmUgZXh0ZW5kZWQNCj4gPiBhdHRyaWJ1dGVzLiBJbm9kZXMnIGRhdGEgaXMgc3Rv cmVkIHVzaW5nIGVpdGhlciBkYXRhIGJsb2NrcyAodW5kZXIgZXh0Mi8zKSBvcg0KPiBleHRlbnRz ICh1bmRlciBleHQ0KS4NCj4gPg0KPiA+IDUpIEV4dGVudHMNCj4gPiBFeHQ0IGlub2RlcyBzdG9y ZSBkYXRhIGluIGV4dGVudHMuIFRoZXNlIGxldCBOIGNvbnRpZ3VvdXMgbG9naWNhbA0KPiA+IGJs b2NrcyB0aGF0IGFyZSByZXByZXNlbnRlZCBieSBOIGNvbnRpZ3VvdXMgcGh5c2ljYWwgYmxvY2tz IGJlDQo+ID4gcmVwcmVzZW50ZWQgYnkgYSBzaW5nbGUgZXh0ZW50IHN0cnVjdHVyZSwgd2hpY2gg bWluaW1pemVzIGZpbGVzeXN0ZW0NCj4gPiBtZXRhZGF0YSBibG9hdCBhbmQgc3BlZWRzIHVwIGJs b2NrIG1hcHBpbmcgKHBhcnRpY3VsYXJseSBkdWUgdG8gdGhlDQo+ID4gZmFjdCB0aGF0IGhpZ2gt cXVhbGl0eQ0KPiA+IGV4dDQgaW1wbGVtZW50YXRpb25zIGxpa2UgbGludXgncyB0cnkgL3JlYWxs eS8gaGFyZCB0byBtYWtlIHRoZSBmaWxlDQo+ID4gY29udGlndW91cywgc28gaXQncyBjb21tb24g dG8gaGF2ZSBmaWxlcyB3aXRoIGFsbW9zdCAwIGZyYWdtZW50YXRpb24pLg0KPiA+IElub2RlcyB0 aGF0IHVzZSBleHRlbnRzIHN0b3JlIHRoZW0gaW4gYSB0cmVlLCBhbmQgdGhlIHRvcCBvZiB0aGUg dHJlZQ0KPiA+IGlzIHN0b3JlZCBvbiBpX2RhdGEuIFRoZSB0cmVlJ3MgbGVhdmVzIGFsd2F5cyBz dGFydCB3aXRoIGFuDQo+ID4gRVhUNF9FWFRFTlRfSEVBREVSIGFuZCBjb250YWluIEVYVDRfRVhU RU5UX0lOREVYIG9uIGVoX2RlcHRoICE9IDANCj4gYW5kDQo+ID4gRVhUNF9FWFRFTlQgb24gZWhf ZGVwdGggPSAwOyB0aGVzZSBlbnRyaWVzIGFyZSBhbHdheXMgc29ydGVkIGJ5DQo+ID4gbG9naWNh bCBibG9jay4NCj4gPg0KPiA+IDYpIERpcmVjdG9yaWVzDQo+ID4gRXh0NCBkaXJlY3RvcmllcyBh cmUgZmlsZXMgdGhhdCBzdG9yZSBuYW1lIC0+IGlub2RlIG1hcHBpbmdzIGZvciB0aGUNCj4gPiBs b2dpY2FsIGRpcmVjdG9yeTsgdGhpcyBpcyB3aGVyZSBmaWxlcyBnZXQgdGhlaXIgbmFtZXMsIHdo aWNoIG1lYW5zDQo+ID4gZXh0NCBpbm9kZXMgZG8gbm90IHRoZW1zZWx2ZXMgaGF2ZSBuYW1lcywg c2luY2UgdGhleSBjYW4gYmUgbGlua2VkDQo+ID4gKHByZXNlbnQpIG11bHRpcGxlIHRpbWVzIHdp dGggZGlmZmVyZW50IG5hbWVzLiBEaXJlY3RvcmllcyBjYW4gc3RvcmUNCj4gPiBlbnRyaWVzIGlu IHR3byBkaWZmZXJlbnQgd2F5czoNCj4gPiAxKSBDbGFzc2ljYWwgbGluZWFyIGRpcmVjdG9yaWVz OiBUaGV5IHN0b3JlIGVudHJpZXMgYXMgYSBtb3N0bHktbGlua2VkDQo+ID4gbW9zdGx5LWxpc3Qg b2YgRVhUNF9ESVJfRU5UUlkuDQo+ID4gMikgSGFzaCB0cmVlIGRpcmVjdG9yaWVzOiBUaGVzZSBh cmUgdXNlZCBmb3IgbGFyZ2VyIGRpcmVjdG9yaWVzLCB3aXRoDQo+ID4gaHVuZHJlZHMgb2YgZW50 cmllcywgYW5kIGFyZSBkZXNpZ25lZCBpbiBhIGJhY2t3YXJkcy1jb21wYXRpYmxlIHdheS4NCj4g PiBUaGVzZSBhcmUgbm90IHlldCBpbXBsZW1lbnRlZCBpbiB0aGUgRXh0NER4ZSBkcml2ZXIuDQo+ ID4NCj4gPiA3KSBKb3VybmFsDQo+ID4gRXh0My80IGZpbGVzeXN0ZW1zIGhhdmUgYSBqb3VybmFs IHRvIGhlbHAgcHJvdGVjdCB0aGUgZmlsZXN5c3RlbQ0KPiA+IGFnYWluc3Qgc3lzdGVtIGNyYXNo ZXMuIFRoaXMgaXMgbm90IHlldCBpbXBsZW1lbnRlZCBpbiBFeHQ0RHhlIGJ1dCBpcw0KPiA+IGRl c2NyaWJlZCBpbiBkZXRhaWwgaW4gdGhlIExpbnV4IGtlcm5lbCdzIGRvY3VtZW50YXRpb24uDQo+ ID4NCj4gPiBUaGUgRURLMiBpbXBsZW1lbnRhdGlvbiBvZiBleHQ0IGlzIGJhc2VkIG9ubHkgb24g dGhlIHB1YmxpYw0KPiA+IGRvY3VtZW50YXRpb24gYXZhaWxhYmxlIGF0DQo+ID4gaHR0cHM6Ly93 d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3QvZmlsZXN5c3RlbXMvZXh0NC9pbmRleC5odG1s DQo+ID4gYW5kDQo+ID4gdGhlIEZyZWVCU0QgZXh0MmZzIGRyaXZlciAoYXZhaWxhYmxlIGF0DQo+ ID4gaHR0cHM6Ly9naXRodWIuY29tL2ZyZWVic2QvZnJlZWJzZC1zcmMvdHJlZS9tYWluL3N5cy9m cy9leHQyZnMsDQo+ID4gQlNELTItQ2xhdXNlLUZyZWVCU0QgbGljZW5zZWQpLiBJdCBpcyBsaWNl bnNlZCBhcw0KPiA+IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50 Lg0KPiA+DQo+ID4gQWZ0ZXIgYSBicmllZiBkaXNjdXNzaW9uIHdpdGggdGhlIGNvbW11bml0eSwg dGhlIHByb3Bvc2VkIHBhY2thZ2UNCj4gPiBsb2NhdGlvbiBpcyBlZGsyLXBsYXRmb3JtL0ZlYXR1 cmVzL0V4dDRQa2cgKHJlbGV2YW50IGRpc2N1c3Npb246DQo+ID4gaHR0cHM6Ly9lZGsyLmdyb3Vw cy5pby9nL2RldmVsL3RvcGljLzgzMDYwMTg1KS4NCj4gPg0KPiA+IEkgd2FzIHRoZSBtYWluIGNv bnRyaWJ1dG9yIGFuZCBJIHdvdWxkIGxpa2UgdG8gbWFpbnRhaW4gdGhlIHBhY2thZ2UgaW4NCj4g PiB0aGUgZnV0dXJlLCBpZiBwb3NzaWJsZS4NCj4gPg0KPiA+DQo+ID4gV2hpbGUgSSBwZXJzb25h bGx5IGRvbid0IGxpa2UgaXQncyBvdXRzaWRlIG9mIHRoZSBFREsgSUkgY29yZSwgSSBraW5kIG9m IGdldCBpdC4NCj4gSG93ZXZlciBJIHdvdWxkIHN0cm9uZ2x5IHN1Z2dlc3QgdG8gY2hvb3NlIGEg bW9yZSBnZW5lcmFsIHBhY2thZ2UgbmFtZSwNCj4gbGlrZSAiTGludXhGc1BrZyIsIG9yICJOaXhG c1BrZyIsIG9yIG1heWJlIGV2ZW4ganVzdCAiRmlsZVN5c3RlbVBrZyIgKGFuZA0KPiBtb3ZlIEZB VCBvdmVyIHNvbWUgZGF5PykuIEltYWdpbmUgc29tZW9uZSB3YW50cyB0byBpbXBvcnQgQlRSRlMg bmV4dA0KPiB5ZWFyLCBzaG91bGQgaXQgcmVhbGx5IGJlICJCdHJmc1BrZyI/IEkgdW5kZXJzdGFu ZCBpdCBmb2xsb3dzIHRoZSAiRmF0UGtnIg0KPiBjb252ZW50aW9uLCBidXQgSSBmZWVsIGxpa2Ug cGVvcGxlIGZvcmdldCBGYXRQa2cgd2FzIHNwZWNpYWwgYXMgdG8gaXRzIGF3a3dhcmQNCj4gbGlj ZW5zZSBiZWZvcmUgTWljcm9zb2Z0IGFsbG93ZWQgYSBjaGFuZ2UgYSBmZXcgeWVhcnMgYWdvLiBN YWludGFpbmVycy50eHQNCj4gYWxyZWFkeSBoYXMgdGhlIGNvbmNlcHQgb2YgZGlmZmVyZW50IFJl dmlld2VycyBwZXIgc3ViZm9sZGVyLCBtYXliZSBpdCBjb3VsZA0KPiBiZSBleHRlbmRlZCBhIGxp dHRsZSB0byBoYXZlIGEgY29tbW9uIEVESyBJSSBjb250cmlidXRvciB0byBvZmZpY2lhbGx5IG1h aW50YWluDQo+IHRoZSBwYWNrYWdlLCBidXQgaGF2ZSB5b3UgYmUgYSBNYWludGFpbmVyIG9yIHNv bWV0aGluZyBsaWtlIGEgUmV2aWV3ZXIrIHRvDQo+IHlvdXIgZHJpdmVyPyBPciB5b3UgY291bGQg bWFpbnRhaW4gdGhlIGVudGlyZSBwYWNrYWdlIG9mIGNvdXJzZS4NCj4gPg0KPiA+DQo+ID4gTWFy dmluLA0KPiA+DQo+ID4gR29vZCBwb2ludCB0aGF0IHRoZSBGYXRQa2cgd2FzIG1vcmUgYWJvdXQg bGljZW5zZSBib3VuZGFyeSB0aGFuDQo+IGFueXRoaW5nIGVsc2UsIHNvIEnigJltIG5vdCBvcHBv c2VkIHRvIGEgbW9yZSBnZW5lcmljIHBhY2thZ2UgbmFtZS4NCj4gPg0KPiA+IEN1cnJlbnQgbGlt aXRhdGlvbnM6DQo+ID4gMSkgVGhlIEV4dDREeGUgZHJpdmVyIGlzLCBhdCB0aGUgbW9tZW50LCBy ZWFkLW9ubHkuDQo+ID4gMikgVGhlIEV4dDREeGUgZHJpdmVyIGF0IHRoZSBtb21lbnQgY2Fubm90 IG1vdW50IG9sZGVyIChleHQyLzMpDQo+ID4gZmlsZXN5c3RlbXMuIEVuc3VyaW5nIGNvbXBhdGli aWxpdHkgd2l0aCB0aG9zZSBtYXkgbm90IGJlIGEgYmFkIGlkZWEuDQo+ID4NCj4gPiBJIGludGVu ZCB0byB0ZXN0IHRoZSBwYWNrYWdlIHVzaW5nIHRoZSBVRUZJIFNDVHMgcHJlc2VudCBpbiBlZGsy LXRlc3QsDQo+ID4gYW5kIGltcGxlbWVudCBhbnkgb3RoZXIgbmVlZGVkIHVuaXQgdGVzdHMgbXlz ZWxmIHVzaW5nIHRoZSBhbHJlYWR5DQo+ID4gYXZhaWxhYmxlIHVuaXQgdGVzdCBmcmFtZXdvcmsu IEkgYWxzbyBpbnRlbmQgdG8gKHByaXZhdGVseSkgZnV6eiB0aGUNCj4gPiBVRUZJIGRyaXZlciB3 aXRoIGJhZC91bnVzdWFsIGRpc2sgaW1hZ2VzLCB0byBpbXByb3ZlIHRoZSBzZWN1cml0eSBhbmQN Cj4gPiByZWxpYWJpbGl0eSBvZiB0aGUgZHJpdmVyLg0KPiA+DQo+ID4gSW4gdGhlIGZ1dHVyZSwg ZXh0NCB3cml0ZSBzdXBwb3J0IHNob3VsZCBiZSBhZGRlZCBzbyBlZGsyIGhhcyBhDQo+ID4gZnVs bHktZmVhdHVyZWQgUlcgZXh0NCBkcml2ZXIuIFRoZXJlIGNvdWxkIGFsc28gYmUgYSBmb2N1cyBv bg0KPiA+IHN1cHBvcnRpbmcgdGhlIG9sZGVyIGV4dDQtbGlrZSBmaWxlc3lzdGVtcywgYXMgSSBt ZW50aW9uZWQgaW4gdGhlDQo+ID4gbGltaXRhdGlvbnMsIGJ1dCB0aGF0IGlzIG9wZW4gZm9yIGRp c2N1c3Npb24uDQo+ID4NCj4gPg0KPiA+IEkgbWF5IGJlIGFsb25lLCBidXQgSSBzdHJvbmdseSBv YmplY3QuIE9uZSBvZiBvdXIgcHJvamVjdHMgKE9wZW5Db3JlKSBoYXMgYQ0KPiBkaXNndXN0aW5n IHdheSBvZiB3cml0aW5nIGZpbGVzIGJlY2F1c2UgdGhlIEZBVDMyIGRyaXZlciBpbiBBcHRpbyBJ ViBmaXJtd2FyZXMNCj4gbWF5IGNvcnJ1cHQgdGhlIGZpbGVzeXN0ZW0gd2hlbiByZXNpemluZyBm aWxlcy4gVG8gYmUgaG9uZXN0LCBpdCBtYXkgY29ycnVwdA0KPiB3aXRoIG90aGVyIHVzYWdlcyB0 b28gYW5kIHdlIG5ldmVyIG5vdGljZWQsIGJlY2F1c2UgYmFzaWNhbGx5IHdlIHdyb3RlIHRoZQ0K PiBjb2RlIHRvIHJlcXVpcmUgdGhlIGxlYXN0IGFtb3VudCBvZiAoY29tcGxleCkgRlMgb3BlcmF0 aW9ucy4NCj4gPg0KPiA+IFRoZSBpc3N1ZSB3aXRoIEVESyBJSSBpcywgdGhlcmUgaXMgYSBsb3Qg b2Ygb3duIGNvZGUgYW5kIGEgbG90IG9mIHVzZXJzLCBidXQNCj4gbGl0dGxlIHRlc3RpbmcuIEJ5 IHRoYXQgSSBkbyBub3QgbWVhbiB0aGF0IGRldmVsb3BlcnMgZG8gbm90IHRlc3QgdGhlaXIgY29k ZSwNCj4gYnV0IHRoYXQgbm9ib2R5IHNpdHMgZG93biBhbmQgcGVyZm9ybXMgYWxsIHNvcnRzIG9m IEZTIG1hbmlwdWxhdGlvbnMgaW4gYWxsDQo+IHNvcnRzIG9mIG9yZGVycyBhbmQgY2xvc2VseSBv YnNlcnZlcyB0aGUgcmVzdWx0IGZvciByZWdyZXNzaW9uLXRlc3RpbmcuIFVzZXJzDQo+IHdpbGwg bm90IHJlYWxseSB0ZXN0IGl0IGVpdGhlciwgYXMgVUVGSSB0byB0aGVtIHNob3VsZCBqdXN0IHNv bWVob3cgYm9vdCB0bw0KPiBXaW5kb3dzLiBJZiBhdCBsZWFzdCB0aGUgY29kZSB3YXMgc2hhcmVk IHdpdGggYSBjb2RlYmFzZSB0aGF0IGlzIGtub3duLQ0KPiB0cnVzdGVkIChlLmcuIHRoZSBMaW51 eCBrZXJuZWwgaXRzZWxmKSwgdGhhdCdkIGJlIG11Y2ggZWFzaWVyIHRvIHRydXN0LCBidXQNCj4g cmVhbGlzdGljYWxseSB0aGlzIGlzIG5vdCBnb2luZyB0byBoYXBwZW4uDQo+ID4gTXkgcG9pbnQg aXMsIGlmIGEgY29tcGFueSBsaWtlIEFNSSBjYW5ub3QgZ3VhcmFudGVlIHdyaXRpbmcgZG9lcyBu b3QNCj4gZGFtYWdlIHRoZSBGUyBmb3IgYSB2ZXJ5IHNpbXBsZSBGUywgaG93IGRvIHlvdSBwbGFu IHRvIGd1YXJhbnRlZSB5b3Vycw0KPiBkb2Vzbid0IGZvciBhIG11Y2ggbW9yZSBjb21wbGV4IEZT PyBJJ2QgcmF0aGVyIGhhdmUgb25seSBvbmUgc2ltcGxlIEZTIHR5cGUNCj4gdGhhdCBzdXBwb3J0 cyB3cml0aW5nIGZvciBtb3N0IHVzZS1jYXNlcyAoZS5nLiBsb2dnaW5nKS4NCj4gPg0KPiA+IEF0 IHRoZSB2ZXJ5IGxlYXN0IEkgd291bGQgYmVnIHlvdSB0byBoYXZlIGEgUENEIHRvIHR1cm4gd3Jp dGUgc3VwcG9ydA0KPiA+IG9mZiAtIGlmIGl0IHdpbGwgYmUgb2ZmIGJ5IGRlZmF1bHQsIHRoYXQn ZCBiZSBncmVhdCBvZiBjb3Vyc2UuIDopIFdhcyB0aGVyZSBhbnkNCj4gZGlzY3Vzc2lvbiB5ZXQg YXMgdG8gd2h5IHdyaXRlIHN1cHBvcnQgaXMgbmVlZGVkIGluIHRoZSBmaXJzdCBwbGFjZSB5b3Ug Y291bGQNCj4gcG9pbnQgbWUgdG8/DQo+ID4NCj4gPg0KPiA+IEkgdGhpbmsgaGF2aW5nIGEgZGVm YXVsdCBQQ0Qgb3B0aW9uIG9mIHJlYWQgb25seSBpcyBhIGdvb2QgaWRlYS4NCj4gPg0KPiA+IEVG SSBvbiBNYWMgY2FycmllcyBIRlMrIGFuZCBBUEZTIEVGSSBmaWxlIHN5c3RlbSBkcml2ZXJzIGFu ZCBib3RoIG9mIHRob3NlDQo+IGFyZSByZWFkIG9ubHkgZm9yIHNhZmV0eSwgc2VjdXJpdHksIGFu ZCB0byBhdm9pZCB0aGUgbmVlZCB0byB2YWxpZGF0ZSB0aGVtLiBTbyBJDQo+IHRoaW5rIHNvbWUg cHJvZHVjdHMgbWF5IHdhbnQgdG8gaGF2ZSB0aGUgb3B0aW9uIHRvIHNoaXAgcmVhZCBvbmx5IHZl cnNpb25zDQo+IG9mIHRoZSBmaWxlIHN5c3RlbS4NCj4gPg0KPiA+IFNlZW1zIGxpa2UgaGF2aW5n IEVGSSBiYXNlIGZpbGUgc3lzdGVtIHRlc3RzIHdvdWxkIGJlIHVzZWZ1bC4gSeKAmWQgaW1hZ2lu Zw0KPiB3aXRoIE9WTUYgaXQgd291bGQgYmUgcG9zc2libGUgdG8gaW1wbGVtZW50IGEgdmVyeSBy b2J1c3QgdGVzdA0KPiBpbmZyYXN0cnVjdHVyZS4gU2VlbXMgbGlrZSB0aGUgaGFyZCBiaXRzIHdv dWxkIGJlIGdlbmVyYXRpbmcgdGhlIHRlc3QgY2FzZXMNCj4gYW5kIGZpZ3VyaW5nIG91dCBob3cg dG8gdmFsaWRhdGUgdGhlIHRlc3RzIGRpZCB0aGUgY29ycmVjdCB0aGluZy4gSeKAmW0gZ3Vlc3Mg dGhlDQo+IE9TIGJhc2VkIGZpbGUgc3lzdGVtIGRyaXZlcnMgYXJlIHJvYnVzdCBhbmQgdHJ5IHRv IHdvcmsgYXJvdW5kIGJ1Z3MNCj4gZ3JhY2VmdWxseT8gTWF5YmUgdGhlcmUgaXMgYSB3YXkgdG8g dHVybiBvbiBPUyBsb2dnaW5nLCBvciBldmVuIHJ1biBhbiBPUw0KPiBiYXNlZCBmc2NrIG9uIHRo ZSB2b2x1bWUgYWZ0ZXIgdGhlIHRlc3RzIGNvbXBsZXRlLiBSZWdhcmRsZXNzIHRoaXMgc2VlbXMN Cj4gbGlrZSBhbiBpbnRlcmVzdGluZyBwcm9qZWN0LCBtYXliZSB3ZSBjYW4gYWRkIGl0IHRvIG5l eHQgeWVhcnMgR1NvQz8NCj4gPg0KPiA+IFRoYW5rcywNCj4gPg0KPiA+IEFuZHJldyBGaXNoDQo+ ID4NCj4gPiBUaGFua3MgZm9yIHlvdXIgd29yayENCj4gPg0KPiA+IEJlc3QgcmVnYXJkcywNCj4g PiBNYXJ2aW4NCj4gPg0KPiA+IFRoZSBkcml2ZXIncyBoYW5kbGluZyBvZiB1bmNsZWFuIHVubW91 bnRpbmcgdGhyb3VnaCBmb3JjZWQgc2h1dGRvd24gaXMNCj4gdW5jbGVhci4NCj4gPiBJcyB0aGVy ZSBhIHBvc2l0aW9uIGluIGVkazIgb24gaG93IHRvIGhhbmRsZSBzdWNoIGNhc2VzPyBJIGRvbid0 IHRoaW5rDQo+ID4gRkFUMzIgaGFzIGEgInRoaXMgZmlsZXN5c3RlbSBpcy93YXMgZGlydHkiIGFu ZCBldmVuIHRob3VnaCBpdCBzZWVtcyB0bw0KPiA+IG1lIHRoYXQgc3RvcHBpbmcgYSBzeXN0ZW0g ZnJvbSBib290aW5nL29wZW5pbmcgdGhlIHBhcnRpdGlvbiBiZWNhdXNlDQo+ID4gIndlIG1heSBm aW5kIHNvbWUgdGlueSBpcnJlZ3VsYXJpdGllcyIgaXMgbm90IHRoZSBiZXN0IGNvdXJzZSBvZg0K PiA+IGFjdGlvbiwgSSBjYW4ndCBmaW5kIGEgY2xlYXIgYW5zd2VyLg0KPiA+DQo+ID4gVGhlIGRy aXZlciBhbHNvIGhhZCB0byBhZGQgaW1wbGVtZW50YXRpb25zIG9mIENSQzMyQyBhbmQgQ1JDMTYs IGFuZA0KPiA+IGFmdGVyIHRhbGtpbmcgd2l0aCBteSBtZW50b3Igd2UgcXVpY2tseSByZWFjaGVk IHRoZSBjb25jbHVzaW9uIHRoYXQNCj4gPiB0aGVzZSBtYXkgYmUgZ29vZCBjYW5kaWRhdGVzIGZv ciBpbmNsdXNpb24gaW4gTWRlUGtnLiBXZSBhbHNvDQo+ID4gZGlzY3Vzc2VkIG1vdmluZyB0aGUg VWNzMiA8LT4gVXRmOCBjb252ZXJzaW9uIGxpYnJhcnkgaW4gUmVkZmlzaFBrZw0KPiA+IChCYXNl VWNzMlV0ZjhMaWIpIGludG8gTWRlUGtnIGFzIHdlbGwuIEFueSBjb21tZW50cz8NCj4gPg0KPiA+ IEZlZWwgZnJlZSB0byBhc2sgYW55IHF1ZXN0aW9ucyB5b3UgbWF5IGZpbmQgcmVsZXZhbnQuDQo+ ID4NCj4gPiBCZXN0IFJlZ2FyZHMsDQo+ID4NCj4gPiBQZWRybyBGYWxjYXRvDQo+ID4NCj4gPg0K PiA+DQo+ID4NCj4gPg0KPiA+DQo+ID4NCj4gPg0KPiA+DQo+ID4NCj4gDQo+IA0KPiAtLQ0KPiBQ ZWRybyBGYWxjYXRvDQo+IA0KPiANCj4gDQo+IA0KDQo=