From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32039 invoked by alias); 31 Jan 2003 15:26:00 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 32021 invoked by uid 71); 31 Jan 2003 15:26:00 -0000 Resent-Date: 31 Jan 2003 15:26:00 -0000 Resent-Message-ID: <20030131152600.32019.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, p.grassberger@fz-juelich.de Received: (qmail 31223 invoked by uid 48); 31 Jan 2003 15:23:18 -0000 Message-Id: <20030131152318.31222.qmail@sources.redhat.com> Date: Fri, 31 Jan 2003 15:26:00 -0000 From: p.grassberger@fz-juelich.de Reply-To: p.grassberger@fz-juelich.de To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: c/9526: Internal compiler error X-SW-Source: 2003-01/txt/msg01763.txt.bz2 List-Id: >Number: 9526 >Category: c >Synopsis: Internal compiler error >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Jan 31 15:26:00 UTC 2003 >Closed-Date: >Last-Modified: >Originator: p.grassberger@fz-juelich.de >Release: gcc version 3.0.1 >Organization: >Environment: Reading specs from /usr/local/bin/../lib/gcc-lib/sparc-sun-solaris2.7/3.0.1/specs Configured with: ../gcc-3.0.1-src/gcc-3.0.1/configure --prefix=/usr/local/gcc --enable-languages=c,c++ Thread model: posix >Description: >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="zhou.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="zhou.i" IyAxICJ6aG91LmMiCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJp czIuNy8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDEgMwojIDE0ICIvdXNyL2xvY2FsL2xpYi9nY2Mt bGliL3NwYXJjLXN1bi1zb2xhcmlzMi43LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91 c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjcvMy4wLjEvaW5jbHVkZS9z dGRhcmcuaCIgMSAzCiMgNDMgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFy aXMyLjcvMy4wLjEvaW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0 IF9fZ251Y192YV9saXN0OwojIDE1ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1z b2xhcmlzMi43LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMiAzCiMgMzQgIi91c3IvbG9jYWwvbGli L2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjcvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAzCiNw cmFnbWEgaWRlbnQgIkAoIylzdGRpby5oCTEuNjkJOTgvMDcvMTMgU01JIgoKIyAxICIvdXNyL2lu Y2x1ZGUvc3lzL2ZlYXR1cmVfdGVzdHMuaCIgMSAzCiMgMTMgIi91c3IvaW5jbHVkZS9zeXMvZmVh dHVyZV90ZXN0cy5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIylmZWF0dXJlX3Rlc3RzLmgJMS4xOAk5 OS8wNy8yNiBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvaXNhX2RlZnMuaCIgMSAzCiMgOSAi L3Vzci9pbmNsdWRlL3N5cy9pc2FfZGVmcy5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIylpc2FfZGVm cy5oCTEuMjAJOTkvMDUvMDQgU01JIgojIDE2ICIvdXNyL2luY2x1ZGUvc3lzL2ZlYXR1cmVfdGVz dHMuaCIgMiAzCiMgMzcgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMy LjcvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3ZhX2xp c3QuaCIgMSAzCiMgOSAiL3Vzci9pbmNsdWRlL3N5cy92YV9saXN0LmgiIDMKI3ByYWdtYSBpZGVu dCAiQCgjKXZhX2xpc3QuaAkxLjEyCTk5LzA1LzA0IFNNSSIKIyAyNiAiL3Vzci9pbmNsdWRlL3N5 cy92YV9saXN0LmgiIDMKdHlwZWRlZiB2b2lkICpfX3ZhX2xpc3Q7CiMgMzggIi91c3IvbG9jYWwv bGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjcvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAy IDMKIyAxICIvdXNyL2luY2x1ZGUvc3RkaW9fdGFnLmgiIDEgMwojIDkgIi91c3IvaW5jbHVkZS9z dGRpb190YWcuaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpc3RkaW9fdGFnLmgJMS4zCTk4LzA0LzIw IFNNSSIKIyAyMSAiL3Vzci9pbmNsdWRlL3N0ZGlvX3RhZy5oIiAzCnR5cGVkZWYgc3RydWN0IF9f RklMRSBfX0ZJTEU7CiMgMzkgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFy aXMyLjcvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvc3RkaW9f aW1wbC5oIiAxIDMKIyA5ICIvdXNyL2luY2x1ZGUvc3RkaW9faW1wbC5oIiAzCiNwcmFnbWEgaWRl bnQgIkAoIylzdGRpb19pbXBsLmgJMS44CTk5LzA2LzEwIFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRl L3N5cy9pc2FfZGVmcy5oIiAxIDMKIyAxMiAiL3Vzci9pbmNsdWRlL3N0ZGlvX2ltcGwuaCIgMiAz CiMgMjIgIi91c3IvaW5jbHVkZS9zdGRpb19pbXBsLmgiIDMKdHlwZWRlZiBpbnQgc3NpemVfdDsK IyAzOCAiL3Vzci9pbmNsdWRlL3N0ZGlvX2ltcGwuaCIgMwpzdHJ1Y3QgX19GSUxFCnsKCgoKCiAg ICAgICAgc3NpemVfdCBfY250OwogICAgICAgIHVuc2lnbmVkIGNoYXIgKl9wdHI7CgogICAgICAg IHVuc2lnbmVkIGNoYXIgKl9iYXNlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgX2ZsYWc7CiAgICAg ICAgdW5zaWduZWQgY2hhciBfZmlsZTsKICAgICAgICB1bnNpZ25lZCBfX29yaWVudGF0aW9uOjI7 CiAgICAgICAgdW5zaWduZWQgX19pb25vbG9jazoxOwogICAgICAgIHVuc2lnbmVkIF9fZmlsbGVy OjU7Cn07CiMgNDAgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjcv My4wLjEvaW5jbHVkZS9zdGRpby5oIiAyIDMKIyA1NSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9z cGFyYy1zdW4tc29sYXJpczIuNy8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBfX0ZJ TEUgRklMRTsKCgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsKIyA3NCAiL3Vzci9s b2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNy8zLjAuMS9pbmNsdWRlL3N0ZGlv LmgiIDMKdHlwZWRlZiBsb25nIGxvbmcgX19sb25nbG9uZ190OwojIDg4ICIvdXNyL2xvY2FsL2xp Yi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi43LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMwp0 eXBlZGVmIGxvbmcgb2ZmX3Q7CgoKCgoKCgp0eXBlZGVmIF9fbG9uZ2xvbmdfdCBvZmY2NF90OwoK CgoKCgp0eXBlZGVmIGxvbmcgZnBvc190OwoKCgoKCgoKdHlwZWRlZiBfX2xvbmdsb25nX3QgZnBv czY0X3Q7CiMgMjAzICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi43 LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gRklMRSBfX2lvYlsyMF07CiMgMjE1ICIv dXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi43LzMuMC4xL2luY2x1ZGUv c3RkaW8uaCIgMwpleHRlcm4gdW5zaWduZWQgY2hhciBfc2lidWZbXSwgX3NvYnVmW107CiMgMjQ0 ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi43LzMuMC4xL2luY2x1 ZGUvc3RkaW8uaCIgMwpleHRlcm4gdW5zaWduZWQgY2hhciAqX2J1ZmVuZHRhYltdOwpleHRlcm4g RklMRSAqX2xhc3RidWY7CiMgMjc1ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1z b2xhcmlzMi43LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IHJlbW92ZShjb25z dCBjaGFyICopOwpleHRlcm4gaW50IHJlbmFtZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7 CmV4dGVybiBGSUxFICp0bXBmaWxlKHZvaWQpOwpleHRlcm4gY2hhciAqdG1wbmFtKGNoYXIgKik7 CgoKCmV4dGVybiBpbnQgZmNsb3NlKEZJTEUgKik7CmV4dGVybiBpbnQgZmZsdXNoKEZJTEUgKik7 CmV4dGVybiBGSUxFICpmb3Blbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBG SUxFICpmcmVvcGVuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBGSUxFICopOwpleHRlcm4g dm9pZCBzZXRidWYoRklMRSAqLCBjaGFyICopOwoKCmV4dGVybiB2b2lkIHNldGJ1ZmZlcihGSUxF ICosIGNoYXIgKiwgc2l6ZV90KTsKZXh0ZXJuIGludCBzZXRsaW5lYnVmKEZJTEUgKik7CgpleHRl cm4gaW50IHNldHZidWYoRklMRSAqLCBjaGFyICosIGludCwgc2l6ZV90KTsKCmV4dGVybiBpbnQg ZnByaW50ZihGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKCmV4dGVybiBpbnQgZnNjYW5mKEZJ TEUgKiwgY29uc3QgY2hhciAqLCAuLi4pOwoKZXh0ZXJuIGludCBwcmludGYoY29uc3QgY2hhciAq LCAuLi4pOwoKZXh0ZXJuIGludCBzY2FuZihjb25zdCBjaGFyICosIC4uLik7CgoKCgpleHRlcm4g aW50IHNucHJpbnRmKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIC4uLik7CgoKZXh0ZXJu IGludCBzcHJpbnRmKGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwoKZXh0ZXJuIGludCBzc2Nh bmYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7CmV4dGVybiBpbnQgdmZwcmludGYo RklMRSAqLCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKZXh0ZXJuIGludCB2cHJpbnRm KGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwoKCgpleHRlcm4gaW50IHZzbnByaW50Zihj aGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CgpleHRlcm4gaW50 IHZzcHJpbnRmKGNoYXIgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmV4dGVybiBp bnQgZmdldGMoRklMRSAqKTsKZXh0ZXJuIGNoYXIgKmZnZXRzKGNoYXIgKiwgaW50LCBGSUxFICop OwpleHRlcm4gaW50IGZwdXRjKGludCwgRklMRSAqKTsKZXh0ZXJuIGludCBmcHV0cyhjb25zdCBj aGFyICosIEZJTEUgKik7CmV4dGVybiBpbnQgZ2V0YyhGSUxFICopOwpleHRlcm4gaW50IGdldGNo YXIodm9pZCk7CmV4dGVybiBjaGFyICpnZXRzKGNoYXIgKik7CmV4dGVybiBpbnQgcHV0YyhpbnQs IEZJTEUgKik7CmV4dGVybiBpbnQgcHV0Y2hhcihpbnQpOwpleHRlcm4gaW50IHB1dHMoY29uc3Qg Y2hhciAqKTsKZXh0ZXJuIGludCB1bmdldGMoaW50LCBGSUxFICopOwpleHRlcm4gc2l6ZV90IGZy ZWFkKHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIEZJTEUgKik7CmV4dGVybiBzaXplX3QgZndyaXRl KGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIEZJTEUgKik7CmV4dGVybiBpbnQgZmdldHBv cyhGSUxFICosIGZwb3NfdCAqKTsKZXh0ZXJuIGludCBmc2VlayhGSUxFICosIGxvbmcsIGludCk7 CmV4dGVybiBpbnQgZnNldHBvcyhGSUxFICosIGNvbnN0IGZwb3NfdCAqKTsKZXh0ZXJuIGxvbmcg ZnRlbGwoRklMRSAqKTsKZXh0ZXJuIHZvaWQgcmV3aW5kKEZJTEUgKik7CmV4dGVybiB2b2lkIGNs ZWFyZXJyKEZJTEUgKik7CmV4dGVybiBpbnQgZmVvZihGSUxFICopOwpleHRlcm4gaW50IGZlcnJv cihGSUxFICopOwpleHRlcm4gdm9pZCBwZXJyb3IoY29uc3QgY2hhciAqKTsKCgpleHRlcm4gaW50 IF9fZmlsYnVmKEZJTEUgKik7CmV4dGVybiBpbnQgX19mbHNidWYoaW50LCBGSUxFICopOwojIDM1 MyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNy8zLjAuMS9pbmNs dWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIEZJTEUgKmZkb3BlbihpbnQsIGNvbnN0IGNoYXIgKik7CmV4 dGVybiBjaGFyICpjdGVybWlkKGNoYXIgKik7CmV4dGVybiBpbnQgZmlsZW5vKEZJTEUgKik7CiMg Mzc5ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi43LzMuMC4xL2lu Y2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gRklMRSAqcG9wZW4oY29uc3QgY2hhciAqLCBjb25zdCBj aGFyICopOwpleHRlcm4gY2hhciAqY3VzZXJpZChjaGFyICopOwpleHRlcm4gY2hhciAqdGVtcG5h bShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgZ2V0b3B0KGludCwgY2hh ciAqY29uc3QgKiwgY29uc3QgY2hhciAqKTsKCmV4dGVybiBpbnQgZ2V0c3Vib3B0KGNoYXIgKios IGNoYXIgKmNvbnN0ICosIGNoYXIgKiopOwoKZXh0ZXJuIGNoYXIgKm9wdGFyZzsKZXh0ZXJuIGlu dCBvcHRpbmQsIG9wdGVyciwgb3B0b3B0OwpleHRlcm4gaW50IGdldHcoRklMRSAqKTsKZXh0ZXJu IGludCBwdXR3KGludCwgRklMRSAqKTsKZXh0ZXJuIGludCBwY2xvc2UoRklMRSAqKTsKCgoKCgoK CmV4dGVybiBpbnQgZnNlZWtvKEZJTEUgKiwgb2ZmX3QsIGludCk7CmV4dGVybiBvZmZfdCBmdGVs bG8oRklMRSAqKTsKIyA0MDggIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFy aXMyLjcvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxFICpmb3BlbjY0KGNvbnN0 IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIEZJTEUgKmZyZW9wZW42NChjb25zdCBjaGFy ICosIGNvbnN0IGNoYXIgKiwgRklMRSAqKTsKZXh0ZXJuIEZJTEUgKnRtcGZpbGU2NCh2b2lkKTsK ZXh0ZXJuIGludCBmZ2V0cG9zNjQoRklMRSAqLCBmcG9zNjRfdCAqKTsKZXh0ZXJuIGludCBmc2V0 cG9zNjQoRklMRSAqLCBjb25zdCBmcG9zNjRfdCAqKTsKZXh0ZXJuIGludCBmc2Vla282NChGSUxF ICosIG9mZjY0X3QsIGludCk7CmV4dGVybiBvZmY2NF90IGZ0ZWxsbzY0KEZJTEUgKik7CiMgMiAi emhvdS5jIiAyCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIu Ny8zLjAuMS9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMKIyAyNSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxp Yi9zcGFyYy1zdW4tc29sYXJpczIuNy8zLjAuMS9pbmNsdWRlL3N0ZGxpYi5oIiAzCiNwcmFnbWEg aWRlbnQgIkAoIylzdGRsaWIuaAkxLjQ0CTk4LzAxLzIyIFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRl L3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDEgMwojIDI4ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3Nw YXJjLXN1bi1zb2xhcmlzMi43LzMuMC4xL2luY2x1ZGUvc3RkbGliLmgiIDIgMwojIDM4ICIvdXNy L2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi43LzMuMC4xL2luY2x1ZGUvc3Rk bGliLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBxdW90OwogICAgICAgIGludCBy ZW07Cn0gZGl2X3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgbG9uZyBxdW90OwogICAgICAg IGxvbmcgcmVtOwp9IGxkaXZfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgbG9uZyBsb25n IHF1b3Q7CiAgICAgICAgbG9uZyBsb25nIHJlbTsKfSBsbGRpdl90OwojIDc3ICIvdXNyL2xvY2Fs L2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi43LzMuMC4xL2luY2x1ZGUvc3RkbGliLmgi IDMKdHlwZWRlZiBsb25nIHVpZF90OwojIDEwNyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFy Yy1zdW4tc29sYXJpczIuNy8zLjAuMS9pbmNsdWRlL3N0ZGxpYi5oIiAzCnR5cGVkZWYgbG9uZyBp bnQgd2NoYXJfdDsKIyAxNDggIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFy aXMyLjcvMy4wLjEvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gdW5zaWduZWQgY2hhciBfX2N0 eXBlW107CgoKCmV4dGVybiBkb3VibGUgYXRvZihjb25zdCBjaGFyICopOwpleHRlcm4gaW50IGF0 b2koY29uc3QgY2hhciAqKTsKZXh0ZXJuIGxvbmcgaW50IGF0b2woY29uc3QgY2hhciAqKTsKZXh0 ZXJuIGRvdWJsZSBzdHJ0b2QoY29uc3QgY2hhciAqLCBjaGFyICoqKTsKZXh0ZXJuIGxvbmcgaW50 IHN0cnRvbChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CmV4dGVybiB1bnNpZ25lZCBsb25n IGludCBzdHJ0b3VsKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKCmV4dGVybiBpbnQgcmFu ZCh2b2lkKTsKZXh0ZXJuIHZvaWQgc3JhbmQodW5zaWduZWQgaW50KTsKCgoKCgpleHRlcm4gdm9p ZCAqY2FsbG9jKHNpemVfdCwgc2l6ZV90KTsKZXh0ZXJuIHZvaWQgZnJlZSh2b2lkICopOwpleHRl cm4gdm9pZCAqbWFsbG9jKHNpemVfdCk7CmV4dGVybiB2b2lkICpyZWFsbG9jKHZvaWQgKiwgc2l6 ZV90KTsKCmV4dGVybiB2b2lkIGFib3J0KHZvaWQpOwpleHRlcm4gaW50IGF0ZXhpdCh2b2lkICgq KSh2b2lkKSk7CmV4dGVybiB2b2lkIGV4aXQoaW50KTsKZXh0ZXJuIHZvaWQgX2V4aXRoYW5kbGUo dm9pZCk7CmV4dGVybiBjaGFyICpnZXRlbnYoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBzeXN0 ZW0oY29uc3QgY2hhciAqKTsKCmV4dGVybiB2b2lkICpic2VhcmNoKGNvbnN0IHZvaWQgKiwgY29u c3Qgdm9pZCAqLCBzaXplX3QsIHNpemVfdCwKICAgICAgICBpbnQgKCopKGNvbnN0IHZvaWQgKiwg Y29uc3Qgdm9pZCAqKSk7CmV4dGVybiB2b2lkIHFzb3J0KHZvaWQgKiwgc2l6ZV90LCBzaXplX3Qs CiAgICAgICAgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwoKZXh0ZXJuIGlu dCBhYnMoaW50KTsKZXh0ZXJuIGRpdl90IGRpdihpbnQsIGludCk7CmV4dGVybiBsb25nIGludCBs YWJzKGxvbmcpOwpleHRlcm4gbGRpdl90IGxkaXYobG9uZywgbG9uZyk7CgpleHRlcm4gaW50IG1i dG93Yyh3Y2hhcl90ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKZXh0ZXJuIGludCBtYmxlbihj b25zdCBjaGFyICosIHNpemVfdCk7CmV4dGVybiBpbnQgd2N0b21iKGNoYXIgKiwgd2NoYXJfdCk7 CgpleHRlcm4gc2l6ZV90IG1ic3Rvd2NzKHdjaGFyX3QgKiwgY29uc3QgY2hhciAqLCBzaXplX3Qp OwpleHRlcm4gc2l6ZV90IHdjc3RvbWJzKGNoYXIgKiwgY29uc3Qgd2NoYXJfdCAqLCBzaXplX3Qp OwoKCgoKZXh0ZXJuIGRvdWJsZSBkcmFuZDQ4KHZvaWQpOwpleHRlcm4gZG91YmxlIGVyYW5kNDgo dW5zaWduZWQgc2hvcnQgKik7CmV4dGVybiBsb25nIGpyYW5kNDgodW5zaWduZWQgc2hvcnQgKik7 CmV4dGVybiB2b2lkIGxjb25nNDgodW5zaWduZWQgc2hvcnQgKik7CmV4dGVybiBsb25nIGxyYW5k NDgodm9pZCk7CmV4dGVybiBsb25nIG1yYW5kNDgodm9pZCk7CmV4dGVybiBsb25nIG5yYW5kNDgo dW5zaWduZWQgc2hvcnQgKik7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCAqc2VlZDQ4KHVuc2lnbmVk IHNob3J0ICopOwpleHRlcm4gdm9pZCBzcmFuZDQ4KGxvbmcpOwpleHRlcm4gaW50IHB1dGVudihj aGFyICopOwpleHRlcm4gdm9pZCBzZXRrZXkoY29uc3QgY2hhciAqKTsKCgoKCgpleHRlcm4gdm9p ZCBzd2FiKGNvbnN0IGNoYXIgKiwgY2hhciAqLCBpbnQpOwoKCgoKZXh0ZXJuIGludCBta3N0ZW1w KGNoYXIgKik7CgoKZXh0ZXJuIGludCBta3N0ZW1wNjQoY2hhciAqKTsKCgoKCgoKZXh0ZXJuIGxv bmcgYTY0bChjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqZWN2dChkb3VibGUsIGludCwgaW50 ICosIGludCAqKTsKZXh0ZXJuIGNoYXIgKmZjdnQoZG91YmxlLCBpbnQsIGludCAqLCBpbnQgKik7 CmV4dGVybiBjaGFyICpnY3Z0KGRvdWJsZSwgaW50LCBjaGFyICopOwpleHRlcm4gaW50IGdldHN1 Ym9wdChjaGFyICoqLCBjaGFyICpjb25zdCAqLCBjaGFyICoqKTsKZXh0ZXJuIGludCBncmFudHB0 KGludCk7CmV4dGVybiBjaGFyICppbml0c3RhdGUodW5zaWduZWQsIGNoYXIgKiwgc2l6ZV90KTsK ZXh0ZXJuIGNoYXIgKmw2NGEobG9uZyk7CmV4dGVybiBjaGFyICpta3RlbXAoY2hhciAqKTsKZXh0 ZXJuIGNoYXIgKnB0c25hbWUoaW50KTsKZXh0ZXJuIGxvbmcgcmFuZG9tKHZvaWQpOwpleHRlcm4g Y2hhciAqcmVhbHBhdGgoY29uc3QgY2hhciAqLCBjaGFyICopOwpleHRlcm4gY2hhciAqc2V0c3Rh dGUoY29uc3QgY2hhciAqKTsKZXh0ZXJuIHZvaWQgc3JhbmRvbSh1bnNpZ25lZCk7CmV4dGVybiBp bnQgdHR5c2xvdCh2b2lkKTsKZXh0ZXJuIGludCB1bmxvY2twdChpbnQpOwpleHRlcm4gdm9pZCAq dmFsbG9jKHNpemVfdCk7CgoKCgpleHRlcm4gaW50IGR1cDIoaW50LCBpbnQpOwpleHRlcm4gY2hh ciAqcWVjdnQobG9uZyBkb3VibGUsIGludCwgaW50ICosIGludCAqKTsKZXh0ZXJuIGNoYXIgKnFm Y3Z0KGxvbmcgZG91YmxlLCBpbnQsIGludCAqLCBpbnQgKik7CmV4dGVybiBjaGFyICpxZ2N2dChs b25nIGRvdWJsZSwgaW50LCBjaGFyICopOwpleHRlcm4gY2hhciAqZ2V0Y3dkKGNoYXIgKiwgc2l6 ZV90KTsKZXh0ZXJuIGNvbnN0IGNoYXIgKmdldGV4ZWNuYW1lKHZvaWQpOwpleHRlcm4gY2hhciAq Z2V0bG9naW4odm9pZCk7CmV4dGVybiBpbnQgZ2V0b3B0KGludCwgY2hhciAqY29uc3QgKiwgY29u c3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKm9wdGFyZzsKZXh0ZXJuIGludCBvcHRpbmQsIG9wdGVy ciwgb3B0b3B0OwpleHRlcm4gY2hhciAqZ2V0cGFzcyhjb25zdCBjaGFyICopOwpleHRlcm4gY2hh ciAqZ2V0cGFzc3BocmFzZShjb25zdCBjaGFyICopOwpleHRlcm4gaW50IGdldHB3KHVpZF90LCBj aGFyICopOwpleHRlcm4gaW50IGlzYXR0eShpbnQpOwpleHRlcm4gdm9pZCAqbWVtYWxpZ24oc2l6 ZV90LCBzaXplX3QpOwpleHRlcm4gY2hhciAqdHR5bmFtZShpbnQpOwoKCmV4dGVybiBsb25nIGxv bmcgYXRvbGwoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGxvbmcgbG9uZyBsbGFicyhsb25nIGxvbmcp OwpleHRlcm4gbGxkaXZfdCBsbGRpdihsb25nIGxvbmcsIGxvbmcgbG9uZyk7CmV4dGVybiBjaGFy ICpsbHRvc3RyKGxvbmcgbG9uZywgY2hhciAqKTsKZXh0ZXJuIGxvbmcgbG9uZyBzdHJ0b2xsKGNv bnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBzdHJ0 b3VsbChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CmV4dGVybiBjaGFyICp1bGx0b3N0cih1 bnNpZ25lZCBsb25nIGxvbmcsIGNoYXIgKik7CiMgMyAiemhvdS5jIiAyCiMgMSAiL3Vzci9sb2Nh bC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNy8zLjAuMS9pbmNsdWRlL21hdGguaCIg MSAzCiMgMjcgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjcvMy4w LjEvaW5jbHVkZS9tYXRoLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgjKW1hdGguaAkyLjcJOTgvMDEv MjciCiMgNDYgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjcvMy4w LjEvaW5jbHVkZS9tYXRoLmgiIDMKdHlwZWRlZiB1bmlvbiBfaF92YWwgewogICAgICAgIHVuc2ln bmVkIGxvbmcgX2lbc2l6ZW9mKGRvdWJsZSkgLyBzaXplb2YodW5zaWduZWQgbG9uZyldOwogICAg ICAgIGRvdWJsZSBfZDsKfSBfaF92YWw7CgoKZXh0ZXJuIGNvbnN0IF9oX3ZhbCBfX2h1Z2VfdmFs OwojIDgwICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi43LzMuMC4x L2luY2x1ZGUvbWF0aC5oIiAzCmV4dGVybiBpbnQgc2lnbmdhbTsKCgoKCgoKCmVudW0gdmVyc2lv biB7bGlibV9pZWVlID0gLTEsIGNfaXNzdWVfNCwgYW5zaV8xLCBzdHJpY3RfYW5zaX07CgoKZXh0 ZXJuIGNvbnN0IGVudW0gdmVyc2lvbiBfbGliX3ZlcnNpb247CgoKCgpzdHJ1Y3QgZXhjZXB0aW9u IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICBjaGFyICpuYW1lOwogICAgICAgIGRvdWJsZSBh cmcxOwogICAgICAgIGRvdWJsZSBhcmcyOwogICAgICAgIGRvdWJsZSByZXR2YWw7Cn07CiMgMTM0 ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi43LzMuMC4xL2luY2x1 ZGUvbWF0aC5oIiAzCmV4dGVybiBkb3VibGUgYWNvcyAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBh c2luIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGF0YW4gKGRvdWJsZSk7CmV4dGVybiBkb3VibGUg YXRhbjIgKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBjb3MgKGRvdWJsZSk7CmV4dGVy biBkb3VibGUgc2luIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHRhbiAoZG91YmxlKTsKCmV4dGVy biBkb3VibGUgY29zaCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBzaW5oIChkb3VibGUpOwpleHRl cm4gZG91YmxlIHRhbmggKGRvdWJsZSk7CgpleHRlcm4gZG91YmxlIGV4cCAoZG91YmxlKTsKZXh0 ZXJuIGRvdWJsZSBmcmV4cCAoZG91YmxlLCBpbnQgKik7CmV4dGVybiBkb3VibGUgbGRleHAgKGRv dWJsZSwgaW50KTsKZXh0ZXJuIGRvdWJsZSBsb2cgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgbG9n MTAgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgbW9kZiAoZG91YmxlLCBkb3VibGUgKik7CgpleHRl cm4gZG91YmxlIHBvdyAoZG91YmxlLCBkb3VibGUpOwpleHRlcm4gZG91YmxlIHNxcnQgKGRvdWJs ZSk7CgpleHRlcm4gZG91YmxlIGNlaWwgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgZmFicyAoZG91 YmxlKTsKZXh0ZXJuIGRvdWJsZSBmbG9vciAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBmbW9kIChk b3VibGUsIGRvdWJsZSk7CgoKCgoKCmV4dGVybiBkb3VibGUgZXJmIChkb3VibGUpOwpleHRlcm4g ZG91YmxlIGVyZmMgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgZ2FtbWEgKGRvdWJsZSk7CmV4dGVy biBkb3VibGUgaHlwb3QgKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGludCBpc25hbiAoZG91Ymxl KTsKZXh0ZXJuIGRvdWJsZSBqMCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBqMSAoZG91YmxlKTsK ZXh0ZXJuIGRvdWJsZSBqbiAoaW50LCBkb3VibGUpOwpleHRlcm4gZG91YmxlIGxnYW1tYSAoZG91 YmxlKTsKZXh0ZXJuIGRvdWJsZSB5MCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSB5MSAoZG91Ymxl KTsKZXh0ZXJuIGRvdWJsZSB5biAoaW50LCBkb3VibGUpOwoKCgoKCgoKZXh0ZXJuIGRvdWJsZSBh Y29zaCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBhc2luaCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJs ZSBhdGFuaCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBjYnJ0IChkb3VibGUpOwpleHRlcm4gZG91 YmxlIGxvZ2IgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgbmV4dGFmdGVyIChkb3VibGUsIGRvdWJs ZSk7CmV4dGVybiBkb3VibGUgcmVtYWluZGVyIChkb3VibGUsIGRvdWJsZSk7CmV4dGVybiBkb3Vi bGUgc2NhbGIgKGRvdWJsZSwgZG91YmxlKTsKCgoKCmV4dGVybiBkb3VibGUgZXhwbTEgKGRvdWJs ZSk7CmV4dGVybiBpbnQgaWxvZ2IgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgbG9nMXAgKGRvdWJs ZSk7CmV4dGVybiBkb3VibGUgcmludCAoZG91YmxlKTsKCgoKCgoKZXh0ZXJuIGludCBtYXRoZXJy IChzdHJ1Y3QgZXhjZXB0aW9uICopOwoKCgoKZXh0ZXJuIGRvdWJsZSBzaWduaWZpY2FuZCAoZG91 YmxlKTsKCgoKCmV4dGVybiBkb3VibGUgY29weXNpZ24gKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJu IGRvdWJsZSBzY2FsYm4gKGRvdWJsZSwgaW50KTsKIyAyMzIgIi91c3IvbG9jYWwvbGliL2djYy1s aWIvc3BhcmMtc3VuLXNvbGFyaXMyLjcvMy4wLjEvaW5jbHVkZS9tYXRoLmgiIDMKZXh0ZXJuIGZs b2F0IG1vZGZmIChmbG9hdCwgZmxvYXQgKik7CgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIv c3BhcmMtc3VuLXNvbGFyaXMyLjcvMy4wLjEvaW5jbHVkZS9mbG9hdGluZ3BvaW50LmgiIDEgMwoj IDI0ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi43LzMuMC4xL2lu Y2x1ZGUvZmxvYXRpbmdwb2ludC5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIylmbG9hdGluZ3BvaW50 LmgJMi40IDk0LzA2LzA5IgojIDQyICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1z b2xhcmlzMi43LzMuMC4xL2luY2x1ZGUvZmxvYXRpbmdwb2ludC5oIiAzCiMgMSAiL3Vzci9sb2Nh bC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNy8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgi IDEgMwojIDQzICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi43LzMu MC4xL2luY2x1ZGUvZmxvYXRpbmdwb2ludC5oIiAyIDMKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2Nj LWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNy8zLjAuMS9pbmNsdWRlL3N5cy9pZWVlZnAuaCIgMSAz CiMgMTcgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjcvMy4wLjEv aW5jbHVkZS9zeXMvaWVlZWZwLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgjKWllZWVmcC5oCTIuNyA5 NC8xMS8wOSIKIyAyNyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIu Ny8zLjAuMS9pbmNsdWRlL3N5cy9pZWVlZnAuaCIgMwplbnVtIGZwX2RpcmVjdGlvbl90eXBlIHsK ICAgICAgICBmcF9uZWFyZXN0ID0gMCwKICAgICAgICBmcF90b3plcm8gPSAxLAogICAgICAgIGZw X3Bvc2l0aXZlID0gMiwKICAgICAgICBmcF9uZWdhdGl2ZSA9IDMKfTsKCmVudW0gZnBfcHJlY2lz aW9uX3R5cGUgewogICAgICAgIGZwX2V4dGVuZGVkID0gMCwKICAgICAgICBmcF9zaW5nbGUgPSAx LAogICAgICAgIGZwX2RvdWJsZSA9IDIsCiAgICAgICAgZnBfcHJlY2lzaW9uXzMgPSAzCn07Cgpl bnVtIGZwX2V4Y2VwdGlvbl90eXBlIHsKICAgICAgICBmcF9pbmV4YWN0ID0gMCwKICAgICAgICBm cF9kaXZpc2lvbiA9IDEsCiAgICAgICAgZnBfdW5kZXJmbG93ID0gMiwKICAgICAgICBmcF9vdmVy ZmxvdyA9IDMsCiAgICAgICAgZnBfaW52YWxpZCA9IDQKfTsKCmVudW0gZnBfdHJhcF9lbmFibGVf dHlwZSB7CiAgICAgICAgZnBfdHJhcF9pbmV4YWN0ID0gMCwKICAgICAgICBmcF90cmFwX2Rpdmlz aW9uID0gMSwKICAgICAgICBmcF90cmFwX3VuZGVyZmxvdyA9IDIsCiAgICAgICAgZnBfdHJhcF9v dmVyZmxvdyA9IDMsCiAgICAgICAgZnBfdHJhcF9pbnZhbGlkID0gNAp9OwojIDEzMyAiL3Vzci9s b2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNy8zLjAuMS9pbmNsdWRlL3N5cy9p ZWVlZnAuaCIgMwplbnVtIGZwX2NsYXNzX3R5cGUgewogICAgICAgIGZwX3plcm8gPSAwLAogICAg ICAgIGZwX3N1Ym5vcm1hbCA9IDEsCiAgICAgICAgZnBfbm9ybWFsID0gMiwKICAgICAgICBmcF9p bmZpbml0eSA9IDMsCiAgICAgICAgZnBfcXVpZXQgPSA0LAogICAgICAgIGZwX3NpZ25hbGluZyA9 IDUKfTsKIyA0NSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNy8z LjAuMS9pbmNsdWRlL2Zsb2F0aW5ncG9pbnQuaCIgMiAzCiMgNTggIi91c3IvbG9jYWwvbGliL2dj Yy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjcvMy4wLjEvaW5jbHVkZS9mbG9hdGluZ3BvaW50Lmgi IDMKdHlwZWRlZiBpbnQgc2lnZnBlX2NvZGVfdHlwZTsKCnR5cGVkZWYgdm9pZCAoKnNpZ2ZwZV9o YW5kbGVyX3R5cGUpKCk7CgoKCgoKZXh0ZXJuIHNpZ2ZwZV9oYW5kbGVyX3R5cGUgc2lnZnBlIChz aWdmcGVfY29kZV90eXBlLCBzaWdmcGVfaGFuZGxlcl90eXBlKTsKCgoKCnR5cGVkZWYgZmxvYXQg c2luZ2xlOwoKCgp0eXBlZGVmIHVuc2lnbmVkIGV4dGVuZGVkWzNdOwoKCnR5cGVkZWYgbG9uZyBk b3VibGUgcXVhZHJ1cGxlOwoKdHlwZWRlZiB1bnNpZ25lZCBmcF9leGNlcHRpb25fZmllbGRfdHlw ZTsKIyA5MCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNy8zLjAu MS9pbmNsdWRlL2Zsb2F0aW5ncG9pbnQuaCIgMwp0eXBlZGVmIGNoYXIgZGVjaW1hbF9zdHJpbmdb NTEyXTsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgZW51bSBmcF9jbGFzc190eXBlIGZwY2xh c3M7CiAgICAgICAgaW50IHNpZ247CiAgICAgICAgaW50IGV4cG9uZW50OwogICAgICAgIGRlY2lt YWxfc3RyaW5nIGRzOwoKCiAgICAgICAgaW50IG1vcmU7CgoKICAgICAgICBpbnQgbmRpZ2l0czsK Cgp9IGRlY2ltYWxfcmVjb3JkOwoKZW51bSBkZWNpbWFsX2Zvcm0gewogICAgICAgIGZpeGVkX2Zv cm0sCgoKICAgICAgICBmbG9hdGluZ19mb3JtCgp9OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAg IGVudW0gZnBfZGlyZWN0aW9uX3R5cGUgcmQ7CgogICAgICAgIGVudW0gZGVjaW1hbF9mb3JtIGRm OwoKICAgICAgICBpbnQgbmRpZ2l0czsKfSBkZWNpbWFsX21vZGU7CgplbnVtIGRlY2ltYWxfc3Ry aW5nX2Zvcm0gewogICAgICAgIGludmFsaWRfZm9ybSwKICAgICAgICB3aGl0ZXNwYWNlX2Zvcm0s CiAgICAgICAgZml4ZWRfaW50X2Zvcm0sCiAgICAgICAgZml4ZWRfaW50ZG90X2Zvcm0sCiAgICAg ICAgZml4ZWRfZG90ZnJhY19mb3JtLAogICAgICAgIGZpeGVkX2ludGRvdGZyYWNfZm9ybSwKICAg ICAgICBmbG9hdGluZ19pbnRfZm9ybSwKICAgICAgICBmbG9hdGluZ19pbnRkb3RfZm9ybSwKICAg ICAgICBmbG9hdGluZ19kb3RmcmFjX2Zvcm0sCiAgICAgICAgZmxvYXRpbmdfaW50ZG90ZnJhY19m b3JtLAogICAgICAgIGluZl9mb3JtLAogICAgICAgIGluZmluaXR5X2Zvcm0sCiAgICAgICAgbmFu X2Zvcm0sCiAgICAgICAgbmFuc3RyaW5nX2Zvcm0KfTsKCmV4dGVybiB2b2lkIHNpbmdsZV90b19k ZWNpbWFsIChzaW5nbGUgKiwgZGVjaW1hbF9tb2RlICosIGRlY2ltYWxfcmVjb3JkICosIGZwX2V4 Y2VwdGlvbl9maWVsZF90eXBlICopOwoKZXh0ZXJuIHZvaWQgZG91YmxlX3RvX2RlY2ltYWwgKGRv dWJsZSAqLCBkZWNpbWFsX21vZGUgKiwgZGVjaW1hbF9yZWNvcmQgKiwgZnBfZXhjZXB0aW9uX2Zp ZWxkX3R5cGUgKik7CgpleHRlcm4gdm9pZCBleHRlbmRlZF90b19kZWNpbWFsIChleHRlbmRlZCAq LCBkZWNpbWFsX21vZGUgKiwgZGVjaW1hbF9yZWNvcmQgKiwgZnBfZXhjZXB0aW9uX2ZpZWxkX3R5 cGUgKik7CgpleHRlcm4gdm9pZCBxdWFkcnVwbGVfdG9fZGVjaW1hbCAocXVhZHJ1cGxlICosIGRl Y2ltYWxfbW9kZSAqLCBkZWNpbWFsX3JlY29yZCAqLCBmcF9leGNlcHRpb25fZmllbGRfdHlwZSAq KTsKCgpleHRlcm4gdm9pZCBkZWNpbWFsX3RvX3NpbmdsZSAoc2luZ2xlICosIGRlY2ltYWxfbW9k ZSAqLCBkZWNpbWFsX3JlY29yZCAqLCBmcF9leGNlcHRpb25fZmllbGRfdHlwZSAqKTsKCmV4dGVy biB2b2lkIGRlY2ltYWxfdG9fZG91YmxlIChkb3VibGUgKiwgZGVjaW1hbF9tb2RlICosIGRlY2lt YWxfcmVjb3JkICosIGZwX2V4Y2VwdGlvbl9maWVsZF90eXBlICopOwoKZXh0ZXJuIHZvaWQgZGVj aW1hbF90b19leHRlbmRlZCAoZXh0ZW5kZWQgKiwgZGVjaW1hbF9tb2RlICosIGRlY2ltYWxfcmVj b3JkICosIGZwX2V4Y2VwdGlvbl9maWVsZF90eXBlICopOwoKZXh0ZXJuIHZvaWQgZGVjaW1hbF90 b19xdWFkcnVwbGUgKHF1YWRydXBsZSAqLCBkZWNpbWFsX21vZGUgKiwgZGVjaW1hbF9yZWNvcmQg KiwgZnBfZXhjZXB0aW9uX2ZpZWxkX3R5cGUgKik7CgoKZXh0ZXJuIHZvaWQgc3RyaW5nX3RvX2Rl Y2ltYWwgKGNoYXIgKiosIGludCwgaW50LCBkZWNpbWFsX3JlY29yZCAqLCBlbnVtIGRlY2ltYWxf c3RyaW5nX2Zvcm0gKiwgY2hhciAqKik7CgpleHRlcm4gdm9pZCBmdW5jX3RvX2RlY2ltYWwgKGNo YXIgKiosIGludCwgaW50LCBkZWNpbWFsX3JlY29yZCAqLCBlbnVtIGRlY2ltYWxfc3RyaW5nX2Zv cm0gKiwgY2hhciAqKiwgaW50ICgqKSh2b2lkKSwgaW50ICosIGludCAoKikoaW50KSk7CgoKZXh0 ZXJuIHZvaWQgZmlsZV90b19kZWNpbWFsIChjaGFyICoqLCBpbnQsIGludCwgZGVjaW1hbF9yZWNv cmQgKiwgZW51bSBkZWNpbWFsX3N0cmluZ19mb3JtICosIGNoYXIgKiosIEZJTEUgKiwgaW50ICop OwoKCgpleHRlcm4gY2hhciAqc2Vjb252ZXJ0IChzaW5nbGUgKiwgaW50LCBpbnQgKiwgaW50ICos IGNoYXIgKik7CmV4dGVybiBjaGFyICpzZmNvbnZlcnQgKHNpbmdsZSAqLCBpbnQsIGludCAqLCBp bnQgKiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnNnY29udmVydCAoc2luZ2xlICosIGludCwgaW50 LCBjaGFyICopOwpleHRlcm4gY2hhciAqZWNvbnZlcnQgKGRvdWJsZSwgaW50LCBpbnQgKiwgaW50 ICosIGNoYXIgKik7CmV4dGVybiBjaGFyICpmY29udmVydCAoZG91YmxlLCBpbnQsIGludCAqLCBp bnQgKiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKmdjb252ZXJ0IChkb3VibGUsIGludCwgaW50LCBj aGFyICopOwpleHRlcm4gY2hhciAqcWVjb252ZXJ0IChxdWFkcnVwbGUgKiwgaW50LCBpbnQgKiwg aW50ICosIGNoYXIgKik7CmV4dGVybiBjaGFyICpxZmNvbnZlcnQgKHF1YWRydXBsZSAqLCBpbnQs IGludCAqLCBpbnQgKiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnFnY29udmVydCAocXVhZHJ1cGxl ICosIGludCwgaW50LCBjaGFyICopOwoKZXh0ZXJuIGNoYXIgKmVjdnQgKGRvdWJsZSwgaW50LCBp bnQgKiwgaW50ICopOwpleHRlcm4gY2hhciAqZmN2dCAoZG91YmxlLCBpbnQsIGludCAqLCBpbnQg Kik7CmV4dGVybiBjaGFyICpnY3Z0IChkb3VibGUsIGludCwgY2hhciAqKTsKCgoKCgpleHRlcm4g ZG91YmxlIGF0b2YgKGNvbnN0IGNoYXIgKik7CmV4dGVybiBkb3VibGUgc3RydG9kIChjb25zdCBj aGFyICosIGNoYXIgKiopOwojIDIzNSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4t c29sYXJpczIuNy8zLjAuMS9pbmNsdWRlL21hdGguaCIgMiAzCiMgNCAiemhvdS5jIiAyCiMgMSAi L3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiMgMTYgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKI3By YWdtYSBpZGVudCAiQCgjKXRpbWUuaAkxLjM5CTk5LzA4LzEwIFNNSSIKCiMgMSAiL3Vzci9pbmNs dWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDEgMwojIDE5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAy IDMKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi43LzMuMC4x L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDI1ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3Nw YXJjLXN1bi1zb2xhcmlzMi43LzMuMC4xL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKI3ByYWdtYSBp ZGVudCAiQCgjKXR5cGVzLmgJMS42Mwk5OC8wNC8yOCBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9z eXMvaXNhX2RlZnMuaCIgMSAzCiMgMjggIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3Vu LXNvbGFyaXMyLjcvMy4wLjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCiMgMSAiL3Vzci9pbmNs dWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDEgMwojIDI5ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGli L3NwYXJjLXN1bi1zb2xhcmlzMi43LzMuMC4xL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgoK IyAxICIvdXNyL2luY2x1ZGUvc3lzL21hY2h0eXBlcy5oIiAxIDMKIyAxNiAiL3Vzci9pbmNsdWRl L3N5cy9tYWNodHlwZXMuaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpbWFjaHR5cGVzLmgJMS4xMwk5 OS8wNS8wNCBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMK IyAxOSAiL3Vzci9pbmNsdWRlL3N5cy9tYWNodHlwZXMuaCIgMiAzCiMgMzMgIi91c3IvaW5jbHVk ZS9zeXMvbWFjaHR5cGVzLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX2xhYmVsX3QgeyBsb25nIHZhbFsy XTsgfSBsYWJlbF90OwoKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgbG9ja190OwojIDM0ICIvdXNy L2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi43LzMuMC4xL2luY2x1ZGUvc3lz L3R5cGVzLmgiIDIgMwojIDQ1ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xh cmlzMi43LzMuMC4xL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lz L2ludF90eXBlcy5oIiAxIDMKIyA5ICIvdXNyL2luY2x1ZGUvc3lzL2ludF90eXBlcy5oIiAzCiNw cmFnbWEgaWRlbnQgIkAoIylpbnRfdHlwZXMuaAkxLjYJOTcvMDgvMjAgU01JIgojIDQyICIvdXNy L2luY2x1ZGUvc3lzL2ludF90eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9pc2FfZGVm cy5oIiAxIDMKIyA0MyAiL3Vzci9pbmNsdWRlL3N5cy9pbnRfdHlwZXMuaCIgMiAzCiMgNjIgIi91 c3IvaW5jbHVkZS9zeXMvaW50X3R5cGVzLmgiIDMKdHlwZWRlZiBjaGFyIGludDhfdDsKCgoKCgp0 eXBlZGVmIHNob3J0IGludDE2X3Q7CnR5cGVkZWYgaW50IGludDMyX3Q7CgoKCgp0eXBlZGVmIGxv bmcgbG9uZyBpbnQ2NF90OwoKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludDhfdDsKdHlwZWRl ZiB1bnNpZ25lZCBzaG9ydCB1aW50MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDMyX3Q7 CgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1aW50NjRfdDsKIyA5NCAiL3Vzci9pbmNs dWRlL3N5cy9pbnRfdHlwZXMuaCIgMwp0eXBlZGVmIGludDY0X3QgaW50bWF4X3Q7CnR5cGVkZWYg dWludDY0X3QgdWludG1heF90OwojIDExMCAiL3Vzci9pbmNsdWRlL3N5cy9pbnRfdHlwZXMuaCIg Mwp0eXBlZGVmIGludCBpbnRwdHJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludHB0cl90OwoK CgoKCgoKdHlwZWRlZiBjaGFyIGludF9sZWFzdDhfdDsKCgoKCgp0eXBlZGVmIHNob3J0IGludF9s ZWFzdDE2X3Q7CnR5cGVkZWYgaW50IGludF9sZWFzdDMyX3Q7CgoKCgp0eXBlZGVmIGxvbmcgbG9u ZyBpbnRfbGVhc3Q2NF90OwoKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludF9sZWFzdDhfdDsK dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1aW50X2xlYXN0MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBp bnQgdWludF9sZWFzdDMyX3Q7CgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1aW50X2xl YXN0NjRfdDsKIyA0NiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIu Ny8zLjAuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKIyA2MiAiL3Vzci9sb2NhbC9saWIvZ2Nj LWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNy8zLjAuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5 cGVkZWYgbG9uZyBsb25nIGxvbmdsb25nX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVf bG9uZ2xvbmdfdDsKIyA4NSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJp czIuNy8zLjAuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgbG9uZyB0X3NjYWxhcl90 Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdF91c2NhbGFyX3Q7CgoKCgoKdHlwZWRlZiB1bnNpZ25l ZCBjaGFyIHVjaGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdXNob3J0X3Q7CnR5cGVkZWYg dW5zaWduZWQgaW50IHVpbnRfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVsb25nX3Q7Cgp0eXBl ZGVmIGNoYXIgKmNhZGRyX3Q7CnR5cGVkZWYgbG9uZyBkYWRkcl90Owp0eXBlZGVmIHNob3J0IGNu dF90OwoKCnR5cGVkZWYgdWxvbmdfdCBwYWRkcl90OwojIDExNiAiL3Vzci9sb2NhbC9saWIvZ2Nj LWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNy8zLjAuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5 cGVkZWYgaW50IHB0cmRpZmZfdDsKIyAxMjUgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMt c3VuLXNvbGFyaXMyLjcvMy4wLjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIHVsb25n X3QgcGZuX3Q7CnR5cGVkZWYgdWxvbmdfdCBwZ2NudF90Owp0eXBlZGVmIGxvbmcgc3BnY250X3Q7 Cgp0eXBlZGVmIHVjaGFyX3QgdXNlX3Q7CnR5cGVkZWYgc2hvcnQgc3lzaWRfdDsKdHlwZWRlZiBz aG9ydCBpbmRleF90Owp0eXBlZGVmIHZvaWQgKnRpbWVvdXRfaWRfdDsKdHlwZWRlZiB2b2lkICpi dWZjYWxsX2lkX3Q7CiMgMTYzICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xh cmlzMi43LzMuMC4xL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiB1bG9uZ190IGlub190 Owp0eXBlZGVmIGxvbmcgYmxrY250X3Q7CnR5cGVkZWYgdWxvbmdfdCBmc2Jsa2NudF90Owp0eXBl ZGVmIHVsb25nX3QgZnNmaWxjbnRfdDsKIyAxODEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3Bh cmMtc3VuLXNvbGFyaXMyLjcvMy4wLjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIHVf bG9uZ2xvbmdfdCBpbm82NF90Owp0eXBlZGVmIGxvbmdsb25nX3QgYmxrY250NjRfdDsKdHlwZWRl ZiB1X2xvbmdsb25nX3QgZnNibGtjbnQ2NF90Owp0eXBlZGVmIHVfbG9uZ2xvbmdfdCBmc2ZpbGNu dDY0X3Q7CgoKCgoKCnR5cGVkZWYgbG9uZyBibGtzaXplX3Q7CgoKCgoKdHlwZWRlZiBlbnVtIHsg Ql9GQUxTRSwgQl9UUlVFIH0gYm9vbGVhbl90OwojIDIwOCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxp Yi9zcGFyYy1zdW4tc29sYXJpczIuNy8zLjAuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVk ZWYgaW50NjRfdCBwYWQ2NF90Owp0eXBlZGVmIHVpbnQ2NF90IHVwYWQ2NF90OwojIDIyMSAiL3Vz ci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNy8zLjAuMS9pbmNsdWRlL3N5 cy90eXBlcy5oIiAzCnR5cGVkZWYgbG9uZ2xvbmdfdCBvZmZzZXRfdDsKdHlwZWRlZiB1X2xvbmds b25nX3QgdV9vZmZzZXRfdDsKdHlwZWRlZiB1X2xvbmdsb25nX3QgbGVuX3Q7CnR5cGVkZWYgbG9u Z2xvbmdfdCBkaXNrYWRkcl90OwojIDI0MiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1z dW4tc29sYXJpczIuNy8zLjAuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgdW5pb24g ewogICAgICAgIG9mZnNldF90IF9mOwogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICBp bnQzMl90IF91OwogICAgICAgICAgICAgICAgaW50MzJfdCBfbDsKICAgICAgICB9IF9wOwp9IGxs b2ZmX3Q7CiMgMjYyICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi43 LzMuMC4xL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiB1bmlvbiB7CiAgICAgICAgZGlz a2FkZHJfdCBfZjsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgaW50MzJfdCBfdTsK ICAgICAgICAgICAgICAgIGludDMyX3QgX2w7CiAgICAgICAgfSBfcDsKfSBsbGRhZGRyX3Q7CgoK dHlwZWRlZiB1aW50X3Qga19mbHRzZXRfdDsKIyAyODcgIi91c3IvbG9jYWwvbGliL2djYy1saWIv c3BhcmMtc3VuLXNvbGFyaXMyLjcvMy4wLjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVm IGxvbmcgaWRfdDsKCgoKCgoKdHlwZWRlZiB1aW50X3QgdXNlY29uZHNfdDsKCgoKdHlwZWRlZiBs b25nIHN1c2Vjb25kc190OwojIDMwOCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4t c29sYXJpczIuNy8zLjAuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgdWxvbmdfdCBt YWpvcl90Owp0eXBlZGVmIHVsb25nX3QgbWlub3JfdDsKCgoKCgp0eXBlZGVmIHNob3J0IHByaV90 OwojIDMyOCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNy8zLjAu MS9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgdXNob3J0X3Qgb19tb2RlX3Q7CnR5cGVk ZWYgc2hvcnQgb19kZXZfdDsKdHlwZWRlZiB1c2hvcnRfdCBvX3VpZF90Owp0eXBlZGVmIG9fdWlk X3Qgb19naWRfdDsKdHlwZWRlZiBzaG9ydCBvX25saW5rX3Q7CnR5cGVkZWYgc2hvcnQgb19waWRf dDsKdHlwZWRlZiB1c2hvcnRfdCBvX2lub190OwoKCgoKCnR5cGVkZWYgaW50IGtleV90OwoKCgp0 eXBlZGVmIHVsb25nX3QgbW9kZV90OwojIDM1NiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFy Yy1zdW4tc29sYXJpczIuNy8zLjAuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgdWlk X3QgZ2lkX3Q7CgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHB0aHJlYWRfdDsKdHlwZWRlZiB1 bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlfdDsKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX211dGV4 IHsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdWludDhfdCBfX3B0aHJlYWRfbXV0 ZXhfZmxhZ1s0XTsKICAgICAgICAgICAgICAgIHVpbnQzMl90IF9fcHRocmVhZF9tdXRleF90eXBl OwogICAgICAgIH0gX19wdGhyZWFkX211dGV4X2ZsYWdzOwogICAgICAgIHVuaW9uIHsKICAgICAg ICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgX19wdGhy ZWFkX211dGV4X3BhZFs4XTsKICAgICAgICAgICAgICAgIH0gX19wdGhyZWFkX211dGV4X2xvY2s2 NDsKICAgICAgICAgICAgICAgIHVwYWQ2NF90IF9fcHRocmVhZF9tdXRleF9vd25lcjY0OwogICAg ICAgIH0gX19wdGhyZWFkX211dGV4X2xvY2s7CiAgICAgICAgdXBhZDY0X3QgX19wdGhyZWFkX211 dGV4X2RhdGE7Cn0gcHRocmVhZF9tdXRleF90OwoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfY29u ZCB7CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVpbnQ4X3QgX19wdGhyZWFkX2Nv bmRfZmxhZ1s0XTsKICAgICAgICAgICAgICAgIHVpbnQzMl90IF9fcHRocmVhZF9jb25kX3R5cGU7 CiAgICAgICAgfSBfX3B0aHJlYWRfY29uZF9mbGFnczsKICAgICAgICB1cGFkNjRfdCBfX3B0aHJl YWRfY29uZF9kYXRhOwp9IHB0aHJlYWRfY29uZF90OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJl YWRfcndsb2NrIHsKICAgICAgICBpbnQzMl90IF9fcHRocmVhZF9yd2xvY2tfcmVhZGVyczsKICAg ICAgICB1aW50MTZfdCBfX3B0aHJlYWRfcndsb2NrX3R5cGU7CiAgICAgICAgdWludDE2X3QgX19w dGhyZWFkX3J3bG9ja19tYWdpYzsKICAgICAgICB1cGFkNjRfdCBfX3B0aHJlYWRfcndsb2NrX3Bh ZDFbM107CiAgICAgICAgdXBhZDY0X3QgX19wdGhyZWFkX3J3bG9ja19wYWQyWzJdOwogICAgICAg IHVwYWQ2NF90IF9fcHRocmVhZF9yd2xvY2tfcGFkM1syXTsKfSBwdGhyZWFkX3J3bG9ja190OwoK CgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfYXR0ciB7CiAgICAgICAgdm9pZCAqX19wdGhyZWFk X2F0dHJwOwp9IHB0aHJlYWRfYXR0cl90OwoKCgoKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX211 dGV4YXR0ciB7CiAgICAgICAgdm9pZCAqX19wdGhyZWFkX211dGV4YXR0cnA7Cn0gcHRocmVhZF9t dXRleGF0dHJfdDsKCgoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9jb25kYXR0ciB7CiAgICAg ICAgdm9pZCAqX19wdGhyZWFkX2NvbmRhdHRycDsKfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgoKCgp0 eXBlZGVmIHN0cnVjdCBfb25jZSB7CiAgICAgICAgdXBhZDY0X3QgX19wdGhyZWFkX29uY2VfcGFk WzRdOwp9IHB0aHJlYWRfb25jZV90OwoKCgoKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX3J3bG9j a2F0dHIgewogICAgICAgIHZvaWQgKl9fcHRocmVhZF9yd2xvY2thdHRycDsKfSBwdGhyZWFkX3J3 bG9ja2F0dHJfdDsKCnR5cGVkZWYgdWxvbmdfdCBkZXZfdDsKCgoKCgp0eXBlZGVmIHVsb25nX3Qg bmxpbmtfdDsKdHlwZWRlZiBsb25nIHBpZF90OwojIDQ3NiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxp Yi9zcGFyYy1zdW4tc29sYXJpczIuNy8zLjAuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVk ZWYgbG9uZyB0aW1lX3Q7CgoKCgp0eXBlZGVmIGxvbmcgY2xvY2tfdDsKCgoKCnR5cGVkZWYgaW50 IGNsb2NraWRfdDsKCgoKCnR5cGVkZWYgaW50IHRpbWVyX3Q7CgoKCgoKCnR5cGVkZWYgdW5zaWdu ZWQgY2hhciB1bmNoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdXNob3J0Owp0eXBlZGVmIHVu c2lnbmVkIGludCB1aW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWxvbmc7CiMgNTUyICIvdXNy L2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi43LzMuMC4xL2luY2x1ZGUvc3lz L3R5cGVzLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVfY2hhcjsKdHlwZWRlZiB1bnNpZ25l ZCBzaG9ydCB1X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDsKdHlwZWRlZiB1bnNp Z25lZCBsb25nIHVfbG9uZzsKdHlwZWRlZiBzdHJ1Y3QgX3F1YWQgeyBpbnQgdmFsWzJdOyB9IHF1 YWRfdDsKdHlwZWRlZiBxdWFkX3QgcXVhZDsKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3Nl bGVjdC5oIiAxIDMKIyAxMiAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwojcHJhZ21hIGlk ZW50ICJAKCMpc2VsZWN0LmgJMS4xNgk5OC8wNC8yNyBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9z eXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMKIyAxNSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIg MiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMSAzCiMgMjIgIi91c3IvaW5jbHVk ZS9zeXMvdGltZS5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIyl0aW1lLmgJMi42NgkwMS8wMS8xNyBT TUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMKIyAyNSAiL3Vz ci9pbmNsdWRlL3N5cy90aW1lLmgiIDIgMwojIDQ5ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIg MwpzdHJ1Y3QgdGltZXZhbCB7CiAgICAgICAgdGltZV90IHR2X3NlYzsKICAgICAgICBzdXNlY29u ZHNfdCB0dl91c2VjOwp9OwojIDgyICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwpzdHJ1Y3Qg dGltZXpvbmUgewogICAgICAgIGludCB0el9taW51dGVzd2VzdDsKICAgICAgICBpbnQgdHpfZHN0 dGltZTsKfTsKIyAxMDAgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCiMgMSAiL3Vzci9sb2Nh bC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNy8zLjAuMS9pbmNsdWRlL3N5cy90eXBl cy5oIiAxIDMKIyAxMDEgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAyIDMKIyAxNTUgIi91c3Iv aW5jbHVkZS9zeXMvdGltZS5oIiAzCnN0cnVjdCBpdGltZXJ2YWwgewogICAgICAgIHN0cnVjdCB0 aW1ldmFsIGl0X2ludGVydmFsOwogICAgICAgIHN0cnVjdCB0aW1ldmFsIGl0X3ZhbHVlOwp9Owoj IDIwMyAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMKdHlwZWRlZiBsb25nbG9uZ190IGhydGlt ZV90OwojIDMyMCAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMKaW50IGFkanRpbWUoc3RydWN0 IHRpbWV2YWwgKiwgc3RydWN0IHRpbWV2YWwgKik7CiMgMzMxICIvdXNyL2luY2x1ZGUvc3lzL3Rp bWUuaCIgMwppbnQgZ2V0aXRpbWVyKGludCwgc3RydWN0IGl0aW1lcnZhbCAqKTsKaW50IHV0aW1l cyhjb25zdCBjaGFyICosIGNvbnN0IHN0cnVjdCB0aW1ldmFsICopOwoKCgppbnQgc2V0aXRpbWVy KGludCwgc3RydWN0IGl0aW1lcnZhbCAqLCBzdHJ1Y3QgaXRpbWVydmFsICopOwojIDM2OSAiL3Vz ci9pbmNsdWRlL3N5cy90aW1lLmgiIDMKaW50IHNldHRpbWVvZmRheShzdHJ1Y3QgdGltZXZhbCAq LCB2b2lkICopOwoKaHJ0aW1lX3QgZ2V0aHJ0aW1lKHZvaWQpOwpocnRpbWVfdCBnZXRocnZ0aW1l KHZvaWQpOwojIDM4OSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMKaW50IGdldHRpbWVvZmRh eShzdHJ1Y3QgdGltZXZhbCAqLCB2b2lkICopOwojIDQxMCAiL3Vzci9pbmNsdWRlL3N5cy90aW1l LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIyA0MTEgIi91c3IvaW5jbHVkZS9z eXMvdGltZS5oIiAyIDMKIyA0MjMgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCiMgMSAiL3Vz ci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMSAzCiMgNDI0ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUu aCIgMiAzCiMgMTggIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwojIDQ1ICIvdXNyL2lu Y2x1ZGUvc3lzL3NlbGVjdC5oIiAzCnR5cGVkZWYgbG9uZyBmZF9tYXNrOwoKdHlwZWRlZiBsb25n IGZkc19tYXNrOwojIDczICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzCnR5cGVkZWYgc3Ry dWN0IGZkX3NldCB7CgoKCiAgICAgICAgbG9uZyBmZHNfYml0c1soKCgxMDI0KSsoKChzaXplb2Yg KGZkc19tYXNrKSAqIDgpKS0xKSkvKChzaXplb2YgKGZkc19tYXNrKSAqIDgpKSldOwp9IGZkX3Nl dDsKIyA5NyAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwpleHRlcm4gaW50IHNlbGVjdChp bnQsIGZkX3NldCAqLCBmZF9zZXQgKiwgZmRfc2V0ICosIHN0cnVjdCB0aW1ldmFsICopOwojIDU2 NSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNy8zLjAuMS9pbmNs dWRlL3N5cy90eXBlcy5oIiAyIDMKIyAyMCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCiMgMSAi L3Vzci9pbmNsdWRlL2lzby90aW1lX2lzby5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL2lzby90 aW1lX2lzby5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIyl0aW1lX2lzby5oCTEuMQk5OS8wOC8wOSBT TUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMKIyAzMSAiL3Vz ci9pbmNsdWRlL2lzby90aW1lX2lzby5oIiAyIDMKIyA2OSAiL3Vzci9pbmNsdWRlL2lzby90aW1l X2lzby5oIiAzCnN0cnVjdCB0bSB7CiAgICAgICAgaW50IHRtX3NlYzsKICAgICAgICBpbnQgdG1f bWluOwogICAgICAgIGludCB0bV9ob3VyOwogICAgICAgIGludCB0bV9tZGF5OwogICAgICAgIGlu dCB0bV9tb247CiAgICAgICAgaW50IHRtX3llYXI7CiAgICAgICAgaW50IHRtX3dkYXk7CiAgICAg ICAgaW50IHRtX3lkYXk7CiAgICAgICAgaW50IHRtX2lzZHN0Owp9OwoKCgoKZXh0ZXJuIGNoYXIg KmFzY3RpbWUoY29uc3Qgc3RydWN0IHRtICopOwpleHRlcm4gY2xvY2tfdCBjbG9jayh2b2lkKTsK ZXh0ZXJuIGNoYXIgKmN0aW1lKGNvbnN0IHRpbWVfdCAqKTsKZXh0ZXJuIGRvdWJsZSBkaWZmdGlt ZSh0aW1lX3QsIHRpbWVfdCk7CmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZShjb25zdCB0aW1lX3Qg Kik7CmV4dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGltZShjb25zdCB0aW1lX3QgKik7CmV4dGVybiB0 aW1lX3QgbWt0aW1lKHN0cnVjdCB0bSAqKTsKZXh0ZXJuIHRpbWVfdCB0aW1lKHRpbWVfdCAqKTsK ZXh0ZXJuIHNpemVfdCBzdHJmdGltZShjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCBjb25z dCBzdHJ1Y3QgdG0gKik7CiMgMjEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwojIDY3ICIvdXNy L2luY2x1ZGUvdGltZS5oIiAzCmV4dGVybiBjaGFyICpzdHJwdGltZShjb25zdCBjaGFyICosIGNv bnN0IGNoYXIgKiwgc3RydWN0IHRtICopOwojIDgzICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCiMg MSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lX2ltcGwuaCIgMSAzCiMgMTUgIi91c3IvaW5jbHVkZS9z eXMvdGltZV9pbXBsLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgjKXRpbWVfaW1wbC5oCTEuNQk5OS8x MC8wNSBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMKIyAx OCAiL3Vzci9pbmNsdWRlL3N5cy90aW1lX2ltcGwuaCIgMiAzCiMgMzYgIi91c3IvaW5jbHVkZS9z eXMvdGltZV9pbXBsLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgdGltZXNwZWMgewogICAgICAgIHRpbWVf dCB0dl9zZWM7CiAgICAgICAgbG9uZyB0dl9uc2VjOwp9IHRpbWVzcGVjX3Q7CiMgNjAgIi91c3Iv aW5jbHVkZS9zeXMvdGltZV9pbXBsLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgdGltZXNwZWMgdGltZXN0 cnVjX3Q7CiMgNzkgIi91c3IvaW5jbHVkZS9zeXMvdGltZV9pbXBsLmgiIDMKdHlwZWRlZiBzdHJ1 Y3QgaXRpbWVyc3BlYyB7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIGl0X2ludGVydmFsOwogICAg ICAgIHN0cnVjdCB0aW1lc3BlYyBpdF92YWx1ZTsKfSBpdGltZXJzcGVjX3Q7CiMgODQgIi91c3Iv aW5jbHVkZS90aW1lLmgiIDIgMwojIDk4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnVuaW9uIHNp Z3ZhbCB7CiAgICAgICAgaW50IHNpdmFsX2ludDsKICAgICAgICB2b2lkICpzaXZhbF9wdHI7Cn07 CgoKCgpzdHJ1Y3Qgc2lnZXZlbnQgewogICAgICAgIGludCBzaWdldl9ub3RpZnk7CiAgICAgICAg aW50IHNpZ2V2X3NpZ25vOwogICAgICAgIHVuaW9uIHNpZ3ZhbCBzaWdldl92YWx1ZTsKICAgICAg ICB2b2lkICgqc2lnZXZfbm90aWZ5X2Z1bmN0aW9uKSh1bmlvbiBzaWd2YWwpOwogICAgICAgIHB0 aHJlYWRfYXR0cl90ICpzaWdldl9ub3RpZnlfYXR0cmlidXRlczsKICAgICAgICBpbnQgX19zaWdl dl9wYWQyOwp9OwoKCmV4dGVybiBpbnQgY2xvY2tfZ2V0cmVzKGNsb2NraWRfdCwgc3RydWN0IHRp bWVzcGVjICopOwpleHRlcm4gaW50IGNsb2NrX2dldHRpbWUoY2xvY2tpZF90LCBzdHJ1Y3QgdGlt ZXNwZWMgKik7CmV4dGVybiBpbnQgY2xvY2tfc2V0dGltZShjbG9ja2lkX3QsIGNvbnN0IHN0cnVj dCB0aW1lc3BlYyAqKTsKZXh0ZXJuIGludCB0aW1lcl9jcmVhdGUoY2xvY2tpZF90LCBzdHJ1Y3Qg c2lnZXZlbnQgKiwgdGltZXJfdCAqKTsKZXh0ZXJuIGludCB0aW1lcl9kZWxldGUodGltZXJfdCk7 CmV4dGVybiBpbnQgdGltZXJfZ2V0b3ZlcnJ1bih0aW1lcl90KTsKZXh0ZXJuIGludCB0aW1lcl9n ZXR0aW1lKHRpbWVyX3QsIHN0cnVjdCBpdGltZXJzcGVjICopOwpleHRlcm4gaW50IHRpbWVyX3Nl dHRpbWUodGltZXJfdCwgaW50LCBjb25zdCBzdHJ1Y3QgaXRpbWVyc3BlYyAqLAogICAgICAgICAg ICAgICAgc3RydWN0IGl0aW1lcnNwZWMgKik7CmV4dGVybiBpbnQgbmFub3NsZWVwKGNvbnN0IHN0 cnVjdCB0aW1lc3BlYyAqLCBzdHJ1Y3QgdGltZXNwZWMgKik7CgoKCgpleHRlcm4gdm9pZCB0enNl dCh2b2lkKTsKCmV4dGVybiBjaGFyICp0em5hbWVbMl07CgoKZXh0ZXJuIGxvbmcgX3N5c2NvbmYo aW50KTsKCgoKCgoKZXh0ZXJuIGxvbmcgdGltZXpvbmU7CmV4dGVybiBpbnQgZGF5bGlnaHQ7CgoK CgoKZXh0ZXJuIGludCBjZnRpbWUoY2hhciAqLCBjaGFyICosIGNvbnN0IHRpbWVfdCAqKTsKZXh0 ZXJuIGludCBhc2NmdGltZShjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0IHRtICop OwpleHRlcm4gbG9uZyBhbHR6b25lOwoKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqZ2V0ZGF0ZShjb25z dCBjaGFyICopOwoKCgoKCgpleHRlcm4gaW50IGdldGRhdGVfZXJyOwojIDUgInpob3UuYyIgMgoj IDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjcvMy4wLjEvaW5j bHVkZS9saW1pdHMuaCIgMSAzCiMgMTEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3Vu LXNvbGFyaXMyLjcvMy4wLjEvaW5jbHVkZS9saW1pdHMuaCIgMwojIDEgIi91c3IvbG9jYWwvbGli L2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjcvMy4wLjEvaW5jbHVkZS9zeXNsaW1pdHMuaCIg MSAzCiMgMjUgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjcvMy4w LjEvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpbGltaXRzLmgJMS40 OAk5OC8wNy8yMCBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAx IDMKIyAyOCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNy8zLjAu MS9pbmNsdWRlL3N5c2xpbWl0cy5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2lzYV9kZWZz LmgiIDEgMwojIDI5ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi43 LzMuMC4xL2luY2x1ZGUvc3lzbGltaXRzLmgiIDIgMwojIDQwICIvdXNyL2xvY2FsL2xpYi9nY2Mt bGliL3NwYXJjLXN1bi1zb2xhcmlzMi43LzMuMC4xL2luY2x1ZGUvc3lzbGltaXRzLmgiIDMKIyAx ICIvdXNyL2luY2x1ZGUvc3lzL2ludF9saW1pdHMuaCIgMSAzCiMgOSAiL3Vzci9pbmNsdWRlL3N5 cy9pbnRfbGltaXRzLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgjKWludF9saW1pdHMuaAkxLjYJOTkv MDgvMDYgU01JIgojIDQ0ICIvdXNyL2luY2x1ZGUvc3lzL2ludF9saW1pdHMuaCIgMwojIDEgIi91 c3IvaW5jbHVkZS9zeXMvaXNhX2RlZnMuaCIgMSAzCiMgNDUgIi91c3IvaW5jbHVkZS9zeXMvaW50 X2xpbWl0cy5oIiAyIDMKIyA0MSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29s YXJpczIuNy8zLjAuMS9pbmNsdWRlL3N5c2xpbWl0cy5oIiAyIDMKIyAxMiAiL3Vzci9sb2NhbC9s aWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNy8zLjAuMS9pbmNsdWRlL2xpbWl0cy5oIiAy IDMKIyA2ICJ6aG91LmMiIDIKIyAxICJyYW5kb20uYyIgMQoKCgp1bnNpZ25lZCBuZD0xLCBpcmFu PTI5MTUzMDcxNywgcmFuLCByYVsxNjM4NF07CmRvdWJsZSByYW5zY2FsZT0oZG91YmxlKTEvKCgy MTQ3NDgzNjQ3ICogMlUgKyAxKSsoZG91YmxlKTEpOwoKCnZvaWQgaW5pdGlhbGl6ZV9ybmcodm9p ZCkKewogIGRvdWJsZSB6PTAuNDYxNzAzNDsKICBpbnQgbTsKCiAgZm9yKG09MDttPDE2Mzg0O20r KykKICAgIHsKICAgICAgaXJhbio9NjkwNjk7CiAgICAgIGlyYW4rKzsKICAgICAgcmFbbV09aXJh bl4oaW50KSgxLjFlOSpzaW4oKGRvdWJsZSltKSleKGludCkoNS5lMTAqeik7CiAgICAgIHo9MS45 OTg3NjQwNzA4ZTAteip6OwogICAgfQogIGZvcihtPTA7bTwxNjM4NDttKyspCiAgICB7CiAgICAg IGlyYW4qPTY5MDY5OwogICAgICBpcmFuKys7CiAgICAgIHJhW21dXj0oaXJhbjw8Myk7CiAgICAg IGlyYW4rKzsKICAgICAgcmFbbV1ePShpcmFuPj4xOSk7CiAgICB9CiAgZm9yKG09MDttPDE2Mzg0 O20rPTI3KQogICAgewogICAgICBpcmFuKj02OTA2OTsKICAgICAgaXJhbisrOwogICAgICByYVtt XV49aXJhbjsKICAgIH0KICBmb3IobT0wO208NTAwMDAwO20rKykKICAgICAgcmFuPSgrK25kLHJh W25kJjE2MzgzXSA9IHJhWyhuZC00NzEpJjE2MzgzXV5yYVsobmQtNjk4OCkmMTYzODNdXnJhWyhu ZC05Njg5KSYxNjM4M11ecmFbKG5kLTE1ODYpJjE2MzgzXSkgOwp9CiMgNyAiemhvdS5jIiAyCiMg MjYgInpob3UuYyIKY2xvY2tfdCBzdGFydCwgZW5kZTsKZG91YmxlIGNwdV90aW1lPTA7CmludCBp LCBuLCBzdGFydHMsIHN0YXJ0c2xhc3RbNTAwXSxlOwpkb3VibGUgd2s7CmRvdWJsZSB6blsyNV0s c2Vld1syNV0sIHNlZXcyWzI1XTsKaW50IGVtYXg9MDsKaW50IGNbMjVdLGVlWzI1XTsKaW50IHRv dXJsZW5ndGg7CmludCBubWF4X2xlbmd0aCxzdGFydG1pbls1MDBdOwpkb3VibGUgeHhbMjVdLHl5 WzI1XSx6elsyNV0scGhpWzI1XSx0aGV0YVsyNV0seHgwWzI1XSx5eTBbMjVdLHp6MFsyNV07CmRv dWJsZSBwaTI9My4xNDE1OTI2NTM1ODk3OTMwKjIuLHJhbnNjYWxlMixyYW5zY2FsZXBpMjsKZG91 YmxlIGxhbWJkYTI9MS41KjEuNTsKZG91YmxlIGxvZ3AwOwpkb3VibGUgZWhpc3RbNTAwXVs1XTsK aW50IGxhc3RoaXRbNTAwXVs1XSwgY2VoaXN0WzUwMF1bNV07CmludCBsZW5nWzVdPXsyNCwxNSwx MSw3LDV9OwoKRklMRSAqZm91dDsKaW50IHN1Y2NbNTAwXTsKZG91YmxlIHN1Y2N3WzUwMF07CmRv dWJsZSBzdW1xWzYwICsxXSxzdW1xdFs2MCo2MCo2MC82XSxzdW1xMls2MCo2MCo2MC82XTsKZG91 YmxlIHEwWzEzXTsKCnZvaWQgc3RlcChkb3VibGUgdykKewogaW50IGsxLGsyLGszLGosbmZyZWUs bmZyZWUxOwogaW50IGVlbmV4dFs2MCArMV07CiBkb3VibGUgdzEsIHcyLCB3cHJlZDsKIGRvdWJs ZSBxWzYwICsxXSxxcVs2MCArMV07CiBkb3VibGUgeHhuZXdbNjAgKzFdLHl5bmV3WzYwICsxXSx6 em5ld1s2MCArMV0seHh0LHl5dCx6enQ7CiBkb3VibGUgcGhpbmV3WzYwICsxXSx0aGV0YW5ld1s2 MCArMV07CiBkb3VibGUgZW9sZCxycDsKIGRvdWJsZSBwaGkxLHRoZXRhMTsKIGRvdWJsZSBjb3N0 aGV0YTEsc2ludGhldGExOwogZG91YmxlIHh4biwgeXluLCB6em4sIHJrbjI7CiBpbnQgZGUsbmV4 dFs2MCo2MCo2MC82XVs0XSxudW0xLG51bXQsbmV4dGZyZWUsam5bNjAgKzFdOwogaW50IGlyMDsK IGRvdWJsZSB3ZjsKCiAgICAgICAgICAgICBpZih3PjEuZTMwKSB7cHJpbnRmKCJ3ID0gJWU6IHN0 YXJ0cyxuID0gJWQsICVkXG4iLHcsc3RhcnRzLG4pOyAoLS0oKCZfX2lvYlswXSkpLT5fY250IDwg MCA/IF9fZmlsYnVmKCgmX19pb2JbMF0pKSA6IChpbnQpKigoJl9faW9iWzBdKSktPl9wdHIrKyk7 fQogIGVvbGQ9ZTsKICBlKz1lZVtuXTsKICB6bltuXSs9dzsKICBjW25dKys7CiAgc2Vld1tuXSs9 ZSp3OyBzZWV3MltuXSs9ZSplKnc7CgogIHh4dD14eFtuXTsgeXl0PXl5W25dOyB6enQ9enpbbl07 CgogIGlmIChuPnRvdXJsZW5ndGgpIHRvdXJsZW5ndGg9bjsKCiAgZm9yIChpPTA7aTw1O2krKykg ewogICAgICBpZiAobj09bGVuZ1tpXSkgewogICAgICAgICAgZWhpc3RbZV1baV0rPXc7CiAgICAg ICAgICBpZiAobGFzdGhpdFtlXVtpXTxzdGFydHMpIHsgY2VoaXN0W2VdW2ldKys7IGxhc3RoaXRb ZV1baV09c3RhcnRzO30KICAgICAgfQogIH0KCiAgaWYgKG48bm1heF9sZW5ndGgpIHsKICAgICBu Kys7CiAgICAgbmZyZWU9MDsKICAgICBwaGkxPSgrK25kLHJhW25kJjE2MzgzXSA9IHJhWyhuZC00 NzEpJjE2MzgzXV5yYVsobmQtNjk4OCkmMTYzODNdXnJhWyhuZC05Njg5KSYxNjM4M11ecmFbKG5k LTE1ODYpJjE2MzgzXSkqcmFuc2NhbGVwaTI7CiAgICAgZm9yIChqPTE7ajw9NjA7aisrKSB7CiAg ICAgICAgcGhpMSs9cGkyLzYwOyBpZihwaGkxPnBpMikgcGhpMS09cGkyOwogICAgICAgIGNvc3Ro ZXRhMT0oKytuZCxyYVtuZCYxNjM4M10gPSByYVsobmQtNDcxKSYxNjM4M11ecmFbKG5kLTY5ODgp JjE2MzgzXV5yYVsobmQtOTY4OSkmMTYzODNdXnJhWyhuZC0xNTg2KSYxNjM4M10pKnJhbnNjYWxl Mi0xOwogICAgICAgIHNpbnRoZXRhMT1zcXJ0KDEtY29zdGhldGExKmNvc3RoZXRhMSk7CiAgICAg ICAgdGhldGExPWFjb3MoY29zdGhldGExKTsKICAgICAgICB4eG49eHh0K3NpbnRoZXRhMSpjb3Mo cGhpMSk7CiAgICAgICAgeXluPXl5dCtzaW50aGV0YTEqc2luKHBoaTEpOwogICAgICAgIHp6bj16 enQrY29zdGhldGExOwogICAgICAgIGRlPTA7CiAgICAgICAgZm9yIChrMT1uLTI7IGsxPj0wOyBr MS0tKSB7CiAgICAgICAgICBya24yPSh4eG4teHhbazFdKSooeHhuLXh4W2sxXSkrKHl5bi15eVtr MV0pKih5eW4teXlbazFdKSsoenpuLXp6W2sxXSkqKHp6bi16eltrMV0pOwogICAgICAgICAgaWYo cmtuMjwxLikgZ290byBhYWE7CiAgICAgICAgICBpZihya24yPGxhbWJkYTIpIGRlKys7CiAgICAg ICAgfQogICAgICAgIG5mcmVlKys7CiAgICAgICAgcVtuZnJlZV09cTBbZGVdOwogICAgICAgIGVl bmV4dFtuZnJlZV09ZGU7CiAgICAgICAgeHhuZXdbbmZyZWVdPXh4bjsgeXluZXdbbmZyZWVdPXl5 bjsgenpuZXdbbmZyZWVdPXp6bjsKICAgICAgICBwaGluZXdbbmZyZWVdPXBoaTE7IHRoZXRhbmV3 W25mcmVlXT10aGV0YTE7CiAgICAgICAgYWFhOjsKICAgICB9CgogICAgIGlmIChuZnJlZT4wKSB7 CiAgICAgICBzdW1xWzBdPTA7CiAgICAgICBmb3IgKGo9MTtqPD1uZnJlZTtqKyspIHsKICAgICAg ICAgIG5mcmVlMT0wOwogICAgICAgICAgbmV4dGZyZWU9MStuZnJlZTEqMi4wOwogICAgICAgICAg c3VtcVtqXT0ocXFbal09cVtqXSpuZXh0ZnJlZSkrc3VtcVtqLTFdO2puW2pdPWo7CiAgICAgICB9 CiAgICAgICB3cHJlZD13KnN1bXFbbmZyZWVdOwogICAgICAgaWYoem5bbl0+MWUtMTUwKSB7dzE9 em5bbl0qY1tuXSp3aypjW25dKmNbbl07IHcyPXcxKi4yO30KICAgICAgIGVsc2Uge3cxPTEuZTE2 MDsgdzI9MC47fQoKICAgICAgIGlmICgod3ByZWQ+dzEpJiYobmZyZWU+MSkpIHsKICAgICAgICAg IGlmKCh3cHJlZD53MSozKSYmKG5mcmVlPjIpKSB7CiAgICAgICAgICAgICBudW10PTA7IHN1bXF0 WzBdPTA7CiAgICAgICAgICAgICBmb3IgKGsxPTE7azE8bmZyZWUtMTsgazErKykgewogICAgICAg ICAgICAgICBmb3IgKGsyPWsxKzE7azI8bmZyZWU7IGsyKyspIHsKICAgICAgICAgICAgICAgICBm b3IgKGszPWsyKzE7azM8PW5mcmVlOyBrMysrKSB7CiAgICAgICAgICAgICAgICAgICBudW10Kys7 CiAgICAgICAgICAgICAgICAgICBuZXh0W251bXRdWzFdPWpuW2sxXTsKICAgICAgICAgICAgICAg ICAgIG5leHRbbnVtdF1bMl09am5bazJdOwogICAgICAgICAgICAgICAgICAgbmV4dFtudW10XVsz XT1qbltrM107CiAgICAgICAgICAgICAgICAgICBzdW1xMltudW10XT1xcVtrMV0rcXFbazJdK3Fx W2szXTsKICAgICAgICAgICAgICAgICAgIHN1bXF0W251bXRdPXN1bXEyW251bXRdK3N1bXF0W251 bXQtMV07CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9 CiAgICAgICAgICAgICBycD0oKCsrbmQscmFbbmQmMTYzODNdID0gcmFbKG5kLTQ3MSkmMTYzODNd XnJhWyhuZC02OTg4KSYxNjM4M11ecmFbKG5kLTk2ODkpJjE2MzgzXV5yYVsobmQtMTU4NikmMTYz ODNdKSpyYW5zY2FsZSkqc3VtcXRbbnVtdF07CiAgICAgICAgICAgICBudW0xPTA7CiAgICAgICAg ICAgICBkbyBudW0xKys7IHdoaWxlIChzdW1xdFtudW0xXTxycCk7CiAgICAgICAgICAgICBpZihu dW0xPm51bXQpIHByaW50ZigibnVtMT5udW10ID0gJWQhXG4iLG51bXQpOwogICAgICAgICAgICAg dyo9c3VtcVtuZnJlZV0vc3VtcTJbbnVtMV07CiAgICAgICAgICAgICBmb3IgKGszPTE7azM8PTM7 azMrKykgewogICAgICAgICAgICAgICAgazE9bmV4dFtudW0xXVtrM107CiAgICAgICAgICAgICAg ICBlZVtuXT1lZW5leHRbazFdOwogICAgICAgICAgICAgICAgeHhbbl09eHhuZXdbazFdOyB5eVtu XT15eW5ld1trMV07IHp6W25dPXp6bmV3W2sxXTsKICAgICAgICAgICAgICAgIHBoaVtuXT1waGlu ZXdbazFdOyB0aGV0YVtuXT10aGV0YW5ld1trMV07CiAgICAgICAgICAgICAgICBzdGVwKHcqcVtr MV0pOwogICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG51bXQ9 MDsgc3VtcXRbMF09MDsKICAgICAgICAgICAgIGZvciAoazE9MTtrMTxuZnJlZTsgazErKykgewog ICAgICAgICAgICAgICBmb3IgKGsyPWsxKzE7azI8PW5mcmVlOyBrMisrKSB7CiAgICAgICAgICAg ICAgICAgbnVtdCsrOwogICAgICAgICAgICAgICAgIG5leHRbbnVtdF1bMV09am5bazFdOwogICAg ICAgICAgICAgICAgIG5leHRbbnVtdF1bMl09am5bazJdOwogICAgICAgICAgICAgICAgIHN1bXEy W251bXRdPXFxW2sxXStxcVtrMl07CiAgICAgICAgICAgICAgICAgc3VtcXRbbnVtdF09c3VtcTJb bnVtdF0rc3VtcXRbbnVtdC0xXTsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAg ICAgICAgICAgcnA9KCgrK25kLHJhW25kJjE2MzgzXSA9IHJhWyhuZC00NzEpJjE2MzgzXV5yYVso bmQtNjk4OCkmMTYzODNdXnJhWyhuZC05Njg5KSYxNjM4M11ecmFbKG5kLTE1ODYpJjE2MzgzXSkq cmFuc2NhbGUpKnN1bXF0W251bXRdOwogICAgICAgICAgICAgbnVtMT0wOwogICAgICAgICAgICAg ZG8gbnVtMSsrOyB3aGlsZSAoc3VtcXRbbnVtMV08cnApOwogICAgICAgICAgICAgaWYobnVtMT5u dW10KSBwcmludGYoIm51bTE+bnVtdCA9ICVkIVxuIixudW10KTsKICAgICAgICAgICAgIHcqPXN1 bXFbbmZyZWVdL3N1bXEyW251bTFdOwogICAgICAgICAgICAgZm9yIChrMj0xO2syPD0yO2syKysp ewogICAgICAgICAgICAgICAgazE9bmV4dFtudW0xXVtrMl07CiAgICAgICAgICAgICAgICBlZVtu XT1lZW5leHRbazFdOwogICAgICAgICAgICAgICAgeHhbbl09eHhuZXdbazFdOyB5eVtuXT15eW5l d1trMV07IHp6W25dPXp6bmV3W2sxXTsKICAgICAgICAgICAgICAgIHBoaVtuXT1waGluZXdbazFd OyB0aGV0YVtuXT10aGV0YW5ld1trMV07CiAgICAgICAgICAgICAgICBzdGVwKHcqcVtrMV0pOwog ICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgfSBlbHNlIGlmICh3cHJlZD53Mikgewog ICAgICAgICAgIHJwPXN1bXFbbmZyZWVdKigoKytuZCxyYVtuZCYxNjM4M10gPSByYVsobmQtNDcx KSYxNjM4M11ecmFbKG5kLTY5ODgpJjE2MzgzXV5yYVsobmQtOTY4OSkmMTYzODNdXnJhWyhuZC0x NTg2KSYxNjM4M10pKnJhbnNjYWxlKTsKICAgICAgICAgICBudW0xPTA7CiAgICAgICAgICAgZG8g bnVtMSsrOyB3aGlsZSAoc3VtcVtudW0xXTxycCk7CiAgICAgICAgICAgaWYobnVtMT5uZnJlZSkg cHJpbnRmKCJudW0xPm5mcmVlID0gJWQhXG4iLG5mcmVlKTsKICAgICAgICAgICB3Kj1zdW1xW25m cmVlXS9xcVtudW0xXTsKICAgICAgICAgICBrMT1qbltudW0xXTsKICAgICAgICAgICBlZVtuXT1l ZW5leHRbazFdOwogICAgICAgICAgIHh4W25dPXh4bmV3W2sxXTsgeXlbbl09eXluZXdbazFdOyB6 eltuXT16em5ld1trMV07CiAgICAgICAgICAgcGhpW25dPXBoaW5ld1trMV07IHRoZXRhW25dPXRo ZXRhbmV3W2sxXTsKICAgICAgICAgICBzdGVwKHcqcVtrMV0pOwogICAgICAgfSBlbHNlIHsKICAg ICAgICAgICBpZih3cHJlZD53MiouNDUpIHsgaXIwPTE7IHdmPTI7IH0KICAgICAgICAgICBlbHNl IHsgaXIwPTM7IHdmPTQ7IH0KICAgICAgICAgICBpZigoKCsrbmQscmFbbmQmMTYzODNdID0gcmFb KG5kLTQ3MSkmMTYzODNdXnJhWyhuZC02OTg4KSYxNjM4M11ecmFbKG5kLTk2ODkpJjE2MzgzXV5y YVsobmQtMTU4NikmMTYzODNdKSZpcjApPT0wKSB7CiAgICAgICAgICAgICAgcnA9c3VtcVtuZnJl ZV0qKCgrK25kLHJhW25kJjE2MzgzXSA9IHJhWyhuZC00NzEpJjE2MzgzXV5yYVsobmQtNjk4OCkm MTYzODNdXnJhWyhuZC05Njg5KSYxNjM4M11ecmFbKG5kLTE1ODYpJjE2MzgzXSkqcmFuc2NhbGUp OwogICAgICAgICAgICAgIG51bTE9MDsKICAgICAgICAgICAgICBkbyBudW0xKys7IHdoaWxlIChz dW1xW251bTFdPHJwKTsKICAgICAgICAgICAgICBpZihudW0xPm5mcmVlKSBwcmludGYoIm51bTE+ bmZyZWUgPSAlZFxuIixuZnJlZSk7CiAgICAgICAgICAgICAgdyo9KHdmKnN1bXFbbmZyZWVdL3Fx W251bTFdKTsKICAgICAgICAgICAgICBrMT1qbltudW0xXTsKICAgICAgICAgICAgICBlZVtuXT1l ZW5leHRbazFdOwogICAgICAgICAgICAgIHh4W25dPXh4bmV3W2sxXTsgeXlbbl09eXluZXdbazFd OyB6eltuXT16em5ld1trMV07CiAgICAgICAgICAgICAgcGhpW25dPXBoaW5ld1trMV07IHRoZXRh W25dPXRoZXRhbmV3W2sxXTsKICAgICAgICAgICAgICBzdGVwKHcqcVtrMV0pOwogICAgICAgICAg IH0KICAgICAgIH0KICAgICB9CiAgICAgbi0tOwogIH0gZWxzZSB7CiAgICAgaWYgKGU+ZW1heCkg ewogICAgICAgIHN0YXJ0bWluW2VdPXN0YXJ0czsKICAgICAgICBlbWF4PWU7CiAgICAgICAgZm91 dD1mb3BlbigicC16aDI1LTEuMC02MC5kYXQtYiIsInciKTsKICAgICAgICBmcHJpbnRmKGZvdXQs IiMgIE5ldyBQRVJNaXNcbiIpOwogICAgICAgIGZwcmludGYoZm91dCwiIyAgdGVtcCA9ICVnICBw MCA9ICVnIEN1dG9mZj0lZywgQ1BVLVplaXQ9JTExLjFmIHNlYy4gXG4iLDEuLzEuMCwxLi82MCww LjAxLGNwdV90aW1lKTsKICAgICAgICBmcHJpbnRmKGZvdXQsIiMgIHN0YXJ0cyA9ICV1LCBlbWlu ID0gJWQgKHN0YXJ0PSVkKSBcbiIsc3RhcnRzLC1lbWF4LHN0YXJ0bWluW2VtYXhdKTsKICAgICAg ICBmcHJpbnRmKGZvdXQsIiMgICVkIGNhbmRpZGF0ZXNcbiIsNjApOwogICAgICAgIGZwcmludGYo Zm91dCwiIyAgZXZlbmx5IHNwYWNlZCBwaGktdmFsdWVzICEhXG4iKTsKICAgICAgICBmb3IgKGo9 ZW1heC05O2o8PWVtYXg7aisrKQogICAgICAgICAgIGZwcmludGYoZm91dCwiIyAgJTEyZCAlOGRc biIsLWosc3RhcnRtaW5bal0pOwogICAgICAgIGZwcmludGYoZm91dCwiIyBuIHwgeHggfCB5eSB8 IHp6IFxuIik7CiAgICAgICAgZm9yIChqPTA7ajw9bm1heF9sZW5ndGg7aisrKXsKICAgICAgICAg ICBpZihlPT1lbWF4KSB7IHh4MFtqXT14eFtqXTsgeXkwW2pdPXl5W2pdOyB6ejBbal09enpbal07 fQogICAgICAgICAgIGZwcmludGYoZm91dCwiJTNkICUxMi41ZiAlMTIuNWYgJTEyLjVmXG4iLGos eHgwW2pdLHl5MFtqXSx6ejBbal0pOwogICAgICAgIH0KICAgICAgICBmY2xvc2UoZm91dCk7CiAg ICAgfQogICAgIHN1Y2N3W2VdKz13OwogICAgIGlmKHN0YXJ0cz5zdGFydHNsYXN0W2VdKXsKICAg ICAgICBzdGFydHNsYXN0W2VdPXN0YXJ0czsKICAgICAgICBzdWNjW2VdKys7CiAgICAgfQogIH0K ICBlPWVvbGQ7Cn0KCmludCBtYWluKHZvaWQpCnsKICAgaW50IGosayxrayxra3A9MCxudG91clsy NV0sdG91cnMsaWk7CiAgIGRvdWJsZSBhdnosIGF2ZWV3OwogICBkb3VibGUgYXZlZXcyLCBjdjsK ICAgZG91YmxlIGVoWzRdPXswLDAsMCwwfTsKICAgaW5pdGlhbGl6ZV9ybmcoICk7CiAgIHJhbnNj YWxlMj1yYW5zY2FsZSoyOyByYW5zY2FsZXBpMj1yYW5zY2FsZSpwaTI7CgogICBsb2dwMD1sb2co MS4vNjApOwogICBmb3IoaT0wO2k8MjU7aSsrKSB6bltpXT1jW2ldPXNlZXdbaV09bnRvdXJbaV09 MDsKICAgZm9yKGk9MDtpPDUwMDtpKyspIHsKICAgICAgICAgc3VjY1tpXT1zdWNjd1tpXT1zdGFy dHNsYXN0W2ldPXN0YXJ0bWluW2ldPTA7CiAgICAgICAgIGZvciAoaj0wO2o8NTtqKyspIGVoaXN0 W2ldW2pdPWNlaGlzdFtpXVtqXT1sYXN0aGl0W2ldW2pdPTA7CiAgIH0KICAgZm9yKGk9MDtpPDEz O2krKykgcTBbaV09MS4vNjAqZXhwKDEuMCppKTsKICAgc3RhcnRzPTA7CiAgIG5tYXhfbGVuZ3Ro PTI1IC0xOwogICBmb3Ioa2s9MTtrazwyMDAwMDAwMDA7a2srKykgewogICAgICBzdGFydD1jbG9j aygpOwogICAgICBmb3Ioaz0xO2s8PTUwMDtrKyspIHsKICAgICAgICAgc3RhcnRzKys7IHdrPTAu MDEvKGRvdWJsZSlzdGFydHMvc3RhcnRzLyhkb3VibGUpc3RhcnRzL3N0YXJ0czsKICAgICAgICAg eHhbMF09eXlbMF09enpbMF09MDsgem5bMF0rKztjWzBdKys7CiAgICAgICAgIHh4WzFdPTE7IHl5 WzFdPXBoaVsxXT1lZVsxXT0wOwogICAgICAgICBlPTAuMDsgdG91cmxlbmd0aD1uPTE7CiAgICAg ICAgIHN0ZXAoMS4vNjApOwogICAgICAgICBudG91clt0b3VybGVuZ3RoXSsrO30KICAgICAgZW5k ZT1jbG9jayggKTsKICAgICAgY3B1X3RpbWUrPShkb3VibGUpKGVuZGUtc3RhcnQpLzEwMDAwMDA7 CgogICAgICBpZihraz5ra3ApIHsKICAgICAgICAgcHJpbnRmKCIgJWQgcnVuczogJWQgc3VjY2Vz c2VzLCB6biA9ICVnLCAlZiBzZWMsICBlX21pbiA9ICVkXG4iLGtrKjUwMCxudG91cltubWF4X2xl bmd0aF0sem5bbm1heF9sZW5ndGhdL2trLzUwMCxjcHVfdGltZSwtZW1heCk7CiAgICAgICAgIGtr cD1rayoxLjAyOwogICAgICAgICBmb3V0PWZvcGVuKCJlLXpoMjUtMS4wLTYwLmRhdC1iIiwidyIp OwogICAgICAgICBmcHJpbnRmKGZvdXQsIiMgIE5ldyBQRVJNaXNcbiIpOwogICAgICAgICBmcHJp bnRmKGZvdXQsIiMgIHRlbXAgPSAlZyAgcDAgPSAlZyBDdXRvZmY9JWcsIENQVS1aZWl0PSUxMS4x ZiBzZWMuIFxuIiwxLi8xLjAsMS4vNjAsMC4wMSxjcHVfdGltZSk7CiAgICAgICAgIGZwcmludGYo Zm91dCwiIyAgc3RhcnRzID0gJXUsIGVtaW4gPSAlZCAoc3RhcnQ9JWQpIFxuIixzdGFydHMsLWVt YXgsc3RhcnRtaW5bZW1heF0pOwogICAgICAgICBmcHJpbnRmKGZvdXQsIiMgICVkIGNhbmRpZGF0 ZXNcbiIsNjApOwogICAgICAgICBmb3Ioaj0wOyBqPDUwMDsgaisrKSBpZihzdWNjW2pdPjApIGZw cmludGYoZm91dCwiJTdkICU4ZCAlMTEuNmZcbiIsLWosc3VjY1tqXSxsb2coc3VjY3dbal0pLW5t YXhfbGVuZ3RoKmxvZ3AwKTsKICAgICAgICAgZmNsb3NlKGZvdXQpOwogICAgICAgICBmb3V0PWZv cGVuKCJ6LXpoMjUtMS4wLTYwLmRhdC1iIiwidyIpOwogICAgICAgICBmcHJpbnRmKGZvdXQsIiMg IE5ldyBQRVJNaXNcbiIpOwogICAgICAgICBmcHJpbnRmKGZvdXQsIiMgIHRlbXAgPSAlZyAgcDAg PSAlZyBDdXRvZmY9JWcsIENQVS1aZWl0PSUxMS4xZiBzZWMuIFxuIiwxLi8xLjAsMS4vNjAsMC4w MSxjcHVfdGltZSk7CiAgICAgICAgIGZwcmludGYoZm91dCwiIyAgc3RhcnRzID0gJXUsIGVtaW4g PSAlZCAoc3RhcnQ9JWQpIFxuIixzdGFydHMsLWVtYXgsc3RhcnRtaW5bZW1heF0pOwogICAgICAg ICBmcHJpbnRmKGZvdXQsIiMgICVkIGNhbmRpZGF0ZXNcbiIsNjApOwogICAgICAgICB0b3Vycz1r ayo1MDA7CiAgICAgICAgIGZwcmludGYoZm91dCwgIiMgbiB8IGxuIHpuW25dIHwgY2MgfCB0b3Vy cyB8IGNfdiB8IDxlPnwgXG4iKTsKICAgICAgICAgZm9yKGo9MDsgajw9bm1heF9sZW5ndGg7aisr KXsKICAgICAgICAgICAgYXZlZXc9c2Vld1tqXS96bltqXTsKICAgICAgICAgICAgYXZlZXcyPXNl ZXcyW2pdL3puW2pdOwogICAgICAgICAgICBhdno9em5bal0va2svNTAwOwogICAgICAgICAgICBj dj0xLjAqMS4wKihhdmVldzItYXZlZXcqYXZlZXcpOwoKICAgICAgICAgICAgZnByaW50Zihmb3V0 LCIlM2QgJTExLjVmICUxMmQgJTEyZCAlMTAuNGYgJTEwLjRmXG4iLGosbG9nKGF2eiktaipsb2dw MCxjW2pdLHRvdXJzLGN2LC1hdmVldyk7CiAgICAgICAgICAgIHRvdXJzLT1udG91cltqXTsgfQog ICAgICAgICBmY2xvc2UoZm91dCk7CiAgICAgICAgIGZvdXQ9Zm9wZW4oImgtemgyNS0xLjAtNjAu ZGF0LWIiLCJ3Iik7CiAgICAgICAgIGZwcmludGYoZm91dCwiIyAgTmV3IFBFUk1pc1xuIik7CiAg ICAgICAgIGZwcmludGYoZm91dCwiIyAgdGVtcCA9ICVnICBwMCA9ICVnIEN1dG9mZj0lZywgQ1BV LVplaXQ9JTExLjFmIHNlYy4gXG4iLDEuLzEuMCwxLi82MCwwLjAxLGNwdV90aW1lKTsKICAgICAg ICAgZnByaW50Zihmb3V0LCIjICBzdGFydHMgPSAldSwgZW1pbiA9ICVkIChzdGFydD0lZCkgXG4i LHN0YXJ0cywtZW1heCxzdGFydG1pbltlbWF4XSk7CiAgICAgICAgIGZwcmludGYoZm91dCwiIyAg JWQgY2FuZGlkYXRlc1xuIiw2MCk7CiAgICAgICAgIGZvciAoaT0wOyBpPDUwMDtpKyspewogICAg ICAgICAgICBpaT1jZWhpc3RbaV1bMF0rY2VoaXN0W2ldWzFdK2NlaGlzdFtpXVsyXStjZWhpc3Rb aV1bM10rY2VoaXN0W2ldWzRdOwogICAgICAgICAgICBpZihpaT09MCkgY29udGludWU7CiAgICAg ICAgICAgIGZvciAoaj0wO2o8NTtqKyspIHsKICAgICAgICAgICAgaWYoY2VoaXN0W2ldW2pdPjAp IGVoW2pdPWxvZyhlaGlzdFtpXVtqXS9zdGFydHMpLShsZW5nW2pdKSpsb2dwMDsgZWxzZSBlaFtq XT0wO30KICAgICAgICAgICAgZnByaW50Zihmb3V0LCIlNWQgJThkICUxMS42ZiAlOGQgJTExLjZm ICU4ZCAlMTEuNmYgJThkICUxMS42ZiAlOGQgJTExLjZmXG4iLGksCiAgICAgICAgICAgICAgIGNl aGlzdFtpXVswXSxlaFswXSwgY2VoaXN0W2ldWzFdLGVoWzFdLCBjZWhpc3RbaV1bMl0sZWhbMl0s IGNlaGlzdFtpXVszXSxlaFszXSwgY2VoaXN0W2ldWzRdLGVoWzRdKTsKICAgICAgICAgY29udGlu dWU7CiAgICAgICAgfQogICAgICAgICBmY2xvc2UoZm91dCk7CgogICAgICB9CiAgIH0KfQo=