From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B187DD42BA5 for ; Tue, 12 Nov 2024 16:22:15 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 7095810E607; Tue, 12 Nov 2024 16:22:15 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="X1IZgNJq"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.18]) by gabe.freedesktop.org (Postfix) with ESMTPS id 026D410E08B; Tue, 12 Nov 2024 16:22:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1731428534; x=1762964534; h=message-id:subject:from:to:cc:date:in-reply-to: references:content-transfer-encoding:mime-version; bh=AymdlMMpEquSCAzebkWHUl4/xgcvvsAF4A0OR0YprLk=; b=X1IZgNJqUJtEbzgakG31QKHa4ubSiZiZzPV5oSgBruAPVKeGYdJd2VE/ P4c0yTr01uLGFVIpajUXCYh5iVuHt4tmTtWCX7GgH/gic9THL3lp26d4v lVgfnBtMMzUjlV8HD1CihQjt9Sjlece1znNorR32+oU/146CgdTrM8ljY giPEHQfLdcshWtc26yT0Lm7CXuZcpg1CVbE5WQ5wMUAoxN6Jkj8gPVr3m tnE5DcFd/ylhQXAEUER1GBT2X37y+hHI5aMY28buSkxyULZQAqvZ4tDFW r0dfhETka5SYqbrCoZdrrcVx2dHaUML49Ct76nzIjBTFt6gbxDD+xXBVd A==; X-CSE-ConnectionGUID: 2KaXcfAXQ3ax24ESJbeM3Q== X-CSE-MsgGUID: 64MsV8rSQByfkIQgyHbljA== X-IronPort-AV: E=McAfee;i="6700,10204,11222"; a="31444690" X-IronPort-AV: E=Sophos;i="6.11,199,1725346800"; d="scan'208";a="31444690" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa110.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Nov 2024 08:22:13 -0800 X-CSE-ConnectionGUID: iRu8V+p2RkyFtl9HyDRsPA== X-CSE-MsgGUID: fxezwbouQHCGWNcRo+G2VA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.12,148,1728975600"; d="scan'208";a="92617767" Received: from klitkey1-mobl1.ger.corp.intel.com (HELO [10.245.246.123]) ([10.245.246.123]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Nov 2024 08:22:11 -0800 Message-ID: <27f8bd540ac1f04daf8a7786f4ae7828017d061b.camel@linux.intel.com> Subject: Re: [PATCH v6 2/8] drm/ttm: Add ttm_bo_access From: Thomas =?ISO-8859-1?Q?Hellstr=F6m?= To: Joonas Lahtinen , Christian =?ISO-8859-1?Q?K=F6nig?= , Christian =?ISO-8859-1?Q?K=F6nig?= , Matthew Brost Cc: Simona Vetter , Rodrigo Vivi , Huang Rui , intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org, matthew.auld@intel.com, David Airlie , Simona Vetter Date: Tue, 12 Nov 2024 17:22:07 +0100 In-Reply-To: <173141886970.132411.13400253861916730373@jlahtine-mobl.ger.corp.intel.com> References: <88ceb558-89d1-4d10-be8a-9ce2f3178fa5@amd.com> <85859dc3-cca3-4396-8c75-a726437fb81e@amd.com> <173131201749.35893.6727423786823542880@jlahtine-mobl.ger.corp.intel.com> <173133360247.70529.14349388659124962988@jlahtine-mobl.ger.corp.intel.com> <8d181425-db3b-46b7-ae73-ae6ef149d185@amd.com> <31b16d78-708d-4f19-9b33-891e31be5480@gmail.com> <173141886970.132411.13400253861916730373@jlahtine-mobl.ger.corp.intel.com> Autocrypt: addr=thomas.hellstrom@linux.intel.com; prefer-encrypt=mutual; keydata=mDMEZaWU6xYJKwYBBAHaRw8BAQdAj/We1UBCIrAm9H5t5Z7+elYJowdlhiYE8zUXgxcFz360SFRob21hcyBIZWxsc3Ryw7ZtIChJbnRlbCBMaW51eCBlbWFpbCkgPHRob21hcy5oZWxsc3Ryb21AbGludXguaW50ZWwuY29tPoiTBBMWCgA7FiEEbJFDO8NaBua8diGTuBaTVQrGBr8FAmWllOsCGwMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQuBaTVQrGBr/yQAD/Z1B+Kzy2JTuIy9LsKfC9FJmt1K/4qgaVeZMIKCAxf2UBAJhmZ5jmkDIf6YghfINZlYq6ixyWnOkWMuSLmELwOsgPuDgEZaWU6xIKKwYBBAGXVQEFAQEHQF9v/LNGegctctMWGHvmV/6oKOWWf/vd4MeqoSYTxVBTAwEIB4h4BBgWCgAgFiEEbJFDO8NaBua8diGTuBaTVQrGBr8FAmWllOsCGwwACgkQuBaTVQrGBr/P2QD9Gts6Ee91w3SzOelNjsus/DcCTBb3fRugJoqcfxjKU0gBAKIFVMvVUGbhlEi6EFTZmBZ0QIZEIzOOVfkaIgWelFEH Organization: Intel Sweden AB, Registration Number: 556189-6027 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.50.4 (3.50.4-3.fc39) MIME-Version: 1.0 X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" T24gVHVlLCAyMDI0LTExLTEyIGF0IDE1OjQxICswMjAwLCBKb29uYXMgTGFodGluZW4gd3JvdGU6 Cj4gKCsgVGhvbWFzKQo+IAo+IFF1b3RpbmcgQ2hyaXN0aWFuIEvDtm5pZyAoMjAyNC0xMS0xMiAx MToyMzozNikKPiA+IEFtIDExLjExLjI0IHVtIDIzOjQ1IHNjaHJpZWIgTWF0dGhldyBCcm9zdDoK PiA+IAo+ID4gwqDCoMKgIFtTTklQXQo+ID4gCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNv IEkgdGhpbmsgb25seSB3YXkgdG8gYWxsb3cgaW50ZXJhY3RpdmUgZGVidWdnaW5nIGlzCj4gPiB0 byBhdm9pZCB0aGUKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZG1hX2ZlbmNlcy4gQ3VyaW91 cyB0byBoZWFyIGlmIHRoZXJlIGFyZSBpZGVhcyBmb3IKPiA+IG90aGVyd2lzZS4KPiA+IAo+ID4g wqDCoMKgwqDCoMKgwqAgWW91IG5lZWQgdG8gZ3VhcmFudGVlIHNvbWVob3cgdGhhdCB0aGUgcHJv Y2VzcyBpcyB0YWtlbgo+ID4gZnJvbSB0aGUgaGFyZHdhcmUgc28KPiA+IMKgwqDCoMKgwqDCoMKg IHRoYXQgdGhlIHByZWVtcHRpb24gZmVuY2UgY2FuIHNpZ25hbC4KPiA+IAo+ID4gCj4gPiDCoMKg wqAgT3VyIHByZWVtcHRpb24gZmVuY2VzIGhhdmUgdGhpcyBmdW5jdGlvbmFsaXR5Lgo+ID4gCj4g PiDCoMKgwqAgQSBwcmVlbXB0aW9uIGZlbmNlIGlzc3VlcyBhIHN1c3BlbmQgZXhlY3V0aW9uIGNv bW1hbmQgdG8gdGhlCj4gPiBmaXJtd2FyZS4gVGhlCj4gPiDCoMKgwqAgZmlybXdhcmUsIGluIHR1 cm4sIGF0dGVtcHRzIHRvIHByZWVtcHQgdGhlIHdvcmtsb2FkLiBJZiBpdAo+ID4gZG9lc24ndCBy ZXNwb25kCj4gPiDCoMKgwqAgd2l0aGluIGEgc3BlY2lmaWVkIHBlcmlvZCwgaXQgcmVzZXRzIHRo ZSBoYXJkd2FyZSBxdWV1ZSwgc2VuZHMKPiA+IGEgbWVzc2FnZSB0byBLTUQsCj4gPiDCoMKgwqAg YmFucyB0aGUgc29mdHdhcmUgcXVldWUsIGFuZCBzaWduYWxzIHRoZSBwcmVlbXB0aW9uIGZlbmNl Lgo+ID4gCj4gPiDCoMKgwqAgV2UgcHJvdmlkZSBldmVuIG1vcmUgcHJvdGVjdGlvbiB0aGFuIHRo YXQuIElmLCBmb3Igc29tZSByZWFzb24sCj4gPiB0aGUgZmlybXdhcmUKPiA+IMKgwqDCoCBkb2Vz bid0IHJlc3BvbmQgd2l0aGluIGEgbG9uZ2VyIHRpbWVvdXQgcGVyaW9kLCB0aGUgS01ECj4gPiBw ZXJmb3JtcyBhIGRldmljZSByZXNldCwKPiA+IMKgwqDCoCBiYW4gdGhlIG9mZmVuZGluZyBzb2Z0 d2FyZSBxdWV1ZShzKSwgYW5kIHdpbGwgc2lnbmFsIHRoZQo+ID4gcHJlZW1wdGlvbiBmZW5jZXMu Cj4gPiAKPiA+IMKgwqDCoCBUaGlzIGZsb3cgcmVtYWlucyB0aGUgc2FtZSB3aGV0aGVyIGEgZGVi dWdnZXIgaXMgYXR0YWNoZWQgb3IsCj4gPiBmb3IgZXhhbXBsZSwgYQo+ID4gwqDCoMKgIHVzZXIg c3VibWl0cyBhIDEwLW1pbnV0ZSBub24tcHJlZW1wdGFibGUgd29ya2xvYWQuIEluIGVpdGhlcgo+ ID4gY2FzZSwgb3RoZXIKPiA+IMKgwqDCoCBwcm9jZXNzZXMgYXJlIGd1YXJhbnRlZWQgdG8gbWFr ZSBmb3J3YXJkIHByb2dyZXNzLgo+ID4gCj4gPiAKPiA+IFllYWggdGhhdCBpcyBwcmV0dHkgbXVj aCB0aGUgc2FtZSBhcmd1bWVudGF0aW9uIEkgaGF2ZSBoZWFyZCBiZWZvcmUKPiA+IGFuZCBpdAo+ ID4gdHVybmVkIG91dCB0byBub3QgYmUgd29ya2luZy4KPiA+IAo+ID4gCj4gPiDCoMKgwqAgVGhl IGV4YW1wbGUgYWJvdmUgaWxsdXN0cmF0ZXMgdGhlIG1lbW9yeSBvdmVyc3Vic2NyaXB0aW9uIGNh c2UsCj4gPiB3aGVyZSB0d28KPiA+IMKgwqDCoCBwcm9jZXNzZXMgYXJlIHVzaW5nIDUxJSBvZiB0 aGUgbWVtb3J5Lgo+ID4gCj4gPiAKPiA+IFRoYXQgaXNuJ3QgZXZlbiBuZWNlc3NhcnkuIFdlIGhh dmUgc2VlbiBhcHBsaWNhdGlvbnMgZHlpbmcganVzdAo+ID4gYmVjYXVzZSB0aGUKPiA+IGNvcmUg bWVtb3J5IG1hbmFnZW1lbnQgdHJpZWQgdG8gam9pbiBiYWNrIHNtYWxsIHBhZ2VzIGludG8gaHVn ZQo+ID4gcGFnZXMgaW4gYW4KPiA+IHVzZXJwdHIuCj4gPiAKPiA+IFRoYXQgdGhlIGNvcmUgbWVt b3J5IG1hbmFnZW1lbnQganVtcHMgaW4gYW5kIHJlcXVlc3RzIHRoYXQgdGhlIHByZS0KPiA+IGVt cHRpb24KPiA+IGZlbmNlIHNpZ25hbHMgY2FuIGhhcHBlbiBhbGwgdGhlIHRpbWUuCj4gCj4gT3Vj aC4gRG9lcyB0aGVyZSBoYXBwZW4gdG8gYmUgYSBrbm93biByZXByb2R1Y2VyIGZvciB0aGlzIGJl aGF2aW9yIG9yCj4gbWF5YmUKPiBidWcgcmVwb3J0Pwo+IAo+ID4gWW91IGNhbiBtaXRpZ2F0ZSB0 aGF0IGEgYml0LCBGZWRvcmEgZm9yIGV4YW1wbGUgZGlzYWJsZXMgam9pbmluZwo+ID4gYmFjayBz bWFsbAo+ID4gcGFnZXMgaW50byBodWdlIHBhZ2VzIGJ5IGRlZmF1bHQgZm9yIGV4YW1wbGUgYW5k IHdlIGV2ZW4gaGFkIHBlb3BsZQo+ID4gc3VnZ2VzdGluZwo+ID4gdG8gdXNlIG1wcm90ZWN0KCkg c28gdGhhdCB1c2VycHRycyBWTUFzIGRvbid0IGZvcmsoKSBhbnkgbW9yZQo+ID4gKHdoaWNoIGlz IG9mCj4gPiBjb3Vyc2UgY29tcGxldGVseSBpbGxlZ2FsKS4KPiA+IAo+ID4gQnV0IG15IGxvbmcg dGVybSB0YWtlIGF3YXkgaXMgdGhhdCB5b3UgY2FuJ3QgYmxvY2sgYWxsIGNhdXNlcyBvZgo+ID4g c3VkZGVuCj4gPiByZXF1ZXN0cyB0byBsZXQgYSBwcmUtZW1wdGlvbiBmZW5jZSBzaWduYWwuCj4g Cj4gSSB0aGluayB0aGlzIHByb2JsZW0gZXF1YWxseSBhcHBsaWVzIHRvIHRoZSBMUi13b3JrbG9h ZHMgbGlrZSB0aGUgRVUKPiBkZWJ1Z2dpbmcgb25lcy4KPiAKPiA+IMKgwqDCoCBBbm90aGVyIHBy ZWVtcHRpb24gc2NlbmFyaW8gaW52b2x2ZXMgdHdvIHByb2Nlc3NlcyBzaGFyaW5nCj4gPiBoYXJk d2FyZSByZXNvdXJjZXMuCj4gPiDCoMKgwqAgT3VyIGZpcm13YXJlIGZvbGxvd3MgdGhlIHNhbWUg ZmxvdyBoZXJlLiBJZiBhbiBMUiB3b3JrbG9hZCBpcwo+ID4gdXNpbmcgYSBoYXJkd2FyZQo+ID4g wqDCoMKgIHJlc291cmNlIGFuZCBhIERNQS1mZW5jZSB3b3JrbG9hZCBpcyB3YWl0aW5nLCBhbmQg aWYgdGhlIExSCj4gPiB3b3JrbG9hZCBkb2Vzbid0Cj4gPiDCoMKgwqAgcHJlZW1wdCB0aGUgaW4g YSB0aW1lbHkgbWFubmVyLCB0aGUgZmlybXdhcmUgaXNzdWVzIGEgaGFyZHdhcmUKPiA+IHJlc2V0 LCBub3RpZmllcwo+ID4gwqDCoMKgIEtNRCwgYW5kIGJhbnMgdGhlIExSIHNvZnR3YXJlIHF1ZXVl LiBUaGUgRE1BLWZlbmNlIHdvcmtsb2FkCj4gPiB0aGVuIGNhbiBtYWtlCj4gPiDCoMKgwqAgZm9y d2FyZCBwcm9ncmVzcwo+ID4gCj4gPiDCoMKgwqAgV2l0aCB0aGUgYWJvdmUgaW4gbWluZCwgdGhp cyBpcyB3aHkgSSBzYXkgdGhhdCBpZiBhIHVzZXIgdHJpZXMKPiA+IHRvIHJ1biBhIGdhbWUgYW5k Cj4gPiDCoMKgwqAgYSBub24tcHJlZW1wdGFibGUgTFIgd29ya2xvYWQsIGVpdGhlciBvdmVyc3Vi c2NyaWJpbmcgbWVtb3J5IG9yCj4gPiBzaGFyaW5nIGhhcmR3YXJlCj4gPiDCoMKgwqAgcmVzb3Vy Y2VzLCBpdCBpcyB1bmxpa2VseSB0byB3b3JrIHdlbGwuIEhvd2V2ZXIsIEkgZG9uJ3QgdGhpbmsK PiA+IHRoaXMgaXMgYSBjb21tb24KPiA+IMKgwqDCoCB1c2UgY2FzZS4gSSB3b3VsZCBleHBlY3Qg dGhhdCB3aGVuIGEgZGVidWdnZXIgaXMgb3BlbiwgaXQgaXMKPiA+IHR5cGljYWxseSBieSBhCj4g PiDCoMKgwqAgcG93ZXIgdXNlciB3aG8ga25vd3MgaG93IHRvIGRpc2FibGUgb3RoZXIgR1BVIHRh c2tzIChlLmcuLCBieQo+ID4gZW5hYmxpbmcgc29mdHdhcmUKPiA+IMKgwqDCoCByZW5kZXJpbmcg b3IgdXNpbmcgYSBtYWNoaW5lIHdpdGhvdXQgYW55IGRpc3BsYXkpLgo+ID4gCj4gPiDCoMKgwqAg R2l2ZW4gdGhpcywgcGxlYXNlIHRvIHJlY29uc2lkZXIgeW91ciBwb3NpdGlvbi4KPiA+IAo+ID4g Cj4gPiBUaGUga2V5IHBvaW50IGhlcmUgaXMgdGhhdCB0aGlzIGlzbid0IHN0YWJsZSwgeW91IGNh biBkbyB0aGF0IGFzIGEKPiA+IHRlY2ggZGVtbwo+ID4gYnV0IGl0IGNhbiBhbHdheXMgYmUgdGhh dCBkZWJ1Z2dpbmcgYW4gYXBwbGljYXRpb24ganVzdCByYW5kb21seQo+ID4gZGllcy4gQW5kCj4g PiBiZWxpZXZlIG1lIEFNRCBoYXMgdHJpZWQgdGhpcyB0byBhIHJhdGhlciBleHRyZW1lIGV4dGVu ZCBhcyB3ZWxsLgo+IAo+IEl0J3Mgbm90IHJlYWxseSBvbmx5IGxpbWl0ZWQgdG8gdGhlIGRlYnVn Z2FibGUgYXBwbGljYXRpb25zIGF0IGFsbCwKPiB0aGUKPiBub3JtYWwgTFIgd29ya2xvYWRzIGFy ZSBlcXVhbGx5IGltcGFjdGVkIGFzIGZhciBhcyBJIHVuZGVyc3RhbmQuIEp1c3QKPiBoYXJkZXIg dG8gY2F0Y2ggdGhlIGlzc3VlIHdpdGggTFItd29ya2xvYWRzIGlmIHRoZSBwcmUtZW1wdGlvbiBm ZW5jZQo+IHNpZ25hbGluZyBpcyBzcG9yYWRpYy4KPiAKPiA+IFdoYXQgeW91IGNvdWxkIHBvdGVu dGlhbGx5IHdvcmsgaXMgdG8gdGFpbnQgdGhlIGtlcm5lbCBhbmQgbWFrZQo+ID4gc3VyZSB0aGF0 IHRoaXMKPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIHRvIHVzZXIgd2hvIGFic29sdXRl bHkga25vdyB3aGF0IHRoZXkKPiA+IGFyZSBkb2luZy4KPiA+IAo+ID4gQnV0IEkgd291bGQgc2F5 IHdlIGNhbiBvbmx5IGFsbG93IHRoYXQgaWYgYWxsIG90aGVyIG9wdGlvbnMgaGF2ZQo+ID4gYmVl biBleGVyY2lzZWQKPiA+IGFuZCBkb2luZyBpdCBsaWtlIHRoaXMgaXMgcmVhbGx5IHRoZSBvbmx5 IG9wdGlvbiBsZWZ0Lgo+IAo+IEl0IHNvdW5kcyBsaWtlIHNlcnZpY2luZyB0aGUgbWVtb3J5IHBy ZS1lbXB0IGZlbmNlIGJ5IHN0ZWFsaW5nIHRoZQo+IHBhZ2VzIGZyb20gdW5kZXJuZWF0aCB0aGUg d29ya2xvYWQgd291bGQgYmUgdGhlIHdheSB0byByZXNvbHZlIHRoaXMKPiBpc3N1ZS4KPiAKPiBU aGlzIGhhcyBiZWVuIGV4dGVuc2l2ZWx5IGRpc2N1c3NlZCBhbHJlYWR5LCBidXQgd2FzIGV4cGVj dGVkIHRvCj4gcmVhbGx5Cj4gb25seSBiZSBuZWVkZWQgZm9yIGxvdy1vbi1tZW1vcnkgc2NlbmFy aW9zLiBIb3dldmVyIGl0IG5vdyBzZWVtcyBsaWtlCj4gdGhlIG5lZWQgaXMgbXVjaCBlYXJsaWVy IGR1ZSB0byB0aGUgcmFuZG9tIHVzZXJwdHIgcGFnZSBqb2luaW5nIGJ5Cj4gY29yZQo+IG1tLgoK SnVzdCB0byBjbGFyaWZ5IGhlcmU6CiAKSW4gTG9uZy1SdW5uaW5nIG1vZGUgd2l0aCByZWNvdmVy YWJsZSBwYWdlZmF1bHRzIGVuYWJsZWQgd2UgZG9uJ3QgaGF2ZQphbnkgcHJlZW1wdC1mZW5jZXMs IGJ1dCByYXRoZXIganVzdCB6YXAgdGhlIFBURXMgcG9pbnRpbmcgdG8gdGhlCmFmZmVjdGVkIG1l bW9yeSBhbmQgZmx1c2ggVExCLiBTbyBmcm9tIGEgbWVtb3J5IHJlc291cmNlIFBPVyBhCmJyZWFr cG9pbnQgc2hvdWxkIGJlIHNhZmUsIGFuZCBubyBtbXUgbm90aWZpZXIgbm9yIHNocmlua2VyIHdp bGwgYmUKYmxvY2tlZC4KCk5vciB3aWxsIHRoZXJlIGJlIGFueSBqb2JzIHdpdGggcHVibGlzaGVk IGRtYS1mZW5jZXMgZGVwZW5kaW5nIG9uIHRoZQpqb2IgYmxvY2tlZCBlaXRoZXIgdGVtcG9yYXJp bHkgYnkgYSBwYWdlZmF1bHQgb3IgbG9uZy10ZXJtIGJ5IGEKZGVidWdnZXIgYnJlYWtwb2ludC4K Ci9UaG9tYXMKCgo+IAo+IElmIHRoYXQgaXMgZG9uZSBhbmQgdGhlIG1lbW9yeSBwcmUtZW1wdCBm ZW5jZSBpcyBzZXJ2aWNlZCBldmVuIGZvcgo+IGRlYnVnZ2FibGUgY29udGV4dHMsIGRvIHlvdSBo YXZlIGZ1cnRoZXIgY29uY2VybnMgd2l0aCB0aGUgcHJlc2VudGVkCj4gYXBwcm9hY2gKPiBmcm9t IGRtYS1idWYgYW5kIGRybS9zY2hlZCBwZXJzcGVjdGl2ZT8KPiAKPiBSZWdhcmRzLCBKb29uYXMK PiAKPiA+IAo+ID4gUmVnYXJkcywKPiA+IENocmlzdGlhbi4KPiA+IAo+ID4gCj4gPiDCoMKgwqDC oMKgwqDCoCBUaGlzIG1lYW5zIHRoYXQgYSBicmVha3BvaW50IG9yIGNvcmUgZHVtcCBkb2Vzbid0 IGhhbHQgR1BVCj4gPiB0aHJlYWRzLCBidXQKPiA+IMKgwqDCoMKgwqDCoMKgIHJhdGhlciBzdXNw ZW5kcyB0aGVtLiBFLmcuIGFsbCBydW5uaW5nIHdhdmUgZGF0YSBpcwo+ID4gY29sbGVjdGVkIGlu dG8gYSBzdGF0ZQo+ID4gwqDCoMKgwqDCoMKgwqAgYmFnIHdoaWNoIGNhbiBiZSByZXN0b3JlZCBs YXRlciBvbi4KPiA+IAo+ID4gwqDCoMKgwqDCoMKgwqAgSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Np b24gdGhhdCB0aG9zZSBsb25nIHJ1bm5pbmcgY29tcHV0ZQo+ID4gdGhyZWFkcyBkbwo+ID4gwqDC oMKgwqDCoMKgwqAgZXhhY3RseSB0aGF0LCBidXQgd2hlbiB0aGUgaGFyZHdhcmUgY2FuJ3Qgc3dp dGNoIG91dCB0aGUKPiA+IEdQVSB0aHJlYWQvcHJvY2Vzcwo+ID4gwqDCoMKgwqDCoMKgwqAgd2hp bGUgaW4gYSBicmVhayB0aGVuIHRoYXQgaXNuJ3QgdGhlIGNhc2UuCj4gPiAKPiA+IMKgwqDCoMKg wqDCoMKgIEFzIGxvbmcgYXMgeW91IGRvbid0IGZpbmQgYSB3YXkgdG8gYXZvaWQgdGhhdCB0aGlz IHBhdGNoCj4gPiBzZXQgaXMgYSBwcmV0dHkKPiA+IMKgwqDCoMKgwqDCoMKgIGNsZWFyIE5BSyBm cm9tIG15IHNpZGUgYXMgRE1BLWJ1ZiBhbmQgVFRNIG1haW50YWluZXIuCj4gPiAKPiA+IAo+ID4g wqDCoMKgIEkgYmVsaWV2ZSB0aGlzIGlzIGFkZHJlc3NlZCBhYm92ZS4KPiA+IAo+ID4gwqDCoMKg IE1hdHQKPiA+IAo+ID4gCj4gPiDCoMKgwqDCoMKgwqDCoCBXaGF0IG1pZ2h0IHdvcmsgaXMgdG8g a2VlcCB0aGUgc3VibWlzc2lvbiBvbiB0aGUgaGFyZHdhcmUKPiA+IGluIHRoZSBicmVhayBzdGF0 ZQo+ID4gwqDCoMKgwqDCoMKgwqAgYnV0IGZvcmJpZCBhbnkgbWVtb3J5IGFjY2Vzcy4gVGhpcyB3 YXkgeW91IGNhbiBzaWduYWwgeW91cgo+ID4gcHJlZW1wdGlvbiBmZW5jZQo+ID4gwqDCoMKgwqDC oMKgwqAgZXZlbiB3aGVuIHRoZSBoYXJkd2FyZSBpc24ndCBtYWRlIGF2YWlsYWJsZS4KPiA+IAo+ ID4gwqDCoMKgwqDCoMKgwqAgQmVmb3JlIHlvdSBjb250aW51ZSBYRSBzZXR1cHMgYSBuZXcgcHJl LWVtcHRpb24gZmVuY2UgYW5kCj4gPiBtYWtlcyBzdXJlIHRoYXQKPiA+IMKgwqDCoMKgwqDCoMKg IGFsbCBwYWdlIHRhYmxlcyBldGMuLi4gYXJlIHVwIHRvIGRhdGUuCj4gPiAKPiA+IMKgwqDCoMKg wqDCoMKgIENvdWxkIGJlIHRyaWNreSB0byBnZXQgdGhpcyByaWdodCBpZiBjb21wbGV0aW9uIGZl bmNlIGJhc2VkCj4gPiBzdWJtaXNzaW9ucyBhcmUKPiA+IMKgwqDCoMKgwqDCoMKgIG1peGVkIGlu IGFzIHdlbGwsIGJ1dCB0aGF0IGdpdmVzIHlvdSBhdCBsZWFzdCBhIGRpcmVjdGlvbgo+ID4geW91 IGNvdWxkCj4gPiDCoMKgwqDCoMKgwqDCoCBwb3RlbnRpYWxseSBnby4KPiA+IAo+ID4gwqDCoMKg wqDCoMKgwqAgUmVnYXJkcywKPiA+IMKgwqDCoMKgwqDCoMKgIENocmlzdGlhbi4KPiA+IAo+ID4g Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJlZ2FyZHMsIEpvb25hcwo+ID4gCj4gPiAKPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBSZWdhcmRzLAo+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIENocmlzdGlhbi4KPiA+IAo+ID4gCj4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb21lIHdhc2gtdXAgdGhvdWdodHMgZnJvbSBtZSBi ZWxvdywgYnV0Cj4gPiBjb25zaWRlciB0aGVtIGZhaXJseSBpcnJlbGV2YW50Cj4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaW5jZSBJIHRoaW5rIHRoZSBtYWluIGRy aXZlciBmb3IgdGhlc2UgYmlnCj4gPiBxdWVzdGlvbnMgaGVyZSBzaG91bGQgYmUKPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdkYi91c2Vyc3BhY2UuCj4gPiAKPiA+ IAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBRdW90 aW5nIENocmlzdGlhbiBLw7ZuaWcgKDIwMjQtMTEtMDcKPiA+IDExOjQ0OjMzKQo+ID4gCj4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQW0g MDYuMTEuMjQgdW0gMTg6MDAgc2NocmllYiBNYXR0aGV3Cj4gPiBCcm9zdDoKPiA+IAo+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIFtTTklQXQo+ID4gCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVGhpcyBpcyBub3QgYSBnZW5lcmljIGlu dGVyZmFjZQo+ID4gdGhhdCBhbnlvbmUgY2FuIGZyZWVseSBhY2Nlc3MuIFRoZSBzYW1lCj4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcGVybWlzc2lvbnMgdXNlZCBieSBwdHJhY2UgYXJlCj4gPiBjaGVja2VkIHdoZW4g b3BlbmluZyBzdWNoIGFuIGludGVyZmFjZS4KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBTZWUgWzFdIFsyXS4KPiA+ IAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgCj4gPiBbMV1odHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcv cGF0Y2gvNjE3NDcwLz9zZXJpZXM9MTM2NTcyJnJlCj4gPiB2PTIKPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ID4g WzJdaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzYxNzQ3MS8/c2VyaWVz PTEzNjU3MiZyZQo+ID4gdj0yCj4gPiAKPiA+IAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFRoYW5rcyBhIGxvdCBmb3IgdGhvc2UgcG9p bnRlcnMsIHRoYXQKPiA+IGlzIGV4YWN0bHkgd2hhdCBJIHdhcyBsb29raW5nIGZvci4KPiA+IAo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IEFuZCB5ZWFoLCBpdCBpcyB3aGF0IEkgZmVhcmVkLiBZb3UgYXJlCj4gPiByZS1pbXBsZW1lbnRp bmcgZXhpc3RpbmcgZnVuY3Rpb25hbGl0eSwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBidXQgc2VlIGJlbG93Lgo+ID4gCj4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIENvdWxkIHlvdSBlbGFi b3JhdGUgb24gd2hhdCB0aGlzICJleGlzdGluZwo+ID4gZnVuY3Rpb25hbGl0eSIgZXhhY3RseSBp cz8KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgSSBk byBub3QgdGhpbmsgdGhpcyBmdW5jdGlvbmFsaXR5IGV4aXN0cyBhdAo+ID4gdGhpcyB0aW1lLgo+ ID4gCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFRo ZSBFVSBkZWJ1Z2dpbmcgYXJjaGl0ZWN0dXJlIGZvciBYZQo+ID4gc3BlY2lmaWNhbGx5IGF2b2lk cyB0aGUgbmVlZCBmb3IgR0RCCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHRvIGF0dGFjaCB3aXRoIHB0cmFjZSB0byB0aGUgQ1BVIHByb2Nlc3Mgb3IK PiA+IGludGVyZmVyZSB3aXRoIHRoZSBDUFUgcHJvY2VzcyBmb3IKPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdGhlIGRlYnVnZ2luZyB2aWEgcGFyYXNp dGljIHRocmVhZHMgb3Igc28uCj4gPiAKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgRGVidWdnZXIgY29ubmVjdGlvbiBpcyBvcGVuZWQgdG8gdGhlIERS TQo+ID4gZHJpdmVyIGZvciBnaXZlbiBQSUQgKHdoaWNoIHVzZXMgdGhlCj4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHB0cmFjZSBtYXkgYWNjZXNzIGNo ZWNrIGZvciBub3cpIGFmdGVyCj4gPiB3aGljaCB0aGUgYWxsIERSTSBjbGllbnQgb2YgdGhhdAo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBQSUQgYXJl IGV4cG9zZWQgdG8gdGhlIGRlYnVnZ2VyIHByb2Nlc3MuCj4gPiAKPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgV2hhdCB3ZSB3YW50IHRvIGV4cG9zZSB2 aWEgdGhhdCBkZWJ1Z2dlcgo+ID4gY29ubmVjdGlvbiBpcyB0aGUgYWJpbGl0eSBmb3IgR0RCIHRv Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlYWQv d3JpdGUgdGhlIGRpZmZlcmVudCBHUFUgVk0gYWRkcmVzcwo+ID4gc3BhY2VzIChwcEdUVCBmb3Ig SW50ZWwgR1BVcykganVzdCBsaWtlCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHRoZSBFVSB0aHJlYWRzIHdvdWxkIHNlZSB0aGVtLiBOb3RlIHRoYXQK PiA+IHRoZSBsYXlvdXQgb2YgdGhlIHBwR1RUIGlzCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbXBsZXRlbHkgdXAgdG8gdGhlIHVzZXJzcGFjZSBk cml2ZXIgdG8KPiA+IHNldHVwIGFuZCBpcyBtb3N0bHkgb25seSBwYXJ0aWFsbHkKPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXF1YWwgdG8gdGhlIENQ VSBhZGRyZXNzIHNwYWNlLgo+ID4gCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIFNwZWNpZmljYWxseSBhcyBwYXJ0IG9mIHJlYWRpbmcvd3JpdGluZyB0 aGUKPiA+IHBwR1RUIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMsCj4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRoZXJlIGFyZSBkZWVwIGZsdXNoZXMgbmVl ZGVkOiBmb3IgZXhhbXBsZQo+ID4gZmx1c2hpbmcgaW5zdHJ1Y3Rpb24gY2FjaGUKPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd2hlbiBhZGRpbmcvcmVt b3ZpbmcgYnJlYWtwb2ludHMuCj4gPiAKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgTWF5YmUgdGhhdCB3aWxsIGV4cGxhaW4gdGhlIGJhY2tncm91bmQu IEkKPiA+IGVsYWJvcmF0ZSBvbiB0aGlzIGF0IHRoZSBlbmQgc29tZSBtb3JlLgo+ID4gCj4gPiAK PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAga21hcC92bWFwIGFyZSB1c2VkCj4gPiBldmVy eXdoZXJlIGluIHRoZSBEUk0gc3Vic3lzdGVtIHRvIGFjY2VzcyBCT3MsIHNvIEnigJltCj4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZhaWxpbmcgdG8gc2VlIHRoZQo+ID4gcHJvYmxlbSB3 aXRoIGFkZGluZyBhIHNpbXBsZSBoZWxwZXIgYmFzZWQgb24gZXhpc3RpbmcKPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgY29kZS4KPiA+IAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgV2hhdCNz IHBvc3NpYmxlIGFuZCBvZnRlbgo+ID4gZG9uZSBpcyB0byBkbyBrbWFwL3ZtYXAgaWYgeW91IG5l ZWQgdG8gaW1wbGVtZW50IGEKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIENQVSBjb3B5IGZvciBzY2Fu b3V0IGZvcgo+ID4gZXhhbXBsZSBvciBmb3IgY29weWluZy92YWxpZGF0aW5nIGNvbW1hbmQgYnVm ZmVycy4KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJ1dCB0aGF0IHVzdWFsbHkgcmVxdWlyZXMKPiA+ IGFjY2Vzc2luZyB0aGUgd2hvbGUgQk8gYW5kIGhhcyBzZXBhcmF0ZSBzZWN1cml0eQo+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgY2hlY2tzLgo+ID4gCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBXaGVuIHlv dSB3YW50IHRvIGFjY2VzcyBvbmx5Cj4gPiBhIGZldyBieXRlcyBvZiBhIEJPIHRoYXQgc291bmRz IG1hc3NpdmVseSBsaWtlCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhIHBlZWsvcG9rZSBsaWtlIGlu dGVyZmFjZQo+ID4gYW5kIHdlIGhhdmUgYWxyZWFkeSByZWplY3RlZCB0aGF0IG1vcmUgdGhhbiBv bmNlLgo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVGhlcmUgZXZlbiB1c2VkIHRvIGJlCj4gPiBzdGFu ZGFyZGl6ZWQgR0VNIElPQ1RMcyBmb3IgdGhhdCB3aGljaCBoYXZlIGJlZW4KPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHJlbW92ZWQgYnkgbm93Lgo+ID4gCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJlZmVycmluZyB0byB0aGUgZXhwbGFuYXRpb24gYXQg dG9wOiBUaGVzZQo+ID4gSU9DVEwgYXJlIG5vdCBmb3IgdGhlIGRlYnVnZ2luZyB0YXJnZXQKPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJvY2VzcyB0 byBpc3N1ZS4gVGhlIHBlZWsvcG9rZSBpbnRlcmZhY2UKPiA+IGlzIHNwZWNpZmljYWxseSBmb3Ig R0RCIG9ubHkKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdG8gZmFjaWxpdGF0ZSB0aGUgZW11bGF0aW9uIG9mIG1lbW9yeQo+ID4gcmVhZHMvd3JpdGVz IG9uIHRoZSBHUFUgYWRkcmVzcwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzcGFjZSBhcyB0aGV5IHdlcmUgZG9uZSBieSBFVXMgdGhlbXNlbHZlcy4K PiA+IEFuZCB0byByZWNhcDogZm9yIG1vZGlmeWluZwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnN0cnVjdGlvbnMgZm9yIGV4YW1wbGUgKGFkZC9y ZW1vdmUKPiA+IGJyZWFrcG9pbnQpLCBleHRyYSBsZXZlbCBvZiBjYWNoZSBmbHVzaGluZyBpcwo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZWVkZWQg d2hpY2ggaXMgbm90IGF2YWlsYWJsZSB0byByZWd1bGFyCj4gPiB1c2Vyc3BhY2UuCj4gPiAKPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgSSBzcGVjaWZp Y2FsbHkgZGlzY3Vzc2VkIHdpdGggU2ltYSBvbiB0aGUKPiA+IGRpZmZlcmVuY2UgYmVmb3JlIG1v dmluZyBmb3J3YXJkIHdpdGggdGhpcwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBkZXNpZ24gb3JpZ2luYWxseS4gSWYgc29tZXRoaW5nIGhhcyBjaGFu Z2VkCj4gPiBzaW5jZSB0aGVuLCBJJ20gb2YgY291cnNlIGhhcHB5IHRvIHJlZGlzY3Vzcy4KPiA+ IAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBIb3dl dmVyLCBpZiB0aGlzIGNvZGUgY2FuJ3QgYmUgYWRkZWQsIG5vdAo+ID4gc3VyZSBob3cgd2Ugd291 bGQgZXZlciBiZSBhYmxlCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHRvIGltcGxlbWVudCBjb3JlIGR1bXBzIGZvciBHUFUKPiA+IHRocmVhZHMvbWVt b3J5Pwo+ID4gCj4gPiAKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIElmIHlvdSBuZWVkIHRvIGFjY2Vz cyBCT3MKPiA+IHdoaWNoIGFyZSBwbGFjZWQgaW4gbm90IENQVSBhY2Nlc3NpYmxlIG1lbW9yeSB0 aGVuCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbXBsZW1lbnQgdGhlIGFjY2VzcyBjYWxsYmFjawo+ ID4gZm9yIHB0cmFjZSwgc2VlIGFtZGdwdV90dG1fYWNjZXNzX21lbW9yeSBmb3IKPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGFuIGV4YW1wbGUgaG93IHRvIGRvIHRoaXMuCj4gPiAKPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQXMgYWxzbyBtZW50aW9uZWQg YWJvdmUsIHdlIGRvbid0IHdvcmsgdmlhCj4gPiBwdHJhY2UgYXQgYWxsIHdoZW4gaXQgY29tZXMK PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdG8gZGVi dWdnaW5nIHRoZSBFVXMuIFRoZSBvbmx5IHRoaW5nIHVzZWQKPiA+IGZvciBub3cgaXMgdGhlIHB0 cmFjZV9tYXlfYWNjZXNzIHRvCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGltcGxlbWVudCBzaW1pbGFyIGFjY2VzcyByZXN0cmljdGlvbnMgYXMKPiA+ IHB0cmFjZSBoYXMuIFRoaXMgY2FuIGJlIGNoYW5nZWQKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdG8gc29tZXRoaW5nIGVsc2UgaWYgbmVlZGVkLgo+ ID4gCj4gPiAKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBQdHJhY2UgYWNjZXNzIHZpYQo+ID4gdm1fb3BlcmF0aW9u c19zdHJ1Y3QuYWNjZXNzIOKGkiB0dG1fYm9fdm1fYWNjZXNzLgo+ID4gCj4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg VGhpcyBzZXJpZXMgcmVuYW1lcwo+ID4gdHRtX2JvX3ZtX2FjY2VzcyB0byB0dG1fYm9fYWNjZXNz LCB3aXRoIG5vIGNvZGUgY2hhbmdlcy4KPiA+IAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFRoZSBhYm92ZSBmdW5j dGlvbiBhY2Nlc3NlcyBhIEJPCj4gPiB2aWEga21hcCBpZiBpdCBpcyBpbiBTWVNURU0gLyBUVCwK PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB3aGljaCBpcyBleGlzdGluZyBjb2RlLgo+ID4gCj4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg VGhpcyBmdW5jdGlvbiBpcyBvbmx5IGV4cG9zZWQgdG8KPiA+IHVzZXIgc3BhY2UgdmlhIHB0cmFj ZSBwZXJtaXNzaW9ucy4KPiA+IAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBNYXliZSB0aGlzIHNlbnRlbmNlIGlzIHdoYXQgY2F1c2VkIHRoZQo+ID4g Y29uZnVzaW9uLgo+ID4gCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIFVzZXJzcGFjZSBpcyBuZXZlciBleHBvc2VkIHdpdGggcGVlay9wb2tlCj4gPiBp bnRlcmZhY2UsIG9ubHkgdGhlIGRlYnVnZ2VyCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbm5lY3Rpb24gd2hpY2ggaXMgaXRzIG93biBGRC4KPiA+ IAo+ID4gCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgSW4gdGhpcyBzZXJpZXMsIHdlIGltcGxlbWVudCBhCj4gPiBm dW5jdGlvbiBbM10gc2ltaWxhciB0bwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFtZGdwdV90dG1fYWNjZXNzX21l bW9yeSBmb3IgdGhlCj4gPiBUVE0gdmZ1bmMgYWNjZXNzX21lbW9yeS4gV2hhdCBpcwo+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIG1pc3NpbmcgaXMgbm9uLXZpc2libGUgQ1BVIG1lbW9yeQo+ID4gYWNjZXNzLCBzaW1p bGFyIHRvCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X3R0bV9hY2Nlc3NfbWVtb3J5X3NkbWEuCj4gPiBU aGlzIHdpbGwgYmUgYWRkcmVzc2VkIGluIGEgZm9sbG93LXVwIGFuZAo+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHdh cyBvbWl0dGVkIGluIHRoaXMgc2VyaWVzIGdpdmVuCj4gPiBpdHMgY29tcGxleGl0eS4KPiA+IAo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIFNvLCB0aGlzIGxvb2tzIG1vcmUgb3IgbGVzcwo+ID4gaWRlbnRpY2FsIHRv IEFNRCdzIHB0cmFjZSBpbXBsZW1lbnRhdGlvbiwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBidXQgaW4gR1BVIGFk ZHJlc3Mgc3BhY2UuIEFnYWluLAo+ID4gSSBmYWlsIHRvIHNlZSB3aGF0IHRoZSBwcm9ibGVtIGlz IGhlcmUuCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgV2hhdCBhbSBJIG1pc3Npbmc/Cj4gPiAKPiA+IAo+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFRoZSBt YWluIHF1ZXN0aW9uIGlzIHdoeSBjYW4ndCB5b3UgdXNlCj4gPiB0aGUgZXhpc3RpbmcgaW50ZXJm YWNlcyBkaXJlY3RseT8KPiA+IAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBXZSdyZSBub3Qgd29ya2luZyBvbiB0aGUgQ1BVIGFkZHJlc3Mgc3BhY2UK PiA+IG9yIEJPcy4gV2UncmUgd29ya2luZwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJpY3RseSBvbiB0aGUgR1BVIGFkZHJlc3Mgc3BhY2UgYXMg d291bGQKPiA+IGJlIHNlZW4gYnkgYW4gRVUgdGhyZWFkIGlmIGl0Cj4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFjY2Vzc2VkIGFkZHJlc3MgWC4KPiA+ IAo+ID4gCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgQWRkaXRpb25hbCB0byB0aGUgcGVlay9wb2tlIGludGVyZmFjZQo+ID4gb2YgcHRy YWNlIExpbnV4IGhhcyB0aGUgcGlkZmRfZ2V0ZmQKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzeXN0ZW0gY2FsbCwgc2VlCj4gPiBoZXJl aHR0cHM6Ly9tYW43Lm9yZy9saW51eC9tYW4tcGFnZXMvbWFuMi9waWRmZF9nZXRmZC4yLmh0bWwu Cj4gPiAKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBUaGUgcGlkZmRfZ2V0ZmQoKSBhbGxvd3MgdG8gZHVwKCkgdGhlCj4gPiByZW5kZXIg bm9kZSBmaWxlIGRlc2NyaXB0b3IgaW50byB5b3VyIGdkYgo+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByb2Nlc3MuIFRoYXQgaW4gdHVy biBnaXZlcyB5b3UgYWxsIHRoZQo+ID4gYWNjZXNzIHlvdSBuZWVkIGZyb20gZ2RiLCBpbmNsdWRp bmcKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBtYXBwaW5nIEJPcyBhbmQgY29tbWFuZCBzdWJtaXNzaW9uIG9uCj4gPiBiZWhhbGYgb2Yg dGhlIGFwcGxpY2F0aW9uLgo+ID4gCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIFdlJ3JlIG5vdCBvcGVyYXRpbmcgb24gdGhlIENQVSBhZGRyZXNzCj4g PiBzcGFjZSBub3IgYXJlIHdlIG9wZXJhdGluZyBvbiBCT3MKPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHRoZXJlIGlzIG5vIGNvbmNlcHQgb2YgQk8g aW4gdGhlIEVVIGRlYnVnCj4gPiBpbnRlcmZhY2UpLiBFYWNoIFZNQSBpbiB0aGUgVk0KPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY291bGQgY29tZSBm cm9tIGFueXdoZXJlLCBvbmx5IHRoZSBzdGFydAo+ID4gYWRkcmVzcyBhbmQgc2l6ZSBtYXR0ZXIu IEFuZAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBu ZWl0aGVyIGRvIHdlIG5lZWQgdG8gaW50ZXJmZXJlIHdpdGggdGhlCj4gPiBjb21tYW5kIHN1Ym1p c3Npb24gb2YgdGhlCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHByb2Nlc3MgdW5kZXIgZGVidWcuCj4gPiAKPiA+IAo+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFzIGZhciBhcyBJIGNhbiBz ZWUgdGhhdCBhbGxvd3MgZm9yIHRoZQo+ID4gc2FtZSBmdW5jdGlvbmFsaXR5IGFzIHRoZSBldWRl YnVnCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaW50ZXJmYWNlLCBqdXN0IHdpdGhvdXQgYW55IGRyaXZlcgo+ID4gc3BlY2lmaWMgY29k ZSBtZXNzaW5nIHdpdGggcHRyYWNlCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGVybWlzc2lvbnMgYW5kIHBlZWsvcG9rZSBpbnRlcmZh Y2VzLgo+ID4gCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgU28gdGhlIHF1ZXN0aW9uIGlzIHN0aWxsIHdoeSBkbyB5b3UKPiA+IG5lZWQg dGhlIHdob2xlIGV1ZGVidWcgaW50ZXJmYWNlIGluIHRoZQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZpcnN0IHBsYWNlPyBJIG1pZ2h0 IGJlIG1pc3NpbmcKPiA+IHNvbWV0aGluZywgYnV0IHRoYXQgc2VlbXMgdG8gYmUgc3VwZXJmbHVv dXMKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBmcm9tIGEgaGlnaCBsZXZlbCB2aWV3Lgo+ID4gCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJlY2FwcGluZyBmcm9tIGFib3ZlLiBJdCBpcyB0 byBhbGxvdyB0aGUKPiA+IGRlYnVnZ2luZyBvZiBFVSB0aHJlYWRzIHBlciBEUk0KPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2xpZW50LCBjb21wbGV0 ZWx5IGluZGVwZW5kZW50IG9mIHRoZSBDUFUKPiA+IHByb2Nlc3MuIElmIHB0cmFjZV9tYXlfYWNj ZXMKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaXMg dGhlIHNvcmUgcG9pbnQsIHdlIGNvdWxkIGNvbnNpZGVyIG90aGVyCj4gPiBwZXJtaXNzaW9uIGNo ZWNrcywgdG9vLiBUaGVyZQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBpcyBubyBvdGhlciBjb25uZWN0aW9uIHRvIHB0cmFjZSBpbiB0aGlzCj4gPiBh cmNoaXRlY3R1cmUgYXMgc2luZ2xlCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHBlcm1pc3Npb24gY2hlY2sgdG8ga25vdyBpZiBQSUQgaXMgZmFpcgo+ ID4gZ2FtZSB0byBhY2Nlc3MgYnkgZGVidWdnZXIKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJvY2Vzcy4KPiA+IAo+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBXaHkgbm8gcGFyYXNpdGljIHRocmVhZCBv ciBwdHJhY2U6IEdvaW5nCj4gPiBmb3J3YXJkLCBiaW5kaW5nIHRoZSBFVSBkZWJ1Z2dpbmcgdG8K PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdGhlIERS TSBjbGllbnQgd291bGQgYWxzbyBwYXZlIHdheSBmb3IKPiA+IGJlaW5nIGFibGUgdG8gZXh0ZW5k IGNvcmUga2VybmVsIGdlbmVyYXRlZAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBjb3JlIGR1bXAgd2l0aCBlYWNoIERSTSBjbGllbnQncyBFVQo+ID4g dGhyZWFkL21lbW9yeSBkdW1wLiBXZSBoYXZlIHNpbWlsYXIKPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmVhdHVyZSBjYWxsZWQgIk9mZmxpbmUgY29y ZSBkdW1wIiBlbmFibGVkCj4gPiBpbiB0aGUgZG93bnN0cmVhbSBwdWJsaWMKPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdHJlZXMgZm9yIGk5MTUsIHdo ZXJlIHdlIGN1cnJlbnRseSBhdHRhY2gKPiA+IHRoZSBFVSB0aHJlYWQgZHVtcCB0byBpOTE1IGVy cm9yIHN0YXRlCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGFuZCB0aGVuIGxhdGVyIGNvbWJpbmUgaTkxNSBlcnJvciBzdGF0ZQo+ID4gd2l0aCBDUFUg Y29yZSBkdW1wIGZpbGUgd2l0aCBhCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHRvb2wuCj4gPiAKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgVGhpcyBpcyByZWxhdGl2ZWx5IGxpdHRsZSBhbW91bnQgb2Yg ZXh0cmEKPiA+IGNvZGUsIGFzIHRoaXMgYmFzZWxpbmUgc2VyaWVzCj4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFscmVhZHkgaW50cm9kdWNlcyBHREIg dGhlIGFiaWxpdHkgdG8KPiA+IHBlcmZvcm0gdGhlIG5lY2Vzc2FyeSBhY3Rpb25zLgo+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJdCdzIGp1c3QgdGhl IG1hdHRlciBvZiBrZXJuZWwgZHJpdmVyCj4gPiBjYWxsaW5nOiAic3RvcCBhbGwgdGhyZWFkcyIs IHRoZW4KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Y29weWluZyB0aGUgbWVtb3J5IG1hcCBhbmQgbWVtb3J5IGNvbnRlbnRzCj4gPiBmb3IgR1BVIHRo cmVhZHMsIGp1c3QgbGlrZSBpcwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBkb25lIGZvciBDUFUgdGhyZWFkcy4KPiA+IAo+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBXaXRoIHBhcmFzaXRpYyB0aHJlYWQg aW5qZWN0aW9uLCBub3Qgc3VyZQo+ID4gaWYgdGhlcmUgaXMgc3VjaCB3YXkgZm9yd2FyZCwKPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXMgaXQgd291 bGQgc2VlbSB0byByZXF1aXJlIHRvIGluamVjdCBxdWl0ZQo+ID4gYWJpdCBtb3JlIGxvZ2ljIHRv IGNvcmUga2VybmVsPwo+ID4gCj4gPiAKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJdCdzIHRydWUgdGhhdCB0aGUgQU1EIEtGRCBwYXJ0 IGhhcwo+ID4gc3RpbGwgc2ltaWxhciBmdW5jdGlvbmFsaXR5LCBidXQgdGhhdCBpcwo+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJlY2F1 c2Ugb2YgdGhlIGJyb2tlbiBLRkQgZGVzaWduIG9mCj4gPiB0eWluZyBkcml2ZXIgc3RhdGUgdG8g dGhlIENQVSBwcm9jZXNzCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKHdoaWNoIG1ha2VzIGl0IGluYWNjZXNzaWJsZSBmb3IgZ2RiCj4g PiBldmVuIHdpdGggaW1wb3J0ZWQgcmVuZGVyIG5vZGUgZmQpLgo+ID4gCj4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQm90aCBTaW1hIGFu ZCBJIChhbmQgcGFydGlhbGx5IERhdmUgYXMKPiA+IHdlbGwpIGhhdmUgcHVzaGVkIGJhY2sgb24g dGhlIEtGRAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGFwcHJvYWNoLiBBbmQgdGhlIGxvbmcgdGVybSBwbGFuIGlzIHRvCj4gPiBnZXQg cmlkIG9mIHN1Y2ggZGV2aWNlIGRyaXZlciBzcGVjaWZpYwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludGVyZmFjZSB3aGljaCByZS1p bXBsZW1lbnQgZXhpc3RpbmcKPiA+IGZ1bmN0aW9uYWxpdHkganVzdCBkaWZmZXJlbnRseS4KPiA+ IAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBSZWNh cHBpbmcsIHRoaXMgc2VyaWVzIGlzIG5vdCBhZGRpbmcgaXQKPiA+IGJhY2suIFRoZSBkZWJ1Z2dl ciBjb25uZWN0aW9uCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGlzIGEgc2VwYXJhdGUgRkQgZnJvbSB0aGUgRFJNIG9uZSwgd2l0aAo+ID4gc2VwYXJh dGUgSU9DVEwgc2V0LiBXZSBkb24ndCBhbGxvdwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0aGUgRFJNIEZEIGFueSBuZXcgb3BlcmF0aW9ucyBiYXNl ZCBvbgo+ID4gcHRyYWNlIGlzIGF0dGFjaGVkIG9yIG5vdC4gV2UKPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZG9uJ3QgZXZlciBkbyB0aGF0IGNoZWNr IGV2ZW4uCj4gPiAKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgV2Ugb25seSByZXN0cmljdCB0aGUgb3BlbmluZyBvZiB0aGUKPiA+IGRlYnVnZ2VyIGNv bm5lY3Rpb24gdG8gZ2l2ZW4gUElEIHdpdGgKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcHRyYWNlX21heV9hY2Nlc3MgY2hlY2sgZm9yIG5vdy4gVGhh dCBjYW4KPiA+IGJlIGNoYW5nZWQgdG8gc29tZXRoaW5nIGVsc2UsCj4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIG5lY2Vzc2FyeS4KPiA+IAo+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgWWVhaCBJIHRoaW5rIHVubmVj ZXNzYXJpbHkgdHlpbmcgZ3B1IHByb2Nlc3Nlcwo+ID4gdG8gY3B1IHByb2Nlc3NlcyBpcyBhIGJh ZAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdGhpbmcsIGxlYXN0 IGJlY2F1c2UgZXZlbiB0b2RheSBhbGwgdGhlIHN2bQo+ID4gZGlzY3Vzc2lvbnMgd2UgaGF2ZSBz dGlsbCBoaXQKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNsZWFy IHVzZS1jYXNlcywgd2hlcmUgYSAxOjEgbWF0Y2ggaXMgbm90Cj4gPiB3YW50ZWQgKGxpa2UgbXVs dGlwbGUgZ3B1IHN2bQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c2VjdGlvbnMgd2l0aCBvZmZzZXRzKS4gTm90IGV2ZW4gc3BlYWtpbmcgb2YKPiA+IGFsbCB0aGUg Z3B1IHVzZWNhc2VzIHdoZXJlCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB0aGUgZ3B1IHZtIHNwYWNlIGlzIHN0aWxsIGVudGlyZWx5IGluZGVwZW5kZW50Cj4gPiBv ZiB0aGUgY3B1IHNpZGUuCj4gPiAKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIFNvIHRoYXQncyB3aHkgSSB0aGluayB0aGlzIGVudGlyZWx5IHNlcGFyYXRlCj4gPiBh cHByb2FjaCBsb29rcyBsaWtlIHRoZSByaWdodAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgb25lLCB3aXRoIHB0cmFjZV9tYXlfYWNjZXNzIGFzIHRoZSBhY2Nlc3MK PiA+IGNvbnRyb2wgY2hlY2sgdG8gbWFrZSBzdXJlIHdlCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBtYXRjaCBwdHJhY2Ugb24gdGhlIGNwdSBzaWRlLgo+ID4gCj4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCdXQgdGhlcmUncyB2ZXJ5 IG9idmlvdXNseSBhIGJpa2VzaGVkIHRvIGJlIGhhZAo+ID4gb24gd2hhdCB0aGUgYWN0dWFsIHVh cGkKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNob3VsZCBsb29r IGxpa2UsIGVzcGVjaWFsbHkgaG93IGdkYiBvcGVucyB1cCBhCj4gPiBncHUgZGVidWcgYWNjZXNz IGZkLiBCdXQgSQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWxz byB0aGluayB0aGF0J3Mgbm90IG11Y2ggb24gZHJtIHRvIGRlY2lkZSwKPiA+IGJ1dCB3aGF0ZXZl ciBnZGIgd2FudHMuIEFuZAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdGhlbiB3ZSBhaW0gZm9yIHNvbWUgY29uc2lzdGVuY3kgb24gdGhhdAo+ID4gbG9va3VwL2Fj Y2VzcyBjb250cm9sIHBhcnQKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIChpZGVhbGx5LCBJIG1pZ2h0IGJlIG1pc3Npbmcgc29tZSByZWFzb25zIHdoeQo+ID4gdGhp cyBpcyBhIGJhZCBpZGVhKSBhY3Jvc3MKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGRybSBkcml2ZXJzLgo+ID4gCj4gPiAKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBTbyB5b3UgbmVlZCB0byBoYXZlIGEg cmVhbGx5IHJlYWxseQo+ID4gZ29vZCBleHBsYW5hdGlvbiB3aHkgdGhlIGV1ZGVidWcgaW50ZXJm YWNlCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaXMgYWN0dWFsbHkgbmVjZXNzYXJ5Lgo+ID4gCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFRMO0RSIFRoZSBtYWluIHBvaW50IGlzIHRvIGRl Y291cGxlIHRoZQo+ID4gZGVidWdnaW5nIG9mIHRoZSBFVSB3b3JrbG9hZHMgZnJvbSB0aGUKPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVidWdnaW5n IG9mIHRoZSBDUFUgcHJvY2Vzcy4gVGhpcyBhdm9pZHMKPiA+IHRoZSBpbnRlcmZlcmVuY2Ugd2l0 aCB0aGUgQ1BVIHByb2Nlc3Mgd2l0aAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBwYXJhc2l0aWMgdGhyZWFkIGluamVjdGlvbi4gRnVydGhlciB0aGlz Cj4gPiBhbHNvIGFsbG93cyBnZW5lcmF0aW5nIGEgY29yZSBkdW1wCj4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHdpdGhvdXQgYW55IEdEQiBjb25uZWN0 ZWQuIFRoZXJlIGFyZSBhbHNvCj4gPiBtYW55IG90aGVyIHNtYWxsZXIgcHJvcy9jb25zCj4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHdoaWNoIGNhbiBi ZSBkaXNjdXNzZWQgYnV0IGZvciB0aGUgY29udGV4dAo+ID4gb2YgdGhpcyBwYXRjaCwgdGhpcyBp cyB0aGUKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg bWFpbiBvbmUuCj4gPiAKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgU28gdW5saWtlIHBhcmFzaXRpYyB0aHJlYWQgaW5qZWN0aW9uLCB3ZQo+ID4gZG9u J3QgdW5sb2NrIGFueSBzcGVjaWFsIElPQ1RMIGZvcgo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0aGUgcHJvY2VzcyB1bmRlciBkZWJ1ZyB0byBiZSBw ZXJmb3JtZWQgYnkKPiA+IHRoZSBwYXJhc2l0aWMgdGhyZWFkLCBidXQgd2UKPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWxsb3cgdGhlIG1pbmltYWwg c2V0IG9mIG9wZXJhdGlvbnMgdG8gYmUKPiA+IHBlcmZvcm1lZCBieSBHREIgYXMgaWYgdGhvc2Ug d2VyZQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBk b25lIG9uIHRoZSBFVXMgdGhlbXNlbHZlcy4KPiA+IAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBPbmUgY2FuIHRoaW5rIG9mIGl0IGxpa2UgdGhlIG1p bmltYWwgc3Vic2V0Cj4gPiBvZiBwdHJhY2UgYnV0IGZvciBFVSB0aHJlYWRzLAo+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBub3QgdGhlIENQVSB0aHJl YWRzLiBBbmQgdGh1cywgYnVpbGRpbmcgb24KPiA+IHRoaXMgaXQncyBwb3NzaWJsZSB0byBleHRl bmQKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdGhl IGNvcmUga2VybmVsIGdlbmVyYXRlZCBjb3JlIGR1bXBzIHdpdGgKPiA+IERSTSBzcGVjaWZpYyBl eHRlbnNpb24gd2hpY2gKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgd291bGQgY29udGFpbiB0aGUgRVUgdGhyZWFkL21lbW9yeSBkdW1wLgo+ID4gCj4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJdCBtaWdodCBiZSBnb29k IHRvIGRvY3VtZW50IChpbiB0aGF0IGRlYnVnZ2luZwo+ID4gZG9jIHBhdGNoIHByb2JhYmx5KSB3 aHkKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRocmVhZCBpbmpl Y3Rpb24gaXMgbm90IGEgZ3JlYXQgb3B0aW9uLCBhbmQgd2h5Cj4gPiB0aGUgdHJhZGVvZmZzIGZv cgo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVidWdnaW5nIGFy ZSBkaWZmZXJlbnQgdGhhbiBmb3IgZm9yCj4gPiBjaGVja3BvaW50L3Jlc3RvcmUsIHdoZXJlIHdp dGggQ1JJVQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd2UgbGFu ZGVkIG9uIGRvaW5nIG1vc3Qgb2YgdGhpcyBpbiB1c2Vyc3BhY2UsCj4gPiBhbmQgb2Z0ZW4gcmVx dWlyaW5nCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbmplY3Rp b24gdGhyZWFkcyB0byBtYWtlIGl0IGFsbCB3b3JrLgo+ID4gCj4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBDaGVlcnMsIFNpbWEKPiA+IAo+ID4gCj4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJlZ2FyZHMsIEpvb25hcwo+ ID4gCj4gPiAKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBSZWdhcmRzLAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIENocmlzdGlhbi4KPiA+IAo+ID4gCj4gPiAKPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBNYXR0Cj4gPiAKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ID4gWzNdaHR0cHM6Ly9wYXRjaHdvcmsuZnJl ZWRlc2t0b3Aub3JnL3BhdGNoLzYyMjUyMC8/c2VyaWVzPTE0MDIwMCZyZQo+ID4gdj02Cj4gPiAK PiA+IAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgUmVnYXJkcywKPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IENocmlzdGlhbi4KPiA+IAo+ID4gCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE1hdHQK PiA+IAo+ID4gCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgUmVnYXJkcywK PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBDaHJpc3RpYW4uCj4gPiAKPiA+ IAo+ID4gCgo=