From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andy Shevchenko Subject: [PATCH v3 1/5] acpi, nfit: Switch to use new generic UUID API Date: Mon, 5 Jun 2017 19:40:42 +0300 Message-ID: <20170605164046.82676-2-andriy.shevchenko@linux.intel.com> References: <20170605164046.82676-1-andriy.shevchenko@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170605164046.82676-1-andriy.shevchenko@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Christoph Hellwig , linux-kernel@vger.kernel.org, "Rafael J . Wysocki" , linux-acpi@vger.kernel.org, Dan Williams , Mika Westerberg , Borislav Petkov , intel-gfx@lists.freedesktop.org Cc: Andy Shevchenko List-Id: linux-acpi@vger.kernel.org VGhlcmUgYXJlIG5ldyB0eXBlcyBhbmQgaGVscGVycyB0aGF0IGFyZSBzdXBwb3NlZCB0byBiZSB1 c2VkIGluIG5ldyBjb2RlLgoKQXMgYSBwcmVwYXJhdGlvbiB0byBnZXQgcmlkIG9mIGxlZ2FjeSB0 eXBlcyBhbmQgQVBJIGZ1bmN0aW9ucyBkbwp0aGUgY29udmVyc2lvbiBoZXJlLgoKUmV2aWV3ZWQt Ynk6IERhbiBXaWxsaWFtcyA8ZGFuLmoud2lsbGlhbXNAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5 OiBBbmR5IFNoZXZjaGVua28gPGFuZHJpeS5zaGV2Y2hlbmtvQGxpbnV4LmludGVsLmNvbT4KLS0t CiBkcml2ZXJzL2FjcGkvbmZpdC9jb3JlLmMgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvYWNwaS9uZml0L25maXQuaCB8ICAzICst LQogaW5jbHVkZS9saW51eC9hY3BpLmggICAgIHwgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCAyOSBp bnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkv bmZpdC9jb3JlLmMgYi9kcml2ZXJzL2FjcGkvbmZpdC9jb3JlLmMKaW5kZXggNjU2YWNiNWQ3MTY2 Li5kOWIzOWQwZTlkNmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9uZml0L2NvcmUuYworKysg Yi9kcml2ZXJzL2FjcGkvbmZpdC9jb3JlLmMKQEAgLTc0LDExICs3NCwxMSBAQCBzdHJ1Y3QgbmZp dF90YWJsZV9wcmV2IHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGZsdXNoZXM7CiB9OwogCi1zdGF0aWMg dTggbmZpdF91dWlkW05GSVRfVVVJRF9NQVhdWzE2XTsKK3N0YXRpYyBndWlkX3QgbmZpdF91dWlk W05GSVRfVVVJRF9NQVhdOwogCi1jb25zdCB1OCAqdG9fbmZpdF91dWlkKGVudW0gbmZpdF91dWlk cyBpZCkKK2NvbnN0IGd1aWRfdCAqdG9fbmZpdF91dWlkKGVudW0gbmZpdF91dWlkcyBpZCkKIHsK LQlyZXR1cm4gbmZpdF91dWlkW2lkXTsKKwlyZXR1cm4gJm5maXRfdXVpZFtpZF07CiB9CiBFWFBP UlRfU1lNQk9MKHRvX25maXRfdXVpZCk7CiAKQEAgLTIyMiw3ICsyMjIsNyBAQCBpbnQgYWNwaV9u Zml0X2N0bChzdHJ1Y3QgbnZkaW1tX2J1c19kZXNjcmlwdG9yICpuZF9kZXNjLCBzdHJ1Y3QgbnZk aW1tICpudmRpbW0sCiAJdTMyIG9mZnNldCwgZndfc3RhdHVzID0gMDsKIAlhY3BpX2hhbmRsZSBo YW5kbGU7CiAJdW5zaWduZWQgaW50IGZ1bmM7Ci0JY29uc3QgdTggKnV1aWQ7CisJY29uc3QgZ3Vp ZF90ICpndWlkOwogCWludCByYywgaTsKIAogCWZ1bmMgPSBjbWQ7CkBAIC0yNDUsNyArMjQ1LDcg QEAgaW50IGFjcGlfbmZpdF9jdGwoc3RydWN0IG52ZGltbV9idXNfZGVzY3JpcHRvciAqbmRfZGVz Yywgc3RydWN0IG52ZGltbSAqbnZkaW1tLAogCQljbWRfbWFzayA9IG52ZGltbV9jbWRfbWFzayhu dmRpbW0pOwogCQlkc21fbWFzayA9IG5maXRfbWVtLT5kc21fbWFzazsKIAkJZGVzYyA9IG5kX2Nt ZF9kaW1tX2Rlc2MoY21kKTsKLQkJdXVpZCA9IHRvX25maXRfdXVpZChuZml0X21lbS0+ZmFtaWx5 KTsKKwkJZ3VpZCA9IHRvX25maXRfdXVpZChuZml0X21lbS0+ZmFtaWx5KTsKIAkJaGFuZGxlID0g YWRldi0+aGFuZGxlOwogCX0gZWxzZSB7CiAJCXN0cnVjdCBhY3BpX2RldmljZSAqYWRldiA9IHRv X2FjcGlfZGV2KGFjcGlfZGVzYyk7CkBAIC0yNTQsNyArMjU0LDcgQEAgaW50IGFjcGlfbmZpdF9j dGwoc3RydWN0IG52ZGltbV9idXNfZGVzY3JpcHRvciAqbmRfZGVzYywgc3RydWN0IG52ZGltbSAq bnZkaW1tLAogCQljbWRfbWFzayA9IG5kX2Rlc2MtPmNtZF9tYXNrOwogCQlkc21fbWFzayA9IGNt ZF9tYXNrOwogCQlkZXNjID0gbmRfY21kX2J1c19kZXNjKGNtZCk7Ci0JCXV1aWQgPSB0b19uZml0 X3V1aWQoTkZJVF9ERVZfQlVTKTsKKwkJZ3VpZCA9IHRvX25maXRfdXVpZChORklUX0RFVl9CVVMp OwogCQloYW5kbGUgPSBhZGV2LT5oYW5kbGU7CiAJCWRpbW1fbmFtZSA9ICJidXMiOwogCX0KQEAg LTI4OSw3ICsyODksNyBAQCBpbnQgYWNwaV9uZml0X2N0bChzdHJ1Y3QgbnZkaW1tX2J1c19kZXNj cmlwdG9yICpuZF9kZXNjLCBzdHJ1Y3QgbnZkaW1tICpudmRpbW0sCiAJCQlpbl9idWYuYnVmZmVy LnBvaW50ZXIsCiAJCQltaW5fdCh1MzIsIDI1NiwgaW5fYnVmLmJ1ZmZlci5sZW5ndGgpLCB0cnVl KTsKIAotCW91dF9vYmogPSBhY3BpX2V2YWx1YXRlX2RzbShoYW5kbGUsIHV1aWQsIDEsIGZ1bmMs ICZpbl9vYmopOworCW91dF9vYmogPSBhY3BpX2V2YWx1YXRlX2RzbShoYW5kbGUsIGd1aWQuYiwg MSwgZnVuYywgJmluX29iaik7CiAJaWYgKCFvdXRfb2JqKSB7CiAJCWRldl9kYmcoZGV2LCAiJXM6 JXMgX0RTTSBmYWlsZWQgY21kOiAlc1xuIiwgX19mdW5jX18sIGRpbW1fbmFtZSwKIAkJCQljbWRf bmFtZSk7CkBAIC00MDksNyArNDA5LDcgQEAgaW50IG5maXRfc3BhX3R5cGUoc3RydWN0IGFjcGlf bmZpdF9zeXN0ZW1fYWRkcmVzcyAqc3BhKQogCWludCBpOwogCiAJZm9yIChpID0gMDsgaSA8IE5G SVRfVVVJRF9NQVg7IGkrKykKLQkJaWYgKG1lbWNtcCh0b19uZml0X3V1aWQoaSksIHNwYS0+cmFu Z2VfZ3VpZCwgMTYpID09IDApCisJCWlmIChndWlkX2VxdWFsKHRvX25maXRfdXVpZChpKSwgKGd1 aWRfdCAqKSZzcGEtPnJhbmdlX2d1aWQpKQogCQkJcmV0dXJuIGk7CiAJcmV0dXJuIC0xOwogfQpA QCAtMTQxNSw3ICsxNDE1LDcgQEAgc3RhdGljIGludCBhY3BpX25maXRfYWRkX2RpbW0oc3RydWN0 IGFjcGlfbmZpdF9kZXNjICphY3BpX2Rlc2MsCiAJc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LCAq YWRldl9kaW1tOwogCXN0cnVjdCBkZXZpY2UgKmRldiA9IGFjcGlfZGVzYy0+ZGV2OwogCXVuc2ln bmVkIGxvbmcgZHNtX21hc2s7Ci0JY29uc3QgdTggKnV1aWQ7CisJY29uc3QgZ3VpZF90ICpndWlk OwogCWludCBpOwogCWludCBmYW1pbHkgPSAtMTsKIApAQCAtMTQ0NCw3ICsxNDQ0LDcgQEAgc3Rh dGljIGludCBhY3BpX25maXRfYWRkX2RpbW0oc3RydWN0IGFjcGlfbmZpdF9kZXNjICphY3BpX2Rl c2MsCiAJLyoKIAkgKiBVbnRpbCBzdGFuZGFyZGl6YXRpb24gbWF0ZXJpYWxpemVzIHdlIG5lZWQg dG8gY29uc2lkZXIgNAogCSAqIGRpZmZlcmVudCBjb21tYW5kIHNldHMuICBOb3RlLCB0aGF0IGNo ZWNraW5nIGZvciBmdW5jdGlvbjAgKGJpdDApCi0JICogdGVsbHMgdXMgaWYgYW55IGNvbW1hbmRz IGFyZSByZWFjaGFibGUgdGhyb3VnaCB0aGlzIHV1aWQuCisJICogdGVsbHMgdXMgaWYgYW55IGNv bW1hbmRzIGFyZSByZWFjaGFibGUgdGhyb3VnaCB0aGlzIEdVSUQuCiAJICovCiAJZm9yIChpID0g TlZESU1NX0ZBTUlMWV9JTlRFTDsgaSA8PSBOVkRJTU1fRkFNSUxZX01TRlQ7IGkrKykKIAkJaWYg KGFjcGlfY2hlY2tfZHNtKGFkZXZfZGltbS0+aGFuZGxlLCB0b19uZml0X3V1aWQoaSksIDEsIDEp KQpAQCAtMTQ3NCw5ICsxNDc0LDkgQEAgc3RhdGljIGludCBhY3BpX25maXRfYWRkX2RpbW0oc3Ry dWN0IGFjcGlfbmZpdF9kZXNjICphY3BpX2Rlc2MsCiAJCXJldHVybiAwOwogCX0KIAotCXV1aWQg PSB0b19uZml0X3V1aWQobmZpdF9tZW0tPmZhbWlseSk7CisJZ3VpZCA9IHRvX25maXRfdXVpZChu Zml0X21lbS0+ZmFtaWx5KTsKIAlmb3JfZWFjaF9zZXRfYml0KGksICZkc21fbWFzaywgQklUU19Q RVJfTE9ORykKLQkJaWYgKGFjcGlfY2hlY2tfZHNtKGFkZXZfZGltbS0+aGFuZGxlLCB1dWlkLCAx LCAxVUxMIDw8IGkpKQorCQlpZiAoYWNwaV9jaGVja19kc20oYWRldl9kaW1tLT5oYW5kbGUsIGd1 aWQuYiwgMSwgMVVMTCA8PCBpKSkKIAkJCXNldF9iaXQoaSwgJm5maXRfbWVtLT5kc21fbWFzayk7 CiAKIAlyZXR1cm4gMDsKQEAgLTE2MTEsNyArMTYxMSw3IEBAIHN0YXRpYyBpbnQgYWNwaV9uZml0 X3JlZ2lzdGVyX2RpbW1zKHN0cnVjdCBhY3BpX25maXRfZGVzYyAqYWNwaV9kZXNjKQogc3RhdGlj IHZvaWQgYWNwaV9uZml0X2luaXRfZHNtcyhzdHJ1Y3QgYWNwaV9uZml0X2Rlc2MgKmFjcGlfZGVz YykKIHsKIAlzdHJ1Y3QgbnZkaW1tX2J1c19kZXNjcmlwdG9yICpuZF9kZXNjID0gJmFjcGlfZGVz Yy0+bmRfZGVzYzsKLQljb25zdCB1OCAqdXVpZCA9IHRvX25maXRfdXVpZChORklUX0RFVl9CVVMp OworCWNvbnN0IGd1aWRfdCAqZ3VpZCA9IHRvX25maXRfdXVpZChORklUX0RFVl9CVVMpOwogCXN0 cnVjdCBhY3BpX2RldmljZSAqYWRldjsKIAlpbnQgaTsKIApAQCAtMTYyMSw3ICsxNjIxLDcgQEAg c3RhdGljIHZvaWQgYWNwaV9uZml0X2luaXRfZHNtcyhzdHJ1Y3QgYWNwaV9uZml0X2Rlc2MgKmFj cGlfZGVzYykKIAkJcmV0dXJuOwogCiAJZm9yIChpID0gTkRfQ01EX0FSU19DQVA7IGkgPD0gTkRf Q01EX0NMRUFSX0VSUk9SOyBpKyspCi0JCWlmIChhY3BpX2NoZWNrX2RzbShhZGV2LT5oYW5kbGUs IHV1aWQsIDEsIDFVTEwgPDwgaSkpCisJCWlmIChhY3BpX2NoZWNrX2RzbShhZGV2LT5oYW5kbGUs IGd1aWQuYiwgMSwgMVVMTCA8PCBpKSkKIAkJCXNldF9iaXQoaSwgJm5kX2Rlc2MtPmNtZF9tYXNr KTsKIH0KIApAQCAtMzA1MSwxOSArMzA1MSwxOSBAQCBzdGF0aWMgX19pbml0IGludCBuZml0X2lu aXQodm9pZCkKIAlCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBhY3BpX25maXRfY29udHJvbF9y ZWdpb24pICE9IDgwKTsKIAlCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBhY3BpX25maXRfZGF0 YV9yZWdpb24pICE9IDQwKTsKIAotCWFjcGlfc3RyX3RvX3V1aWQoVVVJRF9WT0xBVElMRV9NRU1P UlksIG5maXRfdXVpZFtORklUX1NQQV9WT0xBVElMRV0pOwotCWFjcGlfc3RyX3RvX3V1aWQoVVVJ RF9QRVJTSVNURU5UX01FTU9SWSwgbmZpdF91dWlkW05GSVRfU1BBX1BNXSk7Ci0JYWNwaV9zdHJf dG9fdXVpZChVVUlEX0NPTlRST0xfUkVHSU9OLCBuZml0X3V1aWRbTkZJVF9TUEFfRENSXSk7Ci0J YWNwaV9zdHJfdG9fdXVpZChVVUlEX0RBVEFfUkVHSU9OLCBuZml0X3V1aWRbTkZJVF9TUEFfQkRX XSk7Ci0JYWNwaV9zdHJfdG9fdXVpZChVVUlEX1ZPTEFUSUxFX1ZJUlRVQUxfRElTSywgbmZpdF91 dWlkW05GSVRfU1BBX1ZESVNLXSk7Ci0JYWNwaV9zdHJfdG9fdXVpZChVVUlEX1ZPTEFUSUxFX1ZJ UlRVQUxfQ0QsIG5maXRfdXVpZFtORklUX1NQQV9WQ0RdKTsKLQlhY3BpX3N0cl90b191dWlkKFVV SURfUEVSU0lTVEVOVF9WSVJUVUFMX0RJU0ssIG5maXRfdXVpZFtORklUX1NQQV9QRElTS10pOwot CWFjcGlfc3RyX3RvX3V1aWQoVVVJRF9QRVJTSVNURU5UX1ZJUlRVQUxfQ0QsIG5maXRfdXVpZFtO RklUX1NQQV9QQ0RdKTsKLQlhY3BpX3N0cl90b191dWlkKFVVSURfTkZJVF9CVVMsIG5maXRfdXVp ZFtORklUX0RFVl9CVVNdKTsKLQlhY3BpX3N0cl90b191dWlkKFVVSURfTkZJVF9ESU1NLCBuZml0 X3V1aWRbTkZJVF9ERVZfRElNTV0pOwotCWFjcGlfc3RyX3RvX3V1aWQoVVVJRF9ORklUX0RJTU1f Tl9IUEUxLCBuZml0X3V1aWRbTkZJVF9ERVZfRElNTV9OX0hQRTFdKTsKLQlhY3BpX3N0cl90b191 dWlkKFVVSURfTkZJVF9ESU1NX05fSFBFMiwgbmZpdF91dWlkW05GSVRfREVWX0RJTU1fTl9IUEUy XSk7Ci0JYWNwaV9zdHJfdG9fdXVpZChVVUlEX05GSVRfRElNTV9OX01TRlQsIG5maXRfdXVpZFtO RklUX0RFVl9ESU1NX05fTVNGVF0pOworCWd1aWRfcGFyc2UoVVVJRF9WT0xBVElMRV9NRU1PUlks ICZuZml0X3V1aWRbTkZJVF9TUEFfVk9MQVRJTEVdKTsKKwlndWlkX3BhcnNlKFVVSURfUEVSU0lT VEVOVF9NRU1PUlksICZuZml0X3V1aWRbTkZJVF9TUEFfUE1dKTsKKwlndWlkX3BhcnNlKFVVSURf Q09OVFJPTF9SRUdJT04sICZuZml0X3V1aWRbTkZJVF9TUEFfRENSXSk7CisJZ3VpZF9wYXJzZShV VUlEX0RBVEFfUkVHSU9OLCAmbmZpdF91dWlkW05GSVRfU1BBX0JEV10pOworCWd1aWRfcGFyc2Uo VVVJRF9WT0xBVElMRV9WSVJUVUFMX0RJU0ssICZuZml0X3V1aWRbTkZJVF9TUEFfVkRJU0tdKTsK KwlndWlkX3BhcnNlKFVVSURfVk9MQVRJTEVfVklSVFVBTF9DRCwgJm5maXRfdXVpZFtORklUX1NQ QV9WQ0RdKTsKKwlndWlkX3BhcnNlKFVVSURfUEVSU0lTVEVOVF9WSVJUVUFMX0RJU0ssICZuZml0 X3V1aWRbTkZJVF9TUEFfUERJU0tdKTsKKwlndWlkX3BhcnNlKFVVSURfUEVSU0lTVEVOVF9WSVJU VUFMX0NELCAmbmZpdF91dWlkW05GSVRfU1BBX1BDRF0pOworCWd1aWRfcGFyc2UoVVVJRF9ORklU X0JVUywgJm5maXRfdXVpZFtORklUX0RFVl9CVVNdKTsKKwlndWlkX3BhcnNlKFVVSURfTkZJVF9E SU1NLCAmbmZpdF91dWlkW05GSVRfREVWX0RJTU1dKTsKKwlndWlkX3BhcnNlKFVVSURfTkZJVF9E SU1NX05fSFBFMSwgJm5maXRfdXVpZFtORklUX0RFVl9ESU1NX05fSFBFMV0pOworCWd1aWRfcGFy c2UoVVVJRF9ORklUX0RJTU1fTl9IUEUyLCAmbmZpdF91dWlkW05GSVRfREVWX0RJTU1fTl9IUEUy XSk7CisJZ3VpZF9wYXJzZShVVUlEX05GSVRfRElNTV9OX01TRlQsICZuZml0X3V1aWRbTkZJVF9E RVZfRElNTV9OX01TRlRdKTsKIAogCW5maXRfd3EgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtx dWV1ZSgibmZpdCIpOwogCWlmICghbmZpdF93cSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9u Zml0L25maXQuaCBiL2RyaXZlcnMvYWNwaS9uZml0L25maXQuaAppbmRleCA1OGZiN2Q2OGUwNGEu LjI5YmRkOTU5NTE3ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL25maXQvbmZpdC5oCisrKyBi L2RyaXZlcnMvYWNwaS9uZml0L25maXQuaApAQCAtMTgsNyArMTgsNiBAQAogI2luY2x1ZGUgPGxp bnV4L2xpYm52ZGltbS5oPgogI2luY2x1ZGUgPGxpbnV4L25kY3RsLmg+CiAjaW5jbHVkZSA8bGlu dXgvdHlwZXMuaD4KLSNpbmNsdWRlIDxsaW51eC91dWlkLmg+CiAjaW5jbHVkZSA8bGludXgvYWNw aS5oPgogI2luY2x1ZGUgPGFjcGkvYWN1dWlkLmg+CiAKQEAgLTIzNyw3ICsyMzYsNyBAQCBzdGF0 aWMgaW5saW5lIHN0cnVjdCBhY3BpX25maXRfZGVzYyAqdG9fYWNwaV9kZXNjKAogCXJldHVybiBj b250YWluZXJfb2YobmRfZGVzYywgc3RydWN0IGFjcGlfbmZpdF9kZXNjLCBuZF9kZXNjKTsKIH0K IAotY29uc3QgdTggKnRvX25maXRfdXVpZChlbnVtIG5maXRfdXVpZHMgaWQpOworY29uc3QgZ3Vp ZF90ICp0b19uZml0X3V1aWQoZW51bSBuZml0X3V1aWRzIGlkKTsKIGludCBhY3BpX25maXRfaW5p dChzdHJ1Y3QgYWNwaV9uZml0X2Rlc2MgKmFjcGlfZGVzYywgdm9pZCAqbmZpdCwgYWNwaV9zaXpl IHN6KTsKIHZvaWQgYWNwaV9uZml0X3NodXRkb3duKHZvaWQgKmRhdGEpOwogdm9pZCBfX2FjcGlf bmZpdF9ub3RpZnkoc3RydWN0IGRldmljZSAqZGV2LCBhY3BpX2hhbmRsZSBoYW5kbGUsIHUzMiBl dmVudCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2FjcGkuaCBiL2luY2x1ZGUvbGludXgv YWNwaS5oCmluZGV4IDEzN2U0YTNkODljNS4uYjBlMTYzNmNhNWMzIDEwMDY0NAotLS0gYS9pbmNs dWRlL2xpbnV4L2FjcGkuaAorKysgYi9pbmNsdWRlL2xpbnV4L2FjcGkuaApAQCAtMzksNiArMzks NyBAQAogI2luY2x1ZGUgPGxpbnV4L2R5bmFtaWNfZGVidWcuaD4KICNpbmNsdWRlIDxsaW51eC9t b2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgorI2luY2x1ZGUgPGxpbnV4L3V1aWQu aD4KIAogI2luY2x1ZGUgPGFjcGkvYWNwaV9idXMuaD4KICNpbmNsdWRlIDxhY3BpL2FjcGlfZHJp dmVycy5oPgotLSAKMi4xMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK