From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=ALL_TRUSTED,URIBL_SBL_A autolearn=no autolearn_force=no version=3.4.4 Received: from inbox.vuxu.org (inbox.vuxu.org [IPv6:::1]) by inbox.vuxu.org (Postfix) with ESMTP id 110FD220B5 for ; Fri, 26 Apr 2024 20:08:06 +0200 (CEST) Content-Type: multipart/mixed; boundary="===============2984438084551840546==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_=5BWIP=5D_audacity=3A_update_to_3=2E5=2E1=2E_Update_audacity_and_deps?= To: ml@inbox.vuxu.org From: iFoundSilentHouse Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Fri, 26 Apr 2024 20:08:06 +0200 List-Id: Message-Id: <20240426180806.110FD220B5@inbox.vuxu.org> GitHub notification mails are now in MIME to allow UTF8. --===============2984438084551840546== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgaUZvdW5kU2lsZW50SG91c2UgYWdh aW5zdCBtYXN0ZXIgb24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRo dWIuY29tL2lGb3VuZFNpbGVudEhvdXNlL3ZvaWQtcGFja2FnZXMgYXVkYWNpdHktMy41Cmh0dHBz Oi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC81MDA0NwoKW1dJUF0g YXVkYWNpdHk6IHVwZGF0ZSB0byAzLjUuMS4gVXBkYXRlIGF1ZGFjaXR5IGFuZCBkZXBzCi0gSSB0 ZXN0ZWQgdGhlIGNoYW5nZXMgaW4gdGhpcyBQUjogKipZRVMqKg0KLSBJIGJ1aWx0IHRoaXMgUFIg bG9jYWxseSBmb3IgbXkgbmF0aXZlIGFyY2hpdGVjdHVyZSwgKHg4Nl82NC1nbGliYykNCg0KTGls diBkeW4tbWFuaWZlc3QgY2hhbmdlOiBodHRwczovL2dpdGh1Yi5jb20vbHYyL2xpbHYvY29tbWl0 LzE3ZjY3MDVhZTZkMGU4YzcyMDJmNTk4ZjUyNzE3ODZhMDBhMDY1YmUNClBvcnRhdWRpbyBwYXRj aGVzOiBodHRwczovL2dpdGh1Yi5jb20vUG9ydEF1ZGlvL3BvcnRhdWRpby9jb21taXQvNDVjMTJl OGQxOGFlNDQzNDAwMGVkMTUyMWU0OWQ5YjVlZjkxZGVkZg0KIG5ldyBhdWRhY2l0eSB3b3JrcyBm aW5lIHdpdGhvdXQgYGF1ZGFjaXR5LWNvbXBhdC5wYXRjaGANCgoKQSBwYXRjaCBmaWxlIGZyb20g aHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzUwMDQ3LnBh dGNoIGlzIGF0dGFjaGVk --===============2984438084551840546== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-audacity-3.5-50047.patch" RnJvbSA5ZGFiOWE2OTA4ZmVhZTUyYmYyZTAwMGE1NTVhMWZmYjYxODE5Yjk3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJRm91bmRTaWxlbnRIb3VzZSA8YWRlcHRzbGFiQGdtYWlsLmNv bT4KRGF0ZTogRnJpLCAyNiBBcHIgMjAyNCAxOToxMTo0NyArMDYwMApTdWJqZWN0OiBbUEFUQ0gg MS83XSBhdWRhY2l0eTogdXBkYXRlIHRvIDMuNS4xLgoKLS0tCiBzcmNwa2dzL2F1ZGFjaXR5L3Rl bXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUgYi9zcmNwa2dz L2F1ZGFjaXR5L3RlbXBsYXRlCmluZGV4IDdiODM4MTE5YWIyNjExLi4yN2YxN2MwZWMyMmViMCAx MDA2NDQKLS0tIGEvc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2F1ZGFj aXR5L3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYXVkYWNp dHknCiBwa2duYW1lPWF1ZGFjaXR5Ci12ZXJzaW9uPTMuNC4yCit2ZXJzaW9uPTMuNS4xCiByZXZp c2lvbj0xCiBidWlsZF9zdHlsZT1jbWFrZQogYnVpbGRfaGVscGVyPSJjbWFrZS13eFdpZGdldHMt Z3RrMyBxZW11IgpAQCAtMjUsNyArMjUsNyBAQCBsaWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVyLCBH UEwtMy4wLW9yLWxhdGVyLCBDQy1CWS0zLjAiCiBob21lcGFnZT0iaHR0cHM6Ly93d3cuYXVkYWNp dHl0ZWFtLm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9naXRodWIuY29tL2F1ZGFjaXR5L2F1ZGFj aXR5L3Jhdy9tYXN0ZXIvQ0hBTkdFTE9HLnR4dCIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIu Y29tL2F1ZGFjaXR5L2F1ZGFjaXR5L3JlbGVhc2VzL2Rvd25sb2FkL0F1ZGFjaXR5LSR7dmVyc2lv bn0vYXVkYWNpdHktc291cmNlcy0ke3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPWYyOGRkNzE4 ZDJjNWEyYWE5ZjIwN2I4MzUxNDQzYTkwYzFmMDJiNjUzNzhjYTk0YmNjN2ZlYmRhNDI2MzVlNDgK K2NoZWNrc3VtPTg3ODZhMWJlOGQ2M2Y0NzkzZmMzZjJhNWYxZjYxYzQ0MWUwYTRiOWE3ZWQ5MTM3 ZDU5Mjc3YWQ1ZjcyYmQ1MTIKIAogQ1hYRkxBR1M9Ii1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCiAK CkZyb20gMjIzMWQ2ZWI2MzFkYTQ5Y2NlMzQxNmUxMDNiNGZlN2E0N2U2NTIzMSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogSUZvdW5kU2lsZW50SG91c2UgPGFkZXB0c2xhYkBnbWFpbC5j b20+CkRhdGU6IEZyaSwgMjYgQXByIDIwMjQgMjM6MTg6MDYgKzA2MDAKU3ViamVjdDogW1BBVENI IDIvN10gbGlsdjogdXBkYXRlIHRvIDAuMjQuMjQuCgotLS0KIHNyY3BrZ3MvbGlsdi90ZW1wbGF0 ZSB8IDE3ICsrKysrKysrKy0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCsp LCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlsdi90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvbGlsdi90ZW1wbGF0ZQppbmRleCA1N2Y0YmMzMGI5NTAxYi4uYmYwMzQyOWY0MmMxZTkg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbGlsdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xpbHYvdGVt cGxhdGUKQEAgLTEsMTggKzEsMTggQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xpbHYnCiBwa2du YW1lPWxpbHYKLXZlcnNpb249MC4yNC4xMgotcmV2aXNpb249NAotYnVpbGRfc3R5bGU9d2FmMwot Y29uZmlndXJlX2FyZ3M9Ii0tZHluLW1hbmlmZXN0IgordmVyc2lvbj0wLjI0LjI0CityZXZpc2lv bj0xCitidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgogbWFr ZWRlcGVuZHM9InB5dGhvbjMtZGV2ZWwgc2VyZC1kZXZlbCBzb3JkLWRldmVsIHNyYXRvbS1kZXZl bCBsaWJzbmRmaWxlLWRldmVsCiAgbHYyIgogc2hvcnRfZGVzYz0iU2ltcGxlIHlldCBwb3dlcmZ1 bCBDIEFQSSBmb3IgdXNpbmcgTFYyIHBsdWdpbnMiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3Jw aGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iSVNDIgotaG9tZXBhZ2U9Imh0dHA6Ly9kcm9i aWxsYS5uZXQvc29mdHdhcmUvbGlsdi8iCi1kaXN0ZmlsZXM9Imh0dHA6Ly9kb3dubG9hZC5kcm9i aWxsYS5uZXQvJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci5iejIiCi1jaGVja3N1bT0yNmEzNzc5 MDg5MGM5YzFmODM4MjAzYjQ3ZjViMjMyMDMzNGZlOTJjMDJhNGQyNmViYmUyNjY5ZGJkNzY5MDYx Citob21lcGFnZT0iaHR0cHM6Ly9kcm9iaWxsYS5uZXQvc29mdHdhcmUvbGlsdi5odG1sIgorY2hh bmdlbG9nPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbHYyL2xpbHYvbWFzdGVy L05FV1MiCitkaXN0ZmlsZXM9Imh0dHBzOi8vZG93bmxvYWQuZHJvYmlsbGEubmV0L2xpbHYtJHt2 ZXJzaW9ufS50YXIueHoiCitjaGVja3N1bT02YmI2YmU5Zjg4NTA0MTc2ZDA2NDJmMTJkZTgwOWIy YjllMmRjNTU2MjFhNjhhZGI4YzdlZGI5OWFlZmFiYjRmCiAKIHBvc3RfaW5zdGFsbCgpIHsKIAl2 bGljZW5zZSBDT1BZSU5HCkBAIC0zMSw3ICszMSw4IEBAIGxpbHYtYmFzaC1jb21wbGV0aW9uX3Bh Y2thZ2UoKSB7CiAJZGVwZW5kcz0iYmFzaC1jb21wbGV0aW9uIGxpbHYiCiAJc2hvcnRfZGVzYys9 IiAtIEJhc2ggY29tcGxldGlvbiBmb3IgTGlsdiIKIAlwa2dfaW5zdGFsbCgpIHsKLQkJdmNvbXBs ZXRpb24gdXRpbHMvbGlsdi5iYXNoX2NvbXBsZXRpb24gYmFzaAorCQl2Y29tcGxldGlvbiAke0RF U1RESVJ9L2V0Yy9iYXNoX2NvbXBsZXRpb24uZC9saWx2IGJhc2gKKwkJcm0gLXIgJHtERVNURElS fS9ldGMKIAl9CiB9CiAKCkZyb20gMjY2MTIwZTdkNDk1ODc3NjE4NTVkNjIxMzAzMzY1YjI4Mzc1 OTJjNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSUZvdW5kU2lsZW50SG91c2UgPGFk ZXB0c2xhYkBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjYgQXByIDIwMjQgMjM6MTg6MTQgKzA2MDAK U3ViamVjdDogW1BBVENIIDMvN10gcG9ydGF1ZGlvOiB1cGRhdGUgdG8gMTkwNzAwLjIwMjEwNDA2 LgoKLS0tCiAuLi4vcG9ydGF1ZGlvL3BhdGNoZXMvYXVkYWNpdHktY29tcGF0LnBhdGNoICAgfCAz NDQgLS0tLS0tLQogc3JjcGtncy9wb3J0YXVkaW8vcGF0Y2hlcy9zbmRpby5wYXRjaCAgICAgICAg IHwgODgzIC0tLS0tLS0tLS0tLS0tLS0tLQogc3JjcGtncy9wb3J0YXVkaW8vdGVtcGxhdGUgICAg ICAgICAgICAgICAgICAgIHwgIDE0ICstCiAzIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygr KSwgMTIzNiBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3BvcnRhdWRp by9wYXRjaGVzL2F1ZGFjaXR5LWNvbXBhdC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvcG9ydGF1ZGlvL3BhdGNoZXMvc25kaW8ucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3Bv cnRhdWRpby9wYXRjaGVzL2F1ZGFjaXR5LWNvbXBhdC5wYXRjaCBiL3NyY3BrZ3MvcG9ydGF1ZGlv L3BhdGNoZXMvYXVkYWNpdHktY29tcGF0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCBlYjg5ZjBhNjM0NmRiMi4uMDAwMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9wb3J0YXVk aW8vcGF0Y2hlcy9hdWRhY2l0eS1jb21wYXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNDQg KzAsMCBAQAotU291cmNlOiBodHRwczovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvZ3VpeC5n aXQvdHJlZS9nbnUvcGFja2FnZXMvcGF0Y2hlcy9wb3J0YXVkaW8tYXVkYWNpdHktY29tcGF0LnBh dGNoCi1VcHN0cmVhbTogTm8KLVJlYXNvbjogQXVkYWNpdHkgbmVlZHMgUGFfR2V0U3RyZWFtSG9z dEFwaVR5cGUgdG8gdXNlIHN5c3RlbSB3aWRlIHBvcnRhdWRpbwotCi0KLWRpZmYgLS1naXQgYS9j b25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDEzODE2ZmIuLjgzYzIzOWEgMTAwNjQ0 Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTQyMCw2ICs0MjAs NyBAQCBjYXNlICIke2hvc3Rfb3N9IiBpbgotICAgICAgICAgICAgICAgICAgICBETExfTElCUz0i JERMTF9MSUJTIC1sb3NzYXVkaW8iCi0gICAgICAgICAgICAgICAgICAgIExJQlM9IiRMSUJTIC1s b3NzYXVkaW8iCi0gICAgICAgICAgICBmaQotKyAgICAgICAgICAgSU5DTFVERVM9IiRJTkNMVURF UyBwYV91bml4X29zcy5oIgotICAgICAgICAgICAgQUNfREVGSU5FKFBBX1VTRV9PU1MsMSkKLSAg ICAgICAgIGZpCi0gCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9wYV91bml4X29zcy5oIGIvaW5jbHVk ZS9wYV91bml4X29zcy5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNjRl MDRjYgotLS0tIC9kZXYvbnVsbAotKysrIGIvaW5jbHVkZS9wYV91bml4X29zcy5oCi1AQCAtMCww ICsxLDEwNCBAQAotKyNpZm5kZWYgUEFfVU5JWF9PU1NfSAotKyNkZWZpbmUgUEFfVU5JWF9PU1Nf SAotKwotKy8qCi0rICogJElkOiBwb3J0YXVkaW8ucGF0Y2gsdiAxLjEwIDIwMDktMDYtMzAgMDQ6 NTI6NTkgbGx1Y2l1cyBFeHAgJAotKyAqIFBvcnRBdWRpbyBQb3J0YWJsZSBSZWFsLVRpbWUgQXVk aW8gTGlicmFyeQotKyAqIE9TUy1zcGVjaWZpYyBleHRlbnNpb25zCi0rICoKLSsgKiBDb3B5cmln aHQgKGMpIDE5OTktMjAwMCBSb3NzIEJlbmNpbmEgYW5kIFBoaWwgQnVyawotKyAqCi0rICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g b2J0YWluaW5nCi0rICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9j dW1lbnRhdGlvbiBmaWxlcwotKyAqICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sCi0rICogaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRh dGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwKLSsgKiBwdWJsaXNo LCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3 YXJlLAotKyAqIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBm dXJuaXNoZWQgdG8gZG8gc28sCi0rICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnM6Ci0rICoKLSsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz aW9uIG5vdGljZSBzaGFsbCBiZQotKyAqIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3Rh bnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotKyAqCi0rICogQW55IHBlcnNvbiB3aXNo aW5nIHRvIGRpc3RyaWJ1dGUgbW9kaWZpY2F0aW9ucyB0byB0aGUgU29mdHdhcmUgaXMKLSsgKiBy ZXF1ZXN0ZWQgdG8gc2VuZCB0aGUgbW9kaWZpY2F0aW9ucyB0byB0aGUgb3JpZ2luYWwgZGV2ZWxv cGVyIHNvIHRoYXQKLSsgKiB0aGV5IGNhbiBiZSBpbmNvcnBvcmF0ZWQgaW50byB0aGUgY2Fub25p Y2FsIHZlcnNpb24uCi0rICoKLSsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKLSsgKiBFWFBSRVNTIE9SIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLSsgKiBNRVJDSEFO VEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H RU1FTlQuCi0rICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP TERFUlMgQkUgTElBQkxFIEZPUgotKyAqIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GCi0rICogQ09OVFJBQ1QsIFRPUlQgT1IgT1RI RVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCi0rICogV0lUSCBU SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUu Ci0rICoKLSsgKi8KLSsKLSsvKiogQGZpbGUKLSsgKiBPU1Mtc3BlY2lmaWMgUG9ydEF1ZGlvIEFQ SSBleHRlbnNpb24gaGVhZGVyIGZpbGUuCi0rICovCi0rCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0r ZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0rCi0rY29uc3QgY2hhciAqUGFPU1NfR2V0U3RyZWFtSW5w dXREZXZpY2UoIFBhU3RyZWFtICpzICk7Ci0rCi0rY29uc3QgY2hhciAqUGFPU1NfR2V0U3RyZWFt T3V0cHV0RGV2aWNlKCBQYVN0cmVhbSAqcyApOwotKwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK30K LSsjZW5kaWYKLSsKLSsjZW5kaWYKLSsjaWZuZGVmIFBBX1VOSVhfT1NTX0gKLSsjZGVmaW5lIFBB X1VOSVhfT1NTX0gKLSsKLSsvKgotKyAqICRJZDogcG9ydGF1ZGlvLnBhdGNoLHYgMS4xMCAyMDA5 LTA2LTMwIDA0OjUyOjU5IGxsdWNpdXMgRXhwICQKLSsgKiBQb3J0QXVkaW8gUG9ydGFibGUgUmVh bC1UaW1lIEF1ZGlvIExpYnJhcnkKLSsgKiBPU1Mtc3BlY2lmaWMgZXh0ZW5zaW9ucwotKyAqCi0r ICogQ29weXJpZ2h0IChjKSAxOTk5LTIwMDAgUm9zcyBCZW5jaW5hIGFuZCBQaGlsIEJ1cmsKLSsg KgotKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uIG9idGFpbmluZwotKyAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMKLSsgKiAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFs IGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLAotKyAqIGluY2x1ZGluZyB3aXRo b3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsCi0r ICogcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwKLSsgKiBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29m dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLAotKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgotKyAqCi0rICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKLSsgKiBpbmNsdWRlZCBpbiBhbGwgY29waWVz IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSsgKgotKyAqIEFueSBw ZXJzb24gd2lzaGluZyB0byBkaXN0cmlidXRlIG1vZGlmaWNhdGlvbnMgdG8gdGhlIFNvZnR3YXJl IGlzCi0rICogcmVxdWVzdGVkIHRvIHNlbmQgdGhlIG1vZGlmaWNhdGlvbnMgdG8gdGhlIG9yaWdp bmFsIGRldmVsb3BlciBzbyB0aGF0Ci0rICogdGhleSBjYW4gYmUgaW5jb3Jwb3JhdGVkIGludG8g dGhlIGNhbm9uaWNhbCB2ZXJzaW9uLgotKyAqCi0rICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCi0rICogRVhQUkVTUyBPUiBJ TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0r ICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg Tk9OSU5GUklOR0VNRU5ULgotKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENP UFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IKLSsgKiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig T1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRgotKyAqIENPTlRSQUNULCBU T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgot KyAqIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhF IFNPRlRXQVJFLgotKyAqCi0rICovCi0rCi0rLyoqIEBmaWxlCi0rICogT1NTLXNwZWNpZmljIFBv cnRBdWRpbyBBUEkgZXh0ZW5zaW9uIGhlYWRlciBmaWxlLgotKyAqLwotKwotKyNpZmRlZiBfX2Nw bHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotKwotK2NvbnN0IGNoYXIgKlBhT1NTX0dl dFN0cmVhbUlucHV0RGV2aWNlKCBQYVN0cmVhbSAqcyApOwotKwotK2NvbnN0IGNoYXIgKlBhT1NT X0dldFN0cmVhbU91dHB1dERldmljZSggUGFTdHJlYW0gKnMgKTsKLSsKLSsjaWZkZWYgX19jcGx1 c3BsdXMKLSt9Ci0rI2VuZGlmCi0rCi0rI2VuZGlmCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9wYV93 aW5fZHMuaCBiL2luY2x1ZGUvcGFfd2luX2RzLmgKLWluZGV4IDVkMzg2NDEuLmJhMWMyNDUgMTAw NjQ0Ci0tLS0gYS9pbmNsdWRlL3BhX3dpbl9kcy5oCi0rKysgYi9pbmNsdWRlL3BhX3dpbl9kcy5o Ci1AQCAtODYsNiArODYsMjEgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFXaW5EaXJlY3RTb3VuZFN0cmVh bUluZm97Ci0gCi0gfVBhV2luRGlyZWN0U291bmRTdHJlYW1JbmZvOwotIAotKy8qKiBSZXRyaWV2 ZSB0aGUgR1VJRCBvZiB0aGUgaW5wdXQgZGV2aWNlLgotKwotKyBAcGFyYW0gc3RyZWFtIFRoZSBz dHJlYW0gdG8gcXVlcnkuCi0rCi0rIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBHVUlELCBvciBO VUxMIGlmIG5vbmUuCi0rKi8KLStMUEdVSUQgUGFXaW5EU19HZXRTdHJlYW1JbnB1dEdVSUQoIFBh U3RyZWFtKiBzICk7Ci0rCi0rLyoqIFJldHJpZXZlIHRoZSBHVUlEIG9mIHRoZSBvdXRwdXQgZGV2 aWNlLgotKwotKyBAcGFyYW0gc3RyZWFtIFRoZSBzdHJlYW0gdG8gcXVlcnkuCi0rCi0rIEByZXR1 cm4gQSBwb2ludGVyIHRvIHRoZSBHVUlELCBvciBOVUxMIGlmIG5vbmUuCi0rKi8KLStMUEdVSUQg UGFXaW5EU19HZXRTdHJlYW1PdXRwdXRHVUlEKCBQYVN0cmVhbSogcyApOwotIAotIAotICNpZmRl ZiBfX2NwbHVzcGx1cwotZGlmZiAtLWdpdCBhL2luY2x1ZGUvcG9ydGF1ZGlvLmggYi9pbmNsdWRl L3BvcnRhdWRpby5oCi1pbmRleCA4YTk0YWFmLi45YzhhMjk1IDEwMDY0NAotLS0tIGEvaW5jbHVk ZS9wb3J0YXVkaW8uaAotKysrIGIvaW5jbHVkZS9wb3J0YXVkaW8uaAotQEAgLTExOTcsNiArMTE5 NywxNSBAQCBzaWduZWQgbG9uZyBQYV9HZXRTdHJlYW1SZWFkQXZhaWxhYmxlKCBQYVN0cmVhbSog c3RyZWFtICk7Ci0gc2lnbmVkIGxvbmcgUGFfR2V0U3RyZWFtV3JpdGVBdmFpbGFibGUoIFBhU3Ry ZWFtKiBzdHJlYW0gKTsKLSAKLSAKLSsvKiogUmV0cmlldmUgdGhlIGhvc3QgdHlwZSBoYW5kbGlu ZyBhbiBvcGVuIHN0cmVhbS4KLSsKLSsgQHJldHVybiBSZXR1cm5zIGEgbm9uLW5lZ2F0aXZlIHZh bHVlIHJlcHJlc2VudGluZyB0aGUgaG9zdCBBUEkgdHlwZQotKyBoYW5kbGluZyBhbiBvcGVuIHN0 cmVhbSBvciwgYSBQYUVycm9yQ29kZSAod2hpY2ggYXJlIGFsd2F5cyBuZWdhdGl2ZSkKLSsgaWYg UG9ydEF1ZGlvIGlzIG5vdCBpbml0aWFsaXplZCBvciBhbiBlcnJvciBpcyBlbmNvdW50ZXJlZC4K LSsqLwotK1BhSG9zdEFwaVR5cGVJZCBQYV9HZXRTdHJlYW1Ib3N0QXBpVHlwZSggUGFTdHJlYW0q IHN0cmVhbSApOwotKwotKwotIC8qIE1pc2NlbGxhbmVvdXMgdXRpbGl0aWVzICovCi0gCi0gCi1k aWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9wYV9mcm9udC5jIGIvc3JjL2NvbW1vbi9wYV9mcm9udC5j Ci1pbmRleCAxODhjZWU5Li41MmY0NGE2IDEwMDY0NAotLS0tIGEvc3JjL2NvbW1vbi9wYV9mcm9u dC5jCi0rKysgYi9zcmMvY29tbW9uL3BhX2Zyb250LmMKLUBAIC0xMjU3LDggKzEyNTcsMTAgQEAg UGFFcnJvciBQYV9PcGVuU3RyZWFtKCBQYVN0cmVhbSoqIHN0cmVhbSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaG9zdEFwaUlucHV0UGFyYW1ldGVyc1B0ciwgaG9zdEFwaU91 dHB1dFBhcmFtZXRlcnNQdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNh bXBsZVJhdGUsIGZyYW1lc1BlckJ1ZmZlciwgc3RyZWFtRmxhZ3MsIHN0cmVhbUNhbGxiYWNrLCB1 c2VyRGF0YSApOwotIAotLSAgICBpZiggcmVzdWx0ID09IHBhTm9FcnJvciApCi0rICAgIGlmKCBy ZXN1bHQgPT0gcGFOb0Vycm9yICkgewotICAgICAgICAgQWRkT3BlblN0cmVhbSggKnN0cmVhbSAp OwotKyAgICAgICAgUEFfU1RSRUFNX1JFUCgqc3RyZWFtKS0+aG9zdEFwaVR5cGUgPSBob3N0QXBp LT5pbmZvLnR5cGU7Ci0rICAgIH0KLSAKLSAKLSAgICAgUEFfTE9HQVBJKCgiUGFfT3BlblN0cmVh bSByZXR1cm5lZDpcbiIgKSk7Ci1AQCAtMTc3MCw2ICsxNzcyLDMyIEBAIHNpZ25lZCBsb25nIFBh X0dldFN0cmVhbVdyaXRlQXZhaWxhYmxlKCBQYVN0cmVhbSogc3RyZWFtICkKLSAgICAgcmV0dXJu IHJlc3VsdDsKLSB9Ci0gCi0rUGFIb3N0QXBpVHlwZUlkIFBhX0dldFN0cmVhbUhvc3RBcGlUeXBl KCBQYVN0cmVhbSogc3RyZWFtICkKLSt7Ci0rICAgIFBhRXJyb3IgZXJyb3IgPSBQYVV0aWxfVmFs aWRhdGVTdHJlYW1Qb2ludGVyKCBzdHJlYW0gKTsKLSsgICAgUGFIb3N0QXBpVHlwZUlkIHJlc3Vs dDsKLSsKLSsjaWZkZWYgUEFfTE9HX0FQSV9DQUxMUwotKyAgICBQYVV0aWxfRGVidWdQcmludCgi UGFfR2V0U3RyZWFtSG9zdEFwaVR5cGUgY2FsbGVkOlxuIiApOwotKyAgICBQYVV0aWxfRGVidWdQ cmludCgiXHRQYVN0cmVhbSogc3RyZWFtOiAweCVwXG4iLCBzdHJlYW0gKTsKLSsjZW5kaWYKLSsK LSsgICAgaWYoIGVycm9yID09IHBhTm9FcnJvciApCi0rICAgIHsKLSsgICAgICAgIHJlc3VsdCA9 IFBBX1NUUkVBTV9SRVAoc3RyZWFtKS0+aG9zdEFwaVR5cGU7Ci0rICAgIH0KLSsgICAgZWxzZQot KyAgICB7Ci0rICAgICAgICByZXN1bHQgPSAoUGFIb3N0QXBpVHlwZUlkKSBlcnJvcjsKLSsgICAg fQotKwotKyNpZmRlZiBQQV9MT0dfQVBJX0NBTExTCi0rICAgIFBhVXRpbF9EZWJ1Z1ByaW50KCJQ YV9HZXRTdHJlYW1Ib3N0QXBpVHlwZSByZXR1cm5lZDpcbiIgKTsKLSsgICAgUGFVdGlsX0RlYnVn UHJpbnQoIlx0UGFFcnJvcjogJWQgKCAlcyApXG5cbiIsIHJlc3VsdCwgUGFfR2V0RXJyb3JUZXh0 KCByZXN1bHQgKSApOwotKyNlbmRpZgotKwotKyAgICByZXR1cm4gcmVzdWx0OwotK30KLSAKLSBQ YUVycm9yIFBhX0dldFNhbXBsZVNpemUoIFBhU2FtcGxlRm9ybWF0IGZvcm1hdCApCi0gewotZGlm ZiAtLWdpdCBhL3NyYy9jb21tb24vcGFfc3RyZWFtLmMgYi9zcmMvY29tbW9uL3BhX3N0cmVhbS5j Ci1pbmRleCAwM2EwZWU2Li5jNDM3NmY5IDEwMDY0NAotLS0tIGEvc3JjL2NvbW1vbi9wYV9zdHJl YW0uYwotKysrIGIvc3JjL2NvbW1vbi9wYV9zdHJlYW0uYwotQEAgLTkzLDYgKzkzLDggQEAgdm9p ZCBQYVV0aWxfSW5pdGlhbGl6ZVN0cmVhbVJlcHJlc2VudGF0aW9uKCBQYVV0aWxTdHJlYW1SZXBy ZXNlbnRhdGlvbiAqc3RyZWFtUmUKLSAgICAgc3RyZWFtUmVwcmVzZW50YXRpb24tPnN0cmVhbUlu Zm8uaW5wdXRMYXRlbmN5ID0gMC47Ci0gICAgIHN0cmVhbVJlcHJlc2VudGF0aW9uLT5zdHJlYW1J bmZvLm91dHB1dExhdGVuY3kgPSAwLjsKLSAgICAgc3RyZWFtUmVwcmVzZW50YXRpb24tPnN0cmVh bUluZm8uc2FtcGxlUmF0ZSA9IDAuOwotKwotKyAgICBzdHJlYW1SZXByZXNlbnRhdGlvbi0+aG9z dEFwaVR5cGUgPSAwOwotIH0KLSAKLSAKLWRpZmYgLS1naXQgYS9zcmMvY29tbW9uL3BhX3N0cmVh bS5oIGIvc3JjL2NvbW1vbi9wYV9zdHJlYW0uaAotaW5kZXggNjc4ZTJhZC4uNzA1NzJjNyAxMDA2 NDQKLS0tLSBhL3NyYy9jb21tb24vcGFfc3RyZWFtLmgKLSsrKyBiL3NyYy9jb21tb24vcGFfc3Ry ZWFtLmgKLUBAIC0xNTIsNiArMTUyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFVdGlsU3RyZWFtUmVw cmVzZW50YXRpb24gewotICAgICBQYVN0cmVhbUZpbmlzaGVkQ2FsbGJhY2sgKnN0cmVhbUZpbmlz aGVkQ2FsbGJhY2s7Ci0gICAgIHZvaWQgKnVzZXJEYXRhOwotICAgICBQYVN0cmVhbUluZm8gc3Ry ZWFtSW5mbzsKLSsgICAgUGFIb3N0QXBpVHlwZUlkIGhvc3RBcGlUeXBlOwotIH0gUGFVdGlsU3Ry ZWFtUmVwcmVzZW50YXRpb247Ci0gCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL2hvc3RhcGkvYWxzYS9w YV9saW51eF9hbHNhLmMgYi9zcmMvaG9zdGFwaS9hbHNhL3BhX2xpbnV4X2Fsc2EuYwotaW5kZXgg NTg0Y2RlOC4uNTU4ZmIzZCAxMDA2NDQKLS0tLSBhL3NyYy9ob3N0YXBpL2Fsc2EvcGFfbGludXhf YWxzYS5jCi0rKysgYi9zcmMvaG9zdGFwaS9hbHNhL3BhX2xpbnV4X2Fsc2EuYwotQEAgLTYyMSw2 ICs2MjEsNyBAQCB0eXBlZGVmIHN0cnVjdAotICAgICBTdHJlYW1EaXJlY3Rpb24gc3RyZWFtRGly OwotIAotICAgICBzbmRfcGNtX2NoYW5uZWxfYXJlYV90ICpjaGFubmVsQXJlYXM7ICAvKiBOZWVk ZWQgZm9yIGNoYW5uZWwgYWRhcHRpb24gKi8KLSsgICAgaW50IGNhcmQ7Ci0gfSBQYUFsc2FTdHJl YW1Db21wb25lbnQ7Ci0gCi0gLyogSW1wbGVtZW50YXRpb24gc3BlY2lmaWMgc3RyZWFtIHN0cnVj dHVyZSAqLwotQEAgLTE4NzMsNiArMTg3NCw3IEBAIHN0YXRpYyBQYUVycm9yIFBhQWxzYVN0cmVh bUNvbXBvbmVudF9Jbml0aWFsaXplKCBQYUFsc2FTdHJlYW1Db21wb25lbnQgKnNlbGYsIFBhCi0g ewotICAgICBQYUVycm9yIHJlc3VsdCA9IHBhTm9FcnJvcjsKLSAgICAgUGFTYW1wbGVGb3JtYXQg dXNlclNhbXBsZUZvcm1hdCA9IHBhcmFtcy0+c2FtcGxlRm9ybWF0LCBob3N0U2FtcGxlRm9ybWF0 ID0gcGFOb0Vycm9yOwotKyAgICBzbmRfcGNtX2luZm9fdCogcGNtSW5mbzsKLSAgICAgYXNzZXJ0 KCBwYXJhbXMtPmNoYW5uZWxDb3VudCA+IDAgKTsKLSAKLSAgICAgLyogTWFrZSBzdXJlIHRoaW5n cyBoYXZlIGFuIGluaXRpYWwgdmFsdWUgKi8KLUBAIC0xOTAwLDYgKzE5MDIsOSBAQCBzdGF0aWMg UGFFcnJvciBQYUFsc2FTdHJlYW1Db21wb25lbnRfSW5pdGlhbGl6ZSggUGFBbHNhU3RyZWFtQ29t cG9uZW50ICpzZWxmLCBQYQotICAgICBzZWxmLT5kZXZpY2UgPSBwYXJhbXMtPmRldmljZTsKLSAK LSAgICAgUEFfRU5TVVJFKCBBbHNhT3BlbiggJmFsc2FBcGktPmJhc2VIb3N0QXBpUmVwLCBwYXJh bXMsIHN0cmVhbURpciwgJnNlbGYtPnBjbSApICk7Ci0rCi0rICAgIHNuZF9wY21faW5mb19hbGxv Y2EoICZwY21JbmZvICk7Ci0rICAgIHNlbGYtPmNhcmQgPSBzbmRfcGNtX2luZm9fZ2V0X2NhcmQo IHBjbUluZm8gKTsKLSAgICAgc2VsZi0+bmZkcyA9IGFsc2Ffc25kX3BjbV9wb2xsX2Rlc2NyaXB0 b3JzX2NvdW50KCBzZWxmLT5wY20gKTsKLSAKLSAgICAgUEFfRU5TVVJFKCBob3N0U2FtcGxlRm9y bWF0ID0gUGFVdGlsX1NlbGVjdENsb3Nlc3RBdmFpbGFibGVGb3JtYXQoIEdldEF2YWlsYWJsZUZv cm1hdHMoIHNlbGYtPnBjbSApLCB1c2VyU2FtcGxlRm9ybWF0ICkgKTsKLUBAIC00NjA1LDkgKzQ2 MTAsNyBAQCBQYUVycm9yIFBhQWxzYV9HZXRTdHJlYW1JbnB1dENhcmQoIFBhU3RyZWFtKiBzLCBp bnQqIGNhcmQgKQotICAgICAvKiBYWFg6IE1vcmUgZGVzY3JpcHRpdmUgZXJyb3I/ICovCi0gICAg IFBBX1VOTEVTUyggc3RyZWFtLT5jYXB0dXJlLnBjbSwgcGFEZXZpY2VVbmF2YWlsYWJsZSApOwot IAotLSAgICBhbHNhX3NuZF9wY21faW5mb19hbGxvY2EoICZwY21JbmZvICk7Ci0tICAgIFBBX0VO U1VSRSggYWxzYV9zbmRfcGNtX2luZm8oIHN0cmVhbS0+Y2FwdHVyZS5wY20sIHBjbUluZm8gKSAp OwotLSAgICAqY2FyZCA9IGFsc2Ffc25kX3BjbV9pbmZvX2dldF9jYXJkKCBwY21JbmZvICk7Ci0r ICAgICpjYXJkID0gc3RyZWFtLT5jYXB0dXJlLmNhcmQ7Ci0gCi0gZXJyb3I6Ci0gICAgIHJldHVy biByZXN1bHQ7Ci1AQCAtNDYyNCw5ICs0NjI3LDcgQEAgUGFFcnJvciBQYUFsc2FfR2V0U3RyZWFt T3V0cHV0Q2FyZCggUGFTdHJlYW0qIHMsIGludCogY2FyZCApCi0gICAgIC8qIFhYWDogTW9yZSBk ZXNjcmlwdGl2ZSBlcnJvcj8gKi8KLSAgICAgUEFfVU5MRVNTKCBzdHJlYW0tPnBsYXliYWNrLnBj bSwgcGFEZXZpY2VVbmF2YWlsYWJsZSApOwotIAotLSAgICBhbHNhX3NuZF9wY21faW5mb19hbGxv Y2EoICZwY21JbmZvICk7Ci0tICAgIFBBX0VOU1VSRSggYWxzYV9zbmRfcGNtX2luZm8oIHN0cmVh bS0+cGxheWJhY2sucGNtLCBwY21JbmZvICkgKTsKLS0gICAgKmNhcmQgPSBhbHNhX3NuZF9wY21f aW5mb19nZXRfY2FyZCggcGNtSW5mbyApOwotKyAgICAqY2FyZCA9IHN0cmVhbS0+cGxheWJhY2su Y2FyZDsKLSAKLSBlcnJvcjoKLSAgICAgcmV0dXJuIHJlc3VsdDsKLWRpZmYgLS1naXQgYS9zcmMv aG9zdGFwaS9jb3JlYXVkaW8vcGFfbWFjX2NvcmVfYmxvY2tpbmcuYyBiL3NyYy9ob3N0YXBpL2Nv cmVhdWRpby9wYV9tYWNfY29yZV9ibG9ja2luZy5jCi1pbmRleCA2NzljNmJhLi5hNjllMDg1IDEw MDY0NAotLS0tIGEvc3JjL2hvc3RhcGkvY29yZWF1ZGlvL3BhX21hY19jb3JlX2Jsb2NraW5nLmMK LSsrKyBiL3NyYy9ob3N0YXBpL2NvcmVhdWRpby9wYV9tYWNfY29yZV9ibG9ja2luZy5jCi1AQCAt NjYsNiArNjYsOSBAQAotICNpZmRlZiBNT1NYX1VTRV9OT05fQVRPTUlDX0ZMQUdfQklUUwotICMg ZGVmaW5lIE9TQXRvbWljT3IzMiggYSwgYiApICggKCooYikpIHw9IChhKSApCi0gIyBkZWZpbmUg T1NBdG9taWNBbmQzMiggYSwgYiApICggKCooYikpICY9IChhKSApCi0rI2VsaWYgTUFDX09TX1hf VkVSU0lPTl9NQVhfQUxMT1dFRCA8PSBNQUNfT1NfWF9WRVJTSU9OXzEwXzMKLSsjIGRlZmluZSBP U0F0b21pY09yMzIoIGEsIGIgKSBCaXRPckF0b21pYyggYSwgKFVJbnQzMiAqKSBiICkKLSsjIGRl ZmluZSBPU0F0b21pY0FuZDMyKCBhLCBiICkgQml0QW5kQXRvbWljKCBhLCAoVUludDMyICopIGIg KQotICNlbHNlCi0gIyBpbmNsdWRlIDxsaWJrZXJuL09TQXRvbWljLmg+Ci0gI2VuZGlmCi1kaWZm IC0tZ2l0IGEvc3JjL2hvc3RhcGkvb3NzL3BhX3VuaXhfb3NzLmMgYi9zcmMvaG9zdGFwaS9vc3Mv cGFfdW5peF9vc3MuYwotaW5kZXggNTFlOTYzMC4uZjI1N2Q4MCAxMDA2NDQKLS0tLSBhL3NyYy9o b3N0YXBpL29zcy9wYV91bml4X29zcy5jCi0rKysgYi9zcmMvaG9zdGFwaS9vc3MvcGFfdW5peF9v c3MuYwotQEAgLTIwNDMsMyArMjA0MywyNiBAQCBlcnJvcjoKLSAjZW5kaWYKLSB9Ci0gCi0rY29u c3QgY2hhciAqUGFPU1NfR2V0U3RyZWFtSW5wdXREZXZpY2UoIFBhU3RyZWFtKiBzICkKLSt7Ci0r ICAgIFBhT3NzU3RyZWFtICpzdHJlYW0gPSAoUGFPc3NTdHJlYW0qKXM7Ci0rCi0rICAgIGlmKCBz dHJlYW0tPmNhcHR1cmUgKQotKyAgICB7Ci0rICAgICAgcmV0dXJuIHN0cmVhbS0+Y2FwdHVyZS0+ ZGV2TmFtZTsKLSsgICAgfQotKwotKyAgIHJldHVybiBOVUxMOwotK30KLSsKLStjb25zdCBjaGFy ICpQYU9TU19HZXRTdHJlYW1PdXRwdXREZXZpY2UoIFBhU3RyZWFtKiBzICkKLSt7Ci0rICAgIFBh T3NzU3RyZWFtICpzdHJlYW0gPSAoUGFPc3NTdHJlYW0qKXM7Ci0rCi0rICAgIGlmKCBzdHJlYW0t PnBsYXliYWNrICkKLSsgICAgewotKyAgICAgIHJldHVybiBzdHJlYW0tPnBsYXliYWNrLT5kZXZO YW1lOwotKyAgICB9Ci0rCi0rICAgcmV0dXJuIE5VTEw7Ci0rfQpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9wb3J0YXVkaW8vcGF0Y2hlcy9zbmRpby5wYXRjaCBiL3NyY3BrZ3MvcG9ydGF1ZGlvL3BhdGNo ZXMvc25kaW8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmYzIwOTYwZDU4 NjIyLi4wMDAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3BvcnRhdWRpby9wYXRjaGVzL3NuZGlv LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODgzICswLDAgQEAKLWRpZmYgLS1naXQgYS9NYWtl ZmlsZS5pbiBiL01ha2VmaWxlLmluCi1pbmRleCA1ZTFhNzY0Li4yNzQ3ZjczIDEwMDY0NAotLS0t IGEvTWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtNDQsNyArNDQsNyBAQCBQQUxJ QiA9IGxpYnBvcnRhdWRpby5sYQotIFBBSU5DID0gaW5jbHVkZS9wb3J0YXVkaW8uaAotIAotIFBB X0xERkxBR1MgPSAkKExERkxBR1MpICQoU0hBUkVEX0ZMQUdTKSAtcnBhdGggJChsaWJkaXIpIC1u by11bmRlZmluZWQgXAotLQkgICAgIC1leHBvcnQtc3ltYm9scy1yZWdleCAiKFBhfFBhTWFjQ29y ZXxQYUphY2t8UGFBbHNhfFBhQXNpb3xQYU9TUylfLioiIFwKLSsJICAgICAtZXhwb3J0LXN5bWJv bHMtcmVnZXggIihQYXxQYU1hY0NvcmV8UGFKYWNrfFBhQWxzYXxQYUFzaW98UGFPU1N8UGFTbmRp bylfLioiIFwKLSAJICAgICAtdmVyc2lvbi1pbmZvICQoTFRfQ1VSUkVOVCk6JChMVF9SRVZJU0lP Tik6JChMVF9BR0UpCi0gCi0gQ09NTU9OX09CSlMgPSBcCi1AQCAtMTQ2LDYgKzE0Niw3IEBAIFNS Q19ESVJTID0gXAotIAlzcmMvaG9zdGFwaS9kc291bmQgXAotIAlzcmMvaG9zdGFwaS9qYWNrIFwK LSAJc3JjL2hvc3RhcGkvb3NzIFwKLSsJc3JjL2hvc3RhcGkvc25kaW8gXAotIAlzcmMvaG9zdGFw aS93YXNhcGkgXAotIAlzcmMvaG9zdGFwaS93ZG1rcyBcCi0gCXNyYy9ob3N0YXBpL3dtbWUgXAot ZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggODNjMjM5YS4u ZGIxMWQ2NSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1A QCAtMjQsNiArMjQsMTAgQEAgQUNfQVJHX1dJVEgoYWxzYSwKLSAgICAgICAgICAgICBBU19IRUxQ X1NUUklORyhbLS13aXRoLWFsc2FdLCBbRW5hYmxlIHN1cHBvcnQgZm9yIEFMU0EgQDw6QGF1dG9k ZXRlY3RAOj5AXSksCi0gICAgICAgICAgICAgW3dpdGhfYWxzYT0kd2l0aHZhbF0pCi0gCi0rQUNf QVJHX1dJVEgoc25kaW8sCi0rICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1zbmRp b10sIFtFbmFibGUgc3VwcG9ydCBmb3Igc25kaW8gQDw6QGF1dG9kZXRlY3RAOj5AXSksCi0rICAg ICAgICAgICAgW3dpdGhfc25kaW89JHdpdGh2YWxdKQotKwotIEFDX0FSR19XSVRIKGphY2ssCi0g ICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1qYWNrXSwgW0VuYWJsZSBzdXBwb3J0 IGZvciBKQUNLIEA8OkBhdXRvZGV0ZWN0QDo+QF0pLAotICAgICAgICAgICAgIFt3aXRoX2phY2s9 JHdpdGh2YWxdKQotQEAgLTEyMCw2ICsxMjQsMTAgQEAgaGF2ZV9hbHNhPW5vCi0gaWYgdGVzdCAi eCR3aXRoX2Fsc2EiICE9ICJ4bm8iOyB0aGVuCi0gICAgIEFDX0NIRUNLX0xJQihhc291bmQsIHNu ZF9wY21fb3BlbiwgaGF2ZV9hbHNhPXllcywgaGF2ZV9hbHNhPW5vKQotIGZpCi0raGF2ZV9zbmRp bz1ubwotK2lmIHRlc3QgIngkd2l0aF9zbmRpbyIgIT0gInhubyI7IHRoZW4KLSsgICAgQUNfQ0hF Q0tfTElCKHNuZGlvLCBzaW9fb3BlbiwgaGF2ZV9zbmRpbz15ZXMsIGhhdmVfc25kaW89bm8pCi0r ZmkKLSBoYXZlX2FzaWhwaT1ubwotIGlmIHRlc3QgIngkd2l0aF9hc2locGkiICE9ICJ4bm8iOyB0 aGVuCi0gICAgIEFDX0NIRUNLX0xJQihocGksIEhQSV9TdWJTeXNDcmVhdGUsIGhhdmVfYXNpaHBp PXllcywgaGF2ZV9hc2locGk9bm8sIC1sbSkKLUBAIC00MDYsNiArNDE0LDEzIEBAIGNhc2UgIiR7 aG9zdF9vc30iIGluCi0gICAgICAgICAgICBBQ19ERUZJTkUoUEFfVVNFX0FMU0EsMSkKLSAgICAg ICAgIGZpCi0gCi0rICAgICAgICBpZiBbWyAiJGhhdmVfc25kaW8iID0gInllcyIgLWEgIiR3aXRo X3NuZGlvIiAhPSAibm8iIF1dIDsgdGhlbgotKyAgICAgICAgICAgIERMTF9MSUJTPSIkRExMX0xJ QlMgLWxzbmRpbyIKLSsgICAgICAgICAgICBMSUJTPSIkTElCUyAtbHNuZGlvIgotKyAgICAgICAg ICAgIE9USEVSX09CSlM9IiRPVEhFUl9PQkpTIHNyYy9ob3N0YXBpL3NuZGlvL3BhX3NuZGlvLm8i Ci0rICAgICAgICAgICAgQUNfREVGSU5FKFBBX1VTRV9TTkRJTywxKQotKyAgICAgICAgZmkKLSsK LSAgICAgICAgIGlmIFtbICIkaGF2ZV9qYWNrIiA9ICJ5ZXMiIF0gJiYgWyAiJHdpdGhfamFjayIg IT0gIm5vIiBdXSA7IHRoZW4KLSAgICAgICAgICAgIERMTF9MSUJTPSIkRExMX0xJQlMgJEpBQ0tf TElCUyIKLSAgICAgICAgICAgIENGTEFHUz0iJENGTEFHUyAkSkFDS19DRkxBR1MiCi1AQCAtNTEw LDYgKzUyNSw3IEBAIGNhc2UgIiR0YXJnZXRfb3MiIGluCi0gICAgICAgICA7OwotICAgICAgKikK LSAJQUNfTVNHX1JFU1VMVChbCi0rICBTbmRpbyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAkaGF2 ZV9zbmRpbwotICAgT1NTIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gJGhhdmVfb3NzCi0gICBK QUNLIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAkaGF2ZV9qYWNrCi0gXSkKLWRpZmYgLS1naXQg YS9pbmNsdWRlL3BvcnRhdWRpby5oIGIvaW5jbHVkZS9wb3J0YXVkaW8uaAotaW5kZXggOWM4YTI5 NS4uZTUzNWEwMiAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvcG9ydGF1ZGlvLmgKLSsrKyBiL2luY2x1 ZGUvcG9ydGF1ZGlvLmgKLUBAIC0yODcsNyArMjg3LDggQEAgdHlwZWRlZiBlbnVtIFBhSG9zdEFw aVR5cGVJZAotICAgICBwYVdETUtTPTExLAotICAgICBwYUpBQ0s9MTIsCi0gICAgIHBhV0FTQVBJ PTEzLAotLSAgICBwYUF1ZGlvU2NpZW5jZUhQST0xNAotKyAgICBwYUF1ZGlvU2NpZW5jZUhQST0x NCwKLSsgICAgcGFTbmRpbz0xNQotIH0gUGFIb3N0QXBpVHlwZUlkOwotIAotIAotZGlmZiAtLWdp dCBhL3NyYy9ob3N0YXBpL3NuZGlvL3BhX3NuZGlvLmMgYi9zcmMvaG9zdGFwaS9zbmRpby9wYV9z bmRpby5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzI1ZWY0NwotLS0t IC9kZXYvbnVsbAotKysrIGIvc3JjL2hvc3RhcGkvc25kaW8vcGFfc25kaW8uYwotQEAgLTAsMCAr MSw3NjggQEAKLSsvKgotKyAqIENvcHlyaWdodCAoYykgMjAwOSBBbGV4YW5kcmUgUmF0Y2hvdiA8 YWxleEBjYW91YS5vcmc+Ci0rICoKLSsgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKLSsgKiBwdXJwb3NlIHdpdGgg b3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3Zl Ci0rICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIg aW4gYWxsIGNvcGllcy4KLSsgKgotKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMi IEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUwotKyAqIFdJVEggUkVHQVJE IFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKLSsg KiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRI T1IgQkUgTElBQkxFIEZPUgotKyAqIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBD T05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKLSsgKiBXSEFUU09FVkVSIFJFU1VM VElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4KLSsg KiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9O LCBBUklTSU5HIE9VVCBPRgotKyAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBF UkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCi0rICovCi0rI2luY2x1ZGUgPHN5cy90eXBlcy5o PgotKyNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0rI2luY2x1ZGUgPHBvbGwuaD4KLSsjaW5jbHVkZSA8 ZXJybm8uaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNp bmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzbmRpby5oPgotKwotKyNpbmNsdWRlICJwYV91 dGlsLmgiCi0rI2luY2x1ZGUgInBhX2hvc3RhcGkuaCIKLSsjaW5jbHVkZSAicGFfc3RyZWFtLmgi Ci0rI2luY2x1ZGUgInBhX3Byb2Nlc3MuaCIKLSsjaW5jbHVkZSAicGFfYWxsb2NhdGlvbi5oIgot KwotKyNpZiAwCi0rI2RlZmluZSBEUFIoLi4uKSBkbyB7IGZwcmludGYoc3RkZXJyLCBfX1ZBX0FS R1NfXyk7IH0gd2hpbGUgKDApCi0rI2Vsc2UKLSsjZGVmaW5lIERQUiguLi4pIGRvIHt9IHdoaWxl ICgwKQotKyNlbmRpZgotKwotKy8qCi0rICogcGVyLXN0cmVhbSBkYXRhCi0rICovCi0rdHlwZWRl ZiBzdHJ1Y3QgUGFTbmRpb1N0cmVhbQotK3sKLSsJUGFVdGlsU3RyZWFtUmVwcmVzZW50YXRpb24g YmFzZTsKLSsJUGFVdGlsQnVmZmVyUHJvY2Vzc29yIGJ1ZnByb2M7CS8qIGZvcm1hdCBjb252ZXJz aW9uICovCi0rCXN0cnVjdCBzaW9faGRsICpoZGw7CQkvKiBoYW5kbGUgZm9yIGRldmljZSBpL28g Ki8KLSsJc3RydWN0IHNpb19wYXIgcGFyOwkJLyogY3VycmVudCBkZXZpY2UgcGFyYW1ldGVycyAq LwkKLSsJdW5zaWduZWQgbW9kZTsJCQkvKiBTSU9fUExBWSwgU0lPX1JFQyBvciBib3RoICovCi0r CWludCBzdG9wcGVkOwkJCS8qIHN0b3AgcmVxdWVzdGVkIG9yIG5vdCBzdGFydGVkICovCi0rCWlu dCBhY3RpdmU7CQkJLyogdGhyZWFkIGlzIHJ1bm5pbmcgKi8KLSsJdW5zaWduZWQgbG9uZyBsb25n IHJlYWxwb3M7CS8qIGZyYW1lIG51bWJlciBoL3cgaXMgcHJvY2Vzc2luZyAqLwotKwljaGFyICpy YnVmLCAqd2J1ZjsJCS8qIGJvdW5jZSBidWZmZXJzIGZvciBjb252ZXJzaW9ucyAqLwotKwl1bnNp Z25lZCBsb25nIGxvbmcgcnBvcywgd3BvczsJLyogYnl0ZXMgcmVhZC93cml0dGVuICovCi0rCXB0 aHJlYWRfdCB0aHJlYWQ7CQkvKiB0aHJlYWQgb2YgdGhlIGNhbGxiYWNrIGludGVyZmFjZSAqLwot K30gUGFTbmRpb1N0cmVhbTsKLSsKLSsvKgotKyAqIGFwaSAiY2xhc3MiIGRhdGEsIGNvbW1vbiB0 byBhbGwgc3RyZWFtcwotKyAqLwotK3R5cGVkZWYgc3RydWN0IFBhU25kaW9Ib3N0QXBpUmVwcmVz ZW50YXRpb24KLSt7Ci0rCVBhVXRpbEhvc3RBcGlSZXByZXNlbnRhdGlvbiBiYXNlOwotKwlQYVV0 aWxTdHJlYW1JbnRlcmZhY2UgY2FsbGJhY2s7Ci0rCVBhVXRpbFN0cmVhbUludGVyZmFjZSBibG9j a2luZzsKLSsJLyoKLSsJICogc25kaW8gaGFzIG5vIGRldmljZSBkaXNjb3ZlcnkgbWVjaGFuaXNt IGFuZCBQb3J0QXVkaW8gaGFzCi0rCSAqIG5vIHdheSBvZiBhY2NlcHRpbmcgcmF3IGRldmljZSBz dHJpbmdzIGZyb20gdXNlcnMuCi0rCSAqIE5vcm1hbGx5IHdlIGp1c3QgZXhwb3NlIHRoZSBkZWZh dWx0IGRldmljZSwgd2hpY2ggY2FuIGJlCi0rCSAqIGNoYW5nZWQgdmlhIHRoZSBBVURJT0RFVklD RSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYnV0IHdlCi0rCSAqIGFsc28gYWxsb3cgc3BlY2lmeWlu ZyBhIGxpc3Qgb2YgdXAgdG8gMTYgZGV2aWNlcyB2aWEgdGhlCi0rCSAqIFBBX1NORElPX0FVRElP REVWSUNFUyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLSsJICoKLSsJICogRXhhbXBsZToKLSsJICog UEFfU05ESU9fQVVESU9ERVZJQ0VTPWRlZmF1bHQ6c25kLzAubW9uaXRvcjpzbmRAcmVtb3RlLzAK LSsJICovCi0rI2RlZmluZSBQQV9TTkRJT19BVURJT0RFVklDRVNfTUFYCTE2Ci0rCVBhRGV2aWNl SW5mbyBkZXZpY2VfaW5mb1tQQV9TTkRJT19BVURJT0RFVklDRVNfTUFYXTsKLSsJUGFEZXZpY2VJ bmZvICppbmZvc1tQQV9TTkRJT19BVURJT0RFVklDRVNfTUFYXTsKLSsJY2hhciAqYXVkaW9kZXZp Y2VzOwotK30gUGFTbmRpb0hvc3RBcGlSZXByZXNlbnRhdGlvbjsKLSsKLSsvKgotKyAqIGNhbGxi YWNrIGludm9rZWQgd2hlbiBibG9ja3MgYXJlIHByb2Nlc3NlZCBieSB0aGUgaGFyZHdhcmUKLSsg Ki8KLStzdGF0aWMgdm9pZAotK3NuZGlvT25Nb3ZlKHZvaWQgKmFkZHIsIGludCBkZWx0YSkKLSt7 Ci0rCVBhU25kaW9TdHJlYW0gKnMgPSAoUGFTbmRpb1N0cmVhbSAqKWFkZHI7Ci0rCi0rCXMtPnJl YWxwb3MgKz0gZGVsdGE7Ci0rfQotKwotKy8qCi0rICogY29udmVydCBQQSBlbmNvZGluZyB0byBz bmRpbyBlbmNvZGluZywgcmV0dXJuIHRydWUgb24gc3VjY2VzcwotKyAqLwotK3N0YXRpYyBpbnQK LStzbmRpb1NldEZtdChzdHJ1Y3Qgc2lvX3BhciAqc2lvLCBQYVNhbXBsZUZvcm1hdCBmbXQpCi0r ewotKwlzd2l0Y2ggKGZtdCAmIH5wYU5vbkludGVybGVhdmVkKSB7Ci0rCWNhc2UgcGFJbnQzMjoK LSsJCXNpby0+c2lnID0gMTsKLSsJCXNpby0+Yml0cyA9IDMyOwotKwkJYnJlYWs7Ci0rCWNhc2Ug cGFJbnQyNDoKLSsJCXNpby0+c2lnID0gMTsKLSsJCXNpby0+Yml0cyA9IDI0OwotKwkJc2lvLT5i cHMgPSAzOwkvKiBwYUludDI0IGlzIHBhY2tlZCBmb3JtYXQgKi8KLSsJCWJyZWFrOwotKwljYXNl IHBhSW50MTY6Ci0rCWNhc2UgcGFGbG9hdDMyOgotKwkJc2lvLT5zaWcgPSAxOwotKwkJc2lvLT5i aXRzID0gMTY7Ci0rCQlicmVhazsKLSsJY2FzZSBwYUludDg6Ci0rCQlzaW8tPnNpZyA9IDE7Ci0r CQlzaW8tPmJpdHMgPSA4OwotKwkJYnJlYWs7Ci0rCWNhc2UgcGFVSW50ODoKLSsJCXNpby0+c2ln ID0gMDsKLSsJCXNpby0+Yml0cyA9IDg7Ci0rCQlicmVhazsKLSsJZGVmYXVsdDoKLSsJCURQUigi c25kaW9TZXRGbXQ6ICV4OiB1bnN1cHBvcnRlZFxuIiwgZm10KTsKLSsJCXJldHVybiAwOwotKwl9 Ci0rCXNpby0+bGUgPSBTSU9fTEVfTkFUSVZFOwotKwlyZXR1cm4gMTsKLSt9Ci0rCi0rLyoKLSsg KiBjb252ZXJ0IHNuZGlvIGVuY29kaW5nIHRvIFBBIGVuY29kaW5nLCByZXR1cm4gdHJ1ZSBvbiBz dWNjZXNzCi0rICovCi0rc3RhdGljIGludAotK3NuZGlvR2V0Rm10KHN0cnVjdCBzaW9fcGFyICpz aW8sIFBhU2FtcGxlRm9ybWF0ICpmbXQpCi0rewotKwlpZiAoKHNpby0+YnBzICogOCAhPSBzaW8t PmJpdHMgJiYgIXNpby0+bXNiKSB8fAotKwkgICAgKHNpby0+YnBzID4gMSAmJiBzaW8tPmxlICE9 IFNJT19MRV9OQVRJVkUpKSB7Ci0rCQlEUFIoInNuZGlvR2V0Rm10OiBiaXRzID0gJXUsIGxlID0g JXUsIG1zYiA9ICV1LCBicHMgPSAldVxuIiwKLSsJCSAgICBzaW8tPmJpdHMsIHNpby0+bGUsIHNp by0+bXNiLCBzaW8tPmJwcyk7Ci0rCQlyZXR1cm4gMDsKLSsJfQotKwotKwlzd2l0Y2ggKHNpby0+ Yml0cykgewotKwljYXNlIDMyOgotKwkJaWYgKCFzaW8tPnNpZykKLSsJCQlyZXR1cm4gMDsKLSsJ CSpmbXQgPSBwYUludDMyOwotKwkJYnJlYWs7Ci0rCWNhc2UgMjQ6Ci0rCQlpZiAoIXNpby0+c2ln KQotKwkJCXJldHVybiAwOwotKwkJKmZtdCA9IChzaW8tPmJwcyA9PSAzKSA/IHBhSW50MjQgOiBw YUludDMyOwotKwkJYnJlYWs7Ci0rCWNhc2UgMTY6Ci0rCQlpZiAoIXNpby0+c2lnKQotKwkJCXJl dHVybiAwOwotKwkJKmZtdCA9IHBhSW50MTY7Ci0rCQlicmVhazsKLSsJY2FzZSA4OgotKwkJKmZt dCA9IHNpby0+c2lnID8gcGFJbnQ4IDogcGFVSW50ODsKLSsJCWJyZWFrOwotKwlkZWZhdWx0Ogot KwkJRFBSKCJzbmRpb0dldEZtdDogJXU6IHVuc3VwcG9ydGVkXG4iLCBzaW8tPmJpdHMpOwotKwkJ cmV0dXJuIDA7Ci0rCX0KLSsJcmV0dXJuIDE7Ci0rfQotKwotKy8qCi0rICogSS9PIGxvb3AgZm9y IGNhbGxiYWNrIGludGVyZmFjZQotKyAqLwotK3N0YXRpYyB2b2lkICoKLStzbmRpb1RocmVhZCh2 b2lkICphcmcpCi0rewotKwlQYVNuZGlvU3RyZWFtICpzID0gKFBhU25kaW9TdHJlYW0gKilhcmc7 Ci0rCVBhU3RyZWFtQ2FsbGJhY2tUaW1lSW5mbyB0aTsKLSsJdW5zaWduZWQgY2hhciAqZGF0YTsK LSsJdW5zaWduZWQgdG9kbywgcmJsa3N6LCB3Ymxrc3o7Ci0rCWludCBuLCByZXN1bHQ7Ci0rCQot KwlyYmxrc3ogPSBzLT5wYXIucm91bmQgKiBzLT5wYXIucmNoYW4gKiBzLT5wYXIuYnBzOwotKwl3 Ymxrc3ogPSBzLT5wYXIucm91bmQgKiBzLT5wYXIucGNoYW4gKiBzLT5wYXIuYnBzOwotKwkKLSsJ RFBSKCJzbmRpb1RocmVhZDogbW9kZSA9ICV4LCByb3VuZCA9ICV1LCByYmxrc3ogPSAldSwgd2Js a3N6ID0gJXVcbiIsCi0rCSAgICBzLT5tb2RlLCBzLT5wYXIucm91bmQsIHJibGtzeiwgd2Jsa3N6 KTsKLSsJCi0rCXdoaWxlICghcy0+c3RvcHBlZCkgewotKwkJaWYgKHMtPm1vZGUgJiBTSU9fUkVD KSB7Ci0rCQkJdG9kbyA9IHJibGtzejsKLSsJCQlkYXRhID0gcy0+cmJ1ZjsKLSsJCQl3aGlsZSAo dG9kbyA+IDApIHsKLSsJCQkJbiA9IHNpb19yZWFkKHMtPmhkbCwgZGF0YSwgdG9kbyk7Ci0rCQkJ CWlmIChuID09IDApIHsKLSsJCQkJCURQUigic25kaW9UaHJlYWQ6IHNpb19yZWFkIGZhaWxlZFxu Iik7Ci0rCQkJCQlnb3RvIGZhaWxlZDsKLSsJCQkJfQotKwkJCQl0b2RvIC09IG47Ci0rCQkJCWRh dGEgKz0gbjsKLSsJCQl9Ci0rCQkJcy0+cnBvcyArPSBzLT5wYXIucm91bmQ7Ci0rCQkJdGkuaW5w dXRCdWZmZXJBZGNUaW1lID0gCi0rCQkJICAgIChkb3VibGUpcy0+cmVhbHBvcyAvIHMtPnBhci5y YXRlOwotKwkJfQotKwkJaWYgKHMtPm1vZGUgJiBTSU9fUExBWSkgewotKwkJCXRpLm91dHB1dEJ1 ZmZlckRhY1RpbWUgPQotKwkJCSAgICAoZG91YmxlKShzLT5yZWFscG9zICsgcy0+cGFyLmJ1ZnN6 KSAvIHMtPnBhci5yYXRlOwotKwkJfQotKwkJdGkuY3VycmVudFRpbWUgPSBzLT5yZWFscG9zIC8g KGRvdWJsZSlzLT5wYXIucmF0ZTsKLSsJCVBhVXRpbF9CZWdpbkJ1ZmZlclByb2Nlc3NpbmcoJnMt PmJ1ZnByb2MsICZ0aSwgMCk7Ci0rCQlpZiAocy0+bW9kZSAmIFNJT19QTEFZKSB7Ci0rCQkJUGFV dGlsX1NldE91dHB1dEZyYW1lQ291bnQoJnMtPmJ1ZnByb2MsIHMtPnBhci5yb3VuZCk7Ci0rCQkJ UGFVdGlsX1NldEludGVybGVhdmVkT3V0cHV0Q2hhbm5lbHMoJnMtPmJ1ZnByb2MsCi0rCQkJICAg IDAsIHMtPndidWYsIHMtPnBhci5wY2hhbik7Ci0rCQl9Ci0rCQlpZiAocy0+bW9kZSAmIFNJT19S RUMpIHsKLSsJCQlQYVV0aWxfU2V0SW5wdXRGcmFtZUNvdW50KCZzLT5idWZwcm9jLCBzLT5wYXIu cm91bmQpOwotKwkJCVBhVXRpbF9TZXRJbnRlcmxlYXZlZElucHV0Q2hhbm5lbHMoJnMtPmJ1ZnBy b2MsCi0rCQkJICAgIDAsIHMtPnJidWYsIHMtPnBhci5yY2hhbik7Ci0rCQl9Ci0rCQlyZXN1bHQg PSBwYUNvbnRpbnVlOwotKwkJbiA9IFBhVXRpbF9FbmRCdWZmZXJQcm9jZXNzaW5nKCZzLT5idWZw cm9jLCAmcmVzdWx0KTsKLSsJCWlmIChuICE9IHMtPnBhci5yb3VuZCkgewotKwkJCURQUigic25k aW9UaHJlYWQ6ICVkIDwgJXUgZnJhbWVzLCByZXN1bHQgPSAlZFxuIiwKLSsJCQkgICAgbiwgcy0+ cGFyLnJvdW5kLCByZXN1bHQpOwotKwkJfQotKwkJaWYgKHJlc3VsdCAhPSBwYUNvbnRpbnVlKSB7 Ci0rCQkJYnJlYWs7Ci0rCQl9Ci0rCQlpZiAocy0+bW9kZSAmIFNJT19QTEFZKSB7Ci0rCQkJbiA9 IHNpb193cml0ZShzLT5oZGwsIHMtPndidWYsIHdibGtzeik7Ci0rCQkJaWYgKG4gPCB3Ymxrc3op IHsKLSsJCQkJRFBSKCJzbmRpb1RocmVhZDogc2lvX3dyaXRlIGZhaWxlZFxuIik7Ci0rCQkJCWdv dG8gZmFpbGVkOwotKwkJCX0KLSsJCQlzLT53cG9zICs9IHMtPnBhci5yb3VuZDsKLSsJCX0KLSsJ fQotKyBmYWlsZWQ6Ci0rCXMtPmFjdGl2ZSA9IDA7Ci0rCURQUigic25kaW9UaHJlYWQ6IGRvbmVc biIpOwotK30KLSsKLStzdGF0aWMgUGFFcnJvcgotK09wZW5TdHJlYW0oc3RydWN0IFBhVXRpbEhv c3RBcGlSZXByZXNlbnRhdGlvbiAqaG9zdEFwaSwKLSsgICAgUGFTdHJlYW0gKipzdHJlYW0sCi0r ICAgIGNvbnN0IFBhU3RyZWFtUGFyYW1ldGVycyAqaW5wdXRQYXIsCi0rICAgIGNvbnN0IFBhU3Ry ZWFtUGFyYW1ldGVycyAqb3V0cHV0UGFyLAotKyAgICBkb3VibGUgc2FtcGxlUmF0ZSwKLSsgICAg dW5zaWduZWQgbG9uZyBmcmFtZXNQZXJCdWZmZXIsCi0rICAgIFBhU3RyZWFtRmxhZ3Mgc3RyZWFt RmxhZ3MsCi0rICAgIFBhU3RyZWFtQ2FsbGJhY2sgKnN0cmVhbUNhbGxiYWNrLAotKyAgICB2b2lk ICp1c2VyRGF0YSkKLSt7Ci0rCVBhU25kaW9Ib3N0QXBpUmVwcmVzZW50YXRpb24gKnNuZGlvSG9z dEFwaSA9IChQYVNuZGlvSG9zdEFwaVJlcHJlc2VudGF0aW9uICopaG9zdEFwaTsKLSsJUGFTbmRp b1N0cmVhbSAqczsKLSsJUGFFcnJvciBlcnI7Ci0rCXN0cnVjdCBzaW9faGRsICpoZGw7Ci0rCXN0 cnVjdCBzaW9fcGFyIHBhcjsKLSsJdW5zaWduZWQgbW9kZTsKLSsJaW50IGluY2gsIG9uY2g7Ci0r CVBhU2FtcGxlRm9ybWF0IGlmbXQsIG9mbXQsIHNpb2ZtdDsKLSsJY29uc3QgY2hhciAqZGV2Owot KwotKwlEUFIoIk9wZW5TdHJlYW06XG4iKTsKLSsKLSsJbW9kZSA9IDA7Ci0rCWluY2ggPSBvbmNo ID0gMDsKLSsJaWZtdCA9IG9mbXQgPSAwOwotKwlzaW9faW5pdHBhcigmcGFyKTsKLSsKLSsJaWYg KG91dHB1dFBhciAmJiBvdXRwdXRQYXItPmNoYW5uZWxDb3VudCA+IDApIHsKLSsJCWlmIChvdXRw dXRQYXItPmRldmljZSA+PSBzbmRpb0hvc3RBcGktPmJhc2UuaW5mby5kZXZpY2VDb3VudCkgewot KwkJCURQUigiT3BlblN0cmVhbTogJWQ6IGJhZCBvdXRwdXQgZGV2aWNlXG4iLCBvdXRwdXRQYXIt PmRldmljZSk7Ci0rCQkJcmV0dXJuIHBhSW52YWxpZERldmljZTsKLSsJCX0KLSsJCWlmIChvdXRw dXRQYXItPmhvc3RBcGlTcGVjaWZpY1N0cmVhbUluZm8pIHsKLSsJCQlEUFIoIk9wZW5TdHJlYW06 IG91dHB1dCBzcGVjaWZpYyBpbmZvXG4iKTsKLSsJCQlyZXR1cm4gcGFJbmNvbXBhdGlibGVIb3N0 QXBpU3BlY2lmaWNTdHJlYW1JbmZvOwotKwkJfQotKwkJaWYgKCFzbmRpb1NldEZtdCgmcGFyLCBv dXRwdXRQYXItPnNhbXBsZUZvcm1hdCkpIHsKLSsJCQlyZXR1cm4gcGFTYW1wbGVGb3JtYXROb3RT dXBwb3J0ZWQ7Ci0rCQl9Ci0rCQlvZm10ID0gb3V0cHV0UGFyLT5zYW1wbGVGb3JtYXQ7Ci0rCQlv bmNoID0gcGFyLnBjaGFuID0gb3V0cHV0UGFyLT5jaGFubmVsQ291bnQ7Ci0rCQltb2RlIHw9IFNJ T19QTEFZOwotKwl9Ci0rCWlmIChpbnB1dFBhciAmJiBpbnB1dFBhci0+Y2hhbm5lbENvdW50ID4g MCkgewotKwkJaWYgKGlucHV0UGFyLT5kZXZpY2UgPj0gc25kaW9Ib3N0QXBpLT5iYXNlLmluZm8u ZGV2aWNlQ291bnQpIHsKLSsJCQlEUFIoIk9wZW5TdHJlYW06ICVkOiBiYWQgaW5wdXQgZGV2aWNl XG4iLCBpbnB1dFBhci0+ZGV2aWNlKTsKLSsJCQlyZXR1cm4gcGFJbnZhbGlkRGV2aWNlOwotKwkJ fQotKwkJaWYgKGlucHV0UGFyLT5ob3N0QXBpU3BlY2lmaWNTdHJlYW1JbmZvKSB7Ci0rCQkJRFBS KCJPcGVuU3RyZWFtOiBpbnB1dCBzcGVjaWZpYyBpbmZvXG4iKTsKLSsJCQlyZXR1cm4gcGFJbmNv bXBhdGlibGVIb3N0QXBpU3BlY2lmaWNTdHJlYW1JbmZvOwotKwkJfQotKwkJaWYgKCFzbmRpb1Nl dEZtdCgmcGFyLCBpbnB1dFBhci0+c2FtcGxlRm9ybWF0KSkgewotKwkJCXJldHVybiBwYVNhbXBs ZUZvcm1hdE5vdFN1cHBvcnRlZDsKLSsJCX0KLSsJCWlmbXQgPSBpbnB1dFBhci0+c2FtcGxlRm9y bWF0OwotKwkJaW5jaCA9IHBhci5yY2hhbiA9IGlucHV0UGFyLT5jaGFubmVsQ291bnQ7Ci0rCQlt b2RlIHw9IFNJT19SRUM7Ci0rCX0KLSsJcGFyLnJhdGUgPSBzYW1wbGVSYXRlOwotKwlpZiAoZnJh bWVzUGVyQnVmZmVyICE9IHBhRnJhbWVzUGVyQnVmZmVyVW5zcGVjaWZpZWQpCi0rCQlwYXIucm91 bmQgPSBmcmFtZXNQZXJCdWZmZXI7Ci0rCi0rCURQUigiT3BlblN0cmVhbTogbW9kZSA9ICV4LCB0 cnlpbmcgcmF0ZSA9ICV1XG4iLCBtb2RlLCBwYXIucmF0ZSk7Ci0rCi0rCWlmIChvdXRwdXRQYXIp IHsKLSsJCWRldiA9IHNuZGlvSG9zdEFwaS0+ZGV2aWNlX2luZm9bb3V0cHV0UGFyLT5kZXZpY2Vd Lm5hbWU7Ci0rCX0gZWxzZSBpZiAoaW5wdXRQYXIpIHsKLSsJCWRldiA9IHNuZGlvSG9zdEFwaS0+ ZGV2aWNlX2luZm9baW5wdXRQYXItPmRldmljZV0ubmFtZTsKLSsJfSBlbHNlIHsKLSsJCXJldHVy biBwYVVuYW50aWNpcGF0ZWRIb3N0RXJyb3I7Ci0rCX0KLSsJaGRsID0gc2lvX29wZW4oZGV2LCBt b2RlLCAwKTsKLSsJaWYgKGhkbCA9PSBOVUxMKQotKwkJcmV0dXJuIHBhVW5hbnRpY2lwYXRlZEhv c3RFcnJvcjsKLSsJaWYgKCFzaW9fc2V0cGFyKGhkbCwgJnBhcikpIHsKLSsJCXNpb19jbG9zZSho ZGwpOwotKwkJcmV0dXJuIHBhVW5hbnRpY2lwYXRlZEhvc3RFcnJvcjsKLSsJfQotKwlpZiAoIXNp b19nZXRwYXIoaGRsLCAmcGFyKSkgewotKwkJc2lvX2Nsb3NlKGhkbCk7Ci0rCQlyZXR1cm4gcGFV bmFudGljaXBhdGVkSG9zdEVycm9yOwotKwl9Ci0rCWlmICghc25kaW9HZXRGbXQoJnBhciwgJnNp b2ZtdCkpIHsKLSsJCXNpb19jbG9zZShoZGwpOwotKwkJcmV0dXJuIHBhU2FtcGxlRm9ybWF0Tm90 U3VwcG9ydGVkOwotKwl9Ci0rCWlmICgobW9kZSAmIFNJT19SRUMpICYmIHBhci5yY2hhbiAhPSBp bnB1dFBhci0+Y2hhbm5lbENvdW50KSB7Ci0rCQlEUFIoIk9wZW5TdHJlYW06IHJjaGFuKCV1KSAh PSAlZFxuIiwgcGFyLnJjaGFuLCBpbnB1dFBhci0+Y2hhbm5lbENvdW50KTsKLSsJCXNpb19jbG9z ZShoZGwpOwotKwkJcmV0dXJuIHBhSW52YWxpZENoYW5uZWxDb3VudDsKLSsJfQotKwlpZiAoKG1v ZGUgJiBTSU9fUExBWSkgJiYgcGFyLnBjaGFuICE9IG91dHB1dFBhci0+Y2hhbm5lbENvdW50KSB7 Ci0rCQlEUFIoIk9wZW5TdHJlYW06IHBjaGFuKCV1KSAhPSAlZFxuIiwgcGFyLnBjaGFuLCBvdXRw dXRQYXItPmNoYW5uZWxDb3VudCk7Ci0rCQlzaW9fY2xvc2UoaGRsKTsKLSsJCXJldHVybiBwYUlu dmFsaWRDaGFubmVsQ291bnQ7Ci0rCX0KLSsJaWYgKChkb3VibGUpcGFyLnJhdGUgPCBzYW1wbGVS YXRlICogMC45OTUgfHwKLSsJICAgIChkb3VibGUpcGFyLnJhdGUgPiBzYW1wbGVSYXRlICogMS4w MDUpIHsKLSsJCURQUigiT3BlblN0cmVhbTogcmF0ZSgldSkgIT0gJWdcbiIsIHBhci5yYXRlLCBz YW1wbGVSYXRlKTsKLSsJCXNpb19jbG9zZShoZGwpOwotKwkJcmV0dXJuIHBhSW52YWxpZFNhbXBs ZVJhdGU7Ci0rCX0KLSsJCi0rCXMgPSAoUGFTbmRpb1N0cmVhbSAqKVBhVXRpbF9BbGxvY2F0ZU1l bW9yeShzaXplb2YoUGFTbmRpb1N0cmVhbSkpOwotKwlpZiAocyA9PSBOVUxMKSB7Ci0rCQlzaW9f Y2xvc2UoaGRsKTsKLSsJCXJldHVybiBwYUluc3VmZmljaWVudE1lbW9yeTsKLSsJfQotKwlQYVV0 aWxfSW5pdGlhbGl6ZVN0cmVhbVJlcHJlc2VudGF0aW9uKCZzLT5iYXNlLCAKLSsJICAgIHN0cmVh bUNhbGxiYWNrID8gJnNuZGlvSG9zdEFwaS0+Y2FsbGJhY2sgOiAmc25kaW9Ib3N0QXBpLT5ibG9j a2luZywKLSsJICAgIHN0cmVhbUNhbGxiYWNrLCB1c2VyRGF0YSk7Ci0rCURQUigiaW5jaCA9ICVk LCBvbmNoID0gJWQsIGlmbXQgPSAleCwgb2ZtdCA9ICV4XG4iLCAKLSsJICAgIGluY2gsIG9uY2gs IGlmbXQsIG9mbXQpOwotKwllcnIgPSBQYVV0aWxfSW5pdGlhbGl6ZUJ1ZmZlclByb2Nlc3Nvcigm cy0+YnVmcHJvYywKLSsJICAgIGluY2gsIGlmbXQsIHNpb2ZtdCwKLSsJICAgIG9uY2gsIG9mbXQs IHNpb2ZtdCwKLSsJICAgIHNhbXBsZVJhdGUsCi0rCSAgICBzdHJlYW1GbGFncywKLSsJICAgIGZy YW1lc1BlckJ1ZmZlciwKLSsJICAgIHBhci5yb3VuZCwKLSsJICAgIHBhVXRpbEZpeGVkSG9zdEJ1 ZmZlclNpemUsIAotKwkgICAgc3RyZWFtQ2FsbGJhY2ssIHVzZXJEYXRhKTsKLSsJaWYgKGVycikg ewotKwkJRFBSKCJPcGVuU3RyZWFtOiBQYVV0aWxfSW5pdGlhbGl6ZUJ1ZmZlclByb2Nlc3NvciBm YWlsZWRcbiIpOwotKwkJUGFVdGlsX0ZyZWVNZW1vcnkocyk7Ci0rCQlzaW9fY2xvc2UoaGRsKTsK LSsJCXJldHVybiBlcnI7Ci0rCX0KLSsJaWYgKG1vZGUgJiBTSU9fUkVDKSB7Ci0rCQlzLT5yYnVm ID0gbWFsbG9jKHBhci5yb3VuZCAqIHBhci5yY2hhbiAqIHBhci5icHMpOwotKwkJaWYgKHMtPnJi dWYgPT0gTlVMTCkgewotKwkJCURQUigiT3BlblN0cmVhbTogZmFpbGVkIHRvIGFsbG9jYXRlIHJi dWZcbiIpOwotKwkJCVBhVXRpbF9GcmVlTWVtb3J5KHMpOwotKwkJCXNpb19jbG9zZShoZGwpOwot KwkJCXJldHVybiBwYUluc3VmZmljaWVudE1lbW9yeTsKLSsJCX0KLSsJfQotKwlpZiAobW9kZSAm IFNJT19QTEFZKSB7Ci0rCQlzLT53YnVmID0gbWFsbG9jKHBhci5yb3VuZCAqIHBhci5wY2hhbiAq IHBhci5icHMpOwotKwkJaWYgKHMtPndidWYgPT0gTlVMTCkgewotKwkJCURQUigiT3BlblN0cmVh bTogZmFpbGVkIHRvIGFsbG9jYXRlIHdidWZcbiIpOwotKwkJCWZyZWUocy0+cmJ1Zik7Ci0rCQkJ UGFVdGlsX0ZyZWVNZW1vcnkocyk7Ci0rCQkJc2lvX2Nsb3NlKGhkbCk7Ci0rCQkJcmV0dXJuIHBh SW5zdWZmaWNpZW50TWVtb3J5OwotKwkJfQotKwl9CQotKwlzLT5iYXNlLnN0cmVhbUluZm8uaW5w dXRMYXRlbmN5ID0gMDsKLSsJcy0+YmFzZS5zdHJlYW1JbmZvLm91dHB1dExhdGVuY3kgPSAobW9k ZSAmIFNJT19QTEFZKSA/Ci0rCSAgICAoZG91YmxlKShwYXIuYnVmc3ogKyBQYVV0aWxfR2V0QnVm ZmVyUHJvY2Vzc29yT3V0cHV0TGF0ZW5jeUZyYW1lcygmcy0+YnVmcHJvYykpIC8gKGRvdWJsZSlw YXIucmF0ZSA6IDA7Ci0rCXMtPmJhc2Uuc3RyZWFtSW5mby5zYW1wbGVSYXRlID0gcGFyLnJhdGU7 Ci0rCXMtPmFjdGl2ZSA9IDA7Ci0rCXMtPnN0b3BwZWQgPSAxOwotKwlzLT5tb2RlID0gbW9kZTsK LSsJcy0+aGRsID0gaGRsOwotKwlzLT5wYXIgPSBwYXI7Ci0rCSpzdHJlYW0gPSBzOwkKLSsJRFBS KCJPcGVuU3RyZWFtOiBkb25lXG4iKTsKLSsJcmV0dXJuIHBhTm9FcnJvcjsKLSt9Ci0rCi0rc3Rh dGljIFBhRXJyb3IKLStCbG9ja2luZ1JlYWRTdHJlYW0oUGFTdHJlYW0gKnN0cmVhbSwgdm9pZCAq ZGF0YSwgdW5zaWduZWQgbG9uZyBudW1GcmFtZXMpCi0rewotKwlQYVNuZGlvU3RyZWFtICpzID0g KFBhU25kaW9TdHJlYW0gKilzdHJlYW07Ci0rCXVuc2lnbmVkIG4sIHJlcywgdG9kbzsKLSsJdm9p ZCAqYnVmOwotKwkKLSsJd2hpbGUgKG51bUZyYW1lcyA+IDApIHsKLSsJCW4gPSBzLT5wYXIucm91 bmQ7Ci0rCQlpZiAobiA+IG51bUZyYW1lcykKLSsJCQluID0gbnVtRnJhbWVzOwotKwkJYnVmID0g cy0+cmJ1ZjsKLSsJCXRvZG8gPSBuICogcy0+cGFyLnJjaGFuICogcy0+cGFyLmJwczsKLSsJCXdo aWxlICh0b2RvID4gMCkgewotKwkJCXJlcyA9IHNpb19yZWFkKHMtPmhkbCwgYnVmLCB0b2RvKTsK LSsJCQlpZiAocmVzID09IDApCi0rCQkJCXJldHVybiBwYVVuYW50aWNpcGF0ZWRIb3N0RXJyb3I7 Ci0rCQkJYnVmID0gKGNoYXIgKilidWYgKyByZXM7Ci0rCQkJdG9kbyAtPSByZXM7Ci0rCQl9Ci0r CQlzLT5ycG9zICs9IG47Ci0rCQlQYVV0aWxfU2V0SW5wdXRGcmFtZUNvdW50KCZzLT5idWZwcm9j LCBuKTsKLSsJCVBhVXRpbF9TZXRJbnRlcmxlYXZlZElucHV0Q2hhbm5lbHMoJnMtPmJ1ZnByb2Ms IDAsIHMtPnJidWYsIHMtPnBhci5yY2hhbik7Ci0rCQlyZXMgPSBQYVV0aWxfQ29weUlucHV0KCZz LT5idWZwcm9jLCAmZGF0YSwgbik7Ci0rCQlpZiAocmVzICE9IG4pIHsKLSsJCQlEUFIoIkJsb2Nr aW5nUmVhZFN0cmVhbTogY29weUlucHV0OiAldSAhPSAldVxuIik7Ci0rCQkJcmV0dXJuIHBhVW5h bnRpY2lwYXRlZEhvc3RFcnJvcjsKLSsJCX0KLSsJCW51bUZyYW1lcyAtPSBuOwotKwl9Ci0rCXJl dHVybiBwYU5vRXJyb3I7Ci0rfQotKwotK3N0YXRpYyBQYUVycm9yCi0rQmxvY2tpbmdXcml0ZVN0 cmVhbShQYVN0cmVhbSogc3RyZWFtLCBjb25zdCB2b2lkICpkYXRhLCB1bnNpZ25lZCBsb25nIG51 bUZyYW1lcykKLSt7Ci0rCVBhU25kaW9TdHJlYW0gKnMgPSAoUGFTbmRpb1N0cmVhbSAqKXN0cmVh bTsKLSsJdW5zaWduZWQgbiwgcmVzOwotKwotKwl3aGlsZSAobnVtRnJhbWVzID4gMCkgewotKwkJ biA9IHMtPnBhci5yb3VuZDsKLSsJCWlmIChuID4gbnVtRnJhbWVzKQotKwkJCW4gPSBudW1GcmFt ZXM7Ci0rCQlQYVV0aWxfU2V0T3V0cHV0RnJhbWVDb3VudCgmcy0+YnVmcHJvYywgbik7Ci0rCQlQ YVV0aWxfU2V0SW50ZXJsZWF2ZWRPdXRwdXRDaGFubmVscygmcy0+YnVmcHJvYywgMCwgcy0+d2J1 Ziwgcy0+cGFyLnBjaGFuKTsKLSsJCXJlcyA9IFBhVXRpbF9Db3B5T3V0cHV0KCZzLT5idWZwcm9j LCAmZGF0YSwgbik7Ci0rCQlpZiAocmVzICE9IG4pIHsKLSsJCQlEUFIoIkJsb2NraW5nV3JpdGVT dHJlYW06IGNvcHlPdXRwdXQ6ICV1ICE9ICV1XG4iKTsKLSsJCQlyZXR1cm4gcGFVbmFudGljaXBh dGVkSG9zdEVycm9yOwotKwkJfQotKwkJcmVzID0gc2lvX3dyaXRlKHMtPmhkbCwgcy0+d2J1Ziwg biAqIHMtPnBhci5wY2hhbiAqIHMtPnBhci5icHMpOwotKwkJaWYgKHJlcyA9PSAwKQotKwkJCXJl dHVybiBwYVVuYW50aWNpcGF0ZWRIb3N0RXJyb3I7CQkKLSsJCXMtPndwb3MgKz0gbjsKLSsJCW51 bUZyYW1lcyAtPSBuOwotKwl9Ci0rCXJldHVybiBwYU5vRXJyb3I7Ci0rfQotKwotK3N0YXRpYyBz aWduZWQgbG9uZwotK0Jsb2NraW5nR2V0U3RyZWFtUmVhZEF2YWlsYWJsZShQYVN0cmVhbSAqc3Ry ZWFtKQotK3sKLSsJUGFTbmRpb1N0cmVhbSAqcyA9IChQYVNuZGlvU3RyZWFtICopc3RyZWFtOwot KwlzdHJ1Y3QgcG9sbGZkIHBmZDsKLSsJaW50IG4sIGV2ZW50czsKLSsKLSsJbiA9IHNpb19wb2xs ZmQocy0+aGRsLCAmcGZkLCBQT0xMSU4pOwotKwl3aGlsZSAocG9sbCgmcGZkLCBuLCAwKSA8IDAp IHsKLSsJCWlmIChlcnJubyA9PSBFSU5UUikKLSsJCQljb250aW51ZTsKLSsJCXBlcnJvcigicG9s bCIpOwotKwkJYWJvcnQoKTsKLSsJfQotKwlldmVudHMgPSBzaW9fcmV2ZW50cyhzLT5oZGwsICZw ZmQpOwotKwlpZiAoIShldmVudHMgJiBQT0xMSU4pKQotKwkJcmV0dXJuIDA7Ci0rCi0rCXJldHVy biBzLT5yZWFscG9zIC0gcy0+cnBvczsKLSt9Ci0rCi0rc3RhdGljIHNpZ25lZCBsb25nCi0rQmxv Y2tpbmdHZXRTdHJlYW1Xcml0ZUF2YWlsYWJsZShQYVN0cmVhbSAqc3RyZWFtKQotK3sKLSsJUGFT bmRpb1N0cmVhbSAqcyA9IChQYVNuZGlvU3RyZWFtICopc3RyZWFtOwotKwlzdHJ1Y3QgcG9sbGZk IHBmZDsKLSsJaW50IG4sIGV2ZW50czsKLSsKLSsJbiA9IHNpb19wb2xsZmQocy0+aGRsLCAmcGZk LCBQT0xMT1VUKTsKLSsJd2hpbGUgKHBvbGwoJnBmZCwgbiwgMCkgPCAwKSB7Ci0rCQlpZiAoZXJy bm8gPT0gRUlOVFIpCi0rCQkJY29udGludWU7Ci0rCQlwZXJyb3IoInBvbGwiKTsKLSsJCWFib3J0 KCk7Ci0rCX0KLSsJZXZlbnRzID0gc2lvX3JldmVudHMocy0+aGRsLCAmcGZkKTsKLSsJaWYgKCEo ZXZlbnRzICYgUE9MTE9VVCkpCi0rCQlyZXR1cm4gMDsKLSsKLSsJcmV0dXJuIHMtPnBhci5idWZz eiAtIChzLT53cG9zIC0gcy0+cmVhbHBvcyk7Ci0rfQotKwotK3N0YXRpYyBQYUVycm9yCi0rQmxv Y2tpbmdXYWl0RW1wdHkoIFBhU3RyZWFtICpzdHJlYW0gKQotK3sKLSsJUGFTbmRpb1N0cmVhbSAq cyA9IChQYVNuZGlvU3RyZWFtICopc3RyZWFtOwotKwotKwkvKgotKwkgKiBkcmFpbiBwbGF5YmFj ayBidWZmZXJzOyBzbmRpbyBhbHdheXMgZG9lcyBpdCBpbiBiYWNrZ3JvdW5kCi0rCSAqIGFuZCB0 aGVyZSBpcyBubyB3YXkgdG8gd2FpdCBmb3IgY29tcGxldGlvbgotKwkgKi8KLSsJRFBSKCJCbG9j a2luZ1dhaXRFbXB0eTogcz0lZCwgYT0lZFxuIiwgcy0+c3RvcHBlZCwgcy0+YWN0aXZlKTsKLSsK LSsJcmV0dXJuIHBhTm9FcnJvcjsKLSt9Ci0rCi0rc3RhdGljIFBhRXJyb3IKLStTdGFydFN0cmVh bShQYVN0cmVhbSAqc3RyZWFtKQotK3sKLSsJUGFTbmRpb1N0cmVhbSAqcyA9IChQYVNuZGlvU3Ry ZWFtICopc3RyZWFtOwotKwl1bnNpZ25lZCBwcmltZXMsIHdibGtzejsKLSsJaW50IGVycjsKLSsK LSsJRFBSKCJTdGFydFN0cmVhbTogcz0lZCwgYT0lZFxuIiwgcy0+c3RvcHBlZCwgcy0+YWN0aXZl KTsKLSsKLSsJaWYgKCFzLT5zdG9wcGVkKSB7Ci0rCQlEUFIoIlN0YXJ0U3RyZWFtOiBhbHJlYWR5 IHN0YXJ0ZWRcbiIpOwotKwkJcmV0dXJuIHBhTm9FcnJvcjsKLSsJfQotKwlzLT5zdG9wcGVkID0g MDsKLSsJcy0+YWN0aXZlID0gMTsKLSsJcy0+cmVhbHBvcyA9IDA7Ci0rCXMtPndwb3MgPSAwOwot KwlzLT5ycG9zID0gMDsKLSsJUGFVdGlsX1Jlc2V0QnVmZmVyUHJvY2Vzc29yKCZzLT5idWZwcm9j KTsKLSsJaWYgKCFzaW9fc3RhcnQocy0+aGRsKSkKLSsJCXJldHVybiBwYVVuYW50aWNpcGF0ZWRI b3N0RXJyb3I7Ci0rCi0rCS8qCi0rCSAqIHNlbmQgYSBjb21wbGV0ZSBidWZmZXIgb2Ygc2lsZW5j ZQotKwkgKi8KLSsJaWYgKHMtPm1vZGUgJiBTSU9fUExBWSkgewotKwkJd2Jsa3N6ID0gcy0+cGFy LnJvdW5kICogcy0+cGFyLnBjaGFuICogcy0+cGFyLmJwczsKLSsJCW1lbXNldChzLT53YnVmLCAw LCB3Ymxrc3opOwotKwkJZm9yIChwcmltZXMgPSBzLT5wYXIuYnVmc3ogLyBzLT5wYXIucm91bmQ7 IHByaW1lcyA+IDA7IHByaW1lcy0tKQotKwkJCXMtPndwb3MgKz0gc2lvX3dyaXRlKHMtPmhkbCwg cy0+d2J1Ziwgd2Jsa3N6KTsKLSsJfQotKwlpZiAocy0+YmFzZS5zdHJlYW1DYWxsYmFjaykgewot KwkJZXJyID0gcHRocmVhZF9jcmVhdGUoJnMtPnRocmVhZCwgTlVMTCwgc25kaW9UaHJlYWQsIHMp OwotKwkJaWYgKGVycikgewotKwkJCURQUigiU25kaW9TdGFydFN0cmVhbTogY291bGRuJ3QgY3Jl YXRlIHRocmVhZFxuIik7Ci0rCQkJcmV0dXJuIHBhVW5hbnRpY2lwYXRlZEhvc3RFcnJvcjsKLSsJ CX0KLSsJCURQUigiU3RhcnRTdHJlYW06IHN0YXJ0ZWQuLi5cbiIpOwotKwl9Ci0rCXJldHVybiBw YU5vRXJyb3I7Ci0rfQotKwotK3N0YXRpYyBQYUVycm9yCi0rU3RvcFN0cmVhbShQYVN0cmVhbSAq c3RyZWFtKQotK3sKLSsJUGFTbmRpb1N0cmVhbSAqcyA9IChQYVNuZGlvU3RyZWFtICopc3RyZWFt OwotKwl2b2lkICpyZXQ7Ci0rCWludCBlcnI7Ci0rCi0rCURQUigiU3RvcFN0cmVhbTogcz0lZCwg YT0lZFxuIiwgcy0+c3RvcHBlZCwgcy0+YWN0aXZlKTsKLSsKLSsJaWYgKHMtPnN0b3BwZWQpIHsK LSsJCURQUigiU3RhcnRTdHJlYW06IGFscmVhZHkgc3RhcnRlZFxuIik7Ci0rCQlyZXR1cm4gcGFO b0Vycm9yOwotKwl9Ci0rCXMtPnN0b3BwZWQgPSAxOwotKwlpZiAocy0+YmFzZS5zdHJlYW1DYWxs YmFjaykgewotKwkJZXJyID0gcHRocmVhZF9qb2luKHMtPnRocmVhZCwgJnJldCk7Ci0rCQlpZiAo ZXJyKSB7Ci0rCQkJRFBSKCJTbmRpb1N0b3A6IGNvdWxkbid0IGpvaW4gdGhyZWFkXG4iKTsKLSsJ CQlyZXR1cm4gcGFVbmFudGljaXBhdGVkSG9zdEVycm9yOwotKwkJfQotKwl9Ci0rCWlmICghc2lv X3N0b3Aocy0+aGRsKSkKLSsJCXJldHVybiBwYVVuYW50aWNpcGF0ZWRIb3N0RXJyb3I7Ci0rCXJl dHVybiBwYU5vRXJyb3I7Ci0rfQotKwotK3N0YXRpYyBQYUVycm9yCi0rQ2xvc2VTdHJlYW0oUGFT dHJlYW0gKnN0cmVhbSkKLSt7Ci0rCVBhU25kaW9TdHJlYW0gKnMgPSAoUGFTbmRpb1N0cmVhbSAq KXN0cmVhbTsKLSsKLSsJRFBSKCJDbG9zZVN0cmVhbTpcbiIpOwotKwotKwlpZiAoIXMtPnN0b3Bw ZWQpCi0rCQlTdG9wU3RyZWFtKHN0cmVhbSk7Ci0rCi0rCWlmIChzLT5tb2RlICYgU0lPX1JFQykK LSsJCWZyZWUocy0+cmJ1Zik7Ci0rCWlmIChzLT5tb2RlICYgU0lPX1BMQVkpCi0rCQlmcmVlKHMt PndidWYpOwotKwlzaW9fY2xvc2Uocy0+aGRsKTsKLSsgICAgICAgIFBhVXRpbF9UZXJtaW5hdGVT dHJlYW1SZXByZXNlbnRhdGlvbigmcy0+YmFzZSk7Ci0rCVBhVXRpbF9UZXJtaW5hdGVCdWZmZXJQ cm9jZXNzb3IoJnMtPmJ1ZnByb2MpOwotKwlQYVV0aWxfRnJlZU1lbW9yeShzKTsKLSsJcmV0dXJu IHBhTm9FcnJvcjsKLSt9Ci0rCi0rc3RhdGljIFBhRXJyb3IKLStBYm9ydFN0cmVhbShQYVN0cmVh bSAqc3RyZWFtKQotK3sKLSsJRFBSKCJBYm9ydFN0cmVhbTpcbiIpOwotKwotKwlyZXR1cm4gU3Rv cFN0cmVhbShzdHJlYW0pOwotK30KLSsKLStzdGF0aWMgUGFFcnJvcgotK0lzU3RyZWFtU3RvcHBl ZChQYVN0cmVhbSAqc3RyZWFtKQotK3sKLSsJUGFTbmRpb1N0cmVhbSAqcyA9IChQYVNuZGlvU3Ry ZWFtICopc3RyZWFtOwotKwotKwkvL0RQUigiSXNTdHJlYW1TdG9wcGVkOiBzPSVkLCBhPSVkXG4i LCBzLT5zdG9wcGVkLCBzLT5hY3RpdmUpOwotKwotKwlyZXR1cm4gcy0+c3RvcHBlZDsKLSt9Ci0r Ci0rc3RhdGljIFBhRXJyb3IKLStJc1N0cmVhbUFjdGl2ZShQYVN0cmVhbSAqc3RyZWFtKQotK3sK LSsJUGFTbmRpb1N0cmVhbSAqcyA9IChQYVNuZGlvU3RyZWFtICopc3RyZWFtOwotKwotKwkvL0RQ UigiSXNTdHJlYW1BY3RpdmU6IHM9JWQsIGE9JWRcbiIsIHMtPnN0b3BwZWQsIHMtPmFjdGl2ZSk7 Ci0rCi0rCXJldHVybiBzLT5hY3RpdmU7Ci0rfQotKwotK3N0YXRpYyBQYVRpbWUKLStHZXRTdHJl YW1UaW1lKFBhU3RyZWFtICpzdHJlYW0pCi0rewotKwlQYVNuZGlvU3RyZWFtICpzID0gKFBhU25k aW9TdHJlYW0gKilzdHJlYW07Ci0rCi0rCXJldHVybiAoZG91YmxlKXMtPnJlYWxwb3MgLyBzLT5i YXNlLnN0cmVhbUluZm8uc2FtcGxlUmF0ZTsKLSt9Ci0rCi0rc3RhdGljIFBhRXJyb3IKLStJc0Zv cm1hdFN1cHBvcnRlZChzdHJ1Y3QgUGFVdGlsSG9zdEFwaVJlcHJlc2VudGF0aW9uICpob3N0QXBp LAotKyAgICBjb25zdCBQYVN0cmVhbVBhcmFtZXRlcnMgKmlucHV0UGFyLAotKyAgICBjb25zdCBQ YVN0cmVhbVBhcmFtZXRlcnMgKm91dHB1dFBhciwKLSsgICAgZG91YmxlIHNhbXBsZVJhdGUpCi0r ewotKwlyZXR1cm4gcGFGb3JtYXRJc1N1cHBvcnRlZDsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStU ZXJtaW5hdGUoc3RydWN0IFBhVXRpbEhvc3RBcGlSZXByZXNlbnRhdGlvbiAqaG9zdEFwaSkKLSt7 Ci0rCVBhU25kaW9Ib3N0QXBpUmVwcmVzZW50YXRpb24gKnNuZGlvSG9zdEFwaTsKLSsJc25kaW9I b3N0QXBpID0gKFBhU25kaW9Ib3N0QXBpUmVwcmVzZW50YXRpb24gKilob3N0QXBpOwotKwlmcmVl KHNuZGlvSG9zdEFwaS0+YXVkaW9kZXZpY2VzKTsKLSsJUGFVdGlsX0ZyZWVNZW1vcnkoaG9zdEFw aSk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rSW5pdERldmljZUluZm8oUGFEZXZpY2VJbmZvICpp bmZvLCBQYUhvc3RBcGlJbmRleCBob3N0QXBpSW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUpCi0rewot KwlpbmZvLT5zdHJ1Y3RWZXJzaW9uID0gMjsKLSsJaW5mby0+bmFtZSA9IG5hbWU7Ci0rCWluZm8t Pmhvc3RBcGkgPSBob3N0QXBpSW5kZXg7Ci0rCWluZm8tPm1heElucHV0Q2hhbm5lbHMgPSAxMjg7 Ci0rCWluZm8tPm1heE91dHB1dENoYW5uZWxzID0gMTI4OwotKwlpbmZvLT5kZWZhdWx0TG93SW5w dXRMYXRlbmN5ID0gMC4wMTsKLSsJaW5mby0+ZGVmYXVsdExvd091dHB1dExhdGVuY3kgPSAwLjAx OwotKwlpbmZvLT5kZWZhdWx0SGlnaElucHV0TGF0ZW5jeSA9IDAuNTsKLSsJaW5mby0+ZGVmYXVs dEhpZ2hPdXRwdXRMYXRlbmN5ID0gMC41OwotKwlpbmZvLT5kZWZhdWx0U2FtcGxlUmF0ZSA9IDQ4 MDAwOwotK30KLSsKLStQYUVycm9yCi0rUGFTbmRpb19Jbml0aWFsaXplKFBhVXRpbEhvc3RBcGlS ZXByZXNlbnRhdGlvbiAqKmhvc3RBcGksIFBhSG9zdEFwaUluZGV4IGhvc3RBcGlJbmRleCkKLSt7 Ci0rCVBhU25kaW9Ib3N0QXBpUmVwcmVzZW50YXRpb24gKnNuZGlvSG9zdEFwaTsKLSsJUGFEZXZp Y2VJbmZvICppbmZvOwotKwlzdHJ1Y3Qgc2lvX2hkbCAqaGRsOwotKwljaGFyICphdWRpb2Rldmlj ZXM7Ci0rCWNoYXIgKmRldmljZTsKLSsJc2l6ZV90IGRldmljZUNvdW50OwotKwotKwlEUFIoIlBh U25kaW9fSW5pdGlhbGl6ZTogaW5pdGlhbGl6aW5nLi4uXG4iKTsKLSsKLSsJaWYgKChoZGw9c2lv X29wZW4oU0lPX0RFVkFOWSwgU0lPX1BMQVksIDEpKSA9PSBOVUxMKQotKwkJcmV0dXJuIHBhTm9F cnJvcjsKLSsJc2lvX2Nsb3NlKGhkbCk7Ci0rCS8qIHVudXNhYmxlIEFQSXMgc2hvdWxkIHJldHVy biBwYU5vRXJyb3IgYW5kIGEgTlVMTCBob3N0QXBpICovCi0rCSpob3N0QXBpID0gTlVMTDsKLSsK LSsJc25kaW9Ib3N0QXBpID0gUGFVdGlsX0FsbG9jYXRlTWVtb3J5KHNpemVvZihQYVNuZGlvSG9z dEFwaVJlcHJlc2VudGF0aW9uKSk7Ci0rCWlmIChzbmRpb0hvc3RBcGkgPT0gTlVMTCkKLSsJCXJl dHVybiBwYU5vRXJyb3I7Ci0rCi0rCS8vIEFkZCBkZWZhdWx0IGRldmljZQotKwlpbmZvID0gJnNu ZGlvSG9zdEFwaS0+ZGV2aWNlX2luZm9bMF07Ci0rCUluaXREZXZpY2VJbmZvKGluZm8sIGhvc3RB cGlJbmRleCwgU0lPX0RFVkFOWSk7Ci0rCXNuZGlvSG9zdEFwaS0+aW5mb3NbMF0gPSBpbmZvOwot KwlkZXZpY2VDb3VudCA9IDE7Ci0rCi0rCS8vIEFkZCBhZGRpdGlvbmFsIGRldmljZXMgYXMgc3Bl Y2lmaWVkIGluIHRoZSBQQV9TTkRJT19BVURJT0RFVklDRVMKLSsJLy8gZW52aXJvbm1lbnQgdmFy aWFibGUgYXMgYSBjb2xvbiBzZXBhcmF0ZWQgbGlzdAotKwlzbmRpb0hvc3RBcGktPmF1ZGlvZGV2 aWNlcyA9IE5VTEw7Ci0rCWF1ZGlvZGV2aWNlcyA9IGdldGVudigiUEFfU05ESU9fQVVESU9ERVZJ Q0VTIik7Ci0rCWlmIChhdWRpb2RldmljZXMgIT0gTlVMTCkgewotKwkJc25kaW9Ib3N0QXBpLT5h dWRpb2RldmljZXMgPSBzdHJkdXAoYXVkaW9kZXZpY2VzKTsKLSsJCWlmIChzbmRpb0hvc3RBcGkt PmF1ZGlvZGV2aWNlcyA9PSBOVUxMKQotKwkJCXJldHVybiBwYU5vRXJyb3I7Ci0rCi0rCQlhdWRp b2RldmljZXMgPSBzbmRpb0hvc3RBcGktPmF1ZGlvZGV2aWNlczsKLSsJCXdoaWxlICgoZGV2aWNl ID0gc3Ryc2VwKCZhdWRpb2RldmljZXMsICI6IikpICE9IE5VTEwgJiYKLSsJCQlkZXZpY2VDb3Vu dCA8IFBBX1NORElPX0FVRElPREVWSUNFU19NQVgpIHsKLSsJCQlpZiAoKmRldmljZSA9PSAnXDAn KQotKwkJCQljb250aW51ZTsKLSsJCQlpbmZvID0gJnNuZGlvSG9zdEFwaS0+ZGV2aWNlX2luZm9b ZGV2aWNlQ291bnRdOwotKwkJCUluaXREZXZpY2VJbmZvKGluZm8sIGhvc3RBcGlJbmRleCwgZGV2 aWNlKTsKLSsJCQlzbmRpb0hvc3RBcGktPmluZm9zW2RldmljZUNvdW50XSA9IGluZm87Ci0rCQkJ ZGV2aWNlQ291bnQrKzsKLSsJCX0KLSsJfQotKwotKwkqaG9zdEFwaSA9ICZzbmRpb0hvc3RBcGkt PmJhc2U7Ci0rCSgqaG9zdEFwaSktPmluZm8uc3RydWN0VmVyc2lvbiA9IDE7Ci0rCSgqaG9zdEFw aSktPmluZm8udHlwZSA9IHBhU25kaW87Ci0rCSgqaG9zdEFwaSktPmluZm8ubmFtZSA9ICJzbmRp byI7Ci0rCSgqaG9zdEFwaSktPmluZm8uZGV2aWNlQ291bnQgPSBkZXZpY2VDb3VudDsKLSsJKCpo b3N0QXBpKS0+aW5mby5kZWZhdWx0SW5wdXREZXZpY2UgPSAwOwotKwkoKmhvc3RBcGkpLT5pbmZv LmRlZmF1bHRPdXRwdXREZXZpY2UgPSAwOwotKwkoKmhvc3RBcGkpLT5kZXZpY2VJbmZvcyA9IHNu ZGlvSG9zdEFwaS0+aW5mb3M7Ci0rCSgqaG9zdEFwaSktPlRlcm1pbmF0ZSA9IFRlcm1pbmF0ZTsK LSsJKCpob3N0QXBpKS0+T3BlblN0cmVhbSA9IE9wZW5TdHJlYW07Ci0rCSgqaG9zdEFwaSktPklz Rm9ybWF0U3VwcG9ydGVkID0gSXNGb3JtYXRTdXBwb3J0ZWQ7Ci0rCQotKwlQYVV0aWxfSW5pdGlh bGl6ZVN0cmVhbUludGVyZmFjZSgmc25kaW9Ib3N0QXBpLT5ibG9ja2luZywKLSsJICAgIENsb3Nl U3RyZWFtLAotKwkgICAgU3RhcnRTdHJlYW0sCi0rCSAgICBTdG9wU3RyZWFtLAotKwkgICAgQWJv cnRTdHJlYW0sCi0rCSAgICBJc1N0cmVhbVN0b3BwZWQsCi0rCSAgICBJc1N0cmVhbUFjdGl2ZSwK LSsJICAgIEdldFN0cmVhbVRpbWUsCi0rCSAgICBQYVV0aWxfRHVtbXlHZXRDcHVMb2FkLAotKwkg ICAgQmxvY2tpbmdSZWFkU3RyZWFtLAotKwkgICAgQmxvY2tpbmdXcml0ZVN0cmVhbSwKLSsJICAg IEJsb2NraW5nR2V0U3RyZWFtUmVhZEF2YWlsYWJsZSwKLSsJICAgIEJsb2NraW5nR2V0U3RyZWFt V3JpdGVBdmFpbGFibGUpOwotKwotKwlQYVV0aWxfSW5pdGlhbGl6ZVN0cmVhbUludGVyZmFjZSgm c25kaW9Ib3N0QXBpLT5jYWxsYmFjaywKLSsJICAgIENsb3NlU3RyZWFtLAotKwkgICAgU3RhcnRT dHJlYW0sCi0rCSAgICBTdG9wU3RyZWFtLAotKwkgICAgQWJvcnRTdHJlYW0sCi0rCSAgICBJc1N0 cmVhbVN0b3BwZWQsCi0rCSAgICBJc1N0cmVhbUFjdGl2ZSwKLSsJICAgIEdldFN0cmVhbVRpbWUs Ci0rCSAgICBQYVV0aWxfRHVtbXlHZXRDcHVMb2FkLAotKwkgICAgUGFVdGlsX0R1bW15UmVhZCwK LSsJICAgIFBhVXRpbF9EdW1teVdyaXRlLAotKwkgICAgUGFVdGlsX0R1bW15R2V0UmVhZEF2YWls YWJsZSwKLSsJICAgIFBhVXRpbF9EdW1teUdldFdyaXRlQXZhaWxhYmxlKTsKLSsKLSsJRFBSKCJQ YVNuZGlvX0luaXRpYWxpemU6IGRvbmVcbiIpOwotKwlyZXR1cm4gcGFOb0Vycm9yOwotK30KLWRp ZmYgLS1naXQgYS9zcmMvb3MvdW5peC9wYV91bml4X2hvc3RhcGlzLmMgYi9zcmMvb3MvdW5peC9w YV91bml4X2hvc3RhcGlzLmMKLWluZGV4IGE5YjRhMDUuLmYxMGNlZDEgMTAwNjQ0Ci0tLS0gYS9z cmMvb3MvdW5peC9wYV91bml4X2hvc3RhcGlzLmMKLSsrKyBiL3NyYy9vcy91bml4L3BhX3VuaXhf aG9zdGFwaXMuYwotQEAgLTQ0LDYgKzQ0LDcgQEAKLSAKLSBQYUVycm9yIFBhSmFja19Jbml0aWFs aXplKCBQYVV0aWxIb3N0QXBpUmVwcmVzZW50YXRpb24gKipob3N0QXBpLCBQYUhvc3RBcGlJbmRl eCBpbmRleCApOwotIFBhRXJyb3IgUGFBbHNhX0luaXRpYWxpemUoIFBhVXRpbEhvc3RBcGlSZXBy ZXNlbnRhdGlvbiAqKmhvc3RBcGksIFBhSG9zdEFwaUluZGV4IGluZGV4ICk7Ci0rUGFFcnJvciBQ YVNuZGlvX0luaXRpYWxpemUoIFBhVXRpbEhvc3RBcGlSZXByZXNlbnRhdGlvbiAqKmhvc3RBcGks IFBhSG9zdEFwaUluZGV4IGluZGV4ICk7Ci0gUGFFcnJvciBQYU9TU19Jbml0aWFsaXplKCBQYVV0 aWxIb3N0QXBpUmVwcmVzZW50YXRpb24gKipob3N0QXBpLCBQYUhvc3RBcGlJbmRleCBpbmRleCAp OwotIC8qIEFkZGVkIGZvciBJUklYLCBQaWV0ZXIsIG9jdCAyLCAyMDAzOiAqLwotIFBhRXJyb3Ig UGFTR0lfSW5pdGlhbGl6ZSggUGFVdGlsSG9zdEFwaVJlcHJlc2VudGF0aW9uICoqaG9zdEFwaSwg UGFIb3N0QXBpSW5kZXggaW5kZXggKTsKLUBAIC01Nyw2ICs1OCwxMCBAQCBQYUVycm9yIFBhU2tl bGV0b25fSW5pdGlhbGl6ZSggUGFVdGlsSG9zdEFwaVJlcHJlc2VudGF0aW9uICoqaG9zdEFwaSwg UGFIb3N0QXBpSQotIAotIFBhVXRpbEhvc3RBcGlJbml0aWFsaXplciAqcGFIb3N0QXBpSW5pdGlh bGl6ZXJzW10gPQotICAgICB7Ci0rI2lmZGVmIFBBX1VTRV9TTkRJTwotKwkgICAgUGFTbmRpb19J bml0aWFsaXplLAotKyNlbmRpZgotKwotICNpZmRlZiBfX2xpbnV4X18KLSAKLSAjaWYgUEFfVVNF X0FMU0EKLS0tIAotMi4yNy4wCi0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcG9ydGF1ZGlvL3RlbXBs YXRlIGIvc3JjcGtncy9wb3J0YXVkaW8vdGVtcGxhdGUKaW5kZXggNTRkY2Q5YTcyMTU1MDQuLjU0 OTJmNjIzMjlhMDRlIDEwMDY0NAotLS0gYS9zcmNwa2dzL3BvcnRhdWRpby90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3BvcnRhdWRpby90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ3BvcnRhdWRpbycKIHBrZ25hbWU9cG9ydGF1ZGlvCi12ZXJzaW9uPTE5MDYwMC4y MDE2MTAzMAotcmV2aXNpb249NgordmVyc2lvbj0xOTA3MDAuMjAyMTA0MDYKK3JldmlzaW9uPTEK IGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWVuYWJsZS1jeHgg LS13aXRoLWphY2sgJCh2b3B0X2VuYWJsZSBzbmRpbykiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1j b25maWciCkBAIC05LDE1ICs5LDExIEBAIG1ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBqYWNr LWRldmVsICQodm9wdF9pZiBzbmRpbyBzbmRpby1kZXZlbCkiCiBzaG9ydF9kZXNjPSJQb3J0YWJs ZSBjcm9zcy1wbGF0Zm9ybSBhdWRpbyBJL08gbGlicmFyeSIKIG1haW50YWluZXI9IsOJcmljbyBO b2d1ZWlyYSA8ZXJpY29uckBkaXNyb290Lm9yZz4iCiBsaWNlbnNlPSJNSVQiCi1ob21lcGFnZT0i aHR0cDovL3d3dy5wb3J0YXVkaW8uY29tIgotZGlzdGZpbGVzPSJodHRwOi8vd3d3LiR7cGtnbmFt ZX0uY29tL2FyY2hpdmVzL3BhX3N0YWJsZV92JHt2ZXJzaW9uJS4qfV8ke3ZlcnNpb24jKi59LnRn eiIKLWNoZWNrc3VtPWY1YTIxZDdkY2Q2ZWU4NDM5NzQ0NmZhMWZhMWEwNjc1YmIyZThhNGE2ZGNl YjQzMDVhODQwNDY5OGQ4ZDE1MTMKK2hvbWVwYWdlPSJodHRwczovL3d3dy5wb3J0YXVkaW8uY29t IgorZGlzdGZpbGVzPSJodHRwczovL2ZpbGVzLiR7cGtnbmFtZX0uY29tL2FyY2hpdmVzL3BhX3N0 YWJsZV92JHt2ZXJzaW9uJS4qfV8ke3ZlcnNpb24jKi59LnRneiIKK2NoZWNrc3VtPTQ3ZWZiZjQy Yzc3YzE5YTA1ZDIyZTYyN2Q0Mjg3M2U5OTFlYzBjMTM1NzIxOWMwZDc0Y2U2YTI5NDhjYjJkZWYK IGRpc2FibGVfcGFyYWxsZWxfYnVpbGQ9eWVzCiAKLSMgc25kaW8gZGlzYWJsZWQgYnkgZGVmYXVs dDogbm9uLXVwc3RyZWFtIHBhdGNoCi1idWlsZF9vcHRpb25zPSJzbmRpbyIKLWJ1aWxkX29wdGlv bnNfZGVmYXVsdD0iIgotCiBwb3N0X2luc3RhbGwoKSB7CiAJdmxpY2Vuc2UgTElDRU5TRS50eHQK IH0KCkZyb20gNjJjMWYxM2MyMGNlNDk0M2QxYWRlNmIxMDUwZjgxMjczNWZlNjRjYyBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSUZvdW5kU2lsZW50SG91c2UgPGFkZXB0c2xhYkBnbWFp bC5jb20+CkRhdGU6IEZyaSwgMjYgQXByIDIwMjQgMjM6MTg6MjIgKzA2MDAKU3ViamVjdDogW1BB VENIIDQvN10gc291bmR0b3VjaDogdXBkYXRlIHRvIDIuMy4zLgoKLS0tCiBzcmNwa2dzL3NvdW5k dG91Y2gvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zb3VuZHRvdWNoL3RlbXBsYXRl IGIvc3JjcGtncy9zb3VuZHRvdWNoL3RlbXBsYXRlCmluZGV4IGY5YTdjMDZiZWU3YTM2Li5jNTYy NzNmYmI3OTI2NCAxMDA2NDQKLS0tIGEvc3JjcGtncy9zb3VuZHRvdWNoL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3Mvc291bmR0b3VjaC90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ3NvdW5kdG91Y2gnCiBwa2duYW1lPXNvdW5kdG91Y2gKLXZlcnNpb249Mi4zLjIK K3ZlcnNpb249Mi4zLjMKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNv bmZpZ3VyZV9hcmdzPSItLWVuYWJsZS1vcGVubXAiCkBAIC0xMSw3ICsxMSw3IEBAIG1haW50YWlu ZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJMR1BMLTIuMS1v bmx5IgogaG9tZXBhZ2U9Imh0dHBzOi8vd3d3LnN1cmluYS5uZXQvc291bmR0b3VjaCIKIGRpc3Rm aWxlcz0iaHR0cHM6Ly93d3cuc3VyaW5hLm5ldC9zb3VuZHRvdWNoL3NvdW5kdG91Y2gtJHt2ZXJz aW9ufS50YXIuZ3oiCi1jaGVja3N1bT0zYmRlOGRkYmJjMzY2MWYwNGUxNTFmNzJjZjIxY2E5ZDhm OGM4OGUyNjU4MzNiNjU5MzViODk2MmQxMmQ2YjA4CitjaGVja3N1bT00M2IyM2RmYWMyZjY0YTNh ZmY1NWQ2NGJlMDk2ZmZjN2I3Mzg0MmMzZjU2NjVjYWZmNDQ5NzU2MzNhOTc1YTk5CiAKIHByZV9j b25maWd1cmUoKSB7CiAJLi9ib290c3RyYXAKCkZyb20gNWNkZDE5MWE5MTlhZTYyMmQyNDhjMzMw ZjgzMzk4NWFlNDZhNWEwOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSUZvdW5kU2ls ZW50SG91c2UgPGFkZXB0c2xhYkBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjYgQXByIDIwMjQgMjM6 MTg6MjcgKzA2MDAKU3ViamVjdDogW1BBVENIIDUvN10gc3FsaXRlOiB1cGRhdGUgdG8gMy40NS4z LgoKLS0tCiBzcmNwa2dzL3NxbGl0ZS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQs IDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3Nx bGl0ZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc3FsaXRlL3RlbXBsYXRlCmluZGV4IDFkNTQ4ZWI0Nzk1 NjBiLi40YWU4ZmQ0ZDI4MTQ2NSAxMDA2NDQKLS0tIGEvc3JjcGtncy9zcWxpdGUvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9zcWxpdGUvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdzcWxpdGUnCiBwa2duYW1lPXNxbGl0ZQotdmVyc2lvbj0zLjQ1LjIKK3ZlcnNp b249My40NS4zCiByZXZpc2lvbj0xCiBfYW1hbGdhbWF0aW9udmVyPSQocHJpbnRmICIlZCUwMmQl MDJkMDBcbiIgJHt2ZXJzaW9uLy8uLyB9KQogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQpAQCAt MTIsNyArMTIsNyBAQCBsaWNlbnNlPSJQdWJsaWMgRG9tYWluIgogaG9tZXBhZ2U9Imh0dHBzOi8v c3FsaXRlLm9yZy8iCiBjaGFuZ2Vsb2c9Imh0dHBzOi8vd3d3LnNxbGl0ZS5vcmcvY2hhbmdlcy5o dG1sIgogZGlzdGZpbGVzPSJodHRwczovL3NxbGl0ZS5vcmcvMjAyNC9zcWxpdGUtYXV0b2NvbmYt JHtfYW1hbGdhbWF0aW9udmVyfS50YXIuZ3oiCi1jaGVja3N1bT1iYzkwNjc0NDJlZWRmM2RkMzk5 ODliNWM1Y2ZiZmZmMzdhZTY2Y2M5Yzk5Mjc0ZTBjMzA1MmRjNGQ0YThmNmFlCitjaGVja3N1bT1i MjgwOWNhNTMxMjRjMTljNjBmNDJiZjYyNzczNmVhZTAxMWFmZGNjMjA1YmI0ODI3MGE1ZWU5YTM4 MTkxNTMxCiAKIENGTEFHUz0iLURTUUxJVEVfRU5BQkxFX0RCU1RBVF9WVEFCIC1EU1FMSVRFX0VO QUJMRV9DT0xVTU5fTUVUQURBVEEgXAogIC1EU1FMSVRFX0VOQUJMRV9VTkxPQ0tfTk9USUZZIC1E U1FMSVRFX1NFQ1VSRV9ERUxFVEUgXAoKRnJvbSBkYTljZDY4MGZlYzlkNDhkODVjYzgwMmQ5YTYx MDlhNmE3MzQ1ODc5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBJRm91bmRTaWxlbnRI b3VzZSA8YWRlcHRzbGFiQGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAyNiBBcHIgMjAyNCAyMzoxODoz MiArMDYwMApTdWJqZWN0OiBbUEFUQ0ggNi83XSBzdWlsOiB1cGRhdGUgdG8gMC4xMC4yMC4KCi0t LQogc3JjcGtncy9zdWlsL3RlbXBsYXRlIHwgOCArKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQg aW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3N1aWwv dGVtcGxhdGUgYi9zcmNwa2dzL3N1aWwvdGVtcGxhdGUKaW5kZXggNjgwZTE5NzJjZDQzNzEuLjU4 ZDdkNGFjZWVlMDUyIDEwMDY0NAotLS0gYS9zcmNwa2dzL3N1aWwvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9zdWlsL3RlbXBsYXRlCkBAIC0xLDggKzEsOCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn c3VpbCcKIHBrZ25hbWU9c3VpbAotdmVyc2lvbj0wLjEwLjEyCit2ZXJzaW9uPTAuMTAuMjAKIHJl dmlzaW9uPTEKLWJ1aWxkX3N0eWxlPXdhZjMKK2J1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRl cGVuZHM9InBrZy1jb25maWcgbHYyIgogbWFrZWRlcGVuZHM9Imd0aystZGV2ZWwgcXQ1LWRldmVs IGd0ayszLWRldmVsIgogc2hvcnRfZGVzYz0iTGlnaHR3ZWlnaHQgQyBsaWJyYXJ5IGZvciBsb2Fk aW5nIGFuZCB3cmFwcGluZyBMVjIgcGx1Z2luIFVJcyIKQEAgLTEwLDggKzEwLDggQEAgbWFpbnRh aW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9Ik1JVCIKIGhv bWVwYWdlPSJodHRwczovL2Ryb2JpbGxhLm5ldC9zb2Z0d2FyZS9zdWlsLmh0bWwiCiBjaGFuZ2Vs b2c9Imh0dHBzOi8vZ2l0bGFiLmNvbS9sdjIvc3VpbC8tL3Jhdy9tYXN0ZXIvTkVXUyIKLWRpc3Rm aWxlcz0iaHR0cDovL2Rvd25sb2FkLmRyb2JpbGxhLm5ldC8ke3BrZ25hbWV9LSR7dmVyc2lvbn0u dGFyLmJ6MiIKLWNoZWNrc3VtPWRhYTc2M2IyMzFiMjJhMWY1MzI1MzBkM2UwNGMxZmFlNDhkMWUx ZTAzNzg1ZTIzYzlhYzEzOGYyMDdiODdlY2QKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9kb3dubG9hZC5k cm9iaWxsYS5uZXQvc3VpbC0ke3ZlcnNpb259LnRhci54eiIKK2NoZWNrc3VtPTMzNGEzZWQzZTcz ZDVlMTdmZjQwMGIzZGI5ODAxZjYzODA5MTU1YjBmYWE4YjFiOTA0NmY5ZGQzZmZlZjkzNGUKIAog aWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCiAJaG9zdG1ha2VkZXBlbmRzKz0iIHF0NS1ob3N0 LXRvb2xzIHF0NS1kZXZlbCIKCkZyb20gNzQ4MzgxOTQzOGNhM2U1NTgwOTNmNmJjMWQ2MTRkYTk4 OWRhYzc0MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSUZvdW5kU2lsZW50SG91c2Ug PGFkZXB0c2xhYkBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjYgQXByIDIwMjQgMjM6MTg6MzkgKzA2 MDAKU3ViamVjdDogW1BBVENIIDcvN10gd2F2cGFjazogdXBkYXRlIHRvIDUuNy4wLgoKLS0tCiBz cmNwa2dzL3dhdnBhY2svdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2Vy dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy93YXZwYWNrL3Rl bXBsYXRlIGIvc3JjcGtncy93YXZwYWNrL3RlbXBsYXRlCmluZGV4IGQ5YjBmNjhmMDE0YmRhLi5j NmM2NTc3MGYwZDdmYyAxMDA2NDQKLS0tIGEvc3JjcGtncy93YXZwYWNrL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3Mvd2F2cGFjay90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ3dhdnBhY2snCiBwa2duYW1lPXdhdnBhY2sKLXZlcnNpb249NS42LjAKK3ZlcnNpb249 NS43LjAKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9h cmdzPSItLWVuYWJsZS1zdGF0aWMiCkBAIC0xMCw3ICsxMCw3IEBAIGxpY2Vuc2U9IkJTRC0zLUNs YXVzZSIKIGhvbWVwYWdlPSJodHRwczovL3d3dy53YXZwYWNrLmNvbS8iCiBjaGFuZ2Vsb2c9Imh0 dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9kYnJ5L1dhdlBhY2svbWFzdGVyL05FV1Mi CiBkaXN0ZmlsZXM9Imh0dHBzOi8vd3d3LndhdnBhY2suY29tL3dhdnBhY2stJHt2ZXJzaW9ufS50 YXIuYnoyIgotY2hlY2tzdW09OGNiZmExNTkyN2QyOWJjZjk1M2RiMzVjMGNmY2E3NDI0MzQ0ZmY0 M2ViZTQwODNkYWYxNjE1NzdmYjgzOWNjMQorY2hlY2tzdW09ODk0NGIyMzc5NjhhMWIzOTc2YTFl YjQ3Y2Q1NTY5MTZlMDQxYTJhYTg5MTc0OTVkYjY1ZjgyYzNmY2MyYTIyNQogCiBjYXNlICIkWEJQ U19UQVJHRVRfTUFDSElORSIgaW4KIAlhcm12NSopIGNvbmZpZ3VyZV9hcmdzKz0iIC0tZGlzYWJs ZS1hc20iOzsK --===============2984438084551840546==--