From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH 4/6 v2] ASoC: AMD: DMA driver changes for Stoney Platform Date: Fri, 18 Aug 2017 14:10:28 -0400 Message-ID: <1503079830-16072-5-git-send-email-alexander.deucher@amd.com> References: <1503079830-16072-1-git-send-email-alexander.deucher@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1503079830-16072-1-git-send-email-alexander.deucher-5C7GfCeVMHo@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, airlied-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw@public.gmane.org, broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, Vijendar.Mukunda-5C7GfCeVMHo@public.gmane.org, rajeevkumar.linux-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, perex-/Fr2/VpizcU@public.gmane.org Cc: tiwai-l3A5Bk7waGM@public.gmane.org, Alex Deucher , lgirdwood-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org List-Id: alsa-devel@alsa-project.org RnJvbTogVmlqZW5kYXIgTXVrdW5kYSA8VmlqZW5kYXIuTXVrdW5kYUBhbWQuY29tPgoKQWRkZWQg RE1BIGRyaXZlciBjaGFuZ2VzIGZvciBTdG9uZXkgcGxhdGZvcm0uCkJlbG93IGFyZSB0aGUga2V5 IGRpZmZlcmVuY2VzIGJldHdlZW4gU3RvbmV5IGFuZCBDWgoKSW4gU3RvbmV5LCBNZW1vcnkgR2F0 aW5nIGlzIGRpc2FibGVkLlNSQU0gQmFua3Mgd29uJ3QKYmUgdHVybmVkIG9mZi5ObyBPZiBTUkFN IEJhbmtzIHJlZHVjZWQgdG8gNi4KREFHQiBHYXJsaWMgSW50ZXJmYWNlIHVzZWQgYW5kIDE2IGJp dCByZXNvbHV0aW9uIGlzIHN1cHBvcnRlZC4KU1JBTSBiYW5rIDEgJiBTUkFNIGJhbmsgMiB3aWxs IGJlIHVzZWQgZm9yIHBsYXliYWNrIHNjZW5hcmlvLgpTUkFNIEJhbmsgMyAmIFNSQU0gQmFuayA0 IHdpbGwgYmUgdXNlZCBmb3IgQ2FwdHVyZSBzY2VuYXJpby4KClJldmlld2VkLWJ5OiBBbGV4IERl dWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+ClNpZ25lZC1vZmYtYnk6IFZpamVuZGFy IE11a3VuZGEgPFZpamVuZGFyLk11a3VuZGFAYW1kLmNvbT4KU2lnbmVkLW9mZi1ieTogQWxleCBE ZXVjaGVyIDxhbGV4YW5kZXIuZGV1Y2hlckBhbWQuY29tPgotLS0KCnYyOiBBZGRlZCBzd2l0Y2gg Y2FzZXMgZm9yIGFzaWMgdHlwZS4KdjM6IEFkZCBSLWIsIHJlc2VuZAoKIHNvdW5kL3NvYy9hbWQv YWNwLXBjbS1kbWEuYyB8IDg3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLQogc291bmQvc29jL2FtZC9hY3AuaCAgICAgICAgIHwgIDIgKysKIDIgZmlsZXMgY2hh bmdlZCwgNjcgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc291 bmQvc29jL2FtZC9hY3AtcGNtLWRtYS5jIGIvc291bmQvc29jL2FtZC9hY3AtcGNtLWRtYS5jCmlu ZGV4IGYwMGI2YjkuLmYxNmUwYjggMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9hbWQvYWNwLXBjbS1k bWEuYworKysgYi9zb3VuZC9zb2MvYW1kL2FjcC1wY20tZG1hLmMKQEAgLTEzNyw4ICsxMzcsOCBA QCBzdGF0aWMgdm9pZCBjb25maWdfZG1hX2Rlc2NyaXB0b3JfaW5fc3JhbSh2b2lkIF9faW9tZW0g KmFjcF9tbWlvLAogICogc3lzdGVtIG1lbW9yeSA8LT4gQUNQIFNSQU0KICAqLwogc3RhdGljIHZv aWQgc2V0X2FjcF9zeXNtZW1fZG1hX2Rlc2NyaXB0b3JzKHZvaWQgX19pb21lbSAqYWNwX21taW8s Ci0JCQkJCSAgIHUzMiBzaXplLCBpbnQgZGlyZWN0aW9uLAotCQkJCQkgICB1MzIgcHRlX29mZnNl dCkKKwkJCQkJdTMyIHNpemUsIGludCBkaXJlY3Rpb24sCisJCQkJCXUzMiBwdGVfb2Zmc2V0LCB1 MzIgYXNpY190eXBlKQogewogCXUxNiBpOwogCXUxNiBkbWFfZHNjcl9pZHggPSBQTEFZQkFDS19T VEFSVF9ETUFfREVTQ1JfQ0gxMjsKQEAgLTE1MiwyMCArMTUyLDQyIEBAIHN0YXRpYyB2b2lkIHNl dF9hY3Bfc3lzbWVtX2RtYV9kZXNjcmlwdG9ycyh2b2lkIF9faW9tZW0gKmFjcF9tbWlvLAogCQkJ CQkoc2l6ZSAvIDIpIC0gKGkgKiAoc2l6ZS8yKSk7CiAJCQlkbWFkc2NyW2ldLnNyYyA9IEFDUF9J TlRFUk5BTF9BUEVSVFVSRV9XSU5ET1dfMF9BRERSRVNTCiAJCQkJKyAocHRlX29mZnNldCAqIFNa XzRLKSArIChpICogKHNpemUvMikpOwotCQkJZG1hZHNjcltpXS54ZmVyX3ZhbCB8PQotCQkJKEFD UF9ETUFfQVRUUklCVVRFU19EQUdCX09OSU9OX1RPX1NIQVJFRE1FTSA8PCAxNikgfAotCQkJKHNp emUgLyAyKTsKKwkJCXN3aXRjaCAoYXNpY190eXBlKSB7CisJCQljYXNlIENISVBfU1RPTkVZOgor CQkJCWRtYWRzY3JbaV0ueGZlcl92YWwgfD0KKwkJCQkoQUNQX0RNQV9BVFRSSUJVVEVTX0RBR0Jf R0FSTElDX1RPX1NIQVJFRE1FTSAgPDwgMTYpIHwKKwkJCQkoc2l6ZSAvIDIpOworCQkJCWJyZWFr OworCQkJZGVmYXVsdDoKKwkJCQlkbWFkc2NyW2ldLnhmZXJfdmFsIHw9CisJCQkJKEFDUF9ETUFf QVRUUklCVVRFU19EQUdCX09OSU9OX1RPX1NIQVJFRE1FTSAgPDwgMTYpIHwKKwkJCQkoc2l6ZSAv IDIpOworCQkJfQogCQl9IGVsc2UgewogCQkJZG1hX2RzY3JfaWR4ID0gQ0FQVFVSRV9TVEFSVF9E TUFfREVTQ1JfQ0gxNCArIGk7Ci0JCQlkbWFkc2NyW2ldLnNyYyA9IEFDUF9TSEFSRURfUkFNX0JB TktfNV9BRERSRVNTICsKLQkJCQkJKGkgKiAoc2l6ZS8yKSk7Ci0JCQlkbWFkc2NyW2ldLmRlc3Qg PSBBQ1BfSU5URVJOQUxfQVBFUlRVUkVfV0lORE9XXzBfQUREUkVTUwotCQkJCQkJKyAocHRlX29m ZnNldCAqIFNaXzRLKSArCi0JCQkJCQkoaSAqIChzaXplLzIpKTsKLQkJCWRtYWRzY3JbaV0ueGZl cl92YWwgfD0KLQkJCUJJVCgyMikgfAotCQkJKEFDUF9ETUFfQVRUUklCVVRFU19TSEFSRURNRU1f VE9fREFHQl9PTklPTiA8PCAxNikgfAotCQkJKHNpemUgLyAyKTsKKwkJCXN3aXRjaCAoYXNpY190 eXBlKSB7CisJCQljYXNlIENISVBfU1RPTkVZOgorCQkJCWRtYWRzY3JbaV0uc3JjID0gQUNQX1NI QVJFRF9SQU1fQkFOS18zX0FERFJFU1MgKworCQkJCShpICogKHNpemUvMikpOworCQkJCWRtYWRz Y3JbaV0uZGVzdCA9CisJCQkJQUNQX0lOVEVSTkFMX0FQRVJUVVJFX1dJTkRPV18wX0FERFJFU1Mg KworCQkJCShwdGVfb2Zmc2V0ICogU1pfNEspICsgKGkgKiAoc2l6ZS8yKSk7CisJCQkJZG1hZHNj cltpXS54ZmVyX3ZhbCB8PQorCQkJCUJJVCgyMikgfAorCQkJCShBQ1BfRE1BX0FUVFJJQlVURVNf U0hBUkVEX01FTV9UT19EQUdCX0dBUkxJQyA8PCAxNikgfAorCQkJCShzaXplIC8gMik7CisJCQkJ YnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWRtYWRzY3JbaV0uc3JjID0gQUNQX1NIQVJFRF9SQU1f QkFOS181X0FERFJFU1MgKworCQkJCShpICogKHNpemUvMikpOworCQkJCWRtYWRzY3JbaV0uZGVz dCA9CisJCQkJQUNQX0lOVEVSTkFMX0FQRVJUVVJFX1dJTkRPV18wX0FERFJFU1MgKworCQkJCShw dGVfb2Zmc2V0ICogU1pfNEspICsgKGkgKiAoc2l6ZS8yKSk7CisJCQkJZG1hZHNjcltpXS54ZmVy X3ZhbCB8PQorCQkJCUJJVCgyMikgfAorCQkJCShBQ1BfRE1BX0FUVFJJQlVURVNfU0hBUkVETUVN X1RPX0RBR0JfT05JT04gPDwgMTYpIHwKKwkJCQkoc2l6ZSAvIDIpOworCQkJfQogCQl9CiAJCWNv bmZpZ19kbWFfZGVzY3JpcHRvcl9pbl9zcmFtKGFjcF9tbWlvLCBkbWFfZHNjcl9pZHgsCiAJCQkJ CQkmZG1hZHNjcltpXSk7CkBAIC0xODYsNyArMjA4LDggQEAgc3RhdGljIHZvaWQgc2V0X2FjcF9z eXNtZW1fZG1hX2Rlc2NyaXB0b3JzKHZvaWQgX19pb21lbSAqYWNwX21taW8sCiAgKiBBQ1AgU1JB TSA8LT4gSTJTCiAgKi8KIHN0YXRpYyB2b2lkIHNldF9hY3BfdG9faTJzX2RtYV9kZXNjcmlwdG9y cyh2b2lkIF9faW9tZW0gKmFjcF9tbWlvLAotCQkJCQkgICB1MzIgc2l6ZSwgaW50IGRpcmVjdGlv bikKKwkJCQkJdTMyIHNpemUsIGludCBkaXJlY3Rpb24sCisJCQkJCXUzMiBhc2ljX3R5cGUpCiB7 CiAKIAl1MTYgaTsKQEAgLTIwNyw4ICsyMzAsMTcgQEAgc3RhdGljIHZvaWQgc2V0X2FjcF90b19p MnNfZG1hX2Rlc2NyaXB0b3JzKHZvaWQgX19pb21lbSAqYWNwX21taW8sCiAJCQlkbWFfZHNjcl9p ZHggPSBDQVBUVVJFX1NUQVJUX0RNQV9ERVNDUl9DSDE1ICsgaTsKIAkJCS8qIGRtYWRzY3JbaV0u c3JjIGlzIHVudXNlZCBieSBoYXJkd2FyZS4gKi8KIAkJCWRtYWRzY3JbaV0uc3JjID0gMDsKLQkJ CWRtYWRzY3JbaV0uZGVzdCA9IEFDUF9TSEFSRURfUkFNX0JBTktfNV9BRERSRVNTICsKKwkJCXN3 aXRjaCAoYXNpY190eXBlKSB7CisJCQljYXNlIENISVBfU1RPTkVZOgorCQkJCWRtYWRzY3JbaV0u ZGVzdCA9CisJCQkJCSBBQ1BfU0hBUkVEX1JBTV9CQU5LXzNfQUREUkVTUyArCiAJCQkJCShpICog KHNpemUgLyAyKSk7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWRtYWRzY3JbaV0uZGVz dCA9CisJCQkJCSBBQ1BfU0hBUkVEX1JBTV9CQU5LXzVfQUREUkVTUyArCisJCQkJCShpICogKHNp emUgLyAyKSk7CisJCQl9CiAJCQlkbWFkc2NyW2ldLnhmZXJfdmFsIHw9IEJJVCgyMikgfAogCQkJ CQkoRlJPTV9BQ1BfSTJTXzEgPDwgMTYpIHwgKHNpemUgLyAyKTsKIAkJfQpAQCAtMjY0LDcgKzI5 Niw4IEBAIHN0YXRpYyB2b2lkIGFjcF9wdGVfY29uZmlnKHZvaWQgX19pb21lbSAqYWNwX21taW8s IHN0cnVjdCBwYWdlICpwZywKIH0KIAogc3RhdGljIHZvaWQgY29uZmlnX2FjcF9kbWEodm9pZCBf X2lvbWVtICphY3BfbW1pbywKLQkJCSAgIHN0cnVjdCBhdWRpb19zdWJzdHJlYW1fZGF0YSAqYXVk aW9fY29uZmlnKQorCQkJc3RydWN0IGF1ZGlvX3N1YnN0cmVhbV9kYXRhICphdWRpb19jb25maWcs CisJCQl1MzIgYXNpY190eXBlKQogewogCXUzMiBwdGVfb2Zmc2V0OwogCkBAIC0yNzgsMTEgKzMx MSwxMSBAQCBzdGF0aWMgdm9pZCBjb25maWdfYWNwX2RtYSh2b2lkIF9faW9tZW0gKmFjcF9tbWlv LAogCiAJLyogQ29uZmlndXJlIFN5c3RlbSBtZW1vcnkgPC0+IEFDUCBTUkFNIERNQSBkZXNjcmlw dG9ycyAqLwogCXNldF9hY3Bfc3lzbWVtX2RtYV9kZXNjcmlwdG9ycyhhY3BfbW1pbywgYXVkaW9f Y29uZmlnLT5zaXplLAotCQkJCSAgICAgICBhdWRpb19jb25maWctPmRpcmVjdGlvbiwgcHRlX29m ZnNldCk7CisJCQkJYXVkaW9fY29uZmlnLT5kaXJlY3Rpb24sIHB0ZV9vZmZzZXQsIGFzaWNfdHlw ZSk7CiAKIAkvKiBDb25maWd1cmUgQUNQIFNSQU0gPC0+IEkyUyBETUEgZGVzY3JpcHRvcnMgKi8K IAlzZXRfYWNwX3RvX2kyc19kbWFfZGVzY3JpcHRvcnMoYWNwX21taW8sIGF1ZGlvX2NvbmZpZy0+ c2l6ZSwKLQkJCQkJYXVkaW9fY29uZmlnLT5kaXJlY3Rpb24pOworCQkJCWF1ZGlvX2NvbmZpZy0+ ZGlyZWN0aW9uLCBhc2ljX3R5cGUpOwogfQogCiAvKiBTdGFydCBhIGdpdmVuIERNQSBjaGFubmVs IHRyYW5zZmVyICovCkBAIC01MDIsNiArNTM1LDEyIEBAIHN0YXRpYyBpbnQgYWNwX2luaXQodm9p ZCBfX2lvbWVtICphY3BfbW1pbywgdTMyIGFzaWNfdHlwZSkKIAkJCWFjcF9zZXRfc3JhbV9iYW5r X3N0YXRlKGFjcF9tbWlvLCBiYW5rLCBmYWxzZSk7CiAJfQogCisJLyogU3RvbmV5IHN1cHBvcnRz IDE2Yml0IHJlc29sdXRpb24gKi8KKwlpZiAoYXNpY190eXBlID09IENISVBfU1RPTkVZKSB7CisJ CXZhbCA9IGFjcF9yZWdfcmVhZChhY3BfbW1pbywgbW1BQ1BfSTJTXzE2QklUX1JFU09MVVRJT05f RU4pOworCQl2YWwgfD0gMHgwMzsKKwkJYWNwX3JlZ193cml0ZSh2YWwsIGFjcF9tbWlvLCBtbUFD UF9JMlNfMTZCSVRfUkVTT0xVVElPTl9FTik7CisJfQogCXJldHVybiAwOwogfQogCkBAIC02ODAs NiArNzE5LDggQEAgc3RhdGljIGludCBhY3BfZG1hX2h3X3BhcmFtcyhzdHJ1Y3Qgc25kX3BjbV9z dWJzdHJlYW0gKnN1YnN0cmVhbSwKIAlzdHJ1Y3QgcGFnZSAqcGc7CiAJc3RydWN0IHNuZF9wY21f cnVudGltZSAqcnVudGltZTsKIAlzdHJ1Y3QgYXVkaW9fc3Vic3RyZWFtX2RhdGEgKnJ0ZDsKKwlz dHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqcHJ0ZCA9IHN1YnN0cmVhbS0+cHJpdmF0ZV9kYXRh OworCXN0cnVjdCBhdWRpb19kcnZfZGF0YSAqYWRhdGEgPSBkZXZfZ2V0X2RydmRhdGEocHJ0ZC0+ cGxhdGZvcm0tPmRldik7CiAKIAlydW50aW1lID0gc3Vic3RyZWFtLT5ydW50aW1lOwogCXJ0ZCA9 IHJ1bnRpbWUtPnByaXZhdGVfZGF0YTsKQEAgLTcwNyw3ICs3NDgsNyBAQCBzdGF0aWMgaW50IGFj cF9kbWFfaHdfcGFyYW1zKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAogCQly dGQtPm51bV9vZl9wYWdlcyA9IFBBR0VfQUxJR04oc2l6ZSkgPj4gUEFHRV9TSElGVDsKIAkJcnRk LT5kaXJlY3Rpb24gPSBzdWJzdHJlYW0tPnN0cmVhbTsKIAotCQljb25maWdfYWNwX2RtYShydGQt PmFjcF9tbWlvLCBydGQpOworCQljb25maWdfYWNwX2RtYShydGQtPmFjcF9tbWlvLCBydGQsIGFk YXRhLT5hc2ljX3R5cGUpOwogCQlzdGF0dXMgPSAwOwogCX0gZWxzZSB7CiAJCXN0YXR1cyA9IC1F Tk9NRU07CkBAIC0xMDExLDcgKzEwNTIsOCBAQCBzdGF0aWMgaW50IGFjcF9wY21fcmVzdW1lKHN0 cnVjdCBkZXZpY2UgKmRldikKIAkJCQkJCXRydWUpOwogCQl9CiAJCWNvbmZpZ19hY3BfZG1hKGFk YXRhLT5hY3BfbW1pbywKLQkJCQlhZGF0YS0+cGxheV9zdHJlYW0tPnJ1bnRpbWUtPnByaXZhdGVf ZGF0YSk7CisJCQlhZGF0YS0+cGxheV9zdHJlYW0tPnJ1bnRpbWUtPnByaXZhdGVfZGF0YSwKKwkJ CWFkYXRhLT5hc2ljX3R5cGUpOwogCX0KIAlpZiAoYWRhdGEtPmNhcHR1cmVfc3RyZWFtICYmIGFk YXRhLT5jYXB0dXJlX3N0cmVhbS0+cnVudGltZSkgewogCQlpZiAoYWRhdGEtPmFzaWNfdHlwZSAh PSBDSElQX1NUT05FWSkgewpAQCAtMTAyMCw3ICsxMDYyLDggQEAgc3RhdGljIGludCBhY3BfcGNt X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCQkJCQl0cnVlKTsKIAkJfQogCQljb25maWdf YWNwX2RtYShhZGF0YS0+YWNwX21taW8sCi0JCQkJYWRhdGEtPmNhcHR1cmVfc3RyZWFtLT5ydW50 aW1lLT5wcml2YXRlX2RhdGEpOworCQkJYWRhdGEtPmNhcHR1cmVfc3RyZWFtLT5ydW50aW1lLT5w cml2YXRlX2RhdGEsCisJCQlhZGF0YS0+YXNpY190eXBlKTsKIAl9CiAJYWNwX3JlZ193cml0ZSgx LCBhZGF0YS0+YWNwX21taW8sIG1tQUNQX0VYVEVSTkFMX0lOVFJfRU5CKTsKIAlyZXR1cm4gMDsK ZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9hbWQvYWNwLmggYi9zb3VuZC9zb2MvYW1kL2FjcC5oCmlu ZGV4IDI4Y2Y5MTQuLmEzMzBhOTkgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9hbWQvYWNwLmgKKysr IGIvc291bmQvc29jL2FtZC9hY3AuaApAQCAtMTksNiArMTksNyBAQAogCiAvKiBDYXB0dXJlIFNS QU0gYWRkcmVzcyAoYXMgYSBzb3VyY2UgaW4gZG1hIGRlc2NyaXB0b3IpICovCiAjZGVmaW5lIEFD UF9TSEFSRURfUkFNX0JBTktfNV9BRERSRVNTCQkweDQwMEEwMDAKKyNkZWZpbmUgQUNQX1NIQVJF RF9SQU1fQkFOS18zX0FERFJFU1MJCTB4NDAwNjAwMAogCiAjZGVmaW5lIEFDUF9ETUFfUkVTRVRf VElNRQkJCTEwMDAwCiAjZGVmaW5lIEFDUF9DTE9DS19FTl9USU1FX09VVF9WQUxVRQkJMHgwMDAw MDBGRgpAQCAtNjcsNiArNjgsNyBAQAogI2RlZmluZSBDQVBUVVJFX1NUQVJUX0RNQV9ERVNDUl9D SDE1IDYKICNkZWZpbmUgQ0FQVFVSRV9FTkRfRE1BX0RFU0NSX0NIMTUgNwogCisjZGVmaW5lIG1t QUNQX0kyU18xNkJJVF9SRVNPTFVUSU9OX0VOICAgICAgIDB4NTIwOQogZW51bSBhY3BfZG1hX3By aW9yaXR5X2xldmVsIHsKIAkvKiAweDAgU3BlY2lmaWVzIHRoZSBETUEgY2hhbm5lbCBpcyBnaXZl biBub3JtYWwgcHJpb3JpdHkgKi8KIAlBQ1BfRE1BX1BSSU9SSVRZX0xFVkVMX05PUk1BTCA9IDB4 MCwKLS0gCjIuNS41CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK