From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chunming Zhou Subject: [PATCH 01/11] dma-buf: make fence sequence numbers 64 bit v2 Date: Fri, 7 Dec 2018 17:55:51 +0800 Message-ID: <20181207095601.2058-1-david1.zhou@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Christian.Koenig-5C7GfCeVMHo@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: =?UTF-8?q?Christian=20K=C3=B6nig?= , =?UTF-8?q?Christian=20K=C3=B6nig?= RnJvbTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2tvZW5pZy5sZWljaHR6dW1lcmtlbkBnbWFpbC5jb20+ CgpGb3IgYSBsb3Qgb2YgdXNlIGNhc2VzIHdlIG5lZWQgNjRiaXQgc2VxdWVuY2UgbnVtYmVycy4g Q3VycmVudGx5IGRyaXZlcnMKb3ZlcmxvYWQgdGhlIGRtYV9mZW5jZSBzdHJ1Y3R1cmUgdG8gc3Rv cmUgdGhlIGFkZGl0aW9uYWwgYml0cy4KClN0b3AgZG9pbmcgdGhhdCBhbmQgbWFrZSB0aGUgc2Vx dWVuY2UgbnVtYmVyIGluIHRoZSBkbWFfZmVuY2UgYWx3YXlzCjY0Yml0LgoKRm9yIGNvbXBhdGli aWxpdHkgd2l0aCBoYXJkd2FyZSB3aGljaCBjYW4gZG8gb25seSAzMmJpdCBzZXF1ZW5jZXMgdGhl CmNvbXBhcmlzb25zIGluIF9fZG1hX2ZlbmNlX2lzX2xhdGVyIG9ubHkgdGFrZXMgdGhlIGxvd2Vy IDMyYml0cyBhcyBzaWduaWZpY2FudAp3aGVuIHRoZSB1cHBlciAzMmJpdHMgYXJlIGFsbCB6ZXJv LgoKdjI6IGNoYW5nZSB0aGUgbG9naWMgaW4gX19kbWFfZmVuY2VfaXNfbGF0ZXIKClNpZ25lZC1v ZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KLS0tCiBk cml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLmMgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL2Rt YS1idWYvc3dfc3luYy5jICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL2RtYS1idWYvc3lu Y19maWxlLmMgICAgICAgICAgICB8ICA0ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9zYS5jIHwgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3dfZmVuY2Uu YyAgIHwgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIHwgIDIg Ky0KIGRyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZmVuY2UuYyAgICAgIHwgIDQgKystLQogaW5j bHVkZS9saW51eC9kbWEtZmVuY2UuaCAgICAgICAgICAgICAgfCAyMiArKysrKysrKysrKysrKyst LS0tLS0tCiA4IGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UuYyBiL2RyaXZlcnMvZG1h LWJ1Zi9kbWEtZmVuY2UuYwppbmRleCAxMzZlYzA0ZDY4M2YuLjNhYTg3MzNmODMyYSAxMDA2NDQK LS0tIGEvZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS5jCisrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9k bWEtZmVuY2UuYwpAQCAtNjQ5LDcgKzY0OSw3IEBAIEVYUE9SVF9TWU1CT0woZG1hX2ZlbmNlX3dh aXRfYW55X3RpbWVvdXQpOwogICovCiB2b2lkCiBkbWFfZmVuY2VfaW5pdChzdHJ1Y3QgZG1hX2Zl bmNlICpmZW5jZSwgY29uc3Qgc3RydWN0IGRtYV9mZW5jZV9vcHMgKm9wcywKLQkgICAgICAgc3Bp bmxvY2tfdCAqbG9jaywgdTY0IGNvbnRleHQsIHVuc2lnbmVkIHNlcW5vKQorCSAgICAgICBzcGlu bG9ja190ICpsb2NrLCB1NjQgY29udGV4dCwgdTY0IHNlcW5vKQogewogCUJVR19PTighbG9jayk7 CiAJQlVHX09OKCFvcHMgfHwgIW9wcy0+Z2V0X2RyaXZlcl9uYW1lIHx8ICFvcHMtPmdldF90aW1l bGluZV9uYW1lKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9zd19zeW5jLmMgYi9kcml2 ZXJzL2RtYS1idWYvc3dfc3luYy5jCmluZGV4IDUzYzFkNmQzNmE2NC4uMzJkY2Y3YjRjOTM1IDEw MDY0NAotLS0gYS9kcml2ZXJzL2RtYS1idWYvc3dfc3luYy5jCisrKyBiL2RyaXZlcnMvZG1hLWJ1 Zi9zd19zeW5jLmMKQEAgLTE3Miw3ICsxNzIsNyBAQCBzdGF0aWMgYm9vbCB0aW1lbGluZV9mZW5j ZV9lbmFibGVfc2lnbmFsaW5nKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQogc3RhdGljIHZvaWQg dGltZWxpbmVfZmVuY2VfdmFsdWVfc3RyKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlLAogCQkJCSAg ICBjaGFyICpzdHIsIGludCBzaXplKQogewotCXNucHJpbnRmKHN0ciwgc2l6ZSwgIiVkIiwgZmVu Y2UtPnNlcW5vKTsKKwlzbnByaW50ZihzdHIsIHNpemUsICIlbGxkIiwgZmVuY2UtPnNlcW5vKTsK IH0KIAogc3RhdGljIHZvaWQgdGltZWxpbmVfZmVuY2VfdGltZWxpbmVfdmFsdWVfc3RyKHN0cnVj dCBkbWFfZmVuY2UgKmZlbmNlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL3N5bmNfZmls ZS5jIGIvZHJpdmVycy9kbWEtYnVmL3N5bmNfZmlsZS5jCmluZGV4IDM1ZGQwNjQ3OTg2Ny4uNGY2 MzA1Y2E1MmM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS1idWYvc3luY19maWxlLmMKKysrIGIv ZHJpdmVycy9kbWEtYnVmL3N5bmNfZmlsZS5jCkBAIC0xNDQsNyArMTQ0LDcgQEAgY2hhciAqc3lu Y19maWxlX2dldF9uYW1lKHN0cnVjdCBzeW5jX2ZpbGUgKnN5bmNfZmlsZSwgY2hhciAqYnVmLCBp bnQgbGVuKQogCX0gZWxzZSB7CiAJCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlID0gc3luY19maWxl LT5mZW5jZTsKIAotCQlzbnByaW50ZihidWYsIGxlbiwgIiVzLSVzJWxsdS0lZCIsCisJCXNucHJp bnRmKGJ1ZiwgbGVuLCAiJXMtJXMlbGx1LSVsbGQiLAogCQkJIGZlbmNlLT5vcHMtPmdldF9kcml2 ZXJfbmFtZShmZW5jZSksCiAJCQkgZmVuY2UtPm9wcy0+Z2V0X3RpbWVsaW5lX25hbWUoZmVuY2Up LAogCQkJIGZlbmNlLT5jb250ZXh0LApAQCAtMjU4LDcgKzI1OCw3IEBAIHN0YXRpYyBzdHJ1Y3Qg c3luY19maWxlICpzeW5jX2ZpbGVfbWVyZ2UoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHN5bmNf ZmlsZSAqYSwKIAogCQkJaV9iKys7CiAJCX0gZWxzZSB7Ci0JCQlpZiAocHRfYS0+c2Vxbm8gLSBw dF9iLT5zZXFubyA8PSBJTlRfTUFYKQorCQkJaWYgKF9fZG1hX2ZlbmNlX2lzX2xhdGVyKHB0X2Et PnNlcW5vLCBwdF9iLT5zZXFubykpCiAJCQkJYWRkX2ZlbmNlKGZlbmNlcywgJmksIHB0X2EpOwog CQkJZWxzZQogCQkJCWFkZF9mZW5jZShmZW5jZXMsICZpLCBwdF9iKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9zYS5jIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3NhLmMKaW5kZXggMTJmMmJmOTc2MTFmLi5iZmFmNWM2MzIzYmUgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9zYS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9zYS5jCkBAIC0zODgsNyArMzg4LDcgQEAg dm9pZCBhbWRncHVfc2FfYm9fZHVtcF9kZWJ1Z19pbmZvKHN0cnVjdCBhbWRncHVfc2FfbWFuYWdl ciAqc2FfbWFuYWdlciwKIAkJCSAgIHNvZmZzZXQsIGVvZmZzZXQsIGVvZmZzZXQgLSBzb2Zmc2V0 KTsKIAogCQlpZiAoaS0+ZmVuY2UpCi0JCQlzZXFfcHJpbnRmKG0sICIgcHJvdGVjdGVkIGJ5IDB4 JTA4eCBvbiBjb250ZXh0ICVsbHUiLAorCQkJc2VxX3ByaW50ZihtLCAiIHByb3RlY3RlZCBieSAw eCUwMTZsbHggb24gY29udGV4dCAlbGx1IiwKIAkJCQkgICBpLT5mZW5jZS0+c2Vxbm8sIGktPmZl bmNlLT5jb250ZXh0KTsKIAogCQlzZXFfcHJpbnRmKG0sICJcbiIpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zd19mZW5jZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9zd19mZW5jZS5jCmluZGV4IDZkYmVlZDA3OWFlNS4uMTFiY2RhYmQ1MTc3IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N3X2ZlbmNlLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9zd19mZW5jZS5jCkBAIC0zOTMsNyArMzkzLDcgQEAgc3RhdGljIHZv aWQgdGltZXJfaTkxNV9zd19mZW5jZV93YWtlKHN0cnVjdCB0aW1lcl9saXN0ICp0KQogCWlmICgh ZmVuY2UpCiAJCXJldHVybjsKIAotCXByX25vdGljZSgiQXN5bmNocm9ub3VzIHdhaXQgb24gZmVu Y2UgJXM6JXM6JXggdGltZWQgb3V0IChoaW50OiVwUylcbiIsCisJcHJfbm90aWNlKCJBc3luY2hy b25vdXMgd2FpdCBvbiBmZW5jZSAlczolczolbGx4IHRpbWVkIG91dCAoaGludDolcFMpXG4iLAog CQkgIGNiLT5kbWEtPm9wcy0+Z2V0X2RyaXZlcl9uYW1lKGNiLT5kbWEpLAogCQkgIGNiLT5kbWEt Pm9wcy0+Z2V0X3RpbWVsaW5lX25hbWUoY2ItPmRtYSksCiAJCSAgY2ItPmRtYS0+c2Vxbm8sCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCmluZGV4IDc1OWMwZmQ1OGY4Yy4uZGZh ZmE3OTE3MWRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVf Y3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwpAQCAtMTIz OSw3ICsxMjM5LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfcmVxdWVzdChzdHJ1Y3QgZHJtX3ByaW50 ZXIgKm0sCiAKIAl4ID0gcHJpbnRfc2NoZWRfYXR0cihycS0+aTkxNSwgJnJxLT5zY2hlZC5hdHRy LCBidWYsIHgsIHNpemVvZihidWYpKTsKIAotCWRybV9wcmludGYobSwgIiVzJXglcyBbJWxseDol eF0lcyBAICVkbXM6ICVzXG4iLAorCWRybV9wcmludGYobSwgIiVzJXglcyBbJWxseDolbGx4XSVz IEAgJWRtczogJXNcbiIsCiAJCSAgIHByZWZpeCwKIAkJICAgcnEtPmdsb2JhbF9zZXFubywKIAkJ ICAgaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChycSkgPyAiISIgOiAiIiwKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZmVuY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS92Z2VtL3Zn ZW1fZmVuY2UuYwppbmRleCBjMWM0MjBhZmUyZGQuLmViMTdjMGNkMzcyNyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9mZW5jZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92 Z2VtL3ZnZW1fZmVuY2UuYwpAQCAtNTMsMTMgKzUzLDEzIEBAIHN0YXRpYyB2b2lkIHZnZW1fZmVu Y2VfcmVsZWFzZShzdHJ1Y3QgZG1hX2ZlbmNlICpiYXNlKQogCiBzdGF0aWMgdm9pZCB2Z2VtX2Zl bmNlX3ZhbHVlX3N0cihzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSwgY2hhciAqc3RyLCBpbnQgc2l6 ZSkKIHsKLQlzbnByaW50ZihzdHIsIHNpemUsICIldSIsIGZlbmNlLT5zZXFubyk7CisJc25wcmlu dGYoc3RyLCBzaXplLCAiJWxsdSIsIGZlbmNlLT5zZXFubyk7CiB9CiAKIHN0YXRpYyB2b2lkIHZn ZW1fZmVuY2VfdGltZWxpbmVfdmFsdWVfc3RyKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlLCBjaGFy ICpzdHIsCiAJCQkJCSAgaW50IHNpemUpCiB7Ci0Jc25wcmludGYoc3RyLCBzaXplLCAiJXUiLAor CXNucHJpbnRmKHN0ciwgc2l6ZSwgIiVsbHUiLAogCQkgZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKGZl bmNlKSA/IGZlbmNlLT5zZXFubyA6IDApOwogfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4 L2RtYS1mZW5jZS5oIGIvaW5jbHVkZS9saW51eC9kbWEtZmVuY2UuaAppbmRleCA5OTllNGIxMDQ0 MTAuLjZiNzg4NDY3YjJlMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9kbWEtZmVuY2UuaAor KysgYi9pbmNsdWRlL2xpbnV4L2RtYS1mZW5jZS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHN0cnVjdCBk bWFfZmVuY2UgewogCXN0cnVjdCBsaXN0X2hlYWQgY2JfbGlzdDsKIAlzcGlubG9ja190ICpsb2Nr OwogCXU2NCBjb250ZXh0OwotCXVuc2lnbmVkIHNlcW5vOworCXU2NCBzZXFubzsKIAl1bnNpZ25l ZCBsb25nIGZsYWdzOwogCWt0aW1lX3QgdGltZXN0YW1wOwogCWludCBlcnJvcjsKQEAgLTI0NCw3 ICsyNDQsNyBAQCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyB7CiB9OwogCiB2b2lkIGRtYV9mZW5jZV9p bml0KHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlLCBjb25zdCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyAq b3BzLAotCQkgICAgc3BpbmxvY2tfdCAqbG9jaywgdTY0IGNvbnRleHQsIHVuc2lnbmVkIHNlcW5v KTsKKwkJICAgIHNwaW5sb2NrX3QgKmxvY2ssIHU2NCBjb250ZXh0LCB1NjQgc2Vxbm8pOwogCiB2 b2lkIGRtYV9mZW5jZV9yZWxlYXNlKHN0cnVjdCBrcmVmICprcmVmKTsKIHZvaWQgZG1hX2ZlbmNl X2ZyZWUoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpOwpAQCAtNDE0LDkgKzQxNCwxNyBAQCBkbWFf ZmVuY2VfaXNfc2lnbmFsZWQoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCiAgKiBSZXR1cm5zIHRy dWUgaWYgZjEgaXMgY2hyb25vbG9naWNhbGx5IGxhdGVyIHRoYW4gZjIuIEJvdGggZmVuY2VzIG11 c3QgYmUKICAqIGZyb20gdGhlIHNhbWUgY29udGV4dCwgc2luY2UgYSBzZXFubyBpcyBub3QgY29t bW9uIGFjcm9zcyBjb250ZXh0cy4KICAqLwotc3RhdGljIGlubGluZSBib29sIF9fZG1hX2ZlbmNl X2lzX2xhdGVyKHUzMiBmMSwgdTMyIGYyKQorc3RhdGljIGlubGluZSBib29sIF9fZG1hX2ZlbmNl X2lzX2xhdGVyKHU2NCBmMSwgdTY0IGYyKQogewotCXJldHVybiAoaW50KShmMSAtIGYyKSA+IDA7 CisJLyogVGhpcyBpcyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIGRyaXZlcnMgd2hp Y2ggY2FuIG9ubHkgaGFuZGxlCisJICogMzJiaXQgc2VxdWVuY2UgbnVtYmVycy4gVXNlIGEgNjRi aXQgY29tcGFyZSB3aGVuIGFueSBvZiB0aGUgaGlnaGVyCisJICogYml0cyBhcmUgbm9uZSB6ZXJv LCBvdGhlcndpc2UgdXNlIGEgMzJiaXQgY29tcGFyZSB3aXRoIHdyYXAgYXJvdW5kCisJICogaGFu ZGxpbmcuCisJICovCisJaWYgKHVwcGVyXzMyX2JpdHMoZjEpIHx8IHVwcGVyXzMyX2JpdHMoZjIp KQorCQlyZXR1cm4gZjEgPiBmMjsKKworCXJldHVybiAoaW50KShsb3dlcl8zMl9iaXRzKGYxKSAt IGxvd2VyXzMyX2JpdHMoZjIpKSA+IDA7CiB9CiAKIC8qKgpAQCAtNTQ4LDIxICs1NTYsMjEgQEAg dTY0IGRtYV9mZW5jZV9jb250ZXh0X2FsbG9jKHVuc2lnbmVkIG51bSk7CiAJZG8gewkJCQkJCQkJ XAogCQlzdHJ1Y3QgZG1hX2ZlbmNlICpfX2ZmID0gKGYpOwkJCQlcCiAJCWlmIChJU19FTkFCTEVE KENPTkZJR19ETUFfRkVOQ0VfVFJBQ0UpKQkJCVwKLQkJCXByX2luZm8oImYgJWxsdSMldTogIiBm bXQsCQkJXAorCQkJcHJfaW5mbygiZiAlbGx1IyVsbHU6ICIgZm10LAkJCVwKIAkJCQlfX2ZmLT5j b250ZXh0LCBfX2ZmLT5zZXFubywgIyNhcmdzKTsJXAogCX0gd2hpbGUgKDApCiAKICNkZWZpbmUg RE1BX0ZFTkNFX1dBUk4oZiwgZm10LCBhcmdzLi4uKSBcCiAJZG8gewkJCQkJCQkJXAogCQlzdHJ1 Y3QgZG1hX2ZlbmNlICpfX2ZmID0gKGYpOwkJCQlcCi0JCXByX3dhcm4oImYgJWxsdSMldTogIiBm bXQsIF9fZmYtPmNvbnRleHQsIF9fZmYtPnNlcW5vLAlcCisJCXByX3dhcm4oImYgJWxsdSMlbGx1 OiAiIGZtdCwgX19mZi0+Y29udGV4dCwgX19mZi0+c2Vxbm8sXAogCQkJICMjYXJncyk7CQkJCQlc CiAJfSB3aGlsZSAoMCkKIAogI2RlZmluZSBETUFfRkVOQ0VfRVJSKGYsIGZtdCwgYXJncy4uLikg XAogCWRvIHsJCQkJCQkJCVwKIAkJc3RydWN0IGRtYV9mZW5jZSAqX19mZiA9IChmKTsJCQkJXAot CQlwcl9lcnIoImYgJWxsdSMldTogIiBmbXQsIF9fZmYtPmNvbnRleHQsIF9fZmYtPnNlcW5vLAlc CisJCXByX2VycigiZiAlbGx1IyVsbHU6ICIgZm10LCBfX2ZmLT5jb250ZXh0LCBfX2ZmLT5zZXFu bywJXAogCQkJIyNhcmdzKTsJCQkJCVwKIAl9IHdoaWxlICgwKQogCi0tIAoyLjE3LjEKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGlu ZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=