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 smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (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 037E3CDB47E for ; Thu, 19 Oct 2023 02:48:58 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 3938541A2E; Thu, 19 Oct 2023 02:48:58 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 3938541A2E Authentication-Results: smtp2.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=eNFKMAKe X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id uVv6QAPPwehC; Thu, 19 Oct 2023 02:48:54 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp2.osuosl.org (Postfix) with ESMTPS id 04D04403E0; Thu, 19 Oct 2023 02:48:53 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 04D04403E0 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id CCB25C0071; Thu, 19 Oct 2023 02:48:53 +0000 (UTC) Received: from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136]) by lists.linuxfoundation.org (Postfix) with ESMTP id A7387C0032 for ; Thu, 19 Oct 2023 02:48:52 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 7C4F460F1B for ; Thu, 19 Oct 2023 02:48:52 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 7C4F460F1B Authentication-Results: smtp3.osuosl.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=eNFKMAKe X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0iwOtdeYtlgN for ; Thu, 19 Oct 2023 02:48:50 +0000 (UTC) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by smtp3.osuosl.org (Postfix) with ESMTPS id CD85160F13 for ; Thu, 19 Oct 2023 02:48:49 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org CD85160F13 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1697683728; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+MK3lnNwJi63gyMUG1dSulN3ek4pfNyk8XQgv0G4E+Q=; b=eNFKMAKeRQ+FL3a26zkwzioqy8ilP+HYK2sSRTV+GL76ZIPzPuebKG3Od/OtXUyNhX0/sk wWYp8mW2ByysSWs3lxS3bVfWU+mld1ZiBrx7q2+5I1Ox00dG1+WxdlkdyPZ+dEDzgzASN4 J72YxhR4VjyDkyGtN4me5TbxT+mRivM= Received: from mail-lj1-f199.google.com (mail-lj1-f199.google.com [209.85.208.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-270-6oNXwpoNNIO44Mt-cWTFmQ-1; Wed, 18 Oct 2023 22:48:42 -0400 X-MC-Unique: 6oNXwpoNNIO44Mt-cWTFmQ-1 Received: by mail-lj1-f199.google.com with SMTP id 38308e7fff4ca-2ba1949656bso69624871fa.0 for ; Wed, 18 Oct 2023 19:48:41 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697683721; x=1698288521; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+MK3lnNwJi63gyMUG1dSulN3ek4pfNyk8XQgv0G4E+Q=; b=wq2Sz7K4VUcuMZOTofPMC1Ca9u8qEf2f+I1VSBfJZbzpSuWcq8SLOvdwTnFSgQvyHO PhECpuAxDm/lKax6zsx7Okw7BnxDCRFNTujr0PMOtBGNjjFwl9HA2JxXfMbbrJpnODF0 iLrOL+3Jz/WZaN/ZAC6OHUAtGFANiGA6vv5frpSrPPLOBuRAYyUH2oZ3XNNgEazbTipa Z92oPSlj5P6Nh0lXHXyLWaysPe10Gkhq+FerB3gVEKNbgA34vOnyXW1jZXq2TnPTbtey CEoYhDbJnUmWRhapLpYoweRi3F0JFLi01lFOOzvrIHtDHBikkw06L1bDOAtVIhWN0KNR vI8w== X-Gm-Message-State: AOJu0YzwOTlQz5mCOC1jRZIbTZ75x8c8nqwCDDEYEzuS5/JZhpZF4R3M YioY8vVmcjcfDltKOigtcH4bOoNk+yDuRJ37UBx0TN9Hc4CYjDLEnaZfkskpZ4/9XFwFkoGJy/X J8iGtu9eyD04/9AgkKHigq5/gJfuJa9ZJWw/WDzsnQI+T8qj2zbl0dLO4FA== X-Received: by 2002:ac2:5e77:0:b0:500:ac71:f26a with SMTP id a23-20020ac25e77000000b00500ac71f26amr463957lfr.57.1697683720598; Wed, 18 Oct 2023 19:48:40 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGeARAgRY18DjAKKjKOFpXBe4fT/FGG0mulfI787BzsUMtbGbbPpo5XyuremRlinmT+yffV+EkpOWnqDL832EU= X-Received: by 2002:ac2:5e77:0:b0:500:ac71:f26a with SMTP id a23-20020ac25e77000000b00500ac71f26amr463944lfr.57.1697683720095; Wed, 18 Oct 2023 19:48:40 -0700 (PDT) MIME-Version: 1.0 References: <1696928580-7520-1-git-send-email-si-wei.liu@oracle.com> <1696928580-7520-3-git-send-email-si-wei.liu@oracle.com> <1bd79050-8eb5-49f6-9e58-6c7eb3fcab3e@oracle.com> <8f8c0c28-59a4-489b-9276-fc3b5cfa8faa@oracle.com> <9c74b299-98ec-46b3-bf21-972f9883ca84@oracle.com> <35efd377-61f7-4cef-adf8-61e9269e4be9@oracle.com> In-Reply-To: <35efd377-61f7-4cef-adf8-61e9269e4be9@oracle.com> From: Jason Wang Date: Thu, 19 Oct 2023 10:48:29 +0800 Message-ID: Subject: Re: [PATCH 2/4] vhost-vdpa: reset vendor specific mapping to initial state in .release To: Si-Wei Liu X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Cc: xuanzhuo@linux.alibaba.com, mst@redhat.com, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, Eugenio Perez Martin X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" T24gVGh1LCBPY3QgMTksIDIwMjMgYXQgNzoyMeKAr0FNIFNpLVdlaSBMaXUgPHNpLXdlaS5saXVA b3JhY2xlLmNvbT4gd3JvdGU6Cj4KPgo+Cj4gT24gMTAvMTgvMjAyMyA0OjE0IEFNLCBFdWdlbmlv IFBlcmV6IE1hcnRpbiB3cm90ZToKPiA+IE9uIFdlZCwgT2N0IDE4LCAyMDIzIGF0IDEwOjQ04oCv QU0gU2ktV2VpIExpdSA8c2ktd2VpLmxpdUBvcmFjbGUuY29tPiB3cm90ZToKPiA+Pgo+ID4+Cj4g Pj4gT24gMTAvMTcvMjAyMyAxMDoyNyBQTSwgSmFzb24gV2FuZyB3cm90ZToKPiA+Pj4gT24gV2Vk LCBPY3QgMTgsIDIwMjMgYXQgMTI6MzbigK9QTSBTaS1XZWkgTGl1IDxzaS13ZWkubGl1QG9yYWNs ZS5jb20+IHdyb3RlOgo+ID4+Pj4KPiA+Pj4+IE9uIDEwLzE2LzIwMjMgNzozNSBQTSwgSmFzb24g V2FuZyB3cm90ZToKPiA+Pj4+PiBPbiBUdWUsIE9jdCAxNywgMjAyMyBhdCA0OjMw4oCvQU0gU2kt V2VpIExpdSA8c2ktd2VpLmxpdUBvcmFjbGUuY29tPiB3cm90ZToKPiA+Pj4+Pj4gT24gMTAvMTYv MjAyMyA0OjI4IEFNLCBFdWdlbmlvIFBlcmV6IE1hcnRpbiB3cm90ZToKPiA+Pj4+Pj4+IE9uIE1v biwgT2N0IDE2LCAyMDIzIGF0IDg6MzPigK9BTSBKYXNvbiBXYW5nIDxqYXNvd2FuZ0ByZWRoYXQu Y29tPiB3cm90ZToKPiA+Pj4+Pj4+PiBPbiBGcmksIE9jdCAxMywgMjAyMyBhdCAzOjM24oCvUE0g U2ktV2VpIExpdSA8c2ktd2VpLmxpdUBvcmFjbGUuY29tPiB3cm90ZToKPiA+Pj4+Pj4+Pj4gT24g MTAvMTIvMjAyMyA4OjAxIFBNLCBKYXNvbiBXYW5nIHdyb3RlOgo+ID4+Pj4+Pj4+Pj4gT24gVHVl LCBPY3QgMTAsIDIwMjMgYXQgNTowNeKAr1BNIFNpLVdlaSBMaXUgPHNpLXdlaS5saXVAb3JhY2xl LmNvbT4gd3JvdGU6Cj4gPj4+Pj4+Pj4+Pj4gRGV2aWNlcyB3aXRoIG9uLWNoaXAgSU9NTVUgb3Ig dmVuZG9yIHNwZWNpZmljIElPVExCIGltcGxlbWVudGF0aW9uCj4gPj4+Pj4+Pj4+Pj4gbWF5IG5l ZWQgdG8gcmVzdG9yZSBpb3RsYiBtYXBwaW5nIHRvIHRoZSBpbml0aWFsIG9yIGRlZmF1bHQgc3Rh dGUKPiA+Pj4+Pj4+Pj4+PiB1c2luZyB0aGUgLnJlc2V0X21hcCBvcCwgYXMgaXQncyBkZXNpcmFi bGUgZm9yIHNvbWUgcGFyZW50IGRldmljZXMKPiA+Pj4+Pj4+Pj4+PiB0byBzb2xlbHkgbWFuaXB1 bGF0ZSBtYXBwaW5ncyBieSBpdHMgb3duLCBpbmRlcGVuZGVudCBvZiB2aXJ0aW8gZGV2aWNlCj4g Pj4+Pj4+Pj4+Pj4gc3RhdGUuIEZvciBpbnN0YW5jZSwgZGV2aWNlIHJlc2V0IGRvZXMgbm90IGNh dXNlIG1hcHBpbmcgZ28gYXdheSBvbgo+ID4+Pj4+Pj4+Pj4+IHN1Y2ggSU9UTEIgbW9kZWwgaW4g bmVlZCBvZiBwZXJzaXN0ZW50IG1hcHBpbmcuIEJlZm9yZSB2aG9zdC12ZHBhCj4gPj4+Pj4+Pj4+ Pj4gaXMgZ29pbmcgYXdheSwgZ2l2ZSB0aGVtIGEgY2hhbmNlIHRvIHJlc2V0IGlvdGxiIGJhY2sg dG8gdGhlIGluaXRpYWwKPiA+Pj4+Pj4+Pj4+PiBzdGF0ZSBpbiB2aG9zdF92ZHBhX2NsZWFudXAo KS4KPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFNpLVdlaSBMaXUg PHNpLXdlaS5saXVAb3JhY2xlLmNvbT4KPiA+Pj4+Pj4+Pj4+PiAtLS0KPiA+Pj4+Pj4+Pj4+PiAg ICAgICBkcml2ZXJzL3Zob3N0L3ZkcGEuYyB8IDE2ICsrKysrKysrKysrKysrKysKPiA+Pj4+Pj4+ Pj4+PiAgICAgICAxIGZpbGUgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKQo+ID4+Pj4+Pj4+Pj4+ Cj4gPj4+Pj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmhvc3QvdmRwYS5jIGIvZHJpdmVy cy92aG9zdC92ZHBhLmMKPiA+Pj4+Pj4+Pj4+PiBpbmRleCA4NTE1MzVmLi5hM2Y4MTYwIDEwMDY0 NAo+ID4+Pj4+Pj4+Pj4+IC0tLSBhL2RyaXZlcnMvdmhvc3QvdmRwYS5jCj4gPj4+Pj4+Pj4+Pj4g KysrIGIvZHJpdmVycy92aG9zdC92ZHBhLmMKPiA+Pj4+Pj4+Pj4+PiBAQCAtMTMxLDYgKzEzMSwx NSBAQCBzdGF0aWMgc3RydWN0IHZob3N0X3ZkcGFfYXMgKnZob3N0X3ZkcGFfZmluZF9hbGxvY19h cyhzdHJ1Y3Qgdmhvc3RfdmRwYSAqdiwKPiA+Pj4+Pj4+Pj4+PiAgICAgICAgICAgICAgcmV0dXJu IHZob3N0X3ZkcGFfYWxsb2NfYXModiwgYXNpZCk7Cj4gPj4+Pj4+Pj4+Pj4gICAgICAgfQo+ID4+ Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4gK3N0YXRpYyB2b2lkIHZob3N0X3ZkcGFfcmVzZXRfbWFw KHN0cnVjdCB2aG9zdF92ZHBhICp2LCB1MzIgYXNpZCkKPiA+Pj4+Pj4+Pj4+PiArewo+ID4+Pj4+ Pj4+Pj4+ICsgICAgICAgc3RydWN0IHZkcGFfZGV2aWNlICp2ZHBhID0gdi0+dmRwYTsKPiA+Pj4+ Pj4+Pj4+PiArICAgICAgIGNvbnN0IHN0cnVjdCB2ZHBhX2NvbmZpZ19vcHMgKm9wcyA9IHZkcGEt PmNvbmZpZzsKPiA+Pj4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+Pj4gKyAgICAgICBpZiAob3BzLT5y ZXNldF9tYXApCj4gPj4+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICAgIG9wcy0+cmVzZXRfbWFwKHZk cGEsIGFzaWQpOwo+ID4+Pj4+Pj4+Pj4+ICt9Cj4gPj4+Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+Pj4+ ICAgICAgIHN0YXRpYyBpbnQgdmhvc3RfdmRwYV9yZW1vdmVfYXMoc3RydWN0IHZob3N0X3ZkcGEg KnYsIHUzMiBhc2lkKQo+ID4+Pj4+Pj4+Pj4+ICAgICAgIHsKPiA+Pj4+Pj4+Pj4+PiAgICAgICAg ICAgICAgc3RydWN0IHZob3N0X3ZkcGFfYXMgKmFzID0gYXNpZF90b19hcyh2LCBhc2lkKTsKPiA+ Pj4+Pj4+Pj4+PiBAQCAtMTQwLDYgKzE0OSwxMyBAQCBzdGF0aWMgaW50IHZob3N0X3ZkcGFfcmVt b3ZlX2FzKHN0cnVjdCB2aG9zdF92ZHBhICp2LCB1MzIgYXNpZCkKPiA+Pj4+Pj4+Pj4+Pgo+ID4+ Pj4+Pj4+Pj4+ICAgICAgICAgICAgICBobGlzdF9kZWwoJmFzLT5oYXNoX2xpbmspOwo+ID4+Pj4+ Pj4+Pj4+ICAgICAgICAgICAgICB2aG9zdF92ZHBhX2lvdGxiX3VubWFwKHYsICZhcy0+aW90bGIs IDBVTEwsIDBVTEwgLSAxLCBhc2lkKTsKPiA+Pj4+Pj4+Pj4+PiArICAgICAgIC8qCj4gPj4+Pj4+ Pj4+Pj4gKyAgICAgICAgKiBEZXZpY2VzIHdpdGggdmVuZG9yIHNwZWNpZmljIElPTU1VIG1heSBu ZWVkIHRvIHJlc3RvcmUKPiA+Pj4+Pj4+Pj4+PiArICAgICAgICAqIGlvdGxiIHRvIHRoZSBpbml0 aWFsIG9yIGRlZmF1bHQgc3RhdGUgd2hpY2ggaXMgbm90IGRvbmUKPiA+Pj4+Pj4+Pj4+PiArICAg ICAgICAqIHRocm91Z2ggZGV2aWNlIHJlc2V0LCBhcyB0aGUgSU9UTEIgbWFwcGluZyBtYW5pcHVs YXRpb24KPiA+Pj4+Pj4+Pj4+PiArICAgICAgICAqIGNvdWxkIGJlIGRlY291cGxlZCBmcm9tIHRo ZSB2aXJ0aW8gZGV2aWNlIGxpZmUgY3ljbGUuCj4gPj4+Pj4+Pj4+Pj4gKyAgICAgICAgKi8KPiA+ Pj4+Pj4+Pj4+IFNob3VsZCB3ZSBkbyB0aGlzIGFjY29yZGluZyB0byB3aGV0aGVyIElPVExCX1BS RVNJU1QgaXMgc2V0Pwo+ID4+Pj4+Pj4+PiBXZWxsLCBpbiB0aGVvcnkgdGhpcyBzZWVtcyBsaWtl IHNvIGJ1dCBpdCdzIHVubmVjZXNzYXJ5IGNvZGUgY2hhbmdlCj4gPj4+Pj4+Pj4+IGFjdHVhbGx5 LCBhcyB0aGF0IGlzIHRoZSB3YXkgaG93IHZEUEEgcGFyZW50IGJlaGluZCBwbGF0Zm9ybSBJT01N VSB3b3Jrcwo+ID4+Pj4+Pj4+PiB0b2RheSwgYW5kIHVzZXJzcGFjZSBkb2Vzbid0IGJyZWFrIGFz IG9mIHRvZGF5LiA6KQo+ID4+Pj4+Pj4+IFdlbGwsIHRoaXMgaXMgb25lIHF1ZXN0aW9uIEkndmUg ZXZlciBhc2tlZCBiZWZvcmUuIFlvdSBoYXZlIGV4cGxhaW5lZAo+ID4+Pj4+Pj4+IHRoYXQgb25l IG9mIHRoZSByZWFzb24gdGhhdCB3ZSBkb24ndCBicmVhayB1c2Vyc3BhY2UgaXMgdGhhdCB0aGV5 IG1heQo+ID4+Pj4+Pj4+IGNvdXBsZSBJT1RMQiByZXNldCB3aXRoIHZEUEEgcmVzZXQgYXMgd2Vs bC4gT25lIGV4YW1wbGUgaXMgdGhlIFFlbXUuCj4gPj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4gQXMgZXhw bGFpbmVkIGluIHByZXZpb3VzIHRocmVhZHMgWzFdWzJdLCB3aGVuIElPVExCX1BFUlNJU1QgaXMg bm90IHNldAo+ID4+Pj4+Pj4+PiBpdCBkb2Vzbid0IG5lY2Vzc2FyaWx5IG1lYW4gdGhlIGlvdGxi IHdpbGwgZGVmaW5pdGVseSBiZSBkZXN0cm95ZWQKPiA+Pj4+Pj4+Pj4gYWNyb3NzIHJlc2V0ICh0 aGluayBhYm91dCB0aGUgcGxhdGZvcm0gSU9NTVUgY2FzZSksIHNvIHVzZXJzcGFjZSB0b2RheQo+ ID4+Pj4+Pj4+PiBpcyBhbHJlYWR5IHRvbGVyYXRpbmcgZW5vdWdoIHdpdGggZWl0aGVyIGdvb2Qg b3IgYmFkIElPTU1VLgo+ID4+Pj4+IEknbSBjb25mdXNlZCwgaG93IHRvIGRlZmluZSB0b2xlcmF0 aW5nIGhlcmU/Cj4gPj4+PiBUb2xlcmF0aW5nIGRlZmluZWQgYXMgUUVNVSBoYXMgdG8gcHJvYWN0 aXZlbHkgdW5tYXAgYmVmb3JlIHJlc2V0IGp1c3QgdG8KPiA+Pj4+IHdvcmthcm91bmQgdGhlIGRy aXZlciBidWcgKG9uLWNoaXAgbWFwcyBvdXQgb2Ygc3luYyksIHVuY29uZGl0aW9uYWxseQo+ID4+ Pj4gZm9yIHBsYXRmb3JtIG9yIG9uLWNoaXAuIFdoaWxlIHdlIGFsbCBrbm93IGl0IGRvZXNuJ3Qg aGF2ZSB0byBkbyBzbyBmb3IKPiA+Pj4+IHBsYXRmb3JtIElPTU1VLCB0aG91Z2ggdXNlcnNwYWNl IGhhcyBubyBtZWFucyB0byBkaXN0aW5ndWlzaC4gVGhhdCBzYWlkLAo+ID4+Pj4gdXNlcnNwYWNl IGlzIHNhY3JpZmljaW5nIHJlc2V0IHRpbWUgcGVyZm9ybWFuY2Ugb24gcGxhdGZvcm0gSU9NTVUg c2V0dXAKPiA+Pj4+IGp1c3QgZm9yIHdvcmtpbmcgYXJvdW5kIGJ1Z2d5IGltcGxlbWVudGF0aW9u IGluIHRoZSBvdGhlciBzZXR1cC4KPiA+Pj4gT2ssIHNvIHdoYXQgeW91IGFjdHVhbGx5IG1lYW4g aXMgdGhhdCB1c2Vyc3BhY2UgY2FuIHRvbGVyYXRlIHRoZSAiYnVnIgo+ID4+PiB3aXRoIHRoZSBw ZXJmb3JtYW5jZSBwZW5hbHR5Lgo+ID4+IFJpZ2h0Lgo+ID4+Pgo+ID4+Pj4+IEZvciBleGFtcGxl LCBpZiBpdCBoYXMgdG9sZXJhbmNlLCB3aHkgYm90aGVyPwo+ID4+Pj4gSSdtIG5vdCBzdXJlIEkg Z2V0IHRoZSBxdWVzdGlvbi4gQnV0IEkgdGhpbmsgdXNlcnNwYWNlIGlzIGNvbXByb21pc2luZwo+ ID4+Pj4gYmVjYXVzZSBvZiBidWdneSBpbXBsZW1lbnRhdGlvbiBpbiBhIGZldyBkcml2ZXJzIGRv ZXNuJ3QgbWVhbiB3ZSBzaG91bGQKPiA+Pj4+IHVuaWZvcm1seSBlbmZvcmNlIHN1Y2ggYmVoYXZp b3IgZm9yIGFsbCBzZXRfbWFwL2RtYV9tYXAgaW1wbGVtZW50YXRpb25zLgo+ID4+PiBUaGlzIGlz IG5vdCBteSBwb2ludC4gSSBtZWFudCwgd2UgY2FuIGZpeCB3ZSBuZWVkIGEgbmVnb3RpYXRpb24g aW4KPiA+Pj4gb3JkZXIgdG8gbGV0IHNvbWUgImJ1Z2d5IiBvbGQgdXNlciBzcGFjZSB0byBzdXJ2 aXZlIGZyb20gdGhlIGNoYW5nZXMuCj4gPj4gVXNlcnNwYWNlIGlzIG5vIGJ1Z2d5IHRvZGF5LCBo b3cgdG8gZGVmaW5lICJidWdneSI/IFVzZXJzcGFjZSB3aXRoCj4gPj4gdG9sZXJhbmNlIGNvdWxk IHN1cnZpdmUganVzdCBmaW5lIG5vIG1hdHRlciBpZiB0aGlzIG5lZ290aWF0aW9uIG9yIGJ1Z2d5 Cj4gPj4gZHJpdmVyIGJlaGF2aW9yIGVtdWxhdGlvbiBpcyBhcm91bmQgb3Igbm90LiBJZiBhbnkg dXNlcnNwYWNlIGRvZXNuJ3QKPiA+PiB0b2xlcmF0ZSwgaXQgY2FuIHdvcmsgc3RpbGwgZmluZSBv biBnb29kIG9uLWNoaXAgSU9NTVUgb3IgcGxhdGZvcm0KPiA+PiBJT01NVSwgbm8gbWF0dGVyIGlm IHRoZSBuZWdvdGlhdGlvbiBpcyBhcm91bmQgb3Igbm90Lgo+ID4+Pj4+Pj4+IFRoaXMgY29kZSBv Zgo+ID4+Pj4+Pj4+PiBub3QgY2hlY2tpbmcgSU9UTEJfUEVSU0lTVCBiZWluZyBzZXQgaXMgaW50 ZW50aW9uYWwsIHRoZXJlJ3Mgbm8gcG9pbnQgdG8KPiA+Pj4+Pj4+Pj4gZW11bGF0ZSBiYWQgSU9N TVUgYmVoYXZpb3IgZXZlbiBmb3Igb2xkZXIgdXNlcnNwYWNlICh3aXRoIGltcHJvcGVyCj4gPj4+ Pj4+Pj4+IGVtdWxhdGlvbiB0byBiZSBkb25lIGl0IHdvdWxkIHJlc3VsdCBpbiBldmVuIHdvcnNl IHBlcmZvcm1hbmNlKS4KPiA+Pj4+PiBJIGNhbiBlYXNpbHkgaW1hZ2luZSBhIGNhc2U6Cj4gPj4+ Pj4KPiA+Pj4+PiBUaGUgb2xkIFFlbXUgdGhhdCB3b3JrcyBvbmx5IHdpdGggYSBzZXR1cCBsaWtl IG1seDVfdmRwYS4KPiA+Pj4+IE5vdGVkLCBzZWVtcyB0byBtZSB0aGVyZSdzIG5vIHN1Y2ggY2Fz ZSBvZiBhIHVzZXJzcGFjZSBpbXBsZW1lbnRhdGlvbgo+ID4+Pj4gdGhhdCBvbmx5IHdvcmtzIHdp dGggbWx4NV92ZHBhIG9yIGl0cyBmcmllbmRzLCBidXQgZG9lc24ndCB3b3JrIHdpdGggdGhlCj4g Pj4+PiBvdGhlcnMgZS5nLiBwbGF0Zm9ybSBJT01NVSwgb3Igd2VsbCBiZWhhdmluZyBvbi1jaGlw IElPTU1VCj4gPj4+PiBpbXBsZW1lbnRhdGlvbnMuCj4gPj4+IEl0J3Mgbm90IGhhcmQgdG8gdGhp bmsgb2YgYSBjYXNlIHdoZXJlOgo+ID4+Pgo+ID4+PiAxKSB0aGUgZW52aXJvbm1lbnQgaGFzIG1s eDVfdmRwYSBvbmx5Cj4gPj4+IDIpIGtlcm5lbCBkb2MgY2FuJ3QgaGF2ZSBlbmRsZXNzIGRldGFp bHMsIHNvIHdoZW4gZGV2ZWxvcGluZwo+ID4+PiBhcHBsaWNhdGlvbiwgdGhlIGF1dGhvciBub3Rp Y2UgSU9UTEIgaXMgY2xlYXJlZCBkdXJpbmcgcmVzZXQKPiA+PiBJIGdldCBpdCwgYnV0IG15IHF1 ZXN0aW9uIHdhcyB0aGF0LCBldmVuIGlmIHRoZSBhdXRob3IgaGFkIG5vdGljZWQgSU9UTEIKPiA+ PiBpcyBjbGVhcmVkIGR1cmluZyByZXNldCwgZG9lcyBoZSBjYXJlIG9yIG5vdCB0byBtYWtlIElP VExCIGJhY2sgd29ya2luZwo+ID4+IGFnYWluPyBNeSBwb2ludCBpcyB0aGF0LCBpZiB0aGlzIG9s ZCBzZXR1cCBpcyBzdXBwb3NlZCB0byAid29yayIgb24KPiA+PiBtbHg1X3ZkcGEsIHRoZW4gdGhl IGRldmVsb3BlciBtdXN0IGNvbWUgdXAgd2l0aCBzb3J0IG9mICJxdWlyayIgdG8KPiA+PiByZWNv dmVyIHRoZSBJT1RMQiB0byBtYWtlIGl0IGJhY2sgdG8gd29ya2luZyBzdGF0ZSBhZ2FpbiBhZnRl ciB0aGUKPiA+PiByZXNldC4gSXQgd2lsbCBiZSBtb3JlIGp1c3RpZmllZCB0byBjb21lIHVwIHdp dGggdGhlIHByb3BlciBmaXggZm9yCj4gPj4gY29tcGF0aWJpbGl0eS9lbXVsYXRpb24gb25seSB1 bnRpbCB3ZSBrbm93IHdoYXQgc2hvdWxkIGJlIGV4cGVjdGVkIHRvCj4gPj4gd29yayBhbmQgdGhy b3VnaCB3aGljaCBwb3NzaWJsZSBtZWFucyB0byBtYWtpbmcgaXQgYmFjayB0byB3b3JrLCByYXRo ZXIKPiA+PiB0aGFuIGJsaW5kbHkgZW11bGF0ZSB0aGUgYnVnZ3kgYmVoYXZpb3Igc29sZWx5IGJh c2VkIG9uIGEgZmV3IGRyaXZlcidzCj4gPj4gb3duIGltcGxlbWVudGF0aW9uLiBJJ20gcHJldHR5 IHN1cmUgdGhlcmUgYXJlIG11bHRpcGxlIHdheXMgdG8gaW1wbGVtZW50Cj4gPj4gdGhlIGJ1Z2d5 IHJlc2V0IGJlaGF2aW9yIGluIHRoZSBkcml2ZXIsIGRvZXMgaXQgbWVhbiB3ZSBoYXZlIHRvIGVt dWxhdGUKPiA+PiB2YXJpb3VzIGNvcnJ1cHRlZCBtYXBwaW5nIHN0YXRlcyBpbiB0aGUgaW5kaXZp ZHVhbCBvbi1jaGlwIGlvbW11IGl0c2VsZj8KPiA+PiBIb3cgaXMgaXQgYWJsZSB0byBoZWxwIHRo ZSBkZXZlbG9wZXIgdXNlciBpZiB3ZSBhcmUgYWJsZSB0byByZXBsaWNhdGUKPiA+PiB0aGUgc2Ft ZSBjb3JydXB0ZWQgbWFwcGluZyBzdGF0ZSBpbiB0aGUgb24tY2hpcCBpb21tdSBhZnRlciByZXNl dCwgYW55Cj4gPj4gcmVhbC1saWZlIHVzZXIgb25seSBjYXJlcyBhYm91dCBtYXBwaW5nIGJlaW5n IGNvcnJ1cHRlZCBpbiB0aGUgc2FtZSB3YXksCj4gPj4gcmF0aGVyIHRoYW4gY2FyZXMgbW9yZSBh Ym91dCB0aGUgcXVpcmsgc2VxdWVuY2Ugb3Igd29yayBhcm91bmQgdG8gZ2V0Cj4gPj4gaW90bGIg bWFwcyBvdXQgb2YgdGhlIGJyb2tlbiBzdGF0ZT8KPiA+Pgo+ID4+IE9ubHkgaWYgdGhlIHVzZXJz cGFjZSBpcyBsaWtlIGEgdGVzdCBmYWNpbGl0eSB0byBleHBlY3Qgc29tZSB0ZXN0IGNhc2UKPiA+ PiB0byBmYWlsIG9uIG1seDVfdmRwYSBhZnRlciByZXNldCAtLSBJIGFzc3VtZSB0aGF0IGlzIG5v dCByZWFsLWxpZmUgdXNlcgo+ID4+IGF0IGFsbC4KPiA+Pj4+IFRoZSBVbm1hcCtyZW1hcCB0cmlj ayBhcm91bmQgdmRwYSByZXNldCB3b3JrcyB0b3RhbGx5Cj4gPj4+PiBmaW5lIGZvciBwbGF0Zm9y bSBJT01NVSwgZXhjZXB0IHdpdGggc3ViLW9wdGltYWwgcGVyZm9ybWFuY2UuIE90aGVyIHRoYW4K PiA+Pj4+IHRoaXMgdHJpY2ssIEkgY2Fubm90IGVhc2lseSB0aGluayBvZiBvdGhlciBtZWFucyBv ciBpb3RsYiBtZXNzYWdlCj4gPj4+PiBzZXF1ZW5jZSBmb3IgdXNlcnNwYWNlIHRvIHJlY292ZXIg dGhlIGJvZ3VzIHN0YXRlIGFuZCBtYWtlIGlvdGxiIGJhY2sgdG8KPiA+Pj4+IHdvcmsgYWdhaW4g YWZ0ZXIgcmVzZXQuCj4gPj4+IFllcyBmb3Igc3VyZSwgYnV0IHdlIGNhbid0IGF1ZGl0IGV2ZXJ5 IHVzZXIgc3BhY2UsIG5vPwo+ID4+IFdlIGRvbid0IGhhdmUgdG8sIGFzIHVzZXJzcGFjZSBoZXJl IGhhcyBubyBidWcgYXQgYWxsLiBUaGUgYnVnIGV4aXN0cyBpbgo+ID4+IHRoZSBkcml2ZXIgbm90 IGluIHVzZXJzcGFjZS4gUmVhbCBsaWZlIHVzZXJzcGFjZSBhcHAgb25seSBjYXJlcyBhYm91dAo+ ID4+IG1ha2luZyB0aGluZ3Mgd29yayBub3QgYXNzZXJ0aW5nIHNvbWV0aGluZyBtdXN0IGJlIGJy b2tlbi4KPiA+Pj4+IEFyZSB3ZSB0YWxraW5nIGFib3V0IGh5cG5vc2lzIHRoYXQgaGFzIG5vIHJl YWwKPiA+Pj4+IGJhc2lzIHRvIGV4aXN0IGluIHRoZSByZWFsIHdvcmxkPwo+ID4+PiBJbnN0ZWFk IG9mIHRyeWluZyB0byBhbnN3ZXIgdGhlc2UgaGFyZCBxdWVzdGlvbnMsIEkgd291bGQgZ28gYW5v dGhlcgo+ID4+PiB3YXkuIFRoYXQgaXMsIHN0aWNrIHRvIHRoZSBvbGQgYmVoYXZpb3VyIHdoZW4g SU9UTEJfUFJFU0lTSVQgaXMgbm90Cj4gPj4+IHNldCBieSB0aGUgYmFja2VuZC4gVGhpcyBpcyBt dWNoIGVhc2llci4KPiA+PiBQbGVhc2UgYmUgbm90ZWQgdGhlIG9sZCAoYnJva2VuKSBiZWhhdmlv ciBjYW4gdmFyeSBiZXR3ZWVuIGRpZmZlcmVudAo+ID4+IHBhcmVudCBkcml2ZXIgaW1wbGVtZW50 YXRpb25zLiBJdCdzIGRyaXZlcidzIHNwZWNpZmljIG93biBwcm9ibGVtLCBpZgo+ID4+IHRoZXJl IGFyZSBOIHdheXMgdG8gZm9yIGRyaXZlciB0byBpbXBsZW1lbnQgYnVnZ3kgLnJlc2V0LCBkbyB3 ZSBoYXZlIHRvCj4gPj4gZW11bGF0ZSBOIGZsYXZvcnMgb2YgZGlmZmVyZW50IHZkcGEgcmVzZXQg YmVoYXZpb3I/Cj4gPj4KPiA+Pj4+PiAgICAgSWYgd2UgZG8KPiA+Pj4+PiB0aGlzIHdpdGhvdXQg YSBuZWdvdGlhdGlvbiwgSU9UTEIgd2lsbCBub3QgYmUgY2xlYXIgYnV0IHRoZSBRZW11IHdpbGwK PiA+Pj4+PiB0cnkgdG8gcmUtcHJvZ3JhbSB0aGUgSU9UTEIgYWZ0ZXIgcmVzZXQuIFdoaWNoIHdp bGwgYnJlYWs/Cj4gPj4+Pj4KPiA+Pj4+PiAxKSBzdGljayB0aGUgZXhhY3Qgb2xkIGJlaGF2aW91 ciB3aXRoIGp1c3Qgb25lIGxpbmUgb2YgY2hlY2sKPiA+Pj4+IEl0J3Mgbm90IGp1c3Qgb25lIGxp bmUgb2YgY2hlY2sgaGVyZSwgdGhlIG9sZCBiZWhhdmlvciBlbXVsYXRpb24gaGFzIHRvCj4gPj4+ PiBiZSBkb25lIGFzIEV1Z2VuaW8gaWxsdXN0cmF0ZWQgaW4gdGhlIG90aGVyIGVtYWlsLgo+ID4+ PiBGb3Igdmhvc3QtdkRQQSBpdCdzIGp1c3QKPiA+Pj4KPiA+Pj4gaWYgKElPVExCX1BFUlNJU1Qg aXMgYWNrZWQgYnkgdXNlcnNwYWNlKQo+ID4+PiAgICAgICByZXNldF9tYXAoKQo+ID4+Pgo+ID4+ PiBGb3IgcGFyZW50LCBpdCdzIHNvbWVob3cgc2ltaWxhcjoKPiA+Pj4KPiA+Pj4gZHVyaW5nIC5y ZXNldCgpCj4gPj4+Cj4gPj4+IGlmIChJT1RMQl9QRVJTSVNUIGlzIG5vdCBhY2tlZCBieSB1c2Vy c3BhY2UpCj4gPj4+ICAgICAgICAgICByZXNldF92ZW5kb3JfbWFwcGluZ3MoKQo+ID4+Pgo+ID4+ PiBBbnl0aGluZyBJIG1pc3NlZCBoZXJlPwo+ID4+IEZpcnN0LCB0aGUgaWRlYWwgZml4IHdvdWxk IGJlIHRvIGxlYXZlIHRoaXMgcmVzZXRfdmVuZG9yX21hcHBpbmdzKCkKPiA+PiBlbXVsYXRpb24g Y29kZSBvbiB0aGUgaW5kaXZpZHVhbCBkcml2ZXIgaXRzZWxmLCB3aGljaCBhbHJlYWR5IGhhcyB0 aGUKPiA+PiBicm9rZW4gYmVoYXZpb3IuIEJ1dCB0b2RheSB0aGVyZSdzIG5vIGJhY2tlbmQgZmVh dHVyZSBuZWdvdGlhdGlvbgo+ID4+IGJldHdlZW4gdmhvc3QtdmRwYSBhbmQgdGhlIHBhcmVudCBk cml2ZXIuIERvIHdlIHdhbnQgdG8gc2VuZCBkb3duIHRoZQo+ID4+IGFja2VkX2JhY2tlbmRfZmVh dHVyZXMgdG8gcGFyZW50IGRyaXZlcnM/Cj4gPj4KPiA+IFdoYXQgaWYgd2UgYWRkIGEgbW9kdWxl IHBhcmFtZXRlciB0byBib3RoIG1seDUgYW5kIHZkcGFfc2ltIHRvIGtlZXAKPiA+IHRoZSBvbGQg YmVoYXZpb3I/IExldCdzIGNhbGwgaXQgY2xlYW5faW90bGJfb25fcmVzZXQgZm9yIG5vdy4KPiA+ Cj4gPiBJbiBteSBvcGluaW9uIHdlIGNhbiBsZWF2ZSBpdCBvZmYgYnkgZGVmYXVsdCwgc28gdGhl c2UgdXNlcnNwYWNlIGFwcHMKPiA+IGNhbiBnZXQgYmFjayB0byB0aGUgcHJldmlvdXMgYmVoYXZp b3IuIEl0IHdvdWxkIGJlIGlkZWFsIGlmIHdlIHNldCBhCj4gPiBkZXByZWNhdGlvbiBkYXRlIGZv ciBpdCB0aG91Z2guCj4gPgo+ID4gVGhpcyB3YXkgbmV3IGJhY2tlbmRzLCB3aGV0aGVyIHRoZXkg aW1wbGVtZW50IC5zZXRfbWFwIG9yIG5vdCwgd2lsbAo+ID4gaGF2ZSBjb3JyZWN0IGJlaGF2aW9y Lgo+ID4KPiA+IFdvdWxkIHRoYXQgd29yaz8KPiBHcmVhdCBpZGVhLCB0aGlzIGRlZmluaXRlbHkg d2lsbCB3b3JrISBXaXRoIHRoaXMgbW9kdWxlIHBhcmFtZXRlciwKPiBpbmRpdmlkdWFsIGRyaXZl ciBzdGlsbCBrZWVwcyB0aGUgcG9zc2liaWxpdHkgdG8gcmV2ZXJ0IHRvIHByZXZpb3VzCj4gYnVn Z3kgYmVoYXZpb3Igd2VyZSB0byB1bmJyZWFrIG9sZCB1c2Vyc3BhY2UsIGNvZGUgY2FuIGJlIG9i c29sZXRlZAo+IGluZGVwZW5kZW50bHkgcGVyIGVhY2ggZHJpdmVyJ3Mgc3BlY2lmaWMgdXNlIGNh c2UgYW5kIG5lZWQsIGFuZCB3ZSBkb24ndAo+IG5lY2Vzc2FyaWx5IG92ZXJsb2FkIHZkcGEgY29y ZSB3aXRoIHRvbyBtdWNoIHVud2FycmFudGVkIGNvbXBhdGliaWxpdHkKPiBjb2RlLiBUaGFuayB5 b3Ugc28gbXVjaCBmb3IgdGhlIGdyZWF0IHN1Z2dlc3Rpb24sCgpJIGRpc2FncmVlLCBtb2R1bGUg cGFyYW1ldGVycyBoYXZlIGJlZW4gcHJvdmVkIHRvIGJlIHZlcnkgaGFyZCBmb3IKbWFuYWdlbWVu dC4gQW5kIHdoYXQgSSBkb24ndCB1bmRlcnN0YW5kIGhlcmUgaXMsIG9uY2UgYSBtb2R1bGUKcGFy YW1ldGVyIGNhbiB3b3JrLCB3aHkgbm90IGp1c3QgcmVwbGFjZSBpdCB3aXRoIHRoZSBjaGVja2lu ZyBvZgpJT1RMQl9QUkVTSVNUPwoKVGhhbmtzCgoKPiBJIHdpbGwgcG9zdCBhIHYzLgo+Cj4gVGhh bmtzLAo+IC1TaXdlaQo+Cj4gPgo+ID4gVGhhbmtzIQo+ID4KPiA+PiBTZWNvbmQsIElPVExCX1BF UlNJU1QgaXMgbmVlZGVkIGJ1dCBub3Qgc3VmZmljaWVudC4gRHVlIHRvIGxhY2sgb2YKPiA+PiBi YWNrZW5kIGZlYXR1cmUgbmVnb3RpYXRpb24gaW4gcGFyZW50IGRyaXZlciwgaWYgdmhvc3QtdmRw YSBoYXMgdG8KPiA+PiBwcm92aWRlIHRoZSBvbGQtYmVoYXZpb3VyIGVtdWxhdGlvbiBmb3IgY29t cGF0aWJpbGl0eSBvbiBkcml2ZXIncwo+ID4+IGJlaGFsZiwgaXQgbmVlZHMgdG8gYmUgZG9uZSBw ZXItZHJpdmVyIGJhc2lzLiBUaGVyZSBjb3VsZCBiZSBnb29kCj4gPj4gb24tY2hpcCBvciB2ZW5k b3IgSU9NTVUgaW1wbGVtZW50YXRpb24gd2hpY2ggZG9lc24ndCBjbGVhciB0aGUgSU9UTEIgaW4K PiA+PiAucmVzZXQsIGFuZCB2ZW5kb3Igc3BlY2lmaWMgSU9NTVUgZG9lc24ndCBoYXZlIHRvIHBy b3ZpZGUgLnJlc2V0X21hcCwgd2UKPiA+PiBzaG91bGQgYWxsb3cgdGhlc2UgZ29vZCBkcml2ZXIg aW1wbGVtZW50YXRpb25zIHJhdGhlciB0aGFuCj4gPj4gdW5jb25kaXRpb25hbGx5IHN0aWNrIHRv IHNvbWUgc3BlY2lmaWMgcHJvYmxlbWF0aWMgYmVoYXZpb3IgZm9yIGV2ZXJ5Cj4gPj4gb3RoZXIg Z29vZCBkcml2ZXIuIFRoZW4gd2UgbmVlZCBhIHNldCBvZiBkZXZpY2UgZmxhZ3MgKGJhY2tlbmRf ZmVhdHVyZXMKPiA+PiBiaXQgYWdhaW4/KSB0byBpbmRpY2F0ZSB0aGUgc3BlY2lmaWMgZHJpdmVy IG5lZWRzIHVwcGVyIGxheWVyJ3MgaGVscCBvbgo+ID4+IG9sZC1iZWhhdmlvdXIgZW11bGF0aW9u Lgo+ID4+Cj4gPj4gTGFzdCBidXQgbm90IGxlYXN0LCBJJ20gbm90IHN1cmUgaG93IHRvIHByb3Bl cmx5IGVtdWxhdGUKPiA+PiByZXNldF92ZW5kb3JfbWFwcGluZ3MoKSBmcm9tIHZob3N0LXZkcGEg bGF5ZXIuIElmIGEgdmVuZG9yIGRyaXZlciBoYXMgbm8KPiA+PiAucmVzZXRfbWFwIG9wIGltcGxl bWVudGVkLCBvciBpZiAucmVzZXRfbWFwIGhhcyBhIHNsaWdodGx5IGRpZmZlcmVudAo+ID4+IGlt cGxlbWVudGF0aW9uIHRoYW4gd2hhdCBpdCB1c2VkIHRvIHJlc2V0IHRoZSBpb3RsYiBpbiB0aGUg LnJlc2V0IG9wLAo+ID4+IHRoZW4gdGhpcyBlaXRoZXIgYmVjb21lcyBlZmZlY3RpdmVseSBkZWFk IGNvZGUgaWYgbm8gb25lIGVuZHMgdXAgdXNpbmcsCj4gPj4gb3IgdGhlIHZob3N0LXZkcGEgZW11 bGF0aW9uIGlzIGhlbHBsZXNzIGFuZCBsaW1pdGVkIGluIHNjb3BlLCB1bmFibGUgdG8KPiA+PiBj b3ZlciBhbGwgdGhlIGNhc2VzLgo+ID4+Cj4gPj4KPiA+Pj4+IEluIGFkZGl0aW9uLCB0aGUKPiA+ Pj4+IGVtdWxhdGlvbiBoYXMgdG8gbGltaXQgdG8gdGhvc2UgYnVnZ3kgZHJpdmVycyBhcyBJIGRv bid0IGZlZWwgdGhpcwo+ID4+Pj4gZW11bGF0aW9uIHNob3VsZCBhcHBseSB1bmlmb3JtbHkgdG8g YWxsIGZ1dHVyZSBzZXRfbWFwL2RtYV9tYXAKPiA+Pj4+IGltcGxlbWVudGF0aW9ucy4KPiA+Pj4g VW5mb3J0dW5hdGVseSwgaXQncyBhIG11c3QgdG8gc3RpY2sgdG8gQUJJLgo+ID4+IEhvdyBjb21l IHRoaXMgYnJva2VubmVzcyBpbiBtbHg1X3ZkcGEgYmVjb21lcyBBQkkgaW4gYW55IHNvcnQgZm9y IGZ1dHVyZQo+ID4+IG9uLWNoaXAgSU9NTVUgZHJpdmVycz8gVGhleSBtaWdodCBub3QgZXZlbiBl eGlzdCB5ZXQuIEV2ZW4gaWYgaXQncwo+ID4+IGNvbmNlcm5pbmcgQUJJIGl0J3MgbGltaXRlZCB0 byBtbHg1X3ZkcGEgYW5kIHRoZSBleGlzdGluZyBkcml2ZXJzLCByaWdodD8KPiA+Pgo+ID4+PiAg ICBJIGFncmVlIGl0J3MgYSBtZXNzIGJ1dCB3ZSBkb24ndCBoYXZlIGEgYmV0dGVyIGNob2ljZS4K PiA+PiBXZWxsLCBpdCdzIHlvdXIgY2FsbCwgSSBjYW4gaW1wbGVtZW50IGFzIHlvdSB3aXNoIGJ1 dCB0aGUgdW53YXJyYW50ZWQKPiA+PiBjb2RlIGhhcyB0byBiZSBtYWludGFpbmVkIGZvcmV2ZXIu IFBhcnRpY3VsYXJseSB3aXRob3V0IGtub3dpbmcgaWYKPiA+PiB0aGVyZSdzIHJlYWxseSBzdWNo IGEgdXNlIGNhc2UgaW4gcmVhbCBsaWZlLCBhbmQgbm8gb25lIGluIGZ1dHVyZSBtaWdodAo+ID4+ IGRhcmUgdG8gcmVtb3ZlIHRoZSBjb2RlIHdpdGhvdXQga25vd2luZyB3aGF0IGl0IGNhbiBiZSB1 c2VkIGZvci4KPiA+Pgo+ID4+PiBPciB3ZSBjYW4gZmFpbCB0aGUgcHJvYmUgaWYgdXNlcnNwYWNl Cj4gPj4+IGRvZXNuJ3QgYWNrIHRoaXMgZmVhdHVyZS4KPiA+PiBGYWlsIHByb2JpbmcgaXMgZXZl biB3b3JzZSBjaG9pY2UgdGhhdCBpcyBpbnRyb2R1Y2luZyBpbnRydXNpdmUgYnJlYWthZ2UKPiA+ PiB0byB0aGUgdXNlcnNwYWNlLgo+ID4+Pj4+IDIpIGF1ZGl0IGFsbCB0aGUgcG9zc2libGUgY2Fz ZXMgdG8gYXZvaWQgYSBvbmUgbGluZSBvZiBjb2RlCj4gPj4+Pj4KPiA+Pj4+PiAxKSBzZWVtcyBt dWNoIGVhc2llciB0aGFuIDIpCj4gPj4+PiBZb3Ugc2VlIGl0J3MgbW9yZSB0aGFuIGp1c3Qgb25l IGxpbmUgb2YgY29kZSwgYW5kIEknbSB1bmNlcnRhaW4gaWYgdGhlCj4gPj4+PiBhZGRpdGlvbmFs IGNvbXBsZXhpdHkgaXMgd2FycmFudGVkIG9yIG5lY2Vzc2FyeSwgcGFydGljdWxhcmx5IGlmIGFk ZGVkCj4gPj4+PiB0aGlzIHBpZWNlIG9mIGNvbXBhdGliaWxpdHkgY29kZSB3aWxsIGxpbmdlciBm b3IgcXVpdGUgYSBsb25nIHRpbWUuCj4gPj4+IFRoaXMgaXMgYSBtdXN0IGFzIGxvbmcgYXMgaXQg Y2FuIGJlIG5vdGljZWQgYnkgdXNlcnNwYWNlLiBEb2luZwo+ID4+PiBzb21ldGhpbmcgY29uc2Vy dmF0aXZlIG1ha2VzIG1vcmUgc2Vuc2UgdG8gbWUuCj4gPj4+Cj4gPj4+PiBJbnN0ZWFkIG9mIGFk ZGluZyBoeXBvdGhldGljYWwgY29kZSBjaGFuZ2UgZm9yIG5vIHNwZWNpZmljIGdvb2QgcmVhc29u Cj4gPj4+PiBhbmQgbm8gcmVhbCB1c2UgY2FzZSwKPiA+Pj4gSXQncyBub3QgYWRkaW5nIHNvbWV0 aGluZyBuZXcgb3IgbmV3IGJlaGF2aW91cnMsIGl0J3MganVzdCBtYWtpbmcgdGhlCj4gPj4+IElP VExCIHJlc2V0IGNvbmRpdGlvbmFsIGJhc2VkIG9uIHZEUEEgcmVzZXQuCj4gPj4+Cj4gPj4+PiBJ J2QgbGlrZSB0byBhZGQgdGhlIGNvZGUgd2hlbiB3ZSBmaW5kIG91dCBhCj4gPj4+PiBzcGVjaWZp YyB1c2UgY2FzZSB0aGF0IG1heSBnZXQgaW1wYWN0ZWQgb3IgYWxyZWFkeSBiZWluZyBhZmZlY3Rl ZCwKPiA+Pj4gSXQgZG9lc24ndCBjb25mbGljdCB3aXRoIHdoYXQgeW91IHByb3Bvc2VkIGhlcmUu IE9sZCBiZWhhdmlvdXJzIGhhdmUKPiA+Pj4gdGhlaXIgdXNlcnMsIG5vPwo+ID4+IFdlIGRvbid0 IGtub3cgdGhlIHVzZSBjYXNlIGhvdyB0byBtYWtlIHRoaW5nIHdvcmsgaW5zdGVhZCBvZiBtYWtl IHRoaW5nCj4gPj4gYnJlYWssIHRoYXQgaXMgdGhlIHByb2JsZW0uIFdlIGhhdmUgbm8gd2F5IHRv IHRlc3QgaWYgb2xkLWJlaGF2aW91cgo+ID4+IHByZXNlcnZpbmcgY29kZSByZWFsbHkgd29ya3Mg YXMgZXhwZWN0ZWQuIElmIHRoZXJlJ3Mgbm8gc3VjaCB1c2VyIGluCj4gPj4gcHJhY3RpY2UsIGl0 IGVuZHMgdXAgd2l0aCBkZWFkIGNvZGUgbm8gb25lIGRhcmVzIHRvIHJlbW92ZS4KPiA+Pj4+IHRo ZW4KPiA+Pj4+IHdlIHdpbGwgaGF2ZSBnb29kIHVuZGVyc3RhbmRpbmcgaG93IHRvIGNvZGUgdXAg dGhlIGZpeCBhbmQgZW11bGF0ZQo+ID4+Pj4gcHJvcGVybHkgZm9yIGNvbXBhdGliaWxpdHksIHdo aWxlIG5vdCBhZmZlY3Rpbmcgb3RoZXIgZ29vZCBpbXBsZW1lbnRhdGlvbnMuCj4gPj4+IFRoZSBp c3N1ZSBpcywgZXZlbiBpZiB3ZSBjYW4ndCBmaW5kIGEgdXNlcnNwYWNlIG5vdy4gSXQgZG9lc24n dCBtZWFuCj4gPj4+IHdlIGNhbid0IGhhdmUgb25lIGluIHRoZSBmdXR1cmUuIFRoZW4gaXQgbWln aHQgYmUgdG9vIGxhdGUgb3IgdG9vCj4gPj4+IHRyaWNreSB0byBmaXggdGhlbS4gV2UgaGFkIGEg bG90IG9mIGxlc3NvbnMgaW4gdGhlIHBhc3QuCj4gPj4gSSBhbSBub3Qgc3VyZSB0aGUgc2FtZSBz aXR1YXRpb24gInRvbyBsYXRlIHRvIGZpeCIgb3IgInRvbyB0cmlja3kgdG8KPiA+PiBmaXgiIGFw cGxpZXMgaGVyZS4gVXN1YWxseSB0aGlzIG1lYW5zIHRoZXJlJ3Mgc29tZSB3ZWxsIGVzdGFibGlz aGVkCj4gPj4gcGF0dGVybiBmb3IgZS5nLiBBUEksIEFCSSBvciBsb25nIHN0YW5kaW5nIGRlLWZh Y3RvciBiZWhhdmlvciB0aGF0IGNhbid0Cj4gPj4gYmUgYnJva2VuIG9yIGFkanVzdCBpZiB0cnlp bmcgdG8gZml4IHNvbWV0aGluZyB1cC4gQnV0IGhlcmUgd2UncmUKPiA+PiBndWFyZGVkIGJ5IGEg ZmxhZyAoSU9UTEJfUEVSU0lTVCkgYW5kIHdpdGhvdXQgaXQgdGhlIGJlaGF2aW9yIGlzIHRvdGFs bHkKPiA+PiBydWxlZCBieSBpbXBsZW1lbnRhdGlvbi4KPiA+Pgo+ID4+IFJlZ2FyZHMsCj4gPj4g LVNpd2VpCj4gPj4KPiA+Pj4gVGhhbmtzCj4gPj4+Cj4gPj4+PiBUaGFua3MsCj4gPj4+PiAtU2l3 ZS9pLwo+ID4+Pj4KPiA+Pj4+Pj4+PiBGb3IgdHdvIHJlYXNvbnM6Cj4gPj4+Pj4+Pj4KPiA+Pj4+ Pj4+PiAxKSBiYWNrZW5kIGZlYXR1cmVzIG5lZWQgYWNrZWQgYnkgdXNlcnNwYWNlIHRoaXMgaXMg YnkgZGVzaWduCj4gPj4+Pj4+Pj4gMikga2VlcCB0aGUgb2RkIGJlaGF2aW91ciBzZWVtcyB0byBi ZSBtb3JlIHNhZmUgYXMgd2UgY2FuJ3QgYXVkaXQKPiA+Pj4+Pj4+PiBldmVyeSB1c2Vyc3BhY2Ug cHJvZ3JhbQo+ID4+Pj4+Pj4+Cj4gPj4+Pj4+PiBUaGUgb2xkIGJlaGF2aW9yICh3aXRob3V0IGZs YWcgYWNrKSBjYW5ub3QgYmUgdHJ1c3RlZCBhbHJlYWR5LCBhczoKPiA+Pj4+PiBQb3NzaWJseSBi dXQgdGhlIHBvaW50IGlzIHRvIHVuYnJlYWsgdXNlcnNwYWNlIG5vIG1hdHRlciBob3cgd2VpcmQg dGhlCj4gPj4+Pj4gYmVoYXZpb3VyIHdlJ3ZlIGV2ZXIgaGFkLgo+ID4+Pj4+Cj4gPj4+Pj4+PiAq IERldmljZXMgdXNpbmcgcGxhdGZvcm0gSU9NTVUgKGluIG90aGVyIHdvcmRzLCBub3QgaW1wbGVt ZW50aW5nCj4gPj4+Pj4+PiBuZWl0aGVyIC5zZXRfbWFwIG5vciAuZG1hX21hcCkgZG9lcyBub3Qg dW5tYXAgbWVtb3J5IGF0IHZpcnRpbyByZXNldC4KPiA+Pj4+Pj4+ICogRGV2aWNlcyB0aGF0IGlt cGxlbWVudCAuc2V0X21hcCBvciAuZG1hX21hcCAodmRwYV9zaW0sIG1seDUpIGRvCj4gPj4+Pj4+ PiByZXNldCBJT1RMQiwgYnV0IGluIHRoZWlyIHBhcmVudCBvcHMgKHZkcGFzaW1fZG9fcmVzZXQs IHBydW5lX2lvdGxiCj4gPj4+Pj4+PiBjYWxsZWQgZnJvbSBtbHg1X3ZkcGFfcmVzZXQpLiBXaXRo IHZkcGFfc2ltIHBhdGNoIHJlbW92aW5nIHRoZSByZXNldCwKPiA+Pj4+Pj4+IG5vdyBhbGwgYmFj a2VuZHMgd29yayB0aGUgc2FtZSBhcyBmYXIgYXMgSSBrbm93Liwgd2hpY2ggd2FzIChhbmQgaXMp Cj4gPj4+Pj4+PiB0aGUgd2F5IGRldmljZXMgdXNpbmcgdGhlIHBsYXRmb3JtIElPTU1VIHdvcmtz Lgo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+IFRoZSBkaWZmZXJlbmNlIGluIGJlaGF2aW9yIGRpZCBub3Qg bWF0dGVyIGFzIFFFTVUgdW5tYXBzIGFsbCB0aGUKPiA+Pj4+Pj4+IG1lbW9yeSB1bnJlZ2lzdGVy aW5nIHRoZSBtZW1vcnkgbGlzdGVuZXIgYXQgdmhvc3RfdmRwYV9kZXZfc3RhcnQoLi4uLAo+ID4+ Pj4+Pj4gc3RhcnRlZCA9IGZhbHNlKSwKPiA+Pj4+Pj4gRXhhY3RseS4gSXQncyBub3QganVzdCBR RU1VLCBidXQgYW55IChvbGRlcikgdXNlcnNwYWNlIG1hbmlwdWxhdGVzCj4gPj4+Pj4+IG1hcHBp bmdzIHRocm91Z2ggdGhlIHZob3N0LXZkcGEgaW90bGIgaW50ZXJmYWNlIGhhcyB0byB1bm1hcCBh bGwKPiA+Pj4+Pj4gbWFwcGluZ3MgdG8gd29ya2Fyb3VuZCB0aGUgdmRwYSBwYXJlbnQgZHJpdmVy IGJ1Zy4KPiA+Pj4+PiBKdXN0IHRvIGNsYXJpZnksIGZyb20gdXNlcnNwYWNlLCBpdCdzIHRoZSAo b2RkKSBiZWhhdmlvdXIgb2YgdGhlIGN1cnJlbnQgdUFQSS4KPiA+Pj4+Pgo+ID4+Pj4+PiBJZiB0 aGV5IGRvbid0IGRvCj4gPj4+Pj4+IGV4cGxpY2l0IHVubWFwLCBpdCB3b3VsZCBjYXVzZSBzdGF0 ZSBpbmNvbnNpc3RlbmN5IGJldHdlZW4gdmhvc3QtdmRwYQo+ID4+Pj4+PiBhbmQgcGFyZW50IGRy aXZlciwgdGhlbiBvbGQgbWFwcGluZ3MgY2FuJ3QgYmUgcmVzdG9yZWQsIGFuZCBuZXcgbWFwcGlu Zwo+ID4+Pj4+PiBjYW4gYmUgYWRkZWQgdG8gaW90bGIgYWZ0ZXIgdkRQQSByZXNldC4gVGhlcmUn cyBubyBwb2ludCB0byBwcmVzZXJ2ZQo+ID4+Pj4+PiB0aGlzIGJyb2tlbiBhbmQgaW5jb25zaXN0 ZW50IGJlaGF2aW9yIGJldHdlZW4gdmhvc3QtdmRwYSBhbmQgcGFyZW50Cj4gPj4+Pj4+IGRyaXZl ciwgYXMgdXNlcnNwYWNlIGRvZXNuJ3QgY2FyZSBhdCBhbGwhCj4gPj4+Pj4gSXQncyBhIHVzZXJz cGFjZSBub3RpY2UgY2hhbmdlIHNvIHdlIGNhbid0IGZpeCBpdCBzaWxlbnRseToKPiA+Pj4+Pgo+ ID4+Pj4+IGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDEyLzEyLzIzLzc1Cj4gPj4+Pj4KPiA+Pj4+ PiBBbm90aGVyIGV4YW1wbGUgd2hpY2ggaXMgcmVsYXRlZCB0byB2aG9zdC12RFBBOgo+ID4+Pj4+ Cj4gPj4+Pj4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbmV0ZGV2LzIwMjMwOTI3MTQwNTQ0LjIw NTA4OC0xLWVyaWMuYXVnZXJAcmVkaGF0LmNvbS9ULwo+ID4+Pj4+Cj4gPj4+Pj4gVGhhbmtzCj4g Pj4+Pj4KPiA+Pj4+Pj4+IGJ1dCB0aGUgYmFja2VuZCBhY2tub3dsZWRnaW5nIHRoaXMgZmVhdHVy ZSBmbGFnCj4gPj4+Pj4+PiBhbGxvd3MgUUVNVSB0byBtYWtlIHN1cmUgaXQgaXMgc2FmZSB0byBz a2lwIHRoaXMgdW5tYXAgJiBtYXAgaW4gdGhlCj4gPj4+Pj4+PiBjYXNlIG9mIHZob3N0IHN0b3Ag JiBzdGFydCBjeWNsZS4KPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiBJbiB0aGF0IHNlbnNlLCB0aGlzIGZl YXR1cmUgZmxhZyBpcyBhY3R1YWxseSBhIHNpZ25hbCBmb3IgdXNlcnNwYWNlIHRvCj4gPj4+Pj4+ PiBrbm93IHRoYXQgdGhlIGJ1ZyBoYXMgYmVlbiBzb2x2ZWQuCj4gPj4+Pj4+IFJpZ2h0LCBJIGNv dWxkbid0IHNheSBpdCBiZXR0ZXIgdGhhbiB5b3UgZG8sIHRoYW5rcyEgVGhlIGZlYXR1cmUgZmxh ZyBpcwo+ID4+Pj4+PiBtb3JlIG9mIGFuIHVudXN1YWwgbWVhbnMgdG8gaW5kaWNhdGluZyBrZXJu ZWwgYnVnIGhhdmluZyBiZWVuIGZpeGVkLAo+ID4+Pj4+PiByYXRoZXIgdGhhbiBpbnRyb2R1Y2Ug YSBuZXcgZmVhdHVyZSBvciBuZXcga2VybmVsIGJlaGF2aW9yIGVuZGluZyB1cCBpbgo+ID4+Pj4+ PiBjaGFuZ2Ugb2YgdXNlcnNwYWNlJ3MgZXhwZWN0YXRpb24uCj4gPj4+Pj4+Cj4gPj4+Pj4+PiBO b3Qgb2ZmZXJpbmcgaXQgaW5kaWNhdGVzIHRoYXQKPiA+Pj4+Pj4+IHVzZXJzcGFjZSBjYW5ub3Qg dHJ1c3QgdGhlIGtlcm5lbCB3aWxsIHJldGFpbiB0aGUgbWFwcy4KPiA+Pj4+Pj4+Cj4gPj4+Pj4+ PiBTaS1XZWkgb3IgRHJhZ29zLCBwbGVhc2UgY29ycmVjdCBtZSBpZiBJJ3ZlIG1pc3NlZCBzb21l dGhpbmcuIEZlZWwKPiA+Pj4+Pj4+IGZyZWUgdG8gdXNlIHRoZSB0ZXh0IGluIGNhc2UgeW91IGZp bmQgbW9yZSBjbGVhciBpbiBkb2Mgb3IgcGF0Y2ggbG9nLgo+ID4+Pj4+PiBTdXJlLCB3aWxsIGRv LCB0aGFuayB5b3UhIFdpbGwgcG9zdCB2MiBhZGRpbmcgdGhlc2UgdG8gdGhlIGxvZy4KPiA+Pj4+ Pj4KPiA+Pj4+Pj4gVGhhbmtzLAo+ID4+Pj4+PiAtU2l3ZWkKPiA+Pj4+Pj4KPiA+Pj4+Pj4KPiA+ Pj4+Pj4KPiA+Pj4+Pj4+IFRoYW5rcyEKPiA+Pj4+Pj4+Cj4gPj4+Pj4+Pj4gVGhhbmtzCj4gPj4+ Pj4+Pj4KPiA+Pj4+Pj4+Pj4gSSB0aGluawo+ID4+Pj4+Pj4+PiB0aGUgcHVycG9zZSBvZiB0aGUg SU9UTEJfUEVSU0lTVCBmbGFnIGlzIGp1c3QgdG8gZ2l2ZSB1c2Vyc3BhY2UgMTAwJQo+ID4+Pj4+ Pj4+PiBjZXJ0YWludHkgb2YgcGVyc2lzdGVudCBpb3RsYiBtYXBwaW5nIG5vdCBnZXR0aW5nIGxv c3QgYWNyb3NzIHZkcGEgcmVzZXQuCj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+IFRoYW5rcywKPiA+ Pj4+Pj4+Pj4gLVNpd2VpCj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+IFsxXQo+ID4+Pj4+Pj4+PiBo dHRwczovL2xvcmUua2VybmVsLm9yZy92aXJ0dWFsaXphdGlvbi85ZjExOGZjOS00ZjZmLWRkNjct YTI5MS1iZTc4MTUyZTQ3ZmRAb3JhY2xlLmNvbS8KPiA+Pj4+Pj4+Pj4gWzJdCj4gPj4+Pj4+Pj4+ IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL3ZpcnR1YWxpemF0aW9uLzMzNjRhZGZkLTFlYjctOGJj ZS00MWY5LWJmZTU0NzNmMWYyZUBvcmFjbGUuY29tLwo+ID4+Pj4+Pj4+Pj4gICAgICAgT3RoZXJ3 aXNlCj4gPj4+Pj4+Pj4+PiB3ZSBtYXkgYnJlYWsgb2xkIHVzZXJzcGFjZS4KPiA+Pj4+Pj4+Pj4+ Cj4gPj4+Pj4+Pj4+PiBUaGFua3MKPiA+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4gKyAgICAgICB2 aG9zdF92ZHBhX3Jlc2V0X21hcCh2LCBhc2lkKTsKPiA+Pj4+Pj4+Pj4+PiAgICAgICAgICAgICAg a2ZyZWUoYXMpOwo+ID4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4gICAgICAgICAgICAgIHJldHVy biAwOwo+ID4+Pj4+Pj4+Pj4+IC0tCj4gPj4+Pj4+Pj4+Pj4gMS44LjMuMQo+ID4+Pj4+Pj4+Pj4+ Cj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClZpcnR1 YWxpemF0aW9uIG1haWxpbmcgbGlzdApWaXJ0dWFsaXphdGlvbkBsaXN0cy5saW51eC1mb3VuZGF0 aW9uLm9yZwpodHRwczovL2xpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5m by92aXJ0dWFsaXphdGlvbg==