From mboxrd@z Thu Jan 1 00:00:00 1970 From: vogon_jeltz@users.sourceforge.net To: gcc-gnats@gcc.gnu.org Subject: other/3192: "Can not split insn" in TuxRacer 0.61 source Date: Fri, 15 Jun 2001 00:46:00 -0000 Message-id: <20010615074043.28435.qmail@sourceware.cygnus.com> X-SW-Source: 2001-06/msg00661.html List-Id: >Number: 3192 >Category: other >Synopsis: "Can not split insn" in TuxRacer 0.61 source >Confidential: no >Severity: critical >Priority: medium >Responsible: unassigned >State: open >Class: rejects-legal >Submitter-Id: net >Arrival-Date: Fri Jun 15 00:46:01 PDT 2001 >Closed-Date: >Last-Modified: >Originator: Colin Bayer >Release: gcc version 3.1 20010613 (experimental) i686-pc-linux-gnu >Organization: >Environment: CFLAGS="-msse -march=pentiumpro" CXXFLAGS="-msse -march=pentiumpro" System type: i686-pc-linux-gnu Processor: Pentium III (Coppermine) -- family 6, model 8, stepping 6 Kernel: 2.4.5 >Description: While compiling the TuxRacer ( http://sourceforge.net/projects/tuxracer ) v.0.61 sources, during the "make" step, GCC bombs with the following errors: quadtree.cpp: In constructor `quadsquare::quadsquare(quadcornerdata*)': quadtree.cpp:121: Could not split insn (insn:TI 890 889 790 (parallel[ (set (reg:SF 22 exmm1 [199]) (if_then_else:SF (lt (reg:SF 22 exmm1 [199]) (reg/v:SF 21 exmm0 [143])) (reg:SF 22 exmm1 [199]) (reg/v:SF 21 exmm0 [143]))) (clobber (reg:CC 17 flags)) ] ) 612 {*minsf_nonieee} (insn_list 416 (insn_list 889 (nil))) (expr_list:REG_UNUSED (reg:CC 17 flags) (nil))) quadtree.cpp:121: Internal compiler error in final_scan_insn, at final.c:2911 Please submit a full bug report, with preprocessed source if appropriate. See for instructions. The following optimization options were enabled for C/C++ compiling: -msse, -march=pentiumpro >How-To-Repeat: 1) Download the sources from the TuxRacer Web site. 2) Untar, and configure with this command line: CFLAGS="-msse -march=pentiumpro" CXXFLAGS="-msse -march=pentiumpro" ./configure 3) Compile as normal. It should crash while compiling quadtree.cpp. >Fix: Fix i386.md file? >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="quadtree.ii" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="quadtree.ii" IyAxMyAicXVhZHRyZWUuY3BwIgojIDEgInR1eHJhY2VyLmgiIDEKIyAyNCAidHV4cmFjZXIuaCIK IyAxICIuLi9jb25maWcuaCIgMQojIDI1ICJ0dXhyYWNlci5oIiAyCiMgNjggInR1eHJhY2VyLmgi CiMgMSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9tYXRoLmgi IDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjgzICIvdXNyL2luY2x1ZGUv ZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMgMjg0ICIv dXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMzEyICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMu aCIgMwojIDEgIi91c3IvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAzCiMgMzEzICIvdXNyL2luY2x1 ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMjggIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKZXh0ZXJu ICJDIiB7CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvaHVnZV92YWwuaCIgMSAzCiMgMjUgIi91 c3IvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMu aCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgiIDIgMwojIDM0ICIvdXNy L2luY2x1ZGUvbWF0aC5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9uYW4uaCIgMSAz CiMgMzggIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv bWF0aGRlZi5oIiAxIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGRlZi5oIiAzCnR5cGVk ZWYgbG9uZyBkb3VibGUgZmxvYXRfdDsKCnR5cGVkZWYgbG9uZyBkb3VibGUgZG91YmxlX3Q7CiMg NDEgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDYzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAz CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwojIDU0ICIvdXNyL2luY2x1 ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZG91YmxlIGFjb3MgKGRvdWJsZSBfX3gpIHRo cm93ICgpOyBleHRlcm4gZG91YmxlIF9fYWNvcyAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRl cm4gZG91YmxlIGFzaW4gKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fYXNp biAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIGF0YW4gKGRvdWJsZSBfX3gp IHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fYXRhbiAoZG91YmxlIF9feCkgdGhyb3cgKCk7Cgpl eHRlcm4gZG91YmxlIGF0YW4yIChkb3VibGUgX195LCBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0 ZXJuIGRvdWJsZSBfX2F0YW4yIChkb3VibGUgX195LCBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpl eHRlcm4gZG91YmxlIGNvcyAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19j b3MgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBzaW4gKGRvdWJsZSBfX3gp IHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fc2luIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4 dGVybiBkb3VibGUgdGFuIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3Rh biAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIHNpbmNvcyAoZG91YmxlIF9f eCwgZG91YmxlICpfX3NpbngsIGRvdWJsZSAqX19jb3N4KSB0aHJvdyAoKTsgZXh0ZXJuIHZvaWQg X19zaW5jb3MgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19zaW54LCBkb3VibGUgKl9fY29zeCkgdGhy b3cgKCk7CgoKCgoKCmV4dGVybiBkb3VibGUgY29zaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4 dGVybiBkb3VibGUgX19jb3NoIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBkb3VibGUg c2luaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19zaW5oIChkb3VibGUg X194KSB0aHJvdyAoKTsKCmV4dGVybiBkb3VibGUgdGFuaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7 IGV4dGVybiBkb3VibGUgX190YW5oIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRv dWJsZSBhY29zaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19hY29zaCAo ZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIGFzaW5oIChkb3VibGUgX194KSB0 aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2FzaW5oIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4 dGVybiBkb3VibGUgYXRhbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9f YXRhbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCmV4dGVybiBkb3VibGUgZXhwIChkb3Vi bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2V4cCAoZG91YmxlIF9feCkgdGhyb3cg KCk7CgoKCmV4dGVybiBkb3VibGUgZXhwMTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4g ZG91YmxlIF9fZXhwMTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBwb3cx MCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19wb3cxMCAoZG91YmxlIF9f eCkgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgZnJleHAgKGRvdWJsZSBfX3gsIGludCAqX19l eHBvbmVudCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19mcmV4cCAoZG91YmxlIF9feCwgaW50 ICpfX2V4cG9uZW50KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGxkZXhwIChkb3VibGUgX194 LCBpbnQgX19leHBvbmVudCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19sZGV4cCAoZG91Ymxl IF9feCwgaW50IF9fZXhwb25lbnQpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgbG9nIChkb3Vi bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2xvZyAoZG91YmxlIF9feCkgdGhyb3cg KCk7CgoKZXh0ZXJuIGRvdWJsZSBsb2cxMCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBk b3VibGUgX19sb2cxMCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBtb2Rm IChkb3VibGUgX194LCBkb3VibGUgKl9faXB0cikgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19t b2RmIChkb3VibGUgX194LCBkb3VibGUgKl9faXB0cikgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3Vi bGUgZXhwbTEgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZXhwbTEgKGRv dWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgbG9nMXAgKGRvdWJsZSBfX3gpIHRo cm93ICgpOyBleHRlcm4gZG91YmxlIF9fbG9nMXAgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4 dGVybiBkb3VibGUgbG9nYiAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19s b2diIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBkb3VibGUgZXhwMiAoZG91Ymxl IF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19leHAyIChkb3VibGUgX194KSB0aHJvdyAo KTsKCgpleHRlcm4gZG91YmxlIGxvZzIgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91 YmxlIF9fbG9nMiAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBkb3VibGUgcG93 IChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3BvdyAo ZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBzcXJ0IChk b3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3NxcnQgKGRvdWJsZSBfX3gpIHRo cm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGh5cG90IChkb3VibGUgX194LCBkb3VibGUgX195KSB0 aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2h5cG90IChkb3VibGUgX194LCBkb3VibGUgX195KSB0 aHJvdyAoKTsKCgoKCmV4dGVybiBkb3VibGUgY2JydCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4 dGVybiBkb3VibGUgX19jYnJ0IChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGRv dWJsZSBjZWlsIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2NlaWwgKGRv dWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgZmFicyAoZG91YmxlIF9feCkgdGhy b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fZmFicyAo ZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVy biBkb3VibGUgZmxvb3IgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZmxv b3IgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgZm1vZCAoZG91YmxlIF9f eCwgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19mbW9kIChkb3VibGUgX194 LCBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgX19pc2luZiAoZG91YmxlIF9f dmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50 IF9fZmluaXRlIChkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u c3RfXykpOwoKCgoKZXh0ZXJuIGludCBpc2luZiAoZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9f YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZSAoZG91YmxlIF9f dmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91 YmxlIGRyZW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gZG91Ymxl IF9fZHJlbSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3Vi bGUgc2lnbmlmaWNhbmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fc2ln bmlmaWNhbmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGRvdWJsZSBjb3B5c2ln biAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u c3RfXykpOyBleHRlcm4gZG91YmxlIF9fY29weXNpZ24gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kp IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBkb3VibGUg bmFuIChfX2NvbnN0IGNoYXIgKl9fdGFnYikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u c3RfXykpOyBleHRlcm4gZG91YmxlIF9fbmFuIChfX2NvbnN0IGNoYXIgKl9fdGFnYikgdGhyb3cg KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBfX2lzbmFuIChk b3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpl eHRlcm4gaW50IGlzbmFuIChkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo KF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgajAgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVy biBkb3VibGUgX19qMCAoZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGRvdWJsZSBqMSAoZG91Ymxl KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2oxIChkb3VibGUpIHRocm93ICgpOwpleHRlcm4g ZG91YmxlIGpuIChpbnQsIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19qbiAoaW50 LCBkb3VibGUpIHRocm93ICgpOwpleHRlcm4gZG91YmxlIHkwIChkb3VibGUpIHRocm93ICgpOyBl eHRlcm4gZG91YmxlIF9feTAgKGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBkb3VibGUgeTEgKGRv dWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX195MSAoZG91YmxlKSB0aHJvdyAoKTsKZXh0 ZXJuIGRvdWJsZSB5biAoaW50LCBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9feW4g KGludCwgZG91YmxlKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gZG91YmxlIGVyZiAoZG91YmxlKSB0 aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2VyZiAoZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGRv dWJsZSBlcmZjIChkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZXJmYyAoZG91Ymxl KSB0aHJvdyAoKTsKZXh0ZXJuIGRvdWJsZSBsZ2FtbWEgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVy biBkb3VibGUgX19sZ2FtbWEgKGRvdWJsZSkgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgdGdh bW1hIChkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fdGdhbW1hIChkb3VibGUpIHRo cm93ICgpOwoKCgoKZXh0ZXJuIGRvdWJsZSBnYW1tYSAoZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJu IGRvdWJsZSBfX2dhbW1hIChkb3VibGUpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91YmxlIGxn YW1tYV9yIChkb3VibGUsIGludCAqX19zaWduZ2FtcCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUg X19sZ2FtbWFfciAoZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApIHRocm93ICgpOwoKCgoKCgpleHRl cm4gZG91YmxlIHJpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fcmlu dCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBuZXh0YWZ0ZXIgKGRvdWJs ZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsg ZXh0ZXJuIGRvdWJsZSBfX25leHRhZnRlciAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cg KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKZXh0ZXJuIGRvdWJsZSBuZXh0dG93YXJk IChkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf X2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX25leHR0b3dhcmQgKGRvdWJsZSBfX3gsIGxvbmcg ZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRl cm4gZG91YmxlIHJlbWFpbmRlciAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4 dGVybiBkb3VibGUgX19yZW1haW5kZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgp OwoKCgpleHRlcm4gZG91YmxlIHNjYWxiIChkb3VibGUgX194LCBkb3VibGUgX19uKSB0aHJvdyAo KTsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxiIChkb3VibGUgX194LCBkb3VibGUgX19uKSB0aHJvdyAo KTsKCgoKCmV4dGVybiBkb3VibGUgc2NhbGJuIChkb3VibGUgX194LCBpbnQgX19uKSB0aHJvdyAo KTsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxibiAoZG91YmxlIF9feCwgaW50IF9fbikgdGhyb3cgKCk7 CgoKCmV4dGVybiBpbnQgaWxvZ2IgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gaW50IF9f aWxvZ2IgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGRvdWJsZSBzY2FsYmxuIChk b3VibGUgX194LCBsb25nIGludCBfX24pIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fc2NhbGJs biAoZG91YmxlIF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBu ZWFyYnlpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fbmVhcmJ5aW50 IChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSByb3VuZCAoZG91YmxlIF9f eCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19yb3VuZCAoZG91YmxlIF9feCkgdGhyb3cgKCk7 CgoKCmV4dGVybiBkb3VibGUgdHJ1bmMgKGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRl X18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX3RydW5jIChkb3VibGUgX194KSB0aHJv dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gZG91YmxlIHJlbXF1 byAoZG91YmxlIF9feCwgZG91YmxlIF9feSwgaW50ICpfX3F1bykgdGhyb3cgKCk7IGV4dGVybiBk b3VibGUgX19yZW1xdW8gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3ksIGludCAqX19xdW8pIHRocm93 ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgbHJpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBl eHRlcm4gbG9uZyBpbnQgX19scmludCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CmV4dGVybiBsb25n IGxvbmcgaW50IGxscmludCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGxvbmcg aW50IF9fbGxyaW50IChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgaW50IGxy b3VuZCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGludCBfX2xyb3VuZCAoZG91 YmxlIF9feCkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscm91bmQgKGRvdWJsZSBf X3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBsb25nIGludCBfX2xscm91bmQgKGRvdWJsZSBfX3gp IHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGZkaW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kp IHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZmRpbSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkg dGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBmbWF4IChkb3VibGUgX194LCBkb3VibGUgX195KSB0 aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2ZtYXggKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRo cm93ICgpOwoKCmV4dGVybiBkb3VibGUgZm1pbiAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhy b3cgKCk7IGV4dGVybiBkb3VibGUgX19mbWluIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJv dyAoKTsKCgoKZXh0ZXJuIGludCBfX2ZwY2xhc3NpZnkgKGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAo KQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fc2lnbmJp dCAoZG91YmxlIF9fdmFsdWUpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf XykpOwoKCgpleHRlcm4gZG91YmxlIGZtYSAoZG91YmxlIF9feCwgZG91YmxlIF9feSwgZG91Ymxl IF9feikgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19mbWEgKGRvdWJsZSBfX3gsIGRvdWJsZSBf X3ksIGRvdWJsZSBfX3opIHRocm93ICgpOwojIDY0ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMK IyA4MiAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhj YWxscy5oIiAxIDMKIyA1NCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJu IGZsb2F0IGFjb3NmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19hY29zZiAo ZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBhc2luZiAoZmxvYXQgX194KSB0aHJv dyAoKTsgZXh0ZXJuIGZsb2F0IF9fYXNpbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgpleHRlcm4g ZmxvYXQgYXRhbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2F0YW5mIChm bG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IGF0YW4yZiAoZmxvYXQgX195LCBmbG9h dCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19hdGFuMmYgKGZsb2F0IF9feSwgZmxvYXQg X194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgY29zZiAoZmxvYXQgX194KSB0aHJvdyAoKTsg ZXh0ZXJuIGZsb2F0IF9fY29zZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBz aW5mIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19zaW5mIChmbG9hdCBfX3gp IHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IHRhbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVy biBmbG9hdCBfX3RhbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIHNpbmNv c2YgKGZsb2F0IF9feCwgZmxvYXQgKl9fc2lueCwgZmxvYXQgKl9fY29zeCkgdGhyb3cgKCk7IGV4 dGVybiB2b2lkIF9fc2luY29zZiAoZmxvYXQgX194LCBmbG9hdCAqX19zaW54LCBmbG9hdCAqX19j b3N4KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGZsb2F0IGNvc2hmIChmbG9hdCBfX3gpIHRocm93 ICgpOyBleHRlcm4gZmxvYXQgX19jb3NoZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBm bG9hdCBzaW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fc2luaGYgKGZs b2F0IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZmxvYXQgdGFuaGYgKGZsb2F0IF9feCkgdGhyb3cg KCk7IGV4dGVybiBmbG9hdCBfX3RhbmhmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4g ZmxvYXQgYWNvc2hmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19hY29zaGYg KGZsb2F0IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZmxvYXQgYXNpbmhmIChmbG9hdCBfX3gpIHRo cm93ICgpOyBleHRlcm4gZmxvYXQgX19hc2luaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgpleHRl cm4gZmxvYXQgYXRhbmhmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19hdGFu aGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGZsb2F0IGV4cGYgKGZsb2F0IF9f eCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2V4cGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoK CmV4dGVybiBmbG9hdCBleHAxMGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBf X2V4cDEwZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBwb3cxMGYgKGZsb2F0 IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3BvdzEwZiAoZmxvYXQgX194KSB0aHJvdyAo KTsKCgoKZXh0ZXJuIGZsb2F0IGZyZXhwZiAoZmxvYXQgX194LCBpbnQgKl9fZXhwb25lbnQpIHRo cm93ICgpOyBleHRlcm4gZmxvYXQgX19mcmV4cGYgKGZsb2F0IF9feCwgaW50ICpfX2V4cG9uZW50 KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgbGRleHBmIChmbG9hdCBfX3gsIGludCBfX2V4cG9u ZW50KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbGRleHBmIChmbG9hdCBfX3gsIGludCBfX2V4 cG9uZW50KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgbG9nZiAoZmxvYXQgX194KSB0aHJvdyAo KTsgZXh0ZXJuIGZsb2F0IF9fbG9nZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxv YXQgbG9nMTBmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19sb2cxMGYgKGZs b2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IG1vZGZmIChmbG9hdCBfX3gsIGZsb2F0 ICpfX2lwdHIpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19tb2RmZiAoZmxvYXQgX194LCBmbG9h dCAqX19pcHRyKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0IGV4cG0xZiAoZmxvYXQgX194KSB0 aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZXhwbTFmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCmV4 dGVybiBmbG9hdCBsb2cxcGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xv ZzFwZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgbG9nYmYgKGZsb2F0IF9f eCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xvZ2JmIChmbG9hdCBfX3gpIHRocm93ICgpOwoK CgoKZXh0ZXJuIGZsb2F0IGV4cDJmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQg X19leHAyZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgbG9nMmYgKGZsb2F0 IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xvZzJmIChmbG9hdCBfX3gpIHRocm93ICgp OwoKCgoKCgpleHRlcm4gZmxvYXQgcG93ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgp OyBleHRlcm4gZmxvYXQgX19wb3dmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7CgoK ZXh0ZXJuIGZsb2F0IHNxcnRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19z cXJ0ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0IGh5cG90ZiAoZmxvYXQg X194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19oeXBvdGYgKGZsb2F0IF9f eCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBmbG9hdCBjYnJ0ZiAoZmxvYXQgX194 KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fY2JydGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoK CgoKCmV4dGVybiBmbG9hdCBjZWlsZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0 IF9fY2VpbGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGZhYnNmIChmbG9h dCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0 IF9fZmFic2YgKGZsb2F0IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp OwoKCmV4dGVybiBmbG9hdCBmbG9vcmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9h dCBfX2Zsb29yZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgZm1vZGYgKGZs b2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZm1vZGYgKGZsb2F0 IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgX19pc2luZmYgKGZsb2F0 IF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4g aW50IF9fZmluaXRlZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f Y29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBpc2luZmYgKGZsb2F0IF9fdmFsdWUpIHRocm93ICgp IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZWYgKGZsb2F0 IF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4g ZmxvYXQgZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0 IF9fZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0 IHNpZ25pZmljYW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fc2lnbmlm aWNhbmRmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGZsb2F0IGNvcHlzaWduZiAo ZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p KTsgZXh0ZXJuIGZsb2F0IF9fY29weXNpZ25mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cg KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGZsb2F0IG5hbmYgKF9f Y29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7 IGV4dGVybiBmbG9hdCBfX25hbmYgKF9fY29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAoKSBfX2F0 dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IF9faXNuYW5mIChmbG9hdCBf X3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBp bnQgaXNuYW5mIChmbG9hdCBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z dF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGowZiAoZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQg X19qMGYgKGZsb2F0KSB0aHJvdyAoKTsKZXh0ZXJuIGZsb2F0IGoxZiAoZmxvYXQpIHRocm93ICgp OyBleHRlcm4gZmxvYXQgX19qMWYgKGZsb2F0KSB0aHJvdyAoKTsKZXh0ZXJuIGZsb2F0IGpuZiAo aW50LCBmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2puZiAoaW50LCBmbG9hdCkgdGhy b3cgKCk7CmV4dGVybiBmbG9hdCB5MGYgKGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9f eTBmIChmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBmbG9hdCB5MWYgKGZsb2F0KSB0aHJvdyAoKTsg ZXh0ZXJuIGZsb2F0IF9feTFmIChmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBmbG9hdCB5bmYgKGlu dCwgZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX195bmYgKGludCwgZmxvYXQpIHRocm93 ICgpOwoKCgoKCmV4dGVybiBmbG9hdCBlcmZmIChmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9h dCBfX2VyZmYgKGZsb2F0KSB0aHJvdyAoKTsKZXh0ZXJuIGZsb2F0IGVyZmNmIChmbG9hdCkgdGhy b3cgKCk7IGV4dGVybiBmbG9hdCBfX2VyZmNmIChmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBmbG9h dCBsZ2FtbWFmIChmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xnYW1tYWYgKGZsb2F0 KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0IHRnYW1tYWYgKGZsb2F0KSB0aHJvdyAoKTsgZXh0 ZXJuIGZsb2F0IF9fdGdhbW1hZiAoZmxvYXQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGZsb2F0IGdh bW1hZiAoZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19nYW1tYWYgKGZsb2F0KSB0aHJv dyAoKTsKCgoKCgoKZXh0ZXJuIGZsb2F0IGxnYW1tYWZfciAoZmxvYXQsIGludCAqX19zaWduZ2Ft cCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xnYW1tYWZfciAoZmxvYXQsIGludCAqX19zaWdu Z2FtcCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBmbG9hdCByaW50ZiAoZmxvYXQgX194KSB0aHJv dyAoKTsgZXh0ZXJuIGZsb2F0IF9fcmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJu IGZsb2F0IG5leHRhZnRlcmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKSBfX2F0dHJp YnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX25leHRhZnRlcmYgKGZsb2F0IF9f eCwgZmxvYXQgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgpleHRl cm4gZmxvYXQgbmV4dHRvd2FyZGYgKGZsb2F0IF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAo KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX25leHR0b3dhcmRm IChmbG9hdCBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f Y29uc3RfXykpOwoKCgpleHRlcm4gZmxvYXQgcmVtYWluZGVyZiAoZmxvYXQgX194LCBmbG9hdCBf X3kpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19yZW1haW5kZXJmIChmbG9hdCBfX3gsIGZsb2F0 IF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCBzY2FsYmYgKGZsb2F0IF9feCwgZmxvYXQg X19uKSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fc2NhbGJmIChmbG9hdCBfX3gsIGZsb2F0IF9f bikgdGhyb3cgKCk7CgoKCgpleHRlcm4gZmxvYXQgc2NhbGJuZiAoZmxvYXQgX194LCBpbnQgX19u KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fc2NhbGJuZiAoZmxvYXQgX194LCBpbnQgX19uKSB0 aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBpbG9nYmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVy biBpbnQgX19pbG9nYmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZmxvYXQgc2Nh bGJsbmYgKGZsb2F0IF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9f c2NhbGJsbmYgKGZsb2F0IF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZs b2F0IG5lYXJieWludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX25lYXJi eWludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCByb3VuZGYgKGZsb2F0 IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3JvdW5kZiAoZmxvYXQgX194KSB0aHJvdyAo KTsKCgoKZXh0ZXJuIGZsb2F0IHRydW5jZiAoZmxvYXQgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0 ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX3RydW5jZiAoZmxvYXQgX194KSB0aHJv dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gZmxvYXQgcmVtcXVv ZiAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGludCAqX19xdW8pIHRocm93ICgpOyBleHRlcm4gZmxv YXQgX19yZW1xdW9mIChmbG9hdCBfX3gsIGZsb2F0IF9feSwgaW50ICpfX3F1bykgdGhyb3cgKCk7 CgoKCgoKCmV4dGVybiBsb25nIGludCBscmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVy biBsb25nIGludCBfX2xyaW50ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgbG9u ZyBpbnQgbGxyaW50ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQg X19sbHJpbnRmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBpbnQgbHJvdW5k ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgaW50IF9fbHJvdW5kZiAoZmxvYXQg X194KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyb3VuZGYgKGZsb2F0IF9feCkg dGhyb3cgKCk7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyb3VuZGYgKGZsb2F0IF9feCkgdGhy b3cgKCk7CgoKCmV4dGVybiBmbG9hdCBmZGltZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93 ICgpOyBleHRlcm4gZmxvYXQgX19mZGltZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgp OwoKCmV4dGVybiBmbG9hdCBmbWF4ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBl eHRlcm4gZmxvYXQgX19mbWF4ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCmV4 dGVybiBmbG9hdCBmbWluZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4g ZmxvYXQgX19mbWluZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4g aW50IF9fZnBjbGFzc2lmeWYgKGZsb2F0IF9fdmFsdWUpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19zaWduYml0ZiAoZmxvYXQgX192YWx1 ZSkgdGhyb3cgKCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBm bG9hdCBmbWFmIChmbG9hdCBfX3gsIGZsb2F0IF9feSwgZmxvYXQgX196KSB0aHJvdyAoKTsgZXh0 ZXJuIGZsb2F0IF9fZm1hZiAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9feikgdGhyb3cg KCk7CiMgODMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDk5ICIvdXNyL2luY2x1ZGUvbWF0 aC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwojIDU0ICIvdXNy L2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gbG9uZyBkb3VibGUgYWNvc2wgKGxv bmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Fjb3NsIChsb25n IGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGFzaW5sIChsb25nIGRv dWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hc2lubCAobG9uZyBkb3Vi bGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFubCAobG9uZyBkb3VibGUg X194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXRhbmwgKGxvbmcgZG91YmxlIF9f eCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgYXRhbjJsIChsb25nIGRvdWJsZSBfX3ks IGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2F0YW4ybCAo bG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBsb25n IGRvdWJsZSBjb3NsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3Vi bGUgX19jb3NsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91Ymxl IHNpbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3Np bmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgdGFubCAo bG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fdGFubCAobG9u ZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHZvaWQgc2luY29zbCAobG9uZyBkb3Vi bGUgX194LCBsb25nIGRvdWJsZSAqX19zaW54LCBsb25nIGRvdWJsZSAqX19jb3N4KSB0aHJvdyAo KTsgZXh0ZXJuIHZvaWQgX19zaW5jb3NsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpf X3NpbngsIGxvbmcgZG91YmxlICpfX2Nvc3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBk b3VibGUgY29zaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJs ZSBfX2Nvc2hsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91Ymxl IHNpbmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19z aW5obCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSB0YW5o bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fdGFuaGwg KGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBhY29zaGwg KGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Fjb3NobCAo bG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBhc2luaGwgKGxv bmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2FzaW5obCAobG9u ZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFuaGwgKGxvbmcg ZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2F0YW5obCAobG9uZyBk b3VibGUgX194KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXhwbCAobG9uZyBk b3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhwbCAobG9uZyBkb3Vi bGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4cDEwbCAobG9uZyBkb3Vi bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhwMTBsIChsb25nIGRvdWJs ZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHBvdzEwbCAobG9uZyBkb3VibGUg X194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcG93MTBsIChsb25nIGRvdWJsZSBf X3gpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgZnJleHBsIChsb25nIGRvdWJsZSBf X3gsIGludCAqX19leHBvbmVudCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZyZXhw bCAobG9uZyBkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQpIHRocm93ICgpOwoKCmV4dGVybiBs b25nIGRvdWJsZSBsZGV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIHRocm93 ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19sZGV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9f ZXhwb25lbnQpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2dsIChsb25nIGRvdWJs ZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2dsIChsb25nIGRvdWJsZSBf X3gpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2cxMGwgKGxvbmcgZG91YmxlIF9f eCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZzEwbCAobG9uZyBkb3VibGUgX194 KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbW9kZmwgKGxvbmcgZG91YmxlIF9feCwg bG9uZyBkb3VibGUgKl9faXB0cikgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX21vZGZs IChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX2lwdHIpIHRocm93ICgpOwoKCgpleHRl cm4gbG9uZyBkb3VibGUgZXhwbTFsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4g bG9uZyBkb3VibGUgX19leHBtMWwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJu IGxvbmcgZG91YmxlIGxvZzFwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxv bmcgZG91YmxlIF9fbG9nMXBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBs b25nIGRvdWJsZSBsb2dibCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcg ZG91YmxlIF9fbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gbG9u ZyBkb3VibGUgZXhwMmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRv dWJsZSBfX2V4cDJsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRv dWJsZSBsb2cybCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91Ymxl IF9fbG9nMmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBsb25nIGRv dWJsZSBwb3dsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4 dGVybiBsb25nIGRvdWJsZSBfX3Bvd2wgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195 KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgc3FydGwgKGxvbmcgZG91YmxlIF9feCkg dGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3NxcnRsIChsb25nIGRvdWJsZSBfX3gpIHRo cm93ICgpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgaHlwb3RsIChsb25nIGRvdWJsZSBfX3gsIGxv bmcgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2h5cG90bCAobG9u ZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGxvbmcg ZG91YmxlIGNicnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3Vi bGUgX19jYnJ0bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcg ZG91YmxlIGNlaWxsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3Vi bGUgX19jZWlsbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3Vi bGUgZmFic2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u c3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mYWJzbCAobG9uZyBkb3VibGUgX194KSB0aHJv dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZs b29ybCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZmxv b3JsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbW9k bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9u ZyBkb3VibGUgX19mbW9kbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93 ICgpOwoKCgoKZXh0ZXJuIGludCBfX2lzaW5mbCAobG9uZyBkb3VibGUgX192YWx1ZSkgdGhyb3cg KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19maW5pdGVsIChs b25nIGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7 CgoKCgpleHRlcm4gaW50IGlzaW5mbCAobG9uZyBkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgZmluaXRlbCAobG9uZyBkb3Vi bGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVy biBsb25nIGRvdWJsZSBkcmVtbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRo cm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19kcmVtbCAobG9uZyBkb3VibGUgX194LCBsb25n IGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgc2lnbmlmaWNhbmRs IChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zaWduaWZp Y2FuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUg Y29weXNpZ25sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19jb3B5c2lnbmwg KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f ICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgbmFubCAoX19jb25zdCBjaGFy ICpfX3RhZ2IpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxv bmcgZG91YmxlIF9fbmFubCAoX19jb25zdCBjaGFyICpfX3RhZ2IpIHRocm93ICgpIF9fYXR0cmli dXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgX19pc25hbmwgKGxvbmcgZG91Ymxl IF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJu IGludCBpc25hbmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18g KChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgajBsIChsb25nIGRvdWJsZSkgdGhy b3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2owbCAobG9uZyBkb3VibGUpIHRocm93ICgpOwpl eHRlcm4gbG9uZyBkb3VibGUgajFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25n IGRvdWJsZSBfX2oxbCAobG9uZyBkb3VibGUpIHRocm93ICgpOwpleHRlcm4gbG9uZyBkb3VibGUg am5sIChpbnQsIGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fam5s IChpbnQsIGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91YmxlIHkwbCAobG9u ZyBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX195MGwgKGxvbmcgZG91Ymxl KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91YmxlIHkxbCAobG9uZyBkb3VibGUpIHRocm93ICgp OyBleHRlcm4gbG9uZyBkb3VibGUgX195MWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJu IGxvbmcgZG91YmxlIHlubCAoaW50LCBsb25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25n IGRvdWJsZSBfX3lubCAoaW50LCBsb25nIGRvdWJsZSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGxv bmcgZG91YmxlIGVyZmwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91Ymxl IF9fZXJmbCAobG9uZyBkb3VibGUpIHRocm93ICgpOwpleHRlcm4gbG9uZyBkb3VibGUgZXJmY2wg KGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXJmY2wgKGxvbmcg ZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGxnYW1tYWwgKGxvbmcgZG91Ymxl KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbGdhbW1hbCAobG9uZyBkb3VibGUpIHRo cm93ICgpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgdGdhbW1hbCAobG9uZyBkb3VibGUpIHRocm93 ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX190Z2FtbWFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7 CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZ2FtbWFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4 dGVybiBsb25nIGRvdWJsZSBfX2dhbW1hbCAobG9uZyBkb3VibGUpIHRocm93ICgpOwoKCgoKCgpl eHRlcm4gbG9uZyBkb3VibGUgbGdhbW1hbF9yIChsb25nIGRvdWJsZSwgaW50ICpfX3NpZ25nYW1w KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbGdhbW1hbF9yIChsb25nIGRvdWJsZSwg aW50ICpfX3NpZ25nYW1wKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJpbnRs IChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19yaW50bCAo bG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbmV4dGFmdGVy bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRl X18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbmV4dGFmdGVybCAobG9uZyBk b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Nv bnN0X18pKTsKCmV4dGVybiBsb25nIGRvdWJsZSBuZXh0dG93YXJkbCAobG9uZyBkb3VibGUgX194 LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsg ZXh0ZXJuIGxvbmcgZG91YmxlIF9fbmV4dHRvd2FyZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBk b3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVy biBsb25nIGRvdWJsZSByZW1haW5kZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9f eSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3JlbWFpbmRlcmwgKGxvbmcgZG91Ymxl IF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNj YWxibCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX24pIHRocm93ICgpOyBleHRlcm4g bG9uZyBkb3VibGUgX19zY2FsYmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX19uKSB0 aHJvdyAoKTsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBzY2FsYm5sIChsb25nIGRvdWJsZSBfX3gs IGludCBfX24pIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zY2FsYm5sIChsb25nIGRv dWJsZSBfX3gsIGludCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGlsb2dibCAobG9uZyBk b3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGludCBfX2lsb2dibCAobG9uZyBkb3VibGUgX194 KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBzY2FsYmxubCAobG9uZyBkb3VibGUg X194LCBsb25nIGludCBfX24pIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zY2FsYmxu bCAobG9uZyBkb3VibGUgX194LCBsb25nIGludCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gbG9u ZyBkb3VibGUgbmVhcmJ5aW50bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxv bmcgZG91YmxlIF9fbmVhcmJ5aW50bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0 ZXJuIGxvbmcgZG91YmxlIHJvdW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJu IGxvbmcgZG91YmxlIF9fcm91bmRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRl cm4gbG9uZyBkb3VibGUgdHJ1bmNsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmli dXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fdHJ1bmNsIChsb25nIGRv dWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVy biBsb25nIGRvdWJsZSByZW1xdW9sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSwg aW50ICpfX3F1bykgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3JlbXF1b2wgKGxvbmcg ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195LCBpbnQgKl9fcXVvKSB0aHJvdyAoKTsKCgoKCgoK ZXh0ZXJuIGxvbmcgaW50IGxyaW50bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJu IGxvbmcgaW50IF9fbHJpbnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwpleHRlcm4gbG9u ZyBsb25nIGludCBsbHJpbnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9u ZyBsb25nIGludCBfX2xscmludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVy biBsb25nIGludCBscm91bmRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9u ZyBpbnQgX19scm91bmRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwpleHRlcm4gbG9uZyBs b25nIGludCBsbHJvdW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcg bG9uZyBpbnQgX19sbHJvdW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJu IGxvbmcgZG91YmxlIGZkaW1sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhy b3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZkaW1sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcg ZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZtYXhsIChsb25nIGRv dWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBf X2ZtYXhsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKZXh0 ZXJuIGxvbmcgZG91YmxlIGZtaW5sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg dGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZtaW5sIChsb25nIGRvdWJsZSBfX3gsIGxv bmcgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgX19mcGNsYXNzaWZ5bCAobG9u ZyBkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f KSk7CgoKZXh0ZXJuIGludCBfX3NpZ25iaXRsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAo KQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGxvbmcgZG91Ymxl IGZtYWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3op IHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbWFsIChsb25nIGRvdWJsZSBfX3gsIGxv bmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX196KSB0aHJvdyAoKTsKIyAxMDAgIi91c3IvaW5j bHVkZS9tYXRoLmgiIDIgMwojIDExMyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwpleHRlcm4gaW50 IHNpZ25nYW07CiMgMTU0ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCmVudW0KICB7CiAgICBGUF9O QU4sCgogICAgRlBfSU5GSU5JVEUsCgogICAgRlBfWkVSTywKCiAgICBGUF9TVUJOT1JNQUwsCgog ICAgRlBfTk9STUFMCgogIH07CiMgMjQwICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCnR5cGVkZWYg ZW51bQp7CiAgX0lFRUVfID0gLTEsCiAgX1NWSURfLAogIF9YT1BFTl8sCiAgX1BPU0lYXywKICBf SVNPQ18KfSBfTElCX1ZFUlNJT05fVFlQRTsKCgoKCmV4dGVybiBfTElCX1ZFUlNJT05fVFlQRSBf TElCX1ZFUlNJT047CiMgMjYzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCnN0cnVjdCBfX2V4Y2Vw dGlvbgoKCgogIHsKICAgIGludCB0eXBlOwogICAgY2hhciAqbmFtZTsKICAgIGRvdWJsZSBhcmcx OwogICAgZG91YmxlIGFyZzI7CiAgICBkb3VibGUgcmV0dmFsOwogIH07CgoKZXh0ZXJuIGludCBt YXRoZXJyIChzdHJ1Y3QgX19leGNlcHRpb24gKl9fZXhjKSB0aHJvdyAoKTsKIyAzNTAgIi91c3Iv aW5jbHVkZS9tYXRoLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDEg MwojIDEyNyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGludApf X3NpZ25iaXRmIChmbG9hdCBfX3gpIHRocm93ICgpCnsKICBfX2V4dGVuc2lvbl9fIHVuaW9uIHsg ZmxvYXQgX19mOyBpbnQgX19pOyB9IF9fdSA9IHsgX19mOiBfX3ggfTsKICByZXR1cm4gX191Ll9f aSA8IDA7Cn0KX19pbmxpbmUgaW50Cl9fc2lnbmJpdCAoZG91YmxlIF9feCkgdGhyb3cgKCkKewog IF9fZXh0ZW5zaW9uX18gdW5pb24geyBkb3VibGUgX19kOyBpbnQgX19pWzJdOyB9IF9fdSA9IHsg X19kOiBfX3ggfTsKICByZXR1cm4gX191Ll9faVsxXSA8IDA7Cn0KX19pbmxpbmUgaW50Cl9fc2ln bmJpdGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkKewogIF9fZXh0ZW5zaW9uX18gdW5pb24g eyBsb25nIGRvdWJsZSBfX2w7IGludCBfX2lbM107IH0gX191ID0geyBfX2w6IF9feCB9OwogIHJl dHVybiAoX191Ll9faVsyXSAmIDB4ODAwMCkgIT0gMDsKfQojIDI5MSAiL3Vzci9pbmNsdWRlL2Jp dHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGRvdWJsZSBfX3NnbiAoZG91YmxlKSB0aHJvdyAo KTsgX19pbmxpbmUgZG91YmxlIF9fc2duIChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJldHVybiBf X3ggPT0gMC4wID8gMC4wIDogKF9feCA+IDAuMCA/IDEuMCA6IC0xLjApOyB9IF9faW5saW5lIGZs b2F0IF9fc2duZiAoZmxvYXQpIHRocm93ICgpOyBfX2lubGluZSBmbG9hdCBfX3NnbmYgKGZsb2F0 IF9feCkgdGhyb3cgKCkgeyByZXR1cm4gX194ID09IDAuMCA/IDAuMCA6IChfX3ggPiAwLjAgPyAx LjAgOiAtMS4wKTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBfX3NnbmwgKGxvbmcgZG91YmxlKSB0 aHJvdyAoKTsgX19pbmxpbmUgbG9uZyBkb3VibGUgX19zZ25sIChsb25nIGRvdWJsZSBfX3gpIHRo cm93ICgpIHsgcmV0dXJuIF9feCA9PSAwLjAgPyAwLjAgOiAoX194ID4gMC4wID8gMS4wIDogLTEu MCk7IH0KCgoKCl9faW5saW5lIGRvdWJsZSBfX3BvdzIgKGRvdWJsZSkgdGhyb3cgKCk7IF9faW5s aW5lIGRvdWJsZSBfX3BvdzIgKGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBk b3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgX19leHRlbnNp b25fXyBsb25nIGxvbmcgaW50IF9fcCA9IChsb25nIGxvbmcgaW50KSBfX3g7IGlmIChfX3ggPT0g KGxvbmcgZG91YmxlKSBfX3ApIHsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIg KF9fdmFsdWUpIDogIjAiICgxLjApLCAidSIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBfX2Fz bSBfX3ZvbGF0aWxlX18gKCJmbGQJJSVzdCgwKVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeClcblx0 IiAiZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeClcblx0IiAiZjJ4bTEJCQkjIDJe KGZyYWN0KHgpKSAtIDFcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6 ICIwIiAoX194KSk7IF9fdmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUi IDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0 dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgZmxvYXQgX19wb3cyZiAoZmxvYXQpIHRocm93ICgpOyBf X2lubGluZSBmbG9hdCBfX3BvdzJmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9u ZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgX19leHRl bnNpb25fXyBsb25nIGxvbmcgaW50IF9fcCA9IChsb25nIGxvbmcgaW50KSBfX3g7IGlmIChfX3gg PT0gKGxvbmcgZG91YmxlKSBfX3ApIHsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9 dCIgKF9fdmFsdWUpIDogIjAiICgxLjApLCAidSIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBf X2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQJJSVzdCgwKVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeClc blx0IiAiZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeClcblx0IiAiZjJ4bTEJCQkj IDJeKGZyYWN0KHgpKSAtIDFcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50 KSA6ICIwIiAoX194KSk7IF9fdmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2Nh bGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsg cmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgX19wb3cybCAobG9uZyBkb3Vi bGUpIHRocm93ICgpOyBfX2lubGluZSBsb25nIGRvdWJsZSBfX3BvdzJsIChsb25nIGRvdWJsZSBf X3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9u ZyBkb3VibGUgX19leHBvbmVudDsgX19leHRlbnNpb25fXyBsb25nIGxvbmcgaW50IF9fcCA9IChs b25nIGxvbmcgaW50KSBfX3g7IGlmIChfX3ggPT0gKGxvbmcgZG91YmxlKSBfX3ApIHsgX19hc20g X192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiICgxLjApLCAidSIg KF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQJJSVzdCgw KVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeClcblx0IiAiZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJ CSMgZnJhY3QoeClcblx0IiAiZjJ4bTEJCQkjIDJeKGZyYWN0KHgpKSAtIDFcblx0IiA6ICI9dCIg KF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7IF9fdmFsdWUgKz0gMS4w OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9f dmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyAzNDMgIi91c3Iv aW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSB2b2lkCl9fc2luY29zIChkb3Vi bGUgX194LCBkb3VibGUgKl9fc2lueCwgZG91YmxlICpfX2Nvc3gpIHRocm93ICgpCnsKICByZWdp c3RlciBsb25nIGRvdWJsZSBfX2Nvc3I7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fc2lucjsgX19h c20gX192b2xhdGlsZV9fICgiZnNpbmNvc1xuXHQiICJmbnN0c3cJJSVheFxuXHQiICJ0ZXN0bAkk MHg0MDAsICUlZWF4XG5cdCIgImp6CTFmXG5cdCIgImZsZHBpXG5cdCIgImZhZGQJJSVzdCgwKVxu XHQiICJmeGNoCSUlc3QoMSlcblx0IiAiMjogZnByZW0xXG5cdCIgImZuc3RzdwklJWF4XG5cdCIg InRlc3RsCSQweDQwMCwgJSVlYXhcblx0IiAiam56CTJiXG5cdCIgImZzdHAJJSVzdCgxKVxuXHQi ICJmc2luY29zXG5cdCIgIjE6IiA6ICI9dCIgKF9fY29zciksICI9dSIgKF9fc2lucikgOiAiMCIg KF9feCkpOyAqX19zaW54ID0gX19zaW5yOyAqX19jb3N4ID0gX19jb3NyOwp9CgpfX2lubGluZSB2 b2lkCl9fc2luY29zZiAoZmxvYXQgX194LCBmbG9hdCAqX19zaW54LCBmbG9hdCAqX19jb3N4KSB0 aHJvdyAoKQp7CiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19jb3NyOyByZWdpc3RlciBsb25nIGRv dWJsZSBfX3NpbnI7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzaW5jb3Ncblx0IiAiZm5zdHN3CSUl YXhcblx0IiAidGVzdGwJJDB4NDAwLCAlJWVheFxuXHQiICJqegkxZlxuXHQiICJmbGRwaVxuXHQi ICJmYWRkCSUlc3QoMClcblx0IiAiZnhjaAklJXN0KDEpXG5cdCIgIjI6IGZwcmVtMVxuXHQiICJm bnN0c3cJJSVheFxuXHQiICJ0ZXN0bAkkMHg0MDAsICUlZWF4XG5cdCIgImpuegkyYlxuXHQiICJm c3RwCSUlc3QoMSlcblx0IiAiZnNpbmNvc1xuXHQiICIxOiIgOiAiPXQiIChfX2Nvc3IpLCAiPXUi IChfX3NpbnIpIDogIjAiIChfX3gpKTsgKl9fc2lueCA9IF9fc2lucjsgKl9fY29zeCA9IF9fY29z cjsKfQoKX19pbmxpbmUgdm9pZApfX3NpbmNvc2wgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3Vi bGUgKl9fc2lueCwgbG9uZyBkb3VibGUgKl9fY29zeCkgdGhyb3cgKCkKewogIHJlZ2lzdGVyIGxv bmcgZG91YmxlIF9fY29zcjsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19zaW5yOyBfX2FzbSBfX3Zv bGF0aWxlX18gKCJmc2luY29zXG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInRlc3RsCSQweDQwMCwg JSVlYXhcblx0IiAianoJMWZcblx0IiAiZmxkcGlcblx0IiAiZmFkZAklJXN0KDApXG5cdCIgImZ4 Y2gJJSVzdCgxKVxuXHQiICIyOiBmcHJlbTFcblx0IiAiZm5zdHN3CSUlYXhcblx0IiAidGVzdGwJ JDB4NDAwLCAlJWVheFxuXHQiICJqbnoJMmJcblx0IiAiZnN0cAklJXN0KDEpXG5cdCIgImZzaW5j b3Ncblx0IiAiMToiIDogIj10IiAoX19jb3NyKSwgIj11IiAoX19zaW5yKSA6ICIwIiAoX194KSk7 ICpfX3NpbnggPSBfX3NpbnI7ICpfX2Nvc3ggPSBfX2Nvc3I7Cn0KIyAzODYgIi91c3IvaW5jbHVk ZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSBsb25nIGRvdWJsZSBfX2V4cG0xbCAobG9u ZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJl Z2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdGVt cDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbDJlCQkJIyBlXnggLSAxID0gMl4oeCAqIGxvZzIo ZSkpIC0gMVxuXHQiICJmbXVsCSUlc3QoMSkJCSMgeCAqIGxvZzIoZSlcblx0IiAiZnN0CSUlc3Qo MSlcblx0IiAiZnJuZGludAkJCSMgaW50KHggKiBsb2cyKGUpKVxuXHQiICJmeGNoXG5cdCIgImZz dWIJJSVzdCgxKQkJIyBmcmFjdCh4ICogbG9nMihlKSlcblx0IiAiZjJ4bTEJCQkjIDJeKGZyYWN0 KHggKiBsb2cyKGUpKSkgLSAxXG5cdCIgImZzY2FsZQkJCSMgMl4oeCAqIGxvZzIoZSkpIC0gMl4o aW50KHggKiBsb2cyKGUpKSlcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50 KSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZQkJCSMgMl5pbnQoeCAq IGxvZzIoZSkpXG5cdCIgOiAiPXQiIChfX3RlbXApIDogIjAiICgxLjApLCAidSIgKF9fZXhwb25l bnQpKTsgX190ZW1wIC09IDEuMDsgX190ZW1wICs9IF9fdmFsdWU7IHJldHVybiBfX3RlbXAgPyBf X3RlbXAgOiBfX3g7IH0KIyA0MDYgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpf X2lubGluZSBkb3VibGUgZXhwIChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcg ZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7IF9fYXNtIF9f dm9sYXRpbGVfXyAoImZsZGwyZQkJCSMgZV54ID0gMl4oeCAqIGxvZzIoZSkpXG5cdCIgImZtdWwJ JSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVzdCgxKVxuXHQiICJmcm5kaW50CQkJ IyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEpCQkjIGZyYWN0 KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxvZzIoZSkpKSAtIDFc blx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7IF9f dmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1 ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0dXJuIF9fdmFsdWU7IH0g X19pbmxpbmUgZmxvYXQgZXhwZiAoZmxvYXQgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcg ZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7IF9fYXNtIF9f dm9sYXRpbGVfXyAoImZsZGwyZQkJCSMgZV54ID0gMl4oeCAqIGxvZzIoZSkpXG5cdCIgImZtdWwJ JSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVzdCgxKVxuXHQiICJmcm5kaW50CQkJ IyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEpCQkjIGZyYWN0 KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxvZzIoZSkpKSAtIDFc blx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7IF9f dmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1 ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0dXJuIF9fdmFsdWU7IH0g X19pbmxpbmUgbG9uZyBkb3VibGUgZXhwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJl Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25l bnQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGwyZQkJCSMgZV54ID0gMl4oeCAqIGxvZzIoZSkp XG5cdCIgImZtdWwJJSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVzdCgxKVxuXHQi ICJmcm5kaW50CQkJIyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0 KDEpCQkjIGZyYWN0KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxv ZzIoZSkpKSAtIDFcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIw IiAoX194KSk7IF9fdmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDog Ij10IiAoX192YWx1ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0dXJu IF9fdmFsdWU7IH0KX19pbmxpbmUgbG9uZyBkb3VibGUgX19leHBsIChsb25nIGRvdWJsZSBfX3gp IHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBk b3VibGUgX19leHBvbmVudDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbDJlCQkJIyBlXnggPSAy Xih4ICogbG9nMihlKSlcblx0IiAiZm11bAklJXN0KDEpCQkjIHggKiBsb2cyKGUpXG5cdCIgImZz dAklJXN0KDEpXG5cdCIgImZybmRpbnQJCQkjIGludCh4ICogbG9nMihlKSlcblx0IiAiZnhjaFxu XHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeCAqIGxvZzIoZSkpXG5cdCIgImYyeG0xCQkJIyAy XihmcmFjdCh4ICogbG9nMihlKSkpIC0gMVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9dSIgKF9f ZXhwb25lbnQpIDogIjAiIChfX3gpKTsgX192YWx1ZSArPSAxLjA7IF9fYXNtIF9fdm9sYXRpbGVf XyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX192YWx1ZSksICJ1IiAoX19leHBv bmVudCkpOyByZXR1cm4gX192YWx1ZTsgfQoKCl9faW5saW5lIGRvdWJsZSB0YW4gKGRvdWJsZSBf X3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9u ZyBkb3VibGUgX192YWx1ZTIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsgX19hc20gX192 b2xhdGlsZV9fICgiZnB0YW4iIDogIj10IiAoX192YWx1ZTIpLCAiPXUiIChfX3ZhbHVlKSA6ICIw IiAoX194KSk7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGZsb2F0IHRhbmYgKGZsb2F0IF9f eCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25n IGRvdWJsZSBfX3ZhbHVlMiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOyBfX2FzbSBfX3Zv bGF0aWxlX18gKCJmcHRhbiIgOiAiPXQiIChfX3ZhbHVlMiksICI9dSIgKF9fdmFsdWUpIDogIjAi IChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgdGFubCAobG9u ZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJl Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWUyIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7 IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwdGFuIiA6ICI9dCIgKF9fdmFsdWUyKSwgIj11IiAoX192 YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfQojIDQyNiAiL3Vzci9pbmNsdWRl L2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGRvdWJsZSBhdGFuMiAoZG91YmxlIF9feSwg ZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2Fz bSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1 IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBmbG9hdCBhdGFu MmYgKGZsb2F0IF9feSwgZmxvYXQgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl IF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwYXRhbiIgOiAiPXQiIChfX3ZhbHVlKSA6 ICIwIiAoX194KSwgInUiIChfX3kpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5s aW5lIGxvbmcgZG91YmxlIGF0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gp IHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGls ZV9fICgiZnBhdGFuIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAi c3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0KX19pbmxpbmUgbG9uZyBkb3VibGUgX19hdGFuMmwg KGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxv bmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwYXRhbiIgOiAiPXQiIChf X3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVl OyB9CgoKX19pbmxpbmUgZG91YmxlIGZtb2QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93 ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgi MToJZnByZW1cblx0IiAiZm5zdHN3CSUlYXhcblx0IiAic2FoZlxuXHQiICJqcAkxYiIgOiAiPXQi IChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogImF4IiwgImNjIik7IHJldHVybiBf X3ZhbHVlOyB9IF9faW5saW5lIGZsb2F0IGZtb2RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhy b3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18g KCIxOglmcHJlbVxuXHQiICJmbnN0c3cJJSVheFxuXHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9 dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiYXgiLCAiY2MiKTsgcmV0dXJu IF9fdmFsdWU7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgZm1vZGwgKGxvbmcgZG91YmxlIF9feCwg bG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7 IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtXG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInNh aGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6 ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfQojIDQ0MSAiL3Vzci9pbmNsdWRlL2JpdHMv bWF0aGlubGluZS5oIiAzCl9faW5saW5lIGRvdWJsZSBzcXJ0IChkb3VibGUgX194KSB0aHJvdyAo KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnNxcnQi IDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9IF9faW5s aW5lIGZsb2F0IHNxcnRmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgZmxvYXQgX19y ZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIw IiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBzcXJ0bCAo bG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0 OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9f eCkpOyByZXR1cm4gX19yZXN1bHQ7IH0KX19pbmxpbmUgbG9uZyBkb3VibGUgX19zcXJ0bCAobG9u ZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBf X2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkp OyByZXR1cm4gX19yZXN1bHQ7IH0KCgpfX2lubGluZSBkb3VibGUgZmFicyAoZG91YmxlIF9feCkg dGhyb3cgKCkgeyByZXR1cm4gX19idWlsdGluX2ZhYnMgKF9feCk7IH0KX19pbmxpbmUgZmxvYXQg ZmFic2YgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyByZXR1cm4gX19idWlsdGluX2ZhYnNmIChfX3gp OyB9Cl9faW5saW5lIGxvbmcgZG91YmxlIGZhYnNsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp IHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzbCAoX194KTsgfQpfX2lubGluZSBsb25nIGRvdWJsZSBf X2ZhYnNsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJz bCAoX194KTsgfQoKCgoKCgoKX19pbmxpbmUgZG91YmxlIHNpbiAoZG91YmxlIF9feCkgdGhyb3cg KCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzaW4i IDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9IF9faW5s aW5lIGZsb2F0IHNpbmYgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBmbG9hdCBfX3Jl c3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnNpbiIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIg KF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgc2lubCAobG9u ZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBf X2FzbSBfX3ZvbGF0aWxlX18gKCJmc2luIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7 IHJldHVybiBfX3Jlc3VsdDsgfQoKX19pbmxpbmUgZG91YmxlIGNvcyAoZG91YmxlIF9feCkgdGhy b3cgKCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZj b3MiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9IF9f aW5saW5lIGZsb2F0IGNvc2YgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBmbG9hdCBf X3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmNvcyIgOiAiPXQiIChfX3Jlc3VsdCkgOiAi MCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgY29zbCAo bG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0 OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmY29zIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194 KSk7IHJldHVybiBfX3Jlc3VsdDsgfQoKX19pbmxpbmUgZG91YmxlIGxvZyAoZG91YmxlIF9feCkg dGhyb3cgKCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAo ImZsZGxuMjsgZnhjaDsgZnlsMngiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0 KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBfX2lubGluZSBmbG9hdCBsb2dmIChmbG9hdCBfX3gp IHRocm93ICgpIHsgcmVnaXN0ZXIgZmxvYXQgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAo ImZsZGxuMjsgZnhjaDsgZnlsMngiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0 KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBsb2dsIChsb25n IGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19yZXN1bHQ7IF9f YXNtIF9fdm9sYXRpbGVfXyAoImZsZGxuMjsgZnhjaDsgZnlsMngiIDogIj10IiAoX19yZXN1bHQp IDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfQpfX2lubGluZSBkb3Vi bGUgbG9nMTAgKGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgZG91YmxlIF9fcmVzdWx0 OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsZzI7IGZ4Y2g7IGZ5bDJ4IiA6ICI9dCIgKF9fcmVz dWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7IH0gX19pbmxpbmUg ZmxvYXQgbG9nMTBmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgZmxvYXQgX19yZXN1 bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGxnMjsgZnhjaDsgZnlsMngiIDogIj10IiAoX19y ZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBfX2lubGlu ZSBsb25nIGRvdWJsZSBsb2cxMGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3Rl ciBsb25nIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbGcyOyBmeGNo OyBmeWwyeCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJu IF9fcmVzdWx0OyB9CgpfX2lubGluZSBkb3VibGUgYXNpbiAoZG91YmxlIF9feCkgdGhyb3cgKCkg eyByZXR1cm4gX19hdGFuMmwgKF9feCwgX19zcXJ0bCAoMS4wIC0gX194ICogX194KSk7IH0gX19p bmxpbmUgZmxvYXQgYXNpbmYgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyByZXR1cm4gX19hdGFuMmwg KF9feCwgX19zcXJ0bCAoMS4wIC0gX194ICogX194KSk7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUg YXNpbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZXR1cm4gX19hdGFuMmwgKF9feCwg X19zcXJ0bCAoMS4wIC0gX194ICogX194KSk7IH0KX19pbmxpbmUgZG91YmxlIGFjb3MgKGRvdWJs ZSBfX3gpIHRocm93ICgpIHsgcmV0dXJuIF9fYXRhbjJsIChfX3NxcnRsICgxLjAgLSBfX3ggKiBf X3gpLCBfX3gpOyB9IF9faW5saW5lIGZsb2F0IGFjb3NmIChmbG9hdCBfX3gpIHRocm93ICgpIHsg cmV0dXJuIF9fYXRhbjJsIChfX3NxcnRsICgxLjAgLSBfX3ggKiBfX3gpLCBfX3gpOyB9IF9faW5s aW5lIGxvbmcgZG91YmxlIGFjb3NsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmV0dXJu IF9fYXRhbjJsIChfX3NxcnRsICgxLjAgLSBfX3ggKiBfX3gpLCBfX3gpOyB9CgoKX19pbmxpbmUg ZG91YmxlIGF0YW4gKGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgZG91YmxlIF9fcmVz dWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDogIj10IiAoX19yZXN1bHQp IDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBfX2lubGluZSBmbG9h dCBhdGFuZiAoZmxvYXQgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGZsb2F0IF9fcmVzdWx0OyBf X2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDogIj10IiAoX19yZXN1bHQpIDogIjAi IChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBfX2lubGluZSBsb25nIGRvdWJs ZSBhdGFubCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDogIj10IiAoX19y ZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfQoKX19pbmxp bmUgbG9uZyBkb3VibGUgX19zZ24xbCAobG9uZyBkb3VibGUpIHRocm93ICgpOyBfX2lubGluZSBs b25nIGRvdWJsZSBfX3NnbjFsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgX19leHRlbnNp b25fXyB1bmlvbiB7IGxvbmcgZG91YmxlIF9feGxkOyB1bnNpZ25lZCBpbnQgX194aVszXTsgfSBf X24gPSB7IF9feGxkOiBfX3ggfTsgX19uLl9feGlbMl0gPSAoX19uLl9feGlbMl0gJiAweDgwMDAp IHwgMHgzZmZmOyBfX24uX194aVsxXSA9IDB4ODAwMDAwMDA7IF9fbi5fX3hpWzBdID0gMDsgcmV0 dXJuIF9fbi5fX3hsZDsgfQojIDQ4MCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAz Cl9faW5saW5lIGRvdWJsZSBzaW5oIChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxv bmcgZG91YmxlIF9fZXhtMSA9IF9fZXhwbTFsIChfX2ZhYnNsIChfX3gpKTsgcmV0dXJuIDAuNSAq IChfX2V4bTEgLyAoX19leG0xICsgMS4wKSArIF9fZXhtMSkgKiBfX3NnbjFsIChfX3gpOyB9IF9f aW5saW5lIGZsb2F0IHNpbmhmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBk b3VibGUgX19leG0xID0gX19leHBtMWwgKF9fZmFic2wgKF9feCkpOyByZXR1cm4gMC41ICogKF9f ZXhtMSAvIChfX2V4bTEgKyAxLjApICsgX19leG0xKSAqIF9fc2duMWwgKF9feCk7IH0gX19pbmxp bmUgbG9uZyBkb3VibGUgc2luaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3Rl ciBsb25nIGRvdWJsZSBfX2V4bTEgPSBfX2V4cG0xbCAoX19mYWJzbCAoX194KSk7IHJldHVybiAw LjUgKiAoX19leG0xIC8gKF9fZXhtMSArIDEuMCkgKyBfX2V4bTEpICogX19zZ24xbCAoX194KTsg fQoKCgpfX2lubGluZSBkb3VibGUgY29zaCAoZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3Rl ciBsb25nIGRvdWJsZSBfX2V4ID0gX19leHBsIChfX3gpOyByZXR1cm4gMC41ICogKF9fZXggKyAx LjAgLyBfX2V4KTsgfSBfX2lubGluZSBmbG9hdCBjb3NoZiAoZmxvYXQgX194KSB0aHJvdyAoKSB7 IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXggPSBfX2V4cGwgKF9feCk7IHJldHVybiAwLjUgKiAo X19leCArIDEuMCAvIF9fZXgpOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGNvc2hsIChsb25nIGRv dWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leCA9IF9fZXhwbCAo X194KTsgcmV0dXJuIDAuNSAqIChfX2V4ICsgMS4wIC8gX19leCk7IH0KCgoKX19pbmxpbmUgZG91 YmxlIHRhbmggKGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19l eG0xID0gX19leHBtMWwgKC1fX2ZhYnNsIChfX3ggKyBfX3gpKTsgcmV0dXJuIF9fZXhtMSAvIChf X2V4bTEgKyAyLjApICogX19zZ24xbCAoLV9feCk7IH0gX19pbmxpbmUgZmxvYXQgdGFuaGYgKGZs b2F0IF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4bTEgPSBfX2V4cG0x bCAoLV9fZmFic2wgKF9feCArIF9feCkpOyByZXR1cm4gX19leG0xIC8gKF9fZXhtMSArIDIuMCkg KiBfX3NnbjFsICgtX194KTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSB0YW5obCAobG9uZyBkb3Vi bGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhtMSA9IF9fZXhwbTFs ICgtX19mYWJzbCAoX194ICsgX194KSk7IHJldHVybiBfX2V4bTEgLyAoX19leG0xICsgMi4wKSAq IF9fc2duMWwgKC1fX3gpOyB9CgoKCgpfX2lubGluZSBkb3VibGUgZmxvb3IgKGRvdWJsZSBfX3gp IHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX192b2xhdGlsZSB1bnNp Z25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jd3Rt cDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7IF9fY3d0bXAg PSAoX19jdyAmIDB4ZjNmZikgfCAweDA0MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIg OiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChf X3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJt IiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBmbG9hdCBmbG9vcmYgKGZsb2F0 IF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX3ZvbGF0aWxl IHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBf X2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cpKTsgX19j d3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDQwMDsgX19hc20gX192b2xhdGlsZSAoImZsZGN3 ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9 dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6 IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGZs b29ybCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f dmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5z aWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDog Ij1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAwOyBfX2FzbSBf X3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGls ZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0 aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA1MDQg Ii91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSBkb3VibGUgY2VpbCAo ZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX3Zv bGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0 IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cp KTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgX19hc20gX192b2xhdGlsZSAo ImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50 IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZsZGN3 ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGZsb2F0IGNl aWxmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsg X192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBz aG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChf X2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA4MDA7IF9fYXNtIF9fdm9sYXRp bGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJu ZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJm bGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBsb25n IGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcg ZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9s YXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0 Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwODAw OyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20g X192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2Fz bSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7 IH0KIyA1MjIgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSBkb3Vi bGUKbGRleHAgKGRvdWJsZSBfX3gsIGludCBfX3kpIHRocm93ICgpCnsKICByZWdpc3RlciBsb25n IGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192 YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoKGxvbmcgZG91YmxlKSBfX3kpKTsgcmV0dXJuIF9fdmFs dWU7Cn0KCgoKCgoKX19pbmxpbmUgZG91YmxlIGV4cG0xIChkb3VibGUgX194KSB0aHJvdyAoKSB7 IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhw b25lbnQ7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdGVtcDsgX19hc20gX192b2xhdGlsZV9fICgi ZmxkbDJlCQkJIyBlXnggLSAxID0gMl4oeCAqIGxvZzIoZSkpIC0gMVxuXHQiICJmbXVsCSUlc3Qo MSkJCSMgeCAqIGxvZzIoZSlcblx0IiAiZnN0CSUlc3QoMSlcblx0IiAiZnJuZGludAkJCSMgaW50 KHggKiBsb2cyKGUpKVxuXHQiICJmeGNoXG5cdCIgImZzdWIJJSVzdCgxKQkJIyBmcmFjdCh4ICog bG9nMihlKSlcblx0IiAiZjJ4bTEJCQkjIDJeKGZyYWN0KHggKiBsb2cyKGUpKSkgLSAxXG5cdCIg ImZzY2FsZQkJCSMgMl4oeCAqIGxvZzIoZSkpIC0gMl4oaW50KHggKiBsb2cyKGUpKSlcblx0IiA6 ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7IF9fYXNtIF9f dm9sYXRpbGVfXyAoImZzY2FsZQkJCSMgMl5pbnQoeCAqIGxvZzIoZSkpXG5cdCIgOiAiPXQiIChf X3RlbXApIDogIjAiICgxLjApLCAidSIgKF9fZXhwb25lbnQpKTsgX190ZW1wIC09IDEuMDsgX190 ZW1wICs9IF9fdmFsdWU7IHJldHVybiBfX3RlbXAgPyBfX3RlbXAgOiBfX3g7IH0gX19pbmxpbmUg ZmxvYXQgZXhwbTFmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg X192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgcmVnaXN0ZXIgbG9uZyBk b3VibGUgX190ZW1wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsMmUJCQkjIGVeeCAtIDEgPSAy Xih4ICogbG9nMihlKSkgLSAxXG5cdCIgImZtdWwJJSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQi ICJmc3QJJSVzdCgxKVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4 Y2hcblx0IiAiZnN1YgklJXN0KDEpCQkjIGZyYWN0KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJ CSMgMl4oZnJhY3QoeCAqIGxvZzIoZSkpKSAtIDFcblx0IiAiZnNjYWxlCQkJIyAyXih4ICogbG9n MihlKSkgLSAyXihpbnQoeCAqIGxvZzIoZSkpKVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9dSIg KF9fZXhwb25lbnQpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlCQkJ IyAyXmludCh4ICogbG9nMihlKSlcblx0IiA6ICI9dCIgKF9fdGVtcCkgOiAiMCIgKDEuMCksICJ1 IiAoX19leHBvbmVudCkpOyBfX3RlbXAgLT0gMS4wOyBfX3RlbXAgKz0gX192YWx1ZTsgcmV0dXJu IF9fdGVtcCA/IF9fdGVtcCA6IF9feDsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBleHBtMWwgKGxv bmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBy ZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Rl bXA7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGwyZQkJCSMgZV54IC0gMSA9IDJeKHggKiBsb2cy KGUpKSAtIDFcblx0IiAiZm11bAklJXN0KDEpCQkjIHggKiBsb2cyKGUpXG5cdCIgImZzdAklJXN0 KDEpXG5cdCIgImZybmRpbnQJCQkjIGludCh4ICogbG9nMihlKSlcblx0IiAiZnhjaFxuXHQiICJm c3ViCSUlc3QoMSkJCSMgZnJhY3QoeCAqIGxvZzIoZSkpXG5cdCIgImYyeG0xCQkJIyAyXihmcmFj dCh4ICogbG9nMihlKSkpIC0gMVxuXHQiICJmc2NhbGUJCQkjIDJeKHggKiBsb2cyKGUpKSAtIDJe KGludCh4ICogbG9nMihlKSkpXG5cdCIgOiAiPXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVu dCkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUJCQkjIDJeaW50KHgg KiBsb2cyKGUpKVxuXHQiIDogIj10IiAoX190ZW1wKSA6ICIwIiAoMS4wKSwgInUiIChfX2V4cG9u ZW50KSk7IF9fdGVtcCAtPSAxLjA7IF9fdGVtcCArPSBfX3ZhbHVlOyByZXR1cm4gX190ZW1wID8g X190ZW1wIDogX194OyB9CgoKCgoKCl9faW5saW5lIGRvdWJsZSBsb2cxcCAoZG91YmxlIF9feCkg dGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAoX194 KSA+PSAxLjAgLSAwLjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxvZ2wg KDEuMCArIF9feCk7IGVsc2UgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4Y2hc blx0IiAiZnlsMnhwMSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyBy ZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBmbG9hdCBsb2cxcGYgKGZsb2F0IF9feCkgdGhyb3cg KCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAoX194KSA+PSAx LjAgLSAwLjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxvZ2wgKDEuMCAr IF9feCk7IGVsc2UgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4Y2hcblx0IiAi ZnlsMnhwMSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4g X192YWx1ZTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBsb2cxcGwgKGxvbmcgZG91YmxlIF9feCkg dGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAoX194 KSA+PSAxLjAgLSAwLjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxvZ2wg KDEuMCArIF9feCk7IGVsc2UgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4Y2hc blx0IiAiZnlsMnhwMSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyBy ZXR1cm4gX192YWx1ZTsgfQojIDU1NCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAz Cl9faW5saW5lIGRvdWJsZSBhc2luaCAoZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBs b25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gKGxvZzFwbCAoX195ICogX195 IC8gKF9fc3FydGwgKF9feSAqIF9feSArIDEuMCkgKyAxLjApICsgX195KSAqIF9fc2duMWwgKF9f eCkpOyB9IF9faW5saW5lIGZsb2F0IGFzaW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKSB7IHJlZ2lz dGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAobG9nMXBsIChfX3kg KiBfX3kgLyAoX19zcXJ0bCAoX195ICogX195ICsgMS4wKSArIDEuMCkgKyBfX3kpICogX19zZ24x bCAoX194KSk7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgYXNpbmhsIChsb25nIGRvdWJsZSBfX3gp IHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19mYWJzbCAoX194KTsgcmV0 dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChfX3NxcnRsIChfX3kgKiBfX3kgKyAxLjApICsgMS4w KSArIF9feSkgKiBfX3NnbjFsIChfX3gpKTsgfQoKCgoKX19pbmxpbmUgZG91YmxlIGFjb3NoIChk b3VibGUgX194KSB0aHJvdyAoKSB7IHJldHVybiBsb2dsIChfX3ggKyBfX3NxcnRsIChfX3ggLSAx LjApICogX19zcXJ0bCAoX194ICsgMS4wKSk7IH0gX19pbmxpbmUgZmxvYXQgYWNvc2hmIChmbG9h dCBfX3gpIHRocm93ICgpIHsgcmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9feCAtIDEuMCkg KiBfX3NxcnRsIChfX3ggKyAxLjApKTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBhY29zaGwgKGxv bmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZXR1cm4gbG9nbCAoX194ICsgX19zcXJ0bCAoX194 IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEuMCkpOyB9CgoKX19pbmxpbmUgZG91YmxlIGF0YW5o IChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFi c2wgKF9feCk7IHJldHVybiAtMC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsgX195 KSkgKiBfX3NnbjFsIChfX3gpOyB9IF9faW5saW5lIGZsb2F0IGF0YW5oZiAoZmxvYXQgX194KSB0 aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVy biAtMC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsgX195KSkgKiBfX3NnbjFsIChf X3gpOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGF0YW5obCAobG9uZyBkb3VibGUgX194KSB0aHJv dyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAt MC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsgX195KSkgKiBfX3NnbjFsIChfX3gp OyB9CgoKCgpfX2lubGluZSBkb3VibGUgaHlwb3QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRo cm93ICgpIHsgcmV0dXJuIF9fc3FydGwgKF9feCAqIF9feCArIF9feSAqIF9feSk7IH0gX19pbmxp bmUgZmxvYXQgaHlwb3RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCkgeyByZXR1cm4g X19zcXJ0bCAoX194ICogX194ICsgX195ICogX195KTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBo eXBvdGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSB7IHJldHVy biBfX3NxcnRsIChfX3ggKiBfX3ggKyBfX3kgKiBfX3kpOyB9CgpfX2lubGluZSBkb3VibGUgbG9n YiAoZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBy ZWdpc3RlciBsb25nIGRvdWJsZSBfX2p1bms7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZ4dHJhY3Rc blx0IiA6ICI9dCIgKF9fanVuayksICI9dSIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgcmV0dXJu IF9fdmFsdWU7IH0gX19pbmxpbmUgZmxvYXQgbG9nYmYgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyBy ZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2p1bms7 IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZ4dHJhY3Rcblx0IiA6ICI9dCIgKF9fanVuayksICI9dSIg KF9fdmFsdWUpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgbG9uZyBk b3VibGUgbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRv dWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2p1bms7IF9fYXNtIF9fdm9sYXRp bGVfXyAoImZ4dHJhY3Rcblx0IiA6ICI9dCIgKF9fanVuayksICI9dSIgKF9fdmFsdWUpIDogIjAi IChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA1ODEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhp bmxpbmUuaCIgMwpfX2lubGluZSBkb3VibGUgbG9nMiAoZG91YmxlIF9feCkgdGhyb3cgKCkgeyBy ZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZDE7IGZ4Y2g7 IGZ5bDJ4IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4g X19yZXN1bHQ7IH0gX19pbmxpbmUgZmxvYXQgbG9nMmYgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyBy ZWdpc3RlciBmbG9hdCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkMTsgZnhjaDsg ZnlsMngiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBf X3Jlc3VsdDsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBsb2cybCAobG9uZyBkb3VibGUgX194KSB0 aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxl X18gKCJmbGQxOyBmeGNoOyBmeWwyeCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAi c3QoMSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9CgoKX19pbmxpbmUgZmxvYXQKbGRleHBmIChmbG9h dCBfX3gsIGludCBfX3kpIHRocm93ICgpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVl OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9f eCksICJ1IiAoKGxvbmcgZG91YmxlKSBfX3kpKTsgcmV0dXJuIF9fdmFsdWU7Cn0KCl9faW5saW5l IGxvbmcgZG91YmxlCmxkZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgX195KSB0aHJvdyAoKQp7 CiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiZnNj YWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKChsb25nIGRvdWJsZSkgX195 KSk7IHJldHVybiBfX3ZhbHVlOwp9CgoKX19pbmxpbmUgZG91YmxlIGZtYSAoZG91YmxlIF9feCwg ZG91YmxlIF9feSwgZG91YmxlIF9feikgdGhyb3cgKCkgeyByZXR1cm4gKF9feCAqIF9feSkgKyBf X3o7IH0gX19pbmxpbmUgZmxvYXQgZm1hZiAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9f eikgdGhyb3cgKCkgeyByZXR1cm4gKF9feCAqIF9feSkgKyBfX3o7IH0gX19pbmxpbmUgbG9uZyBk b3VibGUgZm1hbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91Ymxl IF9feikgdGhyb3cgKCkgeyByZXR1cm4gKF9feCAqIF9feSkgKyBfX3o7IH0KCl9faW5saW5lIGRv dWJsZSByaW50IChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3Jlc3Vs dDsgX19hc20gX192b2xhdGlsZV9fICgiZnJuZGludCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIg KF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0gX19pbmxpbmUgZmxvYXQgcmludGYgKGZsb2F0IF9f eCkgdGhyb3cgKCkgeyByZWdpc3RlciBmbG9hdCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9f ICgiZnJuZGludCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1 bHQ7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgcmludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cg KCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgi ZnJuZGludCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7 IH0KIyA2MDggIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSBsb25n IGludApscmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCkKewogIGxvbmcgaW50IF9fbHJpbnRyZXM7 IF9fYXNtX18gX192b2xhdGlsZV9fICgiZmlzdHBsICUwIiA6ICI9bSIgKF9fbHJpbnRyZXMpIDog InQiIChfX3gpIDogInN0Iik7IHJldHVybiBfX2xyaW50cmVzOwp9Cl9faW5saW5lIGxvbmcgaW50 CmxyaW50IChkb3VibGUgX194KSB0aHJvdyAoKQp7CiAgbG9uZyBpbnQgX19scmludHJlczsgX19h c21fXyBfX3ZvbGF0aWxlX18gKCJmaXN0cGwgJTAiIDogIj1tIiAoX19scmludHJlcykgOiAidCIg KF9feCkgOiAic3QiKTsgcmV0dXJuIF9fbHJpbnRyZXM7Cn0KX19pbmxpbmUgbG9uZyBpbnQKbHJp bnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpCnsKICBsb25nIGludCBfX2xyaW50cmVzOyBf X2FzbV9fIF9fdm9sYXRpbGVfXyAoImZpc3RwbCAlMCIgOiAiPW0iIChfX2xyaW50cmVzKSA6ICJ0 IiAoX194KSA6ICJzdCIpOyByZXR1cm4gX19scmludHJlczsKfQojIDYzMSAiL3Vzci9pbmNsdWRl L2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGxvbmcgbG9uZyBpbnQKbGxyaW50ZiAoZmxv YXQgX194KSB0aHJvdyAoKQp7CiAgbG9uZyBsb25nIGludCBfX2xscmludHJlczsgX19hc21fXyBf X3ZvbGF0aWxlX18gKCJmaXN0cGxsICUwIiA6ICI9bSIgKF9fbGxyaW50cmVzKSA6ICJ0IiAoX194 KSA6ICJzdCIpOyByZXR1cm4gX19sbHJpbnRyZXM7Cn0KX19pbmxpbmUgbG9uZyBsb25nIGludAps bHJpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpCnsKICBsb25nIGxvbmcgaW50IF9fbGxyaW50cmVz OyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZpc3RwbGwgJTAiIDogIj1tIiAoX19sbHJpbnRyZXMp IDogInQiIChfX3gpIDogInN0Iik7IHJldHVybiBfX2xscmludHJlczsKfQpfX2lubGluZSBsb25n IGxvbmcgaW50CmxscmludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkKewogIGxvbmcgbG9u ZyBpbnQgX19sbHJpbnRyZXM7IF9fYXNtX18gX192b2xhdGlsZV9fICgiZmlzdHBsbCAlMCIgOiAi PW0iIChfX2xscmludHJlcykgOiAidCIgKF9feCkgOiAic3QiKTsgcmV0dXJuIF9fbGxyaW50cmVz Owp9CgoKCgoKCgpfX2lubGluZSBkb3VibGUgZHJlbSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkg dGhyb3cgKCkgeyByZWdpc3RlciBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgaW50IF9fY2xvYmJl cmVkOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglmcHJlbTFcblx0IiAiZnN0c3cJJSVheFxuXHQi ICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUpLCAiPSZhIiAoX19jbG9iYmVyZWQp IDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiY2MiKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxp bmUgZmxvYXQgZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKSB7IHJlZ2lzdGVy IGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9sYXRp bGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIi IDogIj10IiAoX192YWx1ZSksICI9JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1IiAo X195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBkcmVt bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIHsgcmVnaXN0ZXIg ZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGludCBfX2Nsb2JiZXJlZDsgX19hc20gX192b2xhdGls ZV9fICgiMToJZnByZW0xXG5cdCIgImZzdHN3CSUlYXhcblx0IiAic2FoZlxuXHQiICJqcAkxYiIg OiAiPXQiIChfX3ZhbHVlKSwgIj0mYSIgKF9fY2xvYmJlcmVkKSA6ICIwIiAoX194KSwgInUiIChf X3kpIDogImNjIik7IHJldHVybiBfX3ZhbHVlOyB9CiMgNjY2ICIvdXNyL2luY2x1ZGUvYml0cy9t YXRoaW5saW5lLmgiIDMKX19pbmxpbmUgaW50Cl9fZmluaXRlIChkb3VibGUgX194KSB0aHJvdyAo KQp7CiAgcmV0dXJuIChfX2V4dGVuc2lvbl9fCiAgICAgICAgICAoKCgoKHVuaW9uIHsgZG91Ymxl IF9fZDsgaW50IF9faVsyXTsgfSkge19fZDogX194fSkuX19pWzFdCiAgICAgICAgICAgICB8IDB4 ODAwZmZmZmZ1KSArIDEpID4+IDMxKSk7Cn0KCgoKX19pbmxpbmUgZG91YmxlIF9fY29zaG0xIChk b3VibGUpIHRocm93ICgpOyBfX2lubGluZSBkb3VibGUgX19jb3NobTEgKGRvdWJsZSBfX3gpIHRo cm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leG0xID0gX19leHBtMWwgKF9fZmFic2wg KF9feCkpOyByZXR1cm4gMC41ICogKF9fZXhtMSAvIChfX2V4bTEgKyAxLjApKSAqIF9fZXhtMTsg fSBfX2lubGluZSBmbG9hdCBfX2Nvc2htMWYgKGZsb2F0KSB0aHJvdyAoKTsgX19pbmxpbmUgZmxv YXQgX19jb3NobTFmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg X19leG0xID0gX19leHBtMWwgKF9fZmFic2wgKF9feCkpOyByZXR1cm4gMC41ICogKF9fZXhtMSAv IChfX2V4bTEgKyAxLjApKSAqIF9fZXhtMTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBfX2Nvc2ht MWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgX19pbmxpbmUgbG9uZyBkb3VibGUgX19jb3NobTFs IChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leG0x ID0gX19leHBtMWwgKF9fZmFic2wgKF9feCkpOyByZXR1cm4gMC41ICogKF9fZXhtMSAvIChfX2V4 bTEgKyAxLjApKSAqIF9fZXhtMTsgfQoKCgpfX2lubGluZSBkb3VibGUgX19hY29zaDFwIChkb3Vi bGUpIHRocm93ICgpOyBfX2lubGluZSBkb3VibGUgX19hY29zaDFwIChkb3VibGUgX194KSB0aHJv dyAoKSB7IHJldHVybiBsb2cxcGwgKF9feCArIF9fc3FydGwgKF9feCkgKiBfX3NxcnRsIChfX3gg KyAyLjApKTsgfSBfX2lubGluZSBmbG9hdCBfX2Fjb3NoMXBmIChmbG9hdCkgdGhyb3cgKCk7IF9f aW5saW5lIGZsb2F0IF9fYWNvc2gxcGYgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyByZXR1cm4gbG9n MXBsIChfX3ggKyBfX3NxcnRsIChfX3gpICogX19zcXJ0bCAoX194ICsgMi4wKSk7IH0gX19pbmxp bmUgbG9uZyBkb3VibGUgX19hY29zaDFwbCAobG9uZyBkb3VibGUpIHRocm93ICgpOyBfX2lubGlu ZSBsb25nIGRvdWJsZSBfX2Fjb3NoMXBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmV0 dXJuIGxvZzFwbCAoX194ICsgX19zcXJ0bCAoX194KSAqIF9fc3FydGwgKF9feCArIDIuMCkpOyB9 CiMgMzUxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA0MTEgIi91c3IvaW5jbHVkZS9tYXRo LmgiIDMKfQojIDY5ICJ0dXhyYWNlci5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAx IDMKIyAyNSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1 cmVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKCgoKIyAxICIv dXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRl Zi5oIiAxIDMKIyAxOTkgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv My4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDM0 ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKZXh0ZXJuICJDIiB7CgoKCgoKCiMgMSAiL3Vz ci9pbmNsdWRlL2JpdHMvd2FpdGZsYWdzLmgiIDEgMwojIDQzICIvdXNyL2luY2x1ZGUvc3RkbGli LmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRzdGF0dXMuaCIgMSAzCiMgNjMgIi91 c3IvaW5jbHVkZS9iaXRzL3dhaXRzdGF0dXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9lbmRpYW4u aCIgMSAzCiMgMjIgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9m ZWF0dXJlcy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMKIyAzNyAiL3Vz ci9pbmNsdWRlL2VuZGlhbi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEg MwojIDM4ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMwojIDY0ICIvdXNyL2luY2x1ZGUvYml0 cy93YWl0c3RhdHVzLmgiIDIgMwoKdW5pb24gd2FpdAogIHsKICAgIGludCB3X3N0YXR1czsKICAg IHN0cnVjdAogICAgICB7CgogICAgICAgIHVuc2lnbmVkIGludCBfX3dfdGVybXNpZzo3OwogICAg ICAgIHVuc2lnbmVkIGludCBfX3dfY29yZWR1bXA6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX193 X3JldGNvZGU6ODsKICAgICAgICB1bnNpZ25lZCBpbnQ6MTY7CgoKCgoKCgogICAgICB9IF9fd2Fp dF90ZXJtaW5hdGVkOwogICAgc3RydWN0CiAgICAgIHsKCiAgICAgICAgdW5zaWduZWQgaW50IF9f d19zdG9wdmFsOjg7CiAgICAgICAgdW5zaWduZWQgaW50IF9fd19zdG9wc2lnOjg7CiAgICAgICAg dW5zaWduZWQgaW50OjE2OwoKCgoKCgogICAgICB9IF9fd2FpdF9zdG9wcGVkOwogIH07CiMgNDQg Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCiMgOTQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg Mwp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBxdW90OwogICAgaW50IHJlbTsKICB9IGRpdl90 OwoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGludCBy ZW07CiAgfSBsZGl2X3Q7CgoKCgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHN0cnVjdAogIHsKICAg IGxvbmcgbG9uZyBpbnQgcXVvdDsKICAgIGxvbmcgbG9uZyBpbnQgcmVtOwogIH0gbGxkaXZfdDsK IyAxMzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gc2l6ZV90IF9fY3R5cGVfZ2V0 X21iX2N1cl9tYXggKHZvaWQpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGF0b2YgKF9fY29u c3QgY2hhciAqX19ucHRyKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4 dGVybiBpbnQgYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpIF9fYXR0cmlidXRl X18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGxvbmcgaW50IGF0b2wgKF9fY29uc3QgY2hhciAqX19u cHRyKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKX19leHRlbnNpb25f XyBleHRlcm4gbG9uZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpCiAgICAg dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBkb3VibGUgc3Ry dG9kIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAg ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQg c3RydG9mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBk b3VibGUgc3RydG9sZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKTsK CgoKZXh0ZXJuIGxvbmcgaW50IHN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0 ciwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu dCBfX2Jhc2UpIHRocm93ICgpOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKF9f Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJv dyAoKTsKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b3EgKF9fY29u c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIHRocm93ICgpOwoKX19leHRl bnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VxIChfX2NvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAo KTsKCgoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xsIChfX2Nv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCk7CgpfX2V4 dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdWxsIChfX2NvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgdGhy b3cgKCk7CiMgMjExICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv eGxvY2FsZS5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL3hsb2NhbGUuaCIgMwp0eXBlZGVmIHN0 cnVjdCBfX2xvY2FsZV9zdHJ1Y3QKewoKICBzdHJ1Y3QgbG9jYWxlX2RhdGEgKl9fbG9jYWxlc1sx M107CgoKICBjb25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9fY3R5cGVfYjsKICBjb25zdCBpbnQg Kl9fY3R5cGVfdG9sb3dlcjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG91cHBlcjsKfSAqX19sb2Nh bGVfdDsKIyAyMTIgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCmV4dGVybiBsb25nIGlu dCBfX3N0cnRvbF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2Us CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsK CmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfbCAoX19jb25zdCBjaGFyICpfX3Jl c3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgX19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsKCl9fZXh0ZW5zaW9u X18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y ZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKX19leHRlbnNpb25fXwpleHRlcm4g dW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykKICAgICB0aHJvdyAo KTsKCmV4dGVybiBkb3VibGUgX19zdHJ0b2RfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f bnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0 ciwgX19sb2NhbGVfdCBfX2xvYykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBfX3N0cnRv Zl9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAg ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIF9fbG9jYWxlX3QgX19sb2MpIHRocm93 ICgpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3RydG9sZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVz dHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jl c3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxl X3QgX19sb2MpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91YmxlIF9fc3RydG9kX2ludGVybmFs IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAg dGhyb3cgKCk7CmV4dGVybiBmbG9hdCBfX3N0cnRvZl9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq X19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7CmV4dGVybiBs b25nIGRvdWJsZSBfX3N0cnRvbGRfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf X25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jl c3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgX19ncm91cCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJuYWwg KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgpOwoKCgpl eHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0b3VsX2ludGVybmFsIChfX2NvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgp OwoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfaW50ZXJu YWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXAp IHRocm93ICgpOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50 IF9fc3RydG91bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRyLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0 cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7CgoKCgoKCgpl eHRlcm4gX19pbmxpbmUgZG91YmxlCnN0cnRvZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f bnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpCnsKICByZXR1cm4gX19z dHJ0b2RfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CmV4dGVybiBfX2lubGluZSBs b25nIGludApzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipf X3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgIGludCBfX2Jhc2UpIHRocm93ICgpCnsKICByZXR1 cm4gX19zdHJ0b2xfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KZXh0 ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgaW50CnN0cnRvdWwgKF9fY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBpbnQg X19iYXNlKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fc3RydG91bF9pbnRlcm5hbCAoX19ucHRyLCBf X2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKCmV4dGVybiBfX2lubGluZSBmbG9hdApzdHJ0b2YgKF9f Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy KSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fc3RydG9mX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRy LCAwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUKc3RydG9sZCAoX19jb25zdCBjaGFy ICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgp CnsKICByZXR1cm4gX19zdHJ0b2xkX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsKfQoK CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvcSAoX19j b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs CiAgICAgICAgaW50IF9fYmFzZSkgdGhyb3cgKCkKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJu YWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4g X19pbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIGludApzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50 IF9fYmFzZSkgdGhyb3cgKCkKewogIHJldHVybiBfX3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIs IF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5l IGxvbmcgbG9uZyBpbnQKc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwg Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jhc2UpIHRocm93ICgp CnsKICByZXR1cm4gX19zdHJ0b2xsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2Us IDApOwp9Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBp bnQKc3RydG91bGwgKF9fY29uc3QgY2hhciAqIF9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19y ZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgIGludCBfX2Jhc2UpIHRocm93ICgpCnsKICByZXR1 cm4gX19zdHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoK CmV4dGVybiBfX2lubGluZSBkb3VibGUKYXRvZiAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93 ICgpCnsKICByZXR1cm4gc3RydG9kIChfX25wdHIsIChjaGFyICoqKSBfX251bGwpOwp9CmV4dGVy biBfX2lubGluZSBpbnQKYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpCnsKICBy ZXR1cm4gKGludCkgc3RydG9sIChfX25wdHIsIChjaGFyICoqKSBfX251bGwsIDEwKTsKfQpleHRl cm4gX19pbmxpbmUgbG9uZyBpbnQKYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgp CnsKICByZXR1cm4gc3RydG9sIChfX25wdHIsIChjaGFyICoqKSBfX251bGwsIDEwKTsKfQoKCl9f ZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKYXRvbGwgKF9fY29uc3Qg Y2hhciAqX19ucHRyKSB0aHJvdyAoKQp7CiAgcmV0dXJuIHN0cnRvbGwgKF9fbnB0ciwgKGNoYXIg KiopIF9fbnVsbCwgMTApOwp9CiMgMzg0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJu IGNoYXIgKmw2NGEgKGxvbmcgaW50IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgaW50IGE2 NGwgKF9fY29uc3QgY2hhciAqX19zKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p KTsKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVk ZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAi L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCmV4dGVybiAiQyIgewoKIyAxICIvdXNyL2lu Y2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIg MwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL2Jp dHMvdHlwZXMuaCIgMiAzCgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu dXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMCAiL3Vzci9pbmNsdWRlL2JpdHMv dHlwZXMuaCIgMiAzCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdV9jaGFyOwp0eXBlZGVmIHVu c2lnbmVkIHNob3J0IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191X2ludDsKdHlw ZWRlZiB1bnNpZ25lZCBsb25nIF9fdV9sb25nOwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2ln bmVkIGxvbmcgbG9uZyBpbnQgX191X3F1YWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcg bG9uZyBpbnQgX19xdWFkX3Q7CiMgNDkgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMKdHlw ZWRlZiBzaWduZWQgY2hhciBfX2ludDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdWludDhf dDsKdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50IF9faW50MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBz aG9ydCBpbnQgX191aW50MTZfdDsKdHlwZWRlZiBzaWduZWQgaW50IF9faW50MzJfdDsKdHlwZWRl ZiB1bnNpZ25lZCBpbnQgX191aW50MzJfdDsKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBzaWduZWQg bG9uZyBsb25nIGludCBfX2ludDY0X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBs b25nIGxvbmcgaW50IF9fdWludDY0X3Q7Cgp0eXBlZGVmIF9fcXVhZF90ICpfX3FhZGRyX3Q7Cgp0 eXBlZGVmIF9fdV9xdWFkX3QgX19kZXZfdDsKdHlwZWRlZiBfX3VfaW50IF9fdWlkX3Q7CnR5cGVk ZWYgX191X2ludCBfX2dpZF90Owp0eXBlZGVmIF9fdV9sb25nIF9faW5vX3Q7CnR5cGVkZWYgX191 X2ludCBfX21vZGVfdDsKdHlwZWRlZiBfX3VfaW50IF9fbmxpbmtfdDsKdHlwZWRlZiBsb25nIGlu dCBfX29mZl90Owp0eXBlZGVmIF9fcXVhZF90IF9fbG9mZl90Owp0eXBlZGVmIGludCBfX3BpZF90 Owp0eXBlZGVmIGludCBfX3NzaXplX3Q7CnR5cGVkZWYgX191X2xvbmcgX19ybGltX3Q7CnR5cGVk ZWYgX191X3F1YWRfdCBfX3JsaW02NF90Owp0eXBlZGVmIF9fdV9pbnQgX19pZF90OwoKdHlwZWRl ZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAgfSBfX2ZzaWRfdDsKCgp0eXBlZGVmIGlu dCBfX2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAqX19jYWRkcl90Owp0eXBlZGVmIGxvbmcgaW50IF9f dGltZV90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBp bnQgX19zdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N3YmxrX3Q7Cgp0eXBlZGVmIGxv bmcgaW50IF9fY2xvY2tfdDsKCgp0eXBlZGVmIGludCBfX2Nsb2NraWRfdDsKCgp0eXBlZGVmIGlu dCBfX3RpbWVyX3Q7CgoKCgoKCnR5cGVkZWYgaW50IF9fa2V5X3Q7CgoKdHlwZWRlZiB1bnNpZ25l ZCBzaG9ydCBpbnQgX19pcGNfcGlkX3Q7CgoKCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtzaXplX3Q7 CgoKCgp0eXBlZGVmIGxvbmcgaW50IF9fYmxrY250X3Q7CnR5cGVkZWYgX19xdWFkX3QgX19ibGtj bnQ2NF90OwoKCnR5cGVkZWYgX191X2xvbmcgX19mc2Jsa2NudF90Owp0eXBlZGVmIF9fdV9xdWFk X3QgX19mc2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzZmlsY250X3Q7CnR5cGVk ZWYgX191X3F1YWRfdCBfX2ZzZmlsY250NjRfdDsKCgp0eXBlZGVmIF9fdV9xdWFkX3QgX19pbm82 NF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgX19vZmY2NF90OwoKCnR5cGVkZWYgbG9uZyBpbnQgX190 X3NjYWxhcl90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdF91c2NhbGFyX3Q7CgoKdHlw ZWRlZiBpbnQgX19pbnRwdHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3NvY2tsZW5fdDsK CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMwojIDIzICIvdXNy L2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3Nj aGVkLmgiIDEgMwojIDY4ICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAzCnN0cnVjdCBfX3Nj aGVkX3BhcmFtCiAgewogICAgaW50IF9fc2NoZWRfcHJpb3JpdHk7CiAgfTsKIyAyNCAiL3Vzci9p bmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIgMwoKCnN0cnVjdCBfcHRocmVhZF9mYXN0bG9j awp7CiAgbG9uZyBpbnQgX19zdGF0dXM7CiAgaW50IF9fc3BpbmxvY2s7Cgp9OwoKCgp0eXBlZGVm IHN0cnVjdCBfcHRocmVhZF9kZXNjcl9zdHJ1Y3QgKl9wdGhyZWFkX2Rlc2NyOwoKCgoKCnR5cGVk ZWYgc3RydWN0IF9fcHRocmVhZF9hdHRyX3MKewogIGludCBfX2RldGFjaHN0YXRlOwogIGludCBf X3NjaGVkcG9saWN5OwogIHN0cnVjdCBfX3NjaGVkX3BhcmFtIF9fc2NoZWRwYXJhbTsKICBpbnQg X19pbmhlcml0c2NoZWQ7CiAgaW50IF9fc2NvcGU7CiAgc2l6ZV90IF9fZ3VhcmRzaXplOwogIGlu dCBfX3N0YWNrYWRkcl9zZXQ7CiAgdm9pZCAqX19zdGFja2FkZHI7CiAgc2l6ZV90IF9fc3RhY2tz aXplOwp9IHB0aHJlYWRfYXR0cl90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgc3RydWN0IF9wdGhy ZWFkX2Zhc3Rsb2NrIF9fY19sb2NrOwogIF9wdGhyZWFkX2Rlc2NyIF9fY193YWl0aW5nOwp9IHB0 aHJlYWRfY29uZF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fZHVtbXk7Cn0gcHRocmVh ZF9jb25kYXR0cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHB0aHJlYWRfa2V5X3Q7CgoKCgoK dHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX21fcmVzZXJ2ZWQ7CiAgaW50IF9fbV9jb3VudDsKICBf cHRocmVhZF9kZXNjciBfX21fb3duZXI7CiAgaW50IF9fbV9raW5kOwogIHN0cnVjdCBfcHRocmVh ZF9mYXN0bG9jayBfX21fbG9jazsKfSBwdGhyZWFkX211dGV4X3Q7CgoKCnR5cGVkZWYgc3RydWN0 CnsKICBpbnQgX19tdXRleGtpbmQ7Cn0gcHRocmVhZF9tdXRleGF0dHJfdDsKCgoKdHlwZWRlZiBp bnQgcHRocmVhZF9vbmNlX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9yd2xvY2tfdAp7 CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fcndfbG9jazsKICBpbnQgX19yd19yZWFkZXJz OwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3JpdGVyOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfcmVh ZF93YWl0aW5nOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3JpdGVfd2FpdGluZzsKICBpbnQgX19y d19raW5kOwogIGludCBfX3J3X3BzaGFyZWQ7Cn0gcHRocmVhZF9yd2xvY2tfdDsKCgoKdHlwZWRl ZiBzdHJ1Y3QKewogIGludCBfX2xvY2traW5kOwogIGludCBfX3BzaGFyZWQ7Cn0gcHRocmVhZF9y d2xvY2thdHRyX3Q7CgoKCgp0eXBlZGVmIHZvbGF0aWxlIGludCBwdGhyZWFkX3NwaW5sb2NrX3Q7 CgoKdHlwZWRlZiBzdHJ1Y3QgewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX2JhX2xvY2s7 CiAgaW50IF9fYmFfcmVxdWlyZWQ7CiAgaW50IF9fYmFfcHJlc2VudDsKICBfcHRocmVhZF9kZXNj ciBfX2JhX3dhaXRpbmc7Cn0gcHRocmVhZF9iYXJyaWVyX3Q7CgoKdHlwZWRlZiBzdHJ1Y3Qgewog IGludCBfX3BzaGFyZWQ7Cn0gcHRocmVhZF9iYXJyaWVyYXR0cl90OwoKCgoKCnR5cGVkZWYgdW5z aWduZWQgbG9uZyBpbnQgcHRocmVhZF90OwojIDE0NCAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMu aCIgMiAzCiMgMzEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKdHlwZWRlZiBfX3Vf Y2hhciB1X2NoYXI7CnR5cGVkZWYgX191X3Nob3J0IHVfc2hvcnQ7CnR5cGVkZWYgX191X2ludCB1 X2ludDsKdHlwZWRlZiBfX3VfbG9uZyB1X2xvbmc7CnR5cGVkZWYgX19xdWFkX3QgcXVhZF90Owp0 eXBlZGVmIF9fdV9xdWFkX3QgdV9xdWFkX3Q7CnR5cGVkZWYgX19mc2lkX3QgZnNpZF90OwoKCnR5 cGVkZWYgX19sb2ZmX3QgbG9mZl90OwoKCgp0eXBlZGVmIF9faW5vX3QgaW5vX3Q7CgoKCgoKCnR5 cGVkZWYgX19pbm82NF90IGlubzY0X3Q7CgoKCgp0eXBlZGVmIF9fZGV2X3QgZGV2X3Q7CgoKCgp0 eXBlZGVmIF9fZ2lkX3QgZ2lkX3Q7CgoKCgp0eXBlZGVmIF9fbW9kZV90IG1vZGVfdDsKCgoKCnR5 cGVkZWYgX19ubGlua190IG5saW5rX3Q7CgoKCgp0eXBlZGVmIF9fdWlkX3QgdWlkX3Q7CgoKCgoK dHlwZWRlZiBfX29mZl90IG9mZl90OwoKCgoKCgp0eXBlZGVmIF9fb2ZmNjRfdCBvZmY2NF90OwoK CgoKdHlwZWRlZiBfX3BpZF90IHBpZF90OwoKCgoKdHlwZWRlZiBfX2lkX3QgaWRfdDsKCgoKCnR5 cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7CgoKCgp0eXBlZGVmIF9fZGFkZHJfdCBkYWRkcl90Owp0 eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiMgMTI2 ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAx IDMKIyA1NiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5 cGVzLmgiIDEgMwojIDU3ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgp0eXBlZGVmIF9fY2xv Y2tfdCBjbG9ja190OwoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMK IyA2OCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoKdHlwZWRlZiBfX3RpbWVfdCB0aW1lX3Q7 CiMgNzkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBl cy5oIiAxIDMKIyA4MCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoKdHlwZWRlZiBfX2Nsb2Nr aWRfdCBjbG9ja2lkX3Q7CiMgOTEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKIyAxICIvdXNyL2lu Y2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyA5MiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoK dHlwZWRlZiBfX3RpbWVyX3QgdGltZXJfdDsKIyAxMjcgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMu aCIgMiAzCgoKCnR5cGVkZWYgX191c2Vjb25kc190IHVzZWNvbmRzX3Q7CgoKCnR5cGVkZWYgX19z dXNlY29uZHNfdCBzdXNlY29uZHNfdDsKCgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIv aTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDE0MSAiL3Vzci9p bmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1bG9u ZzsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGlu dCB1aW50OwojIDE4NCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgaW50IGlu dDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlfXykpKTsKdHlwZWRlZiBpbnQgaW50 MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiBpbnQgaW50 MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiBpbnQgaW50 NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCgp0eXBlZGVmIHVuc2ln bmVkIGludCB1X2ludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlfXykpKTsKdHlw ZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19I SV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9f bW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50NjRfdCBfX2F0dHJp YnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCnR5cGVkZWYgaW50IHJlZ2lzdGVyX3QgX19h dHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX3dvcmRfXykpKTsKIyAyMDYgIi91c3IvaW5jbHVkZS9z eXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzCiMgMjA3ICIvdXNy L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3Qu aCIgMSAzCiMgMjUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKIyAxICIvdXNyL2luY2x1 ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoK CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9z eXMvc2VsZWN0LmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDEgMwoj IDMyICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9i aXRzL3NpZ3NldC5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMKdHlw ZWRlZiBpbnQgX19zaWdfYXRvbWljX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVuc2ln bmVkIGxvbmcgaW50IF9fdmFsWygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50 KSkpXTsKICB9IF9fc2lnc2V0X3Q7CiMgMzUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIg MwoKCgp0eXBlZGVmIF9fc2lnc2V0X3Qgc2lnc2V0X3Q7CgoKCgojIDEgIi91c3IvaW5jbHVkZS90 aW1lLmgiIDEgMwojIDEwNiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpzdHJ1Y3QgdGltZXNwZWMK ICB7CiAgICBsb25nIGludCB0dl9zZWM7CiAgICBsb25nIGludCB0dl9uc2VjOwogIH07CiMgNDQg Ii91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90 aW1lLmgiIDEgMwojIDYzICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDMKIyAxICIvdXNyL2lu Y2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyA2NCAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAy IDMKCgoKc3RydWN0IHRpbWV2YWwKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7CiAgICBfX3N1c2Vj b25kc190IHR2X3VzZWM7CiAgfTsKIyA0NiAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAz CgoKCnR5cGVkZWYgbG9uZyBpbnQgX19mZF9tYXNrOwoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7 CgoKCiAgICBfX2ZkX21hc2sgZmRzX2JpdHNbMTAyNCAvICg4ICogc2l6ZW9mIChfX2ZkX21hc2sp KV07CgoKCgoKICB9IGZkX3NldDsKCgoKCgoKdHlwZWRlZiBfX2ZkX21hc2sgZmRfbWFzazsKIyA4 OSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwpleHRlcm4gIkMiIHsKCgoKCgoKZXh0ZXJu IGludCBzZWxlY3QgKGludCBfX25mZHMsIGZkX3NldCAqX19yZXN0cmljdCBfX3JlYWRmZHMsCiAg ICAgICAgICAgICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193cml0ZWZkcywKICAgICAgICAg ICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAgICAgICAgICAg ICAgIHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0IF9fdGltZW91dCkgdGhyb3cgKCk7CgoKCgoK ZXh0ZXJuIGludCBwc2VsZWN0IChpbnQgX19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFk ZmRzLAogICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAog ICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAg ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QgX190aW1lb3V0 LAogICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19zaWdt YXNrKSB0aHJvdyAoKTsKCgp9CiMgMjEwICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoK CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCIgMSAzCiMgMjEzICIvdXNyL2luY2x1 ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgoKdHlwZWRlZiBfX2Jsa3NpemVfdCBibGtzaXplX3Q7CgoK CgoKCnR5cGVkZWYgX19ibGtjbnRfdCBibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzYmxrY250X3Qg ZnNibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsKIyAyNTEgIi91 c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIF9fYmxrY250NjRfdCBibGtjbnQ2NF90 Owp0eXBlZGVmIF9fZnNibGtjbnQ2NF90IGZzYmxrY250NjRfdDsKdHlwZWRlZiBfX2ZzZmlsY250 NjRfdCBmc2ZpbGNudDY0X3Q7CgoKfQojIDM5MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMK CgoKCgoKZXh0ZXJuIGxvbmcgaW50IHJhbmRvbSAodm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZv aWQgc3JhbmRvbSAodW5zaWduZWQgaW50IF9fc2VlZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGNo YXIgKmluaXRzdGF0ZSAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19zdGF0ZWJ1ZiwKICAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4pIHRocm93ICgpOwoKCgpleHRl cm4gY2hhciAqc2V0c3RhdGUgKGNoYXIgKl9fc3RhdGVidWYpIHRocm93ICgpOwoKCgoKCgoKc3Ry dWN0IHJhbmRvbV9kYXRhCiAgewogICAgaW50MzJfdCAqZnB0cjsKICAgIGludDMyX3QgKnJwdHI7 CiAgICBpbnQzMl90ICpzdGF0ZTsKICAgIGludCByYW5kX3R5cGU7CiAgICBpbnQgcmFuZF9kZWc7 CiAgICBpbnQgcmFuZF9zZXA7CiAgICBpbnQzMl90ICplbmRfcHRyOwogIH07CgpleHRlcm4gaW50 IHJhbmRvbV9yIChzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAg ICAgICAgICAgICAgIGludDMyX3QgKl9fcmVzdHJpY3QgX19yZXN1bHQpIHRocm93ICgpOwoKZXh0 ZXJuIGludCBzcmFuZG9tX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIHN0cnVjdCByYW5kb21fZGF0 YSAqX19idWYpIHRocm93ICgpOwoKZXh0ZXJuIGludCBpbml0c3RhdGVfciAodW5zaWduZWQgaW50 IF9fc2VlZCwgY2hhciAqX19yZXN0cmljdCBfX3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAg ICAgICBzaXplX3QgX19zdGF0ZWxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJh bmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc2V0c3Rh dGVfciAoY2hhciAqX19yZXN0cmljdCBfX3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgdGhyb3cgKCk7CgoKCgoKZXh0 ZXJuIGludCByYW5kICh2b2lkKSB0aHJvdyAoKTsKCmV4dGVybiB2b2lkIHNyYW5kICh1bnNpZ25l ZCBpbnQgX19zZWVkKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCByYW5kX3IgKHVuc2lnbmVkIGlu dCAqX19zZWVkKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAodm9pZCkg dGhyb3cgKCk7CmV4dGVybiBkb3VibGUgZXJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1 YmlbM10pIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGludCBscmFuZDQ4ICh2b2lkKSB0aHJvdyAo KTsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNd KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBpbnQgbXJhbmQ0OCAodm9pZCkgdGhyb3cgKCk7CmV4 dGVybiBsb25nIGludCBqcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgdGhy b3cgKCk7CgoKZXh0ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQgX19zZWVkdmFsKSB0aHJvdyAo KTsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGludCAqc2VlZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQg X19zZWVkMTZ2WzNdKSB0aHJvdyAoKTsKZXh0ZXJuIHZvaWQgbGNvbmc0OCAodW5zaWduZWQgc2hv cnQgaW50IF9fcGFyYW1bN10pIHRocm93ICgpOwoKCgoKCnN0cnVjdCBkcmFuZDQ4X2RhdGEKICB7 CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX194WzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9f b2xkX3hbM107CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19jOwogICAgdW5zaWduZWQgc2hvcnQg aW50IF9faW5pdDsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19hOwogIH07CgoKZXh0ZXJu IGludCBkcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIs CiAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKl9fcmVzdHJpY3QgX19yZXN1bHQpIHRocm93 ICgpOwpleHRlcm4gaW50IGVyYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10s CiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9f YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0 KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGxyYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAq X19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jl c3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBucmFuZDQ4X3IgKHVuc2lnbmVk IHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5k NDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcg aW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IG1yYW5kNDhf ciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAg ICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKZXh0ZXJu IGludCBqcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAg ICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAo KTsKCgpleHRlcm4gaW50IHNyYW5kNDhfciAobG9uZyBpbnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJh bmQ0OF9kYXRhICpfX2J1ZmZlcikKICAgICB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc2VlZDQ4X3Ig KHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10sCiAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgbGNvbmc0 OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSwKICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSB0aHJvdyAoKTsKIyA1MjcgIi91c3IvaW5j bHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gdm9pZCAqbWFsbG9jIChzaXplX3QgX19zaXplKSB0aHJv dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgKmNhbGxvYyAo c2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf XyAoKF9fbWFsbG9jX18pKTsKCgoKCgpleHRlcm4gdm9pZCAqcmVhbGxvYyAodm9pZCAqX19wdHIs IHNpemVfdCBfX3NpemUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7Cgpl eHRlcm4gdm9pZCBmcmVlICh2b2lkICpfX3B0cikgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIGNm cmVlICh2b2lkICpfX3B0cikgdGhyb3cgKCk7CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FsbG9jYS5o IiAxIDMKIyAyMiAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2Zl YXR1cmVzLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDIgMwoKCiMgMSAiL3Vz ci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYu aCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMiAzCgpleHRlcm4gIkMiIHsKCgoK CgpleHRlcm4gdm9pZCAqYWxsb2NhIChzaXplX3QgX19zaXplKSB0aHJvdyAoKTsKCgoKCgp9CiMg NTQ3ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKZXh0ZXJuIHZvaWQgKnZhbGxvYyAo c2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoK CmV4dGVybiBpbnQgcG9zaXhfbWVtYWxpZ24gKHZvaWQgKipfX21lbXB0ciwgc2l6ZV90IF9fYWxp Z25tZW50LCBzaXplX3QgX19zaXplKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21h bGxvY19fKSk7CgoKCmV4dGVybiB2b2lkIGFib3J0ICh2b2lkKSB0aHJvdyAoKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCmV4dGVybiBpbnQgYXRleGl0ICh2b2lkICgqX19mdW5j KSAodm9pZCkpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBvbl9leGl0ICh2b2lkICgqX19mdW5j KSAoaW50IF9fc3RhdHVzLCB2b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKQogICAgIHRocm93ICgp OwoKCgoKCmV4dGVybiB2b2lkIGV4aXQgKGludCBfX3N0YXR1cykgdGhyb3cgKCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0ZXJuIHZvaWQgX0V4aXQgKGludCBfX3N0YXR1 cykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0ZXJuIGNo YXIgKmdldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIHRocm93ICgpOwoKCgpleHRlcm4gY2hh ciAqX19zZWN1cmVfZ2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKCgoK ZXh0ZXJuIGludCBwdXRlbnYgKGNoYXIgKl9fc3RyaW5nKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4g aW50IHNldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192YWx1ZSwg aW50IF9fcmVwbGFjZSkKICAgICB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHVuc2V0ZW52IChfX2Nv bnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgY2xlYXJlbnYgKHZv aWQpIHRocm93ICgpOwojIDYyMyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFy ICpta3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBt a3N0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSB0aHJvdyAoKTsKIyA2NDAgIi91c3IvaW5jbHVkZS9z dGRsaWIuaCIgMwpleHRlcm4gaW50IG1rc3RlbXA2NCAoY2hhciAqX190ZW1wbGF0ZSkgdGhyb3cg KCk7CiMgNjUwICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKm1rZHRlbXAg KGNoYXIgKl9fdGVtcGxhdGUpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzeXN0ZW0gKF9fY29u c3QgY2hhciAqX19jb21tYW5kKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKmNhbm9uaWNh bGl6ZV9maWxlX25hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKTsKIyA2NzIgIi91 c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqcmVhbHBhdGggKF9fY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0 cmljdCBfX3Jlc29sdmVkKSB0aHJvdyAoKTsKCgoKCgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9m bl90KSAoX19jb25zdCB2b2lkICosIF9fY29uc3Qgdm9pZCAqKTsKCgp0eXBlZGVmIF9fY29tcGFy X2ZuX3QgY29tcGFyaXNvbl9mbl90OwoKCgoKCmV4dGVybiB2b2lkICpic2VhcmNoIChfX2NvbnN0 IHZvaWQgKl9fa2V5LCBfX2NvbnN0IHZvaWQgKl9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAg IHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplLCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsK CgoKZXh0ZXJuIHZvaWQgcXNvcnQgKHZvaWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVf dCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoK ZXh0ZXJuIGludCBhYnMgKGludCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0 X18pKTsKZXh0ZXJuIGxvbmcgaW50IGxhYnMgKGxvbmcgaW50IF9feCkgdGhyb3cgKCkgX19hdHRy aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGlu dCBsbGFicyAobG9uZyBsb25nIGludCBfX3gpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo KF9fY29uc3RfXykpOwoKCgoKCgpleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwgaW50IF9f ZGVub20pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4g bGRpdl90IGxkaXYgKGxvbmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiAgICAgdGhy b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4g bGxkaXZfdCBsbGRpdiAobG9uZyBsb25nIGludCBfX251bWVyLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaW50IF9fZGVub20pCiAgICAgdGhyb3cgKCkgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDcyOCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAz CmV4dGVybiBjaGFyICplY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9f cmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3Np Z24pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKmZjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQg X19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50 ICpfX3Jlc3RyaWN0IF9fc2lnbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqZ2N2dCAoZG91 YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpIHRocm93ICgpOwoKCgoKZXh0 ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAg ICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBf X3NpZ24pIHRocm93ICgpOwpleHRlcm4gY2hhciAqcWZjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUs IGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNw dCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgdGhyb3cgKCk7CmV4dGVybiBjaGFyICpxZ2N2dCAo bG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikgdGhyb3cgKCk7 CgoKCgpleHRlcm4gaW50IGVjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50 ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3Qg X19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgc2l6ZV90 IF9fbGVuKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBmY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQg X19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50 ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAg ICAgICAgIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CgpleHRlcm4gaW50IHFlY3Z0X3IgKGxvbmcg ZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9f cmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAgICAg ICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIHRocm93ICgpOwpleHRl cm4gaW50IHFmY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAg ICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9f c2lnbiwKICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3Qg X19sZW4pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IG1ibGVuIChfX2NvbnN0IGNoYXIgKl9f cywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBtYnRvd2MgKHdjaGFyX3QgKl9f cmVzdHJpY3QgX19wd2MsCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHdjdG9tYiAoY2hhciAq X19zLCB3Y2hhcl90IF9fd2NoYXIpIHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90IG1ic3Rvd2Nz ICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywKICAgICAgICAgICAgICAgICAgICAgICAgX19j b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgpleHRlcm4g c2l6ZV90IHdjc3RvbWJzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAg ICAgICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90IF9fbikKICAg ICB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAoX19jb25zdCBjaGFyICpfX3Jl c3BvbnNlKSB0aHJvdyAoKTsKIyA4MDggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4g aW50IGdldHN1Ym9wdCAoY2hhciAqKl9fcmVzdHJpY3QgX19vcHRpb25wLAogICAgICAgICAgICAg ICAgICAgICAgY2hhciAqX19jb25zdCAqX19yZXN0cmljdCBfX3Rva2VucywKICAgICAgICAgICAg ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fdmFsdWVwKSB0aHJvdyAoKTsKCgoKCgpleHRl cm4gdm9pZCBzZXRrZXkgKF9fY29uc3QgY2hhciAqX19rZXkpIHRocm93ICgpOwoKCgoKCgoKZXh0 ZXJuIGludCBwb3NpeF9vcGVucHQgKGludCBfX29mbGFnKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVy biBpbnQgZ3JhbnRwdCAoaW50IF9fZmQpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHVubG9ja3B0 IChpbnQgX19mZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqcHRzbmFtZSAoaW50IF9fZmQp IHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IHB0c25hbWVfciAoaW50IF9fZmQsIGNoYXIgKl9f YnVmLCBzaXplX3QgX19idWZsZW4pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgZ2V0cHQgKHZvaWQp IHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IGdldGxvYWRhdmcgKGRvdWJsZSBfX2xvYWRhdmdb XSwgaW50IF9fbmVsZW0pIHRocm93ICgpOwoKCgoKCn0KIyA3MCAidHV4cmFjZXIuaCIgMgojIDEg Ii91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3Rk aW8uaCIgMSAzCiMgMzYgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv My4xL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMK IyAzNyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVk ZS9zdGRpby5oIiAyIDMKCmV4dGVybiAiQyIgewoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1s aWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDQzICIvdXNy L2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGlvLmgi IDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyA0NSAiL3Vzci9sb2Nh bC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRpby5oIiAyIDMK IyA1MyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVk ZS9zdGRpby5oIiAzCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIEZJTEU7CiMgNjMgIi91c3IvbG9j YWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMwp0 eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBfX0ZJTEU7CiMgNzMgIi91c3IvbG9jYWwvbGliL2djYy1s aWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5j bHVkZS9saWJpby5oIiAxIDMKIyAzMCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKIyAxICIvdXNy L2luY2x1ZGUvX0dfY29uZmlnLmgiIDEgMwojIDkgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIg MwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDEwICIvdXNyL2luY2x1ZGUv X0dfY29uZmlnLmgiIDIgMwoKCgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMt bGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMTQgIi91c3IvbG9jYWwvbGli L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRl ZiB1bnNpZ25lZCBpbnQgd2ludF90OwojIDE1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIg MwojIDI0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvd2No YXIuaCIgMSAzCiMgNDggIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCiMgMSAiL3Vzci9sb2NhbC9s aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMg NDkgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2No YXIuaCIgMSAzCiMgNTEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKIyA2NyAiL3Vzci9pbmNs dWRlL3djaGFyLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2NvdW50OwogIHVuaW9uCiAg ewogICAgd2ludF90IF9fd2NoOwogICAgY2hhciBfX3djaGJbNF07CiAgfSBfX3ZhbHVlOwp9IF9f bWJzdGF0ZV90OwojIDI1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwoKdHlwZWRlZiBz dHJ1Y3QKewogIF9fb2ZmX3QgX19wb3M7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9z X3Q7CnR5cGVkZWYgc3RydWN0CnsKICBfX29mZjY0X3QgX19wb3M7CiAgX19tYnN0YXRlX3QgX19z dGF0ZTsKfSBfR19mcG9zNjRfdDsKIyA0NCAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMg MSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIg MwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL2dj b252LmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzCiMgNDggIi91c3IvaW5j bHVkZS93Y2hhci5oIiAzCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4 LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91c3IvaW5jbHVkZS93Y2hhci5o IiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2NoYXIuaCIgMSAzCiMgNTEgIi91c3IvaW5j bHVkZS93Y2hhci5oIiAyIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKIyAxICIv dXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRl Zi5oIiAxIDMKIyAzMSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKCgoKCmVudW0KewogIF9f R0NPTlZfT0sgPSAwLAogIF9fR0NPTlZfTk9DT05WLAogIF9fR0NPTlZfTk9EQiwKICBfX0dDT05W X05PTUVNLAoKICBfX0dDT05WX0VNUFRZX0lOUFVULAogIF9fR0NPTlZfRlVMTF9PVVRQVVQsCiAg X19HQ09OVl9JTExFR0FMX0lOUFVULAogIF9fR0NPTlZfSU5DT01QTEVURV9JTlBVVCwKCiAgX19H Q09OVl9JTExFR0FMX0RFU0NSSVBUT1IsCiAgX19HQ09OVl9JTlRFUk5BTF9FUlJPUgp9OwoKCgpl bnVtCnsKICBfX0dDT05WX0lTX0xBU1QgPSAweDAwMDEsCiAgX19HQ09OVl9JR05PUkVfRVJST1JT ID0gMHgwMDAyCn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXA7CnN0cnVjdCBfX2djb252X3N0ZXBf ZGF0YTsKc3RydWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdDsKc3RydWN0IF9fZ2NvbnZfdHJhbnNf ZGF0YTsKCgoKdHlwZWRlZiBpbnQgKCpfX2djb252X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAg Kiwgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICosCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKiwgc2l6ZV90ICosIGludCwg aW50KTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfaW5pdF9mY3QpIChzdHJ1Y3QgX19nY29udl9z dGVwICopOwp0eXBlZGVmIHZvaWQgKCpfX2djb252X2VuZF9mY3QpIChzdHJ1Y3QgX19nY29udl9z dGVwICopOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfZmN0KSAoc3RydWN0IF9fZ2Nv bnZfc3RlcCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9fZ2Nv bnZfc3RlcF9kYXRhICosIHZvaWQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2dj b252X3RyYW5zX2NvbnRleHRfZmN0KSAodm9pZCAqLCBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25l ZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJh bnNfcXVlcnlfZmN0KSAoX19jb25zdCBjaGFyICosIF9fY29uc3QgY2hhciAqKiosCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQg KCpfX2djb252X3RyYW5zX2luaXRfZmN0KSAodm9pZCAqKiwgY29uc3QgY2hhciAqKTsKdHlwZWRl ZiB2b2lkICgqX19nY29udl90cmFuc19lbmRfZmN0KSAodm9pZCAqKTsKCnN0cnVjdCBfX2djb252 X3RyYW5zX2RhdGEKewoKICBfX2djb252X3RyYW5zX2ZjdCBfX3RyYW5zX2ZjdDsKICBfX2djb252 X3RyYW5zX2NvbnRleHRfZmN0IF9fdHJhbnNfY29udGV4dF9mY3Q7CiAgX19nY29udl90cmFuc19l bmRfZmN0IF9fdHJhbnNfZW5kX2ZjdDsKICB2b2lkICpfX2RhdGE7CiAgc3RydWN0IF9fZ2NvbnZf dHJhbnNfZGF0YSAqX19uZXh0Owp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwCnsKICBzdHJ1Y3Qg X19nY29udl9sb2FkZWRfb2JqZWN0ICpfX3NobGliX2hhbmRsZTsKICBfX2NvbnN0IGNoYXIgKl9f bW9kbmFtZTsKCiAgaW50IF9fY291bnRlcjsKCiAgY2hhciAqX19mcm9tX25hbWU7CiAgY2hhciAq X190b19uYW1lOwoKICBfX2djb252X2ZjdCBfX2ZjdDsKICBfX2djb252X2luaXRfZmN0IF9faW5p dF9mY3Q7CiAgX19nY29udl9lbmRfZmN0IF9fZW5kX2ZjdDsKCgoKICBpbnQgX19taW5fbmVlZGVk X2Zyb207CiAgaW50IF9fbWF4X25lZWRlZF9mcm9tOwogIGludCBfX21pbl9uZWVkZWRfdG87CiAg aW50IF9fbWF4X25lZWRlZF90bzsKCgogIGludCBfX3N0YXRlZnVsOwoKICB2b2lkICpfX2RhdGE7 Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXBfZGF0YQp7CiAgdW5zaWduZWQgY2hhciAqX19vdXRi dWY7CiAgdW5zaWduZWQgY2hhciAqX19vdXRidWZlbmQ7CgoKCiAgaW50IF9fZmxhZ3M7CgoKCiAg aW50IF9faW52b2NhdGlvbl9jb3VudGVyOwoKCgogIGludCBfX2ludGVybmFsX3VzZTsKCiAgX19t YnN0YXRlX3QgKl9fc3RhdGVwOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7CgoKCiAgc3RydWN0IF9f Z2NvbnZfdHJhbnNfZGF0YSAqX190cmFuczsKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX19nY29udl9p bmZvCnsKICBzaXplX3QgX19uc3RlcHM7CiAgc3RydWN0IF9fZ2NvbnZfc3RlcCAqX19zdGVwczsK ICBfX2V4dGVuc2lvbl9fIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBfX2RhdGEgW107Cn0gKl9f Z2NvbnZfdDsKIyA0NSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKdHlwZWRlZiB1bmlv bgp7CiAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogIHN0cnVjdAogIHsKICAgIHN0cnVjdCBf X2djb252X2luZm8gX19jZDsKICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBfX2RhdGE7CiAg fSBfX2NvbWJpbmVkOwp9IF9HX2ljb252X3Q7Cgp0eXBlZGVmIGludCBfR19pbnQxNl90IF9fYXR0 cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19pbnQzMl90IF9f YXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBf R191aW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1 bnNpZ25lZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18p KSk7CiMgMzEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyA1MSAiL3Vzci9pbmNsdWRlL2xp YmlvLmgiIDMKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMu MS9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIyA0MyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2 LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fYnVpbHRpbl92 YV9saXN0IF9fZ251Y192YV9saXN0OwojIDUyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCiMg MTU4ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lPX2p1bXBfdDsgc3RydWN0IF9J T19GSUxFOwojIDE2OCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRlZiB2b2lkIF9JT19s b2NrX3Q7CgoKCgoKc3RydWN0IF9JT19tYXJrZXIgewogIHN0cnVjdCBfSU9fbWFya2VyICpfbmV4 dDsKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9zYnVmOwoKCgogIGludCBfcG9zOwojIDE5MSAiL3Vzci9p bmNsdWRlL2xpYmlvLmgiIDMKfTsKCgplbnVtIF9fY29kZWN2dF9yZXN1bHQKewogIF9fY29kZWN2 dF9vaywKICBfX2NvZGVjdnRfcGFydGlhbCwKICBfX2NvZGVjdnRfZXJyb3IsCiAgX19jb2RlY3Z0 X25vY29udgp9OwojIDI1OSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKc3RydWN0IF9JT19GSUxF IHsKICBpbnQgX2ZsYWdzOwoKCgoKICBjaGFyKiBfSU9fcmVhZF9wdHI7CiAgY2hhciogX0lPX3Jl YWRfZW5kOwogIGNoYXIqIF9JT19yZWFkX2Jhc2U7CiAgY2hhciogX0lPX3dyaXRlX2Jhc2U7CiAg Y2hhciogX0lPX3dyaXRlX3B0cjsKICBjaGFyKiBfSU9fd3JpdGVfZW5kOwogIGNoYXIqIF9JT19i dWZfYmFzZTsKICBjaGFyKiBfSU9fYnVmX2VuZDsKCiAgY2hhciAqX0lPX3NhdmVfYmFzZTsKICBj aGFyICpfSU9fYmFja3VwX2Jhc2U7CiAgY2hhciAqX0lPX3NhdmVfZW5kOwoKICBzdHJ1Y3QgX0lP X21hcmtlciAqX21hcmtlcnM7CgogIHN0cnVjdCBfSU9fRklMRSAqX2NoYWluOwoKICBpbnQgX2Zp bGVubzsKICBpbnQgX2Jsa3NpemU7CiAgX19vZmZfdCBfb2xkX29mZnNldDsKCgoKICB1bnNpZ25l ZCBzaG9ydCBfY3VyX2NvbHVtbjsKICBzaWduZWQgY2hhciBfdnRhYmxlX29mZnNldDsKICBjaGFy IF9zaG9ydGJ1ZlsxXTsKCgoKICBfSU9fbG9ja190ICpfbG9jazsKIyAzMDMgIi91c3IvaW5jbHVk ZS9saWJpby5oIiAzCiAgX19vZmY2NF90IF9vZmZzZXQ7CgoKCgoKICB2b2lkICpfX3BhZDE7CiAg dm9pZCAqX19wYWQyOwoKICBpbnQgX21vZGU7CgogIGNoYXIgX3VudXNlZDJbMTUgKiBzaXplb2Yg KGludCkgLSAyICogc2l6ZW9mICh2b2lkICopXTsKCn07CgoKCgoKc3RydWN0IF9JT19GSUxFX3Bs dXM7CgpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRpbl87CmV4dGVybiBz dHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZG91dF87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJ TEVfcGx1cyBfSU9fMl8xX3N0ZGVycl87CiMgMzQyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp0 eXBlZGVmIF9fc3NpemVfdCBfX2lvX3JlYWRfZm4gKHZvaWQgKl9fY29va2llLCBjaGFyICpfX2J1 Ziwgc2l6ZV90IF9fbmJ5dGVzKTsKCgoKCgoKCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fd3JpdGVf Zm4gKHZvaWQgKl9fY29va2llLCBfX2NvbnN0IGNoYXIgKl9fYnVmLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzaXplX3QgX19uKTsKCgoKCgoKCnR5cGVkZWYgaW50IF9faW9fc2Vl a19mbiAodm9pZCAqX19jb29raWUsIF9fb2ZmNjRfdCAqX19wb3MsIGludCBfX3cpOwoKCnR5cGVk ZWYgaW50IF9faW9fY2xvc2VfZm4gKHZvaWQgKl9fY29va2llKTsKCgoKCnR5cGVkZWYgX19pb19y ZWFkX2ZuIGNvb2tpZV9yZWFkX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb193cml0ZV9mbiBjb29r aWVfd3JpdGVfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX3NlZWtfZm4gY29va2llX3NlZWtfZnVu Y3Rpb25fdDsKdHlwZWRlZiBfX2lvX2Nsb3NlX2ZuIGNvb2tpZV9jbG9zZV9mdW5jdGlvbl90OwoK CnR5cGVkZWYgc3RydWN0CnsKICBfX2lvX3JlYWRfZm4gKnJlYWQ7CiAgX19pb193cml0ZV9mbiAq d3JpdGU7CiAgX19pb19zZWVrX2ZuICpzZWVrOwogIF9faW9fY2xvc2VfZm4gKmNsb3NlOwp9IF9J T19jb29raWVfaW9fZnVuY3Rpb25zX3Q7CnR5cGVkZWYgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNf dCBjb29raWVfaW9fZnVuY3Rpb25zX3Q7CgpzdHJ1Y3QgX0lPX2Nvb2tpZV9maWxlOwoKCmV4dGVy biB2b2lkIF9JT19jb29raWVfaW5pdCAoc3RydWN0IF9JT19jb29raWVfZmlsZSAqX19jZmlsZSwg aW50IF9fcmVhZF93cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfX2Nv b2tpZSwgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBfX2Zucyk7CgoKCgpleHRlcm4gIkMiIHsK CgpleHRlcm4gaW50IF9fdW5kZXJmbG93IChfSU9fRklMRSAqKSB0aHJvdyAoKTsKZXh0ZXJuIGlu dCBfX3VmbG93IChfSU9fRklMRSAqKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfX292ZXJmbG93IChf SU9fRklMRSAqLCBpbnQpIHRocm93ICgpOwpleHRlcm4gd2ludF90IF9fd3VuZGVyZmxvdyAoX0lP X0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiB3aW50X3QgX193dWZsb3cgKF9JT19GSUxFICopIHRo cm93ICgpOwpleHRlcm4gd2ludF90IF9fd292ZXJmbG93IChfSU9fRklMRSAqLCB3aW50X3QpIHRo cm93ICgpOwojIDQyNCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJuIGludCBfSU9fZ2V0 YyAoX0lPX0ZJTEUgKl9fZnApIHRocm93ICgpOwpleHRlcm4gaW50IF9JT19wdXRjIChpbnQgX19j LCBfSU9fRklMRSAqX19mcCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2Zlb2YgKF9JT19GSUxF ICpfX2ZwKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfSU9fZmVycm9yIChfSU9fRklMRSAqX19mcCkg dGhyb3cgKCk7CgpleHRlcm4gaW50IF9JT19wZWVrY19sb2NrZWQgKF9JT19GSUxFICpfX2ZwKSB0 aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCBfSU9fZmxvY2tmaWxlIChfSU9fRklMRSAqKSB0aHJv dyAoKTsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxlIChfSU9fRklMRSAqKSB0aHJvdyAoKTsK ZXh0ZXJuIGludCBfSU9fZnRyeWxvY2tmaWxlIChfSU9fRklMRSAqKSB0aHJvdyAoKTsKIyA0NTQg Ii91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBpbnQgX0lPX3Zmc2NhbmYgKF9JT19GSUxF ICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsCiAgICAgICAgICAgICAgICAg ICAgICAgIF9fZ251Y192YV9saXN0LCBpbnQgKl9fcmVzdHJpY3QpIHRocm93ICgpOwpleHRlcm4g aW50IF9JT192ZnByaW50ZiAoX0lPX0ZJTEUgKl9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKl9fcmVz dHJpY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCkgdGhyb3cgKCk7 CmV4dGVybiBfX3NzaXplX3QgX0lPX3BhZG4gKF9JT19GSUxFICosIGludCwgX19zc2l6ZV90KSB0 aHJvdyAoKTsKZXh0ZXJuIHNpemVfdCBfSU9fc2dldG4gKF9JT19GSUxFICosIHZvaWQgKiwgc2l6 ZV90KSB0aHJvdyAoKTsKCmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtvZmYgKF9JT19GSUxFICos IF9fb2ZmNjRfdCwgaW50LCBpbnQpIHRocm93ICgpOwpleHRlcm4gX19vZmY2NF90IF9JT19zZWVr cG9zIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCkgdGhyb3cgKCk7CgpleHRlcm4gdm9pZCBf SU9fZnJlZV9iYWNrdXBfYXJlYSAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CiMgNTEwICIvdXNyL2lu Y2x1ZGUvbGliaW8uaCIgMwp9CiMgNzQgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1s aW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCgp0eXBlZGVmIF9fZ251Y192YV9s aXN0IF9fbm90X3ZhX2xpc3RfXzsKIyA4OCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBj LWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRpby5oIiAzCnR5cGVkZWYgX0dfZnBvc190IGZwb3Nf dDsKCgoKCnR5cGVkZWYgX0dfZnBvczY0X3QgZnBvczY0X3Q7CiMgMTM3ICIvdXNyL2xvY2FsL2xp Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIv dXNyL2luY2x1ZGUvYml0cy9zdGRpb19saW0uaCIgMSAzCiMgMTM4ICIvdXNyL2xvY2FsL2xpYi9n Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgpleHRl cm4gRklMRSAqc3RkaW47CmV4dGVybiBGSUxFICpzdGRvdXQ7CmV4dGVybiBGSUxFICpzdGRlcnI7 CiMgMTUyICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNs dWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCByZW1vdmUgKF9fY29uc3QgY2hhciAqX19maWxlbmFt ZSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IHJlbmFtZSAoX19jb25zdCBjaGFyICpfX29sZCwgX19j b25zdCBjaGFyICpfX25ldykgdGhyb3cgKCk7CgoKCgpleHRlcm4gRklMRSAqdG1wZmlsZSAodm9p ZCkgdGhyb3cgKCk7CiMgMTY4ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt Z251LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIEZJTEUgKnRtcGZpbGU2NCAodm9pZCkg dGhyb3cgKCk7CgoKZXh0ZXJuIGNoYXIgKnRtcG5hbSAoY2hhciAqX19zKSB0aHJvdyAoKTsKCgoK CmV4dGVybiBjaGFyICp0bXBuYW1fciAoY2hhciAqX19zKSB0aHJvdyAoKTsKIyAxODggIi91c3Iv bG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkaW8uaCIg MwpleHRlcm4gY2hhciAqdGVtcG5hbSAoX19jb25zdCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFy ICpfX3BmeCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoK ZXh0ZXJuIGludCBmY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQg ZmZsdXNoIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgZmZsdXNoX3Vu bG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZjbG9zZWFs bCAodm9pZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIEZJTEUgKmZvcGVuIChfX2NvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19tb2RlcykgdGhyb3cgKCk7CgpleHRlcm4gRklMRSAqZnJlb3BlbiAoX19j b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBf X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKICAgICAgICAgICAgICAgICAgICAgIEZJ TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwojIDIzMiAiL3Vzci9sb2NhbC9saWIv Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBG SUxFICpmb3BlbjY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAg ICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzKSB0aHJvdyAo KTsKZXh0ZXJuIEZJTEUgKmZyZW9wZW42NCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmls ZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf X21vZGVzLAogICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFt KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBGSUxFICpmZG9wZW4gKGludCBfX2ZkLCBfX2NvbnN0IGNo YXIgKl9fbW9kZXMpIHRocm93ICgpOwoKCgoKCmV4dGVybiBGSUxFICpmb3BlbmNvb2tpZSAodm9p ZCAqX19yZXN0cmljdCBfX21hZ2ljX2Nvb2tpZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBf X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKICAgICAgICAgICAgICAgICAgICAgICAg ICBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190IF9faW9fZnVuY3MpIHRocm93ICgpOwoKCmV4dGVy biBGSUxFICpmbWVtb3BlbiAodm9pZCAqX19zLCBzaXplX3QgX19sZW4sIF9fY29uc3QgY2hhciAq X19tb2RlcykgdGhyb3cgKCk7CgoKCgpleHRlcm4gRklMRSAqb3Blbl9tZW1zdHJlYW0gKGNoYXIg KipfX3Jlc3RyaWN0IF9fYnVmbG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf dCAqX19yZXN0cmljdCBfX3NpemVsb2MpIHRocm93ICgpOwoKCgoKCmV4dGVybiB2b2lkIHNldGJ1 ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZikgdGhy b3cgKCk7CgoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwg Y2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICBpbnQgX19tb2Rlcywg c2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCBzZXRidWZmZXIgKEZJTEUgKl9f cmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAg ICAgICAgICAgc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgc2V0bGluZWJ1 ZiAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBmcHJpbnRmIChGSUxF ICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAq X19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgcHJpbnRmIChf X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7CgpleHRlcm4g aW50IHNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgIF9f Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCgpleHRlcm4g aW50IHZmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykg dGhyb3cgKCk7CgpleHRlcm4gaW50IHZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf X2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCk7CgpleHRlcm4gaW50 IHZzcHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgdGhy b3cgKCk7CgoKCmV4dGVybiBpbnQgc25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXpl X3QgX19tYXhsZW4sCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj dCBfX2Zvcm1hdCwgLi4uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9f IChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKZXh0ZXJuIGludCB2c25wcmludGYgKGNoYXIgKl9fcmVz dHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIHRo cm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwoK CgoKCmV4dGVybiBpbnQgdmFzcHJpbnRmIChjaGFyICoqX19yZXN0cmljdCBfX3B0ciwgX19jb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fZiwKICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9s aXN0IF9fYXJnKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3By aW50Zl9fLCAyLCAwKSkpOwpleHRlcm4gaW50IF9fYXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0 IF9fcHRyLAogICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf X2ZtdCwgLi4uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3By aW50Zl9fLCAyLCAzKSkpOwpleHRlcm4gaW50IGFzcHJpbnRmIChjaGFyICoqX19yZXN0cmljdCBf X3B0ciwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10 LCAuLi4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRm X18sIDIsIDMpKSk7CgoKZXh0ZXJuIGludCB2ZHByaW50ZiAoaW50IF9fZmQsIF9fY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX2ZtdCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3Qg X19hcmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRm X18sIDIsIDApKSk7CmV4dGVybiBpbnQgZHByaW50ZiAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAq X19yZXN0cmljdCBfX2ZtdCwgLi4uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zv cm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwoKCgoKZXh0ZXJuIGludCBmc2NhbmYgKEZJTEUg Kl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7CgpleHRlcm4gaW50IHNjYW5mIChfX2Nv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7CgpleHRlcm4gaW50 IHNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAg IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCgoKZXh0 ZXJuIGludCB2ZnNjYW5mIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jl c3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJn KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIs IDApKSk7CgoKZXh0ZXJuIGludCB2c2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv cm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo KF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMSwgMCkpKTsKCgpleHRlcm4gaW50IHZzc2NhbmYgKF9f Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBj aGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0aHJv dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwoKCgoK ZXh0ZXJuIGludCBmZ2V0YyAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50IGdl dGMgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGdldGNoYXIgKHZvaWQp IHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVh bSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCkgdGhyb3cgKCk7 CgoKCgpleHRlcm4gaW50IGZnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7 CgoKCgpleHRlcm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7 CmV4dGVybiBpbnQgcHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCmV4 dGVybiBpbnQgcHV0Y2hhciAoaW50IF9fYykgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gaW50IGZw dXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRl cm4gaW50IHB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsK ZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKSB0aHJvdyAoKTsKCgoKCgpleHRl cm4gaW50IGdldHcgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHB1dHcg KGludCBfX3csIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpmZ2V0 cyAoY2hhciAqX19yZXN0cmljdCBfX3MsIGludCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJl YW0pCiAgICAgdGhyb3cgKCk7CgoKCmV4dGVybiBjaGFyICpmZ2V0c191bmxvY2tlZCAoY2hhciAq X19yZXN0cmljdCBfX3MsIGludCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklM RSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqZ2V0cyAo Y2hhciAqX19zKSB0aHJvdyAoKTsKIyA0MzYgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1w Yy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gX19zc2l6ZV90IF9fZ2V0 ZGVsaW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGluZXB0ciwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sIGludCBfX2RlbGltaXRlciwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93 ICgpOwpleHRlcm4gX19zc2l6ZV90IGdldGRlbGltIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVw dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwg aW50IF9fZGVsaW1pdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVz dHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCmV4dGVybiBfX3NzaXplX3QgZ2V0bGluZSAoY2hh ciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZV90ICpfX3Jlc3RyaWN0IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9f cmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBmcHV0cyAoX19jb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICB0 aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBmcHV0c191bmxvY2tlZCAoX19jb25zdCBjaGFyICpfX3Jl c3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBf X3N0cmVhbSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgcHV0cyAoX19jb25zdCBjaGFyICpfX3Mp IHRocm93ICgpOwoKCgpleHRlcm4gaW50IHVuZ2V0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0p IHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkICh2b2lkICpfX3Jlc3RyaWN0IF9fcHRy LCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpf X3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVybiBzaXplX3QgZndyaXRlIChfX2Nv bnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAg ICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fcykgdGhyb3cgKCk7CgoKCmV4 dGVybiBzaXplX3QgZnJlYWRfdW5sb2NrZWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVf dCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUg Kl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxv Y2tlZCAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBf X3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZzZWVrIChGSUxFICpfX3N0cmVhbSwg bG9uZyBpbnQgX19vZmYsIGludCBfX3doZW5jZSkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBpbnQg ZnRlbGwgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVybiB2b2lkIHJld2luZCAoRklM RSAqX19zdHJlYW0pIHRocm93ICgpOwojIDQ5OSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2 LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnNlZWtvIChG SUxFICpfX3N0cmVhbSwgX19vZmZfdCBfX29mZiwgaW50IF9fd2hlbmNlKSB0aHJvdyAoKTsKCmV4 dGVybiBfX29mZl90IGZ0ZWxsbyAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgpleHRlcm4g aW50IGZnZXRwb3MgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3NfdCAqX19yZXN0cmlj dCBfX3BvcykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZnNldHBvcyAoRklMRSAqX19zdHJl YW0sIF9fY29uc3QgZnBvc190ICpfX3BvcykgdGhyb3cgKCk7CiMgNTMzICIvdXNyL2xvY2FsL2xp Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJu IGludCBmc2Vla282NCAoRklMRSAqX19zdHJlYW0sIF9fb2ZmNjRfdCBfX29mZiwgaW50IF9fd2hl bmNlKSB0aHJvdyAoKTsKZXh0ZXJuIF9fb2ZmNjRfdCBmdGVsbG82NCAoRklMRSAqX19zdHJlYW0p IHRocm93ICgpOwpleHRlcm4gaW50IGZnZXRwb3M2NCAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVh bSwgZnBvczY0X3QgKl9fcmVzdHJpY3QgX19wb3MpCiAgICAgdGhyb3cgKCk7CmV4dGVybiBpbnQg ZnNldHBvczY0IChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zNjRfdCAqX19wb3MpIHRocm93 ICgpOwoKCgpleHRlcm4gdm9pZCBjbGVhcmVyciAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoK ZXh0ZXJuIGludCBmZW9mIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IGZl cnJvciAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBjbGVhcmVycl91 bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50IGZlb2ZfdW5sb2Nr ZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQg KEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIHBlcnJvciAoX19jb25z dCBjaGFyICpfX3MpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzeXNfbmVycjsKZXh0ZXJuIF9f Y29uc3QgY2hhciAqX19jb25zdCBzeXNfZXJybGlzdFtdOwoKCmV4dGVybiBpbnQgX3N5c19uZXJy OwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IF9zeXNfZXJybGlzdFtdOwoKCgoKCmV4dGVy biBpbnQgZmlsZW5vIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZp bGVub191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gRklM RSAqcG9wZW4gKF9fY29uc3QgY2hhciAqX19jb21tYW5kLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMp IHRocm93ICgpOwoKCmV4dGVybiBpbnQgcGNsb3NlIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7 CgoKCgoKZXh0ZXJuIGNoYXIgKmN0ZXJtaWQgKGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCgoKZXh0 ZXJuIGNoYXIgKmN1c2VyaWQgKGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCgpzdHJ1Y3Qgb2JzdGFj azsKCgpleHRlcm4gaW50IG9ic3RhY2tfcHJpbnRmIChzdHJ1Y3Qgb2JzdGFjayAqX19yZXN0cmlj dCBfX29ic3RhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBvYnN0YWNrX3Zwcmlu dGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJncykgdGhyb3cgKCk7CgoKCgoK CgpleHRlcm4gdm9pZCBmbG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKZXh0 ZXJuIGludCBmdHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4g dm9pZCBmdW5sb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwojIDY0MCAiL3Vzci9s b2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRpby5oIiAz CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMSAzCiMgMzkgIi91c3IvaW5jbHVkZS9i aXRzL3N0ZGlvLmgiIDMKaW5saW5lIGludAp2cHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19mbXQsIF9fZ251Y192YV9saXN0IF9fYXJnKSB0aHJvdyAoKQp7CiAgcmV0dXJuIHZmcHJp bnRmIChzdGRvdXQsIF9fZm10LCBfX2FyZyk7Cn0KCgppbmxpbmUgaW50CmdldGNoYXIgKHZvaWQp IHRocm93ICgpCnsKICByZXR1cm4gX0lPX2dldGMgKHN0ZGluKTsKfQoKCgoKaW5saW5lIGludApn ZXRjX3VubG9ja2VkIChGSUxFICpfX2ZwKSB0aHJvdyAoKQp7CiAgcmV0dXJuICgoX19mcCktPl9J T19yZWFkX3B0ciA+PSAoX19mcCktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKF9fZnApIDogKih1 bnNpZ25lZCBjaGFyICopIChfX2ZwKS0+X0lPX3JlYWRfcHRyKyspOwp9CgoKaW5saW5lIGludApn ZXRjaGFyX3VubG9ja2VkICh2b2lkKSB0aHJvdyAoKQp7CiAgcmV0dXJuICgoc3RkaW4pLT5fSU9f cmVhZF9wdHIgPj0gKHN0ZGluKS0+X0lPX3JlYWRfZW5kID8gX191ZmxvdyAoc3RkaW4pIDogKih1 bnNpZ25lZCBjaGFyICopIChzdGRpbiktPl9JT19yZWFkX3B0cisrKTsKfQoKCgoKaW5saW5lIGlu dApwdXRjaGFyIChpbnQgX19jKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9JT19wdXRjIChfX2MsIHN0 ZG91dCk7Cn0KCgoKCmlubGluZSBpbnQKZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9f c3RyZWFtKSB0aHJvdyAoKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0ciA+ PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKF9fc3RyZWFtLCAodW5z aWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKF9fc3RyZWFtKS0+X0lPX3dy aXRlX3B0cisrID0gKF9fYykpKTsKfQoKCgoKCmlubGluZSBpbnQKcHV0Y191bmxvY2tlZCAoaW50 IF9fYywgRklMRSAqX19zdHJlYW0pIHRocm93ICgpCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5f SU9fd3JpdGVfcHRyID49IChfX3N0cmVhbSktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAo X19zdHJlYW0sICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooX19z dHJlYW0pLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKaW5saW5lIGludApwdXRjaGFy X3VubG9ja2VkIChpbnQgX19jKSB0aHJvdyAoKQp7CiAgcmV0dXJuICgoKHN0ZG91dCktPl9JT193 cml0ZV9wdHIgPj0gKHN0ZG91dCktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoc3Rkb3V0 LCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKHN0ZG91dCktPl9J T193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgoKCgppbmxpbmUgX19zc2l6ZV90CmdldGxpbmUg KGNoYXIgKipfX2xpbmVwdHIsIHNpemVfdCAqX19uLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkK ewogIHJldHVybiBfX2dldGRlbGltIChfX2xpbmVwdHIsIF9fbiwgJ1xuJywgX19zdHJlYW0pOwp9 CgoKCgoKaW5saW5lIGludApmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkK ewogIHJldHVybiAoKChfX3N0cmVhbSktPl9mbGFncyAmIDB4MTApICE9IDApOwp9CgoKaW5saW5l IGludApmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKQp7CiAgcmV0dXJu ICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgyMCkgIT0gMCk7Cn0KIyA2NDEgIi91c3IvbG9jYWwv bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoK fQojIDcxICJ0dXhyYWNlci5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDEgMwojIDI5 ICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAx IDMKIyAzMCAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDIgMwoKCmV4dGVybiAiQyIgewoKCgojIDEg Ii91c3IvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvYml0cy9l cnJuby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDEgMwoKCgojIDEgIi91 c3IvaW5jbHVkZS9hc20vZXJybm8uaCIgMSAzCiMgNSAiL3Vzci9pbmNsdWRlL2xpbnV4L2Vycm5v LmgiIDIgMwojIDI2ICIvdXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAyIDMKIyAzNiAiL3Vzci9p bmNsdWRlL2JpdHMvZXJybm8uaCIgMwpleHRlcm4gaW50IGVycm5vOwoKCmV4dGVybiBpbnQgKl9f ZXJybm9fbG9jYXRpb24gKHZvaWQpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p KTsKIyAzNyAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDIgMwojIDU1ICIvdXNyL2luY2x1ZGUvZXJy bm8uaCIgMwpleHRlcm4gY2hhciAqcHJvZ3JhbV9pbnZvY2F0aW9uX25hbWUsICpwcm9ncmFtX2lu dm9jYXRpb25fc2hvcnRfbmFtZTsKCgoKfQojIDY5ICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMwp0 eXBlZGVmIGludCBlcnJvcl90OwojIDcyICJ0dXhyYWNlci5oIiAyCiMgMSAiL3Vzci9pbmNsdWRl L3RpbWUuaCIgMSAzCiMgMjggIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKIyAxICIvdXNyL2luY2x1 ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoKZXh0ZXJu ICJDIiB7CgoKCgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n bnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAy IDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDEgMwojIDQzICIvdXNyL2luY2x1 ZGUvdGltZS5oIiAyIDMKIyAxMTggIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKc3RydWN0IHRtCnsK ICBpbnQgdG1fc2VjOwogIGludCB0bV9taW47CiAgaW50IHRtX2hvdXI7CiAgaW50IHRtX21kYXk7 CiAgaW50IHRtX21vbjsKICBpbnQgdG1feWVhcjsKICBpbnQgdG1fd2RheTsKICBpbnQgdG1feWRh eTsKICBpbnQgdG1faXNkc3Q7CgoKICBsb25nIGludCB0bV9nbXRvZmY7CiAgX19jb25zdCBjaGFy ICp0bV96b25lOwoKCgoKfTsKCgoKCnN0cnVjdCBpdGltZXJzcGVjCiAgewogICAgc3RydWN0IHRp bWVzcGVjIGl0X2ludGVydmFsOwogICAgc3RydWN0IHRpbWVzcGVjIGl0X3ZhbHVlOwogIH07CgoK c3RydWN0IHNpZ2V2ZW50OwojIDE2MyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpleHRlcm4gY2xv Y2tfdCBjbG9jayAodm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIHRpbWVfdCB0aW1lICh0aW1lX3Qg Kl9fdGltZXIpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgZGlmZnRpbWUgKHRpbWVfdCBfX3Rp bWUxLCB0aW1lX3QgX190aW1lMCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z dF9fKSk7CgoKZXh0ZXJuIHRpbWVfdCBta3RpbWUgKHN0cnVjdCB0bSAqX190cCkgdGhyb3cgKCk7 CgoKCgoKZXh0ZXJuIHNpemVfdCBzdHJmdGltZSAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVf dCBfX21heHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgdG0g Kl9fcmVzdHJpY3QgX190cCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqc3RycHRpbWUgKF9f Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCBzdHJ1Y3QgdG0gKl9fdHApCiAgICAgdGhyb3cgKCk7 CgoKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lIChfX2NvbnN0IHRpbWVfdCAqX190aW1lcikg dGhyb3cgKCk7CgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGltZSAoX19jb25zdCB0aW1lX3Qg Kl9fdGltZXIpIHRocm93ICgpOwoKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lX3IgKF9fY29u c3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgdGhyb3cgKCk7CgoKCmV4dGVybiBzdHJ1Y3Qg dG0gKmxvY2FsdGltZV9yIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVyLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIHRo cm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKmFzY3RpbWUgKF9fY29uc3Qgc3RydWN0IHRtICpfX3Rw KSB0aHJvdyAoKTsKCgpleHRlcm4gY2hhciAqY3RpbWUgKF9fY29uc3QgdGltZV90ICpfX3RpbWVy KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKmFzY3RpbWVfciAoX19jb25zdCBzdHJ1Y3Qg dG0gKl9fcmVzdHJpY3QgX190cCwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0 cmljdCBfX2J1ZikgdGhyb3cgKCk7CgoKZXh0ZXJuIGNoYXIgKmN0aW1lX3IgKF9fY29uc3QgdGlt ZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jl c3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpfX3R6bmFtZVsyXTsKZXh0 ZXJuIGludCBfX2RheWxpZ2h0OwpleHRlcm4gbG9uZyBpbnQgX190aW1lem9uZTsKCgoKCmV4dGVy biBjaGFyICp0em5hbWVbMl07CgoKCmV4dGVybiB2b2lkIHR6c2V0ICh2b2lkKSB0aHJvdyAoKTsK CgoKZXh0ZXJuIGludCBkYXlsaWdodDsKZXh0ZXJuIGxvbmcgaW50IHRpbWV6b25lOwoKCgoKCmV4 dGVybiBpbnQgc3RpbWUgKF9fY29uc3QgdGltZV90ICpfX3doZW4pIHRocm93ICgpOwojIDI3MSAi L3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpleHRlcm4gdGltZV90IHRpbWVnbSAoc3RydWN0IHRtICpf X3RwKSB0aHJvdyAoKTsKCgpleHRlcm4gdGltZV90IHRpbWVsb2NhbCAoc3RydWN0IHRtICpfX3Rw KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGR5c2l6ZSAoaW50IF9feWVhcikgdGhyb3cgKCkgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCmV4dGVybiBpbnQgbmFub3NsZWVwIChfX2Nv bnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXF1ZXN0ZWRfdGltZSwKICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCB0aW1lc3BlYyAqX19yZW1haW5pbmcpIHRocm93ICgpOwoKCgpleHRlcm4gaW50 IGNsb2NrX2dldHJlcyAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIHN0cnVjdCB0aW1lc3BlYyAqX19y ZXMpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgY2xvY2tfZ2V0dGltZSAoY2xvY2tpZF90IF9fY2xv Y2tfaWQsIHN0cnVjdCB0aW1lc3BlYyAqX190cCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBjbG9j a19zZXR0aW1lIChjbG9ja2lkX3QgX19jbG9ja19pZCwgX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMg Kl9fdHApCiAgICAgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgY2xvY2tfbmFub3NsZWVwIChjbG9j a2lkX3QgX19jbG9ja19pZCwgaW50IF9fZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXEsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVtKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGNsb2Nr X2dldGNwdWNsb2NraWQgKHBpZF90IF9fcGlkLCBjbG9ja2lkX3QgKl9fY2xvY2tfaWQpIHRocm93 ICgpOwoKCgoKZXh0ZXJuIGludCB0aW1lcl9jcmVhdGUgKGNsb2NraWRfdCBfX2Nsb2NrX2lkLAog ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNpZ2V2ZW50ICpfX3Jlc3RyaWN0IF9fZXZw LAogICAgICAgICAgICAgICAgICAgICAgICAgdGltZXJfdCAqX19yZXN0cmljdCBfX3RpbWVyaWQp IHRocm93ICgpOwoKCmV4dGVybiBpbnQgdGltZXJfZGVsZXRlICh0aW1lcl90IF9fdGltZXJpZCkg dGhyb3cgKCk7CgoKZXh0ZXJuIGludCB0aW1lcl9zZXR0aW1lICh0aW1lcl90IF9fdGltZXJpZCwg aW50IF9fZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgaXRp bWVyc3BlYyAqX19yZXN0cmljdCBfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBpdGltZXJzcGVjICpfX3Jlc3RyaWN0IF9fb3ZhbHVlKSB0aHJvdyAoKTsKCgpleHRlcm4g aW50IHRpbWVyX2dldHRpbWUgKHRpbWVyX3QgX190aW1lcmlkLCBzdHJ1Y3QgaXRpbWVyc3BlYyAq X192YWx1ZSkKICAgICB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHRpbWVyX2dldG92ZXJydW4gKHRp bWVyX3QgX190aW1lcmlkKSB0aHJvdyAoKTsKIyAzNDIgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMK ZXh0ZXJuIGludCBnZXRkYXRlX2VycjsKCgoKCgpleHRlcm4gc3RydWN0IHRtICpnZXRkYXRlIChf X2NvbnN0IGNoYXIgKl9fc3RyaW5nKSB0aHJvdyAoKTsKIyAzNTcgIi91c3IvaW5jbHVkZS90aW1l LmgiIDMKZXh0ZXJuIGludCBnZXRkYXRlX3IgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3N0 cmluZywKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3Jlc2J1 ZnApIHRocm93ICgpOwoKCgp9CiMgNzMgInR1eHJhY2VyLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUv Y3R5cGUuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCiMgMSAiL3Vzci9pbmNs dWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMiAzCiMgMSAi L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMjggIi91c3IvaW5jbHVkZS9jdHlwZS5o IiAyIDMKCmV4dGVybiAiQyIgewojIDQwICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMwojIDEgIi91 c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzCiMgNDEgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAyIDMK CgoKCgoKZW51bQp7CiAgX0lTdXBwZXIgPSAoKDApIDwgOCA/ICgoMSA8PCAoMCkpIDw8IDgpIDog KCgxIDw8ICgwKSkgPj4gOCkpLAogIF9JU2xvd2VyID0gKCgxKSA8IDggPyAoKDEgPDwgKDEpKSA8 PCA4KSA6ICgoMSA8PCAoMSkpID4+IDgpKSwKICBfSVNhbHBoYSA9ICgoMikgPCA4ID8gKCgxIDw8 ICgyKSkgPDwgOCkgOiAoKDEgPDwgKDIpKSA+PiA4KSksCiAgX0lTZGlnaXQgPSAoKDMpIDwgOCA/ ICgoMSA8PCAoMykpIDw8IDgpIDogKCgxIDw8ICgzKSkgPj4gOCkpLAogIF9JU3hkaWdpdCA9ICgo NCkgPCA4ID8gKCgxIDw8ICg0KSkgPDwgOCkgOiAoKDEgPDwgKDQpKSA+PiA4KSksCiAgX0lTc3Bh Y2UgPSAoKDUpIDwgOCA/ICgoMSA8PCAoNSkpIDw8IDgpIDogKCgxIDw8ICg1KSkgPj4gOCkpLAog IF9JU3ByaW50ID0gKCg2KSA8IDggPyAoKDEgPDwgKDYpKSA8PCA4KSA6ICgoMSA8PCAoNikpID4+ IDgpKSwKICBfSVNncmFwaCA9ICgoNykgPCA4ID8gKCgxIDw8ICg3KSkgPDwgOCkgOiAoKDEgPDwg KDcpKSA+PiA4KSksCiAgX0lTYmxhbmsgPSAoKDgpIDwgOCA/ICgoMSA8PCAoOCkpIDw8IDgpIDog KCgxIDw8ICg4KSkgPj4gOCkpLAogIF9JU2NudHJsID0gKCg5KSA8IDggPyAoKDEgPDwgKDkpKSA8 PCA4KSA6ICgoMSA8PCAoOSkpID4+IDgpKSwKICBfSVNwdW5jdCA9ICgoMTApIDwgOCA/ICgoMSA8 PCAoMTApKSA8PCA4KSA6ICgoMSA8PCAoMTApKSA+PiA4KSksCiAgX0lTYWxudW0gPSAoKDExKSA8 IDggPyAoKDEgPDwgKDExKSkgPDwgOCkgOiAoKDEgPDwgKDExKSkgPj4gOCkpCn07CiMgNzUgIi91 c3IvaW5jbHVkZS9jdHlwZS5oIiAzCmV4dGVybiBfX2NvbnN0IHVuc2lnbmVkIHNob3J0IGludCAq X19jdHlwZV9iOwpleHRlcm4gX19jb25zdCBfX2ludDMyX3QgKl9fY3R5cGVfdG9sb3dlcjsKZXh0 ZXJuIF9fY29uc3QgX19pbnQzMl90ICpfX2N0eXBlX3RvdXBwZXI7CiMgOTEgIi91c3IvaW5jbHVk ZS9jdHlwZS5oIiAzCmV4dGVybiBpbnQgaXNhbG51bSAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGlu dCBpc2FscGhhIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzY250cmwgKGludCkgdGhyb3cg KCk7CmV4dGVybiBpbnQgaXNkaWdpdCAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc2xvd2Vy IChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzZ3JhcGggKGludCkgdGhyb3cgKCk7CmV4dGVy biBpbnQgaXNwcmludCAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3B1bmN0IChpbnQpIHRo cm93ICgpOwpleHRlcm4gaW50IGlzc3BhY2UgKGludCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXN1 cHBlciAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3hkaWdpdCAoaW50KSB0aHJvdyAoKTsK CgpleHRlcm4gaW50IGlzYmxhbmsgKGludCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHRvbG93 ZXIgKGludCBfX2MpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgdG91cHBlciAoaW50IF9fYykgdGhy b3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgaXNhc2NpaSAoaW50IF9fYykgdGhyb3cgKCk7CgoKCmV4 dGVybiBpbnQgdG9hc2NpaSAoaW50IF9fYykgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgX3RvdXBw ZXIgKGludCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX3RvbG93ZXIgKGludCkgdGhyb3cgKCk7CiMg MTY3ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMwpleHRlcm4gX19pbmxpbmUgaW50CnRvbG93ZXIg KGludCBfX2MpIHRocm93ICgpCnsKICByZXR1cm4gX19jID49IC0xMjggJiYgX19jIDwgMjU2ID8g X19jdHlwZV90b2xvd2VyW19fY10gOiBfX2M7Cn0KCmV4dGVybiBfX2lubGluZSBpbnQKdG91cHBl ciAoaW50IF9fYykgdGhyb3cgKCkKewogIHJldHVybiBfX2MgPj0gLTEyOCAmJiBfX2MgPCAyNTYg PyBfX2N0eXBlX3RvdXBwZXJbX19jXSA6IF9fYzsKfQojIDIxMCAiL3Vzci9pbmNsdWRlL2N0eXBl LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUveGxvY2FsZS5oIiAxIDMKIyAyMTEgIi91c3IvaW5jbHVk ZS9jdHlwZS5oIiAyIDMKIyAyMjMgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCmV4dGVybiBpbnQg X19pc2FsbnVtX2wgKGludCwgX19sb2NhbGVfdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX19pc2Fs cGhhX2wgKGludCwgX19sb2NhbGVfdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX19pc2NudHJsX2wg KGludCwgX19sb2NhbGVfdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX19pc2RpZ2l0X2wgKGludCwg X19sb2NhbGVfdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX19pc2xvd2VyX2wgKGludCwgX19sb2Nh bGVfdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX19pc2dyYXBoX2wgKGludCwgX19sb2NhbGVfdCkg dGhyb3cgKCk7CmV4dGVybiBpbnQgX19pc3ByaW50X2wgKGludCwgX19sb2NhbGVfdCkgdGhyb3cg KCk7CmV4dGVybiBpbnQgX19pc3B1bmN0X2wgKGludCwgX19sb2NhbGVfdCkgdGhyb3cgKCk7CmV4 dGVybiBpbnQgX19pc3NwYWNlX2wgKGludCwgX19sb2NhbGVfdCkgdGhyb3cgKCk7CmV4dGVybiBp bnQgX19pc3VwcGVyX2wgKGludCwgX19sb2NhbGVfdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX19p c3hkaWdpdF9sIChpbnQsIF9fbG9jYWxlX3QpIHRocm93ICgpOwoKZXh0ZXJuIGludCBfX2lzYmxh bmtfbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBfX3RvbG93ZXJf bCAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgX190b3Vw cGVyX2wgKGludCBfX2MsIF9fbG9jYWxlX3QgX19sKSB0aHJvdyAoKTsKIyAyNzYgIi91c3IvaW5j bHVkZS9jdHlwZS5oIiAzCn0KIyA3NCAidHV4cmFjZXIuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9z eXMvc3RhdC5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKIyAxICIvdXNy L2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAy IDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVk ZS9zeXMvc3RhdC5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIyAzMyAi L3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDIgMwojIDk2ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQu aCIgMwpleHRlcm4gIkMiIHsKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RhdC5oIiAxIDMKIyAz NiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RhdC5oIiAzCnN0cnVjdCBzdGF0CiAgewogICAgX19kZXZf dCBzdF9kZXY7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQxOwoKICAgIF9faW5vX3Qgc3Rf aW5vOwoKCgogICAgX19tb2RlX3Qgc3RfbW9kZTsKICAgIF9fbmxpbmtfdCBzdF9ubGluazsKICAg IF9fdWlkX3Qgc3RfdWlkOwogICAgX19naWRfdCBzdF9naWQ7CiAgICBfX2Rldl90IHN0X3JkZXY7 CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQyOwoKICAgIF9fb2ZmX3Qgc3Rfc2l6ZTsKCgoK ICAgIF9fYmxrc2l6ZV90IHN0X2Jsa3NpemU7CgoKICAgIF9fYmxrY250X3Qgc3RfYmxvY2tzOwoK CgogICAgX190aW1lX3Qgc3RfYXRpbWU7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDE7 CiAgICBfX3RpbWVfdCBzdF9tdGltZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMjsK ICAgIF9fdGltZV90IHN0X2N0aW1lOwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQzOwoK ICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkNDsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9f dW51c2VkNTsKCgoKICB9OwoKCnN0cnVjdCBzdGF0NjQKICB7CiAgICBfX2Rldl90IHN0X2RldjsK ICAgIHVuc2lnbmVkIGludCBfX3BhZDE7CgogICAgX19pbm9fdCBfX3N0X2lubzsKICAgIF9fbW9k ZV90IHN0X21vZGU7CiAgICBfX25saW5rX3Qgc3Rfbmxpbms7CiAgICBfX3VpZF90IHN0X3VpZDsK ICAgIF9fZ2lkX3Qgc3RfZ2lkOwogICAgX19kZXZfdCBzdF9yZGV2OwogICAgdW5zaWduZWQgaW50 IF9fcGFkMjsKICAgIF9fb2ZmNjRfdCBzdF9zaXplOwogICAgX19ibGtzaXplX3Qgc3RfYmxrc2l6 ZTsKCiAgICBfX2Jsa2NudDY0X3Qgc3RfYmxvY2tzOwogICAgX190aW1lX3Qgc3RfYXRpbWU7CiAg ICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDE7CiAgICBfX3RpbWVfdCBzdF9tdGltZTsKICAg IHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMjsKICAgIF9fdGltZV90IHN0X2N0aW1lOwogICAg dW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQzOwogICAgX19pbm82NF90IHN0X2lubzsKICB9Owoj IDk5ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMiAzCiMgMjAwICIvdXNyL2luY2x1ZGUvc3lz L3N0YXQuaCIgMwpleHRlcm4gaW50IHN0YXQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zp bGUsCiAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgKl9fcmVzdHJpY3QgX19idWYpIHRocm93 ICgpOwoKCgpleHRlcm4gaW50IGZzdGF0IChpbnQgX19mZCwgc3RydWN0IHN0YXQgKl9fYnVmKSB0 aHJvdyAoKTsKIyAyMTkgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzCmV4dGVybiBpbnQgc3Rh dDY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlLAogICAgICAgICAgICAgICAgICAg c3RydWN0IHN0YXQ2NCAqX19yZXN0cmljdCBfX2J1ZikgdGhyb3cgKCk7CmV4dGVybiBpbnQgZnN0 YXQ2NCAoaW50IF9fZmQsIHN0cnVjdCBzdGF0NjQgKl9fYnVmKSB0aHJvdyAoKTsKCgoKCgoKZXh0 ZXJuIGludCBsc3RhdCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZSwKICAgICAgICAg ICAgICAgICAgc3RydWN0IHN0YXQgKl9fcmVzdHJpY3QgX19idWYpIHRocm93ICgpOwojIDI0MSAi L3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKZXh0ZXJuIGludCBsc3RhdDY0IChfX2NvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19maWxlLAogICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQg Kl9fcmVzdHJpY3QgX19idWYpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IGNobW9kIChfX2Nv bnN0IGNoYXIgKl9fZmlsZSwgX19tb2RlX3QgX19tb2RlKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGlu dCBmY2htb2QgKGludCBfX2ZkLCBfX21vZGVfdCBfX21vZGUpIHRocm93ICgpOwoKCgoKCmV4dGVy biBfX21vZGVfdCB1bWFzayAoX19tb2RlX3QgX19tYXNrKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBf X21vZGVfdCBnZXR1bWFzayAodm9pZCkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgbWtkaXIgKF9f Y29uc3QgY2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUpIHRocm93ICgpOwoKCgoKCmV4dGVy biBpbnQgbWtub2QgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUsIF9fZGV2 X3QgX19kZXYpCiAgICAgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IG1rZmlmbyAoX19jb25zdCBj aGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSkgdGhyb3cgKCk7CiMgMzA2ICIvdXNyL2luY2x1 ZGUvc3lzL3N0YXQuaCIgMwpleHRlcm4gaW50IF9fZnhzdGF0IChpbnQgX192ZXIsIGludCBfX2Zp bGRlcywgc3RydWN0IHN0YXQgKl9fc3RhdF9idWYpIHRocm93ICgpOwpleHRlcm4gaW50IF9feHN0 YXQgKGludCBfX3ZlciwgX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfX2x4c3Rh dCAoaW50IF9fdmVyLCBfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSB0aHJvdyAoKTsKIyAzMzAgIi91c3IvaW5jbHVk ZS9zeXMvc3RhdC5oIiAzCmV4dGVybiBpbnQgX19meHN0YXQ2NCAoaW50IF9fdmVyLCBpbnQgX19m aWxkZXMsIHN0cnVjdCBzdGF0NjQgKl9fc3RhdF9idWYpCiAgICAgdGhyb3cgKCk7CmV4dGVybiBp bnQgX194c3RhdDY0IChpbnQgX192ZXIsIF9fY29uc3QgY2hhciAqX19maWxlbmFtZSwKICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQgKl9fc3RhdF9idWYpIHRocm93ICgpOwpleHRl cm4gaW50IF9fbHhzdGF0NjQgKGludCBfX3ZlciwgX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lLAog ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQgKl9fc3RhdF9idWYpIHRocm93ICgp OwoKZXh0ZXJuIGludCBfX3hta25vZCAoaW50IF9fdmVyLCBfX2NvbnN0IGNoYXIgKl9fcGF0aCwg X19tb2RlX3QgX19tb2RlLAogICAgICAgICAgICAgICAgICAgICBfX2Rldl90ICpfX2RldikgdGhy b3cgKCk7CgoKCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgc3RhdCAoX19jb25zdCBjaGFyICpfX3Bh dGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19zdGF0YnVmKSB0 aHJvdyAoKQp7CiAgcmV0dXJuIF9feHN0YXQgKDMsIF9fcGF0aCwgX19zdGF0YnVmKTsKfQoKCmV4 dGVybiBfX2lubGluZV9fIGludCBsc3RhdCAoX19jb25zdCBjaGFyICpfX3BhdGgsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgKl9fc3RhdGJ1ZikgdGhyb3cgKCkKewog IHJldHVybiBfX2x4c3RhdCAoMywgX19wYXRoLCBfX3N0YXRidWYpOwp9CgoKZXh0ZXJuIF9faW5s aW5lX18gaW50IGZzdGF0IChpbnQgX19mZCwgc3RydWN0IHN0YXQgKl9fc3RhdGJ1ZikgdGhyb3cg KCkKewogIHJldHVybiBfX2Z4c3RhdCAoMywgX19mZCwgX19zdGF0YnVmKTsKfQoKCmV4dGVybiBf X2lubGluZV9fIGludCBta25vZCAoX19jb25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9k ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Rldl90IF9fZGV2KSB0aHJvdyAoKQp7 CiAgcmV0dXJuIF9feG1rbm9kICgxLCBfX3BhdGgsIF9fbW9kZSwgJl9fZGV2KTsKfQoKCgoKCmV4 dGVybiBfX2lubGluZV9fIGludCBzdGF0NjQgKF9fY29uc3QgY2hhciAqX19wYXRoLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRidWYpIHRocm93ICgp CnsKICByZXR1cm4gX194c3RhdDY0ICgzLCBfX3BhdGgsIF9fc3RhdGJ1Zik7Cn0KCgpleHRlcm4g X19pbmxpbmVfXyBpbnQgbHN0YXQ2NCAoX19jb25zdCBjaGFyICpfX3BhdGgsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRidWYpIHRocm93ICgpCnsK ICByZXR1cm4gX19seHN0YXQ2NCAoMywgX19wYXRoLCBfX3N0YXRidWYpOwp9CgoKZXh0ZXJuIF9f aW5saW5lX18gaW50IGZzdGF0NjQgKGludCBfX2ZkLCBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRidWYp IHRocm93ICgpCnsKICByZXR1cm4gX19meHN0YXQ2NCAoMywgX19mZCwgX19zdGF0YnVmKTsKfQoK CgoKfQojIDc1ICJ0dXhyYWNlci5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAxIDMK IyAyNiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVz LmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKZXh0ZXJuICJDIiB7CgoK CgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1 ZGUvc3RkZGVmLmgiIDEgMwojIDM0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCgpleHRl cm4gdm9pZCAqbWVtY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAg ICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAo KTsKCgpleHRlcm4gdm9pZCAqbWVtbW92ZSAodm9pZCAqX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9f c3JjLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpOwoKCgoKCmV4dGVybiB2b2lkICptZW1jY3B5 ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3Jj LAogICAgICAgICAgICAgICAgICAgICAgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICB0aHJvdyAo KTsKCgoKCmV4dGVybiB2b2lkICptZW1zZXQgKHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9f bikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBtZW1jbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19j b25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g KChfX3B1cmVfXykpOwoKCmV4dGVybiB2b2lkICptZW1jaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBp bnQgX19jLCBzaXplX3QgX19uKQogICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJl X18pKTsKCgoKCmV4dGVybiB2b2lkICpyYXdtZW1jaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQg X19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gdm9pZCAq bWVtcmNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgIHRo cm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNw eSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ny YykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBjaGFyICpzdHJuY3B5IChjaGFyICpfX3Jlc3RyaWN0 IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf X3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGNoYXIgKnN0cmNhdCAoY2hhciAq X19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0 aHJvdyAoKTsKCmV4dGVybiBjaGFyICpzdHJuY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwg X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgc2l6 ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBzdHJjbXAgKF9fY29uc3QgY2hhciAqX19z MSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1 cmVfXykpOwoKZXh0ZXJuIGludCBzdHJuY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3Qg Y2hhciAqX19zMiwgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19w dXJlX18pKTsKCgpleHRlcm4gaW50IHN0cmNvbGwgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25z dCBjaGFyICpfX3MyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK ZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAg ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24p IHRocm93ICgpOwoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3hsb2NhbGUuaCIgMSAzCiMgMTA5ICIv dXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCmV4dGVybiBpbnQgX19zdHJjb2xsX2wgKF9fY29u c3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBfX2xvY2FsZV90IF9fbCkKICAgICB0 aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBzaXplX3QgX19zdHJ4 ZnJtX2wgKGNoYXIgKl9fZGVzdCwgX19jb25zdCBjaGFyICpfX3NyYywgc2l6ZV90IF9fbiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2wpIHRocm93ICgpOwoKCgoKZXh0 ZXJuIGNoYXIgKnN0cmR1cCAoX19jb25zdCBjaGFyICpfX3MpIHRocm93ICgpIF9fYXR0cmlidXRl X18gKChfX21hbGxvY19fKSk7CgoKCgoKCmV4dGVybiBjaGFyICpzdHJuZHVwIChfX2NvbnN0IGNo YXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf X21hbGxvY19fKSk7CiMgMTU1ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIg KnN0cmNociAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIHRocm93ICgpIF9fYXR0cmlidXRl X18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnJjaHIgKF9fY29uc3QgY2hhciAqX19z LCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVy biBjaGFyICpzdHJjaHJudWwgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSBf X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBzaXplX3Qgc3RyY3NwbiAoX19j b25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpCiAgICAgdGhyb3cgKCkgX19h dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHNpemVfdCBzdHJzcG4gKF9fY29uc3Qg Y2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIHRocm93ICgpIF9fYXR0cmli dXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnBicmsgKF9fY29uc3QgY2hhciAq X19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g KChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0 YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g KChfX3B1cmVfXykpOwoKCgpleHRlcm4gY2hhciAqc3RyY2FzZXN0ciAoX19jb25zdCBjaGFyICpf X2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAgIHRocm93ICgpIF9fYXR0cmli dXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gY2hhciAqc3RydG9rIChjaGFyICpfX3Jlc3Ry aWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pCiAgICAgdGhyb3cgKCk7 CgoKCmV4dGVybiBjaGFyICpfX3N0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAg ICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAogICAg ICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgdGhyb3cg KCk7CgpleHRlcm4gY2hhciAqc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq X19yZXN0cmljdCBfX3NhdmVfcHRyKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIHZvaWQgKm1lbW1l bSAoX19jb25zdCB2b2lkICpfX2hheXN0YWNrLCBzaXplX3QgX19oYXlzdGFja2xlbiwKICAgICAg ICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX25lZWRsZSwgc2l6ZV90IF9fbmVlZGxlbGVu KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gdm9p ZCAqX19tZW1wY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAg ICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAo KTsKZXh0ZXJuIHZvaWQgKm1lbXBjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAg ICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19u KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBzaXplX3Qgc3RybGVuIChfX2NvbnN0IGNoYXIgKl9fcykg dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpleHRlcm4gc2l6ZV90IHN0 cm5sZW4gKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX21heGxlbikKICAgICB0aHJv dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBjaGFyICpzdHJlcnJv ciAoaW50IF9fZXJybnVtKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKnN0cmVycm9yX3IgKGlu dCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgdGhyb3cgKCk7CgoKCgpl eHRlcm4gdm9pZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgpl eHRlcm4gdm9pZCBiY29weSAoX19jb25zdCB2b2lkICpfX3NyYywgdm9pZCAqX19kZXN0LCBzaXpl X3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gdm9pZCBiemVybyAodm9pZCAqX19zLCBzaXplX3Qg X19uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGJjbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19j b25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g KChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICppbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGlu dCBfX2MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFy ICpyaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0 ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGludCBmZnMgKGludCBfX2kpIHRocm93ICgpIF9f YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgZmZzbCAobG9uZyBpbnQg X19sKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgpfX2V4dGVuc2lvbl9f IGV4dGVybiBpbnQgZmZzbGwgKGxvbmcgbG9uZyBpbnQgX19sbCkKICAgICB0aHJvdyAoKSBfX2F0 dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IHN0cmNhc2VjbXAgKF9fY29u c3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIHRocm93ICgpIF9fYXR0cmli dXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBpbnQgc3RybmNhc2VjbXAgKF9fY29uc3QgY2hh ciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9f YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBpbnQgX19zdHJjYXNlY21wX2wg KF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLAogICAgICAgICAgICAgICAg ICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19w dXJlX18pKTsKCmV4dGVybiBpbnQgX19zdHJuY2FzZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9fczEs IF9fY29uc3QgY2hhciAqX19zMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBf X24sIF9fbG9jYWxlX3QgX19sb2MpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVy ZV9fKSk7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cnNlcCAoY2hhciAqKl9fcmVzdHJpY3QgX19zdHJp bmdwLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxp bSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHN0cnZlcnNjbXAgKF9fY29uc3QgY2hhciAqX19z MSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1 cmVfXykpOwoKCmV4dGVybiBjaGFyICpzdHJzaWduYWwgKGludCBfX3NpZykgdGhyb3cgKCk7CgoK ZXh0ZXJuIGNoYXIgKl9fc3RwY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBj aGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIHRocm93ICgpOwpleHRlcm4gY2hhciAqc3RwY3B5 IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3Jj KQogICAgIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqX19zdHBuY3B5IChjaGFyICpfX3Jlc3Ry aWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKZXh0ZXJuIGNoYXIgKnN0cG5jcHkgKGNo YXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFy ICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gY2hhciAq c3RyZnJ5IChjaGFyICpfX3N0cmluZykgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgKm1lbWZyb2Ig KHZvaWQgKl9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBjaGFyICpiYXNl bmFtZSAoX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lKSB0aHJvdyAoKTsKIyAzNjQgIi91c3IvaW5j bHVkZS9zdHJpbmcuaCIgMwp9CiMgNzYgInR1eHJhY2VyLmgiIDIKIyAxICIvdXNyL2xvY2FsL2xp Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIyAx MSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9s aW1pdHMuaCIgMwojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv My4xL2luY2x1ZGUvc3lzbGltaXRzLmgiIDEgMwoKCgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2dj Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvbGltaXRzLmgiIDEgMwojIDEzMCAi L3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9saW1p dHMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVk ZS9saW1pdHMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vz ci9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKIyAxNDQgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMwoj IDEgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4MV9saW0uaCIgMSAzCiMgMTI2ICIvdXNyL2luY2x1 ZGUvYml0cy9wb3NpeDFfbGltLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9sb2NhbF9saW0u aCIgMSAzCiMgMzYgIi91c3IvaW5jbHVkZS9iaXRzL2xvY2FsX2xpbS5oIiAzCiMgMSAiL3Vzci9p bmNsdWRlL2xpbnV4L2xpbWl0cy5oIiAxIDMKIyAzNyAiL3Vzci9pbmNsdWRlL2JpdHMvbG9jYWxf bGltLmgiIDIgMwojIDEyNyAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAyIDMKIyAx NDUgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv cG9zaXgyX2xpbS5oIiAxIDMKIyAxNDkgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAzCgoKCiMg MSAiL3Vzci9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDEgMwojIDM0ICIvdXNyL2luY2x1ZGUv Yml0cy94b3Blbl9saW0uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5oIiAx IDMKIyAzNSAiL3Vzci9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDIgMwojIDEzNiAiL3Vzci9p bmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6 ZS5oIiAxIDMKIyAxMzcgIi91c3IvaW5jbHVkZS9iaXRzL3hvcGVuX2xpbS5oIiAyIDMKIyAxNTMg Ii91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAzCiMgMTMxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGli L2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKIyA4ICIvdXNyL2xv Y2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N5c2xpbWl0cy5o IiAyIDMKIyAxMiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEv aW5jbHVkZS9saW1pdHMuaCIgMiAzCiMgNzcgInR1eHJhY2VyLmgiIDIKIyAxICIvdXNyL2xvY2Fs L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMK IyAxMTAgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1 ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwojIDc4ICJ0dXhy YWNlci5oIiAyCgoKCgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt Z251LzMuMS9pbmNsdWRlL2Zsb2F0LmgiIDEgMwojIDg0ICJ0dXhyYWNlci5oIiAyCiMgOTIgInR1 eHJhY2VyLmgiCiMgMSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAxIDMKIyAyNiAiL3Vzci9pbmNs dWRlL3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIv dXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKZXh0ZXJuICJDIiB7CiMgMTc1ICIvdXNyL2luY2x1 ZGUvdW5pc3RkLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeF9vcHQuaCIgMSAzCiMg MTc2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRz L2Vudmlyb25tZW50cy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvZW52aXJvbm1lbnRz LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5oIiAxIDMKIyAyNCAiL3Vzci9p bmNsdWRlL2JpdHMvZW52aXJvbm1lbnRzLmgiIDIgMwojIDE4MCAiL3Vzci9pbmNsdWRlL3VuaXN0 ZC5oIiAyIDMKIyAxOTAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwojIDEgIi91c3IvaW5jbHVk ZS9iaXRzL3R5cGVzLmgiIDEgMwojIDE5MSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKIyAx OTkgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIv aTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDIwMCAiL3Vzci9p bmNsdWRlL3VuaXN0ZC5oIiAyIDMKIyAyNDAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwp0eXBl ZGVmIF9faW50cHRyX3QgaW50cHRyX3Q7CgoKCgoKCnR5cGVkZWYgX19zb2NrbGVuX3Qgc29ja2xl bl90OwojIDI2MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgYWNjZXNzIChf X2NvbnN0IGNoYXIgKl9fbmFtZSwgaW50IF9fdHlwZSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50 IGV1aWRhY2Nlc3MgKF9fY29uc3QgY2hhciAqX19uYW1lLCBpbnQgX190eXBlKSB0aHJvdyAoKTsK IyAyOTAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gX19vZmZfdCBsc2VlayAoaW50 IF9fZmQsIF9fb2ZmX3QgX19vZmZzZXQsIGludCBfX3doZW5jZSkgdGhyb3cgKCk7CiMgMzAyICIv dXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9fb2ZmNjRfdCBsc2VlazY0IChpbnQgX19m ZCwgX19vZmY2NF90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpIHRocm93ICgpOwoKCgpleHRlcm4g aW50IGNsb3NlIChpbnQgX19mZCkgdGhyb3cgKCk7CgoKCmV4dGVybiBzc2l6ZV90IHJlYWQgKGlu dCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKSB0aHJvdyAoKTsKCgpleHRlcm4g c3NpemVfdCB3cml0ZSAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24p IHRocm93ICgpOwoKCgpleHRlcm4gc3NpemVfdCBwcmVhZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVm LCBzaXplX3QgX19uYnl0ZXMsIF9fb2ZmX3QgX19vZmZzZXQpCiAgICAgdGhyb3cgKCk7CmV4dGVy biBzc2l6ZV90IHB3cml0ZSAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBf X24sCiAgICAgICAgICAgICAgICAgICAgICAgX19vZmZfdCBfX29mZnNldCkgdGhyb3cgKCk7CiMg MzQwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIHNzaXplX3QgcHJlYWQ2NCAoaW50 IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAg ICAgIF9fb2ZmNjRfdCBfX29mZnNldCkgdGhyb3cgKCk7CgoKZXh0ZXJuIHNzaXplX3QgcHdyaXRl NjQgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19uLAogICAgICAgICAg ICAgICAgICAgICAgICAgX19vZmY2NF90IF9fb2Zmc2V0KSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVy biBpbnQgcGlwZSAoaW50IF9fcGlwZWRlc1syXSkgdGhyb3cgKCk7CiMgMzYyICIvdXNyL2luY2x1 ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIHVuc2lnbmVkIGludCBhbGFybSAodW5zaWduZWQgaW50IF9f c2Vjb25kcykgdGhyb3cgKCk7CiMgMzcxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJu IHVuc2lnbmVkIGludCBzbGVlcCAodW5zaWduZWQgaW50IF9fc2Vjb25kcykgdGhyb3cgKCk7CgoK CgoKCmV4dGVybiBfX3VzZWNvbmRzX3QgdWFsYXJtIChfX3VzZWNvbmRzX3QgX192YWx1ZSwgX191 c2Vjb25kc190IF9faW50ZXJ2YWwpCiAgICAgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgdXNsZWVw IChfX3VzZWNvbmRzX3QgX191c2Vjb25kcykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBwYXVz ZSAodm9pZCkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgY2hvd24gKF9fY29uc3QgY2hhciAqX19m aWxlLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkKICAgICB0aHJvdyAoKTsKCgoK ZXh0ZXJuIGludCBmY2hvd24gKGludCBfX2ZkLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19n cm91cCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGxjaG93biAoX19jb25zdCBjaGFyICpfX2Zp bGUsIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKQogICAgIHRocm93ICgpOwoKCgoK ZXh0ZXJuIGludCBjaGRpciAoX19jb25zdCBjaGFyICpfX3BhdGgpIHRocm93ICgpOwoKCgpleHRl cm4gaW50IGZjaGRpciAoaW50IF9fZmQpIHRocm93ICgpOwojIDQyMyAiL3Vzci9pbmNsdWRlL3Vu aXN0ZC5oIiAzCmV4dGVybiBjaGFyICpnZXRjd2QgKGNoYXIgKl9fYnVmLCBzaXplX3QgX19zaXpl KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gY2hhciAqZ2V0X2N1cnJlbnRfZGlyX25hbWUgKHZvaWQp IHRocm93ICgpOwoKCgoKCgpleHRlcm4gY2hhciAqZ2V0d2QgKGNoYXIgKl9fYnVmKSB0aHJvdyAo KTsKCgoKCmV4dGVybiBpbnQgZHVwIChpbnQgX19mZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBk dXAyIChpbnQgX19mZCwgaW50IF9fZmQyKSB0aHJvdyAoKTsKCgpleHRlcm4gY2hhciAqKl9fZW52 aXJvbjsKCmV4dGVybiBjaGFyICoqZW52aXJvbjsKCgoKCgpleHRlcm4gaW50IGV4ZWN2ZSAoX19j b25zdCBjaGFyICpfX3BhdGgsIGNoYXIgKl9fY29uc3QgX19hcmd2W10sCiAgICAgICAgICAgICAg ICAgICBjaGFyICpfX2NvbnN0IF9fZW52cFtdKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZmV4 ZWN2ZSAoaW50IF9fZmQsIGNoYXIgKl9fY29uc3QgX19hcmd2W10sIGNoYXIgKl9fY29uc3QgX19l bnZwW10pCiAgICAgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGV4ZWN2IChfX2NvbnN0IGNoYXIg Kl9fcGF0aCwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQg ZXhlY2xlIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19jb25zdCBjaGFyICpfX2FyZywgLi4uKSB0 aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBleGVjbCAoX19jb25zdCBjaGFyICpfX3BhdGgsIF9fY29u c3QgY2hhciAqX19hcmcsIC4uLikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgZXhlY3ZwIChfX2Nv bnN0IGNoYXIgKl9fZmlsZSwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSkgdGhyb3cgKCk7CgoKCgpl eHRlcm4gaW50IGV4ZWNscCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fY29uc3QgY2hhciAqX19h cmcsIC4uLikgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IG5pY2UgKGludCBfX2luYykgdGhyb3cg KCk7CgoKCgpleHRlcm4gdm9pZCBfZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgo X19ub3JldHVybl9fKSk7CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9jb25mbmFtZS5oIiAx IDMKIyAyNSAiL3Vzci9pbmNsdWRlL2JpdHMvY29uZm5hbWUuaCIgMwplbnVtCiAgewogICAgX1BD X0xJTktfTUFYLAoKICAgIF9QQ19NQVhfQ0FOT04sCgogICAgX1BDX01BWF9JTlBVVCwKCiAgICBf UENfTkFNRV9NQVgsCgogICAgX1BDX1BBVEhfTUFYLAoKICAgIF9QQ19QSVBFX0JVRiwKCiAgICBf UENfQ0hPV05fUkVTVFJJQ1RFRCwKCiAgICBfUENfTk9fVFJVTkMsCgogICAgX1BDX1ZESVNBQkxF LAoKICAgIF9QQ19TWU5DX0lPLAoKICAgIF9QQ19BU1lOQ19JTywKCiAgICBfUENfUFJJT19JTywK CiAgICBfUENfU09DS19NQVhCVUYsCgogICAgX1BDX0ZJTEVTSVpFQklUUywKCiAgICBfUENfUkVD X0lOQ1JfWEZFUl9TSVpFLAoKICAgIF9QQ19SRUNfTUFYX1hGRVJfU0laRSwKCiAgICBfUENfUkVD X01JTl9YRkVSX1NJWkUsCgogICAgX1BDX1JFQ19YRkVSX0FMSUdOLAoKICAgIF9QQ19BTExPQ19T SVpFX01JTiwKCiAgICBfUENfU1lNTElOS19NQVgKCiAgfTsKCgplbnVtCiAgewogICAgX1NDX0FS R19NQVgsCgogICAgX1NDX0NISUxEX01BWCwKCiAgICBfU0NfQ0xLX1RDSywKCiAgICBfU0NfTkdS T1VQU19NQVgsCgogICAgX1NDX09QRU5fTUFYLAoKICAgIF9TQ19TVFJFQU1fTUFYLAoKICAgIF9T Q19UWk5BTUVfTUFYLAoKICAgIF9TQ19KT0JfQ09OVFJPTCwKCiAgICBfU0NfU0FWRURfSURTLAoK ICAgIF9TQ19SRUFMVElNRV9TSUdOQUxTLAoKICAgIF9TQ19QUklPUklUWV9TQ0hFRFVMSU5HLAoK ICAgIF9TQ19USU1FUlMsCgogICAgX1NDX0FTWU5DSFJPTk9VU19JTywKCiAgICBfU0NfUFJJT1JJ VElaRURfSU8sCgogICAgX1NDX1NZTkNIUk9OSVpFRF9JTywKCiAgICBfU0NfRlNZTkMsCgogICAg X1NDX01BUFBFRF9GSUxFUywKCiAgICBfU0NfTUVNTE9DSywKCiAgICBfU0NfTUVNTE9DS19SQU5H RSwKCiAgICBfU0NfTUVNT1JZX1BST1RFQ1RJT04sCgogICAgX1NDX01FU1NBR0VfUEFTU0lORywK CiAgICBfU0NfU0VNQVBIT1JFUywKCiAgICBfU0NfU0hBUkVEX01FTU9SWV9PQkpFQ1RTLAoKICAg IF9TQ19BSU9fTElTVElPX01BWCwKCiAgICBfU0NfQUlPX01BWCwKCiAgICBfU0NfQUlPX1BSSU9f REVMVEFfTUFYLAoKICAgIF9TQ19ERUxBWVRJTUVSX01BWCwKCiAgICBfU0NfTVFfT1BFTl9NQVgs CgogICAgX1NDX01RX1BSSU9fTUFYLAoKICAgIF9TQ19WRVJTSU9OLAoKICAgIF9TQ19QQUdFU0la RSwKCgogICAgX1NDX1JUU0lHX01BWCwKCiAgICBfU0NfU0VNX05TRU1TX01BWCwKCiAgICBfU0Nf U0VNX1ZBTFVFX01BWCwKCiAgICBfU0NfU0lHUVVFVUVfTUFYLAoKICAgIF9TQ19USU1FUl9NQVgs CgoKCgogICAgX1NDX0JDX0JBU0VfTUFYLAoKICAgIF9TQ19CQ19ESU1fTUFYLAoKICAgIF9TQ19C Q19TQ0FMRV9NQVgsCgogICAgX1NDX0JDX1NUUklOR19NQVgsCgogICAgX1NDX0NPTExfV0VJR0hU U19NQVgsCgogICAgX1NDX0VRVUlWX0NMQVNTX01BWCwKCiAgICBfU0NfRVhQUl9ORVNUX01BWCwK CiAgICBfU0NfTElORV9NQVgsCgogICAgX1NDX1JFX0RVUF9NQVgsCgogICAgX1NDX0NIQVJDTEFT U19OQU1FX01BWCwKCgogICAgX1NDXzJfVkVSU0lPTiwKCiAgICBfU0NfMl9DX0JJTkQsCgogICAg X1NDXzJfQ19ERVYsCgogICAgX1NDXzJfRk9SVF9ERVYsCgogICAgX1NDXzJfRk9SVF9SVU4sCgog ICAgX1NDXzJfU1dfREVWLAoKICAgIF9TQ18yX0xPQ0FMRURFRiwKCgogICAgX1NDX1BJSSwKCiAg ICBfU0NfUElJX1hUSSwKCiAgICBfU0NfUElJX1NPQ0tFVCwKCiAgICBfU0NfUElJX0lOVEVSTkVU LAoKICAgIF9TQ19QSUlfT1NJLAoKICAgIF9TQ19QT0xMLAoKICAgIF9TQ19TRUxFQ1QsCgogICAg X1NDX1VJT19NQVhJT1YsCgogICAgX1NDX0lPVl9NQVggPSBfU0NfVUlPX01BWElPViwKCiAgICBf U0NfUElJX0lOVEVSTkVUX1NUUkVBTSwKCiAgICBfU0NfUElJX0lOVEVSTkVUX0RHUkFNLAoKICAg IF9TQ19QSUlfT1NJX0NPVFMsCgogICAgX1NDX1BJSV9PU0lfQ0xUUywKCiAgICBfU0NfUElJX09T SV9NLAoKICAgIF9TQ19UX0lPVl9NQVgsCgoKCiAgICBfU0NfVEhSRUFEUywKCiAgICBfU0NfVEhS RUFEX1NBRkVfRlVOQ1RJT05TLAoKICAgIF9TQ19HRVRHUl9SX1NJWkVfTUFYLAoKICAgIF9TQ19H RVRQV19SX1NJWkVfTUFYLAoKICAgIF9TQ19MT0dJTl9OQU1FX01BWCwKCiAgICBfU0NfVFRZX05B TUVfTUFYLAoKICAgIF9TQ19USFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TLAoKICAgIF9TQ19U SFJFQURfS0VZU19NQVgsCgogICAgX1NDX1RIUkVBRF9TVEFDS19NSU4sCgogICAgX1NDX1RIUkVB RF9USFJFQURTX01BWCwKCiAgICBfU0NfVEhSRUFEX0FUVFJfU1RBQ0tBRERSLAoKICAgIF9TQ19U SFJFQURfQVRUUl9TVEFDS1NJWkUsCgogICAgX1NDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5H LAoKICAgIF9TQ19USFJFQURfUFJJT19JTkhFUklULAoKICAgIF9TQ19USFJFQURfUFJJT19QUk9U RUNULAoKICAgIF9TQ19USFJFQURfUFJPQ0VTU19TSEFSRUQsCgoKICAgIF9TQ19OUFJPQ0VTU09S U19DT05GLAoKICAgIF9TQ19OUFJPQ0VTU09SU19PTkxOLAoKICAgIF9TQ19QSFlTX1BBR0VTLAoK ICAgIF9TQ19BVlBIWVNfUEFHRVMsCgogICAgX1NDX0FURVhJVF9NQVgsCgogICAgX1NDX1BBU1Nf TUFYLAoKCiAgICBfU0NfWE9QRU5fVkVSU0lPTiwKCiAgICBfU0NfWE9QRU5fWENVX1ZFUlNJT04s CgogICAgX1NDX1hPUEVOX1VOSVgsCgogICAgX1NDX1hPUEVOX0NSWVBULAoKICAgIF9TQ19YT1BF Tl9FTkhfSTE4TiwKCiAgICBfU0NfWE9QRU5fU0hNLAoKCiAgICBfU0NfMl9DSEFSX1RFUk0sCgog ICAgX1NDXzJfQ19WRVJTSU9OLAoKICAgIF9TQ18yX1VQRSwKCgogICAgX1NDX1hPUEVOX1hQRzIs CgogICAgX1NDX1hPUEVOX1hQRzMsCgogICAgX1NDX1hPUEVOX1hQRzQsCgoKICAgIF9TQ19DSEFS X0JJVCwKCiAgICBfU0NfQ0hBUl9NQVgsCgogICAgX1NDX0NIQVJfTUlOLAoKICAgIF9TQ19JTlRf TUFYLAoKICAgIF9TQ19JTlRfTUlOLAoKICAgIF9TQ19MT05HX0JJVCwKCiAgICBfU0NfV09SRF9C SVQsCgogICAgX1NDX01CX0xFTl9NQVgsCgogICAgX1NDX05aRVJPLAoKICAgIF9TQ19TU0laRV9N QVgsCgogICAgX1NDX1NDSEFSX01BWCwKCiAgICBfU0NfU0NIQVJfTUlOLAoKICAgIF9TQ19TSFJU X01BWCwKCiAgICBfU0NfU0hSVF9NSU4sCgogICAgX1NDX1VDSEFSX01BWCwKCiAgICBfU0NfVUlO VF9NQVgsCgogICAgX1NDX1VMT05HX01BWCwKCiAgICBfU0NfVVNIUlRfTUFYLAoKCiAgICBfU0Nf TkxfQVJHTUFYLAoKICAgIF9TQ19OTF9MQU5HTUFYLAoKICAgIF9TQ19OTF9NU0dNQVgsCgogICAg X1NDX05MX05NQVgsCgogICAgX1NDX05MX1NFVE1BWCwKCiAgICBfU0NfTkxfVEVYVE1BWCwKCgog ICAgX1NDX1hCUzVfSUxQMzJfT0ZGMzIsCgogICAgX1NDX1hCUzVfSUxQMzJfT0ZGQklHLAoKICAg IF9TQ19YQlM1X0xQNjRfT0ZGNjQsCgogICAgX1NDX1hCUzVfTFBCSUdfT0ZGQklHLAoKCiAgICBf U0NfWE9QRU5fTEVHQUNZLAoKICAgIF9TQ19YT1BFTl9SRUFMVElNRSwKCiAgICBfU0NfWE9QRU5f UkVBTFRJTUVfVEhSRUFEUywKCgogICAgX1NDX0FEVklTT1JZX0lORk8sCgogICAgX1NDX0JBUlJJ RVJTLAoKICAgIF9TQ19CQVNFLAoKICAgIF9TQ19DX0xBTkdfU1VQUE9SVCwKCiAgICBfU0NfQ19M QU5HX1NVUFBPUlRfUiwKCiAgICBfU0NfQ0xPQ0tfU0VMRUNUSU9OLAoKICAgIF9TQ19DUFVUSU1F LAoKICAgIF9TQ19USFJFQURfQ1BVVElNRSwKCiAgICBfU0NfREVWSUNFX0lPLAoKICAgIF9TQ19E RVZJQ0VfU1BFQ0lGSUMsCgogICAgX1NDX0RFVklDRV9TUEVDSUZJQ19SLAoKICAgIF9TQ19GRF9N R01ULAoKICAgIF9TQ19GSUZPLAoKICAgIF9TQ19QSVBFLAoKICAgIF9TQ19GSUxFX0FUVFJJQlVU RVMsCgogICAgX1NDX0ZJTEVfTE9DS0lORywKCiAgICBfU0NfRklMRV9TWVNURU0sCgogICAgX1ND X01PTk9UT05JQ19DTE9DSywKCiAgICBfU0NfTVVMVElfUFJPQ0VTUywKCiAgICBfU0NfU0lOR0xF X1BST0NFU1MsCgogICAgX1NDX05FVFdPUktJTkcsCgogICAgX1NDX1JFQURFUl9XUklURVJfTE9D S1MsCgogICAgX1NDX1NQSU5fTE9DS1MsCgogICAgX1NDX1JFR0VYUCwKCiAgICBfU0NfUkVHRVhf VkVSU0lPTiwKCiAgICBfU0NfU0hFTEwsCgogICAgX1NDX1NJR05BTFMsCgogICAgX1NDX1NQQVdO LAoKICAgIF9TQ19TUE9SQURJQ19TRVJWRVIsCgogICAgX1NDX1RIUkVBRF9TUE9SQURJQ19TRVJW RVIsCgogICAgX1NDX1NZU1RFTV9EQVRBQkFTRSwKCiAgICBfU0NfU1lTVEVNX0RBVEFCQVNFX1Is CgogICAgX1NDX1RJTUVPVVRTLAoKICAgIF9TQ19UWVBFRF9NRU1PUllfT0JKRUNUUywKCiAgICBf U0NfVVNFUl9HUk9VUFMsCgogICAgX1NDX1VTRVJfR1JPVVBTX1IsCgogICAgX1NDXzJfUEJTLAoK ICAgIF9TQ18yX1BCU19BQ0NPVU5USU5HLAoKICAgIF9TQ18yX1BCU19MT0NBVEUsCgogICAgX1ND XzJfUEJTX01FU1NBR0UsCgogICAgX1NDXzJfUEJTX1RSQUNLLAoKICAgIF9TQ19TWU1MT09QX01B WCwKCiAgICBfU0NfU1RSRUFNUywKCiAgICBfU0NfMl9QQlNfQ0hFQ0tQT0lOVCwKCgogICAgX1ND X1Y2X0lMUDMyX09GRjMyLAoKICAgIF9TQ19WNl9JTFAzMl9PRkZCSUcsCgogICAgX1NDX1Y2X0xQ NjRfT0ZGNjQsCgogICAgX1NDX1Y2X0xQQklHX09GRkJJRywKCgogICAgX1NDX0hPU1RfTkFNRV9N QVgsCgogICAgX1NDX1RSQUNFLAoKICAgIF9TQ19UUkFDRV9FVkVOVF9GSUxURVIsCgogICAgX1ND X1RSQUNFX0lOSEVSSVQsCgogICAgX1NDX1RSQUNFX0xPRwoKICB9OwoKCgoKCmVudW0KICB7CiAg ICBfQ1NfUEFUSCwKCgoKCiAgICBfQ1NfTEZTX0NGTEFHUyA9IDEwMDAsCgogICAgX0NTX0xGU19M REZMQUdTLAoKICAgIF9DU19MRlNfTElCUywKCiAgICBfQ1NfTEZTX0xJTlRGTEFHUywKCiAgICBf Q1NfTEZTNjRfQ0ZMQUdTLAoKICAgIF9DU19MRlM2NF9MREZMQUdTLAoKICAgIF9DU19MRlM2NF9M SUJTLAoKICAgIF9DU19MRlM2NF9MSU5URkxBR1MsCgoKCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZG MzJfQ0ZMQUdTID0gMTEwMCwKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MREZMQUdTLAoKICAg IF9DU19YQlM1X0lMUDMyX09GRjMyX0xJQlMsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTElO VEZMQUdTLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRkJJR19DRkxBR1MsCgogICAgX0NTX1hCUzVf SUxQMzJfT0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJQlMsCgog ICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUywKCiAgICBfQ1NfWEJTNV9MUDY0X09G RjY0X0NGTEFHUywKCiAgICBfQ1NfWEJTNV9MUDY0X09GRjY0X0xERkxBR1MsCgogICAgX0NTX1hC UzVfTFA2NF9PRkY2NF9MSUJTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTElOVEZMQUdTLAoK ICAgIF9DU19YQlM1X0xQQklHX09GRkJJR19DRkxBR1MsCgogICAgX0NTX1hCUzVfTFBCSUdfT0ZG QklHX0xERkxBR1MsCgogICAgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xJQlMsCgogICAgX0NTX1hC UzVfTFBCSUdfT0ZGQklHX0xJTlRGTEFHUywKCgoKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkYz Ml9DRkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xERkxBR1MsCgogICAgX0NT X1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xJQlMsCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMy X0xJTlRGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0NGTEFHUywKCiAgICBf Q1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMy X09GRkJJR19MSUJTLAoKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfTElOVEZMQUdTLAoK ICAgIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0NGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfTFA2 NF9PRkY2NF9MREZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0xJQlMsCgogICAg X0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTElOVEZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUEJJ R19PRkZCSUdfQ0ZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdfTERGTEFHUywK CiAgICBfQ1NfUE9TSVhfVjZfTFBCSUdfT0ZGQklHX0xJQlMsCgogICAgX0NTX1BPU0lYX1Y2X0xQ QklHX09GRkJJR19MSU5URkxBR1MsCgoKCiAgICBfQ1NfVjZfV0lEVEhfUkVTVFJJQ1RFRF9FTlZT CgogIH07CiMgNTAxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCmV4dGVybiBsb25nIGlu dCBwYXRoY29uZiAoX19jb25zdCBjaGFyICpfX3BhdGgsIGludCBfX25hbWUpIHRocm93ICgpOwoK CmV4dGVybiBsb25nIGludCBmcGF0aGNvbmYgKGludCBfX2ZkLCBpbnQgX19uYW1lKSB0aHJvdyAo KTsKCgpleHRlcm4gbG9uZyBpbnQgc3lzY29uZiAoaW50IF9fbmFtZSkgdGhyb3cgKCkgX19hdHRy aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gc2l6ZV90IGNvbmZzdHIgKGludCBfX25h bWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19sZW4pIHRocm93ICgpOwoKCgoKZXh0ZXJuIF9fcGlk X3QgZ2V0cGlkICh2b2lkKSB0aHJvdyAoKTsKCgpleHRlcm4gX19waWRfdCBnZXRwcGlkICh2b2lk KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBfX3BpZF90IGdldHBncnAgKHZvaWQpIHRocm93ICgpOwoj IDUzNiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBfX3BpZF90IF9fZ2V0cGdpZCAo X19waWRfdCBfX3BpZCkgdGhyb3cgKCk7CgpleHRlcm4gX19waWRfdCBnZXRwZ2lkIChfX3BpZF90 IF9fcGlkKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBzZXRwZ2lkIChfX3BpZF90IF9fcGlk LCBfX3BpZF90IF9fcGdpZCkgdGhyb3cgKCk7CiMgNTYyICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgi IDMKZXh0ZXJuIGludCBzZXRwZ3JwICh2b2lkKSB0aHJvdyAoKTsKIyA1ODAgIi91c3IvaW5jbHVk ZS91bmlzdGQuaCIgMwpleHRlcm4gX19waWRfdCBzZXRzaWQgKHZvaWQpIHRocm93ICgpOwoKCgpl eHRlcm4gX19waWRfdCBnZXRzaWQgKF9fcGlkX3QgX19waWQpIHRocm93ICgpOwoKCgpleHRlcm4g X191aWRfdCBnZXR1aWQgKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiBfX3VpZF90IGdldGV1aWQg KHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiBfX2dpZF90IGdldGdpZCAodm9pZCkgdGhyb3cgKCk7 CgoKZXh0ZXJuIF9fZ2lkX3QgZ2V0ZWdpZCAodm9pZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50 IGdldGdyb3VwcyAoaW50IF9fc2l6ZSwgX19naWRfdCBfX2xpc3RbXSkgdGhyb3cgKCk7CgoKCmV4 dGVybiBpbnQgZ3JvdXBfbWVtYmVyIChfX2dpZF90IF9fZ2lkKSB0aHJvdyAoKTsKCgoKCgoKZXh0 ZXJuIGludCBzZXR1aWQgKF9fdWlkX3QgX191aWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBz ZXRyZXVpZCAoX191aWRfdCBfX3J1aWQsIF9fdWlkX3QgX19ldWlkKSB0aHJvdyAoKTsKCgoKCmV4 dGVybiBpbnQgc2V0ZXVpZCAoX191aWRfdCBfX3VpZCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBp bnQgc2V0Z2lkIChfX2dpZF90IF9fZ2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgc2V0cmVn aWQgKF9fZ2lkX3QgX19yZ2lkLCBfX2dpZF90IF9fZWdpZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4g aW50IHNldGVnaWQgKF9fZ2lkX3QgX19naWQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gX19waWRf dCBmb3JrICh2b2lkKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIF9fcGlkX3QgdmZvcmsgKHZvaWQp IHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICp0dHluYW1lIChpbnQgX19mZCkgdGhyb3cgKCk7 CgoKCmV4dGVybiBpbnQgdHR5bmFtZV9yIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBf X2J1ZmxlbikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgaXNhdHR5IChpbnQgX19mZCkgdGhyb3cg KCk7CgoKCgoKZXh0ZXJuIGludCB0dHlzbG90ICh2b2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBp bnQgbGluayAoX19jb25zdCBjaGFyICpfX2Zyb20sIF9fY29uc3QgY2hhciAqX190bykgdGhyb3cg KCk7CgoKCmV4dGVybiBpbnQgc3ltbGluayAoX19jb25zdCBjaGFyICpfX2Zyb20sIF9fY29uc3Qg Y2hhciAqX190bykgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHJlYWRsaW5rIChfX2NvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19wYXRoLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAg ICAgICAgICAgICBzaXplX3QgX19sZW4pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHVubGluayAo X19jb25zdCBjaGFyICpfX25hbWUpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcm1kaXIgKF9fY29u c3QgY2hhciAqX19wYXRoKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIF9fcGlkX3QgdGNnZXRwZ3JwIChp bnQgX19mZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCB0Y3NldHBncnAgKGludCBfX2ZkLCBfX3Bp ZF90IF9fcGdycF9pZCkgdGhyb3cgKCk7CgoKCmV4dGVybiBjaGFyICpnZXRsb2dpbiAodm9pZCkg dGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGdldGxvZ2luX3IgKGNoYXIgKl9fbmFtZSwgc2l6ZV90 IF9fbmFtZV9sZW4pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzZXRsb2dpbiAoX19jb25zdCBj aGFyICpfX25hbWUpIHRocm93ICgpOwojIDcyNiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiMg MSAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAxIDMKIyAzOCAiL3Vzci9pbmNsdWRlL2dldG9wdC5o IiAzCmV4dGVybiAiQyIgewojIDQ3ICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMKZXh0ZXJuIGNo YXIgKm9wdGFyZzsKIyA2MSAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzCmV4dGVybiBpbnQgb3B0 aW5kOwoKCgoKZXh0ZXJuIGludCBvcHRlcnI7CgoKCmV4dGVybiBpbnQgb3B0b3B0OwojIDE0NSAi L3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzCmV4dGVybiBpbnQgZ2V0b3B0IChpbnQgX19hcmdjLCBj aGFyICpjb25zdCAqX19hcmd2LCBjb25zdCBjaGFyICpfX3Nob3J0b3B0cyk7CiMgMTc0ICIvdXNy L2luY2x1ZGUvZ2V0b3B0LmgiIDMKfQojIDcyNyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMK CgoKCgoKCmV4dGVybiBpbnQgZ2V0aG9zdG5hbWUgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVu KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBzZXRob3N0bmFtZSAoX19jb25zdCBjaGFyICpf X25hbWUsIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgc2V0aG9zdGlkIChs b25nIGludCBfX2lkKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IGdldGRvbWFpbm5hbWUgKGNo YXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBzZXRkb21haW5u YW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKCgoKCgpl eHRlcm4gaW50IHZoYW5ndXAgKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcmV2b2tlIChf X2NvbnN0IGNoYXIgKl9fZmlsZSkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gaW50IHByb2ZpbCAo dW5zaWduZWQgc2hvcnQgaW50ICpfX3NhbXBsZV9idWZmZXIsIHNpemVfdCBfX3NpemUsCiAgICAg ICAgICAgICAgICAgICBzaXplX3QgX19vZmZzZXQsIHVuc2lnbmVkIGludCBfX3NjYWxlKSB0aHJv dyAoKTsKCgoKCgpleHRlcm4gaW50IGFjY3QgKF9fY29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAo KTsKCgoKZXh0ZXJuIGNoYXIgKmdldHVzZXJzaGVsbCAodm9pZCkgdGhyb3cgKCk7CmV4dGVybiB2 b2lkIGVuZHVzZXJzaGVsbCAodm9pZCkgdGhyb3cgKCk7CmV4dGVybiB2b2lkIHNldHVzZXJzaGVs bCAodm9pZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBkYWVtb24gKGludCBfX25vY2hkaXIs IGludCBfX25vY2xvc2UpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IGNocm9vdCAoX19jb25z dCBjaGFyICpfX3BhdGgpIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqZ2V0cGFzcyAoX19jb25z dCBjaGFyICpfX3Byb21wdCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBmc3luYyAoaW50IF9f ZmQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgZ2V0aG9zdGlkICh2b2lkKSB0aHJv dyAoKTsKCgpleHRlcm4gdm9pZCBzeW5jICh2b2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQg Z2V0cGFnZXNpemUgKHZvaWQpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK CgoKCmV4dGVybiBpbnQgdHJ1bmNhdGUgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX29mZl90IF9f bGVuZ3RoKSB0aHJvdyAoKTsKIyA4MzYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4g aW50IHRydW5jYXRlNjQgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX29mZjY0X3QgX19sZW5ndGgp IHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBmdHJ1bmNhdGUgKGludCBfX2ZkLCBfX29mZl90IF9f bGVuZ3RoKSB0aHJvdyAoKTsKIyA4NTEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4g aW50IGZ0cnVuY2F0ZTY0IChpbnQgX19mZCwgX19vZmY2NF90IF9fbGVuZ3RoKSB0aHJvdyAoKTsK CgoKCgpleHRlcm4gaW50IGdldGR0YWJsZXNpemUgKHZvaWQpIHRocm93ICgpOwojIDg2NiAiL3Vz ci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgYnJrICh2b2lkICpfX2FkZHIpIHRocm93 ICgpOwoKCgoKCmV4dGVybiB2b2lkICpzYnJrIChpbnRwdHJfdCBfX2RlbHRhKSB0aHJvdyAoKTsK IyA4ODcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gbG9uZyBpbnQgc3lzY2FsbCAo bG9uZyBpbnQgX19zeXNubywgLi4uKSB0aHJvdyAoKTsKIyA5MDcgIi91c3IvaW5jbHVkZS91bmlz dGQuaCIgMwpleHRlcm4gaW50IGxvY2tmIChpbnQgX19mZCwgaW50IF9fY21kLCBfX29mZl90IF9f bGVuKSB0aHJvdyAoKTsKIyA5MTcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50 IGxvY2tmNjQgKGludCBfX2ZkLCBpbnQgX19jbWQsIF9fb2ZmNjRfdCBfX2xlbikgdGhyb3cgKCk7 CiMgOTM4ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBmZGF0YXN5bmMgKGlu dCBfX2ZpbGRlcykgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gY2hhciAqY3J5cHQgKF9fY29uc3Qg Y2hhciAqX19rZXksIF9fY29uc3QgY2hhciAqX19zYWx0KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHZv aWQgZW5jcnlwdCAoY2hhciAqX19ibG9jaywgaW50IF9fZWRmbGFnKSB0aHJvdyAoKTsKCgoKCgoK ZXh0ZXJuIHZvaWQgc3dhYiAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fZnJvbSwgdm9pZCAq X19yZXN0cmljdCBfX3RvLAogICAgICAgICAgICAgICAgICBzc2l6ZV90IF9fbikgdGhyb3cgKCk7 CgoKCgoKCgpleHRlcm4gY2hhciAqY3Rlcm1pZCAoY2hhciAqX19zKSB0aHJvdyAoKTsKIyA5ODMg Ii91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IHB0aHJlYWRfYXRmb3JrICh2b2lk ICgqX19wcmVwYXJlKSAodm9pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpf X3BhcmVudCkgKHZvaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqX19jaGls ZCkgKHZvaWQpKSB0aHJvdyAoKTsKCgp9CiMgOTMgInR1eHJhY2VyLmgiIDIKIyAxICIvdXNyL2lu Y2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDk0ICJ0dXhyYWNlci5oIiAyCiMgMSAiL3Vzci9pbmNs dWRlL3B3ZC5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3B3ZC5oIiAzCiMgMSAiL3Vzci9pbmNs dWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvcHdkLmgiIDIgMwoKZXh0ZXJu ICJDIiB7CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDMxICIvdXNyL2lu Y2x1ZGUvcHdkLmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp bnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQgIi91c3IvaW5jbHVkZS9wd2Qu aCIgMiAzCiMgNTAgIi91c3IvaW5jbHVkZS9wd2QuaCIgMwpzdHJ1Y3QgcGFzc3dkCnsKICBjaGFy ICpwd19uYW1lOwogIGNoYXIgKnB3X3Bhc3N3ZDsKICBfX3VpZF90IHB3X3VpZDsKICBfX2dpZF90 IHB3X2dpZDsKICBjaGFyICpwd19nZWNvczsKICBjaGFyICpwd19kaXI7CiAgY2hhciAqcHdfc2hl bGw7Cn07CgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv My4xL2luY2x1ZGUvc3RkaW8uaCIgMSAzCiMgNjUgIi91c3IvaW5jbHVkZS9wd2QuaCIgMiAzCgoK CgoKZXh0ZXJuIHZvaWQgc2V0cHdlbnQgKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIGVu ZHB3ZW50ICh2b2lkKSB0aHJvdyAoKTsKCgpleHRlcm4gc3RydWN0IHBhc3N3ZCAqZ2V0cHdlbnQg KHZvaWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIHN0cnVjdCBwYXNzd2QgKmZnZXRwd2VudCAoRklM RSAqX19zdHJlYW0pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcHV0cHdlbnQgKF9fY29uc3Qgc3Ry dWN0IHBhc3N3ZCAqX19yZXN0cmljdCBfX3AsCiAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9f cmVzdHJpY3QgX19mKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHN0cnVjdCBwYXNzd2QgKmdldHB3dWlk IChfX3VpZF90IF9fdWlkKSB0aHJvdyAoKTsKCgpleHRlcm4gc3RydWN0IHBhc3N3ZCAqZ2V0cHdu YW0gKF9fY29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKTsKIyAxMTEgIi91c3IvaW5jbHVkZS9w d2QuaCIgMwpleHRlcm4gaW50IGdldHB3ZW50X3IgKHN0cnVjdCBwYXNzd2QgKl9fcmVzdHJpY3Qg X19yZXN1bHRidWYsCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1 ZmZlciwgc2l6ZV90IF9fYnVmbGVuLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwYXNz d2QgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGdldHB3dWlk X3IgKF9fdWlkX3QgX191aWQsCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBhc3N3ZCAq X19yZXN0cmljdCBfX3Jlc3VsdGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jl c3RyaWN0IF9fYnVmZmVyLCBzaXplX3QgX19idWZsZW4sCiAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHBhc3N3ZCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpIHRocm93ICgpOwoKZXh0ZXJuIGlu dCBnZXRwd25hbV9yIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAogICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBwYXNzd2QgKl9fcmVzdHJpY3QgX19yZXN1bHRidWYsCiAgICAg ICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1ZmZlciwgc2l6ZV90IF9fYnVm bGVuLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwYXNzd2QgKipfX3Jlc3RyaWN0IF9f cmVzdWx0KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IGZnZXRwd2VudF9yIChGSUxFICpfX3Jl c3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFzc3dkICpf X3Jlc3RyaWN0IF9fcmVzdWx0YnVmLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jl c3RyaWN0IF9fYnVmZmVyLCBzaXplX3QgX19idWZsZW4sCiAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBwYXNzd2QgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKIyAxNDIgIi91 c3IvaW5jbHVkZS9wd2QuaCIgMwpleHRlcm4gaW50IGdldHB3IChfX3VpZF90IF9fdWlkLCBjaGFy ICpfX2J1ZmZlcikgdGhyb3cgKCk7CgoKfQojIDk1ICJ0dXhyYWNlci5oIiAyCiMgMSAiL3Vzci9p bmNsdWRlL2RpcmVudC5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2RpcmVudC5oIiAzCiMgMSAi L3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvZGlyZW50Lmgi IDIgMwoKZXh0ZXJuICJDIiB7CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwoj IDMxICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDIgMwojIDYyICIvdXNyL2luY2x1ZGUvZGlyZW50 LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9kaXJlbnQuaCIgMSAzCiMgMjMgIi91c3IvaW5j bHVkZS9iaXRzL2RpcmVudC5oIiAzCnN0cnVjdCBkaXJlbnQKICB7CgogICAgX19pbm9fdCBkX2lu bzsKICAgIF9fb2ZmX3QgZF9vZmY7CgoKCgogICAgdW5zaWduZWQgc2hvcnQgaW50IGRfcmVjbGVu OwogICAgdW5zaWduZWQgY2hhciBkX3R5cGU7CiAgICBjaGFyIGRfbmFtZVsyNTZdOwogIH07CgoK c3RydWN0IGRpcmVudDY0CiAgewogICAgX19pbm82NF90IGRfaW5vOwogICAgX19vZmY2NF90IGRf b2ZmOwogICAgdW5zaWduZWQgc2hvcnQgaW50IGRfcmVjbGVuOwogICAgdW5zaWduZWQgY2hhciBk X3R5cGU7CiAgICBjaGFyIGRfbmFtZVsyNTZdOwogIH07CiMgNjMgIi91c3IvaW5jbHVkZS9kaXJl bnQuaCIgMiAzCiMgOTggIi91c3IvaW5jbHVkZS9kaXJlbnQuaCIgMwplbnVtCiAgewogICAgRFRf VU5LTk9XTiA9IDAsCgogICAgRFRfRklGTyA9IDEsCgogICAgRFRfQ0hSID0gMiwKCiAgICBEVF9E SVIgPSA0LAoKICAgIERUX0JMSyA9IDYsCgogICAgRFRfUkVHID0gOCwKCiAgICBEVF9MTksgPSAx MCwKCiAgICBEVF9TT0NLID0gMTIsCgogICAgRFRfV0hUID0gMTQKCiAgfTsKIyAxMjggIi91c3Iv aW5jbHVkZS9kaXJlbnQuaCIgMwp0eXBlZGVmIHN0cnVjdCBfX2RpcnN0cmVhbSBESVI7CgoKCmV4 dGVybiBESVIgKm9wZW5kaXIgKF9fY29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKTsKCgoKZXh0 ZXJuIGludCBjbG9zZWRpciAoRElSICpfX2RpcnApIHRocm93ICgpOwojIDE0NiAiL3Vzci9pbmNs dWRlL2RpcmVudC5oIiAzCmV4dGVybiBzdHJ1Y3QgZGlyZW50ICpyZWFkZGlyIChESVIgKl9fZGly cCkgdGhyb3cgKCk7CiMgMTU2ICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDMKZXh0ZXJuIHN0cnVj dCBkaXJlbnQ2NCAqcmVhZGRpcjY0IChESVIgKl9fZGlycCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVy biBpbnQgcmVhZGRpcl9yIChESVIgKl9fcmVzdHJpY3QgX19kaXJwLAogICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGRpcmVudCAqX19yZXN0cmljdCBfX2VudHJ5LAogICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGRpcmVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpIHRocm93ICgpOwojIDE3 OSAiL3Vzci9pbmNsdWRlL2RpcmVudC5oIiAzCmV4dGVybiBpbnQgcmVhZGRpcjY0X3IgKERJUiAq X19yZXN0cmljdCBfX2RpcnAsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkaXJlbnQ2 NCAqX19yZXN0cmljdCBfX2VudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGly ZW50NjQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIHJl d2luZGRpciAoRElSICpfX2RpcnApIHRocm93ICgpOwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv dHlwZXMuaCIgMSAzCiMgMTkwICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDIgMwoKCmV4dGVybiB2 b2lkIHNlZWtkaXIgKERJUiAqX19kaXJwLCBsb25nIGludCBfX3BvcykgdGhyb3cgKCk7CgoKZXh0 ZXJuIGxvbmcgaW50IHRlbGxkaXIgKERJUiAqX19kaXJwKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4g aW50IGRpcmZkIChESVIgKl9fZGlycCkgdGhyb3cgKCk7CgoKCgoKCgojIDEgIi91c3IvaW5jbHVk ZS9iaXRzL3Bvc2l4MV9saW0uaCIgMSAzCiMgMjEwICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDIg MwojIDIyMCAiL3Vzci9pbmNsdWRlL2RpcmVudC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2Nj LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjIxICIv dXNyL2luY2x1ZGUvZGlyZW50LmgiIDIgMwoKCgoKCgpleHRlcm4gaW50IHNjYW5kaXIgKF9fY29u c3QgY2hhciAqX19yZXN0cmljdCBfX2RpciwKICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGly ZW50ICoqKl9fcmVzdHJpY3QgX19uYW1lbGlzdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKCpf X3NlbGVjdG9yKSAoX19jb25zdCBzdHJ1Y3QgZGlyZW50ICopLAogICAgICAgICAgICAgICAgICAg IGludCAoKl9fY21wKSAoX19jb25zdCB2b2lkICosIF9fY29uc3Qgdm9pZCAqKSkgdGhyb3cgKCk7 CiMgMjQ3ICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDMKZXh0ZXJuIGludCBzY2FuZGlyNjQgKF9f Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RpciwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBkaXJlbnQ2NCAqKipfX3Jlc3RyaWN0IF9fbmFtZWxpc3QsCiAgICAgICAgICAgICAgICAgICAg ICBpbnQgKCpfX3NlbGVjdG9yKSAoX19jb25zdCBzdHJ1Y3QgZGlyZW50NjQgKiksCiAgICAgICAg ICAgICAgICAgICAgICBpbnQgKCpfX2NtcCkgKF9fY29uc3Qgdm9pZCAqLCBfX2NvbnN0IHZvaWQg KikpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBhbHBoYXNvcnQgKF9fY29uc3Qgdm9pZCAqX19l MSwgX19jb25zdCB2b2lkICpfX2UyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1 cmVfXykpOwojIDI2OSAiL3Vzci9pbmNsdWRlL2RpcmVudC5oIiAzCmV4dGVybiBpbnQgYWxwaGFz b3J0NjQgKF9fY29uc3Qgdm9pZCAqX19lMSwgX19jb25zdCB2b2lkICpfX2UyKQogICAgIHRocm93 ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBpbnQgdmVyc2lvbnNv cnQgKF9fY29uc3Qgdm9pZCAqX19lMSwgX19jb25zdCB2b2lkICpfX2UyKQogICAgIHRocm93ICgp IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwojIDI5MCAiL3Vzci9pbmNsdWRlL2RpcmVudC5o IiAzCmV4dGVybiBpbnQgdmVyc2lvbnNvcnQ2NCAoX19jb25zdCB2b2lkICpfX2UxLCBfX2NvbnN0 IHZvaWQgKl9fZTIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CiMg MzAwICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDMKZXh0ZXJuIF9fc3NpemVfdCBnZXRkaXJlbnRy aWVzIChpbnQgX19mZCwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplX3QgX19uYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgX19vZmZfdCAqX19yZXN0cmljdCBfX2Jhc2VwKSB0aHJvdyAoKTsKIyAzMTYgIi91c3Iv aW5jbHVkZS9kaXJlbnQuaCIgMwpleHRlcm4gX19zc2l6ZV90IGdldGRpcmVudHJpZXM2NCAoaW50 IF9fZmQsIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaXplX3QgX19uYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBfX29mZjY0X3QgKl9fcmVzdHJpY3QgX19iYXNlcCkgdGhyb3cgKCk7CgoKCgp9CiMgOTYgInR1 eHJhY2VyLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMSAzCiMgMjIgIi91c3Iv aW5jbHVkZS9zeXMvdGltZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwoj IDIzICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRz L3R5cGVzLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzCgojIDEgIi91 c3IvaW5jbHVkZS90aW1lLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAz CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9z eXMvdGltZS5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMSAzCiMgMzEg Ii91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAyIDMKCgoKCgoKCmV4dGVybiAiQyIgewojIDU2ICIv dXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwpzdHJ1Y3QgdGltZXpvbmUKICB7CiAgICBpbnQgdHpf bWludXRlc3dlc3Q7CiAgICBpbnQgdHpfZHN0dGltZTsKICB9OwoKdHlwZWRlZiBzdHJ1Y3QgdGlt ZXpvbmUgKl9fcmVzdHJpY3QgX190aW1lem9uZV9wdHJfdDsKIyA3MiAiL3Vzci9pbmNsdWRlL3N5 cy90aW1lLmgiIDMKZXh0ZXJuIGludCBnZXR0aW1lb2ZkYXkgKHN0cnVjdCB0aW1ldmFsICpfX3Jl c3RyaWN0IF9fdHYsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX3RpbWV6b25lX3B0cl90IF9f dHopIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzZXR0aW1lb2ZkYXkgKF9fY29uc3Qgc3RydWN0 IHRpbWV2YWwgKl9fdHYsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHN0cnVjdCB0 aW1lem9uZSAqX190eikgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBhZGp0aW1lIChfX2NvbnN0 IHN0cnVjdCB0aW1ldmFsICpfX2RlbHRhLAogICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1l dmFsICpfX29sZGRlbHRhKSB0aHJvdyAoKTsKCgoKCmVudW0gX19pdGltZXJfd2hpY2gKICB7Cgog ICAgSVRJTUVSX1JFQUwgPSAwLAoKCiAgICBJVElNRVJfVklSVFVBTCA9IDEsCgoKCiAgICBJVElN RVJfUFJPRiA9IDIKCiAgfTsKCgoKc3RydWN0IGl0aW1lcnZhbAogIHsKCiAgICBzdHJ1Y3QgdGlt ZXZhbCBpdF9pbnRlcnZhbDsKCiAgICBzdHJ1Y3QgdGltZXZhbCBpdF92YWx1ZTsKICB9OwoKCnR5 cGVkZWYgZW51bSBfX2l0aW1lcl93aGljaCBfX2l0aW1lcl93aGljaF90OwoKCgoKCgpleHRlcm4g aW50IGdldGl0aW1lciAoX19pdGltZXJfd2hpY2hfdCBfX3doaWNoLAogICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGl0aW1lcnZhbCAqX192YWx1ZSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50 IHNldGl0aW1lciAoX19pdGltZXJfd2hpY2hfdCBfX3doaWNoLAogICAgICAgICAgICAgICAgICAg ICAgX19jb25zdCBzdHJ1Y3QgaXRpbWVydmFsICpfX3Jlc3RyaWN0IF9fbmV3LAogICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGl0aW1lcnZhbCAqX19yZXN0cmljdCBfX29sZCkgdGhyb3cgKCk7 CgoKCmV4dGVybiBpbnQgdXRpbWVzIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19jb25zdCBzdHJ1 Y3QgdGltZXZhbCBfX3R2cFsyXSkKICAgICB0aHJvdyAoKTsKIyAxNjkgIi91c3IvaW5jbHVkZS9z eXMvdGltZS5oIiAzCn0KIyA5NyAidHV4cmFjZXIuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9zeXMv dHlwZXMuaCIgMSAzCiMgOTggInR1eHJhY2VyLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvZGlyZW50 LmgiIDEgMwojIDk5ICJ0dXhyYWNlci5oIiAyCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL0dM L2dsLmgiIDEgMwojIDgwICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2wuaCIgMwpleHRlcm4gIkMi IHsKIyA5OCAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBp bnQgR0xlbnVtOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgR0xib29sZWFuOwp0eXBlZGVmIHVuc2ln bmVkIGludCBHTGJpdGZpZWxkOwp0eXBlZGVmIHZvaWQgR0x2b2lkOwp0eXBlZGVmIHNpZ25lZCBj aGFyIEdMYnl0ZTsKdHlwZWRlZiBzaG9ydCBHTHNob3J0Owp0eXBlZGVmIGludCBHTGludDsKdHlw ZWRlZiB1bnNpZ25lZCBjaGFyIEdMdWJ5dGU7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgR0x1c2hv cnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IEdMdWludDsKdHlwZWRlZiBpbnQgR0xzaXplaTsKdHlw ZWRlZiBmbG9hdCBHTGZsb2F0Owp0eXBlZGVmIGZsb2F0IEdMY2xhbXBmOwp0eXBlZGVmIGRvdWJs ZSBHTGRvdWJsZTsKdHlwZWRlZiBkb3VibGUgR0xjbGFtcGQ7CiMgODY5ICIvdXNyL2xvY2FsL2lu Y2x1ZGUvR0wvZ2wuaCIgMwpleHRlcm4gdm9pZCBnbENsZWFySW5kZXgoIEdMZmxvYXQgYyApOwoK ZXh0ZXJuIHZvaWQgZ2xDbGVhckNvbG9yKCBHTGNsYW1wZiByZWQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgR0xjbGFtcGYgZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjbGFt cGYgYmx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNsYW1wZiBhbHBoYSApOwoKZXh0 ZXJuIHZvaWQgZ2xDbGVhciggR0xiaXRmaWVsZCBtYXNrICk7CgpleHRlcm4gdm9pZCBnbEluZGV4 TWFzayggR0x1aW50IG1hc2sgKTsKCmV4dGVybiB2b2lkIGdsQ29sb3JNYXNrKCBHTGJvb2xlYW4g cmVkLCBHTGJvb2xlYW4gZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g Ymx1ZSwgR0xib29sZWFuIGFscGhhICk7CgpleHRlcm4gdm9pZCBnbEFscGhhRnVuYyggR0xlbnVt IGZ1bmMsIEdMY2xhbXBmIHJlZiApOwoKZXh0ZXJuIHZvaWQgZ2xCbGVuZEZ1bmMoIEdMZW51bSBz ZmFjdG9yLCBHTGVudW0gZGZhY3RvciApOwoKZXh0ZXJuIHZvaWQgZ2xMb2dpY09wKCBHTGVudW0g b3Bjb2RlICk7CgpleHRlcm4gdm9pZCBnbEN1bGxGYWNlKCBHTGVudW0gbW9kZSApOwoKZXh0ZXJu IHZvaWQgZ2xGcm9udEZhY2UoIEdMZW51bSBtb2RlICk7CgpleHRlcm4gdm9pZCBnbFBvaW50U2l6 ZSggR0xmbG9hdCBzaXplICk7CgpleHRlcm4gdm9pZCBnbExpbmVXaWR0aCggR0xmbG9hdCB3aWR0 aCApOwoKZXh0ZXJuIHZvaWQgZ2xMaW5lU3RpcHBsZSggR0xpbnQgZmFjdG9yLCBHTHVzaG9ydCBw YXR0ZXJuICk7CgpleHRlcm4gdm9pZCBnbFBvbHlnb25Nb2RlKCBHTGVudW0gZmFjZSwgR0xlbnVt IG1vZGUgKTsKCmV4dGVybiB2b2lkIGdsUG9seWdvbk9mZnNldCggR0xmbG9hdCBmYWN0b3IsIEdM ZmxvYXQgdW5pdHMgKTsKCmV4dGVybiB2b2lkIGdsUG9seWdvblN0aXBwbGUoIGNvbnN0IEdMdWJ5 dGUgKm1hc2sgKTsKCmV4dGVybiB2b2lkIGdsR2V0UG9seWdvblN0aXBwbGUoIEdMdWJ5dGUgKm1h c2sgKTsKCmV4dGVybiB2b2lkIGdsRWRnZUZsYWcoIEdMYm9vbGVhbiBmbGFnICk7CgpleHRlcm4g dm9pZCBnbEVkZ2VGbGFndiggY29uc3QgR0xib29sZWFuICpmbGFnICk7CgpleHRlcm4gdm9pZCBn bFNjaXNzb3IoIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwoKZXh0ZXJuIHZvaWQgZ2xDbGlw UGxhbmUoIEdMZW51bSBwbGFuZSwgY29uc3QgR0xkb3VibGUgKmVxdWF0aW9uICk7CgpleHRlcm4g dm9pZCBnbEdldENsaXBQbGFuZSggR0xlbnVtIHBsYW5lLCBHTGRvdWJsZSAqZXF1YXRpb24gKTsK CmV4dGVybiB2b2lkIGdsRHJhd0J1ZmZlciggR0xlbnVtIG1vZGUgKTsKCmV4dGVybiB2b2lkIGds UmVhZEJ1ZmZlciggR0xlbnVtIG1vZGUgKTsKCmV4dGVybiB2b2lkIGdsRW5hYmxlKCBHTGVudW0g Y2FwICk7CgpleHRlcm4gdm9pZCBnbERpc2FibGUoIEdMZW51bSBjYXAgKTsKCmV4dGVybiBHTGJv b2xlYW4gZ2xJc0VuYWJsZWQoIEdMZW51bSBjYXAgKTsKCgpleHRlcm4gdm9pZCBnbEVuYWJsZUNs aWVudFN0YXRlKCBHTGVudW0gY2FwICk7CgpleHRlcm4gdm9pZCBnbERpc2FibGVDbGllbnRTdGF0 ZSggR0xlbnVtIGNhcCApOwoKCmV4dGVybiB2b2lkIGdsR2V0Qm9vbGVhbnYoIEdMZW51bSBwbmFt ZSwgR0xib29sZWFuICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsR2V0RG91YmxldiggR0xlbnVt IHBuYW1lLCBHTGRvdWJsZSAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbEdldEZsb2F0diggR0xl bnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsR2V0SW50ZWdlcnYo IEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyApOwoKCmV4dGVybiB2b2lkIGdsUHVzaEF0dHJp YiggR0xiaXRmaWVsZCBtYXNrICk7CgpleHRlcm4gdm9pZCBnbFBvcEF0dHJpYiggdm9pZCApOwoK CmV4dGVybiB2b2lkIGdsUHVzaENsaWVudEF0dHJpYiggR0xiaXRmaWVsZCBtYXNrICk7CgpleHRl cm4gdm9pZCBnbFBvcENsaWVudEF0dHJpYiggdm9pZCApOwoKCmV4dGVybiBHTGludCBnbFJlbmRl ck1vZGUoIEdMZW51bSBtb2RlICk7CgpleHRlcm4gR0xlbnVtIGdsR2V0RXJyb3IoIHZvaWQgKTsK CmV4dGVybiBjb25zdCBHTHVieXRlKiBnbEdldFN0cmluZyggR0xlbnVtIG5hbWUgKTsKCmV4dGVy biB2b2lkIGdsRmluaXNoKCB2b2lkICk7CgpleHRlcm4gdm9pZCBnbEZsdXNoKCB2b2lkICk7Cgpl eHRlcm4gdm9pZCBnbEhpbnQoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlICk7CgoKCgoKCgpl eHRlcm4gdm9pZCBnbENsZWFyRGVwdGgoIEdMY2xhbXBkIGRlcHRoICk7CgpleHRlcm4gdm9pZCBn bERlcHRoRnVuYyggR0xlbnVtIGZ1bmMgKTsKCmV4dGVybiB2b2lkIGdsRGVwdGhNYXNrKCBHTGJv b2xlYW4gZmxhZyApOwoKZXh0ZXJuIHZvaWQgZ2xEZXB0aFJhbmdlKCBHTGNsYW1wZCBuZWFyX3Zh bCwgR0xjbGFtcGQgZmFyX3ZhbCApOwoKCgoKCgpleHRlcm4gdm9pZCBnbENsZWFyQWNjdW0oIEdM ZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdMZmxvYXQgYmx1ZSwgR0xmbG9hdCBhbHBoYSApOwoKZXh0ZXJuIHZvaWQgZ2xBY2N1 bSggR0xlbnVtIG9wLCBHTGZsb2F0IHZhbHVlICk7CgoKCgoKCgpleHRlcm4gdm9pZCBnbE1hdHJp eE1vZGUoIEdMZW51bSBtb2RlICk7CgpleHRlcm4gdm9pZCBnbE9ydGhvKCBHTGRvdWJsZSBsZWZ0 LCBHTGRvdWJsZSByaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3Vi bGUgYm90dG9tLCBHTGRvdWJsZSB0b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdMZG91YmxlIG5lYXJfdmFsLCBHTGRvdWJsZSBmYXJfdmFsICk7CgpleHRlcm4gdm9pZCBnbEZy dXN0dW0oIEdMZG91YmxlIGxlZnQsIEdMZG91YmxlIHJpZ2h0LAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdMZG91YmxlIGJvdHRvbSwgR0xkb3VibGUgdG9wLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIG5lYXJfdmFsLCBHTGRvdWJsZSBmYXJf dmFsICk7CgpleHRlcm4gdm9pZCBnbFZpZXdwb3J0KCBHTGludCB4LCBHTGludCB5LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo dCApOwoKZXh0ZXJuIHZvaWQgZ2xQdXNoTWF0cml4KCB2b2lkICk7CgpleHRlcm4gdm9pZCBnbFBv cE1hdHJpeCggdm9pZCApOwoKZXh0ZXJuIHZvaWQgZ2xMb2FkSWRlbnRpdHkoIHZvaWQgKTsKCmV4 dGVybiB2b2lkIGdsTG9hZE1hdHJpeGQoIGNvbnN0IEdMZG91YmxlICptICk7CmV4dGVybiB2b2lk IGdsTG9hZE1hdHJpeGYoIGNvbnN0IEdMZmxvYXQgKm0gKTsKCmV4dGVybiB2b2lkIGdsTXVsdE1h dHJpeGQoIGNvbnN0IEdMZG91YmxlICptICk7CmV4dGVybiB2b2lkIGdsTXVsdE1hdHJpeGYoIGNv bnN0IEdMZmxvYXQgKm0gKTsKCmV4dGVybiB2b2lkIGdsUm90YXRlZCggR0xkb3VibGUgYW5nbGUs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgeCwgR0xkb3VibGUg eSwgR0xkb3VibGUgeiApOwpleHRlcm4gdm9pZCBnbFJvdGF0ZWYoIEdMZmxvYXQgYW5nbGUsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdM ZmxvYXQgeiApOwoKZXh0ZXJuIHZvaWQgZ2xTY2FsZWQoIEdMZG91YmxlIHgsIEdMZG91YmxlIHks IEdMZG91YmxlIHogKTsKZXh0ZXJuIHZvaWQgZ2xTY2FsZWYoIEdMZmxvYXQgeCwgR0xmbG9hdCB5 LCBHTGZsb2F0IHogKTsKCmV4dGVybiB2b2lkIGdsVHJhbnNsYXRlZCggR0xkb3VibGUgeCwgR0xk b3VibGUgeSwgR0xkb3VibGUgeiApOwpleHRlcm4gdm9pZCBnbFRyYW5zbGF0ZWYoIEdMZmxvYXQg eCwgR0xmbG9hdCB5LCBHTGZsb2F0IHogKTsKCgoKCgoKCmV4dGVybiBHTGJvb2xlYW4gZ2xJc0xp c3QoIEdMdWludCBsaXN0ICk7CgpleHRlcm4gdm9pZCBnbERlbGV0ZUxpc3RzKCBHTHVpbnQgbGlz dCwgR0xzaXplaSByYW5nZSApOwoKZXh0ZXJuIEdMdWludCBnbEdlbkxpc3RzKCBHTHNpemVpIHJh bmdlICk7CgpleHRlcm4gdm9pZCBnbE5ld0xpc3QoIEdMdWludCBsaXN0LCBHTGVudW0gbW9kZSAp OwoKZXh0ZXJuIHZvaWQgZ2xFbmRMaXN0KCB2b2lkICk7CgpleHRlcm4gdm9pZCBnbENhbGxMaXN0 KCBHTHVpbnQgbGlzdCApOwoKZXh0ZXJuIHZvaWQgZ2xDYWxsTGlzdHMoIEdMc2l6ZWkgbiwgR0xl bnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZv aWQgKmxpc3RzICk7CgpleHRlcm4gdm9pZCBnbExpc3RCYXNlKCBHTHVpbnQgYmFzZSApOwoKCgoK CgoKZXh0ZXJuIHZvaWQgZ2xCZWdpbiggR0xlbnVtIG1vZGUgKTsKCmV4dGVybiB2b2lkIGdsRW5k KCB2b2lkICk7CgoKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgyZCggR0xkb3VibGUgeCwgR0xkb3VibGUg eSApOwpleHRlcm4gdm9pZCBnbFZlcnRleDJmKCBHTGZsb2F0IHgsIEdMZmxvYXQgeSApOwpleHRl cm4gdm9pZCBnbFZlcnRleDJpKCBHTGludCB4LCBHTGludCB5ICk7CmV4dGVybiB2b2lkIGdsVmVy dGV4MnMoIEdMc2hvcnQgeCwgR0xzaG9ydCB5ICk7CgpleHRlcm4gdm9pZCBnbFZlcnRleDNkKCBH TGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6ICk7CmV4dGVybiB2b2lkIGdsVmVydGV4 M2YoIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHogKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0 ZXgzaSggR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiApOwpleHRlcm4gdm9pZCBnbFZlcnRleDNz KCBHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6ICk7CgpleHRlcm4gdm9pZCBnbFZlcnRl eDRkKCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6LCBHTGRvdWJsZSB3ICk7CmV4 dGVybiB2b2lkIGdsVmVydGV4NGYoIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdM ZmxvYXQgdyApOwpleHRlcm4gdm9pZCBnbFZlcnRleDRpKCBHTGludCB4LCBHTGludCB5LCBHTGlu dCB6LCBHTGludCB3ICk7CmV4dGVybiB2b2lkIGdsVmVydGV4NHMoIEdMc2hvcnQgeCwgR0xzaG9y dCB5LCBHTHNob3J0IHosIEdMc2hvcnQgdyApOwoKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgyZHYoIGNv bnN0IEdMZG91YmxlICp2ICk7CmV4dGVybiB2b2lkIGdsVmVydGV4MmZ2KCBjb25zdCBHTGZsb2F0 ICp2ICk7CmV4dGVybiB2b2lkIGdsVmVydGV4Mml2KCBjb25zdCBHTGludCAqdiApOwpleHRlcm4g dm9pZCBnbFZlcnRleDJzdiggY29uc3QgR0xzaG9ydCAqdiApOwoKZXh0ZXJuIHZvaWQgZ2xWZXJ0 ZXgzZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7CmV4dGVybiB2b2lkIGdsVmVydGV4M2Z2KCBjb25z dCBHTGZsb2F0ICp2ICk7CmV4dGVybiB2b2lkIGdsVmVydGV4M2l2KCBjb25zdCBHTGludCAqdiAp OwpleHRlcm4gdm9pZCBnbFZlcnRleDNzdiggY29uc3QgR0xzaG9ydCAqdiApOwoKZXh0ZXJuIHZv aWQgZ2xWZXJ0ZXg0ZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7CmV4dGVybiB2b2lkIGdsVmVydGV4 NGZ2KCBjb25zdCBHTGZsb2F0ICp2ICk7CmV4dGVybiB2b2lkIGdsVmVydGV4NGl2KCBjb25zdCBH TGludCAqdiApOwpleHRlcm4gdm9pZCBnbFZlcnRleDRzdiggY29uc3QgR0xzaG9ydCAqdiApOwoK CmV4dGVybiB2b2lkIGdsTm9ybWFsM2IoIEdMYnl0ZSBueCwgR0xieXRlIG55LCBHTGJ5dGUgbnog KTsKZXh0ZXJuIHZvaWQgZ2xOb3JtYWwzZCggR0xkb3VibGUgbngsIEdMZG91YmxlIG55LCBHTGRv dWJsZSBueiApOwpleHRlcm4gdm9pZCBnbE5vcm1hbDNmKCBHTGZsb2F0IG54LCBHTGZsb2F0IG55 LCBHTGZsb2F0IG56ICk7CmV4dGVybiB2b2lkIGdsTm9ybWFsM2koIEdMaW50IG54LCBHTGludCBu eSwgR0xpbnQgbnogKTsKZXh0ZXJuIHZvaWQgZ2xOb3JtYWwzcyggR0xzaG9ydCBueCwgR0xzaG9y dCBueSwgR0xzaG9ydCBueiApOwoKZXh0ZXJuIHZvaWQgZ2xOb3JtYWwzYnYoIGNvbnN0IEdMYnl0 ZSAqdiApOwpleHRlcm4gdm9pZCBnbE5vcm1hbDNkdiggY29uc3QgR0xkb3VibGUgKnYgKTsKZXh0 ZXJuIHZvaWQgZ2xOb3JtYWwzZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xO b3JtYWwzaXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiB2b2lkIGdsTm9ybWFsM3N2KCBjb25z dCBHTHNob3J0ICp2ICk7CgoKZXh0ZXJuIHZvaWQgZ2xJbmRleGQoIEdMZG91YmxlIGMgKTsKZXh0 ZXJuIHZvaWQgZ2xJbmRleGYoIEdMZmxvYXQgYyApOwpleHRlcm4gdm9pZCBnbEluZGV4aSggR0xp bnQgYyApOwpleHRlcm4gdm9pZCBnbEluZGV4cyggR0xzaG9ydCBjICk7CmV4dGVybiB2b2lkIGds SW5kZXh1YiggR0x1Ynl0ZSBjICk7CgpleHRlcm4gdm9pZCBnbEluZGV4ZHYoIGNvbnN0IEdMZG91 YmxlICpjICk7CmV4dGVybiB2b2lkIGdsSW5kZXhmdiggY29uc3QgR0xmbG9hdCAqYyApOwpleHRl cm4gdm9pZCBnbEluZGV4aXYoIGNvbnN0IEdMaW50ICpjICk7CmV4dGVybiB2b2lkIGdsSW5kZXhz diggY29uc3QgR0xzaG9ydCAqYyApOwpleHRlcm4gdm9pZCBnbEluZGV4dWJ2KCBjb25zdCBHTHVi eXRlICpjICk7CgpleHRlcm4gdm9pZCBnbENvbG9yM2IoIEdMYnl0ZSByZWQsIEdMYnl0ZSBncmVl biwgR0xieXRlIGJsdWUgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjNkKCBHTGRvdWJsZSByZWQsIEdM ZG91YmxlIGdyZWVuLCBHTGRvdWJsZSBibHVlICk7CmV4dGVybiB2b2lkIGdsQ29sb3IzZiggR0xm bG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQgYmx1ZSApOwpleHRlcm4gdm9pZCBnbENv bG9yM2koIEdMaW50IHJlZCwgR0xpbnQgZ3JlZW4sIEdMaW50IGJsdWUgKTsKZXh0ZXJuIHZvaWQg Z2xDb2xvcjNzKCBHTHNob3J0IHJlZCwgR0xzaG9ydCBncmVlbiwgR0xzaG9ydCBibHVlICk7CmV4 dGVybiB2b2lkIGdsQ29sb3IzdWIoIEdMdWJ5dGUgcmVkLCBHTHVieXRlIGdyZWVuLCBHTHVieXRl IGJsdWUgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjN1aSggR0x1aW50IHJlZCwgR0x1aW50IGdyZWVu LCBHTHVpbnQgYmx1ZSApOwpleHRlcm4gdm9pZCBnbENvbG9yM3VzKCBHTHVzaG9ydCByZWQsIEdM dXNob3J0IGdyZWVuLCBHTHVzaG9ydCBibHVlICk7CgpleHRlcm4gdm9pZCBnbENvbG9yNGIoIEdM Ynl0ZSByZWQsIEdMYnl0ZSBncmVlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHTGJ5dGUgYmx1ZSwgR0xieXRlIGFscGhhICk7CmV4dGVybiB2b2lkIGdsQ29sb3I0ZCggR0xk b3VibGUgcmVkLCBHTGRvdWJsZSBncmVlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHTGRvdWJsZSBibHVlLCBHTGRvdWJsZSBhbHBoYSApOwpleHRlcm4gdm9pZCBnbENvbG9y NGYoIEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdMZmxvYXQgYmx1ZSwgR0xmbG9hdCBhbHBoYSApOwpleHRlcm4gdm9pZCBnbENv bG9yNGkoIEdMaW50IHJlZCwgR0xpbnQgZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0xpbnQgYmx1ZSwgR0xpbnQgYWxwaGEgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjRz KCBHTHNob3J0IHJlZCwgR0xzaG9ydCBncmVlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHTHNob3J0IGJsdWUsIEdMc2hvcnQgYWxwaGEgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xv cjR1YiggR0x1Ynl0ZSByZWQsIEdMdWJ5dGUgZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdMdWJ5dGUgYmx1ZSwgR0x1Ynl0ZSBhbHBoYSApOwpleHRlcm4gdm9pZCBn bENvbG9yNHVpKCBHTHVpbnQgcmVkLCBHTHVpbnQgZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdMdWludCBibHVlLCBHTHVpbnQgYWxwaGEgKTsKZXh0ZXJuIHZvaWQg Z2xDb2xvcjR1cyggR0x1c2hvcnQgcmVkLCBHTHVzaG9ydCBncmVlbiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0x1c2hvcnQgYmx1ZSwgR0x1c2hvcnQgYWxwaGEgKTsKCgpl eHRlcm4gdm9pZCBnbENvbG9yM2J2KCBjb25zdCBHTGJ5dGUgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xD b2xvcjNkdiggY29uc3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjNmdiggY29u c3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbENvbG9yM2l2KCBjb25zdCBHTGludCAqdiAp OwpleHRlcm4gdm9pZCBnbENvbG9yM3N2KCBjb25zdCBHTHNob3J0ICp2ICk7CmV4dGVybiB2b2lk IGdsQ29sb3IzdWJ2KCBjb25zdCBHTHVieXRlICp2ICk7CmV4dGVybiB2b2lkIGdsQ29sb3IzdWl2 KCBjb25zdCBHTHVpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjN1c3YoIGNvbnN0IEdMdXNo b3J0ICp2ICk7CgpleHRlcm4gdm9pZCBnbENvbG9yNGJ2KCBjb25zdCBHTGJ5dGUgKnYgKTsKZXh0 ZXJuIHZvaWQgZ2xDb2xvcjRkdiggY29uc3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xD b2xvcjRmdiggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbENvbG9yNGl2KCBjb25z dCBHTGludCAqdiApOwpleHRlcm4gdm9pZCBnbENvbG9yNHN2KCBjb25zdCBHTHNob3J0ICp2ICk7 CmV4dGVybiB2b2lkIGdsQ29sb3I0dWJ2KCBjb25zdCBHTHVieXRlICp2ICk7CmV4dGVybiB2b2lk IGdsQ29sb3I0dWl2KCBjb25zdCBHTHVpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjR1c3Yo IGNvbnN0IEdMdXNob3J0ICp2ICk7CgoKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDFkKCBHTGRvdWJs ZSBzICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQxZiggR0xmbG9hdCBzICk7CmV4dGVybiB2b2lk IGdsVGV4Q29vcmQxaSggR0xpbnQgcyApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMXMoIEdMc2hv cnQgcyApOwoKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDJkKCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0 ICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQyZiggR0xmbG9hdCBzLCBHTGZsb2F0IHQgKTsKZXh0 ZXJuIHZvaWQgZ2xUZXhDb29yZDJpKCBHTGludCBzLCBHTGludCB0ICk7CmV4dGVybiB2b2lkIGds VGV4Q29vcmQycyggR0xzaG9ydCBzLCBHTHNob3J0IHQgKTsKCmV4dGVybiB2b2lkIGdsVGV4Q29v cmQzZCggR0xkb3VibGUgcywgR0xkb3VibGUgdCwgR0xkb3VibGUgciApOwpleHRlcm4gdm9pZCBn bFRleENvb3JkM2YoIEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIgKTsKZXh0ZXJuIHZv aWQgZ2xUZXhDb29yZDNpKCBHTGludCBzLCBHTGludCB0LCBHTGludCByICk7CmV4dGVybiB2b2lk IGdsVGV4Q29vcmQzcyggR0xzaG9ydCBzLCBHTHNob3J0IHQsIEdMc2hvcnQgciApOwoKZXh0ZXJu IHZvaWQgZ2xUZXhDb29yZDRkKCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJsZSByLCBH TGRvdWJsZSBxICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQ0ZiggR0xmbG9hdCBzLCBHTGZsb2F0 IHQsIEdMZmxvYXQgciwgR0xmbG9hdCBxICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQ0aSggR0xp bnQgcywgR0xpbnQgdCwgR0xpbnQgciwgR0xpbnQgcSApOwpleHRlcm4gdm9pZCBnbFRleENvb3Jk NHMoIEdMc2hvcnQgcywgR0xzaG9ydCB0LCBHTHNob3J0IHIsIEdMc2hvcnQgcSApOwoKZXh0ZXJu IHZvaWQgZ2xUZXhDb29yZDFkdiggY29uc3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xU ZXhDb29yZDFmdiggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMWl2 KCBjb25zdCBHTGludCAqdiApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMXN2KCBjb25zdCBHTHNo b3J0ICp2ICk7CgpleHRlcm4gdm9pZCBnbFRleENvb3JkMmR2KCBjb25zdCBHTGRvdWJsZSAqdiAp OwpleHRlcm4gdm9pZCBnbFRleENvb3JkMmZ2KCBjb25zdCBHTGZsb2F0ICp2ICk7CmV4dGVybiB2 b2lkIGdsVGV4Q29vcmQyaXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiB2b2lkIGdsVGV4Q29v cmQyc3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCmV4dGVybiB2b2lkIGdsVGV4Q29vcmQzZHYoIGNv bnN0IEdMZG91YmxlICp2ICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQzZnYoIGNvbnN0IEdMZmxv YXQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDNpdiggY29uc3QgR0xpbnQgKnYgKTsKZXh0 ZXJuIHZvaWQgZ2xUZXhDb29yZDNzdiggY29uc3QgR0xzaG9ydCAqdiApOwoKZXh0ZXJuIHZvaWQg Z2xUZXhDb29yZDRkdiggY29uc3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29y ZDRmdiggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkNGl2KCBjb25z dCBHTGludCAqdiApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkNHN2KCBjb25zdCBHTHNob3J0ICp2 ICk7CgoKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MyZCggR0xkb3VibGUgeCwgR0xkb3VibGUgeSAp OwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczJmKCBHTGZsb2F0IHgsIEdMZmxvYXQgeSApOwpleHRl cm4gdm9pZCBnbFJhc3RlclBvczJpKCBHTGludCB4LCBHTGludCB5ICk7CmV4dGVybiB2b2lkIGds UmFzdGVyUG9zMnMoIEdMc2hvcnQgeCwgR0xzaG9ydCB5ICk7CgpleHRlcm4gdm9pZCBnbFJhc3Rl clBvczNkKCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6ICk7CmV4dGVybiB2b2lk IGdsUmFzdGVyUG9zM2YoIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHogKTsKZXh0ZXJu IHZvaWQgZ2xSYXN0ZXJQb3MzaSggR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiApOwpleHRlcm4g dm9pZCBnbFJhc3RlclBvczNzKCBHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6ICk7Cgpl eHRlcm4gdm9pZCBnbFJhc3RlclBvczRkKCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJs ZSB6LCBHTGRvdWJsZSB3ICk7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zNGYoIEdMZmxvYXQgeCwg R0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyApOwpleHRlcm4gdm9pZCBnbFJhc3RlclBv czRpKCBHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3ICk7CmV4dGVybiB2b2lkIGds UmFzdGVyUG9zNHMoIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHosIEdMc2hvcnQgdyAp OwoKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MyZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7CmV4dGVy biB2b2lkIGdsUmFzdGVyUG9zMmZ2KCBjb25zdCBHTGZsb2F0ICp2ICk7CmV4dGVybiB2b2lkIGds UmFzdGVyUG9zMml2KCBjb25zdCBHTGludCAqdiApOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczJz diggY29uc3QgR0xzaG9ydCAqdiApOwoKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MzZHYoIGNvbnN0 IEdMZG91YmxlICp2ICk7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zM2Z2KCBjb25zdCBHTGZsb2F0 ICp2ICk7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zM2l2KCBjb25zdCBHTGludCAqdiApOwpleHRl cm4gdm9pZCBnbFJhc3RlclBvczNzdiggY29uc3QgR0xzaG9ydCAqdiApOwoKZXh0ZXJuIHZvaWQg Z2xSYXN0ZXJQb3M0ZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7CmV4dGVybiB2b2lkIGdsUmFzdGVy UG9zNGZ2KCBjb25zdCBHTGZsb2F0ICp2ICk7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zNGl2KCBj b25zdCBHTGludCAqdiApOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczRzdiggY29uc3QgR0xzaG9y dCAqdiApOwoKCmV4dGVybiB2b2lkIGdsUmVjdGQoIEdMZG91YmxlIHgxLCBHTGRvdWJsZSB5MSwg R0xkb3VibGUgeDIsIEdMZG91YmxlIHkyICk7CmV4dGVybiB2b2lkIGdsUmVjdGYoIEdMZmxvYXQg eDEsIEdMZmxvYXQgeTEsIEdMZmxvYXQgeDIsIEdMZmxvYXQgeTIgKTsKZXh0ZXJuIHZvaWQgZ2xS ZWN0aSggR0xpbnQgeDEsIEdMaW50IHkxLCBHTGludCB4MiwgR0xpbnQgeTIgKTsKZXh0ZXJuIHZv aWQgZ2xSZWN0cyggR0xzaG9ydCB4MSwgR0xzaG9ydCB5MSwgR0xzaG9ydCB4MiwgR0xzaG9ydCB5 MiApOwoKCmV4dGVybiB2b2lkIGdsUmVjdGR2KCBjb25zdCBHTGRvdWJsZSAqdjEsIGNvbnN0IEdM ZG91YmxlICp2MiApOwpleHRlcm4gdm9pZCBnbFJlY3RmdiggY29uc3QgR0xmbG9hdCAqdjEsIGNv bnN0IEdMZmxvYXQgKnYyICk7CmV4dGVybiB2b2lkIGdsUmVjdGl2KCBjb25zdCBHTGludCAqdjEs IGNvbnN0IEdMaW50ICp2MiApOwpleHRlcm4gdm9pZCBnbFJlY3RzdiggY29uc3QgR0xzaG9ydCAq djEsIGNvbnN0IEdMc2hvcnQgKnYyICk7CgoKCgoKCgpleHRlcm4gdm9pZCBnbFZlcnRleFBvaW50 ZXIoIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwdHIgKTsKCmV4dGVybiB2 b2lkIGdsTm9ybWFsUG9pbnRlciggR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnB0ciApOwoKZXh0 ZXJuIHZvaWQgZ2xDb2xvclBvaW50ZXIoIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZv aWQgKnB0ciApOwoKZXh0ZXJuIHZvaWQgZ2xJbmRleFBvaW50ZXIoIEdMZW51bSB0eXBlLCBHTHNp emVpIHN0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH THZvaWQgKnB0ciApOwoKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZFBvaW50ZXIoIEdMaW50IHNpemUs IEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM c2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnB0ciApOwoKZXh0ZXJuIHZvaWQgZ2xFZGdlRmxh Z1BvaW50ZXIoIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnB0ciApOwoKZXh0ZXJuIHZv aWQgZ2xHZXRQb2ludGVydiggR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zICk7CgpleHRlcm4g dm9pZCBnbEFycmF5RWxlbWVudCggR0xpbnQgaSApOwoKZXh0ZXJuIHZvaWQgZ2xEcmF3QXJyYXlz KCBHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQgKTsKCmV4dGVybiB2b2lk IGdsRHJhd0VsZW1lbnRzKCBHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRp Y2VzICk7CgpleHRlcm4gdm9pZCBnbEludGVybGVhdmVkQXJyYXlzKCBHTGVudW0gZm9ybWF0LCBH THNpemVpIHN0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IEdMdm9pZCAqcG9pbnRlciApOwoKCgoKCgpleHRlcm4gdm9pZCBnbFNoYWRlTW9kZWwo IEdMZW51bSBtb2RlICk7CgpleHRlcm4gdm9pZCBnbExpZ2h0ZiggR0xlbnVtIGxpZ2h0LCBHTGVu dW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0gKTsKZXh0ZXJuIHZvaWQgZ2xMaWdodGkoIEdMZW51bSBs aWdodCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSApOwpleHRlcm4gdm9pZCBnbExpZ2h0ZnYo IEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0ZXJuIHZvaWQgZ2xMaWdodGl2KCBHTGVu dW0gbGlnaHQsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRMaWdodGZ2KCBHTGVudW0g bGlnaHQsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiB2b2lkIGdsR2V0TGlnaHRpdiggR0xlbnVtIGxpZ2h0 LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50 ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsTGlnaHRNb2RlbGYoIEdMZW51bSBwbmFtZSwgR0xm bG9hdCBwYXJhbSApOwpleHRlcm4gdm9pZCBnbExpZ2h0TW9kZWxpKCBHTGVudW0gcG5hbWUsIEdM aW50IHBhcmFtICk7CmV4dGVybiB2b2lkIGdsTGlnaHRNb2RlbGZ2KCBHTGVudW0gcG5hbWUsIGNv bnN0IEdMZmxvYXQgKnBhcmFtcyApOwpleHRlcm4gdm9pZCBnbExpZ2h0TW9kZWxpdiggR0xlbnVt IHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbE1hdGVyaWFsZigg R0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSApOwpleHRlcm4gdm9pZCBn bE1hdGVyaWFsaSggR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0gKTsKZXh0 ZXJuIHZvaWQgZ2xNYXRlcmlhbGZ2KCBHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBH TGZsb2F0ICpwYXJhbXMgKTsKZXh0ZXJuIHZvaWQgZ2xNYXRlcmlhbGl2KCBHTGVudW0gZmFjZSwg R0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbEdldE1h dGVyaWFsZnYoIEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyApOwpl eHRlcm4gdm9pZCBnbEdldE1hdGVyaWFsaXYoIEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdM aW50ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsQ29sb3JNYXRlcmlhbCggR0xlbnVtIGZhY2Us IEdMZW51bSBtb2RlICk7CiMgMTMyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsLmgiIDMKZXh0 ZXJuIHZvaWQgZ2xQaXhlbFpvb20oIEdMZmxvYXQgeGZhY3RvciwgR0xmbG9hdCB5ZmFjdG9yICk7 CgpleHRlcm4gdm9pZCBnbFBpeGVsU3RvcmVmKCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0g KTsKZXh0ZXJuIHZvaWQgZ2xQaXhlbFN0b3JlaSggR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSAp OwoKZXh0ZXJuIHZvaWQgZ2xQaXhlbFRyYW5zZmVyZiggR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBh cmFtICk7CmV4dGVybiB2b2lkIGdsUGl4ZWxUcmFuc2ZlcmkoIEdMZW51bSBwbmFtZSwgR0xpbnQg cGFyYW0gKTsKCmV4dGVybiB2b2lkIGdsUGl4ZWxNYXBmdiggR0xlbnVtIG1hcCwgR0xpbnQgbWFw c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq dmFsdWVzICk7CmV4dGVybiB2b2lkIGdsUGl4ZWxNYXB1aXYoIEdMZW51bSBtYXAsIEdMaW50IG1h cHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQg KnZhbHVlcyApOwpleHRlcm4gdm9pZCBnbFBpeGVsTWFwdXN2KCBHTGVudW0gbWFwLCBHTGludCBt YXBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1c2hv cnQgKnZhbHVlcyApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRQaXhlbE1hcGZ2KCBHTGVudW0gbWFwLCBH TGZsb2F0ICp2YWx1ZXMgKTsKZXh0ZXJuIHZvaWQgZ2xHZXRQaXhlbE1hcHVpdiggR0xlbnVtIG1h cCwgR0x1aW50ICp2YWx1ZXMgKTsKZXh0ZXJuIHZvaWQgZ2xHZXRQaXhlbE1hcHVzdiggR0xlbnVt IG1hcCwgR0x1c2hvcnQgKnZhbHVlcyApOwoKZXh0ZXJuIHZvaWQgZ2xCaXRtYXAoIEdMc2l6ZWkg d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM ZmxvYXQgeG9yaWcsIEdMZmxvYXQgeW9yaWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR0xmbG9hdCB4bW92ZSwgR0xmbG9hdCB5bW92ZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBHTHVieXRlICpiaXRtYXAgKTsKCmV4dGVybiB2b2lkIGdsUmVhZFBpeGVs cyggR0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHTHZvaWQgKnBpeGVscyApOwoKZXh0ZXJuIHZvaWQgZ2xEcmF3UGl4 ZWxzKCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxzICk7CgpleHRlcm4gdm9p ZCBnbENvcHlQaXhlbHMoIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSApOwoKCgoKCgoKZXh0ZXJuIHZvaWQg Z2xTdGVuY2lsRnVuYyggR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2sgKTsKCmV4 dGVybiB2b2lkIGdsU3RlbmNpbE1hc2soIEdMdWludCBtYXNrICk7CgpleHRlcm4gdm9pZCBnbFN0 ZW5jaWxPcCggR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzICk7CgpleHRl cm4gdm9pZCBnbENsZWFyU3RlbmNpbCggR0xpbnQgcyApOwoKCgoKCgoKZXh0ZXJuIHZvaWQgZ2xU ZXhHZW5kKCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xkb3VibGUgcGFyYW0gKTsKZXh0 ZXJuIHZvaWQgZ2xUZXhHZW5mKCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBw YXJhbSApOwpleHRlcm4gdm9pZCBnbFRleEdlbmkoIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1l LCBHTGludCBwYXJhbSApOwoKZXh0ZXJuIHZvaWQgZ2xUZXhHZW5kdiggR0xlbnVtIGNvb3JkLCBH TGVudW0gcG5hbWUsIGNvbnN0IEdMZG91YmxlICpwYXJhbXMgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhH ZW5mdiggR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyAp OwpleHRlcm4gdm9pZCBnbFRleEdlbml2KCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29u c3QgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRUZXhHZW5kdiggR0xlbnVtIGNv b3JkLCBHTGVudW0gcG5hbWUsIEdMZG91YmxlICpwYXJhbXMgKTsKZXh0ZXJuIHZvaWQgZ2xHZXRU ZXhHZW5mdiggR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyApOwpl eHRlcm4gdm9pZCBnbEdldFRleEdlbml2KCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xp bnQgKnBhcmFtcyApOwoKCmV4dGVybiB2b2lkIGdsVGV4RW52ZiggR0xlbnVtIHRhcmdldCwgR0xl bnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtICk7CmV4dGVybiB2b2lkIGdsVGV4RW52aSggR0xlbnVt IHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSApOwoKZXh0ZXJuIHZvaWQgZ2xUZXhF bnZmdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMg KTsKZXh0ZXJuIHZvaWQgZ2xUZXhFbnZpdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBj b25zdCBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbEdldFRleEVudmZ2KCBHTGVudW0g dGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyApOwpleHRlcm4gdm9pZCBnbEdl dFRleEVudml2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMgKTsK CgpleHRlcm4gdm9pZCBnbFRleFBhcmFtZXRlcmYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt ZSwgR0xmbG9hdCBwYXJhbSApOwpleHRlcm4gdm9pZCBnbFRleFBhcmFtZXRlcmkoIEdMZW51bSB0 YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0gKTsKCmV4dGVybiB2b2lkIGdsVGV4UGFy YW1ldGVyZnYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiB2 b2lkIGdsVGV4UGFyYW1ldGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyAp OwoKZXh0ZXJuIHZvaWQgZ2xHZXRUZXhQYXJhbWV0ZXJmdiggR0xlbnVtIHRhcmdldCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwgR0xmbG9h dCAqcGFyYW1zKTsKZXh0ZXJuIHZvaWQgZ2xHZXRUZXhQYXJhbWV0ZXJpdiggR0xlbnVtIHRhcmdl dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFt ZSwgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2 KCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0 ZXJuIHZvaWQgZ2xHZXRUZXhMZXZlbFBhcmFtZXRlcml2KCBHTGVudW0gdGFyZ2V0LCBHTGludCBs ZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl bnVtIHBuYW1lLCBHTGludCAqcGFyYW1zICk7CgoKZXh0ZXJuIHZvaWQgZ2xUZXhJbWFnZTFEKCBH TGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR0xpbnQgaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMaW50IGJvcmRlciwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxzICk7CgpleHRlcm4gdm9p ZCBnbFRleEltYWdlMkQoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlciwgR0xlbnVtIGZv cm1hdCwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IEdMdm9pZCAqcGl4ZWxzICk7CgpleHRlcm4gdm9pZCBnbEdldFRleEltYWdlKCBHTGVudW0g dGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0x2b2lkICpwaXhlbHMgKTsKCgoKCgpleHRlcm4gdm9pZCBnbEdlblRleHR1cmVz KCBHTHNpemVpIG4sIEdMdWludCAqdGV4dHVyZXMgKTsKCmV4dGVybiB2b2lkIGdsRGVsZXRlVGV4 dHVyZXMoIEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICp0ZXh0dXJlcyk7CgpleHRlcm4gdm9pZCBn bEJpbmRUZXh0dXJlKCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSApOwoKZXh0ZXJuIHZv aWQgZ2xQcmlvcml0aXplVGV4dHVyZXMoIEdMc2l6ZWkgbiwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnRleHR1cmVzLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2xhbXBmICpwcmlvcml0 aWVzICk7CgpleHRlcm4gR0xib29sZWFuIGdsQXJlVGV4dHVyZXNSZXNpZGVudCggR0xzaXplaSBu LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IEdMdWludCAqdGV4dHVyZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR0xib29sZWFuICpyZXNpZGVuY2VzICk7CgpleHRlcm4gR0xib29sZWFuIGds SXNUZXh0dXJlKCBHTHVpbnQgdGV4dHVyZSApOwoKCmV4dGVybiB2b2lkIGdsVGV4U3ViSW1hZ2Ux RCggR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnBpeGVscyAp OwoKCmV4dGVybiB2b2lkIGdsVGV4U3ViSW1hZ2UyRCggR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2 ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQs IEdMaW50IHlvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMgKTsKCgpleHRlcm4gdm9p ZCBnbENvcHlUZXhJbWFnZTFEKCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsIEdMaW50IHksCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTGlu dCBib3JkZXIgKTsKCgpleHRlcm4gdm9pZCBnbENvcHlUZXhJbWFnZTJEKCBHTGVudW0gdGFyZ2V0 LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM ZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlciApOwoKCmV4dGVybiB2b2lkIGdsQ29weVRl eFN1YkltYWdlMUQoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeCwgR0xpbnQg eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lk dGggKTsKCgpleHRlcm4gdm9pZCBnbENvcHlUZXhTdWJJbWFnZTJEKCBHTGVudW0gdGFyZ2V0LCBH TGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHTGludCB4LCBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQgKTsKIyAxNTA1 ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2wuaCIgMwpleHRlcm4gdm9pZCBnbE1hcDFkKCBHTGVu dW0gdGFyZ2V0LCBHTGRvdWJsZSB1MSwgR0xkb3VibGUgdTIsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHTGludCBzdHJpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH TGludCBvcmRlciwgY29uc3QgR0xkb3VibGUgKnBvaW50cyApOwpleHRlcm4gdm9pZCBnbE1hcDFm KCBHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHUxLCBHTGZsb2F0IHUyLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR0xpbnQgc3RyaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR0xpbnQgb3JkZXIsIGNvbnN0IEdMZmxvYXQgKnBvaW50cyApOwoKZXh0ZXJuIHZvaWQgZ2xN YXAyZCggR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgdTEsIEdM ZG91YmxlIHUyLCBHTGludCB1c3RyaWRlLCBHTGludCB1b3JkZXIsCiAgICAgICAgICAgICAgICAg ICAgIEdMZG91YmxlIHYxLCBHTGRvdWJsZSB2MiwgR0xpbnQgdnN0cmlkZSwgR0xpbnQgdm9yZGVy LAogICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqcG9pbnRzICk7CmV4dGVybiB2 b2lkIGdsTWFwMmYoIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg dTEsIEdMZmxvYXQgdTIsIEdMaW50IHVzdHJpZGUsIEdMaW50IHVvcmRlciwKICAgICAgICAgICAg ICAgICAgICAgR0xmbG9hdCB2MSwgR0xmbG9hdCB2MiwgR0xpbnQgdnN0cmlkZSwgR0xpbnQgdm9y ZGVyLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwb2ludHMgKTsKCmV4dGVy biB2b2lkIGdsR2V0TWFwZHYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBxdWVyeSwgR0xkb3VibGUg KnYgKTsKZXh0ZXJuIHZvaWQgZ2xHZXRNYXBmdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHF1ZXJ5 LCBHTGZsb2F0ICp2ICk7CmV4dGVybiB2b2lkIGdsR2V0TWFwaXYoIEdMZW51bSB0YXJnZXQsIEdM ZW51bSBxdWVyeSwgR0xpbnQgKnYgKTsKCmV4dGVybiB2b2lkIGdsRXZhbENvb3JkMWQoIEdMZG91 YmxlIHUgKTsKZXh0ZXJuIHZvaWQgZ2xFdmFsQ29vcmQxZiggR0xmbG9hdCB1ICk7CgpleHRlcm4g dm9pZCBnbEV2YWxDb29yZDFkdiggY29uc3QgR0xkb3VibGUgKnUgKTsKZXh0ZXJuIHZvaWQgZ2xF dmFsQ29vcmQxZnYoIGNvbnN0IEdMZmxvYXQgKnUgKTsKCmV4dGVybiB2b2lkIGdsRXZhbENvb3Jk MmQoIEdMZG91YmxlIHUsIEdMZG91YmxlIHYgKTsKZXh0ZXJuIHZvaWQgZ2xFdmFsQ29vcmQyZigg R0xmbG9hdCB1LCBHTGZsb2F0IHYgKTsKCmV4dGVybiB2b2lkIGdsRXZhbENvb3JkMmR2KCBjb25z dCBHTGRvdWJsZSAqdSApOwpleHRlcm4gdm9pZCBnbEV2YWxDb29yZDJmdiggY29uc3QgR0xmbG9h dCAqdSApOwoKZXh0ZXJuIHZvaWQgZ2xNYXBHcmlkMWQoIEdMaW50IHVuLCBHTGRvdWJsZSB1MSwg R0xkb3VibGUgdTIgKTsKZXh0ZXJuIHZvaWQgZ2xNYXBHcmlkMWYoIEdMaW50IHVuLCBHTGZsb2F0 IHUxLCBHTGZsb2F0IHUyICk7CgpleHRlcm4gdm9pZCBnbE1hcEdyaWQyZCggR0xpbnQgdW4sIEdM ZG91YmxlIHUxLCBHTGRvdWJsZSB1MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHTGludCB2biwgR0xkb3VibGUgdjEsIEdMZG91YmxlIHYyICk7CmV4dGVybiB2b2lkIGdsTWFw R3JpZDJmKCBHTGludCB1biwgR0xmbG9hdCB1MSwgR0xmbG9hdCB1MiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHTGludCB2biwgR0xmbG9hdCB2MSwgR0xmbG9hdCB2MiApOwoK ZXh0ZXJuIHZvaWQgZ2xFdmFsUG9pbnQxKCBHTGludCBpICk7CgpleHRlcm4gdm9pZCBnbEV2YWxQ b2ludDIoIEdMaW50IGksIEdMaW50IGogKTsKCmV4dGVybiB2b2lkIGdsRXZhbE1lc2gxKCBHTGVu dW0gbW9kZSwgR0xpbnQgaTEsIEdMaW50IGkyICk7CgpleHRlcm4gdm9pZCBnbEV2YWxNZXNoMigg R0xlbnVtIG1vZGUsIEdMaW50IGkxLCBHTGludCBpMiwgR0xpbnQgajEsIEdMaW50IGoyICk7CgoK CgoKCgpleHRlcm4gdm9pZCBnbEZvZ2YoIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSApOwoK ZXh0ZXJuIHZvaWQgZ2xGb2dpKCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtICk7CgpleHRlcm4g dm9pZCBnbEZvZ2Z2KCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyApOwoKZXh0 ZXJuIHZvaWQgZ2xGb2dpdiggR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zICk7CgoK CgoKCgpleHRlcm4gdm9pZCBnbEZlZWRiYWNrQnVmZmVyKCBHTHNpemVpIHNpemUsIEdMZW51bSB0 eXBlLCBHTGZsb2F0ICpidWZmZXIgKTsKCmV4dGVybiB2b2lkIGdsUGFzc1Rocm91Z2goIEdMZmxv YXQgdG9rZW4gKTsKCmV4dGVybiB2b2lkIGdsU2VsZWN0QnVmZmVyKCBHTHNpemVpIHNpemUsIEdM dWludCAqYnVmZmVyICk7CgpleHRlcm4gdm9pZCBnbEluaXROYW1lcyggdm9pZCApOwoKZXh0ZXJu IHZvaWQgZ2xMb2FkTmFtZSggR0x1aW50IG5hbWUgKTsKCmV4dGVybiB2b2lkIGdsUHVzaE5hbWUo IEdMdWludCBuYW1lICk7CgpleHRlcm4gdm9pZCBnbFBvcE5hbWUoIHZvaWQgKTsKCgoKCmV4dGVy biB2b2lkIGdsRHJhd1JhbmdlRWxlbWVudHMoIEdMZW51bSBtb2RlLCBHTHVpbnQgc3RhcnQsCiAg ICAgICAgR0x1aW50IGVuZCwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9p ZCAqaW5kaWNlcyApOwoKZXh0ZXJuIHZvaWQgZ2xUZXhJbWFnZTNEKCBHTGVudW0gdGFyZ2V0LCBH TGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBp bnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHTHNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMgKTsKCmV4dGVy biB2b2lkIGdsVGV4U3ViSW1hZ2UzRCggR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQg eW9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB6 b2Zmc2V0LCBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsK CmV4dGVybiB2b2lkIGdsQ29weVRleFN1YkltYWdlM0QoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxl dmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4 b2Zmc2V0LCBHTGludCB5b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHTGludCB6b2Zmc2V0LCBHTGludCB4LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LCBHTHNpemVpIHdpZHRoLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCApOwoKCgoK ZXh0ZXJuIHZvaWQgZ2xDb2xvclRhYmxlKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxm b3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgs IEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51 bSB0eXBlLCBjb25zdCBHTHZvaWQgKnRhYmxlICk7CgpleHRlcm4gdm9pZCBnbENvbG9yU3ViVGFi bGUoIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdMc2l6ZWkgc3RhcnQsIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmRhdGEgKTsKCmV4dGVybiB2b2lk IGdsQ29sb3JUYWJsZVBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpw YXJhbXMpOwoKZXh0ZXJuIHZvaWQgZ2xDb2xvclRhYmxlUGFyYW1ldGVyZnYoR0xlbnVtIHRhcmdl dCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKCmV4dGVybiB2b2lkIGdsQ29weUNvbG9yU3Vi VGFibGUoIEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoICk7 CgpleHRlcm4gdm9pZCBnbENvcHlDb2xvclRhYmxlKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50 ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu dCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoICk7CgpleHRlcm4gdm9pZCBnbEdldENvbG9yVGFi bGUoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLCBHTHZvaWQgKnRhYmxlICk7CgpleHRlcm4gdm9p ZCBnbEdldENvbG9yVGFibGVQYXJhbWV0ZXJmdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1l LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv YXQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRDb2xvclRhYmxlUGFyYW1ldGVyaXYoIEdM ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbEJsZW5k RXF1YXRpb24oIEdMZW51bSBtb2RlICk7CgpleHRlcm4gdm9pZCBnbEJsZW5kQ29sb3IoIEdMY2xh bXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdMY2xhbXBmIGJsdWUsIEdMY2xhbXBmIGFscGhhICk7CgpleHRlcm4gdm9pZCBnbEhpc3Rv Z3JhbSggR0xlbnVtIHRhcmdldCwgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMYm9vbGVhbiBzaW5rICk7Cgpl eHRlcm4gdm9pZCBnbFJlc2V0SGlzdG9ncmFtKCBHTGVudW0gdGFyZ2V0ICk7CgpleHRlcm4gdm9p ZCBnbEdldEhpc3RvZ3JhbSggR0xlbnVtIHRhcmdldCwgR0xib29sZWFuIHJlc2V0LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqdmFsdWVzICk7 CgpleHRlcm4gdm9pZCBnbEdldEhpc3RvZ3JhbVBhcmFtZXRlcmZ2KCBHTGVudW0gdGFyZ2V0LCBH TGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHTGZsb2F0ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsR2V0SGlzdG9ncmFtUGFyYW1l dGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lk IGdsTWlubWF4KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHNpbmsgKTsKCmV4dGVybiB2b2lkIGds UmVzZXRNaW5tYXgoIEdMZW51bSB0YXJnZXQgKTsKCmV4dGVybiB2b2lkIGdsR2V0TWlubWF4KCBH TGVudW0gdGFyZ2V0LCBHTGJvb2xlYW4gcmVzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGVzLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdMdm9pZCAqdmFsdWVzICk7CgpleHRlcm4gdm9pZCBnbEdldE1pbm1h eFBhcmFtZXRlcmZ2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMgKTsKCmV4dGVy biB2b2lkIGdsR2V0TWlubWF4UGFyYW1ldGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpw YXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsQ29udm9sdXRpb25GaWx0ZXIxRCggR0xlbnVtIHRhcmdl dCwKICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBm b3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgIGNvbnN0IEdMdm9pZCAqaW1hZ2UgKTsKCmV4dGVy biB2b2lkIGdsQ29udm9sdXRpb25GaWx0ZXIyRCggR0xlbnVtIHRhcmdldCwKICAgICAgICBHTGVu dW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0g Zm9ybWF0LAogICAgICAgIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmltYWdlICk7CgpleHRl cm4gdm9pZCBnbENvbnZvbHV0aW9uUGFyYW1ldGVyZiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBu YW1lLAogICAgICAgIEdMZmxvYXQgcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbENvbnZvbHV0aW9u UGFyYW1ldGVyZnYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAgICBjb25zdCBH TGZsb2F0ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsQ29udm9sdXRpb25QYXJhbWV0ZXJpKCBH TGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgR0xpbnQgcGFyYW1zICk7CgpleHRl cm4gdm9pZCBnbENvbnZvbHV0aW9uUGFyYW1ldGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBw bmFtZSwKICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbENvcHlD b252b2x1dGlvbkZpbHRlcjFEKCBHTGVudW0gdGFyZ2V0LAogICAgICAgIEdMZW51bSBpbnRlcm5h bGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCApOwoKZXh0ZXJuIHZvaWQg Z2xDb3B5Q29udm9sdXRpb25GaWx0ZXIyRCggR0xlbnVtIHRhcmdldCwKICAgICAgICBHTGVudW0g aW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAg R0xzaXplaSBoZWlnaHQpOwoKZXh0ZXJuIHZvaWQgZ2xHZXRDb252b2x1dGlvbkZpbHRlciggR0xl bnVtIHRhcmdldCwgR0xlbnVtIGZvcm1hdCwKICAgICAgICBHTGVudW0gdHlwZSwgR0x2b2lkICpp bWFnZSApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRDb252b2x1dGlvblBhcmFtZXRlcmZ2KCBHTGVudW0g dGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgR0xmbG9hdCAqcGFyYW1zICk7CgpleHRlcm4g dm9pZCBnbEdldENvbnZvbHV0aW9uUGFyYW1ldGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBw bmFtZSwKICAgICAgICBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbFNlcGFyYWJsZUZp bHRlcjJEKCBHTGVudW0gdGFyZ2V0LAogICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xz aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsCiAgICAgICAgR0xlbnVt IHR5cGUsIGNvbnN0IEdMdm9pZCAqcm93LCBjb25zdCBHTHZvaWQgKmNvbHVtbiApOwoKZXh0ZXJu IHZvaWQgZ2xHZXRTZXBhcmFibGVGaWx0ZXIoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBmb3JtYXQs CiAgICAgICAgR0xlbnVtIHR5cGUsIEdMdm9pZCAqcm93LCBHTHZvaWQgKmNvbHVtbiwgR0x2b2lk ICpzcGFuICk7CiMgMTc2OCAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsLmgiIDMKZXh0ZXJuIHZv aWQgZ2xBY3RpdmVUZXh0dXJlQVJCKEdMZW51bSB0ZXh0dXJlKTsKZXh0ZXJuIHZvaWQgZ2xDbGll bnRBY3RpdmVUZXh0dXJlQVJCKEdMZW51bSB0ZXh0dXJlKTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRl eENvb3JkMWRBUkIoR0xlbnVtIHRhcmdldCwgR0xkb3VibGUgcyk7CmV4dGVybiB2b2lkIGdsTXVs dGlUZXhDb29yZDFkdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJsZSAqdik7CmV4dGVy biB2b2lkIGdsTXVsdGlUZXhDb29yZDFmQVJCKEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgcyk7CmV4 dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDFmdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGZs b2F0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkMWlBUkIoR0xlbnVtIHRhcmdldCwg R0xpbnQgcyk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDFpdkFSQihHTGVudW0gdGFyZ2V0 LCBjb25zdCBHTGludCAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDFzQVJCKEdMZW51 bSB0YXJnZXQsIEdMc2hvcnQgcyk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDFzdkFSQihH TGVudW0gdGFyZ2V0LCBjb25zdCBHTHNob3J0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENv b3JkMmRBUkIoR0xlbnVtIHRhcmdldCwgR0xkb3VibGUgcywgR0xkb3VibGUgdCk7CmV4dGVybiB2 b2lkIGdsTXVsdGlUZXhDb29yZDJkdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJsZSAq dik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDJmQVJCKEdMZW51bSB0YXJnZXQsIEdMZmxv YXQgcywgR0xmbG9hdCB0KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkMmZ2QVJCKEdMZW51 bSB0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnYpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQy aUFSQihHTGVudW0gdGFyZ2V0LCBHTGludCBzLCBHTGludCB0KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0 aVRleENvb3JkMml2QVJCKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMaW50ICp2KTsKZXh0ZXJuIHZv aWQgZ2xNdWx0aVRleENvb3JkMnNBUkIoR0xlbnVtIHRhcmdldCwgR0xzaG9ydCBzLCBHTHNob3J0 IHQpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQyc3ZBUkIoR0xlbnVtIHRhcmdldCwgY29u c3QgR0xzaG9ydCAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDNkQVJCKEdMZW51bSB0 YXJnZXQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQsIEdMZG91YmxlIHIpOwpleHRlcm4gdm9pZCBn bE11bHRpVGV4Q29vcmQzZHZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xkb3VibGUgKnYpOwpl eHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQzZkFSQihHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMs IEdMZmxvYXQgdCwgR0xmbG9hdCByKTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkM2Z2QVJC KEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnYpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4 Q29vcmQzaUFSQihHTGVudW0gdGFyZ2V0LCBHTGludCBzLCBHTGludCB0LCBHTGludCByKTsKZXh0 ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkM2l2QVJCKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMaW50 ICp2KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkM3NBUkIoR0xlbnVtIHRhcmdldCwgR0xz aG9ydCBzLCBHTHNob3J0IHQsIEdMc2hvcnQgcik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29y ZDNzdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTHNob3J0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xN dWx0aVRleENvb3JkNGRBUkIoR0xlbnVtIHRhcmdldCwgR0xkb3VibGUgcywgR0xkb3VibGUgdCwg R0xkb3VibGUgciwgR0xkb3VibGUgcSk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDRkdkFS QihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJsZSAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlU ZXhDb29yZDRmQVJCKEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0 IHIsIEdMZmxvYXQgcSk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDRmdkFSQihHTGVudW0g dGFyZ2V0LCBjb25zdCBHTGZsb2F0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkNGlB UkIoR0xlbnVtIHRhcmdldCwgR0xpbnQgcywgR0xpbnQgdCwgR0xpbnQgciwgR0xpbnQgcSk7CmV4 dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDRpdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGlu dCAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDRzQVJCKEdMZW51bSB0YXJnZXQsIEdM c2hvcnQgcywgR0xzaG9ydCB0LCBHTHNob3J0IHIsIEdMc2hvcnQgcSk7CmV4dGVybiB2b2lkIGds TXVsdGlUZXhDb29yZDRzdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTHNob3J0ICp2KTsKIyAy MjQ2ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2wuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVk ZS9HTC9nbGV4dC5oIiAxIDMKCgoKCmV4dGVybiAiQyIgewojIDE2NzcgIi91c3IvbG9jYWwvaW5j bHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xMT0FEVFJBTlNQT1NFTUFU UklYRkFSQlBST0MpIChjb25zdCBHTGZsb2F0ICptKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTExP QURUUkFOU1BPU0VNQVRSSVhEQVJCUFJPQykgKGNvbnN0IEdMZG91YmxlICptKTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTE1VTFRUUkFOU1BPU0VNQVRSSVhGQVJCUFJPQykgKGNvbnN0IEdMZmxvYXQg Km0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVFRSQU5TUE9TRU1BVFJJWERBUkJQUk9DKSAo Y29uc3QgR0xkb3VibGUgKm0pOwojIDE2ODkgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5o IiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xTQU1QTEVDT1ZFUkFHRUFSQlBST0MpIChHTGNsYW1w ZiB2YWx1ZSwgR0xib29sZWFuIGludmVydCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTQU1QTEVQ QVNTQVJCUFJPQykgKEdMZW51bSBwYXNzKTsKIyAxNzEyICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wv Z2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09NUFJFU1NFRFRFWElNQUdFM0RBUkJQ Uk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwg R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRl ciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqZGF0YSk7CnR5cGVkZWYgdm9pZCAo ICogUEZOR0xDT01QUkVTU0VEVEVYSU1BR0UyREFSQlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGlu dCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl aWdodCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRh KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTVBSRVNTRURURVhJTUFHRTFEQVJCUFJPQykgKEdM ZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkg d2lkdGgsIEdMaW50IGJvcmRlciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqZGF0 YSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT01QUkVTU0VEVEVYU1VCSU1BR0UzREFSQlBST0Mp IChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNl dCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkg ZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQgKmRh dGEpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09NUFJFU1NFRFRFWFNVQklNQUdFMkRBUkJQUk9D KSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZz ZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVp IGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENP TVBSRVNTRURURVhTVUJJTUFHRTFEQVJCUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVs LCBHTGludCB4b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGlt YWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENP TVBSRVNTRURURVhJTUFHRUFSQlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgdm9p ZCAqaW1nKTsKIyAxNzMwICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMQkxFTkRDT0xPUkVYVFBST0MpIChHTGNsYW1wZiByZWQsIEdMY2xhbXBm IGdyZWVuLCBHTGNsYW1wZiBibHVlLCBHTGNsYW1wZiBhbHBoYSk7CgoKCgoKCgp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMUE9MWUdPTk9GRlNFVEVYVFBST0MpIChHTGZsb2F0IGZhY3RvciwgR0xmbG9h dCBiaWFzKTsKIyAxNzUxICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMVEVYSU1BR0UzREVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBs ZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo dCwgR0xzaXplaSBkZXB0aCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlw ZSwgY29uc3QgR0x2b2lkICpwaXhlbHMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYU1VCSU1B R0UzREVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwg R0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln aHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZv aWQgKnBpeGVscyk7CiMgMTc2MSAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlw ZWRlZiB2b2lkICggKiBQRk5HTEdFVFRFWEZJTFRFUkZVTkNTR0lTUFJPQykgKEdMZW51bSB0YXJn ZXQsIEdMZW51bSBmaWx0ZXIsIEdMZmxvYXQgKndlaWdodHMpOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMVEVYRklMVEVSRlVOQ1NHSVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGZpbHRlciwg R0xzaXplaSBuLCBjb25zdCBHTGZsb2F0ICp3ZWlnaHRzKTsKIyAxNzcxICIvdXNyL2xvY2FsL2lu Y2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYU1VCSU1BR0UxREVY VFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xzaXpl aSB3aWR0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4ZWxz KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWFNVQklNQUdFMkRFWFRQUk9DKSAoR0xlbnVtIHRh cmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkg d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3Qg R0x2b2lkICpwaXhlbHMpOwojIDE3ODQgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAz CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT1BZVEVYSU1BR0UxREVYVFBST0MpIChHTGVudW0gdGFy Z2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGludCB4LCBHTGludCB5 LCBHTHNpemVpIHdpZHRoLCBHTGludCBib3JkZXIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09Q WVRFWElNQUdFMkRFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBp bnRlcm5hbGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo ZWlnaHQsIEdMaW50IGJvcmRlcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT1BZVEVYU1VCSU1B R0UxREVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwg R0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xD T1BZVEVYU1VCSU1BR0UyREVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xp bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0 aCwgR0xzaXplaSBoZWlnaHQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09QWVRFWFNVQklNQUdF M0RFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdM aW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lk dGgsIEdMc2l6ZWkgaGVpZ2h0KTsKIyAxODA1ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQu aCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUSElTVE9HUkFNRVhUUFJPQykgKEdMZW51bSB0 YXJnZXQsIEdMYm9vbGVhbiByZXNldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9p ZCAqdmFsdWVzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVEhJU1RPR1JBTVBBUkFNRVRFUkZW RVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVEhJU1RPR1JBTVBBUkFNRVRFUklWRVhUUFJPQykgKEdM ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAo ICogUEZOR0xHRVRNSU5NQVhFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xib29sZWFuIHJlc2V0 LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICp2YWx1ZXMpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMR0VUTUlOTUFYUEFSQU1FVEVSRlZFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwg R0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VU TUlOTUFYUEFSQU1FVEVSSVZFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBH TGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEhJU1RPR1JBTUVYVFBST0MpIChH TGVudW0gdGFyZ2V0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMYm9v bGVhbiBzaW5rKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1JTk1BWEVYVFBST0MpIChHTGVudW0g dGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMYm9vbGVhbiBzaW5rKTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTFJFU0VUSElTVE9HUkFNRVhUUFJPQykgKEdMZW51bSB0YXJnZXQpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMUkVTRVRNSU5NQVhFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCk7CiMg MTgzNCAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQ Rk5HTENPTlZPTFVUSU9ORklMVEVSMURFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGlu dGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwg Y29uc3QgR0x2b2lkICppbWFnZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT05WT0xVVElPTkZJ TFRFUjJERVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xz aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBj b25zdCBHTHZvaWQgKmltYWdlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTlZPTFVUSU9OUEFS QU1FVEVSRkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFy YW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTlZPTFVUSU9OUEFSQU1FVEVSRlZFWFRQUk9D KSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09OVk9MVVRJT05QQVJBTUVURVJJRVhUUFJPQykgKEdMZW51 bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQ Rk5HTENPTlZPTFVUSU9OUEFSQU1FVEVSSVZFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVt IHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPUFlD T05WT0xVVElPTkZJTFRFUjFERVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5h bGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCk7CnR5cGVkZWYgdm9pZCAo ICogUEZOR0xDT1BZQ09OVk9MVVRJT05GSUxURVIyREVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBH TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdM c2l6ZWkgaGVpZ2h0KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENPTlZPTFVUSU9ORklMVEVS RVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZv aWQgKmltYWdlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENPTlZPTFVUSU9OUEFSQU1FVEVS RlZFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMp Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUQ09OVk9MVVRJT05QQVJBTUVURVJJVkVYVFBST0Mp IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMR0VUU0VQQVJBQkxFRklMVEVSRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdM ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKnJvdywgR0x2b2lkICpjb2x1bW4sIEdM dm9pZCAqc3Bhbik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRVBBUkFCTEVGSUxURVIyREVYVFBS T0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgs IEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lk ICpyb3csIGNvbnN0IEdMdm9pZCAqY29sdW1uKTsKIyAxODY0ICIvdXNyL2xvY2FsL2luY2x1ZGUv R0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1JUQUJMRVNHSVBST0MpIChH TGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51 bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnRhYmxlKTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTENPTE9SVEFCTEVQQVJBTUVURVJGVlNHSVBST0MpIChHTGVudW0gdGFyZ2V0LCBH TGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZO R0xDT0xPUlRBQkxFUEFSQU1FVEVSSVZTR0lQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBu YW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPUFlDT0xP UlRBQkxFU0dJUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xp bnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRD T0xPUlRBQkxFU0dJUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0 eXBlLCBHTHZvaWQgKnRhYmxlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENPTE9SVEFCTEVQ QVJBTUVURVJGVlNHSVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQg KnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRDT0xPUlRBQkxFUEFSQU1FVEVSSVZT R0lQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKCgoK CgoKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xQSVhFTFRFWEdFTlNHSVhQUk9DKSAoR0xlbnVtIG1v ZGUpOwojIDE4OTEgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9p ZCAoICogUEZOR0xQSVhFTFRFWEdFTlBBUkFNRVRFUklTR0lTUFJPQykgKEdMZW51bSBwbmFtZSwg R0xpbnQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUElYRUxURVhHRU5QQVJBTUVURVJJ VlNHSVNQUk9DKSAoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTFBJWEVMVEVYR0VOUEFSQU1FVEVSRlNHSVNQUk9DKSAoR0xlbnVtIHBuYW1l LCBHTGZsb2F0IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFBJWEVMVEVYR0VOUEFSQU1F VEVSRlZTR0lTUFJPQykgKEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKdHlw ZWRlZiB2b2lkICggKiBQRk5HTEdFVFBJWEVMVEVYR0VOUEFSQU1FVEVSSVZTR0lTUFJPQykgKEdM ZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRQSVhF TFRFWEdFTlBBUkFNRVRFUkZWU0dJU1BST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFt cyk7CiMgMTkwNSAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lk ICggKiBQRk5HTFRFWElNQUdFNERTR0lTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVs LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBH THNpemVpIGRlcHRoLCBHTHNpemVpIHNpemU0ZCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0 LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpwaXhlbHMpOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMVEVYU1VCSU1BR0U0RFNHSVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdM aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMaW50IHdvZmZzZXQs IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTHNpemVpIHNp emU0ZCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsK IyAxOTI3ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIEdMYm9vbGVh biAoICogUEZOR0xBUkVURVhUVVJFU1JFU0lERU5URVhUUFJPQykgKEdMc2l6ZWkgbiwgY29uc3Qg R0x1aW50ICp0ZXh0dXJlcywgR0xib29sZWFuICpyZXNpZGVuY2VzKTsKdHlwZWRlZiB2b2lkICgg KiBQRk5HTEJJTkRURVhUVVJFRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCB0ZXh0dXJl KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTERFTEVURVRFWFRVUkVTRVhUUFJPQykgKEdMc2l6ZWkg biwgY29uc3QgR0x1aW50ICp0ZXh0dXJlcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRU5URVhU VVJFU0VYVFBST0MpIChHTHNpemVpIG4sIEdMdWludCAqdGV4dHVyZXMpOwp0eXBlZGVmIEdMYm9v bGVhbiAoICogUEZOR0xJU1RFWFRVUkVFWFRQUk9DKSAoR0x1aW50IHRleHR1cmUpOwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMUFJJT1JJVElaRVRFWFRVUkVTRVhUUFJPQykgKEdMc2l6ZWkgbiwgY29u c3QgR0x1aW50ICp0ZXh0dXJlcywgY29uc3QgR0xjbGFtcGYgKnByaW9yaXRpZXMpOwojIDE5NDEg Ii91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xE RVRBSUxURVhGVU5DU0dJU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIG4sIGNvbnN0IEdM ZmxvYXQgKnBvaW50cyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRERVRBSUxURVhGVU5DU0dJ U1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGZsb2F0ICpwb2ludHMpOwojIDE5NTEgIi91c3IvbG9j YWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xTSEFSUEVOVEVY RlVOQ1NHSVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBuLCBjb25zdCBHTGZsb2F0ICpw b2ludHMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUU0hBUlBFTlRFWEZVTkNTR0lTUFJPQykg KEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgKnBvaW50cyk7CiMgMTk2OSAiL3Vzci9sb2NhbC9pbmNs dWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNBTVBMRU1BU0tTR0lTUFJP QykgKEdMY2xhbXBmIHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KTsKdHlwZWRlZiB2b2lkICggKiBQ Rk5HTFNBTVBMRVBBVFRFUk5TR0lTUFJPQykgKEdMZW51bSBwYXR0ZXJuKTsKIyAxOTkwICIvdXNy L2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQVJSQVlF TEVNRU5URVhUUFJPQykgKEdMaW50IGkpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1JQT0lO VEVSRVhUUFJPQykgKEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgR0xz aXplaSBjb3VudCwgY29uc3QgR0x2b2lkICpwb2ludGVyKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TERSQVdBUlJBWVNFWFRQUk9DKSAoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNv dW50KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEVER0VGTEFHUE9JTlRFUkVYVFBST0MpIChHTHNp emVpIHN0cmlkZSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xib29sZWFuICpwb2ludGVyKTsKdHlw ZWRlZiB2b2lkICggKiBQRk5HTEdFVFBPSU5URVJWRVhUUFJPQykgKEdMZW51bSBwbmFtZSwgR0x2 b2lkKiAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTElOREVYUE9JTlRFUkVYVFBST0Mp IChHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdm9p ZCAqcG9pbnRlcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xOT1JNQUxQT0lOVEVSRVhUUFJPQykg KEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x2b2lk ICpwb2ludGVyKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWENPT1JEUE9JTlRFUkVYVFBST0Mp IChHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIEdMc2l6ZWkgY291bnQs IGNvbnN0IEdMdm9pZCAqcG9pbnRlcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhQT0lO VEVSRVhUUFJPQykgKEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgR0xz aXplaSBjb3VudCwgY29uc3QgR0x2b2lkICpwb2ludGVyKTsKIyAyMDMwICIvdXNyL2xvY2FsL2lu Y2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQkxFTkRFUVVBVElPTkVY VFBST0MpIChHTGVudW0gbW9kZSk7CiMgMjA2MSAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsZXh0 LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNQUklURVBBUkFNRVRFUkZTR0lYUFJPQykgKEdM ZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTUFJJVEVQ QVJBTUVURVJGVlNHSVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMp Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU1BSSVRFUEFSQU1FVEVSSVNHSVhQUk9DKSAoR0xlbnVt IHBuYW1lLCBHTGludCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTUFJJVEVQQVJBTUVU RVJJVlNHSVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKIyAyMDc5 ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM UE9JTlRQQVJBTUVURVJGRVhUUFJPQykgKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5 cGVkZWYgdm9pZCAoICogUEZOR0xQT0lOVFBBUkFNRVRFUkZWRVhUUFJPQykgKEdMZW51bSBwbmFt ZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFBPSU5UUEFS QU1FVEVSRlNHSVNQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTFBPSU5UUEFSQU1FVEVSRlZTR0lTUFJPQykgKEdMZW51bSBwbmFtZSwgY29u c3QgR0xmbG9hdCAqcGFyYW1zKTsKIyAyMDk1ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQu aCIgMwp0eXBlZGVmIEdMaW50ICggKiBQRk5HTEdFVElOU1RSVU1FTlRTU0dJWFBST0MpICh2b2lk KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTElOU1RSVU1FTlRTQlVGRkVSU0dJWFBST0MpIChHTHNp emVpIHNpemUsIEdMaW50ICpidWZmZXIpOwp0eXBlZGVmIEdMaW50ICggKiBQRk5HTFBPTExJTlNU UlVNRU5UU1NHSVhQUk9DKSAoR0xpbnQgKm1hcmtlcl9wKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TFJFQURJTlNUUlVNRU5UU1NHSVhQUk9DKSAoR0xpbnQgbWFya2VyKTsKdHlwZWRlZiB2b2lkICgg KiBQRk5HTFNUQVJUSU5TVFJVTUVOVFNTR0lYUFJPQykgKHZvaWQpOwp0eXBlZGVmIHZvaWQgKCAq IFBGTkdMU1RPUElOU1RSVU1FTlRTU0dJWFBST0MpIChHTGludCBtYXJrZXIpOwojIDIxMTIgIi91 c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xGUkFN RVpPT01TR0lYUFJPQykgKEdMaW50IGZhY3Rvcik7CgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMVEFHU0FNUExFQlVGRkVSU0dJWFBST0MpICh2b2lkKTsKIyAyMTMxICIvdXNyL2xvY2FsL2lu Y2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMREVGT1JNQVRJT05NQVAz RFNHSVhQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xkb3VibGUgdTEsIEdMZG91YmxlIHUyLCBHTGlu dCB1c3RyaWRlLCBHTGludCB1b3JkZXIsIEdMZG91YmxlIHYxLCBHTGRvdWJsZSB2MiwgR0xpbnQg dnN0cmlkZSwgR0xpbnQgdm9yZGVyLCBHTGRvdWJsZSB3MSwgR0xkb3VibGUgdzIsIEdMaW50IHdz dHJpZGUsIEdMaW50IHdvcmRlciwgY29uc3QgR0xkb3VibGUgKnBvaW50cyk7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xERUZPUk1BVElPTk1BUDNGU0dJWFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGZs b2F0IHUxLCBHTGZsb2F0IHUyLCBHTGludCB1c3RyaWRlLCBHTGludCB1b3JkZXIsIEdMZmxvYXQg djEsIEdMZmxvYXQgdjIsIEdMaW50IHZzdHJpZGUsIEdMaW50IHZvcmRlciwgR0xmbG9hdCB3MSwg R0xmbG9hdCB3MiwgR0xpbnQgd3N0cmlkZSwgR0xpbnQgd29yZGVyLCBjb25zdCBHTGZsb2F0ICpw b2ludHMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMREVGT1JNU0dJWFBST0MpIChHTGJpdGZpZWxk IG1hc2spOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTE9BRElERU5USVRZREVGT1JNQVRJT05NQVBT R0lYUFJPQykgKEdMYml0ZmllbGQgbWFzayk7CgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM UkVGRVJFTkNFUExBTkVTR0lYUFJPQykgKGNvbnN0IEdMZG91YmxlICplcXVhdGlvbik7CgoKCgoK Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRkxVU0hSQVNURVJTR0lYUFJPQykgKHZvaWQpOwojIDIx NjMgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZO R0xGT0dGVU5DU0dJU1BST0MpIChHTHNpemVpIG4sIGNvbnN0IEdMZmxvYXQgKnBvaW50cyk7CnR5 cGVkZWYgdm9pZCAoICogUEZOR0xHRVRGT0dGVU5DU0dJU1BST0MpIChjb25zdCBHTGZsb2F0ICpw b2ludHMpOwojIDIxODEgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYg dm9pZCAoICogUEZOR0xJTUFHRVRSQU5TRk9STVBBUkFNRVRFUklIUFBST0MpIChHTGVudW0gdGFy Z2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTElN QUdFVFJBTlNGT1JNUEFSQU1FVEVSRkhQUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt ZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xJTUFHRVRSQU5TRk9STVBB UkFNRVRFUklWSFBQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGlu dCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTElNQUdFVFJBTlNGT1JNUEFSQU1FVEVS RlZIUFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBh cmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRJTUFHRVRSQU5TRk9STVBBUkFNRVRFUklW SFBQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKdHlw ZWRlZiB2b2lkICggKiBQRk5HTEdFVElNQUdFVFJBTlNGT1JNUEFSQU1FVEVSRlZIUFBST0MpIChH TGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CiMgMjIwMyAiL3Vz ci9sb2NhbC9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTE9S U1VCVEFCTEVFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzdGFydCwgR0xzaXplaSBj b3VudCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqZGF0YSk7CnR5 cGVkZWYgdm9pZCAoICogUEZOR0xDT1BZQ09MT1JTVUJUQUJMRUVYVFBST0MpIChHTGVudW0gdGFy Z2V0LCBHTHNpemVpIHN0YXJ0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoKTsKIyAy MjE2ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMSElOVFBHSVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBtb2RlKTsKIyAyMjI3ICIvdXNy L2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1JU QUJMRUVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMc2l6 ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnRhYmxl KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENPTE9SVEFCTEVFWFRQUk9DKSAoR0xlbnVtIHRh cmdldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqZGF0YSk7CnR5cGVkZWYg dm9pZCAoICogUEZOR0xHRVRDT0xPUlRBQkxFUEFSQU1FVEVSSVZFWFRQUk9DKSAoR0xlbnVtIHRh cmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TEdFVENPTE9SVEFCTEVQQVJBTUVURVJGVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0g cG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CiMgMjI0NyAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2ds ZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVExJU1RQQVJBTUVURVJGVlNHSVhQUk9D KSAoR0x1aW50IGxpc3QsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTEdFVExJU1RQQVJBTUVURVJJVlNHSVhQUk9DKSAoR0x1aW50IGxpc3QsIEdM ZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xMSVNUUEFS QU1FVEVSRlNHSVhQUk9DKSAoR0x1aW50IGxpc3QsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJh bSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xMSVNUUEFSQU1FVEVSRlZTR0lYUFJPQykgKEdMdWlu dCBsaXN0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xMSVNUUEFSQU1FVEVSSVNHSVhQUk9DKSAoR0x1aW50IGxpc3QsIEdMZW51bSBw bmFtZSwgR0xpbnQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTElTVFBBUkFNRVRFUklW U0dJWFBST0MpIChHTHVpbnQgbGlzdCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1z KTsKIyAyMjgwICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQg KCAqIFBGTkdMSU5ERVhNQVRFUklBTEVYVFBST0MpIChHTGVudW0gZmFjZSwgR0xlbnVtIG1vZGUp OwoKCgoKCgoKdHlwZWRlZiB2b2lkICggKiBQRk5HTElOREVYRlVOQ0VYVFBST0MpIChHTGVudW0g ZnVuYywgR0xjbGFtcGYgcmVmKTsKIyAyMzAxICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQu aCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTE9DS0FSUkFZU0VYVFBST0MpIChHTGludCBmaXJz dCwgR0xzaXplaSBjb3VudCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xVTkxPQ0tBUlJBWVNFWFRQ Uk9DKSAodm9pZCk7CiMgMjMxMSAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlw ZWRlZiB2b2lkICggKiBQRk5HTENVTExQQVJBTUVURVJEVkVYVFBST0MpIChHTGVudW0gcG5hbWUs IEdMZG91YmxlICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ1VMTFBBUkFNRVRFUkZW RVhUUFJPQykgKEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKIyAyMzQxICIvdXNyL2xv Y2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRlJBR01FTlRD T0xPUk1BVEVSSUFMU0dJWFBST0MpIChHTGVudW0gZmFjZSwgR0xlbnVtIG1vZGUpOwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMRlJBR01FTlRMSUdIVEZTR0lYUFJPQykgKEdMZW51bSBsaWdodCwgR0xl bnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZSQUdNRU5U TElHSFRGVlNHSVhQUk9DKSAoR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxv YXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xGUkFHTUVOVExJR0hUSVNHSVhQUk9D KSAoR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTEZSQUdNRU5UTElHSFRJVlNHSVhQUk9DKSAoR0xlbnVtIGxpZ2h0LCBHTGVudW0g cG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRlJBR01F TlRMSUdIVE1PREVMRlNHSVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKdHlw ZWRlZiB2b2lkICggKiBQRk5HTEZSQUdNRU5UTElHSFRNT0RFTEZWU0dJWFBST0MpIChHTGVudW0g cG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xGUkFH TUVOVExJR0hUTU9ERUxJU0dJWFBST0MpIChHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKdHlw ZWRlZiB2b2lkICggKiBQRk5HTEZSQUdNRU5UTElHSFRNT0RFTElWU0dJWFBST0MpIChHTGVudW0g cG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRlJBR01F TlRNQVRFUklBTEZTR0lYUFJPQykgKEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQg cGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRlJBR01FTlRNQVRFUklBTEZWU0dJWFBST0Mp IChHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMRlJBR01FTlRNQVRFUklBTElTR0lYUFJPQykgKEdMZW51bSBmYWNl LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZSQUdN RU5UTUFURVJJQUxJVlNHSVhQUk9DKSAoR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgY29uc3Qg R0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRGUkFHTUVOVExJR0hURlZT R0lYUFJPQykgKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VURlJBR01FTlRMSUdIVElWU0dJWFBST0MpIChHTGVudW0g bGlnaHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZO R0xHRVRGUkFHTUVOVE1BVEVSSUFMRlZTR0lYUFJPQykgKEdMZW51bSBmYWNlLCBHTGVudW0gcG5h bWUsIEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRGUkFHTUVOVE1B VEVSSUFMSVZTR0lYUFJPQykgKEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJh bXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTElHSFRFTlZJU0dJWFBST0MpIChHTGVudW0gcG5h bWUsIEdMaW50IHBhcmFtKTsKIyAyMzc0ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIg Mwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRFJBV1JBTkdFRUxFTUVOVFNFWFRQUk9DKSAoR0xlbnVt IG1vZGUsIEdMdWludCBzdGFydCwgR0x1aW50IGVuZCwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5 cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcyk7CiMgMjM5MiAiL3Vzci9sb2NhbC9pbmNsdWRlL0dM L2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTEFQUExZVEVYVFVSRUVYVFBST0MpIChH TGVudW0gbW9kZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhUVVJFTElHSFRFWFRQUk9DKSAo R0xlbnVtIHBuYW1lKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWFRVUkVNQVRFUklBTEVYVFBS T0MpIChHTGVudW0gZmFjZSwgR0xlbnVtIG1vZGUpOwojIDI0MTUgIi91c3IvbG9jYWwvaW5jbHVk ZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xBU1lOQ01BUktFUlNHSVhQUk9D KSAoR0x1aW50IG1hcmtlcik7CnR5cGVkZWYgR0xpbnQgKCAqIFBGTkdMRklOSVNIQVNZTkNTR0lY UFJPQykgKEdMdWludCAqbWFya2VycCk7CnR5cGVkZWYgR0xpbnQgKCAqIFBGTkdMUE9MTEFTWU5D U0dJWFBST0MpIChHTHVpbnQgKm1hcmtlcnApOwp0eXBlZGVmIEdMdWludCAoICogUEZOR0xHRU5B U1lOQ01BUktFUlNTR0lYUFJPQykgKEdMc2l6ZWkgcmFuZ2UpOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMREVMRVRFQVNZTkNNQVJLRVJTU0dJWFBST0MpIChHTHVpbnQgbWFya2VyLCBHTHNpemVpIHJh bmdlKTsKdHlwZWRlZiBHTGJvb2xlYW4gKCAqIFBGTkdMSVNBU1lOQ01BUktFUlNHSVhQUk9DKSAo R0x1aW50IG1hcmtlcik7CiMgMjQzOSAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsZXh0LmgiIDMK dHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWFBPSU5URVJWSU5URUxQUk9DKSAoR0xpbnQgc2l6 ZSwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIpOwp0eXBlZGVmIHZvaWQgKCAq IFBGTkdMTk9STUFMUE9JTlRFUlZJTlRFTFBST0MpIChHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lk KiAqcG9pbnRlcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUlBPSU5URVJWSU5URUxQUk9D KSAoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkRQT0lOVEVSVklOVEVMUFJPQykgKEdMaW50IHNpemUs IEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqICpwb2ludGVyKTsKIyAyNDU3ICIvdXNyL2xvY2Fs L2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUElYRUxUUkFOU0ZP Uk1QQVJBTUVURVJJRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQg cGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUElYRUxUUkFOU0ZPUk1QQVJBTUVURVJGRVhU UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xQSVhFTFRSQU5TRk9STVBBUkFNRVRFUklWRVhUUFJPQykgKEdMZW51 bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xQSVhFTFRSQU5TRk9STVBBUkFNRVRFUkZWRVhUUFJPQykgKEdMZW51bSB0YXJn ZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKIyAyNDk2ICIvdXNyL2xv Y2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VDT05EQVJZ Q09MT1IzQkVYVFBST0MpIChHTGJ5dGUgcmVkLCBHTGJ5dGUgZ3JlZW4sIEdMYnl0ZSBibHVlKTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM0JWRVhUUFJPQykgKGNvbnN0IEdM Ynl0ZSAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNERVhUUFJPQykg KEdMZG91YmxlIHJlZCwgR0xkb3VibGUgZ3JlZW4sIEdMZG91YmxlIGJsdWUpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMU0VDT05EQVJZQ09MT1IzRFZFWFRQUk9DKSAoY29uc3QgR0xkb3VibGUgKnYp Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VDT05EQVJZQ09MT1IzRkVYVFBST0MpIChHTGZsb2F0 IHJlZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TFNFQ09OREFSWUNPTE9SM0ZWRVhUUFJPQykgKGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMU0VDT05EQVJZQ09MT1IzSUVYVFBST0MpIChHTGludCByZWQsIEdMaW50IGdy ZWVuLCBHTGludCBibHVlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM0lW RVhUUFJPQykgKGNvbnN0IEdMaW50ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFS WUNPTE9SM1NFWFRQUk9DKSAoR0xzaG9ydCByZWQsIEdMc2hvcnQgZ3JlZW4sIEdMc2hvcnQgYmx1 ZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNTVkVYVFBST0MpIChjb25z dCBHTHNob3J0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM1VCRVhU UFJPQykgKEdMdWJ5dGUgcmVkLCBHTHVieXRlIGdyZWVuLCBHTHVieXRlIGJsdWUpOwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMU0VDT05EQVJZQ09MT1IzVUJWRVhUUFJPQykgKGNvbnN0IEdMdWJ5dGUg KnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VDT05EQVJZQ09MT1IzVUlFWFRQUk9DKSAoR0x1 aW50IHJlZCwgR0x1aW50IGdyZWVuLCBHTHVpbnQgYmx1ZSk7CnR5cGVkZWYgdm9pZCAoICogUEZO R0xTRUNPTkRBUllDT0xPUjNVSVZFWFRQUk9DKSAoY29uc3QgR0x1aW50ICp2KTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM1VTRVhUUFJPQykgKEdMdXNob3J0IHJlZCwgR0x1 c2hvcnQgZ3JlZW4sIEdMdXNob3J0IGJsdWUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VDT05E QVJZQ09MT1IzVVNWRVhUUFJPQykgKGNvbnN0IEdMdXNob3J0ICp2KTsKdHlwZWRlZiB2b2lkICgg KiBQRk5HTFNFQ09OREFSWUNPTE9SUE9JTlRFUkVYVFBST0MpIChHTGludCBzaXplLCBHTGVudW0g dHlwZSwgR0xzaXplaSBzdHJpZGUsIEdMdm9pZCAqcG9pbnRlcik7CgoKCgoKCgp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMVEVYVFVSRU5PUk1BTEVYVFBST0MpIChHTGVudW0gbW9kZSk7CiMgMjUyOSAi L3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1V TFRJRFJBV0FSUkFZU0VYVFBST0MpIChHTGVudW0gbW9kZSwgR0xpbnQgKmZpcnN0LCBHTHNpemVp ICpjb3VudCwgR0xzaXplaSBwcmltY291bnQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElE UkFXRUxFTUVOVFNFWFRQUk9DKSAoR0xlbnVtIG1vZGUsIGNvbnN0IEdMc2l6ZWkgKmNvdW50LCBH TGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiAqaW5kaWNlcywgR0xzaXplaSBwcmltY291bnQpOwoj IDI1NDIgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICog UEZOR0xGT0dDT09SREZFWFRQUk9DKSAoR0xmbG9hdCBjb29yZCk7CnR5cGVkZWYgdm9pZCAoICog UEZOR0xGT0dDT09SREZWRVhUUFJPQykgKGNvbnN0IEdMZmxvYXQgKmNvb3JkKTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTEZPR0NPT1JEREVYVFBST0MpIChHTGRvdWJsZSBjb29yZCk7CnR5cGVkZWYg dm9pZCAoICogUEZOR0xGT0dDT09SRERWRVhUUFJPQykgKGNvbnN0IEdMZG91YmxlICpjb29yZCk7 CnR5cGVkZWYgdm9pZCAoICogUEZOR0xGT0dDT09SRFBPSU5URVJFWFRQUk9DKSAoR0xlbnVtIHR5 cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOwojIDI1NzkgIi91c3Iv bG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xUQU5HRU5U M0JFWFRQUk9DKSAoR0xieXRlIHR4LCBHTGJ5dGUgdHksIEdMYnl0ZSB0eik7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xUQU5HRU5UM0JWRVhUUFJPQykgKGNvbnN0IEdMYnl0ZSAqdik7CnR5cGVkZWYg dm9pZCAoICogUEZOR0xUQU5HRU5UM0RFWFRQUk9DKSAoR0xkb3VibGUgdHgsIEdMZG91YmxlIHR5 LCBHTGRvdWJsZSB0eik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xUQU5HRU5UM0RWRVhUUFJPQykg KGNvbnN0IEdMZG91YmxlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRBTkdFTlQzRkVYVFBS T0MpIChHTGZsb2F0IHR4LCBHTGZsb2F0IHR5LCBHTGZsb2F0IHR6KTsKdHlwZWRlZiB2b2lkICgg KiBQRk5HTFRBTkdFTlQzRlZFWFRQUk9DKSAoY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xUQU5HRU5UM0lFWFRQUk9DKSAoR0xpbnQgdHgsIEdMaW50IHR5LCBHTGludCB0 eik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xUQU5HRU5UM0lWRVhUUFJPQykgKGNvbnN0IEdMaW50 ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRBTkdFTlQzU0VYVFBST0MpIChHTHNob3J0IHR4 LCBHTHNob3J0IHR5LCBHTHNob3J0IHR6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRBTkdFTlQz U1ZFWFRQUk9DKSAoY29uc3QgR0xzaG9ydCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xCSU5P Uk1BTDNCRVhUUFJPQykgKEdMYnl0ZSBieCwgR0xieXRlIGJ5LCBHTGJ5dGUgYnopOwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMQklOT1JNQUwzQlZFWFRQUk9DKSAoY29uc3QgR0xieXRlICp2KTsKdHlw ZWRlZiB2b2lkICggKiBQRk5HTEJJTk9STUFMM0RFWFRQUk9DKSAoR0xkb3VibGUgYngsIEdMZG91 YmxlIGJ5LCBHTGRvdWJsZSBieik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xCSU5PUk1BTDNEVkVY VFBST0MpIChjb25zdCBHTGRvdWJsZSAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xCSU5PUk1B TDNGRVhUUFJPQykgKEdMZmxvYXQgYngsIEdMZmxvYXQgYnksIEdMZmxvYXQgYnopOwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMQklOT1JNQUwzRlZFWFRQUk9DKSAoY29uc3QgR0xmbG9hdCAqdik7CnR5 cGVkZWYgdm9pZCAoICogUEZOR0xCSU5PUk1BTDNJRVhUUFJPQykgKEdMaW50IGJ4LCBHTGludCBi eSwgR0xpbnQgYnopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQklOT1JNQUwzSVZFWFRQUk9DKSAo Y29uc3QgR0xpbnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQklOT1JNQUwzU0VYVFBST0Mp IChHTHNob3J0IGJ4LCBHTHNob3J0IGJ5LCBHTHNob3J0IGJ6KTsKdHlwZWRlZiB2b2lkICggKiBQ Rk5HTEJJTk9STUFMM1NWRVhUUFJPQykgKGNvbnN0IEdMc2hvcnQgKnYpOwp0eXBlZGVmIHZvaWQg KCAqIFBGTkdMVEFOR0VOVFBPSU5URVJFWFRQUk9DKSAoR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3Ry aWRlLCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQklOT1JN QUxQT0lOVEVSRVhUUFJPQykgKEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2 b2lkICpwb2ludGVyKTsKIyAyNjI0ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMRklOSVNIVEVYVFVSRVNVTlhQUk9DKSAodm9pZCk7CiMgMjYz OSAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5H TEdMT0JBTEFMUEhBRkFDVE9SQlNVTlBST0MpIChHTGJ5dGUgZmFjdG9yKTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTEdMT0JBTEFMUEhBRkFDVE9SU1NVTlBST0MpIChHTHNob3J0IGZhY3Rvcik7CnR5 cGVkZWYgdm9pZCAoICogUEZOR0xHTE9CQUxBTFBIQUZBQ1RPUklTVU5QUk9DKSAoR0xpbnQgZmFj dG9yKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdMT0JBTEFMUEhBRkFDVE9SRlNVTlBST0MpIChH TGZsb2F0IGZhY3Rvcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHTE9CQUxBTFBIQUZBQ1RPUkRT VU5QUk9DKSAoR0xkb3VibGUgZmFjdG9yKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdMT0JBTEFM UEhBRkFDVE9SVUJTVU5QUk9DKSAoR0x1Ynl0ZSBmYWN0b3IpOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMR0xPQkFMQUxQSEFGQUNUT1JVU1NVTlBST0MpIChHTHVzaG9ydCBmYWN0b3IpOwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMR0xPQkFMQUxQSEFGQUNUT1JVSVNVTlBST0MpIChHTHVpbnQgZmFjdG9y KTsKIyAyNjYwICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQg KCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlTVU5QUk9DKSAoR0x1aW50IGNvZGUpOwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVVNTVU5QUk9DKSAoR0x1c2hvcnQgY29kZSk7 CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVVQlNVTlBST0MpIChHTHVieXRl IGNvZGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlWU1VOUFJPQykg KGNvbnN0IEdMdWludCAqY29kZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENP REVVU1ZTVU5QUk9DKSAoY29uc3QgR0x1c2hvcnQgKmNvZGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMUkVQTEFDRU1FTlRDT0RFVUJWU1VOUFJPQykgKGNvbnN0IEdMdWJ5dGUgKmNvZGUpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFUE9JTlRFUlNVTlBST0MpIChHTGVudW0g dHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIpOwojIDI3MTMgIi91 c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xP UjRVQlZFUlRFWDJGU1VOUFJPQykgKEdMdWJ5dGUgciwgR0x1Ynl0ZSBnLCBHTHVieXRlIGIsIEdM dWJ5dGUgYSwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09M T1I0VUJWRVJURVgyRlZTVU5QUk9DKSAoY29uc3QgR0x1Ynl0ZSAqYywgY29uc3QgR0xmbG9hdCAq dik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUjRVQlZFUlRFWDNGU1VOUFJPQykgKEdMdWJ5 dGUgciwgR0x1Ynl0ZSBnLCBHTHVieXRlIGIsIEdMdWJ5dGUgYSwgR0xmbG9hdCB4LCBHTGZsb2F0 IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUjRVQlZFUlRFWDNGVlNV TlBST0MpIChjb25zdCBHTHVieXRlICpjLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTENPTE9SM0ZWRVJURVgzRlNVTlBST0MpIChHTGZsb2F0IHIsIEdMZmxvYXQgZywg R0xmbG9hdCBiLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTENPTE9SM0ZWRVJURVgzRlZTVU5QUk9DKSAoY29uc3QgR0xmbG9hdCAqYywgY29u c3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xOT1JNQUwzRlZFUlRFWDNGU1VO UFJPQykgKEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnosIEdMZmxvYXQgeCwgR0xm bG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTk9STUFMM0ZWRVJURVgz RlZTVU5QUk9DKSAoY29uc3QgR0xmbG9hdCAqbiwgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYg dm9pZCAoICogUEZOR0xDT0xPUjRGTk9STUFMM0ZWRVJURVgzRlNVTlBST0MpIChHTGZsb2F0IHIs IEdMZmxvYXQgZywgR0xmbG9hdCBiLCBHTGZsb2F0IGEsIEdMZmxvYXQgbngsIEdMZmxvYXQgbnks IEdMZmxvYXQgbnosIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMQ09MT1I0Rk5PUk1BTDNGVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZmxv YXQgKmMsIGNvbnN0IEdMZmxvYXQgKm4sIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQg KCAqIFBGTkdMVEVYQ09PUkQyRlZFUlRFWDNGU1VOUFJPQykgKEdMZmxvYXQgcywgR0xmbG9hdCB0 LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TFRFWENPT1JEMkZWRVJURVgzRlZTVU5QUk9DKSAoY29uc3QgR0xmbG9hdCAqdGMsIGNvbnN0IEdM ZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkQ0RlZFUlRFWDRGU1VOUFJP QykgKEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHAsIEdMZmxvYXQgcSwgR0xmbG9hdCB4 LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3KTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TFRFWENPT1JENEZWRVJURVg0RlZTVU5QUk9DKSAoY29uc3QgR0xmbG9hdCAqdGMsIGNvbnN0IEdM ZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkQyRkNPTE9SNFVCVkVSVEVY M0ZTVU5QUk9DKSAoR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMdWJ5dGUgciwgR0x1Ynl0ZSBnLCBH THVieXRlIGIsIEdMdWJ5dGUgYSwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5 cGVkZWYgdm9pZCAoICogUEZOR0xURVhDT09SRDJGQ09MT1I0VUJWRVJURVgzRlZTVU5QUk9DKSAo Y29uc3QgR0xmbG9hdCAqdGMsIGNvbnN0IEdMdWJ5dGUgKmMsIGNvbnN0IEdMZmxvYXQgKnYpOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkQyRkNPTE9SM0ZWRVJURVgzRlNVTlBST0MpIChH TGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByLCBHTGZsb2F0IGcsIEdMZmxvYXQgYiwgR0xm bG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhD T09SRDJGQ09MT1IzRlZFUlRFWDNGVlNVTlBST0MpIChjb25zdCBHTGZsb2F0ICp0YywgY29uc3Qg R0xmbG9hdCAqYywgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhD T09SRDJGTk9STUFMM0ZWRVJURVgzRlNVTlBST0MpIChHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xm bG9hdCBueCwgR0xmbG9hdCBueSwgR0xmbG9hdCBueiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdM ZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhDT09SRDJGTk9STUFMM0ZWRVJURVgz RlZTVU5QUk9DKSAoY29uc3QgR0xmbG9hdCAqdGMsIGNvbnN0IEdMZmxvYXQgKm4sIGNvbnN0IEdM ZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkQyRkNPTE9SNEZOT1JNQUwz RlZFUlRFWDNGU1VOUFJPQykgKEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIsIEdMZmxv YXQgZywgR0xmbG9hdCBiLCBHTGZsb2F0IGEsIEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdMZmxv YXQgbnosIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAq IFBGTkdMVEVYQ09PUkQyRkNPTE9SNEZOT1JNQUwzRlZFUlRFWDNGVlNVTlBST0MpIChjb25zdCBH TGZsb2F0ICp0YywgY29uc3QgR0xmbG9hdCAqYywgY29uc3QgR0xmbG9hdCAqbiwgY29uc3QgR0xm bG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhDT09SRDRGQ09MT1I0Rk5PUk1BTDNG VkVSVEVYNEZTVU5QUk9DKSAoR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgcCwgR0xmbG9h dCBxLCBHTGZsb2F0IHIsIEdMZmxvYXQgZywgR0xmbG9hdCBiLCBHTGZsb2F0IGEsIEdMZmxvYXQg bngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnosIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0 IHosIEdMZmxvYXQgdyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhDT09SRDRGQ09MT1I0Rk5P Uk1BTDNGVkVSVEVYNEZWU1VOUFJPQykgKGNvbnN0IEdMZmxvYXQgKnRjLCBjb25zdCBHTGZsb2F0 ICpjLCBjb25zdCBHTGZsb2F0ICpuLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICgg KiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJVkVSVEVYM0ZTVU5QUk9DKSAoR0xlbnVtIHJjLCBHTGZs b2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFJFUExB Q0VNRU5UQ09ERVVJVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZW51bSAqcmMsIGNvbnN0IEdM ZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlDT0xPUjRV QlZFUlRFWDNGU1VOUFJPQykgKEdMZW51bSByYywgR0x1Ynl0ZSByLCBHTHVieXRlIGcsIEdMdWJ5 dGUgYiwgR0x1Ynl0ZSBhLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRl ZiB2b2lkICggKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJQ09MT1I0VUJWRVJURVgzRlZTVU5QUk9D KSAoY29uc3QgR0xlbnVtICpyYywgY29uc3QgR0x1Ynl0ZSAqYywgY29uc3QgR0xmbG9hdCAqdik7 CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVVSUNPTE9SM0ZWRVJURVgzRlNV TlBST0MpIChHTGVudW0gcmMsIEdMZmxvYXQgciwgR0xmbG9hdCBnLCBHTGZsb2F0IGIsIEdMZmxv YXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFD RU1FTlRDT0RFVUlDT0xPUjNGVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZW51bSAqcmMsIGNv bnN0IEdMZmxvYXQgKmMsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM UkVQTEFDRU1FTlRDT0RFVUlOT1JNQUwzRlZFUlRFWDNGU1VOUFJPQykgKEdMZW51bSByYywgR0xm bG9hdCBueCwgR0xmbG9hdCBueSwgR0xmbG9hdCBueiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdM ZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVVSU5PUk1BTDNG VkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZW51bSAqcmMsIGNvbnN0IEdMZmxvYXQgKm4sIGNv bnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlD T0xPUjRGTk9STUFMM0ZWRVJURVgzRlNVTlBST0MpIChHTGVudW0gcmMsIEdMZmxvYXQgciwgR0xm bG9hdCBnLCBHTGZsb2F0IGIsIEdMZmxvYXQgYSwgR0xmbG9hdCBueCwgR0xmbG9hdCBueSwgR0xm bG9hdCBueiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAo ICogUEZOR0xSRVBMQUNFTUVOVENPREVVSUNPTE9SNEZOT1JNQUwzRlZFUlRFWDNGVlNVTlBST0Mp IChjb25zdCBHTGVudW0gKnJjLCBjb25zdCBHTGZsb2F0ICpjLCBjb25zdCBHTGZsb2F0ICpuLCBj b25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJ VEVYQ09PUkQyRlZFUlRFWDNGU1VOUFJPQykgKEdMZW51bSByYywgR0xmbG9hdCBzLCBHTGZsb2F0 IHQsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMUkVQTEFDRU1FTlRDT0RFVUlURVhDT09SRDJGVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdM ZW51bSAqcmMsIGNvbnN0IEdMZmxvYXQgKnRjLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJVEVYQ09PUkQyRk5PUk1BTDNGVkVSVEVYM0ZT VU5QUk9DKSAoR0xlbnVtIHJjLCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCBueCwgR0xm bG9hdCBueSwgR0xmbG9hdCBueiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5 cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVVSVRFWENPT1JEMkZOT1JNQUwzRlZF UlRFWDNGVlNVTlBST0MpIChjb25zdCBHTGVudW0gKnJjLCBjb25zdCBHTGZsb2F0ICp0YywgY29u c3QgR0xmbG9hdCAqbiwgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xS RVBMQUNFTUVOVENPREVVSVRFWENPT1JEMkZDT0xPUjRGTk9STUFMM0ZWRVJURVgzRlNVTlBST0Mp IChHTGVudW0gcmMsIEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIsIEdMZmxvYXQgZywg R0xmbG9hdCBiLCBHTGZsb2F0IGEsIEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnos IEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM UkVQTEFDRU1FTlRDT0RFVUlURVhDT09SRDJGQ09MT1I0Rk5PUk1BTDNGVkVSVEVYM0ZWU1VOUFJP QykgKGNvbnN0IEdMZW51bSAqcmMsIGNvbnN0IEdMZmxvYXQgKnRjLCBjb25zdCBHTGZsb2F0ICpj LCBjb25zdCBHTGZsb2F0ICpuLCBjb25zdCBHTGZsb2F0ICp2KTsKCgoKCgoKCnR5cGVkZWYgdm9p ZCAoICogUEZOR0xCTEVOREZVTkNTRVBBUkFURUVYVFBST0MpIChHTGVudW0gc2ZhY3RvclJHQiwg R0xlbnVtIGRmYWN0b3JSR0IsIEdMZW51bSBzZmFjdG9yQWxwaGEsIEdMZW51bSBkZmFjdG9yQWxw aGEpOwojIDI4MDYgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9p ZCAoICogUEZOR0xWRVJURVhXRUlHSFRGRVhUUFJPQykgKEdMZmxvYXQgd2VpZ2h0KTsKdHlwZWRl ZiB2b2lkICggKiBQRk5HTFZFUlRFWFdFSUdIVEZWRVhUUFJPQykgKGNvbnN0IEdMZmxvYXQgKndl aWdodCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhXRUlHSFRQT0lOVEVSRVhUUFJPQykg KEdMc2l6ZWkgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQg KnBvaW50ZXIpOwojIDI4MjEgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVk ZWYgdm9pZCAoICogUEZOR0xGTFVTSFZFUlRFWEFSUkFZUkFOR0VOVlBST0MpICh2b2lkKTsKdHlw ZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFSUkFZUkFOR0VOVlBST0MpIChHTHNpemVpIHNpemUs IGNvbnN0IEdMdm9pZCAqcG9pbnRlcik7CiMgMjg0MiAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2ds ZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTUJJTkVSUEFSQU1FVEVSRlZOVlBST0Mp IChHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICog UEZOR0xDT01CSU5FUlBBUkFNRVRFUkZOVlBST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFy YW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09NQklORVJQQVJBTUVURVJJVk5WUFJPQykgKEdM ZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xD T01CSU5FUlBBUkFNRVRFUklOVlBST0MpIChHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKdHlw ZWRlZiB2b2lkICggKiBQRk5HTENPTUJJTkVSSU5QVVROVlBST0MpIChHTGVudW0gc3RhZ2UsIEdM ZW51bSBwb3J0aW9uLCBHTGVudW0gdmFyaWFibGUsIEdMZW51bSBpbnB1dCwgR0xlbnVtIG1hcHBp bmcsIEdMZW51bSBjb21wb25lbnRVc2FnZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT01CSU5F Uk9VVFBVVE5WUFJPQykgKEdMZW51bSBzdGFnZSwgR0xlbnVtIHBvcnRpb24sIEdMZW51bSBhYk91 dHB1dCwgR0xlbnVtIGNkT3V0cHV0LCBHTGVudW0gc3VtT3V0cHV0LCBHTGVudW0gc2NhbGUsIEdM ZW51bSBiaWFzLCBHTGJvb2xlYW4gYWJEb3RQcm9kdWN0LCBHTGJvb2xlYW4gY2REb3RQcm9kdWN0 LCBHTGJvb2xlYW4gbXV4U3VtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZJTkFMQ09NQklORVJJ TlBVVE5WUFJPQykgKEdMZW51bSB2YXJpYWJsZSwgR0xlbnVtIGlucHV0LCBHTGVudW0gbWFwcGlu ZywgR0xlbnVtIGNvbXBvbmVudFVzYWdlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENPTUJJ TkVSSU5QVVRQQVJBTUVURVJGVk5WUFJPQykgKEdMZW51bSBzdGFnZSwgR0xlbnVtIHBvcnRpb24s IEdMZW51bSB2YXJpYWJsZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMR0VUQ09NQklORVJJTlBVVFBBUkFNRVRFUklWTlZQUk9DKSAoR0xlbnVt IHN0YWdlLCBHTGVudW0gcG9ydGlvbiwgR0xlbnVtIHZhcmlhYmxlLCBHTGVudW0gcG5hbWUsIEdM aW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUQ09NQklORVJPVVRQVVRQQVJB TUVURVJGVk5WUFJPQykgKEdMZW51bSBzdGFnZSwgR0xlbnVtIHBvcnRpb24sIEdMZW51bSBwbmFt ZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENPTUJJTkVST1VU UFVUUEFSQU1FVEVSSVZOVlBST0MpIChHTGVudW0gc3RhZ2UsIEdMZW51bSBwb3J0aW9uLCBHTGVu dW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VURklOQUxD T01CSU5FUklOUFVUUEFSQU1FVEVSRlZOVlBST0MpIChHTGVudW0gdmFyaWFibGUsIEdMZW51bSBw bmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVEZJTkFMQ09N QklORVJJTlBVVFBBUkFNRVRFUklWTlZQUk9DKSAoR0xlbnVtIHZhcmlhYmxlLCBHTGVudW0gcG5h bWUsIEdMaW50ICpwYXJhbXMpOwojIDI4NzggIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5o IiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVNJWkVCVUZGRVJTTUVTQVBST0MpICh2b2lkKTsK IyAyOTA5ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAq IFBGTkdMV0lORE9XUE9TMkRNRVNBUFJPQykgKEdMZG91YmxlIHgsIEdMZG91YmxlIHkpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TMkRWTUVTQVBST0MpIChjb25zdCBHTGRvdWJsZSAq dik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MyRk1FU0FQUk9DKSAoR0xmbG9hdCB4 LCBHTGZsb2F0IHkpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TMkZWTUVTQVBST0Mp IChjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzJJTUVT QVBST0MpIChHTGludCB4LCBHTGludCB5KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BP UzJJVk1FU0FQUk9DKSAoY29uc3QgR0xpbnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lO RE9XUE9TMlNNRVNBUFJPQykgKEdMc2hvcnQgeCwgR0xzaG9ydCB5KTsKdHlwZWRlZiB2b2lkICgg KiBQRk5HTFdJTkRPV1BPUzJTVk1FU0FQUk9DKSAoY29uc3QgR0xzaG9ydCAqdik7CnR5cGVkZWYg dm9pZCAoICogUEZOR0xXSU5ET1dQT1MzRE1FU0FQUk9DKSAoR0xkb3VibGUgeCwgR0xkb3VibGUg eSwgR0xkb3VibGUgeik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MzRFZNRVNBUFJP QykgKGNvbnN0IEdMZG91YmxlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzNG TUVTQVBST0MpIChHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTFdJTkRPV1BPUzNGVk1FU0FQUk9DKSAoY29uc3QgR0xmbG9hdCAqdik7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MzSU1FU0FQUk9DKSAoR0xpbnQgeCwgR0xpbnQgeSwg R0xpbnQgeik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MzSVZNRVNBUFJPQykgKGNv bnN0IEdMaW50ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzNTTUVTQVBST0Mp IChHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TFdJTkRPV1BPUzNTVk1FU0FQUk9DKSAoY29uc3QgR0xzaG9ydCAqdik7CnR5cGVkZWYgdm9pZCAo ICogUEZOR0xXSU5ET1dQT1M0RE1FU0FQUk9DKSAoR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xk b3VibGUgeiwgR0xkb3VibGUgdyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1M0RFZN RVNBUFJPQykgKGNvbnN0IEdMZG91YmxlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRP V1BPUzRGTUVTQVBST0MpIChHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0 IHcpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TNEZWTUVTQVBST0MpIChjb25zdCBH TGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzRJTUVTQVBST0MpIChH TGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3KTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TFdJTkRPV1BPUzRJVk1FU0FQUk9DKSAoY29uc3QgR0xpbnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAq IFBGTkdMV0lORE9XUE9TNFNNRVNBUFJPQykgKEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0 IHosIEdMc2hvcnQgdyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1M0U1ZNRVNBUFJP QykgKGNvbnN0IEdMc2hvcnQgKnYpOwojIDI5NDUgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4 dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xNVUxUSU1PREVEUkFXQVJSQVlTSUJNUFJPQykg KEdMZW51bSBtb2RlLCBjb25zdCBHTGludCAqZmlyc3QsIGNvbnN0IEdMc2l6ZWkgKmNvdW50LCBH THNpemVpIHByaW1jb3VudCwgR0xpbnQgbW9kZXN0cmlkZSk7CnR5cGVkZWYgdm9pZCAoICogUEZO R0xNVUxUSU1PREVEUkFXRUxFTUVOVFNJQk1QUk9DKSAoY29uc3QgR0xlbnVtICptb2RlLCBjb25z dCBHTHNpemVpICpjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKmluZGljZXMsIEdM c2l6ZWkgcHJpbWNvdW50LCBHTGludCBtb2Rlc3RyaWRlKTsKIyAyOTYxICIvdXNyL2xvY2FsL2lu Y2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1JQT0lOVEVSTElT VElCTVBST0MpIChHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xpbnQgc3RyaWRlLCBjb25zdCBH THZvaWQqICpwb2ludGVyLCBHTGludCBwdHJzdHJpZGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM U0VDT05EQVJZQ09MT1JQT0lOVEVSTElTVElCTVBST0MpIChHTGludCBzaXplLCBHTGVudW0gdHlw ZSwgR0xpbnQgc3RyaWRlLCBjb25zdCBHTHZvaWQqICpwb2ludGVyLCBHTGludCBwdHJzdHJpZGUp Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRURHRUZMQUdQT0lOVEVSTElTVElCTVBST0MpIChHTGlu dCBzdHJpZGUsIGNvbnN0IEdMYm9vbGVhbiogKnBvaW50ZXIsIEdMaW50IHB0cnN0cmlkZSk7CnR5 cGVkZWYgdm9pZCAoICogUEZOR0xGT0dDT09SRFBPSU5URVJMSVNUSUJNUFJPQykgKEdMZW51bSB0 eXBlLCBHTGludCBzdHJpZGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIsIEdMaW50IHB0cnN0cmlk ZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xJTkRFWFBPSU5URVJMSVNUSUJNUFJPQykgKEdMZW51 bSB0eXBlLCBHTGludCBzdHJpZGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIsIEdMaW50IHB0cnN0 cmlkZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xOT1JNQUxQT0lOVEVSTElTVElCTVBST0MpIChH TGVudW0gdHlwZSwgR0xpbnQgc3RyaWRlLCBjb25zdCBHTHZvaWQqICpwb2ludGVyLCBHTGludCBw dHJzdHJpZGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkRQT0lOVEVSTElTVElCTVBS T0MpIChHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xpbnQgc3RyaWRlLCBjb25zdCBHTHZvaWQq ICpwb2ludGVyLCBHTGludCBwdHJzdHJpZGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVY UE9JTlRFUkxJU1RJQk1QUk9DKSAoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMaW50IHN0cmlk ZSwgY29uc3QgR0x2b2lkKiAqcG9pbnRlciwgR0xpbnQgcHRyc3RyaWRlKTsKIyAzMDAwICIvdXNy L2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEJVRkZF Uk1BU0szREZYUFJPQykgKEdMdWludCBtYXNrKTsKIyAzMDA5ICIvdXNyL2xvY2FsL2luY2x1ZGUv R0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0FNUExFTUFTS0VYVFBST0MpIChH TGNsYW1wZiB2YWx1ZSwgR0xib29sZWFuIGludmVydCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xT QU1QTEVQQVRURVJORVhUUFJPQykgKEdMZW51bSBwYXR0ZXJuKTsKIyAzMDM0ICIvdXNyL2xvY2Fs L2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYVFVSRUNPTE9S TUFTS1NHSVNQUk9DKSAoR0xib29sZWFuIHJlZCwgR0xib29sZWFuIGdyZWVuLCBHTGJvb2xlYW4g Ymx1ZSwgR0xib29sZWFuIGFscGhhKTsKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xJR0xP T0lOVEVSRkFDRVNHSVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBjb25zdCBHTHZvaWQgKnBhcmFtcyk7 CiMgMzA1MSAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsZXh0LmgiIDMKfQojIDIyNDcgIi91c3Iv bG9jYWwvaW5jbHVkZS9HTC9nbC5oIiAyIDMKIyAyMjY4ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wv Z2wuaCIgMwp9CiMgMTAzICJ0dXhyYWNlci5oIiAyCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL0dM L2dsdS5oIiAxIDMKIyAzNCAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsdS5oIiAzCmV4dGVybiAi QyIgewoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbC5oIiAxIDMKIyAzOSAiL3Vzci9s b2NhbC9pbmNsdWRlL0dML2dsdS5oIiAyIDMKIyAyNDkgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9n bHUuaCIgMwogICAgdHlwZWRlZiBzdHJ1Y3QgR0xVcXVhZHJpYyBHTFVxdWFkcmljT2JqOwogICAg dHlwZWRlZiBzdHJ1Y3QgR0xVdHJpYW5ndWxhdG9yT2JqIEdMVXRyaWFuZ3VsYXRvck9iajsKICAg IHR5cGVkZWYgc3RydWN0IEdMVW51cmJzIEdMVW51cmJzT2JqOwojIDI2OSAiL3Vzci9sb2NhbC9p bmNsdWRlL0dML2dsdS5oIiAzCmV4dGVybiB2b2lkIGdsdUxvb2tBdCggR0xkb3VibGUgZXlleCwg R0xkb3VibGUgZXlleSwgR0xkb3VibGUgZXlleiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdMZG91YmxlIGNlbnRlcngsIEdMZG91YmxlIGNlbnRlcnksCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSBjZW50ZXJ6LAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR0xkb3VibGUgdXB4LCBHTGRvdWJsZSB1cHksIEdMZG91YmxlIHVweiAp OwoKCmV4dGVybiB2b2lkIGdsdU9ydGhvMkQoIEdMZG91YmxlIGxlZnQsIEdMZG91YmxlIHJpZ2h0 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIGJvdHRvbSwgR0xk b3VibGUgdG9wICk7CgoKZXh0ZXJuIHZvaWQgZ2x1UGVyc3BlY3RpdmUoIEdMZG91YmxlIGZvdnks IEdMZG91YmxlIGFzcGVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R0xkb3VibGUgek5lYXIsIEdMZG91YmxlIHpGYXIgKTsKCgpleHRlcm4gdm9pZCBnbHVQaWNrTWF0 cml4KCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdMZG91YmxlIHdpZHRoLCBHTGRvdWJsZSBoZWlnaHQsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgdmlld3BvcnRbNF0gKTsKCmV4dGVy biBHTGludCBnbHVQcm9qZWN0KCBHTGRvdWJsZSBvYmp4LCBHTGRvdWJsZSBvYmp5LCBHTGRvdWJs ZSBvYmp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJs ZSBtb2RlbE1hdHJpeFsxNl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IEdMZG91YmxlIHByb2pNYXRyaXhbMTZdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBHTGludCB2aWV3cG9ydFs0XSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR0xkb3VibGUgKndpbngsIEdMZG91YmxlICp3aW55LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSAqd2lueiApOwoKZXh0ZXJuIEdMaW50IGds dVVuUHJvamVjdCggR0xkb3VibGUgd2lueCwgR0xkb3VibGUgd2lueSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB3aW56LAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlIG1vZGVsTWF0cml4WzE2XSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSBwcm9qTWF0cml4 WzE2XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCB2 aWV3cG9ydFs0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJs ZSAqb2JqeCwgR0xkb3VibGUgKm9ianksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR0xkb3VibGUgKm9ianogKTsKCmV4dGVybiBjb25zdCBHTHVieXRlKiBnbHVFcnJvclN0 cmluZyggR0xlbnVtIGVycm9yQ29kZSApOwojIDMxMiAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2ds dS5oIiAzCmV4dGVybiBHTGludCBnbHVTY2FsZUltYWdlKCBHTGVudW0gZm9ybWF0LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoaW4sIEdMc2l6ZWkg aGVpZ2h0aW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0 eXBlaW4sIGNvbnN0IHZvaWQgKmRhdGFpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0xzaXplaSB3aWR0aG91dCwgR0xzaXplaSBoZWlnaHRvdXQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlb3V0LCB2b2lkICpkYXRhb3V0 ICk7CgpleHRlcm4gR0xpbnQgZ2x1QnVpbGQxRE1pcG1hcHMoIEdMZW51bSB0YXJnZXQsIEdMaW50 IGNvbXBvbmVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH THNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmRhdGEgKTsKCmV4dGVybiBH TGludCBnbHVCdWlsZDJETWlwbWFwcyggR0xlbnVtIHRhcmdldCwgR0xpbnQgY29tcG9uZW50cywK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgs IEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICpkYXRhICk7CiMgMzM1ICIvdXNyL2xvY2FsL2lu Y2x1ZGUvR0wvZ2x1LmgiIDMKZXh0ZXJuIEdMVXF1YWRyaWNPYmoqIGdsdU5ld1F1YWRyaWMoIHZv aWQgKTsKCmV4dGVybiB2b2lkIGdsdURlbGV0ZVF1YWRyaWMoIEdMVXF1YWRyaWNPYmogKnN0YXRl ICk7CgpleHRlcm4gdm9pZCBnbHVRdWFkcmljRHJhd1N0eWxlKCBHTFVxdWFkcmljT2JqICpxdWFk T2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51 bSBkcmF3U3R5bGUgKTsKCmV4dGVybiB2b2lkIGdsdVF1YWRyaWNPcmllbnRhdGlvbiggR0xVcXVh ZHJpY09iaiAqcXVhZE9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdMZW51bSBvcmllbnRhdGlvbiApOwoKZXh0ZXJuIHZvaWQgZ2x1UXVhZHJpY05v cm1hbHMoIEdMVXF1YWRyaWNPYmogKnF1YWRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdMZW51bSBub3JtYWxzICk7CgpleHRlcm4gdm9pZCBnbHVRdWFk cmljVGV4dHVyZSggR0xVcXVhZHJpY09iaiAqcXVhZE9iamVjdCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRleHR1cmVDb29yZHMgKTsKCmV4dGVy biB2b2lkIGdsdVF1YWRyaWNDYWxsYmFjayggR0xVcXVhZHJpY09iaiAqcW9iaiwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB3aGljaCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCAqZm4pKCkgKTsKCmV4dGVy biB2b2lkIGdsdUN5bGluZGVyKCBHTFVxdWFkcmljT2JqICpxb2JqLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSBiYXNlUmFkaXVzLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB0b3BSYWRpdXMsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR0xpbnQgc2xpY2VzLCBHTGludCBzdGFja3MgKTsKCmV4dGVybiB2b2lk IGdsdVNwaGVyZSggR0xVcXVhZHJpY09iaiAqcW9iaiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdMZG91YmxlIHJhZGl1cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdMaW50IHNsaWNlcywgR0xpbnQgc3RhY2tzICk7CgpleHRlcm4gdm9pZCBnbHVEaXNrKCBH TFVxdWFkcmljT2JqICpxb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91 YmxlIGlubmVyUmFkaXVzLCBHTGRvdWJsZSBvdXRlclJhZGl1cywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHTGludCBzbGljZXMsIEdMaW50IGxvb3BzICk7CgpleHRlcm4gdm9pZCBn bHVQYXJ0aWFsRGlzayggR0xVcXVhZHJpY09iaiAqcW9iaiwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgR0xkb3VibGUgaW5uZXJSYWRpdXMsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIG91dGVyUmFkaXVzLCBHTGludCBzbGljZXMs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvb3BzLCBHTGRv dWJsZSBzdGFydEFuZ2xlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH TGRvdWJsZSBzd2VlcEFuZ2xlICk7CiMgMzgzICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2x1Lmgi IDMKZXh0ZXJuIEdMVW51cmJzT2JqKiBnbHVOZXdOdXJic1JlbmRlcmVyKCB2b2lkICk7CgpleHRl cm4gdm9pZCBnbHVEZWxldGVOdXJic1JlbmRlcmVyKCBHTFVudXJic09iaiAqbm9iaiApOwoKZXh0 ZXJuIHZvaWQgZ2x1TG9hZFNhbXBsaW5nTWF0cmljZXMoIEdMVW51cmJzT2JqICpub2JqLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0 IG1vZGVsTWF0cml4WzE2XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgR0xmbG9hdCBwcm9qTWF0cml4WzE2XSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgdmlld3BvcnRbNF0gKTsK CmV4dGVybiB2b2lkIGdsdU51cmJzUHJvcGVydHkoIEdMVW51cmJzT2JqICpub2JqLCBHTGVudW0g cHJvcGVydHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9h dCB2YWx1ZSApOwoKZXh0ZXJuIHZvaWQgZ2x1R2V0TnVyYnNQcm9wZXJ0eSggR0xVbnVyYnNPYmog Km5vYmosIEdMZW51bSBwcm9wZXJ0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHTGZsb2F0ICp2YWx1ZSApOwoKZXh0ZXJuIHZvaWQgZ2x1QmVnaW5DdXJ2ZSgg R0xVbnVyYnNPYmogKm5vYmogKTsKCmV4dGVybiB2b2lkIGdsdUVuZEN1cnZlKCBHTFVudXJic09i aiAqIG5vYmogKTsKCmV4dGVybiB2b2lkIGdsdU51cmJzQ3VydmUoIEdMVW51cmJzT2JqICpub2Jq LCBHTGludCBua25vdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xm bG9hdCAqa25vdCwgR0xpbnQgc3RyaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdMZmxvYXQgKmN0bGFycmF5LCBHTGludCBvcmRlciwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSApOwoKZXh0ZXJuIHZvaWQgZ2x1QmVnaW5T dXJmYWNlKCBHTFVudXJic09iaiAqbm9iaiApOwoKZXh0ZXJuIHZvaWQgZ2x1RW5kU3VyZmFjZSgg R0xVbnVyYnNPYmogKiBub2JqICk7CgpleHRlcm4gdm9pZCBnbHVOdXJic1N1cmZhY2UoIEdMVW51 cmJzT2JqICpub2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp bnQgc2tub3RfY291bnQsIEdMZmxvYXQgKnNrbm90LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR0xpbnQgdGtub3RfY291bnQsIEdMZmxvYXQgKnRrbm90LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc19zdHJpZGUsIEdMaW50IHRf c3RyaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAq Y3RsYXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBz b3JkZXIsIEdMaW50IHRvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdMZW51bSB0eXBlICk7CgpleHRlcm4gdm9pZCBnbHVCZWdpblRyaW0oIEdMVW51cmJzT2Jq ICpub2JqICk7CgpleHRlcm4gdm9pZCBnbHVFbmRUcmltKCBHTFVudXJic09iaiAqbm9iaiApOwoK ZXh0ZXJuIHZvaWQgZ2x1UHdsQ3VydmUoIEdMVW51cmJzT2JqICpub2JqLCBHTGludCBjb3VudCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqYXJyYXksCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHN0cmlkZSwgR0xlbnVtIHR5cGUg KTsKCmV4dGVybiB2b2lkIGdsdU51cmJzQ2FsbGJhY2soIEdMVW51cmJzT2JqICpub2JqLCBHTGVu dW0gd2hpY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAo ICpmbikoKSApOwojIDQ3MCAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsdS5oIiAzCmV4dGVybiBH TFV0cmlhbmd1bGF0b3JPYmoqIGdsdU5ld1Rlc3MoIHZvaWQgKTsKCmV4dGVybiB2b2lkIGdsdVRl c3NDYWxsYmFjayggR0xVdHJpYW5ndWxhdG9yT2JqICp0b2JqLCBHTGVudW0gd2hpY2gsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICggKmZuKSgpICk7CgpleHRl cm4gdm9pZCBnbHVEZWxldGVUZXNzKCBHTFV0cmlhbmd1bGF0b3JPYmogKnRvYmogKTsKCmV4dGVy biB2b2lkIGdsdUJlZ2luUG9seWdvbiggR0xVdHJpYW5ndWxhdG9yT2JqICp0b2JqICk7CgpleHRl cm4gdm9pZCBnbHVFbmRQb2x5Z29uKCBHTFV0cmlhbmd1bGF0b3JPYmogKnRvYmogKTsKCmV4dGVy biB2b2lkIGdsdU5leHRDb250b3VyKCBHTFV0cmlhbmd1bGF0b3JPYmogKnRvYmosIEdMZW51bSB0 eXBlICk7CgpleHRlcm4gdm9pZCBnbHVUZXNzVmVydGV4KCBHTFV0cmlhbmd1bGF0b3JPYmogKnRv YmosIEdMZG91YmxlIHZbM10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dm9pZCAqZGF0YSApOwojIDQ5NyAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsdS5oIiAzCmV4dGVy biBjb25zdCBHTHVieXRlKiBnbHVHZXRTdHJpbmcoIEdMZW51bSBuYW1lICk7CiMgNTMwICIvdXNy L2xvY2FsL2luY2x1ZGUvR0wvZ2x1LmgiIDMKfQojIDEwNCAidHV4cmFjZXIuaCIgMgoKCiMgMSAi L3Vzci9sb2NhbC9pbmNsdWRlL0dML2dseC5oIiAxIDMKIyAzOSAiL3Vzci9sb2NhbC9pbmNsdWRl L0dML2dseC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL1gxMS9YbGliLmgiIDEgMwojIDQ3ICIvdXNy L2luY2x1ZGUvWDExL1hsaWIuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAz CiMgNDggIi91c3IvaW5jbHVkZS9YMTEvWGxpYi5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUv WDExL1guaCIgMSAzCiMgNjcgIi91c3IvaW5jbHVkZS9YMTEvWC5oIiAzCnR5cGVkZWYgdW5zaWdu ZWQgbG9uZyBYSUQ7CgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBNYXNrOwoKCgp0eXBlZGVmIHVu c2lnbmVkIGxvbmcgQXRvbTsKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBWaXN1YWxJRDsKdHlwZWRl ZiB1bnNpZ25lZCBsb25nIFRpbWU7CiMgOTcgIi91c3IvaW5jbHVkZS9YMTEvWC5oIiAzCnR5cGVk ZWYgWElEIFdpbmRvdzsKdHlwZWRlZiBYSUQgRHJhd2FibGU7CgoKdHlwZWRlZiBYSUQgRm9udDsK CnR5cGVkZWYgWElEIFBpeG1hcDsKdHlwZWRlZiBYSUQgQ3Vyc29yOwp0eXBlZGVmIFhJRCBDb2xv cm1hcDsKdHlwZWRlZiBYSUQgR0NvbnRleHQ7CnR5cGVkZWYgWElEIEtleVN5bTsKCnR5cGVkZWYg dW5zaWduZWQgY2hhciBLZXlDb2RlOwojIDUyICIvdXNyL2luY2x1ZGUvWDExL1hsaWIuaCIgMiAz CgoKIyAxICIvdXNyL2luY2x1ZGUvWDExL1hmdW5jcHJvdG8uaCIgMSAzCiMgNTUgIi91c3IvaW5j bHVkZS9YMTEvWGxpYi5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvWDExL1hvc2RlZnMuaCIgMSAz CiMgNTYgIi91c3IvaW5jbHVkZS9YMTEvWGxpYi5oIiAyIDMKIyA2OCAiL3Vzci9pbmNsdWRlL1gx MS9YbGliLmgiIDMKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251 LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAxNDcgIi91c3IvbG9jYWwvbGliL2djYy1saWIv aTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiBpbnQgcHRy ZGlmZl90OwojIDY5ICIvdXNyL2luY2x1ZGUvWDExL1hsaWIuaCIgMiAzCiMgOTAgIi91c3IvaW5j bHVkZS9YMTEvWGxpYi5oIiAzCnR5cGVkZWYgY2hhciAqWFBvaW50ZXI7CiMgMTYyICIvdXNyL2lu Y2x1ZGUvWDExL1hsaWIuaCIgMwp0eXBlZGVmIHN0cnVjdCBfWEV4dERhdGEgewogICAgICAgIGlu dCBudW1iZXI7CiAgICAgICAgc3RydWN0IF9YRXh0RGF0YSAqbmV4dDsKICAgICAgICBpbnQgKCpm cmVlX3ByaXZhdGUpKAoKICAgICAgICBzdHJ1Y3QgX1hFeHREYXRhICpleHRlbnNpb24KCiAgICAg ICAgKTsKICAgICAgICBYUG9pbnRlciBwcml2YXRlX2RhdGE7Cn0gWEV4dERhdGE7CgoKCgp0eXBl ZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IGV4dGVuc2lvbjsKICAgICAgICBpbnQgbWFqb3Jfb3Bj b2RlOwogICAgICAgIGludCBmaXJzdF9ldmVudDsKICAgICAgICBpbnQgZmlyc3RfZXJyb3I7Cn0g WEV4dENvZGVzOwoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIGludCBkZXB0aDsKICAgIGludCBi aXRzX3Blcl9waXhlbDsKICAgIGludCBzY2FubGluZV9wYWQ7Cn0gWFBpeG1hcEZvcm1hdFZhbHVl czsKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IGZ1bmN0aW9uOwogICAgICAgIHVu c2lnbmVkIGxvbmcgcGxhbmVfbWFzazsKICAgICAgICB1bnNpZ25lZCBsb25nIGZvcmVncm91bmQ7 CiAgICAgICAgdW5zaWduZWQgbG9uZyBiYWNrZ3JvdW5kOwogICAgICAgIGludCBsaW5lX3dpZHRo OwogICAgICAgIGludCBsaW5lX3N0eWxlOwogICAgICAgIGludCBjYXBfc3R5bGU7CgogICAgICAg IGludCBqb2luX3N0eWxlOwogICAgICAgIGludCBmaWxsX3N0eWxlOwoKICAgICAgICBpbnQgZmls bF9ydWxlOwogICAgICAgIGludCBhcmNfbW9kZTsKICAgICAgICBQaXhtYXAgdGlsZTsKICAgICAg ICBQaXhtYXAgc3RpcHBsZTsKICAgICAgICBpbnQgdHNfeF9vcmlnaW47CiAgICAgICAgaW50IHRz X3lfb3JpZ2luOwogICAgICAgIEZvbnQgZm9udDsKICAgICAgICBpbnQgc3Vid2luZG93X21vZGU7 CiAgICAgICAgaW50IGdyYXBoaWNzX2V4cG9zdXJlczsKICAgICAgICBpbnQgY2xpcF94X29yaWdp bjsKICAgICAgICBpbnQgY2xpcF95X29yaWdpbjsKICAgICAgICBQaXhtYXAgY2xpcF9tYXNrOwog ICAgICAgIGludCBkYXNoX29mZnNldDsKICAgICAgICBjaGFyIGRhc2hlczsKfSBYR0NWYWx1ZXM7 CgoKCgoKCnR5cGVkZWYgc3RydWN0IF9YR0MKCgoKCgoKCipHQzsKCgoKCnR5cGVkZWYgc3RydWN0 IHsKICAgICAgICBYRXh0RGF0YSAqZXh0X2RhdGE7CiAgICAgICAgVmlzdWFsSUQgdmlzdWFsaWQ7 CgogICAgICAgIGludCBjX2NsYXNzOwoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVkX21hc2ss IGdyZWVuX21hc2ssIGJsdWVfbWFzazsKICAgICAgICBpbnQgYml0c19wZXJfcmdiOwogICAgICAg IGludCBtYXBfZW50cmllczsKfSBWaXN1YWw7CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAg aW50IGRlcHRoOwogICAgICAgIGludCBudmlzdWFsczsKICAgICAgICBWaXN1YWwgKnZpc3VhbHM7 Cn0gRGVwdGg7CgoKCgoKCgpzdHJ1Y3QgX1hEaXNwbGF5OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAg ICAgIFhFeHREYXRhICpleHRfZGF0YTsKICAgICAgICBzdHJ1Y3QgX1hEaXNwbGF5ICpkaXNwbGF5 OwogICAgICAgIFdpbmRvdyByb290OwogICAgICAgIGludCB3aWR0aCwgaGVpZ2h0OwogICAgICAg IGludCBtd2lkdGgsIG1oZWlnaHQ7CiAgICAgICAgaW50IG5kZXB0aHM7CiAgICAgICAgRGVwdGgg KmRlcHRoczsKICAgICAgICBpbnQgcm9vdF9kZXB0aDsKICAgICAgICBWaXN1YWwgKnJvb3Rfdmlz dWFsOwogICAgICAgIEdDIGRlZmF1bHRfZ2M7CiAgICAgICAgQ29sb3JtYXAgY21hcDsKICAgICAg ICB1bnNpZ25lZCBsb25nIHdoaXRlX3BpeGVsOwogICAgICAgIHVuc2lnbmVkIGxvbmcgYmxhY2tf cGl4ZWw7CiAgICAgICAgaW50IG1heF9tYXBzLCBtaW5fbWFwczsKICAgICAgICBpbnQgYmFja2lu Z19zdG9yZTsKICAgICAgICBpbnQgc2F2ZV91bmRlcnM7CiAgICAgICAgbG9uZyByb290X2lucHV0 X21hc2s7Cn0gU2NyZWVuOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIFhFeHREYXRhICpl eHRfZGF0YTsKICAgICAgICBpbnQgZGVwdGg7CiAgICAgICAgaW50IGJpdHNfcGVyX3BpeGVsOwog ICAgICAgIGludCBzY2FubGluZV9wYWQ7Cn0gU2NyZWVuRm9ybWF0OwoKCgoKdHlwZWRlZiBzdHJ1 Y3QgewogICAgUGl4bWFwIGJhY2tncm91bmRfcGl4bWFwOwogICAgdW5zaWduZWQgbG9uZyBiYWNr Z3JvdW5kX3BpeGVsOwogICAgUGl4bWFwIGJvcmRlcl9waXhtYXA7CiAgICB1bnNpZ25lZCBsb25n IGJvcmRlcl9waXhlbDsKICAgIGludCBiaXRfZ3Jhdml0eTsKICAgIGludCB3aW5fZ3Jhdml0eTsK ICAgIGludCBiYWNraW5nX3N0b3JlOwogICAgdW5zaWduZWQgbG9uZyBiYWNraW5nX3BsYW5lczsK ICAgIHVuc2lnbmVkIGxvbmcgYmFja2luZ19waXhlbDsKICAgIGludCBzYXZlX3VuZGVyOwogICAg bG9uZyBldmVudF9tYXNrOwogICAgbG9uZyBkb19ub3RfcHJvcGFnYXRlX21hc2s7CiAgICBpbnQg b3ZlcnJpZGVfcmVkaXJlY3Q7CiAgICBDb2xvcm1hcCBjb2xvcm1hcDsKICAgIEN1cnNvciBjdXJz b3I7Cn0gWFNldFdpbmRvd0F0dHJpYnV0ZXM7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgeCwg eTsKICAgIGludCB3aWR0aCwgaGVpZ2h0OwogICAgaW50IGJvcmRlcl93aWR0aDsKICAgIGludCBk ZXB0aDsKICAgIFZpc3VhbCAqdmlzdWFsOwogICAgV2luZG93IHJvb3Q7CgogICAgaW50IGNfY2xh c3M7CgoKCiAgICBpbnQgYml0X2dyYXZpdHk7CiAgICBpbnQgd2luX2dyYXZpdHk7CiAgICBpbnQg YmFja2luZ19zdG9yZTsKICAgIHVuc2lnbmVkIGxvbmcgYmFja2luZ19wbGFuZXM7CiAgICB1bnNp Z25lZCBsb25nIGJhY2tpbmdfcGl4ZWw7CiAgICBpbnQgc2F2ZV91bmRlcjsKICAgIENvbG9ybWFw IGNvbG9ybWFwOwogICAgaW50IG1hcF9pbnN0YWxsZWQ7CiAgICBpbnQgbWFwX3N0YXRlOwogICAg bG9uZyBhbGxfZXZlbnRfbWFza3M7CiAgICBsb25nIHlvdXJfZXZlbnRfbWFzazsKICAgIGxvbmcg ZG9fbm90X3Byb3BhZ2F0ZV9tYXNrOwogICAgaW50IG92ZXJyaWRlX3JlZGlyZWN0OwogICAgU2Ny ZWVuICpzY3JlZW47Cn0gWFdpbmRvd0F0dHJpYnV0ZXM7CgoKCgoKCnR5cGVkZWYgc3RydWN0IHsK ICAgICAgICBpbnQgZmFtaWx5OwogICAgICAgIGludCBsZW5ndGg7CiAgICAgICAgY2hhciAqYWRk cmVzczsKfSBYSG9zdEFkZHJlc3M7CgoKCgp0eXBlZGVmIHN0cnVjdCBfWEltYWdlIHsKICAgIGlu dCB3aWR0aCwgaGVpZ2h0OwogICAgaW50IHhvZmZzZXQ7CiAgICBpbnQgZm9ybWF0OwogICAgY2hh ciAqZGF0YTsKICAgIGludCBieXRlX29yZGVyOwogICAgaW50IGJpdG1hcF91bml0OwogICAgaW50 IGJpdG1hcF9iaXRfb3JkZXI7CiAgICBpbnQgYml0bWFwX3BhZDsKICAgIGludCBkZXB0aDsKICAg IGludCBieXRlc19wZXJfbGluZTsKICAgIGludCBiaXRzX3Blcl9waXhlbDsKICAgIHVuc2lnbmVk IGxvbmcgcmVkX21hc2s7CiAgICB1bnNpZ25lZCBsb25nIGdyZWVuX21hc2s7CiAgICB1bnNpZ25l ZCBsb25nIGJsdWVfbWFzazsKICAgIFhQb2ludGVyIG9iZGF0YTsKICAgIHN0cnVjdCBmdW5jcyB7 CgogICAgICAgIHN0cnVjdCBfWEltYWdlICooKmNyZWF0ZV9pbWFnZSkoCiAgICAgICAgICAgICAg ICBzdHJ1Y3QgX1hEaXNwbGF5KiAsCiAgICAgICAgICAgICAgICBWaXN1YWwqICwKICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCAsCiAgICAgICAgICAgICAgICBpbnQgLAogICAgICAgICAgICAg ICAgaW50ICwKICAgICAgICAgICAgICAgIGNoYXIqICwKICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCAsCiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgLAogICAgICAgICAgICAgICAgaW50 ICwKICAgICAgICAgICAgICAgIGludCApOwogICAgICAgIGludCAoKmRlc3Ryb3lfaW1hZ2UpIChz dHJ1Y3QgX1hJbWFnZSAqKTsKICAgICAgICB1bnNpZ25lZCBsb25nICgqZ2V0X3BpeGVsKSAoc3Ry dWN0IF9YSW1hZ2UgKiwgaW50LCBpbnQpOwogICAgICAgIGludCAoKnB1dF9waXhlbCkgKHN0cnVj dCBfWEltYWdlICosIGludCwgaW50LCB1bnNpZ25lZCBsb25nKTsKICAgICAgICBzdHJ1Y3QgX1hJ bWFnZSAqKCpzdWJfaW1hZ2UpKHN0cnVjdCBfWEltYWdlICosIGludCwgaW50LCB1bnNpZ25lZCBp bnQsIHVuc2lnbmVkIGludCk7CiAgICAgICAgaW50ICgqYWRkX3BpeGVsKSAoc3RydWN0IF9YSW1h Z2UgKiwgbG9uZyk7CiMgNDA4ICIvdXNyL2luY2x1ZGUvWDExL1hsaWIuaCIgMwogICAgICAgIH0g ZjsKfSBYSW1hZ2U7CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgeCwgeTsKICAgIGludCB3 aWR0aCwgaGVpZ2h0OwogICAgaW50IGJvcmRlcl93aWR0aDsKICAgIFdpbmRvdyBzaWJsaW5nOwog ICAgaW50IHN0YWNrX21vZGU7Cn0gWFdpbmRvd0NoYW5nZXM7CgoKCgp0eXBlZGVmIHN0cnVjdCB7 CiAgICAgICAgdW5zaWduZWQgbG9uZyBwaXhlbDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCByZWQs IGdyZWVuLCBibHVlOwogICAgICAgIGNoYXIgZmxhZ3M7CiAgICAgICAgY2hhciBwYWQ7Cn0gWENv bG9yOwoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBzaG9ydCB4MSwgeTEsIHgyLCB5MjsKfSBY U2VnbWVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHNob3J0IHgsIHk7Cn0gWFBvaW50OwoKdHlw ZWRlZiBzdHJ1Y3QgewogICAgc2hvcnQgeCwgeTsKICAgIHVuc2lnbmVkIHNob3J0IHdpZHRoLCBo ZWlnaHQ7Cn0gWFJlY3RhbmdsZTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHNob3J0IHgsIHk7CiAg ICB1bnNpZ25lZCBzaG9ydCB3aWR0aCwgaGVpZ2h0OwogICAgc2hvcnQgYW5nbGUxLCBhbmdsZTI7 Cn0gWEFyYzsKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQga2V5X2NsaWNrX3BlcmNl bnQ7CiAgICAgICAgaW50IGJlbGxfcGVyY2VudDsKICAgICAgICBpbnQgYmVsbF9waXRjaDsKICAg ICAgICBpbnQgYmVsbF9kdXJhdGlvbjsKICAgICAgICBpbnQgbGVkOwogICAgICAgIGludCBsZWRf bW9kZTsKICAgICAgICBpbnQga2V5OwogICAgICAgIGludCBhdXRvX3JlcGVhdF9tb2RlOwp9IFhL ZXlib2FyZENvbnRyb2w7CgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQga2V5X2NsaWNr X3BlcmNlbnQ7CiAgICAgICAgaW50IGJlbGxfcGVyY2VudDsKICAgICAgICB1bnNpZ25lZCBpbnQg YmVsbF9waXRjaCwgYmVsbF9kdXJhdGlvbjsKICAgICAgICB1bnNpZ25lZCBsb25nIGxlZF9tYXNr OwogICAgICAgIGludCBnbG9iYWxfYXV0b19yZXBlYXQ7CiAgICAgICAgY2hhciBhdXRvX3JlcGVh dHNbMzJdOwp9IFhLZXlib2FyZFN0YXRlOwoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgVGlt ZSB0aW1lOwogICAgICAgIHNob3J0IHgsIHk7Cn0gWFRpbWVDb29yZDsKCgoKdHlwZWRlZiBzdHJ1 Y3QgewogICAgICAgIGludCBtYXhfa2V5cGVybW9kOwogICAgICAgIEtleUNvZGUgKm1vZGlmaWVy bWFwOwp9IFhNb2RpZmllcktleW1hcDsKIyA1MDIgIi91c3IvaW5jbHVkZS9YMTEvWGxpYi5oIiAz CnR5cGVkZWYgc3RydWN0IF9YRGlzcGxheSBEaXNwbGF5OwoKCnN0cnVjdCBfWFByaXZhdGU7CnN0 cnVjdCBfWHJtSGFzaEJ1Y2tldFJlYzsKCnR5cGVkZWYgc3RydWN0CgoKCnsKICAgICAgICBYRXh0 RGF0YSAqZXh0X2RhdGE7CiAgICAgICAgc3RydWN0IF9YUHJpdmF0ZSAqcHJpdmF0ZTE7CiAgICAg ICAgaW50IGZkOwogICAgICAgIGludCBwcml2YXRlMjsKICAgICAgICBpbnQgcHJvdG9fbWFqb3Jf dmVyc2lvbjsKICAgICAgICBpbnQgcHJvdG9fbWlub3JfdmVyc2lvbjsKICAgICAgICBjaGFyICp2 ZW5kb3I7CiAgICAgICAgWElEIHByaXZhdGUzOwogICAgICAgIFhJRCBwcml2YXRlNDsKICAgICAg ICBYSUQgcHJpdmF0ZTU7CiAgICAgICAgaW50IHByaXZhdGU2OwogICAgICAgIFhJRCAoKnJlc291 cmNlX2FsbG9jKSgKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgX1hEaXNwbGF5KgoKICAgICAgICAp OwogICAgICAgIGludCBieXRlX29yZGVyOwogICAgICAgIGludCBiaXRtYXBfdW5pdDsKICAgICAg ICBpbnQgYml0bWFwX3BhZDsKICAgICAgICBpbnQgYml0bWFwX2JpdF9vcmRlcjsKICAgICAgICBp bnQgbmZvcm1hdHM7CiAgICAgICAgU2NyZWVuRm9ybWF0ICpwaXhtYXBfZm9ybWF0OwogICAgICAg IGludCBwcml2YXRlODsKICAgICAgICBpbnQgcmVsZWFzZTsKICAgICAgICBzdHJ1Y3QgX1hQcml2 YXRlICpwcml2YXRlOSwgKnByaXZhdGUxMDsKICAgICAgICBpbnQgcWxlbjsKICAgICAgICB1bnNp Z25lZCBsb25nIGxhc3RfcmVxdWVzdF9yZWFkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVxdWVz dDsKICAgICAgICBYUG9pbnRlciBwcml2YXRlMTE7CiAgICAgICAgWFBvaW50ZXIgcHJpdmF0ZTEy OwogICAgICAgIFhQb2ludGVyIHByaXZhdGUxMzsKICAgICAgICBYUG9pbnRlciBwcml2YXRlMTQ7 CiAgICAgICAgdW5zaWduZWQgbWF4X3JlcXVlc3Rfc2l6ZTsKICAgICAgICBzdHJ1Y3QgX1hybUhh c2hCdWNrZXRSZWMgKmRiOwogICAgICAgIGludCAoKnByaXZhdGUxNSkoCgogICAgICAgICAgICAg ICAgc3RydWN0IF9YRGlzcGxheSoKCiAgICAgICAgICAgICAgICApOwogICAgICAgIGNoYXIgKmRp c3BsYXlfbmFtZTsKICAgICAgICBpbnQgZGVmYXVsdF9zY3JlZW47CiAgICAgICAgaW50IG5zY3Jl ZW5zOwogICAgICAgIFNjcmVlbiAqc2NyZWVuczsKICAgICAgICB1bnNpZ25lZCBsb25nIG1vdGlv bl9idWZmZXI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwcml2YXRlMTY7CiAgICAgICAgaW50IG1p bl9rZXljb2RlOwogICAgICAgIGludCBtYXhfa2V5Y29kZTsKICAgICAgICBYUG9pbnRlciBwcml2 YXRlMTc7CiAgICAgICAgWFBvaW50ZXIgcHJpdmF0ZTE4OwogICAgICAgIGludCBwcml2YXRlMTk7 CiAgICAgICAgY2hhciAqeGRlZmF1bHRzOwoKfQoKCgoqX1hQcml2RGlzcGxheTsKIyA1NzggIi91 c3IvaW5jbHVkZS9YMTEvWGxpYi5oIiAzCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlw ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsK ICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAg V2luZG93IHJvb3Q7CiAgICAgICAgV2luZG93IHN1YndpbmRvdzsKICAgICAgICBUaW1lIHRpbWU7 CiAgICAgICAgaW50IHgsIHk7CiAgICAgICAgaW50IHhfcm9vdCwgeV9yb290OwogICAgICAgIHVu c2lnbmVkIGludCBzdGF0ZTsKICAgICAgICB1bnNpZ25lZCBpbnQga2V5Y29kZTsKICAgICAgICBp bnQgc2FtZV9zY3JlZW47Cn0gWEtleUV2ZW50Owp0eXBlZGVmIFhLZXlFdmVudCBYS2V5UHJlc3Nl ZEV2ZW50Owp0eXBlZGVmIFhLZXlFdmVudCBYS2V5UmVsZWFzZWRFdmVudDsKCnR5cGVkZWYgc3Ry dWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAg ICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdp bmRvdyB3aW5kb3c7CiAgICAgICAgV2luZG93IHJvb3Q7CiAgICAgICAgV2luZG93IHN1YndpbmRv dzsKICAgICAgICBUaW1lIHRpbWU7CiAgICAgICAgaW50IHgsIHk7CiAgICAgICAgaW50IHhfcm9v dCwgeV9yb290OwogICAgICAgIHVuc2lnbmVkIGludCBzdGF0ZTsKICAgICAgICB1bnNpZ25lZCBp bnQgYnV0dG9uOwogICAgICAgIGludCBzYW1lX3NjcmVlbjsKfSBYQnV0dG9uRXZlbnQ7CnR5cGVk ZWYgWEJ1dHRvbkV2ZW50IFhCdXR0b25QcmVzc2VkRXZlbnQ7CnR5cGVkZWYgWEJ1dHRvbkV2ZW50 IFhCdXR0b25SZWxlYXNlZEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBl OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50Owog ICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBX aW5kb3cgcm9vdDsKICAgICAgICBXaW5kb3cgc3Vid2luZG93OwogICAgICAgIFRpbWUgdGltZTsK ICAgICAgICBpbnQgeCwgeTsKICAgICAgICBpbnQgeF9yb290LCB5X3Jvb3Q7CiAgICAgICAgdW5z aWduZWQgaW50IHN0YXRlOwogICAgICAgIGNoYXIgaXNfaGludDsKICAgICAgICBpbnQgc2FtZV9z Y3JlZW47Cn0gWE1vdGlvbkV2ZW50Owp0eXBlZGVmIFhNb3Rpb25FdmVudCBYUG9pbnRlck1vdmVk RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAq ZGlzcGxheTsKICAgICAgICBXaW5kb3cgd2luZG93OwogICAgICAgIFdpbmRvdyByb290OwogICAg ICAgIFdpbmRvdyBzdWJ3aW5kb3c7CiAgICAgICAgVGltZSB0aW1lOwogICAgICAgIGludCB4LCB5 OwogICAgICAgIGludCB4X3Jvb3QsIHlfcm9vdDsKICAgICAgICBpbnQgbW9kZTsKICAgICAgICBp bnQgZGV0YWlsOwoKCgoKICAgICAgICBpbnQgc2FtZV9zY3JlZW47CiAgICAgICAgaW50IGZvY3Vz OwogICAgICAgIHVuc2lnbmVkIGludCBzdGF0ZTsKfSBYQ3Jvc3NpbmdFdmVudDsKdHlwZWRlZiBY Q3Jvc3NpbmdFdmVudCBYRW50ZXJXaW5kb3dFdmVudDsKdHlwZWRlZiBYQ3Jvc3NpbmdFdmVudCBY TGVhdmVXaW5kb3dFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAg ICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAg ICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IG1v ZGU7CiAgICAgICAgaW50IGRldGFpbDsKCgoKCgp9IFhGb2N1c0NoYW5nZUV2ZW50Owp0eXBlZGVm IFhGb2N1c0NoYW5nZUV2ZW50IFhGb2N1c0luRXZlbnQ7CnR5cGVkZWYgWEZvY3VzQ2hhbmdlRXZl bnQgWEZvY3VzT3V0RXZlbnQ7CgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwog ICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAg ICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBjaGFy IGtleV92ZWN0b3JbMzJdOwp9IFhLZXltYXBFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAg ICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2Vu ZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7 CiAgICAgICAgaW50IHgsIHk7CiAgICAgICAgaW50IHdpZHRoLCBoZWlnaHQ7CiAgICAgICAgaW50 IGNvdW50Owp9IFhFeHBvc2VFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlw ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsK ICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIERyYXdhYmxlIGRyYXdhYmxlOwogICAg ICAgIGludCB4LCB5OwogICAgICAgIGludCB3aWR0aCwgaGVpZ2h0OwogICAgICAgIGludCBjb3Vu dDsKICAgICAgICBpbnQgbWFqb3JfY29kZTsKICAgICAgICBpbnQgbWlub3JfY29kZTsKfSBYR3Jh cGhpY3NFeHBvc2VFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAg ICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAg ICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIERyYXdhYmxlIGRyYXdhYmxlOwogICAgICAgIGlu dCBtYWpvcl9jb2RlOwogICAgICAgIGludCBtaW5vcl9jb2RlOwp9IFhOb0V4cG9zZUV2ZW50OwoK dHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcg c2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7 CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBpbnQgc3RhdGU7Cn0gWFZpc2liaWxpdHlF dmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25l ZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpk aXNwbGF5OwogICAgICAgIFdpbmRvdyBwYXJlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAg ICAgICBpbnQgeCwgeTsKICAgICAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAgICAgICBpbnQgYm9y ZGVyX3dpZHRoOwogICAgICAgIGludCBvdmVycmlkZV9yZWRpcmVjdDsKfSBYQ3JlYXRlV2luZG93 RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAq ZGlzcGxheTsKICAgICAgICBXaW5kb3cgZXZlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsKfSBY RGVzdHJveVdpbmRvd0V2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwog ICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAg ICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IGV2ZW50OwogICAgICAgIFdpbmRv dyB3aW5kb3c7CiAgICAgICAgaW50IGZyb21fY29uZmlndXJlOwp9IFhVbm1hcEV2ZW50OwoKdHlw ZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2Vy aWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAg ICAgICAgV2luZG93IGV2ZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IG92 ZXJyaWRlX3JlZGlyZWN0Owp9IFhNYXBFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBp bnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9l dmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBwYXJlbnQ7CiAg ICAgICAgV2luZG93IHdpbmRvdzsKfSBYTWFwUmVxdWVzdEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3Qg ewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAg IGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93 IGV2ZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgV2luZG93IHBhcmVudDsKICAg ICAgICBpbnQgeCwgeTsKICAgICAgICBpbnQgb3ZlcnJpZGVfcmVkaXJlY3Q7Cn0gWFJlcGFyZW50 RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAq ZGlzcGxheTsKICAgICAgICBXaW5kb3cgZXZlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAg ICAgICBpbnQgeCwgeTsKICAgICAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAgICAgICBpbnQgYm9y ZGVyX3dpZHRoOwogICAgICAgIFdpbmRvdyBhYm92ZTsKICAgICAgICBpbnQgb3ZlcnJpZGVfcmVk aXJlY3Q7Cn0gWENvbmZpZ3VyZUV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0 eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50 OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IGV2ZW50OwogICAgICAg IFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IHgsIHk7Cn0gWEdyYXZpdHlFdmVudDsKCnR5cGVk ZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlh bDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAg ICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IHdpZHRoLCBoZWlnaHQ7Cn0gWFJlc2l6ZVJl cXVlc3RFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1 bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNw bGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBwYXJlbnQ7CiAgICAgICAgV2luZG93IHdpbmRv dzsKICAgICAgICBpbnQgeCwgeTsKICAgICAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAgICAgICBp bnQgYm9yZGVyX3dpZHRoOwogICAgICAgIFdpbmRvdyBhYm92ZTsKICAgICAgICBpbnQgZGV0YWls OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWVfbWFzazsKfSBYQ29uZmlndXJlUmVxdWVzdEV2 ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVk IGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRp c3BsYXk7CiAgICAgICAgV2luZG93IGV2ZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAg ICAgaW50IHBsYWNlOwp9IFhDaXJjdWxhdGVFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAg ICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2Vu ZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBwYXJlbnQ7 CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBpbnQgcGxhY2U7Cn0gWENpcmN1bGF0ZVJl cXVlc3RFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1 bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNw bGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgQXRvbSBhdG9tOwog ICAgICAgIFRpbWUgdGltZTsKICAgICAgICBpbnQgc3RhdGU7Cn0gWFByb3BlcnR5RXZlbnQ7Cgp0 eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz ZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsK ICAgICAgICBXaW5kb3cgd2luZG93OwogICAgICAgIEF0b20gc2VsZWN0aW9uOwogICAgICAgIFRp bWUgdGltZTsKfSBYU2VsZWN0aW9uQ2xlYXJFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAg ICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2Vu ZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBvd25lcjsK ICAgICAgICBXaW5kb3cgcmVxdWVzdG9yOwogICAgICAgIEF0b20gc2VsZWN0aW9uOwogICAgICAg IEF0b20gdGFyZ2V0OwogICAgICAgIEF0b20gcHJvcGVydHk7CiAgICAgICAgVGltZSB0aW1lOwp9 IFhTZWxlY3Rpb25SZXF1ZXN0RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5 cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7 CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgcmVxdWVzdG9yOwogICAg ICAgIEF0b20gc2VsZWN0aW9uOwogICAgICAgIEF0b20gdGFyZ2V0OwogICAgICAgIEF0b20gcHJv cGVydHk7CiAgICAgICAgVGltZSB0aW1lOwp9IFhTZWxlY3Rpb25FdmVudDsKCnR5cGVkZWYgc3Ry dWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAg ICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdp bmRvdyB3aW5kb3c7CiAgICAgICAgQ29sb3JtYXAgY29sb3JtYXA7CgogICAgICAgIGludCBjX25l dzsKCgoKICAgICAgICBpbnQgc3RhdGU7Cn0gWENvbG9ybWFwRXZlbnQ7Cgp0eXBlZGVmIHN0cnVj dCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAg ICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5k b3cgd2luZG93OwogICAgICAgIEF0b20gbWVzc2FnZV90eXBlOwogICAgICAgIGludCBmb3JtYXQ7 CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgY2hhciBiWzIwXTsKICAgICAgICAgICAg ICAgIHNob3J0IHNbMTBdOwogICAgICAgICAgICAgICAgbG9uZyBsWzVdOwogICAgICAgICAgICAg ICAgfSBkYXRhOwp9IFhDbGllbnRNZXNzYWdlRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAg ICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNl bmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgd2luZG93 OwogICAgICAgIGludCByZXF1ZXN0OwoKICAgICAgICBpbnQgZmlyc3Rfa2V5Y29kZTsKICAgICAg ICBpbnQgY291bnQ7Cn0gWE1hcHBpbmdFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBp bnQgdHlwZTsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFhJRCByZXNvdXJjZWlk OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZXJy b3JfY29kZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJlcXVlc3RfY29kZTsKICAgICAgICB1bnNp Z25lZCBjaGFyIG1pbm9yX2NvZGU7Cn0gWEVycm9yRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAg ICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50 IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgd2lu ZG93Owp9IFhBbnlFdmVudDsKCgoKCgp0eXBlZGVmIHVuaW9uIF9YRXZlbnQgewogICAgICAgIGlu dCB0eXBlOwogICAgICAgIFhBbnlFdmVudCB4YW55OwogICAgICAgIFhLZXlFdmVudCB4a2V5Owog ICAgICAgIFhCdXR0b25FdmVudCB4YnV0dG9uOwogICAgICAgIFhNb3Rpb25FdmVudCB4bW90aW9u OwogICAgICAgIFhDcm9zc2luZ0V2ZW50IHhjcm9zc2luZzsKICAgICAgICBYRm9jdXNDaGFuZ2VF dmVudCB4Zm9jdXM7CiAgICAgICAgWEV4cG9zZUV2ZW50IHhleHBvc2U7CiAgICAgICAgWEdyYXBo aWNzRXhwb3NlRXZlbnQgeGdyYXBoaWNzZXhwb3NlOwogICAgICAgIFhOb0V4cG9zZUV2ZW50IHhu b2V4cG9zZTsKICAgICAgICBYVmlzaWJpbGl0eUV2ZW50IHh2aXNpYmlsaXR5OwogICAgICAgIFhD cmVhdGVXaW5kb3dFdmVudCB4Y3JlYXRld2luZG93OwogICAgICAgIFhEZXN0cm95V2luZG93RXZl bnQgeGRlc3Ryb3l3aW5kb3c7CiAgICAgICAgWFVubWFwRXZlbnQgeHVubWFwOwogICAgICAgIFhN YXBFdmVudCB4bWFwOwogICAgICAgIFhNYXBSZXF1ZXN0RXZlbnQgeG1hcHJlcXVlc3Q7CiAgICAg ICAgWFJlcGFyZW50RXZlbnQgeHJlcGFyZW50OwogICAgICAgIFhDb25maWd1cmVFdmVudCB4Y29u ZmlndXJlOwogICAgICAgIFhHcmF2aXR5RXZlbnQgeGdyYXZpdHk7CiAgICAgICAgWFJlc2l6ZVJl cXVlc3RFdmVudCB4cmVzaXplcmVxdWVzdDsKICAgICAgICBYQ29uZmlndXJlUmVxdWVzdEV2ZW50 IHhjb25maWd1cmVyZXF1ZXN0OwogICAgICAgIFhDaXJjdWxhdGVFdmVudCB4Y2lyY3VsYXRlOwog ICAgICAgIFhDaXJjdWxhdGVSZXF1ZXN0RXZlbnQgeGNpcmN1bGF0ZXJlcXVlc3Q7CiAgICAgICAg WFByb3BlcnR5RXZlbnQgeHByb3BlcnR5OwogICAgICAgIFhTZWxlY3Rpb25DbGVhckV2ZW50IHhz ZWxlY3Rpb25jbGVhcjsKICAgICAgICBYU2VsZWN0aW9uUmVxdWVzdEV2ZW50IHhzZWxlY3Rpb25y ZXF1ZXN0OwogICAgICAgIFhTZWxlY3Rpb25FdmVudCB4c2VsZWN0aW9uOwogICAgICAgIFhDb2xv cm1hcEV2ZW50IHhjb2xvcm1hcDsKICAgICAgICBYQ2xpZW50TWVzc2FnZUV2ZW50IHhjbGllbnQ7 CiAgICAgICAgWE1hcHBpbmdFdmVudCB4bWFwcGluZzsKICAgICAgICBYRXJyb3JFdmVudCB4ZXJy b3I7CiAgICAgICAgWEtleW1hcEV2ZW50IHhrZXltYXA7CiAgICAgICAgbG9uZyBwYWRbMjRdOwp9 IFhFdmVudDsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIHNob3J0IGxiZWFyaW5nOwogICAg c2hvcnQgcmJlYXJpbmc7CiAgICBzaG9ydCB3aWR0aDsKICAgIHNob3J0IGFzY2VudDsKICAgIHNo b3J0IGRlc2NlbnQ7CiAgICB1bnNpZ25lZCBzaG9ydCBhdHRyaWJ1dGVzOwp9IFhDaGFyU3RydWN0 OwoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIEF0b20gbmFtZTsKICAgIHVuc2lnbmVkIGxvbmcg Y2FyZDMyOwp9IFhGb250UHJvcDsKCnR5cGVkZWYgc3RydWN0IHsKICAgIFhFeHREYXRhICpleHRf ZGF0YTsKICAgIEZvbnQgZmlkOwogICAgdW5zaWduZWQgZGlyZWN0aW9uOwogICAgdW5zaWduZWQg bWluX2NoYXJfb3JfYnl0ZTI7CiAgICB1bnNpZ25lZCBtYXhfY2hhcl9vcl9ieXRlMjsKICAgIHVu c2lnbmVkIG1pbl9ieXRlMTsKICAgIHVuc2lnbmVkIG1heF9ieXRlMTsKICAgIGludCBhbGxfY2hh cnNfZXhpc3Q7CiAgICB1bnNpZ25lZCBkZWZhdWx0X2NoYXI7CiAgICBpbnQgbl9wcm9wZXJ0aWVz OwogICAgWEZvbnRQcm9wICpwcm9wZXJ0aWVzOwogICAgWENoYXJTdHJ1Y3QgbWluX2JvdW5kczsK ICAgIFhDaGFyU3RydWN0IG1heF9ib3VuZHM7CiAgICBYQ2hhclN0cnVjdCAqcGVyX2NoYXI7CiAg ICBpbnQgYXNjZW50OwogICAgaW50IGRlc2NlbnQ7Cn0gWEZvbnRTdHJ1Y3Q7CgoKCgp0eXBlZGVm IHN0cnVjdCB7CiAgICBjaGFyICpjaGFyczsKICAgIGludCBuY2hhcnM7CiAgICBpbnQgZGVsdGE7 CiAgICBGb250IGZvbnQ7Cn0gWFRleHRJdGVtOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgdW5zaWdu ZWQgY2hhciBieXRlMTsKICAgIHVuc2lnbmVkIGNoYXIgYnl0ZTI7Cn0gWENoYXIyYjsKCnR5cGVk ZWYgc3RydWN0IHsKICAgIFhDaGFyMmIgKmNoYXJzOwogICAgaW50IG5jaGFyczsKICAgIGludCBk ZWx0YTsKICAgIEZvbnQgZm9udDsKfSBYVGV4dEl0ZW0xNjsKCgp0eXBlZGVmIHVuaW9uIHsgRGlz cGxheSAqZGlzcGxheTsKICAgICAgICAgICAgICAgIEdDIGdjOwogICAgICAgICAgICAgICAgVmlz dWFsICp2aXN1YWw7CiAgICAgICAgICAgICAgICBTY3JlZW4gKnNjcmVlbjsKICAgICAgICAgICAg ICAgIFNjcmVlbkZvcm1hdCAqcGl4bWFwX2Zvcm1hdDsKICAgICAgICAgICAgICAgIFhGb250U3Ry dWN0ICpmb250OyB9IFhFRGF0YU9iamVjdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgIFhSZWN0YW5n bGUgbWF4X2lua19leHRlbnQ7CiAgICBYUmVjdGFuZ2xlIG1heF9sb2dpY2FsX2V4dGVudDsKfSBY Rm9udFNldEV4dGVudHM7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX1hPTSAqWE9NOwp0eXBlZGVmIHN0 cnVjdCBfWE9DICpYT0MsICpYRm9udFNldDsKCnR5cGVkZWYgc3RydWN0IHsKICAgIGNoYXIgKmNo YXJzOwogICAgaW50IG5jaGFyczsKICAgIGludCBkZWx0YTsKICAgIFhGb250U2V0IGZvbnRfc2V0 Owp9IFhtYlRleHRJdGVtOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgd2NoYXJfdCAqY2hhcnM7CiAg ICBpbnQgbmNoYXJzOwogICAgaW50IGRlbHRhOwogICAgWEZvbnRTZXQgZm9udF9zZXQ7Cn0gWHdj VGV4dEl0ZW07CiMgMTExMiAiL3Vzci9pbmNsdWRlL1gxMS9YbGliLmgiIDMKdHlwZWRlZiBzdHJ1 Y3QgewogICAgaW50IGNoYXJzZXRfY291bnQ7CiAgICBjaGFyICoqY2hhcnNldF9saXN0Owp9IFhP TUNoYXJTZXRMaXN0OwoKdHlwZWRlZiBlbnVtIHsKICAgIFhPTU9yaWVudGF0aW9uX0xUUl9UVEIs CiAgICBYT01PcmllbnRhdGlvbl9SVExfVFRCLAogICAgWE9NT3JpZW50YXRpb25fVFRCX0xUUiwK ICAgIFhPTU9yaWVudGF0aW9uX1RUQl9SVEwsCiAgICBYT01PcmllbnRhdGlvbl9Db250ZXh0Cn0g WE9yaWVudGF0aW9uOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgaW50IG51bV9vcmllbnRhdGlvbjsK ICAgIFhPcmllbnRhdGlvbiAqb3JpZW50YXRpb247Cn0gWE9NT3JpZW50YXRpb247Cgp0eXBlZGVm IHN0cnVjdCB7CiAgICBpbnQgbnVtX2ZvbnQ7CiAgICBYRm9udFN0cnVjdCAqKmZvbnRfc3RydWN0 X2xpc3Q7CiAgICBjaGFyICoqZm9udF9uYW1lX2xpc3Q7Cn0gWE9NRm9udEluZm87Cgp0eXBlZGVm IHN0cnVjdCBfWElNICpYSU07CnR5cGVkZWYgc3RydWN0IF9YSUMgKlhJQzsKCnR5cGVkZWYgdm9p ZCAoKlhJTVByb2MpKAoKICAgIFhJTSwKICAgIFhQb2ludGVyLAogICAgWFBvaW50ZXIKCik7Cgp0 eXBlZGVmIGludCAoKlhJQ1Byb2MpKAoKICAgIFhJQywKICAgIFhQb2ludGVyLAogICAgWFBvaW50 ZXIKCik7Cgp0eXBlZGVmIHZvaWQgKCpYSURQcm9jKSgKCiAgICBEaXNwbGF5KiwKICAgIFhQb2lu dGVyLAogICAgWFBvaW50ZXIKCik7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgWElNU3R5bGU7Cgp0 eXBlZGVmIHN0cnVjdCB7CiAgICB1bnNpZ25lZCBzaG9ydCBjb3VudF9zdHlsZXM7CiAgICBYSU1T dHlsZSAqc3VwcG9ydGVkX3N0eWxlczsKfSBYSU1TdHlsZXM7CiMgMTIzMSAiL3Vzci9pbmNsdWRl L1gxMS9YbGliLmgiIDMKdHlwZWRlZiB2b2lkICpYVmFOZXN0ZWRMaXN0OwoKCgoKdHlwZWRlZiBz dHJ1Y3QgewogICAgWFBvaW50ZXIgY2xpZW50X2RhdGE7CiAgICBYSU1Qcm9jIGNhbGxiYWNrOwp9 IFhJTUNhbGxiYWNrOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgWFBvaW50ZXIgY2xpZW50X2RhdGE7 CiAgICBYSUNQcm9jIGNhbGxiYWNrOwp9IFhJQ0NhbGxiYWNrOwoKdHlwZWRlZiB1bnNpZ25lZCBs b25nIFhJTUZlZWRiYWNrOwojIDEyNTggIi91c3IvaW5jbHVkZS9YMTEvWGxpYi5oIiAzCnR5cGVk ZWYgc3RydWN0IF9YSU1UZXh0IHsKICAgIHVuc2lnbmVkIHNob3J0IGxlbmd0aDsKICAgIFhJTUZl ZWRiYWNrICpmZWVkYmFjazsKICAgIGludCBlbmNvZGluZ19pc193Y2hhcjsKICAgIHVuaW9uIHsK ICAgICAgICBjaGFyICptdWx0aV9ieXRlOwogICAgICAgIHdjaGFyX3QgKndpZGVfY2hhcjsKICAg IH0gc3RyaW5nOwp9IFhJTVRleHQ7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgWElNUHJlZWRpdFN0 YXRlOwoKCgoKCnR5cGVkZWYgc3RydWN0IF9YSU1QcmVlZGl0U3RhdGVOb3RpZnlDYWxsYmFja1N0 cnVjdCB7CiAgICBYSU1QcmVlZGl0U3RhdGUgc3RhdGU7Cn0gWElNUHJlZWRpdFN0YXRlTm90aWZ5 Q2FsbGJhY2tTdHJ1Y3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgWElNUmVzZXRTdGF0ZTsKCgoK CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBYSU1TdHJpbmdDb252ZXJzaW9uRmVlZGJhY2s7CiMgMTI5 MiAiL3Vzci9pbmNsdWRlL1gxMS9YbGliLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX1hJTVN0cmluZ0Nv bnZlcnNpb25UZXh0IHsKICAgIHVuc2lnbmVkIHNob3J0IGxlbmd0aDsKICAgIFhJTVN0cmluZ0Nv bnZlcnNpb25GZWVkYmFjayAqZmVlZGJhY2s7CiAgICBpbnQgZW5jb2RpbmdfaXNfd2NoYXI7CiAg ICB1bmlvbiB7CiAgICAgICAgY2hhciAqbWJzOwogICAgICAgIHdjaGFyX3QgKndjczsKICAgIH0g c3RyaW5nOwp9IFhJTVN0cmluZ0NvbnZlcnNpb25UZXh0OwoKdHlwZWRlZiB1bnNpZ25lZCBzaG9y dCBYSU1TdHJpbmdDb252ZXJzaW9uUG9zaXRpb247Cgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFhJ TVN0cmluZ0NvbnZlcnNpb25UeXBlOwoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFhJTVN0 cmluZ0NvbnZlcnNpb25PcGVyYXRpb247CgoKCgp0eXBlZGVmIGVudW0gewogICAgWElNRm9yd2Fy ZENoYXIsIFhJTUJhY2t3YXJkQ2hhciwKICAgIFhJTUZvcndhcmRXb3JkLCBYSU1CYWNrd2FyZFdv cmQsCiAgICBYSU1DYXJldFVwLCBYSU1DYXJldERvd24sCiAgICBYSU1OZXh0TGluZSwgWElNUHJl dmlvdXNMaW5lLAogICAgWElNTGluZVN0YXJ0LCBYSU1MaW5lRW5kLAogICAgWElNQWJzb2x1dGVQ b3NpdGlvbiwKICAgIFhJTURvbnRDaGFuZ2UKfSBYSU1DYXJldERpcmVjdGlvbjsKCnR5cGVkZWYg c3RydWN0IF9YSU1TdHJpbmdDb252ZXJzaW9uQ2FsbGJhY2tTdHJ1Y3QgewogICAgWElNU3RyaW5n Q29udmVyc2lvblBvc2l0aW9uIHBvc2l0aW9uOwogICAgWElNQ2FyZXREaXJlY3Rpb24gZGlyZWN0 aW9uOwogICAgWElNU3RyaW5nQ29udmVyc2lvbk9wZXJhdGlvbiBvcGVyYXRpb247CiAgICB1bnNp Z25lZCBzaG9ydCBmYWN0b3I7CiAgICBYSU1TdHJpbmdDb252ZXJzaW9uVGV4dCAqdGV4dDsKfSBY SU1TdHJpbmdDb252ZXJzaW9uQ2FsbGJhY2tTdHJ1Y3Q7Cgp0eXBlZGVmIHN0cnVjdCBfWElNUHJl ZWRpdERyYXdDYWxsYmFja1N0cnVjdCB7CiAgICBpbnQgY2FyZXQ7CiAgICBpbnQgY2hnX2ZpcnN0 OwogICAgaW50IGNoZ19sZW5ndGg7CiAgICBYSU1UZXh0ICp0ZXh0Owp9IFhJTVByZWVkaXREcmF3 Q2FsbGJhY2tTdHJ1Y3Q7Cgp0eXBlZGVmIGVudW0gewogICAgWElNSXNJbnZpc2libGUsCiAgICBY SU1Jc1ByaW1hcnksCiAgICBYSU1Jc1NlY29uZGFyeQp9IFhJTUNhcmV0U3R5bGU7Cgp0eXBlZGVm IHN0cnVjdCBfWElNUHJlZWRpdENhcmV0Q2FsbGJhY2tTdHJ1Y3QgewogICAgaW50IHBvc2l0aW9u OwogICAgWElNQ2FyZXREaXJlY3Rpb24gZGlyZWN0aW9uOwogICAgWElNQ2FyZXRTdHlsZSBzdHls ZTsKfSBYSU1QcmVlZGl0Q2FyZXRDYWxsYmFja1N0cnVjdDsKCnR5cGVkZWYgZW51bSB7CiAgICBY SU1UZXh0VHlwZSwKICAgIFhJTUJpdG1hcFR5cGUKfSBYSU1TdGF0dXNEYXRhVHlwZTsKCnR5cGVk ZWYgc3RydWN0IF9YSU1TdGF0dXNEcmF3Q2FsbGJhY2tTdHJ1Y3QgewogICAgWElNU3RhdHVzRGF0 YVR5cGUgdHlwZTsKICAgIHVuaW9uIHsKICAgICAgICBYSU1UZXh0ICp0ZXh0OwogICAgICAgIFBp eG1hcCBiaXRtYXA7CiAgICB9IGRhdGE7Cn0gWElNU3RhdHVzRHJhd0NhbGxiYWNrU3RydWN0OwoK dHlwZWRlZiBzdHJ1Y3QgX1hJTUhvdEtleVRyaWdnZXIgewogICAgS2V5U3ltIGtleXN5bTsKICAg IGludCBtb2RpZmllcjsKICAgIGludCBtb2RpZmllcl9tYXNrOwp9IFhJTUhvdEtleVRyaWdnZXI7 Cgp0eXBlZGVmIHN0cnVjdCBfWElNSG90S2V5VHJpZ2dlcnMgewogICAgaW50IG51bV9ob3Rfa2V5 OwogICAgWElNSG90S2V5VHJpZ2dlciAqa2V5Owp9IFhJTUhvdEtleVRyaWdnZXJzOwoKdHlwZWRl ZiB1bnNpZ25lZCBsb25nIFhJTUhvdEtleVN0YXRlOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAg dW5zaWduZWQgc2hvcnQgY291bnRfdmFsdWVzOwogICAgY2hhciAqKnN1cHBvcnRlZF92YWx1ZXM7 Cn0gWElNVmFsdWVzTGlzdDsKCmV4dGVybiAiQyIgewoKCgoKCmV4dGVybiBpbnQgX1hkZWJ1ZzsK CmV4dGVybiBYRm9udFN0cnVjdCAqWExvYWRRdWVyeUZvbnQoCgogICAgRGlzcGxheSogLAogICAg Y29uc3QgY2hhcioKCik7CgpleHRlcm4gWEZvbnRTdHJ1Y3QgKlhRdWVyeUZvbnQoCgogICAgRGlz cGxheSogLAogICAgWElECgopOwoKCmV4dGVybiBYVGltZUNvb3JkICpYR2V0TW90aW9uRXZlbnRz KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBUaW1lICwKICAgIFRpbWUgLAogICAg aW50KgoKKTsKCmV4dGVybiBYTW9kaWZpZXJLZXltYXAgKlhEZWxldGVNb2RpZmllcm1hcEVudHJ5 KAoKICAgIFhNb2RpZmllcktleW1hcCogLAoKICAgIHVuc2lnbmVkIGludCAsCgoKCiAgICBpbnQK Cik7CgpleHRlcm4gWE1vZGlmaWVyS2V5bWFwICpYR2V0TW9kaWZpZXJNYXBwaW5nKAoKICAgIERp c3BsYXkqCgopOwoKZXh0ZXJuIFhNb2RpZmllcktleW1hcCAqWEluc2VydE1vZGlmaWVybWFwRW50 cnkoCgogICAgWE1vZGlmaWVyS2V5bWFwKiAsCgogICAgdW5zaWduZWQgaW50ICwKCgoKICAgIGlu dAoKKTsKCmV4dGVybiBYTW9kaWZpZXJLZXltYXAgKlhOZXdNb2RpZmllcm1hcCgKCiAgICBpbnQK Cik7CgpleHRlcm4gWEltYWdlICpYQ3JlYXRlSW1hZ2UoCgogICAgRGlzcGxheSogLAogICAgVmlz dWFsKiAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICBjaGFyKiAs CiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQK Cik7CmV4dGVybiBpbnQgWEluaXRJbWFnZSgKCiAgICBYSW1hZ2UqCgopOwpleHRlcm4gWEltYWdl ICpYR2V0SW1hZ2UoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgaW50ICwKICAg IGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVk IGxvbmcgLAogICAgaW50CgopOwpleHRlcm4gWEltYWdlICpYR2V0U3ViSW1hZ2UoCgogICAgRGlz cGxheSogLAogICAgRHJhd2FibGUgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBp bnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGxvbmcgLAogICAgaW50ICwKICAg IFhJbWFnZSogLAogICAgaW50ICwKICAgIGludAoKKTsKCgoKCmV4dGVybiBEaXNwbGF5ICpYT3Bl bkRpc3BsYXkoCgogICAgY29uc3QgY2hhcioKCik7CgpleHRlcm4gdm9pZCBYcm1Jbml0aWFsaXpl KAoKICAgIHZvaWQKCik7CgpleHRlcm4gY2hhciAqWEZldGNoQnl0ZXMoCgogICAgRGlzcGxheSog LAogICAgaW50KgoKKTsKZXh0ZXJuIGNoYXIgKlhGZXRjaEJ1ZmZlcigKCiAgICBEaXNwbGF5KiAs CiAgICBpbnQqICwKICAgIGludAoKKTsKZXh0ZXJuIGNoYXIgKlhHZXRBdG9tTmFtZSgKCiAgICBE aXNwbGF5KiAsCiAgICBBdG9tCgopOwpleHRlcm4gaW50IFhHZXRBdG9tTmFtZXMoCgogICAgRGlz cGxheSogLAogICAgQXRvbSogLAogICAgaW50ICwKICAgIGNoYXIqKgoKKTsKZXh0ZXJuIGNoYXIg KlhHZXREZWZhdWx0KAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGNvbnN0 IGNoYXIqCgopOwpleHRlcm4gY2hhciAqWERpc3BsYXlOYW1lKAoKICAgIGNvbnN0IGNoYXIqCgop OwpleHRlcm4gY2hhciAqWEtleXN5bVRvU3RyaW5nKAoKICAgIEtleVN5bQoKKTsKCmV4dGVybiBp bnQgKCpYU3luY2hyb25pemUoCgogICAgRGlzcGxheSogLAogICAgaW50CgopKSgKCiAgICBEaXNw bGF5KgoKKTsKZXh0ZXJuIGludCAoKlhTZXRBZnRlckZ1bmN0aW9uKAoKICAgIERpc3BsYXkqICwK ICAgIGludCAoKikgKAoKICAgICAgICAgICAgIERpc3BsYXkqCgogICAgICAgICAgICApCgopKSgK CiAgICBEaXNwbGF5KgoKKTsKZXh0ZXJuIEF0b20gWEludGVybkF0b20oCgogICAgRGlzcGxheSog LAogICAgY29uc3QgY2hhciogLAogICAgaW50CgopOwpleHRlcm4gaW50IFhJbnRlcm5BdG9tcygK CiAgICBEaXNwbGF5KiAsCiAgICBjaGFyKiogLAogICAgaW50ICwKICAgIGludCAsCiAgICBBdG9t KgoKKTsKZXh0ZXJuIENvbG9ybWFwIFhDb3B5Q29sb3JtYXBBbmRGcmVlKAoKICAgIERpc3BsYXkq ICwKICAgIENvbG9ybWFwCgopOwpleHRlcm4gQ29sb3JtYXAgWENyZWF0ZUNvbG9ybWFwKAoKICAg IERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBWaXN1YWwqICwKICAgIGludAoKKTsKZXh0ZXJu IEN1cnNvciBYQ3JlYXRlUGl4bWFwQ3Vyc29yKAoKICAgIERpc3BsYXkqICwKICAgIFBpeG1hcCAs CiAgICBQaXhtYXAgLAogICAgWENvbG9yKiAsCiAgICBYQ29sb3IqICwKICAgIHVuc2lnbmVkIGlu dCAsCiAgICB1bnNpZ25lZCBpbnQKCik7CmV4dGVybiBDdXJzb3IgWENyZWF0ZUdseXBoQ3Vyc29y KAoKICAgIERpc3BsYXkqICwKICAgIEZvbnQgLAogICAgRm9udCAsCiAgICB1bnNpZ25lZCBpbnQg LAogICAgdW5zaWduZWQgaW50ICwKICAgIFhDb2xvciBjb25zdCAqICwKICAgIFhDb2xvciBjb25z dCAqCgopOwpleHRlcm4gQ3Vyc29yIFhDcmVhdGVGb250Q3Vyc29yKAoKICAgIERpc3BsYXkqICwK ICAgIHVuc2lnbmVkIGludAoKKTsKZXh0ZXJuIEZvbnQgWExvYWRGb250KAoKICAgIERpc3BsYXkq ICwKICAgIGNvbnN0IGNoYXIqCgopOwpleHRlcm4gR0MgWENyZWF0ZUdDKAoKICAgIERpc3BsYXkq ICwKICAgIERyYXdhYmxlICwKICAgIHVuc2lnbmVkIGxvbmcgLAogICAgWEdDVmFsdWVzKgoKKTsK ZXh0ZXJuIEdDb250ZXh0IFhHQ29udGV4dEZyb21HQygKCiAgICBHQwoKKTsKZXh0ZXJuIHZvaWQg WEZsdXNoR0MoCgogICAgRGlzcGxheSogLAogICAgR0MKCik7CmV4dGVybiBQaXhtYXAgWENyZWF0 ZVBpeG1hcCgKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICB1bnNpZ25lZCBpbnQg LAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludAoKKTsKZXh0ZXJuIFBpeG1hcCBY Q3JlYXRlQml0bWFwRnJvbURhdGEoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAg Y29uc3QgY2hhciogLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludAoKKTsKZXh0 ZXJuIFBpeG1hcCBYQ3JlYXRlUGl4bWFwRnJvbUJpdG1hcERhdGEoCgogICAgRGlzcGxheSogLAog ICAgRHJhd2FibGUgLAogICAgY2hhciogLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVk IGludCAsCiAgICB1bnNpZ25lZCBsb25nICwKICAgIHVuc2lnbmVkIGxvbmcgLAogICAgdW5zaWdu ZWQgaW50CgopOwpleHRlcm4gV2luZG93IFhDcmVhdGVTaW1wbGVXaW5kb3coCgogICAgRGlzcGxh eSogLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5zaWduZWQgaW50ICwK ICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgbG9uZyAs CiAgICB1bnNpZ25lZCBsb25nCgopOwpleHRlcm4gV2luZG93IFhHZXRTZWxlY3Rpb25Pd25lcigK CiAgICBEaXNwbGF5KiAsCiAgICBBdG9tCgopOwpleHRlcm4gV2luZG93IFhDcmVhdGVXaW5kb3co CgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5z aWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgaW50 ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBWaXN1YWwqICwKICAgIHVuc2lnbmVkIGxvbmcgLAog ICAgWFNldFdpbmRvd0F0dHJpYnV0ZXMqCgopOwpleHRlcm4gQ29sb3JtYXAgKlhMaXN0SW5zdGFs bGVkQ29sb3JtYXBzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQqCgopOwpl eHRlcm4gY2hhciAqKlhMaXN0Rm9udHMoCgogICAgRGlzcGxheSogLAogICAgY29uc3QgY2hhciog LAogICAgaW50ICwKICAgIGludCoKCik7CmV4dGVybiBjaGFyICoqWExpc3RGb250c1dpdGhJbmZv KAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludCAsCiAgICBpbnQqICwK ICAgIFhGb250U3RydWN0KioKCik7CmV4dGVybiBjaGFyICoqWEdldEZvbnRQYXRoKAoKICAgIERp c3BsYXkqICwKICAgIGludCoKCik7CmV4dGVybiBjaGFyICoqWExpc3RFeHRlbnNpb25zKAoKICAg IERpc3BsYXkqICwKICAgIGludCoKCik7CmV4dGVybiBBdG9tICpYTGlzdFByb3BlcnRpZXMoCgog ICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludCoKCik7CmV4dGVybiBYSG9zdEFkZHJl c3MgKlhMaXN0SG9zdHMoCgogICAgRGlzcGxheSogLAogICAgaW50KiAsCiAgICBpbnQqCgopOwpl eHRlcm4gS2V5U3ltIFhLZXljb2RlVG9LZXlzeW0oCgogICAgRGlzcGxheSogLAoKICAgIHVuc2ln bmVkIGludCAsCgoKCiAgICBpbnQKCik7CmV4dGVybiBLZXlTeW0gWExvb2t1cEtleXN5bSgKCiAg ICBYS2V5RXZlbnQqICwKICAgIGludAoKKTsKZXh0ZXJuIEtleVN5bSAqWEdldEtleWJvYXJkTWFw cGluZygKCiAgICBEaXNwbGF5KiAsCgogICAgdW5zaWduZWQgaW50ICwKCgoKICAgIGludCAsCiAg ICBpbnQqCgopOwpleHRlcm4gS2V5U3ltIFhTdHJpbmdUb0tleXN5bSgKCiAgICBjb25zdCBjaGFy KgoKKTsKZXh0ZXJuIGxvbmcgWE1heFJlcXVlc3RTaXplKAoKICAgIERpc3BsYXkqCgopOwpleHRl cm4gbG9uZyBYRXh0ZW5kZWRNYXhSZXF1ZXN0U2l6ZSgKCiAgICBEaXNwbGF5KgoKKTsKZXh0ZXJu IGNoYXIgKlhSZXNvdXJjZU1hbmFnZXJTdHJpbmcoCgogICAgRGlzcGxheSoKCik7CmV4dGVybiBj aGFyICpYU2NyZWVuUmVzb3VyY2VTdHJpbmcoCgogICAgICAgIFNjcmVlbioKCik7CmV4dGVybiB1 bnNpZ25lZCBsb25nIFhEaXNwbGF5TW90aW9uQnVmZmVyU2l6ZSgKCiAgICBEaXNwbGF5KgoKKTsK ZXh0ZXJuIFZpc3VhbElEIFhWaXN1YWxJREZyb21WaXN1YWwoCgogICAgVmlzdWFsKgoKKTsKCgoK ZXh0ZXJuIGludCBYSW5pdFRocmVhZHMoCgogICAgdm9pZAoKKTsKCmV4dGVybiB2b2lkIFhMb2Nr RGlzcGxheSgKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiB2b2lkIFhVbmxvY2tEaXNwbGF5KAoK ICAgIERpc3BsYXkqCgopOwoKCgpleHRlcm4gWEV4dENvZGVzICpYSW5pdEV4dGVuc2lvbigKCiAg ICBEaXNwbGF5KiAsCiAgICBjb25zdCBjaGFyKgoKKTsKCmV4dGVybiBYRXh0Q29kZXMgKlhBZGRF eHRlbnNpb24oCgogICAgRGlzcGxheSoKCik7CmV4dGVybiBYRXh0RGF0YSAqWEZpbmRPbkV4dGVu c2lvbkxpc3QoCgogICAgWEV4dERhdGEqKiAsCiAgICBpbnQKCik7CmV4dGVybiBYRXh0RGF0YSAq KlhFSGVhZE9mRXh0ZW5zaW9uTGlzdCgKCiAgICBYRURhdGFPYmplY3QKCik7CgoKZXh0ZXJuIFdp bmRvdyBYUm9vdFdpbmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCik7CmV4dGVybiBXaW5k b3cgWERlZmF1bHRSb290V2luZG93KAoKICAgIERpc3BsYXkqCgopOwpleHRlcm4gV2luZG93IFhS b290V2luZG93T2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKZXh0ZXJuIFZpc3VhbCAqWERlZmF1 bHRWaXN1YWwoCgogICAgRGlzcGxheSogLAogICAgaW50CgopOwpleHRlcm4gVmlzdWFsICpYRGVm YXVsdFZpc3VhbE9mU2NyZWVuKAoKICAgIFNjcmVlbioKCik7CmV4dGVybiBHQyBYRGVmYXVsdEdD KAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKZXh0ZXJuIEdDIFhEZWZhdWx0R0NPZlNjcmVl bigKCiAgICBTY3JlZW4qCgopOwpleHRlcm4gdW5zaWduZWQgbG9uZyBYQmxhY2tQaXhlbCgKCiAg ICBEaXNwbGF5KiAsCiAgICBpbnQKCik7CmV4dGVybiB1bnNpZ25lZCBsb25nIFhXaGl0ZVBpeGVs KAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWEFsbFBs YW5lcygKCiAgICB2b2lkCgopOwpleHRlcm4gdW5zaWduZWQgbG9uZyBYQmxhY2tQaXhlbE9mU2Ny ZWVuKAoKICAgIFNjcmVlbioKCik7CmV4dGVybiB1bnNpZ25lZCBsb25nIFhXaGl0ZVBpeGVsT2ZT Y3JlZW4oCgogICAgU2NyZWVuKgoKKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWE5leHRSZXF1ZXN0 KAoKICAgIERpc3BsYXkqCgopOwpleHRlcm4gdW5zaWduZWQgbG9uZyBYTGFzdEtub3duUmVxdWVz dFByb2Nlc3NlZCgKCiAgICBEaXNwbGF5KgoKKTsKZXh0ZXJuIGNoYXIgKlhTZXJ2ZXJWZW5kb3Io CgogICAgRGlzcGxheSoKCik7CmV4dGVybiBjaGFyICpYRGlzcGxheVN0cmluZygKCiAgICBEaXNw bGF5KgoKKTsKZXh0ZXJuIENvbG9ybWFwIFhEZWZhdWx0Q29sb3JtYXAoCgogICAgRGlzcGxheSog LAogICAgaW50CgopOwpleHRlcm4gQ29sb3JtYXAgWERlZmF1bHRDb2xvcm1hcE9mU2NyZWVuKAoK ICAgIFNjcmVlbioKCik7CmV4dGVybiBEaXNwbGF5ICpYRGlzcGxheU9mU2NyZWVuKAoKICAgIFNj cmVlbioKCik7CmV4dGVybiBTY3JlZW4gKlhTY3JlZW5PZkRpc3BsYXkoCgogICAgRGlzcGxheSog LAogICAgaW50CgopOwpleHRlcm4gU2NyZWVuICpYRGVmYXVsdFNjcmVlbk9mRGlzcGxheSgKCiAg ICBEaXNwbGF5KgoKKTsKZXh0ZXJuIGxvbmcgWEV2ZW50TWFza09mU2NyZWVuKAoKICAgIFNjcmVl bioKCik7CgpleHRlcm4gaW50IFhTY3JlZW5OdW1iZXJPZlNjcmVlbigKCiAgICBTY3JlZW4qCgop OwoKdHlwZWRlZiBpbnQgKCpYRXJyb3JIYW5kbGVyKSAoCgogICAgRGlzcGxheSogLAogICAgWEVy cm9yRXZlbnQqCgopOwoKZXh0ZXJuIFhFcnJvckhhbmRsZXIgWFNldEVycm9ySGFuZGxlciAoCgog ICAgWEVycm9ySGFuZGxlcgoKKTsKCgp0eXBlZGVmIGludCAoKlhJT0Vycm9ySGFuZGxlcikgKAoK ICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIFhJT0Vycm9ySGFuZGxlciBYU2V0SU9FcnJvckhhbmRs ZXIgKAoKICAgIFhJT0Vycm9ySGFuZGxlcgoKKTsKCgpleHRlcm4gWFBpeG1hcEZvcm1hdFZhbHVl cyAqWExpc3RQaXhtYXBGb3JtYXRzKAoKICAgIERpc3BsYXkqICwKICAgIGludCoKCik7CmV4dGVy biBpbnQgKlhMaXN0RGVwdGhzKAoKICAgIERpc3BsYXkqICwKICAgIGludCAsCiAgICBpbnQqCgop OwoKCgpleHRlcm4gaW50IFhSZWNvbmZpZ3VyZVdNV2luZG93KAoKICAgIERpc3BsYXkqICwKICAg IFdpbmRvdyAsCiAgICBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIFhXaW5kb3dDaGFuZ2Vz KgoKKTsKCmV4dGVybiBpbnQgWEdldFdNUHJvdG9jb2xzKAoKICAgIERpc3BsYXkqICwKICAgIFdp bmRvdyAsCiAgICBBdG9tKiogLAogICAgaW50KgoKKTsKZXh0ZXJuIGludCBYU2V0V01Qcm90b2Nv bHMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIEF0b20qICwKICAgIGludAoKKTsK ZXh0ZXJuIGludCBYSWNvbmlmeVdpbmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAog ICAgaW50CgopOwpleHRlcm4gaW50IFhXaXRoZHJhd1dpbmRvdygKCiAgICBEaXNwbGF5KiAsCiAg ICBXaW5kb3cgLAogICAgaW50CgopOwpleHRlcm4gaW50IFhHZXRDb21tYW5kKAoKICAgIERpc3Bs YXkqICwKICAgIFdpbmRvdyAsCiAgICBjaGFyKioqICwKICAgIGludCoKCik7CmV4dGVybiBpbnQg WEdldFdNQ29sb3JtYXBXaW5kb3dzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBX aW5kb3cqKiAsCiAgICBpbnQqCgopOwpleHRlcm4gaW50IFhTZXRXTUNvbG9ybWFwV2luZG93cygK CiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgV2luZG93KiAsCiAgICBpbnQKCik7CmV4 dGVybiB2b2lkIFhGcmVlU3RyaW5nTGlzdCgKCiAgICBjaGFyKioKCik7CmV4dGVybiBpbnQgWFNl dFRyYW5zaWVudEZvckhpbnQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFdpbmRv dwoKKTsKCgoKZXh0ZXJuIGludCBYQWN0aXZhdGVTY3JlZW5TYXZlcigKCiAgICBEaXNwbGF5KgoK KTsKCmV4dGVybiBpbnQgWEFkZEhvc3QoCgogICAgRGlzcGxheSogLAogICAgWEhvc3RBZGRyZXNz KgoKKTsKCmV4dGVybiBpbnQgWEFkZEhvc3RzKAoKICAgIERpc3BsYXkqICwKICAgIFhIb3N0QWRk cmVzcyogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYQWRkVG9FeHRlbnNpb25MaXN0KAoKICAg IHN0cnVjdCBfWEV4dERhdGEqKiAsCiAgICBYRXh0RGF0YSoKCik7CgpleHRlcm4gaW50IFhBZGRU b1NhdmVTZXQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYQWxs b2NDb2xvcigKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xvcm1hcCAsCiAgICBYQ29sb3IqCgopOwoK ZXh0ZXJuIGludCBYQWxsb2NDb2xvckNlbGxzKAoKICAgIERpc3BsYXkqICwKICAgIENvbG9ybWFw ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBsb25nKiAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAg dW5zaWduZWQgbG9uZyogLAogICAgdW5zaWduZWQgaW50CgopOwoKZXh0ZXJuIGludCBYQWxsb2ND b2xvclBsYW5lcygKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xvcm1hcCAsCiAgICBpbnQgLAogICAg dW5zaWduZWQgbG9uZyogLAogICAgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgaW50ICwK ICAgIHVuc2lnbmVkIGxvbmcqICwKICAgIHVuc2lnbmVkIGxvbmcqICwKICAgIHVuc2lnbmVkIGxv bmcqCgopOwoKZXh0ZXJuIGludCBYQWxsb2NOYW1lZENvbG9yKAoKICAgIERpc3BsYXkqICwKICAg IENvbG9ybWFwICwKICAgIGNvbnN0IGNoYXIqICwKICAgIFhDb2xvciogLAogICAgWENvbG9yKgoK KTsKCmV4dGVybiBpbnQgWEFsbG93RXZlbnRzKAoKICAgIERpc3BsYXkqICwKICAgIGludCAsCiAg ICBUaW1lCgopOwoKZXh0ZXJuIGludCBYQXV0b1JlcGVhdE9mZigKCiAgICBEaXNwbGF5KgoKKTsK CmV4dGVybiBpbnQgWEF1dG9SZXBlYXRPbigKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQg WEJlbGwoCgogICAgRGlzcGxheSogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYQml0bWFwQml0 T3JkZXIoCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50IFhCaXRtYXBQYWQoCgogICAgRGlz cGxheSoKCik7CgpleHRlcm4gaW50IFhCaXRtYXBVbml0KAoKICAgIERpc3BsYXkqCgopOwoKZXh0 ZXJuIGludCBYQ2VsbHNPZlNjcmVlbigKCiAgICBTY3JlZW4qCgopOwoKZXh0ZXJuIGludCBYQ2hh bmdlQWN0aXZlUG9pbnRlckdyYWIoCgogICAgRGlzcGxheSogLAogICAgdW5zaWduZWQgaW50ICwK ICAgIEN1cnNvciAsCiAgICBUaW1lCgopOwoKZXh0ZXJuIGludCBYQ2hhbmdlR0MoCgogICAgRGlz cGxheSogLAogICAgR0MgLAogICAgdW5zaWduZWQgbG9uZyAsCiAgICBYR0NWYWx1ZXMqCgopOwoK ZXh0ZXJuIGludCBYQ2hhbmdlS2V5Ym9hcmRDb250cm9sKAoKICAgIERpc3BsYXkqICwKICAgIHVu c2lnbmVkIGxvbmcgLAogICAgWEtleWJvYXJkQ29udHJvbCoKCik7CgpleHRlcm4gaW50IFhDaGFu Z2VLZXlib2FyZE1hcHBpbmcoCgogICAgRGlzcGxheSogLAogICAgaW50ICwKICAgIGludCAsCiAg ICBLZXlTeW0qICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWENoYW5nZVBvaW50ZXJDb250cm9s KAoKICAgIERpc3BsYXkqICwKICAgIGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGludCAs CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhDaGFuZ2VQcm9wZXJ0eSgKCiAgICBEaXNwbGF5KiAs CiAgICBXaW5kb3cgLAogICAgQXRvbSAsCiAgICBBdG9tICwKICAgIGludCAsCiAgICBpbnQgLAog ICAgY29uc3QgdW5zaWduZWQgY2hhciogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYQ2hhbmdl U2F2ZVNldCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50CgopOwoKZXh0ZXJu IGludCBYQ2hhbmdlV2luZG93QXR0cmlidXRlcygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cg LAogICAgdW5zaWduZWQgbG9uZyAsCiAgICBYU2V0V2luZG93QXR0cmlidXRlcyoKCik7CgpleHRl cm4gaW50IFhDaGVja0lmRXZlbnQoCgogICAgRGlzcGxheSogLAogICAgWEV2ZW50KiAsCiAgICBp bnQgKCopICgKCiAgICAgICAgICAgICAgIERpc3BsYXkqICwKICAgICAgICAgICAgICAgWEV2ZW50 KiAsCiAgICAgICAgICAgICAgIFhQb2ludGVyCgogICAgICAgICAgICAgKSAsCiAgICBYUG9pbnRl cgoKKTsKCmV4dGVybiBpbnQgWENoZWNrTWFza0V2ZW50KAoKICAgIERpc3BsYXkqICwKICAgIGxv bmcgLAogICAgWEV2ZW50KgoKKTsKCmV4dGVybiBpbnQgWENoZWNrVHlwZWRFdmVudCgKCiAgICBE aXNwbGF5KiAsCiAgICBpbnQgLAogICAgWEV2ZW50KgoKKTsKCmV4dGVybiBpbnQgWENoZWNrVHlw ZWRXaW5kb3dFdmVudCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAg IFhFdmVudCoKCik7CgpleHRlcm4gaW50IFhDaGVja1dpbmRvd0V2ZW50KAoKICAgIERpc3BsYXkq ICwKICAgIFdpbmRvdyAsCiAgICBsb25nICwKICAgIFhFdmVudCoKCik7CgpleHRlcm4gaW50IFhD aXJjdWxhdGVTdWJ3aW5kb3dzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQK Cik7CgpleHRlcm4gaW50IFhDaXJjdWxhdGVTdWJ3aW5kb3dzRG93bigKCiAgICBEaXNwbGF5KiAs CiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhDaXJjdWxhdGVTdWJ3aW5kb3dzVXAoCgogICAg RGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYQ2xlYXJBcmVhKAoKICAgIERp c3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVkIGlu dCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYQ2xlYXJXaW5k b3coCgogICAgRGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYQ2xvc2VEaXNw bGF5KAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIGludCBYQ29uZmlndXJlV2luZG93KAoKICAg IERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgWFdpbmRvd0No YW5nZXMqCgopOwoKZXh0ZXJuIGludCBYQ29ubmVjdGlvbk51bWJlcigKCiAgICBEaXNwbGF5KgoK KTsKCmV4dGVybiBpbnQgWENvbnZlcnRTZWxlY3Rpb24oCgogICAgRGlzcGxheSogLAogICAgQXRv bSAsCiAgICBBdG9tICwKICAgIEF0b20gLAogICAgV2luZG93ICwKICAgIFRpbWUKCik7CgpleHRl cm4gaW50IFhDb3B5QXJlYSgKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBEcmF3 YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAg ICB1bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWENvcHlH QygKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICB1bnNpZ25lZCBsb25nICwKICAgIEdDCgop OwoKZXh0ZXJuIGludCBYQ29weVBsYW5lKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwK ICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5zaWduZWQg aW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVk IGxvbmcKCik7CgpleHRlcm4gaW50IFhEZWZhdWx0RGVwdGgoCgogICAgRGlzcGxheSogLAogICAg aW50CgopOwoKZXh0ZXJuIGludCBYRGVmYXVsdERlcHRoT2ZTY3JlZW4oCgogICAgU2NyZWVuKgoK KTsKCmV4dGVybiBpbnQgWERlZmF1bHRTY3JlZW4oCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4g aW50IFhEZWZpbmVDdXJzb3IoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIEN1cnNv cgoKKTsKCmV4dGVybiBpbnQgWERlbGV0ZVByb3BlcnR5KAoKICAgIERpc3BsYXkqICwKICAgIFdp bmRvdyAsCiAgICBBdG9tCgopOwoKZXh0ZXJuIGludCBYRGVzdHJveVdpbmRvdygKCiAgICBEaXNw bGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhEZXN0cm95U3Vid2luZG93cygKCiAg ICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhEb2VzQmFja2luZ1N0b3Jl KAoKICAgIFNjcmVlbioKCik7CgpleHRlcm4gaW50IFhEb2VzU2F2ZVVuZGVycygKCiAgICBTY3Jl ZW4qCgopOwoKZXh0ZXJuIGludCBYRGlzYWJsZUFjY2Vzc0NvbnRyb2woCgogICAgRGlzcGxheSoK Cik7CgoKZXh0ZXJuIGludCBYRGlzcGxheUNlbGxzKAoKICAgIERpc3BsYXkqICwKICAgIGludAoK KTsKCmV4dGVybiBpbnQgWERpc3BsYXlIZWlnaHQoCgogICAgRGlzcGxheSogLAogICAgaW50Cgop OwoKZXh0ZXJuIGludCBYRGlzcGxheUhlaWdodE1NKAoKICAgIERpc3BsYXkqICwKICAgIGludAoK KTsKCmV4dGVybiBpbnQgWERpc3BsYXlLZXljb2RlcygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQq ICwKICAgIGludCoKCik7CgpleHRlcm4gaW50IFhEaXNwbGF5UGxhbmVzKAoKICAgIERpc3BsYXkq ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERpc3BsYXlXaWR0aCgKCiAgICBEaXNwbGF5KiAs CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEaXNwbGF5V2lkdGhNTSgKCiAgICBEaXNwbGF5KiAs CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3QXJjKAoKICAgIERpc3BsYXkqICwKICAgIERy YXdhYmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5zaWduZWQgaW50ICwK ICAgIHVuc2lnbmVkIGludCAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJh d0FyY3MoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgWEFyYyog LAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd0ltYWdlU3RyaW5nKAoKICAgIERpc3BsYXkq ICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgY29uc3Qg Y2hhciogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd0ltYWdlU3RyaW5nMTYoCgogICAg RGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAg ICBjb25zdCBYQ2hhcjJiKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3TGluZSgKCiAg ICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwK ICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3TGluZXMoCgogICAgRGlzcGxh eSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgWFBvaW50KiAsCiAgICBpbnQgLAogICAg aW50CgopOwoKZXh0ZXJuIGludCBYRHJhd1BvaW50KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdh YmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3UG9p bnRzKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIFhQb2ludCog LAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdSZWN0YW5nbGUoCgogICAg RGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAg ICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd1Jl Y3RhbmdsZXMoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgWFJl Y3RhbmdsZSogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd1NlZ21lbnRzKAoKICAgIERp c3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIFhTZWdtZW50KiAsCiAgICBpbnQK Cik7CgpleHRlcm4gaW50IFhEcmF3U3RyaW5nKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxl ICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgY29uc3QgY2hhciogLAogICAgaW50 CgopOwoKZXh0ZXJuIGludCBYRHJhd1N0cmluZzE2KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdh YmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgY29uc3QgWENoYXIyYiogLAog ICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd1RleHQoCgogICAgRGlzcGxheSogLAogICAgRHJh d2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICBYVGV4dEl0ZW0qICwKICAg IGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdUZXh0MTYoCgogICAgRGlzcGxheSogLAogICAgRHJh d2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICBYVGV4dEl0ZW0xNiogLAog ICAgaW50CgopOwoKZXh0ZXJuIGludCBYRW5hYmxlQWNjZXNzQ29udHJvbCgKCiAgICBEaXNwbGF5 KgoKKTsKCmV4dGVybiBpbnQgWEV2ZW50c1F1ZXVlZCgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQK Cik7CgpleHRlcm4gaW50IFhGZXRjaE5hbWUoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwK ICAgIGNoYXIqKgoKKTsKCmV4dGVybiBpbnQgWEZpbGxBcmMoCgogICAgRGlzcGxheSogLAogICAg RHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBpbnQg LAogICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhG aWxsQXJjcygKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBYQXJj KiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhGaWxsUG9seWdvbigKCiAgICBEaXNwbGF5KiAs CiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBYUG9pbnQqICwKICAgIGludCAsCiAgICBpbnQg LAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRmlsbFJlY3RhbmdsZSgKCiAgICBEaXNwbGF5KiAs CiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVk IGludCAsCiAgICB1bnNpZ25lZCBpbnQKCik7CgpleHRlcm4gaW50IFhGaWxsUmVjdGFuZ2xlcygK CiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBYUmVjdGFuZ2xlKiAs CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhGbHVzaCgKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVy biBpbnQgWEZvcmNlU2NyZWVuU2F2ZXIoCgogICAgRGlzcGxheSogLAogICAgaW50CgopOwoKZXh0 ZXJuIGludCBYRnJlZSgKCiAgICB2b2lkKgoKKTsKCmV4dGVybiBpbnQgWEZyZWVDb2xvcm1hcCgK CiAgICBEaXNwbGF5KiAsCiAgICBDb2xvcm1hcAoKKTsKCmV4dGVybiBpbnQgWEZyZWVDb2xvcnMo CgogICAgRGlzcGxheSogLAogICAgQ29sb3JtYXAgLAogICAgdW5zaWduZWQgbG9uZyogLAogICAg aW50ICwKICAgIHVuc2lnbmVkIGxvbmcKCik7CgpleHRlcm4gaW50IFhGcmVlQ3Vyc29yKAoKICAg IERpc3BsYXkqICwKICAgIEN1cnNvcgoKKTsKCmV4dGVybiBpbnQgWEZyZWVFeHRlbnNpb25MaXN0 KAoKICAgIGNoYXIqKgoKKTsKCmV4dGVybiBpbnQgWEZyZWVGb250KAoKICAgIERpc3BsYXkqICwK ICAgIFhGb250U3RydWN0KgoKKTsKCmV4dGVybiBpbnQgWEZyZWVGb250SW5mbygKCiAgICBjaGFy KiogLAogICAgWEZvbnRTdHJ1Y3QqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWEZyZWVGb250 TmFtZXMoCgogICAgY2hhcioqCgopOwoKZXh0ZXJuIGludCBYRnJlZUZvbnRQYXRoKAoKICAgIGNo YXIqKgoKKTsKCmV4dGVybiBpbnQgWEZyZWVHQygKCiAgICBEaXNwbGF5KiAsCiAgICBHQwoKKTsK CmV4dGVybiBpbnQgWEZyZWVNb2RpZmllcm1hcCgKCiAgICBYTW9kaWZpZXJLZXltYXAqCgopOwoK ZXh0ZXJuIGludCBYRnJlZVBpeG1hcCgKCiAgICBEaXNwbGF5KiAsCiAgICBQaXhtYXAKCik7Cgpl eHRlcm4gaW50IFhHZW9tZXRyeSgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQgLAogICAgY29uc3Qg Y2hhciogLAogICAgY29uc3QgY2hhciogLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVk IGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICBpbnQqICwK ICAgIGludCogLAogICAgaW50KiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIGludCBYR2V0RXJyb3JE YXRhYmFzZVRleHQoCgogICAgRGlzcGxheSogLAogICAgY29uc3QgY2hhciogLAogICAgY29uc3Qg Y2hhciogLAogICAgY29uc3QgY2hhciogLAogICAgY2hhciogLAogICAgaW50CgopOwoKZXh0ZXJu IGludCBYR2V0RXJyb3JUZXh0KAoKICAgIERpc3BsYXkqICwKICAgIGludCAsCiAgICBjaGFyKiAs CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhHZXRGb250UHJvcGVydHkoCgogICAgWEZvbnRTdHJ1 Y3QqICwKICAgIEF0b20gLAogICAgdW5zaWduZWQgbG9uZyoKCik7CgpleHRlcm4gaW50IFhHZXRH Q1ZhbHVlcygKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICB1bnNpZ25lZCBsb25nICwKICAg IFhHQ1ZhbHVlcyoKCik7CgpleHRlcm4gaW50IFhHZXRHZW9tZXRyeSgKCiAgICBEaXNwbGF5KiAs CiAgICBEcmF3YWJsZSAsCiAgICBXaW5kb3cqICwKICAgIGludCogLAogICAgaW50KiAsCiAgICB1 bnNpZ25lZCBpbnQqICwKICAgIHVuc2lnbmVkIGludCogLAogICAgdW5zaWduZWQgaW50KiAsCiAg ICB1bnNpZ25lZCBpbnQqCgopOwoKZXh0ZXJuIGludCBYR2V0SWNvbk5hbWUoCgogICAgRGlzcGxh eSogLAogICAgV2luZG93ICwKICAgIGNoYXIqKgoKKTsKCmV4dGVybiBpbnQgWEdldElucHV0Rm9j dXMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93KiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIGlu dCBYR2V0S2V5Ym9hcmRDb250cm9sKAoKICAgIERpc3BsYXkqICwKICAgIFhLZXlib2FyZFN0YXRl KgoKKTsKCmV4dGVybiBpbnQgWEdldFBvaW50ZXJDb250cm9sKAoKICAgIERpc3BsYXkqICwKICAg IGludCogLAogICAgaW50KiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIGludCBYR2V0UG9pbnRlck1h cHBpbmcoCgogICAgRGlzcGxheSogLAogICAgdW5zaWduZWQgY2hhciogLAogICAgaW50CgopOwoK ZXh0ZXJuIGludCBYR2V0U2NyZWVuU2F2ZXIoCgogICAgRGlzcGxheSogLAogICAgaW50KiAsCiAg ICBpbnQqICwKICAgIGludCogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWEdldFRyYW5zaWVu dEZvckhpbnQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFdpbmRvdyoKCik7Cgpl eHRlcm4gaW50IFhHZXRXaW5kb3dQcm9wZXJ0eSgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cg LAogICAgQXRvbSAsCiAgICBsb25nICwKICAgIGxvbmcgLAogICAgaW50ICwKICAgIEF0b20gLAog ICAgQXRvbSogLAogICAgaW50KiAsCiAgICB1bnNpZ25lZCBsb25nKiAsCiAgICB1bnNpZ25lZCBs b25nKiAsCiAgICB1bnNpZ25lZCBjaGFyKioKCik7CgpleHRlcm4gaW50IFhHZXRXaW5kb3dBdHRy aWJ1dGVzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYV2luZG93QXR0cmlidXRl cyoKCik7CgpleHRlcm4gaW50IFhHcmFiQnV0dG9uKAoKICAgIERpc3BsYXkqICwKICAgIHVuc2ln bmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICB1 bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICBXaW5kb3cgLAogICAgQ3Vyc29y CgopOwoKZXh0ZXJuIGludCBYR3JhYktleSgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQgLAogICAg dW5zaWduZWQgaW50ICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGludAoK KTsKCmV4dGVybiBpbnQgWEdyYWJLZXlib2FyZCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cg LAogICAgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgVGltZQoKKTsKCmV4dGVybiBpbnQg WEdyYWJQb2ludGVyKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAg dW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgV2luZG93ICwKICAgIEN1cnNv ciAsCiAgICBUaW1lCgopOwoKZXh0ZXJuIGludCBYR3JhYlNlcnZlcigKCiAgICBEaXNwbGF5KgoK KTsKCmV4dGVybiBpbnQgWEhlaWdodE1NT2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKCmV4dGVy biBpbnQgWEhlaWdodE9mU2NyZWVuKAoKICAgIFNjcmVlbioKCik7CgpleHRlcm4gaW50IFhJZkV2 ZW50KAoKICAgIERpc3BsYXkqICwKICAgIFhFdmVudCogLAogICAgaW50ICgqKSAoCgogICAgICAg ICAgICAgICBEaXNwbGF5KiAsCiAgICAgICAgICAgICAgIFhFdmVudCogLAogICAgICAgICAgICAg ICBYUG9pbnRlcgoKICAgICAgICAgICAgICkgLAogICAgWFBvaW50ZXIKCik7CgpleHRlcm4gaW50 IFhJbWFnZUJ5dGVPcmRlcigKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQgWEluc3RhbGxD b2xvcm1hcCgKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xvcm1hcAoKKTsKCmV4dGVybiBLZXlDb2Rl IFhLZXlzeW1Ub0tleWNvZGUoCgogICAgRGlzcGxheSogLAogICAgS2V5U3ltCgopOwoKZXh0ZXJu IGludCBYS2lsbENsaWVudCgKCiAgICBEaXNwbGF5KiAsCiAgICBYSUQKCik7CgpleHRlcm4gaW50 IFhMb29rdXBDb2xvcigKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xvcm1hcCAsCiAgICBjb25zdCBj aGFyKiAsCiAgICBYQ29sb3IqICwKICAgIFhDb2xvcioKCik7CgpleHRlcm4gaW50IFhMb3dlcldp bmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhNYXBSYWlz ZWQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYTWFwU3Vid2lu ZG93cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhNYXBXaW5k b3coCgogICAgRGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYTWFza0V2ZW50 KAoKICAgIERpc3BsYXkqICwKICAgIGxvbmcgLAogICAgWEV2ZW50KgoKKTsKCmV4dGVybiBpbnQg WE1heENtYXBzT2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKCmV4dGVybiBpbnQgWE1pbkNtYXBz T2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKCmV4dGVybiBpbnQgWE1vdmVSZXNpemVXaW5kb3co CgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5z aWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludAoKKTsKCmV4dGVybiBpbnQgWE1vdmVXaW5kb3co CgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRl cm4gaW50IFhOZXh0RXZlbnQoCgogICAgRGlzcGxheSogLAogICAgWEV2ZW50KgoKKTsKCmV4dGVy biBpbnQgWE5vT3AoCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50IFhQYXJzZUNvbG9yKAoK ICAgIERpc3BsYXkqICwKICAgIENvbG9ybWFwICwKICAgIGNvbnN0IGNoYXIqICwKICAgIFhDb2xv cioKCik7CgpleHRlcm4gaW50IFhQYXJzZUdlb21ldHJ5KAoKICAgIGNvbnN0IGNoYXIqICwKICAg IGludCogLAogICAgaW50KiAsCiAgICB1bnNpZ25lZCBpbnQqICwKICAgIHVuc2lnbmVkIGludCoK Cik7CgpleHRlcm4gaW50IFhQZWVrRXZlbnQoCgogICAgRGlzcGxheSogLAogICAgWEV2ZW50KgoK KTsKCmV4dGVybiBpbnQgWFBlZWtJZkV2ZW50KAoKICAgIERpc3BsYXkqICwKICAgIFhFdmVudCog LAogICAgaW50ICgqKSAoCgogICAgICAgICAgICAgICBEaXNwbGF5KiAsCiAgICAgICAgICAgICAg IFhFdmVudCogLAogICAgICAgICAgICAgICBYUG9pbnRlcgoKICAgICAgICAgICAgICkgLAogICAg WFBvaW50ZXIKCik7CgpleHRlcm4gaW50IFhQZW5kaW5nKAoKICAgIERpc3BsYXkqCgopOwoKZXh0 ZXJuIGludCBYUGxhbmVzT2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKCik7CgpleHRlcm4gaW50IFhQ cm90b2NvbFJldmlzaW9uKAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIGludCBYUHJvdG9jb2xW ZXJzaW9uKAoKICAgIERpc3BsYXkqCgopOwoKCmV4dGVybiBpbnQgWFB1dEJhY2tFdmVudCgKCiAg ICBEaXNwbGF5KiAsCiAgICBYRXZlbnQqCgopOwoKZXh0ZXJuIGludCBYUHV0SW1hZ2UoCgogICAg RGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgWEltYWdlKiAsCiAgICBpbnQg LAogICAgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVu c2lnbmVkIGludAoKKTsKCmV4dGVybiBpbnQgWFFMZW5ndGgoCgogICAgRGlzcGxheSoKCik7Cgpl eHRlcm4gaW50IFhRdWVyeUJlc3RDdXJzb3IoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUg LAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQq ICwKICAgIHVuc2lnbmVkIGludCoKCik7CgpleHRlcm4gaW50IFhRdWVyeUJlc3RTaXplKAoKICAg IERpc3BsYXkqICwKICAgIGludCAsCiAgICBEcmF3YWJsZSAsCiAgICB1bnNpZ25lZCBpbnQgLAog ICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCogLAogICAgdW5zaWduZWQgaW50KgoK KTsKCmV4dGVybiBpbnQgWFF1ZXJ5QmVzdFN0aXBwbGUoCgogICAgRGlzcGxheSogLAogICAgRHJh d2FibGUgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25l ZCBpbnQqICwKICAgIHVuc2lnbmVkIGludCoKCik7CgpleHRlcm4gaW50IFhRdWVyeUJlc3RUaWxl KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1 bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50KiAsCiAgICB1bnNpZ25lZCBpbnQqCgopOwoK ZXh0ZXJuIGludCBYUXVlcnlDb2xvcigKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xvcm1hcCAsCiAg ICBYQ29sb3IqCgopOwoKZXh0ZXJuIGludCBYUXVlcnlDb2xvcnMoCgogICAgRGlzcGxheSogLAog ICAgQ29sb3JtYXAgLAogICAgWENvbG9yKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhRdWVy eUV4dGVuc2lvbigKCiAgICBEaXNwbGF5KiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQqICwK ICAgIGludCogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWFF1ZXJ5S2V5bWFwKAoKICAgIERp c3BsYXkqICwKICAgIGNoYXIgWzMyXQoKKTsKCmV4dGVybiBpbnQgWFF1ZXJ5UG9pbnRlcigKCiAg ICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgV2luZG93KiAsCiAgICBXaW5kb3cqICwKICAg IGludCogLAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIGludCogLAogICAgdW5zaWduZWQgaW50 KgoKKTsKCmV4dGVybiBpbnQgWFF1ZXJ5VGV4dEV4dGVudHMoCgogICAgRGlzcGxheSogLAogICAg WElEICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludCAsCiAgICBpbnQqICwKICAgIGludCogLAog ICAgaW50KiAsCiAgICBYQ2hhclN0cnVjdCoKCik7CgpleHRlcm4gaW50IFhRdWVyeVRleHRFeHRl bnRzMTYoCgogICAgRGlzcGxheSogLAogICAgWElEICwKICAgIGNvbnN0IFhDaGFyMmIqICwKICAg IGludCAsCiAgICBpbnQqICwKICAgIGludCogLAogICAgaW50KiAsCiAgICBYQ2hhclN0cnVjdCoK Cik7CgpleHRlcm4gaW50IFhRdWVyeVRyZWUoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwK ICAgIFdpbmRvdyogLAogICAgV2luZG93KiAsCiAgICBXaW5kb3cqKiAsCiAgICB1bnNpZ25lZCBp bnQqCgopOwoKZXh0ZXJuIGludCBYUmFpc2VXaW5kb3coCgogICAgRGlzcGxheSogLAogICAgV2lu ZG93CgopOwoKZXh0ZXJuIGludCBYUmVhZEJpdG1hcEZpbGUoCgogICAgRGlzcGxheSogLAogICAg RHJhd2FibGUgLAogICAgY29uc3QgY2hhciogLAogICAgdW5zaWduZWQgaW50KiAsCiAgICB1bnNp Z25lZCBpbnQqICwKICAgIFBpeG1hcCogLAogICAgaW50KiAsCiAgICBpbnQqCgopOwoKZXh0ZXJu IGludCBYUmVhZEJpdG1hcEZpbGVEYXRhKAoKICAgIGNvbnN0IGNoYXIqICwKICAgIHVuc2lnbmVk IGludCogLAogICAgdW5zaWduZWQgaW50KiAsCiAgICB1bnNpZ25lZCBjaGFyKiogLAogICAgaW50 KiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIGludCBYUmViaW5kS2V5c3ltKAoKICAgIERpc3BsYXkq ICwKICAgIEtleVN5bSAsCiAgICBLZXlTeW0qICwKICAgIGludCAsCiAgICBjb25zdCB1bnNpZ25l ZCBjaGFyKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhSZWNvbG9yQ3Vyc29yKAoKICAgIERp c3BsYXkqICwKICAgIEN1cnNvciAsCiAgICBYQ29sb3IqICwKICAgIFhDb2xvcioKCik7CgpleHRl cm4gaW50IFhSZWZyZXNoS2V5Ym9hcmRNYXBwaW5nKAoKICAgIFhNYXBwaW5nRXZlbnQqCgopOwoK ZXh0ZXJuIGludCBYUmVtb3ZlRnJvbVNhdmVTZXQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93 CgopOwoKZXh0ZXJuIGludCBYUmVtb3ZlSG9zdCgKCiAgICBEaXNwbGF5KiAsCiAgICBYSG9zdEFk ZHJlc3MqCgopOwoKZXh0ZXJuIGludCBYUmVtb3ZlSG9zdHMoCgogICAgRGlzcGxheSogLAogICAg WEhvc3RBZGRyZXNzKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhSZXBhcmVudFdpbmRvdygK CiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBp bnQKCik7CgpleHRlcm4gaW50IFhSZXNldFNjcmVlblNhdmVyKAoKICAgIERpc3BsYXkqCgopOwoK ZXh0ZXJuIGludCBYUmVzaXplV2luZG93KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAg ICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50CgopOwoKZXh0ZXJuIGludCBYUmVzdGFj a1dpbmRvd3MoCgogICAgRGlzcGxheSogLAogICAgV2luZG93KiAsCiAgICBpbnQKCik7CgpleHRl cm4gaW50IFhSb3RhdGVCdWZmZXJzKAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKCmV4dGVy biBpbnQgWFJvdGF0ZVdpbmRvd1Byb3BlcnRpZXMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93 ICwKICAgIEF0b20qICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTY3JlZW5D b3VudCgKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQgWFNlbGVjdElucHV0KAoKICAgIERp c3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBsb25nCgopOwoKZXh0ZXJuIGludCBYU2VuZEV2ZW50 KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgbG9uZyAsCiAgICBY RXZlbnQqCgopOwoKZXh0ZXJuIGludCBYU2V0QWNjZXNzQ29udHJvbCgKCiAgICBEaXNwbGF5KiAs CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRBcmNNb2RlKAoKICAgIERpc3BsYXkqICwKICAg IEdDICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFNldEJhY2tncm91bmQoCgogICAgRGlzcGxh eSogLAogICAgR0MgLAogICAgdW5zaWduZWQgbG9uZwoKKTsKCmV4dGVybiBpbnQgWFNldENsaXBN YXNrKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAgIFBpeG1hcAoKKTsKCmV4dGVybiBpbnQg WFNldENsaXBPcmlnaW4oCgogICAgRGlzcGxheSogLAogICAgR0MgLAogICAgaW50ICwKICAgIGlu dAoKKTsKCmV4dGVybiBpbnQgWFNldENsaXBSZWN0YW5nbGVzKAoKICAgIERpc3BsYXkqICwKICAg IEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgWFJlY3RhbmdsZSogLAogICAgaW50ICwKICAg IGludAoKKTsKCmV4dGVybiBpbnQgWFNldENsb3NlRG93bk1vZGUoCgogICAgRGlzcGxheSogLAog ICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0Q29tbWFuZCgKCiAgICBEaXNwbGF5KiAsCiAgICBX aW5kb3cgLAogICAgY2hhcioqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFNldERhc2hlcygK CiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgY29uc3QgY2hhciogLAogICAg aW50CgopOwoKZXh0ZXJuIGludCBYU2V0RmlsbFJ1bGUoCgogICAgRGlzcGxheSogLAogICAgR0Mg LAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0RmlsbFN0eWxlKAoKICAgIERpc3BsYXkqICwK ICAgIEdDICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFNldEZvbnQoCgogICAgRGlzcGxheSog LAogICAgR0MgLAogICAgRm9udAoKKTsKCmV4dGVybiBpbnQgWFNldEZvbnRQYXRoKAoKICAgIERp c3BsYXkqICwKICAgIGNoYXIqKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRGb3JlZ3Jv dW5kKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAgIHVuc2lnbmVkIGxvbmcKCik7CgpleHRl cm4gaW50IFhTZXRGdW5jdGlvbigKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICBpbnQKCik7 CgpleHRlcm4gaW50IFhTZXRHcmFwaGljc0V4cG9zdXJlcygKCiAgICBEaXNwbGF5KiAsCiAgICBH QyAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRJY29uTmFtZSgKCiAgICBEaXNwbGF5KiAs CiAgICBXaW5kb3cgLAogICAgY29uc3QgY2hhcioKCik7CgpleHRlcm4gaW50IFhTZXRJbnB1dEZv Y3VzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgVGltZQoKKTsK CmV4dGVybiBpbnQgWFNldExpbmVBdHRyaWJ1dGVzKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwK ICAgIHVuc2lnbmVkIGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVy biBpbnQgWFNldE1vZGlmaWVyTWFwcGluZygKCiAgICBEaXNwbGF5KiAsCiAgICBYTW9kaWZpZXJL ZXltYXAqCgopOwoKZXh0ZXJuIGludCBYU2V0UGxhbmVNYXNrKAoKICAgIERpc3BsYXkqICwKICAg IEdDICwKICAgIHVuc2lnbmVkIGxvbmcKCik7CgpleHRlcm4gaW50IFhTZXRQb2ludGVyTWFwcGlu ZygKCiAgICBEaXNwbGF5KiAsCiAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiAsCiAgICBpbnQKCik7 CgpleHRlcm4gaW50IFhTZXRTY3JlZW5TYXZlcigKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQgLAog ICAgaW50ICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRTZWxlY3Rpb25P d25lcigKCiAgICBEaXNwbGF5KiAsCiAgICBBdG9tICwKICAgIFdpbmRvdyAsCiAgICBUaW1lCgop OwoKZXh0ZXJuIGludCBYU2V0U3RhdGUoCgogICAgRGlzcGxheSogLAogICAgR0MgLAogICAgdW5z aWduZWQgbG9uZyAsCiAgICB1bnNpZ25lZCBsb25nICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBs b25nCgopOwoKZXh0ZXJuIGludCBYU2V0U3RpcHBsZSgKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAs CiAgICBQaXhtYXAKCik7CgpleHRlcm4gaW50IFhTZXRTdWJ3aW5kb3dNb2RlKAoKICAgIERpc3Bs YXkqICwKICAgIEdDICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFNldFRTT3JpZ2luKAoKICAg IERpc3BsYXkqICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhT ZXRUaWxlKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAgIFBpeG1hcAoKKTsKCmV4dGVybiBp bnQgWFNldFdpbmRvd0JhY2tncm91bmQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAg IHVuc2lnbmVkIGxvbmcKCik7CgpleHRlcm4gaW50IFhTZXRXaW5kb3dCYWNrZ3JvdW5kUGl4bWFw KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBQaXhtYXAKCik7CgpleHRlcm4gaW50 IFhTZXRXaW5kb3dCb3JkZXIoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIHVuc2ln bmVkIGxvbmcKCik7CgpleHRlcm4gaW50IFhTZXRXaW5kb3dCb3JkZXJQaXhtYXAoCgogICAgRGlz cGxheSogLAogICAgV2luZG93ICwKICAgIFBpeG1hcAoKKTsKCmV4dGVybiBpbnQgWFNldFdpbmRv d0JvcmRlcldpZHRoKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICB1bnNpZ25lZCBp bnQKCik7CgpleHRlcm4gaW50IFhTZXRXaW5kb3dDb2xvcm1hcCgKCiAgICBEaXNwbGF5KiAsCiAg ICBXaW5kb3cgLAogICAgQ29sb3JtYXAKCik7CgpleHRlcm4gaW50IFhTdG9yZUJ1ZmZlcigKCiAg ICBEaXNwbGF5KiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0 ZXJuIGludCBYU3RvcmVCeXRlcygKCiAgICBEaXNwbGF5KiAsCiAgICBjb25zdCBjaGFyKiAsCiAg ICBpbnQKCik7CgpleHRlcm4gaW50IFhTdG9yZUNvbG9yKAoKICAgIERpc3BsYXkqICwKICAgIENv bG9ybWFwICwKICAgIFhDb2xvcioKCik7CgpleHRlcm4gaW50IFhTdG9yZUNvbG9ycygKCiAgICBE aXNwbGF5KiAsCiAgICBDb2xvcm1hcCAsCiAgICBYQ29sb3IqICwKICAgIGludAoKKTsKCmV4dGVy biBpbnQgWFN0b3JlTmFtZSgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgY29uc3Qg Y2hhcioKCik7CgpleHRlcm4gaW50IFhTdG9yZU5hbWVkQ29sb3IoCgogICAgRGlzcGxheSogLAog ICAgQ29sb3JtYXAgLAogICAgY29uc3QgY2hhciogLAogICAgdW5zaWduZWQgbG9uZyAsCiAgICBp bnQKCik7CgpleHRlcm4gaW50IFhTeW5jKAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKCmV4 dGVybiBpbnQgWFRleHRFeHRlbnRzKAoKICAgIFhGb250U3RydWN0KiAsCiAgICBjb25zdCBjaGFy KiAsCiAgICBpbnQgLAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIGludCogLAogICAgWENoYXJT dHJ1Y3QqCgopOwoKZXh0ZXJuIGludCBYVGV4dEV4dGVudHMxNigKCiAgICBYRm9udFN0cnVjdCog LAogICAgY29uc3QgWENoYXIyYiogLAogICAgaW50ICwKICAgIGludCogLAogICAgaW50KiAsCiAg ICBpbnQqICwKICAgIFhDaGFyU3RydWN0KgoKKTsKCmV4dGVybiBpbnQgWFRleHRXaWR0aCgKCiAg ICBYRm9udFN0cnVjdCogLAogICAgY29uc3QgY2hhciogLAogICAgaW50CgopOwoKZXh0ZXJuIGlu dCBYVGV4dFdpZHRoMTYoCgogICAgWEZvbnRTdHJ1Y3QqICwKICAgIGNvbnN0IFhDaGFyMmIqICwK ICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFRyYW5zbGF0ZUNvb3JkaW5hdGVzKAoKICAgIERpc3Bs YXkqICwKICAgIFdpbmRvdyAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIGludCAsCiAgICBp bnQqICwKICAgIGludCogLAogICAgV2luZG93KgoKKTsKCmV4dGVybiBpbnQgWFVuZGVmaW5lQ3Vy c29yKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWFVuZ3JhYkJ1 dHRvbigKCiAgICBEaXNwbGF5KiAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50 ICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWFVuZ3JhYktleSgKCiAgICBEaXNwbGF5KiAs CiAgICBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQg WFVuZ3JhYktleWJvYXJkKAoKICAgIERpc3BsYXkqICwKICAgIFRpbWUKCik7CgpleHRlcm4gaW50 IFhVbmdyYWJQb2ludGVyKAoKICAgIERpc3BsYXkqICwKICAgIFRpbWUKCik7CgpleHRlcm4gaW50 IFhVbmdyYWJTZXJ2ZXIoCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50IFhVbmluc3RhbGxD b2xvcm1hcCgKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xvcm1hcAoKKTsKCmV4dGVybiBpbnQgWFVu bG9hZEZvbnQoCgogICAgRGlzcGxheSogLAogICAgRm9udAoKKTsKCmV4dGVybiBpbnQgWFVubWFw U3Vid2luZG93cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhV bm1hcFdpbmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhW ZW5kb3JSZWxlYXNlKAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIGludCBYV2FycFBvaW50ZXIo CgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAg aW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAg IGludAoKKTsKCmV4dGVybiBpbnQgWFdpZHRoTU1PZlNjcmVlbigKCiAgICBTY3JlZW4qCgopOwoK ZXh0ZXJuIGludCBYV2lkdGhPZlNjcmVlbigKCiAgICBTY3JlZW4qCgopOwoKZXh0ZXJuIGludCBY V2luZG93RXZlbnQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGxvbmcgLAogICAg WEV2ZW50KgoKKTsKCmV4dGVybiBpbnQgWFdyaXRlQml0bWFwRmlsZSgKCiAgICBEaXNwbGF5KiAs CiAgICBjb25zdCBjaGFyKiAsCiAgICBQaXhtYXAgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVu c2lnbmVkIGludCAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU3VwcG9ydHNM b2NhbGUgKHZvaWQpOwoKZXh0ZXJuIGNoYXIgKlhTZXRMb2NhbGVNb2RpZmllcnMoCiAgICBjb25z dCBjaGFyKgopOwoKZXh0ZXJuIFhPTSBYT3Blbk9NKAoKICAgIERpc3BsYXkqICwKICAgIHN0cnVj dCBfWHJtSGFzaEJ1Y2tldFJlYyogLAogICAgY29uc3QgY2hhciogLAogICAgY29uc3QgY2hhcioK Cik7CgpleHRlcm4gaW50IFhDbG9zZU9NKAoKICAgIFhPTQoKKTsKCmV4dGVybiBjaGFyICpYU2V0 T01WYWx1ZXMoCgogICAgWE9NICwKICAgIC4uLgoKKTsKCmV4dGVybiBjaGFyICpYR2V0T01WYWx1 ZXMoCgogICAgWE9NICwKICAgIC4uLgoKKTsKCmV4dGVybiBEaXNwbGF5ICpYRGlzcGxheU9mT00o CgogICAgWE9NCgopOwoKZXh0ZXJuIGNoYXIgKlhMb2NhbGVPZk9NKAoKICAgIFhPTQoKKTsKCmV4 dGVybiBYT0MgWENyZWF0ZU9DKAoKICAgIFhPTSAsCiAgICAuLi4KCik7CgpleHRlcm4gdm9pZCBY RGVzdHJveU9DKAoKICAgIFhPQwoKKTsKCmV4dGVybiBYT00gWE9NT2ZPQygKCiAgICBYT0MKCik7 CgpleHRlcm4gY2hhciAqWFNldE9DVmFsdWVzKAoKICAgIFhPQyAsCiAgICAuLi4KCik7CgpleHRl cm4gY2hhciAqWEdldE9DVmFsdWVzKAoKICAgIFhPQyAsCiAgICAuLi4KCik7CgpleHRlcm4gWEZv bnRTZXQgWENyZWF0ZUZvbnRTZXQoCgogICAgRGlzcGxheSogLAogICAgY29uc3QgY2hhciogLAog ICAgY2hhcioqKiAsCiAgICBpbnQqICwKICAgIGNoYXIqKgoKKTsKCmV4dGVybiB2b2lkIFhGcmVl Rm9udFNldCgKCiAgICBEaXNwbGF5KiAsCiAgICBYRm9udFNldAoKKTsKCmV4dGVybiBpbnQgWEZv bnRzT2ZGb250U2V0KAoKICAgIFhGb250U2V0ICwKICAgIFhGb250U3RydWN0KioqICwKICAgIGNo YXIqKioKCik7CgpleHRlcm4gY2hhciAqWEJhc2VGb250TmFtZUxpc3RPZkZvbnRTZXQoCgogICAg WEZvbnRTZXQKCik7CgpleHRlcm4gY2hhciAqWExvY2FsZU9mRm9udFNldCgKCiAgICBYRm9udFNl dAoKKTsKCmV4dGVybiBpbnQgWENvbnRleHREZXBlbmRlbnREcmF3aW5nKAoKICAgIFhGb250U2V0 CgopOwoKZXh0ZXJuIGludCBYRGlyZWN0aW9uYWxEZXBlbmRlbnREcmF3aW5nKAoKICAgIFhGb250 U2V0CgopOwoKZXh0ZXJuIGludCBYQ29udGV4dHVhbERyYXdpbmcoCgogICAgWEZvbnRTZXQKCik7 CgpleHRlcm4gWEZvbnRTZXRFeHRlbnRzICpYRXh0ZW50c09mRm9udFNldCgKCiAgICBYRm9udFNl dAoKKTsKCmV4dGVybiBpbnQgWG1iVGV4dEVzY2FwZW1lbnQoCgogICAgWEZvbnRTZXQgLAogICAg Y29uc3QgY2hhciogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYd2NUZXh0RXNjYXBlbWVudCgK CiAgICBYRm9udFNldCAsCiAgICBjb25zdCB3Y2hhcl90KiAsCiAgICBpbnQKCik7CgpleHRlcm4g aW50IFh1dGY4VGV4dEVzY2FwZW1lbnQoCgogICAgWEZvbnRTZXQgLAogICAgY29uc3QgY2hhciog LAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYbWJUZXh0RXh0ZW50cygKCiAgICBYRm9udFNldCAs CiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQgLAogICAgWFJlY3RhbmdsZSogLAogICAgWFJlY3Rh bmdsZSoKCik7CgpleHRlcm4gaW50IFh3Y1RleHRFeHRlbnRzKAoKICAgIFhGb250U2V0ICwKICAg IGNvbnN0IHdjaGFyX3QqICwKICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBYUmVjdGFu Z2xlKgoKKTsKCmV4dGVybiBpbnQgWHV0ZjhUZXh0RXh0ZW50cygKCiAgICBYRm9udFNldCAsCiAg ICBjb25zdCBjaGFyKiAsCiAgICBpbnQgLAogICAgWFJlY3RhbmdsZSogLAogICAgWFJlY3Rhbmds ZSoKCik7CgpleHRlcm4gaW50IFhtYlRleHRQZXJDaGFyRXh0ZW50cygKCiAgICBYRm9udFNldCAs CiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQgLAogICAgWFJlY3RhbmdsZSogLAogICAgWFJlY3Rh bmdsZSogLAogICAgaW50ICwKICAgIGludCogLAogICAgWFJlY3RhbmdsZSogLAogICAgWFJlY3Rh bmdsZSoKCik7CgpleHRlcm4gaW50IFh3Y1RleHRQZXJDaGFyRXh0ZW50cygKCiAgICBYRm9udFNl dCAsCiAgICBjb25zdCB3Y2hhcl90KiAsCiAgICBpbnQgLAogICAgWFJlY3RhbmdsZSogLAogICAg WFJlY3RhbmdsZSogLAogICAgaW50ICwKICAgIGludCogLAogICAgWFJlY3RhbmdsZSogLAogICAg WFJlY3RhbmdsZSoKCik7CgpleHRlcm4gaW50IFh1dGY4VGV4dFBlckNoYXJFeHRlbnRzKAoKICAg IFhGb250U2V0ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAs CiAgICBYUmVjdGFuZ2xlKiAsCiAgICBpbnQgLAogICAgaW50KiAsCiAgICBYUmVjdGFuZ2xlKiAs CiAgICBYUmVjdGFuZ2xlKgoKKTsKCmV4dGVybiB2b2lkIFhtYkRyYXdUZXh0KAoKICAgIERpc3Bs YXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgWG1i VGV4dEl0ZW0qICwKICAgIGludAoKKTsKCmV4dGVybiB2b2lkIFh3Y0RyYXdUZXh0KAoKICAgIERp c3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAg WHdjVGV4dEl0ZW0qICwKICAgIGludAoKKTsKCmV4dGVybiB2b2lkIFh1dGY4RHJhd1RleHQoCgog ICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAs CiAgICBYbWJUZXh0SXRlbSogLAogICAgaW50CgopOwoKZXh0ZXJuIHZvaWQgWG1iRHJhd1N0cmlu ZygKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBYRm9udFNldCAsCiAgICBHQyAs CiAgICBpbnQgLAogICAgaW50ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludAoKKTsKCmV4dGVy biB2b2lkIFh3Y0RyYXdTdHJpbmcoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAg WEZvbnRTZXQgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICBjb25zdCB3Y2hhcl90 KiAsCiAgICBpbnQKCik7CgpleHRlcm4gdm9pZCBYdXRmOERyYXdTdHJpbmcoCgogICAgRGlzcGxh eSogLAogICAgRHJhd2FibGUgLAogICAgWEZvbnRTZXQgLAogICAgR0MgLAogICAgaW50ICwKICAg IGludCAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQKCik7CgpleHRlcm4gdm9pZCBYbWJEcmF3 SW1hZ2VTdHJpbmcoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgWEZvbnRTZXQg LAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQK Cik7CgpleHRlcm4gdm9pZCBYd2NEcmF3SW1hZ2VTdHJpbmcoCgogICAgRGlzcGxheSogLAogICAg RHJhd2FibGUgLAogICAgWEZvbnRTZXQgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAg ICBjb25zdCB3Y2hhcl90KiAsCiAgICBpbnQKCik7CgpleHRlcm4gdm9pZCBYdXRmOERyYXdJbWFn ZVN0cmluZygKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBYRm9udFNldCAsCiAg ICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludAoKKTsK CmV4dGVybiBYSU0gWE9wZW5JTSgKCiAgICBEaXNwbGF5KiAsCiAgICBzdHJ1Y3QgX1hybUhhc2hC dWNrZXRSZWMqICwKICAgIGNoYXIqICwKICAgIGNoYXIqCgopOwoKZXh0ZXJuIGludCBYQ2xvc2VJ TSgKCiAgICBYSU0KCik7CgpleHRlcm4gY2hhciAqWEdldElNVmFsdWVzKAoKICAgIFhJTSAsIC4u LgoKKTsKCmV4dGVybiBEaXNwbGF5ICpYRGlzcGxheU9mSU0oCgogICAgWElNCgopOwoKZXh0ZXJu IGNoYXIgKlhMb2NhbGVPZklNKAoKICAgIFhJTQoKKTsKCmV4dGVybiBYSUMgWENyZWF0ZUlDKAoK ICAgIFhJTSAsIC4uLgoKKTsKCmV4dGVybiB2b2lkIFhEZXN0cm95SUMoCgogICAgWElDCgopOwoK ZXh0ZXJuIHZvaWQgWFNldElDRm9jdXMoCgogICAgWElDCgopOwoKZXh0ZXJuIHZvaWQgWFVuc2V0 SUNGb2N1cygKCiAgICBYSUMKCik7CgpleHRlcm4gd2NoYXJfdCAqWHdjUmVzZXRJQygKCiAgICBY SUMKCik7CgpleHRlcm4gY2hhciAqWG1iUmVzZXRJQygKCiAgICBYSUMKCik7CgpleHRlcm4gY2hh ciAqWHV0ZjhSZXNldElDKAoKICAgIFhJQwoKKTsKCmV4dGVybiBjaGFyICpYU2V0SUNWYWx1ZXMo CgogICAgWElDICwgLi4uCgopOwoKZXh0ZXJuIGNoYXIgKlhHZXRJQ1ZhbHVlcygKCiAgICBYSUMg LCAuLi4KCik7CgpleHRlcm4gWElNIFhJTU9mSUMoCgogICAgWElDCgopOwoKZXh0ZXJuIGludCBY RmlsdGVyRXZlbnQoCgogICAgWEV2ZW50KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFht Ykxvb2t1cFN0cmluZygKCiAgICBYSUMgLAogICAgWEtleVByZXNzZWRFdmVudCogLAogICAgY2hh ciogLAogICAgaW50ICwKICAgIEtleVN5bSogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWHdj TG9va3VwU3RyaW5nKAoKICAgIFhJQyAsCiAgICBYS2V5UHJlc3NlZEV2ZW50KiAsCiAgICB3Y2hh cl90KiAsCiAgICBpbnQgLAogICAgS2V5U3ltKiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIGludCBY dXRmOExvb2t1cFN0cmluZygKCiAgICBYSUMgLAogICAgWEtleVByZXNzZWRFdmVudCogLAogICAg Y2hhciogLAogICAgaW50ICwKICAgIEtleVN5bSogLAogICAgaW50KgoKKTsKCmV4dGVybiBYVmFO ZXN0ZWRMaXN0IFhWYUNyZWF0ZU5lc3RlZExpc3QoCgogICAgaW50ICwgLi4uCgopOwoKCgpleHRl cm4gaW50IFhSZWdpc3RlcklNSW5zdGFudGlhdGVDYWxsYmFjaygKCiAgICBEaXNwbGF5KiAsCiAg ICBzdHJ1Y3QgX1hybUhhc2hCdWNrZXRSZWMqICwKICAgIGNoYXIqICwKICAgIGNoYXIqICwKICAg IFhJRFByb2MgLAogICAgWFBvaW50ZXIKCik7CgpleHRlcm4gaW50IFhVbnJlZ2lzdGVySU1JbnN0 YW50aWF0ZUNhbGxiYWNrKAoKICAgIERpc3BsYXkqICwKICAgIHN0cnVjdCBfWHJtSGFzaEJ1Y2tl dFJlYyogLAogICAgY2hhciogLAogICAgY2hhciogLAogICAgWElEUHJvYyAsCiAgICBYUG9pbnRl cgoKKTsKCnR5cGVkZWYgdm9pZCAoKlhDb25uZWN0aW9uV2F0Y2hQcm9jKSgKCiAgICBEaXNwbGF5 KiAsCiAgICBYUG9pbnRlciAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIFhQb2ludGVyKgoKKTsK CgpleHRlcm4gaW50IFhJbnRlcm5hbENvbm5lY3Rpb25OdW1iZXJzKAoKICAgIERpc3BsYXkqICwK ICAgIGludCoqICwKICAgIGludCoKCik7CgpleHRlcm4gdm9pZCBYUHJvY2Vzc0ludGVybmFsQ29u bmVjdGlvbigKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhBZGRDb25u ZWN0aW9uV2F0Y2goCgogICAgRGlzcGxheSogLAogICAgWENvbm5lY3Rpb25XYXRjaFByb2MgLAog ICAgWFBvaW50ZXIKCik7CgpleHRlcm4gdm9pZCBYUmVtb3ZlQ29ubmVjdGlvbldhdGNoKAoKICAg IERpc3BsYXkqICwKICAgIFhDb25uZWN0aW9uV2F0Y2hQcm9jICwKICAgIFhQb2ludGVyCgopOwoK ZXh0ZXJuIHZvaWQgWFNldEF1dGhvcml6YXRpb24oCgogICAgY2hhciAqICwKICAgIGludCAsCiAg ICBjaGFyICogLAogICAgaW50CgopOwoKfQojIDQwICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2x4 LmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9YMTEvWHV0aWwuaCIgMSAzCiMgNTEgIi91c3IvaW5j bHVkZS9YMTEvWHV0aWwuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9YMTEvWGxpYi5oIiAxIDMKIyA1 MiAiL3Vzci9pbmNsdWRlL1gxMS9YdXRpbC5oIiAyIDMKIyA3MCAiL3Vzci9pbmNsdWRlL1gxMS9Y dXRpbC5oIiAzCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBsb25nIGZsYWdzOwogICAgICAgIGlu dCB4LCB5OwogICAgICAgIGludCB3aWR0aCwgaGVpZ2h0OwogICAgICAgIGludCBtaW5fd2lkdGgs IG1pbl9oZWlnaHQ7CiAgICAgICAgaW50IG1heF93aWR0aCwgbWF4X2hlaWdodDsKICAgICAgICBp bnQgd2lkdGhfaW5jLCBoZWlnaHRfaW5jOwogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg ICBpbnQgeDsKICAgICAgICAgICAgICAgIGludCB5OwogICAgICAgIH0gbWluX2FzcGVjdCwgbWF4 X2FzcGVjdDsKICAgICAgICBpbnQgYmFzZV93aWR0aCwgYmFzZV9oZWlnaHQ7CiAgICAgICAgaW50 IHdpbl9ncmF2aXR5Owp9IFhTaXplSGludHM7CiMgMTA4ICIvdXNyL2luY2x1ZGUvWDExL1h1dGls LmgiIDMKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGxvbmcgZmxhZ3M7CiAgICAgICAgaW50IGlu cHV0OwoKICAgICAgICBpbnQgaW5pdGlhbF9zdGF0ZTsKICAgICAgICBQaXhtYXAgaWNvbl9waXht YXA7CiAgICAgICAgV2luZG93IGljb25fd2luZG93OwogICAgICAgIGludCBpY29uX3gsIGljb25f eTsKICAgICAgICBQaXhtYXAgaWNvbl9tYXNrOwogICAgICAgIFhJRCB3aW5kb3dfZ3JvdXA7Cgp9 IFhXTUhpbnRzOwojIDE1MiAiL3Vzci9pbmNsdWRlL1gxMS9YdXRpbC5oIiAzCnR5cGVkZWYgc3Ry dWN0IHsKICAgIHVuc2lnbmVkIGNoYXIgKnZhbHVlOwogICAgQXRvbSBlbmNvZGluZzsKICAgIGlu dCBmb3JtYXQ7CiAgICB1bnNpZ25lZCBsb25nIG5pdGVtczsKfSBYVGV4dFByb3BlcnR5OwoKCgoK CnR5cGVkZWYgZW51bSB7CiAgICBYU3RyaW5nU3R5bGUsCiAgICBYQ29tcG91bmRUZXh0U3R5bGUs CiAgICBYVGV4dFN0eWxlLAogICAgWFN0ZElDQ1RleHRTdHlsZSwKCiAgICBYVVRGOFN0cmluZ1N0 eWxlCn0gWElDQ0VuY29kaW5nU3R5bGU7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IG1p bl93aWR0aCwgbWluX2hlaWdodDsKICAgICAgICBpbnQgbWF4X3dpZHRoLCBtYXhfaGVpZ2h0Owog ICAgICAgIGludCB3aWR0aF9pbmMsIGhlaWdodF9pbmM7Cn0gWEljb25TaXplOwoKdHlwZWRlZiBz dHJ1Y3QgewogICAgICAgIGNoYXIgKnJlc19uYW1lOwogICAgICAgIGNoYXIgKnJlc19jbGFzczsK fSBYQ2xhc3NIaW50OwojIDIwMSAiL3Vzci9pbmNsdWRlL1gxMS9YdXRpbC5oIiAzCnR5cGVkZWYg c3RydWN0IF9YQ29tcG9zZVN0YXR1cyB7CiAgICBYUG9pbnRlciBjb21wb3NlX3B0cjsKICAgIGlu dCBjaGFyc19tYXRjaGVkOwp9IFhDb21wb3NlU3RhdHVzOwojIDIzNCAiL3Vzci9pbmNsdWRlL1gx MS9YdXRpbC5oIiAzCnR5cGVkZWYgc3RydWN0IF9YUmVnaW9uICpSZWdpb247CiMgMjQ4ICIvdXNy L2luY2x1ZGUvWDExL1h1dGlsLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgewogIFZpc3VhbCAqdmlzdWFs OwogIFZpc3VhbElEIHZpc3VhbGlkOwogIGludCBzY3JlZW47CiAgaW50IGRlcHRoOwoKICBpbnQg Y19jbGFzczsKCgoKICB1bnNpZ25lZCBsb25nIHJlZF9tYXNrOwogIHVuc2lnbmVkIGxvbmcgZ3Jl ZW5fbWFzazsKICB1bnNpZ25lZCBsb25nIGJsdWVfbWFzazsKICBpbnQgY29sb3JtYXBfc2l6ZTsK ICBpbnQgYml0c19wZXJfcmdiOwp9IFhWaXN1YWxJbmZvOwojIDI4MSAiL3Vzci9pbmNsdWRlL1gx MS9YdXRpbC5oIiAzCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBDb2xvcm1hcCBjb2xvcm1hcDsK ICAgICAgICB1bnNpZ25lZCBsb25nIHJlZF9tYXg7CiAgICAgICAgdW5zaWduZWQgbG9uZyByZWRf bXVsdDsKICAgICAgICB1bnNpZ25lZCBsb25nIGdyZWVuX21heDsKICAgICAgICB1bnNpZ25lZCBs b25nIGdyZWVuX211bHQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBibHVlX21heDsKICAgICAgICB1 bnNpZ25lZCBsb25nIGJsdWVfbXVsdDsKICAgICAgICB1bnNpZ25lZCBsb25nIGJhc2VfcGl4ZWw7 CiAgICAgICAgVmlzdWFsSUQgdmlzdWFsaWQ7CiAgICAgICAgWElEIGtpbGxpZDsKfSBYU3RhbmRh cmRDb2xvcm1hcDsKIyAzMTggIi91c3IvaW5jbHVkZS9YMTEvWHV0aWwuaCIgMwp0eXBlZGVmIGlu dCBYQ29udGV4dDsKCgoKCmV4dGVybiAiQyIgewoKCgpleHRlcm4gWENsYXNzSGludCAqWEFsbG9j Q2xhc3NIaW50ICgKCiAgICB2b2lkCgopOwoKZXh0ZXJuIFhJY29uU2l6ZSAqWEFsbG9jSWNvblNp emUgKAoKICAgIHZvaWQKCik7CgpleHRlcm4gWFNpemVIaW50cyAqWEFsbG9jU2l6ZUhpbnRzICgK CiAgICB2b2lkCgopOwoKZXh0ZXJuIFhTdGFuZGFyZENvbG9ybWFwICpYQWxsb2NTdGFuZGFyZENv bG9ybWFwICgKCiAgICB2b2lkCgopOwoKZXh0ZXJuIFhXTUhpbnRzICpYQWxsb2NXTUhpbnRzICgK CiAgICB2b2lkCgopOwoKZXh0ZXJuIGludCBYQ2xpcEJveCgKCiAgICBSZWdpb24gLAogICAgWFJl Y3RhbmdsZSoKCik7CgpleHRlcm4gUmVnaW9uIFhDcmVhdGVSZWdpb24oCgogICAgdm9pZAoKKTsK CmV4dGVybiBjb25zdCBjaGFyICpYRGVmYXVsdFN0cmluZyAodm9pZCk7CgpleHRlcm4gaW50IFhE ZWxldGVDb250ZXh0KAoKICAgIERpc3BsYXkqICwKICAgIFhJRCAsCiAgICBYQ29udGV4dAoKKTsK CmV4dGVybiBpbnQgWERlc3Ryb3lSZWdpb24oCgogICAgUmVnaW9uCgopOwoKZXh0ZXJuIGludCBY RW1wdHlSZWdpb24oCgogICAgUmVnaW9uCgopOwoKZXh0ZXJuIGludCBYRXF1YWxSZWdpb24oCgog ICAgUmVnaW9uICwKICAgIFJlZ2lvbgoKKTsKCmV4dGVybiBpbnQgWEZpbmRDb250ZXh0KAoKICAg IERpc3BsYXkqICwKICAgIFhJRCAsCiAgICBYQ29udGV4dCAsCiAgICBYUG9pbnRlcioKCik7Cgpl eHRlcm4gaW50IFhHZXRDbGFzc0hpbnQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAg IFhDbGFzc0hpbnQqCgopOwoKZXh0ZXJuIGludCBYR2V0SWNvblNpemVzKAoKICAgIERpc3BsYXkq ICwKICAgIFdpbmRvdyAsCiAgICBYSWNvblNpemUqKiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIGlu dCBYR2V0Tm9ybWFsSGludHMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhTaXpl SGludHMqCgopOwoKZXh0ZXJuIGludCBYR2V0UkdCQ29sb3JtYXBzKAoKICAgIERpc3BsYXkqICwK ICAgIFdpbmRvdyAsCiAgICBYU3RhbmRhcmRDb2xvcm1hcCoqICwKICAgIGludCogLAogICAgQXRv bQoKKTsKCmV4dGVybiBpbnQgWEdldFNpemVIaW50cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5k b3cgLAogICAgWFNpemVIaW50cyogLAogICAgQXRvbQoKKTsKCmV4dGVybiBpbnQgWEdldFN0YW5k YXJkQ29sb3JtYXAoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhTdGFuZGFyZENv bG9ybWFwKiAsCiAgICBBdG9tCgopOwoKZXh0ZXJuIGludCBYR2V0VGV4dFByb3BlcnR5KAoKICAg IERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYVGV4dFByb3BlcnR5KiAsCiAgICBBdG9tCgop OwoKZXh0ZXJuIFhWaXN1YWxJbmZvICpYR2V0VmlzdWFsSW5mbygKCiAgICBEaXNwbGF5KiAsCiAg ICBsb25nICwKICAgIFhWaXN1YWxJbmZvKiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIGludCBYR2V0 V01DbGllbnRNYWNoaW5lKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYVGV4dFBy b3BlcnR5KgoKKTsKCmV4dGVybiBYV01IaW50cyAqWEdldFdNSGludHMoCgogICAgRGlzcGxheSog LAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYR2V0V01JY29uTmFtZSgKCiAgICBEaXNwbGF5 KiAsCiAgICBXaW5kb3cgLAogICAgWFRleHRQcm9wZXJ0eSoKCik7CgpleHRlcm4gaW50IFhHZXRX TU5hbWUoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhUZXh0UHJvcGVydHkqCgop OwoKZXh0ZXJuIGludCBYR2V0V01Ob3JtYWxIaW50cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5k b3cgLAogICAgWFNpemVIaW50cyogLAogICAgbG9uZyoKCik7CgpleHRlcm4gaW50IFhHZXRXTVNp emVIaW50cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgWFNpemVIaW50cyogLAog ICAgbG9uZyogLAogICAgQXRvbQoKKTsKCmV4dGVybiBpbnQgWEdldFpvb21IaW50cygKCiAgICBE aXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgWFNpemVIaW50cyoKCik7CgpleHRlcm4gaW50IFhJ bnRlcnNlY3RSZWdpb24oCgogICAgUmVnaW9uICwKICAgIFJlZ2lvbiAsCiAgICBSZWdpb24KCik7 CgpleHRlcm4gdm9pZCBYQ29udmVydENhc2UoCgogICAgS2V5U3ltICwKICAgIEtleVN5bSogLAog ICAgS2V5U3ltKgoKKTsKCmV4dGVybiBpbnQgWExvb2t1cFN0cmluZygKCiAgICBYS2V5RXZlbnQq ICwKICAgIGNoYXIqICwKICAgIGludCAsCiAgICBLZXlTeW0qICwKICAgIFhDb21wb3NlU3RhdHVz KgoKKTsKCmV4dGVybiBpbnQgWE1hdGNoVmlzdWFsSW5mbygKCiAgICBEaXNwbGF5KiAsCiAgICBp bnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICBYVmlzdWFsSW5mbyoKCik7CgpleHRlcm4gaW50 IFhPZmZzZXRSZWdpb24oCgogICAgUmVnaW9uICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRl cm4gaW50IFhQb2ludEluUmVnaW9uKAoKICAgIFJlZ2lvbiAsCiAgICBpbnQgLAogICAgaW50Cgop OwoKZXh0ZXJuIFJlZ2lvbiBYUG9seWdvblJlZ2lvbigKCiAgICBYUG9pbnQqICwKICAgIGludCAs CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhSZWN0SW5SZWdpb24oCgogICAgUmVnaW9uICwKICAg IGludCAsCiAgICBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludAoKKTsK CmV4dGVybiBpbnQgWFNhdmVDb250ZXh0KAoKICAgIERpc3BsYXkqICwKICAgIFhJRCAsCiAgICBY Q29udGV4dCAsCiAgICBjb25zdCBjaGFyKgoKKTsKCmV4dGVybiBpbnQgWFNldENsYXNzSGludCgK CiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgWENsYXNzSGludCoKCik7CgpleHRlcm4g aW50IFhTZXRJY29uU2l6ZXMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhJY29u U2l6ZSogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0Tm9ybWFsSGludHMoCgogICAgRGlz cGxheSogLAogICAgV2luZG93ICwKICAgIFhTaXplSGludHMqCgopOwoKZXh0ZXJuIHZvaWQgWFNl dFJHQkNvbG9ybWFwcygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgWFN0YW5kYXJk Q29sb3JtYXAqICwKICAgIGludCAsCiAgICBBdG9tCgopOwoKZXh0ZXJuIGludCBYU2V0U2l6ZUhp bnRzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYU2l6ZUhpbnRzKiAsCiAgICBB dG9tCgopOwoKZXh0ZXJuIGludCBYU2V0U3RhbmRhcmRQcm9wZXJ0aWVzKAoKICAgIERpc3BsYXkq ICwKICAgIFdpbmRvdyAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBQ aXhtYXAgLAogICAgY2hhcioqICwKICAgIGludCAsCiAgICBYU2l6ZUhpbnRzKgoKKTsKCmV4dGVy biB2b2lkIFhTZXRUZXh0UHJvcGVydHkoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAg IFhUZXh0UHJvcGVydHkqICwKICAgIEF0b20KCik7CgpleHRlcm4gdm9pZCBYU2V0V01DbGllbnRN YWNoaW5lKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYVGV4dFByb3BlcnR5KgoK KTsKCmV4dGVybiBpbnQgWFNldFdNSGludHMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwK ICAgIFhXTUhpbnRzKgoKKTsKCmV4dGVybiB2b2lkIFhTZXRXTUljb25OYW1lKAoKICAgIERpc3Bs YXkqICwKICAgIFdpbmRvdyAsCiAgICBYVGV4dFByb3BlcnR5KgoKKTsKCmV4dGVybiB2b2lkIFhT ZXRXTU5hbWUoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhUZXh0UHJvcGVydHkq CgopOwoKZXh0ZXJuIHZvaWQgWFNldFdNTm9ybWFsSGludHMoCgogICAgRGlzcGxheSogLAogICAg V2luZG93ICwKICAgIFhTaXplSGludHMqCgopOwoKZXh0ZXJuIHZvaWQgWFNldFdNUHJvcGVydGll cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgWFRleHRQcm9wZXJ0eSogLAogICAg WFRleHRQcm9wZXJ0eSogLAogICAgY2hhcioqICwKICAgIGludCAsCiAgICBYU2l6ZUhpbnRzKiAs CiAgICBYV01IaW50cyogLAogICAgWENsYXNzSGludCoKCik7CgpleHRlcm4gdm9pZCBYbWJTZXRX TVByb3BlcnRpZXMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGNvbnN0IGNoYXIq ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGNoYXIqKiAsCiAgICBpbnQgLAogICAgWFNpemVIaW50 cyogLAogICAgWFdNSGludHMqICwKICAgIFhDbGFzc0hpbnQqCgopOwoKZXh0ZXJuIHZvaWQgWHV0 ZjhTZXRXTVByb3BlcnRpZXMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGNvbnN0 IGNoYXIqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGNoYXIqKiAsCiAgICBpbnQgLAogICAgWFNp emVIaW50cyogLAogICAgWFdNSGludHMqICwKICAgIFhDbGFzc0hpbnQqCgopOwoKZXh0ZXJuIHZv aWQgWFNldFdNU2l6ZUhpbnRzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYU2l6 ZUhpbnRzKiAsCiAgICBBdG9tCgopOwoKZXh0ZXJuIGludCBYU2V0UmVnaW9uKAoKICAgIERpc3Bs YXkqICwKICAgIEdDICwKICAgIFJlZ2lvbgoKKTsKCmV4dGVybiB2b2lkIFhTZXRTdGFuZGFyZENv bG9ybWFwKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYU3RhbmRhcmRDb2xvcm1h cCogLAogICAgQXRvbQoKKTsKCmV4dGVybiBpbnQgWFNldFpvb21IaW50cygKCiAgICBEaXNwbGF5 KiAsCiAgICBXaW5kb3cgLAogICAgWFNpemVIaW50cyoKCik7CgpleHRlcm4gaW50IFhTaHJpbmtS ZWdpb24oCgogICAgUmVnaW9uICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhT dHJpbmdMaXN0VG9UZXh0UHJvcGVydHkoCgogICAgY2hhcioqICwKICAgIGludCAsCiAgICBYVGV4 dFByb3BlcnR5KgoKKTsKCmV4dGVybiBpbnQgWFN1YnRyYWN0UmVnaW9uKAoKICAgIFJlZ2lvbiAs CiAgICBSZWdpb24gLAogICAgUmVnaW9uCgopOwoKZXh0ZXJuIGludCBYbWJUZXh0TGlzdFRvVGV4 dFByb3BlcnR5KAogICAgRGlzcGxheSogZGlzcGxheSwKICAgIGNoYXIqKiBsaXN0LAogICAgaW50 IGNvdW50LAogICAgWElDQ0VuY29kaW5nU3R5bGUgc3R5bGUsCiAgICBYVGV4dFByb3BlcnR5KiB0 ZXh0X3Byb3BfcmV0dXJuCik7CgpleHRlcm4gaW50IFh3Y1RleHRMaXN0VG9UZXh0UHJvcGVydHko CiAgICBEaXNwbGF5KiBkaXNwbGF5LAogICAgd2NoYXJfdCoqIGxpc3QsCiAgICBpbnQgY291bnQs CiAgICBYSUNDRW5jb2RpbmdTdHlsZSBzdHlsZSwKICAgIFhUZXh0UHJvcGVydHkqIHRleHRfcHJv cF9yZXR1cm4KKTsKCmV4dGVybiBpbnQgWHV0ZjhUZXh0TGlzdFRvVGV4dFByb3BlcnR5KAogICAg RGlzcGxheSogZGlzcGxheSwKICAgIGNoYXIqKiBsaXN0LAogICAgaW50IGNvdW50LAogICAgWElD Q0VuY29kaW5nU3R5bGUgc3R5bGUsCiAgICBYVGV4dFByb3BlcnR5KiB0ZXh0X3Byb3BfcmV0dXJu Cik7CgpleHRlcm4gdm9pZCBYd2NGcmVlU3RyaW5nTGlzdCgKICAgIHdjaGFyX3QqKiBsaXN0Cik7 CgpleHRlcm4gaW50IFhUZXh0UHJvcGVydHlUb1N0cmluZ0xpc3QoCgogICAgWFRleHRQcm9wZXJ0 eSogLAogICAgY2hhcioqKiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIGludCBYbWJUZXh0UHJvcGVy dHlUb1RleHRMaXN0KAogICAgRGlzcGxheSogZGlzcGxheSwKICAgIGNvbnN0IFhUZXh0UHJvcGVy dHkqIHRleHRfcHJvcCwKICAgIGNoYXIqKiogbGlzdF9yZXR1cm4sCiAgICBpbnQqIGNvdW50X3Jl dHVybgopOwoKZXh0ZXJuIGludCBYd2NUZXh0UHJvcGVydHlUb1RleHRMaXN0KAogICAgRGlzcGxh eSogZGlzcGxheSwKICAgIGNvbnN0IFhUZXh0UHJvcGVydHkqIHRleHRfcHJvcCwKICAgIHdjaGFy X3QqKiogbGlzdF9yZXR1cm4sCiAgICBpbnQqIGNvdW50X3JldHVybgopOwoKZXh0ZXJuIGludCBY dXRmOFRleHRQcm9wZXJ0eVRvVGV4dExpc3QoCiAgICBEaXNwbGF5KiBkaXNwbGF5LAogICAgY29u c3QgWFRleHRQcm9wZXJ0eSogdGV4dF9wcm9wLAogICAgY2hhcioqKiBsaXN0X3JldHVybiwKICAg IGludCogY291bnRfcmV0dXJuCik7CgpleHRlcm4gaW50IFhVbmlvblJlY3RXaXRoUmVnaW9uKAoK ICAgIFhSZWN0YW5nbGUqICwKICAgIFJlZ2lvbiAsCiAgICBSZWdpb24KCik7CgpleHRlcm4gaW50 IFhVbmlvblJlZ2lvbigKCiAgICBSZWdpb24gLAogICAgUmVnaW9uICwKICAgIFJlZ2lvbgoKKTsK CmV4dGVybiBpbnQgWFdNR2VvbWV0cnkoCgogICAgRGlzcGxheSogLAogICAgaW50ICwKICAgIGNv bnN0IGNoYXIqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBYU2l6 ZUhpbnRzKiAsCiAgICBpbnQqICwKICAgIGludCogLAogICAgaW50KiAsCiAgICBpbnQqICwKICAg IGludCoKCik7CgpleHRlcm4gaW50IFhYb3JSZWdpb24oCgogICAgUmVnaW9uICwKICAgIFJlZ2lv biAsCiAgICBSZWdpb24KCik7Cgp9CiMgNDEgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbHguaCIg MiAzCgoKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2wuaCIgMSAzCiMgNDcgIi91c3Iv bG9jYWwvaW5jbHVkZS9HTC9nbHguaCIgMiAzCiMgNTUgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9n bHguaCIgMwpleHRlcm4gIkMiIHsKIyAxNjUgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbHguaCIg Mwp0eXBlZGVmIHZvaWQgKiBHTFhDb250ZXh0Owp0eXBlZGVmIFhJRCBHTFhQaXhtYXA7CnR5cGVk ZWYgWElEIEdMWERyYXdhYmxlOwoKdHlwZWRlZiB2b2lkICogR0xYRkJDb25maWc7CnR5cGVkZWYg WElEIEdMWEZCQ29uZmlnSUQ7CnR5cGVkZWYgWElEIEdMWENvbnRleHRJRDsKdHlwZWRlZiBYSUQg R0xYV2luZG93Owp0eXBlZGVmIFhJRCBHTFhQYnVmZmVyOwoKCgpleHRlcm4gWFZpc3VhbEluZm8q IGdsWENob29zZVZpc3VhbCggRGlzcGxheSAqZHB5LCBpbnQgc2NyZWVuLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICphdHRyaWJMaXN0ICk7CgpleHRlcm4gR0xYQ29u dGV4dCBnbFhDcmVhdGVDb250ZXh0KCBEaXNwbGF5ICpkcHksIFhWaXN1YWxJbmZvICp2aXMsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMWENvbnRleHQgc2hhcmVMaXN0LCBp bnQgZGlyZWN0ICk7CgpleHRlcm4gdm9pZCBnbFhEZXN0cm95Q29udGV4dCggRGlzcGxheSAqZHB5 LCBHTFhDb250ZXh0IGN0eCApOwoKZXh0ZXJuIGludCBnbFhNYWtlQ3VycmVudCggRGlzcGxheSAq ZHB5LCBHTFhEcmF3YWJsZSBkcmF3YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM WENvbnRleHQgY3R4KTsKCmV4dGVybiB2b2lkIGdsWENvcHlDb250ZXh0KCBEaXNwbGF5ICpkcHks IEdMWENvbnRleHQgc3JjLCBHTFhDb250ZXh0IGRzdCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgbWFzayApOwoKZXh0ZXJuIHZvaWQgZ2xYU3dhcEJ1ZmZlcnMoIERp c3BsYXkgKmRweSwgR0xYRHJhd2FibGUgZHJhd2FibGUgKTsKCmV4dGVybiBHTFhQaXhtYXAgZ2xY Q3JlYXRlR0xYUGl4bWFwKCBEaXNwbGF5ICpkcHksIFhWaXN1YWxJbmZvICp2aXN1YWwsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaXhtYXAgcGl4bWFwICk7CgpleHRlcm4g dm9pZCBnbFhEZXN0cm95R0xYUGl4bWFwKCBEaXNwbGF5ICpkcHksIEdMWFBpeG1hcCBwaXhtYXAg KTsKCmV4dGVybiBpbnQgZ2xYUXVlcnlFeHRlbnNpb24oIERpc3BsYXkgKmRweSwgaW50ICplcnJv cmIsIGludCAqZXZlbnQgKTsKCmV4dGVybiBpbnQgZ2xYUXVlcnlWZXJzaW9uKCBEaXNwbGF5ICpk cHksIGludCAqbWFqLCBpbnQgKm1pbiApOwoKZXh0ZXJuIGludCBnbFhJc0RpcmVjdCggRGlzcGxh eSAqZHB5LCBHTFhDb250ZXh0IGN0eCApOwoKZXh0ZXJuIGludCBnbFhHZXRDb25maWcoIERpc3Bs YXkgKmRweSwgWFZpc3VhbEluZm8gKnZpc3VhbCwKICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBhdHRyaWIsIGludCAqdmFsdWUgKTsKCmV4dGVybiBHTFhDb250ZXh0IGdsWEdldEN1cnJlbnRD b250ZXh0KCB2b2lkICk7CgpleHRlcm4gR0xYRHJhd2FibGUgZ2xYR2V0Q3VycmVudERyYXdhYmxl KCB2b2lkICk7CgpleHRlcm4gdm9pZCBnbFhXYWl0R0woIHZvaWQgKTsKCmV4dGVybiB2b2lkIGds WFdhaXRYKCB2b2lkICk7CgpleHRlcm4gdm9pZCBnbFhVc2VYRm9udCggRm9udCBmb250LCBpbnQg Zmlyc3QsIGludCBjb3VudCwgaW50IGxpc3QgKTsKCgoKCmV4dGVybiBjb25zdCBjaGFyICpnbFhR dWVyeUV4dGVuc2lvbnNTdHJpbmcoIERpc3BsYXkgKmRweSwgaW50IHNjcmVlbiApOwoKZXh0ZXJu IGNvbnN0IGNoYXIgKmdsWFF1ZXJ5U2VydmVyU3RyaW5nKCBEaXNwbGF5ICpkcHksIGludCBzY3Jl ZW4sIGludCBuYW1lICk7CgpleHRlcm4gY29uc3QgY2hhciAqZ2xYR2V0Q2xpZW50U3RyaW5nKCBE aXNwbGF5ICpkcHksIGludCBuYW1lICk7CgoKCmV4dGVybiBEaXNwbGF5ICpnbFhHZXRDdXJyZW50 RGlzcGxheSggdm9pZCApOwoKCgpleHRlcm4gR0xYRkJDb25maWcgKmdsWENob29zZUZCQ29uZmln KCBEaXNwbGF5ICpkcHksIGludCBzY3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGludCAqYXR0cmliTGlzdCwgaW50ICpuaXRlbXMgKTsKCmV4dGVybiBp bnQgZ2xYR2V0RkJDb25maWdBdHRyaWIoIERpc3BsYXkgKmRweSwgR0xYRkJDb25maWcgY29uZmln LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYXR0cmlidXRlLCBpbnQgKnZh bHVlICk7CgpleHRlcm4gR0xYRkJDb25maWcgKmdsWEdldEZCQ29uZmlncyggRGlzcGxheSAqZHB5 LCBpbnQgc2NyZWVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpu ZWxlbWVudHMgKTsKCmV4dGVybiBYVmlzdWFsSW5mbyAqZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmln KCBEaXNwbGF5ICpkcHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHTFhGQkNvbmZpZyBjb25maWcgKTsKCmV4dGVybiBHTFhXaW5kb3cgZ2xYQ3JlYXRlV2lu ZG93KCBEaXNwbGF5ICpkcHksIEdMWEZCQ29uZmlnIGNvbmZpZywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFdpbmRvdyB3aW4sIGNvbnN0IGludCAqYXR0cmliTGlzdCApOwoKZXh0 ZXJuIHZvaWQgZ2xYRGVzdHJveVdpbmRvdyggRGlzcGxheSAqZHB5LCBHTFhXaW5kb3cgd2luZG93 ICk7CgpleHRlcm4gR0xYUGl4bWFwIGdsWENyZWF0ZVBpeG1hcCggRGlzcGxheSAqZHB5LCBHTFhG QkNvbmZpZyBjb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaXhtYXAg cGl4bWFwLCBjb25zdCBpbnQgKmF0dHJpYkxpc3QgKTsKCmV4dGVybiB2b2lkIGdsWERlc3Ryb3lQ aXhtYXAoIERpc3BsYXkgKmRweSwgR0xYUGl4bWFwIHBpeG1hcCApOwoKZXh0ZXJuIEdMWFBidWZm ZXIgZ2xYQ3JlYXRlUGJ1ZmZlciggRGlzcGxheSAqZHB5LCBHTFhGQkNvbmZpZyBjb25maWcsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqYXR0cmliTGlzdCAp OwoKZXh0ZXJuIHZvaWQgZ2xYRGVzdHJveVBidWZmZXIoIERpc3BsYXkgKmRweSwgR0xYUGJ1ZmZl ciBwYnVmICk7CgpleHRlcm4gdm9pZCBnbFhRdWVyeURyYXdhYmxlKCBEaXNwbGF5ICpkcHksIEdM WERyYXdhYmxlIGRyYXcsIGludCBhdHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCAqdmFsdWUgKTsKCmV4dGVybiBHTFhDb250ZXh0IGdsWENyZWF0ZU5l d0NvbnRleHQoIERpc3BsYXkgKmRweSwgR0xYRkJDb25maWcgY29uZmlnLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVuZGVyVHlwZSwgR0xYQ29udGV4dCBzaGFy ZUxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Qg KTsKCmV4dGVybiBpbnQgZ2xYTWFrZUNvbnRleHRDdXJyZW50KCBEaXNwbGF5ICpkcHksIEdMWERy YXdhYmxlIGRyYXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xYRHJhd2Fi bGUgcmVhZCwgR0xYQ29udGV4dCBjdHggKTsKCmV4dGVybiBHTFhEcmF3YWJsZSBnbFhHZXRDdXJy ZW50UmVhZERyYXdhYmxlKCB2b2lkICk7CgpleHRlcm4gaW50IGdsWFF1ZXJ5Q29udGV4dCggRGlz cGxheSAqZHB5LCBHTFhDb250ZXh0IGN0eCwgaW50IGF0dHJpYnV0ZSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCAqdmFsdWUgKTsKCmV4dGVybiB2b2lkIGdsWFNlbGVjdEV2ZW50KCBE aXNwbGF5ICpkcHksIEdMWERyYXdhYmxlIGRyYXdhYmxlLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBtYXNrICk7CgpleHRlcm4gdm9pZCBnbFhHZXRTZWxlY3RlZEV2 ZW50KCBEaXNwbGF5ICpkcHksIEdMWERyYXdhYmxlIGRyYXdhYmxlLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICptYXNrICk7CiMgMzIyICIvdXNyL2xvY2Fs L2luY2x1ZGUvR0wvZ2x4LmgiIDMKZXh0ZXJuIGludCBnbFhHZXRWaWRlb1N5bmNTR0kodW5zaWdu ZWQgaW50ICpjb3VudCk7CmV4dGVybiBpbnQgZ2xYV2FpdFZpZGVvU3luY1NHSShpbnQgZGl2aXNv ciwgaW50IHJlbWFpbmRlciwgdW5zaWduZWQgaW50ICpjb3VudCk7CiMgMzU0ICIvdXNyL2xvY2Fs L2luY2x1ZGUvR0wvZ2x4LmgiIDMKZXh0ZXJuIHZvaWQgZ2xYRnJlZUNvbnRleHRFWFQoRGlzcGxh eSAqZHB5LCBHTFhDb250ZXh0IGNvbnRleHQpOwoKZXh0ZXJuIEdMWENvbnRleHRJRCBnbFhHZXRD b250ZXh0SURFWFQoY29uc3QgR0xYQ29udGV4dCBjb250ZXh0KTsKCmV4dGVybiBEaXNwbGF5ICpn bFhHZXRDdXJyZW50RGlzcGxheUVYVCh2b2lkKTsKCmV4dGVybiBHTFhDb250ZXh0IGdsWEltcG9y dENvbnRleHRFWFQoRGlzcGxheSAqZHB5LCBHTFhDb250ZXh0SUQgY29udGV4dElEKTsKCmV4dGVy biBpbnQgZ2xYUXVlcnlDb250ZXh0SW5mb0VYVChEaXNwbGF5ICpkcHksIEdMWENvbnRleHQgY29u dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhdHRyaWJ1dGUsaW50 ICp2YWx1ZSk7CiMgMzc1ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2x4LmgiIDMKZXh0ZXJuIHZv aWQgZ2xYQ29weVN1YkJ1ZmZlck1FU0EoIERpc3BsYXkgKmRweSwgR0xYRHJhd2FibGUgZHJhd2Fi bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwgaW50IHksIGludCB3 aWR0aCwgaW50IGhlaWdodCApOwojIDM4OCAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dseC5oIiAz CmV4dGVybiBHTFhQaXhtYXAgZ2xYQ3JlYXRlR0xYUGl4bWFwTUVTQSggRGlzcGxheSAqZHB5LCBY VmlzdWFsSW5mbyAqdmlzdWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFBpeG1hcCBwaXhtYXAsIENvbG9ybWFwIGNtYXAgKTsKIyA0MDEgIi91c3IvbG9jYWwvaW5j bHVkZS9HTC9nbHguaCIgMwpleHRlcm4gaW50IGdsWFJlbGVhc2VCdWZmZXJzTUVTQSggRGlzcGxh eSAqZHB5LCBHTFhEcmF3YWJsZSBkICk7CiMgNDE2ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2x4 LmgiIDMKZXh0ZXJuIEdMYm9vbGVhbiBnbFhTZXQzRGZ4TW9kZU1FU0EoIEdMaW50IG1vZGUgKTsK IyA0MjggIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbHguaCIgMwpleHRlcm4gdm9pZCAoKmdsWEdl dFByb2NBZGRyZXNzQVJCKGNvbnN0IEdMdWJ5dGUgKnByb2NOYW1lKSkoKTsKIyA0MzkgIi91c3Iv bG9jYWwvaW5jbHVkZS9HTC9nbHguaCIgMwp9CiMgMTA3ICJ0dXhyYWNlci5oIiAyCgoKCiMgMSAi L3Vzci9pbmNsdWRlL3RjbC5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3RjbC5oIiAzCmV4dGVy biAiQyIgewojIDE5NyAiL3Vzci9pbmNsdWRlL3RjbC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9saWIv Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiMgMTk4 ICIvdXNyL2luY2x1ZGUvdGNsLmgiIDIgMwojIDMzMiAiL3Vzci9pbmNsdWRlL3RjbC5oIiAzCiAg ICB0eXBlZGVmIHZvaWQgKkNsaWVudERhdGE7CiMgMzU4ICIvdXNyL2luY2x1ZGUvdGNsLmgiIDMK dHlwZWRlZiBzdHJ1Y3QgVGNsX0ludGVycCB7CiAgICBjaGFyICpyZXN1bHQ7CgogICAgdm9pZCAo KmZyZWVQcm9jKSAoY2hhciAqYmxvY2tQdHIpOwoKCgoKCgoKICAgIGludCBlcnJvckxpbmU7CgoK fSBUY2xfSW50ZXJwOwoKdHlwZWRlZiBzdHJ1Y3QgVGNsX0FzeW5jSGFuZGxlcl8gKlRjbF9Bc3lu Y0hhbmRsZXI7CnR5cGVkZWYgc3RydWN0IFRjbF9DaGFubmVsXyAqVGNsX0NoYW5uZWw7CnR5cGVk ZWYgc3RydWN0IFRjbF9Db21tYW5kXyAqVGNsX0NvbW1hbmQ7CnR5cGVkZWYgc3RydWN0IFRjbF9D b25kaXRpb25fICpUY2xfQ29uZGl0aW9uOwp0eXBlZGVmIHN0cnVjdCBUY2xfRW5jb2RpbmdTdGF0 ZV8gKlRjbF9FbmNvZGluZ1N0YXRlOwp0eXBlZGVmIHN0cnVjdCBUY2xfRW5jb2RpbmdfICpUY2xf RW5jb2Rpbmc7CnR5cGVkZWYgc3RydWN0IFRjbF9FdmVudCBUY2xfRXZlbnQ7CnR5cGVkZWYgc3Ry dWN0IFRjbF9NdXRleF8gKlRjbF9NdXRleDsKdHlwZWRlZiBzdHJ1Y3QgVGNsX1BpZF8gKlRjbF9Q aWQ7CnR5cGVkZWYgc3RydWN0IFRjbF9SZWdFeHBfICpUY2xfUmVnRXhwOwp0eXBlZGVmIHN0cnVj dCBUY2xfVGhyZWFkRGF0YUtleV8gKlRjbF9UaHJlYWREYXRhS2V5Owp0eXBlZGVmIHN0cnVjdCBU Y2xfVGhyZWFkSWRfICpUY2xfVGhyZWFkSWQ7CnR5cGVkZWYgc3RydWN0IFRjbF9UaW1lclRva2Vu XyAqVGNsX1RpbWVyVG9rZW47CnR5cGVkZWYgc3RydWN0IFRjbF9UcmFjZV8gKlRjbF9UcmFjZTsK dHlwZWRlZiBzdHJ1Y3QgVGNsX1Zhcl8gKlRjbF9WYXI7CiMgNDAyICIvdXNyL2luY2x1ZGUvdGNs LmgiIDMKdHlwZWRlZiB2b2lkIChUY2xfVGhyZWFkQ3JlYXRlUHJvYykgKENsaWVudERhdGEgY2xp ZW50RGF0YSk7CiMgNDc0ICIvdXNyL2luY2x1ZGUvdGNsLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgVGNs X1JlZ0V4cEluZGljZXMgewogICAgbG9uZyBzdGFydDsKICAgIGxvbmcgZW5kOwoKfSBUY2xfUmVn RXhwSW5kaWNlczsKCnR5cGVkZWYgc3RydWN0IFRjbF9SZWdFeHBJbmZvIHsKICAgIGludCBuc3Vi czsKCiAgICBUY2xfUmVnRXhwSW5kaWNlcyAqbWF0Y2hlczsKCiAgICBsb25nIGV4dGVuZFN0YXJ0 OwoKICAgIGxvbmcgcmVzZXJ2ZWQ7Cn0gVGNsX1JlZ0V4cEluZm87CgoKCgoKCnR5cGVkZWYgc3Ry dWN0IHN0YXQgKlRjbF9TdGF0XzsKIyA1MzAgIi91c3IvaW5jbHVkZS90Y2wuaCIgMwp0eXBlZGVm IGVudW0ge1RDTF9JTlQsIFRDTF9ET1VCTEUsIFRDTF9FSVRIRVJ9IFRjbF9WYWx1ZVR5cGU7CnR5 cGVkZWYgc3RydWN0IFRjbF9WYWx1ZSB7CiAgICBUY2xfVmFsdWVUeXBlIHR5cGU7CgogICAgbG9u ZyBpbnRWYWx1ZTsKICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsKfSBUY2xfVmFsdWU7CgoKCgoKCgpz dHJ1Y3QgVGNsX09iajsKCgoKCgp0eXBlZGVmIGludCAoVGNsX0FwcEluaXRQcm9jKSAoVGNsX0lu dGVycCAqaW50ZXJwKTsKdHlwZWRlZiBpbnQgKFRjbF9Bc3luY1Byb2MpIChDbGllbnREYXRhIGNs aWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwgaW50IGNvZGUpOwoKdHlwZWRlZiB2b2lkIChU Y2xfQ2hhbm5lbFByb2MpIChDbGllbnREYXRhIGNsaWVudERhdGEsIGludCBtYXNrKTsKdHlwZWRl ZiB2b2lkIChUY2xfQ2xvc2VQcm9jKSAoQ2xpZW50RGF0YSBkYXRhKTsKdHlwZWRlZiB2b2lkIChU Y2xfQ21kRGVsZXRlUHJvYykgKENsaWVudERhdGEgY2xpZW50RGF0YSk7CnR5cGVkZWYgaW50IChU Y2xfQ21kUHJvYykgKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBp bnQgYXJnYywgY2hhciAqYXJndltdKTsKCnR5cGVkZWYgdm9pZCAoVGNsX0NtZFRyYWNlUHJvYykg KENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgbGV2ZWwsIGNo YXIgKmNvbW1hbmQsIFRjbF9DbWRQcm9jICpwcm9jLCBDbGllbnREYXRhIGNtZENsaWVudERhdGEs IGludCBhcmdjLCBjaGFyICphcmd2W10pOwoKCnR5cGVkZWYgdm9pZCAoVGNsX0R1cEludGVybmFs UmVwUHJvYykgKHN0cnVjdCBUY2xfT2JqICpzcmNQdHIsIHN0cnVjdCBUY2xfT2JqICpkdXBQdHIp OwoKdHlwZWRlZiBpbnQgKFRjbF9FbmNvZGluZ0NvbnZlcnRQcm9jKShDbGllbnREYXRhIGNsaWVu dERhdGEsIGNvbnN0IGNoYXIgKnNyYywgaW50IHNyY0xlbiwgaW50IGZsYWdzLCBUY2xfRW5jb2Rp bmdTdGF0ZSAqc3RhdGVQdHIsIGNoYXIgKmRzdCwgaW50IGRzdExlbiwgaW50ICpzcmNSZWFkUHRy LCBpbnQgKmRzdFdyb3RlUHRyLCBpbnQgKmRzdENoYXJzUHRyKTsKCgoKdHlwZWRlZiB2b2lkIChU Y2xfRW5jb2RpbmdGcmVlUHJvYykoQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKdHlwZWRlZiBpbnQg KFRjbF9FdmVudFByb2MpIChUY2xfRXZlbnQgKmV2UHRyLCBpbnQgZmxhZ3MpOwp0eXBlZGVmIHZv aWQgKFRjbF9FdmVudENoZWNrUHJvYykgKENsaWVudERhdGEgY2xpZW50RGF0YSwgaW50IGZsYWdz KTsKCnR5cGVkZWYgaW50IChUY2xfRXZlbnREZWxldGVQcm9jKSAoVGNsX0V2ZW50ICpldlB0ciwg Q2xpZW50RGF0YSBjbGllbnREYXRhKTsKCnR5cGVkZWYgdm9pZCAoVGNsX0V2ZW50U2V0dXBQcm9j KSAoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBpbnQgZmxhZ3MpOwoKdHlwZWRlZiB2b2lkIChUY2xf RXhpdFByb2MpIChDbGllbnREYXRhIGNsaWVudERhdGEpOwp0eXBlZGVmIHZvaWQgKFRjbF9GaWxl UHJvYykgKENsaWVudERhdGEgY2xpZW50RGF0YSwgaW50IG1hc2spOwp0eXBlZGVmIHZvaWQgKFRj bF9GaWxlRnJlZVByb2MpIChDbGllbnREYXRhIGNsaWVudERhdGEpOwp0eXBlZGVmIHZvaWQgKFRj bF9GcmVlSW50ZXJuYWxSZXBQcm9jKSAoc3RydWN0IFRjbF9PYmogKm9ialB0cik7CnR5cGVkZWYg dm9pZCAoVGNsX0ZyZWVQcm9jKSAoY2hhciAqYmxvY2tQdHIpOwp0eXBlZGVmIHZvaWQgKFRjbF9J ZGxlUHJvYykgKENsaWVudERhdGEgY2xpZW50RGF0YSk7CnR5cGVkZWYgdm9pZCAoVGNsX0ludGVy cERlbGV0ZVByb2MpIChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVycCk7 Cgp0eXBlZGVmIGludCAoVGNsX01hdGhQcm9jKSAoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xf SW50ZXJwICppbnRlcnAsIFRjbF9WYWx1ZSAqYXJncywgVGNsX1ZhbHVlICpyZXN1bHRQdHIpOwoK dHlwZWRlZiB2b2lkIChUY2xfTmFtZXNwYWNlRGVsZXRlUHJvYykgKENsaWVudERhdGEgY2xpZW50 RGF0YSk7CnR5cGVkZWYgaW50IChUY2xfT2JqQ21kUHJvYykgKENsaWVudERhdGEgY2xpZW50RGF0 YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgb2JqYywgc3RydWN0IFRjbF9PYmogKmNvbnN0IG9i anZbXSk7Cgp0eXBlZGVmIGludCAoVGNsX1BhY2thZ2VJbml0UHJvYykgKFRjbF9JbnRlcnAgKmlu dGVycCk7CnR5cGVkZWYgdm9pZCAoVGNsX1BhbmljUHJvYykgKGNoYXIgKiBmb3JtYXQsIC4uLik7 CnR5cGVkZWYgdm9pZCAoVGNsX1RjcEFjY2VwdFByb2MpIChDbGllbnREYXRhIGNhbGxiYWNrRGF0 YSwgVGNsX0NoYW5uZWwgY2hhbiwgY2hhciAqYWRkcmVzcywgaW50IHBvcnQpOwoKdHlwZWRlZiB2 b2lkIChUY2xfVGltZXJQcm9jKSAoQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKdHlwZWRlZiBpbnQg KFRjbF9TZXRGcm9tQW55UHJvYykgKFRjbF9JbnRlcnAgKmludGVycCwgc3RydWN0IFRjbF9PYmog Km9ialB0cik7Cgp0eXBlZGVmIHZvaWQgKFRjbF9VcGRhdGVTdHJpbmdQcm9jKSAoc3RydWN0IFRj bF9PYmogKm9ialB0cik7CnR5cGVkZWYgY2hhciAqKFRjbF9WYXJUcmFjZVByb2MpIChDbGllbnRE YXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwgY2hhciAqcGFydDEsIGNoYXIgKnBh cnQyLCBpbnQgZmxhZ3MpOwoKdHlwZWRlZiB2b2lkIChUY2xfQ3JlYXRlRmlsZUhhbmRsZXJQcm9j KSAoaW50IGZkLCBpbnQgbWFzaywgVGNsX0ZpbGVQcm9jICpwcm9jLCBDbGllbnREYXRhIGNsaWVu dERhdGEpOwoKdHlwZWRlZiB2b2lkIChUY2xfRGVsZXRlRmlsZUhhbmRsZXJQcm9jKSAoaW50IGZk KTsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IFRjbF9PYmpUeXBlIHsKICAgIGNoYXIgKm5hbWU7CiAg ICBUY2xfRnJlZUludGVybmFsUmVwUHJvYyAqZnJlZUludFJlcFByb2M7CgoKCiAgICBUY2xfRHVw SW50ZXJuYWxSZXBQcm9jICpkdXBJbnRSZXBQcm9jOwoKCiAgICBUY2xfVXBkYXRlU3RyaW5nUHJv YyAqdXBkYXRlU3RyaW5nUHJvYzsKCgogICAgVGNsX1NldEZyb21BbnlQcm9jICpzZXRGcm9tQW55 UHJvYzsKCgoKCn0gVGNsX09ialR5cGU7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBUY2xfT2JqIHsK ICAgIGludCByZWZDb3VudDsKICAgIGNoYXIgKmJ5dGVzOwojIDY0NiAiL3Vzci9pbmNsdWRlL3Rj bC5oIiAzCiAgICBpbnQgbGVuZ3RoOwoKICAgIFRjbF9PYmpUeXBlICp0eXBlUHRyOwoKCgogICAg dW5pb24gewogICAgICAgIGxvbmcgbG9uZ1ZhbHVlOwogICAgICAgIGRvdWJsZSBkb3VibGVWYWx1 ZTsKICAgICAgICB2b2lkICpvdGhlclZhbHVlUHRyOwogICAgICAgIHN0cnVjdCB7CiAgICAgICAg ICAgIHZvaWQgKnB0cjE7CiAgICAgICAgICAgIHZvaWQgKnB0cjI7CiAgICAgICAgfSB0d29QdHJW YWx1ZTsKICAgIH0gaW50ZXJuYWxSZXA7Cn0gVGNsX09iajsKIyA2NzQgIi91c3IvaW5jbHVkZS90 Y2wuaCIgMwp2b2lkIFRjbF9JbmNyUmVmQ291bnQgKFRjbF9PYmogKm9ialB0cik7CnZvaWQgVGNs X0RlY3JSZWZDb3VudCAoVGNsX09iaiAqb2JqUHRyKTsKaW50IFRjbF9Jc1NoYXJlZCAoVGNsX09i aiAqb2JqUHRyKTsKIyA3MjUgIi91c3IvaW5jbHVkZS90Y2wuaCIgMwp0eXBlZGVmIHN0cnVjdCBU Y2xfU2F2ZWRSZXN1bHQgewogICAgY2hhciAqcmVzdWx0OwogICAgVGNsX0ZyZWVQcm9jICpmcmVl UHJvYzsKICAgIFRjbF9PYmogKm9ialJlc3VsdFB0cjsKICAgIGNoYXIgKmFwcGVuZFJlc3VsdDsK ICAgIGludCBhcHBlbmRBdmw7CiAgICBpbnQgYXBwZW5kVXNlZDsKICAgIGNoYXIgcmVzdWx0U3Bh Y2VbMjAwICsxXTsKfSBUY2xfU2F2ZWRSZXN1bHQ7CiMgNzQyICIvdXNyL2luY2x1ZGUvdGNsLmgi IDMKdHlwZWRlZiBzdHJ1Y3QgVGNsX05hbWVzcGFjZSB7CiAgICBjaGFyICpuYW1lOwoKCgogICAg Y2hhciAqZnVsbE5hbWU7CgogICAgQ2xpZW50RGF0YSBjbGllbnREYXRhOwoKICAgIFRjbF9OYW1l c3BhY2VEZWxldGVQcm9jKiBkZWxldGVQcm9jOwoKCiAgICBzdHJ1Y3QgVGNsX05hbWVzcGFjZSog cGFyZW50UHRyOwoKCgp9IFRjbF9OYW1lc3BhY2U7CiMgNzgyICIvdXNyL2luY2x1ZGUvdGNsLmgi IDMKdHlwZWRlZiBzdHJ1Y3QgVGNsX0NhbGxGcmFtZSB7CiAgICBUY2xfTmFtZXNwYWNlICpuc1B0 cjsKICAgIGludCBkdW1teTE7CiAgICBpbnQgZHVtbXkyOwogICAgY2hhciAqZHVtbXkzOwogICAg Y2hhciAqZHVtbXk0OwogICAgY2hhciAqZHVtbXk1OwogICAgaW50IGR1bW15NjsKICAgIGNoYXIg KmR1bW15NzsKICAgIGNoYXIgKmR1bW15ODsKICAgIGludCBkdW1teTk7CiAgICBjaGFyKiBkdW1t eTEwOwp9IFRjbF9DYWxsRnJhbWU7CiMgODExICIvdXNyL2luY2x1ZGUvdGNsLmgiIDMKdHlwZWRl ZiBzdHJ1Y3QgVGNsX0NtZEluZm8gewogICAgaW50IGlzTmF0aXZlT2JqZWN0UHJvYzsKCgoKICAg IFRjbF9PYmpDbWRQcm9jICpvYmpQcm9jOwogICAgQ2xpZW50RGF0YSBvYmpDbGllbnREYXRhOwog ICAgVGNsX0NtZFByb2MgKnByb2M7CiAgICBDbGllbnREYXRhIGNsaWVudERhdGE7CiAgICBUY2xf Q21kRGVsZXRlUHJvYyAqZGVsZXRlUHJvYzsKCgogICAgQ2xpZW50RGF0YSBkZWxldGVEYXRhOwoK ICAgIFRjbF9OYW1lc3BhY2UgKm5hbWVzcGFjZVB0cjsKCgoKCn0gVGNsX0NtZEluZm87CiMgODM5 ICIvdXNyL2luY2x1ZGUvdGNsLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgVGNsX0RTdHJpbmcgewogICAg Y2hhciAqc3RyaW5nOwoKICAgIGludCBsZW5ndGg7CgogICAgaW50IHNwYWNlQXZsOwoKICAgIGNo YXIgc3RhdGljU3BhY2VbMjAwXTsKCgp9IFRjbF9EU3RyaW5nOwojIDk1MSAiL3Vzci9pbmNsdWRl L3RjbC5oIiAzCnN0cnVjdCBUY2xfSGFzaFRhYmxlOwojIDk2MCAiL3Vzci9pbmNsdWRlL3RjbC5o IiAzCnR5cGVkZWYgc3RydWN0IFRjbF9IYXNoRW50cnkgewogICAgc3RydWN0IFRjbF9IYXNoRW50 cnkgKm5leHRQdHI7CgoKICAgIHN0cnVjdCBUY2xfSGFzaFRhYmxlICp0YWJsZVB0cjsKICAgIHN0 cnVjdCBUY2xfSGFzaEVudHJ5ICoqYnVja2V0UHRyOwoKCiAgICBDbGllbnREYXRhIGNsaWVudERh dGE7CgogICAgdW5pb24gewogICAgICAgIGNoYXIgKm9uZVdvcmRWYWx1ZTsKICAgICAgICBpbnQg d29yZHNbMV07CgoKCiAgICAgICAgY2hhciBzdHJpbmdbNF07CgoKICAgIH0ga2V5Owp9IFRjbF9I YXNoRW50cnk7CiMgOTg5ICIvdXNyL2luY2x1ZGUvdGNsLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgVGNs X0hhc2hUYWJsZSB7CiAgICBUY2xfSGFzaEVudHJ5ICoqYnVja2V0czsKCgogICAgVGNsX0hhc2hF bnRyeSAqc3RhdGljQnVja2V0c1s0XTsKCgogICAgaW50IG51bUJ1Y2tldHM7CgogICAgaW50IG51 bUVudHJpZXM7CgogICAgaW50IHJlYnVpbGRTaXplOwoKICAgIGludCBkb3duU2hpZnQ7CgoKICAg IGludCBtYXNrOwoKICAgIGludCBrZXlUeXBlOwoKCgoKCiAgICBUY2xfSGFzaEVudHJ5ICooKmZp bmRQcm9jKSAoc3RydWN0IFRjbF9IYXNoVGFibGUgKnRhYmxlUHRyLCBjb25zdCBjaGFyICprZXkp OwoKICAgIFRjbF9IYXNoRW50cnkgKigqY3JlYXRlUHJvYykgKHN0cnVjdCBUY2xfSGFzaFRhYmxl ICp0YWJsZVB0ciwgY29uc3QgY2hhciAqa2V5LCBpbnQgKm5ld1B0cik7Cgp9IFRjbF9IYXNoVGFi bGU7CgoKCgoKCnR5cGVkZWYgc3RydWN0IFRjbF9IYXNoU2VhcmNoIHsKICAgIFRjbF9IYXNoVGFi bGUgKnRhYmxlUHRyOwogICAgaW50IG5leHRJbmRleDsKCiAgICBUY2xfSGFzaEVudHJ5ICpuZXh0 RW50cnlQdHI7Cgp9IFRjbF9IYXNoU2VhcmNoOwojIDEwODEgIi91c3IvaW5jbHVkZS90Y2wuaCIg MwpzdHJ1Y3QgVGNsX0V2ZW50IHsKICAgIFRjbF9FdmVudFByb2MgKnByb2M7CiAgICBzdHJ1Y3Qg VGNsX0V2ZW50ICpuZXh0UHRyOwp9OwoKCgoKCnR5cGVkZWYgZW51bSB7CiAgICBUQ0xfUVVFVUVf VEFJTCwgVENMX1FVRVVFX0hFQUQsIFRDTF9RVUVVRV9NQVJLCn0gVGNsX1F1ZXVlUG9zaXRpb247 CiMgMTEwOSAiL3Vzci9pbmNsdWRlL3RjbC5oIiAzCnR5cGVkZWYgc3RydWN0IFRjbF9UaW1lIHsK ICAgIGxvbmcgc2VjOwogICAgbG9uZyB1c2VjOwp9IFRjbF9UaW1lOwoKdHlwZWRlZiB2b2lkIChU Y2xfU2V0VGltZXJQcm9jKSAoVGNsX1RpbWUgKnRpbWVQdHIpOwp0eXBlZGVmIGludCAoVGNsX1dh aXRGb3JFdmVudFByb2MpIChUY2xfVGltZSAqdGltZVB0cik7CiMgMTE1NiAiL3Vzci9pbmNsdWRl L3RjbC5oIiAzCnR5cGVkZWYgaW50IChUY2xfRHJpdmVyQmxvY2tNb2RlUHJvYykgKCBDbGllbnRE YXRhIGluc3RhbmNlRGF0YSwgaW50IG1vZGUpOwoKdHlwZWRlZiBpbnQgKFRjbF9Ecml2ZXJDbG9z ZVByb2MpIChDbGllbnREYXRhIGluc3RhbmNlRGF0YSwgVGNsX0ludGVycCAqaW50ZXJwKTsKCnR5 cGVkZWYgaW50IChUY2xfRHJpdmVyQ2xvc2UyUHJvYykgKENsaWVudERhdGEgaW5zdGFuY2VEYXRh LCBUY2xfSW50ZXJwICppbnRlcnAsIGludCBmbGFncyk7Cgp0eXBlZGVmIGludCAoVGNsX0RyaXZl cklucHV0UHJvYykgKENsaWVudERhdGEgaW5zdGFuY2VEYXRhLCBjaGFyICpidWYsIGludCB0b1Jl YWQsIGludCAqZXJyb3JDb2RlUHRyKTsKCnR5cGVkZWYgaW50IChUY2xfRHJpdmVyT3V0cHV0UHJv YykgKENsaWVudERhdGEgaW5zdGFuY2VEYXRhLCBjaGFyICpidWYsIGludCB0b1dyaXRlLCBpbnQg KmVycm9yQ29kZVB0cik7Cgp0eXBlZGVmIGludCAoVGNsX0RyaXZlclNlZWtQcm9jKSAoQ2xpZW50 RGF0YSBpbnN0YW5jZURhdGEsIGxvbmcgb2Zmc2V0LCBpbnQgbW9kZSwgaW50ICplcnJvckNvZGVQ dHIpOwoKdHlwZWRlZiBpbnQgKFRjbF9Ecml2ZXJTZXRPcHRpb25Qcm9jKSAoIENsaWVudERhdGEg aW5zdGFuY2VEYXRhLCBUY2xfSW50ZXJwICppbnRlcnAsIGNoYXIgKm9wdGlvbk5hbWUsIGNoYXIg KnZhbHVlKTsKCgp0eXBlZGVmIGludCAoVGNsX0RyaXZlckdldE9wdGlvblByb2MpICggQ2xpZW50 RGF0YSBpbnN0YW5jZURhdGEsIFRjbF9JbnRlcnAgKmludGVycCwgY2hhciAqb3B0aW9uTmFtZSwg VGNsX0RTdHJpbmcgKmRzUHRyKTsKCgp0eXBlZGVmIHZvaWQgKFRjbF9Ecml2ZXJXYXRjaFByb2Mp ICggQ2xpZW50RGF0YSBpbnN0YW5jZURhdGEsIGludCBtYXNrKTsKCnR5cGVkZWYgaW50IChUY2xf RHJpdmVyR2V0SGFuZGxlUHJvYykgKCBDbGllbnREYXRhIGluc3RhbmNlRGF0YSwgaW50IGRpcmVj dGlvbiwgQ2xpZW50RGF0YSAqaGFuZGxlUHRyKTsKIyAxMjE0ICIvdXNyL2luY2x1ZGUvdGNsLmgi IDMKdHlwZWRlZiBlbnVtIFRjbF9Fb2xUcmFuc2xhdGlvbiB7CiAgICBUQ0xfVFJBTlNMQVRFX0FV VE8sCiAgICBUQ0xfVFJBTlNMQVRFX0NSLAogICAgVENMX1RSQU5TTEFURV9MRiwKICAgIFRDTF9U UkFOU0xBVEVfQ1JMRgp9IFRjbF9Fb2xUcmFuc2xhdGlvbjsKIyAxMjI5ICIvdXNyL2luY2x1ZGUv dGNsLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgVGNsX0NoYW5uZWxUeXBlIHsKICAgIGNoYXIgKnR5cGVO YW1lOwoKCiAgICBUY2xfRHJpdmVyQmxvY2tNb2RlUHJvYyAqYmxvY2tNb2RlUHJvYzsKCgogICAg VGNsX0RyaXZlckNsb3NlUHJvYyAqY2xvc2VQcm9jOwoKCgogICAgVGNsX0RyaXZlcklucHV0UHJv YyAqaW5wdXRQcm9jOwoKICAgIFRjbF9Ecml2ZXJPdXRwdXRQcm9jICpvdXRwdXRQcm9jOwoKICAg IFRjbF9Ecml2ZXJTZWVrUHJvYyAqc2Vla1Byb2M7CgogICAgVGNsX0RyaXZlclNldE9wdGlvblBy b2MgKnNldE9wdGlvblByb2M7CgogICAgVGNsX0RyaXZlckdldE9wdGlvblByb2MgKmdldE9wdGlv blByb2M7CgogICAgVGNsX0RyaXZlcldhdGNoUHJvYyAqd2F0Y2hQcm9jOwoKICAgIFRjbF9Ecml2 ZXJHZXRIYW5kbGVQcm9jICpnZXRIYW5kbGVQcm9jOwoKCiAgICBUY2xfRHJpdmVyQ2xvc2UyUHJv YyAqY2xvc2UyUHJvYzsKCgoKfSBUY2xfQ2hhbm5lbFR5cGU7CiMgMTI3NSAiL3Vzci9pbmNsdWRl L3RjbC5oIiAzCnR5cGVkZWYgZW51bSBUY2xfUGF0aFR5cGUgewogICAgVENMX1BBVEhfQUJTT0xV VEUsCiAgICBUQ0xfUEFUSF9SRUxBVElWRSwKICAgIFRDTF9QQVRIX1ZPTFVNRV9SRUxBVElWRQp9 IFRjbF9QYXRoVHlwZTsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgVGNsX05vdGlmaWVyUHJvY3Mgewog ICAgVGNsX1NldFRpbWVyUHJvYyAqc2V0VGltZXJQcm9jOwogICAgVGNsX1dhaXRGb3JFdmVudFBy b2MgKndhaXRGb3JFdmVudFByb2M7CiAgICBUY2xfQ3JlYXRlRmlsZUhhbmRsZXJQcm9jICpjcmVh dGVGaWxlSGFuZGxlclByb2M7CiAgICBUY2xfRGVsZXRlRmlsZUhhbmRsZXJQcm9jICpkZWxldGVG aWxlSGFuZGxlclByb2M7Cn0gVGNsX05vdGlmaWVyUHJvY3M7CgoKCgoKCnR5cGVkZWYgc3RydWN0 IFRjbF9FbmNvZGluZ1R5cGUgewogICAgY29uc3QgY2hhciAqZW5jb2RpbmdOYW1lOwoKCiAgICBU Y2xfRW5jb2RpbmdDb252ZXJ0UHJvYyAqdG9VdGZQcm9jOwoKCiAgICBUY2xfRW5jb2RpbmdDb252 ZXJ0UHJvYyAqZnJvbVV0ZlByb2M7CgoKICAgIFRjbF9FbmNvZGluZ0ZyZWVQcm9jICpmcmVlUHJv YzsKCgogICAgQ2xpZW50RGF0YSBjbGllbnREYXRhOwoKICAgIGludCBudWxsU2l6ZTsKCgoKCn0g VGNsX0VuY29kaW5nVHlwZTsKIyAxMzY5ICIvdXNyL2luY2x1ZGUvdGNsLmgiIDMKdHlwZWRlZiBz dHJ1Y3QgVGNsX1Rva2VuIHsKICAgIGludCB0eXBlOwoKICAgIGNoYXIgKnN0YXJ0OwogICAgaW50 IHNpemU7CiAgICBpbnQgbnVtQ29tcG9uZW50czsKCgoKCn0gVGNsX1Rva2VuOwojIDE0ODggIi91 c3IvaW5jbHVkZS90Y2wuaCIgMwp0eXBlZGVmIHN0cnVjdCBUY2xfUGFyc2UgewogICAgY2hhciAq Y29tbWVudFN0YXJ0OwoKCiAgICBpbnQgY29tbWVudFNpemU7CgoKCiAgICBjaGFyICpjb21tYW5k U3RhcnQ7CiAgICBpbnQgY29tbWFuZFNpemU7CgoKCiAgICBpbnQgbnVtV29yZHM7CgogICAgVGNs X1Rva2VuICp0b2tlblB0cjsKCgoKCiAgICBpbnQgbnVtVG9rZW5zOwogICAgaW50IHRva2Vuc0F2 YWlsYWJsZTsKCiAgICBpbnQgZXJyb3JUeXBlOwojIDE1MjAgIi91c3IvaW5jbHVkZS90Y2wuaCIg MwogICAgY2hhciAqc3RyaW5nOwoKICAgIGNoYXIgKmVuZDsKCiAgICBUY2xfSW50ZXJwICppbnRl cnA7CgogICAgY2hhciAqdGVybTsKCgoKCgogICAgaW50IGluY29tcGxldGU7CgoKCiAgICBUY2xf VG9rZW4gc3RhdGljVG9rZW5zWzIwXTsKCgoKCgp9IFRjbF9QYXJzZTsKIyAxNTkyICIvdXNyL2lu Y2x1ZGUvdGNsLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBUY2xfVW5pQ2hhcjsKIyAxNjM1 ICIvdXNyL2luY2x1ZGUvdGNsLmgiIDMKZXh0ZXJuICJDIiBjaGFyICogVGNsX0luaXRTdHVicyAo VGNsX0ludGVycCAqaW50ZXJwLCBjaGFyICp2ZXJzaW9uLCBpbnQgZXhhY3QpOwojIDE2NTUgIi91 c3IvaW5jbHVkZS90Y2wuaCIgMwojIDEgIi91c3IvaW5jbHVkZS90Y2xEZWNscy5oIiAxIDMKIyAz MCAiL3Vzci9pbmNsdWRlL3RjbERlY2xzLmgiIDMKZXh0ZXJuICJDIiBpbnQgVGNsX1BrZ1Byb3Zp ZGVFeCAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIG5hbWUsIGNoYXIgKiB2ZXJzaW9uLCBD bGllbnREYXRhIGNsaWVudERhdGEpOwoKCgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfUGtnUmVxdWly ZUV4IChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogbmFtZSwgY2hhciAqIHZlcnNpb24sIGlu dCBleGFjdCwgQ2xpZW50RGF0YSAqIGNsaWVudERhdGFQdHIpOwoKCgpleHRlcm4gIkMiIHZvaWQg VGNsX1BhbmljIChjaGFyICogZm9ybWF0LCAuLi4pOwoKZXh0ZXJuICJDIiBjaGFyICogVGNsX0Fs bG9jICh1bnNpZ25lZCBpbnQgc2l6ZSk7CgpleHRlcm4gIkMiIHZvaWQgVGNsX0ZyZWUgKGNoYXIg KiBwdHIpOwoKZXh0ZXJuICJDIiBjaGFyICogVGNsX1JlYWxsb2MgKGNoYXIgKiBwdHIsIHVuc2ln bmVkIGludCBzaXplKTsKCgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfRGJDa2FsbG9jICh1bnNpZ25l ZCBpbnQgc2l6ZSwgY2hhciAqIGZpbGUsIGludCBsaW5lKTsKCgpleHRlcm4gIkMiIGludCBUY2xf RGJDa2ZyZWUgKGNoYXIgKiBwdHIsIGNoYXIgKiBmaWxlLCBpbnQgbGluZSk7CgoKZXh0ZXJuICJD IiBjaGFyICogVGNsX0RiQ2tyZWFsbG9jIChjaGFyICogcHRyLCB1bnNpZ25lZCBpbnQgc2l6ZSwg Y2hhciAqIGZpbGUsIGludCBsaW5lKTsKCgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9DcmVhdGVGaWxl SGFuZGxlciAoaW50IGZkLCBpbnQgbWFzaywgVGNsX0ZpbGVQcm9jICogcHJvYywgQ2xpZW50RGF0 YSBjbGllbnREYXRhKTsKCgoKCmV4dGVybiAiQyIgdm9pZCBUY2xfRGVsZXRlRmlsZUhhbmRsZXIg KGludCBmZCk7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9TZXRUaW1lciAoVGNsX1RpbWUgKiB0aW1l UHRyKTsKCmV4dGVybiAiQyIgdm9pZCBUY2xfU2xlZXAgKGludCBtcyk7CgpleHRlcm4gIkMiIGlu dCBUY2xfV2FpdEZvckV2ZW50IChUY2xfVGltZSAqIHRpbWVQdHIpOwoKZXh0ZXJuICJDIiBpbnQg VGNsX0FwcGVuZEFsbE9ialR5cGVzICggVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIG9i alB0cik7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9BcHBlbmRTdHJpbmdzVG9PYmogKFRjbF9PYmog KiBvYmpQdHIsIC4uLik7CgpleHRlcm4gIkMiIHZvaWQgVGNsX0FwcGVuZFRvT2JqIChUY2xfT2Jq ICogb2JqUHRyLCBjaGFyICogYnl0ZXMsIGludCBsZW5ndGgpOwoKCmV4dGVybiAiQyIgVGNsX09i aiAqIFRjbF9Db25jYXRPYmogKGludCBvYmpjLCBUY2xfT2JqICpjb25zdCBvYmp2W10pOwoKCmV4 dGVybiAiQyIgaW50IFRjbF9Db252ZXJ0VG9UeXBlIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xf T2JqICogb2JqUHRyLCBUY2xfT2JqVHlwZSAqIHR5cGVQdHIpOwoKCmV4dGVybiAiQyIgdm9pZCBU Y2xfRGJEZWNyUmVmQ291bnQgKFRjbF9PYmogKiBvYmpQdHIsIGNoYXIgKiBmaWxlLCBpbnQgbGlu ZSk7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9EYkluY3JSZWZDb3VudCAoVGNsX09iaiAqIG9ialB0 ciwgY2hhciAqIGZpbGUsIGludCBsaW5lKTsKCgpleHRlcm4gIkMiIGludCBUY2xfRGJJc1NoYXJl ZCAoVGNsX09iaiAqIG9ialB0ciwgY2hhciAqIGZpbGUsIGludCBsaW5lKTsKCgpleHRlcm4gIkMi IFRjbF9PYmogKiBUY2xfRGJOZXdCb29sZWFuT2JqIChpbnQgYm9vbFZhbHVlLCBjaGFyICogZmls ZSwgaW50IGxpbmUpOwoKCmV4dGVybiAiQyIgVGNsX09iaiAqIFRjbF9EYk5ld0J5dGVBcnJheU9i aiAoIHVuc2lnbmVkIGNoYXIgKiBieXRlcywgaW50IGxlbmd0aCwgY2hhciAqIGZpbGUsIGludCBs aW5lKTsKCgoKZXh0ZXJuICJDIiBUY2xfT2JqICogVGNsX0RiTmV3RG91YmxlT2JqIChkb3VibGUg ZG91YmxlVmFsdWUsIGNoYXIgKiBmaWxlLCBpbnQgbGluZSk7CgoKZXh0ZXJuICJDIiBUY2xfT2Jq ICogVGNsX0RiTmV3TGlzdE9iaiAoaW50IG9iamMsIFRjbF9PYmogKmNvbnN0IG9ianZbXSwgY2hh ciAqIGZpbGUsIGludCBsaW5lKTsKCgpleHRlcm4gIkMiIFRjbF9PYmogKiBUY2xfRGJOZXdMb25n T2JqIChsb25nIGxvbmdWYWx1ZSwgY2hhciAqIGZpbGUsIGludCBsaW5lKTsKCgpleHRlcm4gIkMi IFRjbF9PYmogKiBUY2xfRGJOZXdPYmogKGNoYXIgKiBmaWxlLCBpbnQgbGluZSk7CgpleHRlcm4g IkMiIFRjbF9PYmogKiBUY2xfRGJOZXdTdHJpbmdPYmogKGNvbnN0IGNoYXIgKiBieXRlcywgaW50 IGxlbmd0aCwgY2hhciAqIGZpbGUsIGludCBsaW5lKTsKCgpleHRlcm4gIkMiIFRjbF9PYmogKiBU Y2xfRHVwbGljYXRlT2JqIChUY2xfT2JqICogb2JqUHRyKTsKCmV4dGVybiAiQyIgdm9pZCBUY2xG cmVlT2JqIChUY2xfT2JqICogb2JqUHRyKTsKCmV4dGVybiAiQyIgaW50IFRjbF9HZXRCb29sZWFu IChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogc3RyLCBpbnQgKiBib29sUHRyKTsKCgpleHRl cm4gIkMiIGludCBUY2xfR2V0Qm9vbGVhbkZyb21PYmogKCBUY2xfSW50ZXJwICogaW50ZXJwLCBU Y2xfT2JqICogb2JqUHRyLCBpbnQgKiBib29sUHRyKTsKCgoKZXh0ZXJuICJDIiB1bnNpZ25lZCBj aGFyICogVGNsX0dldEJ5dGVBcnJheUZyb21PYmogKCBUY2xfT2JqICogb2JqUHRyLCBpbnQgKiBs ZW5ndGhQdHIpOwoKCmV4dGVybiAiQyIgaW50IFRjbF9HZXREb3VibGUgKFRjbF9JbnRlcnAgKiBp bnRlcnAsIGNoYXIgKiBzdHIsIGRvdWJsZSAqIGRvdWJsZVB0cik7CgoKZXh0ZXJuICJDIiBpbnQg VGNsX0dldERvdWJsZUZyb21PYmogKCBUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogb2Jq UHRyLCBkb3VibGUgKiBkb3VibGVQdHIpOwoKCgpleHRlcm4gIkMiIGludCBUY2xfR2V0SW5kZXhG cm9tT2JqIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogb2JqUHRyLCBjaGFyICoqIHRh YmxlUHRyLCBjaGFyICogbXNnLCBpbnQgZmxhZ3MsIGludCAqIGluZGV4UHRyKTsKCgoKZXh0ZXJu ICJDIiBpbnQgVGNsX0dldEludCAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0ciwgaW50 ICogaW50UHRyKTsKCgpleHRlcm4gIkMiIGludCBUY2xfR2V0SW50RnJvbU9iaiAoVGNsX0ludGVy cCAqIGludGVycCwgVGNsX09iaiAqIG9ialB0ciwgaW50ICogaW50UHRyKTsKCgpleHRlcm4gIkMi IGludCBUY2xfR2V0TG9uZ0Zyb21PYmogKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBv YmpQdHIsIGxvbmcgKiBsb25nUHRyKTsKCgpleHRlcm4gIkMiIFRjbF9PYmpUeXBlICogVGNsX0dl dE9ialR5cGUgKGNoYXIgKiB0eXBlTmFtZSk7CgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfR2V0U3Ry aW5nRnJvbU9iaiAoVGNsX09iaiAqIG9ialB0ciwgaW50ICogbGVuZ3RoUHRyKTsKCgpleHRlcm4g IkMiIHZvaWQgVGNsX0ludmFsaWRhdGVTdHJpbmdSZXAgKCBUY2xfT2JqICogb2JqUHRyKTsKCgpl eHRlcm4gIkMiIGludCBUY2xfTGlzdE9iakFwcGVuZExpc3QgKCBUY2xfSW50ZXJwICogaW50ZXJw LCBUY2xfT2JqICogbGlzdFB0ciwgVGNsX09iaiAqIGVsZW1MaXN0UHRyKTsKCgoKZXh0ZXJuICJD IiBpbnQgVGNsX0xpc3RPYmpBcHBlbmRFbGVtZW50ICggVGNsX0ludGVycCAqIGludGVycCwgVGNs X09iaiAqIGxpc3RQdHIsIFRjbF9PYmogKiBvYmpQdHIpOwoKCgpleHRlcm4gIkMiIGludCBUY2xf TGlzdE9iakdldEVsZW1lbnRzICggVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIGxpc3RQ dHIsIGludCAqIG9iamNQdHIsIFRjbF9PYmogKioqIG9ianZQdHIpOwoKCgpleHRlcm4gIkMiIGlu dCBUY2xfTGlzdE9iakluZGV4IChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogbGlzdFB0 ciwgaW50IGluZGV4LCBUY2xfT2JqICoqIG9ialB0clB0cik7CgoKCmV4dGVybiAiQyIgaW50IFRj bF9MaXN0T2JqTGVuZ3RoIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogbGlzdFB0ciwg aW50ICogaW50UHRyKTsKCgpleHRlcm4gIkMiIGludCBUY2xfTGlzdE9ialJlcGxhY2UgKFRjbF9J bnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBsaXN0UHRyLCBpbnQgZmlyc3QsIGludCBjb3VudCwg aW50IG9iamMsIFRjbF9PYmogKmNvbnN0IG9ianZbXSk7CgoKCmV4dGVybiAiQyIgVGNsX09iaiAq IFRjbF9OZXdCb29sZWFuT2JqIChpbnQgYm9vbFZhbHVlKTsKCmV4dGVybiAiQyIgVGNsX09iaiAq IFRjbF9OZXdCeXRlQXJyYXlPYmogKCB1bnNpZ25lZCBjaGFyICogYnl0ZXMsIGludCBsZW5ndGgp OwoKCmV4dGVybiAiQyIgVGNsX09iaiAqIFRjbF9OZXdEb3VibGVPYmogKGRvdWJsZSBkb3VibGVW YWx1ZSk7CgpleHRlcm4gIkMiIFRjbF9PYmogKiBUY2xfTmV3SW50T2JqIChpbnQgaW50VmFsdWUp OwoKZXh0ZXJuICJDIiBUY2xfT2JqICogVGNsX05ld0xpc3RPYmogKGludCBvYmpjLCBUY2xfT2Jq ICpjb25zdCBvYmp2W10pOwoKCmV4dGVybiAiQyIgVGNsX09iaiAqIFRjbF9OZXdMb25nT2JqIChs b25nIGxvbmdWYWx1ZSk7CgpleHRlcm4gIkMiIFRjbF9PYmogKiBUY2xfTmV3T2JqICh2b2lkKTsK CmV4dGVybiAiQyIgVGNsX09iaiAqIFRjbF9OZXdTdHJpbmdPYmogKGNvbnN0IGNoYXIgKiBieXRl cywgaW50IGxlbmd0aCk7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9TZXRCb29sZWFuT2JqIChUY2xf T2JqICogb2JqUHRyLCBpbnQgYm9vbFZhbHVlKTsKCgpleHRlcm4gIkMiIHVuc2lnbmVkIGNoYXIg KiBUY2xfU2V0Qnl0ZUFycmF5TGVuZ3RoIChUY2xfT2JqICogb2JqUHRyLCBpbnQgbGVuZ3RoKTsK CgpleHRlcm4gIkMiIHZvaWQgVGNsX1NldEJ5dGVBcnJheU9iaiAoVGNsX09iaiAqIG9ialB0ciwg dW5zaWduZWQgY2hhciAqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKCgpleHRlcm4gIkMiIHZvaWQgVGNs X1NldERvdWJsZU9iaiAoVGNsX09iaiAqIG9ialB0ciwgZG91YmxlIGRvdWJsZVZhbHVlKTsKCgpl eHRlcm4gIkMiIHZvaWQgVGNsX1NldEludE9iaiAoVGNsX09iaiAqIG9ialB0ciwgaW50IGludFZh bHVlKTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX1NldExpc3RPYmogKFRjbF9PYmogKiBvYmpQdHIs IGludCBvYmpjLCBUY2xfT2JqICpjb25zdCBvYmp2W10pOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xf U2V0TG9uZ09iaiAoVGNsX09iaiAqIG9ialB0ciwgbG9uZyBsb25nVmFsdWUpOwoKCmV4dGVybiAi QyIgdm9pZCBUY2xfU2V0T2JqTGVuZ3RoIChUY2xfT2JqICogb2JqUHRyLCBpbnQgbGVuZ3RoKTsK CgpleHRlcm4gIkMiIHZvaWQgVGNsX1NldFN0cmluZ09iaiAoVGNsX09iaiAqIG9ialB0ciwgY2hh ciAqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX0FkZEVycm9ySW5m byAoVGNsX0ludGVycCAqIGludGVycCwgY29uc3QgY2hhciAqIG1lc3NhZ2UpOwoKCmV4dGVybiAi QyIgdm9pZCBUY2xfQWRkT2JqRXJyb3JJbmZvIChUY2xfSW50ZXJwICogaW50ZXJwLCBjb25zdCBj aGFyICogbWVzc2FnZSwgaW50IGxlbmd0aCk7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9BbGxvd0V4 Y2VwdGlvbnMgKFRjbF9JbnRlcnAgKiBpbnRlcnApOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9BcHBl bmRFbGVtZW50IChUY2xfSW50ZXJwICogaW50ZXJwLCBjb25zdCBjaGFyICogc3RyaW5nKTsKCgpl eHRlcm4gIkMiIHZvaWQgVGNsX0FwcGVuZFJlc3VsdCAoVGNsX0ludGVycCAqIGludGVycCwgLi4u KTsKCmV4dGVybiAiQyIgVGNsX0FzeW5jSGFuZGxlciBUY2xfQXN5bmNDcmVhdGUgKFRjbF9Bc3lu Y1Byb2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwoKCmV4dGVybiAiQyIgdm9pZCBU Y2xfQXN5bmNEZWxldGUgKFRjbF9Bc3luY0hhbmRsZXIgYXN5bmMpOwoKZXh0ZXJuICJDIiBpbnQg VGNsX0FzeW5jSW52b2tlIChUY2xfSW50ZXJwICogaW50ZXJwLCBpbnQgY29kZSk7CgoKZXh0ZXJu ICJDIiB2b2lkIFRjbF9Bc3luY01hcmsgKFRjbF9Bc3luY0hhbmRsZXIgYXN5bmMpOwoKZXh0ZXJu ICJDIiBpbnQgVGNsX0FzeW5jUmVhZHkgKHZvaWQpOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9CYWNr Z3JvdW5kRXJyb3IgKFRjbF9JbnRlcnAgKiBpbnRlcnApOwoKZXh0ZXJuICJDIiBjaGFyIFRjbF9C YWNrc2xhc2ggKGNvbnN0IGNoYXIgKiBzcmMsIGludCAqIHJlYWRQdHIpOwoKCmV4dGVybiAiQyIg aW50IFRjbF9CYWRDaGFubmVsT3B0aW9uICggVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIG9w dGlvbk5hbWUsIGNoYXIgKiBvcHRpb25MaXN0KTsKCgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9DYWxs V2hlbkRlbGV0ZWQgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9JbnRlcnBEZWxldGVQcm9jICog cHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKCgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9DYW5j ZWxJZGxlQ2FsbCAoIFRjbF9JZGxlUHJvYyAqIGlkbGVQcm9jLCBDbGllbnREYXRhIGNsaWVudERh dGEpOwoKCgpleHRlcm4gIkMiIGludCBUY2xfQ2xvc2UgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRj bF9DaGFubmVsIGNoYW4pOwoKCmV4dGVybiAiQyIgaW50IFRjbF9Db21tYW5kQ29tcGxldGUgKGNo YXIgKiBjbWQpOwoKZXh0ZXJuICJDIiBjaGFyICogVGNsX0NvbmNhdCAoaW50IGFyZ2MsIGNoYXIg KiogYXJndik7CgpleHRlcm4gIkMiIGludCBUY2xfQ29udmVydEVsZW1lbnQgKGNvbnN0IGNoYXIg KiBzcmMsIGNoYXIgKiBkc3QsIGludCBmbGFncyk7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0NvbnZl cnRDb3VudGVkRWxlbWVudCAoIGNvbnN0IGNoYXIgKiBzcmMsIGludCBsZW5ndGgsIGNoYXIgKiBk c3QsIGludCBmbGFncyk7CgoKCmV4dGVybiAiQyIgaW50IFRjbF9DcmVhdGVBbGlhcyAoVGNsX0lu dGVycCAqIHNsYXZlLCBjaGFyICogc2xhdmVDbWQsIFRjbF9JbnRlcnAgKiB0YXJnZXQsIGNoYXIg KiB0YXJnZXRDbWQsIGludCBhcmdjLCBjaGFyICoqIGFyZ3YpOwoKCgpleHRlcm4gIkMiIGludCBU Y2xfQ3JlYXRlQWxpYXNPYmogKFRjbF9JbnRlcnAgKiBzbGF2ZSwgY2hhciAqIHNsYXZlQ21kLCBU Y2xfSW50ZXJwICogdGFyZ2V0LCBjaGFyICogdGFyZ2V0Q21kLCBpbnQgb2JqYywgVGNsX09iaiAq Y29uc3Qgb2JqdltdKTsKCgoKCmV4dGVybiAiQyIgVGNsX0NoYW5uZWwgVGNsX0NyZWF0ZUNoYW5u ZWwgKCBUY2xfQ2hhbm5lbFR5cGUgKiB0eXBlUHRyLCBjaGFyICogY2hhbk5hbWUsIENsaWVudERh dGEgaW5zdGFuY2VEYXRhLCBpbnQgbWFzayk7CgoKCmV4dGVybiAiQyIgdm9pZCBUY2xfQ3JlYXRl Q2hhbm5lbEhhbmRsZXIgKCBUY2xfQ2hhbm5lbCBjaGFuLCBpbnQgbWFzaywgVGNsX0NoYW5uZWxQ cm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKCgoKCmV4dGVybiAiQyIgdm9pZCBU Y2xfQ3JlYXRlQ2xvc2VIYW5kbGVyIChUY2xfQ2hhbm5lbCBjaGFuLCBUY2xfQ2xvc2VQcm9jICog cHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKCgpleHRlcm4gIkMiIFRjbF9Db21tYW5kIFRj bF9DcmVhdGVDb21tYW5kIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogY21kTmFtZSwgVGNs X0NtZFByb2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9DbWREZWxldGVQcm9j ICogZGVsZXRlUHJvYyk7CgoKCgpleHRlcm4gIkMiIHZvaWQgVGNsX0NyZWF0ZUV2ZW50U291cmNl ICggVGNsX0V2ZW50U2V0dXBQcm9jICogc2V0dXBQcm9jLCBUY2xfRXZlbnRDaGVja1Byb2MgKiBj aGVja1Byb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CgoKCgpleHRlcm4gIkMiIHZvaWQgVGNs X0NyZWF0ZUV4aXRIYW5kbGVyICggVGNsX0V4aXRQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGll bnREYXRhKTsKCgpleHRlcm4gIkMiIFRjbF9JbnRlcnAgKiBUY2xfQ3JlYXRlSW50ZXJwICh2b2lk KTsKCmV4dGVybiAiQyIgdm9pZCBUY2xfQ3JlYXRlTWF0aEZ1bmMgKFRjbF9JbnRlcnAgKiBpbnRl cnAsIGNoYXIgKiBuYW1lLCBpbnQgbnVtQXJncywgVGNsX1ZhbHVlVHlwZSAqIGFyZ1R5cGVzLCBU Y2xfTWF0aFByb2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwoKCgoKZXh0ZXJuICJD IiBUY2xfQ29tbWFuZCBUY2xfQ3JlYXRlT2JqQ29tbWFuZCAoIFRjbF9JbnRlcnAgKiBpbnRlcnAs IGNoYXIgKiBjbWROYW1lLCBUY2xfT2JqQ21kUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50 RGF0YSwgVGNsX0NtZERlbGV0ZVByb2MgKiBkZWxldGVQcm9jKTsKCgoKCmV4dGVybiAiQyIgVGNs X0ludGVycCAqIFRjbF9DcmVhdGVTbGF2ZSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHNs YXZlTmFtZSwgaW50IGlzU2FmZSk7CgoKZXh0ZXJuICJDIiBUY2xfVGltZXJUb2tlbiBUY2xfQ3Jl YXRlVGltZXJIYW5kbGVyIChpbnQgbWlsbGlzZWNvbmRzLCBUY2xfVGltZXJQcm9jICogcHJvYywg Q2xpZW50RGF0YSBjbGllbnREYXRhKTsKCgpleHRlcm4gIkMiIFRjbF9UcmFjZSBUY2xfQ3JlYXRl VHJhY2UgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGludCBsZXZlbCwgVGNsX0NtZFRyYWNlUHJvYyAq IHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CgoKCmV4dGVybiAiQyIgdm9pZCBUY2xfRGVs ZXRlQXNzb2NEYXRhIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogbmFtZSk7CgoKZXh0ZXJu ICJDIiB2b2lkIFRjbF9EZWxldGVDaGFubmVsSGFuZGxlciAoIFRjbF9DaGFubmVsIGNoYW4sIFRj bF9DaGFubmVsUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CgoKCmV4dGVybiAi QyIgdm9pZCBUY2xfRGVsZXRlQ2xvc2VIYW5kbGVyIChUY2xfQ2hhbm5lbCBjaGFuLCBUY2xfQ2xv c2VQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKCgpleHRlcm4gIkMiIGludCBU Y2xfRGVsZXRlQ29tbWFuZCAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIGNtZE5hbWUpOwoK CmV4dGVybiAiQyIgaW50IFRjbF9EZWxldGVDb21tYW5kRnJvbVRva2VuICggVGNsX0ludGVycCAq IGludGVycCwgVGNsX0NvbW1hbmQgY29tbWFuZCk7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9EZWxl dGVFdmVudHMgKCBUY2xfRXZlbnREZWxldGVQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnRE YXRhKTsKCgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9EZWxldGVFdmVudFNvdXJjZSAoIFRjbF9FdmVu dFNldHVwUHJvYyAqIHNldHVwUHJvYywgVGNsX0V2ZW50Q2hlY2tQcm9jICogY2hlY2tQcm9jLCBD bGllbnREYXRhIGNsaWVudERhdGEpOwoKCgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9EZWxldGVFeGl0 SGFuZGxlciAoIFRjbF9FeGl0UHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CgoK ZXh0ZXJuICJDIiB2b2lkIFRjbF9EZWxldGVIYXNoRW50cnkgKCBUY2xfSGFzaEVudHJ5ICogZW50 cnlQdHIpOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xfRGVsZXRlSGFzaFRhYmxlICggVGNsX0hhc2hU YWJsZSAqIHRhYmxlUHRyKTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX0RlbGV0ZUludGVycCAoVGNs X0ludGVycCAqIGludGVycCk7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9EZXRhY2hQaWRzIChpbnQg bnVtUGlkcywgVGNsX1BpZCAqIHBpZFB0cik7CiMgMzg0ICIvdXNyL2luY2x1ZGUvdGNsRGVjbHMu aCIgMwpleHRlcm4gIkMiIHZvaWQgVGNsX0RlbGV0ZVRpbWVySGFuZGxlciAoIFRjbF9UaW1lclRv a2VuIHRva2VuKTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX0RlbGV0ZVRyYWNlIChUY2xfSW50ZXJw ICogaW50ZXJwLCBUY2xfVHJhY2UgdHJhY2UpOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xfRG9udENh bGxXaGVuRGVsZXRlZCAoIFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9JbnRlcnBEZWxldGVQcm9j ICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKCgoKCmV4dGVybiAiQyIgaW50IFRjbF9E b09uZUV2ZW50IChpbnQgZmxhZ3MpOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9Eb1doZW5JZGxlIChU Y2xfSWRsZVByb2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwoKCmV4dGVybiAiQyIg Y2hhciAqIFRjbF9EU3RyaW5nQXBwZW5kIChUY2xfRFN0cmluZyAqIGRzUHRyLCBjb25zdCBjaGFy ICogc3RyLCBpbnQgbGVuZ3RoKTsKCgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfRFN0cmluZ0FwcGVu ZEVsZW1lbnQgKCBUY2xfRFN0cmluZyAqIGRzUHRyLCBjb25zdCBjaGFyICogc3RyaW5nKTsKCgpl eHRlcm4gIkMiIHZvaWQgVGNsX0RTdHJpbmdFbmRTdWJsaXN0ICggVGNsX0RTdHJpbmcgKiBkc1B0 cik7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9EU3RyaW5nRnJlZSAoVGNsX0RTdHJpbmcgKiBkc1B0 cik7CgpleHRlcm4gIkMiIHZvaWQgVGNsX0RTdHJpbmdHZXRSZXN1bHQgKCBUY2xfSW50ZXJwICog aW50ZXJwLCBUY2xfRFN0cmluZyAqIGRzUHRyKTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX0RTdHJp bmdJbml0IChUY2xfRFN0cmluZyAqIGRzUHRyKTsKCmV4dGVybiAiQyIgdm9pZCBUY2xfRFN0cmlu Z1Jlc3VsdCAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX0RTdHJpbmcgKiBkc1B0cik7CgoKZXh0 ZXJuICJDIiB2b2lkIFRjbF9EU3RyaW5nU2V0TGVuZ3RoICggVGNsX0RTdHJpbmcgKiBkc1B0ciwg aW50IGxlbmd0aCk7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9EU3RyaW5nU3RhcnRTdWJsaXN0ICgg VGNsX0RTdHJpbmcgKiBkc1B0cik7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0VvZiAoVGNsX0NoYW5u ZWwgY2hhbik7CgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfRXJybm9JZCAodm9pZCk7CgpleHRlcm4g IkMiIGNoYXIgKiBUY2xfRXJybm9Nc2cgKGludCBlcnIpOwoKZXh0ZXJuICJDIiBpbnQgVGNsX0V2 YWwgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHJpbmcpOwoKCmV4dGVybiAiQyIgaW50 IFRjbF9FdmFsRmlsZSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIGZpbGVOYW1lKTsKCgpl eHRlcm4gIkMiIGludCBUY2xfRXZhbE9iaiAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAq IG9ialB0cik7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9FdmVudHVhbGx5RnJlZSAoIENsaWVudERh dGEgY2xpZW50RGF0YSwgVGNsX0ZyZWVQcm9jICogZnJlZVByb2MpOwoKCgpleHRlcm4gIkMiIHZv aWQgVGNsX0V4aXQgKGludCBzdGF0dXMpOwoKZXh0ZXJuICJDIiBpbnQgVGNsX0V4cG9zZUNvbW1h bmQgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBoaWRkZW5DbWRUb2tlbiwgY2hhciAqIGNt ZE5hbWUpOwoKCmV4dGVybiAiQyIgaW50IFRjbF9FeHByQm9vbGVhbiAoVGNsX0ludGVycCAqIGlu dGVycCwgY2hhciAqIHN0ciwgaW50ICogcHRyKTsKCgpleHRlcm4gIkMiIGludCBUY2xfRXhwckJv b2xlYW5PYmogKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBvYmpQdHIsIGludCAqIHB0 cik7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0V4cHJEb3VibGUgKFRjbF9JbnRlcnAgKiBpbnRlcnAs IGNoYXIgKiBzdHIsIGRvdWJsZSAqIHB0cik7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0V4cHJEb3Vi bGVPYmogKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBvYmpQdHIsIGRvdWJsZSAqIHB0 cik7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0V4cHJMb25nIChUY2xfSW50ZXJwICogaW50ZXJwLCBj aGFyICogc3RyLCBsb25nICogcHRyKTsKCgpleHRlcm4gIkMiIGludCBUY2xfRXhwckxvbmdPYmog KFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBvYmpQdHIsIGxvbmcgKiBwdHIpOwoKCmV4 dGVybiAiQyIgaW50IFRjbF9FeHByT2JqIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICog b2JqUHRyLCBUY2xfT2JqICoqIHJlc3VsdFB0clB0cik7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0V4 cHJTdHJpbmcgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHJpbmcpOwoKCmV4dGVybiAi QyIgdm9pZCBUY2xfRmluYWxpemUgKHZvaWQpOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9GaW5kRXhl Y3V0YWJsZSAoY29uc3QgY2hhciAqIGFyZ3YwKTsKCmV4dGVybiAiQyIgVGNsX0hhc2hFbnRyeSAq IFRjbF9GaXJzdEhhc2hFbnRyeSAoIFRjbF9IYXNoVGFibGUgKiB0YWJsZVB0ciwgVGNsX0hhc2hT ZWFyY2ggKiBzZWFyY2hQdHIpOwoKCgpleHRlcm4gIkMiIGludCBUY2xfRmx1c2ggKFRjbF9DaGFu bmVsIGNoYW4pOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9GcmVlUmVzdWx0IChUY2xfSW50ZXJwICog aW50ZXJwKTsKCmV4dGVybiAiQyIgaW50IFRjbF9HZXRBbGlhcyAoVGNsX0ludGVycCAqIGludGVy cCwgY2hhciAqIHNsYXZlQ21kLCBUY2xfSW50ZXJwICoqIHRhcmdldEludGVycFB0ciwgY2hhciAq KiB0YXJnZXRDbWRQdHIsIGludCAqIGFyZ2NQdHIsIGNoYXIgKioqIGFyZ3ZQdHIpOwoKCgoKCmV4 dGVybiAiQyIgaW50IFRjbF9HZXRBbGlhc09iaiAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAq IHNsYXZlQ21kLCBUY2xfSW50ZXJwICoqIHRhcmdldEludGVycFB0ciwgY2hhciAqKiB0YXJnZXRD bWRQdHIsIGludCAqIG9iamNQdHIsIFRjbF9PYmogKioqIG9ianYpOwoKCgoKCmV4dGVybiAiQyIg Q2xpZW50RGF0YSBUY2xfR2V0QXNzb2NEYXRhIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICog bmFtZSwgVGNsX0ludGVycERlbGV0ZVByb2MgKiogcHJvY1B0cik7CgoKZXh0ZXJuICJDIiBUY2xf Q2hhbm5lbCBUY2xfR2V0Q2hhbm5lbCAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIGNoYW5O YW1lLCBpbnQgKiBtb2RlUHRyKTsKCgpleHRlcm4gIkMiIGludCBUY2xfR2V0Q2hhbm5lbEJ1ZmZl clNpemUgKCBUY2xfQ2hhbm5lbCBjaGFuKTsKCgpleHRlcm4gIkMiIGludCBUY2xfR2V0Q2hhbm5l bEhhbmRsZSAoVGNsX0NoYW5uZWwgY2hhbiwgaW50IGRpcmVjdGlvbiwgQ2xpZW50RGF0YSAqIGhh bmRsZVB0cik7CgoKZXh0ZXJuICJDIiBDbGllbnREYXRhIFRjbF9HZXRDaGFubmVsSW5zdGFuY2VE YXRhICggVGNsX0NoYW5uZWwgY2hhbik7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0dldENoYW5uZWxN b2RlIChUY2xfQ2hhbm5lbCBjaGFuKTsKCmV4dGVybiAiQyIgY2hhciAqIFRjbF9HZXRDaGFubmVs TmFtZSAoVGNsX0NoYW5uZWwgY2hhbik7CgpleHRlcm4gIkMiIGludCBUY2xfR2V0Q2hhbm5lbE9w dGlvbiAoIFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9DaGFubmVsIGNoYW4sIGNoYXIgKiBvcHRp b25OYW1lLCBUY2xfRFN0cmluZyAqIGRzUHRyKTsKCgoKZXh0ZXJuICJDIiBUY2xfQ2hhbm5lbFR5 cGUgKiBUY2xfR2V0Q2hhbm5lbFR5cGUgKFRjbF9DaGFubmVsIGNoYW4pOwoKZXh0ZXJuICJDIiBp bnQgVGNsX0dldENvbW1hbmRJbmZvIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogY21kTmFt ZSwgVGNsX0NtZEluZm8gKiBpbmZvUHRyKTsKCgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfR2V0Q29t bWFuZE5hbWUgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9Db21tYW5kIGNvbW1hbmQpOwoKCmV4 dGVybiAiQyIgaW50IFRjbF9HZXRFcnJubyAodm9pZCk7CgpleHRlcm4gIkMiIGNoYXIgKiBUY2xf R2V0SG9zdE5hbWUgKHZvaWQpOwoKZXh0ZXJuICJDIiBpbnQgVGNsX0dldEludGVycFBhdGggKCBU Y2xfSW50ZXJwICogYXNrSW50ZXJwLCBUY2xfSW50ZXJwICogc2xhdmVJbnRlcnApOwoKCgpleHRl cm4gIkMiIFRjbF9JbnRlcnAgKiBUY2xfR2V0TWFzdGVyIChUY2xfSW50ZXJwICogaW50ZXJwKTsK CmV4dGVybiAiQyIgY29uc3QgY2hhciAqIFRjbF9HZXROYW1lT2ZFeGVjdXRhYmxlICh2b2lkKTsK CmV4dGVybiAiQyIgVGNsX09iaiAqIFRjbF9HZXRPYmpSZXN1bHQgKFRjbF9JbnRlcnAgKiBpbnRl cnApOwoKCmV4dGVybiAiQyIgaW50IFRjbF9HZXRPcGVuRmlsZSAoVGNsX0ludGVycCAqIGludGVy cCwgY2hhciAqIHN0ciwgaW50IGZvcldyaXRpbmcsIGludCBjaGVja1VzYWdlLCBDbGllbnREYXRh ICogZmlsZVB0cik7CgoKCgpleHRlcm4gIkMiIFRjbF9QYXRoVHlwZSBUY2xfR2V0UGF0aFR5cGUg KGNoYXIgKiBwYXRoKTsKCmV4dGVybiAiQyIgaW50IFRjbF9HZXRzIChUY2xfQ2hhbm5lbCBjaGFu LCBUY2xfRFN0cmluZyAqIGRzUHRyKTsKCgpleHRlcm4gIkMiIGludCBUY2xfR2V0c09iaiAoVGNs X0NoYW5uZWwgY2hhbiwgVGNsX09iaiAqIG9ialB0cik7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0dl dFNlcnZpY2VNb2RlICh2b2lkKTsKCmV4dGVybiAiQyIgVGNsX0ludGVycCAqIFRjbF9HZXRTbGF2 ZSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHNsYXZlTmFtZSk7CgoKZXh0ZXJuICJDIiBU Y2xfQ2hhbm5lbCBUY2xfR2V0U3RkQ2hhbm5lbCAoaW50IHR5cGUpOwoKZXh0ZXJuICJDIiBjaGFy ICogVGNsX0dldFN0cmluZ1Jlc3VsdCAoVGNsX0ludGVycCAqIGludGVycCk7CgpleHRlcm4gIkMi IGNoYXIgKiBUY2xfR2V0VmFyIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogdmFyTmFtZSwg aW50IGZsYWdzKTsKCgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfR2V0VmFyMiAoVGNsX0ludGVycCAq IGludGVycCwgY2hhciAqIHBhcnQxLCBjaGFyICogcGFydDIsIGludCBmbGFncyk7CgoKZXh0ZXJu ICJDIiBpbnQgVGNsX0dsb2JhbEV2YWwgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBjb21t YW5kKTsKCgpleHRlcm4gIkMiIGludCBUY2xfR2xvYmFsRXZhbE9iaiAoVGNsX0ludGVycCAqIGlu dGVycCwgVGNsX09iaiAqIG9ialB0cik7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0hpZGVDb21tYW5k IChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogY21kTmFtZSwgY2hhciAqIGhpZGRlbkNtZFRv a2VuKTsKCgpleHRlcm4gIkMiIGludCBUY2xfSW5pdCAoVGNsX0ludGVycCAqIGludGVycCk7Cgpl eHRlcm4gIkMiIHZvaWQgVGNsX0luaXRIYXNoVGFibGUgKCBUY2xfSGFzaFRhYmxlICogdGFibGVQ dHIsIGludCBrZXlUeXBlKTsKCgpleHRlcm4gIkMiIGludCBUY2xfSW5wdXRCbG9ja2VkIChUY2xf Q2hhbm5lbCBjaGFuKTsKCmV4dGVybiAiQyIgaW50IFRjbF9JbnB1dEJ1ZmZlcmVkIChUY2xfQ2hh bm5lbCBjaGFuKTsKCmV4dGVybiAiQyIgaW50IFRjbF9JbnRlcnBEZWxldGVkIChUY2xfSW50ZXJw ICogaW50ZXJwKTsKCmV4dGVybiAiQyIgaW50IFRjbF9Jc1NhZmUgKFRjbF9JbnRlcnAgKiBpbnRl cnApOwoKZXh0ZXJuICJDIiBjaGFyICogVGNsX0pvaW5QYXRoIChpbnQgYXJnYywgY2hhciAqKiBh cmd2LCBUY2xfRFN0cmluZyAqIHJlc3VsdFB0cik7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0xpbmtW YXIgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiB2YXJOYW1lLCBjaGFyICogYWRkciwgaW50 IHR5cGUpOwoKCgpleHRlcm4gIkMiIFRjbF9DaGFubmVsIFRjbF9NYWtlRmlsZUNoYW5uZWwgKENs aWVudERhdGEgaGFuZGxlLCBpbnQgbW9kZSk7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX01ha2VTYWZl IChUY2xfSW50ZXJwICogaW50ZXJwKTsKCmV4dGVybiAiQyIgVGNsX0NoYW5uZWwgVGNsX01ha2VU Y3BDbGllbnRDaGFubmVsICggQ2xpZW50RGF0YSB0Y3BTb2NrZXQpOwoKCmV4dGVybiAiQyIgY2hh ciAqIFRjbF9NZXJnZSAoaW50IGFyZ2MsIGNoYXIgKiogYXJndik7CgpleHRlcm4gIkMiIFRjbF9I YXNoRW50cnkgKiBUY2xfTmV4dEhhc2hFbnRyeSAoIFRjbF9IYXNoU2VhcmNoICogc2VhcmNoUHRy KTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX05vdGlmeUNoYW5uZWwgKFRjbF9DaGFubmVsIGNoYW5u ZWwsIGludCBtYXNrKTsKCgpleHRlcm4gIkMiIFRjbF9PYmogKiBUY2xfT2JqR2V0VmFyMiAoVGNs X0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIHBhcnQxUHRyLCBUY2xfT2JqICogcGFydDJQdHIs IGludCBmbGFncyk7CgoKCmV4dGVybiAiQyIgVGNsX09iaiAqIFRjbF9PYmpTZXRWYXIyIChUY2xf SW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogcGFydDFQdHIsIFRjbF9PYmogKiBwYXJ0MlB0ciwg VGNsX09iaiAqIG5ld1ZhbHVlUHRyLCBpbnQgZmxhZ3MpOwoKCgoKZXh0ZXJuICJDIiBUY2xfQ2hh bm5lbCBUY2xfT3BlbkNvbW1hbmRDaGFubmVsICggVGNsX0ludGVycCAqIGludGVycCwgaW50IGFy Z2MsIGNoYXIgKiogYXJndiwgaW50IGZsYWdzKTsKIyA2MzYgIi91c3IvaW5jbHVkZS90Y2xEZWNs cy5oIiAzCmV4dGVybiAiQyIgVGNsX0NoYW5uZWwgVGNsX09wZW5GaWxlQ2hhbm5lbCAoVGNsX0lu dGVycCAqIGludGVycCwgY2hhciAqIGZpbGVOYW1lLCBjaGFyICogbW9kZVN0cmluZywgaW50IHBl cm1pc3Npb25zKTsKCgoKZXh0ZXJuICJDIiBUY2xfQ2hhbm5lbCBUY2xfT3BlblRjcENsaWVudCAo VGNsX0ludGVycCAqIGludGVycCwgaW50IHBvcnQsIGNoYXIgKiBhZGRyZXNzLCBjaGFyICogbXlh ZGRyLCBpbnQgbXlwb3J0LCBpbnQgYXN5bmMpOwoKCgpleHRlcm4gIkMiIFRjbF9DaGFubmVsIFRj bF9PcGVuVGNwU2VydmVyIChUY2xfSW50ZXJwICogaW50ZXJwLCBpbnQgcG9ydCwgY2hhciAqIGhv c3QsIFRjbF9UY3BBY2NlcHRQcm9jICogYWNjZXB0UHJvYywgQ2xpZW50RGF0YSBjYWxsYmFja0Rh dGEpOwoKCgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9QcmVzZXJ2ZSAoQ2xpZW50RGF0YSBkYXRhKTsK CmV4dGVybiAiQyIgdm9pZCBUY2xfUHJpbnREb3VibGUgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGRv dWJsZSB2YWx1ZSwgY2hhciAqIGRzdCk7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX1B1dEVudiAoY29u c3QgY2hhciAqIHN0cmluZyk7CgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfUG9zaXhFcnJvciAoVGNs X0ludGVycCAqIGludGVycCk7CgpleHRlcm4gIkMiIHZvaWQgVGNsX1F1ZXVlRXZlbnQgKFRjbF9F dmVudCAqIGV2UHRyLCBUY2xfUXVldWVQb3NpdGlvbiBwb3NpdGlvbik7CgoKZXh0ZXJuICJDIiBp bnQgVGNsX1JlYWQgKFRjbF9DaGFubmVsIGNoYW4sIGNoYXIgKiBidWZQdHIsIGludCB0b1JlYWQp OwoKCgpleHRlcm4gIkMiIHZvaWQgVGNsX1JlYXBEZXRhY2hlZFByb2NzICh2b2lkKTsKCgoKCgoK ZXh0ZXJuICJDIiBpbnQgVGNsX1JlY29yZEFuZEV2YWwgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNo YXIgKiBjbWQsIGludCBmbGFncyk7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX1JlY29yZEFuZEV2YWxP YmogKCBUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogY21kUHRyLCBpbnQgZmxhZ3MpOwoK CgpleHRlcm4gIkMiIHZvaWQgVGNsX1JlZ2lzdGVyQ2hhbm5lbCAoVGNsX0ludGVycCAqIGludGVy cCwgVGNsX0NoYW5uZWwgY2hhbik7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9SZWdpc3Rlck9ialR5 cGUgKCBUY2xfT2JqVHlwZSAqIHR5cGVQdHIpOwoKCmV4dGVybiAiQyIgVGNsX1JlZ0V4cCBUY2xf UmVnRXhwQ29tcGlsZSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0cmluZyk7CgoKZXh0 ZXJuICJDIiBpbnQgVGNsX1JlZ0V4cEV4ZWMgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9SZWdF eHAgcmVnZXhwLCBjb25zdCBjaGFyICogc3RyLCBjb25zdCBjaGFyICogc3RhcnQpOwoKCgpleHRl cm4gIkMiIGludCBUY2xfUmVnRXhwTWF0Y2ggKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBz dHIsIGNoYXIgKiBwYXR0ZXJuKTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX1JlZ0V4cFJhbmdlIChU Y2xfUmVnRXhwIHJlZ2V4cCwgaW50IGluZGV4LCBjaGFyICoqIHN0YXJ0UHRyLCBjaGFyICoqIGVu ZFB0cik7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9SZWxlYXNlIChDbGllbnREYXRhIGNsaWVudERh dGEpOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9SZXNldFJlc3VsdCAoVGNsX0ludGVycCAqIGludGVy cCk7CgpleHRlcm4gIkMiIGludCBUY2xfU2NhbkVsZW1lbnQgKGNvbnN0IGNoYXIgKiBzdHIsIGlu dCAqIGZsYWdQdHIpOwoKCmV4dGVybiAiQyIgaW50IFRjbF9TY2FuQ291bnRlZEVsZW1lbnQgKGNv bnN0IGNoYXIgKiBzdHIsIGludCBsZW5ndGgsIGludCAqIGZsYWdQdHIpOwoKCmV4dGVybiAiQyIg aW50IFRjbF9TZWVrIChUY2xfQ2hhbm5lbCBjaGFuLCBpbnQgb2Zmc2V0LCBpbnQgbW9kZSk7CgoK ZXh0ZXJuICJDIiBpbnQgVGNsX1NlcnZpY2VBbGwgKHZvaWQpOwoKZXh0ZXJuICJDIiBpbnQgVGNs X1NlcnZpY2VFdmVudCAoaW50IGZsYWdzKTsKCmV4dGVybiAiQyIgdm9pZCBUY2xfU2V0QXNzb2NE YXRhIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogbmFtZSwgVGNsX0ludGVycERlbGV0ZVBy b2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwoKCgpleHRlcm4gIkMiIHZvaWQgVGNs X1NldENoYW5uZWxCdWZmZXJTaXplICggVGNsX0NoYW5uZWwgY2hhbiwgaW50IHN6KTsKCgpleHRl cm4gIkMiIGludCBUY2xfU2V0Q2hhbm5lbE9wdGlvbiAoIFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRj bF9DaGFubmVsIGNoYW4sIGNoYXIgKiBvcHRpb25OYW1lLCBjaGFyICogbmV3VmFsdWUpOwoKCgpl eHRlcm4gIkMiIGludCBUY2xfU2V0Q29tbWFuZEluZm8gKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNo YXIgKiBjbWROYW1lLCBUY2xfQ21kSW5mbyAqIGluZm9QdHIpOwoKCmV4dGVybiAiQyIgdm9pZCBU Y2xfU2V0RXJybm8gKGludCBlcnIpOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9TZXRFcnJvckNvZGUg KFRjbF9JbnRlcnAgKiBpbnRlcnAsIC4uLik7CgpleHRlcm4gIkMiIHZvaWQgVGNsX1NldE1heEJs b2NrVGltZSAoVGNsX1RpbWUgKiB0aW1lUHRyKTsKCmV4dGVybiAiQyIgdm9pZCBUY2xfU2V0UGFu aWNQcm9jICggVGNsX1BhbmljUHJvYyAqIHBhbmljUHJvYyk7CgoKZXh0ZXJuICJDIiBpbnQgVGNs X1NldFJlY3Vyc2lvbkxpbWl0ICggVGNsX0ludGVycCAqIGludGVycCwgaW50IGRlcHRoKTsKCgpl eHRlcm4gIkMiIHZvaWQgVGNsX1NldFJlc3VsdCAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAq IHN0ciwgVGNsX0ZyZWVQcm9jICogZnJlZVByb2MpOwoKCmV4dGVybiAiQyIgaW50IFRjbF9TZXRT ZXJ2aWNlTW9kZSAoaW50IG1vZGUpOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9TZXRPYmpFcnJvckNv ZGUgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBlcnJvck9ialB0cik7CgoKZXh0ZXJu ICJDIiB2b2lkIFRjbF9TZXRPYmpSZXN1bHQgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmog KiByZXN1bHRPYmpQdHIpOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xfU2V0U3RkQ2hhbm5lbCAoVGNs X0NoYW5uZWwgY2hhbm5lbCwgaW50IHR5cGUpOwoKCmV4dGVybiAiQyIgY2hhciAqIFRjbF9TZXRW YXIgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiB2YXJOYW1lLCBjaGFyICogbmV3VmFsdWUs IGludCBmbGFncyk7CgoKZXh0ZXJuICJDIiBjaGFyICogVGNsX1NldFZhcjIgKFRjbF9JbnRlcnAg KiBpbnRlcnAsIGNoYXIgKiBwYXJ0MSwgY2hhciAqIHBhcnQyLCBjaGFyICogbmV3VmFsdWUsIGlu dCBmbGFncyk7CgoKCmV4dGVybiAiQyIgY2hhciAqIFRjbF9TaWduYWxJZCAoaW50IHNpZyk7Cgpl eHRlcm4gIkMiIGNoYXIgKiBUY2xfU2lnbmFsTXNnIChpbnQgc2lnKTsKCmV4dGVybiAiQyIgdm9p ZCBUY2xfU291cmNlUkNGaWxlIChUY2xfSW50ZXJwICogaW50ZXJwKTsKCmV4dGVybiAiQyIgaW50 IFRjbF9TcGxpdExpc3QgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNvbnN0IGNoYXIgKiBsaXN0U3Ry LCBpbnQgKiBhcmdjUHRyLCBjaGFyICoqKiBhcmd2UHRyKTsKCgoKZXh0ZXJuICJDIiB2b2lkIFRj bF9TcGxpdFBhdGggKGNvbnN0IGNoYXIgKiBwYXRoLCBpbnQgKiBhcmdjUHRyLCBjaGFyICoqKiBh cmd2UHRyKTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX1N0YXRpY1BhY2thZ2UgKFRjbF9JbnRlcnAg KiBpbnRlcnAsIGNoYXIgKiBwa2dOYW1lLCBUY2xfUGFja2FnZUluaXRQcm9jICogaW5pdFByb2Ms IFRjbF9QYWNrYWdlSW5pdFByb2MgKiBzYWZlSW5pdFByb2MpOwoKCgoKZXh0ZXJuICJDIiBpbnQg VGNsX1N0cmluZ01hdGNoIChjb25zdCBjaGFyICogc3RyLCBjb25zdCBjaGFyICogcGF0dGVybik7 CgoKZXh0ZXJuICJDIiBpbnQgVGNsX1RlbGwgKFRjbF9DaGFubmVsIGNoYW4pOwoKZXh0ZXJuICJD IiBpbnQgVGNsX1RyYWNlVmFyIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogdmFyTmFtZSwg aW50IGZsYWdzLCBUY2xfVmFyVHJhY2VQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRh KTsKCgoKCmV4dGVybiAiQyIgaW50IFRjbF9UcmFjZVZhcjIgKFRjbF9JbnRlcnAgKiBpbnRlcnAs IGNoYXIgKiBwYXJ0MSwgY2hhciAqIHBhcnQyLCBpbnQgZmxhZ3MsIFRjbF9WYXJUcmFjZVByb2Mg KiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwoKCgoKZXh0ZXJuICJDIiBjaGFyICogVGNs X1RyYW5zbGF0ZUZpbGVOYW1lICggVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIG5hbWUsIFRj bF9EU3RyaW5nICogYnVmZmVyUHRyKTsKCgoKZXh0ZXJuICJDIiBpbnQgVGNsX1VuZ2V0cyAoVGNs X0NoYW5uZWwgY2hhbiwgY2hhciAqIHN0ciwgaW50IGxlbiwgaW50IGF0SGVhZCk7CgoKZXh0ZXJu ICJDIiB2b2lkIFRjbF9VbmxpbmtWYXIgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiB2YXJO YW1lKTsKCgpleHRlcm4gIkMiIGludCBUY2xfVW5yZWdpc3RlckNoYW5uZWwgKCBUY2xfSW50ZXJw ICogaW50ZXJwLCBUY2xfQ2hhbm5lbCBjaGFuKTsKCgpleHRlcm4gIkMiIGludCBUY2xfVW5zZXRW YXIgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiB2YXJOYW1lLCBpbnQgZmxhZ3MpOwoKCmV4 dGVybiAiQyIgaW50IFRjbF9VbnNldFZhcjIgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBw YXJ0MSwgY2hhciAqIHBhcnQyLCBpbnQgZmxhZ3MpOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xfVW50 cmFjZVZhciAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHZhck5hbWUsIGludCBmbGFncywg VGNsX1ZhclRyYWNlUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CgoKCgpleHRl cm4gIkMiIHZvaWQgVGNsX1VudHJhY2VWYXIyIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICog cGFydDEsIGNoYXIgKiBwYXJ0MiwgaW50IGZsYWdzLCBUY2xfVmFyVHJhY2VQcm9jICogcHJvYywg Q2xpZW50RGF0YSBjbGllbnREYXRhKTsKCgoKCmV4dGVybiAiQyIgdm9pZCBUY2xfVXBkYXRlTGlu a2VkVmFyIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogdmFyTmFtZSk7CgoKZXh0ZXJuICJD IiBpbnQgVGNsX1VwVmFyIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogZnJhbWVOYW1lLCBj aGFyICogdmFyTmFtZSwgY2hhciAqIGxvY2FsTmFtZSwgaW50IGZsYWdzKTsKCgoKZXh0ZXJuICJD IiBpbnQgVGNsX1VwVmFyMiAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIGZyYW1lTmFtZSwg Y2hhciAqIHBhcnQxLCBjaGFyICogcGFydDIsIGNoYXIgKiBsb2NhbE5hbWUsIGludCBmbGFncyk7 CgoKCmV4dGVybiAiQyIgaW50IFRjbF9WYXJFdmFsIChUY2xfSW50ZXJwICogaW50ZXJwLCAuLi4p OwoKZXh0ZXJuICJDIiBDbGllbnREYXRhIFRjbF9WYXJUcmFjZUluZm8gKFRjbF9JbnRlcnAgKiBp bnRlcnAsIGNoYXIgKiB2YXJOYW1lLCBpbnQgZmxhZ3MsIFRjbF9WYXJUcmFjZVByb2MgKiBwcm9j UHRyLCBDbGllbnREYXRhIHByZXZDbGllbnREYXRhKTsKCgoKCmV4dGVybiAiQyIgQ2xpZW50RGF0 YSBUY2xfVmFyVHJhY2VJbmZvMiAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHBhcnQxLCBj aGFyICogcGFydDIsIGludCBmbGFncywgVGNsX1ZhclRyYWNlUHJvYyAqIHByb2NQdHIsIENsaWVu dERhdGEgcHJldkNsaWVudERhdGEpOwoKCgoKZXh0ZXJuICJDIiBpbnQgVGNsX1dyaXRlIChUY2xf Q2hhbm5lbCBjaGFuLCBjaGFyICogcywgaW50IHNsZW4pOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xf V3JvbmdOdW1BcmdzIChUY2xfSW50ZXJwICogaW50ZXJwLCBpbnQgb2JqYywgVGNsX09iaiAqY29u c3Qgb2JqdltdLCBjaGFyICogbWVzc2FnZSk7CgoKCmV4dGVybiAiQyIgaW50IFRjbF9EdW1wQWN0 aXZlTWVtb3J5IChjaGFyICogZmlsZU5hbWUpOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9WYWxpZGF0 ZUFsbE1lbW9yeSAoY2hhciAqIGZpbGUsIGludCBsaW5lKTsKCgpleHRlcm4gIkMiIHZvaWQgVGNs X0FwcGVuZFJlc3VsdFZBIChUY2xfSW50ZXJwICogaW50ZXJwLCB2YV9saXN0IGFyZ0xpc3QpOwoK CmV4dGVybiAiQyIgdm9pZCBUY2xfQXBwZW5kU3RyaW5nc1RvT2JqVkEgKCBUY2xfT2JqICogb2Jq UHRyLCB2YV9saXN0IGFyZ0xpc3QpOwoKCmV4dGVybiAiQyIgY2hhciAqIFRjbF9IYXNoU3RhdHMg KFRjbF9IYXNoVGFibGUgKiB0YWJsZVB0cik7CgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfUGFyc2VW YXIgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHIsIGNoYXIgKiogdGVybVB0cik7CgoK ZXh0ZXJuICJDIiBjaGFyICogVGNsX1BrZ1ByZXNlbnQgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNo YXIgKiBuYW1lLCBjaGFyICogdmVyc2lvbiwgaW50IGV4YWN0KTsKCgpleHRlcm4gIkMiIGNoYXIg KiBUY2xfUGtnUHJlc2VudEV4IChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogbmFtZSwgY2hh ciAqIHZlcnNpb24sIGludCBleGFjdCwgQ2xpZW50RGF0YSAqIGNsaWVudERhdGFQdHIpOwoKCgpl eHRlcm4gIkMiIGludCBUY2xfUGtnUHJvdmlkZSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAq IG5hbWUsIGNoYXIgKiB2ZXJzaW9uKTsKCgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfUGtnUmVxdWly ZSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIG5hbWUsIGNoYXIgKiB2ZXJzaW9uLCBpbnQg ZXhhY3QpOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xfU2V0RXJyb3JDb2RlVkEgKFRjbF9JbnRlcnAg KiBpbnRlcnAsIHZhX2xpc3QgYXJnTGlzdCk7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX1ZhckV2YWxW QSAoVGNsX0ludGVycCAqIGludGVycCwgdmFfbGlzdCBhcmdMaXN0KTsKCgpleHRlcm4gIkMiIFRj bF9QaWQgVGNsX1dhaXRQaWQgKFRjbF9QaWQgcGlkLCBpbnQgKiBzdGF0UHRyLCBpbnQgb3B0aW9u cyk7CgoKCmV4dGVybiAiQyIgdm9pZCBUY2xfUGFuaWNWQSAoY2hhciAqIGZvcm1hdCwgdmFfbGlz dCBhcmdMaXN0KTsKIyA5MDIgIi91c3IvaW5jbHVkZS90Y2xEZWNscy5oIiAzCmV4dGVybiAiQyIg dm9pZCBUY2xfR2V0VmVyc2lvbiAoaW50ICogbWFqb3IsIGludCAqIG1pbm9yLCBpbnQgKiBwYXRj aExldmVsLCBpbnQgKiB0eXBlKTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX0luaXRNZW1vcnkgKFRj bF9JbnRlcnAgKiBpbnRlcnApOwoKZXh0ZXJuICJDIiBUY2xfQ2hhbm5lbCBUY2xfU3RhY2tDaGFu bmVsIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfQ2hhbm5lbFR5cGUgKiB0eXBlUHRyLCBDbGll bnREYXRhIGluc3RhbmNlRGF0YSwgaW50IG1hc2ssIFRjbF9DaGFubmVsIHByZXZDaGFuKTsKCgoK CmV4dGVybiAiQyIgdm9pZCBUY2xfVW5zdGFja0NoYW5uZWwgKFRjbF9JbnRlcnAgKiBpbnRlcnAs IFRjbF9DaGFubmVsIGNoYW4pOwoKCmV4dGVybiAiQyIgVGNsX0NoYW5uZWwgVGNsX0dldFN0YWNr ZWRDaGFubmVsIChUY2xfQ2hhbm5lbCBjaGFuKTsKCgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9BcHBl bmRPYmpUb09iaiAoVGNsX09iaiAqIG9ialB0ciwgVGNsX09iaiAqIGFwcGVuZE9ialB0cik7CgoK ZXh0ZXJuICJDIiBUY2xfRW5jb2RpbmcgVGNsX0NyZWF0ZUVuY29kaW5nICggVGNsX0VuY29kaW5n VHlwZSAqIHR5cGVQdHIpOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xfQ3JlYXRlVGhyZWFkRXhpdEhh bmRsZXIgKCBUY2xfRXhpdFByb2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwoKCmV4 dGVybiAiQyIgdm9pZCBUY2xfRGVsZXRlVGhyZWFkRXhpdEhhbmRsZXIgKCBUY2xfRXhpdFByb2Mg KiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xfRGlz Y2FyZFJlc3VsdCAoIFRjbF9TYXZlZFJlc3VsdCAqIHN0YXRlUHRyKTsKCgpleHRlcm4gIkMiIGlu dCBUY2xfRXZhbEV4IChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogc2NyaXB0LCBpbnQgbnVt Qnl0ZXMsIGludCBmbGFncyk7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0V2YWxPYmp2IChUY2xfSW50 ZXJwICogaW50ZXJwLCBpbnQgb2JqYywgVGNsX09iaiAqY29uc3Qgb2JqdltdLCBpbnQgZmxhZ3Mp OwoKCmV4dGVybiAiQyIgaW50IFRjbF9FdmFsT2JqRXggKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRj bF9PYmogKiBvYmpQdHIsIGludCBmbGFncyk7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9FeGl0VGhy ZWFkIChpbnQgc3RhdHVzKTsKCmV4dGVybiAiQyIgaW50IFRjbF9FeHRlcm5hbFRvVXRmIChUY2xf SW50ZXJwICogaW50ZXJwLCBUY2xfRW5jb2RpbmcgZW5jb2RpbmcsIGNvbnN0IGNoYXIgKiBzcmMs IGludCBzcmNMZW4sIGludCBmbGFncywgVGNsX0VuY29kaW5nU3RhdGUgKiBzdGF0ZVB0ciwgY2hh ciAqIGRzdCwgaW50IGRzdExlbiwgaW50ICogc3JjUmVhZFB0ciwgaW50ICogZHN0V3JvdGVQdHIs IGludCAqIGRzdENoYXJzUHRyKTsKCgoKCgoKZXh0ZXJuICJDIiBjaGFyICogVGNsX0V4dGVybmFs VG9VdGZEU3RyaW5nICggVGNsX0VuY29kaW5nIGVuY29kaW5nLCBjb25zdCBjaGFyICogc3JjLCBp bnQgc3JjTGVuLCBUY2xfRFN0cmluZyAqIGRzUHRyKTsKCgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9G aW5hbGl6ZVRocmVhZCAodm9pZCk7CgpleHRlcm4gIkMiIHZvaWQgVGNsX0ZpbmFsaXplTm90aWZp ZXIgKCBDbGllbnREYXRhIGNsaWVudERhdGEpOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xfRnJlZUVu Y29kaW5nIChUY2xfRW5jb2RpbmcgZW5jb2RpbmcpOwoKZXh0ZXJuICJDIiBUY2xfVGhyZWFkSWQg VGNsX0dldEN1cnJlbnRUaHJlYWQgKHZvaWQpOwoKZXh0ZXJuICJDIiBUY2xfRW5jb2RpbmcgVGNs X0dldEVuY29kaW5nIChUY2xfSW50ZXJwICogaW50ZXJwLCBjb25zdCBjaGFyICogbmFtZSk7CgoK ZXh0ZXJuICJDIiBjaGFyICogVGNsX0dldEVuY29kaW5nTmFtZSAoIFRjbF9FbmNvZGluZyBlbmNv ZGluZyk7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9HZXRFbmNvZGluZ05hbWVzICggVGNsX0ludGVy cCAqIGludGVycCk7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0dldEluZGV4RnJvbU9ialN0cnVjdCAo IFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBvYmpQdHIsIGNoYXIgKiogdGFibGVQdHIs IGludCBvZmZzZXQsIGNoYXIgKiBtc2csIGludCBmbGFncywgaW50ICogaW5kZXhQdHIpOwoKCgoK ZXh0ZXJuICJDIiB2b2lkICogVGNsX0dldFRocmVhZERhdGEgKCBUY2xfVGhyZWFkRGF0YUtleSAq IGtleVB0ciwgaW50IHNpemUpOwoKCmV4dGVybiAiQyIgVGNsX09iaiAqIFRjbF9HZXRWYXIyRXgg KFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBwYXJ0MSwgY2hhciAqIHBhcnQyLCBpbnQgZmxh Z3MpOwoKCmV4dGVybiAiQyIgQ2xpZW50RGF0YSBUY2xfSW5pdE5vdGlmaWVyICh2b2lkKTsKCmV4 dGVybiAiQyIgdm9pZCBUY2xfTXV0ZXhMb2NrIChUY2xfTXV0ZXggKiBtdXRleFB0cik7CgpleHRl cm4gIkMiIHZvaWQgVGNsX011dGV4VW5sb2NrIChUY2xfTXV0ZXggKiBtdXRleFB0cik7CgpleHRl cm4gIkMiIHZvaWQgVGNsX0NvbmRpdGlvbk5vdGlmeSAoIFRjbF9Db25kaXRpb24gKiBjb25kUHRy KTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX0NvbmRpdGlvbldhaXQgKCBUY2xfQ29uZGl0aW9uICog Y29uZFB0ciwgVGNsX011dGV4ICogbXV0ZXhQdHIsIFRjbF9UaW1lICogdGltZVB0cik7CgoKCmV4 dGVybiAiQyIgaW50IFRjbF9OdW1VdGZDaGFycyAoY29uc3QgY2hhciAqIHNyYywgaW50IGxlbik7 CgoKZXh0ZXJuICJDIiBpbnQgVGNsX1JlYWRDaGFycyAoVGNsX0NoYW5uZWwgY2hhbm5lbCwgVGNs X09iaiAqIG9ialB0ciwgaW50IGNoYXJzVG9SZWFkLCBpbnQgYXBwZW5kRmxhZyk7CgoKCmV4dGVy biAiQyIgdm9pZCBUY2xfUmVzdG9yZVJlc3VsdCAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX1Nh dmVkUmVzdWx0ICogc3RhdGVQdHIpOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xfU2F2ZVJlc3VsdCAo VGNsX0ludGVycCAqIGludGVycCwgVGNsX1NhdmVkUmVzdWx0ICogc3RhdGVQdHIpOwoKCmV4dGVy biAiQyIgaW50IFRjbF9TZXRTeXN0ZW1FbmNvZGluZyAoIFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNv bnN0IGNoYXIgKiBuYW1lKTsKCgpleHRlcm4gIkMiIFRjbF9PYmogKiBUY2xfU2V0VmFyMkV4IChU Y2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogcGFydDEsIGNoYXIgKiBwYXJ0MiwgVGNsX09iaiAq IG5ld1ZhbHVlUHRyLCBpbnQgZmxhZ3MpOwoKCgpleHRlcm4gIkMiIHZvaWQgVGNsX1RocmVhZEFs ZXJ0IChUY2xfVGhyZWFkSWQgdGhyZWFkSWQpOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9UaHJlYWRR dWV1ZUV2ZW50ICggVGNsX1RocmVhZElkIHRocmVhZElkLCBUY2xfRXZlbnQqIGV2UHRyLCBUY2xf UXVldWVQb3NpdGlvbiBwb3NpdGlvbik7CgoKCmV4dGVybiAiQyIgVGNsX1VuaUNoYXIgVGNsX1Vu aUNoYXJBdEluZGV4IChjb25zdCBjaGFyICogc3JjLCBpbnQgaW5kZXgpOwoKCmV4dGVybiAiQyIg VGNsX1VuaUNoYXIgVGNsX1VuaUNoYXJUb0xvd2VyIChpbnQgY2gpOwoKZXh0ZXJuICJDIiBUY2xf VW5pQ2hhciBUY2xfVW5pQ2hhclRvVGl0bGUgKGludCBjaCk7CgpleHRlcm4gIkMiIFRjbF9VbmlD aGFyIFRjbF9VbmlDaGFyVG9VcHBlciAoaW50IGNoKTsKCmV4dGVybiAiQyIgaW50IFRjbF9VbmlD aGFyVG9VdGYgKGludCBjaCwgY2hhciAqIGJ1Zik7CgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfVXRm QXRJbmRleCAoY29uc3QgY2hhciAqIHNyYywgaW50IGluZGV4KTsKCgpleHRlcm4gIkMiIGludCBU Y2xfVXRmQ2hhckNvbXBsZXRlIChjb25zdCBjaGFyICogc3JjLCBpbnQgbGVuKTsKCgpleHRlcm4g IkMiIGludCBUY2xfVXRmQmFja3NsYXNoIChjb25zdCBjaGFyICogc3JjLCBpbnQgKiByZWFkUHRy LCBjaGFyICogZHN0KTsKCgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfVXRmRmluZEZpcnN0IChjb25z dCBjaGFyICogc3JjLCBpbnQgY2gpOwoKCmV4dGVybiAiQyIgY2hhciAqIFRjbF9VdGZGaW5kTGFz dCAoY29uc3QgY2hhciAqIHNyYywgaW50IGNoKTsKCgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfVXRm TmV4dCAoY29uc3QgY2hhciAqIHNyYyk7CgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfVXRmUHJldiAo Y29uc3QgY2hhciAqIHNyYywgY29uc3QgY2hhciAqIHN0YXJ0KTsKCgpleHRlcm4gIkMiIGludCBU Y2xfVXRmVG9FeHRlcm5hbCAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX0VuY29kaW5nIGVuY29k aW5nLCBjb25zdCBjaGFyICogc3JjLCBpbnQgc3JjTGVuLCBpbnQgZmxhZ3MsIFRjbF9FbmNvZGlu Z1N0YXRlICogc3RhdGVQdHIsIGNoYXIgKiBkc3QsIGludCBkc3RMZW4sIGludCAqIHNyY1JlYWRQ dHIsIGludCAqIGRzdFdyb3RlUHRyLCBpbnQgKiBkc3RDaGFyc1B0cik7CgoKCgoKCmV4dGVybiAi QyIgY2hhciAqIFRjbF9VdGZUb0V4dGVybmFsRFN0cmluZyAoIFRjbF9FbmNvZGluZyBlbmNvZGlu ZywgY29uc3QgY2hhciAqIHNyYywgaW50IHNyY0xlbiwgVGNsX0RTdHJpbmcgKiBkc1B0cik7CgoK CmV4dGVybiAiQyIgaW50IFRjbF9VdGZUb0xvd2VyIChjaGFyICogc3JjKTsKCmV4dGVybiAiQyIg aW50IFRjbF9VdGZUb1RpdGxlIChjaGFyICogc3JjKTsKCmV4dGVybiAiQyIgaW50IFRjbF9VdGZU b1VuaUNoYXIgKGNvbnN0IGNoYXIgKiBzcmMsIFRjbF9VbmlDaGFyICogY2hQdHIpOwoKCmV4dGVy biAiQyIgaW50IFRjbF9VdGZUb1VwcGVyIChjaGFyICogc3JjKTsKCmV4dGVybiAiQyIgaW50IFRj bF9Xcml0ZUNoYXJzIChUY2xfQ2hhbm5lbCBjaGFuLCBjb25zdCBjaGFyICogc3JjLCBpbnQgc3Jj TGVuKTsKCgpleHRlcm4gIkMiIGludCBUY2xfV3JpdGVPYmogKFRjbF9DaGFubmVsIGNoYW4sIFRj bF9PYmogKiBvYmpQdHIpOwoKCmV4dGVybiAiQyIgY2hhciAqIFRjbF9HZXRTdHJpbmcgKFRjbF9P YmogKiBvYmpQdHIpOwoKZXh0ZXJuICJDIiBjaGFyICogVGNsX0dldERlZmF1bHRFbmNvZGluZ0Rp ciAodm9pZCk7CgpleHRlcm4gIkMiIHZvaWQgVGNsX1NldERlZmF1bHRFbmNvZGluZ0RpciAoY2hh ciAqIHBhdGgpOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9BbGVydE5vdGlmaWVyIChDbGllbnREYXRh IGNsaWVudERhdGEpOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9TZXJ2aWNlTW9kZUhvb2sgKGludCBt b2RlKTsKCmV4dGVybiAiQyIgaW50IFRjbF9VbmlDaGFySXNBbG51bSAoaW50IGNoKTsKCmV4dGVy biAiQyIgaW50IFRjbF9VbmlDaGFySXNBbHBoYSAoaW50IGNoKTsKCmV4dGVybiAiQyIgaW50IFRj bF9VbmlDaGFySXNEaWdpdCAoaW50IGNoKTsKCmV4dGVybiAiQyIgaW50IFRjbF9VbmlDaGFySXNM b3dlciAoaW50IGNoKTsKCmV4dGVybiAiQyIgaW50IFRjbF9VbmlDaGFySXNTcGFjZSAoaW50IGNo KTsKCmV4dGVybiAiQyIgaW50IFRjbF9VbmlDaGFySXNVcHBlciAoaW50IGNoKTsKCmV4dGVybiAi QyIgaW50IFRjbF9VbmlDaGFySXNXb3JkQ2hhciAoaW50IGNoKTsKCmV4dGVybiAiQyIgaW50IFRj bF9VbmlDaGFyTGVuIChUY2xfVW5pQ2hhciAqIHN0cik7CgpleHRlcm4gIkMiIGludCBUY2xfVW5p Q2hhck5jbXAgKGNvbnN0IFRjbF9VbmlDaGFyICogY3MsIGNvbnN0IFRjbF9VbmlDaGFyICogY3Qs IHVuc2lnbmVkIGxvbmcgbik7CgoKZXh0ZXJuICJDIiBjaGFyICogVGNsX1VuaUNoYXJUb1V0ZkRT dHJpbmcgKCBjb25zdCBUY2xfVW5pQ2hhciAqIHN0cmluZywgaW50IG51bUNoYXJzLCBUY2xfRFN0 cmluZyAqIGRzUHRyKTsKCgoKZXh0ZXJuICJDIiBUY2xfVW5pQ2hhciAqIFRjbF9VdGZUb1VuaUNo YXJEU3RyaW5nICggY29uc3QgY2hhciAqIHN0cmluZywgaW50IGxlbmd0aCwgVGNsX0RTdHJpbmcg KiBkc1B0cik7CgoKCmV4dGVybiAiQyIgVGNsX1JlZ0V4cCBUY2xfR2V0UmVnRXhwRnJvbU9iaiAo IFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBwYXRPYmosIGludCBmbGFncyk7CgoKCmV4 dGVybiAiQyIgVGNsX09iaiAqIFRjbF9FdmFsVG9rZW5zIChUY2xfSW50ZXJwICogaW50ZXJwLCBU Y2xfVG9rZW4gKiB0b2tlblB0ciwgaW50IGNvdW50KTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX0Zy ZWVQYXJzZSAoVGNsX1BhcnNlICogcGFyc2VQdHIpOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9Mb2dD b21tYW5kSW5mbyAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHNjcmlwdCwgY2hhciAqIGNv bW1hbmQsIGludCBsZW5ndGgpOwoKCmV4dGVybiAiQyIgaW50IFRjbF9QYXJzZUJyYWNlcyAoVGNs X0ludGVycCAqIGludGVycCwgY2hhciAqIHN0cmluZywgaW50IG51bUJ5dGVzLCBUY2xfUGFyc2Ug KiBwYXJzZVB0ciwgaW50IGFwcGVuZCwgY2hhciAqKiB0ZXJtUHRyKTsKCgoKCmV4dGVybiAiQyIg aW50IFRjbF9QYXJzZUNvbW1hbmQgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHJpbmcs IGludCBudW1CeXRlcywgaW50IG5lc3RlZCwgVGNsX1BhcnNlICogcGFyc2VQdHIpOwoKCgpleHRl cm4gIkMiIGludCBUY2xfUGFyc2VFeHByIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogc3Ry aW5nLCBpbnQgbnVtQnl0ZXMsIFRjbF9QYXJzZSAqIHBhcnNlUHRyKTsKCgoKZXh0ZXJuICJDIiBp bnQgVGNsX1BhcnNlUXVvdGVkU3RyaW5nICggVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0 cmluZywgaW50IG51bUJ5dGVzLCBUY2xfUGFyc2UgKiBwYXJzZVB0ciwgaW50IGFwcGVuZCwgY2hh ciAqKiB0ZXJtUHRyKTsKCgoKCmV4dGVybiAiQyIgaW50IFRjbF9QYXJzZVZhck5hbWUgKFRjbF9J bnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHJpbmcsIGludCBudW1CeXRlcywgVGNsX1BhcnNlICog cGFyc2VQdHIsIGludCBhcHBlbmQpOwoKCgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfR2V0Q3dkIChU Y2xfSW50ZXJwICogaW50ZXJwLCBUY2xfRFN0cmluZyAqIGN3ZFB0cik7CgoKZXh0ZXJuICJDIiBp bnQgVGNsX0NoZGlyIChjb25zdCBjaGFyICogZGlyTmFtZSk7CgpleHRlcm4gIkMiIGludCBUY2xf QWNjZXNzIChjb25zdCBjaGFyICogcGF0aCwgaW50IG1vZGUpOwoKZXh0ZXJuICJDIiBpbnQgVGNs X1N0YXQgKGNvbnN0IGNoYXIgKiBwYXRoLCBzdHJ1Y3Qgc3RhdCAqIGJ1ZlB0cik7CgoKZXh0ZXJu ICJDIiBpbnQgVGNsX1V0Zk5jbXAgKGNvbnN0IGNoYXIgKiBzMSwgY29uc3QgY2hhciAqIHMyLCB1 bnNpZ25lZCBsb25nIG4pOwoKCmV4dGVybiAiQyIgaW50IFRjbF9VdGZOY2FzZWNtcCAoY29uc3Qg Y2hhciAqIHMxLCBjb25zdCBjaGFyICogczIsIHVuc2lnbmVkIGxvbmcgbik7CgoKZXh0ZXJuICJD IiBpbnQgVGNsX1N0cmluZ0Nhc2VNYXRjaCAoY29uc3QgY2hhciAqIHN0ciwgY29uc3QgY2hhciAq IHBhdHRlcm4sIGludCBub2Nhc2UpOwoKCmV4dGVybiAiQyIgaW50IFRjbF9VbmlDaGFySXNDb250 cm9sIChpbnQgY2gpOwoKZXh0ZXJuICJDIiBpbnQgVGNsX1VuaUNoYXJJc0dyYXBoIChpbnQgY2gp OwoKZXh0ZXJuICJDIiBpbnQgVGNsX1VuaUNoYXJJc1ByaW50IChpbnQgY2gpOwoKZXh0ZXJuICJD IiBpbnQgVGNsX1VuaUNoYXJJc1B1bmN0IChpbnQgY2gpOwoKZXh0ZXJuICJDIiBpbnQgVGNsX1Jl Z0V4cEV4ZWNPYmogKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9SZWdFeHAgcmVnZXhwLCBUY2xf T2JqICogb2JqUHRyLCBpbnQgb2Zmc2V0LCBpbnQgbm1hdGNoZXMsIGludCBmbGFncyk7CgoKCmV4 dGVybiAiQyIgdm9pZCBUY2xfUmVnRXhwR2V0SW5mbyAoVGNsX1JlZ0V4cCByZWdleHAsIFRjbF9S ZWdFeHBJbmZvICogaW5mb1B0cik7CgoKZXh0ZXJuICJDIiBUY2xfT2JqICogVGNsX05ld1VuaWNv ZGVPYmogKFRjbF9VbmlDaGFyICogdW5pY29kZSwgaW50IG51bUNoYXJzKTsKCgpleHRlcm4gIkMi IHZvaWQgVGNsX1NldFVuaWNvZGVPYmogKFRjbF9PYmogKiBvYmpQdHIsIFRjbF9VbmlDaGFyICog dW5pY29kZSwgaW50IG51bUNoYXJzKTsKCgpleHRlcm4gIkMiIGludCBUY2xfR2V0Q2hhckxlbmd0 aCAoVGNsX09iaiAqIG9ialB0cik7CgpleHRlcm4gIkMiIFRjbF9VbmlDaGFyIFRjbF9HZXRVbmlD aGFyIChUY2xfT2JqICogb2JqUHRyLCBpbnQgaW5kZXgpOwoKCmV4dGVybiAiQyIgVGNsX1VuaUNo YXIgKiBUY2xfR2V0VW5pY29kZSAoVGNsX09iaiAqIG9ialB0cik7CgpleHRlcm4gIkMiIFRjbF9P YmogKiBUY2xfR2V0UmFuZ2UgKFRjbF9PYmogKiBvYmpQdHIsIGludCBmaXJzdCwgaW50IGxhc3Qp OwoKCmV4dGVybiAiQyIgdm9pZCBUY2xfQXBwZW5kVW5pY29kZVRvT2JqIChUY2xfT2JqICogb2Jq UHRyLCBUY2xfVW5pQ2hhciAqIHVuaWNvZGUsIGludCBsZW5ndGgpOwoKCmV4dGVybiAiQyIgaW50 IFRjbF9SZWdFeHBNYXRjaE9iaiAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIHN0cmlu Z09iaiwgVGNsX09iaiAqIHBhdHRlcm5PYmopOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xfU2V0Tm90 aWZpZXIgKCBUY2xfTm90aWZpZXJQcm9jcyAqIG5vdGlmaWVyUHJvY1B0cik7CgoKZXh0ZXJuICJD IiBUY2xfTXV0ZXggKiBUY2xfR2V0QWxsb2NNdXRleCAodm9pZCk7CgpleHRlcm4gIkMiIGludCBU Y2xfR2V0Q2hhbm5lbE5hbWVzIChUY2xfSW50ZXJwICogaW50ZXJwKTsKCmV4dGVybiAiQyIgaW50 IFRjbF9HZXRDaGFubmVsTmFtZXNFeCAoIFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBwYXR0 ZXJuKTsKCgpleHRlcm4gIkMiIGludCBUY2xfUHJvY09iakNtZCAoQ2xpZW50RGF0YSBjbGllbnRE YXRhLCBUY2xfSW50ZXJwICogaW50ZXJwLCBpbnQgb2JqYywgVGNsX09iaiAqY29uc3Qgb2Jqdltd KTsKCgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9Db25kaXRpb25GaW5hbGl6ZSAoIFRjbF9Db25kaXRp b24gKiBjb25kUHRyKTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX011dGV4RmluYWxpemUgKFRjbF9N dXRleCAqIG11dGV4KTsKCmV4dGVybiAiQyIgaW50IFRjbF9DcmVhdGVUaHJlYWQgKFRjbF9UaHJl YWRJZCAqIGlkUHRyLCBUY2xfVGhyZWFkQ3JlYXRlUHJvYyBwcm9jLCBDbGllbnREYXRhIGNsaWVu dERhdGEsIGludCBzdGFja1NpemUsIGludCBmbGFncyk7CgoKCgp0eXBlZGVmIHN0cnVjdCBUY2xT dHViSG9va3MgewogICAgc3RydWN0IFRjbFBsYXRTdHVicyAqdGNsUGxhdFN0dWJzOwogICAgc3Ry dWN0IFRjbEludFN0dWJzICp0Y2xJbnRTdHViczsKICAgIHN0cnVjdCBUY2xJbnRQbGF0U3R1YnMg KnRjbEludFBsYXRTdHViczsKfSBUY2xTdHViSG9va3M7Cgp0eXBlZGVmIHN0cnVjdCBUY2xTdHVi cyB7CiAgICBpbnQgbWFnaWM7CiAgICBzdHJ1Y3QgVGNsU3R1Ykhvb2tzICpob29rczsKCiAgICBp bnQgKCp0Y2xfUGtnUHJvdmlkZUV4KSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIG5hbWUs IGNoYXIgKiB2ZXJzaW9uLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwogICAgY2hhciAqICgqdGNs X1BrZ1JlcXVpcmVFeCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBuYW1lLCBjaGFyICog dmVyc2lvbiwgaW50IGV4YWN0LCBDbGllbnREYXRhICogY2xpZW50RGF0YVB0cik7CiAgICB2b2lk ICgqdGNsX1BhbmljKSAoY2hhciAqIGZvcm1hdCwgLi4uKTsKICAgIGNoYXIgKiAoKnRjbF9BbGxv YykgKHVuc2lnbmVkIGludCBzaXplKTsKICAgIHZvaWQgKCp0Y2xfRnJlZSkgKGNoYXIgKiBwdHIp OwogICAgY2hhciAqICgqdGNsX1JlYWxsb2MpIChjaGFyICogcHRyLCB1bnNpZ25lZCBpbnQgc2l6 ZSk7CiAgICBjaGFyICogKCp0Y2xfRGJDa2FsbG9jKSAodW5zaWduZWQgaW50IHNpemUsIGNoYXIg KiBmaWxlLCBpbnQgbGluZSk7CiAgICBpbnQgKCp0Y2xfRGJDa2ZyZWUpIChjaGFyICogcHRyLCBj aGFyICogZmlsZSwgaW50IGxpbmUpOwogICAgY2hhciAqICgqdGNsX0RiQ2tyZWFsbG9jKSAoY2hh ciAqIHB0ciwgdW5zaWduZWQgaW50IHNpemUsIGNoYXIgKiBmaWxlLCBpbnQgbGluZSk7CgogICAg dm9pZCAoKnRjbF9DcmVhdGVGaWxlSGFuZGxlcikgKGludCBmZCwgaW50IG1hc2ssIFRjbF9GaWxl UHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CiMgMTI2MSAiL3Vzci9pbmNsdWRl L3RjbERlY2xzLmgiIDMKICAgIHZvaWQgKCp0Y2xfRGVsZXRlRmlsZUhhbmRsZXIpIChpbnQgZmQp OwoKCgoKCgoKICAgIHZvaWQgKCp0Y2xfU2V0VGltZXIpIChUY2xfVGltZSAqIHRpbWVQdHIpOwog ICAgdm9pZCAoKnRjbF9TbGVlcCkgKGludCBtcyk7CiAgICBpbnQgKCp0Y2xfV2FpdEZvckV2ZW50 KSAoVGNsX1RpbWUgKiB0aW1lUHRyKTsKICAgIGludCAoKnRjbF9BcHBlbmRBbGxPYmpUeXBlcykg KFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBvYmpQdHIpOwogICAgdm9pZCAoKnRjbF9B cHBlbmRTdHJpbmdzVG9PYmopIChUY2xfT2JqICogb2JqUHRyLCAuLi4pOwogICAgdm9pZCAoKnRj bF9BcHBlbmRUb09iaikgKFRjbF9PYmogKiBvYmpQdHIsIGNoYXIgKiBieXRlcywgaW50IGxlbmd0 aCk7CiAgICBUY2xfT2JqICogKCp0Y2xfQ29uY2F0T2JqKSAoaW50IG9iamMsIFRjbF9PYmogKmNv bnN0IG9ianZbXSk7CiAgICBpbnQgKCp0Y2xfQ29udmVydFRvVHlwZSkgKFRjbF9JbnRlcnAgKiBp bnRlcnAsIFRjbF9PYmogKiBvYmpQdHIsIFRjbF9PYmpUeXBlICogdHlwZVB0cik7CiAgICB2b2lk ICgqdGNsX0RiRGVjclJlZkNvdW50KSAoVGNsX09iaiAqIG9ialB0ciwgY2hhciAqIGZpbGUsIGlu dCBsaW5lKTsKICAgIHZvaWQgKCp0Y2xfRGJJbmNyUmVmQ291bnQpIChUY2xfT2JqICogb2JqUHRy LCBjaGFyICogZmlsZSwgaW50IGxpbmUpOwogICAgaW50ICgqdGNsX0RiSXNTaGFyZWQpIChUY2xf T2JqICogb2JqUHRyLCBjaGFyICogZmlsZSwgaW50IGxpbmUpOwogICAgVGNsX09iaiAqICgqdGNs X0RiTmV3Qm9vbGVhbk9iaikgKGludCBib29sVmFsdWUsIGNoYXIgKiBmaWxlLCBpbnQgbGluZSk7 CiAgICBUY2xfT2JqICogKCp0Y2xfRGJOZXdCeXRlQXJyYXlPYmopICh1bnNpZ25lZCBjaGFyICog Ynl0ZXMsIGludCBsZW5ndGgsIGNoYXIgKiBmaWxlLCBpbnQgbGluZSk7CiAgICBUY2xfT2JqICog KCp0Y2xfRGJOZXdEb3VibGVPYmopIChkb3VibGUgZG91YmxlVmFsdWUsIGNoYXIgKiBmaWxlLCBp bnQgbGluZSk7CiAgICBUY2xfT2JqICogKCp0Y2xfRGJOZXdMaXN0T2JqKSAoaW50IG9iamMsIFRj bF9PYmogKmNvbnN0IG9ianZbXSwgY2hhciAqIGZpbGUsIGludCBsaW5lKTsKICAgIFRjbF9PYmog KiAoKnRjbF9EYk5ld0xvbmdPYmopIChsb25nIGxvbmdWYWx1ZSwgY2hhciAqIGZpbGUsIGludCBs aW5lKTsKICAgIFRjbF9PYmogKiAoKnRjbF9EYk5ld09iaikgKGNoYXIgKiBmaWxlLCBpbnQgbGlu ZSk7CiAgICBUY2xfT2JqICogKCp0Y2xfRGJOZXdTdHJpbmdPYmopIChjb25zdCBjaGFyICogYnl0 ZXMsIGludCBsZW5ndGgsIGNoYXIgKiBmaWxlLCBpbnQgbGluZSk7CiAgICBUY2xfT2JqICogKCp0 Y2xfRHVwbGljYXRlT2JqKSAoVGNsX09iaiAqIG9ialB0cik7CiAgICB2b2lkICgqdGNsRnJlZU9i aikgKFRjbF9PYmogKiBvYmpQdHIpOwogICAgaW50ICgqdGNsX0dldEJvb2xlYW4pIChUY2xfSW50 ZXJwICogaW50ZXJwLCBjaGFyICogc3RyLCBpbnQgKiBib29sUHRyKTsKICAgIGludCAoKnRjbF9H ZXRCb29sZWFuRnJvbU9iaikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBvYmpQdHIs IGludCAqIGJvb2xQdHIpOwogICAgdW5zaWduZWQgY2hhciAqICgqdGNsX0dldEJ5dGVBcnJheUZy b21PYmopIChUY2xfT2JqICogb2JqUHRyLCBpbnQgKiBsZW5ndGhQdHIpOwogICAgaW50ICgqdGNs X0dldERvdWJsZSkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHIsIGRvdWJsZSAqIGRv dWJsZVB0cik7CiAgICBpbnQgKCp0Y2xfR2V0RG91YmxlRnJvbU9iaikgKFRjbF9JbnRlcnAgKiBp bnRlcnAsIFRjbF9PYmogKiBvYmpQdHIsIGRvdWJsZSAqIGRvdWJsZVB0cik7CiAgICBpbnQgKCp0 Y2xfR2V0SW5kZXhGcm9tT2JqKSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIG9ialB0 ciwgY2hhciAqKiB0YWJsZVB0ciwgY2hhciAqIG1zZywgaW50IGZsYWdzLCBpbnQgKiBpbmRleFB0 cik7CiAgICBpbnQgKCp0Y2xfR2V0SW50KSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0 ciwgaW50ICogaW50UHRyKTsKICAgIGludCAoKnRjbF9HZXRJbnRGcm9tT2JqKSAoVGNsX0ludGVy cCAqIGludGVycCwgVGNsX09iaiAqIG9ialB0ciwgaW50ICogaW50UHRyKTsKICAgIGludCAoKnRj bF9HZXRMb25nRnJvbU9iaikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBvYmpQdHIs IGxvbmcgKiBsb25nUHRyKTsKICAgIFRjbF9PYmpUeXBlICogKCp0Y2xfR2V0T2JqVHlwZSkgKGNo YXIgKiB0eXBlTmFtZSk7CiAgICBjaGFyICogKCp0Y2xfR2V0U3RyaW5nRnJvbU9iaikgKFRjbF9P YmogKiBvYmpQdHIsIGludCAqIGxlbmd0aFB0cik7CiAgICB2b2lkICgqdGNsX0ludmFsaWRhdGVT dHJpbmdSZXApIChUY2xfT2JqICogb2JqUHRyKTsKICAgIGludCAoKnRjbF9MaXN0T2JqQXBwZW5k TGlzdCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBsaXN0UHRyLCBUY2xfT2JqICog ZWxlbUxpc3RQdHIpOwogICAgaW50ICgqdGNsX0xpc3RPYmpBcHBlbmRFbGVtZW50KSAoVGNsX0lu dGVycCAqIGludGVycCwgVGNsX09iaiAqIGxpc3RQdHIsIFRjbF9PYmogKiBvYmpQdHIpOwogICAg aW50ICgqdGNsX0xpc3RPYmpHZXRFbGVtZW50cykgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9P YmogKiBsaXN0UHRyLCBpbnQgKiBvYmpjUHRyLCBUY2xfT2JqICoqKiBvYmp2UHRyKTsKICAgIGlu dCAoKnRjbF9MaXN0T2JqSW5kZXgpIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogbGlz dFB0ciwgaW50IGluZGV4LCBUY2xfT2JqICoqIG9ialB0clB0cik7CiAgICBpbnQgKCp0Y2xfTGlz dE9iakxlbmd0aCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBsaXN0UHRyLCBpbnQg KiBpbnRQdHIpOwogICAgaW50ICgqdGNsX0xpc3RPYmpSZXBsYWNlKSAoVGNsX0ludGVycCAqIGlu dGVycCwgVGNsX09iaiAqIGxpc3RQdHIsIGludCBmaXJzdCwgaW50IGNvdW50LCBpbnQgb2JqYywg VGNsX09iaiAqY29uc3Qgb2JqdltdKTsKICAgIFRjbF9PYmogKiAoKnRjbF9OZXdCb29sZWFuT2Jq KSAoaW50IGJvb2xWYWx1ZSk7CiAgICBUY2xfT2JqICogKCp0Y2xfTmV3Qnl0ZUFycmF5T2JqKSAo dW5zaWduZWQgY2hhciAqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgIFRjbF9PYmogKiAoKnRjbF9O ZXdEb3VibGVPYmopIChkb3VibGUgZG91YmxlVmFsdWUpOwogICAgVGNsX09iaiAqICgqdGNsX05l d0ludE9iaikgKGludCBpbnRWYWx1ZSk7CiAgICBUY2xfT2JqICogKCp0Y2xfTmV3TGlzdE9iaikg KGludCBvYmpjLCBUY2xfT2JqICpjb25zdCBvYmp2W10pOwogICAgVGNsX09iaiAqICgqdGNsX05l d0xvbmdPYmopIChsb25nIGxvbmdWYWx1ZSk7CiAgICBUY2xfT2JqICogKCp0Y2xfTmV3T2JqKSAo dm9pZCk7CiAgICBUY2xfT2JqICogKCp0Y2xfTmV3U3RyaW5nT2JqKSAoY29uc3QgY2hhciAqIGJ5 dGVzLCBpbnQgbGVuZ3RoKTsKICAgIHZvaWQgKCp0Y2xfU2V0Qm9vbGVhbk9iaikgKFRjbF9PYmog KiBvYmpQdHIsIGludCBib29sVmFsdWUpOwogICAgdW5zaWduZWQgY2hhciAqICgqdGNsX1NldEJ5 dGVBcnJheUxlbmd0aCkgKFRjbF9PYmogKiBvYmpQdHIsIGludCBsZW5ndGgpOwogICAgdm9pZCAo KnRjbF9TZXRCeXRlQXJyYXlPYmopIChUY2xfT2JqICogb2JqUHRyLCB1bnNpZ25lZCBjaGFyICog Ynl0ZXMsIGludCBsZW5ndGgpOwogICAgdm9pZCAoKnRjbF9TZXREb3VibGVPYmopIChUY2xfT2Jq ICogb2JqUHRyLCBkb3VibGUgZG91YmxlVmFsdWUpOwogICAgdm9pZCAoKnRjbF9TZXRJbnRPYmop IChUY2xfT2JqICogb2JqUHRyLCBpbnQgaW50VmFsdWUpOwogICAgdm9pZCAoKnRjbF9TZXRMaXN0 T2JqKSAoVGNsX09iaiAqIG9ialB0ciwgaW50IG9iamMsIFRjbF9PYmogKmNvbnN0IG9ianZbXSk7 CiAgICB2b2lkICgqdGNsX1NldExvbmdPYmopIChUY2xfT2JqICogb2JqUHRyLCBsb25nIGxvbmdW YWx1ZSk7CiAgICB2b2lkICgqdGNsX1NldE9iakxlbmd0aCkgKFRjbF9PYmogKiBvYmpQdHIsIGlu dCBsZW5ndGgpOwogICAgdm9pZCAoKnRjbF9TZXRTdHJpbmdPYmopIChUY2xfT2JqICogb2JqUHRy LCBjaGFyICogYnl0ZXMsIGludCBsZW5ndGgpOwogICAgdm9pZCAoKnRjbF9BZGRFcnJvckluZm8p IChUY2xfSW50ZXJwICogaW50ZXJwLCBjb25zdCBjaGFyICogbWVzc2FnZSk7CiAgICB2b2lkICgq dGNsX0FkZE9iakVycm9ySW5mbykgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNvbnN0IGNoYXIgKiBt ZXNzYWdlLCBpbnQgbGVuZ3RoKTsKICAgIHZvaWQgKCp0Y2xfQWxsb3dFeGNlcHRpb25zKSAoVGNs X0ludGVycCAqIGludGVycCk7CiAgICB2b2lkICgqdGNsX0FwcGVuZEVsZW1lbnQpIChUY2xfSW50 ZXJwICogaW50ZXJwLCBjb25zdCBjaGFyICogc3RyaW5nKTsKICAgIHZvaWQgKCp0Y2xfQXBwZW5k UmVzdWx0KSAoVGNsX0ludGVycCAqIGludGVycCwgLi4uKTsKICAgIFRjbF9Bc3luY0hhbmRsZXIg KCp0Y2xfQXN5bmNDcmVhdGUpIChUY2xfQXN5bmNQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGll bnREYXRhKTsKICAgIHZvaWQgKCp0Y2xfQXN5bmNEZWxldGUpIChUY2xfQXN5bmNIYW5kbGVyIGFz eW5jKTsKICAgIGludCAoKnRjbF9Bc3luY0ludm9rZSkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGlu dCBjb2RlKTsKICAgIHZvaWQgKCp0Y2xfQXN5bmNNYXJrKSAoVGNsX0FzeW5jSGFuZGxlciBhc3lu Yyk7CiAgICBpbnQgKCp0Y2xfQXN5bmNSZWFkeSkgKHZvaWQpOwogICAgdm9pZCAoKnRjbF9CYWNr Z3JvdW5kRXJyb3IpIChUY2xfSW50ZXJwICogaW50ZXJwKTsKICAgIGNoYXIgKCp0Y2xfQmFja3Ns YXNoKSAoY29uc3QgY2hhciAqIHNyYywgaW50ICogcmVhZFB0cik7CiAgICBpbnQgKCp0Y2xfQmFk Q2hhbm5lbE9wdGlvbikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBvcHRpb25OYW1lLCBj aGFyICogb3B0aW9uTGlzdCk7CiAgICB2b2lkICgqdGNsX0NhbGxXaGVuRGVsZXRlZCkgKFRjbF9J bnRlcnAgKiBpbnRlcnAsIFRjbF9JbnRlcnBEZWxldGVQcm9jICogcHJvYywgQ2xpZW50RGF0YSBj bGllbnREYXRhKTsKICAgIHZvaWQgKCp0Y2xfQ2FuY2VsSWRsZUNhbGwpIChUY2xfSWRsZVByb2Mg KiBpZGxlUHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKICAgIGludCAoKnRjbF9DbG9zZSkg KFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9DaGFubmVsIGNoYW4pOwogICAgaW50ICgqdGNsX0Nv bW1hbmRDb21wbGV0ZSkgKGNoYXIgKiBjbWQpOwogICAgY2hhciAqICgqdGNsX0NvbmNhdCkgKGlu dCBhcmdjLCBjaGFyICoqIGFyZ3YpOwogICAgaW50ICgqdGNsX0NvbnZlcnRFbGVtZW50KSAoY29u c3QgY2hhciAqIHNyYywgY2hhciAqIGRzdCwgaW50IGZsYWdzKTsKICAgIGludCAoKnRjbF9Db252 ZXJ0Q291bnRlZEVsZW1lbnQpIChjb25zdCBjaGFyICogc3JjLCBpbnQgbGVuZ3RoLCBjaGFyICog ZHN0LCBpbnQgZmxhZ3MpOwogICAgaW50ICgqdGNsX0NyZWF0ZUFsaWFzKSAoVGNsX0ludGVycCAq IHNsYXZlLCBjaGFyICogc2xhdmVDbWQsIFRjbF9JbnRlcnAgKiB0YXJnZXQsIGNoYXIgKiB0YXJn ZXRDbWQsIGludCBhcmdjLCBjaGFyICoqIGFyZ3YpOwogICAgaW50ICgqdGNsX0NyZWF0ZUFsaWFz T2JqKSAoVGNsX0ludGVycCAqIHNsYXZlLCBjaGFyICogc2xhdmVDbWQsIFRjbF9JbnRlcnAgKiB0 YXJnZXQsIGNoYXIgKiB0YXJnZXRDbWQsIGludCBvYmpjLCBUY2xfT2JqICpjb25zdCBvYmp2W10p OwogICAgVGNsX0NoYW5uZWwgKCp0Y2xfQ3JlYXRlQ2hhbm5lbCkgKFRjbF9DaGFubmVsVHlwZSAq IHR5cGVQdHIsIGNoYXIgKiBjaGFuTmFtZSwgQ2xpZW50RGF0YSBpbnN0YW5jZURhdGEsIGludCBt YXNrKTsKICAgIHZvaWQgKCp0Y2xfQ3JlYXRlQ2hhbm5lbEhhbmRsZXIpIChUY2xfQ2hhbm5lbCBj aGFuLCBpbnQgbWFzaywgVGNsX0NoYW5uZWxQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnRE YXRhKTsKICAgIHZvaWQgKCp0Y2xfQ3JlYXRlQ2xvc2VIYW5kbGVyKSAoVGNsX0NoYW5uZWwgY2hh biwgVGNsX0Nsb3NlUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICBUY2xf Q29tbWFuZCAoKnRjbF9DcmVhdGVDb21tYW5kKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAq IGNtZE5hbWUsIFRjbF9DbWRQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xf Q21kRGVsZXRlUHJvYyAqIGRlbGV0ZVByb2MpOwogICAgdm9pZCAoKnRjbF9DcmVhdGVFdmVudFNv dXJjZSkgKFRjbF9FdmVudFNldHVwUHJvYyAqIHNldHVwUHJvYywgVGNsX0V2ZW50Q2hlY2tQcm9j ICogY2hlY2tQcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwogICAgdm9pZCAoKnRjbF9DcmVh dGVFeGl0SGFuZGxlcikgKFRjbF9FeGl0UHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0 YSk7CiAgICBUY2xfSW50ZXJwICogKCp0Y2xfQ3JlYXRlSW50ZXJwKSAodm9pZCk7CiAgICB2b2lk ICgqdGNsX0NyZWF0ZU1hdGhGdW5jKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIG5hbWUs IGludCBudW1BcmdzLCBUY2xfVmFsdWVUeXBlICogYXJnVHlwZXMsIFRjbF9NYXRoUHJvYyAqIHBy b2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICBUY2xfQ29tbWFuZCAoKnRjbF9DcmVhdGVP YmpDb21tYW5kKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIGNtZE5hbWUsIFRjbF9PYmpD bWRQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfQ21kRGVsZXRlUHJvYyAq IGRlbGV0ZVByb2MpOwogICAgVGNsX0ludGVycCAqICgqdGNsX0NyZWF0ZVNsYXZlKSAoVGNsX0lu dGVycCAqIGludGVycCwgY2hhciAqIHNsYXZlTmFtZSwgaW50IGlzU2FmZSk7CiAgICBUY2xfVGlt ZXJUb2tlbiAoKnRjbF9DcmVhdGVUaW1lckhhbmRsZXIpIChpbnQgbWlsbGlzZWNvbmRzLCBUY2xf VGltZXJQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKICAgIFRjbF9UcmFjZSAo KnRjbF9DcmVhdGVUcmFjZSkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGludCBsZXZlbCwgVGNsX0Nt ZFRyYWNlUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICB2b2lkICgqdGNs X0RlbGV0ZUFzc29jRGF0YSkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBuYW1lKTsKICAg IHZvaWQgKCp0Y2xfRGVsZXRlQ2hhbm5lbEhhbmRsZXIpIChUY2xfQ2hhbm5lbCBjaGFuLCBUY2xf Q2hhbm5lbFByb2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwogICAgdm9pZCAoKnRj bF9EZWxldGVDbG9zZUhhbmRsZXIpIChUY2xfQ2hhbm5lbCBjaGFuLCBUY2xfQ2xvc2VQcm9jICog cHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKICAgIGludCAoKnRjbF9EZWxldGVDb21tYW5k KSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIGNtZE5hbWUpOwogICAgaW50ICgqdGNsX0Rl bGV0ZUNvbW1hbmRGcm9tVG9rZW4pIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfQ29tbWFuZCBj b21tYW5kKTsKICAgIHZvaWQgKCp0Y2xfRGVsZXRlRXZlbnRzKSAoVGNsX0V2ZW50RGVsZXRlUHJv YyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICB2b2lkICgqdGNsX0RlbGV0ZUV2 ZW50U291cmNlKSAoVGNsX0V2ZW50U2V0dXBQcm9jICogc2V0dXBQcm9jLCBUY2xfRXZlbnRDaGVj a1Byb2MgKiBjaGVja1Byb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICB2b2lkICgqdGNs X0RlbGV0ZUV4aXRIYW5kbGVyKSAoVGNsX0V4aXRQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGll bnREYXRhKTsKICAgIHZvaWQgKCp0Y2xfRGVsZXRlSGFzaEVudHJ5KSAoVGNsX0hhc2hFbnRyeSAq IGVudHJ5UHRyKTsKICAgIHZvaWQgKCp0Y2xfRGVsZXRlSGFzaFRhYmxlKSAoVGNsX0hhc2hUYWJs ZSAqIHRhYmxlUHRyKTsKICAgIHZvaWQgKCp0Y2xfRGVsZXRlSW50ZXJwKSAoVGNsX0ludGVycCAq IGludGVycCk7CgogICAgdm9pZCAoKnRjbF9EZXRhY2hQaWRzKSAoaW50IG51bVBpZHMsIFRjbF9Q aWQgKiBwaWRQdHIpOwoKCgoKCgoKICAgIHZvaWQgKCp0Y2xfRGVsZXRlVGltZXJIYW5kbGVyKSAo VGNsX1RpbWVyVG9rZW4gdG9rZW4pOwogICAgdm9pZCAoKnRjbF9EZWxldGVUcmFjZSkgKFRjbF9J bnRlcnAgKiBpbnRlcnAsIFRjbF9UcmFjZSB0cmFjZSk7CiAgICB2b2lkICgqdGNsX0RvbnRDYWxs V2hlbkRlbGV0ZWQpIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfSW50ZXJwRGVsZXRlUHJvYyAq IHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICBpbnQgKCp0Y2xfRG9PbmVFdmVudCkg KGludCBmbGFncyk7CiAgICB2b2lkICgqdGNsX0RvV2hlbklkbGUpIChUY2xfSWRsZVByb2MgKiBw cm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwogICAgY2hhciAqICgqdGNsX0RTdHJpbmdBcHBl bmQpIChUY2xfRFN0cmluZyAqIGRzUHRyLCBjb25zdCBjaGFyICogc3RyLCBpbnQgbGVuZ3RoKTsK ICAgIGNoYXIgKiAoKnRjbF9EU3RyaW5nQXBwZW5kRWxlbWVudCkgKFRjbF9EU3RyaW5nICogZHNQ dHIsIGNvbnN0IGNoYXIgKiBzdHJpbmcpOwogICAgdm9pZCAoKnRjbF9EU3RyaW5nRW5kU3VibGlz dCkgKFRjbF9EU3RyaW5nICogZHNQdHIpOwogICAgdm9pZCAoKnRjbF9EU3RyaW5nRnJlZSkgKFRj bF9EU3RyaW5nICogZHNQdHIpOwogICAgdm9pZCAoKnRjbF9EU3RyaW5nR2V0UmVzdWx0KSAoVGNs X0ludGVycCAqIGludGVycCwgVGNsX0RTdHJpbmcgKiBkc1B0cik7CiAgICB2b2lkICgqdGNsX0RT dHJpbmdJbml0KSAoVGNsX0RTdHJpbmcgKiBkc1B0cik7CiAgICB2b2lkICgqdGNsX0RTdHJpbmdS ZXN1bHQpIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfRFN0cmluZyAqIGRzUHRyKTsKICAgIHZv aWQgKCp0Y2xfRFN0cmluZ1NldExlbmd0aCkgKFRjbF9EU3RyaW5nICogZHNQdHIsIGludCBsZW5n dGgpOwogICAgdm9pZCAoKnRjbF9EU3RyaW5nU3RhcnRTdWJsaXN0KSAoVGNsX0RTdHJpbmcgKiBk c1B0cik7CiAgICBpbnQgKCp0Y2xfRW9mKSAoVGNsX0NoYW5uZWwgY2hhbik7CiAgICBjaGFyICog KCp0Y2xfRXJybm9JZCkgKHZvaWQpOwogICAgY2hhciAqICgqdGNsX0Vycm5vTXNnKSAoaW50IGVy cik7CiAgICBpbnQgKCp0Y2xfRXZhbCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHJp bmcpOwogICAgaW50ICgqdGNsX0V2YWxGaWxlKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAq IGZpbGVOYW1lKTsKICAgIGludCAoKnRjbF9FdmFsT2JqKSAoVGNsX0ludGVycCAqIGludGVycCwg VGNsX09iaiAqIG9ialB0cik7CiAgICB2b2lkICgqdGNsX0V2ZW50dWFsbHlGcmVlKSAoQ2xpZW50 RGF0YSBjbGllbnREYXRhLCBUY2xfRnJlZVByb2MgKiBmcmVlUHJvYyk7CiAgICB2b2lkICgqdGNs X0V4aXQpIChpbnQgc3RhdHVzKTsKICAgIGludCAoKnRjbF9FeHBvc2VDb21tYW5kKSAoVGNsX0lu dGVycCAqIGludGVycCwgY2hhciAqIGhpZGRlbkNtZFRva2VuLCBjaGFyICogY21kTmFtZSk7CiAg ICBpbnQgKCp0Y2xfRXhwckJvb2xlYW4pIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogc3Ry LCBpbnQgKiBwdHIpOwogICAgaW50ICgqdGNsX0V4cHJCb29sZWFuT2JqKSAoVGNsX0ludGVycCAq IGludGVycCwgVGNsX09iaiAqIG9ialB0ciwgaW50ICogcHRyKTsKICAgIGludCAoKnRjbF9FeHBy RG91YmxlKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0ciwgZG91YmxlICogcHRyKTsK ICAgIGludCAoKnRjbF9FeHByRG91YmxlT2JqKSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX09i aiAqIG9ialB0ciwgZG91YmxlICogcHRyKTsKICAgIGludCAoKnRjbF9FeHByTG9uZykgKFRjbF9J bnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHIsIGxvbmcgKiBwdHIpOwogICAgaW50ICgqdGNsX0V4 cHJMb25nT2JqKSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIG9ialB0ciwgbG9uZyAq IHB0cik7CiAgICBpbnQgKCp0Y2xfRXhwck9iaikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9P YmogKiBvYmpQdHIsIFRjbF9PYmogKiogcmVzdWx0UHRyUHRyKTsKICAgIGludCAoKnRjbF9FeHBy U3RyaW5nKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0cmluZyk7CiAgICB2b2lkICgq dGNsX0ZpbmFsaXplKSAodm9pZCk7CiAgICB2b2lkICgqdGNsX0ZpbmRFeGVjdXRhYmxlKSAoY29u c3QgY2hhciAqIGFyZ3YwKTsKICAgIFRjbF9IYXNoRW50cnkgKiAoKnRjbF9GaXJzdEhhc2hFbnRy eSkgKFRjbF9IYXNoVGFibGUgKiB0YWJsZVB0ciwgVGNsX0hhc2hTZWFyY2ggKiBzZWFyY2hQdHIp OwogICAgaW50ICgqdGNsX0ZsdXNoKSAoVGNsX0NoYW5uZWwgY2hhbik7CiAgICB2b2lkICgqdGNs X0ZyZWVSZXN1bHQpIChUY2xfSW50ZXJwICogaW50ZXJwKTsKICAgIGludCAoKnRjbF9HZXRBbGlh cykgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzbGF2ZUNtZCwgVGNsX0ludGVycCAqKiB0 YXJnZXRJbnRlcnBQdHIsIGNoYXIgKiogdGFyZ2V0Q21kUHRyLCBpbnQgKiBhcmdjUHRyLCBjaGFy ICoqKiBhcmd2UHRyKTsKICAgIGludCAoKnRjbF9HZXRBbGlhc09iaikgKFRjbF9JbnRlcnAgKiBp bnRlcnAsIGNoYXIgKiBzbGF2ZUNtZCwgVGNsX0ludGVycCAqKiB0YXJnZXRJbnRlcnBQdHIsIGNo YXIgKiogdGFyZ2V0Q21kUHRyLCBpbnQgKiBvYmpjUHRyLCBUY2xfT2JqICoqKiBvYmp2KTsKICAg IENsaWVudERhdGEgKCp0Y2xfR2V0QXNzb2NEYXRhKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hh ciAqIG5hbWUsIFRjbF9JbnRlcnBEZWxldGVQcm9jICoqIHByb2NQdHIpOwogICAgVGNsX0NoYW5u ZWwgKCp0Y2xfR2V0Q2hhbm5lbCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBjaGFuTmFt ZSwgaW50ICogbW9kZVB0cik7CiAgICBpbnQgKCp0Y2xfR2V0Q2hhbm5lbEJ1ZmZlclNpemUpIChU Y2xfQ2hhbm5lbCBjaGFuKTsKICAgIGludCAoKnRjbF9HZXRDaGFubmVsSGFuZGxlKSAoVGNsX0No YW5uZWwgY2hhbiwgaW50IGRpcmVjdGlvbiwgQ2xpZW50RGF0YSAqIGhhbmRsZVB0cik7CiAgICBD bGllbnREYXRhICgqdGNsX0dldENoYW5uZWxJbnN0YW5jZURhdGEpIChUY2xfQ2hhbm5lbCBjaGFu KTsKICAgIGludCAoKnRjbF9HZXRDaGFubmVsTW9kZSkgKFRjbF9DaGFubmVsIGNoYW4pOwogICAg Y2hhciAqICgqdGNsX0dldENoYW5uZWxOYW1lKSAoVGNsX0NoYW5uZWwgY2hhbik7CiAgICBpbnQg KCp0Y2xfR2V0Q2hhbm5lbE9wdGlvbikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9DaGFubmVs IGNoYW4sIGNoYXIgKiBvcHRpb25OYW1lLCBUY2xfRFN0cmluZyAqIGRzUHRyKTsKICAgIFRjbF9D aGFubmVsVHlwZSAqICgqdGNsX0dldENoYW5uZWxUeXBlKSAoVGNsX0NoYW5uZWwgY2hhbik7CiAg ICBpbnQgKCp0Y2xfR2V0Q29tbWFuZEluZm8pIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICog Y21kTmFtZSwgVGNsX0NtZEluZm8gKiBpbmZvUHRyKTsKICAgIGNoYXIgKiAoKnRjbF9HZXRDb21t YW5kTmFtZSkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9Db21tYW5kIGNvbW1hbmQpOwogICAg aW50ICgqdGNsX0dldEVycm5vKSAodm9pZCk7CiAgICBjaGFyICogKCp0Y2xfR2V0SG9zdE5hbWUp ICh2b2lkKTsKICAgIGludCAoKnRjbF9HZXRJbnRlcnBQYXRoKSAoVGNsX0ludGVycCAqIGFza0lu dGVycCwgVGNsX0ludGVycCAqIHNsYXZlSW50ZXJwKTsKICAgIFRjbF9JbnRlcnAgKiAoKnRjbF9H ZXRNYXN0ZXIpIChUY2xfSW50ZXJwICogaW50ZXJwKTsKICAgIGNvbnN0IGNoYXIgKiAoKnRjbF9H ZXROYW1lT2ZFeGVjdXRhYmxlKSAodm9pZCk7CiAgICBUY2xfT2JqICogKCp0Y2xfR2V0T2JqUmVz dWx0KSAoVGNsX0ludGVycCAqIGludGVycCk7CgogICAgaW50ICgqdGNsX0dldE9wZW5GaWxlKSAo VGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0ciwgaW50IGZvcldyaXRpbmcsIGludCBjaGVj a1VzYWdlLCBDbGllbnREYXRhICogZmlsZVB0cik7CgoKCgoKCgogICAgVGNsX1BhdGhUeXBlICgq dGNsX0dldFBhdGhUeXBlKSAoY2hhciAqIHBhdGgpOwogICAgaW50ICgqdGNsX0dldHMpIChUY2xf Q2hhbm5lbCBjaGFuLCBUY2xfRFN0cmluZyAqIGRzUHRyKTsKICAgIGludCAoKnRjbF9HZXRzT2Jq KSAoVGNsX0NoYW5uZWwgY2hhbiwgVGNsX09iaiAqIG9ialB0cik7CiAgICBpbnQgKCp0Y2xfR2V0 U2VydmljZU1vZGUpICh2b2lkKTsKICAgIFRjbF9JbnRlcnAgKiAoKnRjbF9HZXRTbGF2ZSkgKFRj bF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzbGF2ZU5hbWUpOwogICAgVGNsX0NoYW5uZWwgKCp0 Y2xfR2V0U3RkQ2hhbm5lbCkgKGludCB0eXBlKTsKICAgIGNoYXIgKiAoKnRjbF9HZXRTdHJpbmdS ZXN1bHQpIChUY2xfSW50ZXJwICogaW50ZXJwKTsKICAgIGNoYXIgKiAoKnRjbF9HZXRWYXIpIChU Y2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogdmFyTmFtZSwgaW50IGZsYWdzKTsKICAgIGNoYXIg KiAoKnRjbF9HZXRWYXIyKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHBhcnQxLCBjaGFy ICogcGFydDIsIGludCBmbGFncyk7CiAgICBpbnQgKCp0Y2xfR2xvYmFsRXZhbCkgKFRjbF9JbnRl cnAgKiBpbnRlcnAsIGNoYXIgKiBjb21tYW5kKTsKICAgIGludCAoKnRjbF9HbG9iYWxFdmFsT2Jq KSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIG9ialB0cik7CiAgICBpbnQgKCp0Y2xf SGlkZUNvbW1hbmQpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogY21kTmFtZSwgY2hhciAq IGhpZGRlbkNtZFRva2VuKTsKICAgIGludCAoKnRjbF9Jbml0KSAoVGNsX0ludGVycCAqIGludGVy cCk7CiAgICB2b2lkICgqdGNsX0luaXRIYXNoVGFibGUpIChUY2xfSGFzaFRhYmxlICogdGFibGVQ dHIsIGludCBrZXlUeXBlKTsKICAgIGludCAoKnRjbF9JbnB1dEJsb2NrZWQpIChUY2xfQ2hhbm5l bCBjaGFuKTsKICAgIGludCAoKnRjbF9JbnB1dEJ1ZmZlcmVkKSAoVGNsX0NoYW5uZWwgY2hhbik7 CiAgICBpbnQgKCp0Y2xfSW50ZXJwRGVsZXRlZCkgKFRjbF9JbnRlcnAgKiBpbnRlcnApOwogICAg aW50ICgqdGNsX0lzU2FmZSkgKFRjbF9JbnRlcnAgKiBpbnRlcnApOwogICAgY2hhciAqICgqdGNs X0pvaW5QYXRoKSAoaW50IGFyZ2MsIGNoYXIgKiogYXJndiwgVGNsX0RTdHJpbmcgKiByZXN1bHRQ dHIpOwogICAgaW50ICgqdGNsX0xpbmtWYXIpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICog dmFyTmFtZSwgY2hhciAqIGFkZHIsIGludCB0eXBlKTsKICAgIHZvaWQgKnJlc2VydmVkMTg4Owog ICAgVGNsX0NoYW5uZWwgKCp0Y2xfTWFrZUZpbGVDaGFubmVsKSAoQ2xpZW50RGF0YSBoYW5kbGUs IGludCBtb2RlKTsKICAgIGludCAoKnRjbF9NYWtlU2FmZSkgKFRjbF9JbnRlcnAgKiBpbnRlcnAp OwogICAgVGNsX0NoYW5uZWwgKCp0Y2xfTWFrZVRjcENsaWVudENoYW5uZWwpIChDbGllbnREYXRh IHRjcFNvY2tldCk7CiAgICBjaGFyICogKCp0Y2xfTWVyZ2UpIChpbnQgYXJnYywgY2hhciAqKiBh cmd2KTsKICAgIFRjbF9IYXNoRW50cnkgKiAoKnRjbF9OZXh0SGFzaEVudHJ5KSAoVGNsX0hhc2hT ZWFyY2ggKiBzZWFyY2hQdHIpOwogICAgdm9pZCAoKnRjbF9Ob3RpZnlDaGFubmVsKSAoVGNsX0No YW5uZWwgY2hhbm5lbCwgaW50IG1hc2spOwogICAgVGNsX09iaiAqICgqdGNsX09iakdldFZhcjIp IChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogcGFydDFQdHIsIFRjbF9PYmogKiBwYXJ0 MlB0ciwgaW50IGZsYWdzKTsKICAgIFRjbF9PYmogKiAoKnRjbF9PYmpTZXRWYXIyKSAoVGNsX0lu dGVycCAqIGludGVycCwgVGNsX09iaiAqIHBhcnQxUHRyLCBUY2xfT2JqICogcGFydDJQdHIsIFRj bF9PYmogKiBuZXdWYWx1ZVB0ciwgaW50IGZsYWdzKTsKCiAgICBUY2xfQ2hhbm5lbCAoKnRjbF9P cGVuQ29tbWFuZENoYW5uZWwpIChUY2xfSW50ZXJwICogaW50ZXJwLCBpbnQgYXJnYywgY2hhciAq KiBhcmd2LCBpbnQgZmxhZ3MpOwoKCgoKCgoKICAgIFRjbF9DaGFubmVsICgqdGNsX09wZW5GaWxl Q2hhbm5lbCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBmaWxlTmFtZSwgY2hhciAqIG1v ZGVTdHJpbmcsIGludCBwZXJtaXNzaW9ucyk7CiAgICBUY2xfQ2hhbm5lbCAoKnRjbF9PcGVuVGNw Q2xpZW50KSAoVGNsX0ludGVycCAqIGludGVycCwgaW50IHBvcnQsIGNoYXIgKiBhZGRyZXNzLCBj aGFyICogbXlhZGRyLCBpbnQgbXlwb3J0LCBpbnQgYXN5bmMpOwogICAgVGNsX0NoYW5uZWwgKCp0 Y2xfT3BlblRjcFNlcnZlcikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGludCBwb3J0LCBjaGFyICog aG9zdCwgVGNsX1RjcEFjY2VwdFByb2MgKiBhY2NlcHRQcm9jLCBDbGllbnREYXRhIGNhbGxiYWNr RGF0YSk7CiAgICB2b2lkICgqdGNsX1ByZXNlcnZlKSAoQ2xpZW50RGF0YSBkYXRhKTsKICAgIHZv aWQgKCp0Y2xfUHJpbnREb3VibGUpIChUY2xfSW50ZXJwICogaW50ZXJwLCBkb3VibGUgdmFsdWUs IGNoYXIgKiBkc3QpOwogICAgaW50ICgqdGNsX1B1dEVudikgKGNvbnN0IGNoYXIgKiBzdHJpbmcp OwogICAgY2hhciAqICgqdGNsX1Bvc2l4RXJyb3IpIChUY2xfSW50ZXJwICogaW50ZXJwKTsKICAg IHZvaWQgKCp0Y2xfUXVldWVFdmVudCkgKFRjbF9FdmVudCAqIGV2UHRyLCBUY2xfUXVldWVQb3Np dGlvbiBwb3NpdGlvbik7CiAgICBpbnQgKCp0Y2xfUmVhZCkgKFRjbF9DaGFubmVsIGNoYW4sIGNo YXIgKiBidWZQdHIsIGludCB0b1JlYWQpOwoKICAgIHZvaWQgKCp0Y2xfUmVhcERldGFjaGVkUHJv Y3MpICh2b2lkKTsKCgoKCgoKCiAgICBpbnQgKCp0Y2xfUmVjb3JkQW5kRXZhbCkgKFRjbF9JbnRl cnAgKiBpbnRlcnAsIGNoYXIgKiBjbWQsIGludCBmbGFncyk7CiAgICBpbnQgKCp0Y2xfUmVjb3Jk QW5kRXZhbE9iaikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBjbWRQdHIsIGludCBm bGFncyk7CiAgICB2b2lkICgqdGNsX1JlZ2lzdGVyQ2hhbm5lbCkgKFRjbF9JbnRlcnAgKiBpbnRl cnAsIFRjbF9DaGFubmVsIGNoYW4pOwogICAgdm9pZCAoKnRjbF9SZWdpc3Rlck9ialR5cGUpIChU Y2xfT2JqVHlwZSAqIHR5cGVQdHIpOwogICAgVGNsX1JlZ0V4cCAoKnRjbF9SZWdFeHBDb21waWxl KSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0cmluZyk7CiAgICBpbnQgKCp0Y2xfUmVn RXhwRXhlYykgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9SZWdFeHAgcmVnZXhwLCBjb25zdCBj aGFyICogc3RyLCBjb25zdCBjaGFyICogc3RhcnQpOwogICAgaW50ICgqdGNsX1JlZ0V4cE1hdGNo KSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0ciwgY2hhciAqIHBhdHRlcm4pOwogICAg dm9pZCAoKnRjbF9SZWdFeHBSYW5nZSkgKFRjbF9SZWdFeHAgcmVnZXhwLCBpbnQgaW5kZXgsIGNo YXIgKiogc3RhcnRQdHIsIGNoYXIgKiogZW5kUHRyKTsKICAgIHZvaWQgKCp0Y2xfUmVsZWFzZSkg KENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICB2b2lkICgqdGNsX1Jlc2V0UmVzdWx0KSAoVGNs X0ludGVycCAqIGludGVycCk7CiAgICBpbnQgKCp0Y2xfU2NhbkVsZW1lbnQpIChjb25zdCBjaGFy ICogc3RyLCBpbnQgKiBmbGFnUHRyKTsKICAgIGludCAoKnRjbF9TY2FuQ291bnRlZEVsZW1lbnQp IChjb25zdCBjaGFyICogc3RyLCBpbnQgbGVuZ3RoLCBpbnQgKiBmbGFnUHRyKTsKICAgIGludCAo KnRjbF9TZWVrKSAoVGNsX0NoYW5uZWwgY2hhbiwgaW50IG9mZnNldCwgaW50IG1vZGUpOwogICAg aW50ICgqdGNsX1NlcnZpY2VBbGwpICh2b2lkKTsKICAgIGludCAoKnRjbF9TZXJ2aWNlRXZlbnQp IChpbnQgZmxhZ3MpOwogICAgdm9pZCAoKnRjbF9TZXRBc3NvY0RhdGEpIChUY2xfSW50ZXJwICog aW50ZXJwLCBjaGFyICogbmFtZSwgVGNsX0ludGVycERlbGV0ZVByb2MgKiBwcm9jLCBDbGllbnRE YXRhIGNsaWVudERhdGEpOwogICAgdm9pZCAoKnRjbF9TZXRDaGFubmVsQnVmZmVyU2l6ZSkgKFRj bF9DaGFubmVsIGNoYW4sIGludCBzeik7CiAgICBpbnQgKCp0Y2xfU2V0Q2hhbm5lbE9wdGlvbikg KFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9DaGFubmVsIGNoYW4sIGNoYXIgKiBvcHRpb25OYW1l LCBjaGFyICogbmV3VmFsdWUpOwogICAgaW50ICgqdGNsX1NldENvbW1hbmRJbmZvKSAoVGNsX0lu dGVycCAqIGludGVycCwgY2hhciAqIGNtZE5hbWUsIFRjbF9DbWRJbmZvICogaW5mb1B0cik7CiAg ICB2b2lkICgqdGNsX1NldEVycm5vKSAoaW50IGVycik7CiAgICB2b2lkICgqdGNsX1NldEVycm9y Q29kZSkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIC4uLik7CiAgICB2b2lkICgqdGNsX1NldE1heEJs b2NrVGltZSkgKFRjbF9UaW1lICogdGltZVB0cik7CiAgICB2b2lkICgqdGNsX1NldFBhbmljUHJv YykgKFRjbF9QYW5pY1Byb2MgKiBwYW5pY1Byb2MpOwogICAgaW50ICgqdGNsX1NldFJlY3Vyc2lv bkxpbWl0KSAoVGNsX0ludGVycCAqIGludGVycCwgaW50IGRlcHRoKTsKICAgIHZvaWQgKCp0Y2xf U2V0UmVzdWx0KSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0ciwgVGNsX0ZyZWVQcm9j ICogZnJlZVByb2MpOwogICAgaW50ICgqdGNsX1NldFNlcnZpY2VNb2RlKSAoaW50IG1vZGUpOwog ICAgdm9pZCAoKnRjbF9TZXRPYmpFcnJvckNvZGUpIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xf T2JqICogZXJyb3JPYmpQdHIpOwogICAgdm9pZCAoKnRjbF9TZXRPYmpSZXN1bHQpIChUY2xfSW50 ZXJwICogaW50ZXJwLCBUY2xfT2JqICogcmVzdWx0T2JqUHRyKTsKICAgIHZvaWQgKCp0Y2xfU2V0 U3RkQ2hhbm5lbCkgKFRjbF9DaGFubmVsIGNoYW5uZWwsIGludCB0eXBlKTsKICAgIGNoYXIgKiAo KnRjbF9TZXRWYXIpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogdmFyTmFtZSwgY2hhciAq IG5ld1ZhbHVlLCBpbnQgZmxhZ3MpOwogICAgY2hhciAqICgqdGNsX1NldFZhcjIpIChUY2xfSW50 ZXJwICogaW50ZXJwLCBjaGFyICogcGFydDEsIGNoYXIgKiBwYXJ0MiwgY2hhciAqIG5ld1ZhbHVl LCBpbnQgZmxhZ3MpOwogICAgY2hhciAqICgqdGNsX1NpZ25hbElkKSAoaW50IHNpZyk7CiAgICBj aGFyICogKCp0Y2xfU2lnbmFsTXNnKSAoaW50IHNpZyk7CiAgICB2b2lkICgqdGNsX1NvdXJjZVJD RmlsZSkgKFRjbF9JbnRlcnAgKiBpbnRlcnApOwogICAgaW50ICgqdGNsX1NwbGl0TGlzdCkgKFRj bF9JbnRlcnAgKiBpbnRlcnAsIGNvbnN0IGNoYXIgKiBsaXN0U3RyLCBpbnQgKiBhcmdjUHRyLCBj aGFyICoqKiBhcmd2UHRyKTsKICAgIHZvaWQgKCp0Y2xfU3BsaXRQYXRoKSAoY29uc3QgY2hhciAq IHBhdGgsIGludCAqIGFyZ2NQdHIsIGNoYXIgKioqIGFyZ3ZQdHIpOwogICAgdm9pZCAoKnRjbF9T dGF0aWNQYWNrYWdlKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHBrZ05hbWUsIFRjbF9Q YWNrYWdlSW5pdFByb2MgKiBpbml0UHJvYywgVGNsX1BhY2thZ2VJbml0UHJvYyAqIHNhZmVJbml0 UHJvYyk7CiAgICBpbnQgKCp0Y2xfU3RyaW5nTWF0Y2gpIChjb25zdCBjaGFyICogc3RyLCBjb25z dCBjaGFyICogcGF0dGVybik7CiAgICBpbnQgKCp0Y2xfVGVsbCkgKFRjbF9DaGFubmVsIGNoYW4p OwogICAgaW50ICgqdGNsX1RyYWNlVmFyKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHZh ck5hbWUsIGludCBmbGFncywgVGNsX1ZhclRyYWNlUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xp ZW50RGF0YSk7CiAgICBpbnQgKCp0Y2xfVHJhY2VWYXIyKSAoVGNsX0ludGVycCAqIGludGVycCwg Y2hhciAqIHBhcnQxLCBjaGFyICogcGFydDIsIGludCBmbGFncywgVGNsX1ZhclRyYWNlUHJvYyAq IHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICBjaGFyICogKCp0Y2xfVHJhbnNsYXRl RmlsZU5hbWUpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogbmFtZSwgVGNsX0RTdHJpbmcg KiBidWZmZXJQdHIpOwogICAgaW50ICgqdGNsX1VuZ2V0cykgKFRjbF9DaGFubmVsIGNoYW4sIGNo YXIgKiBzdHIsIGludCBsZW4sIGludCBhdEhlYWQpOwogICAgdm9pZCAoKnRjbF9VbmxpbmtWYXIp IChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogdmFyTmFtZSk7CiAgICBpbnQgKCp0Y2xfVW5y ZWdpc3RlckNoYW5uZWwpIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfQ2hhbm5lbCBjaGFuKTsK ICAgIGludCAoKnRjbF9VbnNldFZhcikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiB2YXJO YW1lLCBpbnQgZmxhZ3MpOwogICAgaW50ICgqdGNsX1Vuc2V0VmFyMikgKFRjbF9JbnRlcnAgKiBp bnRlcnAsIGNoYXIgKiBwYXJ0MSwgY2hhciAqIHBhcnQyLCBpbnQgZmxhZ3MpOwogICAgdm9pZCAo KnRjbF9VbnRyYWNlVmFyKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHZhck5hbWUsIGlu dCBmbGFncywgVGNsX1ZhclRyYWNlUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7 CiAgICB2b2lkICgqdGNsX1VudHJhY2VWYXIyKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAq IHBhcnQxLCBjaGFyICogcGFydDIsIGludCBmbGFncywgVGNsX1ZhclRyYWNlUHJvYyAqIHByb2Ms IENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICB2b2lkICgqdGNsX1VwZGF0ZUxpbmtlZFZhcikg KFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiB2YXJOYW1lKTsKICAgIGludCAoKnRjbF9VcFZh cikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBmcmFtZU5hbWUsIGNoYXIgKiB2YXJOYW1l LCBjaGFyICogbG9jYWxOYW1lLCBpbnQgZmxhZ3MpOwogICAgaW50ICgqdGNsX1VwVmFyMikgKFRj bF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBmcmFtZU5hbWUsIGNoYXIgKiBwYXJ0MSwgY2hhciAq IHBhcnQyLCBjaGFyICogbG9jYWxOYW1lLCBpbnQgZmxhZ3MpOwogICAgaW50ICgqdGNsX1ZhckV2 YWwpIChUY2xfSW50ZXJwICogaW50ZXJwLCAuLi4pOwogICAgQ2xpZW50RGF0YSAoKnRjbF9WYXJU cmFjZUluZm8pIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogdmFyTmFtZSwgaW50IGZsYWdz LCBUY2xfVmFyVHJhY2VQcm9jICogcHJvY1B0ciwgQ2xpZW50RGF0YSBwcmV2Q2xpZW50RGF0YSk7 CiAgICBDbGllbnREYXRhICgqdGNsX1ZhclRyYWNlSW5mbzIpIChUY2xfSW50ZXJwICogaW50ZXJw LCBjaGFyICogcGFydDEsIGNoYXIgKiBwYXJ0MiwgaW50IGZsYWdzLCBUY2xfVmFyVHJhY2VQcm9j ICogcHJvY1B0ciwgQ2xpZW50RGF0YSBwcmV2Q2xpZW50RGF0YSk7CiAgICBpbnQgKCp0Y2xfV3Jp dGUpIChUY2xfQ2hhbm5lbCBjaGFuLCBjaGFyICogcywgaW50IHNsZW4pOwogICAgdm9pZCAoKnRj bF9Xcm9uZ051bUFyZ3MpIChUY2xfSW50ZXJwICogaW50ZXJwLCBpbnQgb2JqYywgVGNsX09iaiAq Y29uc3Qgb2JqdltdLCBjaGFyICogbWVzc2FnZSk7CiAgICBpbnQgKCp0Y2xfRHVtcEFjdGl2ZU1l bW9yeSkgKGNoYXIgKiBmaWxlTmFtZSk7CiAgICB2b2lkICgqdGNsX1ZhbGlkYXRlQWxsTWVtb3J5 KSAoY2hhciAqIGZpbGUsIGludCBsaW5lKTsKICAgIHZvaWQgKCp0Y2xfQXBwZW5kUmVzdWx0VkEp IChUY2xfSW50ZXJwICogaW50ZXJwLCB2YV9saXN0IGFyZ0xpc3QpOwogICAgdm9pZCAoKnRjbF9B cHBlbmRTdHJpbmdzVG9PYmpWQSkgKFRjbF9PYmogKiBvYmpQdHIsIHZhX2xpc3QgYXJnTGlzdCk7 CiAgICBjaGFyICogKCp0Y2xfSGFzaFN0YXRzKSAoVGNsX0hhc2hUYWJsZSAqIHRhYmxlUHRyKTsK ICAgIGNoYXIgKiAoKnRjbF9QYXJzZVZhcikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBz dHIsIGNoYXIgKiogdGVybVB0cik7CiAgICBjaGFyICogKCp0Y2xfUGtnUHJlc2VudCkgKFRjbF9J bnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBuYW1lLCBjaGFyICogdmVyc2lvbiwgaW50IGV4YWN0KTsK ICAgIGNoYXIgKiAoKnRjbF9Qa2dQcmVzZW50RXgpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFy ICogbmFtZSwgY2hhciAqIHZlcnNpb24sIGludCBleGFjdCwgQ2xpZW50RGF0YSAqIGNsaWVudERh dGFQdHIpOwogICAgaW50ICgqdGNsX1BrZ1Byb3ZpZGUpIChUY2xfSW50ZXJwICogaW50ZXJwLCBj aGFyICogbmFtZSwgY2hhciAqIHZlcnNpb24pOwogICAgY2hhciAqICgqdGNsX1BrZ1JlcXVpcmUp IChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogbmFtZSwgY2hhciAqIHZlcnNpb24sIGludCBl eGFjdCk7CiAgICB2b2lkICgqdGNsX1NldEVycm9yQ29kZVZBKSAoVGNsX0ludGVycCAqIGludGVy cCwgdmFfbGlzdCBhcmdMaXN0KTsKICAgIGludCAoKnRjbF9WYXJFdmFsVkEpIChUY2xfSW50ZXJw ICogaW50ZXJwLCB2YV9saXN0IGFyZ0xpc3QpOwogICAgVGNsX1BpZCAoKnRjbF9XYWl0UGlkKSAo VGNsX1BpZCBwaWQsIGludCAqIHN0YXRQdHIsIGludCBvcHRpb25zKTsKCiAgICB2b2lkICgqdGNs X1BhbmljVkEpIChjaGFyICogZm9ybWF0LCB2YV9saXN0IGFyZ0xpc3QpOwoKCgoKCgoKICAgIHZv aWQgKCp0Y2xfR2V0VmVyc2lvbikgKGludCAqIG1ham9yLCBpbnQgKiBtaW5vciwgaW50ICogcGF0 Y2hMZXZlbCwgaW50ICogdHlwZSk7CiAgICB2b2lkICgqdGNsX0luaXRNZW1vcnkpIChUY2xfSW50 ZXJwICogaW50ZXJwKTsKICAgIFRjbF9DaGFubmVsICgqdGNsX1N0YWNrQ2hhbm5lbCkgKFRjbF9J bnRlcnAgKiBpbnRlcnAsIFRjbF9DaGFubmVsVHlwZSAqIHR5cGVQdHIsIENsaWVudERhdGEgaW5z dGFuY2VEYXRhLCBpbnQgbWFzaywgVGNsX0NoYW5uZWwgcHJldkNoYW4pOwogICAgdm9pZCAoKnRj bF9VbnN0YWNrQ2hhbm5lbCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9DaGFubmVsIGNoYW4p OwogICAgVGNsX0NoYW5uZWwgKCp0Y2xfR2V0U3RhY2tlZENoYW5uZWwpIChUY2xfQ2hhbm5lbCBj aGFuKTsKICAgIHZvaWQgKnJlc2VydmVkMjg0OwogICAgdm9pZCAqcmVzZXJ2ZWQyODU7CiAgICB2 b2lkICgqdGNsX0FwcGVuZE9ialRvT2JqKSAoVGNsX09iaiAqIG9ialB0ciwgVGNsX09iaiAqIGFw cGVuZE9ialB0cik7CiAgICBUY2xfRW5jb2RpbmcgKCp0Y2xfQ3JlYXRlRW5jb2RpbmcpIChUY2xf RW5jb2RpbmdUeXBlICogdHlwZVB0cik7CiAgICB2b2lkICgqdGNsX0NyZWF0ZVRocmVhZEV4aXRI YW5kbGVyKSAoVGNsX0V4aXRQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKICAg IHZvaWQgKCp0Y2xfRGVsZXRlVGhyZWFkRXhpdEhhbmRsZXIpIChUY2xfRXhpdFByb2MgKiBwcm9j LCBDbGllbnREYXRhIGNsaWVudERhdGEpOwogICAgdm9pZCAoKnRjbF9EaXNjYXJkUmVzdWx0KSAo VGNsX1NhdmVkUmVzdWx0ICogc3RhdGVQdHIpOwogICAgaW50ICgqdGNsX0V2YWxFeCkgKFRjbF9J bnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzY3JpcHQsIGludCBudW1CeXRlcywgaW50IGZsYWdzKTsK ICAgIGludCAoKnRjbF9FdmFsT2JqdikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGludCBvYmpjLCBU Y2xfT2JqICpjb25zdCBvYmp2W10sIGludCBmbGFncyk7CiAgICBpbnQgKCp0Y2xfRXZhbE9iakV4 KSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIG9ialB0ciwgaW50IGZsYWdzKTsKICAg IHZvaWQgKCp0Y2xfRXhpdFRocmVhZCkgKGludCBzdGF0dXMpOwogICAgaW50ICgqdGNsX0V4dGVy bmFsVG9VdGYpIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfRW5jb2RpbmcgZW5jb2RpbmcsIGNv bnN0IGNoYXIgKiBzcmMsIGludCBzcmNMZW4sIGludCBmbGFncywgVGNsX0VuY29kaW5nU3RhdGUg KiBzdGF0ZVB0ciwgY2hhciAqIGRzdCwgaW50IGRzdExlbiwgaW50ICogc3JjUmVhZFB0ciwgaW50 ICogZHN0V3JvdGVQdHIsIGludCAqIGRzdENoYXJzUHRyKTsKICAgIGNoYXIgKiAoKnRjbF9FeHRl cm5hbFRvVXRmRFN0cmluZykgKFRjbF9FbmNvZGluZyBlbmNvZGluZywgY29uc3QgY2hhciAqIHNy YywgaW50IHNyY0xlbiwgVGNsX0RTdHJpbmcgKiBkc1B0cik7CiAgICB2b2lkICgqdGNsX0ZpbmFs aXplVGhyZWFkKSAodm9pZCk7CiAgICB2b2lkICgqdGNsX0ZpbmFsaXplTm90aWZpZXIpIChDbGll bnREYXRhIGNsaWVudERhdGEpOwogICAgdm9pZCAoKnRjbF9GcmVlRW5jb2RpbmcpIChUY2xfRW5j b2RpbmcgZW5jb2RpbmcpOwogICAgVGNsX1RocmVhZElkICgqdGNsX0dldEN1cnJlbnRUaHJlYWQp ICh2b2lkKTsKICAgIFRjbF9FbmNvZGluZyAoKnRjbF9HZXRFbmNvZGluZykgKFRjbF9JbnRlcnAg KiBpbnRlcnAsIGNvbnN0IGNoYXIgKiBuYW1lKTsKICAgIGNoYXIgKiAoKnRjbF9HZXRFbmNvZGlu Z05hbWUpIChUY2xfRW5jb2RpbmcgZW5jb2RpbmcpOwogICAgdm9pZCAoKnRjbF9HZXRFbmNvZGlu Z05hbWVzKSAoVGNsX0ludGVycCAqIGludGVycCk7CiAgICBpbnQgKCp0Y2xfR2V0SW5kZXhGcm9t T2JqU3RydWN0KSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIG9ialB0ciwgY2hhciAq KiB0YWJsZVB0ciwgaW50IG9mZnNldCwgY2hhciAqIG1zZywgaW50IGZsYWdzLCBpbnQgKiBpbmRl eFB0cik7CiAgICB2b2lkICogKCp0Y2xfR2V0VGhyZWFkRGF0YSkgKFRjbF9UaHJlYWREYXRhS2V5 ICoga2V5UHRyLCBpbnQgc2l6ZSk7CiAgICBUY2xfT2JqICogKCp0Y2xfR2V0VmFyMkV4KSAoVGNs X0ludGVycCAqIGludGVycCwgY2hhciAqIHBhcnQxLCBjaGFyICogcGFydDIsIGludCBmbGFncyk7 CiAgICBDbGllbnREYXRhICgqdGNsX0luaXROb3RpZmllcikgKHZvaWQpOwogICAgdm9pZCAoKnRj bF9NdXRleExvY2spIChUY2xfTXV0ZXggKiBtdXRleFB0cik7CiAgICB2b2lkICgqdGNsX011dGV4 VW5sb2NrKSAoVGNsX011dGV4ICogbXV0ZXhQdHIpOwogICAgdm9pZCAoKnRjbF9Db25kaXRpb25O b3RpZnkpIChUY2xfQ29uZGl0aW9uICogY29uZFB0cik7CiAgICB2b2lkICgqdGNsX0NvbmRpdGlv bldhaXQpIChUY2xfQ29uZGl0aW9uICogY29uZFB0ciwgVGNsX011dGV4ICogbXV0ZXhQdHIsIFRj bF9UaW1lICogdGltZVB0cik7CiAgICBpbnQgKCp0Y2xfTnVtVXRmQ2hhcnMpIChjb25zdCBjaGFy ICogc3JjLCBpbnQgbGVuKTsKICAgIGludCAoKnRjbF9SZWFkQ2hhcnMpIChUY2xfQ2hhbm5lbCBj aGFubmVsLCBUY2xfT2JqICogb2JqUHRyLCBpbnQgY2hhcnNUb1JlYWQsIGludCBhcHBlbmRGbGFn KTsKICAgIHZvaWQgKCp0Y2xfUmVzdG9yZVJlc3VsdCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRj bF9TYXZlZFJlc3VsdCAqIHN0YXRlUHRyKTsKICAgIHZvaWQgKCp0Y2xfU2F2ZVJlc3VsdCkgKFRj bF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9TYXZlZFJlc3VsdCAqIHN0YXRlUHRyKTsKICAgIGludCAo KnRjbF9TZXRTeXN0ZW1FbmNvZGluZykgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNvbnN0IGNoYXIg KiBuYW1lKTsKICAgIFRjbF9PYmogKiAoKnRjbF9TZXRWYXIyRXgpIChUY2xfSW50ZXJwICogaW50 ZXJwLCBjaGFyICogcGFydDEsIGNoYXIgKiBwYXJ0MiwgVGNsX09iaiAqIG5ld1ZhbHVlUHRyLCBp bnQgZmxhZ3MpOwogICAgdm9pZCAoKnRjbF9UaHJlYWRBbGVydCkgKFRjbF9UaHJlYWRJZCB0aHJl YWRJZCk7CiAgICB2b2lkICgqdGNsX1RocmVhZFF1ZXVlRXZlbnQpIChUY2xfVGhyZWFkSWQgdGhy ZWFkSWQsIFRjbF9FdmVudCogZXZQdHIsIFRjbF9RdWV1ZVBvc2l0aW9uIHBvc2l0aW9uKTsKICAg IFRjbF9VbmlDaGFyICgqdGNsX1VuaUNoYXJBdEluZGV4KSAoY29uc3QgY2hhciAqIHNyYywgaW50 IGluZGV4KTsKICAgIFRjbF9VbmlDaGFyICgqdGNsX1VuaUNoYXJUb0xvd2VyKSAoaW50IGNoKTsK ICAgIFRjbF9VbmlDaGFyICgqdGNsX1VuaUNoYXJUb1RpdGxlKSAoaW50IGNoKTsKICAgIFRjbF9V bmlDaGFyICgqdGNsX1VuaUNoYXJUb1VwcGVyKSAoaW50IGNoKTsKICAgIGludCAoKnRjbF9VbmlD aGFyVG9VdGYpIChpbnQgY2gsIGNoYXIgKiBidWYpOwogICAgY2hhciAqICgqdGNsX1V0ZkF0SW5k ZXgpIChjb25zdCBjaGFyICogc3JjLCBpbnQgaW5kZXgpOwogICAgaW50ICgqdGNsX1V0ZkNoYXJD b21wbGV0ZSkgKGNvbnN0IGNoYXIgKiBzcmMsIGludCBsZW4pOwogICAgaW50ICgqdGNsX1V0ZkJh Y2tzbGFzaCkgKGNvbnN0IGNoYXIgKiBzcmMsIGludCAqIHJlYWRQdHIsIGNoYXIgKiBkc3QpOwog ICAgY2hhciAqICgqdGNsX1V0ZkZpbmRGaXJzdCkgKGNvbnN0IGNoYXIgKiBzcmMsIGludCBjaCk7 CiAgICBjaGFyICogKCp0Y2xfVXRmRmluZExhc3QpIChjb25zdCBjaGFyICogc3JjLCBpbnQgY2gp OwogICAgY2hhciAqICgqdGNsX1V0Zk5leHQpIChjb25zdCBjaGFyICogc3JjKTsKICAgIGNoYXIg KiAoKnRjbF9VdGZQcmV2KSAoY29uc3QgY2hhciAqIHNyYywgY29uc3QgY2hhciAqIHN0YXJ0KTsK ICAgIGludCAoKnRjbF9VdGZUb0V4dGVybmFsKSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX0Vu Y29kaW5nIGVuY29kaW5nLCBjb25zdCBjaGFyICogc3JjLCBpbnQgc3JjTGVuLCBpbnQgZmxhZ3Ms IFRjbF9FbmNvZGluZ1N0YXRlICogc3RhdGVQdHIsIGNoYXIgKiBkc3QsIGludCBkc3RMZW4sIGlu dCAqIHNyY1JlYWRQdHIsIGludCAqIGRzdFdyb3RlUHRyLCBpbnQgKiBkc3RDaGFyc1B0cik7CiAg ICBjaGFyICogKCp0Y2xfVXRmVG9FeHRlcm5hbERTdHJpbmcpIChUY2xfRW5jb2RpbmcgZW5jb2Rp bmcsIGNvbnN0IGNoYXIgKiBzcmMsIGludCBzcmNMZW4sIFRjbF9EU3RyaW5nICogZHNQdHIpOwog ICAgaW50ICgqdGNsX1V0ZlRvTG93ZXIpIChjaGFyICogc3JjKTsKICAgIGludCAoKnRjbF9VdGZU b1RpdGxlKSAoY2hhciAqIHNyYyk7CiAgICBpbnQgKCp0Y2xfVXRmVG9VbmlDaGFyKSAoY29uc3Qg Y2hhciAqIHNyYywgVGNsX1VuaUNoYXIgKiBjaFB0cik7CiAgICBpbnQgKCp0Y2xfVXRmVG9VcHBl cikgKGNoYXIgKiBzcmMpOwogICAgaW50ICgqdGNsX1dyaXRlQ2hhcnMpIChUY2xfQ2hhbm5lbCBj aGFuLCBjb25zdCBjaGFyICogc3JjLCBpbnQgc3JjTGVuKTsKICAgIGludCAoKnRjbF9Xcml0ZU9i aikgKFRjbF9DaGFubmVsIGNoYW4sIFRjbF9PYmogKiBvYmpQdHIpOwogICAgY2hhciAqICgqdGNs X0dldFN0cmluZykgKFRjbF9PYmogKiBvYmpQdHIpOwogICAgY2hhciAqICgqdGNsX0dldERlZmF1 bHRFbmNvZGluZ0RpcikgKHZvaWQpOwogICAgdm9pZCAoKnRjbF9TZXREZWZhdWx0RW5jb2RpbmdE aXIpIChjaGFyICogcGF0aCk7CiAgICB2b2lkICgqdGNsX0FsZXJ0Tm90aWZpZXIpIChDbGllbnRE YXRhIGNsaWVudERhdGEpOwogICAgdm9pZCAoKnRjbF9TZXJ2aWNlTW9kZUhvb2spIChpbnQgbW9k ZSk7CiAgICBpbnQgKCp0Y2xfVW5pQ2hhcklzQWxudW0pIChpbnQgY2gpOwogICAgaW50ICgqdGNs X1VuaUNoYXJJc0FscGhhKSAoaW50IGNoKTsKICAgIGludCAoKnRjbF9VbmlDaGFySXNEaWdpdCkg KGludCBjaCk7CiAgICBpbnQgKCp0Y2xfVW5pQ2hhcklzTG93ZXIpIChpbnQgY2gpOwogICAgaW50 ICgqdGNsX1VuaUNoYXJJc1NwYWNlKSAoaW50IGNoKTsKICAgIGludCAoKnRjbF9VbmlDaGFySXNV cHBlcikgKGludCBjaCk7CiAgICBpbnQgKCp0Y2xfVW5pQ2hhcklzV29yZENoYXIpIChpbnQgY2gp OwogICAgaW50ICgqdGNsX1VuaUNoYXJMZW4pIChUY2xfVW5pQ2hhciAqIHN0cik7CiAgICBpbnQg KCp0Y2xfVW5pQ2hhck5jbXApIChjb25zdCBUY2xfVW5pQ2hhciAqIGNzLCBjb25zdCBUY2xfVW5p Q2hhciAqIGN0LCB1bnNpZ25lZCBsb25nIG4pOwogICAgY2hhciAqICgqdGNsX1VuaUNoYXJUb1V0 ZkRTdHJpbmcpIChjb25zdCBUY2xfVW5pQ2hhciAqIHN0cmluZywgaW50IG51bUNoYXJzLCBUY2xf RFN0cmluZyAqIGRzUHRyKTsKICAgIFRjbF9VbmlDaGFyICogKCp0Y2xfVXRmVG9VbmlDaGFyRFN0 cmluZykgKGNvbnN0IGNoYXIgKiBzdHJpbmcsIGludCBsZW5ndGgsIFRjbF9EU3RyaW5nICogZHNQ dHIpOwogICAgVGNsX1JlZ0V4cCAoKnRjbF9HZXRSZWdFeHBGcm9tT2JqKSAoVGNsX0ludGVycCAq IGludGVycCwgVGNsX09iaiAqIHBhdE9iaiwgaW50IGZsYWdzKTsKICAgIFRjbF9PYmogKiAoKnRj bF9FdmFsVG9rZW5zKSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX1Rva2VuICogdG9rZW5QdHIs IGludCBjb3VudCk7CiAgICB2b2lkICgqdGNsX0ZyZWVQYXJzZSkgKFRjbF9QYXJzZSAqIHBhcnNl UHRyKTsKICAgIHZvaWQgKCp0Y2xfTG9nQ29tbWFuZEluZm8pIChUY2xfSW50ZXJwICogaW50ZXJw LCBjaGFyICogc2NyaXB0LCBjaGFyICogY29tbWFuZCwgaW50IGxlbmd0aCk7CiAgICBpbnQgKCp0 Y2xfUGFyc2VCcmFjZXMpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogc3RyaW5nLCBpbnQg bnVtQnl0ZXMsIFRjbF9QYXJzZSAqIHBhcnNlUHRyLCBpbnQgYXBwZW5kLCBjaGFyICoqIHRlcm1Q dHIpOwogICAgaW50ICgqdGNsX1BhcnNlQ29tbWFuZCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNo YXIgKiBzdHJpbmcsIGludCBudW1CeXRlcywgaW50IG5lc3RlZCwgVGNsX1BhcnNlICogcGFyc2VQ dHIpOwogICAgaW50ICgqdGNsX1BhcnNlRXhwcikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIg KiBzdHJpbmcsIGludCBudW1CeXRlcywgVGNsX1BhcnNlICogcGFyc2VQdHIpOwogICAgaW50ICgq dGNsX1BhcnNlUXVvdGVkU3RyaW5nKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0cmlu ZywgaW50IG51bUJ5dGVzLCBUY2xfUGFyc2UgKiBwYXJzZVB0ciwgaW50IGFwcGVuZCwgY2hhciAq KiB0ZXJtUHRyKTsKICAgIGludCAoKnRjbF9QYXJzZVZhck5hbWUpIChUY2xfSW50ZXJwICogaW50 ZXJwLCBjaGFyICogc3RyaW5nLCBpbnQgbnVtQnl0ZXMsIFRjbF9QYXJzZSAqIHBhcnNlUHRyLCBp bnQgYXBwZW5kKTsKICAgIGNoYXIgKiAoKnRjbF9HZXRDd2QpIChUY2xfSW50ZXJwICogaW50ZXJw LCBUY2xfRFN0cmluZyAqIGN3ZFB0cik7CiAgICBpbnQgKCp0Y2xfQ2hkaXIpIChjb25zdCBjaGFy ICogZGlyTmFtZSk7CiAgICBpbnQgKCp0Y2xfQWNjZXNzKSAoY29uc3QgY2hhciAqIHBhdGgsIGlu dCBtb2RlKTsKICAgIGludCAoKnRjbF9TdGF0KSAoY29uc3QgY2hhciAqIHBhdGgsIHN0cnVjdCBz dGF0ICogYnVmUHRyKTsKICAgIGludCAoKnRjbF9VdGZOY21wKSAoY29uc3QgY2hhciAqIHMxLCBj b25zdCBjaGFyICogczIsIHVuc2lnbmVkIGxvbmcgbik7CiAgICBpbnQgKCp0Y2xfVXRmTmNhc2Vj bXApIChjb25zdCBjaGFyICogczEsIGNvbnN0IGNoYXIgKiBzMiwgdW5zaWduZWQgbG9uZyBuKTsK ICAgIGludCAoKnRjbF9TdHJpbmdDYXNlTWF0Y2gpIChjb25zdCBjaGFyICogc3RyLCBjb25zdCBj aGFyICogcGF0dGVybiwgaW50IG5vY2FzZSk7CiAgICBpbnQgKCp0Y2xfVW5pQ2hhcklzQ29udHJv bCkgKGludCBjaCk7CiAgICBpbnQgKCp0Y2xfVW5pQ2hhcklzR3JhcGgpIChpbnQgY2gpOwogICAg aW50ICgqdGNsX1VuaUNoYXJJc1ByaW50KSAoaW50IGNoKTsKICAgIGludCAoKnRjbF9VbmlDaGFy SXNQdW5jdCkgKGludCBjaCk7CiAgICBpbnQgKCp0Y2xfUmVnRXhwRXhlY09iaikgKFRjbF9JbnRl cnAgKiBpbnRlcnAsIFRjbF9SZWdFeHAgcmVnZXhwLCBUY2xfT2JqICogb2JqUHRyLCBpbnQgb2Zm c2V0LCBpbnQgbm1hdGNoZXMsIGludCBmbGFncyk7CiAgICB2b2lkICgqdGNsX1JlZ0V4cEdldElu Zm8pIChUY2xfUmVnRXhwIHJlZ2V4cCwgVGNsX1JlZ0V4cEluZm8gKiBpbmZvUHRyKTsKICAgIFRj bF9PYmogKiAoKnRjbF9OZXdVbmljb2RlT2JqKSAoVGNsX1VuaUNoYXIgKiB1bmljb2RlLCBpbnQg bnVtQ2hhcnMpOwogICAgdm9pZCAoKnRjbF9TZXRVbmljb2RlT2JqKSAoVGNsX09iaiAqIG9ialB0 ciwgVGNsX1VuaUNoYXIgKiB1bmljb2RlLCBpbnQgbnVtQ2hhcnMpOwogICAgaW50ICgqdGNsX0dl dENoYXJMZW5ndGgpIChUY2xfT2JqICogb2JqUHRyKTsKICAgIFRjbF9VbmlDaGFyICgqdGNsX0dl dFVuaUNoYXIpIChUY2xfT2JqICogb2JqUHRyLCBpbnQgaW5kZXgpOwogICAgVGNsX1VuaUNoYXIg KiAoKnRjbF9HZXRVbmljb2RlKSAoVGNsX09iaiAqIG9ialB0cik7CiAgICBUY2xfT2JqICogKCp0 Y2xfR2V0UmFuZ2UpIChUY2xfT2JqICogb2JqUHRyLCBpbnQgZmlyc3QsIGludCBsYXN0KTsKICAg IHZvaWQgKCp0Y2xfQXBwZW5kVW5pY29kZVRvT2JqKSAoVGNsX09iaiAqIG9ialB0ciwgVGNsX1Vu aUNoYXIgKiB1bmljb2RlLCBpbnQgbGVuZ3RoKTsKICAgIGludCAoKnRjbF9SZWdFeHBNYXRjaE9i aikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBzdHJpbmdPYmosIFRjbF9PYmogKiBw YXR0ZXJuT2JqKTsKICAgIHZvaWQgKCp0Y2xfU2V0Tm90aWZpZXIpIChUY2xfTm90aWZpZXJQcm9j cyAqIG5vdGlmaWVyUHJvY1B0cik7CiAgICBUY2xfTXV0ZXggKiAoKnRjbF9HZXRBbGxvY011dGV4 KSAodm9pZCk7CiAgICBpbnQgKCp0Y2xfR2V0Q2hhbm5lbE5hbWVzKSAoVGNsX0ludGVycCAqIGlu dGVycCk7CiAgICBpbnQgKCp0Y2xfR2V0Q2hhbm5lbE5hbWVzRXgpIChUY2xfSW50ZXJwICogaW50 ZXJwLCBjaGFyICogcGF0dGVybik7CiAgICBpbnQgKCp0Y2xfUHJvY09iakNtZCkgKENsaWVudERh dGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqIGludGVycCwgaW50IG9iamMsIFRjbF9PYmogKmNv bnN0IG9ianZbXSk7CiAgICB2b2lkICgqdGNsX0NvbmRpdGlvbkZpbmFsaXplKSAoVGNsX0NvbmRp dGlvbiAqIGNvbmRQdHIpOwogICAgdm9pZCAoKnRjbF9NdXRleEZpbmFsaXplKSAoVGNsX011dGV4 ICogbXV0ZXgpOwogICAgaW50ICgqdGNsX0NyZWF0ZVRocmVhZCkgKFRjbF9UaHJlYWRJZCAqIGlk UHRyLCBUY2xfVGhyZWFkQ3JlYXRlUHJvYyBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEsIGlu dCBzdGFja1NpemUsIGludCBmbGFncyk7Cn0gVGNsU3R1YnM7CgoKZXh0ZXJuICJDIiB7CgpleHRl cm4gVGNsU3R1YnMgKnRjbFN0dWJzUHRyOwoKfQojIDE2NTYgIi91c3IvaW5jbHVkZS90Y2wuaCIg MiAzCgoKCgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9NYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3Ys IFRjbF9BcHBJbml0UHJvYyAqYXBwSW5pdFByb2MpOwojIDE2NzMgIi91c3IvaW5jbHVkZS90Y2wu aCIgMwpleHRlcm4gIkMiIGludCBUY2xfQXBwSW5pdCAoVGNsX0ludGVycCAqaW50ZXJwKTsKIyAx Njg1ICIvdXNyL2luY2x1ZGUvdGNsLmgiIDMKfQojIDExMSAidHV4cmFjZXIuaCIgMgojIDEyNCAi dHV4cmFjZXIuaCIKIyAxICJ3aW5zeXMuaCIgMQojIDIyICJ3aW5zeXMuaCIKIyAxICJ0dXhyYWNl ci5oIiAxCiMgMjMgIndpbnN5cy5oIiAyCiMgMSAidHV4X3R5cGVzLmgiIDEKIyAyMSAidHV4X3R5 cGVzLmgiCmV4dGVybiAiQyIKewoKCgoKCiMgMSAidHV4cmFjZXIuaCIgMQojIDI5ICJ0dXhfdHlw ZXMuaCIgMgoKdHlwZWRlZiBkb3VibGUgc2NhbGFyX3Q7CiMgNDMgInR1eF90eXBlcy5oIgp0eXBl ZGVmIGVudW0gewogICAgRmFsc2UgPSAwLAogICAgVHJ1ZSA9IDEKfSBib29sX3Q7Cgp0eXBlZGVm IHN0cnVjdCB7CiAgICBzY2FsYXJfdCB4OwogICAgc2NhbGFyX3QgeTsKfSBwb2ludDJkX3Q7Cgp0 eXBlZGVmIHN0cnVjdCB7CiAgICBzY2FsYXJfdCB4OwogICAgc2NhbGFyX3QgeTsKICAgIHNjYWxh cl90IHo7Cn0gcG9pbnRfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgIGludCBpOwogICAgaW50IGo7 Cn0gaW5kZXgyZF90OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgc2NhbGFyX3QgeDsKICAgIHNjYWxh cl90IHk7CiAgICBzY2FsYXJfdCB6Owp9IHZlY3Rvcl90OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAg c2NhbGFyX3QgeDsKICAgIHNjYWxhcl90IHk7Cn0gdmVjdG9yMmRfdDsKCnR5cGVkZWYgc3RydWN0 IHsKICAgIHZlY3Rvcl90IG5tbDsKICAgIHNjYWxhcl90IGQ7Cn0gcGxhbmVfdDsKCnR5cGVkZWYg c2NhbGFyX3QgbWF0cml4Z2xfdFs0XVs0XTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIGludCBudW1f dmVydGljZXM7CiAgICBpbnQgKnZlcnRpY2VzOwp9IHBvbHlnb25fdDsKCnR5cGVkZWYgc3RydWN0 IHsKICAgIHBvaW50X3QgcFszXTsKICAgIHBvaW50MmRfdCB0WzNdOwp9IHRyaWFuZ2xlX3Q7Cgp0 eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgbnVtX3ZlcnRpY2VzOwogICAgaW50IG51bV9wb2x5Z29u czsKICAgIHBvaW50X3QgKnZlcnRpY2VzOwogICAgcG9seWdvbl90ICpwb2x5Z29uczsKfSBwb2x5 aGVkcm9uX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgcG9pbnRfdCBwdDsKICAgIHZlY3Rvcl90 IHZlYzsKfSByYXlfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHBvaW50X3QgcHQ7CiAgICB2ZWN0 b3JfdCBubWw7Cn0gbGluZV90OwoKCnR5cGVkZWYgc3RydWN0IHsKICAgIHNjYWxhcl90IHg7CiAg ICBzY2FsYXJfdCB5OwogICAgc2NhbGFyX3QgejsKICAgIHNjYWxhcl90IHc7Cn0gcXVhdGVybmlv bl90OwoKCnR5cGVkZWYgc3RydWN0IHsKICAgIHNjYWxhcl90IHI7CiAgICBzY2FsYXJfdCBnOwog ICAgc2NhbGFyX3QgYjsKICAgIHNjYWxhcl90IGE7Cn0gY29sb3VyX3Q7CgoKdHlwZWRlZiBzdHJ1 Y3QgewogICAgY29sb3VyX3QgZGlmZnVzZTsKICAgIGNvbG91cl90IHNwZWN1bGFyX2NvbG91cjsK ICAgIGRvdWJsZSBzcGVjdWxhcl9leHA7Cn0gbWF0ZXJpYWxfdDsKCgp0eXBlZGVmIHN0cnVjdCB7 CiAgICBib29sX3QgaXNfb247CiAgICBHTGZsb2F0IGFtYmllbnRbNF07CiAgICBHTGZsb2F0IGRp ZmZ1c2VbNF07CiAgICBHTGZsb2F0IHNwZWN1bGFyWzRdOwogICAgR0xmbG9hdCBwb3NpdGlvbls0 XTsKICAgIEdMZmxvYXQgc3BvdF9kaXJlY3Rpb25bM107CiAgICBHTGZsb2F0IHNwb3RfZXhwb25l bnQ7CiAgICBHTGZsb2F0IHNwb3RfY3V0b2ZmOwogICAgR0xmbG9hdCBjb25zdGFudF9hdHRlbnVh dGlvbjsKICAgIEdMZmxvYXQgbGluZWFyX2F0dGVudWF0aW9uOwogICAgR0xmbG9hdCBxdWFkcmF0 aWNfYXR0ZW51YXRpb247Cn0gbGlnaHRfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBzY2FsYXJf dCB0aW1lOwogICAgcG9pbnRfdCBwb3M7CiAgICBzY2FsYXJfdCB5YXc7CiAgICBzY2FsYXJfdCBw aXRjaDsKICAgIHNjYWxhcl90IGxfc2hsZHI7CiAgICBzY2FsYXJfdCByX3NobGRyOwogICAgc2Nh bGFyX3QgbF9oaXA7CiAgICBzY2FsYXJfdCByX2hpcDsKfSBrZXlfZnJhbWVfdDsKCgp0eXBlZGVm IGVudW0gewogICAgRW1wdHksIFNwaGVyZQp9IGdlb21ldHJ5X3Q7CgoKdHlwZWRlZiBzdHJ1Y3Qg ewogICAgZG91YmxlIHJhZGl1czsKCgogICAgaW50IGRpdmlzaW9uczsKfSBzcGhlcmVfdDsKCgp0 eXBlZGVmIGVudW0gewogICAgVHV4TGVmdEV5ZSA9IDAsCiAgICBUdXhSaWdodEV5ZSA9IDEKfSB0 dXhfZXllX3Q7CgoKdHlwZWRlZiBzdHJ1Y3Qgc2NlbmVfbm9kZV9zdHJ1Y3QgewogICAgc3RydWN0 IHNjZW5lX25vZGVfc3RydWN0KiBwYXJlbnQ7CiAgICBzdHJ1Y3Qgc2NlbmVfbm9kZV9zdHJ1Y3Qq IG5leHQ7CiAgICBzdHJ1Y3Qgc2NlbmVfbm9kZV9zdHJ1Y3QqIGNoaWxkOwoKICAgIGdlb21ldHJ5 X3QgZ2VvbTsKCiAgICB1bmlvbiB7CiAgICAgICAgc3BoZXJlX3Qgc3BoZXJlOwogICAgfSBwYXJh bTsKCiAgICBtYXRlcmlhbF90KiBtYXQ7CgoKCiAgICBib29sX3QgcmVuZGVyX3NoYWRvdzsKCgog ICAgYm9vbF90IGV5ZTsKCgogICAgdHV4X2V5ZV90IHdoaWNoX2V5ZTsKCgogICAgbWF0cml4Z2xf dCB0cmFuczsKICAgIG1hdHJpeGdsX3QgaW52dHJhbnM7CgoKICAgIGNoYXIgKm5hbWU7Cn0gc2Nl bmVfbm9kZV90OwoKdHlwZWRlZiBlbnVtIHsKICAgIEljZSA9IDAsCiAgICBSb2NrID0gMSwKICAg IFNub3cgPSAyLAogICAgTnVtVGVycmFpbnMKfSB0ZXJyYWluX3Q7Cgp0eXBlZGVmIHN0cnVjdCB7 CiAgICByYXlfdCByYXk7CiAgICBzY2FsYXJfdCBoZWlnaHQ7CiAgICBzY2FsYXJfdCBkaWFtOwog ICAgaW50IHRyZWVfdHlwZTsKfSB0cmVlX3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICByYXlfdCBy YXk7CiAgICBzY2FsYXJfdCBoZWlnaHQ7CiAgICBzY2FsYXJfdCBkaWFtOwogICAgaW50IGl0ZW1f dHlwZTsKICAgIGludCBjb2xsZWN0YWJsZTsKICAgIGJvb2xfdCBkcmF3YWJsZTsKfSBpdGVtX3Q7 CgoKCgp9CiMgMjQgIndpbnN5cy5oIiAyCgoKIyAxICIvdXNyL2luY2x1ZGUvU0RML1NETC5oIiAx CiMgMzMgIi91c3IvaW5jbHVkZS9TREwvU0RMLmgiCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9TRExf bWFpbi5oIiAxCiMgMzQgIi91c3IvaW5jbHVkZS9TREwvU0RMLmgiIDIKIyAxICIvdXNyL2luY2x1 ZGUvU0RML1NETF90eXBlcy5oIiAxCiMgMzcgIi91c3IvaW5jbHVkZS9TREwvU0RMX3R5cGVzLmgi CnR5cGVkZWYgZW51bSB7CiAgICAgICAgU0RMX0ZBTFNFID0gMCwKICAgICAgICBTRExfVFJVRSA9 IDEKfSBTRExfYm9vbDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVpbnQ4Owp0eXBlZGVmIHNpZ25l ZCBjaGFyIFNpbnQ4Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFVpbnQxNjsKdHlwZWRlZiBzaWdu ZWQgc2hvcnQgU2ludDE2Owp0eXBlZGVmIHVuc2lnbmVkIGludCBVaW50MzI7CnR5cGVkZWYgc2ln bmVkIGludCBTaW50MzI7CiMgNTkgIi91c3IvaW5jbHVkZS9TREwvU0RMX3R5cGVzLmgiCnR5cGVk ZWYgdW5zaWduZWQgbG9uZyBsb25nIFVpbnQ2NDsKdHlwZWRlZiBsb25nIGxvbmcgU2ludDY0Owoj IDczICIvdXNyL2luY2x1ZGUvU0RML1NETF90eXBlcy5oIgp0eXBlZGVmIGludCBTRExfZHVtbXlf dWludDhbKHNpemVvZihVaW50OCkgPT0gMSkgKiAyIC0gMV07CnR5cGVkZWYgaW50IFNETF9kdW1t eV9zaW50OFsoc2l6ZW9mKFNpbnQ4KSA9PSAxKSAqIDIgLSAxXTsKdHlwZWRlZiBpbnQgU0RMX2R1 bW15X3VpbnQxNlsoc2l6ZW9mKFVpbnQxNikgPT0gMikgKiAyIC0gMV07CnR5cGVkZWYgaW50IFNE TF9kdW1teV9zaW50MTZbKHNpemVvZihTaW50MTYpID09IDIpICogMiAtIDFdOwp0eXBlZGVmIGlu dCBTRExfZHVtbXlfdWludDMyWyhzaXplb2YoVWludDMyKSA9PSA0KSAqIDIgLSAxXTsKdHlwZWRl ZiBpbnQgU0RMX2R1bW15X3NpbnQzMlsoc2l6ZW9mKFNpbnQzMikgPT0gNCkgKiAyIC0gMV07CnR5 cGVkZWYgaW50IFNETF9kdW1teV91aW50NjRbKHNpemVvZihVaW50NjQpID09IDgpICogMiAtIDFd Owp0eXBlZGVmIGludCBTRExfZHVtbXlfc2ludDY0WyhzaXplb2YoU2ludDY0KSA9PSA4KSAqIDIg LSAxXTsKCgoKCmVudW0geyBTRExfUFJFU1NFRCA9IDB4MDEsIFNETF9SRUxFQVNFRCA9IDB4MDAg fTsKIyAzNSAiL3Vzci9pbmNsdWRlL1NETC9TREwuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9TREwv U0RMX2dldGVudi5oIiAxCiMgMzYgIi91c3IvaW5jbHVkZS9TREwvU0RMLmgiIDIKIyAxICIvdXNy L2luY2x1ZGUvU0RML1NETF9lcnJvci5oIiAxCiMgMzMgIi91c3IvaW5jbHVkZS9TREwvU0RMX2Vy cm9yLmgiCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9iZWdpbl9jb2RlLmgiIDEKIyAzNCAiL3Vzci9p bmNsdWRlL1NETC9TRExfZXJyb3IuaCIgMgoKCmV4dGVybiAiQyIgewoKCgpleHRlcm4gdm9pZCBT RExfU2V0RXJyb3IoY29uc3QgY2hhciAqZm10LCAuLi4pOwpleHRlcm4gY2hhciAqIFNETF9HZXRF cnJvcih2b2lkKTsKZXh0ZXJuIHZvaWQgU0RMX0NsZWFyRXJyb3Iodm9pZCk7CgoKCnR5cGVkZWYg ZW51bSB7CiAgICAgICAgU0RMX0VOT01FTSwKICAgICAgICBTRExfRUZSRUFELAogICAgICAgIFNE TF9FRldSSVRFLAogICAgICAgIFNETF9FRlNFRUssCiAgICAgICAgU0RMX0xBU1RFUlJPUgp9IFNE TF9lcnJvcmNvZGU7CmV4dGVybiB2b2lkIFNETF9FcnJvcihTRExfZXJyb3Jjb2RlIGNvZGUpOwoK CgoKfQoKIyAxICIvdXNyL2luY2x1ZGUvU0RML2Nsb3NlX2NvZGUuaCIgMQojIDYxICIvdXNyL2lu Y2x1ZGUvU0RML1NETF9lcnJvci5oIiAyCiMgMzcgIi91c3IvaW5jbHVkZS9TREwvU0RMLmgiIDIK IyAxICIvdXNyL2luY2x1ZGUvU0RML1NETF9yd29wcy5oIiAxCiMgMzUgIi91c3IvaW5jbHVkZS9T REwvU0RMX3J3b3BzLmgiCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4 LWdudS8zLjEvaW5jbHVkZS9zdGRpby5oIiAxIDMKIyAzNiAiL3Vzci9pbmNsdWRlL1NETC9TRExf cndvcHMuaCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvU0RML1NETF90eXBlcy5oIiAxCiMgMzggIi91 c3IvaW5jbHVkZS9TREwvU0RMX3J3b3BzLmgiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9iZWdp bl9jb2RlLmgiIDEKIyA0MCAiL3Vzci9pbmNsdWRlL1NETC9TRExfcndvcHMuaCIgMgoKCmV4dGVy biAiQyIgewoKCgoKdHlwZWRlZiBzdHJ1Y3QgU0RMX1JXb3BzIHsKCgoKCiAgICAgICAgaW50ICgq c2Vlaykoc3RydWN0IFNETF9SV29wcyAqY29udGV4dCwgaW50IG9mZnNldCwgaW50IHdoZW5jZSk7 CgoKCgoKICAgICAgICBpbnQgKCpyZWFkKShzdHJ1Y3QgU0RMX1JXb3BzICpjb250ZXh0LCB2b2lk ICpwdHIsIGludCBzaXplLCBpbnQgbWF4bnVtKTsKCgoKCgogICAgICAgIGludCAoKndyaXRlKShz dHJ1Y3QgU0RMX1JXb3BzICpjb250ZXh0LCBjb25zdCB2b2lkICpwdHIsIGludCBzaXplLCBpbnQg bnVtKTsKCgogICAgICAgIGludCAoKmNsb3NlKShzdHJ1Y3QgU0RMX1JXb3BzICpjb250ZXh0KTsK CiAgICAgICAgVWludDMyIHR5cGU7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICBzdHJ1Y3Qg ewogICAgICAgICAgICAgICAgaW50IGF1dG9jbG9zZTsKICAgICAgICAgICAgICAgIEZJTEUgKmZw OwogICAgICAgICAgICB9IHN0ZGlvOwogICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAg ICAgVWludDggKmJhc2U7CiAgICAgICAgICAgICAgICBVaW50OCAqaGVyZTsKICAgICAgICAgICAg ICAgIFVpbnQ4ICpzdG9wOwogICAgICAgICAgICB9IG1lbTsKICAgICAgICAgICAgc3RydWN0IHsK ICAgICAgICAgICAgICAgIHZvaWQgKmRhdGExOwogICAgICAgICAgICB9IHVua25vd247CiAgICAg ICAgfSBoaWRkZW47Cgp9IFNETF9SV29wczsKCgoKCmV4dGVybiBTRExfUldvcHMgKiBTRExfUldG cm9tRmlsZShjb25zdCBjaGFyICpmaWxlLCBjb25zdCBjaGFyICptb2RlKTsKCmV4dGVybiBTRExf UldvcHMgKiBTRExfUldGcm9tRlAoRklMRSAqZnAsIGludCBhdXRvY2xvc2UpOwoKZXh0ZXJuIFNE TF9SV29wcyAqIFNETF9SV0Zyb21NZW0odm9pZCAqbWVtLCBpbnQgc2l6ZSk7CgpleHRlcm4gU0RM X1JXb3BzICogU0RMX0FsbG9jUlcodm9pZCk7CmV4dGVybiB2b2lkIFNETF9GcmVlUlcoU0RMX1JX b3BzICphcmVhKTsKIyAxMDkgIi91c3IvaW5jbHVkZS9TREwvU0RMX3J3b3BzLmgiCn0KCiMgMSAi L3Vzci9pbmNsdWRlL1NETC9jbG9zZV9jb2RlLmgiIDEKIyAxMTIgIi91c3IvaW5jbHVkZS9TREwv U0RMX3J3b3BzLmgiIDIKIyAzOCAiL3Vzci9pbmNsdWRlL1NETC9TREwuaCIgMgojIDEgIi91c3Iv aW5jbHVkZS9TREwvU0RMX3RpbWVyLmgiIDEKIyAzMyAiL3Vzci9pbmNsdWRlL1NETC9TRExfdGlt ZXIuaCIKIyAxICIvdXNyL2luY2x1ZGUvU0RML1NETF9tYWluLmgiIDEKIyAzNCAiL3Vzci9pbmNs dWRlL1NETC9TRExfdGltZXIuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9TREwvU0RMX3R5cGVzLmgi IDEKIyAzNSAiL3Vzci9pbmNsdWRlL1NETC9TRExfdGltZXIuaCIgMgoKIyAxICIvdXNyL2luY2x1 ZGUvU0RML2JlZ2luX2NvZGUuaCIgMQojIDM3ICIvdXNyL2luY2x1ZGUvU0RML1NETF90aW1lci5o IiAyCgoKZXh0ZXJuICJDIiB7CiMgNTEgIi91c3IvaW5jbHVkZS9TREwvU0RMX3RpbWVyLmgiCmV4 dGVybiBVaW50MzIgU0RMX0dldFRpY2tzKHZvaWQpOwoKCmV4dGVybiB2b2lkIFNETF9EZWxheShV aW50MzIgbXMpOwoKCnR5cGVkZWYgVWludDMyICgqU0RMX1RpbWVyQ2FsbGJhY2spKFVpbnQzMiBp bnRlcnZhbCk7CiMgODUgIi91c3IvaW5jbHVkZS9TREwvU0RMX3RpbWVyLmgiCmV4dGVybiBpbnQg U0RMX1NldFRpbWVyKFVpbnQzMiBpbnRlcnZhbCwgU0RMX1RpbWVyQ2FsbGJhY2sgY2FsbGJhY2sp OwojIDk3ICIvdXNyL2luY2x1ZGUvU0RML1NETF90aW1lci5oIgp0eXBlZGVmIFVpbnQzMiAoKlNE TF9OZXdUaW1lckNhbGxiYWNrKShVaW50MzIgaW50ZXJ2YWwsIHZvaWQgKnBhcmFtKTsKCgp0eXBl ZGVmIHN0cnVjdCBfU0RMX1RpbWVySUQgKlNETF9UaW1lcklEOwoKCgoKZXh0ZXJuIFNETF9UaW1l cklEIFNETF9BZGRUaW1lcihVaW50MzIgaW50ZXJ2YWwsIFNETF9OZXdUaW1lckNhbGxiYWNrIGNh bGxiYWNrLCB2b2lkICpwYXJhbSk7CgoKCgpleHRlcm4gU0RMX2Jvb2wgU0RMX1JlbW92ZVRpbWVy KFNETF9UaW1lcklEIHQpOwoKCgp9CgojIDEgIi91c3IvaW5jbHVkZS9TREwvY2xvc2VfY29kZS5o IiAxCiMgMTE3ICIvdXNyL2luY2x1ZGUvU0RML1NETF90aW1lci5oIiAyCiMgMzkgIi91c3IvaW5j bHVkZS9TREwvU0RMLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvU0RML1NETF9hdWRpby5oIiAxCiMg MzMgIi91c3IvaW5jbHVkZS9TREwvU0RMX2F1ZGlvLmgiCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2Nj LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRpby5oIiAxIDMKIyAzNCAiL3Vz ci9pbmNsdWRlL1NETC9TRExfYXVkaW8uaCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvU0RML1NETF9t YWluLmgiIDEKIyAzNiAiL3Vzci9pbmNsdWRlL1NETC9TRExfYXVkaW8uaCIgMgojIDEgIi91c3Iv aW5jbHVkZS9TREwvU0RMX3R5cGVzLmgiIDEKIyAzNyAiL3Vzci9pbmNsdWRlL1NETC9TRExfYXVk aW8uaCIgMgojIDEgIi91c3IvaW5jbHVkZS9TREwvU0RMX2Vycm9yLmgiIDEKIyAzOCAiL3Vzci9p bmNsdWRlL1NETC9TRExfYXVkaW8uaCIgMgojIDEgIi91c3IvaW5jbHVkZS9TREwvU0RMX3J3b3Bz LmgiIDEKIyAzOSAiL3Vzci9pbmNsdWRlL1NETC9TRExfYXVkaW8uaCIgMgojIDEgIi91c3IvaW5j bHVkZS9TREwvU0RMX2J5dGVvcmRlci5oIiAxCiMgNDAgIi91c3IvaW5jbHVkZS9TREwvU0RMX2F1 ZGlvLmgiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9iZWdpbl9jb2RlLmgiIDEKIyA0MiAiL3Vz ci9pbmNsdWRlL1NETC9TRExfYXVkaW8uaCIgMgoKCmV4dGVybiAiQyIgewoKCgp0eXBlZGVmIHN0 cnVjdCB7CiAgICAgICAgaW50IGZyZXE7CiAgICAgICAgVWludDE2IGZvcm1hdDsKICAgICAgICBV aW50OCBjaGFubmVsczsKICAgICAgICBVaW50OCBzaWxlbmNlOwogICAgICAgIFVpbnQxNiBzYW1w bGVzOwogICAgICAgIFVpbnQxNiBwYWRkaW5nOwogICAgICAgIFVpbnQzMiBzaXplOwoKCgoKCgog ICAgICAgIHZvaWQgKCpjYWxsYmFjaykodm9pZCAqdXNlcmRhdGEsIFVpbnQ4ICpzdHJlYW0sIGlu dCBsZW4pOwogICAgICAgIHZvaWQgKnVzZXJkYXRhOwp9IFNETF9BdWRpb1NwZWM7CiMgODcgIi91 c3IvaW5jbHVkZS9TREwvU0RMX2F1ZGlvLmgiCnR5cGVkZWYgc3RydWN0IFNETF9BdWRpb0NWVCB7 CiAgICAgICAgaW50IG5lZWRlZDsKICAgICAgICBVaW50MTYgc3JjX2Zvcm1hdDsKICAgICAgICBV aW50MTYgZHN0X2Zvcm1hdDsKICAgICAgICBkb3VibGUgcmF0ZV9pbmNyOwogICAgICAgIFVpbnQ4 ICpidWY7CiAgICAgICAgaW50IGxlbjsKICAgICAgICBpbnQgbGVuX2N2dDsKICAgICAgICBpbnQg bGVuX211bHQ7CiAgICAgICAgZG91YmxlIGxlbl9yYXRpbzsKICAgICAgICB2b2lkICgqZmlsdGVy c1sxMF0pKHN0cnVjdCBTRExfQXVkaW9DVlQgKmN2dCwgVWludDE2IGZvcm1hdCk7CiAgICAgICAg aW50IGZpbHRlcl9pbmRleDsKfSBTRExfQXVkaW9DVlQ7CiMgMTA4ICIvdXNyL2luY2x1ZGUvU0RM L1NETF9hdWRpby5oIgpleHRlcm4gaW50IFNETF9BdWRpb0luaXQoY29uc3QgY2hhciAqZHJpdmVy X25hbWUpOwpleHRlcm4gdm9pZCBTRExfQXVkaW9RdWl0KHZvaWQpOwoKCgoKCmV4dGVybiBjaGFy ICpTRExfQXVkaW9Ecml2ZXJOYW1lKGNoYXIgKm5hbWVidWYsIGludCBtYXhsZW4pOwojIDE1OCAi L3Vzci9pbmNsdWRlL1NETC9TRExfYXVkaW8uaCIKZXh0ZXJuIGludCBTRExfT3BlbkF1ZGlvKFNE TF9BdWRpb1NwZWMgKmRlc2lyZWQsIFNETF9BdWRpb1NwZWMgKm9idGFpbmVkKTsKCgoKCnR5cGVk ZWYgZW51bSB7CiAgICAgICAgU0RMX0FVRElPX1NUT1BQRUQgPSAwLAogICAgICAgIFNETF9BVURJ T19QTEFZSU5HLAogICAgICAgIFNETF9BVURJT19QQVVTRUQKfSBTRExfYXVkaW9zdGF0dXM7CmV4 dGVybiBTRExfYXVkaW9zdGF0dXMgU0RMX0dldEF1ZGlvU3RhdHVzKHZvaWQpOwojIDE3NyAiL3Vz ci9pbmNsdWRlL1NETC9TRExfYXVkaW8uaCIKZXh0ZXJuIHZvaWQgU0RMX1BhdXNlQXVkaW8oaW50 IHBhdXNlX29uKTsKIyAxOTYgIi91c3IvaW5jbHVkZS9TREwvU0RMX2F1ZGlvLmgiCmV4dGVybiBT RExfQXVkaW9TcGVjICpTRExfTG9hZFdBVl9SVyhTRExfUldvcHMgKnNyYywgaW50IGZyZWVzcmMs CiAgICAgICAgICAgICAgICAgU0RMX0F1ZGlvU3BlYyAqc3BlYywgVWludDggKiphdWRpb19idWYs IFVpbnQzMiAqYXVkaW9fbGVuKTsKIyAyMDYgIi91c3IvaW5jbHVkZS9TREwvU0RMX2F1ZGlvLmgi CmV4dGVybiB2b2lkIFNETF9GcmVlV0FWKFVpbnQ4ICphdWRpb19idWYpOwojIDIxNSAiL3Vzci9p bmNsdWRlL1NETC9TRExfYXVkaW8uaCIKZXh0ZXJuIGludCBTRExfQnVpbGRBdWRpb0NWVChTRExf QXVkaW9DVlQgKmN2dCwKICAgICAgICAgICAgICAgIFVpbnQxNiBzcmNfZm9ybWF0LCBVaW50OCBz cmNfY2hhbm5lbHMsIGludCBzcmNfcmF0ZSwKICAgICAgICAgICAgICAgIFVpbnQxNiBkc3RfZm9y bWF0LCBVaW50OCBkc3RfY2hhbm5lbHMsIGludCBkc3RfcmF0ZSk7CiMgMjI3ICIvdXNyL2luY2x1 ZGUvU0RML1NETF9hdWRpby5oIgpleHRlcm4gaW50IFNETF9Db252ZXJ0QXVkaW8oU0RMX0F1ZGlv Q1ZUICpjdnQpOwojIDIzNyAiL3Vzci9pbmNsdWRlL1NETC9TRExfYXVkaW8uaCIKZXh0ZXJuIHZv aWQgU0RMX01peEF1ZGlvKFVpbnQ4ICpkc3QsIFVpbnQ4ICpzcmMsIFVpbnQzMiBsZW4sIGludCB2 b2x1bWUpOwoKCgoKCgoKZXh0ZXJuIHZvaWQgU0RMX0xvY2tBdWRpbyh2b2lkKTsKZXh0ZXJuIHZv aWQgU0RMX1VubG9ja0F1ZGlvKHZvaWQpOwoKCgoKZXh0ZXJuIHZvaWQgU0RMX0Nsb3NlQXVkaW8o dm9pZCk7CgoKCgp9CgojIDEgIi91c3IvaW5jbHVkZS9TREwvY2xvc2VfY29kZS5oIiAxCiMgMjU5 ICIvdXNyL2luY2x1ZGUvU0RML1NETF9hdWRpby5oIiAyCiMgNDAgIi91c3IvaW5jbHVkZS9TREwv U0RMLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvU0RML1NETF9jZHJvbS5oIiAxCiMgMzMgIi91c3Iv aW5jbHVkZS9TREwvU0RMX2Nkcm9tLmgiCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9TRExfdHlwZXMu aCIgMQojIDM0ICIvdXNyL2luY2x1ZGUvU0RML1NETF9jZHJvbS5oIiAyCgojIDEgIi91c3IvaW5j bHVkZS9TREwvYmVnaW5fY29kZS5oIiAxCiMgMzYgIi91c3IvaW5jbHVkZS9TREwvU0RMX2Nkcm9t LmgiIDIKCgpleHRlcm4gIkMiIHsKIyA1NCAiL3Vzci9pbmNsdWRlL1NETC9TRExfY2Ryb20uaCIK dHlwZWRlZiBlbnVtIHsKICAgICAgICBDRF9UUkFZRU1QVFksCiAgICAgICAgQ0RfU1RPUFBFRCwK ICAgICAgICBDRF9QTEFZSU5HLAogICAgICAgIENEX1BBVVNFRCwKICAgICAgICBDRF9FUlJPUiA9 IC0xCn0gQ0RzdGF0dXM7CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgVWludDggaWQ7CiAg ICAgICAgVWludDggdHlwZTsKICAgICAgICBVaW50MTYgdW51c2VkOwogICAgICAgIFVpbnQzMiBs ZW5ndGg7CiAgICAgICAgVWludDMyIG9mZnNldDsKfSBTRExfQ0R0cmFjazsKCgp0eXBlZGVmIHN0 cnVjdCBTRExfQ0QgewogICAgICAgIGludCBpZDsKICAgICAgICBDRHN0YXR1cyBzdGF0dXM7CgoK ICAgICAgICBpbnQgbnVtdHJhY2tzOwogICAgICAgIGludCBjdXJfdHJhY2s7CiAgICAgICAgaW50 IGN1cl9mcmFtZTsKICAgICAgICBTRExfQ0R0cmFjayB0cmFja1s5OSArMV07Cn0gU0RMX0NEOwoj IDEwMiAiL3Vzci9pbmNsdWRlL1NETC9TRExfY2Ryb20uaCIKZXh0ZXJuIGludCBTRExfQ0ROdW1E cml2ZXModm9pZCk7CgoKCgoKCgpleHRlcm4gY29uc3QgY2hhciAqIFNETF9DRE5hbWUoaW50IGRy aXZlKTsKCgoKCgoKCmV4dGVybiBTRExfQ0QgKiBTRExfQ0RPcGVuKGludCBkcml2ZSk7CgoKCgoK ZXh0ZXJuIENEc3RhdHVzIFNETF9DRFN0YXR1cyhTRExfQ0QgKmNkcm9tKTsKIyAxNDUgIi91c3Iv aW5jbHVkZS9TREwvU0RMX2Nkcm9tLmgiCmV4dGVybiBpbnQgU0RMX0NEUGxheVRyYWNrcyhTRExf Q0QgKmNkcm9tLAogICAgICAgICAgICAgICAgaW50IHN0YXJ0X3RyYWNrLCBpbnQgc3RhcnRfZnJh bWUsIGludCBudHJhY2tzLCBpbnQgbmZyYW1lcyk7CgoKCgpleHRlcm4gaW50IFNETF9DRFBsYXko U0RMX0NEICpjZHJvbSwgaW50IHN0YXJ0LCBpbnQgbGVuZ3RoKTsKCgpleHRlcm4gaW50IFNETF9D RFBhdXNlKFNETF9DRCAqY2Ryb20pOwoKCmV4dGVybiBpbnQgU0RMX0NEUmVzdW1lKFNETF9DRCAq Y2Ryb20pOwoKCmV4dGVybiBpbnQgU0RMX0NEU3RvcChTRExfQ0QgKmNkcm9tKTsKCgpleHRlcm4g aW50IFNETF9DREVqZWN0KFNETF9DRCAqY2Ryb20pOwoKCmV4dGVybiB2b2lkIFNETF9DRENsb3Nl KFNETF9DRCAqY2Ryb20pOwoKCgoKfQoKIyAxICIvdXNyL2luY2x1ZGUvU0RML2Nsb3NlX2NvZGUu aCIgMQojIDE3NCAiL3Vzci9pbmNsdWRlL1NETC9TRExfY2Ryb20uaCIgMgojIDQxICIvdXNyL2lu Y2x1ZGUvU0RML1NETC5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9TRExfam95c3RpY2suaCIg MQojIDMzICIvdXNyL2luY2x1ZGUvU0RML1NETF9qb3lzdGljay5oIgojIDEgIi91c3IvaW5jbHVk ZS9TREwvU0RMX3R5cGVzLmgiIDEKIyAzNCAiL3Vzci9pbmNsdWRlL1NETC9TRExfam95c3RpY2su aCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvU0RML2JlZ2luX2NvZGUuaCIgMQojIDM2ICIvdXNyL2lu Y2x1ZGUvU0RML1NETF9qb3lzdGljay5oIiAyCgoKZXh0ZXJuICJDIiB7CiMgNDcgIi91c3IvaW5j bHVkZS9TREwvU0RMX2pveXN0aWNrLmgiCnN0cnVjdCBfU0RMX0pveXN0aWNrOwp0eXBlZGVmIHN0 cnVjdCBfU0RMX0pveXN0aWNrIFNETF9Kb3lzdGljazsKCgoKCgoKZXh0ZXJuIGludCBTRExfTnVt Sm95c3RpY2tzKHZvaWQpOwoKCgoKCgpleHRlcm4gY29uc3QgY2hhciAqU0RMX0pveXN0aWNrTmFt ZShpbnQgZGV2aWNlX2luZGV4KTsKIyA3MSAiL3Vzci9pbmNsdWRlL1NETC9TRExfam95c3RpY2su aCIKZXh0ZXJuIFNETF9Kb3lzdGljayAqU0RMX0pveXN0aWNrT3BlbihpbnQgZGV2aWNlX2luZGV4 KTsKCgoKCmV4dGVybiBpbnQgU0RMX0pveXN0aWNrT3BlbmVkKGludCBkZXZpY2VfaW5kZXgpOwoK CgoKZXh0ZXJuIGludCBTRExfSm95c3RpY2tJbmRleChTRExfSm95c3RpY2sgKmpveXN0aWNrKTsK CgoKCmV4dGVybiBpbnQgU0RMX0pveXN0aWNrTnVtQXhlcyhTRExfSm95c3RpY2sgKmpveXN0aWNr KTsKCgoKCgoKZXh0ZXJuIGludCBTRExfSm95c3RpY2tOdW1CYWxscyhTRExfSm95c3RpY2sgKmpv eXN0aWNrKTsKCgoKCmV4dGVybiBpbnQgU0RMX0pveXN0aWNrTnVtSGF0cyhTRExfSm95c3RpY2sg KmpveXN0aWNrKTsKCgoKCmV4dGVybiBpbnQgU0RMX0pveXN0aWNrTnVtQnV0dG9ucyhTRExfSm95 c3RpY2sgKmpveXN0aWNrKTsKCgoKCgoKZXh0ZXJuIHZvaWQgU0RMX0pveXN0aWNrVXBkYXRlKHZv aWQpOwojIDExOSAiL3Vzci9pbmNsdWRlL1NETC9TRExfam95c3RpY2suaCIKZXh0ZXJuIGludCBT RExfSm95c3RpY2tFdmVudFN0YXRlKGludCBzdGF0ZSk7CgoKCgoKCmV4dGVybiBTaW50MTYgU0RM X0pveXN0aWNrR2V0QXhpcyhTRExfSm95c3RpY2sgKmpveXN0aWNrLCBpbnQgYXhpcyk7CiMgMTQ0 ICIvdXNyL2luY2x1ZGUvU0RML1NETF9qb3lzdGljay5oIgpleHRlcm4gVWludDggU0RMX0pveXN0 aWNrR2V0SGF0KFNETF9Kb3lzdGljayAqam95c3RpY2ssIGludCBoYXQpOwoKCgoKCgpleHRlcm4g aW50IFNETF9Kb3lzdGlja0dldEJhbGwoU0RMX0pveXN0aWNrICpqb3lzdGljaywgaW50IGJhbGws IGludCAqZHgsIGludCAqZHkpOwoKCgoKCmV4dGVybiBVaW50OCBTRExfSm95c3RpY2tHZXRCdXR0 b24oU0RMX0pveXN0aWNrICpqb3lzdGljaywgaW50IGJ1dHRvbik7CgoKCgpleHRlcm4gdm9pZCBT RExfSm95c3RpY2tDbG9zZShTRExfSm95c3RpY2sgKmpveXN0aWNrKTsKCgoKCn0KCiMgMSAiL3Vz ci9pbmNsdWRlL1NETC9jbG9zZV9jb2RlLmgiIDEKIyAxNzAgIi91c3IvaW5jbHVkZS9TREwvU0RM X2pveXN0aWNrLmgiIDIKIyA0MiAiL3Vzci9pbmNsdWRlL1NETC9TREwuaCIgMgojIDEgIi91c3Iv aW5jbHVkZS9TREwvU0RMX2V2ZW50cy5oIiAxCiMgMzMgIi91c3IvaW5jbHVkZS9TREwvU0RMX2V2 ZW50cy5oIgojIDEgIi91c3IvaW5jbHVkZS9TREwvU0RMX3R5cGVzLmgiIDEKIyAzNCAiL3Vzci9p bmNsdWRlL1NETC9TRExfZXZlbnRzLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvU0RML1NETF9hY3Rp dmUuaCIgMQojIDMzICIvdXNyL2luY2x1ZGUvU0RML1NETF9hY3RpdmUuaCIKIyAxICIvdXNyL2lu Y2x1ZGUvU0RML2JlZ2luX2NvZGUuaCIgMQojIDM0ICIvdXNyL2luY2x1ZGUvU0RML1NETF9hY3Rp dmUuaCIgMgoKCmV4dGVybiAiQyIgewojIDUxICIvdXNyL2luY2x1ZGUvU0RML1NETF9hY3RpdmUu aCIKZXh0ZXJuIFVpbnQ4IFNETF9HZXRBcHBTdGF0ZSh2b2lkKTsKCgoKCn0KCiMgMSAiL3Vzci9p bmNsdWRlL1NETC9jbG9zZV9jb2RlLmgiIDEKIyA1OSAiL3Vzci9pbmNsdWRlL1NETC9TRExfYWN0 aXZlLmgiIDIKIyAzNSAiL3Vzci9pbmNsdWRlL1NETC9TRExfZXZlbnRzLmgiIDIKIyAxICIvdXNy L2luY2x1ZGUvU0RML1NETF9rZXlib2FyZC5oIiAxCiMgMzMgIi91c3IvaW5jbHVkZS9TREwvU0RM X2tleWJvYXJkLmgiCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9TRExfdHlwZXMuaCIgMQojIDM0ICIv dXNyL2luY2x1ZGUvU0RML1NETF9rZXlib2FyZC5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9T RExfa2V5c3ltLmgiIDEKIyAzNyAiL3Vzci9pbmNsdWRlL1NETC9TRExfa2V5c3ltLmgiCnR5cGVk ZWYgZW51bSB7CgogICAgICAgIFNETEtfVU5LTk9XTiA9IDAsCiAgICAgICAgU0RMS19GSVJTVCA9 IDAsCiAgICAgICAgU0RMS19CQUNLU1BBQ0UgPSA4LAogICAgICAgIFNETEtfVEFCID0gOSwKICAg ICAgICBTRExLX0NMRUFSID0gMTIsCiAgICAgICAgU0RMS19SRVRVUk4gPSAxMywKICAgICAgICBT RExLX1BBVVNFID0gMTksCiAgICAgICAgU0RMS19FU0NBUEUgPSAyNywKICAgICAgICBTRExLX1NQ QUNFID0gMzIsCiAgICAgICAgU0RMS19FWENMQUlNID0gMzMsCiAgICAgICAgU0RMS19RVU9URURC TCA9IDM0LAogICAgICAgIFNETEtfSEFTSCA9IDM1LAogICAgICAgIFNETEtfRE9MTEFSID0gMzYs CiAgICAgICAgU0RMS19BTVBFUlNBTkQgPSAzOCwKICAgICAgICBTRExLX1FVT1RFID0gMzksCiAg ICAgICAgU0RMS19MRUZUUEFSRU4gPSA0MCwKICAgICAgICBTRExLX1JJR0hUUEFSRU4gPSA0MSwK ICAgICAgICBTRExLX0FTVEVSSVNLID0gNDIsCiAgICAgICAgU0RMS19QTFVTID0gNDMsCiAgICAg ICAgU0RMS19DT01NQSA9IDQ0LAogICAgICAgIFNETEtfTUlOVVMgPSA0NSwKICAgICAgICBTRExL X1BFUklPRCA9IDQ2LAogICAgICAgIFNETEtfU0xBU0ggPSA0NywKICAgICAgICBTRExLXzAgPSA0 OCwKICAgICAgICBTRExLXzEgPSA0OSwKICAgICAgICBTRExLXzIgPSA1MCwKICAgICAgICBTRExL XzMgPSA1MSwKICAgICAgICBTRExLXzQgPSA1MiwKICAgICAgICBTRExLXzUgPSA1MywKICAgICAg ICBTRExLXzYgPSA1NCwKICAgICAgICBTRExLXzcgPSA1NSwKICAgICAgICBTRExLXzggPSA1NiwK ICAgICAgICBTRExLXzkgPSA1NywKICAgICAgICBTRExLX0NPTE9OID0gNTgsCiAgICAgICAgU0RM S19TRU1JQ09MT04gPSA1OSwKICAgICAgICBTRExLX0xFU1MgPSA2MCwKICAgICAgICBTRExLX0VR VUFMUyA9IDYxLAogICAgICAgIFNETEtfR1JFQVRFUiA9IDYyLAogICAgICAgIFNETEtfUVVFU1RJ T04gPSA2MywKICAgICAgICBTRExLX0FUID0gNjQsCgoKCiAgICAgICAgU0RMS19MRUZUQlJBQ0tF VCA9IDkxLAogICAgICAgIFNETEtfQkFDS1NMQVNIID0gOTIsCiAgICAgICAgU0RMS19SSUdIVEJS QUNLRVQgPSA5MywKICAgICAgICBTRExLX0NBUkVUID0gOTQsCiAgICAgICAgU0RMS19VTkRFUlND T1JFID0gOTUsCiAgICAgICAgU0RMS19CQUNLUVVPVEUgPSA5NiwKICAgICAgICBTRExLX2EgPSA5 NywKICAgICAgICBTRExLX2IgPSA5OCwKICAgICAgICBTRExLX2MgPSA5OSwKICAgICAgICBTRExL X2QgPSAxMDAsCiAgICAgICAgU0RMS19lID0gMTAxLAogICAgICAgIFNETEtfZiA9IDEwMiwKICAg ICAgICBTRExLX2cgPSAxMDMsCiAgICAgICAgU0RMS19oID0gMTA0LAogICAgICAgIFNETEtfaSA9 IDEwNSwKICAgICAgICBTRExLX2ogPSAxMDYsCiAgICAgICAgU0RMS19rID0gMTA3LAogICAgICAg IFNETEtfbCA9IDEwOCwKICAgICAgICBTRExLX20gPSAxMDksCiAgICAgICAgU0RMS19uID0gMTEw LAogICAgICAgIFNETEtfbyA9IDExMSwKICAgICAgICBTRExLX3AgPSAxMTIsCiAgICAgICAgU0RM S19xID0gMTEzLAogICAgICAgIFNETEtfciA9IDExNCwKICAgICAgICBTRExLX3MgPSAxMTUsCiAg ICAgICAgU0RMS190ID0gMTE2LAogICAgICAgIFNETEtfdSA9IDExNywKICAgICAgICBTRExLX3Yg PSAxMTgsCiAgICAgICAgU0RMS193ID0gMTE5LAogICAgICAgIFNETEtfeCA9IDEyMCwKICAgICAg ICBTRExLX3kgPSAxMjEsCiAgICAgICAgU0RMS196ID0gMTIyLAogICAgICAgIFNETEtfREVMRVRF ID0gMTI3LAoKCgogICAgICAgIFNETEtfV09STERfMCA9IDE2MCwKICAgICAgICBTRExLX1dPUkxE XzEgPSAxNjEsCiAgICAgICAgU0RMS19XT1JMRF8yID0gMTYyLAogICAgICAgIFNETEtfV09STERf MyA9IDE2MywKICAgICAgICBTRExLX1dPUkxEXzQgPSAxNjQsCiAgICAgICAgU0RMS19XT1JMRF81 ID0gMTY1LAogICAgICAgIFNETEtfV09STERfNiA9IDE2NiwKICAgICAgICBTRExLX1dPUkxEXzcg PSAxNjcsCiAgICAgICAgU0RMS19XT1JMRF84ID0gMTY4LAogICAgICAgIFNETEtfV09STERfOSA9 IDE2OSwKICAgICAgICBTRExLX1dPUkxEXzEwID0gMTcwLAogICAgICAgIFNETEtfV09STERfMTEg PSAxNzEsCiAgICAgICAgU0RMS19XT1JMRF8xMiA9IDE3MiwKICAgICAgICBTRExLX1dPUkxEXzEz ID0gMTczLAogICAgICAgIFNETEtfV09STERfMTQgPSAxNzQsCiAgICAgICAgU0RMS19XT1JMRF8x NSA9IDE3NSwKICAgICAgICBTRExLX1dPUkxEXzE2ID0gMTc2LAogICAgICAgIFNETEtfV09STERf MTcgPSAxNzcsCiAgICAgICAgU0RMS19XT1JMRF8xOCA9IDE3OCwKICAgICAgICBTRExLX1dPUkxE XzE5ID0gMTc5LAogICAgICAgIFNETEtfV09STERfMjAgPSAxODAsCiAgICAgICAgU0RMS19XT1JM RF8yMSA9IDE4MSwKICAgICAgICBTRExLX1dPUkxEXzIyID0gMTgyLAogICAgICAgIFNETEtfV09S TERfMjMgPSAxODMsCiAgICAgICAgU0RMS19XT1JMRF8yNCA9IDE4NCwKICAgICAgICBTRExLX1dP UkxEXzI1ID0gMTg1LAogICAgICAgIFNETEtfV09STERfMjYgPSAxODYsCiAgICAgICAgU0RMS19X T1JMRF8yNyA9IDE4NywKICAgICAgICBTRExLX1dPUkxEXzI4ID0gMTg4LAogICAgICAgIFNETEtf V09STERfMjkgPSAxODksCiAgICAgICAgU0RMS19XT1JMRF8zMCA9IDE5MCwKICAgICAgICBTRExL X1dPUkxEXzMxID0gMTkxLAogICAgICAgIFNETEtfV09STERfMzIgPSAxOTIsCiAgICAgICAgU0RM S19XT1JMRF8zMyA9IDE5MywKICAgICAgICBTRExLX1dPUkxEXzM0ID0gMTk0LAogICAgICAgIFNE TEtfV09STERfMzUgPSAxOTUsCiAgICAgICAgU0RMS19XT1JMRF8zNiA9IDE5NiwKICAgICAgICBT RExLX1dPUkxEXzM3ID0gMTk3LAogICAgICAgIFNETEtfV09STERfMzggPSAxOTgsCiAgICAgICAg U0RMS19XT1JMRF8zOSA9IDE5OSwKICAgICAgICBTRExLX1dPUkxEXzQwID0gMjAwLAogICAgICAg IFNETEtfV09STERfNDEgPSAyMDEsCiAgICAgICAgU0RMS19XT1JMRF80MiA9IDIwMiwKICAgICAg ICBTRExLX1dPUkxEXzQzID0gMjAzLAogICAgICAgIFNETEtfV09STERfNDQgPSAyMDQsCiAgICAg ICAgU0RMS19XT1JMRF80NSA9IDIwNSwKICAgICAgICBTRExLX1dPUkxEXzQ2ID0gMjA2LAogICAg ICAgIFNETEtfV09STERfNDcgPSAyMDcsCiAgICAgICAgU0RMS19XT1JMRF80OCA9IDIwOCwKICAg ICAgICBTRExLX1dPUkxEXzQ5ID0gMjA5LAogICAgICAgIFNETEtfV09STERfNTAgPSAyMTAsCiAg ICAgICAgU0RMS19XT1JMRF81MSA9IDIxMSwKICAgICAgICBTRExLX1dPUkxEXzUyID0gMjEyLAog ICAgICAgIFNETEtfV09STERfNTMgPSAyMTMsCiAgICAgICAgU0RMS19XT1JMRF81NCA9IDIxNCwK ICAgICAgICBTRExLX1dPUkxEXzU1ID0gMjE1LAogICAgICAgIFNETEtfV09STERfNTYgPSAyMTYs CiAgICAgICAgU0RMS19XT1JMRF81NyA9IDIxNywKICAgICAgICBTRExLX1dPUkxEXzU4ID0gMjE4 LAogICAgICAgIFNETEtfV09STERfNTkgPSAyMTksCiAgICAgICAgU0RMS19XT1JMRF82MCA9IDIy MCwKICAgICAgICBTRExLX1dPUkxEXzYxID0gMjIxLAogICAgICAgIFNETEtfV09STERfNjIgPSAy MjIsCiAgICAgICAgU0RMS19XT1JMRF82MyA9IDIyMywKICAgICAgICBTRExLX1dPUkxEXzY0ID0g MjI0LAogICAgICAgIFNETEtfV09STERfNjUgPSAyMjUsCiAgICAgICAgU0RMS19XT1JMRF82NiA9 IDIyNiwKICAgICAgICBTRExLX1dPUkxEXzY3ID0gMjI3LAogICAgICAgIFNETEtfV09STERfNjgg PSAyMjgsCiAgICAgICAgU0RMS19XT1JMRF82OSA9IDIyOSwKICAgICAgICBTRExLX1dPUkxEXzcw ID0gMjMwLAogICAgICAgIFNETEtfV09STERfNzEgPSAyMzEsCiAgICAgICAgU0RMS19XT1JMRF83 MiA9IDIzMiwKICAgICAgICBTRExLX1dPUkxEXzczID0gMjMzLAogICAgICAgIFNETEtfV09STERf NzQgPSAyMzQsCiAgICAgICAgU0RMS19XT1JMRF83NSA9IDIzNSwKICAgICAgICBTRExLX1dPUkxE Xzc2ID0gMjM2LAogICAgICAgIFNETEtfV09STERfNzcgPSAyMzcsCiAgICAgICAgU0RMS19XT1JM RF83OCA9IDIzOCwKICAgICAgICBTRExLX1dPUkxEXzc5ID0gMjM5LAogICAgICAgIFNETEtfV09S TERfODAgPSAyNDAsCiAgICAgICAgU0RMS19XT1JMRF84MSA9IDI0MSwKICAgICAgICBTRExLX1dP UkxEXzgyID0gMjQyLAogICAgICAgIFNETEtfV09STERfODMgPSAyNDMsCiAgICAgICAgU0RMS19X T1JMRF84NCA9IDI0NCwKICAgICAgICBTRExLX1dPUkxEXzg1ID0gMjQ1LAogICAgICAgIFNETEtf V09STERfODYgPSAyNDYsCiAgICAgICAgU0RMS19XT1JMRF84NyA9IDI0NywKICAgICAgICBTRExL X1dPUkxEXzg4ID0gMjQ4LAogICAgICAgIFNETEtfV09STERfODkgPSAyNDksCiAgICAgICAgU0RM S19XT1JMRF85MCA9IDI1MCwKICAgICAgICBTRExLX1dPUkxEXzkxID0gMjUxLAogICAgICAgIFNE TEtfV09STERfOTIgPSAyNTIsCiAgICAgICAgU0RMS19XT1JMRF85MyA9IDI1MywKICAgICAgICBT RExLX1dPUkxEXzk0ID0gMjU0LAogICAgICAgIFNETEtfV09STERfOTUgPSAyNTUsCgoKICAgICAg ICBTRExLX0tQMCA9IDI1NiwKICAgICAgICBTRExLX0tQMSA9IDI1NywKICAgICAgICBTRExLX0tQ MiA9IDI1OCwKICAgICAgICBTRExLX0tQMyA9IDI1OSwKICAgICAgICBTRExLX0tQNCA9IDI2MCwK ICAgICAgICBTRExLX0tQNSA9IDI2MSwKICAgICAgICBTRExLX0tQNiA9IDI2MiwKICAgICAgICBT RExLX0tQNyA9IDI2MywKICAgICAgICBTRExLX0tQOCA9IDI2NCwKICAgICAgICBTRExLX0tQOSA9 IDI2NSwKICAgICAgICBTRExLX0tQX1BFUklPRCA9IDI2NiwKICAgICAgICBTRExLX0tQX0RJVklE RSA9IDI2NywKICAgICAgICBTRExLX0tQX01VTFRJUExZID0gMjY4LAogICAgICAgIFNETEtfS1Bf TUlOVVMgPSAyNjksCiAgICAgICAgU0RMS19LUF9QTFVTID0gMjcwLAogICAgICAgIFNETEtfS1Bf RU5URVIgPSAyNzEsCiAgICAgICAgU0RMS19LUF9FUVVBTFMgPSAyNzIsCgoKICAgICAgICBTRExL X1VQID0gMjczLAogICAgICAgIFNETEtfRE9XTiA9IDI3NCwKICAgICAgICBTRExLX1JJR0hUID0g Mjc1LAogICAgICAgIFNETEtfTEVGVCA9IDI3NiwKICAgICAgICBTRExLX0lOU0VSVCA9IDI3NywK ICAgICAgICBTRExLX0hPTUUgPSAyNzgsCiAgICAgICAgU0RMS19FTkQgPSAyNzksCiAgICAgICAg U0RMS19QQUdFVVAgPSAyODAsCiAgICAgICAgU0RMS19QQUdFRE9XTiA9IDI4MSwKCgogICAgICAg IFNETEtfRjEgPSAyODIsCiAgICAgICAgU0RMS19GMiA9IDI4MywKICAgICAgICBTRExLX0YzID0g Mjg0LAogICAgICAgIFNETEtfRjQgPSAyODUsCiAgICAgICAgU0RMS19GNSA9IDI4NiwKICAgICAg ICBTRExLX0Y2ID0gMjg3LAogICAgICAgIFNETEtfRjcgPSAyODgsCiAgICAgICAgU0RMS19GOCA9 IDI4OSwKICAgICAgICBTRExLX0Y5ID0gMjkwLAogICAgICAgIFNETEtfRjEwID0gMjkxLAogICAg ICAgIFNETEtfRjExID0gMjkyLAogICAgICAgIFNETEtfRjEyID0gMjkzLAogICAgICAgIFNETEtf RjEzID0gMjk0LAogICAgICAgIFNETEtfRjE0ID0gMjk1LAogICAgICAgIFNETEtfRjE1ID0gMjk2 LAoKCiAgICAgICAgU0RMS19OVU1MT0NLID0gMzAwLAogICAgICAgIFNETEtfQ0FQU0xPQ0sgPSAz MDEsCiAgICAgICAgU0RMS19TQ1JPTExPQ0sgPSAzMDIsCiAgICAgICAgU0RMS19SU0hJRlQgPSAz MDMsCiAgICAgICAgU0RMS19MU0hJRlQgPSAzMDQsCiAgICAgICAgU0RMS19SQ1RSTCA9IDMwNSwK ICAgICAgICBTRExLX0xDVFJMID0gMzA2LAogICAgICAgIFNETEtfUkFMVCA9IDMwNywKICAgICAg ICBTRExLX0xBTFQgPSAzMDgsCiAgICAgICAgU0RMS19STUVUQSA9IDMwOSwKICAgICAgICBTRExL X0xNRVRBID0gMzEwLAogICAgICAgIFNETEtfTFNVUEVSID0gMzExLAogICAgICAgIFNETEtfUlNV UEVSID0gMzEyLAogICAgICAgIFNETEtfTU9ERSA9IDMxMywKICAgICAgICBTRExLX0NPTVBPU0Ug PSAzMTQsCgoKICAgICAgICBTRExLX0hFTFAgPSAzMTUsCiAgICAgICAgU0RMS19QUklOVCA9IDMx NiwKICAgICAgICBTRExLX1NZU1JFUSA9IDMxNywKICAgICAgICBTRExLX0JSRUFLID0gMzE4LAog ICAgICAgIFNETEtfTUVOVSA9IDMxOSwKICAgICAgICBTRExLX1BPV0VSID0gMzIwLAogICAgICAg IFNETEtfRVVSTyA9IDMyMSwKCgoKICAgICAgICBTRExLX0xBU1QKfSBTRExLZXk7CgoKdHlwZWRl ZiBlbnVtIHsKICAgICAgICBLTU9EX05PTkUgPSAweDAwMDAsCiAgICAgICAgS01PRF9MU0hJRlQ9 IDB4MDAwMSwKICAgICAgICBLTU9EX1JTSElGVD0gMHgwMDAyLAogICAgICAgIEtNT0RfTENUUkwg PSAweDAwNDAsCiAgICAgICAgS01PRF9SQ1RSTCA9IDB4MDA4MCwKICAgICAgICBLTU9EX0xBTFQg PSAweDAxMDAsCiAgICAgICAgS01PRF9SQUxUID0gMHgwMjAwLAogICAgICAgIEtNT0RfTE1FVEEg PSAweDA0MDAsCiAgICAgICAgS01PRF9STUVUQSA9IDB4MDgwMCwKICAgICAgICBLTU9EX05VTSA9 IDB4MTAwMCwKICAgICAgICBLTU9EX0NBUFMgPSAweDIwMDAsCiAgICAgICAgS01PRF9NT0RFID0g MHg0MDAwLAogICAgICAgIEtNT0RfUkVTRVJWRUQgPSAweDgwMDAKfSBTRExNb2Q7CiMgMzUgIi91 c3IvaW5jbHVkZS9TREwvU0RMX2tleWJvYXJkLmgiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9i ZWdpbl9jb2RlLmgiIDEKIyAzNyAiL3Vzci9pbmNsdWRlL1NETC9TRExfa2V5Ym9hcmQuaCIgMgoK CmV4dGVybiAiQyIgewojIDU4ICIvdXNyL2luY2x1ZGUvU0RML1NETF9rZXlib2FyZC5oIgp0eXBl ZGVmIHN0cnVjdCB7CiAgICAgICAgVWludDggc2NhbmNvZGU7CiAgICAgICAgU0RMS2V5IHN5bTsK ICAgICAgICBTRExNb2QgbW9kOwogICAgICAgIFVpbnQxNiB1bmljb2RlOwp9IFNETF9rZXlzeW07 CiMgNzcgIi91c3IvaW5jbHVkZS9TREwvU0RMX2tleWJvYXJkLmgiCmV4dGVybiBpbnQgU0RMX0Vu YWJsZVVOSUNPREUoaW50IGVuYWJsZSk7CiMgOTAgIi91c3IvaW5jbHVkZS9TREwvU0RMX2tleWJv YXJkLmgiCmV4dGVybiBpbnQgU0RMX0VuYWJsZUtleVJlcGVhdChpbnQgZGVsYXksIGludCBpbnRl cnZhbCk7CiMgOTkgIi91c3IvaW5jbHVkZS9TREwvU0RMX2tleWJvYXJkLmgiCmV4dGVybiBVaW50 OCAqIFNETF9HZXRLZXlTdGF0ZShpbnQgKm51bWtleXMpOwoKCgoKZXh0ZXJuIFNETE1vZCBTRExf R2V0TW9kU3RhdGUodm9pZCk7CgoKCgoKZXh0ZXJuIHZvaWQgU0RMX1NldE1vZFN0YXRlKFNETE1v ZCBtb2RzdGF0ZSk7CgoKCgpleHRlcm4gY2hhciAqIFNETF9HZXRLZXlOYW1lKFNETEtleSBrZXkp OwoKCgoKfQoKIyAxICIvdXNyL2luY2x1ZGUvU0RML2Nsb3NlX2NvZGUuaCIgMQojIDEyMyAiL3Vz ci9pbmNsdWRlL1NETC9TRExfa2V5Ym9hcmQuaCIgMgojIDM2ICIvdXNyL2luY2x1ZGUvU0RML1NE TF9ldmVudHMuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9TREwvU0RMX21vdXNlLmgiIDEKIyAzMyAi L3Vzci9pbmNsdWRlL1NETC9TRExfbW91c2UuaCIKIyAxICIvdXNyL2luY2x1ZGUvU0RML1NETF90 eXBlcy5oIiAxCiMgMzQgIi91c3IvaW5jbHVkZS9TREwvU0RMX21vdXNlLmgiIDIKIyAxICIvdXNy L2luY2x1ZGUvU0RML1NETF92aWRlby5oIiAxCiMgMzMgIi91c3IvaW5jbHVkZS9TREwvU0RMX3Zp ZGVvLmgiCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEv aW5jbHVkZS9zdGRpby5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRlL1NETC9TRExfdmlkZW8uaCIg MgoKIyAxICIvdXNyL2luY2x1ZGUvU0RML1NETF90eXBlcy5oIiAxCiMgMzYgIi91c3IvaW5jbHVk ZS9TREwvU0RMX3ZpZGVvLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvU0RML1NETF9tdXRleC5oIiAx CiMgMzYgIi91c3IvaW5jbHVkZS9TREwvU0RMX211dGV4LmgiCiMgMSAiL3Vzci9pbmNsdWRlL1NE TC9TRExfbWFpbi5oIiAxCiMgMzcgIi91c3IvaW5jbHVkZS9TREwvU0RMX211dGV4LmgiIDIKIyAx ICIvdXNyL2luY2x1ZGUvU0RML1NETF90eXBlcy5oIiAxCiMgMzggIi91c3IvaW5jbHVkZS9TREwv U0RMX211dGV4LmgiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9iZWdpbl9jb2RlLmgiIDEKIyA0 MCAiL3Vzci9pbmNsdWRlL1NETC9TRExfbXV0ZXguaCIgMgoKCmV4dGVybiAiQyIgewojIDU5ICIv dXNyL2luY2x1ZGUvU0RML1NETF9tdXRleC5oIgpzdHJ1Y3QgU0RMX211dGV4Owp0eXBlZGVmIHN0 cnVjdCBTRExfbXV0ZXggU0RMX211dGV4OwoKCmV4dGVybiBTRExfbXV0ZXggKiBTRExfQ3JlYXRl TXV0ZXgodm9pZCk7CgoKCmV4dGVybiBpbnQgU0RMX211dGV4UChTRExfbXV0ZXggKm11dGV4KTsK CgoKZXh0ZXJuIGludCBTRExfbXV0ZXhWKFNETF9tdXRleCAqbXV0ZXgpOwoKCmV4dGVybiB2b2lk IFNETF9EZXN0cm95TXV0ZXgoU0RMX211dGV4ICptdXRleCk7CgoKCgoKCgpzdHJ1Y3QgU0RMX3Nl bWFwaG9yZTsKdHlwZWRlZiBzdHJ1Y3QgU0RMX3NlbWFwaG9yZSBTRExfc2VtOwoKCmV4dGVybiBT RExfc2VtICogU0RMX0NyZWF0ZVNlbWFwaG9yZShVaW50MzIgaW5pdGlhbF92YWx1ZSk7CgoKZXh0 ZXJuIHZvaWQgU0RMX0Rlc3Ryb3lTZW1hcGhvcmUoU0RMX3NlbSAqc2VtKTsKCgoKCgpleHRlcm4g aW50IFNETF9TZW1XYWl0KFNETF9zZW0gKnNlbSk7CgoKCgpleHRlcm4gaW50IFNETF9TZW1UcnlX YWl0KFNETF9zZW0gKnNlbSk7CgoKCgoKCgpleHRlcm4gaW50IFNETF9TZW1XYWl0VGltZW91dChT RExfc2VtICpzZW0sIFVpbnQzMiBtcyk7CgoKCgpleHRlcm4gaW50IFNETF9TZW1Qb3N0KFNETF9z ZW0gKnNlbSk7CgoKZXh0ZXJuIFVpbnQzMiBTRExfU2VtVmFsdWUoU0RMX3NlbSAqc2VtKTsKCgoK CgoKCnN0cnVjdCBTRExfY29uZDsKdHlwZWRlZiBzdHJ1Y3QgU0RMX2NvbmQgU0RMX2NvbmQ7CgoK ZXh0ZXJuIFNETF9jb25kICogU0RMX0NyZWF0ZUNvbmQodm9pZCk7CgoKZXh0ZXJuIHZvaWQgU0RM X0Rlc3Ryb3lDb25kKFNETF9jb25kICpjb25kKTsKCgoKCmV4dGVybiBpbnQgU0RMX0NvbmRTaWdu YWwoU0RMX2NvbmQgKmNvbmQpOwoKCgoKZXh0ZXJuIGludCBTRExfQ29uZEJyb2FkY2FzdChTRExf Y29uZCAqY29uZCk7CgoKCgoKZXh0ZXJuIGludCBTRExfQ29uZFdhaXQoU0RMX2NvbmQgKmNvbmQs IFNETF9tdXRleCAqbXV0KTsKCgoKCgoKCmV4dGVybiBpbnQgU0RMX0NvbmRXYWl0VGltZW91dChT RExfY29uZCAqY29uZCwgU0RMX211dGV4ICptdXRleCwgVWludDMyIG1zKTsKCgoKfQoKIyAxICIv dXNyL2luY2x1ZGUvU0RML2Nsb3NlX2NvZGUuaCIgMQojIDE2MiAiL3Vzci9pbmNsdWRlL1NETC9T RExfbXV0ZXguaCIgMgojIDM3ICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5oIiAyCiMgMSAi L3Vzci9pbmNsdWRlL1NETC9TRExfcndvcHMuaCIgMQojIDM4ICIvdXNyL2luY2x1ZGUvU0RML1NE TF92aWRlby5oIiAyCgojIDEgIi91c3IvaW5jbHVkZS9TREwvYmVnaW5fY29kZS5oIiAxCiMgNDAg Ii91c3IvaW5jbHVkZS9TREwvU0RMX3ZpZGVvLmgiIDIKCgpleHRlcm4gIkMiIHsKCgoKCgoKCnR5 cGVkZWYgc3RydWN0IHsKICAgICAgICBTaW50MTYgeCwgeTsKICAgICAgICBVaW50MTYgdywgaDsK fSBTRExfUmVjdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBVaW50OCByOwogICAgICAgIFVp bnQ4IGc7CiAgICAgICAgVWludDggYjsKICAgICAgICBVaW50OCB1bnVzZWQ7Cn0gU0RMX0NvbG9y OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBuY29sb3JzOwogICAgICAgIFNETF9Db2xv ciAqY29sb3JzOwp9IFNETF9QYWxldHRlOwoKCnR5cGVkZWYgc3RydWN0IFNETF9QaXhlbEZvcm1h dCB7CiAgICAgICAgU0RMX1BhbGV0dGUgKnBhbGV0dGU7CiAgICAgICAgVWludDggQml0c1BlclBp eGVsOwogICAgICAgIFVpbnQ4IEJ5dGVzUGVyUGl4ZWw7CiAgICAgICAgVWludDggUmxvc3M7CiAg ICAgICAgVWludDggR2xvc3M7CiAgICAgICAgVWludDggQmxvc3M7CiAgICAgICAgVWludDggQWxv c3M7CiAgICAgICAgVWludDggUnNoaWZ0OwogICAgICAgIFVpbnQ4IEdzaGlmdDsKICAgICAgICBV aW50OCBCc2hpZnQ7CiAgICAgICAgVWludDggQXNoaWZ0OwogICAgICAgIFVpbnQzMiBSbWFzazsK ICAgICAgICBVaW50MzIgR21hc2s7CiAgICAgICAgVWludDMyIEJtYXNrOwogICAgICAgIFVpbnQz MiBBbWFzazsKCgogICAgICAgIFVpbnQzMiBjb2xvcmtleTsKCiAgICAgICAgVWludDggYWxwaGE7 Cn0gU0RMX1BpeGVsRm9ybWF0OwoKCnN0cnVjdCBTRExfU3VyZmFjZTsKdHlwZWRlZiBpbnQgKCpT RExfYmxpdCkoc3RydWN0IFNETF9TdXJmYWNlICpzcmMsIFNETF9SZWN0ICpzcmNyZWN0LAogICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgU0RMX1N1cmZhY2UgKmRzdCwgU0RMX1JlY3QgKmRz dHJlY3QpOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgU0RMX1N1cmZhY2UgewogICAgICAgIFVpbnQzMiBm bGFnczsKICAgICAgICBTRExfUGl4ZWxGb3JtYXQgKmZvcm1hdDsKICAgICAgICBpbnQgdywgaDsK ICAgICAgICBVaW50MTYgcGl0Y2g7CiAgICAgICAgdm9pZCAqcGl4ZWxzOwogICAgICAgIGludCBv ZmZzZXQ7CgoKICAgICAgICBzdHJ1Y3QgcHJpdmF0ZV9od2RhdGEgKmh3ZGF0YTsKCgogICAgICAg IFNETF9SZWN0IGNsaXBfcmVjdDsKICAgICAgICBVaW50MzIgdW51c2VkMTsKCgogICAgICAgIFVp bnQzMiBsb2NrZWQ7CgoKICAgICAgICBzdHJ1Y3QgU0RMX0JsaXRNYXAgKm1hcDsKCgogICAgICAg IHVuc2lnbmVkIGludCBmb3JtYXRfdmVyc2lvbjsKCgogICAgICAgIGludCByZWZjb3VudDsKfSBT RExfU3VyZmFjZTsKIyAxNTYgIi91c3IvaW5jbHVkZS9TREwvU0RMX3ZpZGVvLmgiCnR5cGVkZWYg c3RydWN0IHsKICAgICAgICBVaW50MzIgaHdfYXZhaWxhYmxlIDoxOwogICAgICAgIFVpbnQzMiB3 bV9hdmFpbGFibGUgOjE7CiAgICAgICAgVWludDMyIFVudXNlZEJpdHMxIDo2OwogICAgICAgIFVp bnQzMiBVbnVzZWRCaXRzMiA6MTsKICAgICAgICBVaW50MzIgYmxpdF9odyA6MTsKICAgICAgICBV aW50MzIgYmxpdF9od19DQyA6MTsKICAgICAgICBVaW50MzIgYmxpdF9od19BIDoxOwogICAgICAg IFVpbnQzMiBibGl0X3N3IDoxOwogICAgICAgIFVpbnQzMiBibGl0X3N3X0NDIDoxOwogICAgICAg IFVpbnQzMiBibGl0X3N3X0EgOjE7CiAgICAgICAgVWludDMyIGJsaXRfZmlsbCA6MTsKICAgICAg ICBVaW50MzIgVW51c2VkQml0czMgOjE2OwogICAgICAgIFVpbnQzMiB2aWRlb19tZW07CiAgICAg ICAgU0RMX1BpeGVsRm9ybWF0ICp2Zm10Owp9IFNETF9WaWRlb0luZm87CiMgMTg4ICIvdXNyL2lu Y2x1ZGUvU0RML1NETF92aWRlby5oIgp0eXBlZGVmIHN0cnVjdCBTRExfT3ZlcmxheSB7CiAgICAg ICAgVWludDMyIGZvcm1hdDsKICAgICAgICBpbnQgdywgaDsKICAgICAgICBpbnQgcGxhbmVzOwog ICAgICAgIFVpbnQxNiAqcGl0Y2hlczsKICAgICAgICBVaW50OCAqKnBpeGVsczsKCgogICAgICAg IHN0cnVjdCBwcml2YXRlX3l1dmh3ZnVuY3MgKmh3ZnVuY3M7CiAgICAgICAgc3RydWN0IHByaXZh dGVfeXV2aHdkYXRhICpod2RhdGE7CgoKICAgICAgICBVaW50MzIgaHdfb3ZlcmxheSA6MTsKICAg ICAgICBVaW50MzIgVW51c2VkQml0cyA6MzE7Cn0gU0RMX092ZXJsYXk7CgoKCnR5cGVkZWYgZW51 bSB7CiAgICBTRExfR0xfUkVEX1NJWkUsCiAgICBTRExfR0xfR1JFRU5fU0laRSwKICAgIFNETF9H TF9CTFVFX1NJWkUsCiAgICBTRExfR0xfQUxQSEFfU0laRSwKICAgIFNETF9HTF9CVUZGRVJfU0la RSwKICAgIFNETF9HTF9ET1VCTEVCVUZGRVIsCiAgICBTRExfR0xfREVQVEhfU0laRSwKICAgIFNE TF9HTF9TVEVOQ0lMX1NJWkUsCiAgICBTRExfR0xfQUNDVU1fUkVEX1NJWkUsCiAgICBTRExfR0xf QUNDVU1fR1JFRU5fU0laRSwKICAgIFNETF9HTF9BQ0NVTV9CTFVFX1NJWkUsCiAgICBTRExfR0xf QUNDVU1fQUxQSEFfU0laRQp9IFNETF9HTGF0dHI7CiMgMjQwICIvdXNyL2luY2x1ZGUvU0RML1NE TF92aWRlby5oIgpleHRlcm4gaW50IFNETF9WaWRlb0luaXQoY29uc3QgY2hhciAqZHJpdmVyX25h bWUsIFVpbnQzMiBmbGFncyk7CmV4dGVybiB2b2lkIFNETF9WaWRlb1F1aXQodm9pZCk7CgoKCgoK ZXh0ZXJuIGNoYXIgKlNETF9WaWRlb0RyaXZlck5hbWUoY2hhciAqbmFtZWJ1ZiwgaW50IG1heGxl bik7CgoKCgoKCgpleHRlcm4gU0RMX1N1cmZhY2UgKiBTRExfR2V0VmlkZW9TdXJmYWNlKHZvaWQp OwoKCgoKCgoKZXh0ZXJuIGNvbnN0IFNETF9WaWRlb0luZm8gKiBTRExfR2V0VmlkZW9JbmZvKHZv aWQpOwojIDI3NiAiL3Vzci9pbmNsdWRlL1NETC9TRExfdmlkZW8uaCIKZXh0ZXJuIGludCBTRExf VmlkZW9Nb2RlT0soaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgYnBwLCBVaW50MzIgZmxhZ3Mp OwojIDI4NyAiL3Vzci9pbmNsdWRlL1NETC9TRExfdmlkZW8uaCIKZXh0ZXJuIFNETF9SZWN0ICoq IFNETF9MaXN0TW9kZXMoU0RMX1BpeGVsRm9ybWF0ICpmb3JtYXQsIFVpbnQzMiBmbGFncyk7CiMg MzQ3ICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5oIgpleHRlcm4gU0RMX1N1cmZhY2UgKlNE TF9TZXRWaWRlb01vZGUKICAgICAgICAgICAgICAgICAgICAgICAgKGludCB3aWR0aCwgaW50IGhl aWdodCwgaW50IGJwcCwgVWludDMyIGZsYWdzKTsKCgoKCgoKCmV4dGVybiB2b2lkIFNETF9VcGRh dGVSZWN0cwogICAgICAgICAgICAgICAgKFNETF9TdXJmYWNlICpzY3JlZW4sIGludCBudW1yZWN0 cywgU0RMX1JlY3QgKnJlY3RzKTsKZXh0ZXJuIHZvaWQgU0RMX1VwZGF0ZVJlY3QKICAgICAgICAg ICAgICAgIChTRExfU3VyZmFjZSAqc2NyZWVuLCBTaW50MzIgeCwgU2ludDMyIHksIFVpbnQzMiB3 LCBVaW50MzIgaCk7CiMgMzcxICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5oIgpleHRlcm4g aW50IFNETF9GbGlwKFNETF9TdXJmYWNlICpzY3JlZW4pOwojIDM4MSAiL3Vzci9pbmNsdWRlL1NE TC9TRExfdmlkZW8uaCIKZXh0ZXJuIGludCBTRExfU2V0R2FtbWEoZmxvYXQgcmVkLCBmbG9hdCBn cmVlbiwgZmxvYXQgYmx1ZSk7CiMgMzk1ICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5oIgpl eHRlcm4gaW50IFNETF9TZXRHYW1tYVJhbXAoVWludDE2ICpyZWQsIFVpbnQxNiAqZ3JlZW4sIFVp bnQxNiAqYmx1ZSk7CiMgNDA2ICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5oIgpleHRlcm4g aW50IFNETF9HZXRHYW1tYVJhbXAoVWludDE2ICpyZWQsIFVpbnQxNiAqZ3JlZW4sIFVpbnQxNiAq Ymx1ZSk7CiMgNDIzICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5oIgpleHRlcm4gaW50IFNE TF9TZXRDb2xvcnMoU0RMX1N1cmZhY2UgKnN1cmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAg IFNETF9Db2xvciAqY29sb3JzLCBpbnQgZmlyc3Rjb2xvciwgaW50IG5jb2xvcnMpOwojIDQ0MiAi L3Vzci9pbmNsdWRlL1NETC9TRExfdmlkZW8uaCIKZXh0ZXJuIGludCBTRExfU2V0UGFsZXR0ZShT RExfU3VyZmFjZSAqc3VyZmFjZSwgaW50IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFNETF9Db2xvciAqY29sb3JzLCBpbnQgZmlyc3Rjb2xvciwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmNvbG9ycyk7CgoKCgpleHRlcm4gVWludDMyIFNE TF9NYXBSR0IKICAgICAgICAgICAgICAgICAgICAgICAgKFNETF9QaXhlbEZvcm1hdCAqZm9ybWF0 LCBVaW50OCByLCBVaW50OCBnLCBVaW50OCBiKTsKCgoKCmV4dGVybiBVaW50MzIgU0RMX01hcFJH QkEoU0RMX1BpeGVsRm9ybWF0ICpmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVWludDggciwgVWludDggZywgVWludDggYiwgVWludDggYSk7CgoKCgpleHRlcm4gdm9p ZCBTRExfR2V0UkdCKFVpbnQzMiBwaXhlbCwgU0RMX1BpeGVsRm9ybWF0ICpmbXQsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVWludDggKnIsIFVpbnQ4ICpnLCBVaW50OCAqYik7CgoK CgpleHRlcm4gdm9pZCBTRExfR2V0UkdCQShVaW50MzIgcGl4ZWwsIFNETF9QaXhlbEZvcm1hdCAq Zm10LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVaW50OCAqciwgVWludDggKmcs IFVpbnQ4ICpiLCBVaW50OCAqYSk7CiMgNTA1ICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5o IgpleHRlcm4gU0RMX1N1cmZhY2UgKlNETF9DcmVhdGVSR0JTdXJmYWNlCiAgICAgICAgICAgICAg ICAgICAgICAgIChVaW50MzIgZmxhZ3MsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGRlcHRo LAogICAgICAgICAgICAgICAgICAgICAgICBVaW50MzIgUm1hc2ssIFVpbnQzMiBHbWFzaywgVWlu dDMyIEJtYXNrLCBVaW50MzIgQW1hc2spOwpleHRlcm4gU0RMX1N1cmZhY2UgKlNETF9DcmVhdGVS R0JTdXJmYWNlRnJvbSh2b2lkICpwaXhlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGludCB3 aWR0aCwgaW50IGhlaWdodCwgaW50IGRlcHRoLCBpbnQgcGl0Y2gsCiAgICAgICAgICAgICAgICAg ICAgICAgIFVpbnQzMiBSbWFzaywgVWludDMyIEdtYXNrLCBVaW50MzIgQm1hc2ssIFVpbnQzMiBB bWFzayk7CmV4dGVybiB2b2lkIFNETF9GcmVlU3VyZmFjZShTRExfU3VyZmFjZSAqc3VyZmFjZSk7 CiMgNTMxICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5oIgpleHRlcm4gaW50IFNETF9Mb2Nr U3VyZmFjZShTRExfU3VyZmFjZSAqc3VyZmFjZSk7CmV4dGVybiB2b2lkIFNETF9VbmxvY2tTdXJm YWNlKFNETF9TdXJmYWNlICpzdXJmYWNlKTsKCgoKCgoKCmV4dGVybiBTRExfU3VyZmFjZSAqIFNE TF9Mb2FkQk1QX1JXKFNETF9SV29wcyAqc3JjLCBpbnQgZnJlZXNyYyk7CiMgNTUwICIvdXNyL2lu Y2x1ZGUvU0RML1NETF92aWRlby5oIgpleHRlcm4gaW50IFNETF9TYXZlQk1QX1JXCiAgICAgICAg ICAgICAgICAoU0RMX1N1cmZhY2UgKnN1cmZhY2UsIFNETF9SV29wcyAqZHN0LCBpbnQgZnJlZWRz dCk7CiMgNTY2ICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5oIgpleHRlcm4gaW50IFNETF9T ZXRDb2xvcktleQogICAgICAgICAgICAgICAgICAgICAgICAoU0RMX1N1cmZhY2UgKnN1cmZhY2Us IFVpbnQzMiBmbGFnLCBVaW50MzIga2V5KTsKIyA1ODIgIi91c3IvaW5jbHVkZS9TREwvU0RMX3Zp ZGVvLmgiCmV4dGVybiBpbnQgU0RMX1NldEFscGhhKFNETF9TdXJmYWNlICpzdXJmYWNlLCBVaW50 MzIgZmxhZywgVWludDggYWxwaGEpOwojIDU5NiAiL3Vzci9pbmNsdWRlL1NETC9TRExfdmlkZW8u aCIKZXh0ZXJuIFNETF9ib29sIFNETF9TZXRDbGlwUmVjdChTRExfU3VyZmFjZSAqc3VyZmFjZSwg U0RMX1JlY3QgKnJlY3QpOwoKCgoKCgpleHRlcm4gdm9pZCBTRExfR2V0Q2xpcFJlY3QoU0RMX1N1 cmZhY2UgKnN1cmZhY2UsIFNETF9SZWN0ICpyZWN0KTsKIyA2MTcgIi91c3IvaW5jbHVkZS9TREwv U0RMX3ZpZGVvLmgiCmV4dGVybiBTRExfU3VyZmFjZSAqU0RMX0NvbnZlcnRTdXJmYWNlCiAgICAg ICAgICAgICAgICAgICAgICAgIChTRExfU3VyZmFjZSAqc3JjLCBTRExfUGl4ZWxGb3JtYXQgKmZt dCwgVWludDMyIGZsYWdzKTsKIyA2OTQgIi91c3IvaW5jbHVkZS9TREwvU0RMX3ZpZGVvLmgiCmV4 dGVybiBpbnQgU0RMX1VwcGVyQmxpdAogICAgICAgICAgICAgICAgICAgICAgICAoU0RMX1N1cmZh Y2UgKnNyYywgU0RMX1JlY3QgKnNyY3JlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBTRExf U3VyZmFjZSAqZHN0LCBTRExfUmVjdCAqZHN0cmVjdCk7CgoKCmV4dGVybiBpbnQgU0RMX0xvd2Vy QmxpdAogICAgICAgICAgICAgICAgICAgICAgICAoU0RMX1N1cmZhY2UgKnNyYywgU0RMX1JlY3Qg KnNyY3JlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBTRExfU3VyZmFjZSAqZHN0LCBTRExf UmVjdCAqZHN0cmVjdCk7CiMgNzEzICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5oIgpleHRl cm4gaW50IFNETF9GaWxsUmVjdAogICAgICAgICAgICAgICAgKFNETF9TdXJmYWNlICpkc3QsIFNE TF9SZWN0ICpkc3RyZWN0LCBVaW50MzIgY29sb3IpOwojIDcyNyAiL3Vzci9pbmNsdWRlL1NETC9T RExfdmlkZW8uaCIKZXh0ZXJuIFNETF9TdXJmYWNlICogU0RMX0Rpc3BsYXlGb3JtYXQoU0RMX1N1 cmZhY2UgKnN1cmZhY2UpOwojIDc0MSAiL3Vzci9pbmNsdWRlL1NETC9TRExfdmlkZW8uaCIKZXh0 ZXJuIFNETF9TdXJmYWNlICogU0RMX0Rpc3BsYXlGb3JtYXRBbHBoYShTRExfU3VyZmFjZSAqc3Vy ZmFjZSk7CiMgNzUzICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5oIgpleHRlcm4gU0RMX092 ZXJsYXkgKlNETF9DcmVhdGVZVVZPdmVybGF5KGludCB3aWR0aCwgaW50IGhlaWdodCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBVaW50MzIgZm9ybWF0LCBTRExfU3VyZmFjZSAqZGlz cGxheSk7CgoKZXh0ZXJuIGludCBTRExfTG9ja1lVVk92ZXJsYXkoU0RMX092ZXJsYXkgKm92ZXJs YXkpOwpleHRlcm4gdm9pZCBTRExfVW5sb2NrWVVWT3ZlcmxheShTRExfT3ZlcmxheSAqb3Zlcmxh eSk7CgoKCgoKCgpleHRlcm4gaW50IFNETF9EaXNwbGF5WVVWT3ZlcmxheShTRExfT3ZlcmxheSAq b3ZlcmxheSwgU0RMX1JlY3QgKmRzdHJlY3QpOwoKCmV4dGVybiB2b2lkIFNETF9GcmVlWVVWT3Zl cmxheShTRExfT3ZlcmxheSAqb3ZlcmxheSk7CiMgNzg2ICIvdXNyL2luY2x1ZGUvU0RML1NETF92 aWRlby5oIgpleHRlcm4gaW50IFNETF9HTF9Mb2FkTGlicmFyeShjb25zdCBjaGFyICpwYXRoKTsK CgoKCmV4dGVybiB2b2lkICpTRExfR0xfR2V0UHJvY0FkZHJlc3MoY29uc3QgY2hhciogcHJvYyk7 CgoKCgpleHRlcm4gaW50IFNETF9HTF9TZXRBdHRyaWJ1dGUoU0RMX0dMYXR0ciBhdHRyLCBpbnQg dmFsdWUpOwojIDgwNyAiL3Vzci9pbmNsdWRlL1NETC9TRExfdmlkZW8uaCIKZXh0ZXJuIGludCBT RExfR0xfR2V0QXR0cmlidXRlKFNETF9HTGF0dHIgYXR0ciwgaW50KiB2YWx1ZSk7CgoKCgpleHRl cm4gdm9pZCBTRExfR0xfU3dhcEJ1ZmZlcnModm9pZCk7CgoKCgoKZXh0ZXJuIHZvaWQgU0RMX0dM X1VwZGF0ZVJlY3RzKGludCBudW1yZWN0cywgU0RMX1JlY3QqIHJlY3RzKTsKZXh0ZXJuIHZvaWQg U0RMX0dMX0xvY2sodm9pZCk7CmV4dGVybiB2b2lkIFNETF9HTF9VbmxvY2sodm9pZCk7CiMgODI5 ICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5oIgpleHRlcm4gdm9pZCBTRExfV01fU2V0Q2Fw dGlvbihjb25zdCBjaGFyICp0aXRsZSwgY29uc3QgY2hhciAqaWNvbik7CmV4dGVybiB2b2lkIFNE TF9XTV9HZXRDYXB0aW9uKGNoYXIgKip0aXRsZSwgY2hhciAqKmljb24pOwoKCgoKCgoKZXh0ZXJu IHZvaWQgU0RMX1dNX1NldEljb24oU0RMX1N1cmZhY2UgKmljb24sIFVpbnQ4ICptYXNrKTsKCgoK CgoKZXh0ZXJuIGludCBTRExfV01fSWNvbmlmeVdpbmRvdyh2b2lkKTsKIyA4NjIgIi91c3IvaW5j bHVkZS9TREwvU0RMX3ZpZGVvLmgiCmV4dGVybiBpbnQgU0RMX1dNX1RvZ2dsZUZ1bGxTY3JlZW4o U0RMX1N1cmZhY2UgKnN1cmZhY2UpOwoKCgoKCnR5cGVkZWYgZW51bSB7CiAgICAgICAgU0RMX0dS QUJfUVVFUlkgPSAtMSwKICAgICAgICBTRExfR1JBQl9PRkYgPSAwLAogICAgICAgIFNETF9HUkFC X09OID0gMSwKICAgICAgICBTRExfR1JBQl9GVUxMU0NSRUVOCn0gU0RMX0dyYWJNb2RlOwoKCgoK CmV4dGVybiBTRExfR3JhYk1vZGUgU0RMX1dNX0dyYWJJbnB1dChTRExfR3JhYk1vZGUgbW9kZSk7 CgoKCn0KCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9jbG9zZV9jb2RlLmgiIDEKIyA4ODYgIi91c3Iv aW5jbHVkZS9TREwvU0RMX3ZpZGVvLmgiIDIKIyAzNSAiL3Vzci9pbmNsdWRlL1NETC9TRExfbW91 c2UuaCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvU0RML2JlZ2luX2NvZGUuaCIgMQojIDM3ICIvdXNy L2luY2x1ZGUvU0RML1NETF9tb3VzZS5oIiAyCgoKZXh0ZXJuICJDIiB7CgoKdHlwZWRlZiBzdHJ1 Y3QgV01jdXJzb3IgV01jdXJzb3I7CnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBTRExfUmVjdCBh cmVhOwogICAgICAgIFNpbnQxNiBob3RfeCwgaG90X3k7CiAgICAgICAgVWludDggKmRhdGE7CiAg ICAgICAgVWludDggKm1hc2s7CiAgICAgICAgVWludDggKnNhdmVbMl07CiAgICAgICAgV01jdXJz b3IgKndtX2N1cnNvcjsKfSBTRExfQ3Vyc29yOwojIDU5ICIvdXNyL2luY2x1ZGUvU0RML1NETF9t b3VzZS5oIgpleHRlcm4gVWludDggU0RMX0dldE1vdXNlU3RhdGUoaW50ICp4LCBpbnQgKnkpOwoK CgoKCgoKZXh0ZXJuIFVpbnQ4IFNETF9HZXRSZWxhdGl2ZU1vdXNlU3RhdGUoaW50ICp4LCBpbnQg KnkpOwoKCgoKZXh0ZXJuIHZvaWQgU0RMX1dhcnBNb3VzZShVaW50MTYgeCwgVWludDE2IHkpOwoj IDg3ICIvdXNyL2luY2x1ZGUvU0RML1NETF9tb3VzZS5oIgpleHRlcm4gU0RMX0N1cnNvciAqU0RM X0NyZWF0ZUN1cnNvcgogICAgICAgICAgICAgICAgKFVpbnQ4ICpkYXRhLCBVaW50OCAqbWFzaywg aW50IHcsIGludCBoLCBpbnQgaG90X3gsIGludCBob3RfeSk7CgoKCgoKCmV4dGVybiB2b2lkIFNE TF9TZXRDdXJzb3IoU0RMX0N1cnNvciAqY3Vyc29yKTsKCgoKCmV4dGVybiBTRExfQ3Vyc29yICog U0RMX0dldEN1cnNvcih2b2lkKTsKCgoKCmV4dGVybiB2b2lkIFNETF9GcmVlQ3Vyc29yKFNETF9D dXJzb3IgKmN1cnNvcik7CiMgMTE0ICIvdXNyL2luY2x1ZGUvU0RML1NETF9tb3VzZS5oIgpleHRl cm4gaW50IFNETF9TaG93Q3Vyc29yKGludCB0b2dnbGUpOwojIDEzMiAiL3Vzci9pbmNsdWRlL1NE TC9TRExfbW91c2UuaCIKfQoKIyAxICIvdXNyL2luY2x1ZGUvU0RML2Nsb3NlX2NvZGUuaCIgMQoj IDEzNSAiL3Vzci9pbmNsdWRlL1NETC9TRExfbW91c2UuaCIgMgojIDM3ICIvdXNyL2luY2x1ZGUv U0RML1NETF9ldmVudHMuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9TREwvU0RMX2pveXN0aWNrLmgi IDEKIyAzOCAiL3Vzci9pbmNsdWRlL1NETC9TRExfZXZlbnRzLmgiIDIKIyAxICIvdXNyL2luY2x1 ZGUvU0RML1NETF9xdWl0LmgiIDEKIyAzOSAiL3Vzci9pbmNsdWRlL1NETC9TRExfZXZlbnRzLmgi IDIKCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9iZWdpbl9jb2RlLmgiIDEKIyA0MSAiL3Vzci9pbmNs dWRlL1NETC9TRExfZXZlbnRzLmgiIDIKCgpleHRlcm4gIkMiIHsKCgoKZW51bSB7IFNETF9OT0VW RU5UID0gMCwKICAgICAgIFNETF9BQ1RJVkVFVkVOVCwKICAgICAgIFNETF9LRVlET1dOLAogICAg ICAgU0RMX0tFWVVQLAogICAgICAgU0RMX01PVVNFTU9USU9OLAogICAgICAgU0RMX01PVVNFQlVU VE9ORE9XTiwKICAgICAgIFNETF9NT1VTRUJVVFRPTlVQLAogICAgICAgU0RMX0pPWUFYSVNNT1RJ T04sCiAgICAgICBTRExfSk9ZQkFMTE1PVElPTiwKICAgICAgIFNETF9KT1lIQVRNT1RJT04sCiAg ICAgICBTRExfSk9ZQlVUVE9ORE9XTiwKICAgICAgIFNETF9KT1lCVVRUT05VUCwKICAgICAgIFNE TF9RVUlULAogICAgICAgU0RMX1NZU1dNRVZFTlQsCiAgICAgICBTRExfRVZFTlRfUkVTRVJWRURB LAogICAgICAgU0RMX0VWRU5UX1JFU0VSVkVEQiwKICAgICAgIFNETF9WSURFT1JFU0laRSwKICAg ICAgIFNETF9WSURFT0VYUE9TRSwKICAgICAgIFNETF9FVkVOVF9SRVNFUlZFRDIsCiAgICAgICBT RExfRVZFTlRfUkVTRVJWRUQzLAogICAgICAgU0RMX0VWRU5UX1JFU0VSVkVENCwKICAgICAgIFNE TF9FVkVOVF9SRVNFUlZFRDUsCiAgICAgICBTRExfRVZFTlRfUkVTRVJWRUQ2LAogICAgICAgU0RM X0VWRU5UX1JFU0VSVkVENywKCiAgICAgICBTRExfVVNFUkVWRU5UID0gMjQsCgoKCiAgICAgICBT RExfTlVNRVZFTlRTID0gMzIKfTsKCgoKZW51bSB7CiAgICAgICAgU0RMX0FDVElWRUVWRU5UTUFT SyA9ICgxPDwoU0RMX0FDVElWRUVWRU5UKSksCiAgICAgICAgU0RMX0tFWURPV05NQVNLID0gKDE8 PChTRExfS0VZRE9XTikpLAogICAgICAgIFNETF9LRVlVUE1BU0sgPSAoMTw8KFNETF9LRVlVUCkp LAogICAgICAgIFNETF9NT1VTRU1PVElPTk1BU0sgPSAoMTw8KFNETF9NT1VTRU1PVElPTikpLAog ICAgICAgIFNETF9NT1VTRUJVVFRPTkRPV05NQVNLID0gKDE8PChTRExfTU9VU0VCVVRUT05ET1dO KSksCiAgICAgICAgU0RMX01PVVNFQlVUVE9OVVBNQVNLID0gKDE8PChTRExfTU9VU0VCVVRUT05V UCkpLAogICAgICAgIFNETF9NT1VTRUVWRU5UTUFTSyA9ICgxPDwoU0RMX01PVVNFTU9USU9OKSl8 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTw8KFNETF9NT1VTRUJVVFRPTkRP V04pKXwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxPDwoU0RMX01PVVNFQlVU VE9OVVApKSwKICAgICAgICBTRExfSk9ZQVhJU01PVElPTk1BU0sgPSAoMTw8KFNETF9KT1lBWElT TU9USU9OKSksCiAgICAgICAgU0RMX0pPWUJBTExNT1RJT05NQVNLID0gKDE8PChTRExfSk9ZQkFM TE1PVElPTikpLAogICAgICAgIFNETF9KT1lIQVRNT1RJT05NQVNLID0gKDE8PChTRExfSk9ZSEFU TU9USU9OKSksCiAgICAgICAgU0RMX0pPWUJVVFRPTkRPV05NQVNLID0gKDE8PChTRExfSk9ZQlVU VE9ORE9XTikpLAogICAgICAgIFNETF9KT1lCVVRUT05VUE1BU0sgPSAoMTw8KFNETF9KT1lCVVRU T05VUCkpLAogICAgICAgIFNETF9KT1lFVkVOVE1BU0sgPSAoMTw8KFNETF9KT1lBWElTTU9USU9O KSl8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTw8KFNETF9KT1lCQUxMTU9U SU9OKSl8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTw8KFNETF9KT1lIQVRN T1RJT04pKXwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxPDwoU0RMX0pPWUJV VFRPTkRPV04pKXwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxPDwoU0RMX0pP WUJVVFRPTlVQKSksCiAgICAgICAgU0RMX1ZJREVPUkVTSVpFTUFTSyA9ICgxPDwoU0RMX1ZJREVP UkVTSVpFKSksCiAgICAgICAgU0RMX1ZJREVPRVhQT1NFTUFTSyA9ICgxPDwoU0RMX1ZJREVPRVhQ T1NFKSksCiAgICAgICAgU0RMX1FVSVRNQVNLID0gKDE8PChTRExfUVVJVCkpLAogICAgICAgIFNE TF9TWVNXTUVWRU5UTUFTSyA9ICgxPDwoU0RMX1NZU1dNRVZFTlQpKQp9OwoKCgp0eXBlZGVmIHN0 cnVjdCB7CiAgICAgICAgVWludDggdHlwZTsKICAgICAgICBVaW50OCBnYWluOwogICAgICAgIFVp bnQ4IHN0YXRlOwp9IFNETF9BY3RpdmVFdmVudDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAg VWludDggdHlwZTsKICAgICAgICBVaW50OCB3aGljaDsKICAgICAgICBVaW50OCBzdGF0ZTsKICAg ICAgICBTRExfa2V5c3ltIGtleXN5bTsKfSBTRExfS2V5Ym9hcmRFdmVudDsKCgp0eXBlZGVmIHN0 cnVjdCB7CiAgICAgICAgVWludDggdHlwZTsKICAgICAgICBVaW50OCB3aGljaDsKICAgICAgICBV aW50OCBzdGF0ZTsKICAgICAgICBVaW50MTYgeCwgeTsKICAgICAgICBTaW50MTYgeHJlbDsKICAg ICAgICBTaW50MTYgeXJlbDsKfSBTRExfTW91c2VNb3Rpb25FdmVudDsKCgp0eXBlZGVmIHN0cnVj dCB7CiAgICAgICAgVWludDggdHlwZTsKICAgICAgICBVaW50OCB3aGljaDsKICAgICAgICBVaW50 OCBidXR0b247CiAgICAgICAgVWludDggc3RhdGU7CiAgICAgICAgVWludDE2IHgsIHk7Cn0gU0RM X01vdXNlQnV0dG9uRXZlbnQ7CgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIFVpbnQ4IHR5cGU7 CiAgICAgICAgVWludDggd2hpY2g7CiAgICAgICAgVWludDggYXhpczsKICAgICAgICBTaW50MTYg dmFsdWU7Cn0gU0RMX0pveUF4aXNFdmVudDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgVWlu dDggdHlwZTsKICAgICAgICBVaW50OCB3aGljaDsKICAgICAgICBVaW50OCBiYWxsOwogICAgICAg IFNpbnQxNiB4cmVsOwogICAgICAgIFNpbnQxNiB5cmVsOwp9IFNETF9Kb3lCYWxsRXZlbnQ7CgoK dHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIFVpbnQ4IHR5cGU7CiAgICAgICAgVWludDggd2hpY2g7 CiAgICAgICAgVWludDggaGF0OwogICAgICAgIFVpbnQ4IHZhbHVlOwoKCgoKCn0gU0RMX0pveUhh dEV2ZW50OwoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBVaW50OCB0eXBlOwogICAgICAgIFVp bnQ4IHdoaWNoOwogICAgICAgIFVpbnQ4IGJ1dHRvbjsKICAgICAgICBVaW50OCBzdGF0ZTsKfSBT RExfSm95QnV0dG9uRXZlbnQ7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIFVpbnQ4IHR5 cGU7CiAgICAgICAgaW50IHc7CiAgICAgICAgaW50IGg7Cn0gU0RMX1Jlc2l6ZUV2ZW50OwoKCnR5 cGVkZWYgc3RydWN0IHsKICAgICAgICBVaW50OCB0eXBlOwp9IFNETF9FeHBvc2VFdmVudDsKCgp0 eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgVWludDggdHlwZTsKfSBTRExfUXVpdEV2ZW50OwoKCnR5 cGVkZWYgc3RydWN0IHsKICAgICAgICBVaW50OCB0eXBlOwogICAgICAgIGludCBjb2RlOwogICAg ICAgIHZvaWQgKmRhdGExOwogICAgICAgIHZvaWQgKmRhdGEyOwp9IFNETF9Vc2VyRXZlbnQ7CgoK c3RydWN0IFNETF9TeXNXTW1zZzsKdHlwZWRlZiBzdHJ1Y3QgU0RMX1N5c1dNbXNnIFNETF9TeXNX TW1zZzsKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIFVpbnQ4IHR5cGU7CiAgICAgICAgU0RMX1N5 c1dNbXNnICptc2c7Cn0gU0RMX1N5c1dNRXZlbnQ7CgoKdHlwZWRlZiB1bmlvbiB7CiAgICAgICAg VWludDggdHlwZTsKICAgICAgICBTRExfQWN0aXZlRXZlbnQgYWN0aXZlOwogICAgICAgIFNETF9L ZXlib2FyZEV2ZW50IGtleTsKICAgICAgICBTRExfTW91c2VNb3Rpb25FdmVudCBtb3Rpb247CiAg ICAgICAgU0RMX01vdXNlQnV0dG9uRXZlbnQgYnV0dG9uOwogICAgICAgIFNETF9Kb3lBeGlzRXZl bnQgamF4aXM7CiAgICAgICAgU0RMX0pveUJhbGxFdmVudCBqYmFsbDsKICAgICAgICBTRExfSm95 SGF0RXZlbnQgamhhdDsKICAgICAgICBTRExfSm95QnV0dG9uRXZlbnQgamJ1dHRvbjsKICAgICAg ICBTRExfUmVzaXplRXZlbnQgcmVzaXplOwogICAgICAgIFNETF9FeHBvc2VFdmVudCBleHBvc2U7 CiAgICAgICAgU0RMX1F1aXRFdmVudCBxdWl0OwogICAgICAgIFNETF9Vc2VyRXZlbnQgdXNlcjsK ICAgICAgICBTRExfU3lzV01FdmVudCBzeXN3bTsKfSBTRExfRXZlbnQ7CiMgMjQxICIvdXNyL2lu Y2x1ZGUvU0RML1NETF9ldmVudHMuaCIKZXh0ZXJuIHZvaWQgU0RMX1B1bXBFdmVudHModm9pZCk7 CiMgMjU1ICIvdXNyL2luY2x1ZGUvU0RML1NETF9ldmVudHMuaCIKdHlwZWRlZiBlbnVtIHsKICAg ICAgICBTRExfQURERVZFTlQsCiAgICAgICAgU0RMX1BFRUtFVkVOVCwKICAgICAgICBTRExfR0VU RVZFTlQKfSBTRExfZXZlbnRhY3Rpb247CgpleHRlcm4gaW50IFNETF9QZWVwRXZlbnRzKFNETF9F dmVudCAqZXZlbnRzLCBpbnQgbnVtZXZlbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFNETF9ldmVudGFjdGlvbiBhY3Rpb24sIFVpbnQzMiBtYXNrKTsKCgoKCgpleHRlcm4gaW50 IFNETF9Qb2xsRXZlbnQoU0RMX0V2ZW50ICpldmVudCk7CgoKCgoKZXh0ZXJuIGludCBTRExfV2Fp dEV2ZW50KFNETF9FdmVudCAqZXZlbnQpOwoKCgoKCmV4dGVybiBpbnQgU0RMX1B1c2hFdmVudChT RExfRXZlbnQgKmV2ZW50KTsKCgoKCgoKCnR5cGVkZWYgaW50ICgqU0RMX0V2ZW50RmlsdGVyKShj b25zdCBTRExfRXZlbnQgKmV2ZW50KTsKIyAzMDUgIi91c3IvaW5jbHVkZS9TREwvU0RMX2V2ZW50 cy5oIgpleHRlcm4gdm9pZCBTRExfU2V0RXZlbnRGaWx0ZXIoU0RMX0V2ZW50RmlsdGVyIGZpbHRl cik7CgoKCgoKZXh0ZXJuIFNETF9FdmVudEZpbHRlciBTRExfR2V0RXZlbnRGaWx0ZXIodm9pZCk7 CiMgMzI1ICIvdXNyL2luY2x1ZGUvU0RML1NETF9ldmVudHMuaCIKZXh0ZXJuIFVpbnQ4IFNETF9F dmVudFN0YXRlKFVpbnQ4IHR5cGUsIGludCBzdGF0ZSk7CgoKCgp9CgojIDEgIi91c3IvaW5jbHVk ZS9TREwvY2xvc2VfY29kZS5oIiAxCiMgMzMzICIvdXNyL2luY2x1ZGUvU0RML1NETF9ldmVudHMu aCIgMgojIDQzICIvdXNyL2luY2x1ZGUvU0RML1NETC5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL1NE TC9TRExfdmlkZW8uaCIgMQojIDQ0ICIvdXNyL2luY2x1ZGUvU0RML1NETC5oIiAyCiMgMSAiL3Vz ci9pbmNsdWRlL1NETC9TRExfYnl0ZW9yZGVyLmgiIDEKIyA0NSAiL3Vzci9pbmNsdWRlL1NETC9T REwuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9TREwvU0RMX3ZlcnNpb24uaCIgMQojIDMzICIvdXNy L2luY2x1ZGUvU0RML1NETF92ZXJzaW9uLmgiCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9TRExfdHlw ZXMuaCIgMQojIDM0ICIvdXNyL2luY2x1ZGUvU0RML1NETF92ZXJzaW9uLmgiIDIKCiMgMSAiL3Vz ci9pbmNsdWRlL1NETC9iZWdpbl9jb2RlLmgiIDEKIyAzNiAiL3Vzci9pbmNsdWRlL1NETC9TRExf dmVyc2lvbi5oIiAyCgoKZXh0ZXJuICJDIiB7CiMgNDcgIi91c3IvaW5jbHVkZS9TREwvU0RMX3Zl cnNpb24uaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIFVpbnQ4IG1ham9yOwogICAgICAgIFVp bnQ4IG1pbm9yOwogICAgICAgIFVpbnQ4IHBhdGNoOwp9IFNETF92ZXJzaW9uOwojIDgyICIvdXNy L2luY2x1ZGUvU0RML1NETF92ZXJzaW9uLmgiCmV4dGVybiBjb25zdCBTRExfdmVyc2lvbiAqIFNE TF9MaW5rZWRfVmVyc2lvbih2b2lkKTsKCgoKfQoKIyAxICIvdXNyL2luY2x1ZGUvU0RML2Nsb3Nl X2NvZGUuaCIgMQojIDg5ICIvdXNyL2luY2x1ZGUvU0RML1NETF92ZXJzaW9uLmgiIDIKIyA0NiAi L3Vzci9pbmNsdWRlL1NETC9TREwuaCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvU0RML2JlZ2luX2Nv ZGUuaCIgMQojIDQ4ICIvdXNyL2luY2x1ZGUvU0RML1NETC5oIiAyCgoKZXh0ZXJuICJDIiB7CiMg NzIgIi91c3IvaW5jbHVkZS9TREwvU0RMLmgiCmV4dGVybiBpbnQgU0RMX0luaXQoVWludDMyIGZs YWdzKTsKCgpleHRlcm4gaW50IFNETF9Jbml0U3ViU3lzdGVtKFVpbnQzMiBmbGFncyk7CgoKZXh0 ZXJuIHZvaWQgU0RMX1F1aXRTdWJTeXN0ZW0oVWludDMyIGZsYWdzKTsKCgoKCgpleHRlcm4gVWlu dDMyIFNETF9XYXNJbml0KFVpbnQzMiBmbGFncyk7CgoKCgpleHRlcm4gdm9pZCBTRExfUXVpdCh2 b2lkKTsKCgoKfQoKIyAxICIvdXNyL2luY2x1ZGUvU0RML2Nsb3NlX2NvZGUuaCIgMQojIDk2ICIv dXNyL2luY2x1ZGUvU0RML1NETC5oIiAyCiMgMjcgIndpbnN5cy5oIiAyCgoKCgoKCgpleHRlcm4g IkMiCnsKIyA0NyAid2luc3lzLmgiCnR5cGVkZWYgZW51bSB7CiAgICBXU0tfTk9UX0FWQUlMID0g U0RMS19VTktOT1dOLAoKCiAgICBXU0tfS1AwID0gU0RMS19LUDAsCiAgICBXU0tfS1AxID0gU0RM S19LUDEsCiAgICBXU0tfS1AyID0gU0RMS19LUDIsCiAgICBXU0tfS1AzID0gU0RMS19LUDMsCiAg ICBXU0tfS1A0ID0gU0RMS19LUDQsCiAgICBXU0tfS1A1ID0gU0RMS19LUDUsCiAgICBXU0tfS1A2 ID0gU0RMS19LUDYsCiAgICBXU0tfS1A3ID0gU0RMS19LUDcsCiAgICBXU0tfS1A4ID0gU0RMS19L UDgsCiAgICBXU0tfS1A5ID0gU0RMS19LUDksCiAgICBXU0tfS1BfUEVSSU9EID0gU0RMS19LUF9Q RVJJT0QsCiAgICBXU0tfS1BfRElWSURFID0gU0RMS19LUF9ESVZJREUsCiAgICBXU0tfS1BfTVVM VElQTFkgPSBTRExLX0tQX01VTFRJUExZLAogICAgV1NLX0tQX01JTlVTID0gU0RMS19LUF9NSU5V UywKICAgIFdTS19LUF9QTFVTID0gU0RMS19LUF9QTFVTLAogICAgV1NLX0tQX0VOVEVSID0gU0RM S19LUF9FTlRFUiwKICAgIFdTS19LUF9FUVVBTFMgPSBTRExLX0tQX0VRVUFMUywKCgogICAgV1NL X1VQID0gU0RMS19VUCwKICAgIFdTS19ET1dOID0gU0RMS19ET1dOLAogICAgV1NLX1JJR0hUID0g U0RMS19SSUdIVCwKICAgIFdTS19MRUZUID0gU0RMS19MRUZULAogICAgV1NLX0lOU0VSVCA9IFNE TEtfSU5TRVJULAogICAgV1NLX0hPTUUgPSBTRExLX0hPTUUsCiAgICBXU0tfRU5EID0gU0RMS19F TkQsCiAgICBXU0tfUEFHRVVQID0gU0RMS19QQUdFVVAsCiAgICBXU0tfUEFHRURPV04gPSBTRExL X1BBR0VET1dOLAoKCiAgICBXU0tfRjEgPSBTRExLX0YxLAogICAgV1NLX0YyID0gU0RMS19GMiwK ICAgIFdTS19GMyA9IFNETEtfRjMsCiAgICBXU0tfRjQgPSBTRExLX0Y0LAogICAgV1NLX0Y1ID0g U0RMS19GNSwKICAgIFdTS19GNiA9IFNETEtfRjYsCiAgICBXU0tfRjcgPSBTRExLX0Y3LAogICAg V1NLX0Y4ID0gU0RMS19GOCwKICAgIFdTS19GOSA9IFNETEtfRjksCiAgICBXU0tfRjEwID0gU0RM S19GMTAsCiAgICBXU0tfRjExID0gU0RMS19GMTEsCiAgICBXU0tfRjEyID0gU0RMS19GMTIsCiAg ICBXU0tfRjEzID0gU0RMS19GMTMsCiAgICBXU0tfRjE0ID0gU0RMS19GMTQsCiAgICBXU0tfRjE1 ID0gU0RMS19GMTUsCgoKICAgIFdTS19OVU1MT0NLID0gU0RMS19OVU1MT0NLLAogICAgV1NLX0NB UFNMT0NLID0gU0RMS19DQVBTTE9DSywKICAgIFdTS19TQ1JPTExPQ0sgPSBTRExLX1NDUk9MTE9D SywKICAgIFdTS19SU0hJRlQgPSBTRExLX1JTSElGVCwKICAgIFdTS19MU0hJRlQgPSBTRExLX0xT SElGVCwKICAgIFdTS19SQ1RSTCA9IFNETEtfUkNUUkwsCiAgICBXU0tfTENUUkwgPSBTRExLX0xD VFJMLAogICAgV1NLX1JBTFQgPSBTRExLX1JBTFQsCiAgICBXU0tfTEFMVCA9IFNETEtfTEFMVCwK ICAgIFdTS19STUVUQSA9IFNETEtfUk1FVEEsCiAgICBXU0tfTE1FVEEgPSBTRExLX0xNRVRBLAoK ICAgIFdTS19MQVNUCgp9IHdpbnN5c19rZXlzeW1fdDsKCnR5cGVkZWYgZW51bSB7CiAgICBXU19M RUZUX0JVVFRPTiA9IDEsCiAgICBXU19NSURETEVfQlVUVE9OID0gMiwKICAgIFdTX1JJR0hUX0JV VFRPTiA9IDMKfSB3aW5zeXNfbW91c2VfYnV0dG9uX3Q7Cgp0eXBlZGVmIGVudW0gewogICAgV1Nf TU9VU0VfRE9XTiA9IFNETF9QUkVTU0VELAogICAgV1NfTU9VU0VfVVAgPSBTRExfUkVMRUFTRUQK fSB3aW5zeXNfYnV0dG9uX3N0YXRlX3Q7CiMgMjE2ICJ3aW5zeXMuaCIKdHlwZWRlZiB2b2lkICgq d2luc3lzX2Rpc3BsYXlfZnVuY190KSgpOwp0eXBlZGVmIHZvaWQgKCp3aW5zeXNfaWRsZV9mdW5j X3QpKCk7CnR5cGVkZWYgdm9pZCAoKndpbnN5c19yZXNoYXBlX2Z1bmNfdCkoIGludCB3LCBpbnQg aCApOwp0eXBlZGVmIHZvaWQgKCp3aW5zeXNfa2V5Ym9hcmRfZnVuY190KSggdW5zaWduZWQgaW50 IGtleSwgYm9vbF90IHNwZWNpYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBib29sX3QgcmVsZWFzZSwgaW50IHgsIGludCB5ICk7CnR5cGVkZWYgdm9pZCAoKndpbnN5 c19tb3VzZV9mdW5jX3QpKCBpbnQgYnV0dG9uLCBpbnQgc3RhdGUsIGludCB4LCBpbnQgeSApOwp0 eXBlZGVmIHZvaWQgKCp3aW5zeXNfbW90aW9uX2Z1bmNfdCkoIGludCB4LCBpbnQgeSApOwoKdHlw ZWRlZiB2b2lkICgqd2luc3lzX2F0ZXhpdF9mdW5jX3QpKCB2b2lkICk7Cgp2b2lkIHdpbnN5c19w b3N0X3JlZGlzcGxheSgpOwp2b2lkIHdpbnN5c19zZXRfZGlzcGxheV9mdW5jKCB3aW5zeXNfZGlz cGxheV9mdW5jX3QgZnVuYyApOwp2b2lkIHdpbnN5c19zZXRfaWRsZV9mdW5jKCB3aW5zeXNfaWRs ZV9mdW5jX3QgZnVuYyApOwp2b2lkIHdpbnN5c19zZXRfcmVzaGFwZV9mdW5jKCB3aW5zeXNfcmVz aGFwZV9mdW5jX3QgZnVuYyApOwp2b2lkIHdpbnN5c19zZXRfa2V5Ym9hcmRfZnVuYyggd2luc3lz X2tleWJvYXJkX2Z1bmNfdCBmdW5jICk7CnZvaWQgd2luc3lzX3NldF9tb3VzZV9mdW5jKCB3aW5z eXNfbW91c2VfZnVuY190IGZ1bmMgKTsKdm9pZCB3aW5zeXNfc2V0X21vdGlvbl9mdW5jKCB3aW5z eXNfbW90aW9uX2Z1bmNfdCBmdW5jICk7CnZvaWQgd2luc3lzX3NldF9wYXNzaXZlX21vdGlvbl9m dW5jKCB3aW5zeXNfbW90aW9uX2Z1bmNfdCBmdW5jICk7Cgp2b2lkIHdpbnN5c19zd2FwX2J1ZmZl cnMoKTsKdm9pZCB3aW5zeXNfZW5hYmxlX2tleV9yZXBlYXQoIGJvb2xfdCBlbmFibGVkICk7CnZv aWQgd2luc3lzX3dhcnBfcG9pbnRlciggaW50IHgsIGludCB5ICk7CnZvaWQgd2luc3lzX3Nob3df Y3Vyc29yKCBib29sX3QgdmlzaWJsZSApOwoKdm9pZCB3aW5zeXNfaW5pdCggaW50ICphcmdjLCBj aGFyICoqYXJndiwgY2hhciAqd2luZG93X3RpdGxlLAogICAgICAgICAgICAgICAgICBjaGFyICpp Y29uX3RpdGxlICk7CnZvaWQgd2luc3lzX3NodXRkb3duKCk7Cgp2b2lkIHdpbnN5c19wcm9jZXNz X2V2ZW50cygpOwoKdm9pZCB3aW5zeXNfYXRleGl0KCB3aW5zeXNfYXRleGl0X2Z1bmNfdCBmdW5j ICk7Cgp2b2lkIHdpbnN5c19leGl0KCBpbnQgY29kZSApOwoKCn0KIyAxMjUgInR1eHJhY2VyLmgi IDIKIyAxICJzdHJpbmdfdXRpbC5oIiAxCiMgMjEgInN0cmluZ191dGlsLmgiCmV4dGVybiAiQyIK ewoKCgoKCmNoYXIgKnN0cmluZ19jb3B5KCBjaGFyICpzcmMgKTsKaW50IHN0cmluZ19jbXBfbm9f Y2FzZSggY2hhciAqczEsIGNoYXIgKnMyICk7CnZvaWQgc3RyaW5nX3RvX2xvd2VyKCBjaGFyICpz ICk7CgoKCgp9CiMgMTI2ICJ0dXhyYWNlci5oIiAyCiMgMSAiZmlsZV91dGlsLmgiIDEKIyAyMSAi ZmlsZV91dGlsLmgiCmV4dGVybiAiQyIKewoKCgoKCiMgMSAidHV4X3R5cGVzLmgiIDEKIyAyMSAi dHV4X3R5cGVzLmgiCmV4dGVybiAiQyIKewojIDIzNyAidHV4X3R5cGVzLmgiCn0KIyAyOSAiZmls ZV91dGlsLmgiIDIKIyAxICJsaXN0LmgiIDEKIyAyMSAibGlzdC5oIgpleHRlcm4gIkMiCnsKCgoK CgojIDEgInR1eHJhY2VyLmgiIDEKIyAyOSAibGlzdC5oIiAyCgp0eXBlZGVmIHZvaWQqIGxpc3Rf dDsKdHlwZWRlZiB2b2lkKiBsaXN0X2VsZW1fdDsKdHlwZWRlZiB2b2lkKiBsaXN0X2VsZW1fZGF0 YV90OwoKCmxpc3RfdCBjcmVhdGVfbGlzdCh2b2lkKTsKCgoKdm9pZCBkZWxfbGlzdChsaXN0X3Qg bGxpc3QpOwoKCmxpc3RfZWxlbV90IGdldF9saXN0X2hlYWQobGlzdF90IGxsaXN0KTsKCgpsaXN0 X2VsZW1fdCBnZXRfbGlzdF90YWlsKGxpc3RfdCBsbGlzdCk7CgoKCmxpc3RfZWxlbV90IGdldF9u ZXh0X2xpc3RfZWxlbShsaXN0X3QgbGxpc3QsIGxpc3RfZWxlbV90IG5vZGUpOwoKCgpsaXN0X2Vs ZW1fdCBnZXRfcHJldl9saXN0X2VsZW0obGlzdF90IGxsaXN0LCBsaXN0X2VsZW1fdCBub2RlKTsK CgoKCmxpc3RfZWxlbV90IGluc2VydF9saXN0X2VsZW0obGlzdF90IGxsaXN0LCBsaXN0X2VsZW1f dCBub2RlX2JlZm9yZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2VsZW1fZGF0 YV90IG5ld19kYXRhKTsKCgpsaXN0X2VsZW1fZGF0YV90IGRlbGV0ZV9saXN0X2VsZW0obGlzdF90 IGxsaXN0LCBsaXN0X2VsZW1fdCBub2RlKTsKCgpsaXN0X2VsZW1fZGF0YV90IGdldF9saXN0X2Vs ZW1fZGF0YSggbGlzdF9lbGVtX3Qgbm9kZSApOwoKCnZvaWQgbGlzdF9zYW5pdHlfY2hlY2soIGxp c3RfdCBsbGlzdCApOwoKCnZvaWQgcHJpbnRfbGlzdCggbGlzdF90IGxsaXN0ICk7CgoKCgp9CiMg MzAgImZpbGVfdXRpbC5oIiAyCgpib29sX3QgZmlsZV9leGlzdHMoIGNoYXIgKmZpbGVuYW1lICk7 CmJvb2xfdCBkaXJfZXhpc3RzKCBjaGFyICpkaXJuYW1lICk7Cmxpc3RfdCBnZXRfZGlyX2ZpbGVf bGlzdCggY2hhciAqZGlybmFtZSApIDsKdm9pZCBmcmVlX2Rpcl9maWxlX2xpc3QoIGxpc3RfdCBk aXJsaXN0ICk7CgoKCgp9CiMgMTI3ICJ0dXhyYWNlci5oIiAyCiMgMSAiZ2FtZV9jb25maWcuaCIg MQojIDIxICJnYW1lX2NvbmZpZy5oIgpleHRlcm4gIkMiCnsKCgoKCgojIDEgInR1eF90eXBlcy5o IiAxCiMgMjEgInR1eF90eXBlcy5oIgpleHRlcm4gIkMiCnsKIyAyMzcgInR1eF90eXBlcy5oIgp9 CiMgMjkgImdhbWVfY29uZmlnLmgiIDIKCnZvaWQgaW5pdF9nYW1lX2NvbmZpZ3VyYXRpb24oKTsK dm9pZCByZWFkX2NvbmZpZ19maWxlKCk7CnZvaWQgd3JpdGVfY29uZmlnX2ZpbGUoKTsKdm9pZCBj bGVhcl9jb25maWdfY2FjaGUoKTsKdm9pZCByZWdpc3Rlcl9nYW1lX2NvbmZpZ19jYWxsYmFja3Mo IFRjbF9JbnRlcnAgKmlwICk7CmludCBnZXRfY29uZmlnX2Rpcl9uYW1lKCBjaGFyICpidWZmLCBp bnQgbGVuICk7CiMgNTQgImdhbWVfY29uZmlnLmgiCmNoYXIqIGdldHBhcmFtX2RhdGFfZGlyKCk7 IHZvaWQgc2V0cGFyYW1fZGF0YV9kaXIoIGNoYXIqIHZhbCApOwoKYm9vbF90IGdldHBhcmFtX2Ry YXdfdHV4X3NoYWRvdygpOyB2b2lkIHNldHBhcmFtX2RyYXdfdHV4X3NoYWRvdyggYm9vbF90IHZh bCApOwoKYm9vbF90IGdldHBhcmFtX2RyYXdfcGFydGljbGVzKCk7IHZvaWQgc2V0cGFyYW1fZHJh d19wYXJ0aWNsZXMoIGJvb2xfdCB2YWwgKTsKCmludCBnZXRwYXJhbV90dXhfc3BoZXJlX2Rpdmlz aW9ucygpOyB2b2lkIHNldHBhcmFtX3R1eF9zcGhlcmVfZGl2aXNpb25zKCBpbnQgdmFsICk7Cgpp bnQgZ2V0cGFyYW1fdHV4X3NoYWRvd19zcGhlcmVfZGl2aXNpb25zKCk7IHZvaWQgc2V0cGFyYW1f dHV4X3NoYWRvd19zcGhlcmVfZGl2aXNpb25zKCBpbnQgdmFsICk7Cgpib29sX3QgZ2V0cGFyYW1f bmljZV9mb2coKTsgdm9pZCBzZXRwYXJhbV9uaWNlX2ZvZyggYm9vbF90IHZhbCApOwoKYm9vbF90 IGdldHBhcmFtX3VzZV9zcGhlcmVfZGlzcGxheV9saXN0KCk7IHZvaWQgc2V0cGFyYW1fdXNlX3Nw aGVyZV9kaXNwbGF5X2xpc3QoIGJvb2xfdCB2YWwgKTsKCmJvb2xfdCBnZXRwYXJhbV9kaXNwbGF5 X2ZwcygpOyB2b2lkIHNldHBhcmFtX2Rpc3BsYXlfZnBzKCBib29sX3QgdmFsICk7CgppbnQgZ2V0 cGFyYW1feF9yZXNvbHV0aW9uKCk7IHZvaWQgc2V0cGFyYW1feF9yZXNvbHV0aW9uKCBpbnQgdmFs ICk7CgppbnQgZ2V0cGFyYW1feV9yZXNvbHV0aW9uKCk7IHZvaWQgc2V0cGFyYW1feV9yZXNvbHV0 aW9uKCBpbnQgdmFsICk7Cgpib29sX3QgZ2V0cGFyYW1fY2FwdHVyZV9tb3VzZSgpOyB2b2lkIHNl dHBhcmFtX2NhcHR1cmVfbW91c2UoIGJvb2xfdCB2YWwgKTsKCmJvb2xfdCBnZXRwYXJhbV9kb19p bnRyb19hbmltYXRpb24oKTsgdm9pZCBzZXRwYXJhbV9kb19pbnRyb19hbmltYXRpb24oIGJvb2xf dCB2YWwgKTsKCmludCBnZXRwYXJhbV9taXBtYXBfdHlwZSgpOyB2b2lkIHNldHBhcmFtX21pcG1h cF90eXBlKCBpbnQgdmFsICk7Cgpib29sX3QgZ2V0cGFyYW1fZnVsbHNjcmVlbigpOyB2b2lkIHNl dHBhcmFtX2Z1bGxzY3JlZW4oIGJvb2xfdCB2YWwgKTsKCmludCBnZXRwYXJhbV9icHBfbW9kZSgp OyB2b2lkIHNldHBhcmFtX2JwcF9tb2RlKCBpbnQgdmFsICk7Cgpib29sX3QgZ2V0cGFyYW1fbWls ZXNfcGVyX2hvdXIoKTsgdm9pZCBzZXRwYXJhbV9taWxlc19wZXJfaG91ciggYm9vbF90IHZhbCAp OwoKYm9vbF90IGdldHBhcmFtX2ZvcmNlX3dpbmRvd19wb3NpdGlvbigpOyB2b2lkIHNldHBhcmFt X2ZvcmNlX3dpbmRvd19wb3NpdGlvbiggYm9vbF90IHZhbCApOwoKaW50IGdldHBhcmFtX29kZV9z b2x2ZXIoKTsgdm9pZCBzZXRwYXJhbV9vZGVfc29sdmVyKCBpbnQgdmFsICk7CgpjaGFyKiBnZXRw YXJhbV9xdWl0X2tleSgpOyB2b2lkIHNldHBhcmFtX3F1aXRfa2V5KCBjaGFyKiB2YWwgKTsKCmNo YXIqIGdldHBhcmFtX3R1cm5fbGVmdF9rZXkoKTsgdm9pZCBzZXRwYXJhbV90dXJuX2xlZnRfa2V5 KCBjaGFyKiB2YWwgKTsKCmNoYXIqIGdldHBhcmFtX3R1cm5fcmlnaHRfa2V5KCk7IHZvaWQgc2V0 cGFyYW1fdHVybl9yaWdodF9rZXkoIGNoYXIqIHZhbCApOwoKY2hhciogZ2V0cGFyYW1fdHJpY2tf bW9kaWZpZXJfa2V5KCk7IHZvaWQgc2V0cGFyYW1fdHJpY2tfbW9kaWZpZXJfa2V5KCBjaGFyKiB2 YWwgKTsKCmNoYXIqIGdldHBhcmFtX2JyYWtlX2tleSgpOyB2b2lkIHNldHBhcmFtX2JyYWtlX2tl eSggY2hhciogdmFsICk7CgpjaGFyKiBnZXRwYXJhbV9wYWRkbGVfa2V5KCk7IHZvaWQgc2V0cGFy YW1fcGFkZGxlX2tleSggY2hhciogdmFsICk7CgpjaGFyKiBnZXRwYXJhbV9hYm92ZV92aWV3X2tl eSgpOyB2b2lkIHNldHBhcmFtX2Fib3ZlX3ZpZXdfa2V5KCBjaGFyKiB2YWwgKTsKCmNoYXIqIGdl dHBhcmFtX2JlaGluZF92aWV3X2tleSgpOyB2b2lkIHNldHBhcmFtX2JlaGluZF92aWV3X2tleSgg Y2hhciogdmFsICk7CgpjaGFyKiBnZXRwYXJhbV9leWVfdmlld19rZXkoKTsgdm9pZCBzZXRwYXJh bV9leWVfdmlld19rZXkoIGNoYXIqIHZhbCApOwoKY2hhciogZ2V0cGFyYW1fZm9sbG93X3ZpZXdf a2V5KCk7IHZvaWQgc2V0cGFyYW1fZm9sbG93X3ZpZXdfa2V5KCBjaGFyKiB2YWwgKTsKCmludCBn ZXRwYXJhbV92aWV3X21vZGUoKTsgdm9pZCBzZXRwYXJhbV92aWV3X21vZGUoIGludCB2YWwgKTsK CmNoYXIqIGdldHBhcmFtX3NjcmVlbnNob3Rfa2V5KCk7IHZvaWQgc2V0cGFyYW1fc2NyZWVuc2hv dF9rZXkoIGNoYXIqIHZhbCApOwoKY2hhciogZ2V0cGFyYW1fcGF1c2Vfa2V5KCk7IHZvaWQgc2V0 cGFyYW1fcGF1c2Vfa2V5KCBjaGFyKiB2YWwgKTsKCmNoYXIqIGdldHBhcmFtX3Jlc2V0X2tleSgp OyB2b2lkIHNldHBhcmFtX3Jlc2V0X2tleSggY2hhciogdmFsICk7CgpjaGFyKiBnZXRwYXJhbV9q dW1wX2tleSgpOyB2b2lkIHNldHBhcmFtX2p1bXBfa2V5KCBjaGFyKiB2YWwgKTsKCmludCBnZXRw YXJhbV9qb3lzdGlja19qdW1wX2J1dHRvbigpOyB2b2lkIHNldHBhcmFtX2pveXN0aWNrX2p1bXBf YnV0dG9uKCBpbnQgdmFsICk7CgppbnQgZ2V0cGFyYW1fam95c3RpY2tfYnJha2VfYnV0dG9uKCk7 IHZvaWQgc2V0cGFyYW1fam95c3RpY2tfYnJha2VfYnV0dG9uKCBpbnQgdmFsICk7CgppbnQgZ2V0 cGFyYW1fam95c3RpY2tfcGFkZGxlX2J1dHRvbigpOyB2b2lkIHNldHBhcmFtX2pveXN0aWNrX3Bh ZGRsZV9idXR0b24oIGludCB2YWwgKTsKCmludCBnZXRwYXJhbV9qb3lzdGlja190cmlja19idXR0 b24oKTsgdm9pZCBzZXRwYXJhbV9qb3lzdGlja190cmlja19idXR0b24oIGludCB2YWwgKTsKCmlu dCBnZXRwYXJhbV9qb3lzdGlja19jb250aW51ZV9idXR0b24oKTsgdm9pZCBzZXRwYXJhbV9qb3lz dGlja19jb250aW51ZV9idXR0b24oIGludCB2YWwgKTsKCmludCBnZXRwYXJhbV9qb3lzdGlja194 X2F4aXMoKTsgdm9pZCBzZXRwYXJhbV9qb3lzdGlja194X2F4aXMoIGludCB2YWwgKTsKCmludCBn ZXRwYXJhbV9qb3lzdGlja195X2F4aXMoKTsgdm9pZCBzZXRwYXJhbV9qb3lzdGlja195X2F4aXMo IGludCB2YWwgKTsKCmludCBnZXRwYXJhbV9mb3YoKTsgdm9pZCBzZXRwYXJhbV9mb3YoIGludCB2 YWwgKTsKCmNoYXIqIGdldHBhcmFtX2RlYnVnKCk7IHZvaWQgc2V0cGFyYW1fZGVidWcoIGNoYXIq IHZhbCApOwoKaW50IGdldHBhcmFtX3dhcm5pbmdfbGV2ZWwoKTsgdm9pZCBzZXRwYXJhbV93YXJu aW5nX2xldmVsKCBpbnQgdmFsICk7CgppbnQgZ2V0cGFyYW1fZm9yd2FyZF9jbGlwX2Rpc3RhbmNl KCk7IHZvaWQgc2V0cGFyYW1fZm9yd2FyZF9jbGlwX2Rpc3RhbmNlKCBpbnQgdmFsICk7CgppbnQg Z2V0cGFyYW1fYmFja3dhcmRfY2xpcF9kaXN0YW5jZSgpOyB2b2lkIHNldHBhcmFtX2JhY2t3YXJk X2NsaXBfZGlzdGFuY2UoIGludCB2YWwgKTsKCmludCBnZXRwYXJhbV90cmVlX2RldGFpbF9kaXN0 YW5jZSgpOyB2b2lkIHNldHBhcmFtX3RyZWVfZGV0YWlsX2Rpc3RhbmNlKCBpbnQgdmFsICk7Cgpp bnQgZ2V0cGFyYW1fY291cnNlX2RldGFpbF9sZXZlbCgpOyB2b2lkIHNldHBhcmFtX2NvdXJzZV9k ZXRhaWxfbGV2ZWwoIGludCB2YWwgKTsKCmJvb2xfdCBnZXRwYXJhbV90ZXJyYWluX2JsZW5kaW5n KCk7IHZvaWQgc2V0cGFyYW1fdGVycmFpbl9ibGVuZGluZyggYm9vbF90IHZhbCApOwoKYm9vbF90 IGdldHBhcmFtX3BlcmZlY3RfdGVycmFpbl9ibGVuZGluZygpOyB2b2lkIHNldHBhcmFtX3BlcmZl Y3RfdGVycmFpbl9ibGVuZGluZyggYm9vbF90IHZhbCApOwoKYm9vbF90IGdldHBhcmFtX3RlcnJh aW5fZW52bWFwKCk7IHZvaWQgc2V0cGFyYW1fdGVycmFpbl9lbnZtYXAoIGJvb2xfdCB2YWwgKTsK CmJvb2xfdCBnZXRwYXJhbV9kaXNhYmxlX2ZvZygpOyB2b2lkIHNldHBhcmFtX2Rpc2FibGVfZm9n KCBib29sX3QgdmFsICk7Cgpib29sX3QgZ2V0cGFyYW1fdXNlX2N2YSgpOyB2b2lkIHNldHBhcmFt X3VzZV9jdmEoIGJvb2xfdCB2YWwgKTsKCmJvb2xfdCBnZXRwYXJhbV9jdmFfaGFjaygpOyB2b2lk IHNldHBhcmFtX2N2YV9oYWNrKCBib29sX3QgdmFsICk7Cgpib29sX3QgZ2V0cGFyYW1fbm9fYXVk aW8oKTsgdm9pZCBzZXRwYXJhbV9ub19hdWRpbyggYm9vbF90IHZhbCApOwoKYm9vbF90IGdldHBh cmFtX3NvdW5kX2VuYWJsZWQoKTsgdm9pZCBzZXRwYXJhbV9zb3VuZF9lbmFibGVkKCBib29sX3Qg dmFsICk7Cgpib29sX3QgZ2V0cGFyYW1fbXVzaWNfZW5hYmxlZCgpOyB2b2lkIHNldHBhcmFtX211 c2ljX2VuYWJsZWQoIGJvb2xfdCB2YWwgKTsKCmludCBnZXRwYXJhbV9zb3VuZF92b2x1bWUoKTsg dm9pZCBzZXRwYXJhbV9zb3VuZF92b2x1bWUoIGludCB2YWwgKTsKCmludCBnZXRwYXJhbV9tdXNp Y192b2x1bWUoKTsgdm9pZCBzZXRwYXJhbV9tdXNpY192b2x1bWUoIGludCB2YWwgKTsKCmludCBn ZXRwYXJhbV9hdWRpb19mcmVxX21vZGUoKTsgdm9pZCBzZXRwYXJhbV9hdWRpb19mcmVxX21vZGUo IGludCB2YWwgKTsKCmludCBnZXRwYXJhbV9hdWRpb19mb3JtYXRfbW9kZSgpOyB2b2lkIHNldHBh cmFtX2F1ZGlvX2Zvcm1hdF9tb2RlKCBpbnQgdmFsICk7Cgpib29sX3QgZ2V0cGFyYW1fYXVkaW9f c3RlcmVvKCk7IHZvaWQgc2V0cGFyYW1fYXVkaW9fc3RlcmVvKCBib29sX3QgdmFsICk7CgppbnQg Z2V0cGFyYW1fYXVkaW9fYnVmZmVyX3NpemUoKTsgdm9pZCBzZXRwYXJhbV9hdWRpb19idWZmZXJf c2l6ZSggaW50IHZhbCApOwoKYm9vbF90IGdldHBhcmFtX3RyYWNrX21hcmtzKCk7IHZvaWQgc2V0 cGFyYW1fdHJhY2tfbWFya3MoIGJvb2xfdCB2YWwgKTsKCmJvb2xfdCBnZXRwYXJhbV91aV9zbm93 KCk7IHZvaWQgc2V0cGFyYW1fdWlfc25vdyggYm9vbF90IHZhbCApOwoKYm9vbF90IGdldHBhcmFt X3dyaXRlX2RpYWdub3N0aWNfbG9nKCk7IHZvaWQgc2V0cGFyYW1fd3JpdGVfZGlhZ25vc3RpY19s b2coIGJvb2xfdCB2YWwgKTsKCgoKCn0KIyAxMjggInR1eHJhY2VyLmgiIDIKIyAxICJ0dXhfdHlw ZXMuaCIgMQojIDIxICJ0dXhfdHlwZXMuaCIKZXh0ZXJuICJDIgp7CiMgMjM3ICJ0dXhfdHlwZXMu aCIKfQojIDEyOSAidHV4cmFjZXIuaCIgMgojIDEgImFsZ2xpYi5oIiAxCiMgMjEgImFsZ2xpYi5o IgpleHRlcm4gIkMiCnsKIyA0MyAiYWxnbGliLmgiCnZlY3Rvcl90IG1ha2VfdmVjdG9yKCBzY2Fs YXJfdCB4LCBzY2FsYXJfdCB5LCBzY2FsYXJfdCB6ICk7CnBvaW50X3QgbWFrZV9wb2ludCggc2Nh bGFyX3QgeCwgc2NhbGFyX3QgeSwgc2NhbGFyX3QgeiApOwpwb2ludDJkX3QgbWFrZV9wb2ludDJk KCBzY2FsYXJfdCB4LCBzY2FsYXJfdCB5ICk7CmluZGV4MmRfdCBtYWtlX2luZGV4MmQoIGludCBp LCBpbnQgaiApOwoKc2NhbGFyX3QgZG90X3Byb2R1Y3QoIHZlY3Rvcl90IHYxLCB2ZWN0b3JfdCB2 MiApOwp2ZWN0b3JfdCBzY2FsZV92ZWN0b3IoIHNjYWxhcl90IHMsIHZlY3Rvcl90IHYgKTsKCnZl Y3Rvcl90IGFkZF92ZWN0b3JzKCB2ZWN0b3JfdCB2MSwgdmVjdG9yX3QgdjIgKTsKcG9pbnRfdCBt b3ZlX3BvaW50KCBwb2ludF90IHYxLCB2ZWN0b3JfdCB2MiApOwoKdmVjdG9yX3Qgc3VidHJhY3Rf cG9pbnRzKCBwb2ludF90IHYxLCBwb2ludF90IHYyICk7CnZlY3Rvcl90IHN1YnRyYWN0X3ZlY3Rv cnMoIHZlY3Rvcl90IHYxLCB2ZWN0b3JfdCB2MiApOwpwb2ludF90IHBvaW50X21pbnVzX3ZlY3Rv ciggcG9pbnRfdCB2MSwgdmVjdG9yX3QgdjIgKTsKdmVjdG9yX3QgcHJvamVjdF9pbnRvX3BsYW5l KCB2ZWN0b3JfdCBubWwsIHZlY3Rvcl90IHYgKTsKCnNjYWxhcl90IG5vcm1hbGl6ZV92ZWN0b3Io IHZlY3Rvcl90ICp2ICk7Cgp2ZWN0b3JfdCBjcm9zc19wcm9kdWN0KHZlY3Rvcl90IHUsIHZlY3Rv cl90IHYpOwp2ZWN0b3JfdCB0cmFuc2Zvcm1fdmVjdG9yKG1hdHJpeGdsX3QgbWF0LCB2ZWN0b3Jf dCB2KTsKdmVjdG9yX3QgdHJhbnNmb3JtX25vcm1hbCh2ZWN0b3JfdCBuLCBtYXRyaXhnbF90IG1h dCk7CnBvaW50X3QgdHJhbnNmb3JtX3BvaW50KG1hdHJpeGdsX3QgbWF0LCBwb2ludF90IHApOwoK CnBsYW5lX3QgbWFrZV9wbGFuZSggc2NhbGFyX3QgbngsIHNjYWxhcl90IG55LCBzY2FsYXJfdCBu eiwgc2NhbGFyX3QgZCApOwpib29sX3QgaW50ZXJzZWN0X3BsYW5lcyggcGxhbmVfdCBzMSwgcGxh bmVfdCBzMiwgcGxhbmVfdCBzMywgcG9pbnRfdCAqcCApOwpzY2FsYXJfdCBkaXN0YW5jZV90b19w bGFuZSggcGxhbmVfdCBwbGFuZSwgcG9pbnRfdCBwdCApOwoKCnZvaWQgbWFrZV9pZGVudGl0eV9t YXRyaXgobWF0cml4Z2xfdCBoKTsKdm9pZCBtdWx0aXBseV9tYXRyaWNlcyhtYXRyaXhnbF90IHJl dCwgbWF0cml4Z2xfdCBtYXQxLCBtYXRyaXhnbF90IG1hdDIpOwp2b2lkIHRyYW5zcG9zZV9tYXRy aXgoIG1hdHJpeGdsX3QgbWF0LCBtYXRyaXhnbF90IHRyYW5zICk7CgoKdm9pZCBtYWtlX3JvdGF0 aW9uX21hdHJpeCggbWF0cml4Z2xfdCBtYXQsIHNjYWxhcl90IGFuZ2xlLCBjaGFyIGF4aXMgKTsK dm9pZCBtYWtlX3RyYW5zbGF0aW9uX21hdHJpeCggbWF0cml4Z2xfdCBtYXQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNjYWxhcl90IHgsIHNjYWxhcl90IHksIHNjYWxhcl90IHog KTsKdm9pZCBtYWtlX3NjYWxpbmdfbWF0cml4KCBtYXRyaXhnbF90IG1hdCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzY2FsYXJfdCB4LCBzY2FsYXJfdCB5LCBzY2FsYXJfdCB6ICk7CnZv aWQgbWFrZV9jaGFuZ2Vfb2ZfYmFzaXNfbWF0cml4KCBtYXRyaXhnbF90IG1hdCwgbWF0cml4Z2xf dCBpbnZNYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yX3QgdzEsIHZl Y3Rvcl90IHcyLCB2ZWN0b3JfdCB3MyApOwoKdm9pZCBtYWtlX3JvdGF0aW9uX2Fib3V0X3ZlY3Rv cl9tYXRyaXgoIG1hdHJpeGdsX3QgbWF0LCB2ZWN0b3JfdCB1LCBzY2FsYXJfdCBhbmdsZSApOwoK cXVhdGVybmlvbl90IG1ha2VfcXVhdGVybmlvbiggc2NhbGFyX3QgeCwgc2NhbGFyX3QgeSwgc2Nh bGFyX3Qgeiwgc2NhbGFyX3QgdyApOwpxdWF0ZXJuaW9uX3QgbXVsdGlwbHlfcXVhdGVybmlvbnMo IHF1YXRlcm5pb25fdCBxLCBxdWF0ZXJuaW9uX3QgciApOwpxdWF0ZXJuaW9uX3QgYWRkX3F1YXRl cm5pb25zKCBxdWF0ZXJuaW9uX3QgcSwgcXVhdGVybmlvbl90IHIgKTsKcXVhdGVybmlvbl90IHNj YWxlX3F1YXRlcm5pb24oIHNjYWxhcl90IHMsIHF1YXRlcm5pb25fdCBxICk7CnF1YXRlcm5pb25f dCBxdWF0ZXJuaW9uX2Nvbmp1Z2F0ZSggcXVhdGVybmlvbl90IHEgKTsKdm9pZCBtYWtlX21hdHJp eF9mcm9tX3F1YXRlcm5pb24oIG1hdHJpeGdsX3QgbWF0LCBxdWF0ZXJuaW9uX3QgcSApOwpxdWF0 ZXJuaW9uX3QgbWFrZV9xdWF0ZXJuaW9uX2Zyb21fbWF0cml4KCBtYXRyaXhnbF90IG1hdCApOwpx dWF0ZXJuaW9uX3QgbWFrZV9yb3RhdGlvbl9xdWF0ZXJuaW9uKCB2ZWN0b3JfdCBzLCB2ZWN0b3Jf dCB0ICk7CnF1YXRlcm5pb25fdCBpbnRlcnBvbGF0ZV9xdWF0ZXJuaW9ucyggcXVhdGVybmlvbl90 IHEsIHF1YXRlcm5pb25fdCByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNjYWxhcl90IHQgKTsKdmVjdG9yX3Qgcm90YXRlX3ZlY3RvciggcXVhdGVybmlvbl90IHEsIHZl Y3Rvcl90IHYgKTsKCgoKCgoKaW50IGN1dF90cmlhbmdsZSggdHJpYW5nbGVfdCAqcmVwbGFjZSwg dHJpYW5nbGVfdCAqbmV3MSwgdHJpYW5nbGVfdCAqbmV3MiwKICAgICAgICAgICAgICAgICAgbGlu ZV90IGN1dF9saW5lICk7CgoKCgp9CiMgMTMwICJ0dXhyYWNlci5oIiAyCiMgMSAiZGVidWcuaCIg MQojIDIxICJkZWJ1Zy5oIgpleHRlcm4gIkMiCnsKCgojIDEgInR1eHJhY2VyLmgiIDEKIyAyNiAi ZGVidWcuaCIgMgoKCgoKdHlwZWRlZiBlbnVtIHsKICAgIERFQlVHX09ERSwKICAgIERFQlVHX1FV QURUUkVFLAogICAgREVCVUdfQ09OVFJPTCwKICAgIERFQlVHX1NPVU5ELAogICAgREVCVUdfVEVY VFVSRSwKICAgIERFQlVHX1ZJRVcsCiAgICBERUJVR19HTF9FWFQsCiAgICBERUJVR19GT05ULAog ICAgREVCVUdfVUksCiAgICBERUJVR19HQU1FX0xPR0lDLAogICAgREVCVUdfU0FWRSwKICAgIERF QlVHX0pPWVNUSUNLLAogICAgREVCVUdfR0xfSU5GTywKICAgIE5VTV9ERUJVR19NT0RFUwp9IGRl YnVnX21vZGVfdDsKCnZvaWQgaW5pdF9kZWJ1ZygpOwpib29sX3QgZGVidWdfbW9kZV9pc19hY3Rp dmUoIGRlYnVnX21vZGVfdCBtb2RlICk7CnZvaWQgZGVidWdfbW9kZV9zZXRfYWN0aXZlKCBkZWJ1 Z19tb2RlX3QgbW9kZSwgYm9vbF90IGFjdGl2ZSApOwp2b2lkIHByaW50X2RlYnVnKCBkZWJ1Z19t b2RlX3QgbW9kZSwgY2hhciAqZm10LCAuLi4gKTsKdm9pZCBzZXR1cF9kaWFnbm9zdGljX2xvZygp OwojIDc3ICJkZWJ1Zy5oIgp9CiMgMTMxICJ0dXhyYWNlci5oIiAyCiMgMSAiZXJyb3JfdXRpbC5o IiAxCiMgMjEgImVycm9yX3V0aWwuaCIKZXh0ZXJuICJDIgp7CiMgMzcgImVycm9yX3V0aWwuaCIK dm9pZCBwcmludF93YXJuaW5nKCBpbnQgd2FybmluZ19sZXZlbCwgY2hhciAqZm10LCAuLi4gKTsK dm9pZCBoYW5kbGVfZXJyb3IoIGludCBleGl0X2NvZGUsIGNoYXIgKmZtdCwgLi4uICk7CnZvaWQg aGFuZGxlX3N5c3RlbV9lcnJvciggaW50IGV4aXRfY29kZSwgY2hhciAqZm10LCAuLi4gKTsKCgoK Cn0KIyAxMzIgInR1eHJhY2VyLmgiIDIKIyAxODcgInR1eHJhY2VyLmgiCmV4dGVybiAiQyIKewoK Cgp0eXBlZGVmIGVudW0gewogICAgQUxMX01PREVTID0gLTIsCiAgICBOT19NT0RFID0gLTEsCiAg ICBTUExBU0ggPSAwLAogICAgR0FNRV9UWVBFX1NFTEVDVCwKICAgIEVWRU5UX1NFTEVDVCwKICAg IFJBQ0VfU0VMRUNULAogICAgTE9BRElORywKICAgIElOVFJPLAogICAgUkFDSU5HLAogICAgR0FN RV9PVkVSLAogICAgUEFVU0VELAogICAgUkVTRVQsCiAgICBDUkVESVRTLAogICAgTlVNX0dBTUVf TU9ERVMKfSBnYW1lX21vZGVfdDsKCgp0eXBlZGVmIGVudW0gewogICAgRElGRklDVUxUWV9MRVZF TF9FQVNZLAogICAgRElGRklDVUxUWV9MRVZFTF9OT1JNQUwsCiAgICBESUZGSUNVTFRZX0xFVkVM X0hBUkQsCiAgICBESUZGSUNVTFRZX0xFVkVMX0lOU0FORSwKICAgIERJRkZJQ1VMVFlfTlVNX0xF VkVMUwp9IGRpZmZpY3VsdHlfbGV2ZWxfdDsKCgp0eXBlZGVmIGVudW0gewogICAgUkFDRV9DT05E SVRJT05TX1NVTk5ZLAogICAgUkFDRV9DT05ESVRJT05TX0NMT1VEWSwKICAgIFJBQ0VfQ09ORElU SU9OU19OSUdIVCwKICAgIFJBQ0VfQ09ORElUSU9OU19OVU1fQ09ORElUSU9OUwp9IHJhY2VfY29u ZGl0aW9uc190OwoKCnR5cGVkZWYgc3RydWN0IHsKICAgIGNoYXIgKmNvdXJzZTsKICAgIGNoYXIg Km5hbWU7CiAgICBjaGFyICpkZXNjcmlwdGlvbjsKICAgIGludCBoZXJyaW5nX3JlcVtESUZGSUNV TFRZX05VTV9MRVZFTFNdOwogICAgc2NhbGFyX3QgdGltZV9yZXFbRElGRklDVUxUWV9OVU1fTEVW RUxTXTsKICAgIGludCBzY29yZV9yZXFbRElGRklDVUxUWV9OVU1fTEVWRUxTXTsKICAgIGJvb2xf dCBtaXJyb3JlZDsKICAgIHJhY2VfY29uZGl0aW9uc190IGNvbmRpdGlvbnM7CiAgICBib29sX3Qg d2luZHk7CiAgICBib29sX3Qgc25vd2luZzsKfSByYWNlX2RhdGFfdDsKCgp0eXBlZGVmIHN0cnVj dCB7CiAgICBpbnQgbnVtOwogICAgY2hhciBlbGV2X2ZpbGVbNTEyXTsKICAgIGNoYXIgdGVycmFp bl9maWxlWzUxMl07CiAgICBjaGFyIHRyZWVfZmlsZVs1MTJdOwp9IGNvdXJzZV9kYXRhX3Q7CgoK dHlwZWRlZiBlbnVtIHsKICAgIEJFSElORCwKICAgIEZPTExPVywKICAgIEFCT1ZFLAogICAgTlVN X1ZJRVdfTU9ERVMKfSB2aWV3X21vZGVfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICB2aWV3X21v ZGVfdCBtb2RlOwogICAgcG9pbnRfdCBwb3M7CiAgICBwb2ludF90IHBseXJfcG9zOwogICAgdmVj dG9yX3QgZGlyOwogICAgdmVjdG9yX3QgdXA7CiAgICBtYXRyaXhnbF90IGludl92aWV3X21hdDsK ICAgIGJvb2xfdCBpbml0aWFsaXplZDsKfSB2aWV3X3Q7CgoKdHlwZWRlZiBlbnVtIHsKICAgIEtF WUJPQVJEID0gMCwKICAgIE1PVVNFID0gMSwKICAgIEpPWVNUSUNLID0gMgp9IGNvbnRyb2xfbW9k ZV90OwoKCnR5cGVkZWYgc3RydWN0IHsKICAgIGNvbnRyb2xfbW9kZV90IG1vZGU7CiAgICBzY2Fs YXJfdCB0dXJuX2ZhY3Q7CiAgICBzY2FsYXJfdCB0dXJuX2FuaW1hdGlvbjsKICAgIGJvb2xfdCBp c19icmFraW5nOwogICAgYm9vbF90IGlzX3BhZGRsaW5nOwogICAgc2NhbGFyX3QgcGFkZGxlX3Rp bWU7CiAgICBib29sX3QgYmVnaW5fanVtcDsKICAgIGJvb2xfdCBqdW1waW5nOwogICAgYm9vbF90 IGp1bXBfY2hhcmdpbmc7CiAgICBzY2FsYXJfdCBqdW1wX2FtdDsKICAgIHNjYWxhcl90IGp1bXBf c3RhcnRfdGltZTsKICAgIGJvb2xfdCBiYXJyZWxfcm9sbF9sZWZ0OwogICAgYm9vbF90IGJhcnJl bF9yb2xsX3JpZ2h0OwogICAgc2NhbGFyX3QgYmFycmVsX3JvbGxfZmFjdG9yOwogICAgYm9vbF90 IGZyb250X2ZsaXA7CiAgICBib29sX3QgYmFja19mbGlwOwogICAgc2NhbGFyX3QgZmxpcF9mYWN0 b3I7Cn0gY29udHJvbF90OwoKCnR5cGVkZWYgc3RydWN0IHsKICAgIGNoYXIgKm5hbWU7CiAgICBp bnQgbGl2ZXM7CiAgICBwb2ludF90IHBvczsKICAgIHZlY3Rvcl90IHZlbDsKICAgIHF1YXRlcm5p b25fdCBvcmllbnRhdGlvbjsKICAgIGJvb2xfdCBvcmllbnRhdGlvbl9pbml0aWFsaXplZDsKICAg IHZlY3Rvcl90IHBsYW5lX25tbDsKCiAgICB2ZWN0b3JfdCBkaXJlY3Rpb247CiAgICB2ZWN0b3Jf dCBuZXRfZm9yY2U7CiAgICB2ZWN0b3JfdCBub3JtYWxfZm9yY2U7CiAgICBib29sX3QgYWlyYm9y bmU7CiAgICBib29sX3QgY29sbGlzaW9uOwogICAgY29udHJvbF90IGNvbnRyb2w7CiAgICB2aWV3 X3QgdmlldzsKICAgIGludCBoZXJyaW5nOwogICAgaW50IHNjb3JlOwp9IHBsYXllcl9kYXRhX3Q7 CgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgZ2FtZV9tb2RlX3QgbW9kZTsKICAgIGdhbWVfbW9kZV90 IHByZXZfbW9kZTsKICAgIHNjYWxhcl90IHRpbWU7CiAgICBzY2FsYXJfdCB0aW1lX3N0ZXA7Cgog ICAgaW50IG51bV9wbGF5ZXJzOwogICAgcGxheWVyX2RhdGFfdCBwbGF5ZXJbMV07CiAgICBUY2xf SW50ZXJwICp0Y2xfaW50ZXJwOwoKICAgIGRpZmZpY3VsdHlfbGV2ZWxfdCBkaWZmaWN1bHR5Owog ICAgY2hhciAqY3VycmVudF9ldmVudDsKICAgIGNoYXIgKmN1cnJlbnRfY3VwOwogICAgaW50IGN1 cnJlbnRfcmFjZTsKICAgIGNvdXJzZV9kYXRhX3QgY291cnNlOwogICAgcmFjZV9kYXRhX3QgcmFj ZTsKICAgIGludCBjdXBfcmFjZXNfd29uOwoKICAgIGJvb2xfdCBwcmFjdGljaW5nOwogICAgYm9v bF90IHJhY2VfYWJvcnRlZDsKICAgIHNjYWxhcl90IHNlY3Nfc2luY2Vfc3RhcnQ7Cn0gZ2FtZV9k YXRhX3Q7CgpleHRlcm4gZ2FtZV9kYXRhX3QgZ19nYW1lOwoKCgoKfQojIDE0ICJxdWFkdHJlZS5j cHAiIDIKIyAxICJ0ZXh0dXJlcy5oIiAxCiMgMjEgInRleHR1cmVzLmgiCmV4dGVybiAiQyIKewoK CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgR0x1aW50IHRleHR1cmVfaWQ7CiAgICBpbnQgcmVw ZWF0YWJsZTsKICAgIGludCByZWZfY291bnQ7Cn0gdGV4dHVyZV9ub2RlX3Q7Cgp2b2lkIGluaXRf dGV4dHVyZXMoKTsKCmJvb2xfdCBsb2FkX2FuZF9iaW5kX3RleHR1cmUoIGNoYXIgKmJpbmRpbmcs IGNoYXIgKmZpbGVuYW1lICk7Cgpib29sX3QgbG9hZF90ZXh0dXJlKCBjaGFyICp0ZXhuYW1lLCBj aGFyICpmaWxlbmFtZSwgaW50IHJlcGVhdGFibGUgKTsKYm9vbF90IGdldF90ZXh0dXJlKCBjaGFy ICp0ZXhuYW1lLCB0ZXh0dXJlX25vZGVfdCAqKnRleCApOwpib29sX3QgZGVsX3RleHR1cmUoIGNo YXIgKnRleG5hbWUgKTsKCmJvb2xfdCBiaW5kX3RleHR1cmUoIGNoYXIgKmJpbmRpbmcsIGNoYXIg KnRleG5hbWUgKTsKYm9vbF90IGdldF90ZXh0dXJlX2JpbmRpbmcoIGNoYXIgKmJpbmRpbmcsIEdM dWludCAqdGV4aWQgKTsKYm9vbF90IHVuYmluZF90ZXh0dXJlKCBjaGFyICpiaW5kaW5nICk7Cgp2 b2lkIGdldF9jdXJyZW50X3RleHR1cmVfZGltZW5zaW9ucyggaW50ICp3aWR0aCwgaW50ICpoZWln aHQgKTsKCmJvb2xfdCBmbHVzaF90ZXh0dXJlcyh2b2lkKTsKCnZvaWQgcmVnaXN0ZXJfdGV4dHVy ZV9jYWxsYmFja3MoVGNsX0ludGVycCAqaXApOwoKCgoKfQojIDE1ICJxdWFkdHJlZS5jcHAiIDIK IyAxICJjb3Vyc2VfbG9hZC5oIiAxCiMgMjEgImNvdXJzZV9sb2FkLmgiCmV4dGVybiAiQyIKewoK CiMgMSAidHV4cmFjZXIuaCIgMQojIDI2ICJjb3Vyc2VfbG9hZC5oIiAyCiMgMSAibGlzdC5oIiAx CiMgMjEgImxpc3QuaCIKZXh0ZXJuICJDIgp7CiMgNzYgImxpc3QuaCIKfQojIDI3ICJjb3Vyc2Vf bG9hZC5oIiAyCiMgNDAgImNvdXJzZV9sb2FkLmgiCnZvaWQgbG9hZF9jb3Vyc2UoIGNoYXIgKmNv dXJzZSApOwoKc2NhbGFyX3QgKmdldF9jb3Vyc2VfZWxldl9kYXRhKCk7CnRlcnJhaW5fdCAqZ2V0 X2NvdXJzZV90ZXJyYWluX2RhdGEoKTsKc2NhbGFyX3QgZ2V0X2NvdXJzZV9hbmdsZSgpOwp2b2lk IGdldF9jb3Vyc2VfZGltZW5zaW9ucyggc2NhbGFyX3QgKndpZHRoLCBzY2FsYXJfdCAqbGVuZ3Ro ICk7CnZvaWQgZ2V0X3BsYXlfZGltZW5zaW9ucyggc2NhbGFyX3QgKndpZHRoLCBzY2FsYXJfdCAq bGVuZ3RoICk7CnNjYWxhcl90IGdldF90ZXJyYWluX2Jhc2VfaGVpZ2h0KCBzY2FsYXJfdCBkaXN0 YW5jZSApOwpzY2FsYXJfdCBnZXRfdGVycmFpbl9tYXhfaGVpZ2h0KCBzY2FsYXJfdCBkaXN0YW5j ZSApOwp2b2lkIGdldF9jb3Vyc2VfZGl2aXNpb25zKCBpbnQgKm54LCBpbnQgKm55ICk7CnRyZWVf dCAqZ2V0X3RyZWVfbG9jcygpOwppbnQgZ2V0X251bV90cmVlcygpOwp2b2lkIHNldF9zdGFydF9w dCggcG9pbnQyZF90IHAgKTsKcG9pbnQyZF90IGdldF9zdGFydF9wdCgpOwpwb2x5aGVkcm9uX3Qg Z2V0X3RyZWVfcG9seWhlZHJvbiggaW50IHR5cGUgKTsKY2hhciAqZ2V0X3RyZWVfbmFtZShpbnQg dHlwZSk7CmNoYXIgKmdldF9jb3Vyc2VfYXV0aG9yKCk7CmNoYXIgKmdldF9jb3Vyc2VfbmFtZSgp OwpsaWdodF90ICpnZXRfY291cnNlX2xpZ2h0cygpOwp2b2lkIHNldF9jb3Vyc2VfbWlycm9yaW5n KCBib29sX3Qgc3RhdGUgKTsKYm9vbF90IGdldF9jb3Vyc2VfbWlycm9yaW5nKCApOwp2b2lkIGZp bGxfZ2xfYXJyYXlzKCk7CnZvaWQgZ2V0X2dsX2FycmF5cyggR0x1Ynl0ZSAqKnZlcnRleF9ub3Jt YWxfYXJyICk7Cgp2b2lkIHJlZ2lzdGVyX2NvdXJzZV9sb2FkX3RjbF9jYWxsYmFja3MoIFRjbF9J bnRlcnAgKmludGVycCApOwoKaXRlbV90ICpnZXRfaXRlbV9sb2NzKCk7CmludCBnZXRfbnVtX2l0 ZW1zKCk7CmNoYXIgKmdldF9pdGVtX25hbWUoaW50IHR5cGUpOwoKdHlwZWRlZiBzdHJ1Y3Qgewog ICAgY2hhciAqIG5hbWU7CiAgICBzY2FsYXJfdCBkaWFtLCBoZWlnaHQ7CiAgICBzY2FsYXJfdCB2 YXJ5OwogICAgcG9seWhlZHJvbl90IHBvbHk7CiAgICBjaGFyICogdGV4dHVyZTsKICAgIGludCBu dW1fdHJlZXM7CiAgICB1bnNpZ25lZCBjaGFyIHJlZCwgZ3JlZW4sIGJsdWU7CiAgICBsaXN0X3Qg cG9zOwogICAgbGlzdF9lbGVtX3QgaW5zZXJ0X3BvczsKfSB0cmVlX3R5cGVfdDsKCnR5cGVkZWYg c3RydWN0IHsKICAgIGNoYXIgKiBuYW1lOwogICAgY2hhciAqIHRleHR1cmU7CiAgICBzY2FsYXJf dCBkaWFtLCBoZWlnaHQ7CiAgICBzY2FsYXJfdCBhYm92ZV9ncm91bmQ7CiAgICB1bnNpZ25lZCBj aGFyIHJlZCwgZ3JlZW4sIGJsdWU7CiAgICBib29sX3Qgbm9jb2xsaXNpb247CiAgICBib29sX3Qg cmVzZXRfcG9pbnQ7CiAgICBsaXN0X3QgcG9zOwogICAgbGlzdF9lbGVtX3QgaW5zZXJ0X3BvczsK ICAgIGludCBudW1faXRlbXM7CiAgICBib29sX3QgdXNlX25vcm1hbDsKICAgIHZlY3Rvcl90IG5v cm1hbDsKfSBpdGVtX3R5cGVfdDsKCml0ZW1fdHlwZV90ICogZ2V0X2l0ZW1fdHlwZXMoKTsKaW50 IGdldF9udW1faXRlbV90eXBlcygpOwoKCgoKfQojIDE2ICJxdWFkdHJlZS5jcHAiIDIKIyAxICJm b2cuaCIgMQojIDIxICJmb2cuaCIKZXh0ZXJuICJDIgp7CgoKCgoKIyAxICJ0dXhyYWNlci5oIiAx CiMgMjkgImZvZy5oIiAyCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBib29sX3QgaXNfb247CiAgICBH TGludCBtb2RlOwogICAgR0xmbG9hdCBkZW5zaXR5OwogICAgR0xmbG9hdCBzdGFydDsKICAgIEdM ZmxvYXQgZW5kOwogICAgR0xmbG9hdCBjb2xvdXJbNF07Cn0gZm9nX3Q7Cgp2b2lkIHJlc2V0X2Zv ZygpOwp2b2lkIHNldHVwX2ZvZygpOwp2b2lkIGRpc2FibGVfZm9nKCk7CmJvb2xfdCBpc19mb2df b24oKTsKR0xmbG9hdCogZ2V0X2ZvZ19jb2xvdXIoKTsKdm9pZCByZWdpc3Rlcl9mb2dfY2FsbGJh Y2tzKCBUY2xfSW50ZXJwICppcCApOwoKCgoKfQojIDE3ICJxdWFkdHJlZS5jcHAiIDIKIyAxICJn bF91dGlsLmgiIDEKIyAyMSAiZ2xfdXRpbC5oIgpleHRlcm4gIkMiCnsKCgoKCgojIDEgInR1eHJh Y2VyLmgiIDEKIyAyOSAiZ2xfdXRpbC5oIiAyCiMgNTIgImdsX3V0aWwuaCIKIyAxICIvdXNyL2xv Y2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMSAzCiMgNTMgImdsX3V0aWwuaCIgMgoKCgoKCmV4dGVy biBQRk5HTExPQ0tBUlJBWVNFWFRQUk9DIGdsTG9ja0FycmF5c0VYVF9wOwpleHRlcm4gUEZOR0xV TkxPQ0tBUlJBWVNFWFRQUk9DIGdsVW5sb2NrQXJyYXlzRVhUX3A7Cgp0eXBlZGVmIGVudW0gewog ICAgR1VJLAogICAgR0FVR0VfQkFSUywKICAgIFRFWEZPTlQsCiAgICBURVhULAogICAgQ09VUlNF LAogICAgVFJFRVMsCiAgICBQQVJUSUNMRVMsCiAgICBQQVJUSUNMRV9TSEFET1dTLAogICAgQkFD S0dST1VORCwKICAgIFRVWCwKICAgIFRVWF9TSEFET1csCiAgICBTS1ksCiAgICBGT0dfUExBTkUs CiAgICBUUkFDS19NQVJLUywKICAgIE9WRVJMQVlTLAogICAgU1BMQVNIX1NDUkVFTgp9IFJlbmRl ck1vZGU7Cgp2b2lkIHNldF9nbF9vcHRpb25zKCBSZW5kZXJNb2RlIG1vZGUgKTsKCnZvaWQgY2hl Y2tfZ2xfZXJyb3IoKTsKCnZvaWQgY29weV90b19nbGZsb2F0X2FycmF5KCBHTGZsb2F0IGRlc3Rb XSwgc2NhbGFyX3Qgc3JjW10sIGludCBuICk7Cgp2b2lkIGluaXRfZ2xmbG9hdF9hcnJheSggaW50 IG51bSwgR0xmbG9hdCBhcnJbXSwgLi4uICk7Cgp2b2lkIGluaXRfb3BlbmdsX2V4dGVuc2lvbnMo KTsKCnZvaWQgcHJpbnRfZ2xfaW5mbygpOwoKCgoKfQojIDE4ICJxdWFkdHJlZS5jcHAiIDIKIyAx ICJjb3Vyc2VfcmVuZGVyLmgiIDEKIyAyMSAiY291cnNlX3JlbmRlci5oIgpleHRlcm4gIkMiCnsK CgoKCgp2ZWN0b3JfdCogZ2V0X2NvdXJzZV9ub3JtYWxzKCk7CnZvaWQgcmVzZXRfY291cnNlX2xp c3QoKTsKdm9pZCBjYWxjX25vcm1hbHMoKTsKdm9pZCBzZXR1cF9jb3Vyc2VfdGV4X2dlbigpOwp2 b2lkIHNldHVwX2NvdXJzZV9saWdodGluZygpOwp2b2lkIHJlbmRlcl9jb3Vyc2UoKTsKdm9pZCBk cmF3X2JhY2tncm91bmQoc2NhbGFyX3QgZm92LCBzY2FsYXJfdCBhc3BlY3QgKTsKdm9pZCBkcmF3 X3NreShwb2ludF90IHBvcyk7CnZvaWQgZHJhd190cmVlcygpIDsKdm9pZCBzZXRfY291cnNlX2Ns aXBwaW5nKCBib29sX3Qgc3RhdGUgKTsKdm9pZCBzZXRfY291cnNlX2V5ZV9wb2ludCggcG9pbnRf dCBwdCApOwp2b2lkIHNldF9jb3Vyc2VfZm9nKCBib29sX3Qgc3RhdGUpOwp2b2lkIGRyYXdfZm9n X3BsYW5lKCk7CgoKCgp9CiMgMTkgInF1YWR0cmVlLmNwcCIgMgoKIyAxICJxdWFkdHJlZS5ocHAi IDEKIyAxOCAicXVhZHRyZWUuaHBwIgojIDEgInR1eHJhY2VyLmgiIDEKIyAxOSAicXVhZHRyZWUu aHBwIiAyCiMgMSAidmlld2ZydXN0dW0uaCIgMQojIDIxICJ2aWV3ZnJ1c3R1bS5oIgpleHRlcm4g IkMiCnsKCgoKCgojIDEgInR1eHJhY2VyLmgiIDEKIyAyOSAidmlld2ZydXN0dW0uaCIgMgoKdHlw ZWRlZiBlbnVtIHsKICAgIE5vQ2xpcCwKICAgIFNvbWVDbGlwLAogICAgTm90VmlzaWJsZQp9IGNs aXBfcmVzdWx0X3Q7Cgp2b2lkIHNldHVwX3ZpZXdfZnJ1c3R1bSggcGxheWVyX2RhdGFfdCAqcGx5 ciwgc2NhbGFyX3QgbmVhciwgc2NhbGFyX3QgZmFyICk7CgpjbGlwX3Jlc3VsdF90IGNsaXBfYWFi Yl90b192aWV3X2ZydXN0dW0oIHBvaW50X3QgbWluLCBwb2ludF90IG1heCApOwoKcGxhbmVfdCBn ZXRfZmFyX2NsaXBfcGxhbmUoKTsKcGxhbmVfdCBnZXRfbGVmdF9jbGlwX3BsYW5lKCk7CnBsYW5l X3QgZ2V0X3JpZ2h0X2NsaXBfcGxhbmUoKTsKcGxhbmVfdCBnZXRfYm90dG9tX2NsaXBfcGxhbmUo KTsKCgoKCn0KIyAyMCAicXVhZHRyZWUuaHBwIiAyCgp0eXBlZGVmIGVudW0gewogICAgRWFzdCwK ICAgIFNvdXRoLAogICAgQ2VudGVyCn0gdmVydGV4X2xvY190OwoKdHlwZWRlZiB1bnNpZ25lZCBz aG9ydCB1aW50MTY7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMjsKdHlwZWRlZiBzaG9ydCBp bnQxNjsKdHlwZWRlZiBpbnQgaW50MzI7CgoKc3RydWN0IEhlaWdodE1hcEluZm8gewogICAgc2Nh bGFyX3QgKkRhdGE7CiAgICBpbnQgWE9yaWdpbiwgWk9yaWdpbjsKICAgIGludCBYU2l6ZSwgWlNp emU7CiAgICBpbnQgUm93V2lkdGg7CiAgICBpbnQgU2NhbGU7CgogICAgZmxvYXQgU2FtcGxlKGlu dCB4LCBpbnQgeikgY29uc3Q7Cn07CgoKc3RydWN0IFZlcnRJbmZvIHsKICAgIGZsb2F0IFk7Cn07 CgoKc3RydWN0IHF1YWRzcXVhcmU7CgoKCgpjbGFzcyBxdWFkY29ybmVyZGF0YSB7CnB1YmxpYzoK ICAgIGNvbnN0IHF1YWRjb3JuZXJkYXRhKiBQYXJlbnQ7CiAgICBxdWFkc3F1YXJlKiBTcXVhcmU7 CiAgICBpbnQgQ2hpbGRJbmRleDsKICAgIGludCBMZXZlbDsKICAgIGludCB4b3JnLCB6b3JnOwog ICAgVmVydEluZm8gVmVydHNbNF07Cn07CgoKc3RydWN0IHF1YWRzcXVhcmUgewogICAgcXVhZHNx dWFyZSogQ2hpbGRbNF07CgogICAgVmVydEluZm8gVmVydGV4WzVdOwogICAgZmxvYXQgRXJyb3Jb Nl07CiAgICBmbG9hdCBNaW5ZLCBNYXhZOwogICAgdW5zaWduZWQgY2hhciBFbmFibGVkRmxhZ3M7 CiAgICB1bnNpZ25lZCBjaGFyIFN1YkVuYWJsZWRDb3VudFsyXTsKICAgIGJvb2wgU3RhdGljOwog ICAgYm9vbCBEaXJ0eTsKCiAgICBib29sIEZvcmNlRWFzdFZlcnQ7CiAgICBib29sIEZvcmNlU291 dGhWZXJ0OwoKICAgIHN0YXRpYyBkb3VibGUgU2NhbGVYLCBTY2FsZVo7CiAgICBzdGF0aWMgaW50 IFJvd1NpemUsIE51bVJvd3M7CiAgICBzdGF0aWMgdGVycmFpbl90ICpUZXJyYWluOwogICAgc3Rh dGljIEdMdWludCBUZXhJZFtOdW1UZXJyYWluc107CiAgICBzdGF0aWMgR0x1aW50IEVudm1hcFRl eElkOwoKICAgIHN0YXRpYyBHTHVpbnQgKlZlcnRleEFycmF5SW5kaWNlczsKICAgIHN0YXRpYyBH THVpbnQgVmVydGV4QXJyYXlDb3VudGVyOwogICAgc3RhdGljIEdMdWludCBWZXJ0ZXhBcnJheU1p bklkeDsKICAgIHN0YXRpYyBHTHVpbnQgVmVydGV4QXJyYXlNYXhJZHg7CgogICAgc3RhdGljIHZv aWQgTWFrZVRyaSggaW50IGEsIGludCBiLCBpbnQgYywgaW50IHRlcnJhaW4gKTsKICAgIHN0YXRp YyB2b2lkIE1ha2VTcGVjaWFsVHJpKCBpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgdGVycmFpbiAp OwogICAgc3RhdGljIHZvaWQgTWFrZU5vQmxlbmRUcmkoIGludCBhLCBpbnQgYiwgaW50IGMsIGlu dCB0ZXJyYWluICk7CgogICAgc3RhdGljIHZvaWQgRHJhd1RyaXMoKTsKICAgIHN0YXRpYyB2b2lk IERyYXdFbnZtYXBUcmlzKCk7CiAgICBzdGF0aWMgdm9pZCBJbml0QXJyYXlDb3VudGVycygpOwoK CgogICAgcXVhZHNxdWFyZShxdWFkY29ybmVyZGF0YSogcGNkKTsKICAgIH5xdWFkc3F1YXJlKCk7 CgogICAgdm9pZCBBZGRIZWlnaHRNYXAoY29uc3QgcXVhZGNvcm5lcmRhdGEmIGNkLCBjb25zdCBI ZWlnaHRNYXBJbmZvJiBobSk7CiAgICB2b2lkIFN0YXRpY0N1bGxEYXRhKGNvbnN0IHF1YWRjb3Ju ZXJkYXRhJiBjZCwgZmxvYXQgVGhyZXNob2xkRGV0YWlsKTsKICAgIGZsb2F0IFJlY29tcHV0ZUVy cm9yKGNvbnN0IHF1YWRjb3JuZXJkYXRhJiBjZCk7CiAgICBpbnQgQ291bnROb2RlcygpOwoKICAg IHZvaWQgVXBkYXRlKGNvbnN0IHF1YWRjb3JuZXJkYXRhJiBjZCwgY29uc3QgZmxvYXQgVmlld2Vy TG9jYXRpb25bM10sIGZsb2F0IERldGFpbCk7CiAgICB2b2lkIFJlbmRlcihjb25zdCBxdWFkY29y bmVyZGF0YSYgY2QsIEdMdWJ5dGUgKnZuY19hcnJheSk7CgogICAgZmxvYXQgR2V0SGVpZ2h0KGNv bnN0IHF1YWRjb3JuZXJkYXRhJiBjZCwgZmxvYXQgeCwgZmxvYXQgeik7CgogICAgdm9pZCBTZXRT Y2FsZShkb3VibGUgeCwgZG91YmxlIHopOwogICAgdm9pZCBTZXRUZXJyYWluKHRlcnJhaW5fdCAq dGVycmFpbik7Cgpwcml2YXRlOgogICAgdm9pZCBFbmFibGVFZGdlVmVydGV4KGludCBpbmRleCwg Ym9vbCBJbmNyZW1lbnRDb3VudCwgY29uc3QgcXVhZGNvcm5lcmRhdGEmIGNkKTsKICAgIHF1YWRz cXVhcmUqIEVuYWJsZURlc2NlbmRhbnQoaW50IGNvdW50LCBpbnQgc3RhY2tbXSwgY29uc3QgcXVh ZGNvcm5lcmRhdGEmIGNkKTsKICAgIHZvaWQgRW5hYmxlQ2hpbGQoaW50IGluZGV4LCBjb25zdCBx dWFkY29ybmVyZGF0YSYgY2QpOwogICAgdm9pZCBOb3RpZnlDaGlsZERpc2FibGUoY29uc3QgcXVh ZGNvcm5lcmRhdGEmIGNkLCBpbnQgaW5kZXgpOwoKICAgIHZvaWQgUmVzZXRUcmVlKCk7CiAgICB2 b2lkIFN0YXRpY0N1bGxBdXgoY29uc3QgcXVhZGNvcm5lcmRhdGEmIGNkLCBmbG9hdCBUaHJlc2hv bGREZXRhaWwsIGludCBUYXJnZXRMZXZlbCk7CgogICAgcXVhZHNxdWFyZSogR2V0TmVpZ2hib3Io aW50IGRpciwgY29uc3QgcXVhZGNvcm5lcmRhdGEmIGNkKTsKICAgIHZvaWQgQ3JlYXRlQ2hpbGQo aW50IGluZGV4LCBjb25zdCBxdWFkY29ybmVyZGF0YSYgY2QpOwogICAgdm9pZCBTZXR1cENvcm5l ckRhdGEocXVhZGNvcm5lcmRhdGEqIHEsIGNvbnN0IHF1YWRjb3JuZXJkYXRhJiBwZCwgaW50IENo aWxkSW5kZXgpOwoKICAgIHZvaWQgVXBkYXRlQXV4KGNvbnN0IHF1YWRjb3JuZXJkYXRhJiBjZCwg Y29uc3QgZmxvYXQgVmlld2VyTG9jYXRpb25bM10sIGZsb2F0IENlbnRlckVycm9yLCBjbGlwX3Jl c3VsdF90IHZpcyk7CiAgICB2b2lkIFJlbmRlckF1eChjb25zdCBxdWFkY29ybmVyZGF0YSYgY2Qs IGNsaXBfcmVzdWx0X3QgdmlzLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0ZXJyYWlu KTsKICAgIHZvaWQgU2V0U3RhdGljKGNvbnN0IHF1YWRjb3JuZXJkYXRhJiBjZCk7CiAgICB2b2lk IEluaXRWZXJ0KGludCBpLCBpbnQgeCwgaW50IHopOwoKICAgIGJvb2wgVmVydGV4VGVzdChpbnQg eCwgZmxvYXQgeSwgaW50IHosIGZsb2F0IGVycm9yLCBjb25zdCBmbG9hdCBWaWV3ZXJbM10sIGlu dCBsZXZlbCwgdmVydGV4X2xvY190IHZlcnRleF9sb2MgKTsKICAgIGJvb2wgQm94VGVzdChpbnQg eCwgaW50IHosIGZsb2F0IHNpemUsIGZsb2F0IG1pbnksIGZsb2F0IG1heHksIGZsb2F0IGVycm9y LCBjb25zdCBmbG9hdCBWaWV3ZXJbM10pOwogICAgY2xpcF9yZXN1bHRfdCBDbGlwU3F1YXJlKCBj b25zdCBxdWFkY29ybmVyZGF0YSYgY2QgKTsKfTsKIyAyMSAicXVhZHRyZWUuY3BwIiAyCiMgMSAi cXVhZGdlb20uaHBwIiAxCiMgMTUgInF1YWRnZW9tLmhwcCIKIyAxICJ0dXhyYWNlci5oIiAxCiMg MTYgInF1YWRnZW9tLmhwcCIgMgoKY2xhc3MgdmVjdG9yCgp7CnB1YmxpYzoKICAgICAgICB2ZWN0 b3IoKSB7fQogICAgICAgIHZlY3RvcihmbG9hdCBYLCBmbG9hdCBZLCBmbG9hdCBaKSB7IHhbMF0g PSBYOyB4WzFdID0gWTsgeFsyXSA9IFo7IH0KICAgICAgICB2ZWN0b3IoY29uc3QgdmVjdG9yJiB2 KSB7IHhbMF0gPSB2LnhbMF07IHhbMV0gPSB2LnhbMV07IHhbMl0gPSB2LnhbMl07IH0KCiAgICAg ICAgb3BlcmF0b3IgY29uc3QgZmxvYXQqKCkgY29uc3QgeyByZXR1cm4gJnhbMF07IH0KCiAgICAg ICAgZmxvYXQgR2V0KGludCBlbGVtZW50KSBjb25zdCB7IHJldHVybiB4W2VsZW1lbnRdOyB9CiAg ICAgICAgdm9pZCBTZXQoaW50IGVsZW1lbnQsIGZsb2F0IE5ld1ZhbHVlKSB7IHhbZWxlbWVudF0g PSBOZXdWYWx1ZTsgfQogICAgICAgIGZsb2F0IFgoKSBjb25zdCB7IHJldHVybiB4WzBdOyB9CiAg ICAgICAgZmxvYXQgWSgpIGNvbnN0IHsgcmV0dXJuIHhbMV07IH0KICAgICAgICBmbG9hdCBaKCkg Y29uc3QgeyByZXR1cm4geFsyXTsgfQogICAgICAgIHZvaWQgU2V0WChmbG9hdCBuZXd4KSB7IHhb MF0gPSBuZXd4OyB9CiAgICAgICAgdm9pZCBTZXRZKGZsb2F0IG5ld3kpIHsgeFsxXSA9IG5ld3k7 IH0KICAgICAgICB2b2lkIFNldFooZmxvYXQgbmV3eikgeyB4WzJdID0gbmV3ejsgfQogICAgICAg IHZvaWQgU2V0WFlaKGZsb2F0IG5ld3gsIGZsb2F0IG5ld3ksIGZsb2F0IG5ld3opIHsgeFswXSA9 IG5ld3g7IHhbMV0gPSBuZXd5OyB4WzJdID0gbmV3ejsgfQoKICAgICAgICB2ZWN0b3Igb3BlcmF0 b3IrKGNvbnN0IHZlY3RvciYgdikgY29uc3Q7CiAgICAgICAgdmVjdG9yIG9wZXJhdG9yLShjb25z dCB2ZWN0b3ImIHYpIGNvbnN0OwogICAgICAgIHZlY3RvciBvcGVyYXRvci0oKSBjb25zdDsKICAg ICAgICBmbG9hdCBvcGVyYXRvciooY29uc3QgdmVjdG9yJiB2KSBjb25zdDsKICAgICAgICB2ZWN0 b3Igb3BlcmF0b3IqKGZsb2F0IGYpIGNvbnN0OwogICAgICAgIHZlY3RvciBvcGVyYXRvci8oZmxv YXQgZikgY29uc3QgeyByZXR1cm4gdGhpcy0+b3BlcmF0b3IqKDEuMCAvIGYpOyB9CiAgICAgICAg dmVjdG9yIGNyb3NzKGNvbnN0IHZlY3RvciYgdikgY29uc3Q7CgogICAgICAgIHZlY3RvciYgbm9y bWFsaXplKCk7CiAgICAgICAgdmVjdG9yJiBvcGVyYXRvcj0oY29uc3QgdmVjdG9yJiB2KSB7IHhb MF0gPSB2LnhbMF07IHhbMV0gPSB2LnhbMV07IHhbMl0gPSB2LnhbMl07IHJldHVybiAqdGhpczsg fQogICAgICAgIHZlY3RvciYgb3BlcmF0b3IrPShjb25zdCB2ZWN0b3ImIHYpOwogICAgICAgIHZl Y3RvciYgb3BlcmF0b3ItPShjb25zdCB2ZWN0b3ImIHYpOwogICAgICAgIHZlY3RvciYgb3BlcmF0 b3IqPShmbG9hdCBmKTsKICAgICAgICB2ZWN0b3ImIG9wZXJhdG9yLz0oZmxvYXQgZikgeyByZXR1 cm4gdGhpcy0+b3BlcmF0b3IqPSgxLjAgLyBmKTsgfQoKICAgICAgICBmbG9hdCBtYWduaXR1ZGUo KSBjb25zdDsKICAgICAgICBmbG9hdCBzcXJtYWcoKSBjb25zdDsKCgoKCgogICAgICAgIGJvb2wg Y2hlY2tuYW4oKSBjb25zdDsKcHJpdmF0ZToKICAgICAgICBmbG9hdCB4WzNdOwp9OwojIDcxICJx dWFkZ2VvbS5ocHAiCmlubGluZSBmbG9hdCB2ZWN0b3I6Om9wZXJhdG9yKihjb25zdCB2ZWN0b3Im IHYpIGNvbnN0Cgp7CiAgICAgICAgZmxvYXQgcmVzdWx0OwogICAgICAgIHJlc3VsdCA9IHhbMF0g KiB2LnhbMF07CiAgICAgICAgcmVzdWx0ICs9IHhbMV0gKiB2LnhbMV07CiAgICAgICAgcmVzdWx0 ICs9IHhbMl0gKiB2LnhbMl07CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKfQoKCmlubGluZSB2ZWN0 b3ImIHZlY3Rvcjo6b3BlcmF0b3IrPShjb25zdCB2ZWN0b3ImIHYpCgp7CiAgICAgICAgeFswXSAr PSB2LnhbMF07CiAgICAgICAgeFsxXSArPSB2LnhbMV07CiAgICAgICAgeFsyXSArPSB2LnhbMl07 CiAgICAgICAgcmV0dXJuICp0aGlzOwp9CgoKaW5saW5lIHZlY3RvciYgdmVjdG9yOjpvcGVyYXRv ci09KGNvbnN0IHZlY3RvciYgdikKCnsKICAgICAgICB4WzBdIC09IHYueFswXTsKICAgICAgICB4 WzFdIC09IHYueFsxXTsKICAgICAgICB4WzJdIC09IHYueFsyXTsKICAgICAgICByZXR1cm4gKnRo aXM7Cn0KCgoKCgoKCmV4dGVybiB2ZWN0b3IgWmVyb1ZlY3RvciwgWEF4aXMsIFlBeGlzLCBaQXhp czsKCgpjbGFzcyBxdWF0ZXJuaW9uOwoKCmNsYXNzIG1hdHJpeAoKewpwdWJsaWM6CiAgICAgICAg bWF0cml4KCkgeyBJZGVudGl0eSgpOyB9CgogICAgICAgIHZvaWQgSWRlbnRpdHkoKTsKICAgICAg ICB2b2lkIFZpZXcoY29uc3QgdmVjdG9yJiBWaWV3Tm9ybWFsLCBjb25zdCB2ZWN0b3ImIFZpZXdV cCwgY29uc3QgdmVjdG9yJiBWaWV3TG9jYXRpb24pOwogICAgICAgIHZvaWQgT3JpZW50KGNvbnN0 IHZlY3RvciYgT2JqZWN0RGlyZWN0aW9uLCBjb25zdCB2ZWN0b3ImIE9iamVjdFVwLCBjb25zdCB2 ZWN0b3ImIE9iamVjdExvY2F0aW9uKTsKCiAgICAgICAgc3RhdGljIHZvaWQgQ29tcG9zZShtYXRy aXgqIGRlc3QsIGNvbnN0IG1hdHJpeCYgbGVmdCwgY29uc3QgbWF0cml4JiByaWdodCk7CiAgICAg ICAgdmVjdG9yIG9wZXJhdG9yKihjb25zdCB2ZWN0b3ImIHYpIGNvbnN0OwogICAgICAgIG1hdHJp eCBvcGVyYXRvciooY29uc3QgbWF0cml4JiBtKSBjb25zdDsKCgogICAgICAgIG1hdHJpeCYgb3Bl cmF0b3IqPShmbG9hdCBmKTsKICAgICAgICBtYXRyaXgmIG9wZXJhdG9yKz0oY29uc3QgbWF0cml4 JiBtKTsKCiAgICAgICAgdm9pZCBJbnZlcnQoKTsKICAgICAgICB2b2lkIEludmVydFJvdGF0aW9u KCk7CiAgICAgICAgdm9pZCBOb3JtYWxpemVSb3RhdGlvbigpOwogICAgICAgIHZvaWQgQXBwbHko dmVjdG9yKiByZXN1bHQsIGNvbnN0IHZlY3RvciYgdikgY29uc3Q7CiAgICAgICAgdm9pZCBBcHBs eVJvdGF0aW9uKHZlY3RvciogcmVzdWx0LCBjb25zdCB2ZWN0b3ImIHYpIGNvbnN0OwogICAgICAg IHZvaWQgQXBwbHlJbnZlcnNlKHZlY3RvciogcmVzdWx0LCBjb25zdCB2ZWN0b3ImIHYpIGNvbnN0 OwogICAgICAgIHZvaWQgQXBwbHlJbnZlcnNlUm90YXRpb24odmVjdG9yKiByZXN1bHQsIGNvbnN0 IHZlY3RvciYgdikgY29uc3Q7CiAgICAgICAgdm9pZCBUcmFuc2xhdGUoY29uc3QgdmVjdG9yJiB2 KTsKICAgICAgICB2b2lkIFNldE9yaWVudGF0aW9uKGNvbnN0IHF1YXRlcm5pb24mIHEpOwogICAg ICAgIHF1YXRlcm5pb24gR2V0T3JpZW50YXRpb24oKSBjb25zdDsKCiAgICAgICAgdm9pZCBTZXRD b2x1bW4oaW50IGNvbHVtbiwgY29uc3QgdmVjdG9yJiB2KSB7IG1bY29sdW1uXSA9IHY7IH0KICAg ICAgICBjb25zdCB2ZWN0b3ImIEdldENvbHVtbihpbnQgY29sdW1uKSBjb25zdCB7IHJldHVybiBt W2NvbHVtbl07IH0KcHJpdmF0ZToKICAgICAgICB2ZWN0b3IgbVs0XTsKfTsKCgoKCmNsYXNzIHF1 YXRlcm5pb24gewpwdWJsaWM6CiAgICAgICAgcXVhdGVybmlvbigpIDogUygxKSwgVihaZXJvVmVj dG9yKSB7fQogICAgICAgIHF1YXRlcm5pb24oY29uc3QgcXVhdGVybmlvbiYgcSkgOiBTKHEuUyks IFYocS5WKSB7fQogICAgICAgIHF1YXRlcm5pb24oZmxvYXQgcywgY29uc3QgdmVjdG9yJiB2KSA6 IFMocyksIFYodikge30KCiAgICAgICAgcXVhdGVybmlvbihjb25zdCB2ZWN0b3ImIEF4aXMsIGZs b2F0IEFuZ2xlKTsKCiAgICAgICAgZmxvYXQgR2V0UygpIGNvbnN0IHsgcmV0dXJuIFM7IH0KICAg ICAgICBjb25zdCB2ZWN0b3ImIEdldFYoKSBjb25zdCB7IHJldHVybiBWOyB9CiAgICAgICAgdm9p ZCBTZXRTKGZsb2F0IHMpIHsgUyA9IHM7IH0KICAgICAgICB2b2lkIFNldFYoY29uc3QgdmVjdG9y JiB2KSB7IFYgPSB2OyB9CgogICAgICAgIGZsb2F0IEdldChpbnQgaSkgY29uc3QgeyBpZiAoaT09 MCkgcmV0dXJuIEdldFMoKTsgZWxzZSByZXR1cm4gVi5HZXQoaS0xKTsgfQogICAgICAgIHZvaWQg U2V0KGludCBpLCBmbG9hdCBmKSB7IGlmIChpPT0wKSBTID0gZjsgZWxzZSBWLlNldChpLTEsIGYp OyB9CgogICAgICAgIHF1YXRlcm5pb24gb3BlcmF0b3IqKGNvbnN0IHF1YXRlcm5pb24mIHEpIGNv bnN0OwogICAgICAgIHF1YXRlcm5pb24mIG9wZXJhdG9yKj0oZmxvYXQgZikgeyBTICo9IGY7IFYg Kj0gZjsgcmV0dXJuICp0aGlzOyB9CiAgICAgICAgcXVhdGVybmlvbiYgb3BlcmF0b3IrPShjb25z dCBxdWF0ZXJuaW9uJiBxKSB7IFMgKz0gcS5TOyBWICs9IHEuVjsgcmV0dXJuICp0aGlzOyB9Cgog ICAgICAgIHF1YXRlcm5pb24mIG9wZXJhdG9yPShjb25zdCBxdWF0ZXJuaW9uJiBxKSB7IFMgPSBx LlM7IFYgPSBxLlY7IHJldHVybiAqdGhpczsgfQogICAgICAgIHF1YXRlcm5pb24mIG5vcm1hbGl6 ZSgpOwogICAgICAgIHF1YXRlcm5pb24mIG9wZXJhdG9yKj0oY29uc3QgcXVhdGVybmlvbiYgcSk7 CiAgICAgICAgdm9pZCBBcHBseVJvdGF0aW9uKHZlY3RvciogcmVzdWx0LCBjb25zdCB2ZWN0b3Im IHYpOwoKICAgICAgICBxdWF0ZXJuaW9uIGxlcnAoY29uc3QgcXVhdGVybmlvbiYgcSwgZmxvYXQg ZikgY29uc3Q7CnByaXZhdGU6CiAgICAgICAgZmxvYXQgUzsKICAgICAgICB2ZWN0b3IgVjsKfTsK IyAyMiAicXVhZHRyZWUuY3BwIiAyCiMgNTAgInF1YWR0cmVlLmNwcCIKR0x1aW50IHF1YWRzcXVh cmU6OlRleElkW051bVRlcnJhaW5zXTsKR0x1aW50IHF1YWRzcXVhcmU6OkVudm1hcFRleElkOwpH THVpbnQgKnF1YWRzcXVhcmU6OlZlcnRleEFycmF5SW5kaWNlcyA9IChHTHVpbnQqKSBfX251bGw7 CkdMdWludCBxdWFkc3F1YXJlOjpWZXJ0ZXhBcnJheUNvdW50ZXI7CkdMdWludCBxdWFkc3F1YXJl OjpWZXJ0ZXhBcnJheU1pbklkeDsKR0x1aW50IHF1YWRzcXVhcmU6OlZlcnRleEFycmF5TWF4SWR4 OwoKcXVhZHNxdWFyZTo6cXVhZHNxdWFyZShxdWFkY29ybmVyZGF0YSogcGNkKQoKewogICAgcGNk LT5TcXVhcmUgPSB0aGlzOwoKCgoKCiAgICBTdGF0aWMgPSBmYWxzZTsKCiAgICBpbnQgaTsKICAg IGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICAgICBDaGlsZFtpXSA9IChxdWFkc3F1YXJl KikgX19udWxsOwogICAgfQoKICAgIEVuYWJsZWRGbGFncyA9IDA7CgogICAgZm9yIChpID0gMDsg aSA8IDI7IGkrKykgewogICAgICAgIFN1YkVuYWJsZWRDb3VudFtpXSA9IDA7CiAgICB9CgoKCiAg ICBWZXJ0ZXhbMF0uWSA9IDAuMjUgKiAocGNkLT5WZXJ0c1swXS5ZICsgcGNkLT5WZXJ0c1sxXS5Z ICsgcGNkLT5WZXJ0c1syXS5ZICsgcGNkLT5WZXJ0c1szXS5ZKTsKICAgIFZlcnRleFsxXS5ZID0g MC41ICogKHBjZC0+VmVydHNbM10uWSArIHBjZC0+VmVydHNbMF0uWSk7CiAgICBWZXJ0ZXhbMl0u WSA9IDAuNSAqIChwY2QtPlZlcnRzWzBdLlkgKyBwY2QtPlZlcnRzWzFdLlkpOwogICAgVmVydGV4 WzNdLlkgPSAwLjUgKiAocGNkLT5WZXJ0c1sxXS5ZICsgcGNkLT5WZXJ0c1syXS5ZKTsKICAgIFZl cnRleFs0XS5ZID0gMC41ICogKHBjZC0+VmVydHNbMl0uWSArIHBjZC0+VmVydHNbM10uWSk7Cgog ICAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykgewogICAgICAgIEVycm9yW2ldID0gMDsKICAgIH0K ICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICAgICBFcnJvcltpKzJdID0gZmFicygo VmVydGV4WzBdLlkgKyBwY2QtPlZlcnRzW2ldLlkpIC0gKFZlcnRleFtpKzFdLlkgKyBWZXJ0ZXhb KChpKzEpJjMpICsgMV0uWSkpICogMC4yNTsKICAgIH0KCgogICAgTWluWSA9IE1heFkgPSBwY2Qt PlZlcnRzWzBdLlk7CiAgICBmb3IgKGkgPSAxOyBpIDwgNDsgaSsrKSB7CiAgICAgICAgZmxvYXQg eSA9IHBjZC0+VmVydHNbaV0uWTsKICAgICAgICBpZiAoeSA8IE1pblkpIE1pblkgPSB5OwogICAg ICAgIGlmICh5ID4gTWF4WSkgTWF4WSA9IHk7CiAgICB9CgogICAgaWYgKCBwY2QtPlBhcmVudCA9 PSBfX251bGwgKSB7CiAgICAgICAgcHJpbnRfZGVidWcoIERFQlVHX1FVQURUUkVFLCAiaW5pdGlh bGl6aW5nIHJvb3Qgbm9kZSIgKTsKCgogICAgICAgIGlmICghZ2V0X3RleHR1cmVfYmluZGluZygi c25vdyIsICYoVGV4SWRbU25vd10pKSkgewogICAgICAgICAgICBUZXhJZFtTbm93XSA9IDA7CiAg ICAgICAgfQogICAgICAgIGlmICghZ2V0X3RleHR1cmVfYmluZGluZygiaWNlIiwgJlRleElkW0lj ZV0pKSB7CiAgICAgICAgICAgIFRleElkW0ljZV0gPSAwOwogICAgICAgIH0KICAgICAgICBpZiAo IWdldF90ZXh0dXJlX2JpbmRpbmcoInJvY2siLCAmVGV4SWRbUm9ja10pKSB7CiAgICAgICAgICAg IFRleElkW1JvY2tdID0gMDsKICAgICAgICB9CiAgICAgICAgaWYgKCAhZ2V0X3RleHR1cmVfYmlu ZGluZyggInRlcnJhaW5fZW52bWFwIiwgJkVudm1hcFRleElkICkgKSB7CiAgICAgICAgICAgIEVu dm1hcFRleElkID0gMDsKICAgICAgICB9CgogICAgICAgIFRlcnJhaW4gPSBnZXRfY291cnNlX3Rl cnJhaW5fZGF0YSgpOwogICAgfQp9CgoKcXVhZHNxdWFyZTo6fnF1YWRzcXVhcmUoKQoKewoKICAg IGludCBpOwogICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewogICAgICAgIGlmIChDaGlsZFtp XSkgZGVsZXRlIENoaWxkW2ldOwogICAgICAgIENoaWxkW2ldID0gKHF1YWRzcXVhcmUqKSBfX251 bGw7CiAgICB9Cn0KCgp2b2lkIHF1YWRzcXVhcmU6OlNldFN0YXRpYyhjb25zdCBxdWFkY29ybmVy ZGF0YSYgY2QpCgoKCnsKICAgIGlmIChTdGF0aWMgPT0gZmFsc2UpIHsKICAgICAgICBTdGF0aWMg PSB0cnVlOwoKCiAgICAgICAgaWYgKGNkLlBhcmVudCAmJiBjZC5QYXJlbnQtPlNxdWFyZSkgewog ICAgICAgICAgICBjZC5QYXJlbnQtPlNxdWFyZS0+U2V0U3RhdGljKCpjZC5QYXJlbnQpOwogICAg ICAgIH0KICAgIH0KfQoKCmludCBxdWFkc3F1YXJlOjpDb3VudE5vZGVzKCkKCnsKICAgIGludCBj b3VudCA9IDE7CgoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAgICAgICAgaWYg KENoaWxkW2ldKSBjb3VudCArPSBDaGlsZFtpXS0+Q291bnROb2RlcygpOwogICAgfQoKICAgIHJl dHVybiBjb3VudDsKfQoKCmZsb2F0IHF1YWRzcXVhcmU6OkdldEhlaWdodChjb25zdCBxdWFkY29y bmVyZGF0YSYgY2QsIGZsb2F0IHgsIGZsb2F0IHopCgp7CiAgICBpbnQgaGFsZiA9IDEgPDwgY2Qu TGV2ZWw7CgogICAgZmxvYXQgbHggPSAoeCAtIGNkLnhvcmcpIC8gZmxvYXQoaGFsZik7CiAgICBm bG9hdCBseiA9ICh6IC0gY2Quem9yZykgLyBmbG9hdChoYWxmKTsKCiAgICBpbnQgaXggPSAoaW50 KSBmbG9vcihseCk7CiAgICBpbnQgaXogPSAoaW50KSBmbG9vcihseik7CgoKICAgIGlmIChpeCA8 IDApIGl4ID0gMDsKICAgIGlmIChpeCA+IDEpIGl4ID0gMTsKICAgIGlmIChpeiA8IDApIGl6ID0g MDsKICAgIGlmIChpeiA+IDEpIGl6ID0gMTsKCiAgICBpbnQgaW5kZXggPSBpeCBeIChpeiBeIDEp ICsgKGl6IDw8IDEpOwogICAgaWYgKENoaWxkW2luZGV4XSAmJiBDaGlsZFtpbmRleF0tPlN0YXRp YykgewoKICAgICAgICBxdWFkY29ybmVyZGF0YSBxOwogICAgICAgIFNldHVwQ29ybmVyRGF0YSgm cSwgY2QsIGluZGV4KTsKICAgICAgICByZXR1cm4gQ2hpbGRbaW5kZXhdLT5HZXRIZWlnaHQocSwg eCwgeik7CiAgICB9CgoKICAgIGx4IC09IGl4OwogICAgaWYgKGx4IDwgMCkgbHggPSAwOwogICAg aWYgKGx4ID4gMSkgbHggPSAxOwoKICAgIGx6IC09IGl6OwogICAgaWYgKGx4IDwgMCkgbHogPSAw OwogICAgaWYgKGx6ID4gMSkgbHogPSAxOwoKICAgIGZsb2F0IHMwMCwgczAxLCBzMTAsIHMxMTsK ICAgIHN3aXRjaCAoaW5kZXgpIHsKICAgIGRlZmF1bHQ6CiAgICBjYXNlIDA6CiAgICAgICAgczAw ID0gVmVydGV4WzJdLlk7CiAgICAgICAgczAxID0gY2QuVmVydHNbMF0uWTsKICAgICAgICBzMTAg PSBWZXJ0ZXhbMF0uWTsKICAgICAgICBzMTEgPSBWZXJ0ZXhbMV0uWTsKICAgICAgICBicmVhazsK ICAgIGNhc2UgMToKICAgICAgICBzMDAgPSBjZC5WZXJ0c1sxXS5ZOwogICAgICAgIHMwMSA9IFZl cnRleFsyXS5ZOwogICAgICAgIHMxMCA9IFZlcnRleFszXS5ZOwogICAgICAgIHMxMSA9IFZlcnRl eFswXS5ZOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAyOgogICAgICAgIHMwMCA9IFZlcnRleFsz XS5ZOwogICAgICAgIHMwMSA9IFZlcnRleFswXS5ZOwogICAgICAgIHMxMCA9IGNkLlZlcnRzWzJd Llk7CiAgICAgICAgczExID0gVmVydGV4WzRdLlk7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIDM6 CiAgICAgICAgczAwID0gVmVydGV4WzBdLlk7CiAgICAgICAgczAxID0gVmVydGV4WzFdLlk7CiAg ICAgICAgczEwID0gVmVydGV4WzRdLlk7CiAgICAgICAgczExID0gY2QuVmVydHNbM10uWTsKICAg ICAgICBicmVhazsKICAgIH0KCiAgICByZXR1cm4gKHMwMCAqICgxLWx4KSArIHMwMSAqIGx4KSAq ICgxIC0gbHopICsgKHMxMCAqICgxLWx4KSArIHMxMSAqIGx4KSAqIGx6Owp9CgoKcXVhZHNxdWFy ZSogcXVhZHNxdWFyZTo6R2V0TmVpZ2hib3IoaW50IGRpciwgY29uc3QgcXVhZGNvcm5lcmRhdGEm IGNkKQoKCgp7CgoKCiAgICBpZiAoY2QuUGFyZW50ID09IDApIHJldHVybiAwOwoKCiAgICBxdWFk c3F1YXJlKiBwID0gMDsKCiAgICBpbnQgaW5kZXggPSBjZC5DaGlsZEluZGV4IF4gMSBeICgoZGly ICYgMSkgPDwgMSk7CiAgICBib29sIFNhbWVQYXJlbnQgPSAoKGRpciAtIGNkLkNoaWxkSW5kZXgp ICYgMikgPyB0cnVlIDogZmFsc2U7CgogICAgaWYgKFNhbWVQYXJlbnQpIHsKICAgICAgICBwID0g Y2QuUGFyZW50LT5TcXVhcmU7CiAgICB9IGVsc2UgewogICAgICAgIHAgPSBjZC5QYXJlbnQtPlNx dWFyZS0+R2V0TmVpZ2hib3IoZGlyLCAqY2QuUGFyZW50KTsKCiAgICAgICAgaWYgKHAgPT0gMCkg cmV0dXJuIDA7CiAgICB9CgogICAgcXVhZHNxdWFyZSogbiA9IHAtPkNoaWxkW2luZGV4XTsKCiAg ICByZXR1cm4gbjsKfQoKZmxvYXQgcXVhZHNxdWFyZTo6UmVjb21wdXRlRXJyb3IoY29uc3QgcXVh ZGNvcm5lcmRhdGEmIGNkKQoKCgp7CiAgICBpbnQgaTsKICAgIGludCBqOwogICAgaW50IHQ7CiAg ICBpbnQgaGFsZiA9IDEgPDwgY2QuTGV2ZWw7CiAgICBpbnQgd2hvbGUgPSBoYWxmIDw8IDE7CiAg ICBmbG9hdCB0ZXJyYWluX2Vycm9yOwoKCiAgICBmbG9hdCBtYXhlcnJvciA9IDA7CgoKICAgIGZs b2F0IGU7CiAgICBpZiAoY2QuQ2hpbGRJbmRleCAmIDEpIHsKICAgICAgICBlID0gZmFicyhWZXJ0 ZXhbMF0uWSAtIChjZC5WZXJ0c1sxXS5ZICsgY2QuVmVydHNbM10uWSkgKiAwLjUpOwogICAgfSBl bHNlIHsKICAgICAgICBlID0gZmFicyhWZXJ0ZXhbMF0uWSAtIChjZC5WZXJ0c1swXS5ZICsgY2Qu VmVydHNbMl0uWSkgKiAwLjUpOwogICAgfQogICAgaWYgKGUgPiBtYXhlcnJvcikgbWF4ZXJyb3Ig PSBlOwoKCiAgICBNYXhZID0gVmVydGV4WzBdLlk7CiAgICBNaW5ZID0gVmVydGV4WzBdLlk7CgoK ICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICAgICBmbG9hdCB5ID0gY2QuVmVydHNb aV0uWTsKICAgICAgICBpZiAoeSA8IE1pblkpIE1pblkgPSB5OwogICAgICAgIGlmICh5ID4gTWF4 WSkgTWF4WSA9IHk7CiAgICB9CgoKICAgIGUgPSBmYWJzKFZlcnRleFsxXS5ZIC0gKGNkLlZlcnRz WzBdLlkgKyBjZC5WZXJ0c1szXS5ZKSAqIDAuNSk7CiAgICBpZiAoZSA+IG1heGVycm9yKSBtYXhl cnJvciA9IGU7CiAgICBFcnJvclswXSA9IGU7CgogICAgZSA9IGZhYnMoVmVydGV4WzRdLlkgLSAo Y2QuVmVydHNbMl0uWSArIGNkLlZlcnRzWzNdLlkpICogMC41KTsKICAgIGlmIChlID4gbWF4ZXJy b3IpIG1heGVycm9yID0gZTsKICAgIEVycm9yWzFdID0gZTsKCgogICAgaWYgKCBjZC5MZXZlbCA9 PSAwICYmIGNkLnhvcmcgPD0gUm93U2l6ZS0xICYmIGNkLnpvcmcgPD0gTnVtUm93cy0xICkgewoK CiAgICAgICAgaW50IHggPSBjZC54b3JnICsgaGFsZjsKICAgICAgICBpbnQgeiA9IGNkLnpvcmcg KyB3aG9sZTsKICAgICAgICBpbnQgaWR4ID0geCArIHogKiBSb3dTaXplOwogICAgICAgIGJvb2wg ZGlmZmVyZW50X3RlcnJhaW5zID0gZmFsc2U7CgogICAgICAgIHRlcnJhaW5fZXJyb3IgPSAwLmY7 CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOwoKICAgICAgICBpZiAoIHggPCBSb3dTaXplICYmIHogPCBOdW1Sb3dzICkg ewoKICAgICAgICAgICAgaWYgKCB4IDwgUm93U2l6ZSAtIDEgKSB7CiAgICAgICAgICAgICAgICBp ZiAoIFRlcnJhaW5baWR4XSAhPSBUZXJyYWluW2lkeCsxXSApIHsKICAgICAgICAgICAgICAgICAg ICBkaWZmZXJlbnRfdGVycmFpbnMgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAg ICB9CiAgICAgICAgICAgIGlmICggeiA+PSAxICkgewogICAgICAgICAgICAgICAgaWR4IC09IFJv d1NpemU7CiAgICAgICAgICAgICAgICBpZiAoIFRlcnJhaW5baWR4XSAhPSBUZXJyYWluW2lkeCsx XSApIHsKICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbnRfdGVycmFpbnMgPSB0cnVlOwogICAg ICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIGRpZmZlcmVudF90 ZXJyYWlucyApIHsKICAgICAgICAgICAgICAgIEZvcmNlU291dGhWZXJ0ID0gdHJ1ZTsKICAgICAg ICAgICAgICAgIHRlcnJhaW5fZXJyb3IgPSAwLjEgKiB3aG9sZSAqIHdob2xlOwogICAgICAgICAg ICB9IGVsc2UgewogICAgICAgICAgICAgICAgRm9yY2VTb3V0aFZlcnQgPSBmYWxzZTsKICAgICAg ICAgICAgfQoKICAgICAgICAgICAgaWYgKCB0ZXJyYWluX2Vycm9yID4gRXJyb3JbMF0gKSB7CiAg ICAgICAgICAgICAgICBFcnJvclswXSA9IHRlcnJhaW5fZXJyb3I7CiAgICAgICAgICAgIH0KICAg ICAgICAgICAgaWYgKCBFcnJvclswXSA+IG1heGVycm9yICkgewogICAgICAgICAgICAgICAgbWF4 ZXJyb3IgPSBFcnJvclswXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCgogICAgICAgIHggPSBj ZC54b3JnICsgd2hvbGU7CiAgICAgICAgeiA9IGNkLnpvcmcgKyBoYWxmOwogICAgICAgIGlkeCA9 IHggKyB6ICogUm93U2l6ZTsKICAgICAgICB0ZXJyYWluX2Vycm9yID0gMDsKICAgICAgICBkaWZm ZXJlbnRfdGVycmFpbnMgPSBmYWxzZTsKCiAgICAgICAgaWYgKCB4IDwgUm93U2l6ZSAmJiB6IDwg TnVtUm93cyApIHsKCiAgICAgICAgICAgIGlmICggeiA+PSAxICkgewogICAgICAgICAgICAgICAg aWYgKCBUZXJyYWluW2lkeF0gIT0gVGVycmFpbltpZHgtUm93U2l6ZV0gKSB7CiAgICAgICAgICAg ICAgICAgICAgZGlmZmVyZW50X3RlcnJhaW5zID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgfQogICAgICAgICAgICBpZiAoIHogPj0gMSAmJiB4IDwgUm93U2l6ZSAtIDEgKSB7 CiAgICAgICAgICAgICAgICBpZHggKz0gMTsKICAgICAgICAgICAgICAgIGlmICggVGVycmFpbltp ZHhdICE9IFRlcnJhaW5baWR4LVJvd1NpemVdICkgewogICAgICAgICAgICAgICAgICAgIGRpZmZl cmVudF90ZXJyYWlucyA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAg ICAgICAgICAgIGlmICggZGlmZmVyZW50X3RlcnJhaW5zICkgewogICAgICAgICAgICAgICAgRm9y Y2VFYXN0VmVydCA9IHRydWU7CiAgICAgICAgICAgICAgICB0ZXJyYWluX2Vycm9yID0gMC4xICog d2hvbGUgKiB3aG9sZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIEZvcmNl RWFzdFZlcnQgPSBmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCB0ZXJyYWlu X2Vycm9yID4gRXJyb3JbMV0gKSB7CiAgICAgICAgICAgICAgICBFcnJvclsxXSA9IHRlcnJhaW5f ZXJyb3I7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCBFcnJvclsxXSA+IG1heGVycm9y ICkgewogICAgICAgICAgICAgICAgbWF4ZXJyb3IgPSBFcnJvclsxXTsKICAgICAgICAgICAgfQog ICAgICAgIH0KICAgIH0KCgogICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewogICAgICAgIGZs b2F0IHkgPSBWZXJ0ZXhbMSArIGldLlk7CiAgICAgICAgaWYgKHkgPCBNaW5ZKSBNaW5ZID0geTsK ICAgICAgICBpZiAoeSA+IE1heFkpIE1heFkgPSB5OwogICAgfQoKCiAgICBmb3IgKGkgPSAwOyBp IDwgNDsgaSsrKSB7CiAgICAgICAgcXVhZGNvcm5lcmRhdGEgcTsKICAgICAgICBpZiAoQ2hpbGRb aV0pIHsKICAgICAgICAgICAgU2V0dXBDb3JuZXJEYXRhKCZxLCBjZCwgaSk7CiAgICAgICAgICAg IEVycm9yW2krMl0gPSBDaGlsZFtpXS0+UmVjb21wdXRlRXJyb3IocSk7CgogICAgICAgICAgICBp ZiAoQ2hpbGRbaV0tPk1pblkgPCBNaW5ZKSBNaW5ZID0gQ2hpbGRbaV0tPk1pblk7CiAgICAgICAg ICAgIGlmIChDaGlsZFtpXS0+TWF4WSA+IE1heFkpIE1heFkgPSBDaGlsZFtpXS0+TWF4WTsKICAg ICAgICB9IGVsc2UgewoKICAgICAgICAgICAgRXJyb3JbaSsyXSA9IGZhYnMoKFZlcnRleFswXS5Z ICsgY2QuVmVydHNbaV0uWSkgLSAoVmVydGV4W2krMV0uWSArIFZlcnRleFsoKGkrMSkmMykgKyAx XS5ZKSkgKiAwLjI1OwogICAgICAgIH0KICAgICAgICBpZiAoRXJyb3JbaSsyXSA+IG1heGVycm9y KSBtYXhlcnJvciA9IEVycm9yW2krMl07CiAgICB9CgoKCgogICAgaW50IHRlcnJhaW47CgogICAg aW50ICp0ZXJyYWluX2NvdW50ID0gbmV3IGludFsoaW50KU51bVRlcnJhaW5zXTsKCiAgICBmb3Ig KHQ9MDsgdDxOdW1UZXJyYWluczsgdCsrKSB7CiAgICAgICAgdGVycmFpbl9jb3VudFt0XSA9IDA7 CiAgICB9CgogICAgZm9yIChpPWNkLnhvcmc7IGk8PWNkLnhvcmcrd2hvbGU7IGkrKykgewogICAg ICAgIGZvciAoaj1jZC56b3JnOyBqPD1jZC56b3JnK3dob2xlOyBqKyspIHsKCiAgICAgICAgICAg IGlmICggaSA8IDAgfHwgaSA+PSBSb3dTaXplIHx8CiAgICAgICAgICAgICAgICAgaiA8IDAgfHwg aiA+PSBOdW1Sb3dzICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY29udGludWU7CiAg ICAgICAgICAgIH0KCiAgICAgICAgICAgIHRlcnJhaW4gPSAoaW50KSBUZXJyYWluWyBpICsgUm93 U2l6ZSpqIF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOwoKCiAgICAgICAgICAgIHRlcnJhaW5fY291bnRbIHRlcnJhaW4gXSArPSAxOwogICAg ICAgIH0KICAgIH0KCiAgICBpbnQgbWF4X2NvdW50ID0gMDsKICAgIGludCBtYXhfdHlwZSA9IDA7 CiAgICBpbnQgdG90YWwgPSAwOwogICAgZm9yICh0PTA7IHQ8TnVtVGVycmFpbnM7IHQrKykgewog ICAgICAgIGlmICggdGVycmFpbl9jb3VudFt0XSA+IG1heF9jb3VudCApIHsKICAgICAgICAgICAg bWF4X2NvdW50ID0gdGVycmFpbl9jb3VudFt0XTsKICAgICAgICAgICAgbWF4X3R5cGUgPSB0Owog ICAgICAgIH0KICAgICAgICB0b3RhbCArPSB0ZXJyYWluX2NvdW50W3RdOwogICAgfQoKICAgIGRl bGV0ZSBbXSB0ZXJyYWluX2NvdW50OwoKCiAgICBpZiAoIHRvdGFsID4gMCApIHsKICAgICAgICB0 ZXJyYWluX2Vycm9yID0gKDEuMCAtIG1heF9jb3VudCAvIHRvdGFsKTsKICAgICAgICBpZiAoIE51 bVRlcnJhaW5zID4gMSApIHsKICAgICAgICAgICAgdGVycmFpbl9lcnJvciAqPSBOdW1UZXJyYWlu cyAvICggTnVtVGVycmFpbnMgLSAxLjAgKTsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAg IHRlcnJhaW5fZXJyb3IgPSAwOwogICAgfQoKCiAgICB0ZXJyYWluX2Vycm9yICo9IHdob2xlICog d2hvbGU7CgoKICAgIHRlcnJhaW5fZXJyb3IgKj0gMC4xOwoKICAgIGlmICggdGVycmFpbl9lcnJv ciA+IG1heGVycm9yICkgewogICAgICAgIG1heGVycm9yID0gdGVycmFpbl9lcnJvcjsKICAgIH0K CiAgICBpZiAoIHRlcnJhaW5fZXJyb3IgPiBFcnJvclswXSApIHsKICAgICAgICBFcnJvclswXSA9 IHRlcnJhaW5fZXJyb3I7CiAgICB9CiAgICBpZiAoIHRlcnJhaW5fZXJyb3IgPiBFcnJvclsxXSAp IHsKICAgICAgICBFcnJvclsxXSA9IHRlcnJhaW5fZXJyb3I7CiAgICB9CgoKCiAgICBEaXJ0eSA9 IGZhbHNlOwoKICAgIHJldHVybiBtYXhlcnJvcjsKfQoKCnZvaWQgcXVhZHNxdWFyZTo6UmVzZXRU cmVlKCkKCnsKICAgIGludCBpOwogICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewogICAgICAg IGlmIChDaGlsZFtpXSkgewogICAgICAgICAgICBDaGlsZFtpXS0+UmVzZXRUcmVlKCk7CiAgICAg ICAgICAgIGlmIChDaGlsZFtpXS0+U3RhdGljID09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICBk ZWxldGUgQ2hpbGRbaV07CiAgICAgICAgICAgICAgICBDaGlsZFtpXSA9IDA7CiAgICAgICAgICAg IH0KICAgICAgICB9CiAgICB9CiAgICBFbmFibGVkRmxhZ3MgPSAwOwogICAgU3ViRW5hYmxlZENv dW50WzBdID0gMDsKICAgIFN1YkVuYWJsZWRDb3VudFsxXSA9IDA7CiAgICBEaXJ0eSA9IHRydWU7 Cn0KCgp2b2lkIHF1YWRzcXVhcmU6OlN0YXRpY0N1bGxEYXRhKGNvbnN0IHF1YWRjb3JuZXJkYXRh JiBjZCwgZmxvYXQgVGhyZXNob2xkRGV0YWlsKQoKCgp7CgogICAgUmVzZXRUcmVlKCk7CgoKICAg IGlmIChEaXJ0eSkgUmVjb21wdXRlRXJyb3IoY2QpOwoKCgoKCiAgICBpbnQgbGV2ZWw7CiAgICBm b3IgKGxldmVsID0gMDsgbGV2ZWwgPD0gY2QuTGV2ZWw7IGxldmVsKyspIHsKICAgICAgICBTdGF0 aWNDdWxsQXV4KGNkLCBUaHJlc2hvbGREZXRhaWwsIGxldmVsKTsKICAgIH0KfQoKCnZvaWQgcXVh ZHNxdWFyZTo6U3RhdGljQ3VsbEF1eChjb25zdCBxdWFkY29ybmVyZGF0YSYgY2QsIGZsb2F0IFRo cmVzaG9sZERldGFpbCwgaW50IFRhcmdldExldmVsKQoKCnsKICAgIGludCBpLCBqOwogICAgcXVh ZGNvcm5lcmRhdGEgcTsKCiAgICBpZiAoY2QuTGV2ZWwgPiBUYXJnZXRMZXZlbCkgewoKICAgICAg ICBmb3IgKGogPSAwOyBqIDwgNDsgaisrKSB7CiAgICAgICAgICAgIGlmIChqIDwgMikgaSA9IDEg LSBqOwogICAgICAgICAgICBlbHNlIGkgPSBqOwoKICAgICAgICAgICAgaWYgKENoaWxkW2ldKSB7 CiAgICAgICAgICAgICAgICBTZXR1cENvcm5lckRhdGEoJnEsIGNkLCBpKTsKICAgICAgICAgICAg ICAgIENoaWxkW2ldLT5TdGF0aWNDdWxsQXV4KHEsIFRocmVzaG9sZERldGFpbCwgVGFyZ2V0TGV2 ZWwpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCgoKCiAg ICBmbG9hdCBzaXplID0gMiA8PCBjZC5MZXZlbDsKICAgIGlmIChDaGlsZFswXSA9PSBfX251bGwg JiYgQ2hpbGRbM10gPT0gX19udWxsICYmIEVycm9yWzBdICogVGhyZXNob2xkRGV0YWlsIDwgc2l6 ZSkgewogICAgICAgIHF1YWRzcXVhcmUqIHMgPSBHZXROZWlnaGJvcigwLCBjZCk7CiAgICAgICAg aWYgKHMgPT0gX19udWxsIHx8IChzLT5DaGlsZFsxXSA9PSBfX251bGwgJiYgcy0+Q2hpbGRbMl0g PT0gX19udWxsKSkgewoKCiAgICAgICAgICAgIGZsb2F0IHkgPSAoY2QuVmVydHNbMF0uWSArIGNk LlZlcnRzWzNdLlkpICogMC41OwogICAgICAgICAgICBWZXJ0ZXhbMV0uWSA9IHk7CiAgICAgICAg ICAgIEVycm9yWzBdID0gMDsKCgogICAgICAgICAgICBpZiAocykgcy0+VmVydGV4WzNdLlkgPSB5 OwoKICAgICAgICAgICAgRGlydHkgPSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoQ2hp bGRbMl0gPT0gX19udWxsICYmIENoaWxkWzNdID09IF9fbnVsbCAmJiBFcnJvclsxXSAqIFRocmVz aG9sZERldGFpbCA8IHNpemUpIHsKICAgICAgICBxdWFkc3F1YXJlKiBzID0gR2V0TmVpZ2hib3Io MywgY2QpOwogICAgICAgIGlmIChzID09IF9fbnVsbCB8fCAocy0+Q2hpbGRbMF0gPT0gX19udWxs ICYmIHMtPkNoaWxkWzFdID09IF9fbnVsbCkpIHsKICAgICAgICAgICAgZmxvYXQgeSA9IChjZC5W ZXJ0c1syXS5ZICsgY2QuVmVydHNbM10uWSkgKiAwLjU7CiAgICAgICAgICAgIFZlcnRleFs0XS5Z ID0geTsKICAgICAgICAgICAgRXJyb3JbMV0gPSAwOwoKICAgICAgICAgICAgaWYgKHMpIHMtPlZl cnRleFsyXS5ZID0geTsKCiAgICAgICAgICAgIERpcnR5ID0gdHJ1ZTsKICAgICAgICB9CiAgICB9 CgoKICAgIGJvb2wgU3RhdGljQ2hpbGRyZW4gPSBmYWxzZTsKICAgIGZvciAoaSA9IDA7IGkgPCA0 OyBpKyspIHsKICAgICAgICBpZiAoQ2hpbGRbaV0pIHsKICAgICAgICAgICAgU3RhdGljQ2hpbGRy ZW4gPSB0cnVlOwogICAgICAgICAgICBpZiAoQ2hpbGRbaV0tPkRpcnR5KSBEaXJ0eSA9IHRydWU7 CiAgICAgICAgfQogICAgfQoKCiAgICBpZiAoU3RhdGljQ2hpbGRyZW4gPT0gZmFsc2UgJiYgY2Qu UGFyZW50ICE9IF9fbnVsbCkgewogICAgICAgIGJvb2wgTmVjZXNzYXJ5RWRnZXMgPSBmYWxzZTsK ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CgogICAgICAgICAgICBmbG9hdCBkaWZm ID0gZmFicyhWZXJ0ZXhbaSsxXS5ZIC0gKGNkLlZlcnRzW2ldLlkgKyBjZC5WZXJ0c1soaSszKSYz XS5ZKSAqIDAuNSk7CiAgICAgICAgICAgIGlmIChkaWZmID4gMC4wMDAwMSkgewogICAgICAgICAg ICAgICAgTmVjZXNzYXJ5RWRnZXMgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAg ICAgICBpZiAoIU5lY2Vzc2FyeUVkZ2VzKSB7CiAgICAgICAgICAgIHNpemUgKj0gMS40MTQyMTM1 NjI7CiAgICAgICAgICAgIGlmIChjZC5QYXJlbnQtPlNxdWFyZS0+RXJyb3JbMiArIGNkLkNoaWxk SW5kZXhdICogVGhyZXNob2xkRGV0YWlsIDwgc2l6ZSkgewogICAgICAgICAgICAgICAgZGVsZXRl IGNkLlBhcmVudC0+U3F1YXJlLT5DaGlsZFtjZC5DaGlsZEluZGV4XTsKICAgICAgICAgICAgICAg IGNkLlBhcmVudC0+U3F1YXJlLT5DaGlsZFtjZC5DaGlsZEluZGV4XSA9IDA7CiAgICAgICAgICAg IH0KICAgICAgICB9CiAgICB9Cn0KCgppbnQgTWF4Q3JlYXRlRGVwdGggPSAwOwoKCnZvaWQgcXVh ZHNxdWFyZTo6RW5hYmxlRWRnZVZlcnRleChpbnQgaW5kZXgsIGJvb2wgSW5jcmVtZW50Q291bnQs IGNvbnN0IHF1YWRjb3JuZXJkYXRhJiBjZCkKCgp7CiAgICBpZiAoKEVuYWJsZWRGbGFncyAmICgx IDw8IGluZGV4KSkgJiYgSW5jcmVtZW50Q291bnQgPT0gZmFsc2UpIHJldHVybjsKCgogICAgRW5h YmxlZEZsYWdzIHw9IDEgPDwgaW5kZXg7CiAgICBpZiAoSW5jcmVtZW50Q291bnQgPT0gdHJ1ZSAm JiAoaW5kZXggPT0gMCB8fCBpbmRleCA9PSAzKSkgewogICAgICAgIFN1YkVuYWJsZWRDb3VudFtp bmRleCAmIDFdKys7CiAgICB9CiMgNjQzICJxdWFkdHJlZS5jcHAiCiAgICBxdWFkc3F1YXJlKiBw ID0gdGhpczsKICAgIGNvbnN0IHF1YWRjb3JuZXJkYXRhKiBwY2QgPSAmY2Q7CiAgICBpbnQgY3Qg PSAwOwogICAgaW50IHN0YWNrWzMyXTsKICAgIGZvciAoOzspIHsKICAgICAgICBpbnQgY2kgPSBw Y2QtPkNoaWxkSW5kZXg7CgogICAgICAgIGlmIChwY2QtPlBhcmVudCA9PSBfX251bGwgfHwgcGNk LT5QYXJlbnQtPlNxdWFyZSA9PSBfX251bGwpIHsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAg ICB9CiAgICAgICAgcCA9IHBjZC0+UGFyZW50LT5TcXVhcmU7CiAgICAgICAgcGNkID0gcGNkLT5Q YXJlbnQ7CgogICAgICAgIGJvb2wgU2FtZVBhcmVudCA9ICgoaW5kZXggLSBjaSkgJiAyKSA/IHRy dWUgOiBmYWxzZTsKCiAgICAgICAgY2kgPSBjaSBeIDEgXiAoKGluZGV4ICYgMSkgPDwgMSk7Cgog ICAgICAgIHN0YWNrW2N0XSA9IGNpOwogICAgICAgIGN0Kys7CgogICAgICAgIGlmIChTYW1lUGFy ZW50KSBicmVhazsKICAgIH0KCgoKICAgIHAgPSBwLT5FbmFibGVEZXNjZW5kYW50KGN0LCBzdGFj aywgKnBjZCk7CiMgNjkxICJxdWFkdHJlZS5jcHAiCiAgICBpbmRleCBePSAyOwogICAgcC0+RW5h YmxlZEZsYWdzIHw9ICgxIDw8IGluZGV4KTsKICAgIGlmIChJbmNyZW1lbnRDb3VudCA9PSB0cnVl ICYmIChpbmRleCA9PSAwIHx8IGluZGV4ID09IDMpKSB7CiAgICAgICAgcC0+U3ViRW5hYmxlZENv dW50W2luZGV4ICYgMV0rKzsKICAgIH0KfQoKCnF1YWRzcXVhcmUqIHF1YWRzcXVhcmU6OkVuYWJs ZURlc2NlbmRhbnQoaW50IGNvdW50LCBpbnQgcGF0aFtdLCBjb25zdCBxdWFkY29ybmVyZGF0YSYg Y2QpCgoKCnsKICAgIGNvdW50LS07CiAgICBpbnQgQ2hpbGRJbmRleCA9IHBhdGhbY291bnRdOwoK ICAgIGlmICgoRW5hYmxlZEZsYWdzICYgKDE2IDw8IENoaWxkSW5kZXgpKSA9PSAwKSB7CiAgICAg ICAgRW5hYmxlQ2hpbGQoQ2hpbGRJbmRleCwgY2QpOwogICAgfQoKICAgIGlmIChjb3VudCA+IDAp IHsKICAgICAgICBxdWFkY29ybmVyZGF0YSBxOwogICAgICAgIFNldHVwQ29ybmVyRGF0YSgmcSwg Y2QsIENoaWxkSW5kZXgpOwogICAgICAgIHJldHVybiBDaGlsZFtDaGlsZEluZGV4XS0+RW5hYmxl RGVzY2VuZGFudChjb3VudCwgcGF0aCwgcSk7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBD aGlsZFtDaGlsZEluZGV4XTsKICAgIH0KfQoKCnZvaWQgcXVhZHNxdWFyZTo6Q3JlYXRlQ2hpbGQo aW50IGluZGV4LCBjb25zdCBxdWFkY29ybmVyZGF0YSYgY2QpCgp7CiAgICBpZiAoQ2hpbGRbaW5k ZXhdID09IDApIHsKICAgICAgICBxdWFkY29ybmVyZGF0YSBxOwogICAgICAgIFNldHVwQ29ybmVy RGF0YSgmcSwgY2QsIGluZGV4KTsKCiAgICAgICAgQ2hpbGRbaW5kZXhdID0gbmV3IHF1YWRzcXVh cmUoJnEpOwogICAgfQp9CgoKdm9pZCBxdWFkc3F1YXJlOjpFbmFibGVDaGlsZChpbnQgaW5kZXgs IGNvbnN0IHF1YWRjb3JuZXJkYXRhJiBjZCkKCgp7CgogICAgaWYgKChFbmFibGVkRmxhZ3MgJiAo MTYgPDwgaW5kZXgpKSA9PSAwKSB7CgogICAgICAgIEVuYWJsZWRGbGFncyB8PSAoMTYgPDwgaW5k ZXgpOwogICAgICAgIEVuYWJsZUVkZ2VWZXJ0ZXgoaW5kZXgsIHRydWUsIGNkKTsKICAgICAgICBF bmFibGVFZGdlVmVydGV4KChpbmRleCArIDEpICYgMywgdHJ1ZSwgY2QpOwoKICAgICAgICBpZiAo Q2hpbGRbaW5kZXhdID09IDApIHsKICAgICAgICAgICAgQ3JlYXRlQ2hpbGQoaW5kZXgsIGNkKTsK ICAgICAgICB9CiAgICB9Cn0KCgppbnQgQmxvY2tEZWxldGVDb3VudCA9IDA7CmludCBCbG9ja1Vw ZGF0ZUNvdW50ID0gMDsKCgp2b2lkIHF1YWRzcXVhcmU6Ok5vdGlmeUNoaWxkRGlzYWJsZShjb25z dCBxdWFkY29ybmVyZGF0YSYgY2QsIGludCBpbmRleCkKCgp7CgogICAgRW5hYmxlZEZsYWdzICY9 IH4oMTYgPDwgaW5kZXgpOwoKCiAgICBxdWFkc3F1YXJlKiBzOwoKICAgIGlmIChpbmRleCAmIDIp IHMgPSB0aGlzOwogICAgZWxzZSBzID0gR2V0TmVpZ2hib3IoMSwgY2QpOwogICAgaWYgKHMpIHsK ICAgICAgICBzLT5TdWJFbmFibGVkQ291bnRbMV0tLTsKICAgIH0KCiAgICBpZiAoaW5kZXggPT0g MSB8fCBpbmRleCA9PSAyKSBzID0gR2V0TmVpZ2hib3IoMiwgY2QpOwogICAgZWxzZSBzID0gdGhp czsKICAgIGlmIChzKSB7CiAgICAgICAgcy0+U3ViRW5hYmxlZENvdW50WzBdLS07CiAgICB9CiMg Nzg1ICJxdWFkdHJlZS5jcHAiCn0KCgpzdGF0aWMgZmxvYXQgRGV0YWlsVGhyZXNob2xkID0gMTAw OwoKCmJvb2wgcXVhZHNxdWFyZTo6VmVydGV4VGVzdChpbnQgeCwgZmxvYXQgeSwgaW50IHosIGZs b2F0IGVycm9yLCBjb25zdCBmbG9hdCBWaWV3ZXJbM10sIGludCBsZXZlbCwgdmVydGV4X2xvY190 IHZlcnRleF9sb2MgKQoKCgp7CiAgICBmbG9hdCBkeCA9IGZhYnMoeCAtIFZpZXdlclswXSkgKiBm YWJzKCBTY2FsZVggKTsKICAgIGZsb2F0IGR5ID0gZmFicyh5IC0gVmlld2VyWzFdKTsKICAgIGZs b2F0IGR6ID0gZmFicyh6IC0gVmlld2VyWzJdKSAqIGZhYnMoIFNjYWxlWiApOwogICAgZmxvYXQg ZCA9ICgoZHgpPigoKGR5KT4oZHopPyhkeSk6KGR6KSkpPyhkeCk6KCgoZHkpPihkeik/KGR5KToo ZHopKSkpOwoKCiAgICBpZiAoIHZlcnRleF9sb2MgPT0gU291dGggJiYgRm9yY2VTb3V0aFZlcnQg JiYgZCA8IDEwMCApCiAgICB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICBpZiAoIHZl cnRleF9sb2MgPT0gRWFzdCAmJiBGb3JjZUVhc3RWZXJ0ICYmIGQgPCAxMDAgKQogICAgewogICAg ICAgIHJldHVybiB0cnVlOwogICAgfQogICAgaWYgKCBkIDwgMjAgKSB7CiAgICAgICAgZXJyb3Ig Kj0gMzsKICAgIH0KCiAgICByZXR1cm4gZXJyb3IgKiBEZXRhaWxUaHJlc2hvbGQgPiBkOwp9CgoK Ym9vbCBxdWFkc3F1YXJlOjpCb3hUZXN0KGludCB4LCBpbnQgeiwgZmxvYXQgc2l6ZSwgZmxvYXQg bWlueSwgZmxvYXQgbWF4eSwgZmxvYXQgZXJyb3IsIGNvbnN0IGZsb2F0IFZpZXdlclszXSkKCgoK ewoKICAgIGZsb2F0IGhhbGYgPSBzaXplICogMC41OwogICAgZmxvYXQgZHggPSAoIGZhYnMoeCAr IGhhbGYgLSBWaWV3ZXJbMF0pIC0gaGFsZiApICogZmFicyhTY2FsZVgpOwogICAgZmxvYXQgZHkg PSBmYWJzKChtaW55ICsgbWF4eSkgKiAwLjUgLSBWaWV3ZXJbMV0pIC0gKG1heHkgLSBtaW55KSAq IDAuNTsKICAgIGZsb2F0IGR6ID0gKCBmYWJzKHogKyBoYWxmIC0gVmlld2VyWzJdKSAtIGhhbGYg KSAqIGZhYnMoU2NhbGVaKTsKICAgIGZsb2F0IGQgPSAoKGR4KT4oKChkeSk+KGR6KT8oZHkpOihk eikpKT8oZHgpOigoKGR5KT4oZHopPyhkeSk6KGR6KSkpKTsKCiAgICBpZiAoIGQgPCAyMCApIHsK ICAgICAgICBlcnJvciAqPSAzOwogICAgfQoKICAgIGlmICggZXJyb3IgKiBEZXRhaWxUaHJlc2hv bGQgPiBkICkgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKCiAgICBpZiAoICggeCA8IFJv d1NpemUtMSAmJiB4K3NpemUgPj0gUm93U2l6ZSApIHx8CiAgICAgICAgICggeiA8IE51bVJvd3Mt MSAmJiB6K3NpemUgPj0gTnVtUm93cyApICkKICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAg IH0KCiAgICByZXR1cm4gZmFsc2U7Cn0KCnZvaWQgcXVhZHNxdWFyZTo6VXBkYXRlKGNvbnN0IHF1 YWRjb3JuZXJkYXRhJiBjZCwgY29uc3QgZmxvYXQgVmlld2VyTG9jYXRpb25bM10sIGZsb2F0IERl dGFpbCkKCgoKewoKICAgIGZsb2F0IFZpZXdlclszXTsKCiAgICBEZXRhaWxUaHJlc2hvbGQgPSBE ZXRhaWw7CgogICAgVmlld2VyWzBdID0gVmlld2VyTG9jYXRpb25bMF0gLyBTY2FsZVg7CiAgICBW aWV3ZXJbMV0gPSBWaWV3ZXJMb2NhdGlvblsxXTsKICAgIFZpZXdlclsyXSA9IFZpZXdlckxvY2F0 aW9uWzJdIC8gU2NhbGVaOwoKICAgIFVwZGF0ZUF1eChjZCwgVmlld2VyLCAwLCBTb21lQ2xpcCk7 Cn0KCgp2b2lkIHF1YWRzcXVhcmU6OlVwZGF0ZUF1eChjb25zdCBxdWFkY29ybmVyZGF0YSYgY2Qs IGNvbnN0IGZsb2F0IFZpZXdlckxvY2F0aW9uWzNdLCBmbG9hdCBDZW50ZXJFcnJvciwgY2xpcF9y ZXN1bHRfdCB2aXMgKQoKewogICAgQmxvY2tVcGRhdGVDb3VudCsrOwoKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAg ICBpZiAoIHZpcyAhPSBOb0NsaXAgKSB7CiAgICAgICAgdmlzID0gQ2xpcFNxdWFyZSggY2QgKTsK CiAgICAgICAgaWYgKCB2aXMgPT0gTm90VmlzaWJsZSApIHsKICAgICAgICAgICAgcmV0dXJuOwog ICAgICAgIH0KICAgIH0KCgogICAgaWYgKERpcnR5KSB7CiAgICAgICAgUmVjb21wdXRlRXJyb3Io Y2QpOwogICAgfQoKICAgIGludCBoYWxmID0gMSA8PCBjZC5MZXZlbDsKICAgIGludCB3aG9sZSA9 IGhhbGYgPDwgMTsKCgoKCiAgICBpZiAoIChFbmFibGVkRmxhZ3MgJiAxKSA9PSAwICYmCiAgICAg ICAgIFZlcnRleFRlc3QoY2QueG9yZyArIHdob2xlLCBWZXJ0ZXhbMV0uWSwgY2Quem9yZyArIGhh bGYsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JbMF0sIFZpZXdlckxvY2F0aW9uLCBjZC5MZXZl bCwgRWFzdCkgPT0gdHJ1ZSApCiAgICB7CiAgICAgICAgRW5hYmxlRWRnZVZlcnRleCgwLCBmYWxz ZSwgY2QpOwogICAgfQoKCiAgICBpZiAoIChFbmFibGVkRmxhZ3MgJiA4KSA9PSAwICYmCiAgICAg ICAgIFZlcnRleFRlc3QoY2QueG9yZyArIGhhbGYsIFZlcnRleFs0XS5ZLCBjZC56b3JnICsgd2hv bGUsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JbMV0sIFZpZXdlckxvY2F0aW9uLCBjZC5MZXZl bCwgU291dGgpID09IHRydWUgKQogICAgewogICAgICAgIEVuYWJsZUVkZ2VWZXJ0ZXgoMywgZmFs c2UsIGNkKTsKICAgIH0KCiAgICBpZiAoY2QuTGV2ZWwgPiAwKSB7CiAgICAgICAgaWYgKChFbmFi bGVkRmxhZ3MgJiAzMikgPT0gMCkgewogICAgICAgICAgICBpZiAoQm94VGVzdChjZC54b3JnLCBj ZC56b3JnLCBoYWxmLCBNaW5ZLCBNYXhZLCBFcnJvclszXSwgVmlld2VyTG9jYXRpb24pID09IHRy dWUpIEVuYWJsZUNoaWxkKDEsIGNkKTsKICAgICAgICB9CiAgICAgICAgaWYgKChFbmFibGVkRmxh Z3MgJiAxNikgPT0gMCkgewogICAgICAgICAgICBpZiAoQm94VGVzdChjZC54b3JnICsgaGFsZiwg Y2Quem9yZywgaGFsZiwgTWluWSwgTWF4WSwgRXJyb3JbMl0sIFZpZXdlckxvY2F0aW9uKSA9PSB0 cnVlKSBFbmFibGVDaGlsZCgwLCBjZCk7CiAgICAgICAgfQogICAgICAgIGlmICgoRW5hYmxlZEZs YWdzICYgNjQpID09IDApIHsKICAgICAgICAgICAgaWYgKEJveFRlc3QoY2QueG9yZywgY2Quem9y ZyArIGhhbGYsIGhhbGYsIE1pblksIE1heFksIEVycm9yWzRdLCBWaWV3ZXJMb2NhdGlvbikgPT0g dHJ1ZSkgRW5hYmxlQ2hpbGQoMiwgY2QpOwogICAgICAgIH0KICAgICAgICBpZiAoKEVuYWJsZWRG bGFncyAmIDEyOCkgPT0gMCkgewogICAgICAgICAgICBpZiAoQm94VGVzdChjZC54b3JnICsgaGFs ZiwgY2Quem9yZyArIGhhbGYsIGhhbGYsIE1pblksIE1heFksIEVycm9yWzVdLCBWaWV3ZXJMb2Nh dGlvbikgPT0gdHJ1ZSkgRW5hYmxlQ2hpbGQoMywgY2QpOwogICAgICAgIH0KCgogICAgICAgIHF1 YWRjb3JuZXJkYXRhIHE7CgogICAgICAgIGlmIChFbmFibGVkRmxhZ3MgJiAzMikgewogICAgICAg ICAgICBTZXR1cENvcm5lckRhdGEoJnEsIGNkLCAxKTsKICAgICAgICAgICAgQ2hpbGRbMV0tPlVw ZGF0ZUF1eChxLCBWaWV3ZXJMb2NhdGlvbiwgRXJyb3JbM10sIHZpcyk7CiAgICAgICAgfQogICAg ICAgIGlmIChFbmFibGVkRmxhZ3MgJiAxNikgewogICAgICAgICAgICBTZXR1cENvcm5lckRhdGEo JnEsIGNkLCAwKTsKICAgICAgICAgICAgQ2hpbGRbMF0tPlVwZGF0ZUF1eChxLCBWaWV3ZXJMb2Nh dGlvbiwgRXJyb3JbMl0sIHZpcyk7CiAgICAgICAgfQogICAgICAgIGlmIChFbmFibGVkRmxhZ3Mg JiA2NCkgewogICAgICAgICAgICBTZXR1cENvcm5lckRhdGEoJnEsIGNkLCAyKTsKICAgICAgICAg ICAgQ2hpbGRbMl0tPlVwZGF0ZUF1eChxLCBWaWV3ZXJMb2NhdGlvbiwgRXJyb3JbNF0sIHZpcyk7 CiAgICAgICAgfQogICAgICAgIGlmIChFbmFibGVkRmxhZ3MgJiAxMjgpIHsKICAgICAgICAgICAg U2V0dXBDb3JuZXJEYXRhKCZxLCBjZCwgMyk7CiAgICAgICAgICAgIENoaWxkWzNdLT5VcGRhdGVB dXgocSwgVmlld2VyTG9jYXRpb24sIEVycm9yWzVdLCB2aXMpOwogICAgICAgIH0KICAgIH0KCgog ICAgaWYgKCAoRW5hYmxlZEZsYWdzICYgMSkgJiYKICAgICAgICAgU3ViRW5hYmxlZENvdW50WzBd ID09IDAgJiYKICAgICAgICAgVmVydGV4VGVzdChjZC54b3JnICsgd2hvbGUsIFZlcnRleFsxXS5Z LCBjZC56b3JnICsgaGFsZiwKICAgICAgICAgICAgICAgICAgICBFcnJvclswXSwgVmlld2VyTG9j YXRpb24sIGNkLkxldmVsLCBFYXN0KSA9PSBmYWxzZSkKICAgIHsKICAgICAgICBFbmFibGVkRmxh Z3MgJj0gfjE7CiAgICAgICAgcXVhZHNxdWFyZSogcyA9IEdldE5laWdoYm9yKDAsIGNkKTsKICAg ICAgICBpZiAocykgcy0+RW5hYmxlZEZsYWdzICY9IH40OwogICAgfQoKICAgIGlmICggKEVuYWJs ZWRGbGFncyAmIDgpICYmCiAgICAgICAgIFN1YkVuYWJsZWRDb3VudFsxXSA9PSAwICYmCiAgICAg ICAgIFZlcnRleFRlc3QoY2QueG9yZyArIGhhbGYsIFZlcnRleFs0XS5ZLCBjZC56b3JnICsgd2hv bGUsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JbMV0sIFZpZXdlckxvY2F0aW9uLCBjZC5MZXZl bCwgU291dGgpID09IGZhbHNlKQogICAgewogICAgICAgIEVuYWJsZWRGbGFncyAmPSB+ODsKICAg ICAgICBxdWFkc3F1YXJlKiBzID0gR2V0TmVpZ2hib3IoMywgY2QpOwogICAgICAgIGlmIChzKSBz LT5FbmFibGVkRmxhZ3MgJj0gfjI7CiAgICB9CgogICAgaWYgKEVuYWJsZWRGbGFncyA9PSAwICYm CiAgICAgICAgY2QuUGFyZW50ICE9IF9fbnVsbCAmJgogICAgICAgIEJveFRlc3QoY2QueG9yZywg Y2Quem9yZywgd2hvbGUsIE1pblksIE1heFksIENlbnRlckVycm9yLAogICAgICAgICAgICAgICAg Vmlld2VyTG9jYXRpb24pID09IGZhbHNlKQogICAgewoKICAgICAgICBjZC5QYXJlbnQtPlNxdWFy ZS0+Tm90aWZ5Q2hpbGREaXNhYmxlKCpjZC5QYXJlbnQsIGNkLkNoaWxkSW5kZXgpOwogICAgfQp9 CgpHTHVpbnQgVmVydGV4SW5kaWNlc1s5XTsKaW50IFZlcnRleFRlcnJhaW5zWzldOwoKdm9pZCBx dWFkc3F1YXJlOjpJbml0VmVydChpbnQgaSwgaW50IHgsIGludCB6KQoKCnsKICAgIGludCBpZHg7 CgogICAgaWYgKCB4ID49IFJvd1NpemUgKSB7CiAgICAgICAgeCA9IFJvd1NpemUtMTsKICAgIH0K ICAgIGlmICggeiA+PSBOdW1Sb3dzICkgewogICAgICAgIHogPSBOdW1Sb3dzIC0gMTsKICAgIH0K CiAgICBpZHggPSB4ICsgUm93U2l6ZSAqIHo7CgogICAgVmVydGV4SW5kaWNlc1tpXSA9IGlkeDsK ICAgIFZlcnRleFRlcnJhaW5zW2ldID0gVGVycmFpbltpZHhdOwp9CgpHTHVieXRlICpWTkNBcnJh eTsKCnZvaWQgcXVhZHNxdWFyZTo6RHJhd1RyaXMoKQp7CiAgICBpbnQgdG1wX21pbl9pZHggPSBW ZXJ0ZXhBcnJheU1pbklkeDsKICAgIGlmICggZ2xMb2NrQXJyYXlzRVhUX3AgJiYgZ2V0cGFyYW1f dXNlX2N2YSgpICkgewoKICAgICAgICBpZiAoIGdldHBhcmFtX2N2YV9oYWNrKCkgKSB7CgoKCiAg ICAgICAgICAgIGlmICggdG1wX21pbl9pZHggPT0gMCApIHsKICAgICAgICAgICAgICAgIHRtcF9t aW5faWR4ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZ2xMb2NrQXJyYXlz RVhUX3AoIHRtcF9taW5faWR4LAogICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4QXJyYXlN YXhJZHggLSB0bXBfbWluX2lkeCArIDEgKTsKICAgIH0KCiAgICBnbERyYXdFbGVtZW50cyggMHgw MDA0LCBWZXJ0ZXhBcnJheUNvdW50ZXIsCiAgICAgICAgICAgICAgICAgICAgMHgxNDA1LCBWZXJ0 ZXhBcnJheUluZGljZXMgKTsKCiAgICBpZiAoIGdsVW5sb2NrQXJyYXlzRVhUX3AgJiYgZ2V0cGFy YW1fdXNlX2N2YSgpICkgewogICAgICAgIGdsVW5sb2NrQXJyYXlzRVhUX3AoKTsKICAgIH0KfQoK dm9pZCBxdWFkc3F1YXJlOjpEcmF3RW52bWFwVHJpcygpCnsKICAgIGlmICggVmVydGV4QXJyYXlD b3VudGVyID4gMCAmJiBFbnZtYXBUZXhJZCAhPSAwICkgewoKICAgICAgICBnbFRleEdlbmkoIDB4 MjAwMCwgMHgyNTAwLCAweDI0MDIgKTsKICAgICAgICBnbFRleEdlbmkoIDB4MjAwMSwgMHgyNTAw LCAweDI0MDIgKTsKCiAgICAgICAgZ2xCaW5kVGV4dHVyZSggMHgwREUxLCBFbnZtYXBUZXhJZCAp OwoKICAgICAgICBEcmF3VHJpcygpOwoKICAgICAgICBnbFRleEdlbmkoIDB4MjAwMCwgMHgyNTAw LCAweDI0MDEgKTsKICAgICAgICBnbFRleEdlbmkoIDB4MjAwMSwgMHgyNTAwLCAweDI0MDEgKTsK CiAgICB9Cn0KCnZvaWQgcXVhZHNxdWFyZTo6SW5pdEFycmF5Q291bnRlcnMoKQp7CiAgICBWZXJ0 ZXhBcnJheUNvdW50ZXIgPSAwOwogICAgVmVydGV4QXJyYXlNaW5JZHggPSAyMTQ3NDgzNjQ3Owog ICAgVmVydGV4QXJyYXlNYXhJZHggPSAwOwp9Cgp2b2lkIHF1YWRzcXVhcmU6OlJlbmRlcihjb25z dCBxdWFkY29ybmVyZGF0YSYgY2QsIEdMdWJ5dGUgKnZuY19hcnJheSkKCgp7CiAgICBWTkNBcnJh eSA9IHZuY19hcnJheTsKICAgIGJvb2xfdCBmb2dfb247CiAgICB1bnNpZ25lZCBpbnQgaSwgajsK ICAgIGludCBueCwgbnk7CiAgICBnZXRfY291cnNlX2RpdmlzaW9ucyggJm54LCAmbnkgKTsKCgoK ICAgIGZvZ19vbiA9IGlzX2ZvZ19vbigpOwoKCgoKCiAgICBmb3IgKGo9MDsgajxOdW1UZXJyYWlu czsgaisrKSB7CiAgICAgICAgSW5pdEFycmF5Q291bnRlcnMoKTsKCiAgICAgICAgUmVuZGVyQXV4 KGNkLCBTb21lQ2xpcCwgaik7CgogICAgICAgIGlmICggVmVydGV4QXJyYXlDb3VudGVyID09IDAg KSB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgZ2xCaW5kVGV4dHVy ZSggMHgwREUxLCBUZXhJZFtqXSApOwogICAgICAgIERyYXdUcmlzKCk7CgogICAgICAgIGlmICgg aiA9PSBJY2UgJiYgZ2V0cGFyYW1fdGVycmFpbl9lbnZtYXAoKSApIHsKCiAgICAgICAgICAgIGds RGlzYWJsZUNsaWVudFN0YXRlKCAweDgwNzYgKTsKICAgICAgICAgICAgZ2xDb2xvcjRmKCAxLjAs IDEuMCwgMS4wLCA1MCAvIDI1NS4wICk7CgogICAgICAgICAgICBEcmF3RW52bWFwVHJpcygpOwoK ICAgICAgICAgICAgZ2xFbmFibGVDbGllbnRTdGF0ZSggMHg4MDc2ICk7CiAgICAgICAgfQoKICAg IH0KCgoKCgogICAgaWYgKCBnZXRwYXJhbV90ZXJyYWluX2JsZW5kaW5nKCkgJiYKICAgICAgICAg Z2V0cGFyYW1fcGVyZmVjdF90ZXJyYWluX2JsZW5kaW5nKCkgKSB7CgoKCgogICAgICAgIEluaXRB cnJheUNvdW50ZXJzKCk7CiAgICAgICAgUmVuZGVyQXV4KCBjZCwgU29tZUNsaXAsIC0xICk7Cgog ICAgICAgIGlmICggVmVydGV4QXJyYXlDb3VudGVyICE9IDAgKSB7CgogICAgICAgICAgICBnbERp c2FibGUoIDB4MEI2MCApOwoKCiAgICAgICAgICAgIGZvciAoaT0wOyBpPFZlcnRleEFycmF5Q291 bnRlcjsgaSsrKSB7CiAgICAgICAgICAgICAgICBWTkNBcnJheVtWZXJ0ZXhBcnJheUluZGljZXNb aV0qKCA4ICogc2l6ZW9mKEdMZmxvYXQpICsgNCAqIHNpemVvZihHTHVieXRlKSApKyggOCAqIHNp emVvZihHTGZsb2F0KSArIDQgKiBzaXplb2YoR0x1Ynl0ZSkgKS00KygwKV0gPSAwOwogICAgICAg ICAgICAgICAgVk5DQXJyYXlbVmVydGV4QXJyYXlJbmRpY2VzW2ldKiggOCAqIHNpemVvZihHTGZs b2F0KSArIDQgKiBzaXplb2YoR0x1Ynl0ZSkgKSsoIDggKiBzaXplb2YoR0xmbG9hdCkgKyA0ICog c2l6ZW9mKEdMdWJ5dGUpICktNCsoMSldID0gMDsKICAgICAgICAgICAgICAgIFZOQ0FycmF5W1Zl cnRleEFycmF5SW5kaWNlc1tpXSooIDggKiBzaXplb2YoR0xmbG9hdCkgKyA0ICogc2l6ZW9mKEdM dWJ5dGUpICkrKCA4ICogc2l6ZW9mKEdMZmxvYXQpICsgNCAqIHNpemVvZihHTHVieXRlKSApLTQr KDIpXSA9IDA7CiAgICAgICAgICAgICAgICBWTkNBcnJheVtWZXJ0ZXhBcnJheUluZGljZXNbaV0q KCA4ICogc2l6ZW9mKEdMZmxvYXQpICsgNCAqIHNpemVvZihHTHVieXRlKSApKyggOCAqIHNpemVv ZihHTGZsb2F0KSArIDQgKiBzaXplb2YoR0x1Ynl0ZSkgKS00KygzKV0gPSAyNTU7CiAgICAgICAg ICAgIH0KCgogICAgICAgICAgICBnbEJpbmRUZXh0dXJlKCAweDBERTEsIFRleElkWzBdICk7CiAg ICAgICAgICAgIERyYXdUcmlzKCk7CgoKICAgICAgICAgICAgaWYgKGZvZ19vbikgewogICAgICAg ICAgICAgICAgZ2xFbmFibGUoIDB4MEI2MCApOwogICAgICAgICAgICB9CgoKICAgICAgICAgICAg Z2xCbGVuZEZ1bmMoIDB4MDMwMiwgMHgxICk7CgoKICAgICAgICAgICAgZm9yIChpPTA7IGk8VmVy dGV4QXJyYXlDb3VudGVyOyBpKyspIHsKICAgICAgICAgICAgICAgIFZOQ0FycmF5W1ZlcnRleEFy cmF5SW5kaWNlc1tpXSooIDggKiBzaXplb2YoR0xmbG9hdCkgKyA0ICogc2l6ZW9mKEdMdWJ5dGUp ICkrKCA4ICogc2l6ZW9mKEdMZmxvYXQpICsgNCAqIHNpemVvZihHTHVieXRlKSApLTQrKDApXSA9 IDI1NTsKICAgICAgICAgICAgICAgIFZOQ0FycmF5W1ZlcnRleEFycmF5SW5kaWNlc1tpXSooIDgg KiBzaXplb2YoR0xmbG9hdCkgKyA0ICogc2l6ZW9mKEdMdWJ5dGUpICkrKCA4ICogc2l6ZW9mKEdM ZmxvYXQpICsgNCAqIHNpemVvZihHTHVieXRlKSApLTQrKDEpXSA9IDI1NTsKICAgICAgICAgICAg ICAgIFZOQ0FycmF5W1ZlcnRleEFycmF5SW5kaWNlc1tpXSooIDggKiBzaXplb2YoR0xmbG9hdCkg KyA0ICogc2l6ZW9mKEdMdWJ5dGUpICkrKCA4ICogc2l6ZW9mKEdMZmxvYXQpICsgNCAqIHNpemVv ZihHTHVieXRlKSApLTQrKDIpXSA9IDI1NTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9y IChqPTA7IGo8TnVtVGVycmFpbnM7IGorKykgewogICAgICAgICAgICAgICAgZ2xCaW5kVGV4dHVy ZSggMHgwREUxLCBUZXhJZFtqXSApOwoKCiAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTxWZXJ0 ZXhBcnJheUNvdW50ZXI7IGkrKykgewogICAgICAgICAgICAgICAgICAgIFZOQ0FycmF5W1ZlcnRl eEFycmF5SW5kaWNlc1tpXSooIDggKiBzaXplb2YoR0xmbG9hdCkgKyA0ICogc2l6ZW9mKEdMdWJ5 dGUpICkrKCA4ICogc2l6ZW9mKEdMZmxvYXQpICsgNCAqIHNpemVvZihHTHVieXRlKSApLTQrKDMp XSA9CiAgICAgICAgICAgICAgICAgICAgICAgIChUZXJyYWluW1ZlcnRleEFycmF5SW5kaWNlc1tp XV0gPT0gKHRlcnJhaW5fdClqICkgPwogICAgICAgICAgICAgICAgICAgICAgICAyNTUgOiAwOwog ICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIERyYXdUcmlzKCk7CiAgICAgICAgICAg IH0KCgoKICAgICAgICAgICAgaWYgKCBnZXRwYXJhbV90ZXJyYWluX2Vudm1hcCgpICkgewogICAg ICAgICAgICAgICAgZ2xCbGVuZEZ1bmMoIDB4MDMwMiwgMHgwMzAzICk7CgoKICAgICAgICAgICAg ICAgIGZvciAoaT0wOyBpPFZlcnRleEFycmF5Q291bnRlcjsgaSsrKSB7CiAgICAgICAgICAgICAg ICAgICAgVk5DQXJyYXlbVmVydGV4QXJyYXlJbmRpY2VzW2ldKiggOCAqIHNpemVvZihHTGZsb2F0 KSArIDQgKiBzaXplb2YoR0x1Ynl0ZSkgKSsoIDggKiBzaXplb2YoR0xmbG9hdCkgKyA0ICogc2l6 ZW9mKEdMdWJ5dGUpICktNCsoMyldID0KICAgICAgICAgICAgICAgICAgICAgICAgKFRlcnJhaW5b VmVydGV4QXJyYXlJbmRpY2VzW2ldXSA9PSBJY2UpID8KICAgICAgICAgICAgICAgICAgICAgICAg NTAgOiAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgRHJhd0Vudm1hcFRyaXMo KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBnbEJsZW5kRnVuYyggMHgwMzAy LCAweDAzMDMgKTsKfQoKY2xpcF9yZXN1bHRfdCBxdWFkc3F1YXJlOjpDbGlwU3F1YXJlKCBjb25z dCBxdWFkY29ybmVyZGF0YSYgY2QgKQp7CiAgICBwb2ludF90IG1pbiwgbWF4OwogICAgY2xpcF9y ZXN1bHRfdCBjbGlwX3Jlc3VsdDsKICAgIGludCB3aG9sZSA9IDIgPDwgY2QuTGV2ZWw7CgogICAg aWYgKCBjZC54b3JnID49IFJvd1NpemUtMSApIHsKICAgICAgICByZXR1cm4gTm90VmlzaWJsZTsK ICAgIH0KCiAgICBpZiAoIGNkLnpvcmcgPj0gTnVtUm93cy0xICkgewogICAgICAgIHJldHVybiBO b3RWaXNpYmxlOwogICAgfQoKICAgIG1pbi54ID0gY2QueG9yZyAqIFNjYWxlWDsKICAgIG1pbi55 ID0gTWluWTsKICAgIG1pbi56ID0gY2Quem9yZyAqIFNjYWxlWjsKICAgIG1heC54ID0gKGNkLnhv cmcgKyB3aG9sZSkgKiBTY2FsZVg7CiAgICBtYXgueSA9IE1heFk7CiAgICBtYXgueiA9IChjZC56 b3JnICsgd2hvbGUpICogU2NhbGVaOwoKCiAgICBpZiAoIG1pbi54ID4gbWF4LnggKSB7CiAgICAg ICAgc2NhbGFyX3QgdG1wID0gbWluLng7CiAgICAgICAgbWluLnggPSBtYXgueDsKICAgICAgICBt YXgueCA9IHRtcDsKICAgIH0KCiAgICBpZiAoIG1pbi56ID4gbWF4LnogKSB7CiAgICAgICAgc2Nh bGFyX3QgdG1wID0gbWluLno7CiAgICAgICAgbWluLnogPSBtYXguejsKICAgICAgICBtYXgueiA9 IHRtcDsKICAgIH0KCiAgICBjbGlwX3Jlc3VsdCA9IGNsaXBfYWFiYl90b192aWV3X2ZydXN0dW0o bWluLCBtYXgpOwoKICAgIGlmICggY2xpcF9yZXN1bHQgPT0gTm90VmlzaWJsZSB8fCBjbGlwX3Jl c3VsdCA9PSBTb21lQ2xpcCApIHsKICAgICAgICByZXR1cm4gY2xpcF9yZXN1bHQ7CiAgICB9Cgog ICAgaWYgKCBjZC54b3JnICsgd2hvbGUgPj0gUm93U2l6ZSApIHsKICAgICAgICByZXR1cm4gU29t ZUNsaXA7CiAgICB9CiAgICBpZiAoIGNkLnpvcmcgKyB3aG9sZSA+PSBOdW1Sb3dzICkgewogICAg ICAgIHJldHVybiBTb21lQ2xpcDsKICAgIH0KCiAgICByZXR1cm4gY2xpcF9yZXN1bHQ7Cn0KCgp0 eXBlZGVmIHZvaWQgKCptYWtlX3RyaV9mdW5jX3QpKCBpbnQgYSwgaW50IGIsIGludCBjLCBpbnQg dGVycmFpbiApOwojIDEyMjkgInF1YWR0cmVlLmNwcCIKaW5saW5lIHZvaWQgcXVhZHNxdWFyZTo6 TWFrZVRyaSggaW50IGEsIGludCBiLCBpbnQgYywgaW50IHRlcnJhaW4gKQp7CiAgICBpZiAoICgg VmVydGV4VGVycmFpbnNbYV0gPT0gdGVycmFpbiB8fAogICAgICAgICAgIFZlcnRleFRlcnJhaW5z W2JdID09IHRlcnJhaW4gfHwKICAgICAgICAgICBWZXJ0ZXhUZXJyYWluc1tjXSA9PSB0ZXJyYWlu ICkgKQogICAgewogICAgICAgIFZlcnRleEFycmF5SW5kaWNlc1tWZXJ0ZXhBcnJheUNvdW50ZXIr K10gPSBWZXJ0ZXhJbmRpY2VzW2FdOwogICAgICAgIFZOQ0FycmF5W1ZlcnRleEluZGljZXNbYV0q KCA4ICogc2l6ZW9mKEdMZmxvYXQpICsgNCAqIHNpemVvZihHTHVieXRlKSApKyggOCAqIHNpemVv ZihHTGZsb2F0KSArIDQgKiBzaXplb2YoR0x1Ynl0ZSkgKS00KygzKV0gPSAoIHRlcnJhaW4gPD0g VmVydGV4VGVycmFpbnNbYV0gKSA/IDI1NSA6IDA7CiAgICAgICAgaWYgKCBWZXJ0ZXhJbmRpY2Vz W2FdID4gVmVydGV4QXJyYXlNYXhJZHggKSB7IFZlcnRleEFycmF5TWF4SWR4ID0gVmVydGV4SW5k aWNlc1thXTsgfSBpZiAoIFZlcnRleEluZGljZXNbYV0gPCBWZXJ0ZXhBcnJheU1pbklkeCApIHsg VmVydGV4QXJyYXlNaW5JZHggPSBWZXJ0ZXhJbmRpY2VzW2FdOyB9OwogICAgICAgIFZlcnRleEFy cmF5SW5kaWNlc1tWZXJ0ZXhBcnJheUNvdW50ZXIrK10gPSBWZXJ0ZXhJbmRpY2VzW2JdOwogICAg ICAgIFZOQ0FycmF5W1ZlcnRleEluZGljZXNbYl0qKCA4ICogc2l6ZW9mKEdMZmxvYXQpICsgNCAq IHNpemVvZihHTHVieXRlKSApKyggOCAqIHNpemVvZihHTGZsb2F0KSArIDQgKiBzaXplb2YoR0x1 Ynl0ZSkgKS00KygzKV0gPSAoIHRlcnJhaW4gPD0gVmVydGV4VGVycmFpbnNbYl0gKSA/IDI1NSA6 IDA7CiAgICAgICAgaWYgKCBWZXJ0ZXhJbmRpY2VzW2JdID4gVmVydGV4QXJyYXlNYXhJZHggKSB7 IFZlcnRleEFycmF5TWF4SWR4ID0gVmVydGV4SW5kaWNlc1tiXTsgfSBpZiAoIFZlcnRleEluZGlj ZXNbYl0gPCBWZXJ0ZXhBcnJheU1pbklkeCApIHsgVmVydGV4QXJyYXlNaW5JZHggPSBWZXJ0ZXhJ bmRpY2VzW2JdOyB9OwogICAgICAgIFZlcnRleEFycmF5SW5kaWNlc1tWZXJ0ZXhBcnJheUNvdW50 ZXIrK10gPSBWZXJ0ZXhJbmRpY2VzW2NdOwogICAgICAgIFZOQ0FycmF5W1ZlcnRleEluZGljZXNb Y10qKCA4ICogc2l6ZW9mKEdMZmxvYXQpICsgNCAqIHNpemVvZihHTHVieXRlKSApKyggOCAqIHNp emVvZihHTGZsb2F0KSArIDQgKiBzaXplb2YoR0x1Ynl0ZSkgKS00KygzKV0gPSAoIHRlcnJhaW4g PD0gVmVydGV4VGVycmFpbnNbY10gKSA/IDI1NSA6IDA7CiAgICAgICAgaWYgKCBWZXJ0ZXhJbmRp Y2VzW2NdID4gVmVydGV4QXJyYXlNYXhJZHggKSB7IFZlcnRleEFycmF5TWF4SWR4ID0gVmVydGV4 SW5kaWNlc1tjXTsgfSBpZiAoIFZlcnRleEluZGljZXNbY10gPCBWZXJ0ZXhBcnJheU1pbklkeCAp IHsgVmVydGV4QXJyYXlNaW5JZHggPSBWZXJ0ZXhJbmRpY2VzW2NdOyB9OwogICAgfQp9CgoKaW5s aW5lIHZvaWQgcXVhZHNxdWFyZTo6TWFrZVNwZWNpYWxUcmkoIGludCBhLCBpbnQgYiwgaW50IGMs IGludCB0ZXJyYWluKQp7CgoKICAgIGlmICggVmVydGV4VGVycmFpbnNbYV0gIT0gVmVydGV4VGVy cmFpbnNbYl0gJiYKICAgICAgICAgVmVydGV4VGVycmFpbnNbYV0gIT0gVmVydGV4VGVycmFpbnNb Y10gJiYKICAgICAgICAgVmVydGV4VGVycmFpbnNbYl0gIT0gVmVydGV4VGVycmFpbnNbY10gKQog ICAgewogICAgICAgIFZlcnRleEFycmF5SW5kaWNlc1tWZXJ0ZXhBcnJheUNvdW50ZXIrK10gPSBW ZXJ0ZXhJbmRpY2VzW2FdOwogICAgICAgIGlmICggVmVydGV4SW5kaWNlc1thXSA+IFZlcnRleEFy cmF5TWF4SWR4ICkgeyBWZXJ0ZXhBcnJheU1heElkeCA9IFZlcnRleEluZGljZXNbYV07IH0gaWYg KCBWZXJ0ZXhJbmRpY2VzW2FdIDwgVmVydGV4QXJyYXlNaW5JZHggKSB7IFZlcnRleEFycmF5TWlu SWR4ID0gVmVydGV4SW5kaWNlc1thXTsgfTsKICAgICAgICBWZXJ0ZXhBcnJheUluZGljZXNbVmVy dGV4QXJyYXlDb3VudGVyKytdID0gVmVydGV4SW5kaWNlc1tiXTsKICAgICAgICBpZiAoIFZlcnRl eEluZGljZXNbYl0gPiBWZXJ0ZXhBcnJheU1heElkeCApIHsgVmVydGV4QXJyYXlNYXhJZHggPSBW ZXJ0ZXhJbmRpY2VzW2JdOyB9IGlmICggVmVydGV4SW5kaWNlc1tiXSA8IFZlcnRleEFycmF5TWlu SWR4ICkgeyBWZXJ0ZXhBcnJheU1pbklkeCA9IFZlcnRleEluZGljZXNbYl07IH07CiAgICAgICAg VmVydGV4QXJyYXlJbmRpY2VzW1ZlcnRleEFycmF5Q291bnRlcisrXSA9IFZlcnRleEluZGljZXNb Y107CiAgICAgICAgaWYgKCBWZXJ0ZXhJbmRpY2VzW2NdID4gVmVydGV4QXJyYXlNYXhJZHggKSB7 IFZlcnRleEFycmF5TWF4SWR4ID0gVmVydGV4SW5kaWNlc1tjXTsgfSBpZiAoIFZlcnRleEluZGlj ZXNbY10gPCBWZXJ0ZXhBcnJheU1pbklkeCApIHsgVmVydGV4QXJyYXlNaW5JZHggPSBWZXJ0ZXhJ bmRpY2VzW2NdOyB9OwogICAgfQp9CgppbmxpbmUgdm9pZCBxdWFkc3F1YXJlOjpNYWtlTm9CbGVu ZFRyaSggaW50IGEsIGludCBiLCBpbnQgYywgaW50IHRlcnJhaW4gKQp7CiAgICBpZiAoICggVmVy dGV4VGVycmFpbnNbYV0gPT0gdGVycmFpbiB8fAogICAgICAgICAgIFZlcnRleFRlcnJhaW5zW2Jd ID09IHRlcnJhaW4gfHwKICAgICAgICAgICBWZXJ0ZXhUZXJyYWluc1tjXSA9PSB0ZXJyYWluICkg JiYKICAgICAgICAgKCBWZXJ0ZXhUZXJyYWluc1thXSA+PSB0ZXJyYWluICYmCiAgICAgICAgICAg VmVydGV4VGVycmFpbnNbYl0gPj0gdGVycmFpbiAmJgogICAgICAgICAgIFZlcnRleFRlcnJhaW5z W2NdID49IHRlcnJhaW4gKSApCiAgICB7CiAgICAgICAgVmVydGV4QXJyYXlJbmRpY2VzW1ZlcnRl eEFycmF5Q291bnRlcisrXSA9IFZlcnRleEluZGljZXNbYV07CiAgICAgICAgVk5DQXJyYXlbVmVy dGV4SW5kaWNlc1thXSooIDggKiBzaXplb2YoR0xmbG9hdCkgKyA0ICogc2l6ZW9mKEdMdWJ5dGUp ICkrKCA4ICogc2l6ZW9mKEdMZmxvYXQpICsgNCAqIHNpemVvZihHTHVieXRlKSApLTQrKDMpXSA9 ICggdGVycmFpbiA8PSBWZXJ0ZXhUZXJyYWluc1thXSApID8gMjU1IDogMDsKICAgICAgICBpZiAo IFZlcnRleEluZGljZXNbYV0gPiBWZXJ0ZXhBcnJheU1heElkeCApIHsgVmVydGV4QXJyYXlNYXhJ ZHggPSBWZXJ0ZXhJbmRpY2VzW2FdOyB9IGlmICggVmVydGV4SW5kaWNlc1thXSA8IFZlcnRleEFy cmF5TWluSWR4ICkgeyBWZXJ0ZXhBcnJheU1pbklkeCA9IFZlcnRleEluZGljZXNbYV07IH07CiAg ICAgICAgVmVydGV4QXJyYXlJbmRpY2VzW1ZlcnRleEFycmF5Q291bnRlcisrXSA9IFZlcnRleElu ZGljZXNbYl07CiAgICAgICAgVk5DQXJyYXlbVmVydGV4SW5kaWNlc1tiXSooIDggKiBzaXplb2Yo R0xmbG9hdCkgKyA0ICogc2l6ZW9mKEdMdWJ5dGUpICkrKCA4ICogc2l6ZW9mKEdMZmxvYXQpICsg NCAqIHNpemVvZihHTHVieXRlKSApLTQrKDMpXSA9ICggdGVycmFpbiA8PSBWZXJ0ZXhUZXJyYWlu c1tiXSApID8gMjU1IDogMDsKICAgICAgICBpZiAoIFZlcnRleEluZGljZXNbYl0gPiBWZXJ0ZXhB cnJheU1heElkeCApIHsgVmVydGV4QXJyYXlNYXhJZHggPSBWZXJ0ZXhJbmRpY2VzW2JdOyB9IGlm ICggVmVydGV4SW5kaWNlc1tiXSA8IFZlcnRleEFycmF5TWluSWR4ICkgeyBWZXJ0ZXhBcnJheU1p bklkeCA9IFZlcnRleEluZGljZXNbYl07IH07CiAgICAgICAgVmVydGV4QXJyYXlJbmRpY2VzW1Zl cnRleEFycmF5Q291bnRlcisrXSA9IFZlcnRleEluZGljZXNbY107CiAgICAgICAgVk5DQXJyYXlb VmVydGV4SW5kaWNlc1tjXSooIDggKiBzaXplb2YoR0xmbG9hdCkgKyA0ICogc2l6ZW9mKEdMdWJ5 dGUpICkrKCA4ICogc2l6ZW9mKEdMZmxvYXQpICsgNCAqIHNpemVvZihHTHVieXRlKSApLTQrKDMp XSA9ICggdGVycmFpbiA8PSBWZXJ0ZXhUZXJyYWluc1tjXSApID8gMjU1IDogMDsKICAgICAgICBp ZiAoIFZlcnRleEluZGljZXNbY10gPiBWZXJ0ZXhBcnJheU1heElkeCApIHsgVmVydGV4QXJyYXlN YXhJZHggPSBWZXJ0ZXhJbmRpY2VzW2NdOyB9IGlmICggVmVydGV4SW5kaWNlc1tjXSA8IFZlcnRl eEFycmF5TWluSWR4ICkgeyBWZXJ0ZXhBcnJheU1pbklkeCA9IFZlcnRleEluZGljZXNbY107IH07 CiAgICB9Cn0KCnZvaWQgcXVhZHNxdWFyZTo6UmVuZGVyQXV4KGNvbnN0IHF1YWRjb3JuZXJkYXRh JiBjZCwgY2xpcF9yZXN1bHRfdCB2aXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCB0ZXJyYWluKQoKCnsKICAgIGludCBoYWxmID0gMSA8PCBjZC5MZXZlbDsKICAgIGludCB3aG9s ZSA9IDIgPDwgY2QuTGV2ZWw7CgoKCiAgICBpZiAodmlzICE9IE5vQ2xpcCkgewoKICAgICAgICB2 aXMgPSBDbGlwU3F1YXJlKCBjZCApOwoKICAgICAgICBpZiAodmlzID09IE5vdFZpc2libGUgKSB7 CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKCiAgICB9CgogICAgaW50IGk7CgogICAg aW50IGZsYWdzID0gMDsKICAgIGludCBtYXNrID0gMTsKICAgIHF1YWRjb3JuZXJkYXRhIHE7CiAg ICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrLCBtYXNrIDw8PSAxKSB7CiAgICAgICAgaWYgKEVuYWJs ZWRGbGFncyAmICgxNiA8PCBpKSkgewogICAgICAgICAgICBTZXR1cENvcm5lckRhdGEoJnEsIGNk LCBpKTsKICAgICAgICAgICAgQ2hpbGRbaV0tPlJlbmRlckF1eChxLCB2aXMsIHRlcnJhaW4pOwog ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZsYWdzIHw9IG1hc2s7CiAgICAgICAgfQogICAg fQoKICAgIGlmIChmbGFncyA9PSAwKSByZXR1cm47CiMgMTM0NCAicXVhZHRyZWUuY3BwIgogICAg SW5pdFZlcnQoMCwgY2QueG9yZyArIGhhbGYsIGNkLnpvcmcgKyBoYWxmKTsKICAgIEluaXRWZXJ0 KDEsIGNkLnhvcmcgKyB3aG9sZSwgY2Quem9yZyArIGhhbGYpOwogICAgSW5pdFZlcnQoMiwgY2Qu eG9yZyArIHdob2xlLCBjZC56b3JnKTsKICAgIEluaXRWZXJ0KDMsIGNkLnhvcmcgKyBoYWxmLCBj ZC56b3JnKTsKICAgIEluaXRWZXJ0KDQsIGNkLnhvcmcsIGNkLnpvcmcpOwogICAgSW5pdFZlcnQo NSwgY2QueG9yZywgY2Quem9yZyArIGhhbGYpOwogICAgSW5pdFZlcnQoNiwgY2QueG9yZywgY2Qu em9yZyArIHdob2xlKTsKICAgIEluaXRWZXJ0KDcsIGNkLnhvcmcgKyBoYWxmLCBjZC56b3JnICsg d2hvbGUpOwogICAgSW5pdFZlcnQoOCwgY2QueG9yZyArIHdob2xlLCBjZC56b3JnICsgd2hvbGUp OwojIDEzODIgInF1YWR0cmVlLmNwcCIKICAgIGlmICggdGVycmFpbiA9PSAtMSApIHsKICAgICAg ICBpZiAoKEVuYWJsZWRGbGFncyAmIDEpID09IDAgKSB7IE1ha2VTcGVjaWFsVHJpKDAsIDIsIDgs IHRlcnJhaW4pOyB9IGVsc2UgeyBpZiAoZmxhZ3MgJiA4KSBNYWtlU3BlY2lhbFRyaSgwLCAxLCA4 LCB0ZXJyYWluKTsgaWYgKGZsYWdzICYgMSkgTWFrZVNwZWNpYWxUcmkoMCwgMiwgMSwgdGVycmFp bik7IH0gaWYgKChFbmFibGVkRmxhZ3MgJiAyKSA9PSAwICkgeyBNYWtlU3BlY2lhbFRyaSgwLCA0 LCAyLCB0ZXJyYWluKTsgfSBlbHNlIHsgaWYgKGZsYWdzICYgMSkgTWFrZVNwZWNpYWxUcmkoMCwg MywgMiwgdGVycmFpbik7IGlmIChmbGFncyAmIDIpIE1ha2VTcGVjaWFsVHJpKDAsIDQsIDMsIHRl cnJhaW4pOyB9IGlmICgoRW5hYmxlZEZsYWdzICYgNCkgPT0gMCApIHsgTWFrZVNwZWNpYWxUcmko MCwgNiwgNCwgdGVycmFpbik7IH0gZWxzZSB7IGlmIChmbGFncyAmIDIpIE1ha2VTcGVjaWFsVHJp KDAsIDUsIDQsIHRlcnJhaW4pOyBpZiAoZmxhZ3MgJiA0KSBNYWtlU3BlY2lhbFRyaSgwLCA2LCA1 LCB0ZXJyYWluKTsgfSBpZiAoKEVuYWJsZWRGbGFncyAmIDgpID09IDAgKSB7IE1ha2VTcGVjaWFs VHJpKDAsIDgsIDYsIHRlcnJhaW4pOyB9IGVsc2UgeyBpZiAoZmxhZ3MgJiA0KSBNYWtlU3BlY2lh bFRyaSgwLCA3LCA2LCB0ZXJyYWluKTsgaWYgKGZsYWdzICYgOCkgTWFrZVNwZWNpYWxUcmkoMCwg OCwgNywgdGVycmFpbik7IH07CiAgICB9IGVsc2UgaWYgKCBnZXRwYXJhbV90ZXJyYWluX2JsZW5k aW5nKCkgKSB7CiAgICAgICAgaWYgKChFbmFibGVkRmxhZ3MgJiAxKSA9PSAwICkgeyBNYWtlVHJp KDAsIDIsIDgsIHRlcnJhaW4pOyB9IGVsc2UgeyBpZiAoZmxhZ3MgJiA4KSBNYWtlVHJpKDAsIDEs IDgsIHRlcnJhaW4pOyBpZiAoZmxhZ3MgJiAxKSBNYWtlVHJpKDAsIDIsIDEsIHRlcnJhaW4pOyB9 IGlmICgoRW5hYmxlZEZsYWdzICYgMikgPT0gMCApIHsgTWFrZVRyaSgwLCA0LCAyLCB0ZXJyYWlu KTsgfSBlbHNlIHsgaWYgKGZsYWdzICYgMSkgTWFrZVRyaSgwLCAzLCAyLCB0ZXJyYWluKTsgaWYg KGZsYWdzICYgMikgTWFrZVRyaSgwLCA0LCAzLCB0ZXJyYWluKTsgfSBpZiAoKEVuYWJsZWRGbGFn cyAmIDQpID09IDAgKSB7IE1ha2VUcmkoMCwgNiwgNCwgdGVycmFpbik7IH0gZWxzZSB7IGlmIChm bGFncyAmIDIpIE1ha2VUcmkoMCwgNSwgNCwgdGVycmFpbik7IGlmIChmbGFncyAmIDQpIE1ha2VU cmkoMCwgNiwgNSwgdGVycmFpbik7IH0gaWYgKChFbmFibGVkRmxhZ3MgJiA4KSA9PSAwICkgeyBN YWtlVHJpKDAsIDgsIDYsIHRlcnJhaW4pOyB9IGVsc2UgeyBpZiAoZmxhZ3MgJiA0KSBNYWtlVHJp KDAsIDcsIDYsIHRlcnJhaW4pOyBpZiAoZmxhZ3MgJiA4KSBNYWtlVHJpKDAsIDgsIDcsIHRlcnJh aW4pOyB9OwogICAgfSBlbHNlIHsKICAgICAgICBpZiAoKEVuYWJsZWRGbGFncyAmIDEpID09IDAg KSB7IE1ha2VOb0JsZW5kVHJpKDAsIDIsIDgsIHRlcnJhaW4pOyB9IGVsc2UgeyBpZiAoZmxhZ3Mg JiA4KSBNYWtlTm9CbGVuZFRyaSgwLCAxLCA4LCB0ZXJyYWluKTsgaWYgKGZsYWdzICYgMSkgTWFr ZU5vQmxlbmRUcmkoMCwgMiwgMSwgdGVycmFpbik7IH0gaWYgKChFbmFibGVkRmxhZ3MgJiAyKSA9 PSAwICkgeyBNYWtlTm9CbGVuZFRyaSgwLCA0LCAyLCB0ZXJyYWluKTsgfSBlbHNlIHsgaWYgKGZs YWdzICYgMSkgTWFrZU5vQmxlbmRUcmkoMCwgMywgMiwgdGVycmFpbik7IGlmIChmbGFncyAmIDIp IE1ha2VOb0JsZW5kVHJpKDAsIDQsIDMsIHRlcnJhaW4pOyB9IGlmICgoRW5hYmxlZEZsYWdzICYg NCkgPT0gMCApIHsgTWFrZU5vQmxlbmRUcmkoMCwgNiwgNCwgdGVycmFpbik7IH0gZWxzZSB7IGlm IChmbGFncyAmIDIpIE1ha2VOb0JsZW5kVHJpKDAsIDUsIDQsIHRlcnJhaW4pOyBpZiAoZmxhZ3Mg JiA0KSBNYWtlTm9CbGVuZFRyaSgwLCA2LCA1LCB0ZXJyYWluKTsgfSBpZiAoKEVuYWJsZWRGbGFn cyAmIDgpID09IDAgKSB7IE1ha2VOb0JsZW5kVHJpKDAsIDgsIDYsIHRlcnJhaW4pOyB9IGVsc2Ug eyBpZiAoZmxhZ3MgJiA0KSBNYWtlTm9CbGVuZFRyaSgwLCA3LCA2LCB0ZXJyYWluKTsgaWYgKGZs YWdzICYgOCkgTWFrZU5vQmxlbmRUcmkoMCwgOCwgNywgdGVycmFpbik7IH07CiAgICB9Cn0KCgp2 b2lkIHF1YWRzcXVhcmU6OlNldHVwQ29ybmVyRGF0YShxdWFkY29ybmVyZGF0YSogcSwgY29uc3Qg cXVhZGNvcm5lcmRhdGEmIGNkLCBpbnQgQ2hpbGRJbmRleCkKIyAxNDE1ICJxdWFkdHJlZS5jcHAi CnsKICAgIGludCBoYWxmID0gMSA8PCBjZC5MZXZlbDsKCiAgICBxLT5QYXJlbnQgPSAmY2Q7CiAg ICBxLT5TcXVhcmUgPSBDaGlsZFtDaGlsZEluZGV4XTsKICAgIHEtPkxldmVsID0gY2QuTGV2ZWwg LSAxOwogICAgcS0+Q2hpbGRJbmRleCA9IENoaWxkSW5kZXg7CgogICAgc3dpdGNoIChDaGlsZElu ZGV4KSB7CiAgICBkZWZhdWx0OgogICAgY2FzZSAwOgogICAgICAgIHEtPnhvcmcgPSBjZC54b3Jn ICsgaGFsZjsKICAgICAgICBxLT56b3JnID0gY2Quem9yZzsKICAgICAgICBxLT5WZXJ0c1swXSA9 IGNkLlZlcnRzWzBdOwogICAgICAgIHEtPlZlcnRzWzFdID0gVmVydGV4WzJdOwogICAgICAgIHEt PlZlcnRzWzJdID0gVmVydGV4WzBdOwogICAgICAgIHEtPlZlcnRzWzNdID0gVmVydGV4WzFdOwog ICAgICAgIGJyZWFrOwoKICAgIGNhc2UgMToKICAgICAgICBxLT54b3JnID0gY2QueG9yZzsKICAg ICAgICBxLT56b3JnID0gY2Quem9yZzsKICAgICAgICBxLT5WZXJ0c1swXSA9IFZlcnRleFsyXTsK ICAgICAgICBxLT5WZXJ0c1sxXSA9IGNkLlZlcnRzWzFdOwogICAgICAgIHEtPlZlcnRzWzJdID0g VmVydGV4WzNdOwogICAgICAgIHEtPlZlcnRzWzNdID0gVmVydGV4WzBdOwogICAgICAgIGJyZWFr OwoKICAgIGNhc2UgMjoKICAgICAgICBxLT54b3JnID0gY2QueG9yZzsKICAgICAgICBxLT56b3Jn ID0gY2Quem9yZyArIGhhbGY7CiAgICAgICAgcS0+VmVydHNbMF0gPSBWZXJ0ZXhbMF07CiAgICAg ICAgcS0+VmVydHNbMV0gPSBWZXJ0ZXhbM107CiAgICAgICAgcS0+VmVydHNbMl0gPSBjZC5WZXJ0 c1syXTsKICAgICAgICBxLT5WZXJ0c1szXSA9IFZlcnRleFs0XTsKICAgICAgICBicmVhazsKCiAg ICBjYXNlIDM6CiAgICAgICAgcS0+eG9yZyA9IGNkLnhvcmcgKyBoYWxmOwogICAgICAgIHEtPnpv cmcgPSBjZC56b3JnICsgaGFsZjsKICAgICAgICBxLT5WZXJ0c1swXSA9IFZlcnRleFsxXTsKICAg ICAgICBxLT5WZXJ0c1sxXSA9IFZlcnRleFswXTsKICAgICAgICBxLT5WZXJ0c1syXSA9IFZlcnRl eFs0XTsKICAgICAgICBxLT5WZXJ0c1szXSA9IGNkLlZlcnRzWzNdOwogICAgICAgIGJyZWFrOwog ICAgfQp9CgppbnQgcXVhZHNxdWFyZTo6Um93U2l6ZTsKaW50IHF1YWRzcXVhcmU6Ok51bVJvd3M7 Cgp2b2lkIHF1YWRzcXVhcmU6OkFkZEhlaWdodE1hcChjb25zdCBxdWFkY29ybmVyZGF0YSYgY2Qs IGNvbnN0IEhlaWdodE1hcEluZm8mIGhtKQoKCgp7CiAgICBSb3dTaXplID0gaG0uUm93V2lkdGg7 CiAgICBOdW1Sb3dzID0gaG0uWlNpemU7CgogICAgaWYgKCBjZC5QYXJlbnQgPT0gX19udWxsICkg ewogICAgICAgIGlmICggVmVydGV4QXJyYXlJbmRpY2VzICE9IF9fbnVsbCApIHsKICAgICAgICAg ICAgZGVsZXRlIFZlcnRleEFycmF5SW5kaWNlczsKICAgICAgICB9CgoKCgogICAgICAgIFZlcnRl eEFycmF5SW5kaWNlcyA9IG5ldyBHTHVpbnRbNiAqIFJvd1NpemUgKiBOdW1Sb3dzXTsKICAgIH0K CgogICAgaW50IEJsb2NrU2l6ZSA9IDIgPDwgY2QuTGV2ZWw7CiAgICBpZiAoY2QueG9yZyA+IGht LlhPcmlnaW4gKyAoKGhtLlhTaXplICsgMikgPDwgaG0uU2NhbGUpIHx8CiAgICAgICAgY2QueG9y ZyArIEJsb2NrU2l6ZSA8IGhtLlhPcmlnaW4gLSAoMSA8PCBobS5TY2FsZSkgfHwKICAgICAgICBj ZC56b3JnID4gaG0uWk9yaWdpbiArICgoaG0uWlNpemUgKyAyKSA8PCBobS5TY2FsZSkgfHwKICAg ICAgICBjZC56b3JnICsgQmxvY2tTaXplIDwgaG0uWk9yaWdpbiAtICgxIDw8IGhtLlNjYWxlKSkK ICAgIHsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmIChjZC5QYXJlbnQgJiYgY2QuUGFy ZW50LT5TcXVhcmUpIHsKICAgICAgICBjZC5QYXJlbnQtPlNxdWFyZS0+RW5hYmxlQ2hpbGQoY2Qu Q2hpbGRJbmRleCwgKmNkLlBhcmVudCk7CiAgICB9CgogICAgaW50IGk7CgogICAgaW50IGhhbGYg PSAxIDw8IGNkLkxldmVsOwoKCiAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAgICAgICAg cXVhZGNvcm5lcmRhdGEgcTsKICAgICAgICBTZXR1cENvcm5lckRhdGEoJnEsIGNkLCBpKTsKCiAg ICAgICAgaWYgKENoaWxkW2ldID09IF9fbnVsbCAmJiBjZC5MZXZlbCA+IGhtLlNjYWxlKSB7Cgog ICAgICAgICAgICBDaGlsZFtpXSA9IG5ldyBxdWFkc3F1YXJlKCZxKTsKICAgICAgICB9CgoKICAg ICAgICBpZiAoQ2hpbGRbaV0pIHsKICAgICAgICAgICAgQ2hpbGRbaV0tPkFkZEhlaWdodE1hcChx LCBobSk7CiAgICAgICAgfQogICAgfQoKCiAgICBmbG9hdCBzWzVdOwogICAgc1swXSA9IGhtLlNh bXBsZShjZC54b3JnICsgaGFsZiwgY2Quem9yZyArIGhhbGYpOwogICAgc1sxXSA9IGhtLlNhbXBs ZShjZC54b3JnICsgaGFsZioyLCBjZC56b3JnICsgaGFsZik7CiAgICBzWzJdID0gaG0uU2FtcGxl KGNkLnhvcmcgKyBoYWxmLCBjZC56b3JnKTsKICAgIHNbM10gPSBobS5TYW1wbGUoY2QueG9yZywg Y2Quem9yZyArIGhhbGYpOwogICAgc1s0XSA9IGhtLlNhbXBsZShjZC54b3JnICsgaGFsZiwgY2Qu em9yZyArIGhhbGYqMik7CgoKCgogICAgZm9yIChpID0gMDsgaSA8IDU7IGkrKykgewogICAgICAg IGlmIChzW2ldICE9IDApIHsKICAgICAgICAgICAgRGlydHkgPSB0cnVlOwogICAgICAgICAgICBW ZXJ0ZXhbaV0uWSArPSBzW2ldOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoIURpcnR5KSB7Cgog ICAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICAgICAgICAgaWYgKENoaWxkW2ld ICYmIENoaWxkW2ldLT5EaXJ0eSkgewogICAgICAgICAgICAgICAgRGlydHkgPSB0cnVlOwogICAg ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYg KERpcnR5KSBTZXRTdGF0aWMoY2QpOwp9Cgpkb3VibGUgcXVhZHNxdWFyZTo6U2NhbGVYOwpkb3Vi bGUgcXVhZHNxdWFyZTo6U2NhbGVaOwp2b2lkIHF1YWRzcXVhcmU6OlNldFNjYWxlKGRvdWJsZSB4 LCBkb3VibGUgeikKewogICAgU2NhbGVYID0geDsKICAgIFNjYWxlWiA9IHo7Cn0KCnRlcnJhaW5f dCogcXVhZHNxdWFyZTo6VGVycmFpbjsKdm9pZCBxdWFkc3F1YXJlOjpTZXRUZXJyYWluKHRlcnJh aW5fdCAqdCkKewogICAgVGVycmFpbiA9IHQ7Cn0KCgoKCgoKZmxvYXQgSGVpZ2h0TWFwSW5mbzo6 U2FtcGxlKGludCB4LCBpbnQgeikgY29uc3QKewogICAgaWYgKCB4ID49IFhTaXplICkgewogICAg ICAgIHggPSBYU2l6ZSAtIDE7CiAgICB9CiAgICBpZiAoIHogPj0gWlNpemUgKSB7CiAgICAgICAg eiA9IFpTaXplIC0gMTsKICAgIH0KICAgIHJldHVybiBEYXRhWyB4ICsgeiAqIFJvd1dpZHRoIF07 Cn0K