From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9404 invoked by alias); 11 Dec 2001 21:56:02 -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 9377 invoked by uid 71); 11 Dec 2001 21:56:01 -0000 Resent-Date: 11 Dec 2001 21:56:01 -0000 Resent-Message-ID: <20011211215601.9376.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-To: nobody@gcc.gnu.org Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, georg.wild@gmx.de Received:(qmail 6193 invoked by uid 61); 11 Dec 2001 21:49:19 -0000 Message-Id:<20011211214919.6189.qmail@sources.redhat.com> Date: Tue, 11 Dec 2001 13:56:00 -0000 From: georg.wild@gmx.de Reply-To: georg.wild@gmx.de To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version:gnatsweb-2.9.2 (1.1.1.1.2.21) Subject: c/5078: ICE in instantiate_virtual_regs_1, at function.c:3873 X-SW-Source: 2001-12/txt/msg00650.txt.bz2 List-Id: >Number: 5078 >Category: c >Synopsis: ICE in instantiate_virtual_regs_1, at function.c:3873 >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Tue Dec 11 13:56:01 PST 2001 >Closed-Date: >Last-Modified: >Originator: georg.wild@gmx.de >Release: latest cvs >Organization: >Environment: glibc-2.2.90 >Description: Compiling attachment produces ICE! gcc decode_steim.i decode_steim.c: In function `decode_steim': decode_steim.c:231: warning: integer overflow in expression decode_steim.c:231: warning: integer overflow in expression decode_steim.c:305: Internal compiler error in instantiate_virtual_regs_1, at function.c:3873 Please submit a full bug report, with preprocessed source if appropriate. See for instructions. >How-To-Repeat: gcc decode_steim.i >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="decode_steim.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="decode_steim.i" IyAxICJkZWNvZGVfc3RlaW0uYyIKIyAxICI8YnVpbHRpbj4iCiMgMSAiPGNvbW1hbmQgbGluZT4i CiMgMSAiZGVjb2RlX3N0ZWltLmMiCiMgMzUgImRlY29kZV9zdGVpbS5jIgojIDEgIi4uL0luY2x1 ZGUvcmRzZWVkLmgiIDEKIyAxMDUgIi4uL0luY2x1ZGUvcmRzZWVkLmgiCiMgMSAiL3Vzci9sb2Nh bC9pbmNsdWRlL3N0ZGlvLmgiIDEgMwojIDI4ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIg MwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyOTEgIi91c3IvbG9j YWwvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9jZGVm cy5oIiAxIDMKIyAyOTIgIi91c3IvbG9jYWwvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKIyAzMjAg Ii91c3IvbG9jYWwvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRl L2dudS9zdHVicy5oIiAxIDMKIyAzMjEgIi91c3IvbG9jYWwvaW5jbHVkZS9mZWF0dXJlcy5oIiAy IDMKIyAyOSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKCiMgMSAiL3Vzci9s b2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRk ZWYuaCIgMSAzCiMgMjAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu dXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVf dDsKIyAzNSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKIyAxICIvdXNyL2xvY2Fs L2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAyOSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMv dHlwZXMuaCIgMwojIDEgIi91c3IvbG9jYWwvZ2NjLzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51 eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDMwICIvdXNyL2xvY2FsL2luY2x1ZGUv Yml0cy90eXBlcy5oIiAyIDMKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191X2NoYXI7CnR5cGVk ZWYgdW5zaWduZWQgc2hvcnQgX191X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VfaW50 Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191X2xvbmc7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYg dW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VfcXVhZF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYg bG9uZyBsb25nIGludCBfX3F1YWRfdDsKIyA0OSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvdHlw ZXMuaCIgMwp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNo YXIgX191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBzaG9ydCBpbnQgX19pbnQxNl90Owp0eXBlZGVm IHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90Owp0eXBlZGVmIHNpZ25lZCBpbnQgX19pbnQz Ml90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQzMl90OwoKX19leHRlbnNpb25fXyB0eXBl ZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVm IHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRfdDsKCnR5cGVkZWYgX19xdWFkX3QgKl9f cWFkZHJfdDsKCnR5cGVkZWYgX191X3F1YWRfdCBfX2Rldl90Owp0eXBlZGVmIF9fdV9pbnQgX191 aWRfdDsKdHlwZWRlZiBfX3VfaW50IF9fZ2lkX3Q7CnR5cGVkZWYgX191X2xvbmcgX19pbm9fdDsK dHlwZWRlZiBfX3VfaW50IF9fbW9kZV90Owp0eXBlZGVmIF9fdV9pbnQgX19ubGlua190Owp0eXBl ZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CnR5cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7CnR5cGVkZWYg aW50IF9fcGlkX3Q7CnR5cGVkZWYgaW50IF9fc3NpemVfdDsKdHlwZWRlZiBfX3VfbG9uZyBfX3Js aW1fdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fcmxpbTY0X3Q7CnR5cGVkZWYgX191X2ludCBfX2lk X3Q7Cgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBfX3ZhbFsyXTsKICB9IF9fZnNpZF90OwoK CnR5cGVkZWYgaW50IF9fZGFkZHJfdDsKdHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7CnR5cGVkZWYg bG9uZyBpbnQgX190aW1lX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdXNlY29uZHNfdDsKdHlw ZWRlZiBsb25nIGludCBfX3N1c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3dibGtfdDsK CnR5cGVkZWYgbG9uZyBpbnQgX19jbG9ja190OwoKCnR5cGVkZWYgaW50IF9fY2xvY2tpZF90OwoK CnR5cGVkZWYgaW50IF9fdGltZXJfdDsKCgoKCgoKdHlwZWRlZiBpbnQgX19rZXlfdDsKCgp0eXBl ZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX2lwY19waWRfdDsKCgoKdHlwZWRlZiBsb25nIGludCBf X2Jsa3NpemVfdDsKCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtjbnRfdDsKdHlwZWRlZiBfX3F1 YWRfdCBfX2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzYmxrY250X3Q7CnR5cGVk ZWYgX191X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9fZnNmaWxj bnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNmaWxjbnQ2NF90OwoKCnR5cGVkZWYgX191X3F1 YWRfdCBfX2lubzY0X3Q7CgoKdHlwZWRlZiBfX2xvZmZfdCBfX29mZjY0X3Q7CgoKdHlwZWRlZiBs b25nIGludCBfX3Rfc2NhbGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX190X3VzY2Fs YXJfdDsKCgp0eXBlZGVmIGludCBfX2ludHB0cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IF9f c29ja2xlbl90OwoKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMu aCIgMSAzCiMgMjMgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzCiMg MSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2NoZWQuaCIgMSAzCiMgNjggIi91c3IvbG9jYWwv aW5jbHVkZS9iaXRzL3NjaGVkLmgiIDMKc3RydWN0IF9fc2NoZWRfcGFyYW0KICB7CiAgICBpbnQg X19zY2hlZF9wcmlvcml0eTsKICB9OwojIDI0ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9wdGhy ZWFkdHlwZXMuaCIgMiAzCgoKc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrCnsKICBsb25nIGludCBf X3N0YXR1czsKICBpbnQgX19zcGlubG9jazsKCn07CgoKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFk X2Rlc2NyX3N0cnVjdCAqX3B0aHJlYWRfZGVzY3I7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19wdGhy ZWFkX2F0dHJfcwp7CiAgaW50IF9fZGV0YWNoc3RhdGU7CiAgaW50IF9fc2NoZWRwb2xpY3k7CiAg c3RydWN0IF9fc2NoZWRfcGFyYW0gX19zY2hlZHBhcmFtOwogIGludCBfX2luaGVyaXRzY2hlZDsK ICBpbnQgX19zY29wZTsKICBzaXplX3QgX19ndWFyZHNpemU7CiAgaW50IF9fc3RhY2thZGRyX3Nl dDsKICB2b2lkICpfX3N0YWNrYWRkcjsKICBzaXplX3QgX19zdGFja3NpemU7Cn0gcHRocmVhZF9h dHRyX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19j X2xvY2s7CiAgX3B0aHJlYWRfZGVzY3IgX19jX3dhaXRpbmc7Cn0gcHRocmVhZF9jb25kX3Q7CgoK CnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19kdW1teTsKfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgoK dHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlfdDsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7 CiAgaW50IF9fbV9yZXNlcnZlZDsKICBpbnQgX19tX2NvdW50OwogIF9wdGhyZWFkX2Rlc2NyIF9f bV9vd25lcjsKICBpbnQgX19tX2tpbmQ7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fbV9s b2NrOwp9IHB0aHJlYWRfbXV0ZXhfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX211dGV4 a2luZDsKfSBwdGhyZWFkX211dGV4YXR0cl90OwoKCgp0eXBlZGVmIGludCBwdGhyZWFkX29uY2Vf dDsKIyAxNDAgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzCnR5cGVk ZWYgdW5zaWduZWQgbG9uZyBpbnQgcHRocmVhZF90OwojIDE0NCAiL3Vzci9sb2NhbC9pbmNsdWRl L2JpdHMvdHlwZXMuaCIgMiAzCiMgMzcgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAyIDMK IyA0NSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJ TEUgRklMRTsKIyA1NSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBzdHJ1 Y3QgX0lPX0ZJTEUgX19GSUxFOwojIDY1ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMwoj IDEgIi91c3IvbG9jYWwvaW5jbHVkZS9saWJpby5oIiAxIDMKIyAzMiAiL3Vzci9sb2NhbC9pbmNs dWRlL2xpYmlvLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvX0dfY29uZmlnLmgiIDEgMwoj IDE0ICIvdXNyL2xvY2FsL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2xvY2FsL2dj Yy8zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAx IDMKIyAyOTMgIi91c3IvbG9jYWwvZ2NjLzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv My4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiBsb25nIGludCB3Y2hhcl90OwojIDMyMCAi L3Vzci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVk ZS9zdGRkZWYuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGludCB3aW50X3Q7CiMgMTUgIi91c3IvbG9j YWwvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCiMgMjQgIi91c3IvbG9jYWwvaW5jbHVkZS9fR19j b25maWcuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS93Y2hhci5oIiAxIDMKIyA0OCAiL3Vz ci9sb2NhbC9pbmNsdWRlL3djaGFyLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2Mt bGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0OSAiL3Vz ci9sb2NhbC9pbmNsdWRlL3djaGFyLmgiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0 cy93Y2hhci5oIiAxIDMKIyA1MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3djaGFyLmgiIDIgMwojIDY3 ICIvdXNyL2xvY2FsL2luY2x1ZGUvd2NoYXIuaCIgMwp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9f Y291bnQ7CiAgdW5pb24KICB7CiAgICB3aW50X3QgX193Y2g7CiAgICBjaGFyIF9fd2NoYls0XTsK ICB9IF9fdmFsdWU7Cn0gX19tYnN0YXRlX3Q7CiMgMjUgIi91c3IvbG9jYWwvaW5jbHVkZS9fR19j b25maWcuaCIgMiAzCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmZfdCBfX3BvczsKICBfX21ic3Rh dGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3NfdDsKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmNjRfdCBf X3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3M2NF90OwojIDQ0ICIvdXNyL2xv Y2FsL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvZ2NvbnYu aCIgMSAzCiMgMjggIi91c3IvbG9jYWwvaW5jbHVkZS9nY29udi5oIiAzCiMgMSAiL3Vzci9sb2Nh bC9pbmNsdWRlL3djaGFyLmgiIDEgMwojIDQ4ICIvdXNyL2xvY2FsL2luY2x1ZGUvd2NoYXIuaCIg MwojIDEgIi91c3IvbG9jYWwvZ2NjLzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4x L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDQ5ICIvdXNyL2xvY2FsL2luY2x1ZGUvd2NoYXIuaCIg MiAzCiMgMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9nY29udi5oIiAyIDMKCgojIDEgIi91c3IvbG9j YWwvZ2NjLzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVm LmgiIDEgMwojIDMyICIvdXNyL2xvY2FsL2luY2x1ZGUvZ2NvbnYuaCIgMiAzCgoKCgoKZW51bQp7 CiAgX19HQ09OVl9PSyA9IDAsCiAgX19HQ09OVl9OT0NPTlYsCiAgX19HQ09OVl9OT0RCLAogIF9f R0NPTlZfTk9NRU0sCgogIF9fR0NPTlZfRU1QVFlfSU5QVVQsCiAgX19HQ09OVl9GVUxMX09VVFBV VCwKICBfX0dDT05WX0lMTEVHQUxfSU5QVVQsCiAgX19HQ09OVl9JTkNPTVBMRVRFX0lOUFVULAoK ICBfX0dDT05WX0lMTEVHQUxfREVTQ1JJUFRPUiwKICBfX0dDT05WX0lOVEVSTkFMX0VSUk9SCn07 CgoKCmVudW0KewogIF9fR0NPTlZfSVNfTEFTVCA9IDB4MDAwMSwKICBfX0dDT05WX0lHTk9SRV9F UlJPUlMgPSAweDAwMDIKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcDsKc3RydWN0IF9fZ2NvbnZf c3RlcF9kYXRhOwpzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0OwpzdHJ1Y3QgX19nY29udl90 cmFuc19kYXRhOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfZmN0KSAoc3RydWN0IF9fZ2NvbnZf c3RlcCAqLCBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwgX19jb25zdCB1bnNpZ25lZCBjaGFyICos CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqLCBzaXplX3QgKiwg aW50LCBpbnQpOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl9pbml0X2ZjdCkgKHN0cnVjdCBfX2dj b252X3N0ZXAgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfZW5kX2ZjdCkgKHN0cnVjdCBfX2dj b252X3N0ZXAgKik7CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19mY3QpIChzdHJ1Y3Qg X19nY29udl9zdGVwICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg X19nY29udl9zdGVwX2RhdGEgKiwgdm9pZCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGludCAo Kl9fZ2NvbnZfdHJhbnNfY29udGV4dF9mY3QpICh2b2lkICosIF9fY29uc3QgdW5zaWduZWQgY2hh ciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVu c2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29u dl90cmFuc19xdWVyeV9mY3QpIChfX2NvbnN0IGNoYXIgKiwgX19jb25zdCBjaGFyICoqKiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVm IGludCAoKl9fZ2NvbnZfdHJhbnNfaW5pdF9mY3QpICh2b2lkICoqLCBjb25zdCBjaGFyICopOwp0 eXBlZGVmIHZvaWQgKCpfX2djb252X3RyYW5zX2VuZF9mY3QpICh2b2lkICopOwoKc3RydWN0IF9f Z2NvbnZfdHJhbnNfZGF0YQp7CgogIF9fZ2NvbnZfdHJhbnNfZmN0IF9fdHJhbnNfZmN0OwogIF9f Z2NvbnZfdHJhbnNfY29udGV4dF9mY3QgX190cmFuc19jb250ZXh0X2ZjdDsKICBfX2djb252X3Ry YW5zX2VuZF9mY3QgX190cmFuc19lbmRfZmN0OwogIHZvaWQgKl9fZGF0YTsKICBzdHJ1Y3QgX19n Y29udl90cmFuc19kYXRhICpfX25leHQ7Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXAKewogIHN0 cnVjdCBfX2djb252X2xvYWRlZF9vYmplY3QgKl9fc2hsaWJfaGFuZGxlOwogIF9fY29uc3QgY2hh ciAqX19tb2RuYW1lOwoKICBpbnQgX19jb3VudGVyOwoKICBjaGFyICpfX2Zyb21fbmFtZTsKICBj aGFyICpfX3RvX25hbWU7CgogIF9fZ2NvbnZfZmN0IF9fZmN0OwogIF9fZ2NvbnZfaW5pdF9mY3Qg X19pbml0X2ZjdDsKICBfX2djb252X2VuZF9mY3QgX19lbmRfZmN0OwoKCgogIGludCBfX21pbl9u ZWVkZWRfZnJvbTsKICBpbnQgX19tYXhfbmVlZGVkX2Zyb207CiAgaW50IF9fbWluX25lZWRlZF90 bzsKICBpbnQgX19tYXhfbmVlZGVkX3RvOwoKCiAgaW50IF9fc3RhdGVmdWw7CgogIHZvaWQgKl9f ZGF0YTsKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhCnsKICB1bnNpZ25lZCBjaGFyICpf X291dGJ1ZjsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1ZmVuZDsKCgoKICBpbnQgX19mbGFnczsK CgoKICBpbnQgX19pbnZvY2F0aW9uX2NvdW50ZXI7CgoKCiAgaW50IF9faW50ZXJuYWxfdXNlOwoK ICBfX21ic3RhdGVfdCAqX19zdGF0ZXA7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKCgoKICBzdHJ1 Y3QgX19nY29udl90cmFuc19kYXRhICpfX3RyYW5zOwp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfX2dj b252X2luZm8KewogIHNpemVfdCBfX25zdGVwczsKICBzdHJ1Y3QgX19nY29udl9zdGVwICpfX3N0 ZXBzOwogIF9fZXh0ZW5zaW9uX18gc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YSBbXTsK fSAqX19nY29udl90OwojIDQ1ICIvdXNyL2xvY2FsL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwp0 eXBlZGVmIHVuaW9uCnsKICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgc3RydWN0CiAgewog ICAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRh IF9fZGF0YTsKICB9IF9fY29tYmluZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5cGVkZWYgaW50IF9HX2lu dDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9H X2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5z aWduZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkp Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2Rl X18gKF9fU0lfXykpKTsKIyAzMyAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpYmlvLmgiIDIgMwojIDUz ICIvdXNyL2xvY2FsL2luY2x1ZGUvbGliaW8uaCIgMwojIDEgIi91c3IvbG9jYWwvZ2NjLzMvbGli L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkYXJnLmgiIDEgMwojIDQz ICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNs dWRlL3N0ZGFyZy5oIiAzCnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7 CiMgNTQgIi91c3IvbG9jYWwvaW5jbHVkZS9saWJpby5oIiAyIDMKIyAxNjAgIi91c3IvbG9jYWwv aW5jbHVkZS9saWJpby5oIiAzCnN0cnVjdCBfSU9fanVtcF90OyBzdHJ1Y3QgX0lPX0ZJTEU7CiMg MTcwICIvdXNyL2xvY2FsL2luY2x1ZGUvbGliaW8uaCIgMwp0eXBlZGVmIHZvaWQgX0lPX2xvY2tf dDsKCgoKCgpzdHJ1Y3QgX0lPX21hcmtlciB7CiAgc3RydWN0IF9JT19tYXJrZXIgKl9uZXh0Owog IHN0cnVjdCBfSU9fRklMRSAqX3NidWY7CgoKCiAgaW50IF9wb3M7CiMgMTkzICIvdXNyL2xvY2Fs L2luY2x1ZGUvbGliaW8uaCIgMwp9OwoKCmVudW0gX19jb2RlY3Z0X3Jlc3VsdAp7CiAgX19jb2Rl Y3Z0X29rLAogIF9fY29kZWN2dF9wYXJ0aWFsLAogIF9fY29kZWN2dF9lcnJvciwKICBfX2NvZGVj dnRfbm9jb252Cn07CiMgMjYxICIvdXNyL2xvY2FsL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3Qg X0lPX0ZJTEUgewogIGludCBfZmxhZ3M7CgoKCgogIGNoYXIqIF9JT19yZWFkX3B0cjsKICBjaGFy KiBfSU9fcmVhZF9lbmQ7CiAgY2hhciogX0lPX3JlYWRfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVf YmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfcHRyOwogIGNoYXIqIF9JT193cml0ZV9lbmQ7CiAgY2hh ciogX0lPX2J1Zl9iYXNlOwogIGNoYXIqIF9JT19idWZfZW5kOwoKICBjaGFyICpfSU9fc2F2ZV9i YXNlOwogIGNoYXIgKl9JT19iYWNrdXBfYmFzZTsKICBjaGFyICpfSU9fc2F2ZV9lbmQ7CgogIHN0 cnVjdCBfSU9fbWFya2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47Cgog IGludCBfZmlsZW5vOwogIGludCBfYmxrc2l6ZTsKICBfX29mZl90IF9vbGRfb2Zmc2V0OwoKCgog IHVuc2lnbmVkIHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0 OwogIGNoYXIgX3Nob3J0YnVmWzFdOwoKCgogIF9JT19sb2NrX3QgKl9sb2NrOwojIDMwNSAiL3Vz ci9sb2NhbC9pbmNsdWRlL2xpYmlvLmgiIDMKICBfX29mZjY0X3QgX29mZnNldDsKCgoKCgogIHZv aWQgKl9fcGFkMTsKICB2b2lkICpfX3BhZDI7CgogIGludCBfbW9kZTsKCiAgY2hhciBfdW51c2Vk MlsxNSAqIHNpemVvZiAoaW50KSAtIDIgKiBzaXplb2YgKHZvaWQgKildOwoKfTsKCgp0eXBlZGVm IHN0cnVjdCBfSU9fRklMRSBfSU9fRklMRTsKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsKCmV4dGVy biBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBfSU9f RklMRV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9J T18yXzFfc3RkZXJyXzsKIyAzNDQgIi91c3IvbG9jYWwvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVk ZWYgX19zc2l6ZV90IF9faW9fcmVhZF9mbiAodm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLCBz aXplX3QgX19uYnl0ZXMpOwoKCgoKCgoKdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAo dm9pZCAqX19jb29raWUsIF9fY29uc3QgY2hhciAqX19idWYsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNpemVfdCBfX24pOwoKCgoKCgoKdHlwZWRlZiBpbnQgX19pb19zZWVrX2Zu ICh2b2lkICpfX2Nvb2tpZSwgX19vZmY2NF90ICpfX3BvcywgaW50IF9fdyk7CgoKdHlwZWRlZiBp bnQgX19pb19jbG9zZV9mbiAodm9pZCAqX19jb29raWUpOwojIDM5NiAiL3Vzci9sb2NhbC9pbmNs dWRlL2xpYmlvLmgiIDMKZXh0ZXJuIGludCBfX3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRl cm4gaW50IF9fdWZsb3cgKF9JT19GSUxFICopIDsKZXh0ZXJuIGludCBfX292ZXJmbG93IChfSU9f RklMRSAqLCBpbnQpIDsKZXh0ZXJuIHdpbnRfdCBfX3d1bmRlcmZsb3cgKF9JT19GSUxFICopIDsK ZXh0ZXJuIHdpbnRfdCBfX3d1ZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gd2ludF90IF9fd292 ZXJmbG93IChfSU9fRklMRSAqLCB3aW50X3QpIDsKIyA0MjYgIi91c3IvbG9jYWwvaW5jbHVkZS9s aWJpby5oIiAzCmV4dGVybiBpbnQgX0lPX2dldGMgKF9JT19GSUxFICpfX2ZwKSA7CmV4dGVybiBp bnQgX0lPX3B1dGMgKGludCBfX2MsIF9JT19GSUxFICpfX2ZwKSA7CmV4dGVybiBpbnQgX0lPX2Zl b2YgKF9JT19GSUxFICpfX2ZwKSA7CmV4dGVybiBpbnQgX0lPX2ZlcnJvciAoX0lPX0ZJTEUgKl9f ZnApIDsKCmV4dGVybiBpbnQgX0lPX3BlZWtjX2xvY2tlZCAoX0lPX0ZJTEUgKl9fZnApIDsKCgoK CgpleHRlcm4gdm9pZCBfSU9fZmxvY2tmaWxlIChfSU9fRklMRSAqKSA7CmV4dGVybiB2b2lkIF9J T19mdW5sb2NrZmlsZSAoX0lPX0ZJTEUgKikgOwpleHRlcm4gaW50IF9JT19mdHJ5bG9ja2ZpbGUg KF9JT19GSUxFICopIDsKIyA0NTYgIi91c3IvbG9jYWwvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVy biBpbnQgX0lPX3Zmc2NhbmYgKF9JT19GSUxFICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9f cmVzdHJpY3QsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0LCBpbnQgKl9f cmVzdHJpY3QpIDsKZXh0ZXJuIGludCBfSU9fdmZwcmludGYgKF9JT19GSUxFICpfX3Jlc3RyaWN0 LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVj X3ZhX2xpc3QpIDsKZXh0ZXJuIF9fc3NpemVfdCBfSU9fcGFkbiAoX0lPX0ZJTEUgKiwgaW50LCBf X3NzaXplX3QpIDsKZXh0ZXJuIHNpemVfdCBfSU9fc2dldG4gKF9JT19GSUxFICosIHZvaWQgKiwg c2l6ZV90KSA7CgpleHRlcm4gX19vZmY2NF90IF9JT19zZWVrb2ZmIChfSU9fRklMRSAqLCBfX29m ZjY0X3QsIGludCwgaW50KSA7CmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtwb3MgKF9JT19GSUxF ICosIF9fb2ZmNjRfdCwgaW50KSA7CgpleHRlcm4gdm9pZCBfSU9fZnJlZV9iYWNrdXBfYXJlYSAo X0lPX0ZJTEUgKikgOwojIDY2ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMiAzCiMgODAg Ii91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAzCnR5cGVkZWYgX0dfZnBvc190IGZwb3NfdDsK IyAxMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNs dWRlL2JpdHMvc3RkaW9fbGltLmgiIDEgMwojIDEzMCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlv LmgiIDIgMwoKCgpleHRlcm4gRklMRSAqc3RkaW47CmV4dGVybiBGSUxFICpzdGRvdXQ7CmV4dGVy biBGSUxFICpzdGRlcnI7CgoKCgoKCmV4dGVybiBpbnQgcmVtb3ZlIChfX2NvbnN0IGNoYXIgKl9f ZmlsZW5hbWUpIDsKCmV4dGVybiBpbnQgcmVuYW1lIChfX2NvbnN0IGNoYXIgKl9fb2xkLCBfX2Nv bnN0IGNoYXIgKl9fbmV3KSA7CgoKCgpleHRlcm4gRklMRSAqdG1wZmlsZSAodm9pZCkgOwojIDE2 MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGNoYXIgKnRtcG5hbSAoY2hh ciAqX19zKSA7CgoKCgpleHRlcm4gY2hhciAqdG1wbmFtX3IgKGNoYXIgKl9fcykgOwojIDE3OCAi L3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGNoYXIgKnRlbXBuYW0gKF9fY29u c3QgY2hhciAqX19kaXIsIF9fY29uc3QgY2hhciAqX19wZngpCiAgICAgX19hdHRyaWJ1dGVfXyAo KF9fbWFsbG9jX18pKTsKCgoKCmV4dGVybiBpbnQgZmNsb3NlIChGSUxFICpfX3N0cmVhbSkgOwoK ZXh0ZXJuIGludCBmZmx1c2ggKEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiBpbnQgZmZsdXNo X3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwojIDIwMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0 ZGlvLmgiIDMKZXh0ZXJuIEZJTEUgKmZvcGVuIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m aWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19t b2RlcykgOwoKZXh0ZXJuIEZJTEUgKmZyZW9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf X2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFt KSA7CiMgMjMxICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gRklMRSAqZmRv cGVuIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX21vZGVzKSA7CiMgMjU0ICIvdXNyL2xvY2Fs L2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gdm9pZCBzZXRidWYgKEZJTEUgKl9fcmVzdHJpY3Qg X19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIDsKCgoKZXh0ZXJuIGludCBzZXR2YnVm IChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAg ICAgICAgICAgICAgICAgIGludCBfX21vZGVzLCBzaXplX3QgX19uKSA7CgoKCgpleHRlcm4gdm9p ZCBzZXRidWZmZXIgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3Qg X19idWYsCiAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc2l6ZSkgOwoKCmV4dGVybiB2 b2lkIHNldGxpbmVidWYgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IG15ZnByaW50 ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBwcmludGYgKF9f Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNwcmlu dGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgoKZXh0ZXJuIGludCB2ZnByaW50ZiAoRklM RSAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAg ICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpIDsKCmV4dGVybiBpbnQgdnBy aW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBf X2FyZykKICAgICA7CgpleHRlcm4gaW50IHZzcHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywg X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICBf X2dudWNfdmFfbGlzdCBfX2FyZykgOwoKCgpleHRlcm4gaW50IHNucHJpbnRmIChjaGFyICpfX3Jl c3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19m b3JtYXRfXyAoX19wcmludGZfXywgMywgNCkpKTsKCmV4dGVybiBpbnQgdnNucHJpbnRmIChjaGFy ICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICAg X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykK ICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKIyAz MjUgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnNjYW5mIChGSUxF ICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBpbnQgc2NhbmYgKF9fY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNzY2FuZiAoX19jb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAq X19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CiMgMzUxICIvdXNyL2xvY2FsL2luY2x1ZGUvc3Rk aW8uaCIgMwpleHRlcm4gaW50IGZnZXRjIChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGdl dGMgKEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBnZXRjaGFyICh2b2lkKSA7CgoKCgoK CgpleHRlcm4gaW50IGdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQg Z2V0Y2hhcl91bmxvY2tlZCAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBmZ2V0Y191bmxvY2tlZCAo RklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZnB1dGMgKGludCBfX2MsIEZJTEUgKl9f c3RyZWFtKSA7CmV4dGVybiBpbnQgcHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKCgpl eHRlcm4gaW50IHB1dGNoYXIgKGludCBfX2MpIDsKCgoKCgoKCmV4dGVybiBpbnQgZnB1dGNfdW5s b2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IHB1dGNfdW5s b2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgcHV0Y2hhcl91bmxv Y2tlZCAoaW50IF9fYykgOwoKCgoKCmV4dGVybiBpbnQgZ2V0dyAoRklMRSAqX19zdHJlYW0pIDsK CgpleHRlcm4gaW50IHB1dHcgKGludCBfX3csIEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4g Y2hhciAqZmdldHMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQgX19uLCBGSUxFICpfX3Jlc3Ry aWN0IF9fc3RyZWFtKQogICAgIDsKIyA0MTcgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAz CmV4dGVybiBjaGFyICpnZXRzIChjaGFyICpfX3MpIDsKIyA0NDEgIi91c3IvbG9jYWwvaW5jbHVk ZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnB1dHMgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf X3MsIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCiAgICAgOwojIDQ1MSAiL3Vzci9sb2NhbC9p bmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBwdXRzIChfX2NvbnN0IGNoYXIgKl9fcykgOwoK CgpleHRlcm4gaW50IHVuZ2V0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJu IHNpemVfdCBmcmVhZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAg ICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkg OwoKZXh0ZXJuIHNpemVfdCBmd3JpdGUgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwg c2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9f cmVzdHJpY3QgX19zKSA7CgoKCmV4dGVybiBzaXplX3QgZnJlYWRfdW5sb2NrZWQgKHZvaWQgKl9f cmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKZXh0ZXJuIHNpemVf dCBmd3JpdGVfdW5sb2NrZWQgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90 IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUg Kl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZnNlZWsgKEZJTEUgKl9fc3Ry ZWFtLCBsb25nIGludCBfX29mZiwgaW50IF9fd2hlbmNlKSA7CgpleHRlcm4gbG9uZyBpbnQgZnRl bGwgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFt KSA7CiMgNDk1ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZnZXRw b3MgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3NfdCAqX19yZXN0cmljdCBfX3BvcykK ICAgICA7CgpleHRlcm4gaW50IGZzZXRwb3MgKEZJTEUgKl9fc3RyZWFtLCBfX2NvbnN0IGZwb3Nf dCAqX19wb3MpIDsKIyA1MzEgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiB2 b2lkIGNsZWFyZXJyIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZW9mIChGSUxFICpf X3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZXJyb3IgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVy biB2b2lkIGNsZWFyZXJyX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGZl b2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmVycm9yX3VubG9ja2Vk IChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIHZvaWQgcGVycm9yIChfX2NvbnN0IGNoYXIg Kl9fcykgOwoKCgoKZXh0ZXJuIGludCBzeXNfbmVycjsKZXh0ZXJuIF9fY29uc3QgY2hhciAqX19j b25zdCBzeXNfZXJybGlzdFtdOwojIDU2MiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMK ZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZpbGVu b191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCgoKZXh0ZXJuIEZJTEUgKnBvcGVuIChf X2NvbnN0IGNoYXIgKl9fY29tbWFuZCwgX19jb25zdCBjaGFyICpfX21vZGVzKSA7CgoKZXh0ZXJu IGludCBwY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKmN0ZXJtaWQg KGNoYXIgKl9fcykgOwojIDYwOSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJu IHZvaWQgZmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gaW50IGZ0cnlsb2Nr ZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKCgpleHRlcm4gdm9pZCBmdW5sb2NrZmlsZSAoRklMRSAq X19zdHJlYW0pIDsKIyA2MzMgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAzCgojIDEwNiAi Li4vSW5jbHVkZS9yZHNlZWQuaCIgMgoKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RyaW5n LmgiIDEgMwojIDI4ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgoKCgojIDEgIi91 c3IvbG9jYWwvZ2NjLzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUv c3RkZGVmLmgiIDEgMwojIDM0ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCgpl eHRlcm4gdm9pZCAqbWVtY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAg ICAgICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CgoK ZXh0ZXJuIHZvaWQgKm1lbW1vdmUgKHZvaWQgKl9fZGVzdCwgX19jb25zdCB2b2lkICpfX3NyYywg c2l6ZV90IF9fbikKICAgICA7CgoKCgoKZXh0ZXJuIHZvaWQgKm1lbWNjcHkgKHZvaWQgKl9fcmVz dHJpY3QgX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsCiAgICAgICAgICAg ICAgICAgICAgICBpbnQgX19jLCBzaXplX3QgX19uKQogICAgIDsKCgoKCmV4dGVybiB2b2lkICpt ZW1zZXQgKHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgbWVt Y21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikK ICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gdm9pZCAqbWVtY2hyIChf X2NvbnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgX19hdHRyaWJ1dGVf XyAoKF9fcHVyZV9fKSk7CiMgNzcgIi91c3IvbG9jYWwvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRl cm4gY2hhciAqc3RyY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fc3JjKQogICAgIDsKCmV4dGVybiBjaGFyICpzdHJuY3B5IChjaGFyICpfX3Jl c3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBjaGFyICpzdHJjYXQgKGNoYXIgKl9f cmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgOwoK ZXh0ZXJuIGNoYXIgKnN0cm5jYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19zcmMsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uKSA7 CgoKZXh0ZXJuIGludCBzdHJjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpf X3MyKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBzdHJuY21w IChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikKICAg ICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gaW50IHN0cmNvbGwgKF9fY29u c3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIF9fYXR0cmlidXRlX18gKChf X3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVz dCwKICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMs IHNpemVfdCBfX24pIDsKIyAxMjAgIi91c3IvbG9jYWwvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRl cm4gY2hhciAqc3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fbWFs bG9jX18pKTsKIyAxNTUgIi91c3IvbG9jYWwvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hh ciAqc3RyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9f cHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycmNociAoX19jb25zdCBjaGFyICpfX3MsIGludCBf X2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwojIDE2NyAiL3Vzci9sb2NhbC9pbmNsdWRl L3N0cmluZy5oIiAzCmV4dGVybiBzaXplX3Qgc3RyY3NwbiAoX19jb25zdCBjaGFyICpfX3MsIF9f Y29uc3QgY2hhciAqX19yZWplY3QpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoK ZXh0ZXJuIHNpemVfdCBzdHJzcG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9f YWNjZXB0KQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0 cnBicmsgKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIF9f YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnN0ciAoX19jb25zdCBj aGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAgIF9fYXR0cmlidXRl X18gKChfX3B1cmVfXykpOwojIDE4NyAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0cmluZy5oIiAzCmV4 dGVybiBjaGFyICpzdHJ0b2sgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19kZWxpbSkKICAgICA7CgoKCmV4dGVybiBjaGFyICpfX3N0cnRva19yIChjaGFy ICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAq X19yZXN0cmljdCBfX2RlbGltLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz dHJpY3QgX19zYXZlX3B0cikgOwoKZXh0ZXJuIGNoYXIgKnN0cnRva19yIChjaGFyICpfX3Jlc3Ry aWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgICAgICAgICAgICAg ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgOwojIDIxOCAiL3Vzci9sb2Nh bC9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBzaXplX3Qgc3RybGVuIChfX2NvbnN0IGNoYXIg Kl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CiMgMjI5ICIvdXNyL2xvY2FsL2luY2x1 ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmVycm9yIChpbnQgX19lcnJudW0pIDsKCgoK ZXh0ZXJuIGNoYXIgKnN0cmVycm9yX3IgKGludCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVf dCBfX2J1ZmxlbikgOwoKCgoKZXh0ZXJuIHZvaWQgX19iemVybyAodm9pZCAqX19zLCBzaXplX3Qg X19uKSA7CgoKCmV4dGVybiB2b2lkIGJjb3B5IChfX2NvbnN0IHZvaWQgKl9fc3JjLCB2b2lkICpf X2Rlc3QsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gdm9pZCBiemVybyAodm9pZCAqX19zLCBzaXpl X3QgX19uKSA7CgoKZXh0ZXJuIGludCBiY21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qg dm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK CgpleHRlcm4gY2hhciAqaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJp YnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqcmluZGV4IChfX2NvbnN0IGNoYXIg Kl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBpbnQg ZmZzIChpbnQgX19pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgMjcyICIvdXNyL2xv Y2FsL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGludCBzdHJjYXNlY21wIChfX2NvbnN0IGNo YXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJl X18pKTsKCgpleHRlcm4gaW50IHN0cm5jYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29u c3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p KTsKIyAyOTQgIi91c3IvbG9jYWwvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3Ry c2VwIChjaGFyICoqX19yZXN0cmljdCBfX3N0cmluZ3AsCiAgICAgICAgICAgICAgICAgICAgIF9f Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltKSA7CiMgMzY0ICIvdXNyL2xvY2FsL2luY2x1 ZGUvc3RyaW5nLmgiIDMKCiMgMTExICIuLi9JbmNsdWRlL3Jkc2VlZC5oIiAyCgoKCgojIDEgIi91 c3IvbG9jYWwvaW5jbHVkZS9tYXRoLmgiIDEgMwojIDI5ICIvdXNyL2xvY2FsL2luY2x1ZGUvbWF0 aC5oIiAzCgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgiIDEgMwoj IDM0ICIvdXNyL2xvY2FsL2luY2x1ZGUvbWF0aC5oIiAyIDMKCgoKCgoKIyAxICIvdXNyL2xvY2Fs L2luY2x1ZGUvYml0cy9tYXRoZGVmLmgiIDEgMwojIDQxICIvdXNyL2xvY2FsL2luY2x1ZGUvbWF0 aC5oIiAyIDMKIyA2MyAiL3Vzci9sb2NhbC9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvbG9j YWwvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMKIyA1NCAiL3Vzci9sb2NhbC9pbmNsdWRl L2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGRvdWJsZSBhY29zIChkb3VibGUgX194KSA7IGV4 dGVybiBkb3VibGUgX19hY29zIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIGFzaW4gKGRv dWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2FzaW4gKGRvdWJsZSBfX3gpIDsKCmV4dGVybiBk b3VibGUgYXRhbiAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fYXRhbiAoZG91YmxlIF9f eCkgOwoKZXh0ZXJuIGRvdWJsZSBhdGFuMiAoZG91YmxlIF9feSwgZG91YmxlIF9feCkgOyBleHRl cm4gZG91YmxlIF9fYXRhbjIgKGRvdWJsZSBfX3ksIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gZG91 YmxlIGNvcyAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fY29zIChkb3VibGUgX194KSA7 CgpleHRlcm4gZG91YmxlIHNpbiAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fc2luIChk b3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIHRhbiAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91 YmxlIF9fdGFuIChkb3VibGUgX194KSA7CiMgNzggIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL21h dGhjYWxscy5oIiAzCmV4dGVybiBkb3VibGUgY29zaCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91 YmxlIF9fY29zaCAoZG91YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJsZSBzaW5oIChkb3VibGUgX194 KSA7IGV4dGVybiBkb3VibGUgX19zaW5oIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIHRh bmggKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3RhbmggKGRvdWJsZSBfX3gpIDsKCgoK ZXh0ZXJuIGRvdWJsZSBhY29zaCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fYWNvc2gg KGRvdWJsZSBfX3gpIDsKCmV4dGVybiBkb3VibGUgYXNpbmggKGRvdWJsZSBfX3gpIDsgZXh0ZXJu IGRvdWJsZSBfX2FzaW5oIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIGF0YW5oIChkb3Vi bGUgX194KSA7IGV4dGVybiBkb3VibGUgX19hdGFuaCAoZG91YmxlIF9feCkgOwoKCgoKCmV4dGVy biBkb3VibGUgZXhwIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19leHAgKGRvdWJsZSBf X3gpIDsKIyAxMDYgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVy biBkb3VibGUgZnJleHAgKGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgOyBleHRlcm4gZG91 YmxlIF9fZnJleHAgKGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgOwoKCmV4dGVybiBkb3Vi bGUgbGRleHAgKGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSA7IGV4dGVybiBkb3VibGUgX19s ZGV4cCAoZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIDsKCgpleHRlcm4gZG91YmxlIGxvZyAo ZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fbG9nIChkb3VibGUgX194KSA7CgoKZXh0ZXJu IGRvdWJsZSBsb2cxMCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fbG9nMTAgKGRvdWJs ZSBfX3gpIDsKCgpleHRlcm4gZG91YmxlIG1vZGYgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19pcHRy KSA7IGV4dGVybiBkb3VibGUgX19tb2RmIChkb3VibGUgX194LCBkb3VibGUgKl9faXB0cikgOwoK CgpleHRlcm4gZG91YmxlIGV4cG0xIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19leHBt MSAoZG91YmxlIF9feCkgOwoKCmV4dGVybiBkb3VibGUgbG9nMXAgKGRvdWJsZSBfX3gpIDsgZXh0 ZXJuIGRvdWJsZSBfX2xvZzFwIChkb3VibGUgX194KSA7CgoKZXh0ZXJuIGRvdWJsZSBsb2diIChk b3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19sb2diIChkb3VibGUgX194KSA7CiMgMTQzICIv dXNyL2xvY2FsL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZG91YmxlIHBvdyAo ZG91YmxlIF9feCwgZG91YmxlIF9feSkgOyBleHRlcm4gZG91YmxlIF9fcG93IChkb3VibGUgX194 LCBkb3VibGUgX195KSA7CgoKZXh0ZXJuIGRvdWJsZSBzcXJ0IChkb3VibGUgX194KSA7IGV4dGVy biBkb3VibGUgX19zcXJ0IChkb3VibGUgX194KSA7CgoKCmV4dGVybiBkb3VibGUgaHlwb3QgKGRv dWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGRvdWJsZSBfX2h5cG90IChkb3VibGUgX194 LCBkb3VibGUgX195KSA7CgoKCgpleHRlcm4gZG91YmxlIGNicnQgKGRvdWJsZSBfX3gpIDsgZXh0 ZXJuIGRvdWJsZSBfX2NicnQgKGRvdWJsZSBfX3gpIDsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBjZWls IChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUg X19jZWlsIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJu IGRvdWJsZSBmYWJzIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4 dGVybiBkb3VibGUgX19mYWJzIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f KSk7CgoKZXh0ZXJuIGRvdWJsZSBmbG9vciAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9f Y29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fZmxvb3IgKGRvdWJsZSBfX3gpIF9fYXR0cmlidXRl X18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGZtb2QgKGRvdWJsZSBfX3gsIGRvdWJs ZSBfX3kpIDsgZXh0ZXJuIGRvdWJsZSBfX2Ztb2QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsK CgoKCmV4dGVybiBpbnQgX19pc2luZiAoZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChf X2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fZmluaXRlIChkb3VibGUgX192YWx1ZSkgX19hdHRy aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBpc2luZiAoZG91YmxlIF9fdmFs dWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZSAoZG91 YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91Ymxl IGRyZW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGRvdWJsZSBfX2RyZW0gKGRv dWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsKCgoKZXh0ZXJuIGRvdWJsZSBzaWduaWZpY2FuZCAoZG91 YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fc2lnbmlmaWNhbmQgKGRvdWJsZSBfX3gpIDsKCgoK CmV4dGVybiBkb3VibGUgY29weXNpZ24gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIF9fYXR0cmli dXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2NvcHlzaWduIChkb3VibGUgX194 LCBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgMjA5ICIvdXNyL2xv Y2FsL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gaW50IF9faXNuYW4gKGRvdWJs ZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBpbnQgaXNu YW4gKGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJu IGRvdWJsZSBqMCAoZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX19qMCAoZG91YmxlKSA7CmV4dGVy biBkb3VibGUgajEgKGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9fajEgKGRvdWJsZSkgOwpleHRl cm4gZG91YmxlIGpuIChpbnQsIGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9fam4gKGludCwgZG91 YmxlKSA7CmV4dGVybiBkb3VibGUgeTAgKGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9feTAgKGRv dWJsZSkgOwpleHRlcm4gZG91YmxlIHkxIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX3kxIChk b3VibGUpIDsKZXh0ZXJuIGRvdWJsZSB5biAoaW50LCBkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBf X3luIChpbnQsIGRvdWJsZSkgOwoKCgoKCmV4dGVybiBkb3VibGUgZXJmIChkb3VibGUpIDsgZXh0 ZXJuIGRvdWJsZSBfX2VyZiAoZG91YmxlKSA7CmV4dGVybiBkb3VibGUgZXJmYyAoZG91YmxlKSA7 IGV4dGVybiBkb3VibGUgX19lcmZjIChkb3VibGUpIDsKZXh0ZXJuIGRvdWJsZSBsZ2FtbWEgKGRv dWJsZSkgOyBleHRlcm4gZG91YmxlIF9fbGdhbW1hIChkb3VibGUpIDsKIyAyMzggIi91c3IvbG9j YWwvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBkb3VibGUgZ2FtbWEgKGRvdWJs ZSkgOyBleHRlcm4gZG91YmxlIF9fZ2FtbWEgKGRvdWJsZSkgOwoKCgoKCgpleHRlcm4gZG91Ymxl IGxnYW1tYV9yIChkb3VibGUsIGludCAqX19zaWduZ2FtcCkgOyBleHRlcm4gZG91YmxlIF9fbGdh bW1hX3IgKGRvdWJsZSwgaW50ICpfX3NpZ25nYW1wKSA7CgoKCgoKCmV4dGVybiBkb3VibGUgcmlu dCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fcmludCAoZG91YmxlIF9feCkgOwoKCmV4 dGVybiBkb3VibGUgbmV4dGFmdGVyIChkb3VibGUgX194LCBkb3VibGUgX195KSBfX2F0dHJpYnV0 ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19uZXh0YWZ0ZXIgKGRvdWJsZSBfX3gs IGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4gZG91 YmxlIHJlbWFpbmRlciAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOyBleHRlcm4gZG91YmxlIF9f cmVtYWluZGVyIChkb3VibGUgX194LCBkb3VibGUgX195KSA7CgoKCmV4dGVybiBkb3VibGUgc2Nh bGIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX24pIDsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxiIChkb3Vi bGUgX194LCBkb3VibGUgX19uKSA7CgoKCgpleHRlcm4gZG91YmxlIHNjYWxibiAoZG91YmxlIF9f eCwgaW50IF9fbikgOyBleHRlcm4gZG91YmxlIF9fc2NhbGJuIChkb3VibGUgX194LCBpbnQgX19u KSA7CgoKCmV4dGVybiBpbnQgaWxvZ2IgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGludCBfX2lsb2di IChkb3VibGUgX194KSA7CiMgNjQgIi91c3IvbG9jYWwvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDgy ICIvdXNyL2xvY2FsL2luY2x1ZGUvbWF0aC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2Jp dHMvbWF0aGNhbGxzLmgiIDEgMwojIDU0ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9tYXRoY2Fs bHMuaCIgMwpleHRlcm4gZmxvYXQgYWNvc2YgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19h Y29zZiAoZmxvYXQgX194KSA7CgpleHRlcm4gZmxvYXQgYXNpbmYgKGZsb2F0IF9feCkgOyBleHRl cm4gZmxvYXQgX19hc2luZiAoZmxvYXQgX194KSA7CgpleHRlcm4gZmxvYXQgYXRhbmYgKGZsb2F0 IF9feCkgOyBleHRlcm4gZmxvYXQgX19hdGFuZiAoZmxvYXQgX194KSA7CgpleHRlcm4gZmxvYXQg YXRhbjJmIChmbG9hdCBfX3ksIGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19hdGFuMmYgKGZs b2F0IF9feSwgZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0IGNvc2YgKGZsb2F0IF9feCkgOyBl eHRlcm4gZmxvYXQgX19jb3NmIChmbG9hdCBfX3gpIDsKCmV4dGVybiBmbG9hdCBzaW5mIChmbG9h dCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fc2luZiAoZmxvYXQgX194KSA7CgpleHRlcm4gZmxvYXQg dGFuZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX3RhbmYgKGZsb2F0IF9feCkgOwojIDc4 ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZmxvYXQgY29z aGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19jb3NoZiAoZmxvYXQgX194KSA7CgpleHRl cm4gZmxvYXQgc2luaGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19zaW5oZiAoZmxvYXQg X194KSA7CgpleHRlcm4gZmxvYXQgdGFuaGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX190 YW5oZiAoZmxvYXQgX194KSA7CgoKCmV4dGVybiBmbG9hdCBhY29zaGYgKGZsb2F0IF9feCkgOyBl eHRlcm4gZmxvYXQgX19hY29zaGYgKGZsb2F0IF9feCkgOwoKZXh0ZXJuIGZsb2F0IGFzaW5oZiAo ZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2FzaW5oZiAoZmxvYXQgX194KSA7CgpleHRlcm4g ZmxvYXQgYXRhbmhmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYXRhbmhmIChmbG9hdCBf X3gpIDsKCgoKCgpleHRlcm4gZmxvYXQgZXhwZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBf X2V4cGYgKGZsb2F0IF9feCkgOwojIDEwNiAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvbWF0aGNh bGxzLmgiIDMKZXh0ZXJuIGZsb2F0IGZyZXhwZiAoZmxvYXQgX194LCBpbnQgKl9fZXhwb25lbnQp IDsgZXh0ZXJuIGZsb2F0IF9fZnJleHBmIChmbG9hdCBfX3gsIGludCAqX19leHBvbmVudCkgOwoK CmV4dGVybiBmbG9hdCBsZGV4cGYgKGZsb2F0IF9feCwgaW50IF9fZXhwb25lbnQpIDsgZXh0ZXJu IGZsb2F0IF9fbGRleHBmIChmbG9hdCBfX3gsIGludCBfX2V4cG9uZW50KSA7CgoKZXh0ZXJuIGZs b2F0IGxvZ2YgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19sb2dmIChmbG9hdCBfX3gpIDsK CgpleHRlcm4gZmxvYXQgbG9nMTBmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fbG9nMTBm IChmbG9hdCBfX3gpIDsKCgpleHRlcm4gZmxvYXQgbW9kZmYgKGZsb2F0IF9feCwgZmxvYXQgKl9f aXB0cikgOyBleHRlcm4gZmxvYXQgX19tb2RmZiAoZmxvYXQgX194LCBmbG9hdCAqX19pcHRyKSA7 CgoKCmV4dGVybiBmbG9hdCBleHBtMWYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19leHBt MWYgKGZsb2F0IF9feCkgOwoKCmV4dGVybiBmbG9hdCBsb2cxcGYgKGZsb2F0IF9feCkgOyBleHRl cm4gZmxvYXQgX19sb2cxcGYgKGZsb2F0IF9feCkgOwoKCmV4dGVybiBmbG9hdCBsb2diZiAoZmxv YXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2xvZ2JmIChmbG9hdCBfX3gpIDsKIyAxNDMgIi91c3Iv bG9jYWwvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBwb3dmIChmbG9h dCBfX3gsIGZsb2F0IF9feSkgOyBleHRlcm4gZmxvYXQgX19wb3dmIChmbG9hdCBfX3gsIGZsb2F0 IF9feSkgOwoKCmV4dGVybiBmbG9hdCBzcXJ0ZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBf X3NxcnRmIChmbG9hdCBfX3gpIDsKCgoKZXh0ZXJuIGZsb2F0IGh5cG90ZiAoZmxvYXQgX194LCBm bG9hdCBfX3kpIDsgZXh0ZXJuIGZsb2F0IF9faHlwb3RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkg OwoKCgoKZXh0ZXJuIGZsb2F0IGNicnRmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fY2Jy dGYgKGZsb2F0IF9feCkgOwoKCgoKCgpleHRlcm4gZmxvYXQgY2VpbGYgKGZsb2F0IF9feCkgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19jZWlsZiAoZmxvYXQgX194 KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGZhYnNmIChmbG9h dCBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fZmFic2Yg KGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBm bG9vcmYgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxv YXQgX19mbG9vcmYgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4 dGVybiBmbG9hdCBmbW9kZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsgZXh0ZXJuIGZsb2F0IF9f Zm1vZGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7CgoKCgpleHRlcm4gaW50IF9faXNpbmZmIChm bG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBf X2Zpbml0ZWYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoK CmV4dGVybiBpbnQgaXNpbmZmIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z dF9fKSk7CgoKZXh0ZXJuIGludCBmaW5pdGVmIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9f ICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGRyZW1mIChmbG9hdCBfX3gsIGZsb2F0IF9f eSkgOyBleHRlcm4gZmxvYXQgX19kcmVtZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsKCgoKZXh0 ZXJuIGZsb2F0IHNpZ25pZmljYW5kZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX3NpZ25p ZmljYW5kZiAoZmxvYXQgX194KSA7CgoKCgpleHRlcm4gZmxvYXQgY29weXNpZ25mIChmbG9hdCBf X3gsIGZsb2F0IF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQg X19jb3B5c2lnbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25z dF9fKSk7CiMgMjA5ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRl cm4gaW50IF9faXNuYW5mIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f KSk7CgoKCmV4dGVybiBpbnQgaXNuYW5mIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgo X19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGowZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9f ajBmIChmbG9hdCkgOwpleHRlcm4gZmxvYXQgajFmIChmbG9hdCkgOyBleHRlcm4gZmxvYXQgX19q MWYgKGZsb2F0KSA7CmV4dGVybiBmbG9hdCBqbmYgKGludCwgZmxvYXQpIDsgZXh0ZXJuIGZsb2F0 IF9fam5mIChpbnQsIGZsb2F0KSA7CmV4dGVybiBmbG9hdCB5MGYgKGZsb2F0KSA7IGV4dGVybiBm bG9hdCBfX3kwZiAoZmxvYXQpIDsKZXh0ZXJuIGZsb2F0IHkxZiAoZmxvYXQpIDsgZXh0ZXJuIGZs b2F0IF9feTFmIChmbG9hdCkgOwpleHRlcm4gZmxvYXQgeW5mIChpbnQsIGZsb2F0KSA7IGV4dGVy biBmbG9hdCBfX3luZiAoaW50LCBmbG9hdCkgOwoKCgoKCmV4dGVybiBmbG9hdCBlcmZmIChmbG9h dCkgOyBleHRlcm4gZmxvYXQgX19lcmZmIChmbG9hdCkgOwpleHRlcm4gZmxvYXQgZXJmY2YgKGZs b2F0KSA7IGV4dGVybiBmbG9hdCBfX2VyZmNmIChmbG9hdCkgOwpleHRlcm4gZmxvYXQgbGdhbW1h ZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9fbGdhbW1hZiAoZmxvYXQpIDsKIyAyMzggIi91c3Iv bG9jYWwvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBnYW1tYWYgKGZs b2F0KSA7IGV4dGVybiBmbG9hdCBfX2dhbW1hZiAoZmxvYXQpIDsKCgoKCgoKZXh0ZXJuIGZsb2F0 IGxnYW1tYWZfciAoZmxvYXQsIGludCAqX19zaWduZ2FtcCkgOyBleHRlcm4gZmxvYXQgX19sZ2Ft bWFmX3IgKGZsb2F0LCBpbnQgKl9fc2lnbmdhbXApIDsKCgoKCgoKZXh0ZXJuIGZsb2F0IHJpbnRm IChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fcmludGYgKGZsb2F0IF9feCkgOwoKCmV4dGVy biBmbG9hdCBuZXh0YWZ0ZXJmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgX19hdHRyaWJ1dGVfXyAo KF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19uZXh0YWZ0ZXJmIChmbG9hdCBfX3gsIGZsb2F0 IF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCmV4dGVybiBmbG9hdCByZW1h aW5kZXJmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOyBleHRlcm4gZmxvYXQgX19yZW1haW5kZXJm IChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOwoKCgpleHRlcm4gZmxvYXQgc2NhbGJmIChmbG9hdCBf X3gsIGZsb2F0IF9fbikgOyBleHRlcm4gZmxvYXQgX19zY2FsYmYgKGZsb2F0IF9feCwgZmxvYXQg X19uKSA7CgoKCgpleHRlcm4gZmxvYXQgc2NhbGJuZiAoZmxvYXQgX194LCBpbnQgX19uKSA7IGV4 dGVybiBmbG9hdCBfX3NjYWxibmYgKGZsb2F0IF9feCwgaW50IF9fbikgOwoKCgpleHRlcm4gaW50 IGlsb2diZiAoZmxvYXQgX194KSA7IGV4dGVybiBpbnQgX19pbG9nYmYgKGZsb2F0IF9feCkgOwoj IDgzICIvdXNyL2xvY2FsL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA5OSAiL3Vzci9sb2NhbC9pbmNs dWRlL21hdGguaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAx IDMKIyA1NCAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGxv bmcgZG91YmxlIGFjb3NsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f YWNvc2wgKGxvbmcgZG91YmxlIF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGFzaW5sIChsb25n IGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXNpbmwgKGxvbmcgZG91YmxlIF9f eCkgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGF0YW5sIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJu IGxvbmcgZG91YmxlIF9fYXRhbmwgKGxvbmcgZG91YmxlIF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91 YmxlIGF0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxv bmcgZG91YmxlIF9fYXRhbjJsIChsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feCkgOwoK CmV4dGVybiBsb25nIGRvdWJsZSBjb3NsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcg ZG91YmxlIF9fY29zbCAobG9uZyBkb3VibGUgX194KSA7CgpleHRlcm4gbG9uZyBkb3VibGUgc2lu bCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3NpbmwgKGxvbmcgZG91 YmxlIF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHRhbmwgKGxvbmcgZG91YmxlIF9feCkgOyBl eHRlcm4gbG9uZyBkb3VibGUgX190YW5sIChsb25nIGRvdWJsZSBfX3gpIDsKIyA3OCAiL3Vzci9s b2NhbC9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGxvbmcgZG91YmxlIGNvc2hs IChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29zaGwgKGxvbmcgZG91 YmxlIF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHNpbmhsIChsb25nIGRvdWJsZSBfX3gpIDsg ZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2luaGwgKGxvbmcgZG91YmxlIF9feCkgOwoKZXh0ZXJuIGxv bmcgZG91YmxlIHRhbmhsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f dGFuaGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgYWNvc2hsIChs b25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYWNvc2hsIChsb25nIGRvdWJs ZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBhc2luaGwgKGxvbmcgZG91YmxlIF9feCkgOyBl eHRlcm4gbG9uZyBkb3VibGUgX19hc2luaGwgKGxvbmcgZG91YmxlIF9feCkgOwoKZXh0ZXJuIGxv bmcgZG91YmxlIGF0YW5obCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBf X2F0YW5obCAobG9uZyBkb3VibGUgX194KSA7CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4cGwg KGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19leHBsIChsb25nIGRvdWJs ZSBfX3gpIDsKIyAxMDYgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4 dGVybiBsb25nIGRvdWJsZSBmcmV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50 KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZyZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgKl9f ZXhwb25lbnQpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgbGRleHBsIChsb25nIGRvdWJsZSBfX3gs IGludCBfX2V4cG9uZW50KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xkZXhwbCAobG9uZyBkb3Vi bGUgX194LCBpbnQgX19leHBvbmVudCkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2dsIChsb25n IGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nbCAobG9uZyBkb3VibGUgX194 KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZzEwbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVy biBsb25nIGRvdWJsZSBfX2xvZzEwbCAobG9uZyBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGxvbmcg ZG91YmxlIG1vZGZsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX2lwdHIpIDsgZXh0 ZXJuIGxvbmcgZG91YmxlIF9fbW9kZmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgKl9f aXB0cikgOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXhwbTFsIChsb25nIGRvdWJsZSBfX3gpIDsg ZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhwbTFsIChsb25nIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4g bG9uZyBkb3VibGUgbG9nMXBsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91Ymxl IF9fbG9nMXBsIChsb25nIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nYmwg KGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2dibCAobG9uZyBkb3Vi bGUgX194KSA7CiMgMTQzICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpl eHRlcm4gbG9uZyBkb3VibGUgcG93bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kp IDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcG93bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJs ZSBfX3kpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgc3FydGwgKGxvbmcgZG91YmxlIF9feCkgOyBl eHRlcm4gbG9uZyBkb3VibGUgX19zcXJ0bCAobG9uZyBkb3VibGUgX194KSA7CgoKCmV4dGVybiBs b25nIGRvdWJsZSBoeXBvdGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7IGV4 dGVybiBsb25nIGRvdWJsZSBfX2h5cG90bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBf X3kpIDsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBjYnJ0bCAobG9uZyBkb3VibGUgX194KSA7IGV4 dGVybiBsb25nIGRvdWJsZSBfX2NicnRsIChsb25nIGRvdWJsZSBfX3gpIDsKCgoKCgoKZXh0ZXJu IGxvbmcgZG91YmxlIGNlaWxsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2Nv bnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY2VpbGwgKGxvbmcgZG91YmxlIF9feCkgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmYWJzbCAobG9u ZyBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRv dWJsZSBfX2ZhYnNsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgZmxvb3JsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmli dXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZmxvb3JsIChsb25nIGRv dWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBkb3Vi bGUgZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7IGV4dGVybiBsb25n IGRvdWJsZSBfX2Ztb2RsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOwoKCgoK ZXh0ZXJuIGludCBfX2lzaW5mbCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAo KF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19maW5pdGVsIChsb25nIGRvdWJsZSBfX3ZhbHVl KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IGlzaW5mbCAobG9u ZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBp bnQgZmluaXRlbCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf XykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBkcmVtbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRv dWJsZSBfX3kpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZHJlbWwgKGxvbmcgZG91YmxlIF9feCwg bG9uZyBkb3VibGUgX195KSA7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBzaWduaWZpY2FuZGwgKGxv bmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19zaWduaWZpY2FuZGwgKGxvbmcg ZG91YmxlIF9feCkgOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNvcHlzaWdubCAobG9uZyBkb3Vi bGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0 ZXJuIGxvbmcgZG91YmxlIF9fY29weXNpZ25sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91Ymxl IF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDIwOSAiL3Vzci9sb2NhbC9pbmNs dWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGludCBfX2lzbmFubCAobG9uZyBkb3VibGUg X192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gaW50IGlzbmFu bCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4 dGVybiBsb25nIGRvdWJsZSBqMGwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBf X2owbCAobG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIGoxbCAobG9uZyBkb3VibGUp IDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fajFsIChsb25nIGRvdWJsZSkgOwpleHRlcm4gbG9uZyBk b3VibGUgam5sIChpbnQsIGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2pubCAo aW50LCBsb25nIGRvdWJsZSkgOwpleHRlcm4gbG9uZyBkb3VibGUgeTBsIChsb25nIGRvdWJsZSkg OyBleHRlcm4gbG9uZyBkb3VibGUgX195MGwgKGxvbmcgZG91YmxlKSA7CmV4dGVybiBsb25nIGRv dWJsZSB5MWwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3kxbCAobG9uZyBk b3VibGUpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIHlubCAoaW50LCBsb25nIGRvdWJsZSkgOyBleHRl cm4gbG9uZyBkb3VibGUgX195bmwgKGludCwgbG9uZyBkb3VibGUpIDsKCgoKCgpleHRlcm4gbG9u ZyBkb3VibGUgZXJmbCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXJmbCAo bG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIGVyZmNsIChsb25nIGRvdWJsZSkgOyBl eHRlcm4gbG9uZyBkb3VibGUgX19lcmZjbCAobG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxvbmcgZG91 YmxlIGxnYW1tYWwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xnYW1tYWwg KGxvbmcgZG91YmxlKSA7CiMgMjM4ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMu aCIgMwpleHRlcm4gbG9uZyBkb3VibGUgZ2FtbWFsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9u ZyBkb3VibGUgX19nYW1tYWwgKGxvbmcgZG91YmxlKSA7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJs ZSBsZ2FtbWFsX3IgKGxvbmcgZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApIDsgZXh0ZXJuIGxvbmcg ZG91YmxlIF9fbGdhbW1hbF9yIChsb25nIGRvdWJsZSwgaW50ICpfX3NpZ25nYW1wKSA7CgoKCgoK CmV4dGVybiBsb25nIGRvdWJsZSByaW50bCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25n IGRvdWJsZSBfX3JpbnRsIChsb25nIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUg bmV4dGFmdGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRl X18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbmV4dGFmdGVybCAobG9uZyBk b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmVtYWluZGVybCAobG9uZyBkb3VibGUgX194LCBsb25n IGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcmVtYWluZGVybCAobG9uZyBkb3Vi bGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNjYWxibCAo bG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX24pIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f c2NhbGJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9fbikgOwoKCgoKZXh0ZXJuIGxv bmcgZG91YmxlIHNjYWxibmwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fbikgOyBleHRlcm4gbG9u ZyBkb3VibGUgX19zY2FsYm5sIChsb25nIGRvdWJsZSBfX3gsIGludCBfX24pIDsKCgoKZXh0ZXJu IGludCBpbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gaW50IF9faWxvZ2JsIChsb25n IGRvdWJsZSBfX3gpIDsKIyAxMDAgIi91c3IvbG9jYWwvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDEx MyAiL3Vzci9sb2NhbC9pbmNsdWRlL21hdGguaCIgMwpleHRlcm4gaW50IHNpZ25nYW07CiMgMjQw ICIvdXNyL2xvY2FsL2luY2x1ZGUvbWF0aC5oIiAzCnR5cGVkZWYgZW51bQp7CiAgX0lFRUVfID0g LTEsCiAgX1NWSURfLAogIF9YT1BFTl8sCiAgX1BPU0lYXywKICBfSVNPQ18KfSBfTElCX1ZFUlNJ T05fVFlQRTsKCgoKCmV4dGVybiBfTElCX1ZFUlNJT05fVFlQRSBfTElCX1ZFUlNJT047CiMgMjY1 ICIvdXNyL2xvY2FsL2luY2x1ZGUvbWF0aC5oIiAzCnN0cnVjdCBleGNlcHRpb24KCiAgewogICAg aW50IHR5cGU7CiAgICBjaGFyICpuYW1lOwogICAgZG91YmxlIGFyZzE7CiAgICBkb3VibGUgYXJn MjsKICAgIGRvdWJsZSByZXR2YWw7CiAgfTsKCgoKCmV4dGVybiBpbnQgbWF0aGVyciAoc3RydWN0 IGV4Y2VwdGlvbiAqX19leGMpOwojIDQxMSAiL3Vzci9sb2NhbC9pbmNsdWRlL21hdGguaCIgMwoK IyAxMTYgIi4uL0luY2x1ZGUvcmRzZWVkLmgiIDIKCgoKIyAxICIuLi9JbmNsdWRlL21hY3Jvcy5o IiAxCiMgMTIwICIuLi9JbmNsdWRlL3Jkc2VlZC5oIiAyCiMgMSAiLi4vSW5jbHVkZS9zdHJ1Y3R1 cmVzLmgiIDEKIyA0MCAiLi4vSW5jbHVkZS9zdHJ1Y3R1cmVzLmgiCnN0cnVjdCBvcHRzdHJ1Y3QK ewogICAgICAgIGludCBudW1iZXJfb3B0aW9uczsKICAgICAgICBpbnQgbmV4dF9hcmc7CiAgICAg ICAgY2hhciBvcHRpb25bMTAwXTsKICAgICAgICBjaGFyIG9wdGlvbl9wcmVzZW50WzEwMF07CiAg ICAgICAgY2hhciBhcmd1bWVudFsxMDBdWzEwMF07Cn07CgoKCgoKc3RydWN0IHRpbWUKewogICAg ICAgIGludCB5ZWFyOwogICAgICAgIGludCBkYXk7CiAgICAgICAgaW50IGhvdXI7CiAgICAgICAg aW50IG1pbnV0ZTsKICAgICAgICBpbnQgc2Vjb25kOwogICAgICAgIGludCBmcmFjc2VjOwp9OwoK CgoKc3RydWN0IHBoYXNlCnsKICAgICAgICBjaGFyIG5hbWVbMzBdOwogICAgICAgIGludCB5ZWFy OwogICAgICAgIGludCBkYXk7CiAgICAgICAgaW50IGhvdXI7CiAgICAgICAgaW50IG1pbnV0ZTsK ICAgICAgICBpbnQgc2Vjb25kOwogICAgICAgIGludCBmcmFjc2VjOwp9OwoKCgoKCnN0cnVjdCBs b2dpY2FsX3JlY29yZAp7CiAgICAgICAgbG9uZyBpbnQgcmVjb3JkbnVtYmVyOwogICAgICAgIGNo YXIgdHlwZTsKICAgICAgICBpbnQgY29udGludWF0aW9uOwogICAgICAgIGNoYXIgZGF0YVs0MDk2 IC04XTsKfTsKCgoKCgpzdHJ1Y3QgdHlwZTEwCnsKICAgICAgICBkb3VibGUgdmVyc2lvbjsKICAg ICAgICBpbnQgbG9nMmxyZWNsOwogICAgICAgIGNoYXIgKmJvdjsKICAgICAgICBjaGFyICplb3Y7 CiAgICAgICAgY2hhciAqdm9sdW1lX3RpbWU7CiAgICAgICAgY2hhciAqb3JnYW5pemF0aW9uOwog ICAgICAgIGNoYXIgKnZvbHVtZV9sYWJlbDsKfTsKCnN0cnVjdCB0eXBlMTFzdWIKewogICAgICAg IGNoYXIgKnN0YXRpb25faWQ7CiAgICAgICAgbG9uZyBpbnQgc2VxdWVuY2VfbnVtYmVyOwp9OwoK c3RydWN0IHR5cGUxMQp7CiAgICAgICAgaW50IG51bWJlcl9zdGF0aW9uczsKICAgICAgICBzdHJ1 Y3QgdHlwZTExc3ViICpzdGF0aW9uOwp9OwoKc3RydWN0IHR5cGUxMnN1Ygp7CiAgICAgICAgY2hh ciAqYm9zOwogICAgICAgIGNoYXIgKmVvczsKICAgICAgICBsb25nIGludCBzZXF1ZW5jZV9udW1i ZXI7Cn07CgpzdHJ1Y3QgdHlwZTEyCnsKICAgICAgICBpbnQgbnVtYmVyX3NwYW5zOwogICAgICAg IHN0cnVjdCB0eXBlMTJzdWIgKnRpbWVzcGFuOwp9OwoKCgoKCnN0cnVjdCB0eXBlMzAKewogICAg ICAgIGNoYXIgKm5hbWU7CiAgICAgICAgaW50IGNvZGU7CiAgICAgICAgaW50IGZhbWlseTsKICAg ICAgICBpbnQgbnVtYmVyX2tleXM7CiAgICAgICAgY2hhciAqKmRlY29kZXJfa2V5OwogICAgICAg IGNoYXIgKipkZWNvZGVyX2tleV9wcmltOwogICAgICAgIHN0cnVjdCB0eXBlMzAgKm5leHQ7Cn07 CgpzdHJ1Y3QgdHlwZTMxCnsKICAgICAgICBpbnQgY29kZTsKICAgICAgICBjaGFyICpjbGFzczsK ICAgICAgICBjaGFyICpjb21tZW50OwogICAgICAgIGludCB1bml0czsKICAgICAgICBzdHJ1Y3Qg dHlwZTMxICpuZXh0Owp9OwoKc3RydWN0IHR5cGUzMgp7CiAgICAgICAgaW50IGNvZGU7CiAgICAg ICAgY2hhciAqYXV0aG9yOwogICAgICAgIGNoYXIgKmNhdGFsb2c7CiAgICAgICAgY2hhciAqcHVi bGlzaGVyOwogICAgICAgIHN0cnVjdCB0eXBlMzIgKm5leHQ7Cn07CgpzdHJ1Y3QgdHlwZTMzCnsK ICAgICAgICBpbnQgY29kZTsKICAgICAgICBjaGFyICphYmJyZXZpYXRpb247CiAgICAgICAgc3Ry dWN0IHR5cGUzMyAqbmV4dDsKfTsKCnN0cnVjdCB0eXBlMzQKewogICAgICAgIGludCBjb2RlOwog ICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAgY2hhciAqZGVzY3JpcHRpb247CiAgICAgICAgc3Ry dWN0IHR5cGUzNCAqbmV4dDsKfTsKCnN0cnVjdCB0eXBlMzVzdWIKewogICAgICAgIGNoYXIgKnN0 YXRpb247CiAgICAgICAgY2hhciAqbG9jYXRpb247CiAgICAgICAgY2hhciAqY2hhbm5lbDsKICAg ICAgICBpbnQgc3ViY2hhbm5lbDsKICAgICAgICBkb3VibGUgd2VpZ2h0Owp9OwoKc3RydWN0IHR5 cGUzNQp7CiAgICAgICAgaW50IGNvZGU7CiAgICAgICAgaW50IG51bWJlcl9iZWFtczsKICAgICAg ICBzdHJ1Y3QgdHlwZTM1c3ViICpiZWFtOwogICAgICAgIHN0cnVjdCB0eXBlMzUgKm5leHQ7Cn07 CgoKCgoKc3RydWN0IHR5cGU0MQp7CiAgICAgICAgaW50IHJlc3BvbnNlX2NvZGU7CiAgICAgICAg Y2hhciAqbmFtZTsKICAgICAgICBjaGFyIHN5bW1ldHJ5X2NvZGU7CiAgICAgICAgaW50IGlucHV0 X3VuaXRzX2NvZGU7CiAgICAgICAgaW50IG91dHB1dF91bml0c19jb2RlOwogICAgICAgIGludCBu dW1iZXJfbnVtZXJhdG9yczsKICAgICAgICBkb3VibGUgKm51bWVyYXRvcjsKICAgICAgICBzdHJ1 Y3QgdHlwZTQxICpuZXh0Owp9OwoKc3RydWN0IHR5cGU0MnN1Ygp7CiAgICAgICAgZG91YmxlIGNv ZWZmaWNpZW50OwogICAgICAgIGRvdWJsZSBlcnJvcjsKfTsKCnN0cnVjdCB0eXBlNDIKewogICAg ICAgIGludCByZXNwb25zZV9jb2RlOwogICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAgY2hhciB0 cmFuc2Zlcl9mY3RfdHlwZTsKICAgICAgICBpbnQgaW5wdXRfdW5pdHNfY29kZTsKICAgICAgICBp bnQgb3V0cHV0X3VuaXRzX2NvZGU7CiAgICAgICAgY2hhciBwb2x5X2FwcHJveF90eXBlOwogICAg ICAgIGNoYXIgdmFsaWRfZnJlcV91bml0czsKICAgICAgICBkb3VibGUgbG93ZXJfdmFsaWRfZnJl cTsKICAgICAgICBkb3VibGUgdXBwZXJfdmFsaWRfZnJlcTsKICAgICAgICBkb3VibGUgbG93ZXJf Ym91bmRfYXBwcm94OwogICAgICAgIGRvdWJsZSB1cHBlcl9ib3VuZF9hcHByb3g7CiAgICAgICAg ZG91YmxlIG1heF9hYnNfZXJyb3I7CiAgICAgICAgaW50IG51bWJlcl9jb2VmZmljaWVudHM7CiAg ICAgICAgc3RydWN0IHR5cGU0MnN1YiAqY29lZmZpY2llbnQ7CiAgICAgICAgc3RydWN0IHR5cGU0 MiAqbmV4dDsKfTsKCnN0cnVjdCB0eXBlNDNzdWIKewogICAgICAgIGRvdWJsZSByZWFsOwogICAg ICAgIGRvdWJsZSBpbWFnOwogICAgICAgIGRvdWJsZSByZWFsX2Vycm9yOwogICAgICAgIGRvdWJs ZSBpbWFnX2Vycm9yOwp9OwoKc3RydWN0IHR5cGU0Mwp7CiAgICAgICAgaW50IHJlc3BvbnNlX2Nv ZGU7CiAgICAgICAgY2hhciAqbmFtZTsKICAgICAgICBjaGFyIHJlc3BvbnNlX3R5cGU7CiAgICAg ICAgaW50IGlucHV0X3VuaXRzX2NvZGU7CiAgICAgICAgaW50IG91dHB1dF91bml0c19jb2RlOwog ICAgICAgIGRvdWJsZSBhb19ub3JtOwogICAgICAgIGRvdWJsZSBub3JtX2ZyZXE7CiAgICAgICAg aW50IG51bWJlcl96ZXJvZXM7CiAgICAgICAgc3RydWN0IHR5cGU0M3N1YiAqemVybzsKICAgICAg ICBpbnQgbnVtYmVyX3BvbGVzOwogICAgICAgIHN0cnVjdCB0eXBlNDNzdWIgKnBvbGU7CiAgICAg ICAgc3RydWN0IHR5cGU0MyAqbmV4dDsKfTsKCnN0cnVjdCB0eXBlNDRzdWIKewogICAgICAgIGRv dWJsZSBjb2VmZmljaWVudDsKICAgICAgICBkb3VibGUgZXJyb3I7Cn07CgpzdHJ1Y3QgdHlwZTQ0 CnsKICAgICAgICBpbnQgcmVzcG9uc2VfY29kZTsKICAgICAgICBjaGFyICpuYW1lOwogICAgICAg IGNoYXIgcmVzcG9uc2VfdHlwZTsKICAgICAgICBpbnQgaW5wdXRfdW5pdHNfY29kZTsKICAgICAg ICBpbnQgb3V0cHV0X3VuaXRzX2NvZGU7CiAgICAgICAgaW50IG51bWJlcl9udW1lcmF0b3JzOwog ICAgICAgIHN0cnVjdCB0eXBlNDRzdWIgKm51bWVyYXRvcjsKICAgICAgICBpbnQgbnVtYmVyX2Rl bm9taW5hdG9yczsKICAgICAgICBzdHJ1Y3QgdHlwZTQ0c3ViICpkZW5vbWluYXRvcjsKICAgICAg ICBzdHJ1Y3QgdHlwZTQ0ICpuZXh0Owp9OwoKc3RydWN0IHR5cGU0NXN1Ygp7CiAgICAgICAgZG91 YmxlIGZyZXF1ZW5jeTsKICAgICAgICBkb3VibGUgYW1wbGl0dWRlOwogICAgICAgIGRvdWJsZSBh bXBsaXR1ZGVfZXJyb3I7CiAgICAgICAgZG91YmxlIHBoYXNlOwogICAgICAgIGRvdWJsZSBwaGFz ZV9lcnJvcjsKfTsKCnN0cnVjdCB0eXBlNDUKewogICAgICAgIGludCByZXNwb25zZV9jb2RlOwog ICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAgaW50IGlucHV0X3VuaXRzX2NvZGU7CiAgICAgICAg aW50IG91dHB1dF91bml0c19jb2RlOwogICAgICAgIGludCBudW1iZXJfcmVzcG9uc2VzOwogICAg ICAgIHN0cnVjdCB0eXBlNDVzdWIgKnJlc3BvbnNlOwogICAgICAgIHN0cnVjdCB0eXBlNDUgKm5l eHQ7Cn07CgpzdHJ1Y3QgdHlwZTQ2c3ViCnsKICAgICAgICBkb3VibGUgZnJlcXVlbmN5OwogICAg ICAgIGRvdWJsZSBzbG9wZTsKfTsKCnN0cnVjdCB0eXBlNDYKewogICAgICAgIGludCByZXNwb25z ZV9jb2RlOwogICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAgaW50IGlucHV0X3VuaXRzX2NvZGU7 CiAgICAgICAgaW50IG91dHB1dF91bml0c19jb2RlOwogICAgICAgIGludCBudW1iZXJfY29ybmVy czsKICAgICAgICBzdHJ1Y3QgdHlwZTQ2c3ViICpjb3JuZXI7CiAgICAgICAgc3RydWN0IHR5cGU0 NiAqbmV4dDsKfTsKCnN0cnVjdCB0eXBlNDcKewogICAgICAgIGludCByZXNwb25zZV9jb2RlOwog ICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAgZG91YmxlIGlucHV0X3NhbXBsZV9yYXRlOwogICAg ICAgIGludCBkZWNpbWF0aW9uX2ZhY3RvcjsKICAgICAgICBpbnQgZGVjaW1hdGlvbl9vZmZzZXQ7 CiAgICAgICAgZG91YmxlIGRlbGF5OwogICAgICAgIGRvdWJsZSBjb3JyZWN0aW9uOwogICAgICAg IHN0cnVjdCB0eXBlNDcgKm5leHQ7Cn07CgpzdHJ1Y3QgdHlwZTQ4c3ViCnsKICAgICAgICBkb3Vi bGUgc2Vuc2l0aXZpdHk7CiAgICAgICAgZG91YmxlIGZyZXF1ZW5jeTsKICAgICAgICBjaGFyICp0 aW1lOwp9OwoKc3RydWN0IHR5cGU0OAp7CiAgICAgICAgaW50IHJlc3BvbnNlX2NvZGU7CiAgICAg ICAgY2hhciAqbmFtZTsKICAgICAgICBkb3VibGUgc2Vuc2l0aXZpdHk7CiAgICAgICAgZG91Ymxl IGZyZXF1ZW5jeTsKICAgICAgICBpbnQgbnVtYmVyX2NhbGlicmF0aW9uczsKICAgICAgICBzdHJ1 Y3QgdHlwZTQ4c3ViICpjYWxpYnJhdGlvbjsKICAgICAgICBzdHJ1Y3QgdHlwZTQ4ICpuZXh0Owp9 OwoKCgoKCnN0cnVjdCB0eXBlNTAKewogICAgICAgIGNoYXIgKnN0YXRpb247CiAgICAgICAgZG91 YmxlIGxhdGl0dWRlOwogICAgICAgIGRvdWJsZSBsb25naXR1ZGU7CiAgICAgICAgZG91YmxlIGVs ZXZhdGlvbjsKCgogICAgICAgIGludCByZXNlcnZlZDE7CiAgICAgICAgaW50IHJlc2VydmVkMjsK ICAgICAgICBjaGFyICpuYW1lOwogICAgICAgIGludCBvd25lcl9jb2RlOwogICAgICAgIGludCBs b25nd29yZF9vcmRlcjsKICAgICAgICBpbnQgd29yZF9vcmRlcjsKICAgICAgICBjaGFyICpzdGFy dDsKICAgICAgICBjaGFyICplbmQ7CiAgICAgICAgY2hhciAqdXBkYXRlOwogICAgICAgIGNoYXIg Km5ldHdvcmtfY29kZTsKICAgICAgICBzdHJ1Y3QgdHlwZTUxICp0eXBlNTFfaGVhZDsKICAgICAg ICBzdHJ1Y3QgdHlwZTUxICp0eXBlNTFfdGFpbDsKICAgICAgICBzdHJ1Y3QgdHlwZTUyICp0eXBl NTJfaGVhZDsKICAgICAgICBzdHJ1Y3QgdHlwZTUyICp0eXBlNTJfdGFpbDsKICAgICAgICBzdHJ1 Y3QgdHlwZTUwICpzdGF0aW9uX3VwZGF0ZTsKICAgICAgICBzdHJ1Y3QgdHlwZTUwICpuZXh0Owp9 OwoKc3RydWN0IHR5cGU1MQp7CiAgICAgICAgY2hhciAqc3RhcnQ7CiAgICAgICAgY2hhciAqZW5k OwogICAgICAgIGludCBjb21tZW50X2NvZGU7CiAgICAgICAgbG9uZyBpbnQgbGV2ZWxfY29kZTsK ICAgICAgICBzdHJ1Y3QgdHlwZTUxICpuZXh0Owp9OwoKc3RydWN0IHR5cGU1Mgp7CiAgICAgICAg Y2hhciAqbG9jYXRpb247CiAgICAgICAgY2hhciAqY2hhbm5lbDsKICAgICAgICBpbnQgc3ViY2hh bm5lbDsKICAgICAgICBpbnQgaW5zdHJ1bWVudF9jb2RlOwogICAgICAgIGNoYXIgKmluc3RfY29t bWVudDsKICAgICAgICBpbnQgc2lnbmFsX3VuaXRzX2NvZGU7CiAgICAgICAgaW50IGNhbGliX3Vu aXRzX2NvZGU7CiAgICAgICAgZG91YmxlIGxhdGl0dWRlOwogICAgICAgIGRvdWJsZSBsb25naXR1 ZGU7CiAgICAgICAgZG91YmxlIGVsZXZhdGlvbjsKICAgICAgICBkb3VibGUgbG9jYWxfZGVwdGg7 CiAgICAgICAgZG91YmxlIGF6aW11dGg7CiAgICAgICAgZG91YmxlIGRpcDsKICAgICAgICBpbnQg Zm9ybWF0X2NvZGU7CiAgICAgICAgaW50IGxvZzJkcmVjbDsKICAgICAgICBkb3VibGUgc2FtcGxl cmF0ZTsKICAgICAgICBkb3VibGUgY2xvY2tfdG9sZXJhbmNlOwoKICAgICAgICBpbnQgcmVzZXJ2 ZWQxOwogICAgICAgIGNoYXIgKmNoYW5uZWxfZmxhZzsKICAgICAgICBjaGFyICpzdGFydDsKICAg ICAgICBjaGFyICplbmQ7CiAgICAgICAgY2hhciAqdXBkYXRlOwogICAgICAgIHN0cnVjdCByZXNw b25zZSAqcmVzcG9uc2VfaGVhZDsKICAgICAgICBzdHJ1Y3QgcmVzcG9uc2UgKnJlc3BvbnNlX3Rh aWw7CiAgICAgICAgc3RydWN0IHR5cGU1OSAqdHlwZTU5X2hlYWQ7CiAgICAgICAgc3RydWN0IHR5 cGU1OSAqdHlwZTU5X3RhaWw7CiAgICAgICAgc3RydWN0IHR5cGU1MiAqY2hhbm5lbF91cGRhdGU7 CiAgICAgICAgc3RydWN0IHR5cGU1MiAqbmV4dDsKfTsKCnN0cnVjdCByZXNwb25zZQp7CiAgICAg ICAgY2hhciB0eXBlOwogICAgICAgIHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAgICAgc3Ry dWN0IHR5cGU1MyAqdHlwZTUzOwogICAgICAgICAgICAgICAgc3RydWN0IHR5cGU1NCAqdHlwZTU0 OwogICAgICAgICAgICAgICAgc3RydWN0IHR5cGU1NSAqdHlwZTU1OwogICAgICAgICAgICAgICAg c3RydWN0IHR5cGU1NiAqdHlwZTU2OwogICAgICAgICAgICAgICAgc3RydWN0IHR5cGU1NyAqdHlw ZTU3OwogICAgICAgICAgICAgICAgc3RydWN0IHR5cGU1OCAqdHlwZTU4OwogICAgICAgICAgICAg ICAgc3RydWN0IHR5cGU2MCAqdHlwZTYwOwogICAgICAgICAgICAgICAgc3RydWN0IHR5cGU2MSAq dHlwZTYxOwogICAgICAgICAgICAgICAgc3RydWN0IHR5cGU2MiAqdHlwZTYyOwogICAgICAgIH0g cHRyOwogICAgICAgIHN0cnVjdCByZXNwb25zZSAqbmV4dDsKfTsKCnN0cnVjdCB0eXBlNTNzdWIK ewogICAgICAgIGRvdWJsZSByZWFsOwogICAgICAgIGRvdWJsZSBpbWFnOwogICAgICAgIGRvdWJs ZSByZWFsX2Vycm9yOwogICAgICAgIGRvdWJsZSBpbWFnX2Vycm9yOwp9OwoKc3RydWN0IHR5cGU1 Mwp7CiAgICAgICAgY2hhciAqdHJhbnNmZXI7CiAgICAgICAgaW50IHN0YWdlOwogICAgICAgIGlu dCBpbnB1dF91bml0c19jb2RlOwogICAgICAgIGludCBvdXRwdXRfdW5pdHNfY29kZTsKICAgICAg ICBkb3VibGUgYW9fbm9ybTsKICAgICAgICBkb3VibGUgbm9ybV9mcmVxOwogICAgICAgIGludCBu dW1iZXJfemVyb2VzOwogICAgICAgIHN0cnVjdCB0eXBlNTNzdWIgKnplcm87CiAgICAgICAgaW50 IG51bWJlcl9wb2xlczsKICAgICAgICBzdHJ1Y3QgdHlwZTUzc3ViICpwb2xlOwogICAgICAgIHN0 cnVjdCB0eXBlNTMgKm5leHQ7Cn07CgpzdHJ1Y3QgdHlwZTU0c3ViCnsKICAgICAgICBkb3VibGUg Y29lZmZpY2llbnQ7CiAgICAgICAgZG91YmxlIGVycm9yOwp9OwoKc3RydWN0IHR5cGU1NAp7CiAg ICAgICAgY2hhciAqdHJhbnNmZXI7CiAgICAgICAgaW50IHN0YWdlOwogICAgICAgIGludCBpbnB1 dF91bml0c19jb2RlOwogICAgICAgIGludCBvdXRwdXRfdW5pdHNfY29kZTsKICAgICAgICBpbnQg bnVtYmVyX251bWVyYXRvcnM7CiAgICAgICAgc3RydWN0IHR5cGU1NHN1YiAqbnVtZXJhdG9yOwog ICAgICAgIGludCBudW1iZXJfZGVub21pbmF0b3JzOwogICAgICAgIHN0cnVjdCB0eXBlNTRzdWIg KmRlbm9taW5hdG9yOwogICAgICAgIHN0cnVjdCB0eXBlNTQgKm5leHQ7Cn07CgpzdHJ1Y3QgdHlw ZTU1c3ViCnsKICAgICAgICBkb3VibGUgZnJlcXVlbmN5OwogICAgICAgIGRvdWJsZSBhbXBsaXR1 ZGU7CiAgICAgICAgZG91YmxlIGFtcGxpdHVkZV9lcnJvcjsKICAgICAgICBkb3VibGUgcGhhc2U7 CiAgICAgICAgZG91YmxlIHBoYXNlX2Vycm9yOwp9OwoKc3RydWN0IHR5cGU1NQp7CiAgICAgICAg aW50IHN0YWdlOwogICAgICAgIGludCBpbnB1dF91bml0c19jb2RlOwogICAgICAgIGludCBvdXRw dXRfdW5pdHNfY29kZTsKICAgICAgICBpbnQgbnVtYmVyX3Jlc3BvbnNlczsKICAgICAgICBzdHJ1 Y3QgdHlwZTU1c3ViICpyZXNwb25zZTsKICAgICAgICBzdHJ1Y3QgdHlwZTU1ICpuZXh0Owp9OwoK c3RydWN0IHR5cGU1NnN1Ygp7CiAgICAgICAgZG91YmxlIGZyZXF1ZW5jeTsKICAgICAgICBkb3Vi bGUgc2xvcGU7Cn07CgpzdHJ1Y3QgdHlwZTU2CnsKICAgICAgICBpbnQgc3RhZ2U7CiAgICAgICAg aW50IGlucHV0X3VuaXRzX2NvZGU7CiAgICAgICAgaW50IG91dHB1dF91bml0c19jb2RlOwogICAg ICAgIGludCBudW1iZXJfY29ybmVyczsKICAgICAgICBzdHJ1Y3QgdHlwZTU2c3ViICpjb3JuZXI7 CiAgICAgICAgc3RydWN0IHR5cGU1NiAqbmV4dDsKfTsKCnN0cnVjdCB0eXBlNTcKewogICAgICAg IGludCBzdGFnZTsKICAgICAgICBkb3VibGUgaW5wdXRfc2FtcGxlX3JhdGU7CiAgICAgICAgaW50 IGRlY2ltYXRpb25fZmFjdG9yOwogICAgICAgIGludCBkZWNpbWF0aW9uX29mZnNldDsKICAgICAg ICBkb3VibGUgZGVsYXk7CiAgICAgICAgZG91YmxlIGNvcnJlY3Rpb247CiAgICAgICAgc3RydWN0 IHR5cGU1NyAqbmV4dDsKfTsKCnN0cnVjdCB0eXBlNThzdWIKewogICAgICAgIGRvdWJsZSBzZW5z aXRpdml0eTsKICAgICAgICBkb3VibGUgZnJlcXVlbmN5OwogICAgICAgIGNoYXIgKnRpbWU7Cn07 CgpzdHJ1Y3QgdHlwZTU4CnsKICAgICAgICBpbnQgc3RhZ2U7CiAgICAgICAgZG91YmxlIHNlbnNp dGl2aXR5OwogICAgICAgIGRvdWJsZSBmcmVxdWVuY3k7CiAgICAgICAgaW50IG51bWJlcl9jYWxp YnJhdGlvbnM7CiAgICAgICAgc3RydWN0IHR5cGU1OHN1YiAqY2FsaWJyYXRpb247CiAgICAgICAg c3RydWN0IHR5cGU1OCAqbmV4dDsKfTsKCnN0cnVjdCB0eXBlNTkKewogICAgICAgIGNoYXIgKnN0 YXJ0OwogICAgICAgIGNoYXIgKmVuZDsKICAgICAgICBpbnQgY29tbWVudF9jb2RlOwogICAgICAg IGxvbmcgaW50IGxldmVsX2NvZGU7CiAgICAgICAgc3RydWN0IHR5cGU1OSAqbmV4dDsKfTsKCnN0 cnVjdCB0eXBlNjBzdWIxCnsKICAgICAgICBpbnQgdmFsdWU7CiAgICAgICAgaW50IG51bWJlcl9y ZXNwb25zZXM7CiAgICAgICAgc3RydWN0IHR5cGU2MHN1YjIgKnJlc3BvbnNlOwp9OwoKc3RydWN0 IHR5cGU2MHN1YjIKewogICAgICAgIGludCByZWZlcmVuY2U7Cn07CgpzdHJ1Y3QgdHlwZTYwCnsK ICAgICAgICBpbnQgbnVtYmVyX3N0YWdlczsKICAgICAgICBzdHJ1Y3QgdHlwZTYwc3ViMSAqc3Rh Z2U7CiAgICAgICAgc3RydWN0IHR5cGU2MCAqbmV4dDsKfTsKCnN0cnVjdCB0eXBlNjEKewogICAg ICAgIGludCBzdGFnZTsKICAgICAgICBjaGFyICpuYW1lOwogICAgICAgIGNoYXIgc3ltbWV0cnlf Y29kZTsKICAgICAgICBpbnQgaW5wdXRfdW5pdHNfY29kZTsKICAgICAgICBpbnQgb3V0cHV0X3Vu aXRzX2NvZGU7CiAgICAgICAgaW50IG51bWJlcl9udW1lcmF0b3JzOwogICAgICAgIGRvdWJsZSAq bnVtZXJhdG9yOwogICAgICAgIHN0cnVjdCB0eXBlNjEgKm5leHQ7Cn07CgpzdHJ1Y3QgdHlwZTYy c3ViCnsKICAgICAgICBkb3VibGUgY29lZmZpY2llbnQ7CiAgICAgICAgZG91YmxlIGVycm9yOwp9 OwoKc3RydWN0IHR5cGU2Mgp7CiAgICAgICAgY2hhciB0cmFuc2Zlcl9mY3RfdHlwZTsKICAgICAg ICBpbnQgc3RhZ2U7CiAgICAgICAgaW50IGlucHV0X3VuaXRzX2NvZGU7CiAgICAgICAgaW50IG91 dHB1dF91bml0c19jb2RlOwogICAgICAgIGNoYXIgcG9seV9hcHByb3hfdHlwZTsKICAgICAgICBj aGFyIHZhbGlkX2ZyZXFfdW5pdHM7CiAgICAgICAgZG91YmxlIGxvd2VyX3ZhbGlkX2ZyZXE7CiAg ICAgICAgZG91YmxlIHVwcGVyX3ZhbGlkX2ZyZXE7CiAgICAgICAgZG91YmxlIGxvd2VyX2JvdW5k X2FwcHJveDsKICAgICAgICBkb3VibGUgdXBwZXJfYm91bmRfYXBwcm94OwogICAgICAgIGRvdWJs ZSBtYXhfYWJzX2Vycm9yOwogICAgICAgIGludCBudW1iZXJfY29lZmZpY2llbnRzOwogICAgICAg IHN0cnVjdCB0eXBlNjJzdWIgKmNvZWZmaWNpZW50OwogICAgICAgIHN0cnVjdCB0eXBlNjIgKm5l eHQ7Cn07CgoKCgoKCnN0cnVjdCB0eXBlNzAKewogICAgICAgIGNoYXIgKmZsYWc7CiAgICAgICAg Y2hhciAqc3RhcnRfb2ZfZGF0YTsKICAgICAgICBjaGFyICplbmRfb2ZfZGF0YTsKICAgICAgICBz dHJ1Y3QgdHlwZTcwICpuZXh0Owp9OwoKc3RydWN0IHR5cGU3MXN1Ygp7CiAgICAgICAgZG91Ymxl IG1hZ25pdHVkZTsKICAgICAgICBjaGFyICp0eXBlOwogICAgICAgIGludCBzb3VyY2VfY29kZTsK fTsKCnN0cnVjdCB0eXBlNzEKewogICAgICAgIGNoYXIgKm9yaWdpbl90aW1lOwogICAgICAgIGlu dCBzb3VyY2VfY29kZTsKICAgICAgICBkb3VibGUgbGF0aXR1ZGU7CiAgICAgICAgZG91YmxlIGxv bmdpdHVkZTsKICAgICAgICBkb3VibGUgZGVwdGg7CiAgICAgICAgaW50IG51bWJlcl9tYWduaXR1 ZGVzOwogICAgICAgIHN0cnVjdCB0eXBlNzFzdWIgKm1hZ25pdHVkZTsKICAgICAgICBpbnQgc2Vp c21pY19yZWdpb247CiAgICAgICAgaW50IHNlaXNtaWNfbG9jYXRpb247CiAgICAgICAgY2hhciAq cmVnaW9uX25hbWU7CiAgICAgICAgc3RydWN0IHR5cGU3MiAqdHlwZTcyX2hlYWQ7CiAgICAgICAg c3RydWN0IHR5cGU3MiAqdHlwZTcyX3RhaWw7CiAgICAgICAgc3RydWN0IHR5cGU3MSAqbmV4dDsK fTsKCnN0cnVjdCB0eXBlNzIKewogICAgICAgIGNoYXIgKnN0YXRpb247CiAgICAgICAgY2hhciAq bG9jYXRpb247CiAgICAgICAgY2hhciAqY2hhbm5lbDsKICAgICAgICBjaGFyICphcnJpdmFsX3Rp bWU7CiAgICAgICAgZG91YmxlIGFtcGxpdHVkZTsKICAgICAgICBkb3VibGUgcGVyaW9kOwogICAg ICAgIGRvdWJsZSBzaWcybm9pc2U7CiAgICAgICAgY2hhciAqcGhhc2VuYW1lOwogICAgICAgIGlu dCBzb3VyY2VfY29kZTsKICAgICAgICBjaGFyICpuZXR3b3JrX2NvZGU7CiAgICAgICAgc3RydWN0 IHR5cGU3MiAqbmV4dDsKfTsKCnN0cnVjdCB0eXBlNzNzdWIKewogICAgICAgIGNoYXIgKnN0YXRp b247CiAgICAgICAgY2hhciAqbG9jYXRpb247CiAgICAgICAgY2hhciAqY2hhbm5lbDsKICAgICAg ICBjaGFyICp0aW1lOwogICAgICAgIGxvbmcgaW50IHNlcXVlbmNlX251bWJlcjsKICAgICAgICBp bnQgc3Vic2VxdWVuY2U7Cn07CgpzdHJ1Y3QgdHlwZTczCnsKICAgICAgICBpbnQgbnVtYmVyX2Rh dGFwaWVjZXM7CiAgICAgICAgc3RydWN0IHR5cGU3M3N1YiAqZGF0YXBpZWNlOwogICAgICAgIHN0 cnVjdCB0eXBlNzMgKm5leHQ7Cn07CgpzdHJ1Y3QgdHlwZTc0c3ViCnsKICAgICAgICBjaGFyICp0 aW1lOwogICAgICAgIGxvbmcgaW50IGluZGV4OwogICAgICAgIGludCBzdWJpbmRleDsKfTsKCnN0 cnVjdCB0eXBlNzQKewogICAgICAgIGNoYXIgKnN0YXRpb247CiAgICAgICAgY2hhciAqbG9jYXRp b247CiAgICAgICAgY2hhciAqY2hhbm5lbDsKICAgICAgICBjaGFyICpzdGFydHRpbWU7CiAgICAg ICAgbG9uZyBpbnQgc3RhcnRfaW5kZXg7CiAgICAgICAgaW50IHN0YXJ0X3N1YmluZGV4OwogICAg ICAgIGNoYXIgKmVuZHRpbWU7CiAgICAgICAgbG9uZyBpbnQgZW5kX2luZGV4OwogICAgICAgIGlu dCBlbmRfc3ViaW5kZXg7CiAgICAgICAgaW50IG51bWJlcl9hY2NlbGVyYXRvcnM7CiAgICAgICAg Y2hhciAqbmV0d29ya19jb2RlOwogICAgICAgIHN0cnVjdCB0eXBlNzRzdWIgKmFjY2VsZXJhdG9y OwogICAgICAgIHN0cnVjdCB0eXBlNzQgKm5leHQ7Cn07CgoKCgoKc3RydWN0IGlucHV0X3RpbWUK ewogICAgICAgIHVuc2lnbmVkIHNob3J0IGludCB5ZWFyOwogICAgICAgIHVuc2lnbmVkIHNob3J0 IGludCBkYXk7CiAgICAgICAgY2hhciBob3VyOwogICAgICAgIGNoYXIgbWludXRlOwogICAgICAg IGNoYXIgc2Vjb25kOwogICAgICAgIGNoYXIgdW51c2VkOwogICAgICAgIHVuc2lnbmVkIHNob3J0 IGludCBmcmFjc2VjOwp9OwoKc3RydWN0IGlucHV0X2RhdGFfaGRyCnsKICAgICAgICBjaGFyIHN0 YXRpb25bNV07CiAgICAgICAgY2hhciBsb2NhdGlvblsyXTsKICAgICAgICBjaGFyIGNoYW5uZWxb M107CiAgICAgICAgY2hhciBuZXR3b3JrWzJdOwogICAgICAgIHN0cnVjdCBpbnB1dF90aW1lIHRp bWU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgaW50IG5zYW1wbGVzOwogICAgICAgIHNob3J0IGlu dCBzYW1wbGVfcmF0ZTsKICAgICAgICBzaG9ydCBpbnQgc2FtcGxlX3JhdGVfbXVsdGlwbGllcjsK ICAgICAgICBjaGFyIGFjdGl2aXR5X2ZsYWdzOwogICAgICAgIGNoYXIgaW9fZmxhZ3M7CiAgICAg ICAgY2hhciBkYXRhX3F1YWxpdHlfZmxhZ3M7CiAgICAgICAgY2hhciBudW1iZXJfYmxvY2tldHRl czsKICAgICAgICBpbnQgbnVtYmVyX3RpbWVfY29ycmVjdGlvbnM7CiAgICAgICAgdW5zaWduZWQg c2hvcnQgaW50IGJvZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBpbnQgYm9mYjsKfTsKCnN0cnVj dCBtaW5pX2RhdGFfaGRyCnsKICAgICAgICBzdHJ1Y3QgaW5wdXRfZGF0YV9oZHIgaGRyOwogICAg ICAgIGNoYXIgYmxvY2tldHRlc1s1MjFdOwp9OwoKc3RydWN0IGRhdGFfaGRyCnsKICAgICAgICBj aGFyICpzdGF0aW9uOwogICAgICAgIGNoYXIgKmxvY2F0aW9uOwogICAgICAgIGNoYXIgKmNoYW5u ZWw7CiAgICAgICAgY2hhciBuZXR3b3JrWzNdOwogICAgICAgIHN0cnVjdCB0aW1lIHRpbWU7CiAg ICAgICAgaW50IG5zYW1wbGVzOwogICAgICAgIGludCBudW1fbXV4X2NoYW47CiAgICAgICAgY2hh ciBtdXhfY2hhbl9uYW1lWzE2XTsKICAgICAgICBkb3VibGUgc2FtcGxlX3JhdGU7CiAgICAgICAg Y2hhciBhY3Rpdml0eV9mbGFnczsKICAgICAgICBjaGFyIGlvX2ZsYWdzOwogICAgICAgIGNoYXIg ZGF0YV9xdWFsaXR5X2ZsYWdzOwogICAgICAgIGludCBudW1iZXJfYmxvY2tldHRlczsKICAgICAg ICBsb25nIGludCBudW1iZXJfdGltZV9jb3JyZWN0aW9uczsKICAgICAgICBpbnQgYm9kOwogICAg ICAgIGludCBib2ZiOwp9OwoKc3RydWN0IGRhdGFfYmxrX2hkcgp7CiAgICAgICAgdW5zaWduZWQg c2hvcnQgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgaW50IG5leHRfYmxrX2J5dGU7 Cn07CgpzdHJ1Y3QgZGF0YV9ibGtfMTAwCnsKICAgICAgICBzdHJ1Y3QgZGF0YV9ibGtfaGRyIGhk cjsKICAgICAgICBmbG9hdCBzYW1wbGVfcmF0ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGZsYWdz OwogICAgICAgIHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbM107Cn07CgpzdHJ1Y3QgZGF0YV9ibGtf MTAwMAp7CiAgICAgICAgc3RydWN0IGRhdGFfYmxrX2hkciBoZHI7CiAgICAgICAgdW5zaWduZWQg Y2hhciBlbmNvZGluZ19mbXQ7CiAgICAgICAgdW5zaWduZWQgY2hhciB3b3JkX29yZGVyOwogICAg ICAgIHVuc2lnbmVkIGNoYXIgcmVjX2xlbmd0aDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJlc2Vy dmVkOwp9OwoKc3RydWN0IGRhdGFfYmxrXzIwMDAKewogICAgICAgIHNob3J0IGJsa19sZW5ndGg7 CiAgICAgICAgc2hvcnQgb3BhcXVlX29mZnNldDsKICAgICAgICBpbnQgcmVjX251bTsKICAgICAg ICB1bnNpZ25lZCBjaGFyIHdvcmRfb3JkZXI7CiAgICAgICAgdW5zaWduZWQgY2hhciBkYXRhX2Zs YWdzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbnVtYmVyX2hlYWRlcl9mbGRzOwogICAgICAgIGNo YXIgKipkYXRhX2hlYWRlcl9mbGRzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgKm9wYXF1ZV9idWZm Owp9OwojIDEyMSAiLi4vSW5jbHVkZS9yZHNlZWQuaCIgMgoKCgoKCmV4dGVybiBGSUxFICppbnB1 dGZpbGU7CmV4dGVybiBGSUxFICphbHRfaGVhZGVyZmlsZTsKZXh0ZXJuIGludCBvdXRwdXRfZmxh ZzsKZXh0ZXJuIGludCByZWFkaW5nX2FsdF9maWxlOwoKZXh0ZXJuIGludCBMUkVDTDsKZXh0ZXJu IGludCBieXRlc3dhcDsKZXh0ZXJuIGludCBjaGVja19yZXZlcnNlOwpleHRlcm4gaW50IG1vcmVf ZGF0YTsKZXh0ZXJuIGludCBvdXRyZXNwX29sZF9mbGFnOwpleHRlcm4gaW50IG91dHJlc3BfZmxh ZzsKZXh0ZXJuIGludCBhdF92b2x1bWU7CmV4dGVybiBpbnQgZm91bmRfbHJlY2xfZmxhZzsKZXh0 ZXJuIGludCBpbnB1dF9maWxlX3R5cGU7CgpleHRlcm4gaW50IFNlZWRfZmxhZzsKCmV4dGVybiBp bnQgc3RhdGlvbl92b2x1bWU7CmV4dGVybiBpbnQgdm9sdW1lX2NvdW50OwpleHRlcm4gaW50IHZv bHVtZV9udW1iZXI7CmV4dGVybiBjaGFyIHByZWNvcmRbXTsKZXh0ZXJuIGNoYXIgKnByZWNvcmRf cHRyOwpleHRlcm4gaW50IG9mZnNldDsKZXh0ZXJuIGNoYXIgKmxyZWNvcmRfcHRyOwpleHRlcm4g aW50IG51bV9ieXRlc19yZWFkOwpleHRlcm4gaW50IHN0YXRpb25fY291bnQ7CmV4dGVybiBjaGFy ICpzdGF0aW9uX3BvaW50WzE1MDBdOwpleHRlcm4gY2hhciBzdGF0aW9uX2xpc3RbMzUwMF07CmV4 dGVybiBpbnQgY2hhbm5lbF9jb3VudDsKZXh0ZXJuIGNoYXIgKmNoYW5uZWxfcG9pbnRbMjUwXTsK CmV4dGVybiBpbnQgbmV0d29ya19jb3VudDsKZXh0ZXJuIGNoYXIgKm5ldHdvcmtfcG9pbnRbMjBd OwpleHRlcm4gY2hhciBuZXR3b3JrX2xpc3RbODBdOwoKZXh0ZXJuIGludCBsb2NhdGlvbl9jb3Vu dDsKZXh0ZXJuIGNoYXIgKmxvY2F0aW9uX3BvaW50WzIwXTsKZXh0ZXJuIGNoYXIgbG9jYXRpb25f bGlzdFsyMDBdOwoKCmV4dGVybiBjaGFyIGNoYW5uZWxfbGlzdFsyMDBdOwpleHRlcm4gaW50IGFs aWFzX2NvdW50OwpleHRlcm4gY2hhciAqYWxpYXNfcG9pbnRbNTBdOwpleHRlcm4gaW50IHN0YXJ0 X3RpbWVfY291bnQ7CmV4dGVybiBzdHJ1Y3QgdGltZSAqc3RhcnRfdGltZV9wb2ludDsKZXh0ZXJu IGludCBlbmRfdGltZV9jb3VudDsKZXh0ZXJuIHN0cnVjdCB0aW1lICplbmRfdGltZV9wb2ludDsK CmV4dGVybiBpbnQgZXZlbnRfc3RhcnRfdGltZV9jb3VudDsKZXh0ZXJuIHN0cnVjdCB0aW1lICpl dmVudF9zdGFydF90aW1lX3BvaW50OwpleHRlcm4gaW50IGV2ZW50X2VuZF90aW1lX2NvdW50Owpl eHRlcm4gc3RydWN0IHRpbWUgKmV2ZW50X2VuZF90aW1lX3BvaW50OwoKZXh0ZXJuIGludCBzdGFy dF9waGFzZV9jb3VudDsKZXh0ZXJuIHN0cnVjdCBwaGFzZSAqc3RhcnRfcGhhc2VfcG9pbnQ7CmV4 dGVybiBpbnQgZW5kX3BoYXNlX2NvdW50OwpleHRlcm4gc3RydWN0IHBoYXNlICplbmRfcGhhc2Vf cG9pbnQ7CgpleHRlcm4gY2hhciB0ZW1wX2NoYXJbXTsKZXh0ZXJuIGNoYXIgYmxvY2tldHRlW107 CmV4dGVybiBpbnQgYmxvY2tldHRlX3R5cGU7CmV4dGVybiBpbnQgYmxvY2tldHRlX2xlbmd0aDsK CmV4dGVybiBzdHJ1Y3QgbG9naWNhbF9yZWNvcmQgaW5wdXQ7CgpleHRlcm4gY2hhciBvdXRwdXRm b3JtYXRbXTsKZXh0ZXJuIGludCBvdXRwdXRfZm9ybWF0OwpleHRlcm4gRklMRSAqb3V0cHV0Zmls ZTsKZXh0ZXJuIGNoYXIgY3NzX2ZpbGVuYW1lWzEwMF07CgpleHRlcm4gaW50IE91dHB1dF9Qblpz OwoKCgoKCgpleHRlcm4gc3RydWN0IHR5cGUxMCB0eXBlMTA7CmV4dGVybiBzdHJ1Y3QgdHlwZTEx IHR5cGUxMTsKZXh0ZXJuIHN0cnVjdCB0eXBlMTIgdHlwZTEyOwoKCmV4dGVybiBzdHJ1Y3QgdHlw ZTMwICp0eXBlMzBfaGVhZCA7CmV4dGVybiBzdHJ1Y3QgdHlwZTMxICp0eXBlMzFfaGVhZCA7CmV4 dGVybiBzdHJ1Y3QgdHlwZTMyICp0eXBlMzJfaGVhZCA7CmV4dGVybiBzdHJ1Y3QgdHlwZTMzICp0 eXBlMzNfaGVhZCA7CmV4dGVybiBzdHJ1Y3QgdHlwZTM0ICp0eXBlMzRfaGVhZCA7CmV4dGVybiBz dHJ1Y3QgdHlwZTM1ICp0eXBlMzVfaGVhZCA7CgoKZXh0ZXJuIHN0cnVjdCB0eXBlNDEgKnR5cGU0 MV9oZWFkIDsKZXh0ZXJuIHN0cnVjdCB0eXBlNDIgKnR5cGU0Ml9oZWFkIDsKZXh0ZXJuIHN0cnVj dCB0eXBlNDMgKnR5cGU0M19oZWFkIDsKZXh0ZXJuIHN0cnVjdCB0eXBlNDQgKnR5cGU0NF9oZWFk IDsKZXh0ZXJuIHN0cnVjdCB0eXBlNDUgKnR5cGU0NV9oZWFkIDsKZXh0ZXJuIHN0cnVjdCB0eXBl NDYgKnR5cGU0Nl9oZWFkIDsKZXh0ZXJuIHN0cnVjdCB0eXBlNDcgKnR5cGU0N19oZWFkIDsKZXh0 ZXJuIHN0cnVjdCB0eXBlNDggKnR5cGU0OF9oZWFkIDsKCgpleHRlcm4gc3RydWN0IHR5cGU1MCAq dHlwZTUwX2hlYWQgOwoKCgoKZXh0ZXJuIHN0cnVjdCB0eXBlNzAgKnR5cGU3MF9oZWFkIDsKZXh0 ZXJuIHN0cnVjdCB0eXBlNzEgKnR5cGU3MV9oZWFkIDsKZXh0ZXJuIHN0cnVjdCB0eXBlNzIgKnR5 cGU3Ml9oZWFkIDsKZXh0ZXJuIHN0cnVjdCB0eXBlNzMgKnR5cGU3M19oZWFkIDsKZXh0ZXJuIHN0 cnVjdCB0eXBlNzQgKnR5cGU3NF9oZWFkIDsKCgoKCgpleHRlcm4gc3RydWN0IHR5cGU1MCAqY3Vy cmVudF9zdGF0aW9uIDsKZXh0ZXJuIHN0cnVjdCB0eXBlNTIgKmN1cnJlbnRfY2hhbm5lbCA7CmV4 dGVybiBzdHJ1Y3QgdHlwZTcxICpjdXJyZW50X29yaWdpbiA7CgpleHRlcm4gc3RydWN0IGRhdGFf aGRyICpkYXRhX2hkcjsKZXh0ZXJuIHN0cnVjdCB0aW1lIGxhc3RfdGltZTsKZXh0ZXJuIGRvdWJs ZSBsYXN0X3NhbXBsZV9yYXRlOwpleHRlcm4gaW50IGxhc3RfbnNhbXBsZXM7CmV4dGVybiBpbnQg c2Vpc19idWZmZXJfbGVuZ3RoOwoKZXh0ZXJuIGZsb2F0ICpzZWlzbWljX2RhdGE7CmV4dGVybiBm bG9hdCAqc2Vpc21pY19kYXRhX3B0cjsKZXh0ZXJuIGNoYXIgZGVjb2RlW107CgpleHRlcm4gaW50 IG51bWl0ZW1zOwpleHRlcm4gY2hhciAqaXRlbVtdOwpleHRlcm4gbG9uZyBpbnQgc3RhcnRfcmVj b3JkOwpleHRlcm4gZG91YmxlIHNhbXBsZV9yYXRlX2FjY3VtOwpleHRlcm4gaW50IHNhbXBsZV9y YXRlX2NvdW50OwpleHRlcm4gZG91YmxlIGFkal90b2xlcmFuY2U7CgoKCgoKCnZvaWQgcmVhZF9s b2dpY2FsX3JlY29yZCAoKTsKaW50IG1lbW5jcHkgKCk7CnZvaWQgcmVhZF9ibG9ja2V0dGUgKCk7 CnZvaWQgcGFnZXRvcCAoKTsKdm9pZCBhbGxvY2F0aW9uX2Vycm9yICgpOwppbnQgcGFyc2VfaW50 ICgpOwpsb25nIGludCBwYXJzZV9sb25nICgpOwpkb3VibGUgcGFyc2VfZG91YmxlICgpOwpjaGFy ICpwYXJzZV9uY2hhciAoKTsKY2hhciAqcGFyc2VfdmFybHN0ciAoKTsKc3RydWN0IHRpbWUgdGlt ZWFkZCAoKTsKc3RydWN0IHRpbWUgdGltZXN1YigpOwoKc3RydWN0IHRpbWUgdGltZWFkZF9kb3Vi bGUgKCk7CnN0cnVjdCB0aW1lIHRpbWVhZGRwaGFzZSAoKTsKaW50IHRpbWVjbXAgKCk7CmRvdWJs ZSB0aW1lZGlmICgpOwp2b2lkIHNub29wICgpOwp2b2lkIHNub29wX2RhdGEgKCk7CnVuc2lnbmVk IGxvbmcgaW50IHN3YXBfNGJ5dGUgKCk7CnVuc2lnbmVkIHNob3J0IGludCBzd2FwXzJieXRlICgp OwppbnQgZmluZF93b3Jkb3JkZXIgKCk7CnN0cnVjdCBvcHRzdHJ1Y3QgKmNtZGxpbmVwcm9jICgp OwoKCnZvaWQgcHJvY2Vzc192b2xoICgpOwp2b2lkIHBhcnNlX3R5cGUxMCAoKTsKdm9pZCBwYXJz ZV90eXBlMTEgKCk7CnZvaWQgcGFyc2VfdHlwZTEyICgpOwp2b2lkIHByaW50X3ZvbGggKCk7CnZv aWQgcHJpbnRfdHlwZTEwICgpOwp2b2lkIHByaW50X3R5cGUxMSAoKTsKdm9pZCBwcmludF90eXBl MTIgKCk7CgoKdm9pZCBwcm9jZXNzX2JsYW5rICgpOwoKCnZvaWQgcHJvY2Vzc19hYnJ2ZCAoKTsK dm9pZCBwYXJzZV90eXBlMzAgKCk7CnZvaWQgcGFyc2VfdHlwZTMxICgpOwp2b2lkIHBhcnNlX3R5 cGUzMiAoKTsKdm9pZCBwYXJzZV90eXBlMzMgKCk7CnZvaWQgcGFyc2VfdHlwZTM0ICgpOwp2b2lk IHBhcnNlX3R5cGUzNSAoKTsKdm9pZCBwcmludF9hYnJ2ZCAoKTsKdm9pZCBwcmludF90eXBlMzAg KCk7CnZvaWQgcHJpbnRfdHlwZTMxICgpOwp2b2lkIHByaW50X3R5cGUzMiAoKTsKdm9pZCBwcmlu dF90eXBlMzMgKCk7CnZvaWQgcHJpbnRfdHlwZTM0ICgpOwp2b2lkIHByaW50X3R5cGUzNSAoKTsK Cgp2b2lkIHBhcnNlX3R5cGU0MSAoKTsKdm9pZCBwYXJzZV90eXBlNDIgKCk7CnZvaWQgcGFyc2Vf dHlwZTQzICgpOwp2b2lkIHBhcnNlX3R5cGU0NCAoKTsKdm9pZCBwYXJzZV90eXBlNDUgKCk7CnZv aWQgcGFyc2VfdHlwZTQ2ICgpOwp2b2lkIHBhcnNlX3R5cGU0NyAoKTsKdm9pZCBwYXJzZV90eXBl NDggKCk7CgoKaW50IHByb2Nlc3Nfc3RuaCAoKTsKaW50IHBhcnNlX3R5cGU1MCAoKTsKdm9pZCBw YXJzZV90eXBlNTEgKCk7CmludCBwYXJzZV90eXBlNTIgKCk7CnN0cnVjdCByZXNwb25zZSAqZ2V0 X3Jlc3BvbnNlICgpOwp2b2lkIHBhcnNlX3R5cGU1MyAoKTsKdm9pZCBwYXJzZV90eXBlNTQgKCk7 CnZvaWQgcGFyc2VfdHlwZTU1ICgpOwp2b2lkIHBhcnNlX3R5cGU1NiAoKTsKdm9pZCBwYXJzZV90 eXBlNTcgKCk7CnZvaWQgcGFyc2VfdHlwZTU4ICgpOwp2b2lkIHBhcnNlX3R5cGU1OSAoKTsKdm9p ZCBwYXJzZV90eXBlNjAgKCk7CnZvaWQgcGFyc2VfdHlwZTYxICgpOwp2b2lkIHBhcnNlX3R5cGU2 MiAoKTsKCnZvaWQgcHJpbnRfc3RuaCAoKTsKdm9pZCBwcmludF90eXBlNTAgKCk7CnZvaWQgcHJp bnRfdHlwZTUxICgpOwp2b2lkIHByaW50X2NoYW5uZWwgKCk7CnZvaWQgcHJpbnRfdHlwZTUyICgp Owp2b2lkIHByaW50X3Jlc3BvbnNlICgpOwp2b2lkIHByaW50X3R5cGU1MyAoKTsKdm9pZCBwcmlu dF90eXBlNTQgKCk7CnZvaWQgcHJpbnRfdHlwZTU1ICgpOwp2b2lkIHByaW50X3R5cGU1NiAoKTsK dm9pZCBwcmludF90eXBlNTcgKCk7CnZvaWQgcHJpbnRfdHlwZTU4ICgpOwp2b2lkIHByaW50X3R5 cGU1OSAoKTsKdm9pZCBwcmludF90eXBlNjAgKCk7CnZvaWQgcHJpbnRfdHlwZTYxICgpOwp2b2lk IHByaW50X3R5cGU2MiAoKTsKCgp2b2lkIHByb2Nlc3NfdGltZWggKCk7CnZvaWQgcGFyc2VfdHlw ZTcwICgpOwp2b2lkIHBhcnNlX3R5cGU3MSAoKTsKdm9pZCBwYXJzZV90eXBlNzIgKCk7CnZvaWQg cGFyc2VfdHlwZTczICgpOwp2b2lkIHByaW50X3RpbWVoICgpOwp2b2lkIHByaW50X3R5cGU3MCAo KTsKdm9pZCBwcmludF90eXBlNzEgKCk7CnZvaWQgcHJpbnRfdHlwZTcyICgpOwp2b2lkIHByaW50 X3R5cGU3MyAoKTsKCgp2b2lkIHByb2Nlc3NfZGF0YSAoKTsKdm9pZCBpbml0X2RhdGFfaGRyICgp Owp2b2lkIGNvbnZlcnRfc2VlZGhkciAoKTsKdm9pZCBkZWNvZGVfYXNybyAoKTsKdm9pZCBkZWNv ZGVfY2RzbiAoKTsKdm9pZCBkZWNvZGVfZHd3c3NuICgpOwp2b2lkIGRlY29kZV9zdGVpbSAoKTsK dm9pZCBkZWNvZGVfc3JvICgpOwp2b2lkIGRlY29kZV8zMmJpdCAoKTsKdm9pZCBvdXRwdXRfZGF0 YSAoKTsKIyAzNiAiZGVjb2RlX3N0ZWltLmMiIDIKIyA0NCAiZGVjb2RlX3N0ZWltLmMiCnN0YXRp YyBpbnQgc2FtcF9jbnRlcjsKCmV4dGVybiBzdHJ1Y3Qgc3RuX2xpc3QgKnN0bl9saXN0aGVhZDsK CnZvaWQgZGVjb2RlX3N0ZWltIChkYXRhX3B0ciwgbnNhbXBsZXMsIGluZGV4KQpjaGFyICpkYXRh X3B0cjsKaW50IG5zYW1wbGVzOwppbnQgaW5kZXg7Cgp7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg aW50ICp0ZW1wX3UyYnl0ZTsKICAgICAgICBzaG9ydCBpbnQgKnRlbXBfMmJ5dGU7CiAgICAgICAg aW50ICp0ZW1wXzRieXRlOwogICAgICAgIGNoYXIgKnRlbXBfYnl0ZTsKICAgICAgICBpbnQgdGVt cDsKICAgICAgICBmbG9hdCBzYW1wbGU7CiAgICAgICAgZG91YmxlIGxhc3RfdmFsdWU7CiAgICAg ICAgaW50IGluaXRpYWxfdmFsdWU7CiAgICAgICAgaW50IGZpbmFsX3ZhbHVlOwoKICAgICAgICBp bnQgaTsKICAgICAgICBpbnQgajsKICAgICAgICBpbnQgazsKICAgICAgICBpbnQgY29tcHJlc3Np b25faW50OwogICAgICAgIGludCBjb21wcmVzc2lvbl9mbGFnWzE2XTsKICAgICAgICBpbnQgbnVt X2ZyYW1lczsKICAgICAgICBpbnQgY291bnRlcjsKCiAgICAgICAgRklMRSAqZnA7CiAgICAgICAg ZmxvYXQgKnNhdl9wdHI7CgppbnQgc2FtcDsKc3RhdGljIGludCBzYW1wbGVfY250ZXIgPSAwOwoj IDg1ICJkZWNvZGVfc3RlaW0uYyIKICAgICAgICBpZiAoaW5kZXggIT0gMCkgbGFzdF92YWx1ZSA9 IChkb3VibGUpICooc2Vpc21pY19kYXRhX3B0ciAtIDEpOwogICAgICAgIGVsc2UgbGFzdF92YWx1 ZSA9IDA7CgoKICAgICAgICB0ZW1wXzRieXRlID0gKGludCAqKSAoZGF0YV9wdHIgKyA0KTsKICAg ICAgICBpZiAoYnl0ZXN3YXAgPT0gITApICp0ZW1wXzRieXRlID0gc3dhcF80Ynl0ZSAoKnRlbXBf NGJ5dGUpOwogICAgICAgIGluaXRpYWxfdmFsdWUgPSAoaW50KSAqdGVtcF80Ynl0ZTsKCiAgICAg ICAgdGVtcF80Ynl0ZSA9IChpbnQgKikgKGRhdGFfcHRyICsgOCk7CiAgICAgICAgaWYgKGJ5dGVz d2FwID09ICEwKSAqdGVtcF80Ynl0ZSA9IHN3YXBfNGJ5dGUgKCp0ZW1wXzRieXRlKTsKCiAgICAg ICAgZmluYWxfdmFsdWUgPSAoaW50KSAqdGVtcF80Ynl0ZTsKCiAgICAgICAgbnVtX2ZyYW1lcyA9 IChMUkVDTCAtIGRhdGFfaGRyLT5ib2QpIC8gKDE2ICogNCk7CgoKCgoKICAgICAgICBjb3VudGVy ID0gMDsKICAgICAgICBzYXZfcHRyID0gc2Vpc21pY19kYXRhX3B0cjsKIyAxMjEgImRlY29kZV9z dGVpbS5jIgogICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1fZnJhbWVzOyBpKyspCiAgICAgICAg ewoKCiAgICAgICAgICAgICAgICB0ZW1wXzRieXRlID0gKGludCAqKSBkYXRhX3B0cjsKICAgICAg ICAgICAgICAgIGlmIChieXRlc3dhcCA9PSAhMCkgKnRlbXBfNGJ5dGUgPSBzd2FwXzRieXRlICgq dGVtcF80Ynl0ZSk7CiAgICAgICAgICAgICAgICBjb21wcmVzc2lvbl9pbnQgPSAoaW50KSAqdGVt cF80Ynl0ZTsKCiAgICAgICAgICAgICAgICBmb3IgKGogPSAxNTsgaiA+PSAwOyBqLS0pCiAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzaW9uX2ZsYWdbal0g PSAoY29tcHJlc3Npb25faW50ICYgMHgwMDAwMDAwMyk7CiAgICAgICAgICAgICAgICAgICAgICAg IGNvbXByZXNzaW9uX2ludCA+Pj0gMjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg ICBkYXRhX3B0ciArPSA0OwoKCgoKCgogICAgICAgICAgICAgICAgZm9yIChqID0gMTsgaiA8IDE2 OyBqKyspCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAo Y29tcHJlc3Npb25fZmxhZ1tqXSkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9y IChrID0gMDsgayA8IDQ7IGsrKywgZGF0YV9wdHIgKz0gMSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1w X2J5dGUgPSAoY2hhciAqKSBkYXRhX3B0cjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRlbXAgPSAoaW50KSAqdGVtcF9ieXRlOwoKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wID4gMHg3ZikKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCAtPSAyICogKDB4N2YgKyAxKTsKCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGkgPT0gMCkgJiYgKGogPT0g MykgJiYgKGsgPT0gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxhc3RfdmFsdWUgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGluaXRpYWxfdmFsdWUgLSB0ZW1wOwoKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZSA9IChkb3VibGUpIHRlbXAgKyBsYXN0X3Zh bHVlOwojIDE2OCAiZGVjb2RlX3N0ZWltLmMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiAoY291bnRlciA8IG5zYW1wbGVzKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqc2Vpc21pY19kYXRhX3B0ciA9IChmbG9hdCkgc2FtcGxlOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWlzbWljX2RhdGFfcHRyICs9 IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X3ZhbHVlID0gc2FtcGxlOwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlcisrOwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl YWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IDI7IGsrKywgZGF0YV9wdHIgKz0gMikKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0ZW1wXzJieXRlID0gKHNob3J0ICopIGRhdGFfcHRyOwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ5dGVzd2FwID09ICEwKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdGVtcF8yYnl0ZSA9IHN3YXBf MmJ5dGUgKCp0ZW1wXzJieXRlKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0ZW1wID0gKGludCkgKnRlbXBfMmJ5dGU7CgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKHRlbXAgPiAweDdmZmYpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgLT0gMiAqICgweDdmZmYgKyAxKTsKCgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpID09IDApICYmIChqID09 IDMpICYmIChrID09IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsYXN0X3ZhbHVlID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbml0aWFsX3ZhbHVlIC0gdGVtcDsKCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzYW1wbGUgPSAoZG91YmxlKSB0ZW1wICsgbGFzdF92YWx1ZTsK IyAyMDUgImRlY29kZV9zdGVpbS5jIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKGNvdW50ZXIgPCBuc2FtcGxlcykKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKnNlaXNtaWNfZGF0YV9wdHIgPSBzYW1wbGU7CgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWlzbWljX2RhdGFfcHRyICs9IDE7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGFzdF92YWx1ZSA9IHNhbXBsZTsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAg ICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmb3IgKGsgPSAwOyBrIDwgMTsgaysrLCBkYXRhX3B0ciArPSA0KQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0ZW1wXzRieXRlID0gKGludCAqKSBkYXRhX3B0cjsKCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZiAoYnl0ZXN3YXAgPT0gITApCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICp0ZW1wXzRieXRlID0gc3dhcF80Ynl0ZSAoKnRl bXBfNGJ5dGUpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAg PSAoaW50KSAqdGVtcF80Ynl0ZTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpZiAodGVtcCA+IDB4N2ZmZmZmZmYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRlbXAgLT0gMiAqICgweDdmZmZmZmZmICsgMSk7CgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpID09IDApICYmIChqID09IDMp ICYmIChrID09IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsYXN0X3ZhbHVlID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbml0aWFsX3ZhbHVlIC0gdGVtcDsKCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGUgPSAoZG91YmxlKSB0ZW1wICsgbGFzdF92YWx1 ZTsKCgoKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY291 bnRlciA8IG5zYW1wbGVzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc2Vpc21p Y19kYXRhX3B0ciA9IChmbG9hdCkgc2FtcGxlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWlzbWljX2RhdGFfcHRyICs9IDE7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGFzdF92YWx1ZSA9IHNhbXBsZTsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAg ICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1 bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3B0ciArPSA0 OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAg ICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgfQoKCiAgICAgICAgfQoKICAgICAg ICBpZiAobnNhbXBsZXMgPCBjb3VudGVyKQogICAgICAgIHsKCgoKCgoKCiAgICAgICAgfQogICAg ICAgIGVsc2UgaWYgKG5zYW1wbGVzID4gY291bnRlcikKICAgICAgICB7CiAgICAgICAgICAgICAg ICBteWZwcmludGYoc3RkZXJyLCAiISEhIFdBUk5JTkcgISEhICBTdGVpbSBEZWNvbXByZXNzaW9u IFNhbXBsZSBDb3VudCBFcnJvciBhdCBTYW1wbGU6ICVkXG4iLAppbmRleCtuc2FtcGxlcyk7CiAg ICAgICAgICAgICAgICBteWZwcmludGYoc3RkZXJyLCAiRXhwZWN0ZWQgJWQsIGZvdW5kICVkIHNh bXBsZXMuLi4gTG9zdCB2YWx1ZXMgd2lsbCBiZSBQYWRkZWQgd2l0aCBaZXJvc1xuIiwgbnNhbXBs ZXMsIGNvdW50ZXIpOwoKICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8KG5zYW1wbGVzLWNvdW50 ZXIpOyBpKyspICpzZWlzbWljX2RhdGFfcHRyKysgPSAwLjA7CiAgICAgICAgfQojIDMwNSAiZGVj b2RlX3N0ZWltLmMiCn0K