From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH 6/6] drm/msm: Count how many times iova memory is pinned Date: Wed, 31 Oct 2018 11:05:52 -0600 Message-ID: <20181031170552.32542-7-jcrouse@codeaurora.org> References: <20181031170552.32542-1-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181031170552.32542-1-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org QWRkIGEgcmVmZXJlbmNlIGNvdW50IHRvIHRyYWNrIGhvdyBtYW55IHRpbWVzIGEgcGFydGljdWxh cgpjaHVuayBvZiBpb3ZhIG1lbW9yeSBpcyBwaW5uZWQgKG1hcHBlZCkgaW4gdGhlIGlvbXUgYW5k CmFkZCBtc21fZ2VtX3VucGluX2lvdmEgdG8gZ2l2ZSB1cCByZWZlcmVuY2VzLgoKSXQgaXMgaW1w b3J0YW50IHRvIG5vdGUgdGhhdCBtc21fZ2VtX3VucGluX2lvdmEgcmVwbGFjZXMKbXNtX2dlbV9w dXRfaW92YSBiZWNhdXNlIHRoZSBuZXcgaW1wbGljaXQgYmVoYXZpb3IKdGhhdCBhbiBhc3NpZ25l ZCBpb3ZhIGluIGEgZ2l2ZW4gdm1hIGlzIG5vdyB2YWxpZCBmb3IgdGhlCmxpZmUgb2YgdGhlIGJ1 ZmZlciBhbmQgd2hhdCB3ZSBhcmUgcmVhbGx5IGZvY3VzaW5nIG9uIGlzCnRoZSB1c2Ugb2YgdGhh dCBpb3ZhLgoKRm9yIG5vdyB0aGUgdW5tYXBwaW5ncyBhcmUgbGF6eTsgb25jZSB0aGUgcmVmZXJl bmNlIGNvdW50cwpnbyB0byB6ZXJvIHRoZXkgKkNPVUxEKiBiZSB1bm1hcHBlZCBkeW5hbWljYWxs eSBidXQgdGhhdAp3aWxsIHJlcXVpcmUgYW4gb3V0c2lkZSBmb3JjZSBzdWNoIGFzIGEgc2hyaW5r ZXIgb3IKbW1fbm90aWZpZXJzLiAgRm9yIG5vdywgd2UncmUganVzdCBmb2N1c2luZyBvbiBnZXR0 aW5nCnRoZSBjb3VudGluZyByaWdodCBhbmQgc2V0dGluZyBvdXJzZWx2ZXMgdXAgdG8gYmUgcmVh ZHkKZm9yIHRoZSBmdXR1cmUuCgpTaWduZWQtb2ZmLWJ5OiBKb3JkYW4gQ3JvdXNlIDxqY3JvdXNl QGNvZGVhdXJvcmEub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfZGVi dWdmcy5jIHwgIDYgKy0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X2dwdS5jICAg ICB8ICA5ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E2eHhfZ3B1LmMgICAgIHwg IDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA0L21kcDRfY3J0Yy5jIHwgIDIgKy0K IGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA0L21kcDRfa21zLmMgIHwgIDIgKy0KIGRyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDVfY3J0Yy5jIHwgIDIgKy0KIGRyaXZlcnMvZ3B1 L2RybS9tc20vZHNpL2RzaV9ob3N0LmMgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9t c20vbXNtX2Rydi5oICAgICAgICAgICAgIHwgIDggKysrLQogZHJpdmVycy9ncHUvZHJtL21zbS9t c21fZmIuYyAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2Vt LmMgICAgICAgICAgICAgfCA0MyArKysrKysrKysrKystLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0v bXNtL21zbV9nZW0uaCAgICAgICAgICAgICB8ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNt X2dlbV9zdWJtaXQuYyAgICAgIHwgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dlbV92 bWEuYyAgICAgICAgIHwgNTEgKysrKysrKysrKysrKysrKystLS0tLS0KIGRyaXZlcnMvZ3B1L2Ry bS9tc20vbXNtX2dwdS5jICAgICAgICAgICAgIHwgIDIgKy0KIDE0IGZpbGVzIGNoYW5nZWQsIDg3 IGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vYWRyZW5vL2E1eHhfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJl bm8vYTV4eF9kZWJ1Z2ZzLmMKaW5kZXggNjk4M2NkOTEwMmJkLi5kOWFmM2FmZjY5MGYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfZGVidWdmcy5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfZGVidWdmcy5jCkBAIC0xMzAsMTUgKzEzMCwx MyBAQCByZXNldF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKIAlhZHJlbm9fZ3B1LT5md1tBRFJF Tk9fRldfUEZQXSA9IE5VTEw7CiAKIAlpZiAoYTV4eF9ncHUtPnBtNF9ibykgewotCQlpZiAoYTV4 eF9ncHUtPnBtNF9pb3ZhKQotCQkJbXNtX2dlbV9wdXRfaW92YShhNXh4X2dwdS0+cG00X2JvLCBn cHUtPmFzcGFjZSk7CisJCW1zbV9nZW1fdW5waW5faW92YShhNXh4X2dwdS0+cG00X2JvLCBncHUt PmFzcGFjZSk7CiAJCWRybV9nZW1fb2JqZWN0X3B1dChhNXh4X2dwdS0+cG00X2JvKTsKIAkJYTV4 eF9ncHUtPnBtNF9ibyA9IE5VTEw7CiAJfQogCiAJaWYgKGE1eHhfZ3B1LT5wZnBfYm8pIHsKLQkJ aWYgKGE1eHhfZ3B1LT5wZnBfaW92YSkKLQkJCW1zbV9nZW1fcHV0X2lvdmEoYTV4eF9ncHUtPnBm cF9ibywgZ3B1LT5hc3BhY2UpOworCQltc21fZ2VtX3VucGluX2lvdmEoYTV4eF9ncHUtPnBmcF9i bywgZ3B1LT5hc3BhY2UpOwogCQlkcm1fZ2VtX29iamVjdF9wdXQoYTV4eF9ncHUtPnBmcF9ibyk7 CiAJCWE1eHhfZ3B1LT5wZnBfYm8gPSBOVUxMOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vYWRyZW5vL2E1eHhfZ3B1LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9h NXh4X2dwdS5jCmluZGV4IGQ2ZjhkZWRjMDI4YS4uMTM1NDk2MzkzY2YzIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X2dwdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vYWRyZW5vL2E1eHhfZ3B1LmMKQEAgLTg0MSwyMCArODQxLDE3IEBAIHN0YXRpYyB2b2lk IGE1eHhfZGVzdHJveShzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogCWE1eHhfcHJlZW1wdF9maW5pKGdw dSk7CiAKIAlpZiAoYTV4eF9ncHUtPnBtNF9ibykgewotCQlpZiAoYTV4eF9ncHUtPnBtNF9pb3Zh KQotCQkJbXNtX2dlbV9wdXRfaW92YShhNXh4X2dwdS0+cG00X2JvLCBncHUtPmFzcGFjZSk7CisJ CW1zbV9nZW1fdW5waW5faW92YShhNXh4X2dwdS0+cG00X2JvLCBncHUtPmFzcGFjZSk7CiAJCWRy bV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChhNXh4X2dwdS0+cG00X2JvKTsKIAl9CiAKIAlpZiAo YTV4eF9ncHUtPnBmcF9ibykgewotCQlpZiAoYTV4eF9ncHUtPnBmcF9pb3ZhKQotCQkJbXNtX2dl bV9wdXRfaW92YShhNXh4X2dwdS0+cGZwX2JvLCBncHUtPmFzcGFjZSk7CisJCW1zbV9nZW1fdW5w aW5faW92YShhNXh4X2dwdS0+cGZwX2JvLCBncHUtPmFzcGFjZSk7CiAJCWRybV9nZW1fb2JqZWN0 X3B1dF91bmxvY2tlZChhNXh4X2dwdS0+cGZwX2JvKTsKIAl9CiAKIAlpZiAoYTV4eF9ncHUtPmdw bXVfYm8pIHsKLQkJaWYgKGE1eHhfZ3B1LT5ncG11X2lvdmEpCi0JCQltc21fZ2VtX3B1dF9pb3Zh KGE1eHhfZ3B1LT5ncG11X2JvLCBncHUtPmFzcGFjZSk7CisJCW1zbV9nZW1fdW5waW5faW92YShh NXh4X2dwdS0+Z3BtdV9ibywgZ3B1LT5hc3BhY2UpOwogCQlkcm1fZ2VtX29iamVjdF9wdXRfdW5s b2NrZWQoYTV4eF9ncHUtPmdwbXVfYm8pOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21zbS9hZHJlbm8vYTZ4eF9ncHUuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E2 eHhfZ3B1LmMKaW5kZXggMzhiN2E1YTkyYmZiLi45YWNmMTJjMjFiMjMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E2eHhfZ3B1LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9hZHJlbm8vYTZ4eF9ncHUuYwpAQCAtNzQ2LDggKzc0Niw3IEBAIHN0YXRpYyB2b2lkIGE2 eHhfZGVzdHJveShzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogCXN0cnVjdCBhNnh4X2dwdSAqYTZ4eF9n cHUgPSB0b19hNnh4X2dwdShhZHJlbm9fZ3B1KTsKIAogCWlmIChhNnh4X2dwdS0+c3FlX2JvKSB7 Ci0JCWlmIChhNnh4X2dwdS0+c3FlX2lvdmEpCi0JCQltc21fZ2VtX3B1dF9pb3ZhKGE2eHhfZ3B1 LT5zcWVfYm8sIGdwdS0+YXNwYWNlKTsKKwkJbXNtX2dlbV91bnBpbl9pb3ZhKGE2eHhfZ3B1LT5z cWVfYm8sIGdwdS0+YXNwYWNlKTsKIAkJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKGE2eHhf Z3B1LT5zcWVfYm8pOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L21kcDQvbWRwNF9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNC9tZHA0X2Ny dGMuYwppbmRleCBlZjY4ODRmMWZjMzQuLjhmMjM1OWRjODdiNCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL21kcDQvbWRwNF9jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL21kcDQvbWRwNF9jcnRjLmMKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgdm9p ZCB1bnJlZl9jdXJzb3Jfd29ya2VyKHN0cnVjdCBkcm1fZmxpcF93b3JrICp3b3JrLCB2b2lkICp2 YWwpCiAJc3RydWN0IG1kcDRfa21zICptZHA0X2ttcyA9IGdldF9rbXMoJm1kcDRfY3J0Yy0+YmFz ZSk7CiAJc3RydWN0IG1zbV9rbXMgKmttcyA9ICZtZHA0X2ttcy0+YmFzZS5iYXNlOwogCi0JbXNt X2dlbV9wdXRfaW92YSh2YWwsIGttcy0+YXNwYWNlKTsKKwltc21fZ2VtX3VucGluX2lvdmEodmFs LCBrbXMtPmFzcGFjZSk7CiAJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKHZhbCk7CiB9CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA0L21kcDRfa21zLmMgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNC9tZHA0X2ttcy5jCmluZGV4IDlmZDZiOWIyZGJj Yi4uOTM0YTQ5ODE4ZWE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRw NC9tZHA0X2ttcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA0L21kcDRfa21z LmMKQEAgLTE2NSw3ICsxNjUsNyBAQCBzdGF0aWMgdm9pZCBtZHA0X2Rlc3Ryb3koc3RydWN0IG1z bV9rbXMgKmttcykKIAlzdHJ1Y3QgbXNtX2dlbV9hZGRyZXNzX3NwYWNlICphc3BhY2UgPSBrbXMt PmFzcGFjZTsKIAogCWlmIChtZHA0X2ttcy0+YmxhbmtfY3Vyc29yX2lvdmEpCi0JCW1zbV9nZW1f cHV0X2lvdmEobWRwNF9rbXMtPmJsYW5rX2N1cnNvcl9ibywga21zLT5hc3BhY2UpOworCQltc21f Z2VtX3VucGluX2lvdmEobWRwNF9rbXMtPmJsYW5rX2N1cnNvcl9ibywga21zLT5hc3BhY2UpOwog CWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChtZHA0X2ttcy0+YmxhbmtfY3Vyc29yX2JvKTsK IAogCWlmIChhc3BhY2UpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9t ZHA1L21kcDVfY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDUvbWRwNV9jcnRj LmMKaW5kZXggYzdjYzI3NjU3NWZiLi5jNWZkZTFhNDE5MWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDVfY3J0Yy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9tZHA1L21kcDVfY3J0Yy5jCkBAIC0xNzMsNyArMTczLDcgQEAgc3RhdGljIHZvaWQg dW5yZWZfY3Vyc29yX3dvcmtlcihzdHJ1Y3QgZHJtX2ZsaXBfd29yayAqd29yaywgdm9pZCAqdmFs KQogCXN0cnVjdCBtZHA1X2ttcyAqbWRwNV9rbXMgPSBnZXRfa21zKCZtZHA1X2NydGMtPmJhc2Up OwogCXN0cnVjdCBtc21fa21zICprbXMgPSAmbWRwNV9rbXMtPmJhc2UuYmFzZTsKIAotCW1zbV9n ZW1fcHV0X2lvdmEodmFsLCBrbXMtPmFzcGFjZSk7CisJbXNtX2dlbV91bnBpbl9pb3ZhKHZhbCwg a21zLT5hc3BhY2UpOwogCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZCh2YWwpOwogfQogCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfaG9zdC5jIGIvZHJpdmVycy9n cHUvZHJtL21zbS9kc2kvZHNpX2hvc3QuYwppbmRleCA5OTEyMjc2N2FiZjQuLjNiNzA5MmUxZGNj NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2hvc3QuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfaG9zdC5jCkBAIC0xMTE4LDcgKzExMTgsNyBAQCBz dGF0aWMgdm9pZCBkc2lfdHhfYnVmX2ZyZWUoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3Qp CiAKIAlwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlpZiAobXNtX2hvc3QtPnR4X2dlbV9vYmop IHsKLQkJbXNtX2dlbV9wdXRfaW92YShtc21faG9zdC0+dHhfZ2VtX29iaiwgcHJpdi0+a21zLT5h c3BhY2UpOworCQltc21fZ2VtX3VucGluX2lvdmEobXNtX2hvc3QtPnR4X2dlbV9vYmosIHByaXYt Pmttcy0+YXNwYWNlKTsKIAkJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG1zbV9ob3N0LT50 eF9nZW1fb2JqKTsKIAkJbXNtX2hvc3QtPnR4X2dlbV9vYmogPSBOVUxMOwogCX0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9t c21fZHJ2LmgKaW5kZXggNDM3MjUwNWEwYmRhLi45NTVjMmY1MjJkYjYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNt X2Rydi5oCkBAIC0yNDMsMTAgKzI0MywxNCBAQCB2b2lkIG1zbV9hdG9taWNfc3RhdGVfZnJlZShz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwogCiBpbnQgbXNtX2dlbV9pbml0X3ZtYShz dHJ1Y3QgbXNtX2dlbV9hZGRyZXNzX3NwYWNlICphc3BhY2UsCiAJCXN0cnVjdCBtc21fZ2VtX3Zt YSAqdm1hLCBpbnQgbnBhZ2VzKTsKK3ZvaWQgbXNtX2dlbV9wdXJnZV92bWEoc3RydWN0IG1zbV9n ZW1fYWRkcmVzc19zcGFjZSAqYXNwYWNlLAorCQlzdHJ1Y3QgbXNtX2dlbV92bWEgKnZtYSk7CiB2 b2lkIG1zbV9nZW1fdW5tYXBfdm1hKHN0cnVjdCBtc21fZ2VtX2FkZHJlc3Nfc3BhY2UgKmFzcGFj ZSwKIAkJc3RydWN0IG1zbV9nZW1fdm1hICp2bWEpOwogaW50IG1zbV9nZW1fbWFwX3ZtYShzdHJ1 Y3QgbXNtX2dlbV9hZGRyZXNzX3NwYWNlICphc3BhY2UsCiAJCXN0cnVjdCBtc21fZ2VtX3ZtYSAq dm1hLCBzdHJ1Y3Qgc2dfdGFibGUgKnNndCwgaW50IG5wYWdlcyk7Cit2b2lkIG1zbV9nZW1fY2xv c2Vfdm1hKHN0cnVjdCBtc21fZ2VtX2FkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKKwkJc3RydWN0IG1z bV9nZW1fdm1hICp2bWEpOwogCiB2b2lkIG1zbV9nZW1fYWRkcmVzc19zcGFjZV9wdXQoc3RydWN0 IG1zbV9nZW1fYWRkcmVzc19zcGFjZSAqYXNwYWNlKTsKIApAQCAtMjc1LDEwICsyNzksMTAgQEAg aW50IG1zbV9nZW1fZ2V0X2FuZF9waW5faW92YShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwK IAkJc3RydWN0IG1zbV9nZW1fYWRkcmVzc19zcGFjZSAqYXNwYWNlLCB1aW50NjRfdCAqaW92YSk7 CiB1aW50NjRfdCBtc21fZ2VtX2lvdmEoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCiAJCXN0 cnVjdCBtc21fZ2VtX2FkZHJlc3Nfc3BhY2UgKmFzcGFjZSk7Cit2b2lkIG1zbV9nZW1fdW5waW5f aW92YShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKKwkJc3RydWN0IG1zbV9nZW1fYWRkcmVz c19zcGFjZSAqYXNwYWNlKTsKIHN0cnVjdCBwYWdlICoqbXNtX2dlbV9nZXRfcGFnZXMoc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpvYmopOwogdm9pZCBtc21fZ2VtX3B1dF9wYWdlcyhzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iaik7Ci12b2lkIG1zbV9nZW1fcHV0X2lvdmEoc3RydWN0IGRybV9nZW1f b2JqZWN0ICpvYmosCi0JCXN0cnVjdCBtc21fZ2VtX2FkZHJlc3Nfc3BhY2UgKmFzcGFjZSk7CiBp bnQgbXNtX2dlbV9kdW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsIHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiAJCXN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYiAqYXJncyk7CiBpbnQg bXNtX2dlbV9kdW1iX21hcF9vZmZzZXQoc3RydWN0IGRybV9maWxlICpmaWxlLCBzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZmIuYyBi L2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ZiLmMKaW5kZXggNGUxZTQzNWRiNWE2Li4xMjI0NzM5 MDk0ZjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ZiLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9tc21fZmIuYwpAQCAtODEsNyArODEsNyBAQCB2b2lkIG1zbV9mcmFt ZWJ1ZmZlcl9jbGVhbnVwKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAogCWludCBpLCBuID0g ZmItPmZvcm1hdC0+bnVtX3BsYW5lczsKIAogCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspCi0JCW1z bV9nZW1fcHV0X2lvdmEoZmItPm9ialtpXSwgYXNwYWNlKTsKKwkJbXNtX2dlbV91bnBpbl9pb3Zh KGZiLT5vYmpbaV0sIGFzcGFjZSk7CiB9CiAKIHVpbnQzMl90IG1zbV9mcmFtZWJ1ZmZlcl9pb3Zh KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21zbS9tc21fZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW0uYwppbmRleCBhN2U1 MTAwMTg3OWIuLmM1ZWI4ZTM2NTJmMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9t c21fZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmMKQEAgLTM1Miw3ICsz NTIsOCBAQCBwdXRfaW92YShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKIAlXQVJOX09OKCFt dXRleF9pc19sb2NrZWQoJm1zbV9vYmotPmxvY2spKTsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnlf c2FmZSh2bWEsIHRtcCwgJm1zbV9vYmotPnZtYXMsIGxpc3QpIHsKLQkJbXNtX2dlbV91bm1hcF92 bWEodm1hLT5hc3BhY2UsIHZtYSk7CisJCW1zbV9nZW1fcHVyZ2Vfdm1hKHZtYS0+YXNwYWNlLCB2 bWEpOworCQltc21fZ2VtX2Nsb3NlX3ZtYSh2bWEtPmFzcGFjZSwgdm1hKTsKIAkJZGVsX3ZtYSh2 bWEpOwogCX0KIH0KQEAgLTQzMCw3ICs0MzEsMTAgQEAgaW50IG1zbV9nZW1fZ2V0X2FuZF9waW5f aW92YShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKIAlyZXR1cm4gcmV0OwogfQogCi0vKiBH ZXQgYW4gaW92YSBidXQgZG9uJ3QgcGluIHRoZSBtZW1vcnkgYmVoaW5kIGl0ICovCisvKgorICog R2V0IGFuIGlvdmEgYnV0IGRvbid0IHBpbiBpdC4gRG9lc24ndCBuZWVkIGEgcHV0IGJlY2F1c2Ug aW92YXMgYXJlIGN1cnJlbnRseQorICogdmFsaWQgZm9yIHRoZSBsaWZlIG9mIHRoZSBvYmplY3QK KyAqLwogaW50IG1zbV9nZW1fZ2V0X2lvdmEoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCiAJ CXN0cnVjdCBtc21fZ2VtX2FkZHJlc3Nfc3BhY2UgKmFzcGFjZSwgdWludDY0X3QgKmlvdmEpCiB7 CkBAIC00NDQsNyArNDQ4LDYgQEAgaW50IG1zbV9nZW1fZ2V0X2lvdmEoc3RydWN0IGRybV9nZW1f b2JqZWN0ICpvYmosCiAJcmV0dXJuIHJldDsKIH0KIAotCiAvKiBnZXQgaW92YSB3aXRob3V0IHRh a2luZyBhIHJlZmVyZW5jZSwgdXNlZCBpbiBwbGFjZXMgd2hlcmUgeW91IGhhdmUKICAqIGFscmVh ZHkgZG9uZSBhICdtc21fZ2VtX2dldF9hbmRfcGluX2lvdmEnIG9yICdtc21fZ2VtX2dldF9pb3Zh JwogICovCkBAIC00NjIsMTUgKzQ2NSwyNCBAQCB1aW50NjRfdCBtc21fZ2VtX2lvdmEoc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpvYmosCiAJcmV0dXJuIHZtYSA/IHZtYS0+aW92YSA6IDA7CiB9CiAK LXZvaWQgbXNtX2dlbV9wdXRfaW92YShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKKy8qCisg KiBVbnBpbiBhIGlvdmEgYnkgdXBkYXRpbmcgdGhlIHJlZmVyZW5jZSBjb3VudHMuIFRoZSBtZW1v cnkgaXNuJ3QgYWN0dWFsbHkKKyAqIHB1cmdlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSAoc2hyaW5r ZXIsIG1tX25vdGlmaWVyLCBkZXN0cm95LCBldGMpIGRlY2lkZXMKKyAqIHRvIGdldCByaWQgb2Yg aXQKKyAqLwordm9pZCBtc21fZ2VtX3VucGluX2lvdmEoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv YmosCiAJCXN0cnVjdCBtc21fZ2VtX2FkZHJlc3Nfc3BhY2UgKmFzcGFjZSkKIHsKLQkvLyBYWFgg VE9ETyAuLgotCS8vIE5PVEU6IHByb2JhYmx5IGRvbid0IG5lZWQgYSBfbG9ja2VkKCkgdmVyc2lv bi4uIHdlIHdvdWxkbid0Ci0JLy8gbm9ybWFsbHkgdW5tYXAgaGVyZSwgYnV0IGluc3RlYWQganVz dCBtYXJrIHRoYXQgaXQgY291bGQgYmUKLQkvLyB1bm1hcHBlZCAoaWYgdGhlIGlvdmEgcmVmY250 IGRyb3BzIHRvIHplcm8pLCBidXQgdGhlbiBsYXRlcgotCS8vIGlmIGFub3RoZXIgX2dldF9pb3Zh X2xvY2tlZCgpIGZhaWxzIHdlIGNhbiBzdGFydCB1bm1hcHBpbmcKLQkvLyB0aGluZ3MgdGhhdCBh cmUgbm8gbG9uZ2VyIG5lZWRlZC4uCisJc3RydWN0IG1zbV9nZW1fb2JqZWN0ICptc21fb2JqID0g dG9fbXNtX2JvKG9iaik7CisJc3RydWN0IG1zbV9nZW1fdm1hICp2bWE7CisKKwltdXRleF9sb2Nr KCZtc21fb2JqLT5sb2NrKTsKKwl2bWEgPSBsb29rdXBfdm1hKG9iaiwgYXNwYWNlKTsKKworCWlm ICghV0FSTl9PTighdm1hKSkKKwkJbXNtX2dlbV91bm1hcF92bWEoYXNwYWNlLCB2bWEpOworCisJ bXV0ZXhfdW5sb2NrKCZtc21fb2JqLT5sb2NrKTsKIH0KIAogaW50IG1zbV9nZW1fZHVtYl9jcmVh dGUoc3RydWN0IGRybV9maWxlICpmaWxlLCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LApAQCAtNzg2 LDExICs3OTgsMTIgQEAgdm9pZCBtc21fZ2VtX2Rlc2NyaWJlKHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqb2JqLCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCiAKIAlpZiAoIWxpc3RfZW1wdHkoJm1zbV9vYmot PnZtYXMpKSB7CiAKLQkJc2VxX3B1dHMobSwgIiAgIHZtYXM6Iik7CisJCXNlcV9wdXRzKG0sICIg ICAgICB2bWFzOiIpOwogCiAJCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmbXNtX29iai0+dm1h cywgbGlzdCkKLQkJCXNlcV9wcmludGYobSwgIiBbJXM6ICUwOGxseCwlc10iLCB2bWEtPmFzcGFj ZS0+bmFtZSwKLQkJCQl2bWEtPmlvdmEsIHZtYS0+bWFwcGVkID8gIm1hcHBlZCIgOiAidW5tYXBw ZWQiKTsKKwkJCXNlcV9wcmludGYobSwgIiBbJXM6ICUwOGxseCwlcywlZF0iLCB2bWEtPmFzcGFj ZS0+bmFtZSwKKwkJCQl2bWEtPmlvdmEsIHZtYS0+bWFwcGVkID8gIm1hcHBlZCIgOiAidW5tYXBw ZWQiLAorCQkJCXZtYS0+aW51c2UpOwogCiAJCXNlcV9wdXRzKG0sICJcbiIpOwogCX0KQEAgLTEw OTUsNyArMTEwOCw3IEBAIHN0YXRpYyB2b2lkICpfbXNtX2dlbV9rZXJuZWxfbmV3KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHVpbnQzMl90IHNpemUsCiAKIAl2YWRkciA9IG1zbV9nZW1fZ2V0X3Zh ZGRyKG9iaik7CiAJaWYgKElTX0VSUih2YWRkcikpIHsKLQkJbXNtX2dlbV9wdXRfaW92YShvYmos IGFzcGFjZSk7CisJCW1zbV9nZW1fdW5waW5faW92YShvYmosIGFzcGFjZSk7CiAJCWRybV9nZW1f b2JqZWN0X3B1dChvYmopOwogCQlyZXR1cm4gRVJSX0NBU1QodmFkZHIpOwogCX0KQEAgLTExMjcs NyArMTE0MCw3IEBAIHZvaWQgbXNtX2dlbV9rZXJuZWxfcHV0KHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqYm8sCiAJCXJldHVybjsKIAogCW1zbV9nZW1fcHV0X3ZhZGRyKGJvKTsKLQltc21fZ2VtX3B1 dF9pb3ZhKGJvLCBhc3BhY2UpOworCW1zbV9nZW1fdW5waW5faW92YShibywgYXNwYWNlKTsKIAog CWlmIChsb2NrZWQpCiAJCWRybV9nZW1fb2JqZWN0X3B1dChibyk7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW0uaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dlbS5o CmluZGV4IDMyYzEzZTY1NTliNS4uNTNkM2JmNDlhOWZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vbXNtL21zbV9nZW0uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW0uaApA QCAtNDIsNiArNDIsNyBAQCBzdHJ1Y3QgbXNtX2dlbV92bWEgewogCXN0cnVjdCBtc21fZ2VtX2Fk ZHJlc3Nfc3BhY2UgKmFzcGFjZTsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7ICAgIC8qIG5vZGUg aW4gbXNtX2dlbV9vYmplY3Q6OnZtYXMgKi8KIAlib29sIG1hcHBlZDsKKwlpbnQgaW51c2U7CiB9 OwogCiBzdHJ1Y3QgbXNtX2dlbV9vYmplY3QgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21zbS9tc21fZ2VtX3N1Ym1pdC5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtX3N1Ym1p dC5jCmluZGV4IGRhOTA3MjYwNjYwYy4uOWM3ODUyMWVlMDhhIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL21zbV9nZW1fc3VibWl0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9t c21fZ2VtX3N1Ym1pdC5jCkBAIC0xNjcsNyArMTY3LDcgQEAgc3RhdGljIHZvaWQgc3VibWl0X3Vu bG9ja191bnBpbl9ibyhzdHJ1Y3QgbXNtX2dlbV9zdWJtaXQgKnN1Ym1pdCwKIAlzdHJ1Y3QgbXNt X2dlbV9vYmplY3QgKm1zbV9vYmogPSBzdWJtaXQtPmJvc1tpXS5vYmo7CiAKIAlpZiAoc3VibWl0 LT5ib3NbaV0uZmxhZ3MgJiBCT19QSU5ORUQpCi0JCW1zbV9nZW1fcHV0X2lvdmEoJm1zbV9vYmot PmJhc2UsIHN1Ym1pdC0+Z3B1LT5hc3BhY2UpOworCQltc21fZ2VtX3VucGluX2lvdmEoJm1zbV9v YmotPmJhc2UsIHN1Ym1pdC0+Z3B1LT5hc3BhY2UpOwogCiAJaWYgKHN1Ym1pdC0+Ym9zW2ldLmZs YWdzICYgQk9fTE9DS0VEKQogCQl3d19tdXRleF91bmxvY2soJm1zbV9vYmotPnJlc3YtPmxvY2sp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtX3ZtYS5jIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9tc21fZ2VtX3ZtYS5jCmluZGV4IGM0YzQyYmYwZGIwZS4uZWU0NmQ4MzIx YjA1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW1fdm1hLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtX3ZtYS5jCkBAIC0zOCwyNiArMzgsMzIgQEAgdm9p ZCBtc21fZ2VtX2FkZHJlc3Nfc3BhY2VfcHV0KHN0cnVjdCBtc21fZ2VtX2FkZHJlc3Nfc3BhY2Ug KmFzcGFjZSkKIAkJa3JlZl9wdXQoJmFzcGFjZS0+a3JlZiwgbXNtX2dlbV9hZGRyZXNzX3NwYWNl X2Rlc3Ryb3kpOwogfQogCi12b2lkCi1tc21fZ2VtX3VubWFwX3ZtYShzdHJ1Y3QgbXNtX2dlbV9h ZGRyZXNzX3NwYWNlICphc3BhY2UsCisvKiBBY3R1YWxseSB1bm1hcCBtZW1vcnkgZm9yIHRoZSB2 bWEgKi8KK3ZvaWQgbXNtX2dlbV9wdXJnZV92bWEoc3RydWN0IG1zbV9nZW1fYWRkcmVzc19zcGFj ZSAqYXNwYWNlLAogCQlzdHJ1Y3QgbXNtX2dlbV92bWEgKnZtYSkKIHsKLQlpZiAoIWFzcGFjZSB8 fCAhdm1hLT5pb3ZhKQorCXVuc2lnbmVkIHNpemUgPSB2bWEtPm5vZGUuc2l6ZSA8PCBQQUdFX1NI SUZUOworCisJLyogUHJpbnQgYSBtZXNzYWdlIGlmIHdlIHRyeSB0byBwdXJnZSBhIHZtYSBpbiB1 c2UgKi8KKwlpZiAoV0FSTl9PTih2bWEtPmludXNlID4gMCkpCiAJCXJldHVybjsKIAotCWlmIChh c3BhY2UtPm1tdSkgewotCQl1bnNpZ25lZCBzaXplID0gdm1hLT5ub2RlLnNpemUgPDwgUEFHRV9T SElGVDsKLQkJYXNwYWNlLT5tbXUtPmZ1bmNzLT51bm1hcChhc3BhY2UtPm1tdSwgdm1hLT5pb3Zh LCBzaXplKTsKLQl9CisJLyogRG9uJ3QgZG8gYW55dGhpbmcgaWYgdGhlIG1lbW9yeSBpc24ndCBt YXBwZWQgKi8KKwlpZiAoIXZtYS0+bWFwcGVkKQorCQlyZXR1cm47CiAKLQlzcGluX2xvY2soJmFz cGFjZS0+bG9jayk7Ci0JZHJtX21tX3JlbW92ZV9ub2RlKCZ2bWEtPm5vZGUpOwotCXNwaW5fdW5s b2NrKCZhc3BhY2UtPmxvY2spOworCWlmIChhc3BhY2UtPm1tdSkKKwkJYXNwYWNlLT5tbXUtPmZ1 bmNzLT51bm1hcChhc3BhY2UtPm1tdSwgdm1hLT5pb3ZhLCBzaXplKTsKIAotCXZtYS0+aW92YSA9 IDA7CiAJdm1hLT5tYXBwZWQgPSBmYWxzZTsKK30KIAotCW1zbV9nZW1fYWRkcmVzc19zcGFjZV9w dXQoYXNwYWNlKTsKKy8qIFJlbW92ZSByZWZlcmVuY2UgY291bnRzIGZvciB0aGUgbWFwcGluZyAq Lwordm9pZCBtc21fZ2VtX3VubWFwX3ZtYShzdHJ1Y3QgbXNtX2dlbV9hZGRyZXNzX3NwYWNlICph c3BhY2UsCisJCXN0cnVjdCBtc21fZ2VtX3ZtYSAqdm1hKQoreworCWlmICghV0FSTl9PTighdm1h LT5pb3ZhKSkKKwkJdm1hLT5pbnVzZS0tOwogfQogCiBpbnQKQEAgLTcwLDYgKzc2LDkgQEAgbXNt X2dlbV9tYXBfdm1hKHN0cnVjdCBtc21fZ2VtX2FkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKIAlpZiAo V0FSTl9PTighdm1hLT5pb3ZhKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKKwkvKiBJbmNyZWFzZSB0 aGUgdXNhZ2UgY291bnRlciAqLworCXZtYS0+aW51c2UrKzsKKwogCWlmICh2bWEtPm1hcHBlZCkK IAkJcmV0dXJuIDA7CiAKQEAgLTg1LDYgKzk0LDIzIEBAIG1zbV9nZW1fbWFwX3ZtYShzdHJ1Y3Qg bXNtX2dlbV9hZGRyZXNzX3NwYWNlICphc3BhY2UsCiAJcmV0dXJuIHJldDsKIH0KIAorLyogQ2xv c2UgYW4gaW92YS4gIFdhcm4gaWYgaXQgaXMgc3RpbGwgaW4gdXNlICovCit2b2lkIG1zbV9nZW1f Y2xvc2Vfdm1hKHN0cnVjdCBtc21fZ2VtX2FkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKKwkJc3RydWN0 IG1zbV9nZW1fdm1hICp2bWEpCit7CisJaWYgKFdBUk5fT04odm1hLT5pbnVzZSA+IDAgfHwgdm1h LT5tYXBwZWQpKQorCQlyZXR1cm47CisKKwlzcGluX2xvY2soJmFzcGFjZS0+bG9jayk7CisJaWYg KHZtYS0+aW92YSkKKwkJZHJtX21tX3JlbW92ZV9ub2RlKCZ2bWEtPm5vZGUpOworCXNwaW5fdW5s b2NrKCZhc3BhY2UtPmxvY2spOworCisJdm1hLT5pb3ZhID0gMDsKKworCW1zbV9nZW1fYWRkcmVz c19zcGFjZV9wdXQoYXNwYWNlKTsKK30KKwogLyogSW5pdGlhbGl6ZSBhIG5ldyB2bWEgYW5kIGFs bG9jYXRlIGFuIGlvdmEgZm9yIGl0ICovCiBpbnQgbXNtX2dlbV9pbml0X3ZtYShzdHJ1Y3QgbXNt X2dlbV9hZGRyZXNzX3NwYWNlICphc3BhY2UsCiAJCXN0cnVjdCBtc21fZ2VtX3ZtYSAqdm1hLCBp bnQgbnBhZ2VzKQpAQCAtMTA5LDYgKzEzNSw3IEBAIGludCBtc21fZ2VtX2luaXRfdm1hKHN0cnVj dCBtc21fZ2VtX2FkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKIAlyZXR1cm4gMDsKIH0KIAorCiBzdHJ1 Y3QgbXNtX2dlbV9hZGRyZXNzX3NwYWNlICoKIG1zbV9nZW1fYWRkcmVzc19zcGFjZV9jcmVhdGUo c3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sCiAJCWNvbnN0 IGNoYXIgKm5hbWUpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuYyBi L2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5jCmluZGV4IDEzZGFiOTUyN2JkYS4uZTZjZTI0 YmZiOWIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuYwpAQCAtNjcwLDcgKzY3MCw3IEBAIHN0YXRpYyB2 b2lkIHJldGlyZV9zdWJtaXQoc3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9nZW1fc3Vi bWl0ICpzdWJtaXQpCiAJCXN0cnVjdCBtc21fZ2VtX29iamVjdCAqbXNtX29iaiA9IHN1Ym1pdC0+ Ym9zW2ldLm9iajsKIAkJLyogbW92ZSB0byBpbmFjdGl2ZTogKi8KIAkJbXNtX2dlbV9tb3ZlX3Rv X2luYWN0aXZlKCZtc21fb2JqLT5iYXNlKTsKLQkJbXNtX2dlbV9wdXRfaW92YSgmbXNtX29iai0+ YmFzZSwgZ3B1LT5hc3BhY2UpOworCQltc21fZ2VtX3VucGluX2lvdmEoJm1zbV9vYmotPmJhc2Us IGdwdS0+YXNwYWNlKTsKIAkJZHJtX2dlbV9vYmplY3RfcHV0KCZtc21fb2JqLT5iYXNlKTsKIAl9 CiAKLS0gCjIuMTguMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KRnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRy ZW5vCg==