From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:50571) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gc4Qj-0005L7-J6 for qemu-devel@nongnu.org; Wed, 26 Dec 2018 03:20:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gc4Qb-0005bF-Ro for qemu-devel@nongnu.org; Wed, 26 Dec 2018 03:20:41 -0500 Resent-Message-Id: In-Reply-To: <1545387387-9613-1-git-send-email-baiyaowei@cmss.chinamobile.com> Message-ID: <154581238571.18047.638152041130205082@02a1dbf831e2> Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 From: no-reply@patchew.org Date: Wed, 26 Dec 2018 00:19:48 -0800 (PST) Subject: Re: [Qemu-devel] [PATCH] tcmu: Introduce qemu-tcmu utility List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: baiyaowei@cmss.chinamobile.com Cc: fam@euphon.net, qemu-block@nongnu.org, qemu-devel@nongnu.org, famz@redhat.com, atumball@redhat.com, mchristi@redhat.com, pkalever@redhat.com, pbonzini@redhat.com, xiubli@redhat.com UGF0Y2hldyBVUkw6IGh0dHBzOi8vcGF0Y2hldy5vcmcvUUVNVS8xNTQ1Mzg3Mzg3LTk2MTMtMS1n aXQtc2VuZC1lbWFpbC1iYWl5YW93ZWlAY21zcy5jaGluYW1vYmlsZS5jb20vCgoKCkhpLAoKVGhp cyBzZXJpZXMgc2VlbXMgdG8gaGF2ZSBzb21lIGNvZGluZyBzdHlsZSBwcm9ibGVtcy4gU2VlIG91 dHB1dCBiZWxvdyBmb3IKbW9yZSBpbmZvcm1hdGlvbjoKCk1lc3NhZ2UtaWQ6IDE1NDUzODczODct OTYxMy0xLWdpdC1zZW5kLWVtYWlsLWJhaXlhb3dlaUBjbXNzLmNoaW5hbW9iaWxlLmNvbQpUeXBl OiBzZXJpZXMKU3ViamVjdDogW1FlbXUtZGV2ZWxdIFtQQVRDSF0gdGNtdTogSW50cm9kdWNlIHFl bXUtdGNtdSB1dGlsaXR5Cgo9PT0gVEVTVCBTQ1JJUFQgQkVHSU4gPT09CiMhL2Jpbi9iYXNoCgpC QVNFPWJhc2UKbj0xCnRvdGFsPSQoZ2l0IGxvZyAtLW9uZWxpbmUgJEJBU0UuLiB8IHdjIC1sKQpm YWlsZWQ9MAoKZ2l0IGNvbmZpZyAtLWxvY2FsIGRpZmYucmVuYW1lbGltaXQgMApnaXQgY29uZmln IC0tbG9jYWwgZGlmZi5yZW5hbWVzIFRydWUKZ2l0IGNvbmZpZyAtLWxvY2FsIGRpZmYuYWxnb3Jp dGhtIGhpc3RvZ3JhbQoKY29tbWl0cz0iJChnaXQgbG9nIC0tZm9ybWF0PSVIIC0tcmV2ZXJzZSAk QkFTRS4uKSIKZm9yIGMgaW4gJGNvbW1pdHM7IGRvCiAgICBlY2hvICJDaGVja2luZyBQQVRDSCAk bi8kdG90YWw6ICQoZ2l0IGxvZyAtbiAxIC0tZm9ybWF0PSVzICRjKS4uLiIKICAgIGlmICEgZ2l0 IHNob3cgJGMgLS1mb3JtYXQ9ZW1haWwgfCAuL3NjcmlwdHMvY2hlY2twYXRjaC5wbCAtLW1haWxi YWNrIC07IHRoZW4KICAgICAgICBmYWlsZWQ9MQogICAgICAgIGVjaG8KICAgIGZpCiAgICBuPSQo KG4rMSkpCmRvbmUKCmV4aXQgJGZhaWxlZAo9PT0gVEVTVCBTQ1JJUFQgRU5EID09PQoKVXBkYXRp bmcgM2M4Y2Y1YTljMjFmZjg3ODIxNjRkMWRlZjdmNDRiZDg4ODcxMzM4NApTd2l0Y2hlZCB0byBh IG5ldyBicmFuY2ggJ3Rlc3QnCjUyODY5ZTEgdGNtdTogSW50cm9kdWNlIHFlbXUtdGNtdSB1dGls aXR5Cgo9PT0gT1VUUFVUIEJFR0lOID09PQpDaGVja2luZyBQQVRDSCAxLzE6IHRjbXU6IEludHJv ZHVjZSBxZW11LXRjbXUgdXRpbGl0eS4uLgpXQVJOSU5HOiBhZGRlZCwgbW92ZWQgb3IgZGVsZXRl ZCBmaWxlKHMpLCBkb2VzIE1BSU5UQUlORVJTIG5lZWQgdXBkYXRpbmc/CiMxNTc6IApuZXcgZmls ZSBtb2RlIDEwMDY0NAoKRVJST1I6IHRyYWlsaW5nIHdoaXRlc3BhY2UKIzMyOTogRklMRTogcWVt dS10Y211LmM6NTE6CisiVXNhZ2U6XG4iICQKCldBUk5JTkc6IEJsb2NrIGNvbW1lbnRzIHVzZSBh IGxlYWRpbmcgLyogb24gYSBzZXBhcmF0ZSBsaW5lCiM0NjY6IEZJTEU6IHFlbXUtdGNtdS5jOjE4 ODoKKyAgICAvKiBub3cgd2hlbiB0aGUgaW5pdGlhbGl6YXRpb24gaXMgKGFsbW9zdCkgY29tcGxl dGUsIGNoZGlyKCIvIikKCldBUk5JTkc6IEJsb2NrIGNvbW1lbnRzIHVzZSBhIHRyYWlsaW5nICov IG9uIGEgc2VwYXJhdGUgbGluZQojNDY3OiBGSUxFOiBxZW11LXRjbXUuYzoxODk6CisgICAgICog dG8gZnJlZSBhbnkgYnVzeSBmaWxlc3lzdGVtcyAqLwoKRVJST1I6IGNvZGUgaW5kZW50IHNob3Vs ZCBuZXZlciB1c2UgdGFicwojNTI1OiBGSUxFOiB0Y211L2hlbHBlci5jOjE2OgorXkl1aW50OF90 ICpjZGIsJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNTI2OiBG SUxFOiB0Y211L2hlbHBlci5jOjE3OgorXklzdHJ1Y3QgaW92ZWMgKmlvdmVjLCQKCkVSUk9SOiBj b2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzUyNzogRklMRTogdGNtdS9oZWxwZXIu YzoxODoKK15Jc2l6ZV90IGlvdl9jbnQpJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZl ciB1c2UgdGFicwojNTI5OiBGSUxFOiB0Y211L2hlbHBlci5jOjIwOgorXkl1aW50OF90IGJ1Zlsz Nl07JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNTMxOiBGSUxF OiB0Y211L2hlbHBlci5jOjIyOgorXkltZW1zZXQoYnVmLCAwLCBzaXplb2YoYnVmKSk7JAoKRVJS T1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNTMzOiBGSUxFOiB0Y211L2hl bHBlci5jOjI0OgorXklidWZbMl0gPSAweDA1OyAvKiBTUEMtMyAqLyQKCkVSUk9SOiBjb2RlIGlu ZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzUzNDogRklMRTogdGNtdS9oZWxwZXIuYzoyNToK K15JYnVmWzNdID0gMHgwMjsgLyogcmVzcG9uc2UgZGF0YSBmb3JtYXQgKi8kCgpFUlJPUjogY29k ZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM1MzY6IEZJTEU6IHRjbXUvaGVscGVyLmM6 Mjc6CiteSS8qJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNTM3 OiBGSUxFOiB0Y211L2hlbHBlci5jOjI4OgorXkkgKiBBIFRoaXJkLVBhcnR5IENvcHkgKDNQQykk CgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM1Mzg6IEZJTEU6IHRj bXUvaGVscGVyLmM6Mjk6CiteSSAqJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1 c2UgdGFicwojNTM5OiBGSUxFOiB0Y211L2hlbHBlci5jOjMwOgorXkkgKiBFbmFibGUgdGhlIFhD T1BZJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNTQwOiBGSUxF OiB0Y211L2hlbHBlci5jOjMxOgorXkkgKi8kCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5l dmVyIHVzZSB0YWJzCiM1NDE6IEZJTEU6IHRjbXUvaGVscGVyLmM6MzI6CiteSWJ1Zls1XSA9IDB4 MDg7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNTQzOiBGSUxF OiB0Y211L2hlbHBlci5jOjM0OgorXklidWZbN10gPSAweDAyOyAvKiBDbWRRdWUgKi8kCgpFUlJP UjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM1NDU6IEZJTEU6IHRjbXUvaGVs cGVyLmM6MzY6CiteSW1lbWNweSgmYnVmWzhdLCAiTElPLU9SRyAiLCA4KTskCgpFUlJPUjogY29k ZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM1NDY6IEZJTEU6IHRjbXUvaGVscGVyLmM6 Mzc6CiteSW1lbXNldCgmYnVmWzE2XSwgMHgyMCwgMTYpOyQKCkVSUk9SOiBjb2RlIGluZGVudCBz aG91bGQgbmV2ZXIgdXNlIHRhYnMKIzU0NzogRklMRTogdGNtdS9oZWxwZXIuYzozODoKK15JbWVt Y3B5KCZidWZbMTZdLCAiVENNVSBkZXZpY2UiLCAxMSk7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNo b3VsZCBuZXZlciB1c2UgdGFicwojNTQ4OiBGSUxFOiB0Y211L2hlbHBlci5jOjM5OgorXkltZW1j cHkoJmJ1ZlszMl0sICIwMDAyIiwgNCk7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZl ciB1c2UgdGFicwojNTQ5OiBGSUxFOiB0Y211L2hlbHBlci5jOjQwOgorXklidWZbNF0gPSAzMTsg LyogU2V0IGFkZGl0aW9uYWwgbGVuZ3RoIHRvIDMxICovJAoKRVJST1I6IGNvZGUgaW5kZW50IHNo b3VsZCBuZXZlciB1c2UgdGFicwojNTUxOiBGSUxFOiB0Y211L2hlbHBlci5jOjQyOgorXkl0Y211 X21lbWNweV9pbnRvX2lvdmVjKGlvdmVjLCBpb3ZfY250LCBidWYsIHNpemVvZihidWYpKTskCgpF UlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM1NTI6IEZJTEU6IHRjbXUv aGVscGVyLmM6NDM6CiteSXJldHVybiBUQ01VX1NUU19PSzskCgpFUlJPUjogY29kZSBpbmRlbnQg c2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM1NTg6IEZJTEU6IHRjbXUvaGVscGVyLmM6NDk6CiteSWlm IChjID49ICcwJyAmJiBjIDw9ICc5JykgeyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2 ZXIgdXNlIHRhYnMKIzU1OTogRklMRTogdGNtdS9oZWxwZXIuYzo1MDoKK15JXkkqdmFsID0gYyAt ICcwJzskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM1NjA6IEZJ TEU6IHRjbXUvaGVscGVyLmM6NTE6CiteSV5JcmV0dXJuIHRydWU7JAoKRVJST1I6IGNvZGUgaW5k ZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNTYxOiBGSUxFOiB0Y211L2hlbHBlci5jOjUyOgor Xkl9JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNTYyOiBGSUxF OiB0Y211L2hlbHBlci5jOjUzOgorXklpZiAoYyA+PSAnYScgJiYgYyA8PSAnZicpIHskCgpFUlJP UjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM1NjM6IEZJTEU6IHRjbXUvaGVs cGVyLmM6NTQ6CiteSV5JKnZhbCA9IGMgLSAnYScgKyAxMDskCgpFUlJPUjogY29kZSBpbmRlbnQg c2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM1NjQ6IEZJTEU6IHRjbXUvaGVscGVyLmM6NTU6CiteSV5J cmV0dXJuIHRydWU7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwoj NTY1OiBGSUxFOiB0Y211L2hlbHBlci5jOjU2OgorXkl9JAoKRVJST1I6IGNvZGUgaW5kZW50IHNo b3VsZCBuZXZlciB1c2UgdGFicwojNTY2OiBGSUxFOiB0Y211L2hlbHBlci5jOjU3OgorXklpZiAo YyA+PSAnQScgJiYgYyA8PSAnRicpIHskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVy IHVzZSB0YWJzCiM1Njc6IEZJTEU6IHRjbXUvaGVscGVyLmM6NTg6CiteSV5JKnZhbCA9IGMgLSAn QScgKyAxMDskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM1Njg6 IEZJTEU6IHRjbXUvaGVscGVyLmM6NTk6CiteSV5JcmV0dXJuIHRydWU7JAoKRVJST1I6IGNvZGUg aW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNTY5OiBGSUxFOiB0Y211L2hlbHBlci5jOjYw OgorXkl9JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNTcwOiBG SUxFOiB0Y211L2hlbHBlci5jOjYxOgorXklyZXR1cm4gZmFsc2U7JAoKRVJST1I6IGNvZGUgaW5k ZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNTc0OiBGSUxFOiB0Y211L2hlbHBlci5jOjY1Ogor XklzdHJ1Y3QgdGNtdV9kZXZpY2UgKmRldiwkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5l dmVyIHVzZSB0YWJzCiM1NzU6IEZJTEU6IHRjbXUvaGVscGVyLmM6NjY6CiteSXVpbnQ4X3QgKmNk YiwkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM1NzY6IEZJTEU6 IHRjbXUvaGVscGVyLmM6Njc6CiteSXN0cnVjdCBpb3ZlYyAqaW92ZWMsJAoKRVJST1I6IGNvZGUg aW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNTc3OiBGSUxFOiB0Y211L2hlbHBlci5jOjY4 OgorXklzaXplX3QgaW92X2NudCkkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVz ZSB0YWJzCiM1Nzk6IEZJTEU6IHRjbXUvaGVscGVyLmM6NzA6CiteSXN3aXRjaCAoY2RiWzJdKSB7 JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNTgwOiBGSUxFOiB0 Y211L2hlbHBlci5jOjcxOgorXkljYXNlIDB4MDogLyogU3VwcG9ydGVkIFZQRCBwYWdlcyAqLyQK CkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzU4MTogRklMRTogdGNt dS9oZWxwZXIuYzo3MjoKK15JeyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNl IHRhYnMKIzU4MjogRklMRTogdGNtdS9oZWxwZXIuYzo3MzoKK15JXkljaGFyIGRhdGFbMTZdOyQK CkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzU4NDogRklMRTogdGNt dS9oZWxwZXIuYzo3NToKK15JXkltZW1zZXQoZGF0YSwgMCwgc2l6ZW9mKGRhdGEpKTskCgpFUlJP UjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM1ODY6IEZJTEU6IHRjbXUvaGVs cGVyLmM6Nzc6CiteSV5JLyogZGF0YVsxXSAocGFnZSBjb2RlKSBhbHJlYWR5IDAgKi8kCgpFUlJP UjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM1ODc6IEZJTEU6IHRjbXUvaGVs cGVyLmM6Nzg6CiteSV5JLyokCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0 YWJzCiM1ODg6IEZJTEU6IHRjbXUvaGVscGVyLmM6Nzk6CiteSV5JICAqICBzcGM0cjIyIDcuNy4x MyBUaGUgc3VwcG9ydGVkIFZQRCBwYWdlIGxpc3Qgc2hhbGwgY29udGFpbiQKCldBUk5JTkc6IEJs b2NrIGNvbW1lbnRzIHNob3VsZCBhbGlnbiB0aGUgKiBvbiBlYWNoIGxpbmUKIzU4ODogRklMRTog dGNtdS9oZWxwZXIuYzo3OToKKyAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICog IHNwYzRyMjIgNy43LjEzIFRoZSBzdXBwb3J0ZWQgVlBEIHBhZ2UgbGlzdCBzaGFsbCBjb250YWlu CgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM1ODk6IEZJTEU6IHRj bXUvaGVscGVyLmM6ODA6CiteSV5JICAqICBhIGxpc3Qgb2YgYWxsIFZQRCBwYWdlIGNvZGVzIChz ZWUgNy43KSBpbXBsZW1lbnRlZCBieSB0aGUkCgpXQVJOSU5HOiBsaW5lIG92ZXIgODAgY2hhcmFj dGVycwojNTkwOiBGSUxFOiB0Y211L2hlbHBlci5jOjgxOgorICAgICAgICAgICAgICAgICAqICBs b2dpY2FsIHVuaXQgaW4gYXNjZW5kaW5nIG9yZGVyIGJlZ2lubmluZyB3aXRoIHBhZ2UgY29kZSAw MGgKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzU5MDogRklMRTog dGNtdS9oZWxwZXIuYzo4MToKK15JXkkgICogIGxvZ2ljYWwgdW5pdCBpbiBhc2NlbmRpbmcgb3Jk ZXIgYmVnaW5uaW5nIHdpdGggcGFnZSBjb2RlIDAwaCQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91 bGQgbmV2ZXIgdXNlIHRhYnMKIzU5MTogRklMRTogdGNtdS9oZWxwZXIuYzo4MjoKK15JXkkgICov JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNTkyOiBGSUxFOiB0 Y211L2hlbHBlci5jOjgzOgorXkleSWRhdGFbNF0gPSAweDAwOyQKCkVSUk9SOiBjb2RlIGluZGVu dCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzU5MzogRklMRTogdGNtdS9oZWxwZXIuYzo4NDoKK15J XklkYXRhWzVdID0gMHg4MDskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0 YWJzCiM1OTQ6IEZJTEU6IHRjbXUvaGVscGVyLmM6ODU6CiteSV5JZGF0YVs2XSA9IDB4ODM7JAoK RVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNTk1OiBGSUxFOiB0Y211 L2hlbHBlci5jOjg2OgorXkleSWRhdGFbN10gPSAweGIwOyQKCkVSUk9SOiBjb2RlIGluZGVudCBz aG91bGQgbmV2ZXIgdXNlIHRhYnMKIzU5NjogRklMRTogdGNtdS9oZWxwZXIuYzo4NzoKK15JXklk YXRhWzhdID0gMHhiMTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJz CiM1OTc6IEZJTEU6IHRjbXUvaGVscGVyLmM6ODg6CiteSV5JZGF0YVs5XSA9IDB4YjI7JAoKRVJS T1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNTk5OiBGSUxFOiB0Y211L2hl bHBlci5jOjkwOgorXkleSWRhdGFbM10gPSA2OyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQg bmV2ZXIgdXNlIHRhYnMKIzYwMTogRklMRTogdGNtdS9oZWxwZXIuYzo5MjoKK15JXkl0Y211X21l bWNweV9pbnRvX2lvdmVjKGlvdmVjLCBpb3ZfY250LCBkYXRhLCBzaXplb2YoZGF0YSkpOyQKCkVS Uk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzYwMjogRklMRTogdGNtdS9o ZWxwZXIuYzo5MzoKK15JXklyZXR1cm4gVENNVV9TVFNfT0s7JAoKRVJST1I6IGNvZGUgaW5kZW50 IHNob3VsZCBuZXZlciB1c2UgdGFicwojNjAzOiBGSUxFOiB0Y211L2hlbHBlci5jOjk0OgorXkl9 JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNjA0OiBGSUxFOiB0 Y211L2hlbHBlci5jOjk1OgorXklicmVhazskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5l dmVyIHVzZSB0YWJzCiM2MDU6IEZJTEU6IHRjbXUvaGVscGVyLmM6OTY6CiteSWNhc2UgMHg4MDog LyogVW5pdCBTZXJpYWwgTnVtYmVyICovJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZl ciB1c2UgdGFicwojNjA2OiBGSUxFOiB0Y211L2hlbHBlci5jOjk3OgorXkl7JAoKRVJST1I6IGNv ZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNjA3OiBGSUxFOiB0Y211L2hlbHBlci5j Ojk4OgorXkleSWNoYXIgZGF0YVs1MTJdOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2 ZXIgdXNlIHRhYnMKIzYwODogRklMRTogdGNtdS9oZWxwZXIuYzo5OToKK15JXkljaGFyICp3d247 JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNjA5OiBGSUxFOiB0 Y211L2hlbHBlci5jOjEwMDoKK15JXkl1aW50MzJfdCBsZW47JAoKRVJST1I6IGNvZGUgaW5kZW50 IHNob3VsZCBuZXZlciB1c2UgdGFicwojNjExOiBGSUxFOiB0Y211L2hlbHBlci5jOjEwMjoKK15J XkltZW1zZXQoZGF0YSwgMCwgc2l6ZW9mKGRhdGEpKTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hv dWxkIG5ldmVyIHVzZSB0YWJzCiM2MTM6IEZJTEU6IHRjbXUvaGVscGVyLmM6MTA0OgorXkleSWRh dGFbMV0gPSAweDgwOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMK IzYxNTogRklMRTogdGNtdS9oZWxwZXIuYzoxMDY6CiteSV5Jd3duID0gdGNtdV9jZmdmc19kZXZf Z2V0X3d3bihkZXYpOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMK IzYxNjogRklMRTogdGNtdS9oZWxwZXIuYzoxMDc6CiteSV5JaWYgKCF3d24pJAoKRVJST1I6IGJy YWNlcyB7fSBhcmUgbmVjZXNzYXJ5IGZvciBhbGwgYXJtcyBvZiB0aGlzIHN0YXRlbWVudAojNjE2 OiBGSUxFOiB0Y211L2hlbHBlci5jOjEwNzoKKyAgICAgICAgICAgICAgIGlmICghd3duKQpbLi4u XQoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNjE3OiBGSUxFOiB0 Y211L2hlbHBlci5jOjEwODoKK15JXkleSXJldHVybiBUQ01VX1NUU19IV19FUlI7JAoKRVJST1I6 IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNjE5OiBGSUxFOiB0Y211L2hlbHBl ci5jOjExMDoKK15JXkkvKiQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRh YnMKIzYyMDogRklMRTogdGNtdS9oZWxwZXIuYzoxMTE6CiteSV5JICogVGhlIG1heGltdW0gbGVu Z3RoIG9mIHRoZSB1bml0X3NlcmlhbCBoYXMgbGltaXRlZCQKCkVSUk9SOiBjb2RlIGluZGVudCBz aG91bGQgbmV2ZXIgdXNlIHRhYnMKIzYyMTogRklMRTogdGNtdS9oZWxwZXIuYzoxMTI6CiteSV5J ICogdG8gMjU0IEJ5dGVzIGluIGtlcm5lbCwgc28gaGVyZSBsaW1pdCB0byAyNTYgQnl0ZXMkCgpF UlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM2MjI6IEZJTEU6IHRjbXUv aGVscGVyLmM6MTEzOgorXkleSSAqIHdpbGwgYmUgZW5vdWdoLiQKCkVSUk9SOiBjb2RlIGluZGVu dCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzYyMzogRklMRTogdGNtdS9oZWxwZXIuYzoxMTQ6Cite SV5JICovJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNjI0OiBG SUxFOiB0Y211L2hlbHBlci5jOjExNToKK15JXklsZW4gPSBzbnByaW50ZigmZGF0YVs0XSwgMjU2 LCAiJXMiLCB3d24pOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMK IzYyNTogRklMRTogdGNtdS9oZWxwZXIuYzoxMTY6CiteSV5JZGF0YVszXSA9IGxlbiArIDE7JAoK RVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNjI3OiBGSUxFOiB0Y211 L2hlbHBlci5jOjExODoKK15JXkl0Y211X21lbWNweV9pbnRvX2lvdmVjKGlvdmVjLCBpb3ZfY250 LCBkYXRhLCBzaXplb2YoZGF0YSkpOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIg dXNlIHRhYnMKIzYyOTogRklMRTogdGNtdS9oZWxwZXIuYzoxMjA6CiteSV5JZnJlZSh3d24pOyQK CkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzYzMDogRklMRTogdGNt dS9oZWxwZXIuYzoxMjE6CiteSV5JcmV0dXJuIFRDTVVfU1RTX09LOyQKCkVSUk9SOiBjb2RlIGlu ZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzYzMTogRklMRTogdGNtdS9oZWxwZXIuYzoxMjI6 CiteSX0kCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM2MzI6IEZJ TEU6IHRjbXUvaGVscGVyLmM6MTIzOgorXklicmVhazskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hv dWxkIG5ldmVyIHVzZSB0YWJzCiM2MzM6IEZJTEU6IHRjbXUvaGVscGVyLmM6MTI0OgorXkljYXNl IDB4ODM6IC8qIERldmljZSBpZGVudGlmaWNhdGlvbiAqLyQKCkVSUk9SOiBjb2RlIGluZGVudCBz aG91bGQgbmV2ZXIgdXNlIHRhYnMKIzYzNDogRklMRTogdGNtdS9oZWxwZXIuYzoxMjU6CiteSXsk CgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM2MzU6IEZJTEU6IHRj bXUvaGVscGVyLmM6MTI2OgorXkleSWNoYXIgZGF0YVs1MTJdOyQKCkVSUk9SOiBjb2RlIGluZGVu dCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzYzNjogRklMRTogdGNtdS9oZWxwZXIuYzoxMjc6Cite SV5JY2hhciAqcHRyLCAqcCwgKnd3bjskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVy IHVzZSB0YWJzCiM2Mzc6IEZJTEU6IHRjbXUvaGVscGVyLmM6MTI4OgorXkleSXNpemVfdCBsZW4s IHVzZWQgPSAwOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzYz ODogRklMRTogdGNtdS9oZWxwZXIuYzoxMjk6CiteSV5JdWludDE2X3QgKnRvdF9sZW4gPSAodWlu dDE2X3QqKSAmZGF0YVsyXTskCgpFUlJPUjogIihmb28qKSIgc2hvdWxkIGJlICIoZm9vICopIgoj NjM4OiBGSUxFOiB0Y211L2hlbHBlci5jOjEyOToKKyAgICAgICAgICAgICAgIHVpbnQxNl90ICp0 b3RfbGVuID0gKHVpbnQxNl90KikgJmRhdGFbMl07CgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxk IG5ldmVyIHVzZSB0YWJzCiM2Mzk6IEZJTEU6IHRjbXUvaGVscGVyLmM6MTMwOgorXkleSWJvb2wg bmV4dDskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM2NDA6IEZJ TEU6IHRjbXUvaGVscGVyLmM6MTMxOgorXkleSWludCBpOyQKCkVSUk9SOiBjb2RlIGluZGVudCBz aG91bGQgbmV2ZXIgdXNlIHRhYnMKIzY0MjogRklMRTogdGNtdS9oZWxwZXIuYzoxMzM6CiteSV5J bWVtc2V0KGRhdGEsIDAsIHNpemVvZihkYXRhKSk7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3Vs ZCBuZXZlciB1c2UgdGFicwojNjQ0OiBGSUxFOiB0Y211L2hlbHBlci5jOjEzNToKK15JXklkYXRh WzFdID0gMHg4MzskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM2 NDY6IEZJTEU6IHRjbXUvaGVscGVyLmM6MTM3OgorXkleSXd3biA9IHRjbXVfY2ZnZnNfZGV2X2dl dF93d24oZGV2KTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM2 NDc6IEZJTEU6IHRjbXUvaGVscGVyLmM6MTM4OgorXkleSWlmICghd3duKSQKCkVSUk9SOiBicmFj ZXMge30gYXJlIG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzY0Nzog RklMRTogdGNtdS9oZWxwZXIuYzoxMzg6CisgICAgICAgICAgICAgICBpZiAoIXd3bikKWy4uLl0K CkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzY0ODogRklMRTogdGNt dS9oZWxwZXIuYzoxMzk6CiteSV5JXklyZXR1cm4gVENNVV9TVFNfSFdfRVJSOyQKCkVSUk9SOiBj b2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzY1MDogRklMRTogdGNtdS9oZWxwZXIu YzoxNDE6CiteSV5JcHRyID0gJmRhdGFbNF07JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBu ZXZlciB1c2UgdGFicwojNjUyOiBGSUxFOiB0Y211L2hlbHBlci5jOjE0MzoKK15JXkkvKiAxLzU6 IFQxMCBWZW5kb3IgaWQgKi8kCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0 YWJzCiM2NTM6IEZJTEU6IHRjbXUvaGVscGVyLmM6MTQ0OgorXkleSXB0clswXSA9IDI7IC8qIGNv ZGUgc2V0OiBBU0NJSSAqLyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRh YnMKIzY1NDogRklMRTogdGNtdS9oZWxwZXIuYzoxNDU6CiteSV5JcHRyWzFdID0gMTsgLyogaWRl bnRpZmllcjogVDEwIHZlbmRvciBpZCAqLyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2 ZXIgdXNlIHRhYnMKIzY1NTogRklMRTogdGNtdS9oZWxwZXIuYzoxNDY6CiteSV5JbWVtY3B5KCZw dHJbNF0sICJMSU8tT1JHICIsIDgpOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIg dXNlIHRhYnMKIzY1NjogRklMRTogdGNtdS9oZWxwZXIuYzoxNDc6CiteSV5JbGVuID0gc25wcmlu dGYoJnB0clsxMl0sIHNpemVvZihkYXRhKSAtIDE2LCAiJXMiLCB3d24pOyQKCkVSUk9SOiBjb2Rl IGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzY1ODogRklMRTogdGNtdS9oZWxwZXIuYzox NDk6CiteSV5JcHRyWzNdID0gOCArIGxlbiArIDE7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3Vs ZCBuZXZlciB1c2UgdGFicwojNjU5OiBGSUxFOiB0Y211L2hlbHBlci5jOjE1MDoKK15JXkl1c2Vk ICs9ICh1aW50OF90KXB0clszXSArIDQ7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZl ciB1c2UgdGFicwojNjYwOiBGSUxFOiB0Y211L2hlbHBlci5jOjE1MToKK15JXklwdHIgKz0gdXNl ZDskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM2NjI6IEZJTEU6 IHRjbXUvaGVscGVyLmM6MTUzOgorXkleSS8qIDIvNTogTkFBIGJpbmFyeSAqLyQKCkVSUk9SOiBj b2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzY2MzogRklMRTogdGNtdS9oZWxwZXIu YzoxNTQ6CiteSV5JcHRyWzBdID0gMTsgLyogY29kZSBzZXQ6IGJpbmFyeSAqLyQKCkVSUk9SOiBj b2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzY2NDogRklMRTogdGNtdS9oZWxwZXIu YzoxNTU6CiteSV5JcHRyWzFdID0gMzsgLyogaWRlbnRpZmllcjogTkFBICovJAoKV0FSTklORzog bGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzY2NTogRklMRTogdGNtdS9oZWxwZXIuYzoxNTY6Cisg ICAgICAgICAgICAgICBwdHJbM10gPSAxNjsgLyogYm9keSBsZW5ndGggZm9yIG5hYSByZWdpc3Rl cmVkIGV4dGVuZGVkIGZvcm1hdCAqLwoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1 c2UgdGFicwojNjY1OiBGSUxFOiB0Y211L2hlbHBlci5jOjE1NjoKK15JXklwdHJbM10gPSAxNjsg LyogYm9keSBsZW5ndGggZm9yIG5hYSByZWdpc3RlcmVkIGV4dGVuZGVkIGZvcm1hdCAqLyQKCkVS Uk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzY2NzogRklMRTogdGNtdS9o ZWxwZXIuYzoxNTg6CiteSV5JLyokCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVz ZSB0YWJzCiM2Njg6IEZJTEU6IHRjbXUvaGVscGVyLmM6MTU5OgorXkleSSAqIFNldCB0eXBlIDYg YW5kIHVzZSBPcGVuRmFicmljcyBJRUVFIENvbXBhbnkgSUQ6IDAwIDE0IDA1JAoKRVJST1I6IGNv ZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNjY5OiBGSUxFOiB0Y211L2hlbHBlci5j OjE2MDoKK15JXkkgKi8kCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJz CiM2NzA6IEZJTEU6IHRjbXUvaGVscGVyLmM6MTYxOgorXkleSXB0cls0XSA9IDB4NjA7JAoKRVJS T1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNjcxOiBGSUxFOiB0Y211L2hl bHBlci5jOjE2MjoKK15JXklwdHJbNV0gPSAweDAxOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91 bGQgbmV2ZXIgdXNlIHRhYnMKIzY3MjogRklMRTogdGNtdS9oZWxwZXIuYzoxNjM6CiteSV5JcHRy WzZdID0gMHg0MDskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM2 NzM6IEZJTEU6IHRjbXUvaGVscGVyLmM6MTY0OgorXkleSXB0cls3XSA9IDB4NTA7JAoKRVJST1I6 IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNjc1OiBGSUxFOiB0Y211L2hlbHBl ci5jOjE2NjoKK15JXkkvKiQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRh YnMKIzY3NjogRklMRTogdGNtdS9oZWxwZXIuYzoxNjc6CiteSV5JICogRmlsbCBpbiB0aGUgcmVz dCB3aXRoIGEgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIFdXTiQKCkVSUk9SOiBjb2RlIGluZGVu dCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzY3NzogRklMRTogdGNtdS9oZWxwZXIuYzoxNjg6Cite SV5JICokCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM2Nzg6IEZJ TEU6IHRjbXUvaGVscGVyLmM6MTY5OgorXkleSSAqIFRoaXMgaW1wbGVtZW50YXRpb24gb25seSB1 c2VzIGEgbmliYmxlIG91dCBvZiBldmVyeSBieXRlIG9mJAoKRVJST1I6IGNvZGUgaW5kZW50IHNo b3VsZCBuZXZlciB1c2UgdGFicwojNjc5OiBGSUxFOiB0Y211L2hlbHBlci5jOjE3MDoKK15JXkkg KiBXV04sIGJ1dCB0aGlzIGlzIHdoYXQgdGhlIGtlcm5lbCBkb2VzLCBhbmQgaXQncyBuaWNlIGZv ciBvdXIkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM2ODA6IEZJ TEU6IHRjbXUvaGVscGVyLmM6MTcxOgorXkleSSAqIHZhbHVlcyB0byBtYXRjaC4kCgpFUlJPUjog Y29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM2ODE6IEZJTEU6IHRjbXUvaGVscGVy LmM6MTcyOgorXkleSSAqLyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRh YnMKIzY4MjogRklMRTogdGNtdS9oZWxwZXIuYzoxNzM6CiteSV5JbmV4dCA9IHRydWU7JAoKRVJS T1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNjgzOiBGSUxFOiB0Y211L2hl bHBlci5jOjE3NDoKK15JXklmb3IgKHAgPSB3d24sIGkgPSA3OyAqcCAmJiBpIDwgMjA7IHArKykg eyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzY4NDogRklMRTog dGNtdS9oZWxwZXIuYzoxNzU6CiteSV5JXkl1aW50OF90IHZhbDskCgpFUlJPUjogY29kZSBpbmRl bnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM2ODY6IEZJTEU6IHRjbXUvaGVscGVyLmM6MTc3Ogor XkleSV5JaWYgKCFjaGFyX3RvX2hleCgmdmFsLCAqcCkpJAoKRVJST1I6IGJyYWNlcyB7fSBhcmUg bmVjZXNzYXJ5IGZvciBhbGwgYXJtcyBvZiB0aGlzIHN0YXRlbWVudAojNjg2OiBGSUxFOiB0Y211 L2hlbHBlci5jOjE3NzoKKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGFyX3RvX2hleCgm dmFsLCAqcCkpClsuLi5dCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJz CiM2ODc6IEZJTEU6IHRjbXUvaGVscGVyLmM6MTc4OgorXkleSV5JXkljb250aW51ZTskCgpFUlJP UjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM2ODk6IEZJTEU6IHRjbXUvaGVs cGVyLmM6MTgwOgorXkleSV5JaWYgKG5leHQpIHskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxk IG5ldmVyIHVzZSB0YWJzCiM2OTA6IEZJTEU6IHRjbXUvaGVscGVyLmM6MTgxOgorXkleSV5JXklu ZXh0ID0gZmFsc2U7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwoj NjkxOiBGSUxFOiB0Y211L2hlbHBlci5jOjE4MjoKK15JXkleSV5JcHRyW2krK10gfD0gdmFsOyQK CkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzY5MjogRklMRTogdGNt dS9oZWxwZXIuYzoxODM6CiteSV5JXkl9IGVsc2UgeyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91 bGQgbmV2ZXIgdXNlIHRhYnMKIzY5MzogRklMRTogdGNtdS9oZWxwZXIuYzoxODQ6CiteSV5JXkle SW5leHQgPSB0cnVlOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMK IzY5NDogRklMRTogdGNtdS9oZWxwZXIuYzoxODU6CiteSV5JXkleSXB0cltpXSA9IHZhbCA8PCA0 OyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzY5NTogRklMRTog dGNtdS9oZWxwZXIuYzoxODY6CiteSV5JXkl9JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBu ZXZlciB1c2UgdGFicwojNjk2OiBGSUxFOiB0Y211L2hlbHBlci5jOjE4NzoKK15JXkl9JAoKRVJS T1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNjk4OiBGSUxFOiB0Y211L2hl bHBlci5jOjE4OToKK15JXkl1c2VkICs9IDIwOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQg bmV2ZXIgdXNlIHRhYnMKIzY5OTogRklMRTogdGNtdS9oZWxwZXIuYzoxOTA6CiteSV5JcHRyICs9 IDIwOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzcwMTogRklM RTogdGNtdS9oZWxwZXIuYzoxOTI6CiteSV5JLyogMy82OiBWZW5kb3Igc3BlY2lmaWMgKi8kCgpF UlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM3MDI6IEZJTEU6IHRjbXUv aGVscGVyLmM6MTkzOgorXkleSXB0clswXSA9IDI7IC8qIGNvZGUgc2V0OiBBU0NJSSAqLyQKCkVS Uk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzcwMzogRklMRTogdGNtdS9o ZWxwZXIuYzoxOTQ6CiteSV5JcHRyWzFdID0gMDsgLyogaWRlbnRpZmllcjogdmVuZG9yLXNwZWNp ZmljICovJAoKRVJST1I6IGxpbmUgb3ZlciA5MCBjaGFyYWN0ZXJzCiM3MDU6IEZJTEU6IHRjbXUv aGVscGVyLmM6MTk2OgorICAgICAgICAgICAgICAgbGVuID0gc25wcmludGYoJnB0cls0XSwgc2l6 ZW9mKGRhdGEpIC0gdXNlZCAtIDQsICIlcyIsIHRjbXVfZGV2X2dldF9jZmdzdHJpbmcoZGV2KSk7 CgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM3MDU6IEZJTEU6IHRj bXUvaGVscGVyLmM6MTk2OgorXkleSWxlbiA9IHNucHJpbnRmKCZwdHJbNF0sIHNpemVvZihkYXRh KSAtIHVzZWQgLSA0LCAiJXMiLCB0Y211X2Rldl9nZXRfY2Znc3RyaW5nKGRldikpOyQKCkVSUk9S OiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzcwNjogRklMRTogdGNtdS9oZWxw ZXIuYzoxOTc6CiteSV5JcHRyWzNdID0gbGVuICsgMTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hv dWxkIG5ldmVyIHVzZSB0YWJzCiM3MDg6IEZJTEU6IHRjbXUvaGVscGVyLmM6MTk5OgorXkleSXVz ZWQgKz0gKHVpbnQ4X3QpcHRyWzNdICsgNDskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5l dmVyIHVzZSB0YWJzCiM3MDk6IEZJTEU6IHRjbXUvaGVscGVyLmM6MjAwOgorXkleSXB0ciArPSAo dWludDhfdClwdHJbM10gKyA0OyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNl IHRhYnMKIzcxMTogRklMRTogdGNtdS9oZWxwZXIuYzoyMDI6CiteSV5JLyogRG9uZSB3aXRoIGRl c2NyaXB0b3IgbGlzdCAqLyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRh YnMKIzcxMzogRklMRTogdGNtdS9oZWxwZXIuYzoyMDQ6CiteSV5JKnRvdF9sZW4gPSBodG9iZTE2 KHVzZWQpOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzcxNTog RklMRTogdGNtdS9oZWxwZXIuYzoyMDY6CiteSV5JdGNtdV9tZW1jcHlfaW50b19pb3ZlYyhpb3Zl YywgaW92X2NudCwgZGF0YSwgdXNlZCArIDQpOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQg bmV2ZXIgdXNlIHRhYnMKIzcxNzogRklMRTogdGNtdS9oZWxwZXIuYzoyMDg6CiteSV5JZnJlZSh3 d24pOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzcxODogRklM RTogdGNtdS9oZWxwZXIuYzoyMDk6CiteSV5Jd3duID0gTlVMTDskCgpFUlJPUjogY29kZSBpbmRl bnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM3MjA6IEZJTEU6IHRjbXUvaGVscGVyLmM6MjExOgor XkleSXJldHVybiBUQ01VX1NUU19PSzskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVy IHVzZSB0YWJzCiM3MjE6IEZJTEU6IHRjbXUvaGVscGVyLmM6MjEyOgorXkl9JAoKRVJST1I6IGNv ZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNzIyOiBGSUxFOiB0Y211L2hlbHBlci5j OjIxMzoKK15JYnJlYWs7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFi cwojNzIzOiBGSUxFOiB0Y211L2hlbHBlci5jOjIxNDoKK15JY2FzZSAweGIwOiAvKiBCbG9jayBM aW1pdHMgKi8kCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM3MjQ6 IEZJTEU6IHRjbXUvaGVscGVyLmM6MjE1OgorXkl7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3Vs ZCBuZXZlciB1c2UgdGFicwojNzI1OiBGSUxFOiB0Y211L2hlbHBlci5jOjIxNjoKK15JXkljaGFy IGRhdGFbNjRdOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzcy NjogRklMRTogdGNtdS9oZWxwZXIuYzoyMTc6CiteSV5JdWludDMyX3QgbWF4X3hmZXJfbGVuZ3Ro OyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzcyNzogRklMRTog dGNtdS9oZWxwZXIuYzoyMTg6CiteSV5JdWludDE2X3QgdmFsMTY7JAoKRVJST1I6IGNvZGUgaW5k ZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNzI4OiBGSUxFOiB0Y211L2hlbHBlci5jOjIxOToK K15JXkl1aW50MzJfdCB2YWwzMjskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVz ZSB0YWJzCiM3MzA6IEZJTEU6IHRjbXUvaGVscGVyLmM6MjIxOgorXkleSW1lbXNldChkYXRhLCAw LCBzaXplb2YoZGF0YSkpOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRh YnMKIzczMjogRklMRTogdGNtdS9oZWxwZXIuYzoyMjM6CiteSV5JZGF0YVsxXSA9IDB4YjA7JAoK RVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNzM0OiBGSUxFOiB0Y211 L2hlbHBlci5jOjIyNToKK15JXkl2YWwxNiA9IGh0b2JlMTYoMHgzYyk7JAoKRVJST1I6IGNvZGUg aW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNzM1OiBGSUxFOiB0Y211L2hlbHBlci5jOjIy NjoKK15JXkltZW1jcHkoJmRhdGFbMl0sICZ2YWwxNiwgMik7JAoKRVJST1I6IGNvZGUgaW5kZW50 IHNob3VsZCBuZXZlciB1c2UgdGFicwojNzM3OiBGSUxFOiB0Y211L2hlbHBlci5jOjIyODoKK15J XkkvKiBXU05aID0gMTogdGhlIGRldmljZSBzZXJ2ZXIgd29uJ3Qgc3VwcG9ydCBhIHZhbHVlIG9m IHplcm8kCgpXQVJOSU5HOiBCbG9jayBjb21tZW50cyB1c2UgYSBsZWFkaW5nIC8qIG9uIGEgc2Vw YXJhdGUgbGluZQojNzM3OiBGSUxFOiB0Y211L2hlbHBlci5jOjIyODoKKyAgICAgICAgICAgICAg IC8qIFdTTlogPSAxOiB0aGUgZGV2aWNlIHNlcnZlciB3b24ndCBzdXBwb3J0IGEgdmFsdWUgb2Yg emVybwoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNzM4OiBGSUxF OiB0Y211L2hlbHBlci5jOjIyOToKK15JXkkgKiBpbiB0aGUgTlVNQkVSIE9GIExPR0lDQUwgQkxP Q0tTIGZpZWxkIGluIHRoZSBXUklURSBTQU1FJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBu ZXZlciB1c2UgdGFicwojNzM5OiBGSUxFOiB0Y211L2hlbHBlci5jOjIzMDoKK15JXkkgKiBjb21t YW5kIENEQnMkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM3NDA6 IEZJTEU6IHRjbXUvaGVscGVyLmM6MjMxOgorXkleSSAqLyQKCkVSUk9SOiBjb2RlIGluZGVudCBz aG91bGQgbmV2ZXIgdXNlIHRhYnMKIzc0MTogRklMRTogdGNtdS9oZWxwZXIuYzoyMzI6CiteSV5J ZGF0YVs0XSA9IDB4MDE7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFi cwojNzQzOiBGSUxFOiB0Y211L2hlbHBlci5jOjIzNDoKK15JXkkvKiQKCkVSUk9SOiBjb2RlIGlu ZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzc0NDogRklMRTogdGNtdS9oZWxwZXIuYzoyMzU6 CiteSV5JICogRGFlbW9ucyBsaWtlIHJ1bm5lciBtYXkgb3ZlcnJpZGUgdGhlIHVzZXIgcmVxdWVz dGVkJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNzQ1OiBGSUxF OiB0Y211L2hlbHBlci5jOjIzNjoKK15JXkkgKiB2YWx1ZSBkdWUgdG8gZGV2aWNlIHNwZWNpZmlj IGxpbWl0cy4kCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM3NDY6 IEZJTEU6IHRjbXUvaGVscGVyLmM6MjM3OgorXkleSSAqLyQKCkVSUk9SOiBjb2RlIGluZGVudCBz aG91bGQgbmV2ZXIgdXNlIHRhYnMKIzc0NzogRklMRTogdGNtdS9oZWxwZXIuYzoyMzg6CiteSV5J bWF4X3hmZXJfbGVuZ3RoID0gdGNtdV9kZXZfZ2V0X21heF94ZmVyX2xlbihkZXYpOyQKCkVSUk9S OiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzc0OTogRklMRTogdGNtdS9oZWxw ZXIuYzoyNDA6CiteSV5JdmFsMzIgPSBodG9iZTMyKG1heF94ZmVyX2xlbmd0aCk7JAoKRVJST1I6 IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNzUwOiBGSUxFOiB0Y211L2hlbHBl ci5jOjI0MToKK15JXkkvKiBNYXggeGZlciBsZW5ndGggKi8kCgpFUlJPUjogY29kZSBpbmRlbnQg c2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM3NTE6IEZJTEU6IHRjbXUvaGVscGVyLmM6MjQyOgorXkle SW1lbWNweSgmZGF0YVs4XSwgJnZhbDMyLCA0KTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxk IG5ldmVyIHVzZSB0YWJzCiM3NTI6IEZJTEU6IHRjbXUvaGVscGVyLmM6MjQzOgorXkleSS8qIE9w dGltYWwgeGZlciBsZW5ndGggKi8kCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVz ZSB0YWJzCiM3NTM6IEZJTEU6IHRjbXUvaGVscGVyLmM6MjQ0OgorXkleSW1lbWNweSgmZGF0YVsx Ml0sICZ2YWwzMiwgNCk7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFi cwojNzU1OiBGSUxFOiB0Y211L2hlbHBlci5jOjI0NjoKK15JXkl0Y211X21lbWNweV9pbnRvX2lv dmVjKGlvdmVjLCBpb3ZfY250LCBkYXRhLCBzaXplb2YoZGF0YSkpOyQKCkVSUk9SOiBjb2RlIGlu ZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzc1NzogRklMRTogdGNtdS9oZWxwZXIuYzoyNDg6 CiteSV5JcmV0dXJuIFRDTVVfU1RTX09LOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2 ZXIgdXNlIHRhYnMKIzc1ODogRklMRTogdGNtdS9oZWxwZXIuYzoyNDk6CiteSX0kCgpFUlJPUjog Y29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM3NTk6IEZJTEU6IHRjbXUvaGVscGVy LmM6MjUwOgorXklicmVhazskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0 YWJzCiM3NjA6IEZJTEU6IHRjbXUvaGVscGVyLmM6MjUxOgorXkljYXNlIDB4YjE6IC8qIEJsb2Nr IERldmljZSBDaGFyYWN0ZXJpc3RpY3MgVlBEIHBhZ2UgKi8kCgpFUlJPUjogY29kZSBpbmRlbnQg c2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM3NjE6IEZJTEU6IHRjbXUvaGVscGVyLmM6MjUyOgorXkl7 JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNzYyOiBGSUxFOiB0 Y211L2hlbHBlci5jOjI1MzoKK15JXkljaGFyIGRhdGFbNjRdOyQKCkVSUk9SOiBjb2RlIGluZGVu dCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzc2MzogRklMRTogdGNtdS9oZWxwZXIuYzoyNTQ6Cite SV5JdWludDE2X3QgdmFsMTY7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2Ug dGFicwojNzY1OiBGSUxFOiB0Y211L2hlbHBlci5jOjI1NjoKK15JXkltZW1zZXQoZGF0YSwgMCwg c2l6ZW9mKGRhdGEpKTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJz CiM3Njc6IEZJTEU6IHRjbXUvaGVscGVyLmM6MjU4OgorXkleSS8qJAoKRVJST1I6IGNvZGUgaW5k ZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNzY4OiBGSUxFOiB0Y211L2hlbHBlci5jOjI1OToK K15JXkkgKiBGcm9tIHNwYy01IFJldmlzaW9uIDE0LCBzZWN0aW9uIDYuNy4yIFN0YW5kYXJkIElO UVVJUlkgZGF0YSQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzc2 OTogRklMRTogdGNtdS9oZWxwZXIuYzoyNjA6CiteSV5JICogc2V0IHRoZSBkZXZpdmUgdHlwZSB0 byBEaXJlY3QgYWNjZXNzIGJsb2NrIGRldmljZS4kCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxk IG5ldmVyIHVzZSB0YWJzCiM3NzA6IEZJTEU6IHRjbXUvaGVscGVyLmM6MjYxOgorXkleSSAqLyQK CkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzc3MTogRklMRTogdGNt dS9oZWxwZXIuYzoyNjI6CiteSV5JZGF0YVswXSA9IDB4MDA7JAoKRVJST1I6IGNvZGUgaW5kZW50 IHNob3VsZCBuZXZlciB1c2UgdGFicwojNzczOiBGSUxFOiB0Y211L2hlbHBlci5jOjI2NDoKK15J XkkvKiBQQUdFIENPREUgKEIxaCkgKi8kCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVy IHVzZSB0YWJzCiM3NzQ6IEZJTEU6IHRjbXUvaGVscGVyLmM6MjY1OgorXkleSWRhdGFbMV0gPSAw eGIxOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzc3NjogRklM RTogdGNtdS9oZWxwZXIuYzoyNjc6CiteSV5JLyogUEFHRSBMRU5HVEggKDAwM0NoKSovJAoKRVJS T1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNzc3OiBGSUxFOiB0Y211L2hl bHBlci5jOjI2ODoKK15JXkl2YWwxNiA9IGh0b2JlMTYoMHgwMDNjKTskCgpFUlJPUjogY29kZSBp bmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM3Nzg6IEZJTEU6IHRjbXUvaGVscGVyLmM6MjY5 OgorXkleSW1lbWNweSgmZGF0YVsyXSwgJnZhbDE2LCAyKTskCgpFUlJPUjogY29kZSBpbmRlbnQg c2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM3ODA6IEZJTEU6IHRjbXUvaGVscGVyLmM6MjcxOgorXkle SWlmICh0Y211X2Rldl9nZXRfc29saWRfc3RhdGVfbWVkaWEoZGV2KSkgeyQKCkVSUk9SOiBjb2Rl IGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzc4MTogRklMRTogdGNtdS9oZWxwZXIuYzoy NzI6CiteSV5JXkl2YWwxNiA9IGh0b2JlMTYoMHgwMDAxKTskCgpFUlJPUjogY29kZSBpbmRlbnQg c2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM3ODI6IEZJTEU6IHRjbXUvaGVscGVyLmM6MjczOgorXkle SV5JbWVtY3B5KCZkYXRhWzRdLCAmdmFsMTYsIDIpOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91 bGQgbmV2ZXIgdXNlIHRhYnMKIzc4MzogRklMRTogdGNtdS9oZWxwZXIuYzoyNzQ6CiteSV5JfSQK CkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzc4NTogRklMRTogdGNt dS9oZWxwZXIuYzoyNzY6CiteSV5JdGNtdV9tZW1jcHlfaW50b19pb3ZlYyhpb3ZlYywgaW92X2Nu dCwgZGF0YSwgc2l6ZW9mKGRhdGEpKTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVy IHVzZSB0YWJzCiM3ODY6IEZJTEU6IHRjbXUvaGVscGVyLmM6Mjc3OgorXkleSXJldHVybiBUQ01V X1NUU19PSzskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM3ODc6 IEZJTEU6IHRjbXUvaGVscGVyLmM6Mjc4OgorXkl9JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3Vs ZCBuZXZlciB1c2UgdGFicwojNzg4OiBGSUxFOiB0Y211L2hlbHBlci5jOjI3OToKK15JYnJlYWs7 JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNzg5OiBGSUxFOiB0 Y211L2hlbHBlci5jOjI4MDoKK15JY2FzZSAweGIyOiAvKiBMb2dpY2FsIEJsb2NrIFByb3Zpc2lv bmluZyBWUEQgcGFnZSAqLyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRh YnMKIzc5MDogRklMRTogdGNtdS9oZWxwZXIuYzoyODE6CiteSXskCgpFUlJPUjogY29kZSBpbmRl bnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM3OTE6IEZJTEU6IHRjbXUvaGVscGVyLmM6MjgyOgor XkleSWNoYXIgZGF0YVs2NF07JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2Ug dGFicwojNzkyOiBGSUxFOiB0Y211L2hlbHBlci5jOjI4MzoKK15JXkl1aW50MTZfdCB2YWwxNjsk CgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM3OTQ6IEZJTEU6IHRj bXUvaGVscGVyLmM6Mjg1OgorXkleSW1lbXNldChkYXRhLCAwLCBzaXplb2YoZGF0YSkpOyQKCkVS Uk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzc5NjogRklMRTogdGNtdS9o ZWxwZXIuYzoyODc6CiteSV5JLyokCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVz ZSB0YWJzCiM3OTc6IEZJTEU6IHRjbXUvaGVscGVyLmM6Mjg4OgorXkleSSAqIEZyb20gc3BjLTUg UmV2aXNpb24gMTQsIHNlY3Rpb24gNi43LjIgU3RhbmRhcmQgSU5RVUlSWSBkYXRhJAoKRVJST1I6 IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNzk4OiBGSUxFOiB0Y211L2hlbHBl ci5jOjI4OToKK15JXkkgKiBzZXQgdGhlIGRldmljZSB0eXBlIHRvIERpcmVjdCBhY2Nlc3MgYmxv Y2sgZGV2aWNlLiQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzc5 OTogRklMRTogdGNtdS9oZWxwZXIuYzoyOTA6CiteSV5JICovJAoKRVJST1I6IGNvZGUgaW5kZW50 IHNob3VsZCBuZXZlciB1c2UgdGFicwojODAwOiBGSUxFOiB0Y211L2hlbHBlci5jOjI5MToKK15J XklkYXRhWzBdID0gMHgwMDskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0 YWJzCiM4MDI6IEZJTEU6IHRjbXUvaGVscGVyLmM6MjkzOgorXkleSS8qIFBBR0UgQ09ERSAoQjJo KSAqLyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzgwMzogRklM RTogdGNtdS9oZWxwZXIuYzoyOTQ6CiteSV5JZGF0YVsxXSA9IDB4YjI7JAoKRVJST1I6IGNvZGUg aW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojODA1OiBGSUxFOiB0Y211L2hlbHBlci5jOjI5 NjoKK15JXkkvKiQKCldBUk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiM4MDY6IEZJTEU6 IHRjbXUvaGVscGVyLmM6Mjk3OgorICAgICAgICAgICAgICAgICogUEFHRSBMRU5HVEggZmllbGQ6 IFBST1ZJU0lPTklORyBHUk9VUCBERVNDUklQVE9SIGZpZWxkIHdpbGwgYmUKCkVSUk9SOiBjb2Rl IGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzgwNjogRklMRTogdGNtdS9oZWxwZXIuYzoy OTc6CiteSV5JICogUEFHRSBMRU5HVEggZmllbGQ6IFBST1ZJU0lPTklORyBHUk9VUCBERVNDUklQ VE9SIGZpZWxkIHdpbGwgYmUkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0 YWJzCiM4MDc6IEZJTEU6IHRjbXUvaGVscGVyLmM6Mjk4OgorXkleSSAqIG5vdCBwcmVzZW50LiQK CkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzgwODogRklMRTogdGNt dS9oZWxwZXIuYzoyOTk6CiteSV5JICovJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZl ciB1c2UgdGFicwojODA5OiBGSUxFOiB0Y211L2hlbHBlci5jOjMwMDoKK15JXkl2YWwxNiA9IGh0 b2JlMTYoMHgwMDA0KTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJz CiM4MTA6IEZJTEU6IHRjbXUvaGVscGVyLmM6MzAxOgorXkleSW1lbWNweSgmZGF0YVsyXSwgJnZh bDE2LCAyKTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM4MTI6 IEZJTEU6IHRjbXUvaGVscGVyLmM6MzAzOgorXkleSS8qJAoKRVJST1I6IGNvZGUgaW5kZW50IHNo b3VsZCBuZXZlciB1c2UgdGFicwojODEzOiBGSUxFOiB0Y211L2hlbHBlci5jOjMwNDoKK15JXkkg KiBUaGUgbG9naWNhbCBibG9jayBwcm92aXNpb25pbmcgcmVhZCB6ZXJvcyAoTEJQUlopIGZpZWxk LiQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzgxNDogRklMRTog dGNtdS9oZWxwZXIuYzozMDU6CiteSV5JICokCgpXQVJOSU5HOiBsaW5lIG92ZXIgODAgY2hhcmFj dGVycwojODE1OiBGSUxFOiB0Y211L2hlbHBlci5jOjMwNjoKKyAgICAgICAgICAgICAgICAqIFRo ZSBsb2dpY2FsIGJsb2NrIGRhdGEgcmVwcmVzZW50ZWQgYnkgdW5tYXBwZWQgTEJBcyBpcyBzZXQg dG8gemVyb3MKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzgxNTog RklMRTogdGNtdS9oZWxwZXIuYzozMDY6CiteSV5JICogVGhlIGxvZ2ljYWwgYmxvY2sgZGF0YSBy ZXByZXNlbnRlZCBieSB1bm1hcHBlZCBMQkFzIGlzIHNldCB0byB6ZXJvcyQKCkVSUk9SOiBjb2Rl IGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzgxNjogRklMRTogdGNtdS9oZWxwZXIuYzoz MDc6CiteSV5JICovJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwoj ODE3OiBGSUxFOiB0Y211L2hlbHBlci5jOjMwODoKK15JXklkYXRhWzVdID0gMHgwNDskCgpFUlJP UjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM4MTk6IEZJTEU6IHRjbXUvaGVs cGVyLmM6MzEwOgorXkleSXRjbXVfbWVtY3B5X2ludG9faW92ZWMoaW92ZWMsIGlvdl9jbnQsIGRh dGEsIHNpemVvZihkYXRhKSk7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2Ug dGFicwojODIwOiBGSUxFOiB0Y211L2hlbHBlci5jOjMxMToKK15JXklyZXR1cm4gVENNVV9TVFNf T0s7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojODIxOiBGSUxF OiB0Y211L2hlbHBlci5jOjMxMjoKK15JfSQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2 ZXIgdXNlIHRhYnMKIzgyMjogRklMRTogdGNtdS9oZWxwZXIuYzozMTM6CiteSWJyZWFrOyQKCkVS Uk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzgyMzogRklMRTogdGNtdS9o ZWxwZXIuYzozMTQ6CiteSWRlZmF1bHQ6JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZl ciB1c2UgdGFicwojODI0OiBGSUxFOiB0Y211L2hlbHBlci5jOjMxNToKK15JXkllcnJvcl9yZXBv cnQoIlZpdGFsIHByb2R1Y3QgZGF0YSBwYWdlIGNvZGUgMHgleCBub3Qgc3VwcG9ydFxuIiwkCgpF UlJPUjogRXJyb3IgbWVzc2FnZXMgc2hvdWxkIG5vdCBjb250YWluIG5ld2xpbmVzCiM4MjQ6IEZJ TEU6IHRjbXUvaGVscGVyLmM6MzE1OgorICAgICAgICAgICAgICAgZXJyb3JfcmVwb3J0KCJWaXRh bCBwcm9kdWN0IGRhdGEgcGFnZSBjb2RlIDB4JXggbm90IHN1cHBvcnRcbiIsCgpFUlJPUjogY29k ZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM4MjU6IEZJTEU6IHRjbXUvaGVscGVyLmM6 MzE2OgorXkleSV5JICAgICBjZGJbMl0pOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2 ZXIgdXNlIHRhYnMKIzgyNjogRklMRTogdGNtdS9oZWxwZXIuYzozMTc6CiteSV5JcmV0dXJuIFRD TVVfU1RTX0lOVkFMSURfQ0RCOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNl IHRhYnMKIzgyNzogRklMRTogdGNtdS9oZWxwZXIuYzozMTg6CiteSX0kCgpFUlJPUjogY29kZSBp bmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM4MzQ6IEZJTEU6IHRjbXUvaGVscGVyLmM6MzI1 OgorXklzdHJ1Y3QgdGNtdV9kZXZpY2UgKmRldiwkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxk IG5ldmVyIHVzZSB0YWJzCiM4MzU6IEZJTEU6IHRjbXUvaGVscGVyLmM6MzI2OgorXkl1aW50OF90 ICpjZGIsJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojODM2OiBG SUxFOiB0Y211L2hlbHBlci5jOjMyNzoKK15Jc3RydWN0IGlvdmVjICppb3ZlYywkCgpFUlJPUjog Y29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM4Mzc6IEZJTEU6IHRjbXUvaGVscGVy LmM6MzI4OgorXklzaXplX3QgaW92X2NudCkkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5l dmVyIHVzZSB0YWJzCiM4Mzk6IEZJTEU6IHRjbXUvaGVscGVyLmM6MzMwOgorXklpZiAoIShjZGJb MV0gJiAweDAxKSkgeyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMK Izg0MDogRklMRTogdGNtdS9oZWxwZXIuYzozMzE6CiteSV5JaWYgKCFjZGJbMl0pJAoKRVJST1I6 IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojODQxOiBGSUxFOiB0Y211L2hlbHBl ci5jOjMzMjoKK15JXkleSXJldHVybiB0Y211X2VtdWxhdGVfc3RkX2lucXVpcnkoY2RiLCBpb3Zl YywkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM4NDI6IEZJTEU6 IHRjbXUvaGVscGVyLmM6MzMzOgorXkleSV5JXkleSV5JXklpb3ZfY250KTskCgpFUlJPUjogY29k ZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM4NDM6IEZJTEU6IHRjbXUvaGVscGVyLmM6 MzM0OgorXkleSWVsc2UkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJz CiM4NDQ6IEZJTEU6IHRjbXUvaGVscGVyLmM6MzM1OgorXkleSV5JcmV0dXJuIFRDTVVfU1RTX0lO VkFMSURfQ0RCOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzg0 NTogRklMRTogdGNtdS9oZWxwZXIuYzozMzY6CiteSX0gZWxzZSB7JAoKRVJST1I6IGNvZGUgaW5k ZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojODQ2OiBGSUxFOiB0Y211L2hlbHBlci5jOjMzNzoK K15JXklyZXR1cm4gdGNtdV9lbXVsYXRlX2V2cGRfaW5xdWlyeShkZXYsIGNkYiwgaW92ZWMsIGlv dl9jbnQpOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzg0Nzog RklMRTogdGNtdS9oZWxwZXIuYzozMzg6CiteSX0kCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxk IG5ldmVyIHVzZSB0YWJzCiM4NTE6IEZJTEU6IHRjbXUvaGVscGVyLmM6MzQyOgorXkl1aW50OF90 ICpjZGIsJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojODUyOiBG SUxFOiB0Y211L2hlbHBlci5jOjM0MzoKK15Jc3RydWN0IGlvdmVjICppb3ZlYywkCgpFUlJPUjog Y29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM4NTM6IEZJTEU6IHRjbXUvaGVscGVy LmM6MzQ0OgorXklzaXplX3QgaW92X2NudCkkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5l dmVyIHVzZSB0YWJzCiM4NTU6IEZJTEU6IHRjbXUvaGVscGVyLmM6MzQ2OgorXklyZXR1cm4gVENN VV9TVFNfT0s7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojODU5 OiBGSUxFOiB0Y211L2hlbHBlci5jOjM1MDoKK15JdWludDY0X3QgbnVtX2xiYXMsJAoKRVJST1I6 IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojODYwOiBGSUxFOiB0Y211L2hlbHBl ci5jOjM1MToKK15JdWludDMyX3QgYmxvY2tfc2l6ZSwkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hv dWxkIG5ldmVyIHVzZSB0YWJzCiM4NjE6IEZJTEU6IHRjbXUvaGVscGVyLmM6MzUyOgorXkl1aW50 OF90ICpjZGIsJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojODYy OiBGSUxFOiB0Y211L2hlbHBlci5jOjM1MzoKK15Jc3RydWN0IGlvdmVjICppb3ZlYywkCgpFUlJP UjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM4NjM6IEZJTEU6IHRjbXUvaGVs cGVyLmM6MzU0OgorXklzaXplX3QgaW92X2NudCkkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxk IG5ldmVyIHVzZSB0YWJzCiM4NjU6IEZJTEU6IHRjbXUvaGVscGVyLmM6MzU2OgorXkl1aW50OF90 IGJ1Zls4XTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM4NjY6 IEZJTEU6IHRjbXUvaGVscGVyLmM6MzU3OgorXkl1aW50MzJfdCB2YWwzMjskCgpFUlJPUjogY29k ZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM4Njg6IEZJTEU6IHRjbXUvaGVscGVyLmM6 MzU5OgorXkltZW1zZXQoYnVmLCAwLCBzaXplb2YoYnVmKSk7JAoKRVJST1I6IGNvZGUgaW5kZW50 IHNob3VsZCBuZXZlciB1c2UgdGFicwojODcwOiBGSUxFOiB0Y211L2hlbHBlci5jOjM2MToKK15J aWYgKG51bV9sYmFzIDwgMHgxMDAwMDAwMDBVTEwpIHskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hv dWxkIG5ldmVyIHVzZSB0YWJzCiM4NzE6IEZJTEU6IHRjbXUvaGVscGVyLmM6MzYyOgorXkleSS8v IFJldHVybiB0aGUgTEJBIG9mIHRoZSBsYXN0IGxvZ2ljYWwgYmxvY2ssIHNvIHN1YnRyYWN0IDEu JAoKRVJST1I6IGRvIG5vdCB1c2UgQzk5IC8vIGNvbW1lbnRzCiM4NzE6IEZJTEU6IHRjbXUvaGVs cGVyLmM6MzYyOgorICAgICAgICAgICAgICAgLy8gUmV0dXJuIHRoZSBMQkEgb2YgdGhlIGxhc3Qg bG9naWNhbCBibG9jaywgc28gc3VidHJhY3QgMS4KCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQg bmV2ZXIgdXNlIHRhYnMKIzg3MjogRklMRTogdGNtdS9oZWxwZXIuYzozNjM6CiteSV5JdmFsMzIg PSBodG9iZTMyKG51bV9sYmFzLTEpOyQKCkVSUk9SOiBzcGFjZXMgcmVxdWlyZWQgYXJvdW5kIHRo YXQgJy0nIChjdHg6VnhWKQojODcyOiBGSUxFOiB0Y211L2hlbHBlci5jOjM2MzoKKyAgICAgICAg ICAgICAgIHZhbDMyID0gaHRvYmUzMihudW1fbGJhcy0xKTsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNl IHRhYnMKIzg3MzogRklMRTogdGNtdS9oZWxwZXIuYzozNjQ6CiteSX0gZWxzZSB7JAoKRVJST1I6 IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojODc0OiBGSUxFOiB0Y211L2hlbHBl ci5jOjM2NToKK15JXkkvLyBUaGlzIGxldHMgdGhlIGluaXRpYXRvciBrbm93IHRoYXQgaGUgbmVl ZHMgdG8gdXNlJAoKRVJST1I6IGRvIG5vdCB1c2UgQzk5IC8vIGNvbW1lbnRzCiM4NzQ6IEZJTEU6 IHRjbXUvaGVscGVyLmM6MzY1OgorICAgICAgICAgICAgICAgLy8gVGhpcyBsZXRzIHRoZSBpbml0 aWF0b3Iga25vdyB0aGF0IGhlIG5lZWRzIHRvIHVzZQoKRVJST1I6IGNvZGUgaW5kZW50IHNob3Vs ZCBuZXZlciB1c2UgdGFicwojODc1OiBGSUxFOiB0Y211L2hlbHBlci5jOjM2NjoKK15JXkkvLyBS ZWFkIENhcGFjaXR5KDE2KS4kCgpFUlJPUjogZG8gbm90IHVzZSBDOTkgLy8gY29tbWVudHMKIzg3 NTogRklMRTogdGNtdS9oZWxwZXIuYzozNjY6CisgICAgICAgICAgICAgICAvLyBSZWFkIENhcGFj aXR5KDE2KS4KCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzg3Njog RklMRTogdGNtdS9oZWxwZXIuYzozNjc6CiteSV5JdmFsMzIgPSAweGZmZmZmZmZmOyQKCkVSUk9S OiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzg3NzogRklMRTogdGNtdS9oZWxw ZXIuYzozNjg6CiteSX0kCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJz CiM4Nzk6IEZJTEU6IHRjbXUvaGVscGVyLmM6MzcwOgorXkltZW1jcHkoJmJ1ZlswXSwgJnZhbDMy LCA0KTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM4ODE6IEZJ TEU6IHRjbXUvaGVscGVyLmM6MzcyOgorXkl2YWwzMiA9IGh0b2JlMzIoYmxvY2tfc2l6ZSk7JAoK RVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojODgyOiBGSUxFOiB0Y211 L2hlbHBlci5jOjM3MzoKK15JbWVtY3B5KCZidWZbNF0sICZ2YWwzMiwgNCk7JAoKRVJST1I6IGNv ZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojODg0OiBGSUxFOiB0Y211L2hlbHBlci5j OjM3NToKK15JLyogYWxsIGVsc2UgaXMgemVybyAqLyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91 bGQgbmV2ZXIgdXNlIHRhYnMKIzg4NjogRklMRTogdGNtdS9oZWxwZXIuYzozNzc6CiteSXRjbXVf bWVtY3B5X2ludG9faW92ZWMoaW92ZWMsIGlvdl9jbnQsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOyQKCkVS Uk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzg4ODogRklMRTogdGNtdS9o ZWxwZXIuYzozNzk6CiteSXJldHVybiBUQ01VX1NUU19PSzskCgpFUlJPUjogY29kZSBpbmRlbnQg c2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM4OTI6IEZJTEU6IHRjbXUvaGVscGVyLmM6MzgzOgorXkl1 aW50NjRfdCBudW1fbGJhcywkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0 YWJzCiM4OTM6IEZJTEU6IHRjbXUvaGVscGVyLmM6Mzg0OgorXkl1aW50MzJfdCBibG9ja19zaXpl LCQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzg5NDogRklMRTog dGNtdS9oZWxwZXIuYzozODU6CiteSXVpbnQ4X3QgKmNkYiwkCgpFUlJPUjogY29kZSBpbmRlbnQg c2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM4OTU6IEZJTEU6IHRjbXUvaGVscGVyLmM6Mzg2OgorXklz dHJ1Y3QgaW92ZWMgKmlvdmVjLCQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNl IHRhYnMKIzg5NjogRklMRTogdGNtdS9oZWxwZXIuYzozODc6CiteSXNpemVfdCBpb3ZfY250KSQK CkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzg5ODogRklMRTogdGNt dS9oZWxwZXIuYzozODk6CiteSXVpbnQ4X3QgYnVmWzMyXTskCgpFUlJPUjogY29kZSBpbmRlbnQg c2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM4OTk6IEZJTEU6IHRjbXUvaGVscGVyLmM6MzkwOgorXkl1 aW50NjRfdCB2YWw2NDskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJz CiM5MDA6IEZJTEU6IHRjbXUvaGVscGVyLmM6MzkxOgorXkl1aW50MzJfdCB2YWwzMjskCgpFUlJP UjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM5MDI6IEZJTEU6IHRjbXUvaGVs cGVyLmM6MzkzOgorXkltZW1zZXQoYnVmLCAwLCBzaXplb2YoYnVmKSk7JAoKRVJST1I6IGNvZGUg aW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojOTA0OiBGSUxFOiB0Y211L2hlbHBlci5jOjM5 NToKK15JLy8gUmV0dXJuIHRoZSBMQkEgb2YgdGhlIGxhc3QgbG9naWNhbCBibG9jaywgc28gc3Vi dHJhY3QgMS4kCgpFUlJPUjogZG8gbm90IHVzZSBDOTkgLy8gY29tbWVudHMKIzkwNDogRklMRTog dGNtdS9oZWxwZXIuYzozOTU6CisgICAgICAgLy8gUmV0dXJuIHRoZSBMQkEgb2YgdGhlIGxhc3Qg bG9naWNhbCBibG9jaywgc28gc3VidHJhY3QgMS4KCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQg bmV2ZXIgdXNlIHRhYnMKIzkwNTogRklMRTogdGNtdS9oZWxwZXIuYzozOTY6CiteSXZhbDY0ID0g aHRvYmU2NChudW1fbGJhcy0xKTskCgpFUlJPUjogc3BhY2VzIHJlcXVpcmVkIGFyb3VuZCB0aGF0 ICctJyAoY3R4OlZ4VikKIzkwNTogRklMRTogdGNtdS9oZWxwZXIuYzozOTY6CisgICAgICAgdmFs NjQgPSBodG9iZTY0KG51bV9sYmFzLTEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzkwNjogRklMRTog dGNtdS9oZWxwZXIuYzozOTc6CiteSW1lbWNweSgmYnVmWzBdLCAmdmFsNjQsIDgpOyQKCkVSUk9S OiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzkwODogRklMRTogdGNtdS9oZWxw ZXIuYzozOTk6CiteSXZhbDMyID0gaHRvYmUzMihibG9ja19zaXplKTskCgpFUlJPUjogY29kZSBp bmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM5MDk6IEZJTEU6IHRjbXUvaGVscGVyLmM6NDAw OgorXkltZW1jcHkoJmJ1Zls4XSwgJnZhbDMyLCA0KTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hv dWxkIG5ldmVyIHVzZSB0YWJzCiM5MTE6IEZJTEU6IHRjbXUvaGVscGVyLmM6NDAyOgorXkkvKiQK CkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzkxMjogRklMRTogdGNt dS9oZWxwZXIuYzo0MDM6CiteSSAqIExvZ2ljYWwgQmxvY2sgUHJvdmlzaW9uaW5nIE1hbmFnZW1l bnQgRW5hYmxlZCAoTEJQTUUpIGJpdCQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIg dXNlIHRhYnMKIzkxMzogRklMRTogdGNtdS9oZWxwZXIuYzo0MDQ6CiteSSAqJAoKRVJST1I6IGNv ZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojOTE0OiBGSUxFOiB0Y211L2hlbHBlci5j OjQwNToKK15JICogVGhlIExCUE1FIGJpdCBzZXRzIHRvIG9uZSBhbmQgdGhlbiB0aGUgbG9naWNh bCB1bml0IGltcGxlbWVudHMkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0 YWJzCiM5MTU6IEZJTEU6IHRjbXUvaGVscGVyLmM6NDA2OgorXkkgKiBsb2dpY2FsIGJsb2NrIHBy b3Zpc2lvbmluZyBtYW5hZ2VtZW50JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1 c2UgdGFicwojOTE2OiBGSUxFOiB0Y211L2hlbHBlci5jOjQwNzoKK15JICovJAoKRVJST1I6IGNv ZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojOTE3OiBGSUxFOiB0Y211L2hlbHBlci5j OjQwODoKK15JYnVmWzE0XSA9IDB4ODA7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZl ciB1c2UgdGFicwojOTE5OiBGSUxFOiB0Y211L2hlbHBlci5jOjQxMDoKK15JLyokCgpFUlJPUjog Y29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM5MjA6IEZJTEU6IHRjbXUvaGVscGVy LmM6NDExOgorXkkgKiBUaGUgbG9naWNhbCBibG9jayBwcm92aXNpb25pbmcgcmVhZCB6ZXJvcyAo TEJQUlopIGJpdCBzaGFsbCBiZSQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNl IHRhYnMKIzkyMTogRklMRTogdGNtdS9oZWxwZXIuYzo0MTI6CiteSSAqIHNldCB0byBvbmUgaWYg dGhlIExCUFJaIGZpZWxkIGlzIHNldCB0byB4eDFiIGluIFZQRCBCMi4gVGhlJAoKRVJST1I6IGNv ZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojOTIyOiBGSUxFOiB0Y211L2hlbHBlci5j OjQxMzoKK15JICogTEJQUlogYml0IHNoYWxsIGJlIHNldCB0byB6ZXJvIGlmIHRoZSBMQlBSWiBm aWVsZCBpcyBub3Qgc2V0JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFi cwojOTIzOiBGSUxFOiB0Y211L2hlbHBlci5jOjQxNDoKK15JICogdG8geHgxYi4kCgpFUlJPUjog Y29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM5MjQ6IEZJTEU6IHRjbXUvaGVscGVy LmM6NDE1OgorXkkgKi8kCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJz CiM5MjU6IEZJTEU6IHRjbXUvaGVscGVyLmM6NDE2OgorXklidWZbMTRdIHw9IDB4NDA7JAoKRVJS T1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojOTI3OiBGSUxFOiB0Y211L2hl bHBlci5jOjQxODoKK15JLyogYWxsIGVsc2UgaXMgemVybyAqLyQKCkVSUk9SOiBjb2RlIGluZGVu dCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzkyOTogRklMRTogdGNtdS9oZWxwZXIuYzo0MjA6Cite SXRjbXVfbWVtY3B5X2ludG9faW92ZWMoaW92ZWMsIGlvdl9jbnQsIGJ1Ziwgc2l6ZW9mKGJ1Zikp OyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzkzMTogRklMRTog dGNtdS9oZWxwZXIuYzo0MjI6CiteSXJldHVybiBUQ01VX1NUU19PSzskCgpFUlJPUjogY29kZSBp bmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM5MzU6IEZJTEU6IHRjbXUvaGVscGVyLmM6NDI2 OgorXkleSV5JXkkgdWludDhfdCAqZnJvbV9idWYsIHNpemVfdCBmcm9tX2xlbikkCgpFUlJPUjog Y29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM5Mzc6IEZJTEU6IHRjbXUvaGVscGVy LmM6NDI4OgorXklpZiAoIXRvX2J1ZikkCgpFUlJPUjogYnJhY2VzIHt9IGFyZSBuZWNlc3Nhcnkg Zm9yIGFsbCBhcm1zIG9mIHRoaXMgc3RhdGVtZW50CiM5Mzc6IEZJTEU6IHRjbXUvaGVscGVyLmM6 NDI4OgorICAgICAgIGlmICghdG9fYnVmKQpbLi4uXQoKRVJST1I6IGNvZGUgaW5kZW50IHNob3Vs ZCBuZXZlciB1c2UgdGFicwojOTM4OiBGSUxFOiB0Y211L2hlbHBlci5jOjQyOToKK15JXklyZXR1 cm47JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojOTM5OiBGSUxF OiB0Y211L2hlbHBlci5jOjQzMDoKK15JLyokCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5l dmVyIHVzZSB0YWJzCiM5NDA6IEZJTEU6IHRjbXUvaGVscGVyLmM6NDMxOgorXkkgKiBTUEMgNHIz NzogNC4zLjUuNiBBbGxvY2F0aW9uIGxlbmd0aDokCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxk IG5ldmVyIHVzZSB0YWJzCiM5NDE6IEZJTEU6IHRjbXUvaGVscGVyLmM6NDMyOgorXkkgKiQKCkVS Uk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzk0MjogRklMRTogdGNtdS9o ZWxwZXIuYzo0MzM6CiteSSAqIFRoZSBkZXZpY2Ugc2VydmVyIHNoYWxsIHRlcm1pbmF0ZSB0cmFu c2ZlcnMgdG8gdGhlIERhdGEtSW4gQnVmZmVyJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBu ZXZlciB1c2UgdGFicwojOTQzOiBGSUxFOiB0Y211L2hlbHBlci5jOjQzNDoKK15JICogd2hlbiB0 aGUgbnVtYmVyIG9mIGJ5dGVzIG9yIGJsb2NrcyBzcGVjaWZpZWQgYnkgdGhlIEFMTE9DQVRJT04k CgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM5NDQ6IEZJTEU6IHRj bXUvaGVscGVyLmM6NDM1OgorXkkgKiBMRU5HVEggZmllbGQgaGF2ZSBiZWVuIHRyYW5zZmVycmVk IG9yIHdoZW4gYWxsIGF2YWlsYWJsZSBkYXRhJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBu ZXZlciB1c2UgdGFicwojOTQ1OiBGSUxFOiB0Y211L2hlbHBlci5jOjQzNjoKK15JICogaGF2ZSBi ZWVuIHRyYW5zZmVycmVkLCB3aGljaGV2ZXIgaXMgbGVzcy4kCgpFUlJPUjogY29kZSBpbmRlbnQg c2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM5NDY6IEZJTEU6IHRjbXUvaGVscGVyLmM6NDM3OgorXkkg Ki8kCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM5NDc6IEZJTEU6 IHRjbXUvaGVscGVyLmM6NDM4OgorXkltZW1jcHkodG9fYnVmLCBmcm9tX2J1ZiwgdG9fbGVuID4g ZnJvbV9sZW4gPyBmcm9tX2xlbiA6IHRvX2xlbik7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3Vs ZCBuZXZlciB1c2UgdGFicwojOTUxOiBGSUxFOiB0Y211L2hlbHBlci5jOjQ0MjoKK15JXkleSSAg IHNpemVfdCByZXRfYnVmX2xlbikkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVz ZSB0YWJzCiM5NTM6IEZJTEU6IHRjbXUvaGVscGVyLmM6NDQ0OgorXkl1aW50OF90IGJ1ZlsxMl07 JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojOTU1OiBGSUxFOiB0 Y211L2hlbHBlci5jOjQ0NjoKK15JbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKGJ1ZikpOyQKCkVSUk9S OiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzk1NjogRklMRTogdGNtdS9oZWxw ZXIuYzo0NDc6CiteSWJ1ZlswXSA9IDB4MTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5l dmVyIHVzZSB0YWJzCiM5NTc6IEZJTEU6IHRjbXUvaGVscGVyLmM6NDQ4OgorXklidWZbMV0gPSAw eGE7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojOTU5OiBGSUxF OiB0Y211L2hlbHBlci5jOjQ1MDoKK15JY29weV90b19yZXNwb25zZV9idWYocmV0X2J1ZiwgcmV0 X2J1Zl9sZW4sIGJ1ZiwgMTIpOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNl IHRhYnMKIzk2MDogRklMRTogdGNtdS9oZWxwZXIuYzo0NTE6CiteSXJldHVybiAxMjskCgpFUlJP UjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM5NjQ6IEZJTEU6IHRjbXUvaGVs cGVyLmM6NDU1OgorXkleSSAgICAgIHNpemVfdCByZXRfYnVmX2xlbikkCgpFUlJPUjogY29kZSBp bmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM5NjY6IEZJTEU6IHRjbXUvaGVscGVyLmM6NDU3 OgorXkl1aW50OF90IGJ1ZlsyMF07JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1 c2UgdGFicwojOTY4OiBGSUxFOiB0Y211L2hlbHBlci5jOjQ1OToKK15JbWVtc2V0KGJ1ZiwgMCwg c2l6ZW9mKGJ1ZikpOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMK Izk2OTogRklMRTogdGNtdS9oZWxwZXIuYzo0NjA6CiteSWJ1ZlswXSA9IDB4ODskCgpFUlJPUjog Y29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM5NzA6IEZJTEU6IHRjbXUvaGVscGVy LmM6NDYxOgorXklidWZbMV0gPSAweDEyOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2 ZXIgdXNlIHRhYnMKIzk3MjogRklMRTogdGNtdS9oZWxwZXIuYzo0NjM6CiteSS8qJAoKRVJST1I6 IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojOTczOiBGSUxFOiB0Y211L2hlbHBl ci5jOjQ2NDoKK15JICogSWYgZGV2aWNlIHN1cHBvcnRzIGEgd3JpdGViYWNrIGNhY2hlIHRoZW4g c2V0IHdyaXRlYmFjayQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMK Izk3NDogRklMRTogdGNtdS9oZWxwZXIuYzo0NjU6CiteSSAqIGNhY2hlIGVuYWJsZSAoV0NFKSQK CkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzk3NTogRklMRTogdGNt dS9oZWxwZXIuYzo0NjY6CiteSSAqLyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIg dXNlIHRhYnMKIzk3NjogRklMRTogdGNtdS9oZWxwZXIuYzo0Njc6CiteSWlmICh0Y211X2Rldl9n ZXRfd3JpdGVfY2FjaGVfZW5hYmxlZChkZXYpKSQKCkVSUk9SOiBicmFjZXMge30gYXJlIG5lY2Vz c2FyeSBmb3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzk3NjogRklMRTogdGNtdS9oZWxw ZXIuYzo0Njc6CisgICAgICAgaWYgKHRjbXVfZGV2X2dldF93cml0ZV9jYWNoZV9lbmFibGVkKGRl dikpClsuLi5dCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM5Nzc6 IEZJTEU6IHRjbXUvaGVscGVyLmM6NDY4OgorXkleSWJ1ZlsyXSA9IDB4NDskCgpFUlJPUjogY29k ZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM5Nzk6IEZJTEU6IHRjbXUvaGVscGVyLmM6 NDcwOgorXkljb3B5X3RvX3Jlc3BvbnNlX2J1ZihyZXRfYnVmLCByZXRfYnVmX2xlbiwgYnVmLCAy MCk7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojOTgwOiBGSUxF OiB0Y211L2hlbHBlci5jOjQ3MToKK15JcmV0dXJuIDIwOyQKCkVSUk9SOiBjb2RlIGluZGVudCBz aG91bGQgbmV2ZXIgdXNlIHRhYnMKIzk4NDogRklMRTogdGNtdS9oZWxwZXIuYzo0NzU6CiteSV5J XkkgICAgICAgc2l6ZV90IHJldF9idWZfbGVuKSQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQg bmV2ZXIgdXNlIHRhYnMKIzk4NjogRklMRTogdGNtdS9oZWxwZXIuYzo0Nzc6CiteSXVpbnQ4X3Qg YnVmWzEyXTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM5ODg6 IEZJTEU6IHRjbXUvaGVscGVyLmM6NDc5OgorXkltZW1zZXQoYnVmLCAwLCBzaXplb2YoYnVmKSk7 JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojOTg5OiBGSUxFOiB0 Y211L2hlbHBlci5jOjQ4MDoKK15JYnVmWzBdID0gMHgwYTskCgpFUlJPUjogY29kZSBpbmRlbnQg c2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM5OTA6IEZJTEU6IHRjbXUvaGVscGVyLmM6NDgxOgorXkli dWZbMV0gPSAweDBhOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMK Izk5MjogRklMRTogdGNtdS9oZWxwZXIuYzo0ODM6CiteSS8qIEZyb20gc3BjNHIzMSwgc2VjdGlv biA3LjUuNyBDb250cm9sIG1vZGUgUGFnZSQKCldBUk5JTkc6IEJsb2NrIGNvbW1lbnRzIHVzZSBh IGxlYWRpbmcgLyogb24gYSBzZXBhcmF0ZSBsaW5lCiM5OTI6IEZJTEU6IHRjbXUvaGVscGVyLmM6 NDgzOgorICAgICAgIC8qIEZyb20gc3BjNHIzMSwgc2VjdGlvbiA3LjUuNyBDb250cm9sIG1vZGUg UGFnZQoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojOTkzOiBGSUxF OiB0Y211L2hlbHBlci5jOjQ4NDoKK15JICokCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5l dmVyIHVzZSB0YWJzCiM5OTQ6IEZJTEU6IHRjbXUvaGVscGVyLmM6NDg1OgorXkkgKiBHTFRTRCA9 IDE6IGJlY2F1c2Ugd2UgZG9uJ3QgaW1wbGljaXRseSBzYXZlIGxvZyBwYXJhbWV0ZXJzJAoKRVJS T1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojOTk1OiBGSUxFOiB0Y211L2hl bHBlci5jOjQ4NjoKK15JICokCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0 YWJzCiM5OTY6IEZJTEU6IHRjbXUvaGVscGVyLmM6NDg3OgorXkkgKiBBIGdsb2JhbCBsb2dnaW5n IHRhcmdldCBzYXZlIGRpc2FibGUgKEdMVFNEKSBiaXQgc2V0IHRvJAoKRVJST1I6IGNvZGUgaW5k ZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojOTk3OiBGSUxFOiB0Y211L2hlbHBlci5jOjQ4ODoK K15JICogemVybyBzcGVjaWZpZXMgdGhhdCB0aGUgbG9naWNhbCB1bml0IGltcGxpY2l0bHkgc2F2 ZXMsIGF0JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojOTk4OiBG SUxFOiB0Y211L2hlbHBlci5jOjQ4OToKK15JICogdmVuZG9yIHNwZWNpZmljIGludGVydmFscywg ZWFjaCBsb2cgcGFyYW1ldGVyIGluIHdoaWNoIHRoZSQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91 bGQgbmV2ZXIgdXNlIHRhYnMKIzk5OTogRklMRTogdGNtdS9oZWxwZXIuYzo0OTA6CiteSSAqIFRT RCBiaXQgKHNlZSA3LjMpIGlzIHNldCB0byB6ZXJvLiBBIEdMVFNEIGJpdCBzZXQgdG8gb25lJAoK RVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTAwMDogRklMRTogdGNt dS9oZWxwZXIuYzo0OTE6CiteSSAqIHNwZWNpZmllcyB0aGF0IHRoZSBsb2dpY2FsIHVuaXQgc2hh bGwgbm90IGltcGxpY2l0bHkgc2F2ZSQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIg dXNlIHRhYnMKIzEwMDE6IEZJTEU6IHRjbXUvaGVscGVyLmM6NDkyOgorXkkgKiBhbnkgbG9nIHBh cmFtZXRlcnMuJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTAw MjogRklMRTogdGNtdS9oZWxwZXIuYzo0OTM6CiteSSAqLyQKCkVSUk9SOiBjb2RlIGluZGVudCBz aG91bGQgbmV2ZXIgdXNlIHRhYnMKIzEwMDM6IEZJTEU6IHRjbXUvaGVscGVyLmM6NDk0OgorXkli dWZbMl0gPSAweDAyOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMK IzEwMDU6IEZJTEU6IHRjbXUvaGVscGVyLmM6NDk2OgorXkkvKiBGcm9tIHNwYzRyMzEsIHNlY3Rp b24gNy41LjcgQ29udHJvbCBtb2RlIFBhZ2UkCgpXQVJOSU5HOiBCbG9jayBjb21tZW50cyB1c2Ug YSBsZWFkaW5nIC8qIG9uIGEgc2VwYXJhdGUgbGluZQojMTAwNTogRklMRTogdGNtdS9oZWxwZXIu Yzo0OTY6CisgICAgICAgLyogRnJvbSBzcGM0cjMxLCBzZWN0aW9uIDcuNS43IENvbnRyb2wgbW9k ZSBQYWdlCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMDA2OiBG SUxFOiB0Y211L2hlbHBlci5jOjQ5NzoKK15JICokCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxk IG5ldmVyIHVzZSB0YWJzCiMxMDA3OiBGSUxFOiB0Y211L2hlbHBlci5jOjQ5ODoKK15JICogVEFT ID0gMTogQ3VycmVudGx5IG5vdCBzZXR0YWJsZSBieSB0Y211LiBVc2luZyB0aGUgTElPIGRlZmF1 bHQkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMDA4OiBGSUxF OiB0Y211L2hlbHBlci5jOjQ5OToKK15JICokCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5l dmVyIHVzZSB0YWJzCiMxMDA5OiBGSUxFOiB0Y211L2hlbHBlci5jOjUwMDoKK15JICogQSB0YXNr IGFib3J0ZWQgc3RhdHVzIChUQVMpIGJpdCBzZXQgdG8gemVybyBzcGVjaWZpZXMgdGhhdCQKCkVS Uk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzEwMTA6IEZJTEU6IHRjbXUv aGVscGVyLmM6NTAxOgorXkkgKiBhYm9ydGVkIGNvbW1hbmRzIHNoYWxsIGJlIHRlcm1pbmF0ZWQg YnkgdGhlIGRldmljZSBzZXJ2ZXIkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVz ZSB0YWJzCiMxMDExOiBGSUxFOiB0Y211L2hlbHBlci5jOjUwMjoKK15JICogd2l0aG91dCBhbnkg cmVzcG9uc2UgdG8gdGhlIGFwcGxpY2F0aW9uIGNsaWVudC4gQSBUQVMgYml0JAoKRVJST1I6IGNv ZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTAxMjogRklMRTogdGNtdS9oZWxwZXIu Yzo1MDM6CiteSSAqIHNldCB0byBvbmUgc3BlY2lmaWVzIHRoYXQgY29tbWFuZHMgYWJvcnRlZCBi eSB0aGUgYWN0aW9ucyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMK IzEwMTM6IEZJTEU6IHRjbXUvaGVscGVyLmM6NTA0OgorXkkgKiBvZiBhbiBJX1QgbmV4dXMgb3Ro ZXIgdGhhbiB0aGUgSV9UIG5leHVzIG9uIHdoaWNoIHRoZSBjb21tYW5kJAoKRVJST1I6IGNvZGUg aW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTAxNDogRklMRTogdGNtdS9oZWxwZXIuYzo1 MDU6CiteSSAqIHdhcyByZWNlaXZlZCBzaGFsbCBiZSBjb21wbGV0ZWQgd2l0aCBUQVNLIEFCT1JU RUQgc3RhdHVzJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTAx NTogRklMRTogdGNtdS9oZWxwZXIuYzo1MDY6CiteSSAqLyQKCkVSUk9SOiBjb2RlIGluZGVudCBz aG91bGQgbmV2ZXIgdXNlIHRhYnMKIzEwMTY6IEZJTEU6IHRjbXUvaGVscGVyLmM6NTA3OgorXkli dWZbNV0gPSAweDQwOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMK IzEwMTg6IEZJTEU6IHRjbXUvaGVscGVyLmM6NTA5OgorXkkvKiBGcm9tIHNwYzRyMzEsIHNlY3Rp b24gNy41LjcgQ29udHJvbCBtb2RlIFBhZ2UkCgpXQVJOSU5HOiBCbG9jayBjb21tZW50cyB1c2Ug YSBsZWFkaW5nIC8qIG9uIGEgc2VwYXJhdGUgbGluZQojMTAxODogRklMRTogdGNtdS9oZWxwZXIu Yzo1MDk6CisgICAgICAgLyogRnJvbSBzcGM0cjMxLCBzZWN0aW9uIDcuNS43IENvbnRyb2wgbW9k ZSBQYWdlCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMDE5OiBG SUxFOiB0Y211L2hlbHBlci5jOjUxMDoKK15JICokCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxk IG5ldmVyIHVzZSB0YWJzCiMxMDIwOiBGSUxFOiB0Y211L2hlbHBlci5jOjUxMToKK15JICogQlVT WSBUSU1FT1VUIFBFUklPRDogQ3VycmVudGx5IGlzIHVubGltaXRlZCQKCkVSUk9SOiBjb2RlIGlu ZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzEwMjE6IEZJTEU6IHRjbXUvaGVscGVyLmM6NTEy OgorXkkgKiQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzEwMjI6 IEZJTEU6IHRjbXUvaGVscGVyLmM6NTEzOgorXkkgKiBUaGUgQlVTWSBUSU1FT1VUIFBFUklPRCBm aWVsZCBzcGVjaWZpZXMgdGhlIG1heGltdW0gdGltZSwgaW4kCgpFUlJPUjogY29kZSBpbmRlbnQg c2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMDIzOiBGSUxFOiB0Y211L2hlbHBlci5jOjUxNDoKK15J ICogMTAwIG1pbGxpc2Vjb25kcyBpbmNyZW1lbnRzLCB0aGF0IHRoZSBhcHBsaWNhdGlvbiBjbGll bnQgYWxsb3dzJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTAy NDogRklMRTogdGNtdS9oZWxwZXIuYzo1MTU6CiteSSAqIGZvciB0aGUgZGV2aWNlIHNlcnZlciB0 byByZXR1cm4gQlVTWSBzdGF0dXMgZm9yIHVuYW50aWNpcGF0ZWQkCgpFUlJPUjogY29kZSBpbmRl bnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMDI1OiBGSUxFOiB0Y211L2hlbHBlci5jOjUxNjoK K15JICogY29uZGl0aW9ucyB0aGF0IGFyZSBub3QgYSByb3V0aW5lIHBhcnQgb2YgY29tbWFuZHMg ZnJvbSB0aGUkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMDI2 OiBGSUxFOiB0Y211L2hlbHBlci5jOjUxNzoKK15JICogYXBwbGljYXRpb24gY2xpZW50LiBUaGlz IHZhbHVlIG1heSBiZSByb3VuZGVkIGRvd24gYXMgZGVmaW5lZCQKCkVSUk9SOiBjb2RlIGluZGVu dCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzEwMjc6IEZJTEU6IHRjbXUvaGVscGVyLmM6NTE4Ogor XkkgKiBpbiA1LjQodGhlIFBhcmFtZXRlciByb3VuZGluZyBzZWN0aW9uKS4kCgpFUlJPUjogY29k ZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMDI4OiBGSUxFOiB0Y211L2hlbHBlci5j OjUxOToKK15JICokCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMx MDI5OiBGSUxFOiB0Y211L2hlbHBlci5jOjUyMDoKK15JICogQSAwMDAwaCB2YWx1ZSBpbiB0aGlz IGZpZWxkIGlzIHVuZGVmaW5lZCBieSB0aGlzIHN0YW5kYXJkLiQKCkVSUk9SOiBjb2RlIGluZGVu dCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzEwMzA6IEZJTEU6IHRjbXUvaGVscGVyLmM6NTIxOgor XkkgKiBBbiBGRkZGaCB2YWx1ZSBpbiB0aGlzIGZpZWxkIGlzIGRlZmluZWQgYXMgYW4gdW5saW1p dGVkIHBlcmlvZC4kCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMx MDMxOiBGSUxFOiB0Y211L2hlbHBlci5jOjUyMjoKK15JICovJAoKRVJST1I6IGNvZGUgaW5kZW50 IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTAzMjogRklMRTogdGNtdS9oZWxwZXIuYzo1MjM6Cite SWJ1Zls4XSA9IDB4ZmY7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFi cwojMTAzMzogRklMRTogdGNtdS9oZWxwZXIuYzo1MjQ6CiteSWJ1Zls5XSA9IDB4ZmY7JAoKRVJS T1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTAzNTogRklMRTogdGNtdS9o ZWxwZXIuYzo1MjY6CiteSWNvcHlfdG9fcmVzcG9uc2VfYnVmKHJldF9idWYsIHJldF9idWZfbGVu LCBidWYsIDEyKTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMx MDM2OiBGSUxFOiB0Y211L2hlbHBlci5jOjUyNzoKK15JcmV0dXJuIDEyOyQKCkVSUk9SOiBjb2Rl IGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzEwNDE6IEZJTEU6IHRjbXUvaGVscGVyLmM6 NTMyOgorXkl1aW50OF90IHBhZ2U7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1 c2UgdGFicwojMTA0MjogRklMRTogdGNtdS9oZWxwZXIuYzo1MzM6CiteSXVpbnQ4X3Qgc3VicGFn ZTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMDQzOiBGSUxF OiB0Y211L2hlbHBlci5jOjUzNDoKK15JaW50ICgqZ2V0KShzdHJ1Y3QgdGNtdV9kZXZpY2UgKmRl diwgdWludDhfdCAqYnVmLCBzaXplX3QgYnVmX2xlbik7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNo b3VsZCBuZXZlciB1c2UgdGFicwojMTA0NTogRklMRTogdGNtdS9oZWxwZXIuYzo1MzY6CiteSXsw eDEsIDAsIGhhbmRsZV9yd3JlY292ZXJ5X3BhZ2V9LCQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91 bGQgbmV2ZXIgdXNlIHRhYnMKIzEwNDY6IEZJTEU6IHRjbXUvaGVscGVyLmM6NTM3OgorXkl7MHg4 LCAwLCBoYW5kbGVfY2FjaGVfcGFnZX0sJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZl ciB1c2UgdGFicwojMTA0NzogRklMRTogdGNtdS9oZWxwZXIuYzo1Mzg6CiteSXsweGEsIDAsIGhh bmRsZV9jb250cm9sX3BhZ2V9LCQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNl IHRhYnMKIzEwNTE6IEZJTEU6IHRjbXUvaGVscGVyLmM6NTQyOgorXkleSV5JXkkgc3RydWN0IG1v ZGVfc2Vuc2VfaGFuZGxlciAqaGFuZGxlciwkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5l dmVyIHVzZSB0YWJzCiMxMDUyOiBGSUxFOiB0Y211L2hlbHBlci5jOjU0MzoKK15JXkleSV5JIHVp bnQ4X3QgKipidWYsIHNpemVfdCBhbGxvY19sZW4sJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3Vs ZCBuZXZlciB1c2UgdGFicwojMTA1MzogRklMRTogdGNtdS9oZWxwZXIuYzo1NDQ6CiteSV5JXkle SSBzaXplX3QgKnVzZWRfbGVuLCBib29sIHNlbnNlX3RlbikkCgpFUlJPUjogY29kZSBpbmRlbnQg c2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMDU1OiBGSUxFOiB0Y211L2hlbHBlci5jOjU0NjoKK15J aW50IHJldDskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMDU3 OiBGSUxFOiB0Y211L2hlbHBlci5jOjU0ODoKK15JcmV0ID0gaGFuZGxlci0+Z2V0KGRldiwgKmJ1 ZiwgYWxsb2NfbGVuIC0gKnVzZWRfbGVuKTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5l dmVyIHVzZSB0YWJzCiMxMDU5OiBGSUxFOiB0Y211L2hlbHBlci5jOjU1MDoKK15JaWYgICghc2Vu c2VfdGVuICYmICgqdXNlZF9sZW4gKyByZXQgPj0gMjU1KSkkCgpFUlJPUjogYnJhY2VzIHt9IGFy ZSBuZWNlc3NhcnkgZm9yIGFsbCBhcm1zIG9mIHRoaXMgc3RhdGVtZW50CiMxMDU5OiBGSUxFOiB0 Y211L2hlbHBlci5jOjU1MDoKKyAgICAgICBpZiAgKCFzZW5zZV90ZW4gJiYgKCp1c2VkX2xlbiAr IHJldCA+PSAyNTUpKQpbLi4uXQoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2Ug dGFicwojMTA2MDogRklMRTogdGNtdS9oZWxwZXIuYzo1NTE6CiteSV5JcmV0dXJuIC1FSU5WQUw7 JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTA2MjogRklMRTog dGNtdS9oZWxwZXIuYzo1NTM6CiteSS8qJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZl ciB1c2UgdGFicwojMTA2MzogRklMRTogdGNtdS9oZWxwZXIuYzo1NTQ6CiteSSAqIFNQQyA0cjM3 OiA0LjMuNS42IEFsbG9jYXRpb24gbGVuZ3RoOiQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQg bmV2ZXIgdXNlIHRhYnMKIzEwNjQ6IEZJTEU6IHRjbXUvaGVscGVyLmM6NTU1OgorXkkgKiQKCkVS Uk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzEwNjU6IEZJTEU6IHRjbXUv aGVscGVyLmM6NTU2OgorXkkgKiBJZiB0aGUgaW5mb3JtYXRpb24gYmVpbmcgdHJhbnNmZXJyZWQg dG8gdGhlIERhdGEtSW4gQnVmZmVyIGluY2x1ZGVzJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3Vs ZCBuZXZlciB1c2UgdGFicwojMTA2NjogRklMRTogdGNtdS9oZWxwZXIuYzo1NTc6CiteSSAqIGZp ZWxkcyBjb250YWluaW5nIGNvdW50cyBvZiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHNvbWUgb3Ig YWxsIG9mJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTA2Nzog RklMRTogdGNtdS9oZWxwZXIuYzo1NTg6CiteSSAqIHRoZSBkYXRhIChlLmcuLCB0aGUgUEFSQU1F VEVSIERBVEEgTEVOR1RIIGZpZWxkLCB0aGUgUEFHRSBMRU5HVEgkCgpFUlJPUjogY29kZSBpbmRl bnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMDY4OiBGSUxFOiB0Y211L2hlbHBlci5jOjU1OToK K15JICogZmllbGQsIHRoZSBERVNDUklQVE9SIExFTkdUSCBmaWVsZCwgdGhlIEFWQUlMQUJMRSBE QVRBIGZpZWxkKSwkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMx MDY5OiBGSUxFOiB0Y211L2hlbHBlci5jOjU2MDoKK15JICogdGhlbiB0aGUgY29udGVudHMgb2Yg dGhlc2UgZmllbGRzIHNoYWxsIG5vdCBiZSBhbHRlcmVkIHRvIHJlZmxlY3QkCgpFUlJPUjogY29k ZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMDcwOiBGSUxFOiB0Y211L2hlbHBlci5j OjU2MToKK15JICogdGhlIHRydW5jYXRpb24sIGlmIGFueSwgdGhhdCByZXN1bHRzIGZyb20gYW4g aW5zdWZmaWNpZW50JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwoj MTA3MTogRklMRTogdGNtdS9oZWxwZXIuYzo1NjI6CiteSSAqIEFMTE9DQVRJT04gTEVOR1RIIHZh bHVlJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTA3MjogRklM RTogdGNtdS9oZWxwZXIuYzo1NjM6CiteSSAqLyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQg bmV2ZXIgdXNlIHRhYnMKIzEwNzM6IEZJTEU6IHRjbXUvaGVscGVyLmM6NTY0OgorXkkvKiQKCkVS Uk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzEwNzQ6IEZJTEU6IHRjbXUv aGVscGVyLmM6NTY1OgorXkkgKiBTZXR1cCB0aGUgYnVmZmVyIHNvIHRvIHN0aWxsIGxvb3Agb3Zl ciB0aGUgaGFuZGxlcnMsIGJ1dCBqdXN0JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZl ciB1c2UgdGFicwojMTA3NTogRklMRTogdGNtdS9oZWxwZXIuYzo1NjY6CiteSSAqIGluY3JlbWVu dCB0aGUgdXNlZF9sZW4gc28gd2UgY2FuIHJldHVybiB0aGUkCgpFUlJPUjogY29kZSBpbmRlbnQg c2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMDc2OiBGSUxFOiB0Y211L2hlbHBlci5jOjU2NzoKK15J ICogZmluYWwgdmFsdWUuJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFi cwojMTA3NzogRklMRTogdGNtdS9oZWxwZXIuYzo1Njg6CiteSSAqLyQKCkVSUk9SOiBjb2RlIGlu ZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzEwNzg6IEZJTEU6IHRjbXUvaGVscGVyLmM6NTY5 OgorXklpZiAoKmJ1ZiAmJiAoKnVzZWRfbGVuICsgcmV0ID49IGFsbG9jX2xlbikpJAoKRVJST1I6 IGJyYWNlcyB7fSBhcmUgbmVjZXNzYXJ5IGZvciBhbGwgYXJtcyBvZiB0aGlzIHN0YXRlbWVudAoj MTA3ODogRklMRTogdGNtdS9oZWxwZXIuYzo1Njk6CisgICAgICAgaWYgKCpidWYgJiYgKCp1c2Vk X2xlbiArIHJldCA+PSBhbGxvY19sZW4pKQpbLi4uXQoKRVJST1I6IGNvZGUgaW5kZW50IHNob3Vs ZCBuZXZlciB1c2UgdGFicwojMTA3OTogRklMRTogdGNtdS9oZWxwZXIuYzo1NzA6CiteSV5JKmJ1 ZiA9IE5VTEw7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTA4 MTogRklMRTogdGNtdS9oZWxwZXIuYzo1NzI6CiteSSp1c2VkX2xlbiArPSByZXQ7JAoKRVJST1I6 IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTA4MjogRklMRTogdGNtdS9oZWxw ZXIuYzo1NzM6CiteSWlmICgqYnVmKSQKCkVSUk9SOiBicmFjZXMge30gYXJlIG5lY2Vzc2FyeSBm b3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzEwODI6IEZJTEU6IHRjbXUvaGVscGVyLmM6 NTczOgorICAgICAgIGlmICgqYnVmKQpbLi4uXQoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBu ZXZlciB1c2UgdGFicwojMTA4MzogRklMRTogdGNtdS9oZWxwZXIuYzo1NzQ6CiteSV5JKmJ1ZiAr PSByZXQ7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTA4NDog RklMRTogdGNtdS9oZWxwZXIuYzo1NzU6CiteSXJldHVybiByZXQ7JAoKRVJST1I6IGNvZGUgaW5k ZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTA5MzogRklMRTogdGNtdS9oZWxwZXIuYzo1ODQ6 CiteSXN0cnVjdCB0Y211X2RldmljZSAqZGV2LCQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQg bmV2ZXIgdXNlIHRhYnMKIzEwOTQ6IEZJTEU6IHRjbXUvaGVscGVyLmM6NTg1OgorXkl1aW50OF90 ICpjZGIsJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTA5NTog RklMRTogdGNtdS9oZWxwZXIuYzo1ODY6CiteSXN0cnVjdCBpb3ZlYyAqaW92ZWMsJAoKRVJST1I6 IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTA5NjogRklMRTogdGNtdS9oZWxw ZXIuYzo1ODc6CiteSXNpemVfdCBpb3ZfY250KSQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQg bmV2ZXIgdXNlIHRhYnMKIzEwOTg6IEZJTEU6IHRjbXUvaGVscGVyLmM6NTg5OgorXklib29sIHNl bnNlX3RlbiA9IChjZGJbMF0gPT0gTU9ERV9TRU5TRV8xMCk7JAoKRVJST1I6IGNvZGUgaW5kZW50 IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTA5OTogRklMRTogdGNtdS9oZWxwZXIuYzo1OTA6Cite SXVpbnQ4X3QgcGFnZV9jb2RlID0gY2RiWzJdICYgMHgzZjskCgpFUlJPUjogY29kZSBpbmRlbnQg c2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMTAwOiBGSUxFOiB0Y211L2hlbHBlci5jOjU5MToKK15J dWludDhfdCBzdWJwYWdlX2NvZGUgPSBjZGJbM107JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3Vs ZCBuZXZlciB1c2UgdGFicwojMTEwMTogRklMRTogdGNtdS9oZWxwZXIuYzo1OTI6CiteSXNpemVf dCBhbGxvY19sZW4gPSB0Y211X2Rldl9nZXRfbWF4X3hmZXJfbGVuKGRldik7JAoKRVJST1I6IGNv ZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTEwMjogRklMRTogdGNtdS9oZWxwZXIu Yzo1OTM6CiteSWludCBpOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRh YnMKIzExMDM6IEZJTEU6IHRjbXUvaGVscGVyLmM6NTk0OgorXklpbnQgcmV0OyQKCkVSUk9SOiBj b2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzExMDQ6IEZJTEU6IHRjbXUvaGVscGVy LmM6NTk1OgorXklzaXplX3QgdXNlZF9sZW47JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBu ZXZlciB1c2UgdGFicwojMTEwNTogRklMRTogdGNtdS9oZWxwZXIuYzo1OTY6CiteSXVpbnQ4X3Qg KmJ1ZjskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMTA2OiBG SUxFOiB0Y211L2hlbHBlci5jOjU5NzoKK15JdWludDhfdCAqb3JpZ19idWYgPSBOVUxMOyQKCkVS Uk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzExMDg6IEZJTEU6IHRjbXUv aGVscGVyLmM6NTk5OgorXklpZiAoIWFsbG9jX2xlbikkCgpFUlJPUjogYnJhY2VzIHt9IGFyZSBu ZWNlc3NhcnkgZm9yIGFsbCBhcm1zIG9mIHRoaXMgc3RhdGVtZW50CiMxMTA4OiBGSUxFOiB0Y211 L2hlbHBlci5jOjU5OToKKyAgICAgICBpZiAoIWFsbG9jX2xlbikKWy4uLl0KCkVSUk9SOiBjb2Rl IGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzExMDk6IEZJTEU6IHRjbXUvaGVscGVyLmM6 NjAwOgorXkleSXJldHVybiBUQ01VX1NUU19PSzskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxk IG5ldmVyIHVzZSB0YWJzCiMxMTExOiBGSUxFOiB0Y211L2hlbHBlci5jOjYwMjoKK15JLyogTW9k ZSBwYXJhbWV0ZXIgaGVhZGVyLiBNb2RlIGRhdGEgbGVuZ3RoIGZpbGxlZCBpbiBhdCB0aGUgZW5k LiAqLyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzExMTI6IEZJ TEU6IHRjbXUvaGVscGVyLmM6NjAzOgorXkl1c2VkX2xlbiA9IHNlbnNlX3RlbiA/IDggOiA0OyQK CkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzExMTM6IEZJTEU6IHRj bXUvaGVscGVyLmM6NjA0OgorXklpZiAodXNlZF9sZW4gPiBhbGxvY19sZW4pJAoKRVJST1I6IGJy YWNlcyB7fSBhcmUgbmVjZXNzYXJ5IGZvciBhbGwgYXJtcyBvZiB0aGlzIHN0YXRlbWVudAojMTEx MzogRklMRTogdGNtdS9oZWxwZXIuYzo2MDQ6CisgICAgICAgaWYgKHVzZWRfbGVuID4gYWxsb2Nf bGVuKQpbLi4uXQoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTEx NDogRklMRTogdGNtdS9oZWxwZXIuYzo2MDU6CiteSV5JZ290byBmYWlsOyQKCkVSUk9SOiBjb2Rl IGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzExMTY6IEZJTEU6IHRjbXUvaGVscGVyLmM6 NjA3OgorXklidWYgPSBjYWxsb2MoMSwgYWxsb2NfbGVuKTskCgpFUlJPUjogY29kZSBpbmRlbnQg c2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMTE3OiBGSUxFOiB0Y211L2hlbHBlci5jOjYwODoKK15J aWYgKCFidWYpJAoKRVJST1I6IGJyYWNlcyB7fSBhcmUgbmVjZXNzYXJ5IGZvciBhbGwgYXJtcyBv ZiB0aGlzIHN0YXRlbWVudAojMTExNzogRklMRTogdGNtdS9oZWxwZXIuYzo2MDg6CisgICAgICAg aWYgKCFidWYpClsuLi5dCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJz CiMxMTE4OiBGSUxFOiB0Y211L2hlbHBlci5jOjYwOToKK15JXklyZXR1cm4gVENNVV9TVFNfTk9f UkVTT1VSQ0U7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTEy MDogRklMRTogdGNtdS9oZWxwZXIuYzo2MTE6CiteSW9yaWdfYnVmID0gYnVmOyQKCkVSUk9SOiBj b2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzExMjE6IEZJTEU6IHRjbXUvaGVscGVy LmM6NjEyOgorXklidWYgKz0gdXNlZF9sZW47JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBu ZXZlciB1c2UgdGFicwojMTEyMzogRklMRTogdGNtdS9oZWxwZXIuYzo2MTQ6CiteSS8qIERvbid0 IGZpbGwgaW4gZGV2aWNlLXNwZWNpZmljIHBhcmFtZXRlciAqLyQKCkVSUk9SOiBjb2RlIGluZGVu dCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzExMjQ6IEZJTEU6IHRjbXUvaGVscGVyLmM6NjE1Ogor XkkvKiBUaGlzIGhlbHBlciBmbiBkb2Vzbid0IHN1cHBvcnQgc3cgd3JpdGUgcHJvdGVjdCAoU1dQ KSAqLyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzExMjY6IEZJ TEU6IHRjbXUvaGVscGVyLmM6NjE3OgorXkkvKiBEb24ndCByZXBvcnQgYmxvY2sgZGVzY3JpcHRv cnMgKi8kCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMTI4OiBG SUxFOiB0Y211L2hlbHBlci5jOjYxOToKK15JaWYgKHBhZ2VfY29kZSA9PSAweDNmKSB7JAoKRVJS T1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTEyOTogRklMRTogdGNtdS9o ZWxwZXIuYzo2MjA6CiteSV5JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUobW9kZXNlbnNlX2hh bmRsZXJzKTsgaSsrKSB7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFi cwojMTEzMDogRklMRTogdGNtdS9oZWxwZXIuYzo2MjE6CiteSV5JXklyZXQgPSBoYW5kbGVfbW9k ZV9zZW5zZShkZXYsICZtb2Rlc2Vuc2VfaGFuZGxlcnNbaV0sJAoKRVJST1I6IGNvZGUgaW5kZW50 IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTEzMTogRklMRTogdGNtdS9oZWxwZXIuYzo2MjI6Cite SV5JXkleSV5JXkkmYnVmLCBhbGxvY19sZW4sICZ1c2VkX2xlbiwkCgpFUlJPUjogY29kZSBpbmRl bnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMTMyOiBGSUxFOiB0Y211L2hlbHBlci5jOjYyMzoK K15JXkleSV5JXkleSXNlbnNlX3Rlbik7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZl ciB1c2UgdGFicwojMTEzMzogRklMRTogdGNtdS9oZWxwZXIuYzo2MjQ6CiteSV5JXklpZiAocmV0 IDwgMCkkCgpFUlJPUjogYnJhY2VzIHt9IGFyZSBuZWNlc3NhcnkgZm9yIGFsbCBhcm1zIG9mIHRo aXMgc3RhdGVtZW50CiMxMTMzOiBGSUxFOiB0Y211L2hlbHBlci5jOjYyNDoKKyAgICAgICAgICAg ICAgICAgICAgICAgaWYgKHJldCA8IDApClsuLi5dCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxk IG5ldmVyIHVzZSB0YWJzCiMxMTM0OiBGSUxFOiB0Y211L2hlbHBlci5jOjYyNToKK15JXkleSV5J Z290byBmcmVlX2J1ZjskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJz CiMxMTM1OiBGSUxFOiB0Y211L2hlbHBlci5jOjYyNjoKK15JXkl9JAoKRVJST1I6IGNvZGUgaW5k ZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTEzNjogRklMRTogdGNtdS9oZWxwZXIuYzo2Mjc6 CiteSX0gZWxzZSB7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwoj MTEzNzogRklMRTogdGNtdS9oZWxwZXIuYzo2Mjg6CiteSV5JcmV0ID0gMDskCgpFUlJPUjogY29k ZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMTM5OiBGSUxFOiB0Y211L2hlbHBlci5j OjYzMDoKK15JXklmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShtb2Rlc2Vuc2VfaGFuZGxlcnMp OyBpKyspIHskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMTQw OiBGSUxFOiB0Y211L2hlbHBlci5jOjYzMToKK15JXkleSWlmIChwYWdlX2NvZGUgPT0gbW9kZXNl bnNlX2hhbmRsZXJzW2ldLnBhZ2UgJiYkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVy IHVzZSB0YWJzCiMxMTQxOiBGSUxFOiB0Y211L2hlbHBlci5jOjYzMjoKK15JXkleSSAgICBzdWJw YWdlX2NvZGUgPT0gbW9kZXNlbnNlX2hhbmRsZXJzW2ldLnN1YnBhZ2UpIHskCgpFUlJPUjogY29k ZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMTQyOiBGSUxFOiB0Y211L2hlbHBlci5j OjYzMzoKK15JXkleSV5JcmV0ID0gaGFuZGxlX21vZGVfc2Vuc2UoZGV2LCQKCkVSUk9SOiBjb2Rl IGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzExNDM6IEZJTEU6IHRjbXUvaGVscGVyLmM6 NjM0OgorXkleSV5JXkleSV5JXkkmbW9kZXNlbnNlX2hhbmRsZXJzW2ldLCQKCkVSUk9SOiBjb2Rl IGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzExNDQ6IEZJTEU6IHRjbXUvaGVscGVyLmM6 NjM1OgorXkleSV5JXkleSV5JXkkmYnVmLCBhbGxvY19sZW4sJAoKRVJST1I6IGNvZGUgaW5kZW50 IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTE0NTogRklMRTogdGNtdS9oZWxwZXIuYzo2MzY6Cite SV5JXkleSV5JXkleSSZ1c2VkX2xlbiwgc2Vuc2VfdGVuKTskCgpFUlJPUjogY29kZSBpbmRlbnQg c2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMTQ2OiBGSUxFOiB0Y211L2hlbHBlci5jOjYzNzoKK15J XkleSV5JYnJlYWs7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwoj MTE0NzogRklMRTogdGNtdS9oZWxwZXIuYzo2Mzg6CiteSV5JXkl9JAoKRVJST1I6IGNvZGUgaW5k ZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTE0ODogRklMRTogdGNtdS9oZWxwZXIuYzo2Mzk6 CiteSV5JfSQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzExNTA6 IEZJTEU6IHRjbXUvaGVscGVyLmM6NjQxOgorXkleSWlmIChyZXQgPD0gMCkkCgpFUlJPUjogYnJh Y2VzIHt9IGFyZSBuZWNlc3NhcnkgZm9yIGFsbCBhcm1zIG9mIHRoaXMgc3RhdGVtZW50CiMxMTUw OiBGSUxFOiB0Y211L2hlbHBlci5jOjY0MToKKyAgICAgICAgICAgICAgIGlmIChyZXQgPD0gMCkK Wy4uLl0KCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzExNTE6IEZJ TEU6IHRjbXUvaGVscGVyLmM6NjQyOgorXkleSV5JZ290byBmcmVlX2J1ZjskCgpFUlJPUjogY29k ZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMTUyOiBGSUxFOiB0Y211L2hlbHBlci5j OjY0MzoKK15JfSQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzEx NTQ6IEZJTEU6IHRjbXUvaGVscGVyLmM6NjQ1OgorXklpZiAoc2Vuc2VfdGVuKSB7JAoKRVJST1I6 IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTE1NTogRklMRTogdGNtdS9oZWxw ZXIuYzo2NDY6CiteSV5JdWludDE2X3QgKnB0ciA9ICh1aW50MTZfdCopIG9yaWdfYnVmOyQKCkVS Uk9SOiAiKGZvbyopIiBzaG91bGQgYmUgIihmb28gKikiCiMxMTU1OiBGSUxFOiB0Y211L2hlbHBl ci5jOjY0NjoKKyAgICAgICAgICAgICAgIHVpbnQxNl90ICpwdHIgPSAodWludDE2X3QqKSBvcmln X2J1ZjsKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzExNTY6IEZJ TEU6IHRjbXUvaGVscGVyLmM6NjQ3OgorXkleSSpwdHIgPSBodG9iZTE2KHVzZWRfbGVuIC0gMik7 JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTE1NzogRklMRTog dGNtdS9oZWxwZXIuYzo2NDg6CiteSX0kCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVy IHVzZSB0YWJzCiMxMTU4OiBGSUxFOiB0Y211L2hlbHBlci5jOjY0OToKK15JZWxzZSB7JAoKRVJS T1I6IGVsc2Ugc2hvdWxkIGZvbGxvdyBjbG9zZSBicmFjZSAnfScKIzExNTg6IEZJTEU6IHRjbXUv aGVscGVyLmM6NjQ5OgorICAgICAgIH0KKyAgICAgICBlbHNlIHsKCkVSUk9SOiBjb2RlIGluZGVu dCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzExNTk6IEZJTEU6IHRjbXUvaGVscGVyLmM6NjUwOgor XkleSW9yaWdfYnVmWzBdID0gdXNlZF9sZW4gLSAxOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91 bGQgbmV2ZXIgdXNlIHRhYnMKIzExNjA6IEZJTEU6IHRjbXUvaGVscGVyLmM6NjUxOgorXkl9JAoK RVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTE2MjogRklMRTogdGNt dS9oZWxwZXIuYzo2NTM6CiteSXRjbXVfbWVtY3B5X2ludG9faW92ZWMoaW92ZWMsIGlvdl9jbnQs IG9yaWdfYnVmLCBhbGxvY19sZW4pOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIg dXNlIHRhYnMKIzExNjM6IEZJTEU6IHRjbXUvaGVscGVyLmM6NjU0OgorXklmcmVlKG9yaWdfYnVm KTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMTY0OiBGSUxF OiB0Y211L2hlbHBlci5jOjY1NToKK15JcmV0dXJuIFRDTVVfU1RTX09LOyQKCkVSUk9SOiBjb2Rl IGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzExNjc6IEZJTEU6IHRjbXUvaGVscGVyLmM6 NjU4OgorXklmcmVlKG9yaWdfYnVmKTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVy IHVzZSB0YWJzCiMxMTY5OiBGSUxFOiB0Y211L2hlbHBlci5jOjY2MDoKK15JcmV0dXJuIFRDTVVf U1RTX0lOVkFMSURfQ0RCOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRh YnMKIzExNzg6IEZJTEU6IHRjbXUvaGVscGVyLmM6NjY5OgorXklzdHJ1Y3QgdGNtdV9kZXZpY2Ug KmRldiwkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMTc5OiBG SUxFOiB0Y211L2hlbHBlci5jOjY3MDoKK15JdWludDhfdCAqY2RiLCQKCkVSUk9SOiBjb2RlIGlu ZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzExODA6IEZJTEU6IHRjbXUvaGVscGVyLmM6Njcx OgorXklzdHJ1Y3QgaW92ZWMgKmlvdmVjLCQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2 ZXIgdXNlIHRhYnMKIzExODE6IEZJTEU6IHRjbXUvaGVscGVyLmM6NjcyOgorXklzaXplX3QgaW92 X2NudCkkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMTgzOiBG SUxFOiB0Y211L2hlbHBlci5jOjY3NDoKK15JYm9vbCBzZWxlY3RfdGVuID0gKGNkYlswXSA9PSBN T0RFX1NFTEVDVF8xMCk7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFi cwojMTE4NDogRklMRTogdGNtdS9oZWxwZXIuYzo2NzU6CiteSXVpbnQ4X3QgcGFnZV9jb2RlID0g Y2RiWzJdICYgMHgzZjskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJz CiMxMTg1OiBGSUxFOiB0Y211L2hlbHBlci5jOjY3NjoKK15JdWludDhfdCBzdWJwYWdlX2NvZGUg PSBjZGJbM107JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTE4 NjogRklMRTogdGNtdS9oZWxwZXIuYzo2Nzc6CiteSXNpemVfdCBhbGxvY19sZW4gPSB0Y211X2Rl dl9nZXRfbWF4X3hmZXJfbGVuKGRldik7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZl ciB1c2UgdGFicwojMTE4NzogRklMRTogdGNtdS9oZWxwZXIuYzo2Nzg6CiteSWludCBpOyQKCkVS Uk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzExODg6IEZJTEU6IHRjbXUv aGVscGVyLmM6Njc5OgorXklpbnQgcmV0ID0gMDskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxk IG5ldmVyIHVzZSB0YWJzCiMxMTg5OiBGSUxFOiB0Y211L2hlbHBlci5jOjY4MDoKK15Jc2l6ZV90 IGhkcl9sZW4gPSBzZWxlY3RfdGVuID8gOCA6IDQ7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3Vs ZCBuZXZlciB1c2UgdGFicwojMTE5MDogRklMRTogdGNtdS9oZWxwZXIuYzo2ODE6CiteSXVpbnQ4 X3QgYnVmWzUxMl07JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwoj MTE5MTogRklMRTogdGNtdS9oZWxwZXIuYzo2ODI6CiteSXVpbnQ4X3QgaW5fYnVmWzUxMl07JAoK RVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTE5MjogRklMRTogdGNt dS9oZWxwZXIuYzo2ODM6CiteSWJvb2wgZ290X3NlbnNlID0gZmFsc2U7JAoKRVJST1I6IGNvZGUg aW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTE5NDogRklMRTogdGNtdS9oZWxwZXIuYzo2 ODU6CiteSWlmICghYWxsb2NfbGVuKSQKCkVSUk9SOiBicmFjZXMge30gYXJlIG5lY2Vzc2FyeSBm b3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzExOTQ6IEZJTEU6IHRjbXUvaGVscGVyLmM6 Njg1OgorICAgICAgIGlmICghYWxsb2NfbGVuKQpbLi4uXQoKRVJST1I6IGNvZGUgaW5kZW50IHNo b3VsZCBuZXZlciB1c2UgdGFicwojMTE5NTogRklMRTogdGNtdS9oZWxwZXIuYzo2ODY6CiteSV5J cmV0dXJuIFRDTVVfU1RTX09LOyQKCkVSUk9SOiBsaW5lIG92ZXIgOTAgY2hhcmFjdGVycwojMTE5 NzogRklMRTogdGNtdS9oZWxwZXIuYzo2ODg6CisgICAgICAgaWYgKHRjbXVfbWVtY3B5X2Zyb21f aW92ZWMoaW5fYnVmLCBzaXplb2YoaW5fYnVmKSwgaW92ZWMsIGlvdl9jbnQpID49IHNpemVvZihp bl9idWYpKQoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTE5Nzog RklMRTogdGNtdS9oZWxwZXIuYzo2ODg6CiteSWlmICh0Y211X21lbWNweV9mcm9tX2lvdmVjKGlu X2J1Ziwgc2l6ZW9mKGluX2J1ZiksIGlvdmVjLCBpb3ZfY250KSA+PSBzaXplb2YoaW5fYnVmKSkk CgpFUlJPUjogYnJhY2VzIHt9IGFyZSBuZWNlc3NhcnkgZm9yIGFsbCBhcm1zIG9mIHRoaXMgc3Rh dGVtZW50CiMxMTk3OiBGSUxFOiB0Y211L2hlbHBlci5jOjY4ODoKKyAgICAgICBpZiAodGNtdV9t ZW1jcHlfZnJvbV9pb3ZlYyhpbl9idWYsIHNpemVvZihpbl9idWYpLCBpb3ZlYywgaW92X2NudCkg Pj0gc2l6ZW9mKGluX2J1ZikpClsuLi5dCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVy IHVzZSB0YWJzCiMxMTk4OiBGSUxFOiB0Y211L2hlbHBlci5jOjY4OToKK15JXklyZXR1cm4gVENN VV9TVFNfSU5WQUxJRF9QQVJBTV9MSVNUX0xFTjskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxk IG5ldmVyIHVzZSB0YWJzCiMxMjAwOiBGSUxFOiB0Y211L2hlbHBlci5jOjY5MToKK15JLyogQWJv cnQgaWYgIXBmIG9yIHNwICovJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2Ug dGFicwojMTIwMTogRklMRTogdGNtdS9oZWxwZXIuYzo2OTI6CiteSWlmICghKGNkYlsxXSAmIDB4 MTApIHx8IChjZGJbMV0gJiAweDAxKSkkCgpFUlJPUjogYnJhY2VzIHt9IGFyZSBuZWNlc3Nhcnkg Zm9yIGFsbCBhcm1zIG9mIHRoaXMgc3RhdGVtZW50CiMxMjAxOiBGSUxFOiB0Y211L2hlbHBlci5j OjY5MjoKKyAgICAgICBpZiAoIShjZGJbMV0gJiAweDEwKSB8fCAoY2RiWzFdICYgMHgwMSkpClsu Li5dCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMjAyOiBGSUxF OiB0Y211L2hlbHBlci5jOjY5MzoKK15JXklyZXR1cm4gVENNVV9TVFNfSU5WQUxJRF9DREI7JAoK RVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTIwNDogRklMRTogdGNt dS9oZWxwZXIuYzo2OTU6CiteSW1lbXNldChidWYsIDAsIHNpemVvZihidWYpKTskCgpFUlJPUjog Y29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMjA1OiBGSUxFOiB0Y211L2hlbHBl ci5jOjY5NjoKK15JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUobW9kZXNlbnNlX2hhbmRsZXJz KTsgaSsrKSB7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTIw NjogRklMRTogdGNtdS9oZWxwZXIuYzo2OTc6CiteSV5JaWYgKHBhZ2VfY29kZSA9PSBtb2Rlc2Vu c2VfaGFuZGxlcnNbaV0ucGFnZSQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNl IHRhYnMKIzEyMDc6IEZJTEU6IHRjbXUvaGVscGVyLmM6Njk4OgorXkleSSAgICAmJiBzdWJwYWdl X2NvZGUgPT0gbW9kZXNlbnNlX2hhbmRsZXJzW2ldLnN1YnBhZ2UpIHskCgpFUlJPUjogY29kZSBp bmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMjA4OiBGSUxFOiB0Y211L2hlbHBlci5jOjY5 OToKK15JXkleSXJldCA9IG1vZGVzZW5zZV9oYW5kbGVyc1tpXS5nZXQoZGV2LCAmYnVmW2hkcl9s ZW5dLCQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzEyMDk6IEZJ TEU6IHRjbXUvaGVscGVyLmM6NzAwOgorXkleSV5JXkleSV5JXklzaXplb2YoYnVmKSAtIGhkcl9s ZW4pOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzEyMTA6IEZJ TEU6IHRjbXUvaGVscGVyLmM6NzAxOgorXkleSV5JaWYgKHJldCA8PSAwKSQKCkVSUk9SOiBicmFj ZXMge30gYXJlIG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzEyMTA6 IEZJTEU6IHRjbXUvaGVscGVyLmM6NzAxOgorICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0 IDw9IDApClsuLi5dCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMx MjExOiBGSUxFOiB0Y211L2hlbHBlci5jOjcwMjoKK15JXkleSV5JcmV0dXJuIFRDTVVfU1RTX0lO VkFMSURfQ0RCOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzEy MTM6IEZJTEU6IHRjbXUvaGVscGVyLmM6NzA0OgorXkleSV5JaWYgICghc2VsZWN0X3RlbiAmJiAo aGRyX2xlbiArIHJldCA+PSAyNTUpKSQKCkVSUk9SOiBicmFjZXMge30gYXJlIG5lY2Vzc2FyeSBm b3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzEyMTM6IEZJTEU6IHRjbXUvaGVscGVyLmM6 NzA0OgorICAgICAgICAgICAgICAgICAgICAgICBpZiAgKCFzZWxlY3RfdGVuICYmIChoZHJfbGVu ICsgcmV0ID49IDI1NSkpClsuLi5dCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVz ZSB0YWJzCiMxMjE0OiBGSUxFOiB0Y211L2hlbHBlci5jOjcwNToKK15JXkleSV5JcmV0dXJuIFRD TVVfU1RTX0lOVkFMSURfQ0RCOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNl IHRhYnMKIzEyMTY6IEZJTEU6IHRjbXUvaGVscGVyLmM6NzA3OgorXkleSV5JZ290X3NlbnNlID0g dHJ1ZTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMjE3OiBG SUxFOiB0Y211L2hlbHBlci5jOjcwODoKK15JXkleSWJyZWFrOyQKCkVSUk9SOiBjb2RlIGluZGVu dCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzEyMTg6IEZJTEU6IHRjbXUvaGVscGVyLmM6NzA5Ogor XkleSX0kCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMjE5OiBG SUxFOiB0Y211L2hlbHBlci5jOjcxMDoKK15JfSQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQg bmV2ZXIgdXNlIHRhYnMKIzEyMjE6IEZJTEU6IHRjbXUvaGVscGVyLmM6NzEyOgorXklpZiAoIWdv dF9zZW5zZSkkCgpFUlJPUjogYnJhY2VzIHt9IGFyZSBuZWNlc3NhcnkgZm9yIGFsbCBhcm1zIG9m IHRoaXMgc3RhdGVtZW50CiMxMjIxOiBGSUxFOiB0Y211L2hlbHBlci5jOjcxMjoKKyAgICAgICBp ZiAoIWdvdF9zZW5zZSkKWy4uLl0KCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNl IHRhYnMKIzEyMjI6IEZJTEU6IHRjbXUvaGVscGVyLmM6NzEzOgorXkleSXJldHVybiBUQ01VX1NU U19JTlZBTElEX0NEQjskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJz CiMxMjI0OiBGSUxFOiB0Y211L2hlbHBlci5jOjcxNToKK15JaWYgKGFsbG9jX2xlbiA8IChoZHJf bGVuICsgcmV0KSkkCgpFUlJPUjogYnJhY2VzIHt9IGFyZSBuZWNlc3NhcnkgZm9yIGFsbCBhcm1z IG9mIHRoaXMgc3RhdGVtZW50CiMxMjI0OiBGSUxFOiB0Y211L2hlbHBlci5jOjcxNToKKyAgICAg ICBpZiAoYWxsb2NfbGVuIDwgKGhkcl9sZW4gKyByZXQpKQpbLi4uXQoKRVJST1I6IGNvZGUgaW5k ZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTIyNTogRklMRTogdGNtdS9oZWxwZXIuYzo3MTY6 CiteSV5JcmV0dXJuIFRDTVVfU1RTX0lOVkFMSURfUEFSQU1fTElTVF9MRU47JAoKRVJST1I6IGNv ZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTIyNzogRklMRTogdGNtdS9oZWxwZXIu Yzo3MTg6CiteSS8qIFZlcmlmeSB3aGF0IHdhcyBzZWxlY3RlZCBpcyBpZGVudGljYWwgdG8gd2hh dCBzZW5zZSByZXR1cm5zLCBzaW5jZSB3ZSQKCldBUk5JTkc6IEJsb2NrIGNvbW1lbnRzIHVzZSBh IGxlYWRpbmcgLyogb24gYSBzZXBhcmF0ZSBsaW5lCiMxMjI3OiBGSUxFOiB0Y211L2hlbHBlci5j OjcxODoKKyAgICAgICAvKiBWZXJpZnkgd2hhdCB3YXMgc2VsZWN0ZWQgaXMgaWRlbnRpY2FsIHRv IHdoYXQgc2Vuc2UgcmV0dXJucywgc2luY2Ugd2UKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQg bmV2ZXIgdXNlIHRhYnMKIzEyMjg6IEZJTEU6IHRjbXUvaGVscGVyLmM6NzE5OgorXkkgICBkb24n dCBzdXBwb3J0IGFjdHVhbGx5IHNldHRpbmcgYW55dGhpbmcuICovJAoKV0FSTklORzogQmxvY2sg Y29tbWVudHMgdXNlICogb24gc3Vic2VxdWVudCBsaW5lcwojMTIyODogRklMRTogdGNtdS9oZWxw ZXIuYzo3MTk6CisgICAgICAgLyogVmVyaWZ5IHdoYXQgd2FzIHNlbGVjdGVkIGlzIGlkZW50aWNh bCB0byB3aGF0IHNlbnNlIHJldHVybnMsIHNpbmNlIHdlCisgICAgICAgICAgZG9uJ3Qgc3VwcG9y dCBhY3R1YWxseSBzZXR0aW5nIGFueXRoaW5nLiAqLwoKV0FSTklORzogQmxvY2sgY29tbWVudHMg dXNlIGEgdHJhaWxpbmcgKi8gb24gYSBzZXBhcmF0ZSBsaW5lCiMxMjI4OiBGSUxFOiB0Y211L2hl bHBlci5jOjcxOToKKyAgICAgICAgICBkb24ndCBzdXBwb3J0IGFjdHVhbGx5IHNldHRpbmcgYW55 dGhpbmcuICovCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMjI5 OiBGSUxFOiB0Y211L2hlbHBlci5jOjcyMDoKK15JaWYgKG1lbWNtcCgmYnVmW2hkcl9sZW5dLCAm aW5fYnVmW2hkcl9sZW5dLCByZXQpKSQKCkVSUk9SOiBicmFjZXMge30gYXJlIG5lY2Vzc2FyeSBm b3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzEyMjk6IEZJTEU6IHRjbXUvaGVscGVyLmM6 NzIwOgorICAgICAgIGlmIChtZW1jbXAoJmJ1ZltoZHJfbGVuXSwgJmluX2J1ZltoZHJfbGVuXSwg cmV0KSkKWy4uLl0KCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzEy MzA6IEZJTEU6IHRjbXUvaGVscGVyLmM6NzIxOgorXkleSXJldHVybiBUQ01VX1NUU19JTlZBTElE X1BBUkFNX0xJU1Q7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwoj MTIzMjogRklMRTogdGNtdS9oZWxwZXIuYzo3MjM6CiteSXJldHVybiBUQ01VX1NUU19PSzskCgpF UlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMjM3OiBGSUxFOiB0Y211 L2hlbHBlci5jOjcyODoKK15JaWYgKChjZGJbNF0gPj4gNCkgJiAweGYpJAoKRVJST1I6IGJyYWNl cyB7fSBhcmUgbmVjZXNzYXJ5IGZvciBhbGwgYXJtcyBvZiB0aGlzIHN0YXRlbWVudAojMTIzNzog RklMRTogdGNtdS9oZWxwZXIuYzo3Mjg6CisgICAgICAgaWYgKChjZGJbNF0gPj4gNCkgJiAweGYp ClsuLi5dCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMjM4OiBG SUxFOiB0Y211L2hlbHBlci5jOjcyOToKK15JXklyZXR1cm4gVENNVV9TVFNfSU5WQUxJRF9DREI7 JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTI0MDogRklMRTog dGNtdS9oZWxwZXIuYzo3MzE6CiteSS8qIEN1cnJlbnRseSwgd2UgZG9uJ3QgYWxsb3cgZWplY3Rp bmcgdGhlIG1lZGl1bSwgc28gd2UncmUkCgpXQVJOSU5HOiBCbG9jayBjb21tZW50cyB1c2UgYSBs ZWFkaW5nIC8qIG9uIGEgc2VwYXJhdGUgbGluZQojMTI0MDogRklMRTogdGNtdS9oZWxwZXIuYzo3 MzE6CisgICAgICAgLyogQ3VycmVudGx5LCB3ZSBkb24ndCBhbGxvdyBlamVjdGluZyB0aGUgbWVk aXVtLCBzbyB3ZSdyZQoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwoj MTI0MTogRklMRTogdGNtdS9oZWxwZXIuYzo3MzI6CiteSSAqIGlnbm9yaW5nIHRoZSBGQk9fUFJF Vl9FSkVDVCBmbGFnLCBidXQgaXQgbWF5IHR1cm4gb3V0IHRoYXQkCgpFUlJPUjogY29kZSBpbmRl bnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMjQyOiBGSUxFOiB0Y211L2hlbHBlci5jOjczMzoK K15JICogaW5pdGlhdG9ycyBkbyBub3QgaGFuZGxlIHRoaXMgd2VsbCwgc28gd2UgbWF5IGhhdmUg dG8gY2hhbmdlJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTI0 MzogRklMRTogdGNtdS9oZWxwZXIuYzo3MzQ6CiteSSAqIHRoaXMgYmVoYXZpb3IuJAoKRVJST1I6 IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTI0NDogRklMRTogdGNtdS9oZWxw ZXIuYzo3MzU6CiteSSAqLyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRh YnMKIzEyNDY6IEZJTEU6IHRjbXUvaGVscGVyLmM6NzM3OgorXklpZiAoIShjZGJbNF0gJiAweDAx KSkkCgpFUlJPUjogYnJhY2VzIHt9IGFyZSBuZWNlc3NhcnkgZm9yIGFsbCBhcm1zIG9mIHRoaXMg c3RhdGVtZW50CiMxMjQ2OiBGSUxFOiB0Y211L2hlbHBlci5jOjczNzoKKyAgICAgICBpZiAoIShj ZGJbNF0gJiAweDAxKSkKWy4uLl0KCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNl IHRhYnMKIzEyNDc6IEZJTEU6IHRjbXUvaGVscGVyLmM6NzM4OgorXkleSXJldHVybiBUQ01VX1NU U19JTlZBTElEX0NEQjskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJz CiMxMjQ5OiBGSUxFOiB0Y211L2hlbHBlci5jOjc0MDoKK15JcmV0dXJuIFRDTVVfU1RTX09LOyQK CldBUk5JTkc6IGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBkZWZpbmVzIHNob3VsZCBiZSBhdm9pZGVk CiMxMjY5OiBGSUxFOiB0Y211L2hlbHBlci5oOjEzOgorI2lmbmRlZiBfX1RDTVVfSEVMUEVSX0gK CkVSUk9SOiBsaW5lIG92ZXIgOTAgY2hhcmFjdGVycwojMTI3NTogRklMRTogdGNtdS9oZWxwZXIu aDoxOToKK2ludCB0Y211X2VtdWxhdGVfaW5xdWlyeShzdHJ1Y3QgdGNtdV9kZXZpY2UgKmRldiwg dWludDhfdCAqY2RiLCBzdHJ1Y3QgaW92ZWMgKmlvdmVjLCBzaXplX3QgaW92X2NudCk7CgpXQVJO SU5HOiBsaW5lIG92ZXIgODAgY2hhcmFjdGVycwojMTI3NzogRklMRTogdGNtdS9oZWxwZXIuaDoy MToKK2ludCB0Y211X2VtdWxhdGVfdGVzdF91bml0X3JlYWR5KHVpbnQ4X3QgKmNkYiwgc3RydWN0 IGlvdmVjICppb3ZlYywgc2l6ZV90IGlvdl9jbnQpOwoKV0FSTklORzogbGluZSBvdmVyIDgwIGNo YXJhY3RlcnMKIzEyNzg6IEZJTEU6IHRjbXUvaGVscGVyLmg6MjI6CitpbnQgdGNtdV9lbXVsYXRl X3JlYWRfY2FwYWNpdHlfMTAodWludDY0X3QgbnVtX2xiYXMsIHVpbnQzMl90IGJsb2NrX3NpemUs IHVpbnQ4X3QgKmNkYiwKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMK IzEyNzk6IEZJTEU6IHRjbXUvaGVscGVyLmg6MjM6CiteSV5JXkleSSAgc3RydWN0IGlvdmVjICpp b3ZlYywgc2l6ZV90IGlvdl9jbnQpOyQKCldBUk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJz CiMxMjgwOiBGSUxFOiB0Y211L2hlbHBlci5oOjI0OgoraW50IHRjbXVfZW11bGF0ZV9yZWFkX2Nh cGFjaXR5XzE2KHVpbnQ2NF90IG51bV9sYmFzLCB1aW50MzJfdCBibG9ja19zaXplLCB1aW50OF90 ICpjZGIsCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMjgxOiBG SUxFOiB0Y211L2hlbHBlci5oOjI1OgorXkleSV5JXkkgIHN0cnVjdCBpb3ZlYyAqaW92ZWMsIHNp emVfdCBpb3ZfY250KTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJz CiMxMjgzOiBGSUxFOiB0Y211L2hlbHBlci5oOjI3OgorXkleSV5JICAgIHN0cnVjdCBpb3ZlYyAq aW92ZWMsIHNpemVfdCBpb3ZfY250KTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVy IHVzZSB0YWJzCiMxMjg1OiBGSUxFOiB0Y211L2hlbHBlci5oOjI5OgorXkleSV5JICAgICBzdHJ1 Y3QgaW92ZWMgKmlvdmVjLCBzaXplX3QgaW92X2NudCk7JAoKV0FSTklORzogQmxvY2sgY29tbWVu dHMgdXNlIGEgbGVhZGluZyAvKiBvbiBhIHNlcGFyYXRlIGxpbmUKIzE1MTQ6IEZJTEU6IHRjbXUv dGNtdS5jOjIyMToKKyAgICAgICAgeyAvKiBlbmQgb2YgbGlzdCAqLyB9CgpXQVJOSU5HOiBCbG9j ayBjb21tZW50cyB1c2UgYSBsZWFkaW5nIC8qIG9uIGEgc2VwYXJhdGUgbGluZQojMTUyMzogRklM RTogdGNtdS90Y211LmM6MjMwOgorICAgICAgICB7IC8qIGVuZCBvZiBsaXN0ICovIH0KCkVSUk9S OiBkbyBub3QgdXNlIGFzc2lnbm1lbnQgaW4gaWYgY29uZGl0aW9uCiMxNTkwOiBGSUxFOiB0Y211 L3RjbXUuYzoyOTc6CisgICAgaWYgKChhaW8gPSBxZW11X29wdF9nZXQoY29tbW9uX29wdHMsICJh aW8iKSkgIT0gTlVMTCkgewoKRVJST1I6IGRvIG5vdCB1c2UgYXNzaWdubWVudCBpbiBpZiBjb25k aXRpb24KIzE2MDI6IEZJTEU6IHRjbXUvdGNtdS5jOjMwOToKKyAgICBpZiAoKGJ1ZiA9IHFlbXVf b3B0X2dldChjb21tb25fb3B0cywgImZvcm1hdCIpKSAhPSBOVUxMKSB7CgpFUlJPUjogYnJhY2Vz IHt9IGFyZSBuZWNlc3NhcnkgZm9yIGFsbCBhcm1zIG9mIHRoaXMgc3RhdGVtZW50CiMxNjE3OiBG SUxFOiB0Y211L3RjbXUuYzozMjQ6CisgICAgaWYgKHJlYWRfb25seSkKWy4uLl0KCldBUk5JTkc6 IEJsb2NrIGNvbW1lbnRzIHVzZSBhIGxlYWRpbmcgLyogb24gYSBzZXBhcmF0ZSBsaW5lCiMxNjIw OiBGSUxFOiB0Y211L3RjbXUuYzozMjc6CisgICAgLyogYmRydl9vcGVuKCkgZGVmYXVsdHMgdG8g dGhlIHZhbHVlcyBpbiBiZHJ2X2ZsYWdzIChmb3IgY29tcGF0aWJpbGl0eQoKV0FSTklORzogQmxv Y2sgY29tbWVudHMgdXNlIGEgdHJhaWxpbmcgKi8gb24gYSBzZXBhcmF0ZSBsaW5lCiMxNjIyOiBG SUxFOiB0Y211L3RjbXUuYzozMjk6CisgICAgICogQXBwbHkgdGhlIGRlZmF1bHRzIGhlcmUgaW5z dGVhZC4gKi8KCkVSUk9SOiBzcGFjZSByZXF1aXJlZCBiZWZvcmUgdGhlIG9wZW4gcGFyZW50aGVz aXMgJygnCiMxNzEyOiBGSUxFOiB0Y211L3RjbXUuYzo0MTk6CisgICAgaWYoZXhwKQoKRVJST1I6 IGJyYWNlcyB7fSBhcmUgbmVjZXNzYXJ5IGZvciBhbGwgYXJtcyBvZiB0aGlzIHN0YXRlbWVudAoj MTcxMjogRklMRTogdGNtdS90Y211LmM6NDE5OgorICAgIGlmKGV4cCkKWy4uLl0KCkVSUk9SOiBj b2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzE3NjE6IEZJTEU6IHRjbXUvdGNtdS5j OjQ2ODoKK15JaWQgPSBkZXZpY2U7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1 c2UgdGFicwojMTc2MjogRklMRTogdGNtdS90Y211LmM6NDY5OgorICAgIF5JYmxrID0gYmxrX2J5 X25hbWUoaWQpOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzE3 NjM6IEZJTEU6IHRjbXUvdGNtdS5jOjQ3MDoKKyAgICBeSWlmICghYmxrKSB7JAoKRVJST1I6IGNv ZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTc2NDogRklMRTogdGNtdS90Y211LmM6 NDcxOgorICAgICAgICBeSWVycm9yX3NldGcoZXJycCwgIlRDTVU6IERldmljZSBub3QgZm91bmQ6 ICVzIiwgaWQpOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzE3 NjU6IEZJTEU6IHRjbXUvdGNtdS5jOjQ3MjoKKyAgICAgICAgXklyZXR1cm4gZmFsc2U7JAoKRVJS T1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTc2NjogRklMRTogdGNtdS90 Y211LmM6NDczOgorICAgIF5JfSQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNl IHRhYnMKIzE3Njc6IEZJTEU6IHRjbXUvdGNtdS5jOjQ3NDoKKyAgICBeSWV4cCA9IHRjbXVfZXhw b3J0X2xvb2t1cChibGspOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRh YnMKIzE3Njg6IEZJTEU6IHRjbXUvdGNtdS5jOjQ3NToKKyAgICBeSWlmICghZXhwKSB7JAoKRVJS T1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTc2OTogRklMRTogdGNtdS90 Y211LmM6NDc2OgorICAgICAgICBeSWVycm9yX3NldGcoZXJycCwgIlRDTVU6IERldmljZSBub3Qg Zm91bmQ6ICVzIiwgaWQpOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRh YnMKIzE3NzA6IEZJTEU6IHRjbXUvdGNtdS5jOjQ3NzoKKyAgICAgICAgXklyZXR1cm4gZmFsc2U7 JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTc3MTogRklMRTog dGNtdS90Y211LmM6NDc4OgorICAgXkl9JAoKRVJST1I6IGRvIG5vdCB1c2UgQzk5IC8vIGNvbW1l bnRzCiMxNzcyOiBGSUxFOiB0Y211L3RjbXUuYzo0Nzk6CisgICAgfS8vIFRPRE86IGVsc2UgdG8g Y2hlY2sgaWQ/CgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxNzgw OiBGSUxFOiB0Y211L3RjbXUuYzo0ODc6CiteSWlmICgqb3B0cyA9PSAnQCcpIHskCgpFUlJPUjog YnJhY2VzIHt9IGFyZSBuZWNlc3NhcnkgZm9yIGFsbCBhcm1zIG9mIHRoaXMgc3RhdGVtZW50CiMx NzgwOiBGSUxFOiB0Y211L3RjbXUuYzo0ODc6CisgICAgICAgaWYgKCpvcHRzID09ICdAJykgewpb Li4uXQorICAgICAgIH0gZWxzZQpbLi4uXQoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZl ciB1c2UgdGFicwojMTc4MTogRklMRTogdGNtdS90Y211LmM6NDg4OgorXkkgICAgKnRvID0gJywn OyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzE3ODI6IEZJTEU6 IHRjbXUvdGNtdS5jOjQ4OToKK15JfSBlbHNlJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBu ZXZlciB1c2UgdGFicwojMTc4MzogRklMRTogdGNtdS90Y211LmM6NDkwOgorXkkgICAgKnRvID0g Km9wdHM7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTc4NTog RklMRTogdGNtdS90Y211LmM6NDkyOgorXklvcHRzKys7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNo b3VsZCBuZXZlciB1c2UgdGFicwojMTc4NjogRklMRTogdGNtdS90Y211LmM6NDkzOgorXkl0bysr OyQKCkVSUk9SOiBzcGFjZSByZXF1aXJlZCBiZWZvcmUgdGhlIG9wZW4gcGFyZW50aGVzaXMgJygn CiMxNzg5OiBGSUxFOiB0Y211L3RjbXUuYzo0OTY6CisgICAgaWYodG8pCgpFUlJPUjogYnJhY2Vz IHt9IGFyZSBuZWNlc3NhcnkgZm9yIGFsbCBhcm1zIG9mIHRoaXMgc3RhdGVtZW50CiMxNzg5OiBG SUxFOiB0Y211L3RjbXUuYzo0OTY6CisgICAgaWYodG8pClsuLi5dCgpFUlJPUjogY29kZSBpbmRl bnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxODA2OiBGSUxFOiB0Y211L3RjbXUuYzo1MTM6Cisg ICAgXklpZCA9IGRldmljZTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0 YWJzCiMxODA3OiBGSUxFOiB0Y211L3RjbXUuYzo1MTQ6CisgICAgXklleHAgPSB0Y211X2V4cG9y dF9sb29rdXAoYmxrX2J5X25hbWUoaWQpKTskCgpFUlJPUjogZWxzZSBzaG91bGQgZm9sbG93IGNs b3NlIGJyYWNlICd9JwojMTgwOTogRklMRTogdGNtdS90Y211LmM6NTE2OgorICAgIH0KKyAgICBl bHNlIHsKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzE4MTA6IEZJ TEU6IHRjbXUvdGNtdS5jOjUxNzoKK15JUWVtdU9wdHMgKiBleHBvcnRfb3B0czskCgpFUlJPUjog ImZvbyAqIGJhciIgc2hvdWxkIGJlICJmb28gKmJhciIKIzE4MTA6IEZJTEU6IHRjbXUvdGNtdS5j OjUxNzoKKyAgICAgICBRZW11T3B0cyAqIGV4cG9ydF9vcHRzOwoKRVJST1I6IGNvZGUgaW5kZW50 IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTgxMjogRklMRTogdGNtdS90Y211LmM6NTE5OgorXklu ZXdfZGV2aWNlID0gZ19tYWxsb2MwKHN0cmxlbihkZXZpY2UpICsgMSk7JAoKRVJST1I6IGNvZGUg aW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTgxMzogRklMRTogdGNtdS90Y211LmM6NTIw OgorXkl0Y211X2NvbnZlcnRfZGVsaW0obmV3X2RldmljZSwgZGV2aWNlKTskCgpXQVJOSU5HOiBC bG9jayBjb21tZW50cyB1c2UgYSBsZWFkaW5nIC8qIG9uIGEgc2VwYXJhdGUgbGluZQojMTgxNTog RklMRTogdGNtdS90Y211LmM6NTIyOgorICAgICAgICAvKiBwYXJzZSBuZXdfZGV2aWNlIGludG8g YW4gUWVtdU9wdHMgYW5kIGxpbmsgaW50bwoKV0FSTklORzogQmxvY2sgY29tbWVudHMgdXNlICog b24gc3Vic2VxdWVudCBsaW5lcwojMTgxNjogRklMRTogdGNtdS90Y211LmM6NTIzOgorICAgICAg ICAvKiBwYXJzZSBuZXdfZGV2aWNlIGludG8gYW4gUWVtdU9wdHMgYW5kIGxpbmsgaW50bworICAg ICAgICAgICBxZW11X3RjbXVfZXhwb3J0X29wdHMgd2l0aCBRZW11T3B0cy0+aWQgc2V0IHdoaWxl CgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxODE5OiBGSUxFOiB0 Y211L3RjbXUuYzo1MjY6CiteSWV4cG9ydF9vcHRzID0gcWVtdV9vcHRzX3BhcnNlX25vaXNpbHko JnFlbXVfdGNtdV9leHBvcnRfb3B0cywkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVy IHVzZSB0YWJzCiMxODIwOiBGSUxFOiB0Y211L3RjbXUuYzo1Mjc6CiteSV5JXkleSV5JICAgIG5l d19kZXZpY2UsIGZhbHNlKTskCgpFUlJPUjogc3BhY2UgcmVxdWlyZWQgYmVmb3JlIHRoZSBvcGVu IHBhcmVudGhlc2lzICcoJwojMTgyNDogRklMRTogdGNtdS90Y211LmM6NTMxOgorICAgICAgICBp ZighZXhwb3J0X29wdHMpCgpFUlJPUjogYnJhY2VzIHt9IGFyZSBuZWNlc3NhcnkgZm9yIGFsbCBh cm1zIG9mIHRoaXMgc3RhdGVtZW50CiMxODI0OiBGSUxFOiB0Y211L3RjbXUuYzo1MzE6CisgICAg ICAgIGlmKCFleHBvcnRfb3B0cykKWy4uLl0KCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2 ZXIgdXNlIHRhYnMKIzE4Mjc6IEZJTEU6IHRjbXUvdGNtdS5jOjUzNDoKK15JaWYgKGV4cG9ydF9p bml0X2Z1bmMoTlVMTCwgZXhwb3J0X29wdHMsIE5VTEwpKSQKCkVSUk9SOiBicmFjZXMge30gYXJl IG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzE4Mjc6IEZJTEU6IHRj bXUvdGNtdS5jOjUzNDoKKyAgICAgICBpZiAoZXhwb3J0X2luaXRfZnVuYyhOVUxMLCBleHBvcnRf b3B0cywgTlVMTCkpClsuLi5dCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0 YWJzCiMxODI4OiBGSUxFOiB0Y211L3RjbXUuYzo1MzU6CiteSSAgICBnb3RvIGZhaWw7JAoKRVJS T1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTgzMDogRklMRTogdGNtdS90 Y211LmM6NTM3OgorXklpZCA9IHFlbXVfb3B0c19pZChleHBvcnRfb3B0cyk7JAoKRVJST1I6IGNv ZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTgzMTogRklMRTogdGNtdS90Y211LmM6 NTM4OgorXklleHAgPSB0Y211X2V4cG9ydF9sb29rdXAoYmxrX2J5X25hbWUoaWQpKTskCgp0b3Rh bDogNjIwIGVycm9ycywgMjYgd2FybmluZ3MsIDE4MDkgbGluZXMgY2hlY2tlZAoKWW91ciBwYXRj aCBoYXMgc3R5bGUgcHJvYmxlbXMsIHBsZWFzZSByZXZpZXcuICBJZiBhbnkgb2YgdGhlc2UgZXJy b3JzCmFyZSBmYWxzZSBwb3NpdGl2ZXMgcmVwb3J0IHRoZW0gdG8gdGhlIG1haW50YWluZXIsIHNl ZQpDSEVDS1BBVENIIGluIE1BSU5UQUlORVJTLgoKPT09IE9VVFBVVCBFTkQgPT09CgpUZXN0IGNv bW1hbmQgZXhpdGVkIHdpdGggY29kZTogMQoKClRoZSBmdWxsIGxvZyBpcyBhdmFpbGFibGUgYXQK aHR0cDovL3BhdGNoZXcub3JnL2xvZ3MvMTU0NTM4NzM4Ny05NjEzLTEtZ2l0LXNlbmQtZW1haWwt YmFpeWFvd2VpQGNtc3MuY2hpbmFtb2JpbGUuY29tL3Rlc3RpbmcuY2hlY2twYXRjaC8/dHlwZT1t ZXNzYWdlLgotLS0KRW1haWwgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgUGF0Y2hldyBbaHR0 cDovL3BhdGNoZXcub3JnL10uClBsZWFzZSBzZW5kIHlvdXIgZmVlZGJhY2sgdG8gcGF0Y2hldy1k ZXZlbEByZWRoYXQuY29t