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 X-Spam-Level: X-Spam-Status: No, score=-9.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6A682C3A59E for ; Mon, 2 Sep 2019 14:50:51 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 3F5A62087E for ; Mon, 2 Sep 2019 14:50:51 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=citrix.com header.i=@citrix.com header.b="Bx7vYl9x" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3F5A62087E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=citrix.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1i4nf6-0006Py-K8; Mon, 02 Sep 2019 14:50:32 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1i4nf5-0006PO-A8 for xen-devel@lists.xenproject.org; Mon, 02 Sep 2019 14:50:31 +0000 X-Inumbo-ID: ff5275da-cd90-11e9-b95f-bc764e2007e4 Received: from esa6.hc3370-68.iphmx.com (unknown [216.71.155.175]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id ff5275da-cd90-11e9-b95f-bc764e2007e4; Mon, 02 Sep 2019 14:50:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1567435825; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ldu8pNboYQL6r5F8kkZJCVM+BvcXYx8CuxA+sc9/XTE=; b=Bx7vYl9xCHjoahQBVk5nxXhHwoGOFZza3fewFJZhRulXogpWc88FCS2p hGlIf+cFBZWaaaC3UOHutfng5rD1MhcGfDb33Y2t+5+5Pqror9dL6kfed xA+rAw9bEiSCtzhtSyHYBBnyyjvUkOzFgpz3posOHuYjmfVPfaRDqETMV w=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=paul.durrant@citrix.com; spf=Pass smtp.mailfrom=Paul.Durrant@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: None (esa6.hc3370-68.iphmx.com: no sender authenticity information available from domain of paul.durrant@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa6.hc3370-68.iphmx.com; envelope-from="Paul.Durrant@citrix.com"; x-sender="paul.durrant@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa6.hc3370-68.iphmx.com: domain of Paul.Durrant@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa6.hc3370-68.iphmx.com; envelope-from="Paul.Durrant@citrix.com"; x-sender="Paul.Durrant@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ~all" Received-SPF: None (esa6.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa6.hc3370-68.iphmx.com; envelope-from="Paul.Durrant@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: exiSpC8UJ1KAGJDVUd5U/QmgpQBbEP938F7AlJE94uhHEOFFGIljBnNw1BP9JTt4+gUJBa/o7w GMQKsmdaYVPvBxfMulj7qt4Ya2ZirxP4586gkkRZIhXLdPcD7P3be4zFINPs12ACJiERyDQOZC q8DhH2dFxQvKqtIcaJ7/OdsF0Bq0WjwPsQUHMROucFg2iXvJUQNwXMSKpKuVkAIAHA44eDpDwB 3CjuEafZFBVaY2mX+u2AVYaKF2OWzeBsP/KX0rON9zIzNvC7yMRoyuQqaulCaMT0cMZpxHpg20 50A= X-SBRS: 2.7 X-MesageID: 5242802 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.64,459,1559534400"; d="scan'208";a="5242802" From: Paul Durrant To: Date: Mon, 2 Sep 2019 15:50:13 +0100 Message-ID: <20190902145014.36442-6-paul.durrant@citrix.com> X-Mailer: git-send-email 2.20.1.2.gb21ebb671 In-Reply-To: <20190902145014.36442-1-paul.durrant@citrix.com> References: <20190902145014.36442-1-paul.durrant@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH v8 5/6] iommu: tidy up iommu_use_hap_pt() and need_iommu_pt_sync() macros X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Paul Durrant , Jan Beulich , Volodymyr Babchuk , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" VGhlcyBtYWNyb3MgcmVhbGx5IG91Z2h0IHRvIGxpdmUgaW4gdGhlIGNvbW1vbiB4ZW4vaW9tbXUu aCBoZWFkZXIgcmF0aGVyCnRoZW4gYmVpbmcgZGlzdHJpYnV0ZWQgYW1vbmdzdCBhcmNoaXRlY3R1 cmUgc3BlY2lmaWMgaW9tbXUgaGVhZGVycyBhbmQKeGVuL3NjaGVkLmguIFRoaXMgcGF0Y2ggbW92 ZXMgdGhlbSB0aGVyZS4KCk5PVEU6IERpc2FibGluZyAnc2hhcmVwdCcgaW4gdGhlIGNvbW1hbmQg bGluZSBpb21tdSBvcHRpb25zIHNob3VsZCByZWFsbHkKICAgICAgYmUgaGFyZCBlcnJvciBvbiBB Uk0gKGFzIG9wcG9zZWQgdG8ganVzdCBiZWluZyBpZ25vcmVkKSwgc28gZGVmaW5lCiAgICAgICdp b21tdV9oYXBfcHRfc2hhcmUnIHRvIGJlIHRydWUgZm9yIEFSTSB0aGVuIHRoZW4gZ2F0ZSBwYXJz aW5nIHRoZQogICAgICBjb21tYW5kIGxpbmUgb3B0aW9uIG9uICcjaWZuZGVmIGlvbW11X2hhcF9w dF9zaGFyZScuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRy aXguY29tPgpSZXZpZXdlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0K Q2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBHZW9yZ2Ug RHVubGFwIDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+CkNjOiBJYW4gSmFja3NvbiA8aWFu LmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFy bS5jb20+CkNjOiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+ CkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CkNjOiBUaW0g RGVlZ2FuIDx0aW1AeGVuLm9yZz4KQ2M6IFdlaSBMaXUgPHdsQHhlbi5vcmc+CkNjOiBWb2xvZHlt eXIgQmFiY2h1ayA8Vm9sb2R5bXlyX0JhYmNodWtAZXBhbS5jb20+CkNjOiAiUm9nZXIgUGF1IE1v bm7DqSIgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgoKUHJldmlvdXNseSBwYXJ0IG9mIGh0dHBzOi8v bGlzdHMueGVucHJvamVjdC5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwvMjAxOS0wNy9tc2cw MjI2Ny5odG1sCgp2NzoKIC0gUmUtd29yayB0aGUgQVJNIGhhbmRsaW5nIG9mICdzaGFyZXB0JyBh cyBzdWdnZXN0ZWQgYnkgSmFuCiAtIE1ha2Ugc3VyZSB0aGF0IG5lZWRfaW9tbXVfcHRfc3luYygp IGFsd2F5cyBldmFsdWF0ZXMgaXRzIGFyZ3VtZW50Ci0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvaW9tbXUuYyB8ICA4ICsrKysrKystCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2lvbW11LmggICAg IHwgIDMgLS0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L2lvbW11LmggICAgIHwgIDQgLS0tLQogeGVu L2luY2x1ZGUveGVuL2lvbW11LmggICAgICAgICB8IDE5ICsrKysrKysrKysrKysrKysrKy0KIHhl bi9pbmNsdWRlL3hlbi9zY2hlZC5oICAgICAgICAgfCAgNiAtLS0tLS0KIDUgZmlsZXMgY2hhbmdl ZCwgMjUgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11 LmMKaW5kZXggNGY3MWRiOTVlYS4uYWFmM2I5ZmFjMCAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5j CkBAIC00OSw3ICs0OSwxMSBAQCBpbnQ4X3QgX19od2RvbV9pbml0ZGF0YSBpb21tdV9od2RvbV9y ZXNlcnZlZCA9IC0xOwogICogZGVmYXVsdCB1bnRpbCB3ZSBmaW5kIGEgZ29vZCBzb2x1dGlvbiB0 byByZXNvbHZlIGl0LgogICovCiBib29sX3QgX19yZWFkX21vc3RseSBpb21tdV9pbnRwb3N0Owot Ym9vbF90IF9fcmVhZF9tb3N0bHkgaW9tbXVfaGFwX3B0X3NoYXJlID0gMTsKKworI2lmbmRlZiBp b21tdV9oYXBfcHRfc2hhcmUKK2Jvb2wgX19yZWFkX21vc3RseSBpb21tdV9oYXBfcHRfc2hhcmUg PSB0cnVlOworI2VuZGlmCisKIGJvb2xfdCBfX3JlYWRfbW9zdGx5IGlvbW11X2RlYnVnOwogYm9v bF90IF9fcmVhZF9tb3N0bHkgYW1kX2lvbW11X3BlcmRldl9pbnRyZW1hcCA9IDE7CiAKQEAgLTEw Miw4ICsxMDYsMTAgQEAgc3RhdGljIGludCBfX2luaXQgcGFyc2VfaW9tbXVfcGFyYW0oY29uc3Qg Y2hhciAqcykKICAgICAgICAgICAgIGlvbW11X2h3ZG9tX3Bhc3N0aHJvdWdoID0gdmFsOwogICAg ICAgICBlbHNlIGlmICggKHZhbCA9IHBhcnNlX2Jvb2xlYW4oImRvbTAtc3RyaWN0Iiwgcywgc3Mp KSA+PSAwICkKICAgICAgICAgICAgIGlvbW11X2h3ZG9tX3N0cmljdCA9IHZhbDsKKyNpZm5kZWYg aW9tbXVfaGFwX3B0X3NoYXJlCiAgICAgICAgIGVsc2UgaWYgKCAodmFsID0gcGFyc2VfYm9vbGVh bigic2hhcmVwdCIsIHMsIHNzKSkgPj0gMCApCiAgICAgICAgICAgICBpb21tdV9oYXBfcHRfc2hh cmUgPSB2YWw7CisjZW5kaWYKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmMgPSAtRUlOVkFM OwogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2lvbW11LmggYi94ZW4vaW5jbHVk ZS9hc20tYXJtL2lvbW11LmgKaW5kZXggMTU3N2U4M2QyYi4uNzdhOTRiMjllYiAxMDA2NDQKLS0t IGEveGVuL2luY2x1ZGUvYXNtLWFybS9pb21tdS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0v aW9tbXUuaApAQCAtMjAsOSArMjAsNiBAQCBzdHJ1Y3QgYXJjaF9pb21tdQogICAgIHZvaWQgKnBy aXY7CiB9OwogCi0vKiBBbHdheXMgc2hhcmUgUDJNIFRhYmxlIGJldHdlZW4gdGhlIENQVSBhbmQg dGhlIElPTU1VICovCi0jZGVmaW5lIGlvbW11X3VzZV9oYXBfcHQoZCkgaXNfaW9tbXVfZW5hYmxl ZChkKQotCiBjb25zdCBzdHJ1Y3QgaW9tbXVfb3BzICppb21tdV9nZXRfb3BzKHZvaWQpOwogdm9p ZCBpb21tdV9zZXRfb3BzKGNvbnN0IHN0cnVjdCBpb21tdV9vcHMgKm9wcyk7CiAKZGlmZiAtLWdp dCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaW9tbXUuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaW9t bXUuaAppbmRleCA1MDcxYWZkNmE1Li44NTc0MWY3Yzk2IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVk ZS9hc20teDg2L2lvbW11LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9pb21tdS5oCkBAIC04 NiwxMCArODYsNiBAQCBzdHJ1Y3QgaW9tbXVfaW5pdF9vcHMgewogCiBleHRlcm4gY29uc3Qgc3Ry dWN0IGlvbW11X2luaXRfb3BzICppb21tdV9pbml0X29wczsKIAotLyogQXJlIHdlIHVzaW5nIHRo ZSBkb21haW4gUDJNIHRhYmxlIGFzIGl0cyBJT01NVSBwYWdldGFibGU/ICovCi0jZGVmaW5lIGlv bW11X3VzZV9oYXBfcHQoZCkgXAotICAgIChoYXBfZW5hYmxlZChkKSAmJiBpc19pb21tdV9lbmFi bGVkKGQpICYmIGlvbW11X2hhcF9wdF9zaGFyZSkKLQogdm9pZCBpb21tdV91cGRhdGVfaXJlX2Zy b21fYXBpYyh1bnNpZ25lZCBpbnQgYXBpYywgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50 IHZhbHVlKTsKIHVuc2lnbmVkIGludCBpb21tdV9yZWFkX2FwaWNfZnJvbV9pcmUodW5zaWduZWQg aW50IGFwaWMsIHVuc2lnbmVkIGludCByZWcpOwogaW50IGlvbW11X3NldHVwX2hwZXRfbXNpKHN0 cnVjdCBtc2lfZGVzYyAqKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9pb21tdS5oIGIv eGVuL2luY2x1ZGUveGVuL2lvbW11LmgKaW5kZXggNGI2ODcxOTM2Yy4uODdmOTEyOWI5OSAxMDA2 NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL2lvbW11LmgKKysrIGIveGVuL2luY2x1ZGUveGVuL2lv bW11LmgKQEAgLTU1LDcgKzU1LDEzIEBAIHN0YXRpYyBpbmxpbmUgYm9vbF90IGRmbl9lcShkZm5f dCB4LCBkZm5fdCB5KQogZXh0ZXJuIGJvb2xfdCBpb21tdV9lbmFibGUsIGlvbW11X2VuYWJsZWQ7 CiBleHRlcm4gYm9vbF90IGZvcmNlX2lvbW11LCBpb21tdV92ZXJib3NlLCBpb21tdV9pZ2Z4Owog ZXh0ZXJuIGJvb2xfdCBpb21tdV9zbm9vcCwgaW9tbXVfcWludmFsLCBpb21tdV9pbnRyZW1hcCwg aW9tbXVfaW50cG9zdDsKLWV4dGVybiBib29sX3QgaW9tbXVfaGFwX3B0X3NoYXJlOworCisjaWZk ZWYgQ09ORklHX0FSTQorI2RlZmluZSBpb21tdV9oYXBfcHRfc2hhcmUgdHJ1ZQorI2Vsc2UKK2V4 dGVybiBib29sIGlvbW11X2hhcF9wdF9zaGFyZTsKKyNlbmRpZgorCiBleHRlcm4gYm9vbF90IGlv bW11X2RlYnVnOwogZXh0ZXJuIGJvb2xfdCBhbWRfaW9tbXVfcGVyZGV2X2ludHJlbWFwOwogCkBA IC0yNjgsNiArMjc0LDE3IEBAIHN0cnVjdCBkb21haW5faW9tbXUgewogI2RlZmluZSBpb21tdV9z ZXRfZmVhdHVyZShkLCBmKSAgIHNldF9iaXQoZiwgZG9tX2lvbW11KGQpLT5mZWF0dXJlcykKICNk ZWZpbmUgaW9tbXVfY2xlYXJfZmVhdHVyZShkLCBmKSBjbGVhcl9iaXQoZiwgZG9tX2lvbW11KGQp LT5mZWF0dXJlcykKIAorLyogQXJlIHdlIHVzaW5nIHRoZSBkb21haW4gUDJNIHRhYmxlIGFzIGl0 cyBJT01NVSBwYWdldGFibGU/ICovCisjZGVmaW5lIGlvbW11X3VzZV9oYXBfcHQoZCkgXAorICAg IChoYXBfZW5hYmxlZChkKSAmJiBpc19pb21tdV9lbmFibGVkKGQpICYmIGlvbW11X2hhcF9wdF9z aGFyZSkKKworLyogRG9lcyB0aGUgSU9NTVUgcGFnZXRhYmxlIG5lZWQgdG8gYmUga2VwdCBzeW5j aHJvbml6ZWQgd2l0aCB0aGUgUDJNICovCisjaWZkZWYgQ09ORklHX0hBU19QQVNTVEhST1VHSAor I2RlZmluZSBuZWVkX2lvbW11X3B0X3N5bmMoZCkgICAgIChkb21faW9tbXUoZCktPm5lZWRfc3lu YykKKyNlbHNlCisjZGVmaW5lIG5lZWRfaW9tbXVfcHRfc3luYyhkKSAgICAgKHsgKHZvaWQpKGQp OyBmYWxzZTsgfSkKKyNlbmRpZgorCiBpbnQgX19tdXN0X2NoZWNrIGlvbW11X3N1c3BlbmQodm9p ZCk7CiB2b2lkIGlvbW11X3Jlc3VtZSh2b2lkKTsKIHZvaWQgaW9tbXVfY3Jhc2hfc2h1dGRvd24o dm9pZCk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaCBiL3hlbi9pbmNsdWRl L3hlbi9zY2hlZC5oCmluZGV4IDNmOGFkNTY2NTUuLjBiNWMxMDZhMzcgMTAwNjQ0Ci0tLSBhL3hl bi9pbmNsdWRlL3hlbi9zY2hlZC5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC5oCkBAIC05 NjUsMTIgKzk2NSw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc19od2RvbV9waW5uZWRfdmNwdShj b25zdCBzdHJ1Y3QgdmNwdSAqdikKICAgICAgICAgICAgIGNwdW1hc2tfd2VpZ2h0KHYtPmNwdV9o YXJkX2FmZmluaXR5KSA9PSAxKTsKIH0KIAotI2lmZGVmIENPTkZJR19IQVNfUEFTU1RIUk9VR0gK LSNkZWZpbmUgbmVlZF9pb21tdV9wdF9zeW5jKGQpIChkb21faW9tbXUoZCktPm5lZWRfc3luYykK LSNlbHNlCi0jZGVmaW5lIG5lZWRfaW9tbXVfcHRfc3luYyhkKSBmYWxzZQotI2VuZGlmCi0KIHN0 YXRpYyBpbmxpbmUgYm9vbCBpc192Y3B1X29ubGluZShjb25zdCBzdHJ1Y3QgdmNwdSAqdikKIHsK ICAgICByZXR1cm4gIXRlc3RfYml0KF9WUEZfZG93biwgJnYtPnBhdXNlX2ZsYWdzKTsKLS0gCjIu MjAuMS4yLmdiMjFlYmI2NzEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9q ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVu LWRldmVs