From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20218 invoked by alias); 20 Jul 2002 18:46:04 -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 20170 invoked by uid 71); 20 Jul 2002 18:46:03 -0000 Resent-Date: 20 Jul 2002 18:46:03 -0000 Resent-Message-ID: <20020720184603.20168.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, tobenkin@stanford.edu Received: (qmail 20406 invoked by uid 61); 20 Jul 2002 10:41:22 -0000 Message-Id: <20020720104122.20405.qmail@sources.redhat.com> Date: Sat, 20 Jul 2002 11:46:00 -0000 From: tobenkin@stanford.edu Reply-To: tobenkin@stanford.edu To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: c++/7365: Use of extern integer constant causes ice X-SW-Source: 2002-07/txt/msg00585.txt.bz2 List-Id: >Number: 7365 >Category: c++ >Synopsis: Use of extern integer constant causes ice >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: ice-on-legal-code >Submitter-Id: net >Arrival-Date: Sat Jul 20 11:46:03 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Mark Tobenkin >Release: gcc version 2.95.4 20011002 (Debian prerelease) >Organization: >Environment: Intel PIII, running Debian sid. Linux kernel 2.4.18. Code does involve the gl/glut libraries (though that has made no problems in the past). >Description: GCC reports the following: In file included from pp2_4_tobenkin.cpp:30: tobenkin_ray.h: In method `void Walls::render() const': tobenkin_ray.h:240: Internal compiler error: tobenkin_ray.h:240: Internal compiler error in `find_function_data', at function.c:544 The above code involves dereferencing an array of classes and viewing a single member (summarized): GLfloatPoint vertices[wallCount]; vertices[i].x The following is the command line: gcc -lGL -lglut -o 4.exe pp2_4_tobenkin.cpp Removing this line incurs further problems: pp2_4_tobenkin.cpp: In method `Walls::Walls()': pp2_4_tobenkin.cpp:42: Internal compiler error: pp2_4_tobenkin.cpp:42: Internal compiler error in `expand_expr', at expr.c:8136 Key Note: Removal of the extern int "wallCount" causes all of these errors to disappear. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="pp2_4_tobenkin.ii" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="pp2_4_tobenkin.ii" IyAxICJwcDJfNF90b2Jlbmtpbi5jcHAiCiAKCgoKCgoKCgoKCiAKCiMgMSAiL3Vzci9saWIvZ2Nj LWxpYi9pMzg2LWxpbnV4LzIuOTUuNC8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2lvc3RyZWFt LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojcHJhZ21hIGludGVyZmFjZQoKCgoj IDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvLi4vLi4vLi4vLi4vaW5jbHVk ZS9nKystMy9zdHJlYW1idWYuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojcHJh Z21hIGludGVyZmFjZQoKCiAgIAoKCgpleHRlcm4gIkMiIHsKIyAxICIvdXNyL2luY2x1ZGUvbGli aW8uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1 ZGUvX0dfY29uZmlnLmgiIDEgMwogCgoKCgoKIAoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBl cy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvZmVh dHVyZXMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK CgoKCgoKCiAKCgoKCgogCgoKCiAKCgoKCgoKCiAKIyAxNDIgIi91c3IvaW5jbHVkZS9mZWF0dXJl cy5oIiAzCgoKIAoKCgoKCgoKCgogCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgojIDIwOCAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCiAKCgoKIAoKCiAKCgoKCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgog CgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK CgoKIAoKCgoKIAoKCgoKCgogCgoKCgoKIAoKCgoKCgoKCiAKCgoKIyA2NSAiL3Vzci9pbmNsdWRl L3N5cy9jZGVmcy5oIiAzCgoKIAoKCgoKCiAKCgoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKIAoKCgoK CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgogCgoKCgoKCgoK IAoKCgoKCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKIAoKCgoKCgoKIAoK CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgojIDI4MyAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIg MwoKCgogCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9nbnUv c3R1YnMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMzEyICIvdXNyL2luY2x1ZGUvZmVh dHVyZXMuaCIgMiAzCgoKCgojIDI2ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgoK IyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgi IDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9p bmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1s aWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoK CgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxp bnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKIAoKCgoKIAoKIyAyNzEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1 LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiMgMjgzICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGlu dXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2Nj LWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoK CgoKCgoKCgoKCgoKCiMgMjkgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCiAKdHlw ZWRlZiB1bnNpZ25lZCBjaGFyIF9fdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9z aG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25n IF9fdV9sb25nOwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQg X191X3F1YWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFkX3Q7 CiMgNDggIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMKCnR5cGVkZWYgc2lnbmVkIGNoYXIg X19pbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVk IHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2 X3Q7CnR5cGVkZWYgc2lnbmVkIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9f dWludDMyX3Q7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19p bnQ2NF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3Vp bnQ2NF90OwoKdHlwZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90 IF9fZGV2X3Q7CQkgCnR5cGVkZWYgX191X2ludCBfX3VpZF90OwkJIAp0eXBlZGVmIF9fdV9pbnQg X19naWRfdDsJCSAKdHlwZWRlZiBfX3VfbG9uZyBfX2lub190OwkJIAp0eXBlZGVmIF9fdV9pbnQg X19tb2RlX3Q7CQkgCnR5cGVkZWYgX191X2ludCBfX25saW5rX3Q7IAkJIAp0eXBlZGVmIGxvbmcg aW50IF9fb2ZmX3Q7CQkgCnR5cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7CQkgCnR5cGVkZWYgaW50 IF9fcGlkX3Q7CQkJIAp0eXBlZGVmIGludCBfX3NzaXplX3Q7CQkJIAp0eXBlZGVmIF9fdV9sb25n IF9fcmxpbV90OwkJIAp0eXBlZGVmIF9fdV9xdWFkX3QgX19ybGltNjRfdDsJCSAKdHlwZWRlZiBf X3VfaW50IF9faWRfdDsJCQkgCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBfX3ZhbFsyXTsK ICB9IF9fZnNpZF90OwkJCQkgCgogCnR5cGVkZWYgaW50IF9fZGFkZHJfdDsJCQkgCnR5cGVkZWYg Y2hhciAqX19jYWRkcl90Owp0eXBlZGVmIGxvbmcgaW50IF9fdGltZV90Owp0eXBlZGVmIHVuc2ln bmVkIGludCBfX3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19zdXNlY29uZHNfdDsKdHlw ZWRlZiBsb25nIGludCBfX3N3YmxrX3Q7CQkgCgwKdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7 CgogCnR5cGVkZWYgaW50IF9fY2xvY2tpZF90OwoKIAp0eXBlZGVmIGludCBfX3RpbWVyX3Q7CgoK IAoKCgp0eXBlZGVmIGludCBfX2tleV90OwoKIAp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBf X2lwY19waWRfdDsKCgogCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtzaXplX3Q7CgogCgogCnR5cGVk ZWYgbG9uZyBpbnQgX19ibGtjbnRfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7Cgog CnR5cGVkZWYgX191X2xvbmcgX19mc2Jsa2NudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2Js a2NudDY0X3Q7CgogCnR5cGVkZWYgX191X2xvbmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9x dWFkX3QgX19mc2ZpbGNudDY0X3Q7CgogCnR5cGVkZWYgX191X3F1YWRfdCBfX2lubzY0X3Q7Cgog CnR5cGVkZWYgX19sb2ZmX3QgX19vZmY2NF90OwoKIAp0eXBlZGVmIGxvbmcgaW50IF9fdF9zY2Fs YXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX3RfdXNjYWxhcl90OwoKIAp0eXBlZGVm IGludCBfX2ludHB0cl90OwoKIAp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3NvY2tsZW5fdDsKCgog CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAxIDMKIAogCiAKIAogCiAK IAogCiAKIAogCiAKIAoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDEg MwogCgoKCgoKCgoKCgoKCgoKCgoKCgojIDYyICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAz CgoKCgoKIApzdHJ1Y3QgX19zY2hlZF9wYXJhbQogIHsKICAgIGludCBfX3NjaGVkX3ByaW9yaXR5 OwogIH07CgoKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIgMwoKCnR5 cGVkZWYgaW50IF9fYXRvbWljX2xvY2tfdDsKCiAKc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrCnsK ICBsb25nIGludCBfX3N0YXR1czsgICAgCiAgX19hdG9taWNfbG9ja190IF9fc3BpbmxvY2s7ICAg Cgp9OwoKCiAKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0ICpfcHRocmVhZF9k ZXNjcjsKCgoKCiAKdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX2F0dHJfcwp7CiAgaW50IF9fZGV0 YWNoc3RhdGU7CiAgaW50IF9fc2NoZWRwb2xpY3k7CiAgc3RydWN0IF9fc2NoZWRfcGFyYW0gX19z Y2hlZHBhcmFtOwogIGludCBfX2luaGVyaXRzY2hlZDsKICBpbnQgX19zY29wZTsKICBzaXplX3Qg X19ndWFyZHNpemU7CiAgaW50IF9fc3RhY2thZGRyX3NldDsKICB2b2lkICpfX3N0YWNrYWRkcjsK ICBzaXplX3QgX19zdGFja3NpemU7Cn0gcHRocmVhZF9hdHRyX3Q7CgoKIAp0eXBlZGVmIHN0cnVj dAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fY19sb2NrOyAgCiAgX3B0aHJlYWRfZGVz Y3IgX19jX3dhaXRpbmc7ICAgICAgICAgCn0gcHRocmVhZF9jb25kX3Q7CgoKIAp0eXBlZGVmIHN0 cnVjdAp7CiAgaW50IF9fZHVtbXk7Cn0gcHRocmVhZF9jb25kYXR0cl90OwoKIAp0eXBlZGVmIHVu c2lnbmVkIGludCBwdGhyZWFkX2tleV90OwoKCiAKIAoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBf X21fcmVzZXJ2ZWQ7ICAgICAgICAgICAgICAgIAogIGludCBfX21fY291bnQ7ICAgICAgICAgICAg ICAgICAgIAogIF9wdGhyZWFkX2Rlc2NyIF9fbV9vd25lcjsgICAgICAgIAogIGludCBfX21fa2lu ZDsgICAgICAgICAgICAgICAgICAgIAogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX21fbG9j azsgIAp9IHB0aHJlYWRfbXV0ZXhfdDsKCgogCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tdXRl eGtpbmQ7Cn0gcHRocmVhZF9tdXRleGF0dHJfdDsKCgogCnR5cGVkZWYgaW50IHB0aHJlYWRfb25j ZV90OwoKCiMgMTE5ICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMwoKCiMgMTM4 ICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMwoKCgogCnR5cGVkZWYgdW5zaWdu ZWQgbG9uZyBpbnQgcHRocmVhZF90OwoKCiMgMTQzICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5o IiAyIDMKCgoKCiMgOSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKCgoKCgojIDEgIi91 c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoK CgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUv c3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2 LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoK CgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45 NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIv aTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50ICB3aW50X3Q7CgoKCgogCgog CgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRl Zi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMTQgIi91c3IvaW5jbHVkZS9fR19j b25maWcuaCIgMiAzCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMKIAoK CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgojIDQ2ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIg MwoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRl Zi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1 LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9n Y2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoK CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvaTM4 Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCiMgMTkwICIvdXNyL2xp Yi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCgoK IAoKIyAyNzEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRk ZWYuaCIgMwoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2kzODYt bGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoK CgoKIyA0OCAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2Jp dHMvd2NoYXIuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNTAgIi91c3IvaW5j bHVkZS93Y2hhci5oIiAyIDMKCgogCgoKCgoKCgoKCgoKCgogCnR5cGVkZWYgc3RydWN0CnsKICBp bnQgX19jb3VudDsKICB1bmlvbgogIHsKICAgIHdpbnRfdCBfX3djaDsKICAgIGNoYXIgX193Y2hi WzRdOwogIH0gX192YWx1ZTsJCSAKfSBfX21ic3RhdGVfdDsKCgoKCiAKCiMgNjgyICIvdXNyL2lu Y2x1ZGUvd2NoYXIuaCIgMwoKCgojIDI0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwoK CnR5cGVkZWYgc3RydWN0CnsKICBfX29mZl90IF9fcG9zOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7 Cn0gX0dfZnBvc190Owp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmY2NF90IF9fcG9zOwogIF9fbWJz dGF0ZV90IF9fc3RhdGU7Cn0gX0dfZnBvczY0X3Q7CgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUv Z2NvbnYuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1 ZGUvd2NoYXIuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKIyA0NiAiL3Vz ci9pbmNsdWRlL3djaGFyLmgiIDMKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8y Ljk1LjQvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2Mt bGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgog CgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRl Zi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIv dXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgog CgogCgojIDE5MCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0 ZGRlZi5oIiAzCgoKCiAKCgoKCiAKCiMgMjcxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgv Mi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgogCgogCgojIDMxNyAiL3Vz ci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgog CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNDggIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKCgoK CiAKCgoKCgoKCgoKCgojIDc2ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwoKCgoKIAoKIyA2ODIg Ii91c3IvaW5jbHVkZS93Y2hhci5oIiAzCgoKCiMgMjggIi91c3IvaW5jbHVkZS9nY29udi5oIiAy IDMKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3Rk ZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIu OTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGli L2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgog CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9p Mzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKCiMgMTg4ICIvdXNy L2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgog CgoKCgogCgoKIyAyNjkgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVk ZS9zdGRkZWYuaCIgMwoKCgoKIyAyODMgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1 LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2kz ODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoK CgoKCgoKIyAzMSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKCiAKCgogCmVudW0KewogIF9f R0NPTlZfT0sgPSAwLAogIF9fR0NPTlZfTk9DT05WLAogIF9fR0NPTlZfTk9EQiwKICBfX0dDT05W X05PTUVNLAoKICBfX0dDT05WX0VNUFRZX0lOUFVULAogIF9fR0NPTlZfRlVMTF9PVVRQVVQsCiAg X19HQ09OVl9JTExFR0FMX0lOUFVULAogIF9fR0NPTlZfSU5DT01QTEVURV9JTlBVVCwKCiAgX19H Q09OVl9JTExFR0FMX0RFU0NSSVBUT1IsCiAgX19HQ09OVl9JTlRFUk5BTF9FUlJPUgp9OwoKCiAK ZW51bQp7CiAgX19HQ09OVl9JU19MQVNUID0gMHgwMDAxLAogIF9fR0NPTlZfSUdOT1JFX0VSUk9S UyA9IDB4MDAwMgp9OwoKCiAKc3RydWN0IF9fZ2NvbnZfc3RlcDsKc3RydWN0IF9fZ2NvbnZfc3Rl cF9kYXRhOwpzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0OwpzdHJ1Y3QgX19nY29udl90cmFu c19kYXRhOwoKCiAKdHlwZWRlZiBpbnQgKCpfX2djb252X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0 ZXAgKiwgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICosCgkJCSAgICBfX2NvbnN0IHVuc2lnbmVk IGNoYXIgKiosIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAoJCQkgICAgdW5zaWduZWQgY2hhciAq Kiwgc2l6ZV90ICosIGludCwgaW50KTsKCiAKdHlwZWRlZiBpbnQgKCpfX2djb252X2luaXRfZmN0 KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKdHlwZWRlZiB2b2lkICgqX19nY29udl9lbmRfZmN0 KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKCgogCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFu c19mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICosCgkJCQkgIHN0cnVjdCBfX2djb252X3N0ZXBf ZGF0YSAqLCB2b2lkICosCgkJCQkgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAoJCQkJICBfX2Nv bnN0IHVuc2lnbmVkIGNoYXIgKiosCgkJCQkgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLCB1bnNp Z25lZCBjaGFyICoqLAoJCQkJICBzaXplX3QgKik7CgogCnR5cGVkZWYgaW50ICgqX19nY29udl90 cmFuc19jb250ZXh0X2ZjdCkgKHZvaWQgKiwgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCgkJCQkJ ICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKCQkJCQkgIHVuc2lnbmVkIGNoYXIgKiwgdW5zaWdu ZWQgY2hhciAqKTsKCiAKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX3F1ZXJ5X2ZjdCkgKF9f Y29uc3QgY2hhciAqLCBfX2NvbnN0IGNoYXIgKioqLAoJCQkJCXNpemVfdCAqKTsKCiAKdHlwZWRl ZiBpbnQgKCpfX2djb252X3RyYW5zX2luaXRfZmN0KSAodm9pZCAqKiwgY29uc3QgY2hhciAqKTsK dHlwZWRlZiB2b2lkICgqX19nY29udl90cmFuc19lbmRfZmN0KSAodm9pZCAqKTsKCnN0cnVjdCBf X2djb252X3RyYW5zX2RhdGEKewogICAKICBfX2djb252X3RyYW5zX2ZjdCBfX3RyYW5zX2ZjdDsK ICBfX2djb252X3RyYW5zX2NvbnRleHRfZmN0IF9fdHJhbnNfY29udGV4dF9mY3Q7CiAgX19nY29u dl90cmFuc19lbmRfZmN0IF9fdHJhbnNfZW5kX2ZjdDsKICB2b2lkICpfX2RhdGE7CiAgc3RydWN0 IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX19uZXh0Owp9OwoKCiAKc3RydWN0IF9fZ2NvbnZfc3RlcAp7 CiAgc3RydWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdCAqX19zaGxpYl9oYW5kbGU7CiAgX19jb25z dCBjaGFyICpfX21vZG5hbWU7CgogIGludCBfX2NvdW50ZXI7CgogIGNoYXIgKl9fZnJvbV9uYW1l OwogIGNoYXIgKl9fdG9fbmFtZTsKCiAgX19nY29udl9mY3QgX19mY3Q7CiAgX19nY29udl9pbml0 X2ZjdCBfX2luaXRfZmN0OwogIF9fZ2NvbnZfZW5kX2ZjdCBfX2VuZF9mY3Q7CgogICAKCiAgaW50 IF9fbWluX25lZWRlZF9mcm9tOwogIGludCBfX21heF9uZWVkZWRfZnJvbTsKICBpbnQgX19taW5f bmVlZGVkX3RvOwogIGludCBfX21heF9uZWVkZWRfdG87CgogICAKICBpbnQgX19zdGF0ZWZ1bDsK CiAgdm9pZCAqX19kYXRhOwkJIAp9OwoKIAoKc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhCnsKICB1 bnNpZ25lZCBjaGFyICpfX291dGJ1ZjsgICAgIAogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmZW5k OyAgCgoKICAgCiAgaW50IF9fZmxhZ3M7CgogICAKCiAgaW50IF9faW52b2NhdGlvbl9jb3VudGVy OwoKICAgCgogIGludCBfX2ludGVybmFsX3VzZTsKCiAgX19tYnN0YXRlX3QgKl9fc3RhdGVwOwog IF9fbWJzdGF0ZV90IF9fc3RhdGU7CSAKCgogICAKICBzdHJ1Y3QgX19nY29udl90cmFuc19kYXRh ICpfX3RyYW5zOwp9OwoKCiAKdHlwZWRlZiBzdHJ1Y3QgX19nY29udl9pbmZvCnsKICBzaXplX3Qg X19uc3RlcHM7CiAgc3RydWN0IF9fZ2NvbnZfc3RlcCAqX19zdGVwczsKICBfX2V4dGVuc2lvbl9f IHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBfX2RhdGEgWzBdIDsKfSAqX19nY29udl90OwoKCiMg NDQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgp0eXBlZGVmIHVuaW9uCnsKICBzdHJ1 Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgc3RydWN0CiAgewogICAgc3RydWN0IF9fZ2NvbnZfaW5m byBfX2NkOwogICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YTsKICB9IF9fY29tYmlu ZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5cGVkZWYgaW50IF9HX2ludDE2X3QgX19hdHRyaWJ1dGVfXyAo KF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2ludDMyX3QgX19hdHRyaWJ1dGVf XyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQxNl90 IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGlu dCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKCgoKCiAK CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCiMgMzIgIi91c3IvaW5jbHVk ZS9saWJpby5oIiAyIDMKCiAKCgoKCgoKCgoKCgoKCgoKCgogCgojIDEgIi91c3IvbGliL2djYy1s aWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK CgoKdHlwZWRlZiB2b2lkICpfX2dudWNfdmFfbGlzdDsKCgoKIAoKIyAxMjIgIi91c3IvbGliL2dj Yy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRhcmcuaCIgMwoKCgoKCgoKCgoKCgoK CgoKCgoKCiMgMjA5ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUv c3RkYXJnLmgiIDMKCgoKCiMgNTMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKCgoKCgoKCiMg NzIgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCgoKIAoKCgoKCgoKCgoKCgoKCgoKCiMgMTAzICIv dXNyL2luY2x1ZGUvbGliaW8uaCIgMwoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCnN0cnVjdCBfSU9fanVtcF90OyAgc3RydWN0IF9JT19G SUxFOwoKIAoKCgoKCgoKdHlwZWRlZiB2b2lkIF9JT19sb2NrX3Q7CgoKCiAKCnN0cnVjdCBfSU9f bWFya2VyIHsKICBzdHJ1Y3QgX0lPX21hcmtlciAqX25leHQ7CiAgc3RydWN0IF9JT19GSUxFICpf c2J1ZjsKICAgCgogICAKICBpbnQgX3BvczsKIyAxOTIgIi91c3IvaW5jbHVkZS9saWJpby5oIiAz Cgp9OwoKIAplbnVtIF9fY29kZWN2dF9yZXN1bHQKewogIF9fY29kZWN2dF9vaywKICBfX2NvZGVj dnRfcGFydGlhbCwKICBfX2NvZGVjdnRfZXJyb3IsCiAgX19jb2RlY3Z0X25vY29udgp9OwoKIyAy NTkgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCgoKc3RydWN0IF9JT19GSUxFIHsKICBpbnQgX2Zs YWdzOwkJIAoKCiAgIAogICAKICBjaGFyKiBfSU9fcmVhZF9wdHI7CSAKICBjaGFyKiBfSU9fcmVh ZF9lbmQ7CSAKICBjaGFyKiBfSU9fcmVhZF9iYXNlOwkgCiAgY2hhciogX0lPX3dyaXRlX2Jhc2U7 CSAKICBjaGFyKiBfSU9fd3JpdGVfcHRyOwkgCiAgY2hhciogX0lPX3dyaXRlX2VuZDsJIAogIGNo YXIqIF9JT19idWZfYmFzZTsJIAogIGNoYXIqIF9JT19idWZfZW5kOwkgCiAgIAogIGNoYXIgKl9J T19zYXZlX2Jhc2U7ICAKICBjaGFyICpfSU9fYmFja3VwX2Jhc2U7ICAgCiAgY2hhciAqX0lPX3Nh dmVfZW5kOyAgCgogIHN0cnVjdCBfSU9fbWFya2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19G SUxFICpfY2hhaW47CgogIGludCBfZmlsZW5vOwogIGludCBfYmxrc2l6ZTsKICBfX29mZl90ICAg X29sZF9vZmZzZXQ7ICAKCgogICAKICB1bnNpZ25lZCBzaG9ydCBfY3VyX2NvbHVtbjsKICBzaWdu ZWQgY2hhciBfdnRhYmxlX29mZnNldDsKICBjaGFyIF9zaG9ydGJ1ZlsxXTsKCiAgIAoKICBfSU9f bG9ja190ICpfbG9jazsKCgoKCgoKCgogIF9fb2ZmNjRfdCAgIF9vZmZzZXQ7CgoKCgoKICB2b2lk ICpfX3BhZDE7CiAgdm9pZCAqX19wYWQyOwoKICBpbnQgX21vZGU7CiAgIAogIGNoYXIgX3VudXNl ZDJbMTUgKiBzaXplb2YgKGludCkgLSAyICogc2l6ZW9mICh2b2lkICopXTsKCn07CgoKCgoKc3Ry dWN0IF9JT19GSUxFX3BsdXM7CgpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9z dGRpbl87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZG91dF87CmV4dGVy biBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGVycl87CgoKCgoKCgoKCgoKIAoKIAoK dHlwZWRlZiBfX3NzaXplX3QgX19pb19yZWFkX2ZuICh2b2lkICpfX2Nvb2tpZSwgY2hhciAqX19i dWYsIHNpemVfdCBfX25ieXRlcyk7CgogCgoKCgoKdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0 ZV9mbiAodm9pZCAqX19jb29raWUsIF9fY29uc3QgY2hhciAqX19idWYsCgkJCQkgc2l6ZV90IF9f bik7CgogCgoKCgoKdHlwZWRlZiBpbnQgX19pb19zZWVrX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19v ZmY2NF90ICAgKl9fcG9zLCBpbnQgX193KTsKCiAKdHlwZWRlZiBpbnQgX19pb19jbG9zZV9mbiAo dm9pZCAqX19jb29raWUpOwoKCiMgMzg5ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwoKCgoKZXh0 ZXJuICJDIiB7CgoKZXh0ZXJuIGludCBfX3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgdGhyb3cgKCkg OwpleHRlcm4gaW50IF9fdWZsb3cgKF9JT19GSUxFICopIHRocm93ICgpIDsKZXh0ZXJuIGludCBf X292ZXJmbG93IChfSU9fRklMRSAqLCBpbnQpIHRocm93ICgpIDsKZXh0ZXJuIHdpbnRfdCAgIF9f d3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgdGhyb3cgKCkgOwpleHRlcm4gd2ludF90ICAgX193dWZs b3cgKF9JT19GSUxFICopIHRocm93ICgpIDsKZXh0ZXJuIHdpbnRfdCAgIF9fd292ZXJmbG93IChf SU9fRklMRSAqLCB3aW50X3QgICkgdGhyb3cgKCkgOwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpl eHRlcm4gaW50IF9JT19nZXRjIChfSU9fRklMRSAqX19mcCkgdGhyb3cgKCkgOwpleHRlcm4gaW50 IF9JT19wdXRjIChpbnQgX19jLCBfSU9fRklMRSAqX19mcCkgdGhyb3cgKCkgOwpleHRlcm4gaW50 IF9JT19mZW9mIChfSU9fRklMRSAqX19mcCkgdGhyb3cgKCkgOwpleHRlcm4gaW50IF9JT19mZXJy b3IgKF9JT19GSUxFICpfX2ZwKSB0aHJvdyAoKSA7CgpleHRlcm4gaW50IF9JT19wZWVrY19sb2Nr ZWQgKF9JT19GSUxFICpfX2ZwKSB0aHJvdyAoKSA7CgogCgoKCmV4dGVybiB2b2lkIF9JT19mbG9j a2ZpbGUgKF9JT19GSUxFICopIHRocm93ICgpIDsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxl IChfSU9fRklMRSAqKSB0aHJvdyAoKSA7CmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lP X0ZJTEUgKikgdGhyb3cgKCkgOwoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuIGludCBfSU9fdmZzY2Fu ZiAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwKCQkJX19n bnVjX3ZhX2xpc3QgLCBpbnQgKl9fcmVzdHJpY3QpIHRocm93ICgpIDsKZXh0ZXJuIGludCBfSU9f dmZwcmludGYgKF9JT19GSUxFICpfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0LAoJ CQkgX19nbnVjX3ZhX2xpc3QgKSB0aHJvdyAoKSA7CmV4dGVybiBfX3NzaXplX3QgICBfSU9fcGFk biAoX0lPX0ZJTEUgKiwgaW50LCBfX3NzaXplX3QgICkgdGhyb3cgKCkgOwpleHRlcm4gc2l6ZV90 ICAgX0lPX3NnZXRuIChfSU9fRklMRSAqLCB2b2lkICosIHNpemVfdCAgKSB0aHJvdyAoKSA7Cgpl eHRlcm4gX19vZmY2NF90ICAgX0lPX3NlZWtvZmYgKF9JT19GSUxFICosIF9fb2ZmNjRfdCAgLCBp bnQsIGludCkgdGhyb3cgKCkgOwpleHRlcm4gX19vZmY2NF90ICAgX0lPX3NlZWtwb3MgKF9JT19G SUxFICosIF9fb2ZmNjRfdCAgLCBpbnQpIHRocm93ICgpIDsKCmV4dGVybiB2b2lkIF9JT19mcmVl X2JhY2t1cF9hcmVhIChfSU9fRklMRSAqKSB0aHJvdyAoKSA7CgojIDUxMSAiL3Vzci9pbmNsdWRl L2xpYmlvLmgiIDMKCgoKfQoKCgojIDM2ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45 NS40Ly4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RyZWFtYnVmLmgiIDIgMwoKfQogCgojIDEg Ii91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRhcmcuaCIgMSAz CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCiAKCgoKCgoKCgoKCiAKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCnZvaWQgdmFfZW5k IChfX2dudWNfdmFfbGlzdCk7CQkgCgoKIAoKCgogCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgogCiAKCgoKCgoKCgoKCgoKCiMgMTc1ICIvdXNyL2xpYi9nY2MtbGliL2kzODYt bGludXgvMi45NS40L2luY2x1ZGUvc3RkYXJnLmgiIDMKCgogCgoKCgogCgogCgogCgp0eXBlZGVm IF9fZ251Y192YV9saXN0IHZhX2xpc3Q7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNDAgIi91 c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKyst My9zdHJlYW1idWYuaCIgMiAzCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMrKyIg ewpjbGFzcyBpc3RyZWFtOyAgCmNsYXNzIG9zdHJlYW07IGNsYXNzIHN0cmVhbWJ1ZjsKCiAKCgoK CnR5cGVkZWYgX19vZmY2NF90ICAgc3RyZWFtb2ZmOwp0eXBlZGVmIF9fb2ZmNjRfdCAgIHN0cmVh bXBvczsKCgoKCnR5cGVkZWYgX19zc2l6ZV90ICAgc3RyZWFtc2l6ZTsKCnR5cGVkZWYgdW5zaWdu ZWQgbG9uZyBfX2ZtdGZsYWdzOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX19pb3N0YXRlOwoKc3Ry dWN0IF9pb3NfZmllbGRzCnsgIAogICAgc3RyZWFtYnVmICpfc3RyYnVmOwogICAgb3N0cmVhbSog X3RpZTsKICAgIGludCBfd2lkdGg7CiAgICBfX2ZtdGZsYWdzIF9mbGFnczsKICAgIHdjaGFyX3Qg ICBfZmlsbDsKICAgIF9faW9zdGF0ZSBfc3RhdGU7CiAgICBfX2lvc3RhdGUgX2V4Y2VwdGlvbnM7 CiAgICBpbnQgX3ByZWNpc2lvbjsKCiAgICB2b2lkICpfYXJyYXlzOyAgCn07CgoKCgoKCgoKCgoK CgoKCiMgMTI0ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40Ly4uLy4uLy4uLy4u L2luY2x1ZGUvZysrLTMvc3RyZWFtYnVmLmgiIDMKCgpjbGFzcyBpb3MgOiBwdWJsaWMgX2lvc19m aWVsZHMgewogIGlvcyYgb3BlcmF0b3I9KGlvcyYpOyAgIAogIGlvcyAoY29uc3QgaW9zJik7ICAK ICBwdWJsaWM6CiAgICB0eXBlZGVmIF9fZm10ZmxhZ3MgZm10ZmxhZ3M7CiAgICB0eXBlZGVmIGlu dCBpb3N0YXRlOwogICAgdHlwZWRlZiBpbnQgb3Blbm1vZGU7CiAgICB0eXBlZGVmIF9fc3NpemVf dCAgIHN0cmVhbXNpemU7CiAgICBlbnVtIGlvX3N0YXRlIHsKCWdvb2RiaXQgPSAwICwKCWVvZmJp dCA9IDEgLAoJZmFpbGJpdCA9IDIgLAoJYmFkYml0ID0gNCAgfTsKICAgIGVudW0gb3Blbl9tb2Rl IHsKCWluID0gMSAsCglvdXQgPSAyICwKCWF0ZSA9IDQgLAoJYXBwID0gOCAsCgl0cnVuYyA9IDE2 ICwKCW5vY3JlYXRlID0gMzIgLAoJbm9yZXBsYWNlID0gNjQgLAoJYmluID0gMTI4ICwgIAoJYmlu YXJ5ID0gMTI4ICB9OwogICAgZW51bSBzZWVrX2RpciB7IGJlZywgY3VyLCBlbmR9OwogICAgdHlw ZWRlZiBlbnVtIHNlZWtfZGlyIHNlZWtkaXI7CiAgICAgCiAgICBlbnVtIHsgc2tpcHdzPSAwMSAs CgkgICBsZWZ0PSAwMiAsIHJpZ2h0PSAwNCAsIGludGVybmFsPSAwMTAgLAoJICAgZGVjPSAwMjAg LCBvY3Q9IDA0MCAsIGhleD0gMDEwMCAsCgkgICBzaG93YmFzZT0gMDIwMCAsIHNob3dwb2ludD0g MDQwMCAsCgkgICB1cHBlcmNhc2U9IDAxMDAwICwgc2hvd3Bvcz0gMDIwMDAgLAoJICAgc2NpZW50 aWZpYz0gMDQwMDAgLCBmaXhlZD0gMDEwMDAwICwKCSAgIHVuaXRidWY9IDAyMDAwMCAsIHN0ZGlv PSAwNDAwMDAgCgoKCgkgICB9OwogICAgZW51bSB7ICAKCWJhc2VmaWVsZD1kZWMrb2N0K2hleCwK CWZsb2F0ZmllbGQgPSBzY2llbnRpZmljK2ZpeGVkLAoJYWRqdXN0ZmllbGQgPSBsZWZ0K3JpZ2h0 K2ludGVybmFsCiAgICB9OwoKIyAxNzcgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1 LjQvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdHJlYW1idWYuaCIgMwoKCiAgICBvc3RyZWFt KiB0aWUoKSBjb25zdCB7IHJldHVybiBfdGllOyB9CiAgICBvc3RyZWFtKiB0aWUob3N0cmVhbSog dmFsKSB7IG9zdHJlYW0qIHNhdmU9X3RpZTsgX3RpZT12YWw7IHJldHVybiBzYXZlOyB9CgogICAg IAogICAgd2NoYXJfdCAgIGZpbGwoKSBjb25zdCB7IHJldHVybiBfZmlsbDsgfQogICAgd2NoYXJf dCAgIGZpbGwod2NoYXJfdCAgIG5ld2YpCgl7d2NoYXJfdCAgIG9sZGYgPSBfZmlsbDsgX2ZpbGwg PSBuZXdmOyByZXR1cm4gb2xkZjt9CiAgICBmbXRmbGFncyBmbGFncygpIGNvbnN0IHsgcmV0dXJu IF9mbGFnczsgfQogICAgZm10ZmxhZ3MgZmxhZ3MoZm10ZmxhZ3MgbmV3X3ZhbCkgewoJZm10Zmxh Z3Mgb2xkX3ZhbCA9IF9mbGFnczsgX2ZsYWdzID0gbmV3X3ZhbDsgcmV0dXJuIG9sZF92YWw7IH0K ICAgIGludCBwcmVjaXNpb24oKSBjb25zdCB7IHJldHVybiBfcHJlY2lzaW9uOyB9CiAgICBpbnQg cHJlY2lzaW9uKGludCBuZXdwKSB7Cgl1bnNpZ25lZCBzaG9ydCBvbGRwID0gX3ByZWNpc2lvbjsg X3ByZWNpc2lvbiA9ICh1bnNpZ25lZCBzaG9ydCluZXdwOwoJcmV0dXJuIG9sZHA7IH0KICAgIGZt dGZsYWdzIHNldGYoZm10ZmxhZ3MgdmFsKSB7CglmbXRmbGFncyBvbGRiaXRzID0gX2ZsYWdzOwoJ X2ZsYWdzIHw9IHZhbDsgcmV0dXJuIG9sZGJpdHM7IH0KICAgIGZtdGZsYWdzIHNldGYoZm10Zmxh Z3MgdmFsLCBmbXRmbGFncyBtYXNrKSB7CglmbXRmbGFncyBvbGRiaXRzID0gX2ZsYWdzOwoJX2Zs YWdzID0gKF9mbGFncyAmIH5tYXNrKSB8ICh2YWwgJiBtYXNrKTsgcmV0dXJuIG9sZGJpdHM7IH0K ICAgIGZtdGZsYWdzIHVuc2V0ZihmbXRmbGFncyBtYXNrKSB7CglmbXRmbGFncyBvbGRiaXRzID0g X2ZsYWdzOwoJX2ZsYWdzICY9IH5tYXNrOyByZXR1cm4gb2xkYml0czsgfQogICAgaW50IHdpZHRo KCkgY29uc3QgeyByZXR1cm4gX3dpZHRoOyB9CiAgICBpbnQgd2lkdGgoaW50IHZhbCkgeyBpbnQg c2F2ZSA9IF93aWR0aDsgX3dpZHRoID0gdmFsOyByZXR1cm4gc2F2ZTsgfQoKCgoKICAgIHZvaWQg X3Rocm93X2ZhaWx1cmUoKSBjb25zdCB7IH0KCiAgICB2b2lkIGNsZWFyKGlvc3RhdGUgc3RhdGUg PSAwKSB7Cglfc3RhdGUgPSBfc3RyYnVmID8gc3RhdGUgOiBzdGF0ZXxiYWRiaXQ7CglpZiAoX3N0 YXRlICYgX2V4Y2VwdGlvbnMpIF90aHJvd19mYWlsdXJlKCk7IH0KICAgIHZvaWQgc2V0KGlvc3Rh dGUgZmxhZykgeyBfc3RhdGUgfD0gZmxhZzsKCWlmIChfc3RhdGUgJiBfZXhjZXB0aW9ucykgX3Ro cm93X2ZhaWx1cmUoKTsgfQogICAgdm9pZCBzZXRzdGF0ZShpb3N0YXRlIGZsYWcpIHsgX3N0YXRl IHw9IGZsYWc7ICAKCWlmIChfc3RhdGUgJiBfZXhjZXB0aW9ucykgX3Rocm93X2ZhaWx1cmUoKTsg fQogICAgaW50IGdvb2QoKSBjb25zdCB7IHJldHVybiBfc3RhdGUgPT0gMDsgfQogICAgaW50IGVv ZigpIGNvbnN0IHsgcmV0dXJuIF9zdGF0ZSAmIGlvczo6ZW9mYml0OyB9CiAgICBpbnQgZmFpbCgp IGNvbnN0IHsgcmV0dXJuIF9zdGF0ZSAmIChpb3M6OmJhZGJpdHxpb3M6OmZhaWxiaXQpOyB9CiAg ICBpbnQgYmFkKCkgY29uc3QgeyByZXR1cm4gX3N0YXRlICYgaW9zOjpiYWRiaXQ7IH0KICAgIGlv c3RhdGUgcmRzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIF9zdGF0ZTsgfQogICAgb3BlcmF0b3Igdm9p ZCooKSBjb25zdCB7IHJldHVybiBmYWlsKCkgPyAodm9pZCopMCA6ICh2b2lkKikoLTEpOyB9CiAg ICBpbnQgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gZmFpbCgpOyB9CiAgICBpb3N0YXRlIGV4 Y2VwdGlvbnMoKSBjb25zdCB7IHJldHVybiBfZXhjZXB0aW9uczsgfQogICAgdm9pZCBleGNlcHRp b25zKGlvc3RhdGUgZW5hYmxlKSB7CglfZXhjZXB0aW9ucyA9IGVuYWJsZTsKCWlmIChfc3RhdGUg JiBfZXhjZXB0aW9ucykgX3Rocm93X2ZhaWx1cmUoKTsgfQoKICAgIHN0cmVhbWJ1ZiogcmRidWYo KSBjb25zdCB7IHJldHVybiBfc3RyYnVmOyB9CiAgICBzdHJlYW1idWYqIHJkYnVmKHN0cmVhbWJ1 ZiAqX3MpIHsKICAgICAgc3RyZWFtYnVmICpfb2xkID0gX3N0cmJ1ZjsgX3N0cmJ1ZiA9IF9zOyBj bGVhciAoKTsgcmV0dXJuIF9vbGQ7IH0KCiAgICBzdGF0aWMgaW50IHN5bmNfd2l0aF9zdGRpbyhp bnQgb24pOwogICAgc3RhdGljIHZvaWQgc3luY193aXRoX3N0ZGlvKCkgeyBzeW5jX3dpdGhfc3Rk aW8oMSk7IH0KICAgIHN0YXRpYyBmbXRmbGFncyBiaXRhbGxvYygpOwogICAgc3RhdGljIGludCB4 YWxsb2MoKTsKICAgIHZvaWQqJiBwd29yZChpbnQpOwogICAgdm9pZCogcHdvcmQoaW50KSBjb25z dDsKICAgIGxvbmcmIGl3b3JkKGludCk7CiAgICBsb25nIGl3b3JkKGludCkgY29uc3Q7CgoKCgoK CgoKCiAgICAgCiAgICBjbGFzcyBJbml0IHsKICAgIHB1YmxpYzoKICAgICAgSW5pdCAoKSB7IH0K ICAgIH07CgogIHByb3RlY3RlZDoKICAgIGlubGluZSBpb3Moc3RyZWFtYnVmKiBzYiA9IDAsIG9z dHJlYW0qIHRpZV90byA9IDApOwogICAgaW5saW5lIHZpcnR1YWwgfmlvcygpOwogICAgaW5saW5l IHZvaWQgaW5pdChzdHJlYW1idWYqIHNiLCBvc3RyZWFtKiB0aWUgPSAwKTsKfTsKCgoKCnR5cGVk ZWYgaW9zOjpzZWVrX2RpciBfc2Vla19kaXI7CgoKIAogCiAKIAogCgogCiAKY2xhc3Mgc3RyZWFt bWFya2VyIDogcHJpdmF0ZSBfSU9fbWFya2VyIHsKICAgIGZyaWVuZCBjbGFzcyBzdHJlYW1idWY7 CiAgICB2b2lkIHNldF9vZmZzZXQoaW50IG9mZnNldCkgeyBfcG9zID0gb2Zmc2V0OyB9CiAgcHVi bGljOgogICAgc3RyZWFtbWFya2VyKHN0cmVhbWJ1ZiAqc2IpOwogICAgfnN0cmVhbW1hcmtlcigp OwogICAgaW50IHNhdmluZygpIHsgcmV0dXJuICAxOyB9CiAgICBpbnQgZGVsdGEoc3RyZWFtbWFy a2VyJik7CiAgICBpbnQgZGVsdGEoKTsKfTsKCnN0cnVjdCBzdHJlYW1idWYgOiBwdWJsaWMgX0lP X0ZJTEUgeyAgCiAgICBmcmllbmQgY2xhc3MgaW9zOwogICAgZnJpZW5kIGNsYXNzIGlzdHJlYW07 CiAgICBmcmllbmQgY2xhc3Mgb3N0cmVhbTsKICAgIGZyaWVuZCBjbGFzcyBzdHJlYW1tYXJrZXI7 CiAgICBjb25zdCB2b2lkIComX3Z0YWJsZSgpIHsgcmV0dXJuICooY29uc3Qgdm9pZCoqKSgoX0lP X0ZJTEUqKXRoaXMgKyAxKTsgfQogIHByb3RlY3RlZDoKICAgIHN0YXRpYyBzdHJlYW1idWYqIF9s aXN0X2FsbDsgIAogICAgX0lPX0ZJTEUqJiB4Y2hhaW4oKSB7IHJldHVybiBfY2hhaW47IH0KICAg IHZvaWQgX3VuX2xpbmsoKTsKICAgIHZvaWQgX2xpbmtfaW4oKTsKICAgIGNoYXIqIGdwdHIoKSBj b25zdAogICAgICB7IHJldHVybiBfZmxhZ3MgICYgMHgxMDAgID8gX0lPX3NhdmVfYmFzZSA6IF9J T19yZWFkX3B0cjsgfQogICAgY2hhciogcHB0cigpIGNvbnN0IHsgcmV0dXJuIF9JT193cml0ZV9w dHI7IH0KICAgIGNoYXIqIGVncHRyKCkgY29uc3QKICAgICAgeyByZXR1cm4gX2ZsYWdzICAmIDB4 MTAwICA/IF9JT19zYXZlX2VuZCA6IF9JT19yZWFkX2VuZDsgfQogICAgY2hhciogZXBwdHIoKSBj b25zdCB7IHJldHVybiBfSU9fd3JpdGVfZW5kOyB9CiAgICBjaGFyKiBwYmFzZSgpIGNvbnN0IHsg cmV0dXJuIF9JT193cml0ZV9iYXNlOyB9CiAgICBjaGFyKiBlYmFjaygpIGNvbnN0CiAgICAgIHsg cmV0dXJuIF9mbGFncyAgJiAweDEwMCAgPyBfSU9fc2F2ZV9iYXNlIDogX0lPX3JlYWRfYmFzZTt9 CiAgICBjaGFyKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gX0lPX2J1Zl9iYXNlOyB9CiAgICBjaGFy KiBlYnVmKCkgY29uc3QgeyByZXR1cm4gX0lPX2J1Zl9lbmQ7IH0KICAgIGludCBibGVuKCkgY29u c3QgeyByZXR1cm4gX0lPX2J1Zl9lbmQgLSBfSU9fYnVmX2Jhc2U7IH0KICAgIHZvaWQgeHB1dF9j aGFyKGNoYXIgYykgeyAqX0lPX3dyaXRlX3B0cisrID0gYzsgfQogICAgaW50IHhmbGFncygpIHsg cmV0dXJuIF9mbGFncyA7IH0KICAgIGludCB4ZmxhZ3MoaW50IGYpIHtpbnQgZmwgPSBfZmxhZ3Mg OyBfZmxhZ3MgID0gZjsgcmV0dXJuIGZsO30KICAgIHZvaWQgeHNldGZsYWdzKGludCBmKSB7IF9m bGFncyAgfD0gZjsgfQogICAgdm9pZCB4c2V0ZmxhZ3MoaW50IGYsIGludCBtYXNrKQogICAgICB7 IF9mbGFncyAgPSAoX2ZsYWdzICAmIH5tYXNrKSB8IChmICYgbWFzayk7IH0KICAgIHZvaWQgZ2J1 bXAoaW50IG4pCiAgICAgIHsgX2ZsYWdzICAmIDB4MTAwICA/IChfSU9fc2F2ZV9iYXNlKz1uKToo X0lPX3JlYWRfcHRyKz1uKTt9CiAgICB2b2lkIHBidW1wKGludCBuKSB7IF9JT193cml0ZV9wdHIg Kz0gbjsgfQogICAgdm9pZCBzZXRiKGNoYXIqIGIsIGNoYXIqIGViLCBpbnQgYT0wKTsKICAgIHZv aWQgc2V0cChjaGFyKiBwLCBjaGFyKiBlcCkKICAgICAgeyBfSU9fd3JpdGVfYmFzZT1fSU9fd3Jp dGVfcHRyPXA7IF9JT193cml0ZV9lbmQ9ZXA7IH0KICAgIHZvaWQgc2V0ZyhjaGFyKiBlYiwgY2hh ciogZywgY2hhciAqZWcpIHsKICAgICAgaWYgKF9mbGFncyAgJiAweDEwMCApIF9JT19mcmVlX2Jh Y2t1cF9hcmVhKHRoaXMpOyAKICAgICAgX0lPX3JlYWRfYmFzZSA9IGViOyBfSU9fcmVhZF9wdHIg PSBnOyBfSU9fcmVhZF9lbmQgPSBlZzsgfQogICAgY2hhciAqc2hvcnRidWYoKSB7IHJldHVybiBf c2hvcnRidWY7IH0KCiAgICBpbnQgaW5fYmFja3VwKCkgeyByZXR1cm4gX2ZsYWdzICYgMHgxMDAg OyB9CiAgICAgCiAgICBjaGFyICpHYmFzZSgpIHsgcmV0dXJuIGluX2JhY2t1cCgpID8gX0lPX3Nh dmVfYmFzZSA6IF9JT19yZWFkX2Jhc2U7IH0KICAgICAKICAgIGNoYXIgKmVHcHRyKCkgeyByZXR1 cm4gaW5fYmFja3VwKCkgPyBfSU9fc2F2ZV9lbmQgOiBfSU9fcmVhZF9lbmQ7IH0KICAgICAKICAg IGNoYXIgKkJiYXNlKCkgeyByZXR1cm4gaW5fYmFja3VwKCkgPyBfSU9fcmVhZF9iYXNlIDogX0lP X3NhdmVfYmFzZTsgfQogICAgY2hhciAqQnB0cigpIHsgcmV0dXJuIF9JT19iYWNrdXBfYmFzZTsg fQogICAgIAogICAgY2hhciAqZUJwdHIoKSB7IHJldHVybiBpbl9iYWNrdXAoKSA/IF9JT19yZWFk X2VuZCA6IF9JT19zYXZlX2VuZDsgfQogICAgY2hhciAqTmJhc2UoKSB7IHJldHVybiBfSU9fc2F2 ZV9iYXNlOyB9CiAgICBjaGFyICplTnB0cigpIHsgcmV0dXJuIF9JT19zYXZlX2VuZDsgfQogICAg aW50IGhhdmVfYmFja3VwKCkgeyByZXR1cm4gX0lPX3NhdmVfYmFzZSAhPSBfX251bGwgOyB9CiAg ICBpbnQgaGF2ZV9tYXJrZXJzKCkgeyByZXR1cm4gX21hcmtlcnMgIT0gX19udWxsIDsgfQogICAg dm9pZCBmcmVlX2JhY2t1cF9hcmVhKCk7CiAgICB2b2lkIHVuc2F2ZV9tYXJrZXJzKCk7ICAKICAg IGludCBwdXRfbW9kZSgpIHsgcmV0dXJuIF9mbGFncyAmIDB4ODAwIDsgfQogICAgaW50IHN3aXRj aF90b19nZXRfbW9kZSgpOwogICAgCiAgICBzdHJlYW1idWYoaW50IGZsYWdzPTApOwogIHB1Ymxp YzoKICAgIHN0YXRpYyBpbnQgZmx1c2hfYWxsKCk7CiAgICBzdGF0aWMgdm9pZCBmbHVzaF9hbGxf bGluZWJ1ZmZlcmVkKCk7ICAKICAgIHZpcnR1YWwgfnN0cmVhbWJ1ZigpOwogICAgdmlydHVhbCBp bnQgb3ZlcmZsb3coaW50IGMgPSAoLTEpICk7ICAKICAgIHZpcnR1YWwgaW50IHVuZGVyZmxvdygp OyAgCiAgICB2aXJ0dWFsIGludCB1ZmxvdygpOyAgCiAgICB2aXJ0dWFsIGludCBwYmFja2ZhaWwo aW50IGMpOwogCiAgICB2aXJ0dWFsIHN0cmVhbXNpemUgeHNwdXRuKGNvbnN0IGNoYXIqIHMsIHN0 cmVhbXNpemUgbik7CiAgICB2aXJ0dWFsIHN0cmVhbXNpemUgeHNnZXRuKGNoYXIqIHMsIHN0cmVh bXNpemUgbik7CiAgICB2aXJ0dWFsIHN0cmVhbXBvcyBzZWVrb2ZmKHN0cmVhbW9mZiwgX3NlZWtf ZGlyLCBpbnQgbW9kZT1pb3M6OmlufGlvczo6b3V0KTsKICAgIHZpcnR1YWwgc3RyZWFtcG9zIHNl ZWtwb3Moc3RyZWFtcG9zIHBvcywgaW50IG1vZGUgPSBpb3M6OmlufGlvczo6b3V0KTsKCiAgICBz dHJlYW1wb3MgcHVic2Vla29mZihzdHJlYW1vZmYgbywgX3NlZWtfZGlyIGQsIGludCBtb2RlPWlv czo6aW58aW9zOjpvdXQpCiAgICAgIHsgcmV0dXJuIF9JT19zZWVrb2ZmICh0aGlzLCBvLCBkLCBt b2RlKTsgfQogICAgc3RyZWFtcG9zIHB1YnNlZWtwb3Moc3RyZWFtcG9zIHBvcywgaW50IG1vZGUg PSBpb3M6OmlufGlvczo6b3V0KQogICAgICB7IHJldHVybiBfSU9fc2Vla3BvcyAodGhpcywgcG9z LCBtb2RlKTsgfQogICAgc3RyZWFtcG9zIHNzZWVrb2ZmKHN0cmVhbW9mZiwgX3NlZWtfZGlyLCBp bnQgbW9kZT1pb3M6OmlufGlvczo6b3V0KTsKICAgIHN0cmVhbXBvcyBzc2Vla3BvcyhzdHJlYW1w b3MgcG9zLCBpbnQgbW9kZSA9IGlvczo6aW58aW9zOjpvdXQpOwogICAgdmlydHVhbCBzdHJlYW1i dWYqIHNldGJ1ZihjaGFyKiBwLCBpbnQgbGVuKTsKICAgIHZpcnR1YWwgaW50IHN5bmMoKTsKICAg IHZpcnR1YWwgaW50IGRvYWxsb2NhdGUoKTsKCiAgICBpbnQgc2Vla21hcmsoc3RyZWFtbWFya2Vy JiBtYXJrLCBpbnQgZGVsdGEgPSAwKTsKICAgIGludCBzcHV0YmFja2MoY2hhciBjKTsKICAgIGlu dCBzdW5nZXRjKCk7CiAgICBpbnQgdW5idWZmZXJlZCgpIHsgcmV0dXJuIF9mbGFncyAmIDIgID8g MSA6IDA7IH0KICAgIGludCBsaW5lYnVmZmVyZWQoKSB7IHJldHVybiBfZmxhZ3MgJiAweDIwMCAg PyAxIDogMDsgfQogICAgdm9pZCB1bmJ1ZmZlcmVkKGludCBpKQoJeyBpZiAoaSkgX2ZsYWdzIHw9 IDIgOyBlbHNlIF9mbGFncyAmPSB+MiA7IH0KICAgIHZvaWQgbGluZWJ1ZmZlcmVkKGludCBpKQoJ eyBpZiAoaSkgX2ZsYWdzIHw9IDB4MjAwIDsgZWxzZSBfZmxhZ3MgJj0gfjB4MjAwIDsgfQogICAg aW50IGFsbG9jYXRlKCkgeyAgCglpZiAoYmFzZSgpIHx8IHVuYnVmZmVyZWQoKSkgcmV0dXJuIDA7 CgllbHNlIHJldHVybiBkb2FsbG9jYXRlKCk7IH0KICAgICAKICAgIHZvaWQgYWxsb2NidWYoKSB7 IGlmIChiYXNlKCkgPT0gX19udWxsICkgZG9hbGxvY2J1ZigpOyB9CiAgICB2b2lkIGRvYWxsb2Ni dWYoKTsKICAgIGludCBpbl9hdmFpbCgpIHsgcmV0dXJuIF9JT19yZWFkX2VuZCAtIF9JT19yZWFk X3B0cjsgfQogICAgaW50IG91dF93YWl0aW5nKCkgeyByZXR1cm4gX0lPX3dyaXRlX3B0ciAtIF9J T193cml0ZV9iYXNlOyB9CiAgICBzdHJlYW1zaXplIHNwdXRuKGNvbnN0IGNoYXIqIHMsIHN0cmVh bXNpemUgbikgeyByZXR1cm4geHNwdXRuKHMsIG4pOyB9CiAgICBzdHJlYW1zaXplIHBhZG4oY2hh ciBwYWQsIHN0cmVhbXNpemUgbikgeyByZXR1cm4gX0lPX3BhZG4odGhpcywgcGFkLCBuKTsgfQog ICAgc3RyZWFtc2l6ZSBzZ2V0bihjaGFyKiBzLCBzdHJlYW1zaXplIG4pIHsgcmV0dXJuIF9JT19z Z2V0bih0aGlzLCBzLCBuKTsgfQogICAgaW50IGlnbm9yZShpbnQpOwogICAgaW50IGdldF9jb2x1 bW4oKTsKICAgIGludCBzZXRfY29sdW1uKGludCk7CiAgICBsb25nIHNnZXRsaW5lKGNoYXIqIGJ1 Ziwgc2l6ZV90ICAgbiwgY2hhciBkZWxpbSwgaW50IHB1dGJhY2tfZGVsaW0pOwogICAgaW50IHNw dXRjKGludCBjKSB7IHJldHVybiBfSU9fcHV0YyhjLCB0aGlzKTsgfQogICAgaW50IHNidW1wYygp IHsgcmV0dXJuIF9JT19nZXRjKHRoaXMpOyB9CiAgICBpbnQgc2dldGMoKSB7IHJldHVybiAoKCAg dGhpcyAgKS0+X0lPX3JlYWRfcHRyID49ICggIHRoaXMgICktPl9JT19yZWFkX2VuZCAmJiBfX3Vu ZGVyZmxvdyAoICB0aGlzICApID09ICgtMSkgID8gKC0xKSAgOiAqKHVuc2lnbmVkIGNoYXIgKikg KCAgdGhpcyAgKS0+X0lPX3JlYWRfcHRyKSAgOyB9CiAgICBpbnQgc25leHRjKCkgewoJaWYgKF9J T19yZWFkX3B0ciA+PSBfSU9fcmVhZF9lbmQgJiYgX191bmRlcmZsb3codGhpcykgPT0gKC0xKSAp CgkgIHJldHVybiAoLTEpIDsKCWVsc2UgcmV0dXJuIF9JT19yZWFkX3B0cisrLCBzZ2V0YygpOyB9 CiAgICB2b2lkIHN0b3NzYygpIHsgaWYgKF9JT19yZWFkX3B0ciA8IF9JT19yZWFkX2VuZCkgX0lP X3JlYWRfcHRyKys7IH0KICAgIGludCB2c2NhbihjaGFyIGNvbnN0ICpmbXQwLCBfX2dudWNfdmFf bGlzdCAgYXAsIGlvcyogc3RyZWFtID0gX19udWxsICk7CiAgICBpbnQgc2NhbihjaGFyIGNvbnN0 ICpmbXQwIC4uLik7CiAgICBpbnQgdmZvcm0oY2hhciBjb25zdCAqZm10MCwgX19nbnVjX3ZhX2xp c3QgIGFwKTsKICAgIGludCBmb3JtKGNoYXIgY29uc3QgKmZtdDAgLi4uKTsKCgoKCiAgICB2aXJ0 dWFsIHN0cmVhbXNpemUgc3lzX3JlYWQoY2hhciogYnVmLCBzdHJlYW1zaXplIHNpemUpOwogICAg dmlydHVhbCBzdHJlYW1zaXplIHN5c193cml0ZShjb25zdCBjaGFyKiwgc3RyZWFtc2l6ZSk7CiAg ICB2aXJ0dWFsIHN0cmVhbXBvcyBzeXNfc2VlayhzdHJlYW1vZmYsIF9zZWVrX2Rpcik7CiAgICB2 aXJ0dWFsIGludCBzeXNfY2xvc2UoKTsKICAgIHZpcnR1YWwgaW50IHN5c19zdGF0KHZvaWQqKTsg IAoKICAgIHZpcnR1YWwgaW50IHNob3dtYW55YygpOwogICAgdmlydHVhbCB2b2lkIGltYnVlKHZv aWQgKik7Cgp9OwoKIAogCgpjbGFzcyBmaWxlYnVmIDogcHVibGljIHN0cmVhbWJ1ZiB7CiAgcHJv dGVjdGVkOgogICAgdm9pZCBpbml0KCk7CiAgcHVibGljOgogICAgc3RhdGljIGNvbnN0IGludCBv cGVucHJvdDsgIAogICAgZmlsZWJ1ZigpOwogICAgZmlsZWJ1ZihpbnQgZmQpOwogICAgZmlsZWJ1 ZihpbnQgZmQsIGNoYXIqIHAsIGludCBsZW4pOwoKCgogICAgfmZpbGVidWYoKTsKICAgIGZpbGVi dWYqIGF0dGFjaChpbnQgZmQpOwogICAgZmlsZWJ1Ziogb3Blbihjb25zdCBjaGFyICpmaWxlbmFt ZSwgY29uc3QgY2hhciAqbW9kZSk7CiAgICBmaWxlYnVmKiBvcGVuKGNvbnN0IGNoYXIgKmZpbGVu YW1lLCBpb3M6Om9wZW5tb2RlIG1vZGUsIGludCBwcm90ID0gMDY2NCk7CiAgICB2aXJ0dWFsIGlu dCB1bmRlcmZsb3coKTsKICAgIHZpcnR1YWwgaW50IG92ZXJmbG93KGludCBjID0gKC0xKSApOwog ICAgaW50IGlzX29wZW4oKSBjb25zdCB7IHJldHVybiBfZmlsZW5vID49IDA7IH0KICAgIGludCBm ZCgpIGNvbnN0IHsgcmV0dXJuIGlzX29wZW4oKSA/IF9maWxlbm8gOiAoLTEpIDsgfQogICAgZmls ZWJ1ZiogY2xvc2UoKTsKICAgIHZpcnR1YWwgaW50IGRvYWxsb2NhdGUoKTsKICAgIHZpcnR1YWwg c3RyZWFtcG9zIHNlZWtvZmYoc3RyZWFtb2ZmLCBfc2Vla19kaXIsIGludCBtb2RlPWlvczo6aW58 aW9zOjpvdXQpOwogICAgdmlydHVhbCBzdHJlYW1idWYqIHNldGJ1ZihjaGFyKiBwLCBpbnQgbGVu KTsKICAgIHN0cmVhbXNpemUgeHNwdXRuKGNvbnN0IGNoYXIqIHMsIHN0cmVhbXNpemUgbik7CiAg ICBzdHJlYW1zaXplIHhzZ2V0bihjaGFyKiBzLCBzdHJlYW1zaXplIG4pOwogICAgdmlydHVhbCBp bnQgc3luYygpOwogIHByb3RlY3RlZDogIAogCiAgICBpbnQgaXNfcmVhZGluZygpIHsgcmV0dXJu IGViYWNrKCkgIT0gZWdwdHIoKTsgfQogICAgY2hhciogY3VyX3B0cigpIHsgcmV0dXJuIGlzX3Jl YWRpbmcoKSA/ICBncHRyKCkgOiBwcHRyKCk7IH0KICAgICAKICAgIGNoYXIqIGZpbGVfcHRyKCkg eyByZXR1cm4gZUdwdHIoKTsgfQogICAgIAogICAgdmlydHVhbCBzdHJlYW1zaXplIHN5c19yZWFk KGNoYXIqIGJ1Ziwgc3RyZWFtc2l6ZSBzaXplKTsKICAgIHZpcnR1YWwgc3RyZWFtcG9zIHN5c19z ZWVrKHN0cmVhbW9mZiwgX3NlZWtfZGlyKTsKICAgIHZpcnR1YWwgc3RyZWFtc2l6ZSBzeXNfd3Jp dGUoY29uc3QgY2hhciosIHN0cmVhbXNpemUpOwogICAgdmlydHVhbCBpbnQgc3lzX3N0YXQodm9p ZCopOyAgCiAgICB2aXJ0dWFsIGludCBzeXNfY2xvc2UoKTsKCgoKCn07CgppbmxpbmUgdm9pZCBp b3M6OmluaXQoc3RyZWFtYnVmKiBzYiwgb3N0cmVhbSogdGllX3RvKSB7CgkJX3N0YXRlID0gc2Ig PyBpb3M6Omdvb2RiaXQgOiBpb3M6OmJhZGJpdDsgX2V4Y2VwdGlvbnM9MDsKCQlfc3RyYnVmPXNi OyBfdGllID0gdGllX3RvOyBfd2lkdGg9MDsgX2ZpbGw9JyAnOwoKCQlfZmxhZ3M9aW9zOjpza2lw d3N8aW9zOjpkZWM7CgoKCgkJX3ByZWNpc2lvbj02OyBfYXJyYXlzID0gMDsgfQoKaW5saW5lIGlv czo6aW9zKHN0cmVhbWJ1Ziogc2IsIG9zdHJlYW0qIHRpZV90bykgeyBpbml0KHNiLCB0aWVfdG8p OyB9CgppbmxpbmUgaW9zOjp+aW9zKCkgewoKCgogICAgIAogICAgIAogICAgb3BlcmF0b3IgZGVs ZXRlW10gKF9hcnJheXMpOwp9Cn0gIAoKIyAzMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4 LzIuOTUuNC8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2lvc3RyZWFtLmgiIDIgMwoKCmV4dGVy biAiQysrIiB7CmNsYXNzIGlzdHJlYW07IGNsYXNzIG9zdHJlYW07CnR5cGVkZWYgaW9zJiAoKl9f bWFuaXApKGlvcyYpOwp0eXBlZGVmIGlzdHJlYW0mICgqX19pbWFuaXApKGlzdHJlYW0mKTsKdHlw ZWRlZiBvc3RyZWFtJiAoKl9fb21hbmlwKShvc3RyZWFtJik7CgpleHRlcm4gaXN0cmVhbSYgd3Mo aXN0cmVhbSYgaW5zKTsKZXh0ZXJuIG9zdHJlYW0mIGZsdXNoKG9zdHJlYW0mIG91dHMpOwpleHRl cm4gb3N0cmVhbSYgZW5kbChvc3RyZWFtJiBvdXRzKTsKZXh0ZXJuIG9zdHJlYW0mIGVuZHMob3N0 cmVhbSYgb3V0cyk7CgpjbGFzcyBvc3RyZWFtIDogdmlydHVhbCBwdWJsaWMgaW9zCnsKICAgICAK ICAgIHZvaWQgZG9fb3NmeCgpOwogIHB1YmxpYzoKICAgIG9zdHJlYW0oKSB7IH0KICAgIG9zdHJl YW0oc3RyZWFtYnVmKiBzYiwgb3N0cmVhbSogdGllZD0gX19udWxsICk7CiAgICBpbnQgb3BmeCgp IHsKCWlmICghZ29vZCgpKSByZXR1cm4gMDsKCWVsc2UgeyBpZiAoX3RpZSkgX3RpZS0+Zmx1c2go KTsgIDsgcmV0dXJuIDE7fSB9CiAgICB2b2lkIG9zZngoKSB7ICA7CgkJICBpZiAoZmxhZ3MoKSAm IChpb3M6OnVuaXRidWZ8aW9zOjpzdGRpbykpCgkJICAgICAgZG9fb3NmeCgpOyB9CiAgICBvc3Ry ZWFtJiBmbHVzaCgpOwogICAgb3N0cmVhbSYgcHV0KGNoYXIgYykgeyBfc3RyYnVmLT5zcHV0Yyhj KTsgcmV0dXJuICp0aGlzOyB9CgoKCgoKICAgIG9zdHJlYW0mIHdyaXRlKGNvbnN0IGNoYXIgKnMs IHN0cmVhbXNpemUgbik7CiAgICBvc3RyZWFtJiB3cml0ZShjb25zdCB1bnNpZ25lZCBjaGFyICpz LCBzdHJlYW1zaXplIG4pCiAgICAgIHsgcmV0dXJuIHdyaXRlKChjb25zdCBjaGFyKilzLCBuKTt9 CiAgICBvc3RyZWFtJiB3cml0ZShjb25zdCBzaWduZWQgY2hhciAqcywgc3RyZWFtc2l6ZSBuKQog ICAgICB7IHJldHVybiB3cml0ZSgoY29uc3QgY2hhciopcywgbik7fQogICAgb3N0cmVhbSYgd3Jp dGUoY29uc3Qgdm9pZCAqcywgc3RyZWFtc2l6ZSBuKQogICAgICB7IHJldHVybiB3cml0ZSgoY29u c3QgY2hhciopcywgbik7fQogICAgb3N0cmVhbSYgc2Vla3Aoc3RyZWFtcG9zKTsKICAgIG9zdHJl YW0mIHNlZWtwKHN0cmVhbW9mZiwgX3NlZWtfZGlyKTsKICAgIHN0cmVhbXBvcyB0ZWxscCgpOwog ICAgb3N0cmVhbSYgZm9ybShjb25zdCBjaGFyICpmb3JtYXQgLi4uKTsKICAgIG9zdHJlYW0mIHZm b3JtKGNvbnN0IGNoYXIgKmZvcm1hdCwgX19nbnVjX3ZhX2xpc3QgIGFyZ3MpOwoKICAgIG9zdHJl YW0mIG9wZXJhdG9yPDwoY2hhciBjKTsKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwodW5zaWduZWQg Y2hhciBjKSB7IHJldHVybiAoKnRoaXMpIDw8IChjaGFyKWM7IH0KICAgIG9zdHJlYW0mIG9wZXJh dG9yPDwoc2lnbmVkIGNoYXIgYykgeyByZXR1cm4gKCp0aGlzKSA8PCAoY2hhciljOyB9CiAgICBv c3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IGNoYXIgKnMpOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8 PChjb25zdCB1bnNpZ25lZCBjaGFyICpzKQoJeyByZXR1cm4gKCp0aGlzKSA8PCAoY29uc3QgY2hh ciopczsgfQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBzaWduZWQgY2hhciAqcykKCXsg cmV0dXJuICgqdGhpcykgPDwgKGNvbnN0IGNoYXIqKXM7IH0KICAgIG9zdHJlYW0mIG9wZXJhdG9y PDwoY29uc3Qgdm9pZCAqcCk7CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGludCBuKTsKICAgIG9z dHJlYW0mIG9wZXJhdG9yPDwodW5zaWduZWQgaW50IG4pOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8 PChsb25nIG4pOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8PCh1bnNpZ25lZCBsb25nIG4pOwoKICAg IF9fZXh0ZW5zaW9uX18gb3N0cmVhbSYgb3BlcmF0b3I8PChsb25nIGxvbmcgbik7CiAgICBfX2V4 dGVuc2lvbl9fIG9zdHJlYW0mIG9wZXJhdG9yPDwodW5zaWduZWQgbG9uZyBsb25nIG4pOwoKICAg IG9zdHJlYW0mIG9wZXJhdG9yPDwoc2hvcnQgbikge3JldHVybiBvcGVyYXRvcjw8KChpbnQpbik7 fQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PCh1bnNpZ25lZCBzaG9ydCBuKSB7cmV0dXJuIG9wZXJh dG9yPDwoKHVuc2lnbmVkIGludCluKTt9CgogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChib29sIGIp IHsgcmV0dXJuIG9wZXJhdG9yPDwoKGludCliKTsgfQoKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwo ZG91YmxlIG4pOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChmbG9hdCBuKSB7IHJldHVybiBvcGVy YXRvcjw8KChkb3VibGUpbik7IH0KCiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGxvbmcgZG91Ymxl IG4pOwoKCgogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChfX29tYW5pcCBmdW5jKSB7IHJldHVybiAo KmZ1bmMpKCp0aGlzKTsgfQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChfX21hbmlwIGZ1bmMpIHso KmZ1bmMpKCp0aGlzKTsgcmV0dXJuICp0aGlzO30KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoc3Ry ZWFtYnVmKik7CgoKCn07CgpjbGFzcyBpc3RyZWFtIDogdmlydHVhbCBwdWJsaWMgaW9zCnsKICAg ICAKcHJvdGVjdGVkOgogICAgc2l6ZV90ICAgX2djb3VudDsKCiAgICBpbnQgX3NraXBfd3MoKTsK ICBwdWJsaWM6CiAgICBpc3RyZWFtKCk6IF9nY291bnQgKDApIHsgfQogICAgaXN0cmVhbShzdHJl YW1idWYqIHNiLCBvc3RyZWFtKnRpZWQ9IF9fbnVsbCApOwogICAgaXN0cmVhbSYgZ2V0KGNoYXIq IHB0ciwgaW50IGxlbiwgY2hhciBkZWxpbSA9ICdcbicpOwogICAgaXN0cmVhbSYgZ2V0KHVuc2ln bmVkIGNoYXIqIHB0ciwgaW50IGxlbiwgY2hhciBkZWxpbSA9ICdcbicpCgl7IHJldHVybiBnZXQo KGNoYXIqKXB0ciwgbGVuLCBkZWxpbSk7IH0KICAgIGlzdHJlYW0mIGdldChjaGFyJiBjKTsKICAg IGlzdHJlYW0mIGdldCh1bnNpZ25lZCBjaGFyJiBjKSB7IHJldHVybiBnZXQoKGNoYXImKWMpOyB9 CiAgICBpc3RyZWFtJiBnZXRsaW5lKGNoYXIqIHB0ciwgaW50IGxlbiwgY2hhciBkZWxpbSA9ICdc bicpOwogICAgaXN0cmVhbSYgZ2V0bGluZSh1bnNpZ25lZCBjaGFyKiBwdHIsIGludCBsZW4sIGNo YXIgZGVsaW0gPSAnXG4nKQoJeyByZXR1cm4gZ2V0bGluZSgoY2hhciopcHRyLCBsZW4sIGRlbGlt KTsgfQogICAgaXN0cmVhbSYgZ2V0KHNpZ25lZCBjaGFyJiBjKSAgeyByZXR1cm4gZ2V0KChjaGFy JiljKTsgfQogICAgaXN0cmVhbSYgZ2V0KHNpZ25lZCBjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIg ZGVsaW0gPSAnXG4nKQoJeyByZXR1cm4gZ2V0KChjaGFyKilwdHIsIGxlbiwgZGVsaW0pOyB9CiAg ICBpc3RyZWFtJiBnZXRsaW5lKHNpZ25lZCBjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0g PSAnXG4nKQoJeyByZXR1cm4gZ2V0bGluZSgoY2hhciopcHRyLCBsZW4sIGRlbGltKTsgfQogICAg aXN0cmVhbSYgcmVhZChjaGFyICpwdHIsIHN0cmVhbXNpemUgbik7CiAgICBpc3RyZWFtJiByZWFk KHVuc2lnbmVkIGNoYXIgKnB0ciwgc3RyZWFtc2l6ZSBuKQogICAgICB7IHJldHVybiByZWFkKChj aGFyKilwdHIsIG4pOyB9CiAgICBpc3RyZWFtJiByZWFkKHNpZ25lZCBjaGFyICpwdHIsIHN0cmVh bXNpemUgbikKICAgICAgeyByZXR1cm4gcmVhZCgoY2hhciopcHRyLCBuKTsgfQogICAgaXN0cmVh bSYgcmVhZCh2b2lkICpwdHIsIHN0cmVhbXNpemUgbikKICAgICAgeyByZXR1cm4gcmVhZCgoY2hh ciopcHRyLCBuKTsgfQogICAgaXN0cmVhbSYgZ2V0KHN0cmVhbWJ1ZiYgc2IsIGNoYXIgZGVsaW0g PSAnXG4nKTsKICAgIGlzdHJlYW0mIGdldHMoY2hhciAqKnMsIGNoYXIgZGVsaW0gPSAnXG4nKTsK ICAgIGludCBpcGZ4KGludCBuZWVkID0gMCkgewoJaWYgKCFnb29kKCkpIHsgc2V0KGlvczo6ZmFp bGJpdCk7IHJldHVybiAwOyB9CgllbHNlIHsKCSAgIDsKCSAgaWYgKF90aWUgJiYgKG5lZWQgPT0g MCB8fCByZGJ1ZigpLT5pbl9hdmFpbCgpIDwgbmVlZCkpIF90aWUtPmZsdXNoKCk7CgkgIGlmICgh bmVlZCAmJiAoZmxhZ3MoKSAmIGlvczo6c2tpcHdzKSkgcmV0dXJuIF9za2lwX3dzKCk7CgkgIGVs c2UgcmV0dXJuIDE7Cgl9CiAgICB9CiAgICBpbnQgaXBmeDAoKSB7ICAKCWlmICghZ29vZCgpKSB7 IHNldChpb3M6OmZhaWxiaXQpOyByZXR1cm4gMDsgfQoJZWxzZSB7CgkgICA7CgkgIGlmIChfdGll KSBfdGllLT5mbHVzaCgpOwoJICBpZiAoZmxhZ3MoKSAmIGlvczo6c2tpcHdzKSByZXR1cm4gX3Nr aXBfd3MoKTsKCSAgZWxzZSByZXR1cm4gMTsKCX0KICAgIH0KICAgIGludCBpcGZ4MSgpIHsgIAoJ aWYgKCFnb29kKCkpIHsgc2V0KGlvczo6ZmFpbGJpdCk7IHJldHVybiAwOyB9CgllbHNlIHsKCSAg IDsKCSAgaWYgKF90aWUgJiYgcmRidWYoKS0+aW5fYXZhaWwoKSA9PSAwKSBfdGllLT5mbHVzaCgp OwoJICByZXR1cm4gMTsKCX0KICAgIH0KICAgIHZvaWQgaXNmeCgpIHsgIDsgfQogICAgaW50IGdl dCgpIHsgaWYgKCFpcGZ4MSgpKSByZXR1cm4gKC0xKSA7CgkJZWxzZSB7IGludCBjaCA9IF9zdHJi dWYtPnNidW1wYygpOwoJCSAgICAgICBpZiAoY2ggPT0gKC0xKSApIHNldChpb3M6OmVvZmJpdCk7 CgkJICAgICAgIGlzZngoKTsKCQkgICAgICAgcmV0dXJuIGNoOwoJCSAgICAgfSB9CiAgICBpbnQg cGVlaygpOwogICAgc2l6ZV90ICAgZ2NvdW50KCkgeyByZXR1cm4gX2djb3VudDsgfQogICAgaXN0 cmVhbSYgaWdub3JlKGludCBuPTEsIGludCBkZWxpbSA9ICgtMSkgKTsKICAgIGludCBzeW5jICgp OwogICAgaXN0cmVhbSYgc2Vla2coc3RyZWFtcG9zKTsKICAgIGlzdHJlYW0mIHNlZWtnKHN0cmVh bW9mZiwgX3NlZWtfZGlyKTsKICAgIHN0cmVhbXBvcyB0ZWxsZygpOwogICAgaXN0cmVhbSYgcHV0 YmFjayhjaGFyIGNoKSB7CglpZiAoZ29vZCgpICYmIF9zdHJidWYtPnNwdXRiYWNrYyhjaCkgPT0g KC0xKSApIGNsZWFyKGlvczo6YmFkYml0KTsKCXJldHVybiAqdGhpczt9CiAgICBpc3RyZWFtJiB1 bmdldCgpIHsKCWlmIChnb29kKCkgJiYgX3N0cmJ1Zi0+c3VuZ2V0YygpID09ICgtMSkgKSBjbGVh cihpb3M6OmJhZGJpdCk7CglyZXR1cm4gKnRoaXM7fQogICAgaXN0cmVhbSYgc2Nhbihjb25zdCBj aGFyICpmb3JtYXQgLi4uKTsKICAgIGlzdHJlYW0mIHZzY2FuKGNvbnN0IGNoYXIgKmZvcm1hdCwg X19nbnVjX3ZhX2xpc3QgIGFyZ3MpOwoKCgoKCgogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihjaGFy Kik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHVuc2lnbmVkIGNoYXIqIHApIHsgcmV0dXJuIG9w ZXJhdG9yPj4oKGNoYXIqKXApOyB9CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHNpZ25lZCBjaGFy KnApIHsgcmV0dXJuIG9wZXJhdG9yPj4oKGNoYXIqKXApOyB9CiAgICBpc3RyZWFtJiBvcGVyYXRv cj4+KGNoYXImIGMpOwogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBjaGFyJiBjKSB7 cmV0dXJuIG9wZXJhdG9yPj4oKGNoYXImKWMpO30KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oc2ln bmVkIGNoYXImIGMpIHtyZXR1cm4gb3BlcmF0b3I+PigoY2hhciYpYyk7fQogICAgaXN0cmVhbSYg b3BlcmF0b3I+PihpbnQmKTsKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4obG9uZyYpOwoKICAgIF9f ZXh0ZW5zaW9uX18gaXN0cmVhbSYgb3BlcmF0b3I+Pihsb25nIGxvbmcmKTsKICAgIF9fZXh0ZW5z aW9uX18gaXN0cmVhbSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBsb25nIGxvbmcmKTsKCiAgICBpc3Ry ZWFtJiBvcGVyYXRvcj4+KHNob3J0Jik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHVuc2lnbmVk IGludCYpOwogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBsb25nJik7CiAgICBpc3Ry ZWFtJiBvcGVyYXRvcj4+KHVuc2lnbmVkIHNob3J0Jik7CgogICAgaXN0cmVhbSYgb3BlcmF0b3I+ Pihib29sJik7CgogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihmbG9hdCYpOwogICAgaXN0cmVhbSYg b3BlcmF0b3I+Pihkb3VibGUmKTsKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4obG9uZyBkb3VibGUm KTsKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oIF9fbWFuaXAgZnVuYykgeygqZnVuYykoKnRoaXMp OyByZXR1cm4gKnRoaXM7fQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihfX2ltYW5pcCBmdW5jKSB7 IHJldHVybiAoKmZ1bmMpKCp0aGlzKTsgfQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihzdHJlYW1i dWYqKTsKfTsKCmNsYXNzIGlvc3RyZWFtIDogcHVibGljIGlzdHJlYW0sIHB1YmxpYyBvc3RyZWFt CnsKICBwdWJsaWM6CiAgICBpb3N0cmVhbSgpIHsgfQogICAgaW9zdHJlYW0oc3RyZWFtYnVmKiBz Yiwgb3N0cmVhbSp0aWVkPSBfX251bGwgKTsKfTsKCmNsYXNzIF9JT19pc3RyZWFtX3dpdGhhc3Np Z24gOiBwdWJsaWMgaXN0cmVhbSB7CnB1YmxpYzoKICBfSU9faXN0cmVhbV93aXRoYXNzaWduJiBv cGVyYXRvcj0oaXN0cmVhbSYpOwogIF9JT19pc3RyZWFtX3dpdGhhc3NpZ24mIG9wZXJhdG9yPShf SU9faXN0cmVhbV93aXRoYXNzaWduJiByaHMpCiAgICB7IHJldHVybiBvcGVyYXRvcj0gKHN0YXRp Y19jYXN0PGlzdHJlYW0mPiAocmhzKSk7IH0KfTsKCmNsYXNzIF9JT19vc3RyZWFtX3dpdGhhc3Np Z24gOiBwdWJsaWMgb3N0cmVhbSB7CnB1YmxpYzoKICBfSU9fb3N0cmVhbV93aXRoYXNzaWduJiBv cGVyYXRvcj0ob3N0cmVhbSYpOwogIF9JT19vc3RyZWFtX3dpdGhhc3NpZ24mIG9wZXJhdG9yPShf SU9fb3N0cmVhbV93aXRoYXNzaWduJiByaHMpCiAgICB7IHJldHVybiBvcGVyYXRvcj0gKHN0YXRp Y19jYXN0PG9zdHJlYW0mPiAocmhzKSk7IH0KfTsKCmV4dGVybiBfSU9faXN0cmVhbV93aXRoYXNz aWduIGNpbjsKIApleHRlcm4gX0lPX29zdHJlYW1fd2l0aGFzc2lnbiBjb3V0LCBjZXJyOwoKZXh0 ZXJuIF9JT19vc3RyZWFtX3dpdGhhc3NpZ24gY2xvZwoKCgo7CgpleHRlcm4gaXN0cmVhbSYgbG9j ayhpc3RyZWFtJiBpbnMpOwpleHRlcm4gaXN0cmVhbSYgdW5sb2NrKGlzdHJlYW0mIGlucyk7CmV4 dGVybiBvc3RyZWFtJiBsb2NrKG9zdHJlYW0mIG91dHMpOwpleHRlcm4gb3N0cmVhbSYgdW5sb2Nr KG9zdHJlYW0mIG91dHMpOwoKc3RydWN0IElvc3RyZWFtX2luaXQgeyB9IDsgICAKCmlubGluZSBp b3MmIGRlYyhpb3MmIGkpCnsgaS5zZXRmKGlvczo6ZGVjLCBpb3M6OmRlY3xpb3M6OmhleHxpb3M6 Om9jdCk7IHJldHVybiBpOyB9CmlubGluZSBpb3MmIGhleChpb3MmIGkpCnsgaS5zZXRmKGlvczo6 aGV4LCBpb3M6OmRlY3xpb3M6OmhleHxpb3M6Om9jdCk7IHJldHVybiBpOyB9CmlubGluZSBpb3Mm IG9jdChpb3MmIGkpCnsgaS5zZXRmKGlvczo6b2N0LCBpb3M6OmRlY3xpb3M6OmhleHxpb3M6Om9j dCk7IHJldHVybiBpOyB9Cn0gIAoKCiMgMTQgInBwMl80X3RvYmVua2luLmNwcCIgMgoKIyAxICIv dXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKIAoK CgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRl Zi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1 LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9n Y2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoK CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvaTM4 Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCgojIDE4OCAiL3Vzci9s aWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoK CgoKIAoKCiMgMjY5ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUv c3RkZGVmLmgiIDMKCgoKCiMgMjgzICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40 L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2 LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoK CgoKCiMgMzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKZXh0ZXJuICJDIiB7IAoKCgoK IyA5MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKIAp0eXBlZGVmIHN0cnVjdAogIHsKICAg IGludCBxdW90OwkJCSAKICAgIGludCByZW07CQkJIAogIH0gZGl2X3Q7CgogCgp0eXBlZGVmIHN0 cnVjdAogIHsKICAgIGxvbmcgaW50IHF1b3Q7CQkgCiAgICBsb25nIGludCByZW07CQkgCiAgfSBs ZGl2X3Q7CgoKCiMgMTE4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKCgoKIAoKCgogCgoKCgoK IAoKZXh0ZXJuIHNpemVfdCBfX2N0eXBlX2dldF9tYl9jdXJfbWF4ICh2b2lkKSB0aHJvdyAoKSA7 CgoKIApleHRlcm4gZG91YmxlIGF0b2YgKF9fY29uc3QgY2hhciAqX19ucHRyKSB0aHJvdyAoKSAg IDsKIApleHRlcm4gaW50IGF0b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKSB0aHJvdyAoKSAgIDsK IApleHRlcm4gbG9uZyBpbnQgYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpICAg OwoKCiAKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBj aGFyICpfX25wdHIpCiAgICAgdGhyb3cgKCkgICA7CgoKIApleHRlcm4gZG91YmxlIHN0cnRvZCAo X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkgICAgICBjaGFyICoqX19yZXN0cmlj dCBfX2VuZHB0cikgdGhyb3cgKCkgOwoKCgoKCgoKCgoKIApleHRlcm4gbG9uZyBpbnQgc3RydG9s IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQljaGFyICoqX19yZXN0cmljdCBf X2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCkgOwogCmV4dGVybiB1bnNpZ25lZCBsb25nIGlu dCBzdHJ0b3VsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJICBjaGFyICoq X19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAoKSA7CgoKIApfX2V4 dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvcSAoX19jb25zdCBjaGFyICpfX3Jl c3RyaWN0IF9fbnB0ciwKCQkJICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9f YmFzZSkgdGhyb3cgKCkgOwogCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9u ZyBpbnQgc3RydG91cSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSAgICAg ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAoKSA7 CgoKCiAKCiAKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xsIChfX2Nv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkgICAgICBjaGFyICoqX19yZXN0cmljdCBf X2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCkgOwogCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVu c2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91bGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf X25wdHIsCgkJCQkJY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAg dGhyb3cgKCkgOwoKCgojIDI0NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKCiAKCgpleHRl cm4gZG91YmxlIF9fc3RydG9kX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u cHRyLAoJCQkJIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19ncm91cCkKICAgICB0 aHJvdyAoKSA7CmV4dGVybiBmbG9hdCBfX3N0cnRvZl9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fbnB0ciwKCQkJCWNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19n cm91cCkKICAgICB0aHJvdyAoKSA7CmV4dGVybiBsb25nIGRvdWJsZSBfX3N0cnRvbGRfaW50ZXJu YWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCQkgICAgICAgY2hhciAqKl9f cmVzdHJpY3QgX19lbmRwdHIsCgkJCQkgICAgICAgaW50IF9fZ3JvdXApIHRocm93ICgpIDsKCmV4 dGVybiBsb25nIGludCBfX3N0cnRvbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fbnB0ciwKCQkJCSAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJICAgaW50IF9f YmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgpIDsKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50 IF9fc3RydG91bF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJ CQkgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJCSAgICAgaW50IF9fYmFzZSwg aW50IF9fZ3JvdXApIHRocm93ICgpIDsKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9u ZyBpbnQgX19zdHJ0b2xsX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy LAoJCQkJCSBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCQkgaW50IF9fYmFzZSwgaW50 IF9fZ3JvdXApIHRocm93ICgpIDsKCgoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9u ZyBsb25nIGludCBfX3N0cnRvdWxsX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKgoJCQkJCQkgICBf X3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkJICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkJ CQkJCSAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKQogICAgIHRocm93ICgpIDsKCgoKCiMgMzc3 ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKCgoKCiAKCgpleHRlcm4gY2hhciAqbDY0YSAobG9u ZyBpbnQgX19uKSB0aHJvdyAoKSA7CgogCmV4dGVybiBsb25nIGludCBhNjRsIChfX2NvbnN0IGNo YXIgKl9fcykgdGhyb3cgKCkgICA7CgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEg MwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCmV4dGVybiAiQyIgeyAKCgoKCgp0eXBlZGVm IF9fdV9jaGFyIHVfY2hhcjsKdHlwZWRlZiBfX3Vfc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiBfX3Vf aW50IHVfaW50Owp0eXBlZGVmIF9fdV9sb25nIHVfbG9uZzsKdHlwZWRlZiBfX3F1YWRfdCBxdWFk X3Q7CnR5cGVkZWYgX191X3F1YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2ZzaWRfdCBmc2lkX3Q7 CgoKCgp0eXBlZGVmIF9fbG9mZl90IGxvZmZfdDsKCgoKdHlwZWRlZiBfX2lub190IGlub190OwoK CgoKCgoKCgoKCnR5cGVkZWYgX19kZXZfdCBkZXZfdDsKCgoKCnR5cGVkZWYgX19naWRfdCBnaWRf dDsKCgoKCnR5cGVkZWYgX19tb2RlX3QgbW9kZV90OwoKCgoKdHlwZWRlZiBfX25saW5rX3Qgbmxp bmtfdDsKCgoKCnR5cGVkZWYgX191aWRfdCB1aWRfdDsKCgoKCgp0eXBlZGVmIF9fb2ZmX3Qgb2Zm X3Q7CgoKCgoKCgoKCgoKdHlwZWRlZiBfX3BpZF90IHBpZF90OwoKCgoKdHlwZWRlZiBfX2lkX3Qg aWRfdDsKCgoKCnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7CgoKCgoKdHlwZWRlZiBfX2RhZGRy X3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJfdDsKCgoKCgp0eXBlZGVmIF9fa2V5 X3Qga2V5X3Q7CgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiAKCgoKCgoK CgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKIyA1MSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoK CiMgNjEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKCgoKCgogCnR5cGVkZWYgX190aW1lX3Qg dGltZV90OwoKCgoKCgoKCgoKIAp0eXBlZGVmIF9fY2xvY2tpZF90IGNsb2NraWRfdDsKCgoKCgoK CgoKCiAKdHlwZWRlZiBfX3RpbWVyX3QgdGltZXJfdDsKCgoKCgojIDExMiAiL3Vzci9pbmNsdWRl L3RpbWUuaCIgMwoKCgoKIyAzNjQgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyAxMzIgIi91 c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKIyAxNDMgIi91c3IvaW5jbHVkZS9zeXMvdHlw ZXMuaCIgMwoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVk ZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGlu dXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vz ci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoK CgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIvdXNyL2xpYi9nY2Mt bGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODgg Ii91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoK CgoKCiAKCgoKCiAKCiMgMjcxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2lu Y2x1ZGUvc3RkZGVmLmgiIDMKCgojIDI4MyAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIu OTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIv aTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoK CgoKCgoKCgojIDE0NiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKIAp0eXBlZGVm IHVuc2lnbmVkIGxvbmcgaW50IHVsb25nOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1c2hv cnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7CgoKIAoKIyAxODAgIi91c3IvaW5jbHVkZS9z eXMvdHlwZXMuaCIgMwoKCiAKCgoKCgoKCnR5cGVkZWYgaW50IGludDhfdCBfX2F0dHJpYnV0ZV9f ICgoX19tb2RlX18gKCAgX19RSV9fICkpKSA7CnR5cGVkZWYgaW50IGludDE2X3QgX19hdHRyaWJ1 dGVfXyAoKF9fbW9kZV9fICggIF9fSElfXyApKSkgOwp0eXBlZGVmIGludCBpbnQzMl90IF9fYXR0 cmlidXRlX18gKChfX21vZGVfXyAoICBfX1NJX18gKSkpIDsKdHlwZWRlZiBpbnQgaW50NjRfdCBf X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19ESV9fICkpKSA7CgoKdHlwZWRlZiB1bnNpZ25l ZCBpbnQgdV9pbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fUUlfXyApKSkgOwp0 eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICgg IF9fSElfXyApKSkgOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDMyX3QgX19hdHRyaWJ1dGVf XyAoKF9fbW9kZV9fICggIF9fU0lfXyApKSkgOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDY0 X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fRElfXyApKSkgOwoKdHlwZWRlZiBpbnQg cmVnaXN0ZXJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fd29yZF9fKSkpOwoKCiAKCgoK CgoKIAojIDEgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCiAKCgoKCgoKCgoKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEgMwog CgoKCgoKCiMgMzcgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAzCgoKIAoKCgoKCgoKCgoKCgoK CgoKCgoKIyAyMTIgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKIAojIDEgIi91c3Iv aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoK CiAKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zZWxlY3QuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCiMgMzYgIi91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAzCgoKCgoKCgoKCgoK CiMgNTYgIi91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAzCgojIDcyICIvdXNyL2luY2x1ZGUv Yml0cy9zZWxlY3QuaCIgMwoKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoK IAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoK CgoKCgp0eXBlZGVmIGludCBfX3NpZ19hdG9taWNfdDsKCiAKCgp0eXBlZGVmIHN0cnVjdAogIHsK ICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdmFsWygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVk IGxvbmcgaW50KSkpIF07CiAgfSBfX3NpZ3NldF90OwoKCgoKIAoKCgoKCiMgMTI1ICIvdXNyL2lu Y2x1ZGUvYml0cy9zaWdzZXQuaCIgMwoKIyAzNCAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIg MiAzCgoKCgp0eXBlZGVmIF9fc2lnc2V0X3Qgc2lnc2V0X3Q7CgoKIAoKCiMgMSAiL3Vzci9pbmNs dWRlL3RpbWUuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKIyA1MSAi L3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCiMgNjEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoK IyA3MiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgojIDg0ICIvdXNyL2luY2x1ZGUvdGltZS5o IiAzCgoKCiMgOTYgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKCgoKCgogCgpzdHJ1Y3QgdGlt ZXNwZWMKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7CQkgCiAgICBsb25nIGludCB0dl9uc2VjOwkJ IAogIH07CgoKCgoKIyAzNjQgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyA0NCAiL3Vzci9p bmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgi IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIyA1NyAiL3Vzci9pbmNsdWRlL2JpdHMvdGlt ZS5oIiAzCgoKCgoKCgoKIAoKc3RydWN0IHRpbWV2YWwKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7 CQkgCiAgICBfX3N1c2Vjb25kc190IHR2X3VzZWM7CSAKICB9OwoKCiMgNDYgIi91c3IvaW5jbHVk ZS9zeXMvc2VsZWN0LmgiIDIgMwoKCgp0eXBlZGVmIF9fc3VzZWNvbmRzX3Qgc3VzZWNvbmRzX3Q7 CgoKCgogCnR5cGVkZWYgbG9uZyBpbnQgX19mZF9tYXNrOwoKIAoKCgoKIAp0eXBlZGVmIHN0cnVj dAogIHsKICAgICAKCgoKCgogICAgX19mZF9tYXNrIF9fZmRzX2JpdHNbMTAyNCAgLyAoOCAqIHNp emVvZiAoX19mZF9tYXNrKSkgXTsKCgogIH0gZmRfc2V0OwoKIAoKCgogCnR5cGVkZWYgX19mZF9t YXNrIGZkX21hc2s7CgogCgoKCgogCgoKCgoKCmV4dGVybiAiQyIgeyAKCiAKCgoKCmV4dGVybiBp bnQgc2VsZWN0IChpbnQgX19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAoJCSAg IGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAoJCSAgIGZkX3NldCAqX19yZXN0cmljdCBf X2V4Y2VwdGZkcywKCQkgICBzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCBfX3RpbWVvdXQpIHRo cm93ICgpIDsKCiMgMTE2ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzCgoKfSAKCgojIDIx NSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgogCiMgMSAiL3Vzci9pbmNsdWRlL3N5 cy9zeXNtYWNyb3MuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiMgNDcg Ii91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDMKCgoKIyAyMTggIi91c3IvaW5jbHVkZS9z eXMvdHlwZXMuaCIgMiAzCgoKCgoKCgoKCiAKCgp0eXBlZGVmIF9fYmxrY250X3QgYmxrY250X3Q7 CSAgCgoKCnR5cGVkZWYgX19mc2Jsa2NudF90IGZzYmxrY250X3Q7ICAKCgoKdHlwZWRlZiBfX2Zz ZmlsY250X3QgZnNmaWxjbnRfdDsgIAoKCiMgMjU0ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgi IDMKCgoKCgoKCgp9IAoKCiMgMzkwICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCiAKCgoK IApleHRlcm4gbG9uZyBpbnQgcmFuZG9tICh2b2lkKSB0aHJvdyAoKSA7CgogCmV4dGVybiB2b2lk IHNyYW5kb20gKHVuc2lnbmVkIGludCBfX3NlZWQpIHRocm93ICgpIDsKCiAKCgoKZXh0ZXJuIGNo YXIgKmluaXRzdGF0ZSAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19zdGF0ZWJ1ZiwKCQkJ c2l6ZV90IF9fc3RhdGVsZW4pIHRocm93ICgpIDsKCiAKCmV4dGVybiBjaGFyICpzZXRzdGF0ZSAo Y2hhciAqX19zdGF0ZWJ1ZikgdGhyb3cgKCkgOwoKCgogCgoKCnN0cnVjdCByYW5kb21fZGF0YQog IHsKICAgIGludDMyX3QgKmZwdHI7CQkgCiAgICBpbnQzMl90ICpycHRyOwkJIAogICAgaW50MzJf dCAqc3RhdGU7CQkgCiAgICBpbnQgcmFuZF90eXBlOwkJIAogICAgaW50IHJhbmRfZGVnOwkJIAog ICAgaW50IHJhbmRfc2VwOwkJIAogICAgaW50MzJfdCAqZW5kX3B0cjsJCSAKICB9OwoKZXh0ZXJu IGludCByYW5kb21fciAoc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmLAoJCSAg ICAgaW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCkgOwoKZXh0ZXJuIGludCBz cmFuZG9tX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYp IHRocm93ICgpIDsKCmV4dGVybiBpbnQgaW5pdHN0YXRlX3IgKHVuc2lnbmVkIGludCBfX3NlZWQs IGNoYXIgKl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKCQkJc2l6ZV90IF9fc3RhdGVsZW4sCgkJCXN0 cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgdGhyb3cgKCkgOwoKZXh0ZXJuIGlu dCBzZXRzdGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCgkJICAgICAgIHN0cnVj dCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgdGhyb3cgKCkgOwoKCgoKIApleHRlcm4g aW50IHJhbmQgKHZvaWQpIHRocm93ICgpIDsKIApleHRlcm4gdm9pZCBzcmFuZCAodW5zaWduZWQg aW50IF9fc2VlZCkgdGhyb3cgKCkgOwoKCiAKZXh0ZXJuIGludCByYW5kX3IgKHVuc2lnbmVkIGlu dCAqX19zZWVkKSB0aHJvdyAoKSA7CgoKCgogCgogCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAodm9p ZCkgdGhyb3cgKCkgOwpleHRlcm4gZG91YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBf X3hzdWJpWzNdKSB0aHJvdyAoKSA7CgogCmV4dGVybiBsb25nIGludCBscmFuZDQ4ICh2b2lkKSB0 aHJvdyAoKSA7CmV4dGVybiBsb25nIGludCBucmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194 c3ViaVszXSkgdGhyb3cgKCkgOwoKIApleHRlcm4gbG9uZyBpbnQgbXJhbmQ0OCAodm9pZCkgdGhy b3cgKCkgOwpleHRlcm4gbG9uZyBpbnQganJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1 YmlbM10pIHRocm93ICgpIDsKCiAKZXh0ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQgX19zZWVk dmFsKSB0aHJvdyAoKSA7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAodW5zaWdu ZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSkgdGhyb3cgKCkgOwpleHRlcm4gdm9pZCBsY29uZzQ4 ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSkgdGhyb3cgKCkgOwoKCiAKCgpzdHJ1Y3Qg ZHJhbmQ0OF9kYXRhCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IF9feFszXTsJIAogICAgdW5z aWduZWQgc2hvcnQgaW50IF9fb2xkX3hbM107ICAKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX2M7 CSAKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX2luaXQ7CSAKICAgIHVuc2lnbmVkIGxvbmcgbG9u ZyBpbnQgX19hOwkgCiAgfTsKCiAKZXh0ZXJuIGludCBkcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4 X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCgkJICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9f cmVzdWx0KSB0aHJvdyAoKSA7CmV4dGVybiBpbnQgZXJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBp bnQgX194c3ViaVszXSwKCQkgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9f YnVmZmVyLAoJCSAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCkgOwoK IApleHRlcm4gaW50IGxyYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBf X2J1ZmZlciwKCQkgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCkg OwpleHRlcm4gaW50IG5yYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCgkJ ICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKCQkgICAgICBs b25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCkgOwoKIApleHRlcm4gaW50IG1y YW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKCQkgICAg ICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCkgOwpleHRlcm4gaW50IGpy YW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCgkJICAgICAgc3RydWN0IGRy YW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKCQkgICAgICBsb25nIGludCAqX19yZXN0 cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCkgOwoKIApleHRlcm4gaW50IHNyYW5kNDhfciAobG9uZyBp bnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikKICAgICB0aHJvdyAo KSA7CgpleHRlcm4gaW50IHNlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNd LAoJCSAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpIHRocm93ICgpIDsKCmV4dGVy biBpbnQgbGNvbmc0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSwKCQkgICAgICBz dHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgdGhyb3cgKCkgOwoKCgoKCgoKIApleHRlcm4g dm9pZCAqbWFsbG9jIChzaXplX3QgX19zaXplKSB0aHJvdyAoKSAgIDsKIApleHRlcm4gdm9pZCAq Y2FsbG9jIChzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSkKICAgICB0aHJvdyAoKSAgIDsK CgoKIAoKZXh0ZXJuIHZvaWQgKnJlYWxsb2MgKHZvaWQgKl9fcHRyLCBzaXplX3QgX19zaXplKSB0 aHJvdyAoKSAgIDsKIApleHRlcm4gdm9pZCBmcmVlICh2b2lkICpfX3B0cikgdGhyb3cgKCkgOwoK CiAKZXh0ZXJuIHZvaWQgY2ZyZWUgKHZvaWQgKl9fcHRyKSB0aHJvdyAoKSA7CgoKCiMgMSAiL3Vz ci9pbmNsdWRlL2FsbG9jYS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vz ci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoK CgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9z dGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL2kzODYt bGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoK CgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1 LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9p Mzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoKIyAyNzEg Ii91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoK CiMgMjgzICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVm LmgiIDMKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9p bmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMjUgIi91c3Iv aW5jbHVkZS9hbGxvY2EuaCIgMiAzCgoKZXh0ZXJuICJDIiB7IAoKIAoKCiAKZXh0ZXJuIHZvaWQg KmFsbG9jYSAoc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCkgOwoKCgoKCn0gCgoKIyA1NDYgIi91c3Iv aW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgogCmV4dGVybiB2b2lkICp2YWxsb2MgKHNpemVfdCBf X3NpemUpIHRocm93ICgpICAgOwoKCgoKCgoKCiAKZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpIHRo cm93ICgpICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKIApleHRlcm4gaW50IGF0 ZXhpdCAodm9pZCAoKl9fZnVuYykgKHZvaWQpKSB0aHJvdyAoKSA7CgoKIAoKZXh0ZXJuIGludCBv bl9leGl0ICh2b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2b2lkICpfX2FyZyksIHZvaWQg Kl9fYXJnKQogICAgIHRocm93ICgpIDsKCgogCgoKZXh0ZXJuIHZvaWQgZXhpdCAoaW50IF9fc3Rh dHVzKSB0aHJvdyAoKSAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCgoKCiAK ZXh0ZXJuIGNoYXIgKmdldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIHRocm93ICgpIDsKCiAK CmV4dGVybiBjaGFyICpfX3NlY3VyZV9nZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lKSB0aHJv dyAoKSA7CgoKIAogCgpleHRlcm4gaW50IHB1dGVudiAoY2hhciAqX19zdHJpbmcpIHRocm93ICgp IDsKCgoKIAoKZXh0ZXJuIGludCBzZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lLCBfX2NvbnN0 IGNoYXIgKl9fdmFsdWUsIGludCBfX3JlcGxhY2UpCiAgICAgdGhyb3cgKCkgOwoKIApleHRlcm4g aW50IHVuc2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCkgOwoKCgogCgoKZXh0 ZXJuIGludCBjbGVhcmVudiAodm9pZCkgdGhyb3cgKCkgOwoKCgoKIAoKCgpleHRlcm4gY2hhciAq bWt0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSB0aHJvdyAoKSA7CgogCgoKCgoKZXh0ZXJuIGludCBt a3N0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSB0aHJvdyAoKSA7CgoKCgoKCgoKCgoKCgogCgoKCgpl eHRlcm4gY2hhciAqbWtkdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgdGhyb3cgKCkgOwoKCgogCmV4 dGVybiBpbnQgc3lzdGVtIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCkgdGhyb3cgKCkgOwoKCgoK CgoKCgoKIAoKCgoKCmV4dGVybiBjaGFyICpyZWFscGF0aCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fbmFtZSwKCQkgICAgICAgY2hhciAqX19yZXN0cmljdCBfX3Jlc29sdmVkKSB0aHJvdyAo KSA7CgoKCiAKCgp0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpIChfX2NvbnN0IHZvaWQgKiwg X19jb25zdCB2b2lkICopOwoKCgoKCgogCgpleHRlcm4gdm9pZCAqYnNlYXJjaCAoX19jb25zdCB2 b2lkICpfX2tleSwgX19jb25zdCB2b2lkICpfX2Jhc2UsCgkJICAgICAgc2l6ZV90IF9fbm1lbWIs IHNpemVfdCBfX3NpemUsIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKIAoKZXh0ZXJuIHZvaWQg cXNvcnQgKHZvaWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCgkJICAg X19jb21wYXJfZm5fdCBfX2NvbXBhcik7CgoKIApleHRlcm4gaW50IGFicyAoaW50IF9feCkgdGhy b3cgKCkgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxvbmcgaW50IGxhYnMg KGxvbmcgaW50IF9feCkgdGhyb3cgKCkgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoK CgoKIAoKIApleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwgaW50IF9fZGVub20pCiAgICAg dGhyb3cgKCkgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxkaXZfdCBsZGl2 IChsb25nIGludCBfX251bWVyLCBsb25nIGludCBfX2Rlbm9tKQogICAgIHRocm93ICgpICBfX2F0 dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCgoKIAoKCiAKCgpleHRlcm4gY2hhciAqZWN2 dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQs CgkJICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgdGhyb3cgKCkgOwoKIAoKCmV4dGVybiBjaGFy ICpmY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19k ZWNwdCwKCQkgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSB0aHJvdyAoKSA7CgogCgoKZXh0ZXJu IGNoYXIgKmdjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSB0 aHJvdyAoKSA7CgoKCiAKZXh0ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBp bnQgX19uZGlnaXQsCgkJICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJp Y3QgX19zaWduKSB0aHJvdyAoKSA7CmV4dGVybiBjaGFyICpxZmN2dCAobG9uZyBkb3VibGUgX192 YWx1ZSwgaW50IF9fbmRpZ2l0LAoJCSAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpf X3Jlc3RyaWN0IF9fc2lnbikgdGhyb3cgKCkgOwpleHRlcm4gY2hhciAqcWdjdnQgKGxvbmcgZG91 YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpIHRocm93ICgpIDsKCgogCgpl eHRlcm4gaW50IGVjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jl c3RyaWN0IF9fZGVjcHQsCgkJICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0 cmljdCBfX2J1ZiwKCQkgICBzaXplX3QgX19sZW4pIHRocm93ICgpIDsKZXh0ZXJuIGludCBmY3Z0 X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0 LAoJCSAgIGludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCgkJ ICAgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKSA7CgpleHRlcm4gaW50IHFlY3Z0X3IgKGxvbmcgZG91 YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKCQkgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQs IGludCAqX19yZXN0cmljdCBfX3NpZ24sCgkJICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNp emVfdCBfX2xlbikgdGhyb3cgKCkgOwpleHRlcm4gaW50IHFmY3Z0X3IgKGxvbmcgZG91YmxlIF9f dmFsdWUsIGludCBfX25kaWdpdCwKCQkgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAq X19yZXN0cmljdCBfX3NpZ24sCgkJICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBf X2xlbikgdGhyb3cgKCkgOwoKCgoKIAoKZXh0ZXJuIGludCBtYmxlbiAoX19jb25zdCBjaGFyICpf X3MsIHNpemVfdCBfX24pIHRocm93ICgpIDsKIAoKZXh0ZXJuIGludCBtYnRvd2MgKHdjaGFyX3Qg Kl9fcmVzdHJpY3QgX19wd2MsCgkJICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6 ZV90IF9fbikgdGhyb3cgKCkgOwogCgpleHRlcm4gaW50IHdjdG9tYiAoY2hhciAqX19zLCB3Y2hh cl90IF9fd2NoYXIpIHRocm93ICgpIDsKCgogCmV4dGVybiBzaXplX3QgbWJzdG93Y3MgKHdjaGFy X3QgKl9fcmVzdHJpY3QgIF9fcHdjcywKCQkJX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywg c2l6ZV90IF9fbikgdGhyb3cgKCkgOwogCmV4dGVybiBzaXplX3Qgd2NzdG9tYnMgKGNoYXIgKl9f cmVzdHJpY3QgX19zLAoJCQlfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2NzLCBzaXpl X3QgX19uKQogICAgIHRocm93ICgpIDsKCgoKIAoKCgpleHRlcm4gaW50IHJwbWF0Y2ggKF9fY29u c3QgY2hhciAqX19yZXNwb25zZSkgdGhyb3cgKCkgOwoKCgojIDgxMSAiL3Vzci9pbmNsdWRlL3N0 ZGxpYi5oIiAzCgoKCgoKCgoKCiAKCgoKCgoKIyA4NDIgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg MwoKCiMgODUyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKCgoKIAoKCmV4dGVybiBpbnQgZ2V0 bG9hZGF2ZyAoZG91YmxlIF9fbG9hZGF2Z1tdLCBpbnQgX19uZWxlbSkgdGhyb3cgKCkgOwoKCgoK Cn0gCgoKIyAxNSAicHAyXzRfdG9iZW5raW4uY3BwIiAyCgojIDEgIi91c3IvaW5jbHVkZS9tYXRo LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgpleHRlcm4gIkMiIHsgCgogCgoj IDEgIi91c3IvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKIAoKIyA4MSAiL3Vzci9pbmNsdWRlL2JpdHMvaHVn ZV92YWwuaCIgMwoKIyAzMyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoKIAoKCgogCiMgMSAi L3Vzci9pbmNsdWRlL2JpdHMvbWF0aGRlZi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoj IDQxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoZGVmLmgiIDMKCiMgNDAgIi91c3IvaW5jbHVkZS9t YXRoLmgiIDIgMwoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRz L21hdGhjYWxscy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCiAKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGFjb3MgICAgICAgICAg KGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2Fj b3MgICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgICA7CiAKZXh0ZXJuICAgZG91 YmxlICAgICAgICAgIGFzaW4gICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgOyBl eHRlcm4gICBkb3VibGUgICAgICAgICBfX2FzaW4gICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0 aHJvdyAoKSAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGF0YW4gICAgICAgICAgKGRv dWJsZSAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2F0YW4g ICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgICA7CiAKZXh0ZXJuICAgZG91Ymxl ICAgICAgICAgIGF0YW4yICAgICAgICAgIChkb3VibGUgIF9feSwgZG91YmxlICBfX3gpICAgIHRo cm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYXRhbjIgICAgICAgICAgKGRvdWJs ZSAgX195LCBkb3VibGUgIF9feCkgICAgdGhyb3cgKCkgICAgOwoKIApleHRlcm4gICBkb3VibGUg ICAgICAgICAgY29zICAgICAgICAgIChkb3VibGUgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJu ICAgZG91YmxlICAgICAgICAgX19jb3MgICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAo KSAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHNpbiAgICAgICAgICAoZG91YmxlICBf X3gpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fc2luICAgICAgICAg IChkb3VibGUgIF9feCkgICAgdGhyb3cgKCkgICAgOwogCmV4dGVybiAgIGRvdWJsZSAgICAgICAg ICB0YW4gICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3Vi bGUgICAgICAgICBfX3RhbiAgICAgICAgICAoZG91YmxlICBfX3gpICAgIHRocm93ICgpICAgIDsK CgoKCgoKCiAKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGNvc2ggICAgICAgICAgKGRvdWJs ZSAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2Nvc2ggICAg ICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAg ICAgICAgIHNpbmggICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4g ICBkb3VibGUgICAgICAgICBfX3NpbmggICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAo KSAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHRhbmggICAgICAgICAgKGRvdWJsZSAg X194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3RhbmggICAgICAg ICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgICA7CgoKIApleHRlcm4gICBkb3VibGUgICAg ICAgICAgYWNvc2ggICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4g ICBkb3VibGUgICAgICAgICBfX2Fjb3NoICAgICAgICAgIChkb3VibGUgIF9feCkgICAgdGhyb3cg KCkgICAgOwogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBhc2luaCAgICAgICAgICAoZG91Ymxl ICBfX3gpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYXNpbmggICAg ICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAg ICAgICAgIGF0YW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJu ICAgZG91YmxlICAgICAgICAgX19hdGFuaCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIHRocm93 ICgpICAgIDsKCgogCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBleHAgICAgICAgICAgKGRv dWJsZSAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2V4cCAg ICAgICAgICAoZG91YmxlICBfX3gpICAgIHRocm93ICgpICAgIDsKCgoKCgoKCgogCmV4dGVybiAg IGRvdWJsZSAgICAgICAgICBmcmV4cCAgICAgICAgICAoZG91YmxlICBfX3gsIGludCAqX19leHBv bmVudCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19mcmV4cCAgICAg ICAgICAoZG91YmxlICBfX3gsIGludCAqX19leHBvbmVudCkgICAgdGhyb3cgKCkgICAgOwoKIApl eHRlcm4gICBkb3VibGUgICAgICAgICAgbGRleHAgICAgICAgICAgKGRvdWJsZSAgX194LCBpbnQg X19leHBvbmVudCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19sZGV4 cCAgICAgICAgICAoZG91YmxlICBfX3gsIGludCBfX2V4cG9uZW50KSAgICB0aHJvdyAoKSAgICA7 CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBsb2cgICAgICAgICAgKGRvdWJsZSAgX194KSAg ICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2xvZyAgICAgICAgICAoZG91 YmxlICBfX3gpICAgIHRocm93ICgpICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGxv ZzEwICAgICAgICAgIChkb3VibGUgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZG91Ymxl ICAgICAgICAgX19sb2cxMCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIHRocm93ICgpICAgIDsK CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIG1vZGYgICAgICAgICAgKGRvdWJsZSAgX194LCBk b3VibGUgICpfX2lwdHIpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9f bW9kZiAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgKl9faXB0cikgICAgdGhyb3cgKCkg ICAgOwoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGV4cG0xICAgICAgICAgIChkb3VibGUg IF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19leHBtMSAgICAg ICAgICAoZG91YmxlICBfX3gpICAgIHRocm93ICgpICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAg ICAgICAgIGxvZzFwICAgICAgICAgIChkb3VibGUgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJu ICAgZG91YmxlICAgICAgICAgX19sb2cxcCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIHRocm93 ICgpICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGxvZ2IgICAgICAgICAgKGRvdWJs ZSAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2xvZ2IgICAg ICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgICA7CgoKCgoKCgoKCgoKIAoKIApleHRl cm4gICBkb3VibGUgICAgICAgICAgcG93ICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBf X3kpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fcG93ICAgICAgICAg IChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgIHRocm93ICgpICAgIDsKCiAKZXh0ZXJuICAg ZG91YmxlICAgICAgICAgIHNxcnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAg OyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3NxcnQgICAgICAgICAgKGRvdWJsZSAgX194KSAg ICB0aHJvdyAoKSAgICA7CgoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgaHlwb3QgICAgICAg ICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZG91 YmxlICAgICAgICAgX19oeXBvdCAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195KSAg ICB0aHJvdyAoKSAgICA7CgoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGNicnQgICAgICAg ICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBf X2NicnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgICA7CgoKCiAKCiAKZXh0 ZXJuICAgZG91YmxlICAgICAgICAgIGNlaWwgICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJv dyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2NlaWwgICAgICAgICAgKGRvdWJsZSAg X194KSAgICB0aHJvdyAoKSAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBmYWJzICAg ICAgICAgIChkb3VibGUgIF9feCkgICAgdGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICggICAgKF9f Y29uc3RfXykgICk7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZmFicyAgICAgICAgICAoZG91 YmxlICBfX3gpICAgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICAp ICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBmbG9vciAgICAgICAgICAoZG91YmxlICBf X3gpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZmxvb3IgICAgICAg ICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAg ICAgICBmbW9kICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgIHRocm93ICgp ICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZm1vZCAgICAgICAgICAoZG91YmxlICBfX3gs IGRvdWJsZSAgX195KSAgICB0aHJvdyAoKSAgICA7CgoKIAoKZXh0ZXJuICBpbnQgICAgIF9faXNp bmYgICAgICAoZG91YmxlICBfX3ZhbHVlKSAgdGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICgoX19j b25zdF9fKSk7CgogCmV4dGVybiAgaW50ICAgICBfX2Zpbml0ZSAgICAgIChkb3VibGUgIF9fdmFs dWUpICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgogCgpleHRlcm4g IGludCAgICAgaXNpbmYgICAgICAoZG91YmxlICBfX3ZhbHVlKSAgdGhyb3cgKCkgICBfX2F0dHJp YnV0ZV9fICgoX19jb25zdF9fKSk7CgogCmV4dGVybiAgaW50ICAgICBmaW5pdGUgICAgICAoZG91 YmxlICBfX3ZhbHVlKSAgdGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7Cgog CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBkcmVtICAgICAgICAgIChkb3VibGUgIF9feCwgZG91 YmxlICBfX3kpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZHJlbSAg ICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195KSAgICB0aHJvdyAoKSAgICA7CgoKIApl eHRlcm4gICBkb3VibGUgICAgICAgICAgc2lnbmlmaWNhbmQgICAgICAgICAgKGRvdWJsZSAgX194 KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3NpZ25pZmljYW5kICAg ICAgICAgIChkb3VibGUgIF9feCkgICAgdGhyb3cgKCkgICAgOwoKCgogCmV4dGVybiAgIGRvdWJs ZSAgICAgICAgICBjb3B5c2lnbiAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195KSAg ICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAg ZG91YmxlICAgICAgICAgX19jb3B5c2lnbiAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAg X195KSAgICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoK CgoKCgoKCiAKZXh0ZXJuICBpbnQgICAgIF9faXNuYW4gICAgICAoZG91YmxlICBfX3ZhbHVlKSAg dGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKIApleHRlcm4gIGludCAg ICAgaXNuYW4gICAgICAoZG91YmxlICBfX3ZhbHVlKSAgdGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9f ICgoX19jb25zdF9fKSk7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBqMCAgICAgICAgICAo ZG91YmxlICkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19qMCAgICAg ICAgICAoZG91YmxlICkgICAgdGhyb3cgKCkgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAgICAg ajEgICAgICAgICAgKGRvdWJsZSApICAgIHRocm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAg ICAgIF9fajEgICAgICAgICAgKGRvdWJsZSApICAgIHRocm93ICgpICAgIDsKZXh0ZXJuICAgZG91 YmxlICAgICAgICAgIGpuICAgICAgICAgIChpbnQsIGRvdWJsZSApICAgIHRocm93ICgpICA7IGV4 dGVybiAgIGRvdWJsZSAgICAgICAgIF9fam4gICAgICAgICAgKGludCwgZG91YmxlICkgICAgdGhy b3cgKCkgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAgICAgeTAgICAgICAgICAgKGRvdWJsZSAp ICAgIHRocm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9feTAgICAgICAgICAgKGRv dWJsZSApICAgIHRocm93ICgpICAgIDsKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHkxICAgICAg ICAgIChkb3VibGUgKSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3kx ICAgICAgICAgIChkb3VibGUgKSAgICB0aHJvdyAoKSAgICA7CmV4dGVybiAgIGRvdWJsZSAgICAg ICAgICB5biAgICAgICAgICAoaW50LCBkb3VibGUgKSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBk b3VibGUgICAgICAgICBfX3luICAgICAgICAgIChpbnQsIGRvdWJsZSApICAgIHRocm93ICgpICAg IDsKCgoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGVyZiAgICAgICAgICAoZG91YmxlICkg ICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19lcmYgICAgICAgICAgKGRv dWJsZSApICAgIHRocm93ICgpICAgIDsKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGVyZmMgICAg ICAgICAgKGRvdWJsZSApICAgIHRocm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9f ZXJmYyAgICAgICAgICAoZG91YmxlICkgICAgdGhyb3cgKCkgICAgOwpleHRlcm4gICBkb3VibGUg ICAgICAgICAgbGdhbW1hICAgICAgICAgIChkb3VibGUgKSAgICB0aHJvdyAoKSAgOyBleHRlcm4g ICBkb3VibGUgICAgICAgICBfX2xnYW1tYSAgICAgICAgICAoZG91YmxlICkgICAgdGhyb3cgKCkg ICAgOwoKCgoKCgoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgZ2FtbWEgICAgICAgICAgKGRv dWJsZSApICAgIHRocm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZ2FtbWEgICAg ICAgICAgKGRvdWJsZSApICAgIHRocm93ICgpICAgIDsKCgoKIAoKCmV4dGVybiAgIGRvdWJsZSAg ICAgICAgICBsZ2FtbWFfciAgICAgICAgICAgICAgKGRvdWJsZSAsIGludCAqX19zaWduZ2FtcCkg ICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19sZ2FtbWFfciAgICAgICAg ICAgICAgKGRvdWJsZSAsIGludCAqX19zaWduZ2FtcCkgICAgdGhyb3cgKCkgICAgOwoKCgoKIAoK ZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHJpbnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0 aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3JpbnQgICAgICAgICAgKGRvdWJs ZSAgX194KSAgICB0aHJvdyAoKSAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBuZXh0 YWZ0ZXIgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgdGhyb3cgKCkgICBf X2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGRvdWJsZSAgICAgICAg IF9fbmV4dGFmdGVyICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgIHRocm93 ICgpICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgoKCgogCmV4dGVybiAg IGRvdWJsZSAgICAgICAgICByZW1haW5kZXIgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUg IF9feSkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19yZW1haW5kZXIg ICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgdGhyb3cgKCkgICAgOwoKCiAK ZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHNjYWxiICAgICAgICAgIChkb3VibGUgIF9feCwgZG91 YmxlICBfX24pICAgIHRocm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fc2NhbGIg ICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9fbikgICAgdGhyb3cgKCkgICAgOwoKCgog CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBzY2FsYm4gICAgICAgICAgKGRvdWJsZSAgX194LCBp bnQgX19uKSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3NjYWxibiAg ICAgICAgICAoZG91YmxlICBfX3gsIGludCBfX24pICAgIHRocm93ICgpICAgIDsKCgogCmV4dGVy biAgIGludCAgICAgICAgaWxvZ2IgICAgICAgIChkb3VibGUgIF9feCkgICB0aHJvdyAoKSAgOyBl eHRlcm4gICBpbnQgICAgICAgIF9faWxvZ2IgICAgICAgIChkb3VibGUgIF9feCkgICB0aHJvdyAo KSAgIDsKCgojIDMzMyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKCiMgNjMgIi91 c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKCgoKCgoKIAoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNs dWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBhY29zZiAg ICAgICAgIChmbG9hdCAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAg ICBfX2Fjb3NmICAgICAgICAgKGZsb2F0ICAgX194KSAgICB0aHJvdyAoKSAgICA7CiAKZXh0ZXJu ICAgZmxvYXQgICAgICAgICAgYXNpbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgp ICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19hc2luZiAgICAgICAgIChmbG9hdCAgIF9feCkg ICAgdGhyb3cgKCkgICAgOwogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGF0YW5mICAgICAgICAg KGZsb2F0ICAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fYXRh bmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICAgIDsKIApleHRlcm4gICBmbG9h dCAgICAgICAgICBhdGFuMmYgICAgICAgICAoZmxvYXQgICBfX3ksIGZsb2F0ICAgX194KSAgICB0 aHJvdyAoKSAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fYXRhbjJmICAgICAgICAgKGZsb2F0 ICAgX195LCBmbG9hdCAgIF9feCkgICAgdGhyb3cgKCkgICAgOwoKIApleHRlcm4gICBmbG9hdCAg ICAgICAgICBjb3NmICAgICAgICAgKGZsb2F0ICAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4g ICBmbG9hdCAgICAgICAgIF9fY29zZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgdGhyb3cgKCkg ICAgOwogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHNpbmYgICAgICAgICAoZmxvYXQgICBfX3gp ICAgIHRocm93ICgpICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19zaW5mICAgICAgICAgKGZs b2F0ICAgX194KSAgICB0aHJvdyAoKSAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgdGFu ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQgICAg ICAgICBfX3RhbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICAgIDsKCgoKCgoK CiAKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgY29zaGYgICAgICAgICAoZmxvYXQgICBfX3gp ICAgIHRocm93ICgpICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19jb3NoZiAgICAgICAgIChm bG9hdCAgIF9feCkgICAgdGhyb3cgKCkgICAgOwogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHNp bmhmICAgICAgICAgKGZsb2F0ICAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBmbG9hdCAg ICAgICAgIF9fc2luaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICAgIDsKIApl eHRlcm4gICBmbG9hdCAgICAgICAgICB0YW5oZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgdGhy b3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3RhbmhmICAgICAgICAgKGZsb2F0ICAg X194KSAgICB0aHJvdyAoKSAgICA7CgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBhY29zaGYg ICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGZsb2F0ICAgICAg ICAgX19hY29zaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICAgIDsKIApleHRl cm4gICBmbG9hdCAgICAgICAgICBhc2luaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93 ICgpICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19hc2luaGYgICAgICAgICAoZmxvYXQgICBf X3gpICAgIHRocm93ICgpICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBhdGFuaGYgICAg ICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAg X19hdGFuaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICAgIDsKCgogCgogCmV4 dGVybiAgIGZsb2F0ICAgICAgICAgIGV4cGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93 ICgpICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19leHBmICAgICAgICAgKGZsb2F0ICAgX194 KSAgICB0aHJvdyAoKSAgICA7CgoKCgoKCgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBmcmV4 cGYgICAgICAgICAoZmxvYXQgICBfX3gsIGludCAqX19leHBvbmVudCkgICAgdGhyb3cgKCkgIDsg ZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2ZyZXhwZiAgICAgICAgIChmbG9hdCAgIF9feCwgaW50 ICpfX2V4cG9uZW50KSAgICB0aHJvdyAoKSAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAg IGxkZXhwZiAgICAgICAgIChmbG9hdCAgIF9feCwgaW50IF9fZXhwb25lbnQpICAgIHRocm93ICgp ICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19sZGV4cGYgICAgICAgICAoZmxvYXQgICBfX3gs IGludCBfX2V4cG9uZW50KSAgICB0aHJvdyAoKSAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAg ICAgIGxvZ2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGZs b2F0ICAgICAgICAgX19sb2dmICAgICAgICAgKGZsb2F0ICAgX194KSAgICB0aHJvdyAoKSAgICA7 CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGxvZzEwZiAgICAgICAgIChmbG9hdCAgIF9feCkg ICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2xvZzEwZiAgICAgICAgIChm bG9hdCAgIF9feCkgICAgdGhyb3cgKCkgICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBt b2RmZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICAqX19pcHRyKSAgICB0aHJvdyAoKSAg OyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbW9kZmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZs b2F0ICAgKl9faXB0cikgICAgdGhyb3cgKCkgICAgOwoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAg ICAgZXhwbTFmICAgICAgICAgKGZsb2F0ICAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBm bG9hdCAgICAgICAgIF9fZXhwbTFmICAgICAgICAgKGZsb2F0ICAgX194KSAgICB0aHJvdyAoKSAg ICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGxvZzFwZiAgICAgICAgIChmbG9hdCAgIF9f eCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2xvZzFwZiAgICAgICAg IChmbG9hdCAgIF9feCkgICAgdGhyb3cgKCkgICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAg ICBsb2diZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZmxv YXQgICAgICAgICBfX2xvZ2JmICAgICAgICAgKGZsb2F0ICAgX194KSAgICB0aHJvdyAoKSAgICA7 CgoKCgoKCgoKCgoKIAoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBwb3dmICAgICAgICAgKGZs b2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQgICAg ICAgICBfX3Bvd2YgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICB0aHJvdyAo KSAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHNxcnRmICAgICAgICAgKGZsb2F0ICAg X194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fc3FydGYgICAgICAg ICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICAgIDsKCgogCmV4dGVybiAgIGZsb2F0ICAgICAg ICAgIGh5cG90ZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgIHRocm93ICgp ICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19oeXBvdGYgICAgICAgICAoZmxvYXQgICBfX3gs IGZsb2F0ICAgX195KSAgICB0aHJvdyAoKSAgICA7CgoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAg ICAgY2JydGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGZs b2F0ICAgICAgICAgX19jYnJ0ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgdGhyb3cgKCkgICAg OwoKCgogCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGNlaWxmICAgICAgICAgKGZsb2F0ICAg X194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fY2VpbGYgICAgICAg ICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAg ICAgZmFic2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICAgX19hdHRyaWJ1dGVf XyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZmFic2YgICAg ICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2Nv bnN0X18pICApICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGZsb29yZiAgICAgICAgIChm bG9hdCAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2Zsb29y ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgdGhyb3cgKCkgICAgOwoKIApleHRlcm4gICBmbG9h dCAgICAgICAgICBmbW9kZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgIHRo cm93ICgpICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19mbW9kZiAgICAgICAgIChmbG9hdCAg IF9feCwgZmxvYXQgICBfX3kpICAgIHRocm93ICgpICAgIDsKCgogCgpleHRlcm4gIGludCAgICBf X2lzaW5mZiAgICAgKGZsb2F0ICAgX192YWx1ZSkgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAo KF9fY29uc3RfXykpOwoKIApleHRlcm4gIGludCAgICBfX2Zpbml0ZWYgICAgIChmbG9hdCAgIF9f dmFsdWUpICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgogCgpleHRl cm4gIGludCAgICBpc2luZmYgICAgIChmbG9hdCAgIF9fdmFsdWUpICB0aHJvdyAoKSAgIF9fYXR0 cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuICBpbnQgICAgZmluaXRlZiAgICAgKGZs b2F0ICAgX192YWx1ZSkgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK IApleHRlcm4gICBmbG9hdCAgICAgICAgICBkcmVtZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxv YXQgICBfX3kpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19kcmVtZiAg ICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgIHRocm93ICgpICAgIDsKCgogCmV4 dGVybiAgIGZsb2F0ICAgICAgICAgIHNpZ25pZmljYW5kZiAgICAgICAgIChmbG9hdCAgIF9feCkg ICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3NpZ25pZmljYW5kZiAgICAg ICAgIChmbG9hdCAgIF9feCkgICAgdGhyb3cgKCkgICAgOwoKCgogCmV4dGVybiAgIGZsb2F0ICAg ICAgICAgIGNvcHlzaWduZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgIHRo cm93ICgpICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4gICBmbG9h dCAgICAgICAgIF9fY29weXNpZ25mICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkg ICAgdGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCgoKCgoK CgogCmV4dGVybiAgaW50ICAgIF9faXNuYW5mICAgICAoZmxvYXQgICBfX3ZhbHVlKSAgdGhyb3cg KCkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKIApleHRlcm4gIGludCAgICBpc25h bmYgICAgIChmbG9hdCAgIF9fdmFsdWUpICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChfX2Nv bnN0X18pKTsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgajBmICAgICAgICAgKGZsb2F0ICAp ICAgIHRocm93ICgpICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19qMGYgICAgICAgICAoZmxv YXQgICkgICAgdGhyb3cgKCkgICAgOwpleHRlcm4gICBmbG9hdCAgICAgICAgICBqMWYgICAgICAg ICAoZmxvYXQgICkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2oxZiAg ICAgICAgIChmbG9hdCAgKSAgICB0aHJvdyAoKSAgICA7CmV4dGVybiAgIGZsb2F0ICAgICAgICAg IGpuZiAgICAgICAgIChpbnQsIGZsb2F0ICApICAgIHRocm93ICgpICA7IGV4dGVybiAgIGZsb2F0 ICAgICAgICAgX19qbmYgICAgICAgICAoaW50LCBmbG9hdCAgKSAgICB0aHJvdyAoKSAgICA7CmV4 dGVybiAgIGZsb2F0ICAgICAgICAgIHkwZiAgICAgICAgIChmbG9hdCAgKSAgICB0aHJvdyAoKSAg OyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9feTBmICAgICAgICAgKGZsb2F0ICApICAgIHRocm93 ICgpICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgeTFmICAgICAgICAgKGZsb2F0ICApICAg IHRocm93ICgpICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX195MWYgICAgICAgICAoZmxvYXQg ICkgICAgdGhyb3cgKCkgICAgOwpleHRlcm4gICBmbG9hdCAgICAgICAgICB5bmYgICAgICAgICAo aW50LCBmbG9hdCAgKSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9feW5m ICAgICAgICAgKGludCwgZmxvYXQgICkgICAgdGhyb3cgKCkgICAgOwoKCgoKIApleHRlcm4gICBm bG9hdCAgICAgICAgICBlcmZmICAgICAgICAgKGZsb2F0ICApICAgIHRocm93ICgpICA7IGV4dGVy biAgIGZsb2F0ICAgICAgICAgX19lcmZmICAgICAgICAgKGZsb2F0ICApICAgIHRocm93ICgpICAg IDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgZXJmY2YgICAgICAgICAoZmxvYXQgICkgICAgdGhy b3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2VyZmNmICAgICAgICAgKGZsb2F0ICAp ICAgIHRocm93ICgpICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbGdhbW1hZiAgICAgICAg IChmbG9hdCAgKSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbGdhbW1h ZiAgICAgICAgIChmbG9hdCAgKSAgICB0aHJvdyAoKSAgICA7CgoKCgoKCgogCmV4dGVybiAgIGZs b2F0ICAgICAgICAgIGdhbW1hZiAgICAgICAgIChmbG9hdCAgKSAgICB0aHJvdyAoKSAgOyBleHRl cm4gICBmbG9hdCAgICAgICAgIF9fZ2FtbWFmICAgICAgICAgKGZsb2F0ICApICAgIHRocm93ICgp ICAgIDsKCgoKIAoKCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGxnYW1tYWZfciAgICAgICAgICAg IChmbG9hdCAgLCBpbnQgKl9fc2lnbmdhbXApICAgIHRocm93ICgpICA7IGV4dGVybiAgIGZsb2F0 ICAgICAgICAgX19sZ2FtbWFmX3IgICAgICAgICAgICAoZmxvYXQgICwgaW50ICpfX3NpZ25nYW1w KSAgICB0aHJvdyAoKSAgICA7CgoKCgogCgpleHRlcm4gICBmbG9hdCAgICAgICAgICByaW50ZiAg ICAgICAgIChmbG9hdCAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAg ICBfX3JpbnRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICB0aHJvdyAoKSAgICA7CgogCmV4dGVy biAgIGZsb2F0ICAgICAgICAgIG5leHRhZnRlcmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0 ICAgX195KSAgICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsg ZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX25leHRhZnRlcmYgICAgICAgICAoZmxvYXQgICBfX3gs IGZsb2F0ICAgX195KSAgICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9f KSAgKSAgOwoKCgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICByZW1haW5kZXJmICAgICAgICAg KGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQg ICAgICAgICBfX3JlbWFpbmRlcmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAg ICB0aHJvdyAoKSAgICA7CgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBzY2FsYmYgICAgICAg ICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX19uKSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBmbG9h dCAgICAgICAgIF9fc2NhbGJmICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9fbikgICAg dGhyb3cgKCkgICAgOwoKCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHNjYWxibmYgICAgICAg ICAoZmxvYXQgICBfX3gsIGludCBfX24pICAgIHRocm93ICgpICA7IGV4dGVybiAgIGZsb2F0ICAg ICAgICAgX19zY2FsYm5mICAgICAgICAgKGZsb2F0ICAgX194LCBpbnQgX19uKSAgICB0aHJvdyAo KSAgICA7CgoKIApleHRlcm4gICBpbnQgICAgICAgaWxvZ2JmICAgICAgIChmbG9hdCAgIF9feCkg ICB0aHJvdyAoKSAgOyBleHRlcm4gICBpbnQgICAgICAgX19pbG9nYmYgICAgICAgKGZsb2F0ICAg X194KSAgIHRocm93ICgpICAgOwoKCiMgMzMzICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMu aCIgMwoKIyA4MiAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoKCgoKIAoKCgoKCgoKCgoKCiMg MSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKIApleHRlcm4gICBsb25nIGRvdWJs ZSAgICAgICAgICBhY29zbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkg IDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2Fjb3NsICAgICAgICAgKGxvbmcgZG91 YmxlICAgX194KSAgICB0aHJvdyAoKSAgICA7CiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAg ICAgYXNpbmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIHRocm93ICgpICA7IGV4dGVy biAgIGxvbmcgZG91YmxlICAgICAgICAgX19hc2lubCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9f eCkgICAgdGhyb3cgKCkgICAgOwogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGF0YW5s ICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBsb25n IGRvdWJsZSAgICAgICAgIF9fYXRhbmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIHRo cm93ICgpICAgIDsKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBhdGFuMmwgICAgICAg ICAobG9uZyBkb3VibGUgICBfX3ksIGxvbmcgZG91YmxlICAgX194KSAgICB0aHJvdyAoKSAgOyBl eHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fYXRhbjJsICAgICAgICAgKGxvbmcgZG91Ymxl ICAgX195LCBsb25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkgICAgOwoKIApleHRlcm4gICBs b25nIGRvdWJsZSAgICAgICAgICBjb3NsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICB0 aHJvdyAoKSAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fY29zbCAgICAgICAgIChs b25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkgICAgOwogCmV4dGVybiAgIGxvbmcgZG91Ymxl ICAgICAgICAgIHNpbmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIHRocm93ICgpICA7 IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19zaW5sICAgICAgICAgKGxvbmcgZG91Ymxl ICAgX194KSAgICB0aHJvdyAoKSAgICA7CiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAg dGFubCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAg bG9uZyBkb3VibGUgICAgICAgICBfX3RhbmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAg IHRocm93ICgpICAgIDsKCgoKCgoKCiAKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAg Y29zaGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIHRocm93ICgpICA7IGV4dGVybiAg IGxvbmcgZG91YmxlICAgICAgICAgX19jb3NobCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkg ICAgdGhyb3cgKCkgICAgOwogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIHNpbmhsICAg ICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBsb25nIGRv dWJsZSAgICAgICAgIF9fc2luaGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIHRocm93 ICgpICAgIDsKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICB0YW5obCAgICAgICAgIChs b25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAg ICAgICBfX3RhbmhsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICB0aHJvdyAoKSAgICA7 CgoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBhY29zaGwgICAgICAgICAobG9uZyBk b3VibGUgICBfX3gpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAg X19hY29zaGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIHRocm93ICgpICAgIDsKIApl eHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBhc2luaGwgICAgICAgICAobG9uZyBkb3VibGUg ICBfX3gpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19hc2lu aGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIHRocm93ICgpICAgIDsKIApleHRlcm4g ICBsb25nIGRvdWJsZSAgICAgICAgICBhdGFuaGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gp ICAgIHRocm93ICgpICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19hdGFuaGwgICAg ICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIHRocm93ICgpICAgIDsKCgogCgogCmV4dGVybiAg IGxvbmcgZG91YmxlICAgICAgICAgIGV4cGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAg IHRocm93ICgpICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19leHBsICAgICAgICAg KGxvbmcgZG91YmxlICAgX194KSAgICB0aHJvdyAoKSAgICA7CgoKCgoKCgoKIApleHRlcm4gICBs b25nIGRvdWJsZSAgICAgICAgICBmcmV4cGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGlu dCAqX19leHBvbmVudCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAg ICBfX2ZyZXhwbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgaW50ICpfX2V4cG9uZW50KSAg ICB0aHJvdyAoKSAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGxkZXhwbCAg ICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgaW50IF9fZXhwb25lbnQpICAgIHRocm93ICgpICA7 IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19sZGV4cGwgICAgICAgICAobG9uZyBkb3Vi bGUgICBfX3gsIGludCBfX2V4cG9uZW50KSAgICB0aHJvdyAoKSAgICA7CgogCmV4dGVybiAgIGxv bmcgZG91YmxlICAgICAgICAgIGxvZ2wgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIHRo cm93ICgpICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19sb2dsICAgICAgICAgKGxv bmcgZG91YmxlICAgX194KSAgICB0aHJvdyAoKSAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91Ymxl ICAgICAgICAgIGxvZzEwbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkg IDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2xvZzEwbCAgICAgICAgIChsb25nIGRv dWJsZSAgIF9feCkgICAgdGhyb3cgKCkgICAgOwoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAg ICAgICBtb2RmbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICAqX19p cHRyKSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fbW9kZmwg ICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgKl9faXB0cikgICAgdGhy b3cgKCkgICAgOwoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgZXhwbTFsICAgICAg ICAgKGxvbmcgZG91YmxlICAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBsb25nIGRvdWJs ZSAgICAgICAgIF9fZXhwbTFsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICB0aHJvdyAo KSAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGxvZzFwbCAgICAgICAgIChs b25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAg ICAgICBfX2xvZzFwbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkgICAg OwoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBsb2dibCAgICAgICAgIChsb25nIGRv dWJsZSAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBf X2xvZ2JsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICB0aHJvdyAoKSAgICA7CgoKCgoK CgoKCgoKIAoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBwb3dsICAgICAgICAgKGxv bmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9feSkgICAgdGhyb3cgKCkgIDsgZXh0ZXJu ICAgbG9uZyBkb3VibGUgICAgICAgICBfX3Bvd2wgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gs IGxvbmcgZG91YmxlICAgX195KSAgICB0aHJvdyAoKSAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91 YmxlICAgICAgICAgIHNxcnRsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICB0aHJvdyAo KSAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fc3FydGwgICAgICAgICAobG9uZyBk b3VibGUgICBfX3gpICAgIHRocm93ICgpICAgIDsKCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAg ICAgICAgIGh5cG90bCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBf X3kpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19oeXBvdGwg ICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgX195KSAgICB0aHJvdyAo KSAgICA7CgoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgY2JydGwgICAgICAgICAo bG9uZyBkb3VibGUgICBfX3gpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAg ICAgICAgX19jYnJ0bCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkgICAg OwoKCgogCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGNlaWxsICAgICAgICAgKGxv bmcgZG91YmxlICAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAg ICAgIF9fY2VpbGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIHRocm93ICgpICAgIDsK CiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgZmFic2wgICAgICAgICAobG9uZyBkb3Vi bGUgICBfX3gpICAgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICAp OyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fZmFic2wgICAgICAgICAobG9uZyBkb3Vi bGUgICBfX3gpICAgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICAp ICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGZsb29ybCAgICAgICAgIChsb25n IGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAg ICBfX2Zsb29ybCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkgICAgOwoK IApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBmbW9kbCAgICAgICAgIChsb25nIGRvdWJs ZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGxvbmcg ZG91YmxlICAgICAgICAgX19mbW9kbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBk b3VibGUgICBfX3kpICAgIHRocm93ICgpICAgIDsKCgogCgpleHRlcm4gIGludCAgICBfX2lzaW5m bCAgICAgKGxvbmcgZG91YmxlICAgX192YWx1ZSkgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAo KF9fY29uc3RfXykpOwoKIApleHRlcm4gIGludCAgICBfX2Zpbml0ZWwgICAgIChsb25nIGRvdWJs ZSAgIF9fdmFsdWUpICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgog CgpleHRlcm4gIGludCAgICBpc2luZmwgICAgIChsb25nIGRvdWJsZSAgIF9fdmFsdWUpICB0aHJv dyAoKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuICBpbnQgICAgZmlu aXRlbCAgICAgKGxvbmcgZG91YmxlICAgX192YWx1ZSkgIHRocm93ICgpICAgX19hdHRyaWJ1dGVf XyAoKF9fY29uc3RfXykpOwoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBkcmVtbCAg ICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgIHRocm93ICgp ICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19kcmVtbCAgICAgICAgIChsb25nIGRv dWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgIHRocm93ICgpICAgIDsKCgogCmV4dGVy biAgIGxvbmcgZG91YmxlICAgICAgICAgIHNpZ25pZmljYW5kbCAgICAgICAgIChsb25nIGRvdWJs ZSAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3Np Z25pZmljYW5kbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkgICAgOwoK CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGNvcHlzaWdubCAgICAgICAgIChsb25n IGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgIHRocm93ICgpICAgX19hdHRyaWJ1 dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9f Y29weXNpZ25sICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9feSkg ICAgdGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCgoKCgoK CgogCmV4dGVybiAgaW50ICAgIF9faXNuYW5sICAgICAobG9uZyBkb3VibGUgICBfX3ZhbHVlKSAg dGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKIApleHRlcm4gIGludCAg ICBpc25hbmwgICAgIChsb25nIGRvdWJsZSAgIF9fdmFsdWUpICB0aHJvdyAoKSAgIF9fYXR0cmli dXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgajBs ICAgICAgICAgKGxvbmcgZG91YmxlICApICAgIHRocm93ICgpICA7IGV4dGVybiAgIGxvbmcgZG91 YmxlICAgICAgICAgX19qMGwgICAgICAgICAobG9uZyBkb3VibGUgICkgICAgdGhyb3cgKCkgICAg OwpleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBqMWwgICAgICAgICAobG9uZyBkb3VibGUg ICkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2oxbCAgICAg ICAgIChsb25nIGRvdWJsZSAgKSAgICB0aHJvdyAoKSAgICA7CmV4dGVybiAgIGxvbmcgZG91Ymxl ICAgICAgICAgIGpubCAgICAgICAgIChpbnQsIGxvbmcgZG91YmxlICApICAgIHRocm93ICgpICA7 IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19qbmwgICAgICAgICAoaW50LCBsb25nIGRv dWJsZSAgKSAgICB0aHJvdyAoKSAgICA7CmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIHkw bCAgICAgICAgIChsb25nIGRvdWJsZSAgKSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBsb25nIGRv dWJsZSAgICAgICAgIF9feTBsICAgICAgICAgKGxvbmcgZG91YmxlICApICAgIHRocm93ICgpICAg IDsKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgeTFsICAgICAgICAgKGxvbmcgZG91Ymxl ICApICAgIHRocm93ICgpICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX195MWwgICAg ICAgICAobG9uZyBkb3VibGUgICkgICAgdGhyb3cgKCkgICAgOwpleHRlcm4gICBsb25nIGRvdWJs ZSAgICAgICAgICB5bmwgICAgICAgICAoaW50LCBsb25nIGRvdWJsZSAgKSAgICB0aHJvdyAoKSAg OyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9feW5sICAgICAgICAgKGludCwgbG9uZyBk b3VibGUgICkgICAgdGhyb3cgKCkgICAgOwoKCgoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAg ICAgICBlcmZsICAgICAgICAgKGxvbmcgZG91YmxlICApICAgIHRocm93ICgpICA7IGV4dGVybiAg IGxvbmcgZG91YmxlICAgICAgICAgX19lcmZsICAgICAgICAgKGxvbmcgZG91YmxlICApICAgIHRo cm93ICgpICAgIDsKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgZXJmY2wgICAgICAgICAo bG9uZyBkb3VibGUgICkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAg ICBfX2VyZmNsICAgICAgICAgKGxvbmcgZG91YmxlICApICAgIHRocm93ICgpICAgIDsKZXh0ZXJu ICAgbG9uZyBkb3VibGUgICAgICAgICAgbGdhbW1hbCAgICAgICAgIChsb25nIGRvdWJsZSAgKSAg ICB0aHJvdyAoKSAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fbGdhbW1hbCAgICAg ICAgIChsb25nIGRvdWJsZSAgKSAgICB0aHJvdyAoKSAgICA7CgoKCgoKCgogCmV4dGVybiAgIGxv bmcgZG91YmxlICAgICAgICAgIGdhbW1hbCAgICAgICAgIChsb25nIGRvdWJsZSAgKSAgICB0aHJv dyAoKSAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fZ2FtbWFsICAgICAgICAgKGxv bmcgZG91YmxlICApICAgIHRocm93ICgpICAgIDsKCgoKIAoKCmV4dGVybiAgIGxvbmcgZG91Ymxl ICAgICAgICAgIGxnYW1tYWxfciAgICAgICAgICAgIChsb25nIGRvdWJsZSAgLCBpbnQgKl9fc2ln bmdhbXApICAgIHRocm93ICgpICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19sZ2Ft bWFsX3IgICAgICAgICAgICAobG9uZyBkb3VibGUgICwgaW50ICpfX3NpZ25nYW1wKSAgICB0aHJv dyAoKSAgICA7CgoKCgogCgpleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICByaW50bCAgICAg ICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgbG9uZyBkb3Vi bGUgICAgICAgICBfX3JpbnRsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICB0aHJvdyAo KSAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIG5leHRhZnRlcmwgICAgICAg ICAobG9uZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgX195KSAgICB0aHJvdyAoKSAgIF9f YXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAg ICAgICBfX25leHRhZnRlcmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGxvbmcgZG91Ymxl ICAgX195KSAgICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAg OwoKCgoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICByZW1haW5kZXJsICAgICAgICAg KGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9feSkgICAgdGhyb3cgKCkgIDsgZXh0 ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3JlbWFpbmRlcmwgICAgICAgICAobG9uZyBkb3Vi bGUgICBfX3gsIGxvbmcgZG91YmxlICAgX195KSAgICB0aHJvdyAoKSAgICA7CgoKIApleHRlcm4g ICBsb25nIGRvdWJsZSAgICAgICAgICBzY2FsYmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gs IGxvbmcgZG91YmxlICAgX19uKSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAg ICAgICAgIF9fc2NhbGJsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAg IF9fbikgICAgdGhyb3cgKCkgICAgOwoKCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAg IHNjYWxibmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGludCBfX24pICAgIHRocm93ICgp ICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19zY2FsYm5sICAgICAgICAgKGxvbmcg ZG91YmxlICAgX194LCBpbnQgX19uKSAgICB0aHJvdyAoKSAgICA7CgoKIApleHRlcm4gICBpbnQg ICAgICAgaWxvZ2JsICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICB0aHJvdyAoKSAgOyBleHRl cm4gICBpbnQgICAgICAgX19pbG9nYmwgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgIHRocm93 ICgpICAgOwoKCiMgMzMzICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwoKIyA5OSAi L3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoKCgoKCgoKCgoKCgogCmV4dGVybiBpbnQgc2lnbmdh bTsKCgoKIAojIDIzNiAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwoKCgogCnR5cGVkZWYgZW51bQp7 CiAgX0lFRUVfID0gLTEsCSAKICBfU1ZJRF8sCSAKICBfWE9QRU5fLAkgCiAgX1BPU0lYXywKICBf SVNPQ18JIAp9IF9MSUJfVkVSU0lPTl9UWVBFOwoKIAoKCmV4dGVybiBfTElCX1ZFUlNJT05fVFlQ RSBfTElCX1ZFUlNJT047CgoKCgogCgoKCgoKc3RydWN0IF9fZXhjZXB0aW9uCgoKCiAgewogICAg aW50IHR5cGU7CiAgICBjaGFyICpuYW1lOwogICAgZG91YmxlIGFyZzE7CiAgICBkb3VibGUgYXJn MjsKICAgIGRvdWJsZSByZXR2YWw7CiAgfTsKCgpleHRlcm4gaW50IG1hdGhlcnIgKHN0cnVjdCBf X2V4Y2VwdGlvbiAqX19leGMpIHRocm93ICgpOwoKCgoKCgogCgoKCgoKCgogCgoKCgoKCgoKCgoK CiAKCgoKCgoKCgoKCgoKCgoKCiAKCgojIDMzOCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwoKCgog CgoKCgoKCiAKCgoKCgojIDQwOSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwoKCn0gCgoKCiMgMTYg InBwMl80X3RvYmVua2luLmNwcCIgMgoKCiAKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9HTC9nbC5o IiAxIDMKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoK IyA1OSAiL3Vzci9pbmNsdWRlL0dML2dsLmgiIDMKCiAKCgoKCgoKCgoKCgogCgoKCgoKCmV4dGVy biAiQyIgewoKCgoKCgoKCgogCgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludAlHTGVudW07CnR5 cGVkZWYgdW5zaWduZWQgY2hhcglHTGJvb2xlYW47CnR5cGVkZWYgdW5zaWduZWQgaW50CUdMYml0 ZmllbGQ7CnR5cGVkZWYgdm9pZAkJR0x2b2lkOwp0eXBlZGVmIHNpZ25lZCBjaGFyCUdMYnl0ZTsJ CSAKdHlwZWRlZiBzaG9ydAkJR0xzaG9ydDsJIAp0eXBlZGVmIGludAkJR0xpbnQ7CQkgCnR5cGVk ZWYgdW5zaWduZWQgY2hhcglHTHVieXRlOwkgCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQJR0x1c2hv cnQ7CSAKdHlwZWRlZiB1bnNpZ25lZCBpbnQJR0x1aW50OwkJIAp0eXBlZGVmIGludAkJR0xzaXpl aTsJIAp0eXBlZGVmIGZsb2F0CQlHTGZsb2F0OwkgCnR5cGVkZWYgZmxvYXQJCUdMY2xhbXBmOwkg CnR5cGVkZWYgZG91YmxlCQlHTGRvdWJsZTsJIAp0eXBlZGVmIGRvdWJsZQkJR0xjbGFtcGQ7CSAK CgoKIAoKCgoKCiAKCgoKIAoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgoKCgoKIAoKCgoKCgoKCiAKCgoK CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgogCgoKCgoKCgoKCgoKIAoKCgoKIAoKCgoK CgoKCgoKCgoKCgoKCgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIAoKCgoKCgoKCgoK CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKIAoKCgogCiAKIAoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoK CgogCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoK IAoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgog CgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgogCgoKCgoK CgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiAKCgoKCgoK CgoKCgoKCgogCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK IAoKCgpleHRlcm4gIHZvaWQgICBnbENsZWFySW5kZXgoIEdMZmxvYXQgYyApOwoKZXh0ZXJuICB2 b2lkICAgZ2xDbGVhckNvbG9yKCBHTGNsYW1wZiByZWQsCgkJCSAgR0xjbGFtcGYgZ3JlZW4sCgkJ CSAgR0xjbGFtcGYgYmx1ZSwKCQkJICBHTGNsYW1wZiBhbHBoYSApOwoKZXh0ZXJuICB2b2lkICAg Z2xDbGVhciggR0xiaXRmaWVsZCBtYXNrICk7CgpleHRlcm4gIHZvaWQgICBnbEluZGV4TWFzaygg R0x1aW50IG1hc2sgKTsKCmV4dGVybiAgdm9pZCAgIGdsQ29sb3JNYXNrKCBHTGJvb2xlYW4gcmVk LCBHTGJvb2xlYW4gZ3JlZW4sCgkJCSBHTGJvb2xlYW4gYmx1ZSwgR0xib29sZWFuIGFscGhhICk7 CgpleHRlcm4gIHZvaWQgICBnbEFscGhhRnVuYyggR0xlbnVtIGZ1bmMsIEdMY2xhbXBmIHJlZiAp OwoKZXh0ZXJuICB2b2lkICAgZ2xCbGVuZEZ1bmMoIEdMZW51bSBzZmFjdG9yLCBHTGVudW0gZGZh Y3RvciApOwoKZXh0ZXJuICB2b2lkICAgZ2xMb2dpY09wKCBHTGVudW0gb3Bjb2RlICk7CgpleHRl cm4gIHZvaWQgICBnbEN1bGxGYWNlKCBHTGVudW0gbW9kZSApOwoKZXh0ZXJuICB2b2lkICAgZ2xG cm9udEZhY2UoIEdMZW51bSBtb2RlICk7CgpleHRlcm4gIHZvaWQgICBnbFBvaW50U2l6ZSggR0xm bG9hdCBzaXplICk7CgpleHRlcm4gIHZvaWQgICBnbExpbmVXaWR0aCggR0xmbG9hdCB3aWR0aCAp OwoKZXh0ZXJuICB2b2lkICAgZ2xMaW5lU3RpcHBsZSggR0xpbnQgZmFjdG9yLCBHTHVzaG9ydCBw YXR0ZXJuICk7CgpleHRlcm4gIHZvaWQgICBnbFBvbHlnb25Nb2RlKCBHTGVudW0gZmFjZSwgR0xl bnVtIG1vZGUgKTsKCmV4dGVybiAgdm9pZCAgIGdsUG9seWdvbk9mZnNldCggR0xmbG9hdCBmYWN0 b3IsIEdMZmxvYXQgdW5pdHMgKTsKCmV4dGVybiAgdm9pZCAgIGdsUG9seWdvblN0aXBwbGUoIGNv bnN0IEdMdWJ5dGUgKm1hc2sgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0UG9seWdvblN0aXBwbGUo IEdMdWJ5dGUgKm1hc2sgKTsKCmV4dGVybiAgdm9pZCAgIGdsRWRnZUZsYWcoIEdMYm9vbGVhbiBm bGFnICk7CgpleHRlcm4gIHZvaWQgICBnbEVkZ2VGbGFndiggY29uc3QgR0xib29sZWFuICpmbGFn ICk7CgpleHRlcm4gIHZvaWQgICBnbFNjaXNzb3IoIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp OwoKZXh0ZXJuICB2b2lkICAgZ2xDbGlwUGxhbmUoIEdMZW51bSBwbGFuZSwgY29uc3QgR0xkb3Vi bGUgKmVxdWF0aW9uICk7CgpleHRlcm4gIHZvaWQgICBnbEdldENsaXBQbGFuZSggR0xlbnVtIHBs YW5lLCBHTGRvdWJsZSAqZXF1YXRpb24gKTsKCmV4dGVybiAgdm9pZCAgIGdsRHJhd0J1ZmZlcigg R0xlbnVtIG1vZGUgKTsKCmV4dGVybiAgdm9pZCAgIGdsUmVhZEJ1ZmZlciggR0xlbnVtIG1vZGUg KTsKCmV4dGVybiAgdm9pZCAgIGdsRW5hYmxlKCBHTGVudW0gY2FwICk7CgpleHRlcm4gIHZvaWQg ICBnbERpc2FibGUoIEdMZW51bSBjYXAgKTsKCmV4dGVybiAgR0xib29sZWFuICAgZ2xJc0VuYWJs ZWQoIEdMZW51bSBjYXAgKTsKCgpleHRlcm4gIHZvaWQgICBnbEVuYWJsZUNsaWVudFN0YXRlKCBH TGVudW0gY2FwICk7ICAgCgpleHRlcm4gIHZvaWQgICBnbERpc2FibGVDbGllbnRTdGF0ZSggR0xl bnVtIGNhcCApOyAgIAoKCmV4dGVybiAgdm9pZCAgIGdsR2V0Qm9vbGVhbnYoIEdMZW51bSBwbmFt ZSwgR0xib29sZWFuICpwYXJhbXMgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0RG91YmxldiggR0xl bnVtIHBuYW1lLCBHTGRvdWJsZSAqcGFyYW1zICk7CgpleHRlcm4gIHZvaWQgICBnbEdldEZsb2F0 diggR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0 SW50ZWdlcnYoIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyApOwoKCmV4dGVybiAgdm9pZCAg IGdsUHVzaEF0dHJpYiggR0xiaXRmaWVsZCBtYXNrICk7CgpleHRlcm4gIHZvaWQgICBnbFBvcEF0 dHJpYiggdm9pZCApOwoKCmV4dGVybiAgdm9pZCAgIGdsUHVzaENsaWVudEF0dHJpYiggR0xiaXRm aWVsZCBtYXNrICk7ICAgCgpleHRlcm4gIHZvaWQgICBnbFBvcENsaWVudEF0dHJpYiggdm9pZCAp OyAgIAoKCmV4dGVybiAgR0xpbnQgICBnbFJlbmRlck1vZGUoIEdMZW51bSBtb2RlICk7CgpleHRl cm4gIEdMZW51bSAgIGdsR2V0RXJyb3IoIHZvaWQgKTsKCmV4dGVybiAgY29uc3QgR0x1Ynl0ZSog ICBnbEdldFN0cmluZyggR0xlbnVtIG5hbWUgKTsKCmV4dGVybiAgdm9pZCAgIGdsRmluaXNoKCB2 b2lkICk7CgpleHRlcm4gIHZvaWQgICBnbEZsdXNoKCB2b2lkICk7CgpleHRlcm4gIHZvaWQgICBn bEhpbnQoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlICk7CgoKCiAKCgoKZXh0ZXJuICB2b2lk ICAgZ2xDbGVhckRlcHRoKCBHTGNsYW1wZCBkZXB0aCApOwoKZXh0ZXJuICB2b2lkICAgZ2xEZXB0 aEZ1bmMoIEdMZW51bSBmdW5jICk7CgpleHRlcm4gIHZvaWQgICBnbERlcHRoTWFzayggR0xib29s ZWFuIGZsYWcgKTsKCmV4dGVybiAgdm9pZCAgIGdsRGVwdGhSYW5nZSggR0xjbGFtcGQgbmVhcl92 YWwsIEdMY2xhbXBkIGZhcl92YWwgKTsKCgogCgoKCmV4dGVybiAgdm9pZCAgIGdsQ2xlYXJBY2N1 bSggR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR0xmbG9hdCBibHVlLCBHTGZsb2F0IGFscGhhICk7CgpleHRlcm4gIHZvaWQg ICBnbEFjY3VtKCBHTGVudW0gb3AsIEdMZmxvYXQgdmFsdWUgKTsKCgoKIAoKCgpleHRlcm4gIHZv aWQgICBnbE1hdHJpeE1vZGUoIEdMZW51bSBtb2RlICk7CgpleHRlcm4gIHZvaWQgICBnbE9ydGhv KCBHTGRvdWJsZSBsZWZ0LCBHTGRvdWJsZSByaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0xkb3VibGUgYm90dG9tLCBHTGRvdWJsZSB0b3AsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdMZG91YmxlIG5lYXJfdmFsLCBHTGRvdWJsZSBmYXJfdmFsICk7Cgpl eHRlcm4gIHZvaWQgICBnbEZydXN0dW0oIEdMZG91YmxlIGxlZnQsIEdMZG91YmxlIHJpZ2h0LAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIGJvdHRvbSwgR0xkb3Vi bGUgdG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIG5lYXJf dmFsLCBHTGRvdWJsZSBmYXJfdmFsICk7CgpleHRlcm4gIHZvaWQgICBnbFZpZXdwb3J0KCBHTGlu dCB4LCBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp IHdpZHRoLCBHTHNpemVpIGhlaWdodCApOwoKZXh0ZXJuICB2b2lkICAgZ2xQdXNoTWF0cml4KCB2 b2lkICk7CgpleHRlcm4gIHZvaWQgICBnbFBvcE1hdHJpeCggdm9pZCApOwoKZXh0ZXJuICB2b2lk ICAgZ2xMb2FkSWRlbnRpdHkoIHZvaWQgKTsKCmV4dGVybiAgdm9pZCAgIGdsTG9hZE1hdHJpeGQo IGNvbnN0IEdMZG91YmxlICptICk7CmV4dGVybiAgdm9pZCAgIGdsTG9hZE1hdHJpeGYoIGNvbnN0 IEdMZmxvYXQgKm0gKTsKCmV4dGVybiAgdm9pZCAgIGdsTXVsdE1hdHJpeGQoIGNvbnN0IEdMZG91 YmxlICptICk7CmV4dGVybiAgdm9pZCAgIGdsTXVsdE1hdHJpeGYoIGNvbnN0IEdMZmxvYXQgKm0g KTsKCmV4dGVybiAgdm9pZCAgIGdsUm90YXRlZCggR0xkb3VibGUgYW5nbGUsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUg eiApOwpleHRlcm4gIHZvaWQgICBnbFJvdGF0ZWYoIEdMZmxvYXQgYW5nbGUsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiAp OwoKZXh0ZXJuICB2b2lkICAgZ2xTY2FsZWQoIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91 YmxlIHogKTsKZXh0ZXJuICB2b2lkICAgZ2xTY2FsZWYoIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBH TGZsb2F0IHogKTsKCmV4dGVybiAgdm9pZCAgIGdsVHJhbnNsYXRlZCggR0xkb3VibGUgeCwgR0xk b3VibGUgeSwgR0xkb3VibGUgeiApOwpleHRlcm4gIHZvaWQgICBnbFRyYW5zbGF0ZWYoIEdMZmxv YXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHogKTsKCgoKIAoKCgpleHRlcm4gIEdMYm9vbGVhbiAg IGdsSXNMaXN0KCBHTHVpbnQgbGlzdCApOwoKZXh0ZXJuICB2b2lkICAgZ2xEZWxldGVMaXN0cygg R0x1aW50IGxpc3QsIEdMc2l6ZWkgcmFuZ2UgKTsKCmV4dGVybiAgR0x1aW50ICAgZ2xHZW5MaXN0 cyggR0xzaXplaSByYW5nZSApOwoKZXh0ZXJuICB2b2lkICAgZ2xOZXdMaXN0KCBHTHVpbnQgbGlz dCwgR0xlbnVtIG1vZGUgKTsKCmV4dGVybiAgdm9pZCAgIGdsRW5kTGlzdCggdm9pZCApOwoKZXh0 ZXJuICB2b2lkICAgZ2xDYWxsTGlzdCggR0x1aW50IGxpc3QgKTsKCmV4dGVybiAgdm9pZCAgIGds Q2FsbExpc3RzKCBHTHNpemVpIG4sIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpsaXN0cyApOwoKZXh0ZXJuICB2b2lkICAgZ2xM aXN0QmFzZSggR0x1aW50IGJhc2UgKTsKCgoKIAoKCgpleHRlcm4gIHZvaWQgICBnbEJlZ2luKCBH TGVudW0gbW9kZSApOwoKZXh0ZXJuICB2b2lkICAgZ2xFbmQoIHZvaWQgKTsKCgpleHRlcm4gIHZv aWQgICBnbFZlcnRleDJkKCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5ICk7CmV4dGVybiAgdm9pZCAg IGdsVmVydGV4MmYoIEdMZmxvYXQgeCwgR0xmbG9hdCB5ICk7CmV4dGVybiAgdm9pZCAgIGdsVmVy dGV4MmkoIEdMaW50IHgsIEdMaW50IHkgKTsKZXh0ZXJuICB2b2lkICAgZ2xWZXJ0ZXgycyggR0xz aG9ydCB4LCBHTHNob3J0IHkgKTsKCmV4dGVybiAgdm9pZCAgIGdsVmVydGV4M2QoIEdMZG91Ymxl IHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHogKTsKZXh0ZXJuICB2b2lkICAgZ2xWZXJ0ZXgzZigg R0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiApOwpleHRlcm4gIHZvaWQgICBnbFZlcnRl eDNpKCBHTGludCB4LCBHTGludCB5LCBHTGludCB6ICk7CmV4dGVybiAgdm9pZCAgIGdsVmVydGV4 M3MoIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHogKTsKCmV4dGVybiAgdm9pZCAgIGds VmVydGV4NGQoIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHosIEdMZG91YmxlIHcg KTsKZXh0ZXJuICB2b2lkICAgZ2xWZXJ0ZXg0ZiggR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxv YXQgeiwgR0xmbG9hdCB3ICk7CmV4dGVybiAgdm9pZCAgIGdsVmVydGV4NGkoIEdMaW50IHgsIEdM aW50IHksIEdMaW50IHosIEdMaW50IHcgKTsKZXh0ZXJuICB2b2lkICAgZ2xWZXJ0ZXg0cyggR0xz aG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeiwgR0xzaG9ydCB3ICk7CgpleHRlcm4gIHZvaWQg ICBnbFZlcnRleDJkdiggY29uc3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xWZXJ0 ZXgyZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xWZXJ0ZXgyaXYoIGNv bnN0IEdMaW50ICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsVmVydGV4MnN2KCBjb25zdCBHTHNob3J0 ICp2ICk7CgpleHRlcm4gIHZvaWQgICBnbFZlcnRleDNkdiggY29uc3QgR0xkb3VibGUgKnYgKTsK ZXh0ZXJuICB2b2lkICAgZ2xWZXJ0ZXgzZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuICB2 b2lkICAgZ2xWZXJ0ZXgzaXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsVmVy dGV4M3N2KCBjb25zdCBHTHNob3J0ICp2ICk7CgpleHRlcm4gIHZvaWQgICBnbFZlcnRleDRkdigg Y29uc3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xWZXJ0ZXg0ZnYoIGNvbnN0IEdM ZmxvYXQgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xWZXJ0ZXg0aXYoIGNvbnN0IEdMaW50ICp2ICk7 CmV4dGVybiAgdm9pZCAgIGdsVmVydGV4NHN2KCBjb25zdCBHTHNob3J0ICp2ICk7CgoKZXh0ZXJu ICB2b2lkICAgZ2xOb3JtYWwzYiggR0xieXRlIG54LCBHTGJ5dGUgbnksIEdMYnl0ZSBueiApOwpl eHRlcm4gIHZvaWQgICBnbE5vcm1hbDNkKCBHTGRvdWJsZSBueCwgR0xkb3VibGUgbnksIEdMZG91 YmxlIG56ICk7CmV4dGVybiAgdm9pZCAgIGdsTm9ybWFsM2YoIEdMZmxvYXQgbngsIEdMZmxvYXQg bnksIEdMZmxvYXQgbnogKTsKZXh0ZXJuICB2b2lkICAgZ2xOb3JtYWwzaSggR0xpbnQgbngsIEdM aW50IG55LCBHTGludCBueiApOwpleHRlcm4gIHZvaWQgICBnbE5vcm1hbDNzKCBHTHNob3J0IG54 LCBHTHNob3J0IG55LCBHTHNob3J0IG56ICk7CgpleHRlcm4gIHZvaWQgICBnbE5vcm1hbDNidigg Y29uc3QgR0xieXRlICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsTm9ybWFsM2R2KCBjb25zdCBHTGRv dWJsZSAqdiApOwpleHRlcm4gIHZvaWQgICBnbE5vcm1hbDNmdiggY29uc3QgR0xmbG9hdCAqdiAp OwpleHRlcm4gIHZvaWQgICBnbE5vcm1hbDNpdiggY29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuICB2 b2lkICAgZ2xOb3JtYWwzc3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCgpleHRlcm4gIHZvaWQgICBn bEluZGV4ZCggR0xkb3VibGUgYyApOwpleHRlcm4gIHZvaWQgICBnbEluZGV4ZiggR0xmbG9hdCBj ICk7CmV4dGVybiAgdm9pZCAgIGdsSW5kZXhpKCBHTGludCBjICk7CmV4dGVybiAgdm9pZCAgIGds SW5kZXhzKCBHTHNob3J0IGMgKTsKZXh0ZXJuICB2b2lkICAgZ2xJbmRleHViKCBHTHVieXRlIGMg KTsgICAKCmV4dGVybiAgdm9pZCAgIGdsSW5kZXhkdiggY29uc3QgR0xkb3VibGUgKmMgKTsKZXh0 ZXJuICB2b2lkICAgZ2xJbmRleGZ2KCBjb25zdCBHTGZsb2F0ICpjICk7CmV4dGVybiAgdm9pZCAg IGdsSW5kZXhpdiggY29uc3QgR0xpbnQgKmMgKTsKZXh0ZXJuICB2b2lkICAgZ2xJbmRleHN2KCBj b25zdCBHTHNob3J0ICpjICk7CmV4dGVybiAgdm9pZCAgIGdsSW5kZXh1YnYoIGNvbnN0IEdMdWJ5 dGUgKmMgKTsgICAKCmV4dGVybiAgdm9pZCAgIGdsQ29sb3IzYiggR0xieXRlIHJlZCwgR0xieXRl IGdyZWVuLCBHTGJ5dGUgYmx1ZSApOwpleHRlcm4gIHZvaWQgICBnbENvbG9yM2QoIEdMZG91Ymxl IHJlZCwgR0xkb3VibGUgZ3JlZW4sIEdMZG91YmxlIGJsdWUgKTsKZXh0ZXJuICB2b2lkICAgZ2xD b2xvcjNmKCBHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlICk7CmV4dGVy biAgdm9pZCAgIGdsQ29sb3IzaSggR0xpbnQgcmVkLCBHTGludCBncmVlbiwgR0xpbnQgYmx1ZSAp OwpleHRlcm4gIHZvaWQgICBnbENvbG9yM3MoIEdMc2hvcnQgcmVkLCBHTHNob3J0IGdyZWVuLCBH THNob3J0IGJsdWUgKTsKZXh0ZXJuICB2b2lkICAgZ2xDb2xvcjN1YiggR0x1Ynl0ZSByZWQsIEdM dWJ5dGUgZ3JlZW4sIEdMdWJ5dGUgYmx1ZSApOwpleHRlcm4gIHZvaWQgICBnbENvbG9yM3VpKCBH THVpbnQgcmVkLCBHTHVpbnQgZ3JlZW4sIEdMdWludCBibHVlICk7CmV4dGVybiAgdm9pZCAgIGds Q29sb3IzdXMoIEdMdXNob3J0IHJlZCwgR0x1c2hvcnQgZ3JlZW4sIEdMdXNob3J0IGJsdWUgKTsK CmV4dGVybiAgdm9pZCAgIGdsQ29sb3I0YiggR0xieXRlIHJlZCwgR0xieXRlIGdyZWVuLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYnl0ZSBibHVlLCBHTGJ5dGUgYWxwaGEg KTsKZXh0ZXJuICB2b2lkICAgZ2xDb2xvcjRkKCBHTGRvdWJsZSByZWQsIEdMZG91YmxlIGdyZWVu LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIGJsdWUsIEdMZG91 YmxlIGFscGhhICk7CmV4dGVybiAgdm9pZCAgIGdsQ29sb3I0ZiggR0xmbG9hdCByZWQsIEdMZmxv YXQgZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBibHVl LCBHTGZsb2F0IGFscGhhICk7CmV4dGVybiAgdm9pZCAgIGdsQ29sb3I0aSggR0xpbnQgcmVkLCBH TGludCBncmVlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBibHVl LCBHTGludCBhbHBoYSApOwpleHRlcm4gIHZvaWQgICBnbENvbG9yNHMoIEdMc2hvcnQgcmVkLCBH THNob3J0IGdyZWVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2hvcnQg Ymx1ZSwgR0xzaG9ydCBhbHBoYSApOwpleHRlcm4gIHZvaWQgICBnbENvbG9yNHViKCBHTHVieXRl IHJlZCwgR0x1Ynl0ZSBncmVlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R0x1Ynl0ZSBibHVlLCBHTHVieXRlIGFscGhhICk7CmV4dGVybiAgdm9pZCAgIGdsQ29sb3I0dWko IEdMdWludCByZWQsIEdMdWludCBncmVlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR0x1aW50IGJsdWUsIEdMdWludCBhbHBoYSApOwpleHRlcm4gIHZvaWQgICBnbENvbG9y NHVzKCBHTHVzaG9ydCByZWQsIEdMdXNob3J0IGdyZWVuLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHTHVzaG9ydCBibHVlLCBHTHVzaG9ydCBhbHBoYSApOwoKCmV4dGVybiAg dm9pZCAgIGdsQ29sb3IzYnYoIGNvbnN0IEdMYnl0ZSAqdiApOwpleHRlcm4gIHZvaWQgICBnbENv bG9yM2R2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4gIHZvaWQgICBnbENvbG9yM2Z2KCBj b25zdCBHTGZsb2F0ICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsQ29sb3IzaXYoIGNvbnN0IEdMaW50 ICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsQ29sb3Izc3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKZXh0 ZXJuICB2b2lkICAgZ2xDb2xvcjN1YnYoIGNvbnN0IEdMdWJ5dGUgKnYgKTsKZXh0ZXJuICB2b2lk ICAgZ2xDb2xvcjN1aXYoIGNvbnN0IEdMdWludCAqdiApOwpleHRlcm4gIHZvaWQgICBnbENvbG9y M3VzdiggY29uc3QgR0x1c2hvcnQgKnYgKTsKCmV4dGVybiAgdm9pZCAgIGdsQ29sb3I0YnYoIGNv bnN0IEdMYnl0ZSAqdiApOwpleHRlcm4gIHZvaWQgICBnbENvbG9yNGR2KCBjb25zdCBHTGRvdWJs ZSAqdiApOwpleHRlcm4gIHZvaWQgICBnbENvbG9yNGZ2KCBjb25zdCBHTGZsb2F0ICp2ICk7CmV4 dGVybiAgdm9pZCAgIGdsQ29sb3I0aXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiAgdm9pZCAg IGdsQ29sb3I0c3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xDb2xvcjR1 YnYoIGNvbnN0IEdMdWJ5dGUgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xDb2xvcjR1aXYoIGNvbnN0 IEdMdWludCAqdiApOwpleHRlcm4gIHZvaWQgICBnbENvbG9yNHVzdiggY29uc3QgR0x1c2hvcnQg KnYgKTsKCgpleHRlcm4gIHZvaWQgICBnbFRleENvb3JkMWQoIEdMZG91YmxlIHMgKTsKZXh0ZXJu ICB2b2lkICAgZ2xUZXhDb29yZDFmKCBHTGZsb2F0IHMgKTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhD b29yZDFpKCBHTGludCBzICk7CmV4dGVybiAgdm9pZCAgIGdsVGV4Q29vcmQxcyggR0xzaG9ydCBz ICk7CgpleHRlcm4gIHZvaWQgICBnbFRleENvb3JkMmQoIEdMZG91YmxlIHMsIEdMZG91YmxlIHQg KTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhDb29yZDJmKCBHTGZsb2F0IHMsIEdMZmxvYXQgdCApOwpl eHRlcm4gIHZvaWQgICBnbFRleENvb3JkMmkoIEdMaW50IHMsIEdMaW50IHQgKTsKZXh0ZXJuICB2 b2lkICAgZ2xUZXhDb29yZDJzKCBHTHNob3J0IHMsIEdMc2hvcnQgdCApOwoKZXh0ZXJuICB2b2lk ICAgZ2xUZXhDb29yZDNkKCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJsZSByICk7CmV4 dGVybiAgdm9pZCAgIGdsVGV4Q29vcmQzZiggR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQg ciApOwpleHRlcm4gIHZvaWQgICBnbFRleENvb3JkM2koIEdMaW50IHMsIEdMaW50IHQsIEdMaW50 IHIgKTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhDb29yZDNzKCBHTHNob3J0IHMsIEdMc2hvcnQgdCwg R0xzaG9ydCByICk7CgpleHRlcm4gIHZvaWQgICBnbFRleENvb3JkNGQoIEdMZG91YmxlIHMsIEdM ZG91YmxlIHQsIEdMZG91YmxlIHIsIEdMZG91YmxlIHEgKTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhD b29yZDRmKCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByLCBHTGZsb2F0IHEgKTsKZXh0 ZXJuICB2b2lkICAgZ2xUZXhDb29yZDRpKCBHTGludCBzLCBHTGludCB0LCBHTGludCByLCBHTGlu dCBxICk7CmV4dGVybiAgdm9pZCAgIGdsVGV4Q29vcmQ0cyggR0xzaG9ydCBzLCBHTHNob3J0IHQs IEdMc2hvcnQgciwgR0xzaG9ydCBxICk7CgpleHRlcm4gIHZvaWQgICBnbFRleENvb3JkMWR2KCBj b25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4gIHZvaWQgICBnbFRleENvb3JkMWZ2KCBjb25zdCBH TGZsb2F0ICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsVGV4Q29vcmQxaXYoIGNvbnN0IEdMaW50ICp2 ICk7CmV4dGVybiAgdm9pZCAgIGdsVGV4Q29vcmQxc3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCmV4 dGVybiAgdm9pZCAgIGdsVGV4Q29vcmQyZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7CmV4dGVybiAg dm9pZCAgIGdsVGV4Q29vcmQyZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuICB2b2lkICAg Z2xUZXhDb29yZDJpdiggY29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhDb29y ZDJzdiggY29uc3QgR0xzaG9ydCAqdiApOwoKZXh0ZXJuICB2b2lkICAgZ2xUZXhDb29yZDNkdigg Y29uc3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhDb29yZDNmdiggY29uc3Qg R0xmbG9hdCAqdiApOwpleHRlcm4gIHZvaWQgICBnbFRleENvb3JkM2l2KCBjb25zdCBHTGludCAq diApOwpleHRlcm4gIHZvaWQgICBnbFRleENvb3JkM3N2KCBjb25zdCBHTHNob3J0ICp2ICk7Cgpl eHRlcm4gIHZvaWQgICBnbFRleENvb3JkNGR2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4g IHZvaWQgICBnbFRleENvb3JkNGZ2KCBjb25zdCBHTGZsb2F0ICp2ICk7CmV4dGVybiAgdm9pZCAg IGdsVGV4Q29vcmQ0aXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsVGV4Q29v cmQ0c3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCgpleHRlcm4gIHZvaWQgICBnbFJhc3RlclBvczJk KCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5ICk7CmV4dGVybiAgdm9pZCAgIGdsUmFzdGVyUG9zMmYo IEdMZmxvYXQgeCwgR0xmbG9hdCB5ICk7CmV4dGVybiAgdm9pZCAgIGdsUmFzdGVyUG9zMmkoIEdM aW50IHgsIEdMaW50IHkgKTsKZXh0ZXJuICB2b2lkICAgZ2xSYXN0ZXJQb3MycyggR0xzaG9ydCB4 LCBHTHNob3J0IHkgKTsKCmV4dGVybiAgdm9pZCAgIGdsUmFzdGVyUG9zM2QoIEdMZG91YmxlIHgs IEdMZG91YmxlIHksIEdMZG91YmxlIHogKTsKZXh0ZXJuICB2b2lkICAgZ2xSYXN0ZXJQb3MzZigg R0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiApOwpleHRlcm4gIHZvaWQgICBnbFJhc3Rl clBvczNpKCBHTGludCB4LCBHTGludCB5LCBHTGludCB6ICk7CmV4dGVybiAgdm9pZCAgIGdsUmFz dGVyUG9zM3MoIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHogKTsKCmV4dGVybiAgdm9p ZCAgIGdsUmFzdGVyUG9zNGQoIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHosIEdM ZG91YmxlIHcgKTsKZXh0ZXJuICB2b2lkICAgZ2xSYXN0ZXJQb3M0ZiggR0xmbG9hdCB4LCBHTGZs b2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3ICk7CmV4dGVybiAgdm9pZCAgIGdsUmFzdGVyUG9z NGkoIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcgKTsKZXh0ZXJuICB2b2lkICAg Z2xSYXN0ZXJQb3M0cyggR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeiwgR0xzaG9ydCB3 ICk7CgpleHRlcm4gIHZvaWQgICBnbFJhc3RlclBvczJkdiggY29uc3QgR0xkb3VibGUgKnYgKTsK ZXh0ZXJuICB2b2lkICAgZ2xSYXN0ZXJQb3MyZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJu ICB2b2lkICAgZ2xSYXN0ZXJQb3MyaXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiAgdm9pZCAg IGdsUmFzdGVyUG9zMnN2KCBjb25zdCBHTHNob3J0ICp2ICk7CgpleHRlcm4gIHZvaWQgICBnbFJh c3RlclBvczNkdiggY29uc3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xSYXN0ZXJQ b3MzZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xSYXN0ZXJQb3MzaXYo IGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsUmFzdGVyUG9zM3N2KCBjb25zdCBH THNob3J0ICp2ICk7CgpleHRlcm4gIHZvaWQgICBnbFJhc3RlclBvczRkdiggY29uc3QgR0xkb3Vi bGUgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xSYXN0ZXJQb3M0ZnYoIGNvbnN0IEdMZmxvYXQgKnYg KTsKZXh0ZXJuICB2b2lkICAgZ2xSYXN0ZXJQb3M0aXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVy biAgdm9pZCAgIGdsUmFzdGVyUG9zNHN2KCBjb25zdCBHTHNob3J0ICp2ICk7CgoKZXh0ZXJuICB2 b2lkICAgZ2xSZWN0ZCggR0xkb3VibGUgeDEsIEdMZG91YmxlIHkxLCBHTGRvdWJsZSB4MiwgR0xk b3VibGUgeTIgKTsKZXh0ZXJuICB2b2lkICAgZ2xSZWN0ZiggR0xmbG9hdCB4MSwgR0xmbG9hdCB5 MSwgR0xmbG9hdCB4MiwgR0xmbG9hdCB5MiApOwpleHRlcm4gIHZvaWQgICBnbFJlY3RpKCBHTGlu dCB4MSwgR0xpbnQgeTEsIEdMaW50IHgyLCBHTGludCB5MiApOwpleHRlcm4gIHZvaWQgICBnbFJl Y3RzKCBHTHNob3J0IHgxLCBHTHNob3J0IHkxLCBHTHNob3J0IHgyLCBHTHNob3J0IHkyICk7CgoK ZXh0ZXJuICB2b2lkICAgZ2xSZWN0ZHYoIGNvbnN0IEdMZG91YmxlICp2MSwgY29uc3QgR0xkb3Vi bGUgKnYyICk7CmV4dGVybiAgdm9pZCAgIGdsUmVjdGZ2KCBjb25zdCBHTGZsb2F0ICp2MSwgY29u c3QgR0xmbG9hdCAqdjIgKTsKZXh0ZXJuICB2b2lkICAgZ2xSZWN0aXYoIGNvbnN0IEdMaW50ICp2 MSwgY29uc3QgR0xpbnQgKnYyICk7CmV4dGVybiAgdm9pZCAgIGdsUmVjdHN2KCBjb25zdCBHTHNo b3J0ICp2MSwgY29uc3QgR0xzaG9ydCAqdjIgKTsKCgoKIAoKCgpleHRlcm4gIHZvaWQgICBnbFZl cnRleFBvaW50ZXIoIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwdHIgKTsK CmV4dGVybiAgdm9pZCAgIGdsTm9ybWFsUG9pbnRlciggR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3Ry aWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQg KnB0ciApOwoKZXh0ZXJuICB2b2lkICAgZ2xDb2xvclBvaW50ZXIoIEdMaW50IHNpemUsIEdMZW51 bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3Ry aWRlLCBjb25zdCBHTHZvaWQgKnB0ciApOwoKZXh0ZXJuICB2b2lkICAgZ2xJbmRleFBvaW50ZXIo IEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBHTHZvaWQgKnB0ciApOwoKZXh0ZXJuICB2b2lkICAgZ2xUZXhDb29y ZFBvaW50ZXIoIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnB0ciApOwoK ZXh0ZXJuICB2b2lkICAgZ2xFZGdlRmxhZ1BvaW50ZXIoIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBH THZvaWQgKnB0ciApOwoKZXh0ZXJuICB2b2lkICAgZ2xHZXRQb2ludGVydiggR0xlbnVtIHBuYW1l LCB2b2lkICoqcGFyYW1zICk7CgpleHRlcm4gIHZvaWQgICBnbEFycmF5RWxlbWVudCggR0xpbnQg aSApOwoKZXh0ZXJuICB2b2lkICAgZ2xEcmF3QXJyYXlzKCBHTGVudW0gbW9kZSwgR0xpbnQgZmly c3QsIEdMc2l6ZWkgY291bnQgKTsKCmV4dGVybiAgdm9pZCAgIGdsRHJhd0VsZW1lbnRzKCBHTGVu dW0gbW9kZSwgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRpY2VzICk7CgpleHRlcm4gIHZvaWQg ICBnbEludGVybGVhdmVkQXJyYXlzKCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHN0cmlkZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcG9p bnRlciApOwoKCiAKCgoKZXh0ZXJuICB2b2lkICAgZ2xTaGFkZU1vZGVsKCBHTGVudW0gbW9kZSAp OwoKZXh0ZXJuICB2b2lkICAgZ2xMaWdodGYoIEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBH TGZsb2F0IHBhcmFtICk7CmV4dGVybiAgdm9pZCAgIGdsTGlnaHRpKCBHTGVudW0gbGlnaHQsIEdM ZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0gKTsKZXh0ZXJuICB2b2lkICAgZ2xMaWdodGZ2KCBHTGVu dW0gbGlnaHQsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiAgdm9pZCAgIGdsTGlnaHRpdiggR0xlbnVt IGxpZ2h0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0TGlnaHRmdiggR0xlbnVt IGxpZ2h0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdMZmxvYXQgKnBhcmFtcyApOwpleHRlcm4gIHZvaWQgICBnbEdldExpZ2h0aXYoIEdMZW51bSBs aWdodCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH TGludCAqcGFyYW1zICk7CgpleHRlcm4gIHZvaWQgICBnbExpZ2h0TW9kZWxmKCBHTGVudW0gcG5h bWUsIEdMZmxvYXQgcGFyYW0gKTsKZXh0ZXJuICB2b2lkICAgZ2xMaWdodE1vZGVsaSggR0xlbnVt IHBuYW1lLCBHTGludCBwYXJhbSApOwpleHRlcm4gIHZvaWQgICBnbExpZ2h0TW9kZWxmdiggR0xl bnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0ZXJuICB2b2lkICAgZ2xMaWdo dE1vZGVsaXYoIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuICB2 b2lkICAgZ2xNYXRlcmlhbGYoIEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFy YW0gKTsKZXh0ZXJuICB2b2lkICAgZ2xNYXRlcmlhbGkoIEdMZW51bSBmYWNlLCBHTGVudW0gcG5h bWUsIEdMaW50IHBhcmFtICk7CmV4dGVybiAgdm9pZCAgIGdsTWF0ZXJpYWxmdiggR0xlbnVtIGZh Y2UsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiAgdm9pZCAg IGdsTWF0ZXJpYWxpdiggR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBh cmFtcyApOwoKZXh0ZXJuICB2b2lkICAgZ2xHZXRNYXRlcmlhbGZ2KCBHTGVudW0gZmFjZSwgR0xl bnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0ZXJuICB2b2lkICAgZ2xHZXRNYXRlcmlh bGl2KCBHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zICk7CgpleHRlcm4g IHZvaWQgICBnbENvbG9yTWF0ZXJpYWwoIEdMZW51bSBmYWNlLCBHTGVudW0gbW9kZSApOwoKCgoK IAoKCgpleHRlcm4gIHZvaWQgICBnbFBpeGVsWm9vbSggR0xmbG9hdCB4ZmFjdG9yLCBHTGZsb2F0 IHlmYWN0b3IgKTsKCmV4dGVybiAgdm9pZCAgIGdsUGl4ZWxTdG9yZWYoIEdMZW51bSBwbmFtZSwg R0xmbG9hdCBwYXJhbSApOwpleHRlcm4gIHZvaWQgICBnbFBpeGVsU3RvcmVpKCBHTGVudW0gcG5h bWUsIEdMaW50IHBhcmFtICk7CgpleHRlcm4gIHZvaWQgICBnbFBpeGVsVHJhbnNmZXJmKCBHTGVu dW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0gKTsKZXh0ZXJuICB2b2lkICAgZ2xQaXhlbFRyYW5zZmVy aSggR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSApOwoKZXh0ZXJuICB2b2lkICAgZ2xQaXhlbE1h cGZ2KCBHTGVudW0gbWFwLCBHTGludCBtYXBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZXMgKTsKZXh0ZXJuICB2b2lkICAgZ2xQaXhl bE1hcHVpdiggR0xlbnVtIG1hcCwgR0xpbnQgbWFwc2l6ZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWVzICk7CmV4dGVybiAgdm9pZCAgIGds UGl4ZWxNYXB1c3YoIEdMZW51bSBtYXAsIEdMaW50IG1hcHNpemUsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVzaG9ydCAqdmFsdWVzICk7CgpleHRlcm4gIHZv aWQgICBnbEdldFBpeGVsTWFwZnYoIEdMZW51bSBtYXAsIEdMZmxvYXQgKnZhbHVlcyApOwpleHRl cm4gIHZvaWQgICBnbEdldFBpeGVsTWFwdWl2KCBHTGVudW0gbWFwLCBHTHVpbnQgKnZhbHVlcyAp OwpleHRlcm4gIHZvaWQgICBnbEdldFBpeGVsTWFwdXN2KCBHTGVudW0gbWFwLCBHTHVzaG9ydCAq dmFsdWVzICk7CgpleHRlcm4gIHZvaWQgICBnbEJpdG1hcCggR0xzaXplaSB3aWR0aCwgR0xzaXpl aSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB4b3JpZywg R0xmbG9hdCB5b3JpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHht b3ZlLCBHTGZsb2F0IHltb3ZlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IEdMdWJ5dGUgKmJpdG1hcCApOwoKZXh0ZXJuICB2b2lkICAgZ2xSZWFkUGl4ZWxzKCBHTGludCB4 LCBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdp ZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdMdm9pZCAqcGl4ZWxzICk7CgpleHRlcm4gIHZvaWQgICBnbERyYXdQaXhlbHMoIEdM c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMgKTsKCmV4dGVybiAgdm9pZCAgIGds Q29weVBpeGVscyggR0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlICk7CgoKCiAKCgoKZXh0ZXJuICB2b2lkICAg Z2xTdGVuY2lsRnVuYyggR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2sgKTsKCmV4 dGVybiAgdm9pZCAgIGdsU3RlbmNpbE1hc2soIEdMdWludCBtYXNrICk7CgpleHRlcm4gIHZvaWQg ICBnbFN0ZW5jaWxPcCggR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzICk7 CgpleHRlcm4gIHZvaWQgICBnbENsZWFyU3RlbmNpbCggR0xpbnQgcyApOwoKCgogCgoKCmV4dGVy biAgdm9pZCAgIGdsVGV4R2VuZCggR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZG91Ymxl IHBhcmFtICk7CmV4dGVybiAgdm9pZCAgIGdsVGV4R2VuZiggR0xlbnVtIGNvb3JkLCBHTGVudW0g cG5hbWUsIEdMZmxvYXQgcGFyYW0gKTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhHZW5pKCBHTGVudW0g Y29vcmQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0gKTsKCmV4dGVybiAgdm9pZCAgIGdsVGV4 R2VuZHYoIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGRvdWJsZSAqcGFyYW1z ICk7CmV4dGVybiAgdm9pZCAgIGdsVGV4R2VuZnYoIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1l LCBjb25zdCBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhHZW5pdiggR0xl bnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiAg dm9pZCAgIGdsR2V0VGV4R2VuZHYoIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGRvdWJs ZSAqcGFyYW1zICk7CmV4dGVybiAgdm9pZCAgIGdsR2V0VGV4R2VuZnYoIEdMZW51bSBjb29yZCwg R0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0ZXJuICB2b2lkICAgZ2xHZXRUZXhH ZW5pdiggR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMgKTsKCgpleHRl cm4gIHZvaWQgICBnbFRleEVudmYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9h dCBwYXJhbSApOwpleHRlcm4gIHZvaWQgICBnbFRleEVudmkoIEdMZW51bSB0YXJnZXQsIEdMZW51 bSBwbmFtZSwgR0xpbnQgcGFyYW0gKTsKCmV4dGVybiAgdm9pZCAgIGdsVGV4RW52ZnYoIEdMZW51 bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiAg dm9pZCAgIGdsVGV4RW52aXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xp bnQgKnBhcmFtcyApOwoKZXh0ZXJuICB2b2lkICAgZ2xHZXRUZXhFbnZmdiggR0xlbnVtIHRhcmdl dCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0ZXJuICB2b2lkICAgZ2xHZXRU ZXhFbnZpdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zICk7CgoK ZXh0ZXJuICB2b2lkICAgZ2xUZXhQYXJhbWV0ZXJmKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5h bWUsIEdMZmxvYXQgcGFyYW0gKTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhQYXJhbWV0ZXJpKCBHTGVu dW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtICk7CgpleHRlcm4gIHZvaWQgICBn bFRleFBhcmFtZXRlcmZ2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyApOwpl eHRlcm4gIHZvaWQgICBnbFRleFBhcmFtZXRlcml2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5h bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50 ICpwYXJhbXMgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0VGV4UGFyYW1ldGVyZnYoIEdMZW51bSB0 YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g cG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CmV4dGVybiAgdm9pZCAgIGdsR2V0VGV4UGFyYW1ldGVy aXYoIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0 VGV4TGV2ZWxQYXJhbWV0ZXJmdiggR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwgR0xm bG9hdCAqcGFyYW1zICk7CmV4dGVybiAgdm9pZCAgIGdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdigg R0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyApOwoKCmV4dGVy biAgdm9pZCAgIGdsVGV4SW1hZ2UxRCggR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVybmFsRm9ybWF0LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTGludCBib3Jk ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdM ZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZv aWQgKnBpeGVscyApOwoKZXh0ZXJuICB2b2lkICAgZ2xUZXhJbWFnZTJEKCBHTGVudW0gdGFyZ2V0 LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg aW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6 ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscyApOwoKZXh0ZXJu ICB2b2lkICAgZ2xHZXRUZXhJbWFnZSggR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlw ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzICk7 CgoKCiAKCmV4dGVybiAgdm9pZCAgIGdsR2VuVGV4dHVyZXMoIEdMc2l6ZWkgbiwgR0x1aW50ICp0 ZXh0dXJlcyApOwoKZXh0ZXJuICB2b2lkICAgZ2xEZWxldGVUZXh0dXJlcyggR0xzaXplaSBuLCBj b25zdCBHTHVpbnQgKnRleHR1cmVzKTsKCmV4dGVybiAgdm9pZCAgIGdsQmluZFRleHR1cmUoIEdM ZW51bSB0YXJnZXQsIEdMdWludCB0ZXh0dXJlICk7CgpleHRlcm4gIHZvaWQgICBnbFByaW9yaXRp emVUZXh0dXJlcyggR0xzaXplaSBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IEdMdWludCAqdGV4dHVyZXMsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjbGFtcGYgKnByaW9yaXRpZXMgKTsKCmV4dGVy biAgR0xib29sZWFuICAgZ2xBcmVUZXh0dXJlc1Jlc2lkZW50KCBHTHNpemVpIG4sCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp0 ZXh0dXJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHTGJvb2xlYW4gKnJlc2lkZW5jZXMgKTsKCmV4dGVybiAgR0xib29sZWFuICAgZ2xJc1RleHR1 cmUoIEdMdWludCB0ZXh0dXJlICk7CgoKZXh0ZXJuICB2b2lkICAgZ2xUZXhTdWJJbWFnZTFEKCBH TGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0xpbnQgeG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR0xzaXplaSB3aWR0aCwgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4ZWxzICk7CgoK ZXh0ZXJuICB2b2lkICAgZ2xUZXhTdWJJbWFnZTJEKCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZl bCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwg R0xpbnQgeW9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscyApOwoKCmV4dGVybiAgdm9p ZCAgIGdsQ29weVRleEltYWdlMUQoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwgR0xpbnQgeSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdM aW50IGJvcmRlciApOwoKCmV4dGVybiAgdm9pZCAgIGdsQ29weVRleEltYWdlMkQoIEdMZW51bSB0 YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyICk7CgoKZXh0ZXJuICB2b2lkICAg Z2xDb3B5VGV4U3ViSW1hZ2UxRCggR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LCBHTGludCB4 LCBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz aXplaSB3aWR0aCApOwoKCmV4dGVybiAgdm9pZCAgIGdsQ29weVRleFN1YkltYWdlMkQoIEdMZW51 bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo dCApOwoKCgoKIAoKCgpleHRlcm4gIHZvaWQgICBnbE1hcDFkKCBHTGVudW0gdGFyZ2V0LCBHTGRv dWJsZSB1MSwgR0xkb3VibGUgdTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu dCBzdHJpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBvcmRlciwgY29u c3QgR0xkb3VibGUgKnBvaW50cyApOwpleHRlcm4gIHZvaWQgICBnbE1hcDFmKCBHTGVudW0gdGFy Z2V0LCBHTGZsb2F0IHUxLCBHTGZsb2F0IHUyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR0xpbnQgc3RyaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgb3Jk ZXIsIGNvbnN0IEdMZmxvYXQgKnBvaW50cyApOwoKZXh0ZXJuICB2b2lkICAgZ2xNYXAyZCggR0xl bnVtIHRhcmdldCwKCQkgICAgIEdMZG91YmxlIHUxLCBHTGRvdWJsZSB1MiwgR0xpbnQgdXN0cmlk ZSwgR0xpbnQgdW9yZGVyLAoJCSAgICAgR0xkb3VibGUgdjEsIEdMZG91YmxlIHYyLCBHTGludCB2 c3RyaWRlLCBHTGludCB2b3JkZXIsCgkJICAgICBjb25zdCBHTGRvdWJsZSAqcG9pbnRzICk7CmV4 dGVybiAgdm9pZCAgIGdsTWFwMmYoIEdMZW51bSB0YXJnZXQsCgkJICAgICBHTGZsb2F0IHUxLCBH TGZsb2F0IHUyLCBHTGludCB1c3RyaWRlLCBHTGludCB1b3JkZXIsCgkJICAgICBHTGZsb2F0IHYx LCBHTGZsb2F0IHYyLCBHTGludCB2c3RyaWRlLCBHTGludCB2b3JkZXIsCgkJICAgICBjb25zdCBH TGZsb2F0ICpwb2ludHMgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0TWFwZHYoIEdMZW51bSB0YXJn ZXQsIEdMZW51bSBxdWVyeSwgR0xkb3VibGUgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xHZXRNYXBm diggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHF1ZXJ5LCBHTGZsb2F0ICp2ICk7CmV4dGVybiAgdm9p ZCAgIGdsR2V0TWFwaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBxdWVyeSwgR0xpbnQgKnYgKTsK CmV4dGVybiAgdm9pZCAgIGdsRXZhbENvb3JkMWQoIEdMZG91YmxlIHUgKTsKZXh0ZXJuICB2b2lk ICAgZ2xFdmFsQ29vcmQxZiggR0xmbG9hdCB1ICk7CgpleHRlcm4gIHZvaWQgICBnbEV2YWxDb29y ZDFkdiggY29uc3QgR0xkb3VibGUgKnUgKTsKZXh0ZXJuICB2b2lkICAgZ2xFdmFsQ29vcmQxZnYo IGNvbnN0IEdMZmxvYXQgKnUgKTsKCmV4dGVybiAgdm9pZCAgIGdsRXZhbENvb3JkMmQoIEdMZG91 YmxlIHUsIEdMZG91YmxlIHYgKTsKZXh0ZXJuICB2b2lkICAgZ2xFdmFsQ29vcmQyZiggR0xmbG9h dCB1LCBHTGZsb2F0IHYgKTsKCmV4dGVybiAgdm9pZCAgIGdsRXZhbENvb3JkMmR2KCBjb25zdCBH TGRvdWJsZSAqdSApOwpleHRlcm4gIHZvaWQgICBnbEV2YWxDb29yZDJmdiggY29uc3QgR0xmbG9h dCAqdSApOwoKZXh0ZXJuICB2b2lkICAgZ2xNYXBHcmlkMWQoIEdMaW50IHVuLCBHTGRvdWJsZSB1 MSwgR0xkb3VibGUgdTIgKTsKZXh0ZXJuICB2b2lkICAgZ2xNYXBHcmlkMWYoIEdMaW50IHVuLCBH TGZsb2F0IHUxLCBHTGZsb2F0IHUyICk7CgpleHRlcm4gIHZvaWQgICBnbE1hcEdyaWQyZCggR0xp bnQgdW4sIEdMZG91YmxlIHUxLCBHTGRvdWJsZSB1MiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHTGludCB2biwgR0xkb3VibGUgdjEsIEdMZG91YmxlIHYyICk7CmV4dGVybiAg dm9pZCAgIGdsTWFwR3JpZDJmKCBHTGludCB1biwgR0xmbG9hdCB1MSwgR0xmbG9hdCB1MiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2biwgR0xmbG9hdCB2MSwgR0xm bG9hdCB2MiApOwoKZXh0ZXJuICB2b2lkICAgZ2xFdmFsUG9pbnQxKCBHTGludCBpICk7CgpleHRl cm4gIHZvaWQgICBnbEV2YWxQb2ludDIoIEdMaW50IGksIEdMaW50IGogKTsKCmV4dGVybiAgdm9p ZCAgIGdsRXZhbE1lc2gxKCBHTGVudW0gbW9kZSwgR0xpbnQgaTEsIEdMaW50IGkyICk7CgpleHRl cm4gIHZvaWQgICBnbEV2YWxNZXNoMiggR0xlbnVtIG1vZGUsIEdMaW50IGkxLCBHTGludCBpMiwg R0xpbnQgajEsIEdMaW50IGoyICk7CgoKCiAKCgoKZXh0ZXJuICB2b2lkICAgZ2xGb2dmKCBHTGVu dW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0gKTsKCmV4dGVybiAgdm9pZCAgIGdsRm9naSggR0xlbnVt IHBuYW1lLCBHTGludCBwYXJhbSApOwoKZXh0ZXJuICB2b2lkICAgZ2xGb2dmdiggR0xlbnVtIHBu YW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMgKTsKCmV4dGVybiAgdm9pZCAgIGdsRm9naXYoIEdM ZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyApOwoKCgogCgoKCmV4dGVybiAgdm9pZCAg IGdsRmVlZGJhY2tCdWZmZXIoIEdMc2l6ZWkgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMZmxvYXQgKmJ1 ZmZlciApOwoKZXh0ZXJuICB2b2lkICAgZ2xQYXNzVGhyb3VnaCggR0xmbG9hdCB0b2tlbiApOwoK ZXh0ZXJuICB2b2lkICAgZ2xTZWxlY3RCdWZmZXIoIEdMc2l6ZWkgc2l6ZSwgR0x1aW50ICpidWZm ZXIgKTsKCmV4dGVybiAgdm9pZCAgIGdsSW5pdE5hbWVzKCB2b2lkICk7CgpleHRlcm4gIHZvaWQg ICBnbExvYWROYW1lKCBHTHVpbnQgbmFtZSApOwoKZXh0ZXJuICB2b2lkICAgZ2xQdXNoTmFtZSgg R0x1aW50IG5hbWUgKTsKCmV4dGVybiAgdm9pZCAgIGdsUG9wTmFtZSggdm9pZCApOwoKCgogCmV4 dGVybiAgdm9pZCAgIGdsRHJhd1JhbmdlRWxlbWVudHMoIEdMZW51bSBtb2RlLCBHTHVpbnQgc3Rh cnQsCglHTHVpbnQgZW5kLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lk ICppbmRpY2VzICk7CgpleHRlcm4gIHZvaWQgICBnbFRleEltYWdlM0QoIEdMZW51bSB0YXJnZXQs IEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50 IGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscyApOwoKZXh0 ZXJuICB2b2lkICAgZ2xUZXhTdWJJbWFnZTNEKCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LCBH TGludCB5b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM aW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpwaXhl bHMpOwoKZXh0ZXJuICB2b2lkICAgZ2xDb3B5VGV4U3ViSW1hZ2UzRCggR0xlbnVtIHRhcmdldCwg R0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdMaW50IHpvZmZzZXQsIEdMaW50IHgsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0 ICk7CgoKIAoKZXh0ZXJuICB2b2lkICAgZ2xDb2xvclRhYmxlKCBHTGVudW0gdGFyZ2V0LCBHTGVu dW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM c2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnRhYmxlICk7CgpleHRlcm4gIHZvaWQg ICBnbENvbG9yU3ViVGFibGUoIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RhcnQsIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmRhdGEg KTsKCmV4dGVybiAgdm9pZCAgIGdsQ29sb3JUYWJsZVBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQs IEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOwoKZXh0ZXJuICB2b2lkICAgZ2xDb2xvclRhYmxlUGFy YW1ldGVyZnYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKCmV4dGVy biAgdm9pZCAgIGdsQ29weUNvbG9yU3ViVGFibGUoIEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc3Rh cnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LCBH TGludCB5LCBHTHNpemVpIHdpZHRoICk7CgpleHRlcm4gIHZvaWQgICBnbENvcHlDb2xvclRhYmxl KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoICk7 CgpleHRlcm4gIHZvaWQgICBnbEdldENvbG9yVGFibGUoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBm b3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl LCBHTHZvaWQgKnRhYmxlICk7CgpleHRlcm4gIHZvaWQgICBnbEdldENvbG9yVGFibGVQYXJhbWV0 ZXJmdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcyApOwoKZXh0ZXJuICB2 b2lkICAgZ2xHZXRDb2xvclRhYmxlUGFyYW1ldGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBw bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH TGludCAqcGFyYW1zICk7CgpleHRlcm4gIHZvaWQgICBnbEJsZW5kRXF1YXRpb24oIEdMZW51bSBt b2RlICk7CgpleHRlcm4gIHZvaWQgICBnbEJsZW5kQ29sb3IoIEdMY2xhbXBmIHJlZCwgR0xjbGFt cGYgZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2xhbXBmIGJs dWUsIEdMY2xhbXBmIGFscGhhICk7CgpleHRlcm4gIHZvaWQgICBnbEhpc3RvZ3JhbSggR0xlbnVt IHRhcmdldCwgR0xzaXplaSB3aWR0aCwKCQkJCSAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xi b29sZWFuIHNpbmsgKTsKCmV4dGVybiAgdm9pZCAgIGdsUmVzZXRIaXN0b2dyYW0oIEdMZW51bSB0 YXJnZXQgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0SGlzdG9ncmFtKCBHTGVudW0gdGFyZ2V0LCBH TGJvb2xlYW4gcmVzZXQsCgkJCQkgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKCQkJ CSAgICAgIEdMdm9pZCAqdmFsdWVzICk7CgpleHRlcm4gIHZvaWQgICBnbEdldEhpc3RvZ3JhbVBh cmFtZXRlcmZ2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCgkJCQkJCSBHTGZsb2F0ICpw YXJhbXMgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0SGlzdG9ncmFtUGFyYW1ldGVyaXYoIEdMZW51 bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKCQkJCQkJIEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiAg dm9pZCAgIGdsTWlubWF4KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCgkJ CQlHTGJvb2xlYW4gc2luayApOwoKZXh0ZXJuICB2b2lkICAgZ2xSZXNldE1pbm1heCggR0xlbnVt IHRhcmdldCApOwoKZXh0ZXJuICB2b2lkICAgZ2xHZXRNaW5tYXgoIEdMZW51bSB0YXJnZXQsIEdM Ym9vbGVhbiByZXNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g Zm9ybWF0LCBHTGVudW0gdHlwZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R0x2b2lkICp2YWx1ZXMgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0TWlubWF4UGFyYW1ldGVyZnYo IEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKCQkJCQkgICAgICBHTGZsb2F0ICpwYXJhbXMg KTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0TWlubWF4UGFyYW1ldGVyaXYoIEdMZW51bSB0YXJnZXQs IEdMZW51bSBwbmFtZSwKCQkJCQkgICAgICBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gIHZvaWQg ICBnbENvbnZvbHV0aW9uRmlsdGVyMUQoIEdMZW51bSB0YXJnZXQsCglHTGVudW0gaW50ZXJuYWxm b3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAoJY29uc3Qg R0x2b2lkICppbWFnZSApOwoKZXh0ZXJuICB2b2lkICAgZ2xDb252b2x1dGlvbkZpbHRlcjJEKCBH TGVudW0gdGFyZ2V0LAoJR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNp emVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwKCUdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmlt YWdlICk7CgpleHRlcm4gIHZvaWQgICBnbENvbnZvbHV0aW9uUGFyYW1ldGVyZiggR0xlbnVtIHRh cmdldCwgR0xlbnVtIHBuYW1lLAoJR0xmbG9hdCBwYXJhbXMgKTsKCmV4dGVybiAgdm9pZCAgIGds Q29udm9sdXRpb25QYXJhbWV0ZXJmdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLAoJY29u c3QgR0xmbG9hdCAqcGFyYW1zICk7CgpleHRlcm4gIHZvaWQgICBnbENvbnZvbHV0aW9uUGFyYW1l dGVyaSggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLAoJR0xpbnQgcGFyYW1zICk7CgpleHRl cm4gIHZvaWQgICBnbENvbnZvbHV0aW9uUGFyYW1ldGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51 bSBwbmFtZSwKCWNvbnN0IEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiAgdm9pZCAgIGdsQ29weUNv bnZvbHV0aW9uRmlsdGVyMUQoIEdMZW51bSB0YXJnZXQsCglHTGVudW0gaW50ZXJuYWxmb3JtYXQs IEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGggKTsKCmV4dGVybiAgdm9pZCAgIGdsQ29w eUNvbnZvbHV0aW9uRmlsdGVyMkQoIEdMZW51bSB0YXJnZXQsCglHTGVudW0gaW50ZXJuYWxmb3Jt YXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsCglHTHNpemVpIGhlaWdodCk7Cgpl eHRlcm4gIHZvaWQgICBnbEdldENvbnZvbHV0aW9uRmlsdGVyKCBHTGVudW0gdGFyZ2V0LCBHTGVu dW0gZm9ybWF0LAoJR0xlbnVtIHR5cGUsIEdMdm9pZCAqaW1hZ2UgKTsKCmV4dGVybiAgdm9pZCAg IGdsR2V0Q29udm9sdXRpb25QYXJhbWV0ZXJmdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1l LAoJR0xmbG9hdCAqcGFyYW1zICk7CgpleHRlcm4gIHZvaWQgICBnbEdldENvbnZvbHV0aW9uUGFy YW1ldGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKCUdMaW50ICpwYXJhbXMgKTsK CmV4dGVybiAgdm9pZCAgIGdsU2VwYXJhYmxlRmlsdGVyMkQoIEdMZW51bSB0YXJnZXQsCglHTGVu dW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0g Zm9ybWF0LAoJR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcm93LCBjb25zdCBHTHZvaWQgKmNv bHVtbiApOwoKZXh0ZXJuICB2b2lkICAgZ2xHZXRTZXBhcmFibGVGaWx0ZXIoIEdMZW51bSB0YXJn ZXQsIEdMZW51bSBmb3JtYXQsCglHTGVudW0gdHlwZSwgR0x2b2lkICpyb3csIEdMdm9pZCAqY29s dW1uLCBHTHZvaWQgKnNwYW4gKTsKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCmV4dGVybiAgdm9pZCAgIGdsQWN0aXZlVGV4dHVyZUFSQihHTGVudW0gdGV4dHVy ZSk7CmV4dGVybiAgdm9pZCAgIGdsQ2xpZW50QWN0aXZlVGV4dHVyZUFSQihHTGVudW0gdGV4dHVy ZSk7CmV4dGVybiAgdm9pZCAgIGdsTXVsdGlUZXhDb29yZDFkQVJCKEdMZW51bSB0YXJnZXQsIEdM ZG91YmxlIHMpOwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4Q29vcmQxZHZBUkIoR0xlbnVtIHRh cmdldCwgY29uc3QgR0xkb3VibGUgKnYpOwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4Q29vcmQx ZkFSQihHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMpOwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4 Q29vcmQxZnZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xmbG9hdCAqdik7CmV4dGVybiAgdm9p ZCAgIGdsTXVsdGlUZXhDb29yZDFpQVJCKEdMZW51bSB0YXJnZXQsIEdMaW50IHMpOwpleHRlcm4g IHZvaWQgICBnbE11bHRpVGV4Q29vcmQxaXZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQg KnYpOwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4Q29vcmQxc0FSQihHTGVudW0gdGFyZ2V0LCBH THNob3J0IHMpOwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4Q29vcmQxc3ZBUkIoR0xlbnVtIHRh cmdldCwgY29uc3QgR0xzaG9ydCAqdik7CmV4dGVybiAgdm9pZCAgIGdsTXVsdGlUZXhDb29yZDJk QVJCKEdMZW51bSB0YXJnZXQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQpOwpleHRlcm4gIHZvaWQg ICBnbE11bHRpVGV4Q29vcmQyZHZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xkb3VibGUgKnYp OwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4Q29vcmQyZkFSQihHTGVudW0gdGFyZ2V0LCBHTGZs b2F0IHMsIEdMZmxvYXQgdCk7CmV4dGVybiAgdm9pZCAgIGdsTXVsdGlUZXhDb29yZDJmdkFSQihH TGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0ICp2KTsKZXh0ZXJuICB2b2lkICAgZ2xNdWx0aVRl eENvb3JkMmlBUkIoR0xlbnVtIHRhcmdldCwgR0xpbnQgcywgR0xpbnQgdCk7CmV4dGVybiAgdm9p ZCAgIGdsTXVsdGlUZXhDb29yZDJpdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGludCAqdik7 CmV4dGVybiAgdm9pZCAgIGdsTXVsdGlUZXhDb29yZDJzQVJCKEdMZW51bSB0YXJnZXQsIEdMc2hv cnQgcywgR0xzaG9ydCB0KTsKZXh0ZXJuICB2b2lkICAgZ2xNdWx0aVRleENvb3JkMnN2QVJCKEdM ZW51bSB0YXJnZXQsIGNvbnN0IEdMc2hvcnQgKnYpOwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4 Q29vcmQzZEFSQihHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJs ZSByKTsKZXh0ZXJuICB2b2lkICAgZ2xNdWx0aVRleENvb3JkM2R2QVJCKEdMZW51bSB0YXJnZXQs IGNvbnN0IEdMZG91YmxlICp2KTsKZXh0ZXJuICB2b2lkICAgZ2xNdWx0aVRleENvb3JkM2ZBUkIo R0xlbnVtIHRhcmdldCwgR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgcik7CmV4dGVybiAg dm9pZCAgIGdsTXVsdGlUZXhDb29yZDNmdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0 ICp2KTsKZXh0ZXJuICB2b2lkICAgZ2xNdWx0aVRleENvb3JkM2lBUkIoR0xlbnVtIHRhcmdldCwg R0xpbnQgcywgR0xpbnQgdCwgR0xpbnQgcik7CmV4dGVybiAgdm9pZCAgIGdsTXVsdGlUZXhDb29y ZDNpdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGludCAqdik7CmV4dGVybiAgdm9pZCAgIGds TXVsdGlUZXhDb29yZDNzQVJCKEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xzaG9ydCB0LCBH THNob3J0IHIpOwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4Q29vcmQzc3ZBUkIoR0xlbnVtIHRh cmdldCwgY29uc3QgR0xzaG9ydCAqdik7CmV4dGVybiAgdm9pZCAgIGdsTXVsdGlUZXhDb29yZDRk QVJCKEdMZW51bSB0YXJnZXQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQsIEdMZG91YmxlIHIsIEdM ZG91YmxlIHEpOwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4Q29vcmQ0ZHZBUkIoR0xlbnVtIHRh cmdldCwgY29uc3QgR0xkb3VibGUgKnYpOwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4Q29vcmQ0 ZkFSQihHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByLCBHTGZs b2F0IHEpOwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4Q29vcmQ0ZnZBUkIoR0xlbnVtIHRhcmdl dCwgY29uc3QgR0xmbG9hdCAqdik7CmV4dGVybiAgdm9pZCAgIGdsTXVsdGlUZXhDb29yZDRpQVJC KEdMZW51bSB0YXJnZXQsIEdMaW50IHMsIEdMaW50IHQsIEdMaW50IHIsIEdMaW50IHEpOwpleHRl cm4gIHZvaWQgICBnbE11bHRpVGV4Q29vcmQ0aXZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xp bnQgKnYpOwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4Q29vcmQ0c0FSQihHTGVudW0gdGFyZ2V0 LCBHTHNob3J0IHMsIEdMc2hvcnQgdCwgR0xzaG9ydCByLCBHTHNob3J0IHEpOwpleHRlcm4gIHZv aWQgICBnbE11bHRpVGV4Q29vcmQ0c3ZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAq dik7CgoKCgoKCiMgMjI0MyAiL3Vzci9pbmNsdWRlL0dML2dsLmgiIDMKCgojIDEgIi91c3IvaW5j bHVkZS9HTC9nbGV4dC5oIiAxIDMKCgoKCmV4dGVybiAiQyIgewoKCiAKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCgojIDE0MSAiL3Vzci9pbmNsdWRlL0dML2dsZXh0 LmgiIDMKCgojIDE3OSAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgogCiAKIAogCiAKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCiAKCiMgMTU5MyAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKCgojIDE2 NjcgIi91c3IvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCgoKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAg KiBQRk5HTExPQURUUkFOU1BPU0VNQVRSSVhGQVJCUFJPQykgKGNvbnN0IEdMZmxvYXQgKm0pOwp0 eXBlZGVmIHZvaWQgKCAgKiBQRk5HTExPQURUUkFOU1BPU0VNQVRSSVhEQVJCUFJPQykgKGNvbnN0 IEdMZG91YmxlICptKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xNVUxUVFJBTlNQT1NFTUFUUklY RkFSQlBST0MpIChjb25zdCBHTGZsb2F0ICptKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xNVUxU VFJBTlNQT1NFTUFUUklYREFSQlBST0MpIChjb25zdCBHTGRvdWJsZSAqbSk7CgoKCgoKCgoKdHlw ZWRlZiB2b2lkICggICogUEZOR0xTQU1QTEVDT1ZFUkFHRUFSQlBST0MpIChHTGNsYW1wZiB2YWx1 ZSwgR0xib29sZWFuIGludmVydCk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMU0FNUExFUEFTU0FS QlBST0MpIChHTGVudW0gcGFzcyk7CgoKCgoKCgoKCgoKCiMgMTcxMSAiL3Vzci9pbmNsdWRlL0dM L2dsZXh0LmgiIDMKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09NUFJFU1NFRFRFWElNQUdFM0RB UkJQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1h dCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJv cmRlciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqZGF0YSk7CnR5cGVkZWYgdm9p ZCAoICAqIFBGTkdMQ09NUFJFU1NFRFRFWElNQUdFMkRBUkJQUk9DKSAoR0xlbnVtIHRhcmdldCwg R0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXpl aSBoZWlnaHQsIEdMaW50IGJvcmRlciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCAq ZGF0YSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09NUFJFU1NFRFRFWElNQUdFMURBUkJQUk9D KSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xz aXplaSB3aWR0aCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lk ICpkYXRhKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xDT01QUkVTU0VEVEVYU1VCSU1BR0UzREFS QlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQg eW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdM c2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZv aWQgKmRhdGEpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTENPTVBSRVNTRURURVhTVUJJTUFHRTJE QVJCUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGlu dCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwg R0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqZGF0YSk7CnR5cGVkZWYgdm9pZCAoICAq IFBGTkdMQ09NUFJFU1NFRFRFWFNVQklNQUdFMURBUkJQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xp bnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsIEdM c2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQgKmRhdGEpOwp0eXBlZGVmIHZvaWQgKCAgKiBQ Rk5HTEdFVENPTVBSRVNTRURURVhJTUFHRUFSQlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBs ZXZlbCwgdm9pZCAqaW1nKTsKCgoKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEJMRU5E Q09MT1JFWFRQUk9DKSAoR0xjbGFtcGYgcmVkLCBHTGNsYW1wZiBncmVlbiwgR0xjbGFtcGYgYmx1 ZSwgR0xjbGFtcGYgYWxwaGEpOwoKCgoKCgoKdHlwZWRlZiB2b2lkICggICogUEZOR0xQT0xZR09O T0ZGU0VURVhUUFJPQykgKEdMZmxvYXQgZmFjdG9yLCBHTGZsb2F0IGJpYXMpOwoKCgoKCgoKCgoK Cgp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFRFWElNQUdFM0RFWFRQUk9DKSAoR0xlbnVtIHRhcmdl dCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xz aXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwg R0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsKdHlwZWRlZiB2b2lkICggICogUEZO R0xURVhTVUJJTUFHRTNERVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGlu dCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBH THNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUs IGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdF VFRFWEZJTFRFUkZVTkNTR0lTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBmaWx0ZXIsIEdM ZmxvYXQgKndlaWdodHMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFRFWEZJTFRFUkZVTkNTR0lT UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBmaWx0ZXIsIEdMc2l6ZWkgbiwgY29uc3QgR0xm bG9hdCAqd2VpZ2h0cyk7CgoKCgoKCgoKdHlwZWRlZiB2b2lkICggICogUEZOR0xURVhTVUJJTUFH RTFERVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBH THNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpw aXhlbHMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFRFWFNVQklNQUdFMkRFWFRQUk9DKSAoR0xl bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdM c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwg Y29uc3QgR0x2b2lkICpwaXhlbHMpOwoKCgoKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdM Q09QWVRFWElNQUdFMURFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51 bSBpbnRlcm5hbGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xpbnQg Ym9yZGVyKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xDT1BZVEVYSU1BR0UyREVYVFBST0MpIChH TGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGludCB4 LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyKTsK dHlwZWRlZiB2b2lkICggICogUEZOR0xDT1BZVEVYU1VCSU1BR0UxREVYVFBST0MpIChHTGVudW0g dGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xz aXplaSB3aWR0aCk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09QWVRFWFNVQklNQUdFMkRFWFRQ Uk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlv ZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsK dHlwZWRlZiB2b2lkICggICogUEZOR0xDT1BZVEVYU1VCSU1BR0UzREVYVFBST0MpIChHTGVudW0g dGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQg em9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp OwoKCgoKIyAxODA0ICIvdXNyL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwoKdHlwZWRlZiB2b2lkICgg ICogUEZOR0xHRVRISVNUT0dSQU1FWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xib29sZWFuIHJl c2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICp2YWx1ZXMpOwp0eXBlZGVm IHZvaWQgKCAgKiBQRk5HTEdFVEhJU1RPR1JBTVBBUkFNRVRFUkZWRVhUUFJPQykgKEdMZW51bSB0 YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggICog UEZOR0xHRVRISVNUT0dSQU1QQVJBTUVURVJJVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVu dW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFVE1JTk1B WEVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGJvb2xlYW4gcmVzZXQsIEdMZW51bSBmb3JtYXQs IEdMZW51bSB0eXBlLCBHTHZvaWQgKnZhbHVlcyk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMR0VU TUlOTUFYUEFSQU1FVEVSRlZFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBH TGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFVE1JTk1BWFBBUkFNRVRF UklWRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7 CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMSElTVE9HUkFNRVhUUFJPQykgKEdMZW51bSB0YXJnZXQs IEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xib29sZWFuIHNpbmspOwp0 eXBlZGVmIHZvaWQgKCAgKiBQRk5HTE1JTk1BWEVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVu dW0gaW50ZXJuYWxmb3JtYXQsIEdMYm9vbGVhbiBzaW5rKTsKdHlwZWRlZiB2b2lkICggICogUEZO R0xSRVNFVEhJU1RPR1JBTUVYVFBST0MpIChHTGVudW0gdGFyZ2V0KTsKdHlwZWRlZiB2b2lkICgg ICogUEZOR0xSRVNFVE1JTk1BWEVYVFBST0MpIChHTGVudW0gdGFyZ2V0KTsKCgoKCiMgMTgzMyAi L3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09OVk9M VVRJT05GSUxURVIxREVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3Jt YXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZv aWQgKmltYWdlKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xDT05WT0xVVElPTkZJTFRFUjJERVhU UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0 aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZv aWQgKmltYWdlKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xDT05WT0xVVElPTlBBUkFNRVRFUkZF WFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtcyk7CnR5 cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09OVk9MVVRJT05QQVJBTUVURVJGVkVYVFBST0MpIChHTGVu dW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYg dm9pZCAoICAqIFBGTkdMQ09OVk9MVVRJT05QQVJBTUVURVJJRVhUUFJPQykgKEdMZW51bSB0YXJn ZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xD T05WT0xVVElPTlBBUkFNRVRFUklWRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt ZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09QWUNPTlZP TFVUSU9ORklMVEVSMURFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9y bWF0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoKTsKdHlwZWRlZiB2b2lkICggICog UEZOR0xDT1BZQ09OVk9MVVRJT05GSUxURVIyREVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVu dW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6 ZWkgaGVpZ2h0KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xHRVRDT05WT0xVVElPTkZJTFRFUkVY VFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lk ICppbWFnZSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMR0VUQ09OVk9MVVRJT05QQVJBTUVURVJG VkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7 CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMR0VUQ09OVk9MVVRJT05QQVJBTUVURVJJVkVYVFBST0Mp IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZv aWQgKCAgKiBQRk5HTEdFVFNFUEFSQUJMRUZJTFRFUkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBH TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICpyb3csIEdMdm9pZCAqY29sdW1uLCBH THZvaWQgKnNwYW4pOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFNFUEFSQUJMRUZJTFRFUjJERVhU UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0 aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZv aWQgKnJvdywgY29uc3QgR0x2b2lkICpjb2x1bW4pOwoKCgoKCgoKCiMgMTg2MyAiL3Vzci9pbmNs dWRlL0dML2dsZXh0LmgiIDMKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09MT1JUQUJMRVNHSVBS T0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgs IEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnRhYmxlKTsKdHlwZWRl ZiB2b2lkICggICogUEZOR0xDT0xPUlRBQkxFUEFSQU1FVEVSRlZTR0lQUk9DKSAoR0xlbnVtIHRh cmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQg KCAgKiBQRk5HTENPTE9SVEFCTEVQQVJBTUVURVJJVlNHSVBST0MpIChHTGVudW0gdGFyZ2V0LCBH TGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5H TENPUFlDT0xPUlRBQkxFU0dJUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZv cm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCk7CnR5cGVkZWYgdm9pZCAoICAq IFBGTkdMR0VUQ09MT1JUQUJMRVNHSVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gZm9ybWF0 LCBHTGVudW0gdHlwZSwgR0x2b2lkICp0YWJsZSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMR0VU Q09MT1JUQUJMRVBBUkFNRVRFUkZWU0dJUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt ZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xHRVRDT0xPUlRBQkxF UEFSQU1FVEVSSVZTR0lQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAq cGFyYW1zKTsKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMUElYRUxURVhHRU5TR0lYUFJP QykgKEdMZW51bSBtb2RlKTsKCgoKCgoKCgoKCgoKdHlwZWRlZiB2b2lkICggICogUEZOR0xQSVhF TFRFWEdFTlBBUkFNRVRFUklTR0lTUFJPQykgKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwp0 eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFBJWEVMVEVYR0VOUEFSQU1FVEVSSVZTR0lTUFJPQykgKEdM ZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdM UElYRUxURVhHRU5QQVJBTUVURVJGU0dJU1BST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFy YW0pOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFBJWEVMVEVYR0VOUEFSQU1FVEVSRlZTR0lTUFJP QykgKEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICgg ICogUEZOR0xHRVRQSVhFTFRFWEdFTlBBUkFNRVRFUklWU0dJU1BST0MpIChHTGVudW0gcG5hbWUs IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFVFBJWEVMVEVYR0VOUEFS QU1FVEVSRlZTR0lTUFJPQykgKEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKCgoKCgoK Cgp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFRFWElNQUdFNERTR0lTUFJPQykgKEdMZW51bSB0YXJn ZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdM c2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTHNpemVpIHNpemU0ZCwgR0xpbnQgYm9yZGVy LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpwaXhlbHMpOwp0eXBl ZGVmIHZvaWQgKCAgKiBQRk5HTFRFWFNVQklNQUdFNERTR0lTUFJPQykgKEdMZW51bSB0YXJnZXQs IEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0 LCBHTGludCB3b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBk ZXB0aCwgR0xzaXplaSBzaXplNGQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBH THZvaWQgKnBpeGVscyk7CgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBHTGJvb2xlYW4gKCAg KiBQRk5HTEFSRVRFWFRVUkVTUkVTSURFTlRFWFRQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTHVp bnQgKnRleHR1cmVzLCBHTGJvb2xlYW4gKnJlc2lkZW5jZXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQ Rk5HTEJJTkRURVhUVVJFRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCB0ZXh0dXJlKTsK dHlwZWRlZiB2b2lkICggICogUEZOR0xERUxFVEVURVhUVVJFU0VYVFBST0MpIChHTHNpemVpIG4s IGNvbnN0IEdMdWludCAqdGV4dHVyZXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFTlRFWFRV UkVTRVhUUFJPQykgKEdMc2l6ZWkgbiwgR0x1aW50ICp0ZXh0dXJlcyk7CnR5cGVkZWYgR0xib29s ZWFuICggICogUEZOR0xJU1RFWFRVUkVFWFRQUk9DKSAoR0x1aW50IHRleHR1cmUpOwp0eXBlZGVm IHZvaWQgKCAgKiBQRk5HTFBSSU9SSVRJWkVURVhUVVJFU0VYVFBST0MpIChHTHNpemVpIG4sIGNv bnN0IEdMdWludCAqdGV4dHVyZXMsIGNvbnN0IEdMY2xhbXBmICpwcmlvcml0aWVzKTsKCgoKCgoK Cgp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTERFVEFJTFRFWEZVTkNTR0lTUFJPQykgKEdMZW51bSB0 YXJnZXQsIEdMc2l6ZWkgbiwgY29uc3QgR0xmbG9hdCAqcG9pbnRzKTsKdHlwZWRlZiB2b2lkICgg ICogUEZOR0xHRVRERVRBSUxURVhGVU5DU0dJU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGZsb2F0 ICpwb2ludHMpOwoKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMU0hBUlBFTlRFWEZVTkNT R0lTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbiwgY29uc3QgR0xmbG9hdCAqcG9pbnRz KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xHRVRTSEFSUEVOVEVYRlVOQ1NHSVNQUk9DKSAoR0xl bnVtIHRhcmdldCwgR0xmbG9hdCAqcG9pbnRzKTsKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgdm9p ZCAoICAqIFBGTkdMU0FNUExFTUFTS1NHSVNQUk9DKSAoR0xjbGFtcGYgdmFsdWUsIEdMYm9vbGVh biBpbnZlcnQpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFNBTVBMRVBBVFRFUk5TR0lTUFJPQykg KEdMZW51bSBwYXR0ZXJuKTsKCgoKCgoKCgojIDE5ODkgIi91c3IvaW5jbHVkZS9HTC9nbGV4dC5o IiAzCgp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEFSUkFZRUxFTUVOVEVYVFBST0MpIChHTGludCBp KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xDT0xPUlBPSU5URVJFWFRQUk9DKSAoR0xpbnQgc2l6 ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHZv aWQgKnBvaW50ZXIpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTERSQVdBUlJBWVNFWFRQUk9DKSAo R0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KTsKdHlwZWRlZiB2b2lkICgg ICogUEZOR0xFREdFRkxBR1BPSU5URVJFWFRQUk9DKSAoR0xzaXplaSBzdHJpZGUsIEdMc2l6ZWkg Y291bnQsIGNvbnN0IEdMYm9vbGVhbiAqcG9pbnRlcik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdM R0VUUE9JTlRFUlZFWFRQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTHZvaWQqICpwYXJhbXMpOwp0eXBl ZGVmIHZvaWQgKCAgKiBQRk5HTElOREVYUE9JTlRFUkVYVFBST0MpIChHTGVudW0gdHlwZSwgR0xz aXplaSBzdHJpZGUsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdm9pZCAqcG9pbnRlcik7CnR5cGVk ZWYgdm9pZCAoICAqIFBGTkdMTk9STUFMUE9JTlRFUkVYVFBST0MpIChHTGVudW0gdHlwZSwgR0xz aXplaSBzdHJpZGUsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdm9pZCAqcG9pbnRlcik7CnR5cGVk ZWYgdm9pZCAoICAqIFBGTkdMVEVYQ09PUkRQT0lOVEVSRVhUUFJPQykgKEdMaW50IHNpemUsIEdM ZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x2b2lkICpw b2ludGVyKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xWRVJURVhQT0lOVEVSRVhUUFJPQykgKEdM aW50IHNpemUsIEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgR0xzaXplaSBjb3VudCwgY29u c3QgR0x2b2lkICpwb2ludGVyKTsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVk ZWYgdm9pZCAoICAqIFBGTkdMQkxFTkRFUVVBVElPTkVYVFBST0MpIChHTGVudW0gbW9kZSk7CgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMU1BSSVRF UEFSQU1FVEVSRlNHSVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKdHlwZWRl ZiB2b2lkICggICogUEZOR0xTUFJJVEVQQVJBTUVURVJGVlNHSVhQUk9DKSAoR0xlbnVtIHBuYW1l LCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFNQUklURVBB UkFNRVRFUklTR0lYUFJPQykgKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwp0eXBlZGVmIHZv aWQgKCAgKiBQRk5HTFNQUklURVBBUkFNRVRFUklWU0dJWFBST0MpIChHTGVudW0gcG5hbWUsIGNv bnN0IEdMaW50ICpwYXJhbXMpOwoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdM UE9JTlRQQVJBTUVURVJGRVhUUFJPQykgKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5 cGVkZWYgdm9pZCAoICAqIFBGTkdMUE9JTlRQQVJBTUVURVJGVkVYVFBST0MpIChHTGVudW0gcG5h bWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMUE9JTlRQ QVJBTUVURVJGU0dJU1BST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwp0eXBlZGVm IHZvaWQgKCAgKiBQRk5HTFBPSU5UUEFSQU1FVEVSRlZTR0lTUFJPQykgKEdMZW51bSBwbmFtZSwg Y29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKCgoKCgoKCgoKCgoKdHlwZWRlZiBHTGludCAoICAqIFBG TkdMR0VUSU5TVFJVTUVOVFNTR0lYUFJPQykgKHZvaWQpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5H TElOU1RSVU1FTlRTQlVGRkVSU0dJWFBST0MpIChHTHNpemVpIHNpemUsIEdMaW50ICpidWZmZXIp Owp0eXBlZGVmIEdMaW50ICggICogUEZOR0xQT0xMSU5TVFJVTUVOVFNTR0lYUFJPQykgKEdMaW50 ICptYXJrZXJfcCk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMUkVBRElOU1RSVU1FTlRTU0dJWFBS T0MpIChHTGludCBtYXJrZXIpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFNUQVJUSU5TVFJVTUVO VFNTR0lYUFJPQykgKHZvaWQpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFNUT1BJTlNUUlVNRU5U U1NHSVhQUk9DKSAoR0xpbnQgbWFya2VyKTsKCgoKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAgKiBQ Rk5HTEZSQU1FWk9PTVNHSVhQUk9DKSAoR0xpbnQgZmFjdG9yKTsKCgoKCgoKCnR5cGVkZWYgdm9p ZCAoICAqIFBGTkdMVEFHU0FNUExFQlVGRkVSU0dJWFBST0MpICh2b2lkKTsKCgoKCgoKCgoKCnR5 cGVkZWYgdm9pZCAoICAqIFBGTkdMREVGT1JNQVRJT05NQVAzRFNHSVhQUk9DKSAoR0xlbnVtIHRh cmdldCwgR0xkb3VibGUgdTEsIEdMZG91YmxlIHUyLCBHTGludCB1c3RyaWRlLCBHTGludCB1b3Jk ZXIsIEdMZG91YmxlIHYxLCBHTGRvdWJsZSB2MiwgR0xpbnQgdnN0cmlkZSwgR0xpbnQgdm9yZGVy LCBHTGRvdWJsZSB3MSwgR0xkb3VibGUgdzIsIEdMaW50IHdzdHJpZGUsIEdMaW50IHdvcmRlciwg Y29uc3QgR0xkb3VibGUgKnBvaW50cyk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMREVGT1JNQVRJ T05NQVAzRlNHSVhQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xmbG9hdCB1MSwgR0xmbG9hdCB1Miwg R0xpbnQgdXN0cmlkZSwgR0xpbnQgdW9yZGVyLCBHTGZsb2F0IHYxLCBHTGZsb2F0IHYyLCBHTGlu dCB2c3RyaWRlLCBHTGludCB2b3JkZXIsIEdMZmxvYXQgdzEsIEdMZmxvYXQgdzIsIEdMaW50IHdz dHJpZGUsIEdMaW50IHdvcmRlciwgY29uc3QgR0xmbG9hdCAqcG9pbnRzKTsKdHlwZWRlZiB2b2lk ICggICogUEZOR0xERUZPUk1TR0lYUFJPQykgKEdMYml0ZmllbGQgbWFzayk7CnR5cGVkZWYgdm9p ZCAoICAqIFBGTkdMTE9BRElERU5USVRZREVGT1JNQVRJT05NQVBTR0lYUFJPQykgKEdMYml0Zmll bGQgbWFzayk7CgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFJFRkVSRU5DRVBMQU5FU0dJ WFBST0MpIChjb25zdCBHTGRvdWJsZSAqZXF1YXRpb24pOwoKCgoKCgoKdHlwZWRlZiB2b2lkICgg ICogUEZOR0xGTFVTSFJBU1RFUlNHSVhQUk9DKSAodm9pZCk7CgoKCgoKCgoKCgoKCnR5cGVkZWYg dm9pZCAoICAqIFBGTkdMRk9HRlVOQ1NHSVNQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTGZsb2F0 ICpwb2ludHMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFVEZPR0ZVTkNTR0lTUFJPQykgKGNv bnN0IEdMZmxvYXQgKnBvaW50cyk7CgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAgKiBQ Rk5HTElNQUdFVFJBTlNGT1JNUEFSQU1FVEVSSUhQUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51 bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTElNQUdFVFJBTlNG T1JNUEFSQU1FVEVSRkhQUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9h dCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMSU1BR0VUUkFOU0ZPUk1QQVJBTUVURVJJ VkhQUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFt cyk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMSU1BR0VUUkFOU0ZPUk1QQVJBTUVURVJGVkhQUFJP QykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsK dHlwZWRlZiB2b2lkICggICogUEZOR0xHRVRJTUFHRVRSQU5TRk9STVBBUkFNRVRFUklWSFBQUk9D KSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2 b2lkICggICogUEZOR0xHRVRJTUFHRVRSQU5TRk9STVBBUkFNRVRFUkZWSFBQUk9DKSAoR0xlbnVt IHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwoKCgoKCgoKCgoKCgoKCgoK dHlwZWRlZiB2b2lkICggICogUEZOR0xDT0xPUlNVQlRBQkxFRVhUUFJPQykgKEdMZW51bSB0YXJn ZXQsIEdMc2l6ZWkgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0 eXBlLCBjb25zdCBHTHZvaWQgKmRhdGEpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTENPUFlDT0xP UlNVQlRBQkxFRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc3RhcnQsIEdMaW50IHgs IEdMaW50IHksIEdMc2l6ZWkgd2lkdGgpOwoKCgoKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICAqIFBG TkdMSElOVFBHSVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBtb2RlKTsKCgoKCgoKCgoKCnR5 cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09MT1JUQUJMRUVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBH TGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51 bSB0eXBlLCBjb25zdCBHTHZvaWQgKnRhYmxlKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xHRVRD T0xPUlRBQkxFRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0 eXBlLCBHTHZvaWQgKmRhdGEpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFVENPTE9SVEFCTEVQ QVJBTUVURVJJVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpw YXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFVENPTE9SVEFCTEVQQVJBTUVURVJGVkVY VFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CgoK CgoKCgoKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFVExJU1RQQVJBTUVURVJGVlNH SVhQUk9DKSAoR0x1aW50IGxpc3QsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlw ZWRlZiB2b2lkICggICogUEZOR0xHRVRMSVNUUEFSQU1FVEVSSVZTR0lYUFJPQykgKEdMdWludCBs aXN0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5H TExJU1RQQVJBTUVURVJGU0dJWFBST0MpIChHTHVpbnQgbGlzdCwgR0xlbnVtIHBuYW1lLCBHTGZs b2F0IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xMSVNUUEFSQU1FVEVSRlZTR0lYUFJP QykgKEdMdWludCBsaXN0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CnR5 cGVkZWYgdm9pZCAoICAqIFBGTkdMTElTVFBBUkFNRVRFUklTR0lYUFJPQykgKEdMdWludCBsaXN0 LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xMSVNU UEFSQU1FVEVSSVZTR0lYUFJPQykgKEdMdWludCBsaXN0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdM aW50ICpwYXJhbXMpOwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAg KiBQRk5HTElOREVYTUFURVJJQUxFWFRQUk9DKSAoR0xlbnVtIGZhY2UsIEdMZW51bSBtb2RlKTsK CgoKCgoKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMSU5ERVhGVU5DRVhUUFJPQykgKEdMZW51bSBm dW5jLCBHTGNsYW1wZiByZWYpOwoKCgoKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTExP Q0tBUlJBWVNFWFRQUk9DKSAoR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpOwp0eXBlZGVmIHZv aWQgKCAgKiBQRk5HTFVOTE9DS0FSUkFZU0VYVFBST0MpICh2b2lkKTsKCgoKCgoKCgp0eXBlZGVm IHZvaWQgKCAgKiBQRk5HTENVTExQQVJBTUVURVJEVkVYVFBST0MpIChHTGVudW0gcG5hbWUsIEdM ZG91YmxlICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTENVTExQQVJBTUVURVJGVkVY VFBST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CgoKCgoKCgoKIyAyMzQwICIv dXNyL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwoKdHlwZWRlZiB2b2lkICggICogUEZOR0xGUkFHTUVO VENPTE9STUFURVJJQUxTR0lYUFJPQykgKEdMZW51bSBmYWNlLCBHTGVudW0gbW9kZSk7CnR5cGVk ZWYgdm9pZCAoICAqIFBGTkdMRlJBR01FTlRMSUdIVEZTR0lYUFJPQykgKEdMZW51bSBsaWdodCwg R0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xGUkFH TUVOVExJR0hURlZTR0lYUFJPQykgKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBjb25zdCBH TGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEZSQUdNRU5UTElHSFRJU0dJ WFBST0MpIChHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwp0eXBlZGVm IHZvaWQgKCAgKiBQRk5HTEZSQUdNRU5UTElHSFRJVlNHSVhQUk9DKSAoR0xlbnVtIGxpZ2h0LCBH TGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5H TEZSQUdNRU5UTElHSFRNT0RFTEZTR0lYUFJPQykgKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJh bSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMRlJBR01FTlRMSUdIVE1PREVMRlZTR0lYUFJPQykg KEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggICog UEZOR0xGUkFHTUVOVExJR0hUTU9ERUxJU0dJWFBST0MpIChHTGVudW0gcG5hbWUsIEdMaW50IHBh cmFtKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xGUkFHTUVOVExJR0hUTU9ERUxJVlNHSVhQUk9D KSAoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggICog UEZOR0xGUkFHTUVOVE1BVEVSSUFMRlNHSVhQUk9DKSAoR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFt ZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMRlJBR01FTlRNQVRFUklB TEZWU0dJWFBST0MpIChHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpw YXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEZSQUdNRU5UTUFURVJJQUxJU0dJWFBST0Mp IChHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAo ICAqIFBGTkdMRlJBR01FTlRNQVRFUklBTElWU0dJWFBST0MpIChHTGVudW0gZmFjZSwgR0xlbnVt IHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xHRVRG UkFHTUVOVExJR0hURlZTR0lYUFJPQykgKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGZs b2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFVEZSQUdNRU5UTElHSFRJVlNH SVhQUk9DKSAoR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBl ZGVmIHZvaWQgKCAgKiBQRk5HTEdFVEZSQUdNRU5UTUFURVJJQUxGVlNHSVhQUk9DKSAoR0xlbnVt IGZhY2UsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggICog UEZOR0xHRVRGUkFHTUVOVE1BVEVSSUFMSVZTR0lYUFJPQykgKEdMZW51bSBmYWNlLCBHTGVudW0g cG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTExJR0hURU5WSVNH SVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CgoKCgoKCgoKCgoKCgoKCnR5cGVk ZWYgdm9pZCAoICAqIFBGTkdMRFJBV1JBTkdFRUxFTUVOVFNFWFRQUk9DKSAoR0xlbnVtIG1vZGUs IEdMdWludCBzdGFydCwgR0x1aW50IGVuZCwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNv bnN0IEdMdm9pZCAqaW5kaWNlcyk7CgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiB2b2lkICggICog UEZOR0xBUFBMWVRFWFRVUkVFWFRQUk9DKSAoR0xlbnVtIG1vZGUpOwp0eXBlZGVmIHZvaWQgKCAg KiBQRk5HTFRFWFRVUkVMSUdIVEVYVFBST0MpIChHTGVudW0gcG5hbWUpOwp0eXBlZGVmIHZvaWQg KCAgKiBQRk5HTFRFWFRVUkVNQVRFUklBTEVYVFBST0MpIChHTGVudW0gZmFjZSwgR0xlbnVtIG1v ZGUpOwoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQVNZTkNNQVJL RVJTR0lYUFJPQykgKEdMdWludCBtYXJrZXIpOwp0eXBlZGVmIEdMaW50ICggICogUEZOR0xGSU5J U0hBU1lOQ1NHSVhQUk9DKSAoR0x1aW50ICptYXJrZXJwKTsKdHlwZWRlZiBHTGludCAoICAqIFBG TkdMUE9MTEFTWU5DU0dJWFBST0MpIChHTHVpbnQgKm1hcmtlcnApOwp0eXBlZGVmIEdMdWludCAo ICAqIFBGTkdMR0VOQVNZTkNNQVJLRVJTU0dJWFBST0MpIChHTHNpemVpIHJhbmdlKTsKdHlwZWRl ZiB2b2lkICggICogUEZOR0xERUxFVEVBU1lOQ01BUktFUlNTR0lYUFJPQykgKEdMdWludCBtYXJr ZXIsIEdMc2l6ZWkgcmFuZ2UpOwp0eXBlZGVmIEdMYm9vbGVhbiAoICAqIFBGTkdMSVNBU1lOQ01B UktFUlNHSVhQUk9DKSAoR0x1aW50IG1hcmtlcik7CgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYg dm9pZCAoICAqIFBGTkdMVkVSVEVYUE9JTlRFUlZJTlRFTFBST0MpIChHTGludCBzaXplLCBHTGVu dW0gdHlwZSwgY29uc3QgR0x2b2lkKiAqcG9pbnRlcik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdM Tk9STUFMUE9JTlRFUlZJTlRFTFBST0MpIChHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiAqcG9p bnRlcik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09MT1JQT0lOVEVSVklOVEVMUFJPQykgKEdM aW50IHNpemUsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqICpwb2ludGVyKTsKdHlwZWRlZiB2 b2lkICggICogUEZOR0xURVhDT09SRFBPSU5URVJWSU5URUxQUk9DKSAoR0xpbnQgc2l6ZSwgR0xl bnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIpOwoKCgoKCgoKCgoKCgoKCnR5cGVkZWYg dm9pZCAoICAqIFBGTkdMUElYRUxUUkFOU0ZPUk1QQVJBTUVURVJJRVhUUFJPQykgKEdMZW51bSB0 YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5H TFBJWEVMVFJBTlNGT1JNUEFSQU1FVEVSRkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0g cG5hbWUsIEdMZmxvYXQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFBJWEVMVFJBTlNG T1JNUEFSQU1FVEVSSVZFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25z dCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xQSVhFTFRSQU5TRk9STVBB UkFNRVRFUkZWRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xm bG9hdCAqcGFyYW1zKTsKCgoKCgoKCgoKCgoKCgoKCiMgMjQ5NSAiL3Vzci9pbmNsdWRlL0dML2ds ZXh0LmgiIDMKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMU0VDT05EQVJZQ09MT1IzQkVYVFBST0Mp IChHTGJ5dGUgcmVkLCBHTGJ5dGUgZ3JlZW4sIEdMYnl0ZSBibHVlKTsKdHlwZWRlZiB2b2lkICgg ICogUEZOR0xTRUNPTkRBUllDT0xPUjNCVkVYVFBST0MpIChjb25zdCBHTGJ5dGUgKnYpOwp0eXBl ZGVmIHZvaWQgKCAgKiBQRk5HTFNFQ09OREFSWUNPTE9SM0RFWFRQUk9DKSAoR0xkb3VibGUgcmVk LCBHTGRvdWJsZSBncmVlbiwgR0xkb3VibGUgYmx1ZSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdM U0VDT05EQVJZQ09MT1IzRFZFWFRQUk9DKSAoY29uc3QgR0xkb3VibGUgKnYpOwp0eXBlZGVmIHZv aWQgKCAgKiBQRk5HTFNFQ09OREFSWUNPTE9SM0ZFWFRQUk9DKSAoR0xmbG9hdCByZWQsIEdMZmxv YXQgZ3JlZW4sIEdMZmxvYXQgYmx1ZSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMU0VDT05EQVJZ Q09MT1IzRlZFWFRQUk9DKSAoY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICAqIFBG TkdMU0VDT05EQVJZQ09MT1IzSUVYVFBST0MpIChHTGludCByZWQsIEdMaW50IGdyZWVuLCBHTGlu dCBibHVlKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xTRUNPTkRBUllDT0xPUjNJVkVYVFBST0Mp IChjb25zdCBHTGludCAqdik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMU0VDT05EQVJZQ09MT1Iz U0VYVFBST0MpIChHTHNob3J0IHJlZCwgR0xzaG9ydCBncmVlbiwgR0xzaG9ydCBibHVlKTsKdHlw ZWRlZiB2b2lkICggICogUEZOR0xTRUNPTkRBUllDT0xPUjNTVkVYVFBST0MpIChjb25zdCBHTHNo b3J0ICp2KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xTRUNPTkRBUllDT0xPUjNVQkVYVFBST0Mp IChHTHVieXRlIHJlZCwgR0x1Ynl0ZSBncmVlbiwgR0x1Ynl0ZSBibHVlKTsKdHlwZWRlZiB2b2lk ICggICogUEZOR0xTRUNPTkRBUllDT0xPUjNVQlZFWFRQUk9DKSAoY29uc3QgR0x1Ynl0ZSAqdik7 CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMU0VDT05EQVJZQ09MT1IzVUlFWFRQUk9DKSAoR0x1aW50 IHJlZCwgR0x1aW50IGdyZWVuLCBHTHVpbnQgYmx1ZSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdM U0VDT05EQVJZQ09MT1IzVUlWRVhUUFJPQykgKGNvbnN0IEdMdWludCAqdik7CnR5cGVkZWYgdm9p ZCAoICAqIFBGTkdMU0VDT05EQVJZQ09MT1IzVVNFWFRQUk9DKSAoR0x1c2hvcnQgcmVkLCBHTHVz aG9ydCBncmVlbiwgR0x1c2hvcnQgYmx1ZSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMU0VDT05E QVJZQ09MT1IzVVNWRVhUUFJPQykgKGNvbnN0IEdMdXNob3J0ICp2KTsKdHlwZWRlZiB2b2lkICgg ICogUEZOR0xTRUNPTkRBUllDT0xPUlBPSU5URVJFWFRQUk9DKSAoR0xpbnQgc2l6ZSwgR0xlbnVt IHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBHTHZvaWQgKnBvaW50ZXIpOwoKCgoKCgoKdHlwZWRlZiB2 b2lkICggICogUEZOR0xURVhUVVJFTk9STUFMRVhUUFJPQykgKEdMZW51bSBtb2RlKTsKCgoKCgoK Cgp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTE1VTFRJRFJBV0FSUkFZU0VYVFBST0MpIChHTGVudW0g bW9kZSwgR0xpbnQgKmZpcnN0LCBHTHNpemVpICpjb3VudCwgR0xzaXplaSBwcmltY291bnQpOwp0 eXBlZGVmIHZvaWQgKCAgKiBQRk5HTE1VTFRJRFJBV0VMRU1FTlRTRVhUUFJPQykgKEdMZW51bSBt b2RlLCBjb25zdCBHTHNpemVpICpjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKmlu ZGljZXMsIEdMc2l6ZWkgcHJpbWNvdW50KTsKCgoKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAgKiBQ Rk5HTEZPR0NPT1JERkVYVFBST0MpIChHTGZsb2F0IGNvb3JkKTsKdHlwZWRlZiB2b2lkICggICog UEZOR0xGT0dDT09SREZWRVhUUFJPQykgKGNvbnN0IEdMZmxvYXQgKmNvb3JkKTsKdHlwZWRlZiB2 b2lkICggICogUEZOR0xGT0dDT09SRERFWFRQUk9DKSAoR0xkb3VibGUgY29vcmQpOwp0eXBlZGVm IHZvaWQgKCAgKiBQRk5HTEZPR0NPT1JERFZFWFRQUk9DKSAoY29uc3QgR0xkb3VibGUgKmNvb3Jk KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xGT0dDT09SRFBPSU5URVJFWFRQUk9DKSAoR0xlbnVt IHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOwoKCgoKCgoKCiMg MjU3OCAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdM VEFOR0VOVDNCRVhUUFJPQykgKEdMYnl0ZSB0eCwgR0xieXRlIHR5LCBHTGJ5dGUgdHopOwp0eXBl ZGVmIHZvaWQgKCAgKiBQRk5HTFRBTkdFTlQzQlZFWFRQUk9DKSAoY29uc3QgR0xieXRlICp2KTsK dHlwZWRlZiB2b2lkICggICogUEZOR0xUQU5HRU5UM0RFWFRQUk9DKSAoR0xkb3VibGUgdHgsIEdM ZG91YmxlIHR5LCBHTGRvdWJsZSB0eik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMVEFOR0VOVDNE VkVYVFBST0MpIChjb25zdCBHTGRvdWJsZSAqdik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMVEFO R0VOVDNGRVhUUFJPQykgKEdMZmxvYXQgdHgsIEdMZmxvYXQgdHksIEdMZmxvYXQgdHopOwp0eXBl ZGVmIHZvaWQgKCAgKiBQRk5HTFRBTkdFTlQzRlZFWFRQUk9DKSAoY29uc3QgR0xmbG9hdCAqdik7 CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMVEFOR0VOVDNJRVhUUFJPQykgKEdMaW50IHR4LCBHTGlu dCB0eSwgR0xpbnQgdHopOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFRBTkdFTlQzSVZFWFRQUk9D KSAoY29uc3QgR0xpbnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFRBTkdFTlQzU0VYVFBS T0MpIChHTHNob3J0IHR4LCBHTHNob3J0IHR5LCBHTHNob3J0IHR6KTsKdHlwZWRlZiB2b2lkICgg ICogUEZOR0xUQU5HRU5UM1NWRVhUUFJPQykgKGNvbnN0IEdMc2hvcnQgKnYpOwp0eXBlZGVmIHZv aWQgKCAgKiBQRk5HTEJJTk9STUFMM0JFWFRQUk9DKSAoR0xieXRlIGJ4LCBHTGJ5dGUgYnksIEdM Ynl0ZSBieik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQklOT1JNQUwzQlZFWFRQUk9DKSAoY29u c3QgR0xieXRlICp2KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xCSU5PUk1BTDNERVhUUFJPQykg KEdMZG91YmxlIGJ4LCBHTGRvdWJsZSBieSwgR0xkb3VibGUgYnopOwp0eXBlZGVmIHZvaWQgKCAg KiBQRk5HTEJJTk9STUFMM0RWRVhUUFJPQykgKGNvbnN0IEdMZG91YmxlICp2KTsKdHlwZWRlZiB2 b2lkICggICogUEZOR0xCSU5PUk1BTDNGRVhUUFJPQykgKEdMZmxvYXQgYngsIEdMZmxvYXQgYnks IEdMZmxvYXQgYnopOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEJJTk9STUFMM0ZWRVhUUFJPQykg KGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEJJTk9STUFMM0lFWFRQ Uk9DKSAoR0xpbnQgYngsIEdMaW50IGJ5LCBHTGludCBieik7CnR5cGVkZWYgdm9pZCAoICAqIFBG TkdMQklOT1JNQUwzSVZFWFRQUk9DKSAoY29uc3QgR0xpbnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAg KiBQRk5HTEJJTk9STUFMM1NFWFRQUk9DKSAoR0xzaG9ydCBieCwgR0xzaG9ydCBieSwgR0xzaG9y dCBieik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQklOT1JNQUwzU1ZFWFRQUk9DKSAoY29uc3Qg R0xzaG9ydCAqdik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMVEFOR0VOVFBPSU5URVJFWFRQUk9D KSAoR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOwp0 eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEJJTk9STUFMUE9JTlRFUkVYVFBST0MpIChHTGVudW0gdHlw ZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqcG9pbnRlcik7CgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKdHlwZWRlZiB2b2lkICggICogUEZOR0xGSU5JU0hURVhUVVJFU1VOWFBST0MpICh2 b2lkKTsKCgoKCiMgMjYzOCAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKCnR5cGVkZWYgdm9p ZCAoICAqIFBGTkdMR0xPQkFMQUxQSEFGQUNUT1JCU1VOUFJPQykgKEdMYnl0ZSBmYWN0b3IpOwp0 eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdMT0JBTEFMUEhBRkFDVE9SU1NVTlBST0MpIChHTHNob3J0 IGZhY3Rvcik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMR0xPQkFMQUxQSEFGQUNUT1JJU1VOUFJP QykgKEdMaW50IGZhY3Rvcik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMR0xPQkFMQUxQSEFGQUNU T1JGU1VOUFJPQykgKEdMZmxvYXQgZmFjdG9yKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xHTE9C QUxBTFBIQUZBQ1RPUkRTVU5QUk9DKSAoR0xkb3VibGUgZmFjdG9yKTsKdHlwZWRlZiB2b2lkICgg ICogUEZOR0xHTE9CQUxBTFBIQUZBQ1RPUlVCU1VOUFJPQykgKEdMdWJ5dGUgZmFjdG9yKTsKdHlw ZWRlZiB2b2lkICggICogUEZOR0xHTE9CQUxBTFBIQUZBQ1RPUlVTU1VOUFJPQykgKEdMdXNob3J0 IGZhY3Rvcik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMR0xPQkFMQUxQSEFGQUNUT1JVSVNVTlBS T0MpIChHTHVpbnQgZmFjdG9yKTsKCgoKCiMgMjY1OSAiL3Vzci9pbmNsdWRlL0dML2dsZXh0Lmgi IDMKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlTVU5QUk9DKSAoR0x1 aW50IGNvZGUpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVTU1VOUFJP QykgKEdMdXNob3J0IGNvZGUpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFJFUExBQ0VNRU5UQ09E RVVCU1VOUFJPQykgKEdMdWJ5dGUgY29kZSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMUkVQTEFD RU1FTlRDT0RFVUlWU1VOUFJPQykgKGNvbnN0IEdMdWludCAqY29kZSk7CnR5cGVkZWYgdm9pZCAo ICAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVVNWU1VOUFJPQykgKGNvbnN0IEdMdXNob3J0ICpjb2Rl KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xSRVBMQUNFTUVOVENPREVVQlZTVU5QUk9DKSAoY29u c3QgR0x1Ynl0ZSAqY29kZSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMUkVQTEFDRU1FTlRDT0RF UE9JTlRFUlNVTlBST0MpIChHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9p ZCogKnBvaW50ZXIpOwoKCgoKIyAyNzEyICIvdXNyL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwoKdHlw ZWRlZiB2b2lkICggICogUEZOR0xDT0xPUjRVQlZFUlRFWDJGU1VOUFJPQykgKEdMdWJ5dGUgciwg R0x1Ynl0ZSBnLCBHTHVieXRlIGIsIEdMdWJ5dGUgYSwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpOwp0 eXBlZGVmIHZvaWQgKCAgKiBQRk5HTENPTE9SNFVCVkVSVEVYMkZWU1VOUFJPQykgKGNvbnN0IEdM dWJ5dGUgKmMsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTENPTE9S NFVCVkVSVEVYM0ZTVU5QUk9DKSAoR0x1Ynl0ZSByLCBHTHVieXRlIGcsIEdMdWJ5dGUgYiwgR0x1 Ynl0ZSBhLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICgg ICogUEZOR0xDT0xPUjRVQlZFUlRFWDNGVlNVTlBST0MpIChjb25zdCBHTHVieXRlICpjLCBjb25z dCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xDT0xPUjNGVkVSVEVYM0ZTVU5Q Uk9DKSAoR0xmbG9hdCByLCBHTGZsb2F0IGcsIEdMZmxvYXQgYiwgR0xmbG9hdCB4LCBHTGZsb2F0 IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09MT1IzRlZFUlRFWDNGVlNV TlBST0MpIChjb25zdCBHTGZsb2F0ICpjLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lk ICggICogUEZOR0xOT1JNQUwzRlZFUlRFWDNGU1VOUFJPQykgKEdMZmxvYXQgbngsIEdMZmxvYXQg bnksIEdMZmxvYXQgbnosIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVm IHZvaWQgKCAgKiBQRk5HTE5PUk1BTDNGVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZmxvYXQg Km4sIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTENPTE9SNEZOT1JN QUwzRlZFUlRFWDNGU1VOUFJPQykgKEdMZmxvYXQgciwgR0xmbG9hdCBnLCBHTGZsb2F0IGIsIEdM ZmxvYXQgYSwgR0xmbG9hdCBueCwgR0xmbG9hdCBueSwgR0xmbG9hdCBueiwgR0xmbG9hdCB4LCBH TGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09MT1I0Rk5PUk1B TDNGVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZmxvYXQgKmMsIGNvbnN0IEdMZmxvYXQgKm4s IGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFRFWENPT1JEMkZWRVJU RVgzRlNVTlBST0MpIChHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCB4LCBHTGZsb2F0IHks IEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMVEVYQ09PUkQyRlZFUlRFWDNGVlNV TlBST0MpIChjb25zdCBHTGZsb2F0ICp0YywgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9p ZCAoICAqIFBGTkdMVEVYQ09PUkQ0RlZFUlRFWDRGU1VOUFJPQykgKEdMZmxvYXQgcywgR0xmbG9h dCB0LCBHTGZsb2F0IHAsIEdMZmxvYXQgcSwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQg eiwgR0xmbG9hdCB3KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xURVhDT09SRDRGVkVSVEVYNEZW U1VOUFJPQykgKGNvbnN0IEdMZmxvYXQgKnRjLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2 b2lkICggICogUEZOR0xURVhDT09SRDJGQ09MT1I0VUJWRVJURVgzRlNVTlBST0MpIChHTGZsb2F0 IHMsIEdMZmxvYXQgdCwgR0x1Ynl0ZSByLCBHTHVieXRlIGcsIEdMdWJ5dGUgYiwgR0x1Ynl0ZSBh LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggICogUEZO R0xURVhDT09SRDJGQ09MT1I0VUJWRVJURVgzRlZTVU5QUk9DKSAoY29uc3QgR0xmbG9hdCAqdGMs IGNvbnN0IEdMdWJ5dGUgKmMsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAgKiBQ Rk5HTFRFWENPT1JEMkZDT0xPUjNGVkVSVEVYM0ZTVU5QUk9DKSAoR0xmbG9hdCBzLCBHTGZsb2F0 IHQsIEdMZmxvYXQgciwgR0xmbG9hdCBnLCBHTGZsb2F0IGIsIEdMZmxvYXQgeCwgR0xmbG9hdCB5 LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFRFWENPT1JEMkZDT0xPUjNGVkVS VEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZmxvYXQgKnRjLCBjb25zdCBHTGZsb2F0ICpjLCBjb25z dCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xURVhDT09SRDJGTk9STUFMM0ZW RVJURVgzRlNVTlBST0MpIChHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCBueCwgR0xmbG9h dCBueSwgR0xmbG9hdCBueiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVk ZWYgdm9pZCAoICAqIFBGTkdMVEVYQ09PUkQyRk5PUk1BTDNGVkVSVEVYM0ZWU1VOUFJPQykgKGNv bnN0IEdMZmxvYXQgKnRjLCBjb25zdCBHTGZsb2F0ICpuLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlw ZWRlZiB2b2lkICggICogUEZOR0xURVhDT09SRDJGQ09MT1I0Rk5PUk1BTDNGVkVSVEVYM0ZTVU5Q Uk9DKSAoR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgciwgR0xmbG9hdCBnLCBHTGZsb2F0 IGIsIEdMZmxvYXQgYSwgR0xmbG9hdCBueCwgR0xmbG9hdCBueSwgR0xmbG9hdCBueiwgR0xmbG9h dCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMVEVYQ09P UkQyRkNPTE9SNEZOT1JNQUwzRlZFUlRFWDNGVlNVTlBST0MpIChjb25zdCBHTGZsb2F0ICp0Yywg Y29uc3QgR0xmbG9hdCAqYywgY29uc3QgR0xmbG9hdCAqbiwgY29uc3QgR0xmbG9hdCAqdik7CnR5 cGVkZWYgdm9pZCAoICAqIFBGTkdMVEVYQ09PUkQ0RkNPTE9SNEZOT1JNQUwzRlZFUlRFWDRGU1VO UFJPQykgKEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHAsIEdMZmxvYXQgcSwgR0xmbG9h dCByLCBHTGZsb2F0IGcsIEdMZmxvYXQgYiwgR0xmbG9hdCBhLCBHTGZsb2F0IG54LCBHTGZsb2F0 IG55LCBHTGZsb2F0IG56LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0 IHcpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFRFWENPT1JENEZDT0xPUjRGTk9STUFMM0ZWRVJU RVg0RlZTVU5QUk9DKSAoY29uc3QgR0xmbG9hdCAqdGMsIGNvbnN0IEdMZmxvYXQgKmMsIGNvbnN0 IEdMZmxvYXQgKm4sIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFJF UExBQ0VNRU5UQ09ERVVJVkVSVEVYM0ZTVU5QUk9DKSAoR0xlbnVtIHJjLCBHTGZsb2F0IHgsIEdM ZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xSRVBMQUNFTUVOVENP REVVSVZFUlRFWDNGVlNVTlBST0MpIChjb25zdCBHTGVudW0gKnJjLCBjb25zdCBHTGZsb2F0ICp2 KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xSRVBMQUNFTUVOVENPREVVSUNPTE9SNFVCVkVSVEVY M0ZTVU5QUk9DKSAoR0xlbnVtIHJjLCBHTHVieXRlIHIsIEdMdWJ5dGUgZywgR0x1Ynl0ZSBiLCBH THVieXRlIGEsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQg KCAgKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJQ09MT1I0VUJWRVJURVgzRlZTVU5QUk9DKSAoY29u c3QgR0xlbnVtICpyYywgY29uc3QgR0x1Ynl0ZSAqYywgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVk ZWYgdm9pZCAoICAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlDT0xPUjNGVkVSVEVYM0ZTVU5QUk9D KSAoR0xlbnVtIHJjLCBHTGZsb2F0IHIsIEdMZmxvYXQgZywgR0xmbG9hdCBiLCBHTGZsb2F0IHgs IEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xSRVBMQUNFTUVO VENPREVVSUNPTE9SM0ZWRVJURVgzRlZTVU5QUk9DKSAoY29uc3QgR0xlbnVtICpyYywgY29uc3Qg R0xmbG9hdCAqYywgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMUkVQ TEFDRU1FTlRDT0RFVUlOT1JNQUwzRlZFUlRFWDNGU1VOUFJPQykgKEdMZW51bSByYywgR0xmbG9h dCBueCwgR0xmbG9hdCBueSwgR0xmbG9hdCBueiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxv YXQgeik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlOT1JNQUwzRlZF UlRFWDNGVlNVTlBST0MpIChjb25zdCBHTGVudW0gKnJjLCBjb25zdCBHTGZsb2F0ICpuLCBjb25z dCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xSRVBMQUNFTUVOVENPREVVSUNP TE9SNEZOT1JNQUwzRlZFUlRFWDNGU1VOUFJPQykgKEdMZW51bSByYywgR0xmbG9hdCByLCBHTGZs b2F0IGcsIEdMZmxvYXQgYiwgR0xmbG9hdCBhLCBHTGZsb2F0IG54LCBHTGZsb2F0IG55LCBHTGZs b2F0IG56LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICgg ICogUEZOR0xSRVBMQUNFTUVOVENPREVVSUNPTE9SNEZOT1JNQUwzRlZFUlRFWDNGVlNVTlBST0Mp IChjb25zdCBHTGVudW0gKnJjLCBjb25zdCBHTGZsb2F0ICpjLCBjb25zdCBHTGZsb2F0ICpuLCBj b25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xSRVBMQUNFTUVOVENPREVV SVRFWENPT1JEMkZWRVJURVgzRlNVTlBST0MpIChHTGVudW0gcmMsIEdMZmxvYXQgcywgR0xmbG9h dCB0LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggICog UEZOR0xSRVBMQUNFTUVOVENPREVVSVRFWENPT1JEMkZWRVJURVgzRlZTVU5QUk9DKSAoY29uc3Qg R0xlbnVtICpyYywgY29uc3QgR0xmbG9hdCAqdGMsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVm IHZvaWQgKCAgKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJVEVYQ09PUkQyRk5PUk1BTDNGVkVSVEVY M0ZTVU5QUk9DKSAoR0xlbnVtIHJjLCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCBueCwg R0xmbG9hdCBueSwgR0xmbG9hdCBueiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7 CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlURVhDT09SRDJGTk9STUFM M0ZWRVJURVgzRlZTVU5QUk9DKSAoY29uc3QgR0xlbnVtICpyYywgY29uc3QgR0xmbG9hdCAqdGMs IGNvbnN0IEdMZmxvYXQgKm4sIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAgKiBQ Rk5HTFJFUExBQ0VNRU5UQ09ERVVJVEVYQ09PUkQyRkNPTE9SNEZOT1JNQUwzRlZFUlRFWDNGU1VO UFJPQykgKEdMZW51bSByYywgR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgciwgR0xmbG9h dCBnLCBHTGZsb2F0IGIsIEdMZmxvYXQgYSwgR0xmbG9hdCBueCwgR0xmbG9hdCBueSwgR0xmbG9h dCBueiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICAq IFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlURVhDT09SRDJGQ09MT1I0Rk5PUk1BTDNGVkVSVEVYM0ZW U1VOUFJPQykgKGNvbnN0IEdMZW51bSAqcmMsIGNvbnN0IEdMZmxvYXQgKnRjLCBjb25zdCBHTGZs b2F0ICpjLCBjb25zdCBHTGZsb2F0ICpuLCBjb25zdCBHTGZsb2F0ICp2KTsKCgoKCgoKCnR5cGVk ZWYgdm9pZCAoICAqIFBGTkdMQkxFTkRGVU5DU0VQQVJBVEVFWFRQUk9DKSAoR0xlbnVtIHNmYWN0 b3JSR0IsIEdMZW51bSBkZmFjdG9yUkdCLCBHTGVudW0gc2ZhY3RvckFscGhhLCBHTGVudW0gZGZh Y3RvckFscGhhKTsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK dHlwZWRlZiB2b2lkICggICogUEZOR0xWRVJURVhXRUlHSFRGRVhUUFJPQykgKEdMZmxvYXQgd2Vp Z2h0KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xWRVJURVhXRUlHSFRGVkVYVFBST0MpIChjb25z dCBHTGZsb2F0ICp3ZWlnaHQpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFZFUlRFWFdFSUdIVFBP SU5URVJFWFRQUk9DKSAoR0xzaXplaSBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUs IGNvbnN0IEdMdm9pZCAqcG9pbnRlcik7CgoKCgoKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICAqIFBG TkdMRkxVU0hWRVJURVhBUlJBWVJBTkdFTlZQUk9DKSAodm9pZCk7CnR5cGVkZWYgdm9pZCAoICAq IFBGTkdMVkVSVEVYQVJSQVlSQU5HRU5WUFJPQykgKEdMc2l6ZWkgc2l6ZSwgY29uc3QgR0x2b2lk ICpwb2ludGVyKTsKCgoKCiMgMjg0MSAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKCnR5cGVk ZWYgdm9pZCAoICAqIFBGTkdMQ09NQklORVJQQVJBTUVURVJGVk5WUFJPQykgKEdMZW51bSBwbmFt ZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xDT01CSU5F UlBBUkFNRVRFUkZOVlBST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwp0eXBlZGVm IHZvaWQgKCAgKiBQRk5HTENPTUJJTkVSUEFSQU1FVEVSSVZOVlBST0MpIChHTGVudW0gcG5hbWUs IGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTENPTUJJTkVSUEFS QU1FVEVSSU5WUFJPQykgKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwp0eXBlZGVmIHZvaWQg KCAgKiBQRk5HTENPTUJJTkVSSU5QVVROVlBST0MpIChHTGVudW0gc3RhZ2UsIEdMZW51bSBwb3J0 aW9uLCBHTGVudW0gdmFyaWFibGUsIEdMZW51bSBpbnB1dCwgR0xlbnVtIG1hcHBpbmcsIEdMZW51 bSBjb21wb25lbnRVc2FnZSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09NQklORVJPVVRQVVRO VlBST0MpIChHTGVudW0gc3RhZ2UsIEdMZW51bSBwb3J0aW9uLCBHTGVudW0gYWJPdXRwdXQsIEdM ZW51bSBjZE91dHB1dCwgR0xlbnVtIHN1bU91dHB1dCwgR0xlbnVtIHNjYWxlLCBHTGVudW0gYmlh cywgR0xib29sZWFuIGFiRG90UHJvZHVjdCwgR0xib29sZWFuIGNkRG90UHJvZHVjdCwgR0xib29s ZWFuIG11eFN1bSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMRklOQUxDT01CSU5FUklOUFVUTlZQ Uk9DKSAoR0xlbnVtIHZhcmlhYmxlLCBHTGVudW0gaW5wdXQsIEdMZW51bSBtYXBwaW5nLCBHTGVu dW0gY29tcG9uZW50VXNhZ2UpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFVENPTUJJTkVSSU5Q VVRQQVJBTUVURVJGVk5WUFJPQykgKEdMZW51bSBzdGFnZSwgR0xlbnVtIHBvcnRpb24sIEdMZW51 bSB2YXJpYWJsZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQg KCAgKiBQRk5HTEdFVENPTUJJTkVSSU5QVVRQQVJBTUVURVJJVk5WUFJPQykgKEdMZW51bSBzdGFn ZSwgR0xlbnVtIHBvcnRpb24sIEdMZW51bSB2YXJpYWJsZSwgR0xlbnVtIHBuYW1lLCBHTGludCAq cGFyYW1zKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xHRVRDT01CSU5FUk9VVFBVVFBBUkFNRVRF UkZWTlZQUk9DKSAoR0xlbnVtIHN0YWdlLCBHTGVudW0gcG9ydGlvbiwgR0xlbnVtIHBuYW1lLCBH TGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFVENPTUJJTkVST1VUUFVU UEFSQU1FVEVSSVZOVlBST0MpIChHTGVudW0gc3RhZ2UsIEdMZW51bSBwb3J0aW9uLCBHTGVudW0g cG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFVEZJTkFMQ09N QklORVJJTlBVVFBBUkFNRVRFUkZWTlZQUk9DKSAoR0xlbnVtIHZhcmlhYmxlLCBHTGVudW0gcG5h bWUsIEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMR0VURklOQUxDT01C SU5FUklOUFVUUEFSQU1FVEVSSVZOVlBST0MpIChHTGVudW0gdmFyaWFibGUsIEdMZW51bSBwbmFt ZSwgR0xpbnQgKnBhcmFtcyk7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiB2b2lkICgg ICogUEZOR0xSRVNJWkVCVUZGRVJTTUVTQVBST0MpICh2b2lkKTsKCgoKCiMgMjkwOCAiL3Vzci9p bmNsdWRlL0dML2dsZXh0LmgiIDMKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMV0lORE9XUE9TMkRN RVNBUFJPQykgKEdMZG91YmxlIHgsIEdMZG91YmxlIHkpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5H TFdJTkRPV1BPUzJEVk1FU0FQUk9DKSAoY29uc3QgR0xkb3VibGUgKnYpOwp0eXBlZGVmIHZvaWQg KCAgKiBQRk5HTFdJTkRPV1BPUzJGTUVTQVBST0MpIChHTGZsb2F0IHgsIEdMZmxvYXQgeSk7CnR5 cGVkZWYgdm9pZCAoICAqIFBGTkdMV0lORE9XUE9TMkZWTUVTQVBST0MpIChjb25zdCBHTGZsb2F0 ICp2KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xXSU5ET1dQT1MySU1FU0FQUk9DKSAoR0xpbnQg eCwgR0xpbnQgeSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMV0lORE9XUE9TMklWTUVTQVBST0Mp IChjb25zdCBHTGludCAqdik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMV0lORE9XUE9TMlNNRVNB UFJPQykgKEdMc2hvcnQgeCwgR0xzaG9ydCB5KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xXSU5E T1dQT1MyU1ZNRVNBUFJPQykgKGNvbnN0IEdMc2hvcnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAgKiBQ Rk5HTFdJTkRPV1BPUzNETUVTQVBST0MpIChHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJs ZSB6KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xXSU5ET1dQT1MzRFZNRVNBUFJPQykgKGNvbnN0 IEdMZG91YmxlICp2KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xXSU5ET1dQT1MzRk1FU0FQUk9D KSAoR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICAqIFBG TkdMV0lORE9XUE9TM0ZWTUVTQVBST0MpIChjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lk ICggICogUEZOR0xXSU5ET1dQT1MzSU1FU0FQUk9DKSAoR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQg eik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMV0lORE9XUE9TM0lWTUVTQVBST0MpIChjb25zdCBH TGludCAqdik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMV0lORE9XUE9TM1NNRVNBUFJPQykgKEdM c2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHopOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFdJ TkRPV1BPUzNTVk1FU0FQUk9DKSAoY29uc3QgR0xzaG9ydCAqdik7CnR5cGVkZWYgdm9pZCAoICAq IFBGTkdMV0lORE9XUE9TNERNRVNBUFJPQykgKEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91 YmxlIHosIEdMZG91YmxlIHcpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFdJTkRPV1BPUzREVk1F U0FQUk9DKSAoY29uc3QgR0xkb3VibGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFdJTkRP V1BPUzRGTUVTQVBST0MpIChHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0 IHcpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFdJTkRPV1BPUzRGVk1FU0FQUk9DKSAoY29uc3Qg R0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMV0lORE9XUE9TNElNRVNBUFJPQykg KEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpOwp0eXBlZGVmIHZvaWQgKCAgKiBQ Rk5HTFdJTkRPV1BPUzRJVk1FU0FQUk9DKSAoY29uc3QgR0xpbnQgKnYpOwp0eXBlZGVmIHZvaWQg KCAgKiBQRk5HTFdJTkRPV1BPUzRTTUVTQVBST0MpIChHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xz aG9ydCB6LCBHTHNob3J0IHcpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFdJTkRPV1BPUzRTVk1F U0FQUk9DKSAoY29uc3QgR0xzaG9ydCAqdik7CgoKCgoKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICAq IFBGTkdMTVVMVElNT0RFRFJBV0FSUkFZU0lCTVBST0MpIChHTGVudW0gbW9kZSwgY29uc3QgR0xp bnQgKmZpcnN0LCBjb25zdCBHTHNpemVpICpjb3VudCwgR0xzaXplaSBwcmltY291bnQsIEdMaW50 IG1vZGVzdHJpZGUpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTE1VTFRJTU9ERURSQVdFTEVNRU5U U0lCTVBST0MpIChjb25zdCBHTGVudW0gKm1vZGUsIGNvbnN0IEdMc2l6ZWkgKmNvdW50LCBHTGVu dW0gdHlwZSwgY29uc3QgR0x2b2lkKiAqaW5kaWNlcywgR0xzaXplaSBwcmltY291bnQsIEdMaW50 IG1vZGVzdHJpZGUpOwoKCgoKIyAyOTYwICIvdXNyL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwoKdHlw ZWRlZiB2b2lkICggICogUEZOR0xDT0xPUlBPSU5URVJMSVNUSUJNUFJPQykgKEdMaW50IHNpemUs IEdMZW51bSB0eXBlLCBHTGludCBzdHJpZGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIsIEdMaW50 IHB0cnN0cmlkZSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMU0VDT05EQVJZQ09MT1JQT0lOVEVS TElTVElCTVBST0MpIChHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xpbnQgc3RyaWRlLCBjb25z dCBHTHZvaWQqICpwb2ludGVyLCBHTGludCBwdHJzdHJpZGUpOwp0eXBlZGVmIHZvaWQgKCAgKiBQ Rk5HTEVER0VGTEFHUE9JTlRFUkxJU1RJQk1QUk9DKSAoR0xpbnQgc3RyaWRlLCBjb25zdCBHTGJv b2xlYW4qICpwb2ludGVyLCBHTGludCBwdHJzdHJpZGUpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5H TEZPR0NPT1JEUE9JTlRFUkxJU1RJQk1QUk9DKSAoR0xlbnVtIHR5cGUsIEdMaW50IHN0cmlkZSwg Y29uc3QgR0x2b2lkKiAqcG9pbnRlciwgR0xpbnQgcHRyc3RyaWRlKTsKdHlwZWRlZiB2b2lkICgg ICogUEZOR0xJTkRFWFBPSU5URVJMSVNUSUJNUFJPQykgKEdMZW51bSB0eXBlLCBHTGludCBzdHJp ZGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIsIEdMaW50IHB0cnN0cmlkZSk7CnR5cGVkZWYgdm9p ZCAoICAqIFBGTkdMTk9STUFMUE9JTlRFUkxJU1RJQk1QUk9DKSAoR0xlbnVtIHR5cGUsIEdMaW50 IHN0cmlkZSwgY29uc3QgR0x2b2lkKiAqcG9pbnRlciwgR0xpbnQgcHRyc3RyaWRlKTsKdHlwZWRl ZiB2b2lkICggICogUEZOR0xURVhDT09SRFBPSU5URVJMSVNUSUJNUFJPQykgKEdMaW50IHNpemUs IEdMZW51bSB0eXBlLCBHTGludCBzdHJpZGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIsIEdMaW50 IHB0cnN0cmlkZSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMVkVSVEVYUE9JTlRFUkxJU1RJQk1Q Uk9DKSAoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMaW50IHN0cmlkZSwgY29uc3QgR0x2b2lk KiAqcG9pbnRlciwgR0xpbnQgcHRyc3RyaWRlKTsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMVEJVRkZFUk1BU0szREZYUFJPQykgKEdMdWludCBt YXNrKTsKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFNBTVBMRU1BU0tFWFRQUk9DKSAo R0xjbGFtcGYgdmFsdWUsIEdMYm9vbGVhbiBpbnZlcnQpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5H TFNBTVBMRVBBVFRFUk5FWFRQUk9DKSAoR0xlbnVtIHBhdHRlcm4pOwoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMVEVYVFVSRUNPTE9STUFTS1NHSVNQUk9DKSAo R0xib29sZWFuIHJlZCwgR0xib29sZWFuIGdyZWVuLCBHTGJvb2xlYW4gYmx1ZSwgR0xib29sZWFu IGFscGhhKTsKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMSUdMT09JTlRFUkZBQ0VTR0lY UFJPQykgKEdMZW51bSBwbmFtZSwgY29uc3QgR0x2b2lkICpwYXJhbXMpOwoKCgoKCgoKCn0KCgoK IyAyMjQ1ICIvdXNyL2luY2x1ZGUvR0wvZ2wuaCIgMiAzCgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoK Cn0KCgoKIyAyNCAicHAyXzRfdG9iZW5raW4uY3BwIiAyCgojIDEgIi91c3IvaW5jbHVkZS9HTC9n bHUuaCIgMSAzCiAKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAi QyIgewoKCiAKCiAKCgoKIAoKCgogCgoKCgogCgoKCiAKCgoKCgogCiAKCgoKIAoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK IAoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAoKCgogCgoKCgoKIAogCgogCgoKCgogCgoKCiAK CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgog CgoKCmNsYXNzIEdMVW51cmJzOwpjbGFzcyBHTFVxdWFkcmljOwpjbGFzcyBHTFV0ZXNzZWxhdG9y OwoKCgoKCgp0eXBlZGVmIHN0cnVjdCBHTFVudXJicyBHTFVudXJic09iajsKdHlwZWRlZiBzdHJ1 Y3QgR0xVcXVhZHJpYyBHTFVxdWFkcmljT2JqOwp0eXBlZGVmIHN0cnVjdCBHTFV0ZXNzZWxhdG9y IEdMVXRlc3NlbGF0b3JPYmo7CnR5cGVkZWYgc3RydWN0IEdMVXRlc3NlbGF0b3IgR0xVdHJpYW5n dWxhdG9yT2JqOwoKCgogCnR5cGVkZWYgR0x2b2lkICgqX0dMVWZ1bmNwdHIpKEdMdm9pZCk7Cgpl eHRlcm4gdm9pZCBnbHVCZWdpbkN1cnZlIChHTFVudXJicyogbnVyYik7CmV4dGVybiB2b2lkIGds dUJlZ2luUG9seWdvbiAoR0xVdGVzc2VsYXRvciogdGVzcyk7CmV4dGVybiB2b2lkIGdsdUJlZ2lu U3VyZmFjZSAoR0xVbnVyYnMqIG51cmIpOwpleHRlcm4gdm9pZCBnbHVCZWdpblRyaW0gKEdMVW51 cmJzKiBudXJiKTsKZXh0ZXJuIEdMaW50IGdsdUJ1aWxkMURNaXBtYXBMZXZlbHMgKEdMZW51bSB0 YXJnZXQsIEdMaW50IGludGVybmFsRm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0 LCBHTGVudW0gdHlwZSwgR0xpbnQgbGV2ZWwsIEdMaW50IGJhc2UsIEdMaW50IG1heCwgY29uc3Qg dm9pZCAqZGF0YSk7CmV4dGVybiBHTGludCBnbHVCdWlsZDFETWlwbWFwcyAoR0xlbnVtIHRhcmdl dCwgR0xpbnQgaW50ZXJuYWxGb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsIEdM ZW51bSB0eXBlLCBjb25zdCB2b2lkICpkYXRhKTsKZXh0ZXJuIEdMaW50IGdsdUJ1aWxkMkRNaXBt YXBMZXZlbHMgKEdMZW51bSB0YXJnZXQsIEdMaW50IGludGVybmFsRm9ybWF0LCBHTHNpemVpIHdp ZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IGxl dmVsLCBHTGludCBiYXNlLCBHTGludCBtYXgsIGNvbnN0IHZvaWQgKmRhdGEpOwpleHRlcm4gR0xp bnQgZ2x1QnVpbGQyRE1pcG1hcHMgKEdMZW51bSB0YXJnZXQsIEdMaW50IGludGVybmFsRm9ybWF0 LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5 cGUsIGNvbnN0IHZvaWQgKmRhdGEpOwpleHRlcm4gR0xpbnQgZ2x1QnVpbGQzRE1pcG1hcExldmVs cyAoR0xlbnVtIHRhcmdldCwgR0xpbnQgaW50ZXJuYWxGb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdM c2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwg R0xpbnQgbGV2ZWwsIEdMaW50IGJhc2UsIEdMaW50IG1heCwgY29uc3Qgdm9pZCAqZGF0YSk7CmV4 dGVybiBHTGludCBnbHVCdWlsZDNETWlwbWFwcyAoR0xlbnVtIHRhcmdldCwgR0xpbnQgaW50ZXJu YWxGb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBH TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqZGF0YSk7CmV4dGVybiBHTGJv b2xlYW4gZ2x1Q2hlY2tFeHRlbnNpb24gKGNvbnN0IEdMdWJ5dGUgKmV4dE5hbWUsIGNvbnN0IEdM dWJ5dGUgKmV4dFN0cmluZyk7CmV4dGVybiB2b2lkIGdsdUN5bGluZGVyIChHTFVxdWFkcmljKiBx dWFkLCBHTGRvdWJsZSBiYXNlLCBHTGRvdWJsZSB0b3AsIEdMZG91YmxlIGhlaWdodCwgR0xpbnQg c2xpY2VzLCBHTGludCBzdGFja3MpOwpleHRlcm4gdm9pZCBnbHVEZWxldGVOdXJic1JlbmRlcmVy IChHTFVudXJicyogbnVyYik7CmV4dGVybiB2b2lkIGdsdURlbGV0ZVF1YWRyaWMgKEdMVXF1YWRy aWMqIHF1YWQpOwpleHRlcm4gdm9pZCBnbHVEZWxldGVUZXNzIChHTFV0ZXNzZWxhdG9yKiB0ZXNz KTsKZXh0ZXJuIHZvaWQgZ2x1RGlzayAoR0xVcXVhZHJpYyogcXVhZCwgR0xkb3VibGUgaW5uZXIs IEdMZG91YmxlIG91dGVyLCBHTGludCBzbGljZXMsIEdMaW50IGxvb3BzKTsKZXh0ZXJuIHZvaWQg Z2x1RW5kQ3VydmUgKEdMVW51cmJzKiBudXJiKTsKZXh0ZXJuIHZvaWQgZ2x1RW5kUG9seWdvbiAo R0xVdGVzc2VsYXRvciogdGVzcyk7CmV4dGVybiB2b2lkIGdsdUVuZFN1cmZhY2UgKEdMVW51cmJz KiBudXJiKTsKZXh0ZXJuIHZvaWQgZ2x1RW5kVHJpbSAoR0xVbnVyYnMqIG51cmIpOwpleHRlcm4g Y29uc3QgR0x1Ynl0ZSAqIGdsdUVycm9yU3RyaW5nIChHTGVudW0gZXJyb3IpOwpleHRlcm4gdm9p ZCBnbHVHZXROdXJic1Byb3BlcnR5IChHTFVudXJicyogbnVyYiwgR0xlbnVtIHByb3BlcnR5LCBH TGZsb2F0KiBkYXRhKTsKZXh0ZXJuIGNvbnN0IEdMdWJ5dGUgKiBnbHVHZXRTdHJpbmcgKEdMZW51 bSBuYW1lKTsKZXh0ZXJuIHZvaWQgZ2x1R2V0VGVzc1Byb3BlcnR5IChHTFV0ZXNzZWxhdG9yKiB0 ZXNzLCBHTGVudW0gd2hpY2gsIEdMZG91YmxlKiBkYXRhKTsKZXh0ZXJuIHZvaWQgZ2x1TG9hZFNh bXBsaW5nTWF0cmljZXMgKEdMVW51cmJzKiBudXJiLCBjb25zdCBHTGZsb2F0ICptb2RlbCwgY29u c3QgR0xmbG9hdCAqcGVyc3BlY3RpdmUsIGNvbnN0IEdMaW50ICp2aWV3KTsKZXh0ZXJuIHZvaWQg Z2x1TG9va0F0IChHTGRvdWJsZSBleWVYLCBHTGRvdWJsZSBleWVZLCBHTGRvdWJsZSBleWVaLCBH TGRvdWJsZSBjZW50ZXJYLCBHTGRvdWJsZSBjZW50ZXJZLCBHTGRvdWJsZSBjZW50ZXJaLCBHTGRv dWJsZSB1cFgsIEdMZG91YmxlIHVwWSwgR0xkb3VibGUgdXBaKTsKZXh0ZXJuIEdMVW51cmJzKiBn bHVOZXdOdXJic1JlbmRlcmVyICh2b2lkKTsKZXh0ZXJuIEdMVXF1YWRyaWMqIGdsdU5ld1F1YWRy aWMgKHZvaWQpOwpleHRlcm4gR0xVdGVzc2VsYXRvciogZ2x1TmV3VGVzcyAodm9pZCk7CmV4dGVy biB2b2lkIGdsdU5leHRDb250b3VyIChHTFV0ZXNzZWxhdG9yKiB0ZXNzLCBHTGVudW0gdHlwZSk7 CmV4dGVybiB2b2lkIGdsdU51cmJzQ2FsbGJhY2sgKEdMVW51cmJzKiBudXJiLCBHTGVudW0gd2hp Y2gsIF9HTFVmdW5jcHRyIENhbGxCYWNrRnVuYyk7CmV4dGVybiB2b2lkIGdsdU51cmJzQ2FsbGJh Y2tEYXRhIChHTFVudXJicyogbnVyYiwgR0x2b2lkKiB1c2VyRGF0YSk7CmV4dGVybiB2b2lkIGds dU51cmJzQ2FsbGJhY2tEYXRhRVhUIChHTFVudXJicyogbnVyYiwgR0x2b2lkKiB1c2VyRGF0YSk7 CmV4dGVybiB2b2lkIGdsdU51cmJzQ3VydmUgKEdMVW51cmJzKiBudXJiLCBHTGludCBrbm90Q291 bnQsIEdMZmxvYXQgKmtub3RzLCBHTGludCBzdHJpZGUsIEdMZmxvYXQgKmNvbnRyb2wsIEdMaW50 IG9yZGVyLCBHTGVudW0gdHlwZSk7CmV4dGVybiB2b2lkIGdsdU51cmJzUHJvcGVydHkgKEdMVW51 cmJzKiBudXJiLCBHTGVudW0gcHJvcGVydHksIEdMZmxvYXQgdmFsdWUpOwpleHRlcm4gdm9pZCBn bHVOdXJic1N1cmZhY2UgKEdMVW51cmJzKiBudXJiLCBHTGludCBzS25vdENvdW50LCBHTGZsb2F0 KiBzS25vdHMsIEdMaW50IHRLbm90Q291bnQsIEdMZmxvYXQqIHRLbm90cywgR0xpbnQgc1N0cmlk ZSwgR0xpbnQgdFN0cmlkZSwgR0xmbG9hdCogY29udHJvbCwgR0xpbnQgc09yZGVyLCBHTGludCB0 T3JkZXIsIEdMZW51bSB0eXBlKTsKZXh0ZXJuIHZvaWQgZ2x1T3J0aG8yRCAoR0xkb3VibGUgbGVm dCwgR0xkb3VibGUgcmlnaHQsIEdMZG91YmxlIGJvdHRvbSwgR0xkb3VibGUgdG9wKTsKZXh0ZXJu IHZvaWQgZ2x1UGFydGlhbERpc2sgKEdMVXF1YWRyaWMqIHF1YWQsIEdMZG91YmxlIGlubmVyLCBH TGRvdWJsZSBvdXRlciwgR0xpbnQgc2xpY2VzLCBHTGludCBsb29wcywgR0xkb3VibGUgc3RhcnQs IEdMZG91YmxlIHN3ZWVwKTsKZXh0ZXJuIHZvaWQgZ2x1UGVyc3BlY3RpdmUgKEdMZG91YmxlIGZv dnksIEdMZG91YmxlIGFzcGVjdCwgR0xkb3VibGUgek5lYXIsIEdMZG91YmxlIHpGYXIpOwpleHRl cm4gdm9pZCBnbHVQaWNrTWF0cml4IChHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSBk ZWxYLCBHTGRvdWJsZSBkZWxZLCBHTGludCAqdmlld3BvcnQpOwpleHRlcm4gR0xpbnQgZ2x1UHJv amVjdCAoR0xkb3VibGUgb2JqWCwgR0xkb3VibGUgb2JqWSwgR0xkb3VibGUgb2JqWiwgY29uc3Qg R0xkb3VibGUgKm1vZGVsLCBjb25zdCBHTGRvdWJsZSAqcHJvaiwgY29uc3QgR0xpbnQgKnZpZXcs IEdMZG91YmxlKiB3aW5YLCBHTGRvdWJsZSogd2luWSwgR0xkb3VibGUqIHdpblopOwpleHRlcm4g dm9pZCBnbHVQd2xDdXJ2ZSAoR0xVbnVyYnMqIG51cmIsIEdMaW50IGNvdW50LCBHTGZsb2F0KiBk YXRhLCBHTGludCBzdHJpZGUsIEdMZW51bSB0eXBlKTsKZXh0ZXJuIHZvaWQgZ2x1UXVhZHJpY0Nh bGxiYWNrIChHTFVxdWFkcmljKiBxdWFkLCBHTGVudW0gd2hpY2gsIF9HTFVmdW5jcHRyIENhbGxC YWNrRnVuYyk7CmV4dGVybiB2b2lkIGdsdVF1YWRyaWNEcmF3U3R5bGUgKEdMVXF1YWRyaWMqIHF1 YWQsIEdMZW51bSBkcmF3KTsKZXh0ZXJuIHZvaWQgZ2x1UXVhZHJpY05vcm1hbHMgKEdMVXF1YWRy aWMqIHF1YWQsIEdMZW51bSBub3JtYWwpOwpleHRlcm4gdm9pZCBnbHVRdWFkcmljT3JpZW50YXRp b24gKEdMVXF1YWRyaWMqIHF1YWQsIEdMZW51bSBvcmllbnRhdGlvbik7CmV4dGVybiB2b2lkIGds dVF1YWRyaWNUZXh0dXJlIChHTFVxdWFkcmljKiBxdWFkLCBHTGJvb2xlYW4gdGV4dHVyZSk7CmV4 dGVybiBHTGludCBnbHVTY2FsZUltYWdlIChHTGVudW0gZm9ybWF0LCBHTHNpemVpIHdJbiwgR0xz aXplaSBoSW4sIEdMZW51bSB0eXBlSW4sIGNvbnN0IHZvaWQgKmRhdGFJbiwgR0xzaXplaSB3T3V0 LCBHTHNpemVpIGhPdXQsIEdMZW51bSB0eXBlT3V0LCBHTHZvaWQqIGRhdGFPdXQpOwpleHRlcm4g dm9pZCBnbHVTcGhlcmUgKEdMVXF1YWRyaWMqIHF1YWQsIEdMZG91YmxlIHJhZGl1cywgR0xpbnQg c2xpY2VzLCBHTGludCBzdGFja3MpOwpleHRlcm4gdm9pZCBnbHVUZXNzQmVnaW5Db250b3VyIChH TFV0ZXNzZWxhdG9yKiB0ZXNzKTsKZXh0ZXJuIHZvaWQgZ2x1VGVzc0JlZ2luUG9seWdvbiAoR0xV dGVzc2VsYXRvciogdGVzcywgR0x2b2lkKiBkYXRhKTsKZXh0ZXJuIHZvaWQgZ2x1VGVzc0NhbGxi YWNrIChHTFV0ZXNzZWxhdG9yKiB0ZXNzLCBHTGVudW0gd2hpY2gsIF9HTFVmdW5jcHRyIENhbGxC YWNrRnVuYyk7CmV4dGVybiB2b2lkIGdsdVRlc3NFbmRDb250b3VyIChHTFV0ZXNzZWxhdG9yKiB0 ZXNzKTsKZXh0ZXJuIHZvaWQgZ2x1VGVzc0VuZFBvbHlnb24gKEdMVXRlc3NlbGF0b3IqIHRlc3Mp OwpleHRlcm4gdm9pZCBnbHVUZXNzTm9ybWFsIChHTFV0ZXNzZWxhdG9yKiB0ZXNzLCBHTGRvdWJs ZSB2YWx1ZVgsIEdMZG91YmxlIHZhbHVlWSwgR0xkb3VibGUgdmFsdWVaKTsKZXh0ZXJuIHZvaWQg Z2x1VGVzc1Byb3BlcnR5IChHTFV0ZXNzZWxhdG9yKiB0ZXNzLCBHTGVudW0gd2hpY2gsIEdMZG91 YmxlIGRhdGEpOwpleHRlcm4gdm9pZCBnbHVUZXNzVmVydGV4IChHTFV0ZXNzZWxhdG9yKiB0ZXNz LCBHTGRvdWJsZSAqbG9jYXRpb24sIEdMdm9pZCogZGF0YSk7CmV4dGVybiBHTGludCBnbHVVblBy b2plY3QgKEdMZG91YmxlIHdpblgsIEdMZG91YmxlIHdpblksIEdMZG91YmxlIHdpblosIGNvbnN0 IEdMZG91YmxlICptb2RlbCwgY29uc3QgR0xkb3VibGUgKnByb2osIGNvbnN0IEdMaW50ICp2aWV3 LCBHTGRvdWJsZSogb2JqWCwgR0xkb3VibGUqIG9ialksIEdMZG91YmxlKiBvYmpaKTsKZXh0ZXJu IEdMaW50IGdsdVVuUHJvamVjdDQgKEdMZG91YmxlIHdpblgsIEdMZG91YmxlIHdpblksIEdMZG91 YmxlIHdpblosIEdMZG91YmxlIGNsaXBXLCBjb25zdCBHTGRvdWJsZSAqbW9kZWwsIGNvbnN0IEdM ZG91YmxlICpwcm9qLCBjb25zdCBHTGludCAqdmlldywgR0xkb3VibGUgbmVhciwgR0xkb3VibGUg ZmFyLCBHTGRvdWJsZSogb2JqWCwgR0xkb3VibGUqIG9ialksIEdMZG91YmxlKiBvYmpaLCBHTGRv dWJsZSogb2JqVyk7CgoKfQoKCgojIDI1ICJwcDJfNF90b2Jlbmtpbi5jcHAiIDIKCiMgMSAiL3Vz ci9pbmNsdWRlL0dML2dsdXQuaCIgMSAzCgoKCiAKCiAKCgoKIyA1NiAiL3Vzci9pbmNsdWRlL0dM L2dsdXQuaCIgMwoKCgoKCiAKCgoKCgoKCmV4dGVybiAiQyIgewoKCiAKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK CgoKCgoKCgogCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgogCgoKCiAKCgoK IAoKCgogCgoKCgoKIAoKCgoKIAoKCgojIDIyOCAiL3Vzci9pbmNsdWRlL0dML2dsdXQuaCIgMwoK IApleHRlcm4gdm9pZCAqZ2x1dFN0cm9rZVJvbWFuOwpleHRlcm4gdm9pZCAqZ2x1dFN0cm9rZU1v bm9Sb21hbjsKCiAKCgoKIApleHRlcm4gdm9pZCAqZ2x1dEJpdG1hcDlCeTE1OwpleHRlcm4gdm9p ZCAqZ2x1dEJpdG1hcDhCeTEzOwpleHRlcm4gdm9pZCAqZ2x1dEJpdG1hcFRpbWVzUm9tYW4xMDsK ZXh0ZXJuIHZvaWQgKmdsdXRCaXRtYXBUaW1lc1JvbWFuMjQ7CmV4dGVybiB2b2lkICpnbHV0Qml0 bWFwSGVsdmV0aWNhMTA7CmV4dGVybiB2b2lkICpnbHV0Qml0bWFwSGVsdmV0aWNhMTI7CmV4dGVy biB2b2lkICpnbHV0Qml0bWFwSGVsdmV0aWNhMTg7CgogCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKIAoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKIAoKCgogCgoKCgogCiAKCgogCgoKCgoKCgoKIAoK CiAKCgoKCgoKCgogCgogCgogCgoKCiAKZXh0ZXJuIHZvaWQgICBnbHV0SW5pdChpbnQgKmFyZ2Nw LCBjaGFyICoqYXJndik7CmV4dGVybiB2b2lkICAgZ2x1dEluaXREaXNwbGF5TW9kZSh1bnNpZ25l ZCBpbnQgbW9kZSk7CgpleHRlcm4gdm9pZCAgIGdsdXRJbml0RGlzcGxheVN0cmluZyhjb25zdCBj aGFyICpzdHJpbmcpOwoKZXh0ZXJuIHZvaWQgICBnbHV0SW5pdFdpbmRvd1Bvc2l0aW9uKGludCB4 LCBpbnQgeSk7CmV4dGVybiB2b2lkICAgZ2x1dEluaXRXaW5kb3dTaXplKGludCB3aWR0aCwgaW50 IGhlaWdodCk7CmV4dGVybiB2b2lkICAgZ2x1dE1haW5Mb29wKHZvaWQpOwoKIApleHRlcm4gaW50 ICAgZ2x1dENyZWF0ZVdpbmRvdyhjb25zdCBjaGFyICp0aXRsZSk7CmV4dGVybiBpbnQgICBnbHV0 Q3JlYXRlU3ViV2luZG93KGludCB3aW4sIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVp Z2h0KTsKZXh0ZXJuIHZvaWQgICBnbHV0RGVzdHJveVdpbmRvdyhpbnQgd2luKTsKZXh0ZXJuIHZv aWQgICBnbHV0UG9zdFJlZGlzcGxheSh2b2lkKTsKCmV4dGVybiB2b2lkICAgZ2x1dFBvc3RXaW5k b3dSZWRpc3BsYXkoaW50IHdpbik7CgpleHRlcm4gdm9pZCAgIGdsdXRTd2FwQnVmZmVycyh2b2lk KTsKZXh0ZXJuIGludCAgIGdsdXRHZXRXaW5kb3codm9pZCk7CmV4dGVybiB2b2lkICAgZ2x1dFNl dFdpbmRvdyhpbnQgd2luKTsKZXh0ZXJuIHZvaWQgICBnbHV0U2V0V2luZG93VGl0bGUoY29uc3Qg Y2hhciAqdGl0bGUpOwpleHRlcm4gdm9pZCAgIGdsdXRTZXRJY29uVGl0bGUoY29uc3QgY2hhciAq dGl0bGUpOwpleHRlcm4gdm9pZCAgIGdsdXRQb3NpdGlvbldpbmRvdyhpbnQgeCwgaW50IHkpOwpl eHRlcm4gdm9pZCAgIGdsdXRSZXNoYXBlV2luZG93KGludCB3aWR0aCwgaW50IGhlaWdodCk7CmV4 dGVybiB2b2lkICAgZ2x1dFBvcFdpbmRvdyh2b2lkKTsKZXh0ZXJuIHZvaWQgICBnbHV0UHVzaFdp bmRvdyh2b2lkKTsKZXh0ZXJuIHZvaWQgICBnbHV0SWNvbmlmeVdpbmRvdyh2b2lkKTsKZXh0ZXJu IHZvaWQgICBnbHV0U2hvd1dpbmRvdyh2b2lkKTsKZXh0ZXJuIHZvaWQgICBnbHV0SGlkZVdpbmRv dyh2b2lkKTsKCmV4dGVybiB2b2lkICAgZ2x1dEZ1bGxTY3JlZW4odm9pZCk7CmV4dGVybiB2b2lk ICAgZ2x1dFNldEN1cnNvcihpbnQgY3Vyc29yKTsKCmV4dGVybiB2b2lkICAgZ2x1dFdhcnBQb2lu dGVyKGludCB4LCBpbnQgeSk7CgoKIApleHRlcm4gdm9pZCAgIGdsdXRFc3RhYmxpc2hPdmVybGF5 KHZvaWQpOwpleHRlcm4gdm9pZCAgIGdsdXRSZW1vdmVPdmVybGF5KHZvaWQpOwpleHRlcm4gdm9p ZCAgIGdsdXRVc2VMYXllcihHTGVudW0gbGF5ZXIpOwpleHRlcm4gdm9pZCAgIGdsdXRQb3N0T3Zl cmxheVJlZGlzcGxheSh2b2lkKTsKCmV4dGVybiB2b2lkICAgZ2x1dFBvc3RXaW5kb3dPdmVybGF5 UmVkaXNwbGF5KGludCB3aW4pOwoKZXh0ZXJuIHZvaWQgICBnbHV0U2hvd092ZXJsYXkodm9pZCk7 CmV4dGVybiB2b2lkICAgZ2x1dEhpZGVPdmVybGF5KHZvaWQpOwoKCiAKZXh0ZXJuIGludCAgIGds dXRDcmVhdGVNZW51KHZvaWQgKCopKGludCkpOwpleHRlcm4gdm9pZCAgIGdsdXREZXN0cm95TWVu dShpbnQgbWVudSk7CmV4dGVybiBpbnQgICBnbHV0R2V0TWVudSh2b2lkKTsKZXh0ZXJuIHZvaWQg ICBnbHV0U2V0TWVudShpbnQgbWVudSk7CmV4dGVybiB2b2lkICAgZ2x1dEFkZE1lbnVFbnRyeShj b25zdCBjaGFyICpsYWJlbCwgaW50IHZhbHVlKTsKZXh0ZXJuIHZvaWQgICBnbHV0QWRkU3ViTWVu dShjb25zdCBjaGFyICpsYWJlbCwgaW50IHN1Ym1lbnUpOwpleHRlcm4gdm9pZCAgIGdsdXRDaGFu Z2VUb01lbnVFbnRyeShpbnQgaXRlbSwgY29uc3QgY2hhciAqbGFiZWwsIGludCB2YWx1ZSk7CmV4 dGVybiB2b2lkICAgZ2x1dENoYW5nZVRvU3ViTWVudShpbnQgaXRlbSwgY29uc3QgY2hhciAqbGFi ZWwsIGludCBzdWJtZW51KTsKZXh0ZXJuIHZvaWQgICBnbHV0UmVtb3ZlTWVudUl0ZW0oaW50IGl0 ZW0pOwpleHRlcm4gdm9pZCAgIGdsdXRBdHRhY2hNZW51KGludCBidXR0b24pOwpleHRlcm4gdm9p ZCAgIGdsdXREZXRhY2hNZW51KGludCBidXR0b24pOwoKIApleHRlcm4gdm9pZCAgIGdsdXREaXNw bGF5RnVuYyh2b2lkICgqZnVuYykodm9pZCkpOwpleHRlcm4gdm9pZCAgIGdsdXRSZXNoYXBlRnVu Yyh2b2lkICgqZnVuYykoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSk7CmV4dGVybiB2b2lkICAgZ2x1 dEtleWJvYXJkRnVuYyh2b2lkICgqZnVuYykodW5zaWduZWQgY2hhciBrZXksIGludCB4LCBpbnQg eSkpOwpleHRlcm4gdm9pZCAgIGdsdXRNb3VzZUZ1bmModm9pZCAoKmZ1bmMpKGludCBidXR0b24s IGludCBzdGF0ZSwgaW50IHgsIGludCB5KSk7CmV4dGVybiB2b2lkICAgZ2x1dE1vdGlvbkZ1bmMo dm9pZCAoKmZ1bmMpKGludCB4LCBpbnQgeSkpOwpleHRlcm4gdm9pZCAgIGdsdXRQYXNzaXZlTW90 aW9uRnVuYyh2b2lkICgqZnVuYykoaW50IHgsIGludCB5KSk7CmV4dGVybiB2b2lkICAgZ2x1dEVu dHJ5RnVuYyh2b2lkICgqZnVuYykoaW50IHN0YXRlKSk7CmV4dGVybiB2b2lkICAgZ2x1dFZpc2li aWxpdHlGdW5jKHZvaWQgKCpmdW5jKShpbnQgc3RhdGUpKTsKZXh0ZXJuIHZvaWQgICBnbHV0SWRs ZUZ1bmModm9pZCAoKmZ1bmMpKHZvaWQpKTsKZXh0ZXJuIHZvaWQgICBnbHV0VGltZXJGdW5jKHVu c2lnbmVkIGludCBtaWxsaXMsIHZvaWQgKCpmdW5jKShpbnQgdmFsdWUpLCBpbnQgdmFsdWUpOwpl eHRlcm4gdm9pZCAgIGdsdXRNZW51U3RhdGVGdW5jKHZvaWQgKCpmdW5jKShpbnQgc3RhdGUpKTsK CmV4dGVybiB2b2lkICAgZ2x1dFNwZWNpYWxGdW5jKHZvaWQgKCpmdW5jKShpbnQga2V5LCBpbnQg eCwgaW50IHkpKTsKZXh0ZXJuIHZvaWQgICBnbHV0U3BhY2ViYWxsTW90aW9uRnVuYyh2b2lkICgq ZnVuYykoaW50IHgsIGludCB5LCBpbnQgeikpOwpleHRlcm4gdm9pZCAgIGdsdXRTcGFjZWJhbGxS b3RhdGVGdW5jKHZvaWQgKCpmdW5jKShpbnQgeCwgaW50IHksIGludCB6KSk7CmV4dGVybiB2b2lk ICAgZ2x1dFNwYWNlYmFsbEJ1dHRvbkZ1bmModm9pZCAoKmZ1bmMpKGludCBidXR0b24sIGludCBz dGF0ZSkpOwpleHRlcm4gdm9pZCAgIGdsdXRCdXR0b25Cb3hGdW5jKHZvaWQgKCpmdW5jKShpbnQg YnV0dG9uLCBpbnQgc3RhdGUpKTsKZXh0ZXJuIHZvaWQgICBnbHV0RGlhbHNGdW5jKHZvaWQgKCpm dW5jKShpbnQgZGlhbCwgaW50IHZhbHVlKSk7CmV4dGVybiB2b2lkICAgZ2x1dFRhYmxldE1vdGlv bkZ1bmModm9pZCAoKmZ1bmMpKGludCB4LCBpbnQgeSkpOwpleHRlcm4gdm9pZCAgIGdsdXRUYWJs ZXRCdXR0b25GdW5jKHZvaWQgKCpmdW5jKShpbnQgYnV0dG9uLCBpbnQgc3RhdGUsIGludCB4LCBp bnQgeSkpOwoKZXh0ZXJuIHZvaWQgICBnbHV0TWVudVN0YXR1c0Z1bmModm9pZCAoKmZ1bmMpKGlu dCBzdGF0dXMsIGludCB4LCBpbnQgeSkpOwpleHRlcm4gdm9pZCAgIGdsdXRPdmVybGF5RGlzcGxh eUZ1bmModm9pZCAoKmZ1bmMpKHZvaWQpKTsKCmV4dGVybiB2b2lkICAgZ2x1dFdpbmRvd1N0YXR1 c0Z1bmModm9pZCAoKmZ1bmMpKGludCBzdGF0ZSkpOwoKCmV4dGVybiB2b2lkICAgZ2x1dEtleWJv YXJkVXBGdW5jKHZvaWQgKCpmdW5jKSh1bnNpZ25lZCBjaGFyIGtleSwgaW50IHgsIGludCB5KSk7 CmV4dGVybiB2b2lkICAgZ2x1dFNwZWNpYWxVcEZ1bmModm9pZCAoKmZ1bmMpKGludCBrZXksIGlu dCB4LCBpbnQgeSkpOwpleHRlcm4gdm9pZCAgIGdsdXRKb3lzdGlja0Z1bmModm9pZCAoKmZ1bmMp KHVuc2lnbmVkIGludCBidXR0b25NYXNrLCBpbnQgeCwgaW50IHksIGludCB6KSwgaW50IHBvbGxJ bnRlcnZhbCk7CgoKCgogCmV4dGVybiB2b2lkICAgZ2x1dFNldENvbG9yKGludCwgR0xmbG9hdCBy ZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQgYmx1ZSk7CmV4dGVybiBHTGZsb2F0ICAgZ2x1dEdl dENvbG9yKGludCBuZHgsIGludCBjb21wb25lbnQpOwpleHRlcm4gdm9pZCAgIGdsdXRDb3B5Q29s b3JtYXAoaW50IHdpbik7CgogCmV4dGVybiBpbnQgICBnbHV0R2V0KEdMZW51bSB0eXBlKTsKZXh0 ZXJuIGludCAgIGdsdXREZXZpY2VHZXQoR0xlbnVtIHR5cGUpOwoKIApleHRlcm4gaW50ICAgZ2x1 dEV4dGVuc2lvblN1cHBvcnRlZChjb25zdCBjaGFyICpuYW1lKTsKCgpleHRlcm4gaW50ICAgZ2x1 dEdldE1vZGlmaWVycyh2b2lkKTsKZXh0ZXJuIGludCAgIGdsdXRMYXllckdldChHTGVudW0gdHlw ZSk7CgoKIApleHRlcm4gdm9pZCAgIGdsdXRCaXRtYXBDaGFyYWN0ZXIodm9pZCAqZm9udCwgaW50 IGNoYXJhY3Rlcik7CmV4dGVybiBpbnQgICBnbHV0Qml0bWFwV2lkdGgodm9pZCAqZm9udCwgaW50 IGNoYXJhY3Rlcik7CmV4dGVybiB2b2lkICAgZ2x1dFN0cm9rZUNoYXJhY3Rlcih2b2lkICpmb250 LCBpbnQgY2hhcmFjdGVyKTsKZXh0ZXJuIGludCAgIGdsdXRTdHJva2VXaWR0aCh2b2lkICpmb250 LCBpbnQgY2hhcmFjdGVyKTsKCmV4dGVybiBpbnQgICBnbHV0Qml0bWFwTGVuZ3RoKHZvaWQgKmZv bnQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnN0cmluZyk7CmV4dGVybiBpbnQgICBnbHV0U3Ryb2tl TGVuZ3RoKHZvaWQgKmZvbnQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnN0cmluZyk7CgoKIApleHRl cm4gdm9pZCAgIGdsdXRXaXJlU3BoZXJlKEdMZG91YmxlIHJhZGl1cywgR0xpbnQgc2xpY2VzLCBH TGludCBzdGFja3MpOwpleHRlcm4gdm9pZCAgIGdsdXRTb2xpZFNwaGVyZShHTGRvdWJsZSByYWRp dXMsIEdMaW50IHNsaWNlcywgR0xpbnQgc3RhY2tzKTsKZXh0ZXJuIHZvaWQgICBnbHV0V2lyZUNv bmUoR0xkb3VibGUgYmFzZSwgR0xkb3VibGUgaGVpZ2h0LCBHTGludCBzbGljZXMsIEdMaW50IHN0 YWNrcyk7CmV4dGVybiB2b2lkICAgZ2x1dFNvbGlkQ29uZShHTGRvdWJsZSBiYXNlLCBHTGRvdWJs ZSBoZWlnaHQsIEdMaW50IHNsaWNlcywgR0xpbnQgc3RhY2tzKTsKZXh0ZXJuIHZvaWQgICBnbHV0 V2lyZUN1YmUoR0xkb3VibGUgc2l6ZSk7CmV4dGVybiB2b2lkICAgZ2x1dFNvbGlkQ3ViZShHTGRv dWJsZSBzaXplKTsKZXh0ZXJuIHZvaWQgICBnbHV0V2lyZVRvcnVzKEdMZG91YmxlIGlubmVyUmFk aXVzLCBHTGRvdWJsZSBvdXRlclJhZGl1cywgR0xpbnQgc2lkZXMsIEdMaW50IHJpbmdzKTsKZXh0 ZXJuIHZvaWQgICBnbHV0U29saWRUb3J1cyhHTGRvdWJsZSBpbm5lclJhZGl1cywgR0xkb3VibGUg b3V0ZXJSYWRpdXMsIEdMaW50IHNpZGVzLCBHTGludCByaW5ncyk7CmV4dGVybiB2b2lkICAgZ2x1 dFdpcmVEb2RlY2FoZWRyb24odm9pZCk7CmV4dGVybiB2b2lkICAgZ2x1dFNvbGlkRG9kZWNhaGVk cm9uKHZvaWQpOwpleHRlcm4gdm9pZCAgIGdsdXRXaXJlVGVhcG90KEdMZG91YmxlIHNpemUpOwpl eHRlcm4gdm9pZCAgIGdsdXRTb2xpZFRlYXBvdChHTGRvdWJsZSBzaXplKTsKZXh0ZXJuIHZvaWQg ICBnbHV0V2lyZU9jdGFoZWRyb24odm9pZCk7CmV4dGVybiB2b2lkICAgZ2x1dFNvbGlkT2N0YWhl ZHJvbih2b2lkKTsKZXh0ZXJuIHZvaWQgICBnbHV0V2lyZVRldHJhaGVkcm9uKHZvaWQpOwpleHRl cm4gdm9pZCAgIGdsdXRTb2xpZFRldHJhaGVkcm9uKHZvaWQpOwpleHRlcm4gdm9pZCAgIGdsdXRX aXJlSWNvc2FoZWRyb24odm9pZCk7CmV4dGVybiB2b2lkICAgZ2x1dFNvbGlkSWNvc2FoZWRyb24o dm9pZCk7CgoKIApleHRlcm4gaW50ICAgZ2x1dFZpZGVvUmVzaXplR2V0KEdMZW51bSBwYXJhbSk7 CmV4dGVybiB2b2lkICAgZ2x1dFNldHVwVmlkZW9SZXNpemluZyh2b2lkKTsKZXh0ZXJuIHZvaWQg ICBnbHV0U3RvcFZpZGVvUmVzaXppbmcodm9pZCk7CmV4dGVybiB2b2lkICAgZ2x1dFZpZGVvUmVz aXplKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKZXh0ZXJuIHZvaWQgICBn bHV0VmlkZW9QYW4oaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwoKIApleHRl cm4gdm9pZCAgIGdsdXRSZXBvcnRFcnJvcnModm9pZCk7CgoKCiAKIAoKCgoKIAoKCgoKCmV4dGVy biB2b2lkICAgZ2x1dElnbm9yZUtleVJlcGVhdChpbnQgaWdub3JlKTsKZXh0ZXJuIHZvaWQgICBn bHV0U2V0S2V5UmVwZWF0KGludCByZXBlYXRNb2RlKTsKZXh0ZXJuIHZvaWQgICBnbHV0Rm9yY2VK b3lzdGlja0Z1bmModm9pZCk7CgogCiAKCgoKCgoKCgpleHRlcm4gdm9pZCAgIGdsdXRHYW1lTW9k ZVN0cmluZyhjb25zdCBjaGFyICpzdHJpbmcpOwpleHRlcm4gaW50ICAgZ2x1dEVudGVyR2FtZU1v ZGUodm9pZCk7CmV4dGVybiB2b2lkICAgZ2x1dExlYXZlR2FtZU1vZGUodm9pZCk7CmV4dGVybiBp bnQgICBnbHV0R2FtZU1vZGVHZXQoR0xlbnVtIG1vZGUpOwoKCgp9CgoKCgoKCgoKCgoKCgoKIyAy NiAicHAyXzRfdG9iZW5raW4uY3BwIiAyCgoKIAoKIyAxICJ0b2Jlbmtpbl9yYXkuaCIgMQogCgoK CgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKCgoKCgoKCgoKCiAKIAogCgpjbGFzcyBHTGZsb2F0UG9p bnQ7CmNsYXNzIFZlY3RvcjsKY2xhc3MgTGluZTsKY2xhc3MgUmF5OwoKCiAKIAogCgpjbGFzcyBH TGZsb2F0UG9pbnQKewoJcHVibGljOgoJCUdMZmxvYXRQb2ludCgpOwoJCUdMZmxvYXRQb2ludChj b25zdCBHTGZsb2F0UG9pbnQgJm8pOwoJCUdMZmxvYXRQb2ludChmbG9hdCBweCwgZmxvYXQgcHkp OwoJCQoJCWZsb2F0IHgseTsKCgkJIAoJCWZsb2F0IG9wZXJhdG9yKihjb25zdCBHTGZsb2F0UG9p bnQgJnApIGNvbnN0OwoJCUdMZmxvYXRQb2ludCBvcGVyYXRvciooZmxvYXQgcykgY29uc3Q7CgkJ CgkJR0xmbG9hdFBvaW50IG9wZXJhdG9yKyhjb25zdCBHTGZsb2F0UG9pbnQgJnApIGNvbnN0OwoJ CUdMZmxvYXRQb2ludCBvcGVyYXRvcisoZmxvYXQgcykgY29uc3Q7CgoJCUdMZmxvYXRQb2ludCBv cGVyYXRvci0oY29uc3QgR0xmbG9hdFBvaW50ICZwKSBjb25zdDsKCQlHTGZsb2F0UG9pbnQgb3Bl cmF0b3ItKGZsb2F0IHMpIGNvbnN0Owp9OwoKIAogCiAKCmNsYXNzIFZlY3RvciA6IHB1YmxpYyBH TGZsb2F0UG9pbnQKewoJcHVibGljOgoJCVZlY3RvcigpOwoJCVZlY3Rvcihjb25zdCBHTGZsb2F0 UG9pbnQgJm8pOwoJCVZlY3RvcihmbG9hdCBweCwgZmxvYXQgcHkpOwoKCQlWZWN0b3IgZ2V0UGVy cCgpIGNvbnN0OwoKfTsKCgogCiAKIAoKY2xhc3MgUmF5CnsKCXB1YmxpYzoKCQlWZWN0b3Igcyxj OwoJCWZsb2F0IGdldEludGVyc2VjdFRpbWUoY29uc3QgTGluZSAmbCkgY29uc3Q7CgkJR0xmbG9h dFBvaW50IGdldFBvaW50QXRUaW1lKGZsb2F0IHQpIGNvbnN0Owp9OwoKIAogCiAKCmNsYXNzIExp bmUKewoJcHVibGljOgoJCUxpbmUoKTsKCQlMaW5lKGNvbnN0IEdMZmxvYXRQb2ludCAmcywgY29u c3QgR0xmbG9hdFBvaW50ICZlKTsKCQkKCQlWZWN0b3IgbjsKCQlmbG9hdCBEOwoKCQl2b2lkIHNl dEVuZFBvaW50cyhjb25zdCBHTGZsb2F0UG9pbnQgJnMsIGNvbnN0IEdMZmxvYXRQb2ludCAmZSk7 Cn07CgogCiAKIAoKY2xhc3MgV2FsbHMKewoJcHVibGljOgoJCUdMZmxvYXRQb2ludCB2ZXJ0aWNl c1s4XTsKCQlMaW5lIHdhbGxzWzhdOwoKCQl2b2lkIHJlbmRlcigpIGNvbnN0OwoJCUxpbmUgZ2V0 Q2xvc2VzdExpbmUoY29uc3QgUmF5ICZyKSBjb25zdDsKfTsKCiAKIAogCgpHTGZsb2F0UG9pbnQ6 OkdMZmxvYXRQb2ludCgpCnsKCXggPSB5ID0gMDsKfQoKR0xmbG9hdFBvaW50OjpHTGZsb2F0UG9p bnQoY29uc3QgR0xmbG9hdFBvaW50ICZvKQp7Cgl4ID0gby54OwoJeSA9IG8ueTsKfQoKR0xmbG9h dFBvaW50OjpHTGZsb2F0UG9pbnQoZmxvYXQgcHgsIGZsb2F0IHB5KQp7Cgl4ID0gcHg7IHkgPSBw eTsKfQoKZmxvYXQgR0xmbG9hdFBvaW50OjpvcGVyYXRvciooY29uc3QgR0xmbG9hdFBvaW50ICZw KSBjb25zdAp7CglyZXR1cm4gKHgqcC54ICsgeSpwLnkpOwp9CgpHTGZsb2F0UG9pbnQgR0xmbG9h dFBvaW50OjpvcGVyYXRvciooZmxvYXQgcykgY29uc3QKewoJcmV0dXJuIEdMZmxvYXRQb2ludCh4 KnMsIHkqcyk7Cn0KCkdMZmxvYXRQb2ludCBHTGZsb2F0UG9pbnQ6Om9wZXJhdG9yKyhjb25zdCBH TGZsb2F0UG9pbnQgJnApIGNvbnN0CnsKCXJldHVybiBHTGZsb2F0UG9pbnQoeCtwLngsIHkrcC55 KTsKfQoKR0xmbG9hdFBvaW50IEdMZmxvYXRQb2ludDo6b3BlcmF0b3IrKGZsb2F0IHMpIGNvbnN0 CnsKCXJldHVybiBHTGZsb2F0UG9pbnQoeCtzLCB5K3MpOwp9CgpHTGZsb2F0UG9pbnQgR0xmbG9h dFBvaW50OjpvcGVyYXRvci0oY29uc3QgR0xmbG9hdFBvaW50ICZwKSBjb25zdAp7CglyZXR1cm4g R0xmbG9hdFBvaW50KHgtcC54LCB5LXAueSk7Cn0KCkdMZmxvYXRQb2ludCBHTGZsb2F0UG9pbnQ6 Om9wZXJhdG9yLShmbG9hdCBzKSBjb25zdAp7CglyZXR1cm4gR0xmbG9hdFBvaW50KHgtcywgeS1z KTsKfQoKIAogCiAKClZlY3Rvcjo6VmVjdG9yKCk6IEdMZmxvYXRQb2ludCgpIHt9CgpWZWN0b3I6 OlZlY3Rvcihjb25zdCBHTGZsb2F0UG9pbnQgJm8pOiBHTGZsb2F0UG9pbnQobykge30KClZlY3Rv cjo6VmVjdG9yKGZsb2F0IHB4LCBmbG9hdCBweSk6IEdMZmxvYXRQb2ludChweCxweSkge30KClZl Y3RvciBWZWN0b3I6OmdldFBlcnAoKSBjb25zdAp7CglyZXR1cm4gVmVjdG9yKC0xKnksIHgpOwp9 CgoKIAogCiAKCmZsb2F0IFJheTo6Z2V0SW50ZXJzZWN0VGltZShjb25zdCBMaW5lICZsKSBjb25z dAp7CglyZXR1cm4gKGwuRCAtIChsLm4qcykpIC8gKGwubipjKTsKfQoKR0xmbG9hdFBvaW50IFJh eTo6Z2V0UG9pbnRBdFRpbWUoZmxvYXQgdCkgY29uc3QKewoJcmV0dXJuIHMgKyAoYyp0KTsKfQoK IAogCiAKCkxpbmU6OkxpbmUoKQp7CglzZXRFbmRQb2ludHMoR0xmbG9hdFBvaW50KDAsMCksIEdM ZmxvYXRQb2ludCgwLDApKTsKfQoKTGluZTo6TGluZShjb25zdCBHTGZsb2F0UG9pbnQgJnMsIGNv bnN0IEdMZmxvYXRQb2ludCAmZSkKewoJc2V0RW5kUG9pbnRzKHMsZSk7Cn0KCnZvaWQgTGluZTo6 c2V0RW5kUG9pbnRzKGNvbnN0IEdMZmxvYXRQb2ludCAmcywgY29uc3QgR0xmbG9hdFBvaW50ICZl KQp7CglWZWN0b3IgdiA9IGUgLSBzOwkKCgluID0gdi5nZXRQZXJwKCk7CglEID0gbiAqIHM7Cn0K CiAKIAogCgp2b2lkIFdhbGxzOjpyZW5kZXIoKSBjb25zdAp7CglnbEJlZ2luKDB4MDAwMiApOwoK CWZvcihpbnQgaSA9IDA7IGkgPCA4OyBpKyspewoJCWdsVmVydGV4MmYoMSwxKTsKCX0KCglnbEVu ZCgpOwp9CiMgMzAgInBwMl80X3RvYmVua2luLmNwcCIgMgoKCiAKIAogCgpjb25zdCBjaGFyICpQ Uk9CTEVNX05BTUUgPSAiQXV0aG9yOiBNYXJrIFRvYmVua2luOyBQcm9ncmFtbWluZyBQcm9qZWN0 IDI6IFByb2JsZW0gNCI7CmNvbnN0IGludCBzY3JlZW5XaWR0aCAgICA9IDY0MDsKY29uc3QgaW50 IHNjcmVlbkhlaWdodCAgID0gNDgwOwoKV2FsbHMgd2FsbHM7CgoKIAogCiAKCiAKIAogCgoKdm9p ZCBkaXNwbGF5SGFuZGxlcigpIAp7IAoJZ2xDbGVhcigweDAwMDA0MDAwICk7CglnbEZsdXNoKCk7 IAp9Cgp2b2lkIG1vdXNlSGFuZGxlcihpbnQgYnV0dG9uLCBpbnQgc3RhdGUsIGludCB4LCBpbnQg eSkKewoJaWYoIShidXR0b24gPT0gMCAgJiYgc3RhdGUgPT0gMCApKQoJCXJldHVybjsKCgkgCgkg Cgp9CgogCgoKCnZvaWQga2V5Ym9hcmRIYW5kbGVyKHVuc2lnbmVkIGNoYXIga2V5LCBpbnQgeCwg aW50IHkpCnsKCXN3aXRjaChrZXkpewoJCWNhc2UgMjcgOgoJCWNhc2UgJ3EnOgoJCWNhc2UgJ1En OgoJCQlleGl0KDApOwoJCWJyZWFrOwoJfQp9CgogCiAKIAoKdm9pZCBpbml0R0woKQp7CgkKCWds Q2xlYXJDb2xvcigxLjAsMS4wLDEuMCwwLjApOyAKCWdsQ29sb3IzZigwLDAsMCk7CgoJCglnbE1h dHJpeE1vZGUoMHgxNzAxICk7IAoJZ2xMb2FkSWRlbnRpdHkoKTsgCglnbHVPcnRobzJEKDAuMCwg c2NyZWVuV2lkdGgsIDAuMCwgc2NyZWVuSGVpZ2h0KTsgCgoJZ2xDbGVhcigweDAwMDA0MDAwICk7 IAoKfQogCnZvaWQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCnsKCWdsdXRJbml0KCZhcmdj LCBhcmd2KTsgCglnbHV0SW5pdERpc3BsYXlNb2RlKDAgIHwgMCApOyAKCgoJZ2x1dEluaXRXaW5k b3dTaXplKHNjcmVlbldpZHRoLCBzY3JlZW5IZWlnaHQpOyAKCWdsdXRJbml0V2luZG93UG9zaXRp b24oMCwwKTsgCglnbHV0Q3JlYXRlV2luZG93KFBST0JMRU1fTkFNRSk7CgoJaW5pdEdMKCk7CgoK CWdsdXREaXNwbGF5RnVuYyhkaXNwbGF5SGFuZGxlcik7IAoJZ2x1dEtleWJvYXJkRnVuYyhrZXli b2FyZEhhbmRsZXIpOwoJZ2x1dE1vdXNlRnVuYyhtb3VzZUhhbmRsZXIpOwoJCgoJZ2x1dE1haW5M b29wKCk7Cn0K