This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
>Number: 7631 >Category: c++ >Synopsis: gcc 2.95.3 crashes when compiling a file in the Palm OS emulator >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Mon Aug 19 03:26:02 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Joel Estes >Release: unknown-1.0 >Organization: >Environment: UltraSparc II/Solaris 8 >Description: There is a problem compiling the ./SrcShared/MetaMemory.cpp file in the Palm OS Emulator. It gets the following error: gcc -DHAVE_DIRENT_H=1 -DSTDC_HEADERS=1 -DHAVE_SYS_ISA_DEFS_H=1 -DHAVE_FCNTL_H=1 -DHAVE_LIMITS_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_UNISTD_H=1 -DHAVE_TYPE_SOCKLEN_T=1 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 -DHAVE_MKDIR=1 -DHAVE_MKSTEMP=1 -DHAVE_TEMPNAM=1 -DHAVE_GL=1 -DHAVE_GL_GLU_H=1 -DHAVE_LIBFLTK=1 -I. -I. -I./../SrcShared -I./../SrcShared/Hardware -I./../SrcShared/Hardware/TRG -I./../SrcShared/Palm/Device -I./../SrcShared/Palm/Platform -I./../SrcShared/Palm/Platform/Core/Hardware/IncsPrv -I./../SrcShared/Palm/Platform/Core/System/IncsPrv -I./../SrcShared/Palm/Platform/Incs -I./../SrcShared/Palm/Platform/Incs/Core -I./../SrcShared/Palm/Platform/Incs/Core/Hardware -I./../SrcShared/Palm/Platform/Incs/Core/System -I./../SrcShared/Palm/Platform/Incs/Core/UI -I./../SrcShared/Palm/Platform/Incs/Libraries -I./../SrcShared/Gzip -I./../SrcShared/jpeg -I./../SrcShared/omnithread -I./../SrcShared/Patches -I./../SrcShared/UAE -I./../SrcUnix -I./../SrcUnix/espws-2.0 --save-temps -DPLATFORM_UNIX=1 -D__PALMOS_TRAPS__=0 -DEMULATION_LEVEL=EMULATION_UNIX -O2 -DHAS_PROFILING=0 -DNDEBUG -fexceptions -Wall -Wno-multichar -Wno-unknown-pragmas -Wno-conversion -fpermissive -g -D_REENTRANT -DPthreadDraftVersion=10 -DPthreadSupportThreadPriority -I/usr/openwin/include -c ./../SrcShared/MetaMemory.cpp ./../SrcShared/MetaMemory.cpp: In function `static enum Errors::EAccessType MetaMemory::AllowForBugs(long unsigned int, long int, int, Errors::EAccessType)': ./../SrcShared/MetaMemory.cpp:435: Internal compiler error. ./../SrcShared/MetaMemory.cpp:435: Please submit a full bug report. ./../SrcShared/MetaMemory.cpp:435: See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions. make[1]: *** [MetaMemory.o] Error 1 make[1]: Leaving directory `/export/home/local1/pkgs_32/POSE/Emulator_Src_3.4/BuildUnix' make: *** [all-recursive] Error 1 (The compiler was built from source distribution using the plain ./configure command, with no special options, and I have used it to successfully build several dozen other packages under Solaris 8 ) Attached is the file MetaMemory.ii. >How-To-Repeat: The POSE 3.4 distribution is available from the following URL: http://www.palmos.com/dev/tools/emulator/emulator_archive.html It requires fltk, as well. >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="MetaMemory.ii" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="MetaMemory.ii" IyAxICIuLy4uL1NyY1NoYXJlZC9NZXRhTWVtb3J5LmNwcCIKIAogCgoKCgoKCgoKCgoKIyAxICIu Li9TcmNTaGFyZWQvRW1Db21tb24uaCIgMQogCiAKCgoKCgoKCgoKCgoKCgogCgogCiAKIAoKIAog CiAKIAoKCgoKCgoKCgoKCgoKCgoKIAogCiAKIAogCiAKCiMgMSAiLi4vU3JjU2hhcmVkL1N3aXRj aGVzLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKIAogCiAKIAogCgogCiAKCiMgMzQgIi4uL1NyY1No YXJlZC9Td2l0Y2hlcy5oIgoKCgkgCgkKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJj LXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRlL3N5cy9pc2FfZGVmcy5oIiAxIDMgNAogCgoK CgoKCgojcHJhZ21hIGlkZW50CSJAKCMpaXNhX2RlZnMuaAkxLjIwCTk5LzA1LzA0IFNNSSIKCiAK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKIAoKCgoKCiMg MjY3ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9p bmNsdWRlL3N5cy9pc2FfZGVmcy5oIiAzIDQKCgogCgoKCgoKCiAKCgoKCgoKIAoKCgoKCgoKCgog CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgogCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKCiAKCgoK IyAzNjYgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4z L2luY2x1ZGUvc3lzL2lzYV9kZWZzLmgiIDMgNAoKCiAKCgoKCgoKCgoKCgp9CgoKCiMgMzcgIi4u L1NyY1NoYXJlZC9Td2l0Y2hlcy5oIiAyCgoKIyA1MyAiLi4vU3JjU2hhcmVkL1N3aXRjaGVzLmgi CgoKIAoKIyA3MSAiLi4vU3JjU2hhcmVkL1N3aXRjaGVzLmgiCgoKCQoJCgkKCgkKCQkKCQoKCgoK CgoKCgoKIyAxMjAgIi4uL1NyY1NoYXJlZC9Td2l0Y2hlcy5oIgoKCQoJCgoKCiAKIAogCiAKCgoJ CgoKCgogCiAKIAoKCgoKCQoKCgogCiAKIAogCgoKCgogCiAKCgoKCiAKIAoKCgoKIAoKCgoKIAog CiAKIAoKCgoKIAoKCgoKCQoKCgogCiAKCgoJCgoKCgoKIAoKCgogCiAKIAogCiAKIAogCiAKIAog CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKIyA1MCAiLi4vU3JjU2hhcmVkL0VtQ29tbW9uLmgiIDIKCgoKIAogCiAKCgoK CgoKCgojIDkzICIuLi9TcmNTaGFyZWQvRW1Db21tb24uaCIKCgogCiAKIAoKIyAxICIuLi9TcmNT aGFyZWQvRW1UeXBlcy5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCiAKIAogCgogCgoJdHlwZWRlZglz aWduZWQgY2hhcgkJCWludDg7Cgl0eXBlZGVmCXVuc2lnbmVkIGNoYXIJCXVpbnQ4OwoKCXR5cGVk ZWYgc2lnbmVkIHNob3J0CQlpbnQxNjsKCXR5cGVkZWYgdW5zaWduZWQgc2hvcnQJCXVpbnQxNjsK Cgl0eXBlZGVmIHNpZ25lZCBsb25nCQkJaW50MzI7Cgl0eXBlZGVmIHVuc2lnbmVkIGxvbmcJCXVp bnQzMjsKCgoKCgoJdHlwZWRlZiBzaWduZWQgbG9uZyBsb25nCWludDY0OwoJdHlwZWRlZiB1bnNp Z25lZCBsb25nIGxvbmcJdWludDY0OwoKCnR5cGVkZWYgdWludDMyCQkJCWVtdXB0cjsKCnR5cGVk ZWYgaW50IAkJCQlCb29sOwoKdHlwZWRlZiBpbnQzMgkJCQlFcnJDb2RlOwp0eXBlZGVmIGludDMy CQkJCVN0ckNvZGU7Cgp0eXBlZGVmIHVpbnQ4CQkJCVNjYWxlVHlwZTsKdHlwZWRlZiBpbnQzMgkJ CQlSQU1TaXplVHlwZTsKdHlwZWRlZiBpbnQzMgkJCQlFbUNvb3JkOwoKCgoKCiAKCmVudW0gQ2xv c2VBY3Rpb25UeXBlCnsKCWtTYXZlQWx3YXlzLAoJa1NhdmVBc2ssCglrU2F2ZU5ldmVyCn07CgoK ZW51bSBMb2dnaW5nVHlwZQp7CglrTm9ybWFsTG9nZ2luZwk9IDB4MDEsCglrR3JlbWxpbkxvZ2dp bmcJPSAweDAyLAoJa0FsbExvZ2dpbmcJCT0ga05vcm1hbExvZ2dpbmcgfCBrR3JlbWxpbkxvZ2dp bmcKfTsKCgplbnVtIEVtUmVzZXRUeXBlCnsKCWtSZXNldFN5cywJCQkgCglrUmVzZXRTb2Z0LAkJ CSAKCWtSZXNldEhhcmQsCQkJIAoJa1Jlc2V0RGVidWcsCQkgCgoJa1Jlc2V0VHlwZU1hc2sJCT0g MHgwNywKCWtSZXNldEV4dE1hc2sJCT0gMHgwOCwKCWtSZXNldE5vRXh0CQkJPSAweDA4LAoKCWtS ZXNldFN5c05vRXh0CQk9IGtSZXNldE5vRXh0IHwga1Jlc2V0U3lzLAkgCglrUmVzZXRTb2Z0Tm9F eHQJCT0ga1Jlc2V0Tm9FeHQgfCBrUmVzZXRTb2Z0LAkgCglrUmVzZXRIYXJkTm9FeHQJCT0ga1Jl c2V0Tm9FeHQgfCBrUmVzZXRIYXJkLAkgCglrUmVzZXREZWJ1Z05vRXh0CT0ga1Jlc2V0Tm9FeHQg fCBrUmVzZXREZWJ1ZwkgCn07CgoKZW51bSBFbUVycm9ySGFuZGxpbmdPcHRpb24KewoJa1Nob3cs CglrQ29udGludWUsCglrUXVpdCwKCWtTd2l0Y2gKfTsKCgoKIyA5OSAiLi4vU3JjU2hhcmVkL0Vt Q29tbW9uLmgiIDIKCiAKCgogCiAKIAoKCgoKCgoJCiMgMSAiLi4vU3JjVW5peC9FbUNvbW1vblVu aXguaCIgMQogCiAKCgoKCgoKCgoKCgoKCgogCgogCiAKIAogCiAKIAoKCgoKIAoKIyAxICIuLi9T cmNTaGFyZWQvUGFsbS5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCiMgMSAiLi4vU3JjU2hhcmVkL1Bh bG1QYWNrLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNwcmFnbWEgcGFjaygyKQoKIyAx NyAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKCiAKCgoKCiAKCgoKCgoKCgoKCgogCgogCiAKCgkK IyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0J1aWxkRGVmaW5lcy5oIiAxCiAK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgogCiAKCgoKCgoKCiAKIAogCiAKIAogCgoK CgogCgoKCgogCiAKCgoKCiAKIAoKCgoKCiAKIAoKCgoKCgoKCgogCiAKIAogCgoKCgoKIAogCiAK IAogCgoKCgoKIAogCgoKCgogCiAKIAogCgoKCgoKIAogCiAKCgoKCiAKIAoKCgoKIAogCgoKCgog CiAKCgoKCiAKCgoKCgogCiAKIAogCgoKCgoKCgoKCgojIDQxICIuLi9TcmNTaGFyZWQvUGFsbS5o IiAyCgoKCSAKCSAKCSAKCSAKCgkKCgoJCQoJCgoKCgoKCQojIDEgIi4uL1NyY1NoYXJlZC9QYWxt L1BsYXRmb3JtL0luY3MvUGFsbVR5cGVzLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK CiAKIAogCgogCiAKIAogCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9CdWls ZERlZmF1bHRzLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIAoKIAogCiAKIAog CiAKCgogCgoKCgoKCgoKCgoKCgoKCQoKCgoKCgkKCgkKIyA3MyAiLi4vU3JjU2hhcmVkL1BhbG0v UGxhdGZvcm0vSW5jcy9CdWlsZERlZmF1bHRzLmgiCgoKCgoKCgogCgoKCgogCiAKCgoKCiAKCgoK CiAKCgkKCgogCgoJCgoKIAoKCQoKCgoJCgkgCgkgCgkgCgkKCgogCgoKICAgCgoKCgoKCgkgICAK ICAgCgojIDE0MCAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9CdWlsZERlZmF1bHRz LmgiCgoKCiAKCiAgIAoKCgkgICAKICAgCgoKCgoJCgoKIAoKCQoKCiAKCgkKCgoKCQoKCgoJCgoK CgkKCgoKIAogCiAKIAoKCgkKCgogCgoJCgoKIAoKCQoKCiAKIAoKCQoKCgoKCQoJIAoJIAoJIAoJ CgoKCgogCiAKIAoKCQoKCgoJCgoKCgkKCgoKCQoKCiAKCgkKCgogCgoJCgoKIAoKCQoKCiAKCgkg CgkKCgogCgoJIAoJCgoKIAoKCSAKCQoKCiAKCgkgCgkKCgogCgoJIAoJCgoKIAoKCQoKCiAKCgkK CgogCiAKIAoKCgoKCgoJCgoKCiAKIAogCiAKIAoKCiMgMzUgIi4uL1NyY1NoYXJlZC9QYWxtL1Bs YXRmb3JtL0luY3MvUGFsbVR5cGVzLmgiIDIKCgoKIAoKCgoKCgoKCgoKCgogCgoKIAoKCgoKCgoK IAp0eXBlZGVmIHNpZ25lZCBjaGFyCQlJbnQ4Owp0eXBlZGVmIHNpZ25lZCBzaG9ydAkJSW50MTY7 CQp0eXBlZGVmIHNpZ25lZCBsb25nCQlJbnQzMjsKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIJVUlu dDg7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgIFVJbnQxNjsKdHlwZWRlZiB1bnNpZ25lZCBsb25n ICAgVUludDMyOwoKCgogCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIJQm9vbGVhbjsKCgp0eXBlZGVm IGNoYXIJCQkJQ2hhcjsKdHlwZWRlZiBVSW50MTYJCQkJV0NoYXI7CQkgCgp0eXBlZGVmIFVJbnQx NgkJCQlFcnI7Cgp0eXBlZGVmIFVJbnQzMgkJCQlMb2NhbElEOwkJIAoKdHlwZWRlZiBJbnQxNiAJ CQkJQ29vcmQ7CQkgCgoKdHlwZWRlZiB2b2lkICoJCQkJTWVtUHRyOwkJIAp0eXBlZGVmIHN0cnVj dCBfb3BhcXVlICpNZW1IYW5kbGU7CSAKCgoKdHlwZWRlZiBJbnQzMiAoKlByb2NQdHIpKCk7CgoK CiAKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgogCgoJCiMgMTMyICIuLi9TcmNTaGFyZWQvUGFsbS9Q bGF0Zm9ybS9JbmNzL1BhbG1UeXBlcy5oIgoKICAgICAgCgoKCgoJCgoKCgoKIAoKCgogCiAKCgoK IAoKCgoKCgoKIAoKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCQoKCgkJCgkKCgoKIAoKCgoKCgoK CgoKCgoKCiAKCgkKCQoJCgoJCgoKCgkKCgoKCgkKCgoKCgogCgoKCgoKCgojIDI0OCAiLi4vU3Jj U2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9QYWxtVHlwZXMuaCIKCgojIDI2NCAiLi4vU3JjU2hh cmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9QYWxtVHlwZXMuaCIKCgoKCgoKCgojIDI4MiAiLi4vU3Jj U2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9QYWxtVHlwZXMuaCIKCgoKIAoKCgoKCgoKIAoKCgoJ CgoKCgkKCgojIDU4ICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgogCiAKCgkgCgogCiAKCQkKIyAx ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL0JpdG1hcC5oIiAx CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0v SW5jcy9Db3JlL0NvcmVUcmFwcy5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKIAogCgogCgoKCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZv cm0vSW5jcy9Db3JlL0hhcmR3YXJlL002OEtId3IuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKIAoK CgogCgoKCgoKIAoKCnR5cGVkZWYgc3RydWN0IE02OEtFeGNUYWJsZVR5cGUgewoJVUludDMyCWlu aXRTdGFjazsJCQkJCQkJCSAKCVVJbnQzMglpbml0UEM7CQkJCQkJCQkJIAoJCglVSW50MzIJYnVz RXJyOwkJCQkJCQkJCSAKCVVJbnQzMglhZGRyZXNzRXJyOwkJCQkJCQkJIAoJVUludDMyCWlsbGVn YWxJbnN0cjsJCQkJCQkJIAoJVUludDMyCWRpdmlkZUJ5WmVybzsJCQkJCQkJIAoJVUludDMyCWNo azsJCQkJCQkJCQkJIAoJVUludDMyCXRyYXA7CQkJCQkJCQkJCSAKCVVJbnQzMglwcml2aWxlZ2U7 CQkJCQkJCQkgCglVSW50MzIJdHJhY2U7CQkJCQkJCQkJIAoJVUludDMyCWFUcmFwOwkJCQkJCQkJ CSAKCVVJbnQzMglmVHJhcDsJCQkJCQkJCQkgCglVSW50MzIJcmVzZXJ2ZWQxMjsJCQkJCQkJCSAK CVVJbnQzMgljb3Byb2M7CQkJCQkJCQkJIAoJVUludDMyCWZvcm1hdEVycjsJCQkJCQkJCSAKCVVJ bnQzMgl1bml0aWFsaXplZEludDsJCQkJCQkgCgkKCVVJbnQzMglyZXNlcnZlZFs4XTsJCQkJCQkJ IAoJCglVSW50MzIJc3B1cmlvdXNJbnQ7CQkJCQkJCSAKCVVJbnQzMglhdXRvVmVjMTsJCQkJCQkJ CSAKCVVJbnQzMglhdXRvVmVjMjsJCQkJCQkJCSAKCVVJbnQzMglhdXRvVmVjMzsJCQkJCQkJCSAK CVVJbnQzMglhdXRvVmVjNDsJCQkJCQkJCSAKCVVJbnQzMglhdXRvVmVjNTsJCQkJCQkJCSAKCVVJ bnQzMglhdXRvVmVjNjsJCQkJCQkJCSAKCVVJbnQzMglhdXRvVmVjNzsJCQkJCQkJCSAKCQoJVUlu dDMyCXRyYXBOWzE2XTsJCQkJCQkJCSAKCQoJVUludDMyCXVuYXNzaWduZWRbMTZdOwkJCQkJCSAK CX0gTTY4S0V4Y1RhYmxlVHlwZTsKIAogCgogCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBNNjhLUmVn c1R5cGUgewoJVUludDMyCWRbOF07CQkJCQkJCSAKCVVJbnQzMglhWzddOwkJCQkJCQkgCglVSW50 MzIJdXNwOwkJCQkJCQkgCglVSW50MzIJc3NwOwkJCQkJCQkgCglVSW50MzIJcGM7CQkJCQkJCSAK CVVJbnQxNglzcjsJCQkJCQkJIAp9IE02OEtSZWdzVHlwZTsKCgoKIAogCgoKCiAKCgoKIAoKCiAK CgoKIAoKCgoKCgoKCgojIDU3ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUv Q29yZVRyYXBzLmgiIDIKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKIAoKCgoKCgog CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCiAKCiAKCgoKCiAKCgoKCgoKCiAKCgoKIAoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgogCgoKCgoKCgogCgoKCgoKCgoKCgogCgoKCgoKCiAKCgoKCgoKCgoKCgoK CiAKCgoKCgoKCgoKIAoKCiAKIAoKCgoKIAoKCgoKIAoKCgoKCgogCgoKCgoKCiAKCgoKIAoKCgoK IAoKCiAKCgoKCgogCgoKCiAKCgoKCiAKCiAKCgogCgoKIAoKCiAKCgoKCgkJCiAKIAogCgogCiAK IAoJCgoKCgoKCiAKIAogCiAKCiAKCgogCgoKIAoKCiAKCgogCgoKCgoKCgoKCgoKCgogCgoKCgoK CgoKCgoKCiAKCgogCgoKIAoKCiAKCgogCgoKCiAKIAoKCiAKCgoKIAoKCiAKCgoKCgoKCgoKCgoK CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiAK CgoKCiAKCgogCgoKCgoKCiAKCgoKCgoKCgogCgoKCgoKCiAKCgogCgoKIAogCiAKCgoKCgoKCgoK CQoKCiMgMjQgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vQml0 bWFwLmgiIDIKCgojIDEgIi4uL1NyY1NoYXJlZC9QYWxtT3B0RXJyb3JDaGVja0xldmVsLmgiIDEK IAogCgoKCgoKCgoKCgoKCgoKCgoJCgkJCgkJCgkKCgkKCQkKCQoKCiMgMjYgIi4uL1NyY1NoYXJl ZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vQml0bWFwLmgiIDIKCgoKIAogCiAKCiAK CgoKCiAKdHlwZWRlZiBlbnVtIHsKCUJpdG1hcENvbXByZXNzaW9uVHlwZVNjYW5MaW5lID0gMCwK CUJpdG1hcENvbXByZXNzaW9uVHlwZVJMRSwKCQoJQml0bWFwQ29tcHJlc3Npb25UeXBlTm9uZSA9 IDB4RkYKfSBCaXRtYXBDb21wcmVzc2lvblR5cGU7CgoKIAoKdHlwZWRlZiBzdHJ1Y3QgQml0bWFw RmxhZ3NUeXBlIHsKCVVJbnQxNiBjb21wcmVzc2VkOjE7ICAJCQkgCglVSW50MTYgaGFzQ29sb3JU YWJsZToxOwkJCSAKCVVJbnQxNiBoYXNUcmFuc3BhcmVuY3k6MTsJCSAKCVVJbnQxNiBpbmRpcmVj dDoxOwkJCQkgCglVSW50MTYgZm9yU2NyZWVuOjE7CQkJCSAKCVVJbnQxNiByZXNlcnZlZDoxMTsK fSBCaXRtYXBGbGFnc1R5cGU7CgogCnR5cGVkZWYgc3RydWN0IEJpdG1hcFR5cGUgewoJSW50MTYg IAkJCQl3aWR0aDsKCUludDE2ICAJCQkJaGVpZ2h0OwoJVUludDE2ICAJCQkJcm93Qnl0ZXM7CglC aXRtYXBGbGFnc1R5cGUJZmxhZ3M7CglVSW50OAkJCQkJcGl4ZWxTaXplOwkJCSAKCVVJbnQ4CQkJ CQl2ZXJzaW9uOwkJCQkgCglVSW50MTYJIAkJCW5leHREZXB0aE9mZnNldDsJIAoJCQkJCQkJCQkJ CQkJIAoJVUludDgJCQkJCXRyYW5zcGFyZW50SW5kZXg7CSAKCQkJCQkJCQkJCQkJCSAKCVVJbnQ4 CQkJCQljb21wcmVzc2lvblR5cGU7CSAKCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkKCVVJ bnQxNgkgCQkJcmVzZXJ2ZWQ7CQkJIAoJCgkgCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkJCQkJCQkJ CQkJCQkgCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCn0gQml0bWFwVHlwZTsKCnR5cGVkZWYgQml0 bWFwVHlwZSAqQml0bWFwUHRyOwoKCiAKIAogCgp0eXBlZGVmIHN0cnVjdCBSR0JDb2xvclR5cGUg ewoJVUludDgJaW5kZXg7CQkJCQkJCQkJIAoJVUludDgJcjsJCQkJCQkJCQkJCSAKCVVJbnQ4CWc7 CQkJCQkJCQkJCQkgCglVSW50OAliOwkJCQkJCQkJCQkJIAp9IFJHQkNvbG9yVHlwZTsKCgp0eXBl ZGVmIHN0cnVjdCBDb2xvclRhYmxlVHlwZSB7CgkJCQkJCQkJCQkJCQkJIAoJVUludDE2CQkJCQkJ bnVtRW50cmllczsJCSAKCSAKCQkJCQkJCQkJCQkJCQkgCn0gQ29sb3JUYWJsZVR5cGU7CgoKIAoK CiMgMTQ5ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL0JpdG1h cC5oIgoKCgojIDY2ICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgoJCQojIDEgIi4uL1NyY1NoYXJl ZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vQ2hhckF0dHIuaCIgMQogCgoKCgoKCgoK CgoKCgoKCgoKCiAKCgoKIAogCiAKIAogCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKIAogCiAK CiAKCiMgNzQgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vQ2hh ckF0dHIuaCIKCgoKCgoKCgoKCgoKCgoKCiAKIAogCgoKCgoKCgojIDEyNiAiLi4vU3JjU2hhcmVk L1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9DaGFyQXR0ci5oIgoKCgoKIyA2NyAiLi4v U3JjU2hhcmVkL1BhbG0uaCIgMgoKCQkKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9J bmNzL0NvcmUvU3lzdGVtL0NoYXJzLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAogCiAK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiAKIAogCiAKCgoKCgoKCgoKCgoKCgoK CgoKCgogCgoKCiAKCgoKCiAKCgoKCQkJCQkJCQkJCQkJCQkJIAogCgoJCQkJCQkJCQkJCQkJCQkg CgkJCQkJCQkJCQkJCQkJCSAKCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoKCgoK CiAKIAogCgoKCgoKCgoKCgoJCQkJCQkJCQkJCQkJCQkJIAoKCgoKCgogCiAKIAogCiAKIAoKCgog CgoKCiAKCgoKIAoKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKCgojIDM1MCAiLi4vU3JjU2hhcmVk L1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9DaGFycy5oIgoKCiMgMzYxICIuLi9TcmNT aGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL0NoYXJzLmgiCgogCmVudW0gc3lt Ym9sQ2hhcnMgewoJc3ltYm9sTGVmdEFycm93ID0gMywKCXN5bWJvbFJpZ2h0QXJyb3csCglzeW1i b2xVcEFycm93LAoJc3ltYm9sRG93bkFycm93LAoJc3ltYm9sU21hbGxEb3duQXJyb3csCglzeW1i b2xTbWFsbFVwQXJyb3csCglzeW1ib2xNZW1vID0gOSwKCXN5bWJvbEhlbHAsCglzeW1ib2xOb3Rl LAoJc3ltYm9sTm90ZVNlbGVjdGVkLAoJc3ltYm9sQ2Fwc0xvY2ssCglzeW1ib2xOdW1Mb2NrLAoJ c3ltYm9sU2hpZnRVcHBlciwKCXN5bWJvbFNoaWZ0UHVuYywKCXN5bWJvbFNoaWZ0RXh0LAoJc3lt Ym9sU2hpZnROb25lLAoJc3ltYm9sTm9UaW1lLAoJc3ltYm9sQWxhcm0sCglzeW1ib2xSZXBlYXQs CglzeW1ib2xDaGVja01hcmssCgkgCgkgCglzeW1ib2xEaWFtb25kQ2hyLAoJc3ltYm9sQ2x1YkNo ciwKCXN5bWJvbEhlYXJ0Q2hyLAoJc3ltYm9sU3BhZGVDaHIKCX07CgogCmVudW0gc3ltYm9sN0No YXJzIHsKCXN5bWJvbDdTY3JvbGxVcCA9IDEsCglzeW1ib2w3U2Nyb2xsRG93biwKCXN5bWJvbDdT Y3JvbGxVcERpc2FibGVkLAoJc3ltYm9sN1Njcm9sbERvd25EaXNhYmxlZAoJfTsKCiAKZW51bSBz eW1ib2wxMUNoYXJzIHsKCXN5bWJvbENoZWNrYm94T2ZmID0gMCwKCXN5bWJvbENoZWNrYm94T24s CglzeW1ib2wxMUxlZnRBcnJvdywKCXN5bWJvbDExUmlnaHRBcnJvdywKCXN5bWJvbDExTGVmdEFy cm93RGlzYWJsZWQsCQkgCglzeW1ib2wxMVJpZ2h0QXJyb3dEaXNhYmxlZAkJIAoJfTsKCgoKIyA2 OCAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKIAogCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0v UGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9DcmMuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoK IAoKCgoKCgogCgoKCgoKCmV4dGVybiAiQyIgewoKCgoJCgogCiAKIAoKCiAKIAogCiAKVUludDE2 CQlDcmMxNkNhbGNCbG9jayhjb25zdCB2b2lkICpidWZQLCBVSW50MTYgY291bnQsIFVJbnQxNiBj cmMpCgkJCQkJCQkgIDsKClVJbnQxNgkJQ3JjMTZDYWxjQmlnQmxvY2sodm9pZCAqYnVmUCwgVUlu dDMyIGNvdW50LCBVSW50MTYgY3JjKTsKCgoKfQoKCgoKCiMgNzEgIi4uL1NyY1NoYXJlZC9QYWxt LmgiIDIKCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3Rl bS9EYXRhTWdyLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKIyAxICIuLi9TcmNTaGFyZWQv UGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL0Vycm9yQmFzZS5oIiAxCiAKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc2V0 am1wLmgiIDEgMyA0CiAKIAoKIAogCiAKCiAKCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpc2V0 am1wLmgJMS4zNgk5OS8wOC8xMCBTTUkiCQoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3Nw YXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRlL2lzby9zZXRqbXBfaXNvLmgiIDEgMyA0 CiAKIAoKIAogCiAKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpc2V0 am1wX2lzby5oCTEuMQk5OS8wOC8wOSBTTUkiCiAKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0 dXJlX3Rlc3RzLmgiIDEgMyA0CiAKCgoKCiAKIAogCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpZmVh dHVyZV90ZXN0cy5oCTEuMTgJOTkvMDcvMjYgU01JIgoKCgoKZXh0ZXJuICJDIiB7CgoKIAoKCgoK CgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgp9CgoKCiMgMzEg Ii91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1 ZGUvaXNvL3NldGptcF9pc28uaCIgMiAzIDQKCgoKZXh0ZXJuICJDIiB7CgoKCgogCgoKCgojIDU0 ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNs dWRlL2lzby9zZXRqbXBfaXNvLmgiIDMgNAoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGludAlqbXBf YnVmWzEyIF07CgoKCgoKCgoKCmV4dGVybiBpbnQgc2V0am1wKGptcF9idWYpOwojcHJhZ21hIHVu a25vd25fY29udHJvbF9mbG93KHNldGptcCkKZXh0ZXJuIGludCBfc2V0am1wKGptcF9idWYpOwoj cHJhZ21hIHVua25vd25fY29udHJvbF9mbG93KF9zZXRqbXApCmV4dGVybiB2b2lkIGxvbmdqbXAo am1wX2J1ZiwgaW50KTsKZXh0ZXJuIHZvaWQgX2xvbmdqbXAoam1wX2J1ZiwgaW50KTsKCiMgOTUg Ii91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1 ZGUvaXNvL3NldGptcF9pc28uaCIgMyA0CgoKCgoKCgoKCgoKCgoKCgoKfQoKCgojIDE5ICIvdXNy L2luY2x1ZGUvc2V0am1wLmgiIDIgMyA0CgoKIAoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKCgoK IAoKCgoKdHlwZWRlZiBpbnQgc2lnam1wX2J1ZlsxOSBdOwoKCmV4dGVybiBpbnQgc2lnc2V0am1w KHNpZ2ptcF9idWYsIGludCk7CiNwcmFnbWEgdW5rbm93bl9jb250cm9sX2Zsb3coc2lnc2V0am1w KQpleHRlcm4gdm9pZCBzaWdsb25nam1wKHNpZ2ptcF9idWYsIGludCk7CgoKIyA2MyAiL3Vzci9p bmNsdWRlL3NldGptcC5oIiAzIDQKCgoKfQoKCgojIDEwMyAiLi4vU3JjU2hhcmVkL1BhbG0vUGxh dGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9FcnJvckJhc2UuaCIgMgoKCgogCgoKCiAKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoK CgoKCgoKCgoKCgkKCgkKCgoKCQogCnR5cGVkZWYgc3RydWN0IEVyckV4Y2VwdGlvblR5cGUgewoJ c3RydWN0IEVyckV4Y2VwdGlvblR5cGUqCW5leHRQOwkgCglqbXBfYnVmIAkJCQkJCXN0YXRlOwkg CglJbnQzMgkJCQkJCQkJZXJyOwkJIAoJfSBFcnJFeGNlcHRpb25UeXBlOwp0eXBlZGVmIEVyckV4 Y2VwdGlvblR5cGUgKkVyckV4Y2VwdGlvblB0cjsKCgogCgoKCgoKCgoKCQkKIAogCiAKIAogCiAK CgoKCgoKCQkJCgkJCQoKCgoKCgogCgoKIyAyODkgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3Jt L0luY3MvQ29yZS9TeXN0ZW0vRXJyb3JCYXNlLmgiCgoKCgoKCiMgMjMgIi4uL1NyY1NoYXJlZC9Q YWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vRGF0YU1nci5oIiAyCgoKIAojIDEgIi4uL1Ny Y1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vTWVtb3J5TWdyLmgiIDEKIAoK CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCgp0eXBlZGVmIGVudW0gewltZW1JRFB0ciwgbWVt SURIYW5kbGUgfSBMb2NhbElES2luZDsKCgogCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKIAoKCgoK CgoKCgoKCgoKCgoKIAoKCgoKCiMgMzM1ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNz L0NvcmUvU3lzdGVtL01lbW9yeU1nci5oIgoKCgoKCgoKIyAyNiAiLi4vU3JjU2hhcmVkL1BhbG0v UGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9EYXRhTWdyLmgiIDIKCgoKdHlwZWRlZiBVSW50MzIJ RG1SZXNUeXBlOwp0eXBlZGVmIFVJbnQxNglEbVJlc0lEOwoKIAoKCgoKCgoKCgoKCgoKIAogCiAK IAogCiAKIAogCiAKIAoKCgoKCgogCgoKCgoKIAoKCgogCgoKCgogCiAKIAogCiAKIAoKCgoJCQkJ CQkJCQkJCQkJCQkgCgoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCgkJCQkJCQkJ CQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJ CSAKCgkJCQkJCQkJCQkJCQkJCSAKCgoKCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJ IAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCgkJCQkJCQkJCQkJCQkJCSAKCQkJ CQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgoKCgogCgojIDEyMyAiLi4vU3JjU2hhcmVk L1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9EYXRhTWdyLmgiCgkJCQkJCQkJCQkJCQkK IAoKCgoKIAoKCgoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJ CQkJIAoKCQkJCQkJCQkJCQkJCQkJIAoKCgogCgoKCgoKCgoKCiAKdHlwZWRlZgl2b2lkICoJCQkJ CQlEbU9wZW5SZWY7CgoKIAoKCgp0eXBlZGVmIHN0cnVjdCB7CglVSW50MzIJCWluZm9bOF07Cgl9 IERtU2VhcmNoU3RhdGVUeXBlOwp0eXBlZGVmIERtU2VhcmNoU3RhdGVUeXBlKglEbVNlYXJjaFN0 YXRlUHRyOwkKCgoKIAoKCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQ4CQkJYXR0cmlidXRlczsJCQkJ CQkJIAoJVUludDgJCQl1bmlxdWVJRFszXTsJCQkJCQkgCgl9IFNvcnRSZWNvcmRJbmZvVHlwZTsK CnR5cGVkZWYgU29ydFJlY29yZEluZm9UeXBlICpTb3J0UmVjb3JkSW5mb1B0cjsKCnR5cGVkZWYg SW50MTYgRG1Db21wYXJGICh2b2lkICosIHZvaWQgKiwgSW50MTYgb3RoZXIsIFNvcnRSZWNvcmRJ bmZvUHRyLCAKCQkJCQkJCQlTb3J0UmVjb3JkSW5mb1B0ciwgTWVtSGFuZGxlIGFwcEluZm9IKTsK CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCiMgNTM4ICIu Li9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL0RhdGFNZ3IuaCIKCgoK IyA3MiAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKCQkKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9Q bGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL0RhdGVUaW1lLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoK CgoKCgp0eXBlZGVmIGVudW0gCgl7Cgl0ZkNvbG9uLAoJdGZDb2xvbkFNUE0sCQkJIAoJdGZDb2xv bjI0aCwJCQkJIAoJdGZEb3QsCgl0ZkRvdEFNUE0sCQkJCSAKCXRmRG90MjRoLAkJCQkgCgl0Zkhv dXJzQU1QTSwJCQkgCgl0ZkhvdXJzMjRoLAkJCQkgCgl0ZkNvbW1hMjRoCQkJCSAKCX0gVGltZUZv cm1hdFR5cGU7CgoKdHlwZWRlZiBlbnVtIHsKCWRzTm9uZSwJCQkJCSAKCWRzVVNBLAkJCQkJIAoJ ZHNBdXN0cmFsaWEsCQkJIAoJZHNXZXN0ZXJuRXVyb3BlYW4sCSAKCWRzTWlkZGxlRXVyb3BlYW4s CQkgCglkc0Vhc3Rlcm5FdXJvcGVhbiwJIAoJZHNHcmVhdEJyaXRhaW4sCQkgCglkc1J1bWFuaWEs CQkJCSAKCWRzVHVya2V5LAkJCQkgCglkc0F1c3RyYWxpYVNoaWZ0ZWQJIAoJfSBEYXlsaWdodFNh dmluZ3NUeXBlczsKCgogCgoKCgp0eXBlZGVmIGVudW0gewoJZGZNRFlXaXRoU2xhc2hlcywJCSAK CWRmRE1ZV2l0aFNsYXNoZXMsCQkgCglkZkRNWVdpdGhEb3RzLAkJCSAKCWRmRE1ZV2l0aERhc2hl cywJCSAKCWRmWU1EV2l0aFNsYXNoZXMsCQkgCglkZllNRFdpdGhEb3RzLAkJCSAKCWRmWU1EV2l0 aERhc2hlcywJCSAKCglkZk1EWUxvbmdXaXRoQ29tbWEsCSAKCWRmRE1ZTG9uZywJCQkJIAoJZGZE TVlMb25nV2l0aERvdCwJCSAKCWRmRE1ZTG9uZ05vRGF5LAkJIAoJZGZETVlMb25nV2l0aENvbW1h LAkgCglkZllNRExvbmdXaXRoRG90LAkJIAoJZGZZTURMb25nV2l0aFNwYWNlLAkgCgoJZGZNWU1l ZCwJCQkJCSAKCWRmTVlNZWROb1Bvc3QJCQkgCgl9IERhdGVGb3JtYXRUeXBlOwoKdHlwZWRlZiBz dHJ1Y3QgewoJSW50MTYgc2Vjb25kOwoJSW50MTYgbWludXRlOwoJSW50MTYgaG91cjsKCUludDE2 IGRheTsKCUludDE2IG1vbnRoOwoJSW50MTYgeWVhcjsKCUludDE2IHdlZWtEYXk7CQkgCgl9IERh dGVUaW1lVHlwZTsKCQp0eXBlZGVmIERhdGVUaW1lVHlwZSAqRGF0ZVRpbWVQdHI7CgoKIAogCiAK dHlwZWRlZiBzdHJ1Y3QgewoJVUludDggICAgICAgIGhvdXJzOwoJVUludDggICAgICAgIG1pbnV0 ZXM7Cn0gVGltZVR5cGU7Cgp0eXBlZGVmIFRpbWVUeXBlICpUaW1lUHRyOwoKCgoKIAogCiAKdHlw ZWRlZiBzdHJ1Y3QgewoJVUludDE2IHllYXIgIDo3OyAgICAgICAgICAgICAgICAgICAgCglVSW50 MTYgbW9udGggOjQ7IAoJVUludDE2IGRheSAgIDo1Owp9IERhdGVUeXBlOwoKdHlwZWRlZiBEYXRl VHlwZSAqRGF0ZVB0cjsKCgogCgoKCiAKIAoKCgoKCgoKCgoKCgoKIAogCgoKCgoKIAoKCgoKCgoK CgoKCgogCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiAKdHlwZWRlZiBlbnVtIHsKCWRvbTFzdFN1 biwgZG9tMXN0TW9uLCBkb20xc3RUdWUsIGRvbTFzdFdlbiwgZG9tMXN0VGh1LCBkb20xc3RGcmks IGRvbTFzdFNhdCwKCWRvbTJuZFN1biwgZG9tMm5kTW9uLCBkb20ybmRUdWUsIGRvbTJuZFdlbiwg ZG9tMm5kVGh1LCBkb20ybmRGcmksIGRvbTJuZFNhdCwKCWRvbTNyZFN1biwgZG9tM3JkTW9uLCBk b20zcmRUdWUsIGRvbTNyZFdlbiwgZG9tM3JkVGh1LCBkb20zcmRGcmksIGRvbTNyZFNhdCwKCWRv bTR0aFN1biwgZG9tNHRoTW9uLCBkb200dGhUdWUsIGRvbTR0aFdlbiwgZG9tNHRoVGh1LCBkb200 dGhGcmksIGRvbTR0aFNhdCwKCWRvbUxhc3RTdW4sIGRvbUxhc3RNb24sIGRvbUxhc3RUdWUsIGRv bUxhc3RXZW4sIGRvbUxhc3RUaHUsIGRvbUxhc3RGcmksIAoJZG9tTGFzdFNhdAoJfSBEYXlPZldl ZWtUeXBlOwoKIAoKCmVudW0gewoJZGF0ZVRlbXBsYXRlRGF5TnVtID0gJzAnLAoJZGF0ZVRlbXBs YXRlRE9XTmFtZSwKCWRhdGVUZW1wbGF0ZU1vbnRoTmFtZSwKCWRhdGVUZW1wbGF0ZU1vbnRoTnVt LAoJZGF0ZVRlbXBsYXRlWWVhck51bQp9OwoKCgoKCgogCiAKIAoKIAogCiAKIAogCiAKIAogCgog CiAKIAojIDI4MCAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9E YXRlVGltZS5oIgoKCgoKIyA3MyAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKIAogCgkJCiAKIAog CgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9GZWF0 dXJlTWdyLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgogCgoKIyA4 NyAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9GZWF0dXJlTWdy LmgiCgoKCiMgODAgIi4uL1NyY1NoYXJlZC9QYWxtLmgiIDIKCiAKIAoJCQojIDEgIi4uL1NyY1No YXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vRm9udC5oIiAxCiAKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKIAoKCiAKCgp0eXBlZGVmIHN0cnVjdCB7CglJbnQ4CQlvZmZzZXQ7CglJ bnQ4CQl3aWR0aDsKfSBGb250Q2hhckluZm9UeXBlLCAqIEZvbnRDaGFySW5mb1B0cjsKCnR5cGVk ZWYgc3RydWN0IHsKCUludDE2IGZvbnRUeXBlOyAJCQkgCglJbnQxNiBmaXJzdENoYXI7IAkJCSAK CUludDE2IGxhc3RDaGFyOyAJCQkgCglJbnQxNiBtYXhXaWR0aDsgCQkJIAoJSW50MTYga2Vybk1h eDsgCQkJIAoJSW50MTYgbkRlc2NlbnQ7IAkJCSAKCUludDE2IGZSZWN0V2lkdGg7IAkJIAoJSW50 MTYgZlJlY3RIZWlnaHQ7IAkJIAoJSW50MTYgb3dUTG9jOyAJCQkJIAoJSW50MTYgYXNjZW50OyAJ CQkJIAoJSW50MTYgZGVzY2VudDsgCQkJIAoJSW50MTYgbGVhZGluZzsgCQkJIAoJSW50MTYgcm93 V29yZHM7IAkJCSAKfSBGb250VHlwZTsKCnR5cGVkZWYgRm9udFR5cGUgKkZvbnRQdHI7Cgp0eXBl ZGVmIEZvbnRQdHIgKkZvbnRUYWJsZVB0cjsKCmVudW0gZm9udElEIHsgCglzdGRGb250ID0gMHgw MCwJCQkJCSAKCWJvbGRGb250LCAJCQkJCQkJIAoJbGFyZ2VGb250LAkJCQkJCQkgCglzeW1ib2xG b250LAkJCQkJCQkgCglzeW1ib2wxMUZvbnQsIAkJCQkJCSAKCXN5bWJvbDdGb250LAkJCQkJCSAK CWxlZEZvbnQsCQkJCQkJCQkgCglsYXJnZUJvbGRGb250LAkJCQkJCSAKCWZudEFwcEZvbnRDdXN0 b21CYXNlID0gMHg4MAkgCn07Cgp0eXBlZGVmIGVudW0gZm9udElEIEZvbnRJRDsKCgoKCgoKCiAK IAogCiAKIAoKIyAxNDcgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0 ZW0vRm9udC5oIgoKCgoKIyA4MyAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKIAogCiAKCQkKIyAx ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL0ludGxNZ3IuaCIg MQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAogCiAKCgoJCgoKCQkKCQoKCiAKCgoKIAoK CgogCgoKCgoKCQoKCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK IyAxMTEgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vSW50bE1n ci5oIgoKCgojIDg3ICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgogCgkJCiMgMSAiLi4vU3JjU2hh cmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9LZXlNZ3IuaCIgMQogCgoKCgoKCgoK CgoKCgoKCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiMgNzMgIi4uL1NyY1No YXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vS2V5TWdyLmgiCgoKCQoKIyA4OSAi Li4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKCQkKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9y bS9JbmNzL0NvcmUvU3lzdGVtL0xvY2FsaXplLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoK CiAKIAp0eXBlZGVmIGVudW0gewoJbmZDb21tYVBlcmlvZCwKCW5mUGVyaW9kQ29tbWEsCgluZlNw YWNlQ29tbWEsCgluZkFwb3N0cm9waGVQZXJpb2QsCgluZkFwb3N0cm9waGVDb21tYQoJfSBOdW1i ZXJGb3JtYXRUeXBlOwoKCQoKIyA1MSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9D b3JlL1N5c3RlbS9Mb2NhbGl6ZS5oIgoKCgoKIyA5MCAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoK CQkKIAoJCQojIDEgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0v TmV0Qml0VXRpbHMuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi4uL1Ny Y1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vTmV0TWdyLmgiIDEKIAoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0lu Y3MvTGlicmFyaWVzL0xpYlRyYXBzLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgogCiAKCiAKCgoKCgoK IAogCiAKIAoKdHlwZWRlZiBlbnVtIHsKCXN5c0xpYlRyYXBOYW1lID0gMHhBODAwICwKCXN5c0xp YlRyYXBPcGVuLAoJc3lzTGliVHJhcENsb3NlLAoJc3lzTGliVHJhcFNsZWVwLAoJc3lzTGliVHJh cFdha2UsCglzeXNMaWJUcmFwQ3VzdG9tCgl9IFN5c0xpYlRyYXBOdW1iZXI7CgoKCgojIDI5ICIu Li9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL05ldE1nci5oIiAyCgoj IDEgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vU3lzRXZlbnQu aCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIuLi9TcmNTaGFyZWQv UGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL1JlY3QuaCIgMQogCgoKCgoKCgoKCgoKCgoK CgoKCgoKIAoKCgoKdHlwZWRlZiBzdHJ1Y3QgQWJzUmVjdFR5cGUgewogIENvb3JkIGxlZnQ7CiAg Q29vcmQgdG9wOwogIENvb3JkIHJpZ2h0OwogIENvb3JkIGJvdHRvbTsKfSBBYnNSZWN0VHlwZTsK Cgp0eXBlZGVmIHN0cnVjdCBQb2ludFR5cGUgewogIENvb3JkIHg7CiAgQ29vcmQgeTsKfSBQb2lu dFR5cGU7CgoKdHlwZWRlZiBzdHJ1Y3QgUmVjdGFuZ2xlVHlwZSB7CiAgUG9pbnRUeXBlICB0b3BM ZWZ0OwogIFBvaW50VHlwZSAgZXh0ZW50Owp9IFJlY3RhbmdsZVR5cGU7Cgp0eXBlZGVmIFJlY3Rh bmdsZVR5cGUgKlJlY3RhbmdsZVB0cjsKCgoKIyA4MCAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZv cm0vSW5jcy9Db3JlL1N5c3RlbS9SZWN0LmgiCgoKCgojIDM0ICIuLi9TcmNTaGFyZWQvUGFsbS9Q bGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL1N5c0V2ZW50LmgiIDIKCiMgMSAiLi4vU3JjU2hhcmVk L1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9XaW5kb3cuaCIgMQogCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAp0eXBlZGVmIGVudW0geyB3aW5VcCA9IDAsIHdpbkRv d24sIHdpbkxlZnQsIHdpblJpZ2h0IH0gV2luRGlyZWN0aW9uVHlwZTsKCgogCnR5cGVkZWYgZW51 bSB7IHNjcmVlbkZvcm1hdCA9IDAsIGdlbmVyaWNGb3JtYXQgfSBXaW5kb3dGb3JtYXRUeXBlOwoK CiAKdHlwZWRlZiBlbnVtIHt3aW5Mb2NrQ29weSwgd2luTG9ja0VyYXNlLCB3aW5Mb2NrRG9udENh cmV9IFdpbkxvY2tJbml0VHlwZTsKCgogCnR5cGVkZWYgZW51bSB7Cgl3aW5TY3JlZW5Nb2RlR2V0 RGVmYXVsdHMsCgl3aW5TY3JlZW5Nb2RlR2V0LAoJd2luU2NyZWVuTW9kZVNldFRvRGVmYXVsdHMs Cgl3aW5TY3JlZW5Nb2RlU2V0LAoJd2luU2NyZWVuTW9kZUdldFN1cHBvcnRlZERlcHRocywKCXdp blNjcmVlbk1vZGVHZXRTdXBwb3J0c0NvbG9yCn0gV2luU2NyZWVuTW9kZU9wZXJhdGlvbjsKCiAK CgoKCiAKdHlwZWRlZiBlbnVtIHt3aW5QYWludCwgd2luRXJhc2UsIHdpbk1hc2ssIHdpbkludmVy dCwgd2luT3ZlcmxheSwgd2luUGFpbnRJbnZlcnNlLCB3aW5Td2FwfSBXaW5EcmF3T3BlcmF0aW9u OwoKCnR5cGVkZWYgZW51bSB7IGJsYWNrUGF0dGVybiwgd2hpdGVQYXR0ZXJuLCBncmF5UGF0dGVy biwgY3VzdG9tUGF0dGVybiB9IFBhdHRlcm5UeXBlOwoKCgoKCiAKIAogCnR5cGVkZWYgZW51bSB7 IG5vVW5kZXJsaW5lLCBncmF5VW5kZXJsaW5lLCBzb2xpZFVuZGVybGluZSwgY29sb3JVbmRlcmxp bmUgfSBVbmRlcmxpbmVNb2RlVHlwZTsKCgoKCnR5cGVkZWYgVUludDggSW5kZXhlZENvbG9yVHlw ZTsJCQkJIAoKdHlwZWRlZiBVSW50OCBDdXN0b21QYXR0ZXJuVHlwZSBbOF07CQkgCgogCgoKIAog CiAKCgp0eXBlZGVmIHN0cnVjdCBEcmF3U3RhdGVUeXBlIHsKCVdpbkRyYXdPcGVyYXRpb24JdHJh bnNmZXJNb2RlOwoJUGF0dGVyblR5cGUJCQlwYXR0ZXJuOwoJVW5kZXJsaW5lTW9kZVR5cGUJdW5k ZXJsaW5lTW9kZTsKCUZvbnRJRAkJCQlmb250SWQ7CglGb250UHRyCQkJCWZvbnQ7CglDdXN0b21Q YXR0ZXJuVHlwZQlwYXR0ZXJuRGF0YTsKCUluZGV4ZWRDb2xvclR5cGUJZm9yZUNvbG9yOwoJSW5k ZXhlZENvbG9yVHlwZQliYWNrQ29sb3I7CglJbmRleGVkQ29sb3JUeXBlCXRleHRDb2xvcjsKCVVJ bnQ4CQkJCQlyZXNlcnZlZDsJCn0gRHJhd1N0YXRlVHlwZTsKCgoKCgoKCiAKIAogCgoKIAoKdHlw ZWRlZiB1bmlvbiBGcmFtZUJpdHNUeXBlIHsKCXN0cnVjdCB7CgkJVUludDE2IGNvcm5lckRpYW0J CTogODsJCQkJIAoJCVVJbnQxNiByZXNlcnZlZF8zCQk6IDM7IAoJCVVJbnQxNiB0aHJlZUQJCQk6 IDE7CQkJCSAKCQlVSW50MTYgc2hhZG93V2lkdGgJOiAyOwkJCQkgCgkJVUludDE2IHdpZHRoCQkJ OiAyOwkJCQkgCgl9IGJpdHM7CglVSW50MTYgd29yZDsJCQkJCQkJCQkgCn0gRnJhbWVCaXRzVHlw ZTsKCnR5cGVkZWYgVUludDE2IEZyYW1lVHlwZTsKCiAKCgoKCgoKCgoKCgoKCgogCgp0eXBlZGVm IHN0cnVjdCBXaW5kb3dGbGFnc1R5cGUgewoJVUludDE2IGZvcm1hdDoxOyAgICAgICAKCVVJbnQx NiBvZmZzY3JlZW46MTsgICAgCglVSW50MTYgbW9kYWw6MTsgICAgICAgIAoJVUludDE2IGZvY3Vz YWJsZToxOyAgICAKCVVJbnQxNiBlbmFibGVkOjE7ICAgICAgCglVSW50MTYgdmlzaWJsZToxOyAg ICAgIAoJVUludDE2IGRpYWxvZzoxOyAgICAgICAKCVVJbnQxNiBmcmVlQml0bWFwOjE7CSAgCglV SW50MTYgcmVzZXJ2ZWQgOjg7Cn0gV2luZG93RmxhZ3NUeXBlOwoKdHlwZWRlZiBzdHJ1Y3QgV2lu ZG93VHlwZSB7CiAgQ29vcmQJCQkJCQkJZGlzcGxheVdpZHRoVjIwOwkJIAogIENvb3JkCQkJCQkJ CWRpc3BsYXlIZWlnaHRWMjA7CQkgCiAgdm9pZCAqCQkJCQkJCWRpc3BsYXlBZGRyVjIwOwkJIAog IFdpbmRvd0ZsYWdzVHlwZQkJCQl3aW5kb3dGbGFnczsKICBSZWN0YW5nbGVUeXBlCQkJCXdpbmRv d0JvdW5kczsKICBBYnNSZWN0VHlwZQkJCQkJY2xpcHBpbmdCb3VuZHM7CiAgQml0bWFwUHRyCQkJ CQkJYml0bWFwUDsKICBGcmFtZUJpdHNUeXBlICAgCQkJZnJhbWVUeXBlOwogIERyYXdTdGF0ZVR5 cGUgKgkJCQlkcmF3U3RhdGVQOwkJCQkgCiAgc3RydWN0IFdpbmRvd1R5cGUgKgkJbmV4dFdpbmRv dzsKfSBXaW5kb3dUeXBlOwoKdHlwZWRlZiBXaW5kb3dUeXBlICpXaW5QdHI7CnR5cGVkZWYgV2lu ZG93VHlwZSAqV2luSGFuZGxlOwoKCiAKIAogCnR5cGVkZWYgc3RydWN0IFdpbkxpbmVUeXBlIHsK CUNvb3JkIHgxOwoJQ29vcmQgeTE7CglDb29yZCB4MjsKCUNvb3JkIHkyOwp9IFdpbkxpbmVUeXBl OwoKIAoKCgogCiAKIAoKIAogCiAKdHlwZWRlZiBzdHJ1Y3QgR3JhcGhpY1N0YXRlVHlwZSB7CglE cmF3U3RhdGVUeXBlICoJZHJhd1N0YXRlUDsKCURyYXdTdGF0ZVR5cGUgKglkcmF3U3RhdGVTdGFj a1A7CglJbnQxNgkJCQkJZHJhd1N0YXRlSW5kZXg7CglVSW50MTYJCQkJc2NyZWVuTG9ja0NvdW50 Owp9IEdyYXBoaWNTdGF0ZVR5cGU7CgogCiAKIAoKCgoKIAogCiAKCiAKIAoKCgoKCgoKCgoKCgkK CQoJCiMgNTU2ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL1dp bmRvdy5oIgoKCgoKIyAzNSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5 c3RlbS9TeXNFdmVudC5oIiAyCgoKCiAKIAoKCnR5cGVkZWYgZW51bSB7CglzeXNFdmVudE5pbEV2 ZW50ID0gMCwKCXN5c0V2ZW50UGVuRG93bkV2ZW50LAoJc3lzRXZlbnRQZW5VcEV2ZW50LAoJc3lz RXZlbnRQZW5Nb3ZlRXZlbnQsCglzeXNFdmVudEtleURvd25FdmVudCwKCXN5c0V2ZW50V2luRW50 ZXJFdmVudCwKCXN5c0V2ZW50V2luRXhpdEV2ZW50LAoJc3lzRXZlbnRBcHBTdG9wRXZlbnQgPSAy MiwKCXN5c0V2ZW50VHNtQ29uZmlybUV2ZW50ID0gMzUsCglzeXNFdmVudFRzbUZlcEJ1dHRvbkV2 ZW50LAoJc3lzRXZlbnRUc21GZXBNb2RlRXZlbnQsCgoJIAoJIAoJc3lzRXZlbnROZXh0VUlFdmVu dCA9IDB4MDgwMCwKCgkgCglzeXNFdmVudEZpcnN0SU5ldExpYkV2ZW50ID0gMHgxMDAwLAoJc3lz RXZlbnRGaXJzdFdlYkxpYkV2ZW50ID0gMHgxMTAwLAoJCgkgCgkgCglzeXNFdmVudEZpcnN0VXNl ckV2ZW50ID0gMHg2MDAwCn0gU3lzRXZlbnRzRW51bTsKCgoKIAoKCgoKCgoKCgoKCgogCgoKCiAK CgoKc3RydWN0IF9HZW5lcmljRXZlbnRUeXBlIHsKCVVJbnQxNiAgICAgICAgIGRhdHVtWzhdOwog ICB9OwoKc3RydWN0IF9QZW5VcEV2ZW50VHlwZSB7CiAgIFBvaW50VHlwZSAgICAgIHN0YXJ0OyAg ICAgICAgICAgICAKICAgUG9pbnRUeXBlICAgICAgZW5kOyAgICAgICAgICAgICAgIAogICB9OwoK c3RydWN0IF9LZXlEb3duRXZlbnRUeXBlIHsKICAgV0NoYXIgICAgICAgICAgY2hyOyAgICAgICAg ICAgICAgIAogICBVSW50MTYgICAgICAgICBrZXlDb2RlOyAgICAgICAgICAgCiAgIFVJbnQxNiAg ICAgICAgIG1vZGlmaWVyczsKICAgfTsKCnN0cnVjdCBfV2luRW50ZXJFdmVudFR5cGUgewogICBX aW5IYW5kbGUgICAgICBlbnRlcldpbmRvdzsKICAgV2luSGFuZGxlICAgICAgZXhpdFdpbmRvdzsK ICAgfTsKCnN0cnVjdCBfV2luRXhpdEV2ZW50VHlwZSB7CiAgIFdpbkhhbmRsZSAgICAgIGVudGVy V2luZG93OwogICBXaW5IYW5kbGUgICAgICBleGl0V2luZG93OwogICB9OwoKc3RydWN0IF9UU01D b25maXJtVHlwZSB7CglDaGFyICoJCQl5b21pVGV4dDsKCVVJbnQxNgkJCWZvcm1JRDsKICAgfTsK CnN0cnVjdCBfVFNNRmVwQnV0dG9uVHlwZSB7CglVSW50MTYJCQlidXR0b25JRDsKICAgfTsKCnN0 cnVjdCBfVFNNRmVwTW9kZUV2ZW50VHlwZSB7CglVSW50MTYgICAgICAgICBtb2RlOwkJCQkJIAog ICB9OwoKCiAKdHlwZWRlZiBzdHJ1Y3QgU3lzRXZlbnRUeXBlIHsKICAgU3lzRXZlbnRzRW51bSAg ZVR5cGU7CiAgIEJvb2xlYW4gICAgICAgIHBlbkRvd247CiAgIFVJbnQ4ICAgICAgICAgIHRhcENv dW50OwogICBDb29yZCAgICAgICAgICBzY3JlZW5YOwogICBDb29yZCAgICAgICAgICBzY3JlZW5Z OwogICB1bmlvbiB7CiAgICAgIHN0cnVjdCBfR2VuZXJpY0V2ZW50VHlwZQkJZ2VuZXJpYzsKCiAg ICAgIHN0cnVjdCBfUGVuVXBFdmVudFR5cGUJCQlwZW5VcDsKICAgICAgc3RydWN0IF9LZXlEb3du RXZlbnRUeXBlCQlrZXlEb3duOwogICAgICBzdHJ1Y3QgX1dpbkVudGVyRXZlbnRUeXBlCQl3aW5F bnRlcjsKICAgICAgc3RydWN0IF9XaW5FeGl0RXZlbnRUeXBlCQl3aW5FeGl0OwogICAgICBzdHJ1 Y3QgX1RTTUNvbmZpcm1UeXBlCQkJdHNtQ29uZmlybTsKICAgICAgc3RydWN0IF9UU01GZXBCdXR0 b25UeXBlCQl0c21GZXBCdXR0b247CiAgICAgIHN0cnVjdCBfVFNNRmVwTW9kZUV2ZW50VHlwZQl0 c21GZXBNb2RlOwoKICAgICAgfSBkYXRhOwoKfSBTeXNFdmVudFR5cGU7CgoKIAp0eXBlZGVmICBz dHJ1Y3QgewogICBTeXNFdmVudFR5cGUgICBldmVudDsKICAgVUludDMyICAgICAgICAgaWQ7ICAg ICAgICAgICAgICAgICAgIAogICB9IFN5c0V2ZW50U3RvcmVUeXBlOwoKCgogCiAKIAoKIyAxOTUg Ii4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vU3lzRXZlbnQuaCIK CgoKIAoKCgoKCgojIDMwICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lz dGVtL05ldE1nci5oIiAyCgoKIAogCgoKCgogCgoKIAogCiAKCgogCiAKCgoJCQkgCgkJCSAKCQkJ IAoJCQkgCgkJCSAKCQkJIAoKCiAKCgoKCiAKCgogCgoKCiAKCgoKIAogCiAKCgogCiAKIAogCgoK IAogCiAKCgoKCgoKCgogCiAKIAogCgoKCgoKCgogCiAKIAoKCgogCiAKIAogCiAKIAoKIAp0eXBl ZGVmIGVudW0gewoJIAoJbmV0U29ja2V0T3B0SVBPcHRpb25zID0gMSwJCQkJCQkgCgkKCSAKCW5l dFNvY2tldE9wdFRDUE5vRGVsYXkgPSAxLAkJCQkJIAoJbmV0U29ja2V0T3B0VENQTWF4U2VnID0g MiwJCQkJCQkgCgoJIAoJbmV0U29ja2V0T3B0U29ja0RlYnVnID0gMHgwMDAxLAkJCQkgCgluZXRT b2NrZXRPcHRTb2NrQWNjZXB0Q29ubiA9IDB4MDAwMiwJCSAKCW5ldFNvY2tldE9wdFNvY2tSZXVz ZUFkZHIgPSAweDAwMDQsCQkJIAoJbmV0U29ja2V0T3B0U29ja0tlZXBBbGl2ZSA9IDB4MDAwOCwJ CQkgCgluZXRTb2NrZXRPcHRTb2NrRG9udFJvdXRlID0gMHgwMDEwLAkJCSAKCW5ldFNvY2tldE9w dFNvY2tCcm9hZGNhc3QgPSAweDAwMjAsCQkJIAoJbmV0U29ja2V0T3B0U29ja1VzZUxvb3BiYWNr ID0gMHgwMDQwLAkJIAoJbmV0U29ja2V0T3B0U29ja0xpbmdlciA9IDB4MDA4MCwJCQkJIAoJbmV0 U29ja2V0T3B0U29ja09PQkluTGluZSA9IDB4MDEwMCwJCQkgCgkKCW5ldFNvY2tldE9wdFNvY2tT bmRCdWZTaXplID0gMHgxMDAxLAkJIAoJbmV0U29ja2V0T3B0U29ja1JjdkJ1ZlNpemUgPSAweDEw MDIsCQkgCgluZXRTb2NrZXRPcHRTb2NrU25kTG93V2F0ZXIgPSAweDEwMDMsCQkgCgluZXRTb2Nr ZXRPcHRTb2NrUmN2TG93V2F0ZXIgPSAweDEwMDQsCQkgCgluZXRTb2NrZXRPcHRTb2NrU25kVGlt ZW91dCA9IDB4MTAwNSwJCSAKCW5ldFNvY2tldE9wdFNvY2tSY3ZUaW1lb3V0ID0gMHgxMDA2LAkJ IAoJbmV0U29ja2V0T3B0U29ja0Vycm9yU3RhdHVzPSAweDEwMDcsCQkgCgluZXRTb2NrZXRPcHRT b2NrU29ja2V0VHlwZSA9IDB4MTAwOCwJCSAKCQoJIAoJbmV0U29ja2V0T3B0U29ja05vbkJsb2Nr aW5nID0gMHgyMDAwLAkJIAoJbmV0U29ja2V0T3B0U29ja1JlcXVpcmVFcnJDbGVhciA9IDB4MjAw MSwJIAoJCQkJCQkJCQkJCQkJCQkgCgluZXRTb2NrZXRPcHRTb2NrTXVsdGlQa3RBZGRyID0gMHgy MDAyCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJfSBOZXRTb2NrZXRPcHRF bnVtOwoKCgoKIAp0eXBlZGVmIGVudW0gewoJbmV0U29ja2V0T3B0TGV2ZWxJUCA9IDAsCQkJCQkg CgluZXRTb2NrZXRPcHRMZXZlbFRDUCA9IDYsCQkJCQkgCgluZXRTb2NrZXRPcHRMZXZlbFNvY2tl dCA9IDB4RkZGRgkJCSAKCX0gTmV0U29ja2V0T3B0TGV2ZWxFbnVtOwoKCiAKdHlwZWRlZiBzdHJ1 Y3QgewoJSW50MTYJCW9uT2ZmOwkJCQkJCQkJIAoJSW50MTYJCXRpbWU7CQkJCQkJCQkJIAoJfSBO ZXRTb2NrZXRMaW5nZXJUeXBlOwoKIAogCiAKdHlwZWRlZiBlbnVtIHsKCW5ldFNvY2tldEFkZHJS YXc9MCwJCQkJCQkJCQkgCgluZXRTb2NrZXRBZGRySU5FVD0yCQkJCQkJCQkJIAoJfSBOZXRTb2Nr ZXRBZGRyRW51bTsKCnR5cGVkZWYgZW51bSB7CgluZXRTb2NrZXRUeXBlU3RyZWFtPTEsCQkJCQkJ CQkgCgluZXRTb2NrZXRUeXBlRGF0YWdyYW09MiwJCQkJCQkJIAoJbmV0U29ja2V0VHlwZVJhdz0z LAkJCQkJCQkJCSAKCW5ldFNvY2tldFR5cGVSZWxpYWJsZU1zZz00LAkJCQkJCSAKCW5ldFNvY2tl dFR5cGVMaWNlbnNlZT04CQkJCQkJCQkgCgl9IE5ldFNvY2tldFR5cGVFbnVtOwoKIAoKCgoKCgog CiAKIAp0eXBlZGVmIGVudW0gewoJbmV0U29ja2V0RGlySW5wdXQ9MCwKCW5ldFNvY2tldERpck91 dHB1dD0xLAoJbmV0U29ja2V0RGlyQm90aD0yCgl9IE5ldFNvY2tldERpckVudW07CgoKIAogCiAK IAp0eXBlZGVmCUludDE2CQkJTmV0U29ja2V0UmVmOwkJCgogCnR5cGVkZWYJVUludDMyCQlOZXRJ UEFkZHI7CQkgCgoKCiAKIAogCiAKIAp0eXBlZGVmIHN0cnVjdCBOZXRTb2NrZXRBZGRySU5UeXBl IHsKCUludDE2CQkJZmFtaWx5OwkJCQkJIAoJVUludDE2CQlwb3J0OwkJCQkJCSAKCU5ldElQQWRk cglhZGRyOwkJCQkJCSAKCX0gTmV0U29ja2V0QWRkcklOVHlwZTsKCQogCgoKCiAKIAogCnR5cGVk ZWYgc3RydWN0ICBOZXRTb2NrZXRBZGRyVHlwZSB7CglJbnQxNgkJCWZhbWlseTsJCQkJCSAKCVVJ bnQ4CQkJZGF0YVsxNF07CQkJCSAKCX0gTmV0U29ja2V0QWRkclR5cGU7CgkKCiAKIAogCiAKIAp0 eXBlZGVmIHN0cnVjdCBOZXRTb2NrZXRBZGRyUmF3VHlwZSB7CglJbnQxNgkJCWZhbWlseTsJCQkJ CSAKCVVJbnQxNgkJaWZJbnN0YW5jZTsJCQkJIAoJVUludDMyCQlpZkNyZWF0b3I7CQkJCSAKCX0g TmV0U29ja2V0QWRkclJhd1R5cGU7CgkKCQoJCiAKIAogCiAKIAoKIAogCiAKdHlwZWRlZiBzdHJ1 Y3QgTmV0SU9WZWNUeXBlIHsKCVVJbnQ4ICoJCQlidWZQOwkJCQkJCQkgCglVSW50MTYJCQlidWZM ZW47CQkJCQkJIAoJfSBOZXRJT1ZlY1R5cGUsICpOZXRJT1ZlY1B0cjsKCQoKCiAKdHlwZWRlZiBz dHJ1Y3QgewoJVUludDggKgkJCWFkZHJQOwkJCQkJCSAKCVVJbnQxNgkJCWFkZHJMZW47CQkJCQkJ IAoJTmV0SU9WZWNQdHIJCWlvdjsJCQkJCQkJIAoJVUludDE2CQkJaW92TGVuOwkJCQkJCSAKCVVJ bnQ4ICoJCQlhY2Nlc3NSaWdodHM7CQkJCSAKCVVJbnQxNgkJCWFjY2Vzc1JpZ2h0c0xlbjsJCQkg Cgl9IE5ldElPUGFyYW1UeXBlLCAqTmV0SU9QYXJhbVB0cjsKCQogCgoKCgoKCQkJCQkJCiAKIAog CgogCgoKCgoKCgogCiAKdHlwZWRlZiBzdHJ1Y3QgIHsKCUNoYXIgKgkJbmFtZVA7CQkJCQkJCQkg CglDaGFyICoqCQluYW1lQWxpYXNlc1A7CQkJCQkJIAoJVUludDE2CQlhZGRyVHlwZTsJCQkJCQkJ IAoJVUludDE2CQlhZGRyTGVuOwkJCQkJCQkJIAoJVUludDggKioJCWFkZHJMaXN0UDsJCQkJCQkJ IAoJfSBOZXRIb3N0SW5mb1R5cGUsICpOZXRIb3N0SW5mb1B0cjsKCQoKIAp0eXBlZGVmIHN0cnVj dCB7CglOZXRIb3N0SW5mb1R5cGUJaG9zdEluZm87CQkJCQkgCgoJIAoJIAoJQ2hhcgluYW1lWzI1 NSArMV07CQkJIAoKCUNoYXIgKmFsaWFzTGlzdFsxICsxXTsJCSAKCUNoYXIJYWxpYXNlc1sxIF1b MjU1ICsxXTsKCglOZXRJUEFkZHIqCWFkZHJlc3NMaXN0WzQgXTsKCU5ldElQQWRkcglhZGRyZXNz WzQgXTsKCgl9IE5ldEhvc3RJbmZvQnVmVHlwZSwgKk5ldEhvc3RJbmZvQnVmUHRyOwoJCgkKIAog CiAKCiAKCgoKCgogCiAKdHlwZWRlZiBzdHJ1Y3QgewoJQ2hhciAqCQluYW1lUDsJCQkJCQkJCSAK CUNoYXIgKioJCW5hbWVBbGlhc2VzUDsJCQkJCQkgCglVSW50MTYJCXBvcnQ7CQkJCQkJCQkJIAoJ Q2hhciAqCQlwcm90b1A7CQkJCQkJCQkgCgl9IE5ldFNlcnZJbmZvVHlwZSwgKk5ldFNlcnZJbmZv UHRyOwoJCiAKdHlwZWRlZiBzdHJ1Y3QgewoJTmV0U2VydkluZm9UeXBlCXNlcnZJbmZvOwkJCQkJ IAoKCSAKCSAKCUNoYXIJCQluYW1lWzE1ICsxXTsJCQkJCSAKCglDaGFyICoJCWFsaWFzTGlzdFsx ICsxXTsJCSAKCUNoYXIJCQlhbGlhc2VzWzEgXVsxNSBdOwoJQ2hhcgkJCXByb3RvTmFtZVsxNSAr MV07CgoJVUludDgJCQlyZXNlcnZlZDsKCX0gTmV0U2VydkluZm9CdWZUeXBlLCAqTmV0U2Vydklu Zm9CdWZQdHI7CgkKCgogCiAKIAogCgp0eXBlZGVmIHN0cnVjdCB7CglDaGFyCQkJbmFtZVszMiBd OwkJCSAgIAoJfSBOZXRDb25maWdOYW1lVHlwZSwgKk5ldENvbmZpZ05hbWVQdHI7CgoKCiAKCgoK CgoKCgkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJ CQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoKCgkJCQkJCQkJCQkJCQkJCQkJIAoKCQkJCQkJCQkJCQkJ CQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJ CQkJCQkgCgoJCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJ CQkJCQkJIAoKCQkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJ CQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkgCgoJCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ CQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCSAKCgkJCQkJCQkJ CQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJ CQkJCQkJCQkJIAoKCiAKCgoKIAoKCgoKCiNwcmFnbWEgbWFyayBNYXN0ZXIKdHlwZWRlZiBlbnVt IHsKCSAKCW5ldE1hc3RlckludGVyZmFjZUluZm8sCgluZXRNYXN0ZXJJbnRlcmZhY2VTdGF0cywK CW5ldE1hc3RlcklQU3RhdHMsCgluZXRNYXN0ZXJJQ01QU3RhdHMsCgluZXRNYXN0ZXJVRFBTdGF0 cywKCW5ldE1hc3RlclRDUFN0YXRzLAoJCgkgCgluZXRNYXN0ZXJUcmFjZUV2ZW50R2V0CQkJCQkg CgoJfSBOZXRNYXN0ZXJFbnVtOwoJCgkKdHlwZWRlZiBzdHJ1Y3QgTmV0TWFzdGVyUEJUeXBlIHsK CgkgCgl1bmlvbiB7CgkKCQkgCgkJIAoJCSAKCQlzdHJ1Y3QgIHsKCQkJVUludDE2CQlpbmRleDsJ CQkJCSAKCQkJVUludDMyCQljcmVhdG9yOwkJCQkJIAoJCQlVSW50MTYJCWluc3RhbmNlOwkJCQkg CgkJCXZvaWQgKgkJbmV0SUZQOwkJCQkJIAoJCQkKCQkJIAoJCQlDaGFyCQkJZHJ2ck5hbWVbOCBd OwkJIAoJCQlDaGFyCQkJaHdOYW1lWzE2IF07CQkJIAoJCQlVSW50OAkJCWxvY2FsTmV0SGRyTGVu OwkJIAoJCQlVSW50OAkJCWxvY2FsTmV0VHJhaWxlckxlbjsJIAoJCQlVSW50MTYJCWxvY2FsTmV0 TWF4RnJhbWU7CQkgCgkJCQoJCQkgCgkJCUNoYXIJCQlpZk5hbWVbMTAgXTsgCgkJCUJvb2xlYW4J CWRyaXZlclVwOwkJCQkgCgkJCUJvb2xlYW4JCWlmVXA7CQkJCQkJIAoJCQlVSW50MTYJCWh3QWRk ckxlbjsJCQkJIAoJCQlVSW50OAkJCWh3QWRkclsxNCBdOwkJIAoJCQlVSW50MTYJCW10dTsJCQkJ CQkgCgkJCVVJbnQzMgkJc3BlZWQ7CQkJCQkgCgkJCVVJbnQzMgkJbGFzdFN0YXRlQ2hhbmdlOwkJ IAoJCQkKCQkJIAoJCQlOZXRJUEFkZHIJaXBBZGRyOwkJCQkJIAoJCQlOZXRJUEFkZHIJc3VibmV0 TWFzazsJCQkJIAoJCQlOZXRJUEFkZHIJYnJvYWRjYXN0OwkJCQkgCgkJCX0gaW50ZXJmYWNlSW5m bzsKCQkJCgkJIAoJCSAKCQkgCgkJc3RydWN0ICB7CgkJCVVJbnQxNgkJaW5kZXg7CQkJCQkgCgkJ CVVJbnQzMgkJaW5PY3RldHM7CQkJCSAKCQkJVUludDMyCQlpblVjYXN0UGt0czsKCQkJVUludDMy CQlpbk5VY2FzdFBrdHM7CgkJCVVJbnQzMgkJaW5EaXNjYXJkczsKCQkJVUludDMyCQlpbkVycm9y czsKCQkJVUludDMyCQlpblVua25vd25Qcm90b3M7CgkJCVVJbnQzMgkJb3V0T2N0ZXRzOwoJCQlV SW50MzIJCW91dFVjYXN0UGt0czsKCQkJVUludDMyCQlvdXROVWNhc3RQa3RzOwoJCQlVSW50MzIJ CW91dERpc2NhcmRzOwoJCQlVSW50MzIJCW91dEVycm9yczsKCQkJfSBpbnRlcmZhY2VTdGF0czsK CQkJCQkJCgkJIAoJCSAKCQkgCgkJc3RydWN0ICB7CgkJCVVJbnQzMgkJaXBJblJlY2VpdmVzOwkK CQkJVUludDMyCQlpcEluSGRyRXJyb3JzOwoJCQlVSW50MzIJCWlwSW5BZGRyRXJyb3JzOwoJCQlV SW50MzIJCWlwRm9yd0RhdGFncmFtczsKCQkJVUludDMyCQlpcEluVW5rbm93blByb3RvczsKCQkJ VUludDMyCQlpcEluRGlzY2FyZHM7CgkJCVVJbnQzMgkJaXBJbkRlbGl2ZXJzOwoJCQlVSW50MzIJ CWlwT3V0UmVxdWVzdHM7CgkJCVVJbnQzMgkJaXBPdXREaXNjYXJkczsKCQkJVUludDMyIAkJaXBP dXROb1JvdXRlczsKCQkJVUludDMyIAkJaXBSZWFzbVJlcWRzOwoJCQlVSW50MzIgCQlpcFJlYXNt T0tzOwoJCQlVSW50MzIgCQlpcFJlYXNtRmFpbHM7CgkJCVVJbnQzMgkJaXBGcmFnT0tzOwoJCQlV SW50MzIgCQlpcEZyYWdGYWlsczsKCQkJVUludDMyIAkJaXBGcmFnQ3JlYXRlczsKCQkJVUludDMy IAkJaXBSb3V0aW5nRGlzY2FyZHM7CgkJCVVJbnQzMiAJCWlwRGVmYXVsdFRUTDsgICAgICAgIAoJ CQlVSW50MzIgCQlpcFJlYXNtVGltZW91dDsgICAgICAKCQkJfSBpcFN0YXRzOwoJCQkJCQkKCQkg CgkJIAoJCSAKCQlzdHJ1Y3QgIHsKCQkJVUludDMyCQkJaWNtcEluTXNnczsKCQkJVUludDMyCQkJ aWNtcEluRXJyb3JzOwoJCQlVSW50MzIJCQlpY21wSW5EZXN0VW5yZWFjaHM7CgkJCVVJbnQzMgkJ CWljbXBJblRpbWVFeGNkczsKCQkJVUludDMyCQkJaWNtcEluUGFybVByb2JzOwoJCQlVSW50MzIJ CQlpY21wSW5TcmNRdWVuY2hzOwoJCQlVSW50MzIJCQlpY21wSW5SZWRpcmVjdHM7CgkJCVVJbnQz MgkJCWljbXBJbkVjaG9zOwoJCQlVSW50MzIJCQlpY21wSW5FY2hvUmVwczsKCQkJVUludDMyCQkJ aWNtcEluVGltZXN0YW1wczsKCQkJVUludDMyCQkJaWNtcEluVGltZXN0YW1wUmVwczsKCQkJVUlu dDMyCQkJaWNtcEluQWRkck1hc2tzOwoJCQlVSW50MzIJCQlpY21wSW5BZGRyTWFza1JlcHM7CgkJ CVVJbnQzMgkJCWljbXBPdXRNc2dzOwoJCQlVSW50MzIJCQlpY21wT3V0RXJyb3JzOwoJCQlVSW50 MzIJCQlpY21wT3V0RGVzdFVucmVhY2hzOwoJCQlVSW50MzIJCQlpY21wT3V0VGltZUV4Y2RzOwoJ CQlVSW50MzIJCQlpY21wT3V0UGFybVByb2JzOwoJCQlVSW50MzIJCQlpY21wT3V0U3JjUXVlbmNo czsKCQkJVUludDMyCQkJaWNtcE91dFJlZGlyZWN0czsKCQkJVUludDMyCQkJaWNtcE91dEVjaG9z OwoJCQlVSW50MzIJCQlpY21wT3V0RWNob1JlcHM7CgkJCVVJbnQzMgkJCWljbXBPdXRUaW1lc3Rh bXBzOwoJCQlVSW50MzIJCQlpY21wT3V0VGltZXN0YW1wUmVwczsKCQkJVUludDMyCQkJaWNtcE91 dEFkZHJNYXNrczsKCQkJVUludDMyCQkJaWNtcE91dEFkZHJNYXNrUmVwczsKCQkJfSBpY21wU3Rh dHM7CgkJCQkJCQoJCSAKCQkgCgkJIAoJCXN0cnVjdCAgewoJCQlVSW50MzIJCQl1ZHBJbkRhdGFn cmFtczsKCQkJVUludDMyCQkJdWRwTm9Qb3J0czsKCQkJVUludDMyCQkJdWRwSW5FcnJvcnM7CgkJ CVVJbnQzMgkJCXVkcE91dERhdGFncmFtczsKCQkJfSB1ZHBTdGF0czsKCQkJCQkJCgkJIAoJCSAK CQkgCgkJc3RydWN0ICB7CgkJCVVJbnQzMgkJCXRjcFJ0b0FsZ29yaXRobTsKCQkJVUludDMyCQkJ dGNwUnRvTWluOwoJCQlVSW50MzIJCQl0Y3BSdG9NYXg7CgkJCVVJbnQzMgkJCXRjcE1heENvbm47 CgkJCVVJbnQzMgkJCXRjcEFjdGl2ZU9wZW5zOwoJCQlVSW50MzIJCQl0Y3BQYXNzaXZlT3BlbnM7 CgkJCVVJbnQzMgkJCXRjcEF0dGVtcHRGYWlsczsKCQkJVUludDMyCQkJdGNwRXN0YWJSZXNldHM7 CgkJCVVJbnQzMgkJCXRjcEN1cnJFc3RhYjsKCQkJVUludDMyCQkJdGNwSW5TZWdzOwoJCQlVSW50 MzIJCQl0Y3BPdXRTZWdzOwoJCQlVSW50MzIJCQl0Y3BSZXRyYW5zU2VnczsKCQkJVUludDMyCQkJ dGNwSW5FcnJzOwoJCQlVSW50MzIJCQl0Y3BPdXRSc3RzOwoJCQl9IHRjcFN0YXRzOwoJCQkJCQkK CQkgCgkJIAoJCSAKCQlzdHJ1Y3QgIHsKCQkJVUludDE2CQlpbmRleDsJCQkJIAoJCQlDaGFyICoJ CXRleHRQOwkJCQkgCgkJCX0gdHJhY2VFdmVudEdldDsKCQkJCgkJfSBwYXJhbTsKCgl9IE5ldE1h c3RlclBCVHlwZSwgKk5ldE1hc3RlclBCUHRyOwoJCgkKCgkKCQogCiAKIAojcHJhZ21hIG1hcmsg U2V0dGluZ3MKIAogCiAKIAp0eXBlZGVmIGVudW0gewkKCW5ldFNldHRpbmdSZXNldEFsbCwJCQkJ CQkgCgkJCQkJCQkJCQkJCQkgCgoJbmV0U2V0dGluZ1ByaW1hcnlETlMsCQkJCQkgCgluZXRTZXR0 aW5nU2Vjb25kYXJ5RE5TLAkJCQkJIAoJbmV0U2V0dGluZ0RlZmF1bHRSb3V0ZXIsCQkJCSAKCW5l dFNldHRpbmdEZWZhdWx0SUZDcmVhdG9yLAkJCSAKCW5ldFNldHRpbmdEZWZhdWx0SUZJbnN0YW5j ZSwJCQkgCgluZXRTZXR0aW5nSG9zdE5hbWUsCQkJCQkJIAoJbmV0U2V0dGluZ0RvbWFpbk5hbWUs CQkJCQkgCgluZXRTZXR0aW5nSG9zdFRibCwJCQkJCQkgCgluZXRTZXR0aW5nQ2xvc2VXYWl0VGlt ZSwJCQkJIAoJbmV0U2V0dGluZ0luaXRpYWxUQ1BSZXNlbmRUaW1lLAkJIAoJCQkJCQkJCQkJCQkJ IAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJCgkKCSAKCSAK CW5ldFNldHRpbmdUcmFjZUJpdHMgPSAweDEwMDAsCQkJIAoJbmV0U2V0dGluZ1RyYWNlU2l6ZSwJ CQkJCQkgCgkJCQkJCQkJCQkJCQkgCgluZXRTZXR0aW5nVHJhY2VTdGFydCwJCQkJCSAKCW5ldFNl dHRpbmdUcmFjZVJvbGwsCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCgluZXRT ZXR0aW5nUlRQcmltYXJ5RE5TLAkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJbmV0U2V0dGluZ1JUU2Vj b25kYXJ5RE5TLAkJCQkgCgkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkKCW5ldFNldHRpbmdD b25maWdUYWJsZQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoKCX0gTmV0U2V0dGluZ0VudW07CgoKIAog CiAKdHlwZWRlZiBlbnVtIHsKCSAKCSAKCSAKCW5ldElGU2V0dGluZ1Jlc2V0QWxsLAkJCQkJIAoJ CQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCgkgCgkgCgkgCgluZXRJRlNldHRpbmdVcCwJCQkJ CQkJIAoJbmV0SUZTZXR0aW5nTmFtZSwJCQkJCQkJIAoKCSAKCSAKCSAKCW5ldElGU2V0dGluZ1Jl cUlQQWRkciwJCQkJCSAKCW5ldElGU2V0dGluZ1N1Ym5ldE1hc2ssCQkJCQkgCgluZXRJRlNldHRp bmdCcm9hZGNhc3QsCQkJCQkgCgoJIAoJIAoJIAoJbmV0SUZTZXR0aW5nVXNlcm5hbWUsCQkJCQkg CgkJCQkJCQkJCQkJCQkgCgluZXRJRlNldHRpbmdQYXNzd29yZCwJCQkJCSAKCQkJCQkJCQkJCQkJ CSAKCW5ldElGU2V0dGluZ0RpYWxiYWNrVXNlcm5hbWUsCQkJIAoJCQkJCQkJCQkJCQkJIAoJbmV0 SUZTZXR0aW5nRGlhbGJhY2tQYXNzd29yZCwJCQkgCgkJCQkJCQkJCQkJCQkgCgluZXRJRlNldHRp bmdBdXRoVXNlcm5hbWUsCQkJCSAKCQkJCQkJCQkJCQkJCSAKCW5ldElGU2V0dGluZ0F1dGhQYXNz d29yZCwJCQkJIAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJ CQkJCQkJCQkJCQkJIAoJCgkgCgkgCgkgCgluZXRJRlNldHRpbmdTZXJ2aWNlTmFtZSwJCQkJIAoJ bmV0SUZTZXR0aW5nTG9naW5TY3JpcHQsCQkJCSAKCW5ldElGU2V0dGluZ0Nvbm5lY3RMb2csCQkJ CQkgCgluZXRJRlNldHRpbmdJbmFjdGl2aXR5VGltZW91dCwJCSAKCQkJCQkJCQkJCQkJCSAKCQkJ CQkJCQkJCQkJCSAKCW5ldElGU2V0dGluZ0VzdGFibGlzaG1lbnRUaW1lb3V0LAkgCgkJCQkJCQkJ CQkJCQkgCgkKCSAKCW5ldElGU2V0dGluZ0R5bmFtaWNJUCwJCQkJCSAKCQkJCQkJCQkJCQkJCSAK CW5ldElGU2V0dGluZ1ZKQ29tcEVuYWJsZSwJCQkJIAoJCQkJCQkJCQkJCQkJIAoJbmV0SUZTZXR0 aW5nVkpDb21wU2xvdHMsCQkJCSAKCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCSAKCW5ldElG U2V0dGluZ01UVSwJCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJbmV0SUZTZXR0aW5nQXN5bmNDdGxN YXAsCQkJCSAKCQkJCQkJCQkJCQkJCSAKCgkgCgluZXRJRlNldHRpbmdQb3J0TnVtLAkJCQkJCSAK CW5ldElGU2V0dGluZ0JhdWRSYXRlLAkJCQkJIAoJbmV0SUZTZXR0aW5nRmxvd0NvbnRyb2wsCQkJ CSAKCQkJCQkJCQkJCQkJCSAKCW5ldElGU2V0dGluZ1N0b3BCaXRzLAkJCQkJIAoJbmV0SUZTZXR0 aW5nUGFyaXR5T24sCQkJCQkgCgluZXRJRlNldHRpbmdQYXJpdHlFdmVuLAkJCQkJIAoKCSAKCW5l dElGU2V0dGluZ1VzZU1vZGVtLAkJCQkJIAoJbmV0SUZTZXR0aW5nUHVsc2VEaWFsLAkJCQkJIAoJ bmV0SUZTZXR0aW5nTW9kZW1Jbml0LAkJCQkJIAoJbmV0SUZTZXR0aW5nTW9kZW1QaG9uZSwJCQkJ CSAKCW5ldElGU2V0dGluZ1JlZGlhbENvdW50LAkJCQkgCgkKCgkgCgkgCgkgCgkgCgluZXRJRlNl dHRpbmdQb3dlclVwLAkJCQkJCSAKCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCSAKCQkJCQkJ CQkJCQkJCSAKCQkJCQkJCQkJCQkJCgkgCgkgCgkgCgluZXRJRlNldHRpbmdXaXJlbGVzcywJCQkJ CSAKCQoKCgkgCgluZXRJRlNldHRpbmdETlNRdWVyeSwJCQkJCSAKCgoJIAoJIAoJIAoJIAoJCQkJ CQkJCQkJCQkKCW5ldElGU2V0dGluZ1F1aXRPblR4RmFpbCwJCQkJIAoJbmV0SUZTZXR0aW5nUXVl dWVTaXplLAkJCQkJIAoJbmV0SUZTZXR0aW5nVHhJblF1ZXVlLAkJCQkJIAoJbmV0SUZTZXR0aW5n VHhTZW50LAkJCQkJCSAKCW5ldElGU2V0dGluZ1R4RGlzY2FyZCwJCQkJCSAKCW5ldElGU2V0dGlu Z1Jzc2ksCQkJCQkJCSAKCW5ldElGU2V0dGluZ1Jzc2lBc1BlcmNlbnQsCQkJCSAKCW5ldElGU2V0 dGluZ1JhZGlvU3RhdGUsCQkJCQkgCgluZXRJRlNldHRpbmdCYXNlLAkJCQkJCQkgCgluZXRJRlNl dHRpbmdSYWRpb0lELAkJCQkJCSAKCW5ldElGU2V0dGluZ0JhdHRlcnksCQkJCQkJIAoJbmV0SUZT ZXR0aW5nTmV0d29ya0xvYWQsCQkJCSAKCgkgCgkgCgkgCgoJbmV0SUZTZXR0aW5nQ29ubmVjdGlv bk5hbWUsCQkJIAoKCgkgCgkgCgkgCgkgCgluZXRJRlNldHRpbmdUcmFjZUJpdHMgPSAweDEwMDAs CQkgCgluZXRJRlNldHRpbmdHbG9iYWxzUHRyLAkJCQkJIAoJbmV0SUZTZXR0aW5nQWN0dWFsSVBB ZGRyLAkJCQkgCgkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkgCglu ZXRJRlNldHRpbmdTZXJ2ZXJJUEFkZHIsCQkJCSAKCQkJCQkJCQkJCQkJCSAKCQoJCgkgCgkgCglu ZXRJRlNldHRpbmdCcmluZ0Rvd25PblBvd2VyRG93biwJIAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJ CQkJCQkJCgkgCgkgCgkgCgluZXRJRlNldHRpbmdSYXdNb2RlLAkJCQkJCSAKCQkJCQkJCQkJCQkJ CSAKCgkgCgkgCgkgCgluZXRJRlNldHRpbmdDdXN0b20gPSAweDgwMDAKCQoJfSBOZXRJRlNldHRp bmdFbnVtOwoKCgogCiAKIAogCiAKIAp0eXBlZGVmIGVudW0JewoJbmV0UmFkaW9TdGF0ZU9mZk5v dENvbm5lY3RlZD0wLAoJbmV0UmFkaW9TdGF0ZU9uTm90Q29ubmVjdGVkLAkJCSAKCW5ldFJhZGlv U3RhdGVPbkNvbm5lY3RlZCwJCQkJIAoJbmV0UmFkaW9TdGF0ZU9mZkNvbm5lY3RlZAoJfSBOZXRS YWRpb1N0YXRlRW51bTsgCgoKCiAKCgogCgoKCiAKdHlwZWRlZiBVSW50MzIJCQkJCU5ldEZEU2V0 VHlwZTsKCgoKCgoKCgoKIAogCiAKI3ByYWdtYSBtYXJrIEVycm9yQ29kZXMKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIAoKCgoKCgoKCgoKCgoK CgoKCgoKCgogCiAKCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK IAoKIAoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgogCiAKIAogCiAKIAogCiAKIAojcHJhZ21hIG1h cmsgVHJhcHMKdHlwZWRlZiBlbnVtIHsKCW5ldExpYlRyYXBBZGRySU5Ub0EgPSBzeXNMaWJUcmFw Q3VzdG9tLAoJbmV0TGliVHJhcEFkZHJBVG9JTiwKCQoJbmV0TGliVHJhcFNvY2tldE9wZW4sCglu ZXRMaWJUcmFwU29ja2V0Q2xvc2UsCgluZXRMaWJUcmFwU29ja2V0T3B0aW9uU2V0LAoJbmV0TGli VHJhcFNvY2tldE9wdGlvbkdldCwKCW5ldExpYlRyYXBTb2NrZXRCaW5kLAoJbmV0TGliVHJhcFNv Y2tldENvbm5lY3QsCgluZXRMaWJUcmFwU29ja2V0TGlzdGVuLAoJbmV0TGliVHJhcFNvY2tldEFj Y2VwdCwKCW5ldExpYlRyYXBTb2NrZXRTaHV0ZG93biwKCQoJbmV0TGliVHJhcFNlbmRQQiwKCW5l dExpYlRyYXBTZW5kLAoJbmV0TGliVHJhcFJlY2VpdmVQQiwKCW5ldExpYlRyYXBSZWNlaXZlLAoJ bmV0TGliVHJhcERtUmVjZWl2ZSwKCW5ldExpYlRyYXBTZWxlY3QsCgoJbmV0TGliVHJhcFByZWZz R2V0LAoJbmV0TGliVHJhcFByZWZzU2V0LAoKCSAKCSAKCW5ldExpYlRyYXBEcnZyV2FrZSwKCW5l dExpYlRyYXBJbnRlcmZhY2VQdHIsCgluZXRMaWJUcmFwTWFzdGVyLAoJCgkgCgluZXRMaWJUcmFw R2V0SG9zdEJ5TmFtZSwKCW5ldExpYlRyYXBTZXR0aW5nR2V0LAoJbmV0TGliVHJhcFNldHRpbmdT ZXQsCgluZXRMaWJUcmFwSUZBdHRhY2gsCgluZXRMaWJUcmFwSUZEZXRhY2gsCgluZXRMaWJUcmFw SUZHZXQsCgluZXRMaWJUcmFwSUZTZXR0aW5nR2V0LAoJbmV0TGliVHJhcElGU2V0dGluZ1NldCwK CW5ldExpYlRyYXBJRlVwLAoJbmV0TGliVHJhcElGRG93biwKCW5ldExpYlRyYXBJRk1lZGlhVXAs CgluZXRMaWJUcmFwU2NyaXB0RXhlY3V0ZVYzMiwKCW5ldExpYlRyYXBHZXRIb3N0QnlBZGRyLAoJ bmV0TGliVHJhcEdldFNlcnZCeU5hbWUsCgluZXRMaWJUcmFwU29ja2V0QWRkciwKCW5ldExpYlRy YXBGaW5pc2hDbG9zZVdhaXQsCgluZXRMaWJUcmFwR2V0TWFpbEV4Y2hhbmdlQnlOYW1lLAoJbmV0 TGliVHJhcFByZWZzQXBwZW5kLAoJbmV0TGliVHJhcElGTWVkaWFEb3duLAoJbmV0TGliVHJhcE9w ZW5Db3VudCwKCQoJbmV0TGliVHJhcFRyYWNlUHJpbnRGLAoJbmV0TGliVHJhcFRyYWNlUHV0UywK CQoJbmV0TGliVHJhcE9wZW5JZkNsb3NlV2FpdCwKCW5ldExpYlRyYXBIYW5kbGVQb3dlck9mZiwK CQoJbmV0TGliVHJhcENvbm5lY3Rpb25SZWZyZXNoLAoJCgkgCgluZXRMaWJUcmFwQml0TW92ZSwK CW5ldExpYlRyYXBCaXRQdXRGaXhlZCwKCW5ldExpYlRyYXBCaXRHZXRGaXhlZCwKCW5ldExpYlRy YXBCaXRQdXRVSW50ViwKCW5ldExpYlRyYXBCaXRHZXRVSW50ViwKCW5ldExpYlRyYXBCaXRQdXRJ bnRWLAoJbmV0TGliVHJhcEJpdEdldEludFYsCgkKCSAKCW5ldExpYk9wZW5Db25maWcsCgluZXRM aWJDb25maWdNYWtlQWN0aXZlLAoJbmV0TGliQ29uZmlnTGlzdCwKCW5ldExpYkNvbmZpZ0luZGV4 RnJvbU5hbWUsCgluZXRMaWJDb25maWdEZWxldGUsCgluZXRMaWJDb25maWdTYXZlQXMsCgluZXRM aWJDb25maWdSZW5hbWUsCgluZXRMaWJDb25maWdBbGlhc1NldCwKCW5ldExpYkNvbmZpZ0FsaWFz R2V0LAoJCgkgCgluZXRMaWJUcmFwU2NyaXB0RXhlY3V0ZSwKCQoJbmV0TGliVHJhcExhc3QKCX0g TmV0TGliVHJhcE51bWJlckVudW07CgoKCiAKCiAKI3ByYWdtYSBtYXJrIEZ1bmN0aW9ucwojIDE1 MDkgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vTmV0TWdyLmgi CgoKCiAKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL05l dEJpdFV0aWxzLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxMzUgIi4uL1NyY1NoYXJl ZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vTmV0Qml0VXRpbHMuaCIKCiMgMTUxMyAi Li4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9OZXRNZ3IuaCIgMgoK CgojIDMwICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL05ldEJp dFV0aWxzLmgiIDIKCgogCgoKCiAKIAoKCgoKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK IAoKCQoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIAogCiMgMTMyICIuLi9TcmNTaGFy ZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL05ldEJpdFV0aWxzLmgiCgoKCgojIDkz ICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgoJCQoJCQogCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1Bh bG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9PdmVybGF5TWdyLmgiIDEKIAoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAKCgoKCgoKCgoKCgogCgoKCiAKCgogCgoK IAoKCiAKCgogCiAKCgoKIAogCgoKCiAKCgoKCgogCgoKCgoKCgkKCgoKIAogCnR5cGVkZWYgZW51 bSB7CglvbUluaXQgPSAwLAoJb21PcGVuT3ZlcmxheURhdGFiYXNlLAoJb21Mb2NhbGVUb092ZXJs YXlEQk5hbWUsCglvbU92ZXJsYXlEQk5hbWVUb0xvY2FsZSwKCW9tR2V0Q3VycmVudExvY2FsZSwK CW9tR2V0SW5kZXhlZExvY2FsZSwKCW9tR2V0U3lzdGVtTG9jYWxlLAoJb21TZXRTeXN0ZW1Mb2Nh bGUsCglvbUdldFJvdXRpbmVBZGRyZXNzLAoJCglvbU1heFNlbGVjdG9yID0gb21HZXRSb3V0aW5l QWRkcmVzcywKCW9tQmlnU2VsZWN0b3IgPSAweDdGRkYJIAp9IE9tU2VsZWN0b3I7CgogCgoKCnR5 cGVkZWYgVUludDE2IE9tT3ZlcmxheUtpbmQ7CgoKIAogCiAKCgp0eXBlZGVmIHN0cnVjdCB7CglP bU92ZXJsYXlLaW5kCW92ZXJsYXlUeXBlOwkJIAoJVUludDMyCQkJcnNjVHlwZTsJCQkJIAoJVUlu dDE2CQkJcnNjSUQ7CQkJCSAKCVVJbnQzMgkJCXJzY0xlbmd0aDsJCQkgCglVSW50MzIJCQlyc2ND aGVja3N1bTsJCSAKfSBPbU92ZXJsYXlSc2NUeXBlOwoKdHlwZWRlZiBzdHJ1Y3QgewoJVUludDE2 CQkJbGFuZ3VhZ2U7CQkJIAoJVUludDE2CQkJY291bnRyeTsJCQkJIAp9IE9tTG9jYWxlVHlwZTsK CiAKdHlwZWRlZiBzdHJ1Y3QgewoJVUludDE2CQkJCXZlcnNpb247CQkJCSAKCVVJbnQzMgkJCQlm bGFnczsJCQkJIAoJVUludDMyCQkJCWJhc2VDaGVja3N1bTsJCSAKCU9tTG9jYWxlVHlwZQkJdGFy Z2V0TG9jYWxlOwkJIAoJVUludDMyCQkJCWJhc2VEQlR5cGU7CQkJIAoJVUludDMyCQkJCWJhc2VE QkNyZWF0b3I7CQkgCglVSW50MzIJCQkJYmFzZURCQ3JlYXRlRGF0ZTsgIAoJVUludDMyCQkJCWJh c2VEQk1vZERhdGU7CQkgCglVSW50MTYJCQkJbnVtT3ZlcmxheXM7CQkgCglPbU92ZXJsYXlSc2NU eXBlCW92ZXJsYXlzWzBdOwkJIAp9IE9tT3ZlcmxheVNwZWNUeXBlOwoKCiAKCgoKIyAyMTIgIi4u L1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vT3ZlcmxheU1nci5oIgoK CgojIDk3ICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgoJCQojIDEgIi4uL1NyY1NoYXJlZC9QYWxt L1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vUGFsbUxvY2FsZS5oIiAxCiAKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CiAKCgoKCgoKCgoKCgoKCgoKIAogCgoKCiAKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgkKCgoKCgog CgoKCiAKCgoKCgoKCgogCiAKCgoKCgoKCgogCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiAKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgogCgoKCgoKCgoKCgoKCgoKCiAKCgogCgoKIAogCgogCgog CgogCgogCgoKIAogCgogCgogCgoKIAoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiAK CgoKCiAKCgoKCgoKIAoKCgoKCgoKCgogCgoKCgoKCiAKCgoKCgoKCgogCgoKCgoKIAoKCgoKCiAK CgoKCgoKIAoKCgoKIAoKCgoKCiAKCgoKCiAKIAoKIAoKCgojIDEyNTYgIi4uL1NyY1NoYXJlZC9Q YWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vUGFsbUxvY2FsZS5oIgoKCgojIDk4ICIuLi9T cmNTaGFyZWQvUGFsbS5oIiAyCgogCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0v SW5jcy9Db3JlL1N5c3RlbS9QZW5NZ3IuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgog CgoKCgoKCgoKIAoKCiMgODcgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9T eXN0ZW0vUGVuTWdyLmgiCgoKCQogCgoKCgoKCgoKIyAxMDAgIi4uL1NyY1NoYXJlZC9QYWxtLmgi IDIKCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9Q cmVmZXJlbmNlcy5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9D b3JlL1N5c3RlbS9TeXN0ZW1NZ3IuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgogCgoKCiAKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVt L1N5c3RlbVJlc291cmNlcy5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgog CiAKIAoKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog CiAKIAogCiAKIAogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCgoKCgoK CgoKCgoKCgoKCgkJCQkJCQkJCQkJCSAKCgoKCgoKCgoKCgoKCgoKCgoJCQkJCQkJCQkJCQkJCQkJ IAoKCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJIAoJ CQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJIAoKCgkJCQkJCQkJCQkJCQkJCQkgCgoK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKIAogCiAKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCiAKIAogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoK CgoKCgogCgoKCgoKCgoKCiAKCgoKCgoKIAoKCgogCgoKCgoJCQkJCQkJCQkJCQkJCQkJIAoKIAoK CgogCgoKCQkJCQkJCQkJCQkJCQkJCSAKCiAKCgoKCgoKCiAKCgoKIAogCiAKIAogCiAKCiAKCiAK CgoKCgoKCgoKIyAzOCAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3Rl bS9TeXN0ZW1NZ3IuaCIgMgoKCgogCgoKCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0v SW5jcy9Db3JlL1VJL0luc1BvaW50LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIyA1 OCAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL0luc1BvaW50LmgiCgoK CiMgNDUgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vU3lzdGVt TWdyLmgiIDIKCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL0V2 ZW50LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgZW51bSB7Cglu aWxFdmVudCA9IDAsCQkJCSAKCXBlbkRvd25FdmVudCwJCQkJIAoJcGVuVXBFdmVudCwJCQkJCSAK CXBlbk1vdmVFdmVudCwJCQkJIAoJa2V5RG93bkV2ZW50LAkJCQkgCgl3aW5FbnRlckV2ZW50LAkJ CQkgCgl3aW5FeGl0RXZlbnQsCQkJCSAKCWN0bEVudGVyRXZlbnQsCgljdGxFeGl0RXZlbnQsCglj dGxTZWxlY3RFdmVudCwKCWN0bFJlcGVhdEV2ZW50LAoJbHN0RW50ZXJFdmVudCwKCWxzdFNlbGVj dEV2ZW50LAoJbHN0RXhpdEV2ZW50LAoJcG9wU2VsZWN0RXZlbnQsCglmbGRFbnRlckV2ZW50LAoJ ZmxkSGVpZ2h0Q2hhbmdlZEV2ZW50LAoJZmxkQ2hhbmdlZEV2ZW50LAoJdGJsRW50ZXJFdmVudCwK CXRibFNlbGVjdEV2ZW50LAoJZGF5U2VsZWN0RXZlbnQsCgltZW51RXZlbnQsCglhcHBTdG9wRXZl bnQgPSAyMiwJCQkgCglmcm1Mb2FkRXZlbnQsCglmcm1PcGVuRXZlbnQsCglmcm1Hb3RvRXZlbnQs Cglmcm1VcGRhdGVFdmVudCwKCWZybVNhdmVFdmVudCwKCWZybUNsb3NlRXZlbnQsCglmcm1UaXRs ZUVudGVyRXZlbnQsCglmcm1UaXRsZVNlbGVjdEV2ZW50LAoJdGJsRXhpdEV2ZW50LAoJc2NsRW50 ZXJFdmVudCwKCXNjbEV4aXRFdmVudCwKCXNjbFJlcGVhdEV2ZW50LAoJdHNtQ29uZmlybUV2ZW50 ID0gMzUsCQkgCgl0c21GZXBCdXR0b25FdmVudCwJCQkgCgl0c21GZXBNb2RlRXZlbnQsCQkJCSAK IAoJYXR0bkluZGljYXRvckVudGVyRXZlbnQsCSAKCWF0dG5JbmRpY2F0b3JTZWxlY3RFdmVudCwJ IAoJCgkgCgkgCgltZW51Q21kQmFyT3BlbkV2ZW50ID0gMHgwODAwLAoJbWVudU9wZW5FdmVudCwK CW1lbnVDbG9zZUV2ZW50LAoJZnJtR2FkZ2V0RW50ZXJFdmVudCwKCWZybUdhZGdldE1pc2NFdmVu dCwKCgkgCglmaXJzdElOZXRMaWJFdmVudCA9IDB4MTAwMCwKCWZpcnN0V2ViTGliRXZlbnQgPSAw eDExMDAsCgkKCSAKCSAKCWZpcnN0VXNlckV2ZW50ID0gMHg2MDAwCn0gZXZlbnRzRW51bTsKCgog CnR5cGVkZWYgc3RydWN0IEV2ZW50VHlwZSB7CiAKICAgSW50MTYJCWVUeXBlOwogICBCb29sZWFu ICAgICAgICBwZW5Eb3duOwogICBVSW50OCAgICAgICAgICB0YXBDb3VudDsKICAgSW50MTYgICAg ICAgICAgc2NyZWVuWDsKICAgSW50MTYgICAgICAgICAgc2NyZWVuWTsKICAgdW5pb24gewogICAg ICBzdHJ1Y3QgX0dlbmVyaWNFdmVudFR5cGUJCWdlbmVyaWM7CiAgICAgIHN0cnVjdCBfUGVuVXBF dmVudFR5cGUgICAgICAgIHBlblVwOwogICAgICBzdHJ1Y3QgX0tleURvd25FdmVudFR5cGUgICAg ICBrZXlEb3duOwogICAgICBzdHJ1Y3QgX1dpbkVudGVyRXZlbnRUeXBlICAgICB3aW5FbnRlcjsK ICAgICAgc3RydWN0IF9XaW5FeGl0RXZlbnRUeXBlICAgICAgd2luRXhpdDsKICAgICAgc3RydWN0 IF9UU01Db25maXJtVHlwZQkJCXRzbUNvbmZpcm07CiAgICAgIHN0cnVjdCBfVFNNRmVwQnV0dG9u VHlwZQkJdHNtRmVwQnV0dG9uOwogICAgICBzdHJ1Y3QgX1RTTUZlcE1vZGVFdmVudFR5cGUJdHNt RmVwTW9kZTsKCiAgICAgIHN0cnVjdCBjdGxFbnRlciB7CiAgICAgICAgIFVJbnQxNiAgICAgICAg ICAgIGNvbnRyb2xJRDsKICAgICAgICAgc3RydWN0IENvbnRyb2xUeXBlICpwQ29udHJvbDsKICAg ICAgICAgfSBjdGxFbnRlcjsKCiAgICAgIHN0cnVjdCBjdGxTZWxlY3QgewogICAgICAgICBVSW50 MTYgICAgICAgICAgICBjb250cm9sSUQ7CiAgICAgICAgIHN0cnVjdCBDb250cm9sVHlwZSAqcENv bnRyb2w7CiAgICAgICAgIEJvb2xlYW4gICAgICAgICAgIG9uOwogICAgICAgICBVSW50OCAgICAg ICAgICAgICByZXNlcnZlZDE7CiAgICAgICAgIFVJbnQxNgkJCQl2YWx1ZTsJCSAKICAgICAgICAg fSBjdGxTZWxlY3Q7CgogICAgICBzdHJ1Y3QgY3RsUmVwZWF0IHsKICAgICAgICAgVUludDE2ICAg ICAgICAgICAgY29udHJvbElEOwogICAgICAgICBzdHJ1Y3QgQ29udHJvbFR5cGUgKnBDb250cm9s OwogICAgICAgICBVSW50MzIgICAgICAgICAgICB0aW1lOwogICAgICAgICBVSW50MTYJCQkJdmFs dWU7CQkgCiAgICAgICAgIH0gY3RsUmVwZWF0OwoKICAgICAgc3RydWN0IGN0bEV4aXQgewogICAg ICAgICBVSW50MTYgICAgICAgICAgICBjb250cm9sSUQ7CiAgICAgICAgIHN0cnVjdCBDb250cm9s VHlwZSAqcENvbnRyb2w7CiAgICAgICAgIH0gY3RsRXhpdDsKCiAgICAgIHN0cnVjdCBmbGRFbnRl ciB7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIGZpZWxkSUQ7CiAgICAgICAgIHN0cnVjdCBG aWVsZFR5cGUgCSpwRmllbGQ7CiAgICAgICAgIH0gZmxkRW50ZXI7CgogICAgICBzdHJ1Y3QgZmxk SGVpZ2h0Q2hhbmdlZCB7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIGZpZWxkSUQ7CiAgICAg ICAgIHN0cnVjdCBGaWVsZFR5cGUgCSpwRmllbGQ7CiAgICAgICAgIEludDE2ICAgICAgICAgICAg IG5ld0hlaWdodDsKICAgICAgICAgVUludDE2ICAgICAgICAgICAgY3VycmVudFBvczsKICAgICAg ICAgfSBmbGRIZWlnaHRDaGFuZ2VkOwoKICAgICAgc3RydWN0IGZsZENoYW5nZWQgewogICAgICAg ICBVSW50MTYgICAgICAgICAgICBmaWVsZElEOwogICAgICAgICBzdHJ1Y3QgRmllbGRUeXBlIAkq cEZpZWxkOwogICAgICAgICB9IGZsZENoYW5nZWQ7CgogICAgICBzdHJ1Y3QgZmxkRXhpdCB7CiAg ICAgICAgIFVJbnQxNiAgICAgICAgICAgIGZpZWxkSUQ7CiAgICAgICAgIHN0cnVjdCBGaWVsZFR5 cGUJKnBGaWVsZDsKICAgICAgICAgfSBmbGRFeGl0OwoKICAgICAgc3RydWN0IGxzdEVudGVyIHsK ICAgICAgICAgVUludDE2ICAgICAgICAgICAgbGlzdElEOwogICAgICAgICBzdHJ1Y3QgTGlzdFR5 cGUgCSpwTGlzdDsKICAgICAgICAgSW50MTYgICAgICAgICAgICAgc2VsZWN0aW9uOwogICAgICAg ICB9IGxzdEVudGVyOwoKICAgICAgc3RydWN0IGxzdEV4aXQgewogICAgICAgICBVSW50MTYgICAg ICAgICAgICBsaXN0SUQ7CiAgICAgICAgIHN0cnVjdCBMaXN0VHlwZSAJKnBMaXN0OwogICAgICAg ICB9IGxzdEV4aXQ7CgogICAgICBzdHJ1Y3QgbHN0U2VsZWN0IHsKICAgICAgICAgVUludDE2ICAg ICAgICAgICAgbGlzdElEOwogICAgICAgICBzdHJ1Y3QgTGlzdFR5cGUgCSpwTGlzdDsKICAgICAg ICAgSW50MTYgICAgICAgICAgICAgc2VsZWN0aW9uOwogICAgICAgICB9IGxzdFNlbGVjdDsKCiAg ICAgIHN0cnVjdCB0YmxFbnRlciB7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIHRhYmxlSUQ7 CiAgICAgICAgIHN0cnVjdCBUYWJsZVR5cGUJKnBUYWJsZTsKICAgICAgICAgSW50MTYgICAgICAg ICAgICAgcm93OwogICAgICAgICBJbnQxNiAgICAgICAgICAgICBjb2x1bW47CiAgICAgICAgIH0g dGJsRW50ZXI7CgogICAgICBzdHJ1Y3QgdGJsRXhpdCB7CiAgICAgICAgIFVJbnQxNiAgICAgICAg ICAgIHRhYmxlSUQ7CiAgICAgICAgIHN0cnVjdCBUYWJsZVR5cGUgCSpwVGFibGU7CiAgICAgICAg IEludDE2ICAgICAgICAgICAgIHJvdzsKICAgICAgICAgSW50MTYgICAgICAgICAgICAgY29sdW1u OwogICAgICAgICB9IHRibEV4aXQ7CgogICAgICBzdHJ1Y3QgdGJsU2VsZWN0IHsKICAgICAgICAg VUludDE2ICAgICAgICAgICAgdGFibGVJRDsKICAgICAgICAgc3RydWN0IFRhYmxlVHlwZSAJKnBU YWJsZTsKICAgICAgICAgSW50MTYgICAgICAgICAgICAgcm93OwogICAgICAgICBJbnQxNiAgICAg ICAgICAgICBjb2x1bW47CiAgICAgICAgIH0gdGJsU2VsZWN0OwoKICAgICAgc3RydWN0IGZybUxv YWQgewogICAgICAgICBVSW50MTYgICAgICAgICAgICBmb3JtSUQ7CiAgICAgICAgIH0gZnJtTG9h ZDsKCiAgICAgIHN0cnVjdCBmcm1PcGVuIHsKICAgICAgICAgVUludDE2ICAgICAgICAgICAgZm9y bUlEOwogICAgICAgICB9IGZybU9wZW47CgogICAgICBzdHJ1Y3QgZnJtR290byB7CiAgICAgICAg IFVJbnQxNiAgICAgICAgICAgIGZvcm1JRDsKICAgICAgICAgVUludDE2ICAgICAgICAgICAgcmVj b3JkTnVtOyAgICAgICAgIAogICAgICAgICBVSW50MTYgICAgICAgICAgICBtYXRjaFBvczsgICAg ICAgICAgCiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIG1hdGNoTGVuOyAgICAgICAgICAKICAg ICAgICAgVUludDE2ICAgICAgICAgICAgbWF0Y2hGaWVsZE51bTsgICAgIAogICAgICAgICBVSW50 MzIgICAgICAgICAgICBtYXRjaEN1c3RvbTsgICAgICAgCiAgICAgICAgIH0gZnJtR290bzsKCiAg ICAgIHN0cnVjdCBmcm1DbG9zZSB7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIGZvcm1JRDsK ICAgICAgICAgfSBmcm1DbG9zZTsKCiAgICAgIHN0cnVjdCBmcm1VcGRhdGUgewogICAgICAgICBV SW50MTYgICAgICAgICAgICBmb3JtSUQ7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIHVwZGF0 ZUNvZGU7ICAgICAgICAKICAgICAgICAgfSBmcm1VcGRhdGU7CgogICAgICBzdHJ1Y3QgZnJtVGl0 bGVFbnRlciB7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIGZvcm1JRDsKICAgICAgICAgfSBm cm1UaXRsZUVudGVyOwoKICAgICAgc3RydWN0IGZybVRpdGxlU2VsZWN0IHsKICAgICAgICAgVUlu dDE2ICAgICAgICAgICAgZm9ybUlEOwogICAgICAgICB9IGZybVRpdGxlU2VsZWN0OwoKICAgICAg IHN0cnVjdCBhdHRuSW5kaWNhdG9yRW50ZXIgewogICAgICAgICBVSW50MTYgICAgICAgICAgICBm b3JtSUQ7CiAgICAgIAl9IGF0dG5JbmRpY2F0b3JFbnRlcjsKCiAgICAgc3RydWN0IGF0dG5JbmRp Y2F0b3JTZWxlY3QgewogICAgICAgICBVSW50MTYgICAgICAgICAgICBmb3JtSUQ7CiAgICAgIAl9 IGF0dG5JbmRpY2F0b3JTZWxlY3Q7CgogICAgICBzdHJ1Y3QgZGF5U2VsZWN0IHsKICAgICAgICAg c3RydWN0IERheVNlbGVjdG9yVHlwZSAqcFNlbGVjdG9yOwogICAgICAgICBJbnQxNiAgICAgICAg ICAgICBzZWxlY3Rpb247CiAgICAgICAgIEJvb2xlYW4gICAgICAgICAgIHVzZVRoaXNEYXRlOwog ICAgICAgICBVSW50OCAgICAgICAgICAgICByZXNlcnZlZDE7CiAgICAgICAgIH0gZGF5U2VsZWN0 OwoKICAgICAgc3RydWN0IG1lbnUgewogICAgICAgICBVSW50MTYgICAgICAgICAgICBpdGVtSUQ7 CiAgICAgICAgIH0gbWVudTsKCiAgICAgIHN0cnVjdCBwb3BTZWxlY3QgewogICAgICAgICBVSW50 MTYgICAgICAgICAgICBjb250cm9sSUQ7CiAgICAgICAgIHN0cnVjdCBDb250cm9sVHlwZSAqY29u dHJvbFA7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIGxpc3RJRDsKICAgICAgICAgc3RydWN0 IExpc3RUeXBlIAkqbGlzdFA7CiAgICAgICAgIEludDE2ICAgICAgICAgICAgIHNlbGVjdGlvbjsK ICAgICAgICAgSW50MTYgICAgICAgICAgICAgcHJpb3JTZWxlY3Rpb247CiAgICAgICAgIH0gcG9w U2VsZWN0OwoKICAgICAgc3RydWN0IHNjbEVudGVyIHsKICAgICAgICAgVUludDE2ICAgICAgICAg ICAgc2Nyb2xsQmFySUQ7CiAgICAgICAgIHN0cnVjdCBTY3JvbGxCYXJUeXBlICpwU2Nyb2xsQmFy OwogICAgICAgICB9IHNjbEVudGVyOwoKICAgICAgc3RydWN0IHNjbEV4aXQgewogICAgICAgICBV SW50MTYgICAgICAgICAgICBzY3JvbGxCYXJJRDsKICAgICAgICAgc3RydWN0IFNjcm9sbEJhclR5 cGUgKnBTY3JvbGxCYXI7CiAgICAgICAgIEludDE2ICAgICAgICAgICAgIHZhbHVlOwogICAgICAg ICBJbnQxNiAgICAgICAgICAgICBuZXdWYWx1ZTsKICAgICAgICAgfSBzY2xFeGl0OwoKICAgICAg c3RydWN0IHNjbFJlcGVhdCB7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIHNjcm9sbEJhcklE OwogICAgICAgICBzdHJ1Y3QgU2Nyb2xsQmFyVHlwZSAqcFNjcm9sbEJhcjsKICAgICAgICAgSW50 MTYgICAgICAgICAgICAgdmFsdWU7CiAgICAgICAgIEludDE2ICAgICAgICAgICAgIG5ld1ZhbHVl OwogICAgICAgICBJbnQzMiAgICAgICAgICAgICB0aW1lOwogICAgICAgICB9IHNjbFJlcGVhdDsK CgkJc3RydWN0IG1lbnVDbWRCYXJPcGVuIHsKCQkJQm9vbGVhbiBwcmV2ZW50RmllbGRCdXR0b25z OyAgIAoJCQlVSW50OCAgIHJlc2VydmVkOwkJCQkJIAoJCQl9IG1lbnVDbWRCYXJPcGVuOwoJCQoJ CXN0cnVjdCBtZW51T3BlbiB7CgkJCVVJbnQxNgkJCQltZW51UnNjSUQ7CgkJCSAKCQkJSW50MTYJ CQkJCWNhdXNlOwoJCQl9IG1lbnVPcGVuOwoJCQoJCXN0cnVjdCBnYWRnZXRFbnRlciB7CiAgICAg ICAgIFVJbnQxNiAgICAgICAgICAgIGdhZGdldElEOwkJCSAKICAgICAgICAgc3RydWN0IEZvcm1H YWRnZXRUeXBlICoJZ2FkZ2V0UDsJCSAKCQkJfSBnYWRnZXRFbnRlcjsKCQkJCgkJc3RydWN0IGdh ZGdldE1pc2MgewogICAgICAgICBVSW50MTYgICAgICAgICAgICBnYWRnZXRJRDsJCQkgCiAgICAg ICAgIHN0cnVjdCBGb3JtR2FkZ2V0VHlwZSAqCWdhZGdldFA7CQkgCiAgICAgICAgIFVJbnQxNgkJ CQlzZWxlY3RvcjsKICAgICAgICAgdm9pZCAqCQkJCWRhdGFQOwoJCQl9IGdhZGdldE1pc2M7CgkJ CQogICAgICB9IGRhdGE7Cgp9IEV2ZW50VHlwZTsKCnR5cGVkZWYgRXZlbnRUeXBlICpFdmVudFB0 cjsKCiAKIAogCiAKIAoKCiMgMzQ0ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0Nv cmUvVUkvRXZlbnQuaCIKCgoKCiMgNDYgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3Mv Q29yZS9TeXN0ZW0vU3lzdGVtTWdyLmgiIDIKCgoKCgogCgoKCiAKIAogCiAKIAoKIAogCiAKCgoK CgoKCgkKCSAKCgoKCgkKCQogCgoKCgogCiAKIAogCiAKIAogCiAKIAogCgoKIAoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKIAogCgogCgoKCgoKCgoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJ CQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAK CQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJ CQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJ CQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJ CQkJCQkJCQkJCQkJCQkgCgoKCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJ CQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJ CQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkg CgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoKCgkJCQkJCQkJCQkJCQkJCSAKCQkJ CQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ CQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJ IAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJ CQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCgoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJ CQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJ CSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJ CQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ CQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJ IAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJ CQkJCQkJCQkJCQkgCgoKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJ CQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJ CSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJ CQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ CQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJ IAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCgoKCgkJCQkJCQkJCQkJCQkJCSAK CgoKCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoKCgkJCQkJCQkJCQkJCQkJCSAK CQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJ CQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJ CQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJ CQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJ CQkJCQkJCQkgCgoKCQkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJCQogCiAKIAoK CgkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkgCgoK CgoKCgoKCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCSAKCgoJCQkJCQkJCQkJCQkJ CQkJIAoJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJ IAoKCgoKIAogCgogCgogCgoKCgoKCgoKCgoKCiAKIAoKIAoKIAoKIAogCgogCiAKCgoKCiAKIAog CiAKCgoKCgogCiAKIAoKCgkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCSAKCQkJ CQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCSAKCgoJ CQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoJ CQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkKCgkJCQkJCQkJCQkJCQkJCQkJIAoJ CQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoJ CQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoK CgkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkg CgkJCQkJCQkJCQkJCQkJCQkJIAoKCgkJCQkJCQkJCQkJCQkJCQkJIAoKCQkJCQkJCQkJCQkJCQkJ CQkKIAoKIAogCiAKCgogCiAKIAogCiAKIAogCiAKCgoKIAogCiAKCgoJCQkJCQkJCQkJCQkJCQkg CgoKCQkJCQkJCQkJCQkJCQkJIAoKCQkJCQkJCQkJCQkJCQkJIAoKCQkJCQkJCQkJCQkJCQkJIAoJ CQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJ CQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJ CQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCiAKCgoKCiAKIAogCiAKIAoK IAp0eXBlZGVmIHN0cnVjdCB7CglCb29sZWFuCQl1aUNvbWluZzsJCQkJCQkJIAoJCQkJCQkJCQkJ CQkJCQkgCglVSW50OAkJCXJlc2VydmVkMTsKCX0gU3lzQXBwTGF1bmNoQ21kU2F2ZURhdGFUeXBl OwoJCiAKdHlwZWRlZiBzdHJ1Y3QgewoJQm9vbGVhbgkJaGFyZFJlc2V0OwkJCQkJCQkgCglCb29s ZWFuCQljcmVhdGVEZWZhdWx0REI7CQkJCQkgCgl9IFN5c0FwcExhdW5jaENtZFN5c3RlbVJlc2V0 VHlwZTsKCQoKIAp0eXBlZGVmIHN0cnVjdCBTeXNBcHBMYXVuY2hDbWRJbml0RGF0YWJhc2VUeXBl IHsKCURtT3BlblJlZglkYlA7CQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJ CQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJVUludDMyCQljcmVhdG9yOwkJCQkJCQkJIAoJVUludDMy CQl0eXBlOwkJCQkJCQkJCSAKCVVJbnQxNgkJdmVyc2lvbjsJCQkJCQkJCSAKCX0gU3lzQXBwTGF1 bmNoQ21kSW5pdERhdGFiYXNlVHlwZTsKCgogCiAKIAp0eXBlZGVmIHN0cnVjdCBTeXNBcHBMYXVu Y2hDbWRTeW5jQ2FsbEFwcGxpY2F0aW9uVHlwZVYxMCB7CglVSW50MTYJCWFjdGlvbjsJCQkJCSAK CVVJbnQxNgkJcGFyYW1TaXplOwkJCQkgCgl2b2lkICoJCXBhcmFtUDsJCQkJCSAKCVVJbnQ4CQkJ cmVtb3RlU29ja2V0OwkJCSAKCVVJbnQ4CQkJdGlkOwkJCQkJCSAKCUJvb2xlYW4JCWhhbmRsZWQ7 CQkJCQkgCglVSW50OAkJCXJlc2VydmVkMTsKCX0gU3lzQXBwTGF1bmNoQ21kU3luY0NhbGxBcHBs aWNhdGlvblR5cGVWMTA7CgoKIAogCiAKdHlwZWRlZiBzdHJ1Y3QgU3lzQXBwTGF1bmNoQ21kSGFu ZGxlU3luY0NhbGxBcHBUeXBlIHsKCVVJbnQxNgkJcGJTaXplOwkJCQkJIAoJVUludDE2CQlhY3Rp b247CQkJCQkgCgl2b2lkICoJCXBhcmFtUDsJCQkJCSAKCVVJbnQzMgkJZHdQYXJhbVNpemU7CQkJ IAoJdm9pZCAqCQlkbFJlZlA7CQkJCQkgCgkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCglCb29s ZWFuCQloYW5kbGVkOwkJCQkJIAoJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ CQkJIAoJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJ CQkgCgkKCVVJbnQ4CQkJcmVzZXJ2ZWQxOwoJCQkJCQkJCQkJCQoJRXJyCQkJcmVwbHlFcnI7CQkJ CSAKCQoJIAoJVUludDMyCQlkd1Jlc2VydmVkMTsJCQkgCglVSW50MzIJCWR3UmVzZXJ2ZWQyOwkJ CSAKCgkgCgkgCgkKCQlVSW50MzIJCWNyZWF0b3I7CgkJVUludDMyCQl0eXBlOwoJCgoJfSBTeXNB cHBMYXVuY2hDbWRIYW5kbGVTeW5jQ2FsbEFwcFR5cGU7CgogCnR5cGVkZWYgc3RydWN0IAoJewoJ VUludDMyCQljcmVhdG9yOwoJVUludDMyCQl0eXBlOwoJRXJyCQkJcmVzdWx0OwoJfSBTeXNBcHBM YXVuY2hDbWRGYWlsZWRBcHBOb3RpZnlUeXBlOwoJCgkKIAp0eXBlZGVmIHN0cnVjdCAKCXsKCVVJ bnQxNgkJY2FyZE5vOwoJTG9jYWxJRAkJZGJJRDsKCX0gU3lzQXBwTGF1bmNoQ21kT3BlbkRCVHlw ZTsKCQoKIAoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBTeXNBcHBJbmZvVHlwZSB7CglJ bnQxNgkJCQljbWQ7CQkJCQkJCSAKCU1lbVB0cgkJCWNtZFBCUDsJCQkJCQkgCglVSW50MTYJCQls YXVuY2hGbGFnczsJCQkJIAoJCglVSW50MzIJCQl0YXNrSUQ7CQkJCQkJIAoJTWVtSGFuZGxlCQlj b2RlSDsJCQkJCQkgCglEbU9wZW5SZWYJCWRiUDsJCQkJCQkJIAoJVUludDgJCQkJKnN0YWNrUDsJ CQkJCQkgCglVSW50OAkJCQkqZ2xvYmFsc0NodW5rUDsJCQkgCgoJVUludDE2CQkJbWVtT3duZXJJ RDsJCQkJCSAKCU1lbVB0cgkJCWRtQWNjZXNzUDsJCQkJCSAKCUVycgkJCQlkbUxhc3RFcnI7CQkJ CQkgCglNZW1QdHIJCQllcnJFeGNlcHRpb25QOwkJCQkgCgoJIAoJVUludDgJCQkJKmE1UHRyOwkJ CQkJCSAKCVVJbnQ4CQkJCSpzdGFja0VuZFA7CQkJCQkgCglVSW50OAkJCQkqZ2xvYmFsRW5kUDsJ CQkJIAoJc3RydWN0IFN5c0FwcEluZm9UeXBlICpyb290UDsJCQkJIAoJCQkJCQkJCQkJCQkJCSAK CU1lbVB0cgkJCWV4dHJhUDsJCQkJCQkgCgl9IFN5c0FwcEluZm9UeXBlOwp0eXBlZGVmIFN5c0Fw cEluZm9UeXBlICpTeXNBcHBJbmZvUHRyOwoKCiAKCgoKIAogCiAKIAogCiAKIAogCiAKIAogCiAK dHlwZWRlZiBzdHJ1Y3QgU3lzTGliVGJsRW50cnlUeXBlIHsKCU1lbVB0cgkJKmRpc3BhdGNoVGJs UDsJCQkJCSAKCXZvaWQJCQkqZ2xvYmFsc1A7CQkJCQkJIAoJCgkgCglMb2NhbElECQlkYklEOwkJ CQkJCQkJIAoJdm9pZAkJCSpjb2RlUnNjSDsJCQkJCQkgCgl9IFN5c0xpYlRibEVudHJ5VHlwZTsK dHlwZWRlZiBTeXNMaWJUYmxFbnRyeVR5cGUqCVN5c0xpYlRibEVudHJ5UHRyOwoKIAogCgp0eXBl ZGVmIHN0cnVjdCBTaW1EaXNwYXRjaFRhYmxlVHlwZSB7CglVSW50MzIJbnVtRW50cmllczsJCQkJ CQkJIAoJdm9pZAkJKmVudHJpZXNbMV07CQkJCQkJIAoJCQkJCQkJCQkJCQkJCSAKICAgfSBTaW1E aXNwYXRjaFRhYmxlVHlwZTsKdHlwZWRlZiBTaW1EaXNwYXRjaFRhYmxlVHlwZSoJU2ltRGlzcGF0 Y2hUYWJsZVB0cjsKCgoKIAp0eXBlZGVmIEVyciAoKlN5c0xpYkVudHJ5UHJvY1B0cikoVUludDE2 IHJlZk51bSwgU3lzTGliVGJsRW50cnlQdHIgZW50cnlQKTsKCiAKCgogCgoKIAoKCgogCgoKIAp0 eXBlZGVmIHZvaWQgKCpTeXNUZXJtUHJvY1B0cikoVUludDMyIHRhc2tJRCwgSW50MzIgcmVhc29u KTsKCiAKdHlwZWRlZiB2b2lkICgqU3lzVGltZXJQcm9jUHRyKShJbnQzMiB0aW1lcklELCBJbnQz MiBwYXJhbSk7CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCgoKCgoKCiAKCgoKCgog CgoKCgogCgoKCgoKCgogCgoKCgoKCQkJIAoJCQkgCgkJCSAKCQkJIAoJCQkgCgkJCSAKCgoJCQkg CgoKCgoKCgkJCSAKCgoKCgoJCQkgCgkJCSAKCQkJIAoJCQkgCgkJCQoKCQkJIAoJCQkgCgkJCSAK CQkJIAoJCQkgCgkJCSAKCQkJIAoKCgkJCSAKCQkJIAoJCQkKCgoJCQkKCgkJCSAKCQkJIAoKCgkJ CSAKCQkJIAoJCQkgCgkJCQoKCQkJIAoKCgkJCSAKCgoJCQkgCgkJCSAKCQkJIAoJCQkgCgoKCQkJ IAoKCQkJIAoKCgoJCQkgCgkJCQoKCQkJCgoJCQkgCgkJCSAKCgoJCQkgCgkJCSAKCgoKCgoJCQkK IAoKCiAKCgoKIAoKCgogCgoKCgoKCiAKIAogCiAKCgoKCgoKCgoKCiAKIAogCiAKCgoKCgoKCgoK IAoKCiAKIAp0eXBlZGVmIGVudW0gewoJc3lzQmF0dGVyeUtpbmRBbGthbGluZT0wLAoJc3lzQmF0 dGVyeUtpbmROaUNhZCwKCXN5c0JhdHRlcnlLaW5kTGlJb24sCglzeXNCYXR0ZXJ5S2luZFJlY2hB bGssCglzeXNCYXR0ZXJ5S2luZE5pTUgsCglzeXNCYXR0ZXJ5S2luZExpSW9uMTQwMCwKCXN5c0Jh dHRlcnlLaW5kTGFzdD0weEZGICAgIAoJfSBTeXNCYXR0ZXJ5S2luZDsKCQogCnR5cGVkZWYgZW51 bSB7CglzeXNCYXR0ZXJ5U3RhdGVOb3JtYWw9MCwKCXN5c0JhdHRlcnlTdGF0ZUxvd0JhdHRlcnks CglzeXNCYXR0ZXJ5U3RhdGVDcml0QmF0dGVyeSwKCXN5c0JhdHRlcnlTdGF0ZVNodXRkb3duCgl9 IFN5c0JhdHRlcnlTdGF0ZTsKCgogCnR5cGVkZWYgc3RydWN0IAoJewoJQ2hhcgkJCW5hbWVbMzIg XTsKCVVJbnQzMgkJY3JlYXRvcjsKCVVJbnQzMgkJdHlwZTsKCVVJbnQxNgkJdmVyc2lvbjsKCUxv Y2FsSUQJCWRiSUQ7CglVSW50MTYgCQljYXJkTm87CglCaXRtYXBQdHIJaWNvblA7Cgl9IFN5c0RC TGlzdEl0ZW1UeXBlOwoJCgogCiAKIAogCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQzMgkJZGF0YVsz XTsKCX0gU3lzTWFpbGJveE1zZ1R5cGU7CgkKCiAKCgoKIAoKCgoKCiAKCgoKCgoKCiAKCgojIDEx NzQgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vU3lzdGVtTWdy LmgiCgoKCgogCgoKCgoKCgoKCgoKCgojIDYwICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9J bmNzL0NvcmUvU3lzdGVtL1ByZWZlcmVuY2VzLmgiIDIKCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0v UGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9Mb2NhbGVNZ3IuaCIgMQogCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCgogCgoKCiAKCgoKIAoKCgogCgoK CiAKCgoKdHlwZWRlZiBVSW50MTYgTG1Mb2NhbGVTZXR0aW5nQ2hvaWNlOwoKIAoKCgogCgoKCgoJ CgoKIAoKCgogCgoKCiAKCgoKIAoKCgogCgoKCiAKCgoKIAoKCgogCgoKCiAKCgoKIAoKCgogCgoK CiAKCgoKIAoKCgoKCgoKCgoKCgogCgoKCgoJCgoKCgoJCgoKCgoKIAoKCiAKdHlwZWRlZiBVSW50 MTYgTG1Sb3V0aW5lU2VsZWN0b3I7CgoKCgoKCgogCgoKCnR5cGVkZWYgVUludDggTGFuZ3VhZ2VU eXBlOwp0eXBlZGVmIFVJbnQ4IENvdW50cnlUeXBlOwoKdHlwZWRlZiBzdHJ1Y3QgX0xtTG9jYWxl VHlwZSBMbUxvY2FsZVR5cGU7CnN0cnVjdCBfTG1Mb2NhbGVUeXBlCnsKCVVJbnQxNglsYW5ndWFn ZTsJCSAKCVVJbnQxNgljb3VudHJ5OwkJCSAKfTsKCiAKCgoKIyAyMjggIi4uL1NyY1NoYXJlZC9Q YWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vTG9jYWxlTWdyLmgiCgoKCiMgNjEgIi4uL1Ny Y1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vUHJlZmVyZW5jZXMuaCIgMgoK IyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvVUkvQXR0ZW50aW9uTWdy LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCgoKCgoJCgog CgoKCgoKCgoKCgoKCgoKCQkJCgkJCQogCgoKCnR5cGVkZWYgVUludDMyIEF0dG5GbGFnc1R5cGU7 CgoKCgoKCSAKCgoKCiAKIAoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVm IFVJbnQxNiBBdHRuTGV2ZWxUeXBlOwoJCgkKCnR5cGVkZWYgVUludDE2IEF0dG5Db21tYW5kVHlw ZTsKCQoJCgkKCQoJCgkKCQoJCgp0eXBlZGVmIHVuaW9uIEF0dG5Db21tYW5kQXJnc1RhZyB7Cglz dHJ1Y3QgQXR0bkNvbW1hbmRBcmdzRHJhd0RldGFpbFRhZ3sKCQlSZWN0YW5nbGVUeXBlIGJvdW5k czsKCQlCb29sZWFuIGZpcnN0VGltZTsKCQlBdHRuRmxhZ3NUeXBlIGZsYWdzOwoJfSBkcmF3RGV0 YWlsOwoJCglzdHJ1Y3QgQXR0bkNvbW1hbmRBcmdzRHJhd0xpc3RUYWcgewoJCVJlY3RhbmdsZVR5 cGUgYm91bmRzOwoJCUJvb2xlYW4gZmlyc3RUaW1lOwoJCUF0dG5GbGFnc1R5cGUgZmxhZ3M7CgkJ Qm9vbGVhbiBzZWxlY3RlZDsKCX0gZHJhd0xpc3Q7CgkKCXN0cnVjdCBBdHRuQ29tbWFuZEFyZ3NH b3RJdFRhZyB7CgkJQm9vbGVhbiBkaXNtaXNzZWRCeVVzZXI7Cgl9IGdvdEl0OwoJCglzdHJ1Y3Qg QXR0bkNvbW1hbmRBcmdzSXRlcmF0ZVRhZyB7CgkJVUludDMyIGl0ZXJhdGlvbkRhdGE7Cgl9IGl0 ZXJhdGU7Cn0gQXR0bkNvbW1hbmRBcmdzVHlwZTsKCnR5cGVkZWYgc3RydWN0IHsKCUF0dG5Db21t YW5kVHlwZSBjb21tYW5kOwoJVUludDMyIHVzZXJEYXRhOwoJQXR0bkNvbW1hbmRBcmdzVHlwZSAq Y29tbWFuZEFyZ3NQOwp9IEF0dG5MYXVuY2hDb2RlQXJnc1R5cGU7Cgp0eXBlZGVmIEVyciBBdHRu Q2FsbGJhY2tQcm9jIChBdHRuQ29tbWFuZFR5cGUgY29tbWFuZCwgVUludDMyIHVzZXJEYXRhLCBB dHRuQ29tbWFuZEFyZ3NUeXBlICpjb21tYW5kQXJnc1ApOwoKIAp0eXBlZGVmIHN0cnVjdCB7CglB dHRuRmxhZ3NUeXBlIGZsYWdzOwp9IEF0dG5Ob3RpZnlEZXRhaWxzVHlwZTsKCgogCgoKIyAyMDcg Ii4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9VSS9BdHRlbnRpb25NZ3IuaCIK CgoKIyA2MiAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9QcmVm ZXJlbmNlcy5oIiAyCgoKIAoKCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgogCgoKCgoKCQoJ CgkKCgoJCgoKCgoKCQoJCgkKCgp0eXBlZGVmIGVudW0KCXsKCXVuaXRzRW5nbGlzaCA9IDAsCQkg Cgl1bml0c01ldHJpYwkJCQkgCgl9IE1lYXN1cmVtZW50U3lzdGVtVHlwZTsKCgogCiAKIAp0eXBl ZGVmIGVudW0gewoJc2xPbiA9IDAsCglzbE9mZiA9IDEKCX0gU291bmRMZXZlbFR5cGVWMjA7CgkK IAp0eXBlZGVmIGVudW0gewogICBuZXZlciA9IDAsCQkJCQkgCiAgIHVwb25Qb3dlck9mZiwJCQkJ IAogICBhdFByZXNldFRpbWUsCQkJCSAKICAgYWZ0ZXJQcmVzZXREZWxheQkJCQkgCiAgIH0gU2Vj dXJpdHlBdXRvTG9ja1R5cGU7CgoKIAogCnR5cGVkZWYgZW51bSB7CglhbE9mZiwJCQkJCQkJCQkg CglhbEV2ZW50c09ubHksCQkJCQkJCSAKCWFsRXZlbnRzQW5kUmFuZG9tLAkJCQkJIAoJYWxFdmVu dHNBbmRNb3JlUmFuZG9tCQkJCSAKCX0gQW5pbWF0aW9uTGV2ZWxUeXBlOwoKCnR5cGVkZWYgZW51 bSAKCXsKCXByZWZWZXJzaW9uLAoJcHJlZkNvdW50cnksCglwcmVmRGF0ZUZvcm1hdCwKCXByZWZM b25nRGF0ZUZvcm1hdCwKCXByZWZXZWVrU3RhcnREYXksCglwcmVmVGltZUZvcm1hdCwKCXByZWZO dW1iZXJGb3JtYXQsCglwcmVmQXV0b09mZkR1cmF0aW9uLAkJCQkJIAoJcHJlZlN5c1NvdW5kTGV2 ZWxWMjAsCQkJCSAKCXByZWZHYW1lU291bmRMZXZlbFYyMCwJCQkJIAoJcHJlZkFsYXJtU291bmRM ZXZlbFYyMCwJCQkJIAoJcHJlZkhpZGVQcml2YXRlUmVjb3Jkc1YzMywKCXByZWZEZXZpY2VMb2Nr ZWQsCglwcmVmTG9jYWxTeW5jUmVxdWlyZXNQYXNzd29yZCwKCXByZWZSZW1vdGVTeW5jUmVxdWly ZXNQYXNzd29yZCwKCXByZWZTeXNCYXR0ZXJ5S2luZCwKCXByZWZBbGxvd0Vhc3RlckVnZ3MsCglw cmVmTWludXRlc1dlc3RPZkdNVCwJCQkJIAoJcHJlZkRheWxpZ2h0U2F2aW5ncywJCQkJCSAKCXBy ZWZSb25hbWF0aWNDaGFyLAoJcHJlZkhhcmQxQ2hhckFwcENyZWF0b3IsCQkJIAoJcHJlZkhhcmQy Q2hhckFwcENyZWF0b3IsCQkJIAoJcHJlZkhhcmQzQ2hhckFwcENyZWF0b3IsCQkJIAoJcHJlZkhh cmQ0Q2hhckFwcENyZWF0b3IsCQkJIAoJcHJlZkNhbGNDaGFyQXBwQ3JlYXRvciwJCQkJIAoJcHJl ZkhhcmRDcmFkbGVDaGFyQXBwQ3JlYXRvciwJCSAKCXByZWZMYXVuY2hlckFwcENyZWF0b3IsCQkJ CSAKCXByZWZTeXNQcmVmRmxhZ3MsCQkKCXByZWZIYXJkQ3JhZGxlMkNoYXJBcHBDcmVhdG9yLAkg CglwcmVmQW5pbWF0aW9uTGV2ZWwsCgoJIAoJcHJlZlN5c1NvdW5kVm9sdW1lLAkJCQkJIAoJcHJl ZkdhbWVTb3VuZFZvbHVtZSwJCQkJCSAKCXByZWZBbGFybVNvdW5kVm9sdW1lLAkJCQkgCglwcmVm QmVhbVJlY2VpdmUsCQkJCQkJIAoJcHJlZkNhbGlicmF0ZURpZ2l0aXplckF0UmVzZXQsCSAKCXBy ZWZTeXN0ZW1LZXlib2FyZElELAkJCQkgCglwcmVmRGVmU2VyaWFsUGx1Z0luLAkJCQkJIAoKCSAK CXByZWZTdGF5T25XaGVuUGx1Z2dlZEluLAkJCSAKCXByZWZTdGF5TGl0V2hlblBsdWdnZWRJbiwJ CQkgCgoJIAoJcHJlZkFudGVubmFDaGFyQXBwQ3JlYXRvciwJCQkgCgoJIAoJcHJlZk1lYXN1cmVt ZW50U3lzdGVtLAkJCQkgCgkKCSAKCXByZWZTaG93UHJpdmF0ZVJlY29yZHMsCQkJCSAKCXByZWZB dXRvT2ZmRHVyYXRpb25TZWNzLAkJCSAKCQoJIAoJcHJlZlRpbWVab25lLAkJCQkJCQkgCglwcmVm RGF5bGlnaHRTYXZpbmdBZGp1c3RtZW50LAkJIAoKCXByZWZBdXRvTG9ja1R5cGUsCQkJCQkJIAoJ cHJlZkF1dG9Mb2NrVGltZSwJCQkJCQkgCglwcmVmQXV0b0xvY2tUaW1lRmxhZywgICAgCQkJIAoK CXByZWZMYW5ndWFnZSwJCQkJCQkJIAoJcHJlZkxvY2FsZSwJCQkJCQkJCSAKCQoJcHJlZlRpbWVa b25lQ291bnRyeSwJCQkJCSAKCQoJcHJlZkF0dGVudGlvbkZsYWdzLAkJCQkJIAoKCXByZWZEZWZh dWx0QXBwQ3JlYXRvcgkJCQkgCgoJfSBTeXN0ZW1QcmVmZXJlbmNlc0Nob2ljZTsKCQoJCnR5cGVk ZWYgc3RydWN0IHsKCVVJbnQxNiB2ZXJzaW9uOwkJCQkJCSAKCQoJIAoJQ291bnRyeVR5cGUgY291 bnRyeTsJCQkJCSAKCURhdGVGb3JtYXRUeXBlIGRhdGVGb3JtYXQ7CQkJIAoJRGF0ZUZvcm1hdFR5 cGUgbG9uZ0RhdGVGb3JtYXQ7CSAKCVVJbnQ4IHdlZWtTdGFydERheTsJCQkJCSAKCVRpbWVGb3Jt YXRUeXBlIHRpbWVGb3JtYXQ7CQkJIAoJTnVtYmVyRm9ybWF0VHlwZSBudW1iZXJGb3JtYXQ7CSAK CQoJIAoJVUludDggYXV0b09mZkR1cmF0aW9uOwkJCQkgCglTb3VuZExldmVsVHlwZVYyMCBzeXNT b3VuZExldmVsOwkJIAoJU291bmRMZXZlbFR5cGVWMjAgYWxhcm1Tb3VuZExldmVsOwkgCglCb29s ZWFuIGhpZGVTZWNyZXRSZWNvcmRzOwkJCSAKCQkJCQkJCQkJCQkJIAoJQm9vbGVhbiBkZXZpY2VM b2NrZWQ7CQkJCSAKCQkJCQkJCQkJCQkJIAoJVUludDggcmVzZXJ2ZWQxOwoJVUludDE2IHN5c1By ZWZGbGFnczsJCQkJCSAKCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkgCglTeXNCYXR0ZXJ5S2lu ZAlzeXNCYXR0ZXJ5S2luZDsJIAoJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCSAKCVVJbnQ4IHJl c2VydmVkMjsKCQoJfSBTeXN0ZW1QcmVmZXJlbmNlc1R5cGVWMTA7CgoKIAogCiAKIAogCiAKIAog Cgp0eXBlZGVmIHN0cnVjdCAKCXsKCVVJbnQxNiB2ZXJzaW9uOwkJCQkJCSAKCQoJIAoJQ291bnRy eVR5cGUgY291bnRyeTsJCQkJCSAKCURhdGVGb3JtYXRUeXBlIGRhdGVGb3JtYXQ7CQkJIAoJRGF0 ZUZvcm1hdFR5cGUgbG9uZ0RhdGVGb3JtYXQ7CSAKCUludDggd2Vla1N0YXJ0RGF5OwkJCQkJIAoJ VGltZUZvcm1hdFR5cGUgdGltZUZvcm1hdDsJCQkgCglOdW1iZXJGb3JtYXRUeXBlIG51bWJlckZv cm1hdDsJIAoJCgkgCglVSW50OCBhdXRvT2ZmRHVyYXRpb247CQkJCSAKCVNvdW5kTGV2ZWxUeXBl VjIwIHN5c1NvdW5kTGV2ZWxWMjA7CQkgCglTb3VuZExldmVsVHlwZVYyMCBnYW1lU291bmRMZXZl bFYyMDsJIAoJU291bmRMZXZlbFR5cGVWMjAgYWxhcm1Tb3VuZExldmVsVjIwOwkgCglCb29sZWFu IGhpZGVTZWNyZXRSZWNvcmRzOwkJCSAKCQkJCQkJCQkJCQkJIAoJQm9vbGVhbiBkZXZpY2VMb2Nr ZWQ7CQkJCSAKCQkJCQkJCQkJCQkJIAoJQm9vbGVhbiBsb2NhbFN5bmNSZXF1aXJlc1Bhc3N3b3Jk OwkgCglCb29sZWFuIHJlbW90ZVN5bmNSZXF1aXJlc1Bhc3N3b3JkOwkgCglVSW50MTYgc3lzUHJl ZkZsYWdzOwkJCQkJIAoJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJIAoJ U3lzQmF0dGVyeUtpbmQJc3lzQmF0dGVyeUtpbmQ7CSAKCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJ CQkgCglVSW50OCByZXNlcnZlZDE7CglVSW50MzIgbWludXRlc1dlc3RPZkdNVDsJCQkgCglEYXls aWdodFNhdmluZ3NUeXBlcwlkYXlsaWdodFNhdmluZ3M7CSAKCVVJbnQ4IHJlc2VydmVkMjsKCVVJ bnQxNiByb25hbWF0aWNDaGFyOwkJCQkgCgkJCQkJCQkJCQkJCSAKCVVJbnQzMgloYXJkMUNoYXJB cHBDcmVhdG9yOwkJIAoJCQkJCQkJCQkJCQkgCglVSW50MzIJaGFyZDJDaGFyQXBwQ3JlYXRvcjsJ CSAKCQkJCQkJCQkJCQkJIAoJVUludDMyCWhhcmQzQ2hhckFwcENyZWF0b3I7CQkgCgkJCQkJCQkJ CQkJCSAKCVVJbnQzMgloYXJkNENoYXJBcHBDcmVhdG9yOwkJIAoJCQkJCQkJCQkJCQkgCglVSW50 MzIJY2FsY0NoYXJBcHBDcmVhdG9yOwkJIAoJCQkJCQkJCQkJCQkgCglVSW50MzIJaGFyZENyYWRs ZUNoYXJBcHBDcmVhdG9yOwkgCgkJCQkJCQkJCQkJCSAKCVVJbnQzMglsYXVuY2hlckNoYXJBcHBD cmVhdG9yOwkJIAoJCQkJCQkJCQkJCQkgCglVSW50MzIJaGFyZENyYWRsZTJDaGFyQXBwQ3JlYXRv cjsJIAoJCQkJCQkJCQkJCQkgCglBbmltYXRpb25MZXZlbFR5cGUgYW5pbWF0aW9uTGV2ZWw7CSAK CQoJQm9vbGVhbgltYXNrUHJpdmF0ZVJlY29yZHM7CQkJIAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJ CQkJCQkJIAoJCQkJCQkJCQkJCQkJCgkKCSAKCVVJbnQxNiBzeXNTb3VuZFZvbHVtZTsJCQkJCSAK CVVJbnQxNiBnYW1lU291bmRWb2x1bWU7CQkJCQkgCglVSW50MTYgYWxhcm1Tb3VuZFZvbHVtZTsJ CQkJIAoJQm9vbGVhbiBiZWFtUmVjZWl2ZTsJCQkJCQkgCglCb29sZWFuIGNhbGlicmF0ZURpZ2l0 aXplckF0UmVzZXQ7CSAKCVVJbnQxNiBzeXN0ZW1LZXlib2FyZElEOwkJCQkgCglVSW50MzIgZGVm U2VyaWFsUGx1Z0luOwkJCQkJIAoKCSAKCUJvb2xlYW4gc3RheU9uV2hlblBsdWdnZWRJbjsJCQkg CglCb29sZWFuIHN0YXlMaXRXaGVuUGx1Z2dlZEluOwkJCSAKCgkgCglVSW50MzIJYW50ZW5uYUNo YXJBcHBDcmVhdG9yOwkJIAoJCQkJCQkJCQkJCQkJIAoKCSAKCU1lYXN1cmVtZW50U3lzdGVtVHlw ZSBtZWFzdXJlbWVudFN5c3RlbTsJIAoJVUludDgJCQkJCQlyZXNlcnZlZDM7CQkJCQoJVUludDE2 IGF1dG9PZmZEdXJhdGlvblNlY3M7CQkJCQkgCgkKCSAKCUludDE2IHRpbWVab25lOwkJCQkJCQkg CglJbnQxNglkYXlsaWdodFNhdmluZ0FkanVzdG1lbnQ7CQkgCglDb3VudHJ5VHlwZSB0aW1lWm9u ZUNvdW50cnk7CQkJIAoJU2VjdXJpdHlBdXRvTG9ja1R5cGUgIGF1dG9Mb2NrVHlwZTsJCSAKCVVJ bnQzMgkJCQlhdXRvTG9ja1RpbWU7CQkgCglCb29sZWFuCQkJCWF1dG9Mb2NrVGltZUZsYWc7CSAK CUxhbmd1YWdlVHlwZQkJbGFuZ3VhZ2U7CQkJIAoKCUF0dG5GbGFnc1R5cGUJCWF0dGVudGlvbkZs YWdzOwkJIAoJCglVSW50MzIJCQkJZGVmYXVsdEFwcENyZWF0b3I7CSAKCQkJCQkJCQkJCQkgCgl9 IFN5c3RlbVByZWZlcmVuY2VzVHlwZTsKCgoJCnR5cGVkZWYgU3lzdGVtUHJlZmVyZW5jZXNUeXBl ICpTeXN0ZW1QcmVmZXJlbmNlc1B0cjsKCgogCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQxNiBrZXlD b2RlOwkJCQkJCSAKCVVJbnQzMiBjcmVhdG9yOwkJCQkJCSAKfSBCdXR0b25EZWZhdWx0QXBwVHlw ZTsKCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQxNiBudW1CdXR0b25zOwkJCQkJIAoJQnV0dG9uRGVm YXVsdEFwcFR5cGUgYnV0dG9uWzFdOwkgCn0gQnV0dG9uRGVmYXVsdExpc3RUeXBlOwoKCiAKIAog CgojIDQyNiAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9QcmVm ZXJlbmNlcy5oIgoKCgojIDEwMSAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKCQkKIAogCgkJCiMg MSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9TZXJpYWxNZ3Iu aCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIAoKCiAKCgoKCgoKCgoKCgoKCgoKCgogCiAK IAoKCgoKCgoKCgoKIAoKCgoKCgoKCQkKCiAKCgoKIAoKCgkKCgoKCgoKCgoKCgoKCgoJCQkJCQkJ CQkJCQkJCQkJCQkJCSAKCgogCgoKCgkJCQkJCQkJCQkJCQoKCgogCgoKCgoKCgogCiAKIAoKCgoK CgoKCnR5cGVkZWYgc3RydWN0IERldmljZUluZm9UeXBlIHsKCVVJbnQzMiBzZXJEZXZDcmVhdG9y OwkJCQkJCQkJIAoJVUludDMyIHNlckRldkZ0ckluZm87CQkJCQkJCQkgCglVSW50MzIgc2VyRGV2 TWF4QmF1ZFJhdGU7CQkJCQkJCSAKCVVJbnQzMiBzZXJEZXZIYW5kc2hha2VCYXVkOwkJCQkJCSAK CUNoYXIgKnNlckRldlBvcnRJbmZvU3RyOwkJCQkJCQkgCglVSW50OCByZXNlcnZlZFs4XTsJCQkJ CQkJCQkgCn0gRGV2aWNlSW5mb1R5cGU7Cgp0eXBlZGVmIERldmljZUluZm9UeXBlICpEZXZpY2VJ bmZvUHRyOwoKCiAKCgoKdHlwZWRlZiB2b2lkICgqV2FrZXVwSGFuZGxlclByb2NQdHIpKFVJbnQz MiByZWZDb24pOwoKIAoKCgoKCgoKCgoKCnR5cGVkZWYgQm9vbGVhbiAoKkJsb2NraW5nSG9va1By b2NQdHIpICAoVUludDMyIHVzZXJSZWYpOwoKCiAKCgoKIAoKCnR5cGVkZWYgc3RydWN0IFNybUNh bGxiYWNrRW50cnlUeXBlIHsKCUJsb2NraW5nSG9va1Byb2NQdHIJZnVuY1A7CQkJCQkgCglVSW50 MzIJCQkJCXVzZXJSZWY7CQkJCQkgCn0gU3JtQ2FsbGJhY2tFbnRyeVR5cGU7CnR5cGVkZWYgU3Jt Q2FsbGJhY2tFbnRyeVR5cGUqCVNybUNhbGxiYWNrRW50cnlQdHI7CgoKdHlwZWRlZiBlbnVtIFNy bUN0bEVudW0gewoJc3JtQ3RsRmlyc3RSZXNlcnZlZCA9IDAsCQkgCgkKCXNybUN0bFNldEJhdWRS YXRlLAkJCQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQoJc3JtQ3RsR2V0QmF1ZFJhdGUsCQkJ CSAKCQkJCQkJCQkJCQkKCXNybUN0bFNldEZsYWdzLAkJCQkJIAoJCglzcm1DdGxHZXRGbGFncywJ CQkJCSAKCQoJc3JtQ3RsU2V0Q3RzVGltZW91dCwJCQkJIAoJCglzcm1DdGxHZXRDdHNUaW1lb3V0 LAkJCQkgCgkKCXNybUN0bFN0YXJ0QnJlYWssCQkJCQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJ CSAKCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCglzcm1DdGxTdG9wQnJlYWssCQkJCQkgCgkJCQkJ CQkJCQkJIAoKCXNybUN0bFN0YXJ0TG9jYWxMb29wYmFjaywJCSAKCQkJCQkJCQkJCQkgCgkJCQkJ CQkJCQkJCglzcm1DdGxTdG9wTG9jYWxMb29wYmFjaywJCSAKCQkJCQkJCQkJCQkgCgoKCXNybUN0 bElyREFFbmFibGUsCQkJCQkgCgkJCQkJCQkJCQkJIAoKCXNybUN0bElyREFEaXNhYmxlLAkJCQkg CgkJCQkJCQkJCQkJIAoKCXNybUN0bFJ4RW5hYmxlLAkJCQkJIAoJCglzcm1DdGxSeERpc2FibGUs CQkJCQkgCgoJc3JtQ3RsRW11U2V0QmxvY2tpbmdIb29rLAkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJ CQkJCQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJ IAoKCXNybUN0bFVzZXJEZWYsCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkgCgkJCQkJ CQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkKCXNybUN0bEdldE9wdGltYWxUcmFuc21p dFNpemUsCSAKCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ CQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQoJc3JtQ3RsU2V0RFRSQXNzZXJ0ZWQsCQkJ IAoJCglzcm1DdGxHZXREVFJBc3NlcnRlZCwJCQkgCgkKCXNybUN0bExBU1QJCQkJCQkJIAoJCn0g U3JtQ3RsRW51bTsKCgoKIAoKCgoKCgoJCgoKCgoKIAogCiAKCnR5cGVkZWYgZW51bSB7CQkJCQkg CglzeXNTZXJpYWxJbnN0YWxsID0gMCwKCXN5c1NlcmlhbE9wZW4sCglzeXNTZXJpYWxPcGVuQmtn bmQsCQoJc3lzU2VyaWFsQ2xvc2UsCglzeXNTZXJpYWxTbGVlcCwKCXN5c1NlcmlhbFdha2UsCglz eXNTZXJpYWxHZXREZXZpY2VDb3VudCwKCXN5c1NlcmlhbEdldERldmljZUluZm8sCglzeXNTZXJp YWxHZXRTdGF0dXMsCglzeXNTZXJpYWxDbGVhckVyciwKCXN5c1NlcmlhbENvbnRyb2wsCglzeXNT ZXJpYWxTZW5kLAoJc3lzU2VyaWFsU2VuZFdhaXQsCglzeXNTZXJpYWxTZW5kQ2hlY2ssCglzeXNT ZXJpYWxTZW5kRmx1c2gsCglzeXNTZXJpYWxSZWNlaXZlLAoJc3lzU2VyaWFsUmVjZWl2ZVdhaXQs CglzeXNTZXJpYWxSZWNlaXZlQ2hlY2ssCglzeXNTZXJpYWxSZWNlaXZlRmx1c2gsCglzeXNTZXJp YWxTZXRSY3ZCdWZmZXIsCglzeXNTZXJpYWxSY3ZXaW5kb3dPcGVuLAoJc3lzU2VyaWFsUmN2V2lu ZG93Q2xvc2UsCglzeXNTZXJpYWxTZXRXYWtldXBIYW5kbGVyLAoJc3lzU2VyaWFsUHJpbWVXYWtl dXBIYW5kbGVyLAoJCgltYXhTZXJpYWxTZWxlY3RvciA9IHN5c1NlcmlhbFByaW1lV2FrZXVwSGFu ZGxlcgkJIAp9IHN5c1NlcmlhbFNlbGVjdG9yOwoJCgojIDM2OSAiLi4vU3JjU2hhcmVkL1BhbG0v UGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9TZXJpYWxNZ3IuaCIKCgoKIyAxMDUgIi4uL1NyY1No YXJlZC9QYWxtLmgiIDIKCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9D b3JlL1N5c3RlbS9TZXJpYWxMaW5rTWdyLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK IAogCiAKCgoKCgoKCiAKIAogCgoKCgoKCgogCiAKIAogCiAKIAogCiAKCiAKIAogCiAKIAoKdHlw ZWRlZglVSW50OAlTbGtQa3RIZWFkZXJDaGVja3N1bTsKCnR5cGVkZWYgc3RydWN0IFNsa1BrdEhl YWRlclR5cGUgewoJVUludDE2CQkJCQlzaWduYXR1cmUxOwkJCQkgCglVSW50OAkJCQkJCXNpZ25h dHVyZTI7CQkJCSAKCVVJbnQ4CQkJCQkJZGVzdDsJCQkJCQkgCglVSW50OAkJCQkJCXNyYzsJCQkJ CQkgCglVSW50OAkJCQkJCXR5cGU7CQkJCQkJIAoJVUludDE2CQkJCQlib2R5U2l6ZTsJCQkJIAoJ VUludDgJCQkJCQl0cmFuc0lkOwkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCglTbGtQa3RIZWFkZXJD aGVja3N1bQljaGVja3N1bTsJCQkJIAoJfSBTbGtQa3RIZWFkZXJUeXBlOwoKdHlwZWRlZiBTbGtQ a3RIZWFkZXJUeXBlKglTbGtQa3RIZWFkZXJQdHI7CgoKCgoKCgoKIAogCiAKdHlwZWRlZiBzdHJ1 Y3QgU2xrUGt0Rm9vdGVyVHlwZSB7CglVSW50MTYJCWNyYzE2OwkJCQkgCgl9IFNsa1BrdEZvb3Rl clR5cGU7Cgp0eXBlZGVmIFNsa1BrdEZvb3RlclR5cGUqCVNsa1BrdEZvb3RlclB0cjsKCgogCiAK IAogCiAKIAogCiAKdHlwZWRlZiBzdHJ1Y3QgU2xrV3JpdGVEYXRhVHlwZSB7CglVSW50MTYJc2l6 ZTsJCQkJCSAKCXZvaWQqCQlkYXRhUDsJCQkJIAoJfSBTbGtXcml0ZURhdGFUeXBlOwp0eXBlZGVm IFNsa1dyaXRlRGF0YVR5cGUqCVNsa1dyaXRlRGF0YVB0cjsKCgoKCiAKIAogCiAKIAoKIAogCiAK CgoKCiMgMTMyICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL1Nl cmlhbExpbmtNZ3IuaCIKCgoKCgoKIyAxNDggIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0lu Y3MvQ29yZS9TeXN0ZW0vU2VyaWFsTGlua01nci5oIgoKCgoKCgoKCgoKCgoKCgoJCgoKCQoKCgkK CgoKCgoKCgoKCgoKCgoKCgoKCiAKIAogCgoKCgoKIyAyMTAgIi4uL1NyY1NoYXJlZC9QYWxtL1Bs YXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vU2VyaWFsTGlua01nci5oIgoKCgoKCgojIDIzMCAiLi4v U3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9TZXJpYWxMaW5rTWdyLmgi CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoK CgoKCgoKCgoKCQkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCQkgCgoKCgogCgoK CnR5cGVkZWYJdm9pZCAoKlNsa1NvY2tldExpc3RlbmVyUHJvY1B0cikKCQkJKFNsa1BrdEhlYWRl clB0ciBoZWFkZXJQLCB2b2lkICpib2R5UCk7CgkJCQp0eXBlZGVmIHN0cnVjdCBTbGtTb2NrZXRM aXN0ZW5UeXBlIHsKCVNsa1NvY2tldExpc3RlbmVyUHJvY1B0ciAJbGlzdGVuZXJQOwoJU2xrUGt0 SGVhZGVyUHRyCQkJCWhlYWRlckJ1ZmZlclA7CQkgCgl2b2lkKgkJCQkJCQkJYm9keUJ1ZmZlclA7 CQkgCglVSW50MzIJCQkJCQkJYm9keUJ1ZmZlclNpemU7Cgl9IFNsa1NvY2tldExpc3RlblR5cGU7 CnR5cGVkZWYgU2xrU29ja2V0TGlzdGVuVHlwZSoJU2xrU29ja2V0TGlzdGVuUHRyOwoKCgogCgoK IyA0MzQgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vU2VyaWFs TGlua01nci5oIgoKCQoJCgojIDEwNiAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKIAogCgkJCiMg MSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9Tb3VuZE1nci5o IiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgoKCgogCgogCgoKCgoKIAoKCgoKIAog CiAKdHlwZWRlZiBlbnVtIFNuZENtZElEVHlwZSB7CgkJCQkJCQkJCQoJc25kQ21kRnJlcUR1cmF0 aW9uQW1wID0gMSwJCSAKCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJ CQkJCQkJCQkKCSAKCSAKCSAKCSAKCSAKCSAKCSAKCSAKCSAKCSAKCXNuZENtZE5vdGVPbiwJCQkJ CQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJIAoJ CQkJCQkJCQkJCSAKCQoJc25kQ21kRnJxT24sCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ CQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkgCgkKCXNuZENtZFF1aWV0 CQkJCQkJCSAKCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCSAKCgl9IFNuZENt ZElEVHlwZTsKCgoJCgogCiAKIAoKdHlwZWRlZiBzdHJ1Y3QgU25kQ29tbWFuZFR5cGUgewogClVJ bnQ4CWNtZDsJCQkJCQkgClVJbnQ4IAkJCXJlc2VydmVkOwpJbnQzMgkJCQlwYXJhbTE7CQkJCQkg ClVJbnQxNgkJCXBhcmFtMjsJCQkJCSAKVUludDE2CQkJcGFyYW0zOwkJCQkJIAp9IFNuZENvbW1h bmRUeXBlOwoKdHlwZWRlZiBTbmRDb21tYW5kVHlwZSoJCVNuZENvbW1hbmRQdHI7CgoKIAogCiAK CnR5cGVkZWYgZW51bSBTbmRTeXNCZWVwVHlwZSB7CglzbmRJbmZvID0gMSwKCXNuZFdhcm5pbmcs CglzbmRFcnJvciwKCXNuZFN0YXJ0VXAsCglzbmRBbGFybSwKCXNuZENvbmZpcm1hdGlvbiwKCXNu ZENsaWNrCgl9IFNuZFN5c0JlZXBUeXBlOwoKCiAKCgoKCiAKIAogCiAKIAogCiAKCnR5cGVkZWYg c3RydWN0IFNuZE1pZGlSZWNIZHJUeXBlIHsKCVVJbnQzMgkJc2lnbmF0dXJlOwkJCQkgCglVSW50 OAkJCWJEYXRhT2Zmc2V0OwkJCSAKCQkJCQkJCQkJCQkJIAoJVUludDgJCQlyZXNlcnZlZDsJCQkJ IAoJfSBTbmRNaWRpUmVjSGRyVHlwZTsKCnR5cGVkZWYgc3RydWN0IFNuZE1pZGlSZWNUeXBlIHsK CVNuZE1pZGlSZWNIZHJUeXBlCQloZHI7CQkJIAoJCQkJCQkJCQkJCQkgCglDaGFyCQkJbmFtZVsy XTsJCQkJCSAKCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCSAKCX0gU25k TWlkaVJlY1R5cGU7CgoKIAp0eXBlZGVmIHN0cnVjdCBTbmRNaWRpTGlzdEl0ZW1UeXBlCgl7CglD aGFyCQkJbmFtZVszMiBdOwkJCSAKCVVJbnQzMgkJdW5pcXVlUmVjSUQ7CglMb2NhbElECQlkYklE OwoJVUludDE2IAkJY2FyZE5vOwoJfSBTbmRNaWRpTGlzdEl0ZW1UeXBlOwoKCiAKdHlwZWRlZiBl bnVtIFNuZFNtZkNtZEVudW0gewoJc25kU21mQ21kUGxheSA9IDEsCQkJCQkgCglzbmRTbWZDbWRE dXJhdGlvbgkJCQkJCSAKCX0gU25kU21mQ21kRW51bTsKCnR5cGVkZWYgdm9pZCBTbmRDb21wbEZ1 bmNUeXBlKHZvaWQgKmNoYW5QLCBVSW50MzIgZHdVc2VyRGF0YSk7CnR5cGVkZWYgU25kQ29tcGxG dW5jVHlwZSAqU25kQ29tcGxGdW5jUHRyOwoKCiAKdHlwZWRlZiBCb29sZWFuIFNuZEJsb2NraW5n RnVuY1R5cGUodm9pZCAqY2hhblAsIFVJbnQzMiBkd1VzZXJEYXRhLCBJbnQzMiBzeXNUaWNrc0F2 YWlsYWJsZSk7CnR5cGVkZWYgU25kQmxvY2tpbmdGdW5jVHlwZSAqU25kQmxvY2tpbmdGdW5jUHRy OwoKdHlwZWRlZiBzdHJ1Y3QgU25kQ2FsbGJhY2tJbmZvVHlwZSB7CglNZW1QdHIJCWZ1bmNQOwkJ CSAKCVVJbnQzMglkd1VzZXJEYXRhOwkJIAoJfSBTbmRDYWxsYmFja0luZm9UeXBlOwoKCnR5cGVk ZWYgc3RydWN0IFNuZFNtZkNhbGxiYWNrc1R5cGUgewoJU25kQ2FsbGJhY2tJbmZvVHlwZQljb21w bGV0aW9uOwkJIAoJU25kQ2FsbGJhY2tJbmZvVHlwZQlibG9ja2luZzsJCSAKCVNuZENhbGxiYWNr SW5mb1R5cGUJcmVzZXJ2ZWQ7CQkgCgl9IFNuZFNtZkNhbGxiYWNrc1R5cGU7CgoKCgp0eXBlZGVm IHN0cnVjdCBTbmRTbWZPcHRpb25zVHlwZSB7CgkgCgkgCglVSW50MzIJZHdTdGFydE1pbGxpU2Vj OwkJCQkgCglVSW50MzIJZHdFbmRNaWxsaVNlYzsJCQkJCSAKCQkJCQkJCQkJCQkJCSAKCQkJCQkJ CQkJCQkJCSAKCQoJIAoJVUludDE2CWFtcGxpdHVkZTsJCQkJCQkgCgkJCQkJCQkJCQkJCQkgCgkJ CQkJCQkJCQkJCQkgCgkKCUJvb2xlYW4JaW50ZXJydXB0aWJsZTsJCQkJCSAKCQkJCQkJCQkJCQkJ CSAKCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQoJVUludDgJCXJl c2VydmVkMTsKCVVJbnQzMglyZXNlcnZlZDsJCQkJCQkgCgl9IFNuZFNtZk9wdGlvbnNUeXBlOwoK CnR5cGVkZWYgc3RydWN0IFNuZFNtZkNoYW5SYW5nZVR5cGUgewoJVUludDgJYkZpcnN0Q2hhbjsJ CQkJCQkJIAoJVUludDgJYkxhc3RDaGFuOwkJCQkJCQkgCgl9IFNuZFNtZkNoYW5SYW5nZVR5cGU7 CgoKCgogCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgojIDMwOCAiLi4vU3JjU2hhcmVkL1BhbG0vUGxh dGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9Tb3VuZE1nci5oIgoKCgoKIAoKCgoKCiMgMTA5ICIuLi9T cmNTaGFyZWQvUGFsbS5oIiAyCgogCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0v SW5jcy9Db3JlL1N5c3RlbS9TeXNFdnRNZ3IuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK CgoKCgoKCiAKCgp0eXBlZGVmIGVudW0KewoJU2V0QXRMZWFzdCwJCSAKCVNldEV4YWN0bHksCQkg CglTZXRBdE1vc3QsCQkgCglTZXREZWZhdWx0LAkJIAoJUmVzZXRUaW1lcgkJIAoJCn0gRXZ0U2V0 QXV0b09mZkNtZDsKCgogCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgUGVuQnRuSW5mb1R5cGUgewoJUmVj dGFuZ2xlVHlwZQlib3VuZHNSOwkJCQkJCSAKCVdDaGFyCQkJCWFzY2lpQ29kZTsJCQkJCSAKCVVJ bnQxNgkJCWtleUNvZGU7CQkJCQkJIAoJVUludDE2CQkJbW9kaWZpZXJzOwkJCQkJIAoJfSBQZW5C dG5JbmZvVHlwZTsKdHlwZWRlZiBQZW5CdG5JbmZvVHlwZSogUGVuQnRuSW5mb1B0cjsKCQp0eXBl ZGVmIHN0cnVjdCBQZW5CdG5MaXN0VHlwZSB7CglVSW50MTYJCQludW1CdXR0b25zOwkJCQkJIAoJ UGVuQnRuSW5mb1R5cGUJYnV0dG9uc1sxXTsJCQkJCSAKCX0gUGVuQnRuTGlzdFR5cGU7CgoKIAoK CgoKIAogCiAKCgoKIAoKCgogCiAKIAp0eXBlZGVmIHN0cnVjdCBTaWxrc2NyZWVuQXJlYVR5cGUg ewoJUmVjdGFuZ2xlVHlwZQkJCWJvdW5kczsKCVVJbnQzMgkJCQkJYXJlYVR5cGU7CSAKCVVJbnQx NgkJCQkJaW5kZXg7Cgl9IFNpbGtzY3JlZW5BcmVhVHlwZTsKCQoKIAoKCiMgMjQxICIuLi9TcmNT aGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL1N5c0V2dE1nci5oIgoKCgogCgoK CgoKCgoKIyAxMTEgIi4uL1NyY1NoYXJlZC9QYWxtLmgiIDIKCgkJCgkJCgkJCiMgMSAiLi4vU3Jj U2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9TeXN0ZW1Qa3QuaCIgMQogCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKIAogCgogCiAKCgogCiAKIAoKCgogCgoKCgogCiAKIAoK IAoKCgoJCgogCnR5cGVkZWYgc3RydWN0IFN5c1BrdEJvZHlUeXBlIHsKCVVJbnQ4CWNvbW1hbmQ7 CVVJbnQ4CV9maWxsZXIgOwoJVUludDgJCQkJZGF0YVsoMjU2ICsxNikgLTJdOwoJfSBTeXNQa3RC b2R5VHlwZTsKdHlwZWRlZiBTeXNQa3RCb2R5VHlwZSoJU3lzUGt0Qm9keVB0cjsKCgoKIAogCiAK IAoKCgoKIAogCiAKCiAKIAogCgoKCiAKIAogCgoKCQkJCQp0eXBlZGVmIHN0cnVjdCBTeXNQa3RS ZWFkTWVtQ21kVHlwZSB7CglVSW50OAljb21tYW5kOwlVSW50OAlfZmlsbGVyIDsJCQkJCQkJCSAK CXZvaWQqCQkJCQlhZGRyZXNzOwkJCQkJCSAKCVVJbnQxNgkJCQkJbnVtQnl0ZXM7CQkJCQkgCgl9 IFN5c1BrdFJlYWRNZW1DbWRUeXBlOwp0eXBlZGVmIFN5c1BrdFJlYWRNZW1DbWRUeXBlKglTeXNQ a3RSZWFkTWVtQ21kUHRyOwoKdHlwZWRlZiBzdHJ1Y3QgU3lzUGt0UmVhZE1lbVJzcFR5cGUgewoJ VUludDgJY29tbWFuZDsJVUludDgJX2ZpbGxlciA7CQkJCQkJCQkgCgkgCgl9IFN5c1BrdFJlYWRN ZW1Sc3BUeXBlOwp0eXBlZGVmIFN5c1BrdFJlYWRNZW1Sc3BUeXBlKglTeXNQa3RSZWFkTWVtUnNw UHRyOwoKCiAKIAogCgoKCnR5cGVkZWYgc3RydWN0IFN5c1BrdFdyaXRlTWVtQ21kVHlwZSB7CglV SW50OAljb21tYW5kOwlVSW50OAlfZmlsbGVyIDsJCQkJCQkJCSAKCXZvaWQqCQkJCQlhZGRyZXNz OwkJCQkJCSAKCVVJbnQxNgkJCQludW1CeXRlczsJCQkJCSAKCSAKCX0gU3lzUGt0V3JpdGVNZW1D bWRUeXBlOwp0eXBlZGVmIFN5c1BrdFdyaXRlTWVtQ21kVHlwZSoJU3lzUGt0V3JpdGVNZW1DbWRQ dHI7Cgp0eXBlZGVmIHN0cnVjdCBTeXNQa3RXcml0ZU1lbVJzcFR5cGUgewoJVUludDgJY29tbWFu ZDsJVUludDgJX2ZpbGxlciA7CQkJCQkJCQkgCgl9IFN5c1BrdFdyaXRlTWVtUnNwVHlwZTsKdHlw ZWRlZiBTeXNQa3RXcml0ZU1lbVJzcFR5cGUqCVN5c1BrdFdyaXRlTWVtUnNwUHRyOwoKCiAKIAog CgogCgogCiAKIAoKCgogCiAKIAoKCgoKIAogCiAKCgoKIAogCiAKCiAKCgogCiAKIAoKCgp0eXBl ZGVmIHN0cnVjdCBTeXNQa3RSUENQYXJhbUluZm8gewoJVUludDggYnlSZWY7CQkJCQkJCSAKCVVJ bnQ4CXNpemU7CQkJCQkJCQkgCglVSW50MTYJZGF0YVsxXTsJCQkJCQkgCgl9IFN5c1BrdFJQQ1Bh cmFtVHlwZTsKCQp0eXBlZGVmIHN0cnVjdCBTeXNQa3RSUENUeXBlIHsKCVVJbnQ4CWNvbW1hbmQ7 CVVJbnQ4CV9maWxsZXIgOwkJCQkJIAoJVUludDE2CXRyYXBXb3JkOwkJCQkJIAoJVUludDMyCXJl c3VsdEQwOwkJCQkJIAoJVUludDMyCXJlc3VsdEEwOwkJCQkJIAoJVUludDE2CW51bVBhcmFtczsJ CQkJCSAKCSAKCVN5c1BrdFJQQ1BhcmFtVHlwZQlwYXJhbVsxXTsKCX0gU3lzUGt0UlBDVHlwZTsK CgogCiAKIAoKCgoKCgogCiAKIAogCiAKCgp0eXBlZGVmIHN0cnVjdCBTeXNQa3RSZW1vdGVVSVVw ZENtZFR5cGUgewoJVUludDgJY29tbWFuZDsJVUludDgJX2ZpbGxlciA7CQkJCQkJCQkgCgogICAK ICAJVUludDE2CXJvd0J5dGVzOwkJCQkJCSAKCVVJbnQxNglmcm9tWTsJCQkJCQkJIAoJVUludDE2 CWZyb21YOwkJCQkJCQkgCglVSW50MTYJdG9ZOwkJCQkJCQkJIAoJVUludDE2CXRvWDsJCQkJCQkJ CSAKCVVJbnQxNgloZWlnaHQ7CQkJCQkJCSAKCVVJbnQxNgl3aWR0aDsJCQkJCQkJIAoJCiAgIAog IAlVSW50MTYJcGl4ZWxzOwkJCQkJCQkgCgkKCX0gU3lzUGt0UmVtb3RlVUlVcGRDbWRUeXBlOwoK CgoKdHlwZWRlZiBzdHJ1Y3QgU3lzUGt0UmVtb3RlRXZ0Q21kVHlwZSB7CglVSW50OAljb21tYW5k OwlVSW50OAlfZmlsbGVyIDsJCQkJCQkgCgogICAKICAgCiAgIEJvb2xlYW4gCXBlbkRvd247CQkJ CQkJCSAKCVVJbnQ4IAlwYWRkaW5nMTsKICAJSW50MTYJCXBlblg7CQkJCQkJCQkgCiAgCUludDE2 CQlwZW5ZOwkJCQkJCQkJIAogIAkKICAJQm9vbGVhbglrZXlQcmVzczsJCQkJCQkgCglVSW50OCAJ cGFkZGluZzI7CiAgCVVJbnQxNglrZXlNb2RpZmllcnM7CQkJCQkgCiAgCVdDaGFyCQlrZXlBc2Np aTsJCQkJCQkgCiAgCVVJbnQxNglrZXlDb2RlOwkJCQkJCQkgCiAgCQoJfSBTeXNQa3RSZW1vdGVF dnRDbWRUeXBlOwoKCiAKIAogCgoKCgogCiAKIAogCiAKIAoKCgoKIAogCiAKCgoKdHlwZWRlZiBz dHJ1Y3QgU3lzUGt0Q29tbUNtZFR5cGUgewoJVUludDgJY29tbWFuZDsJVUludDgJX2ZpbGxlciA7 CQkJCQkJCQkgCglCb29sZWFuCQkJCQkJc2V0OwkJCQkJIAoJVUludDggCQkJCQkJcGFkZGluZzsK CVVJbnQzMgkJCQkJCWJhdWRSYXRlOwkJCSAKCVVJbnQzMgkJCQkJCWZsYWdzOwkJCQkgCgl9IFN5 c1BrdENvbW1DbWRUeXBlOwp0eXBlZGVmIFN5c1BrdENvbW1DbWRUeXBlICpTeXNQa3RDb21tQ21k UHRyOwoKdHlwZWRlZiBzdHJ1Y3QgU3lzUGt0Q29tbVJzcFR5cGUgewoJVUludDgJY29tbWFuZDsJ VUludDgJX2ZpbGxlciA7CQkJCQkJCQkgCglVSW50MzIJCQkJCQliYXVkUmF0ZTsJCQkgCglVSW50 MzIJCQkJCQlmbGFnczsJCQkJIAoJfSBTeXNQa3RDb21tUnNwVHlwZTsKdHlwZWRlZiBTeXNQa3RD b21tUnNwVHlwZSAqU3lzUGt0Q29tbVJzcFB0cjsKCgogCiAKIAoKCgoKCgogCiAKIAogCiAKCgp0 eXBlZGVmIHN0cnVjdCBTeXNQa3RHcmVtbGluc0NtZFR5cGUgewoJVUludDgJY29tbWFuZDsJVUlu dDgJX2ZpbGxlciA7CQkJCQkJCQkgCgogICAKICBVSW50MTYJYWN0aW9uOwogIFVJbnQ4CWRhdGFb MzJdOwoJCgl9IFN5c1BrdEdyZW1saW5zQ21kVHlwZTsKCQogCgoKCgogCiAKIAoKCgp0eXBlZGVm IHN0cnVjdCBTeXNQa3RGaW5kQ21kVHlwZSB7CglVSW50OAljb21tYW5kOwlVSW50OAlfZmlsbGVy IDsJCQkJCQkJCSAKCglVSW50MzIJZmlyc3RBZGRyOwkJCQkJCQkJIAoJVUludDMyCWxhc3RBZGRy OwkJCQkJCQkJIAoJVUludDE2CW51bUJ5dGVzOwkJCQkJCQkJIAoJQm9vbGVhbgljYXNlSW5zZW5z aXRpdmU7CQkJCQkJIAoJVUludDggCXBhZGRpbmc7Cgl9IFN5c1BrdEZpbmRDbWRUeXBlOwp0eXBl ZGVmIFN5c1BrdEZpbmRDbWRUeXBlKgkJCVN5c1BrdEZpbmRDbWRQdHI7Cgp0eXBlZGVmIHN0cnVj dCBTeXNQa3RGaW5kUnNwVHlwZSB7CglVSW50OAljb21tYW5kOwlVSW50OAlfZmlsbGVyIDsJCQkJ CQkJCSAKCiAgVUludDMyCQlhZGRyOwkJCQkJCQkJCQkgCiAgQm9vbGVhbglmb3VuZDsJCQkJCQkJ CQkgCiAgVUludDggCQlwYWRkaW5nOwoJCgl9IFN5c1BrdEZpbmRSc3BUeXBlOwp0eXBlZGVmIFN5 c1BrdEZpbmRSc3BUeXBlKgkJCVN5c1BrdEZpbmRSc3BQdHI7CgoKIAogCiAKIAogCiAKCgoKCgoK IAogCiAKIAoKCgp0eXBlZGVmIHN0cnVjdCBTeXNQa3RDaGVja3N1bVR5cGUgewoJVUludDgJY29t bWFuZDsJVUludDgJX2ZpbGxlciA7CQkJCQkJCQkgCgoJVUludDMyCWZpcnN0QWRkcjsJCQkJCQkJ CSAKCVVJbnQxNgludW1CeXRlczsJCQkJCQkJCSAKCVVJbnQxNglzZWVkOwkJCQkJCQkJCQkgCglV SW50MTYJY2hlY2tzdW07CQkJCQkJCQkgCgl9IFN5c1BrdENoZWNrc3VtVHlwZTsKdHlwZWRlZiBT eXNQa3RDaGVja3N1bVR5cGUqCVN5c1BrdENoZWNrc3VtUHRyOwoKCiAKIAogCiAKIAoKCgoKIAog CiAKCgoKIAogCiAKIAp0eXBlZGVmIHN0cnVjdCBTeXNQa3RSZW1vdGVNc2dDbWRUeXBlIHsKCVVJ bnQ4CWNvbW1hbmQ7CVVJbnQ4CV9maWxsZXIgOwkJCQkJCQkJIAoJIAoJfSBTeXNQa3RSZW1vdGVN c2dDbWRUeXBlOwp0eXBlZGVmIFN5c1BrdFJlbW90ZU1zZ0NtZFR5cGUgKlN5c1BrdFJlbW90ZU1z Z0NtZFB0cjsKCgoKCgogCgoKIyA0MjYgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3Mv Q29yZS9TeXN0ZW0vU3lzdGVtUGt0LmgiCgoKCgoKIyAxMTQgIi4uL1NyY1NoYXJlZC9QYWxtLmgi IDIKCiAKCQkKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVt L1RleHRNZ3IuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKIAoKCgogCiAKdHlwZWRlZiBVSW50OCBDaGFyRW5jb2RpbmdUeXBlOwoK IAogCiAKdHlwZWRlZiBVSW50MTYgVHJhbnNsaXRPcFR5cGU7CgogCgoKCgoKCgogCiAKCgoKCQkJ CQkJCQkJCSAKCiAKIAoKCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQ4CQlpb1NyY1N0YXRlWzMyIF07 CglVSW50OAkJaW9Ec3RTdGF0ZVszMiBdOwp9IFR4dENvbnZlcnRTdGF0ZVR5cGU7CgogCgoKCgoK IAogCiAKCgoKCgogCiAKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAogCiAKIAogCgoKIAoKCiAKCgoK CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKIAogCgoKCiAKIAogCiAKCgoKCgoKIAoKCgojIDQwOSAi Li4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9UZXh0TWdyLmgiCgoK CiMgMTE2ICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgogCiAKCQkKCgkgCgoJCQoKIAogCiAKCQkK IyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvVUkvQ29udHJvbC5oIiAx CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CglVSW50OCB1c2Fi bGUJCQkJOjE7CSAKCVVJbnQ4IGVuYWJsZWQJCQkJOjE7CSAKCVVJbnQ4IHZpc2libGUJCQkJOjE7 CSAKCVVJbnQ4IG9uCQkJCQkJOjE7CSAKCVVJbnQ4IGxlZnRBbmNob3IJCQk6MTsJIAoJICAgICAg ICAgICAgICAgICAgICAgICAgCQkgCiAgIFVJbnQ4IGZyYW1lCQkJCQk6MzsKCVVJbnQ4IGRyYXdu QXNTZWxlY3RlZAk6MTsJIAoJCQkJCQkJCQkJCSAKCVVJbnQ4IGdyYXBoaWNhbAkJCToxOwkgCglV SW50OCB2ZXJ0aWNhbAkJCQk6MTsJIAoJVUludDggcmVzZXJ2ZWQJCQkJOjU7Cn0gQ29udHJvbEF0 dHJUeXBlOwoKCmVudW0gY29udHJvbFN0eWxlcyB7YnV0dG9uQ3RsLCBwdXNoQnV0dG9uQ3RsLCBj aGVja2JveEN0bCwgcG9wdXBUcmlnZ2VyQ3RsLAoJCQkJCQkgIHNlbGVjdG9yVHJpZ2dlckN0bCwg cmVwZWF0aW5nQnV0dG9uQ3RsLCBzbGlkZXJDdGwsCgkJCQkJCSAgZmVlZGJhY2tTbGlkZXJDdGwg fTsKdHlwZWRlZiBlbnVtIGNvbnRyb2xTdHlsZXMgQ29udHJvbFN0eWxlVHlwZTsKCmVudW0gYnV0 dG9uRnJhbWVzIHtub0J1dHRvbkZyYW1lLCBzdGFuZGFyZEJ1dHRvbkZyYW1lLCBib2xkQnV0dG9u RnJhbWUsCgkJCQkJCSByZWN0YW5nbGVCdXR0b25GcmFtZX07CnR5cGVkZWYgZW51bSBidXR0b25G cmFtZXMgQnV0dG9uRnJhbWVUeXBlOwoKCnR5cGVkZWYgc3RydWN0IENvbnRyb2xUeXBlIHsKCVVJ bnQxNgkJCQkJaWQ7CglSZWN0YW5nbGVUeXBlCQkJYm91bmRzOwoJQ2hhciAqCQkJCSAgIHRleHQ7 CQoJQ29udHJvbEF0dHJUeXBlCQlhdHRyOwoJQ29udHJvbFN0eWxlVHlwZQkJc3R5bGU7CglGb250 SUQJCQkJCWZvbnQ7CglVSW50OAkJCQkJCWdyb3VwOwoJVUludDggCQkJCQlyZXNlcnZlZDsKfSBD b250cm9sVHlwZTsKCnR5cGVkZWYgQ29udHJvbFR5cGUgKiBQYWxtX0NvbnRyb2xQdHIgOwkJCQkg CgoKIAogCgp0eXBlZGVmIHN0cnVjdCBHcmFwaGljQ29udHJvbFR5cGUgewoJVUludDE2CQkJCQlp ZDsKCVJlY3RhbmdsZVR5cGUJCQlib3VuZHM7CglEbVJlc0lECQkJCQliaXRtYXBJRDsJCQkgCglE bVJlc0lECQkJCQlzZWxlY3RlZEJpdG1hcElEOwkgCglDb250cm9sQXR0clR5cGUJCWF0dHI7CglD b250cm9sU3R5bGVUeXBlCQlzdHlsZTsKCUZvbnRJRAkJCQkJdW51c2VkOwoJVUludDgJCQkJCQln cm91cDsKCVVJbnQ4IAkJCQkJcmVzZXJ2ZWQ7Cn0gR3JhcGhpY0NvbnRyb2xUeXBlOwoKCiAKIAoK dHlwZWRlZiBzdHJ1Y3QgU2xpZGVyQ29udHJvbFR5cGUgewoJVUludDE2CQkJCQlpZDsKCVJlY3Rh bmdsZVR5cGUJCQlib3VuZHM7CglEbVJlc0lECQkJCQl0aHVtYklEOwkJCSAKCURtUmVzSUQJCQkJ CWJhY2tncm91bmRJRDsJIAoJQ29udHJvbEF0dHJUeXBlCQlhdHRyOwkJCQkgCglDb250cm9sU3R5 bGVUeXBlCQlzdHlsZTsJCQkgCglVSW50OAkJCQkJCXJlc2VydmVkOwkJCglJbnQxNgkJCQkJCW1p blZhbHVlOwoJSW50MTYJCQkJCQltYXhWYWx1ZTsKCUludDE2CQkJCQkJcGFnZVNpemU7CglJbnQx NgkJCQkJCXZhbHVlOwoJTWVtUHRyCQkJCQlhY3RpdmVTbGlkZXJQOwp9IFNsaWRlckNvbnRyb2xU eXBlOwoKCiAKIAogCgoKZXh0ZXJuICJDIiB7CgoKZXh0ZXJuIHZvaWQgQ3RsRHJhd0NvbnRyb2wg KENvbnRyb2xUeXBlICpjb250cm9sUCkKCQkJCQkJCSAgOwoKZXh0ZXJuIHZvaWQgQ3RsRXJhc2VD b250cm9sIChDb250cm9sVHlwZSAqY29udHJvbFApCgkJCQkJCQkgIDsKCmV4dGVybiB2b2lkIEN0 bEhpZGVDb250cm9sIChDb250cm9sVHlwZSAqY29udHJvbFApCgkJCQkJCQkgIDsKCmV4dGVybiB2 b2lkIEN0bFNob3dDb250cm9sIChDb250cm9sVHlwZSAqY29udHJvbFApCgkJCQkJCQkgIDsKCmV4 dGVybiBCb29sZWFuIEN0bEVuYWJsZWQgKGNvbnN0IENvbnRyb2xUeXBlICpjb250cm9sUCkKCQkJ CQkJCSAgOwoKZXh0ZXJuIHZvaWQgQ3RsU2V0RW5hYmxlZCAoQ29udHJvbFR5cGUgKmNvbnRyb2xQ LCBCb29sZWFuIHVzYWJsZSkKCQkJCQkJCSAgOwoKZXh0ZXJuIHZvaWQgQ3RsU2V0VXNhYmxlIChD b250cm9sVHlwZSAqY29udHJvbFAsIEJvb2xlYW4gdXNhYmxlKQoJCQkJCQkJICA7CgpleHRlcm4g SW50MTYgQ3RsR2V0VmFsdWUgKGNvbnN0IENvbnRyb2xUeXBlICpjb250cm9sUCkKCQkJCQkJCSAg OwoKZXh0ZXJuIHZvaWQgQ3RsU2V0VmFsdWUgKENvbnRyb2xUeXBlICpjb250cm9sUCwgSW50MTYg bmV3VmFsdWUpCgkJCQkJCQkgIDsKCmV4dGVybiBjb25zdCBDaGFyICpDdGxHZXRMYWJlbCAoY29u c3QgQ29udHJvbFR5cGUgKmNvbnRyb2xQKQoJCQkJCQkJICA7CgpleHRlcm4gdm9pZCBDdGxTZXRM YWJlbCAoQ29udHJvbFR5cGUgKmNvbnRyb2xQLCBjb25zdCBDaGFyICpuZXdMYWJlbCkKCQkJCQkJ CSAgOwoKZXh0ZXJuIHZvaWQgQ3RsU2V0R3JhcGhpY3MgKENvbnRyb2xUeXBlICpjdGxQLAoJRG1S ZXNJRCBuZXdCaXRtYXBJRCwgRG1SZXNJRCBuZXdTZWxlY3RlZEJpdG1hcElEKQoJCQkJCQkJICA7 CgpleHRlcm4gdm9pZCBDdGxTZXRTbGlkZXJWYWx1ZXMoQ29udHJvbFR5cGUgKmN0bFAsIGNvbnN0 IFVJbnQxNiAqbWluVmFsdWVQLCBjb25zdCBVSW50MTYgKm1heFZhbHVlUCwKCQkJCQljb25zdCBV SW50MTYgKnBhZ2VTaXplUCwgY29uc3QgVUludDE2ICp2YWx1ZVApCgkJCQkJCQkgIDsKCmV4dGVy biB2b2lkIEN0bEdldFNsaWRlclZhbHVlcyhjb25zdCBDb250cm9sVHlwZSAqY3RsUCwgVUludDE2 ICptaW5WYWx1ZVAsIFVJbnQxNiAqbWF4VmFsdWVQLAoJCQkJCVVJbnQxNiAqcGFnZVNpemVQLCBV SW50MTYgKnZhbHVlUCkKCQkJCQkJCSAgOwoKZXh0ZXJuIHZvaWQgQ3RsSGl0Q29udHJvbCAoY29u c3QgQ29udHJvbFR5cGUgKmNvbnRyb2xQKQoJCQkJCQkJICA7CgpleHRlcm4gQm9vbGVhbiBDdGxI YW5kbGVFdmVudCAoQ29udHJvbFR5cGUgKmNvbnRyb2xQLCBFdmVudFR5cGUgKnBFdmVudCkKCQkJ CQkJCSAgOwoKZXh0ZXJuIEJvb2xlYW4gQ3RsVmFsaWRhdGVQb2ludGVyIChjb25zdCBDb250cm9s VHlwZSAqY29udHJvbFApCgkJCQkJCQkgIDsKCmV4dGVybiBDb250cm9sVHlwZSAqQ3RsTmV3Q29u dHJvbCAodm9pZCAqKmZvcm1QUCwgVUludDE2IElELCAKIAlDb250cm9sU3R5bGVUeXBlIHN0eWxl LCBjb25zdCBDaGFyICp0ZXh0UCwgCglDb29yZCB4LCBDb29yZCB5LCBDb29yZCB3aWR0aCwgQ29v cmQgaGVpZ2h0LCAKCUZvbnRJRCBmb250LCBVSW50OCBncm91cCwgQm9vbGVhbiBsZWZ0QW5jaG9y KQoJCQkJCQkJICA7CgpleHRlcm4gR3JhcGhpY0NvbnRyb2xUeXBlICpDdGxOZXdHcmFwaGljQ29u dHJvbCAodm9pZCAqKmZvcm1QUCwgVUludDE2IElELCAKICAgQ29udHJvbFN0eWxlVHlwZSBzdHls ZSwgRG1SZXNJRCBiaXRtYXBJRCwgRG1SZXNJRCBzZWxlY3RlZEJpdG1hcElELCAKICAgQ29vcmQg eCwgQ29vcmQgeSwgQ29vcmQgd2lkdGgsIENvb3JkIGhlaWdodCwgCiAgIFVJbnQ4IGdyb3VwLCBC b29sZWFuIGxlZnRBbmNob3IpCgkJCQkJCQkgIDsKCmV4dGVybiBTbGlkZXJDb250cm9sVHlwZSAq Q3RsTmV3U2xpZGVyQ29udHJvbCAodm9pZCAqKmZvcm1QUCwgVUludDE2IElELCAKICAgQ29udHJv bFN0eWxlVHlwZSBzdHlsZSwgRG1SZXNJRCB0aHVtYklELCBEbVJlc0lEIGJhY2tncm91bmRJRCwg CiAgIENvb3JkIHgsIENvb3JkIHksIENvb3JkIHdpZHRoLCBDb29yZCBoZWlnaHQsIFVJbnQxNiBt aW5WYWx1ZSwgVUludDE2IG1heFZhbHVlLAogICBVSW50MTYgcGFnZVNpemUsIFVJbnQxNiB2YWx1 ZSkKCQkJCQkJCSAgOwoKCn0KCgoKCiMgMTI4ICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgogCgkJ CgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL0ZhdGFsQWxl cnQuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIyA0MSAiLi4vU3JjU2hhcmVkL1Bh bG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL0ZhdGFsQWxlcnQuaCIKCgoKIyAxMzEgIi4uL1NyY1No YXJlZC9QYWxtLmgiIDIKCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9D b3JlL1VJL0ZpZWxkLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgogCmVudW0g anVzdGlmaWNhdGlvbnMge2xlZnRBbGlnbiwgY2VudGVyQWxpZ24sIHJpZ2h0QWxpZ259Owp0eXBl ZGVmIGVudW0ganVzdGlmaWNhdGlvbnMgSnVzdGlmaWNhdGlvblR5cGU7CgoKCgp0eXBlZGVmIGVu dW0geyB1bmRvTm9uZSwgdW5kb1R5cGluZywgdW5kb0JhY2tzcGFjZSwgdW5kb0RlbGV0ZSwKCQkJ CQl1bmRvUGFzdGUsIHVuZG9DdXQsIHVuZG9JbnB1dCB9IFVuZG9Nb2RlOwoKdHlwZWRlZiBzdHJ1 Y3QgewoJVW5kb01vZGUJCW1vZGU7CglVSW50OCAJCXJlc2VydmVkOwoJVUludDE2CQlzdGFydDsK CVVJbnQxNgkJZW5kOwoJVUludDE2CQlidWZmZXJMZW47CglDaGFyIAkJCSpidWZmZXI7Cgl9IEZp ZWxkVW5kb1R5cGU7CgoKdHlwZWRlZiBzdHJ1Y3QgewoJVUludDE2IHVzYWJsZQkJCToxOwkgCglV SW50MTYgdmlzaWJsZQkJCToxOwkgCglVSW50MTYgZWRpdGFibGUJCToxOwkgCglVSW50MTYgc2lu Z2xlTGluZQkJOjE7CSAKCVVJbnQxNiBoYXNGb2N1cyAgICAgIDoxOyAgICAKCVVJbnQxNiBkeW5h bWljU2l6ZQk6MTsgICAgCglVSW50MTYgaW5zUHRWaXNpYmxlCToxOwkgCglVSW50MTYgZGlydHkJ CQk6MTsJIAoJVUludDE2IHVuZGVybGluZWQJCToyOwkgCglVSW50MTYganVzdGlmaWNhdGlvbgk6 MjsJIAoJVUludDE2IGF1dG9TaGlmdAkJOjE7CSAKCVVJbnQxNiBoYXNTY3JvbGxCYXIJOjE7CSAK CVVJbnQxNiBudW1lcmljCQkJOjE7CSAKfSBGaWVsZEF0dHJUeXBlOwoKdHlwZWRlZiBGaWVsZEF0 dHJUeXBlICpGaWVsZEF0dHJQdHI7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgVUludDE2CXN0YXJ0OwkJ CSAKICBVSW50MTYJbGVuZ3RoOwkJCSAKfSBMaW5lSW5mb1R5cGU7Cgp0eXBlZGVmIExpbmVJbmZv VHlwZSAqTGluZUluZm9QdHI7CgoKdHlwZWRlZiBzdHJ1Y3QgRmllbGRUeXBlIHsKCVVJbnQxNgkJ CQlpZDsKCVJlY3RhbmdsZVR5cGUJCXJlY3Q7CglGaWVsZEF0dHJUeXBlCQlhdHRyOwoJQ2hhciAJ CQkJCSp0ZXh0OwkJCQkJIAoJTWVtSGFuZGxlCQkJdGV4dEhhbmRsZTsJCQkJIAoJTGluZUluZm9Q dHIJCQlsaW5lczsKCVVJbnQxNgkJCQl0ZXh0TGVuOwoJVUludDE2CQkJCXRleHRCbG9ja1NpemU7 CglVSW50MTYJCQkJbWF4Q2hhcnM7CglVSW50MTYJCQkJc2VsRmlyc3RQb3M7CglVSW50MTYJCQkJ c2VsTGFzdFBvczsKCVVJbnQxNgkJCQlpbnNQdFhQb3M7CglVSW50MTYJCQkJaW5zUHRZUG9zOwoJ Rm9udElECQkJCWZvbnRJRDsKCVVJbnQ4IAkJCQlyZXNlcnZlZDsKfSBGaWVsZFR5cGU7CgoKdHlw ZWRlZiBGaWVsZFR5cGUgKkZpZWxkUHRyOwkJCQkJIAoKCiAKIAogCgojIDI3MyAiLi4vU3JjU2hh cmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL0ZpZWxkLmgiCgoKCiMgMTMyICIuLi9TcmNT aGFyZWQvUGFsbS5oIiAyCgoJCQojIDEgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3Mv Q29yZS9VSS9GaW5kLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgc3Ry dWN0IHsKCVVJbnQxNgkJCWFwcENhcmRObzsJCQkgCglMb2NhbElECQkJYXBwRGJJRDsJCQkJIAoJ Qm9vbGVhbgkJCWZvdW5kSW5DYWxsZXI7CQkgCglVSW50OCAJCQlyZXNlcnZlZDsKCglVSW50MTYJ CQlkYkNhcmRObzsJCQkgCglMb2NhbElECQkJZGJJRDsJCQkJCSAKCVVJbnQxNiAJCQlyZWNvcmRO dW07CQkJIAoJVUludDE2CQkJbWF0Y2hQb3M7CQkJIAoJVUludDE2CQkJbWF0Y2hGaWVsZE51bTsJ CSAKCVVJbnQzMgkJCW1hdGNoQ3VzdG9tOwkJIAoJfSBGaW5kTWF0Y2hUeXBlOwoKdHlwZWRlZiBG aW5kTWF0Y2hUeXBlICpGaW5kTWF0Y2hQdHI7Cgp0eXBlZGVmIHN0cnVjdCB7CgoJIAoJVUludDE2 CQkJZGJBY2Nlc01vZGU7CQkgCglVSW50MTYgCQkJcmVjb3JkTnVtOwkJCSAKCUJvb2xlYW4JCQlt b3JlOwkJCQkJIAoJQ2hhcgkJCQlzdHJBc1R5cGVkIFsxNiArMV07CSAKCUNoYXIJCQkJc3RyVG9G aW5kIFsxNiArMV07CSAKCVVJbnQ4IAkJCXJlc2VydmVkMTsKCgoJIAoJIAoJIAoJVUludDE2CQkJ bnVtTWF0Y2hlczsJCQkgCglVSW50MTYJCQlsaW5lTnVtYmVyOwkJCSAKCUJvb2xlYW4JCQljb250 aW51YXRpb247CQkgCglCb29sZWFuCQkJc2VhcmNoZWRDYWxsZXI7CSAKCglMb2NhbElECQkJY2Fs bGVyQXBwRGJJRDsJCSAKCVVJbnQxNgkJCWNhbGxlckFwcENhcmRObzsJIAoKCUxvY2FsSUQJCQlh cHBEYklEOwkJCQkgCglVSW50MTYJCQlhcHBDYXJkTm87CQkJIAoJCglCb29sZWFuCQkJbmV3U2Vh cmNoOwkJCSAKCVVJbnQ4IAkJCXJlc2VydmVkMjsKCURtU2VhcmNoU3RhdGVUeXBlCXNlYXJjaFN0 YXRlOwkgCglGaW5kTWF0Y2hUeXBlCW1hdGNoIFs5IF07Cn0gRmluZFBhcmFtc1R5cGU7Cgp0eXBl ZGVmIEZpbmRQYXJhbXNUeXBlICpGaW5kUGFyYW1zUHRyOwoKCiAKdHlwZWRlZiBzdHJ1Y3QgewoJ SW50MTYJCQkJc2VhcmNoU3RyTGVuOwkJIAoJVUludDE2CQkJZGJDYXJkTm87CQkJIAoJTG9jYWxJ RAkJCWRiSUQ7CQkJCQkgCglVSW50MTYgCQkJcmVjb3JkTnVtOwkJCSAKCVVJbnQxNgkJCW1hdGNo UG9zOwkJCSAKCVVJbnQxNgkJCW1hdGNoRmllbGROdW07CQkgCglVSW50MzIJCQltYXRjaEN1c3Rv bTsJCSAKCX0gR29Ub1BhcmFtc1R5cGU7Cgp0eXBlZGVmIEdvVG9QYXJhbXNUeXBlICpHb1RvUGFy YW1zUHRyOwoKCiAKIAogCgojIDEyMiAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9D b3JlL1VJL0ZpbmQuaCIKCgoKIyAxMzMgIi4uL1NyY1NoYXJlZC9QYWxtLmgiIDIKCiAKCQkKIyAx ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvVUkvRm9ybS5oIiAxCiAKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3Mv Q29yZS9VSS9MaXN0LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKIAoKdHlw ZWRlZiBzdHJ1Y3QgewoJVUludDE2IHVzYWJsZQkJCQk6MTsJCSAKCVVJbnQxNiBlbmFibGVkCQkJ CToxOwkJIAoJVUludDE2IHZpc2libGUJCQkJOjE7CQkgCiAgIFVJbnQxNiBwb3BwZWRVcAkJCTox OyAgICAgCSAKCVVJbnQxNiBoYXNTY3JvbGxCYXIJCToxOwkJIAoJVUludDE2IHNlYXJjaAkJCQk6 MTsJCSAKICAgVUludDE2IHJlc2VydmVkCQkJOjI7Cn0gTGlzdEF0dHJUeXBlOwoKCiAKdHlwZWRl ZiB2b2lkIExpc3REcmF3RGF0YUZ1bmNUeXBlIChJbnQxNiBpdGVtTnVtLCBSZWN0YW5nbGVUeXBl ICpib3VuZHMsIAoJQ2hhciAqKml0ZW1zVGV4dCk7CgkKdHlwZWRlZiBMaXN0RHJhd0RhdGFGdW5j VHlwZSAqTGlzdERyYXdEYXRhRnVuY1B0cjsKCgp0eXBlZGVmIHN0cnVjdCBMaXN0VHlwZSB7CglV SW50MTYJCQkJCWlkOwogICBSZWN0YW5nbGVUeXBlCQkJYm91bmRzOwogICBMaXN0QXR0clR5cGUJ CQlhdHRyOwogICBDaGFyICoJCQkJCSppdGVtc1RleHQ7CiAgIEludDE2CQkJCQkJbnVtSXRlbXM7 ICAgICAgICAJCSAKICAgSW50MTYgCSAgCQkJCWN1cnJlbnRJdGVtOyAgICAgCQkgCiAgIEludDE2 ICAgCQkJCQl0b3BJdGVtOyAgICAgICAgIAkJIAogICBGb250SUQgICAgICAgICAgIAkJZm9udDsJ CQkJCQkgCglVSW50OCAJCQkJCXJlc2VydmVkOwoJV2luSGFuZGxlICAgCQkJcG9wdXBXaW47CQkJ CSAKICAgTGlzdERyYXdEYXRhRnVuY1B0cglkcmF3SXRlbXNDYWxsYmFjazsJIAp9IExpc3RUeXBl OwoKdHlwZWRlZiBMaXN0VHlwZSAqIFBhbG1fTGlzdFB0ciA7CgoKIAogCiAKCmV4dGVybiAiQyIg ewoKCmV4dGVybiB2b2lkIExzdERyYXdMaXN0IChMaXN0VHlwZSAqbGlzdFApCgkJCQkJCQkgIDsK CmV4dGVybiB2b2lkIExzdEVyYXNlTGlzdCAoTGlzdFR5cGUgKmxpc3RQKQoJCQkJCQkJICA7Cgpl eHRlcm4gSW50MTYgTHN0R2V0U2VsZWN0aW9uIChjb25zdCBMaXN0VHlwZSAqbGlzdFApCgkJCQkJ CQkgIDsKCmV4dGVybiBDaGFyICogTHN0R2V0U2VsZWN0aW9uVGV4dCAoY29uc3QgTGlzdFR5cGUg Kmxpc3RQLCBJbnQxNiBpdGVtTnVtKQoJCQkJCQkJICA7CgpleHRlcm4gQm9vbGVhbiBMc3RIYW5k bGVFdmVudCAoTGlzdFR5cGUgKmxpc3RQLCBjb25zdCBFdmVudFR5cGUgKmV2ZW50UCkKCQkJCQkJ CSAgOwoKZXh0ZXJuIHZvaWQgTHN0U2V0SGVpZ2h0IChMaXN0VHlwZSAqbGlzdFAsIEludDE2IHZp c2libGVJdGVtcykKCQkJCQkJCSAgOwoKZXh0ZXJuIHZvaWQgTHN0U2V0UG9zaXRpb24gKExpc3RU eXBlICpsaXN0UCwgQ29vcmQgeCwgQ29vcmQgeSkKCQkJCQkJCSAgOwoKZXh0ZXJuIHZvaWQgTHN0 U2V0U2VsZWN0aW9uIChMaXN0VHlwZSAqbGlzdFAsIEludDE2IGl0ZW1OdW0pCgkJCQkJCQkgIDsK CmV4dGVybiB2b2lkIExzdFNldExpc3RDaG9pY2VzIChMaXN0VHlwZSAqbGlzdFAsIENoYXIgKipp dGVtc1RleHQsIEludDE2IG51bUl0ZW1zKQoJCQkJCQkJICA7CgpleHRlcm4gdm9pZCBMc3RTZXRE cmF3RnVuY3Rpb24gKExpc3RUeXBlICpsaXN0UCwgTGlzdERyYXdEYXRhRnVuY1B0ciBmdW5jKQoJ CQkJCQkJICA7CgpleHRlcm4gdm9pZCBMc3RTZXRUb3BJdGVtIChMaXN0VHlwZSAqbGlzdFAsIElu dDE2IGl0ZW1OdW0pCgkJCQkJCQkgIDsKCmV4dGVybiB2b2lkIExzdE1ha2VJdGVtVmlzaWJsZSAo TGlzdFR5cGUgKmxpc3RQLCBJbnQxNiBpdGVtTnVtKQoJCQkJCQkJICA7CgpleHRlcm4gSW50MTYg THN0R2V0TnVtYmVyT2ZJdGVtcyAoY29uc3QgTGlzdFR5cGUgKmxpc3RQKQoJCQkJCQkJICA7Cgpl eHRlcm4gSW50MTYgTHN0UG9wdXBMaXN0IChMaXN0VHlwZSAqbGlzdFApCgkJCQkJCQkgIDsKCmV4 dGVybiBCb29sZWFuIExzdFNjcm9sbExpc3QoTGlzdFR5cGUgKmxpc3RQLCBXaW5EaXJlY3Rpb25U eXBlIGRpcmVjdGlvbiwgSW50MTYgaXRlbUNvdW50KQoJCQkJCQkJICA7CgpleHRlcm4gSW50MTYg THN0R2V0VmlzaWJsZUl0ZW1zIChjb25zdCBMaXN0VHlwZSAqbGlzdFApCgkJCQkJCQkgIDsKCmV4 dGVybiBFcnIgTHN0TmV3TGlzdCAodm9pZCAqKmZvcm1QUCwgVUludDE2IGlkLCAKCUNvb3JkIHgs IENvb3JkIHksIENvb3JkIHdpZHRoLCBDb29yZCBoZWlnaHQsIAoJRm9udElEIGZvbnQsIEludDE2 IHZpc2libGVJdGVtcywgSW50MTYgdHJpZ2dlcklkKQoJCQkJCQkJICA7CgoKCgp9CgoKCiMgMjUg Ii4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9VSS9Gb3JtLmgiIDIKCiMgMSAi Li4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL1Njcm9sbEJhci5oIiAxCiAK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGVudW0geyBzY2xVcEFycm93LCBzY2xEb3du QXJyb3csIHNjbFVwUGFnZSwgc2NsRG93blBhZ2UsIHNjbENhciB9IAoJU2Nyb2xsQmFyUmVnaW9u VHlwZTsKCgp0eXBlZGVmIHN0cnVjdCB7CglVSW50MTYgdXNhYmxlCQkJOjE7CQkgCglVSW50MTYg dmlzaWJsZQkJCToxOwkJIAoJVUludDE2IGhpbGlnaHRlZAkJOjE7CQkgCglVSW50MTYgc2hvd24J CQk6MTsJCSAKCVVJbnQxNiBhY3RpdmVSZWdpb24JOjQ7CQkgCn0gU2Nyb2xsQmFyQXR0clR5cGU7 CgoKdHlwZWRlZiBzdHJ1Y3QgU2Nyb2xsQmFyVHlwZSB7CglSZWN0YW5nbGVUeXBlCQlib3VuZHM7 CglVSW50MTYJCQkJaWQ7CglTY3JvbGxCYXJBdHRyVHlwZQlhdHRyOwoJSW50MTYJCQkJCXZhbHVl OwoJSW50MTYJCQkJCW1pblZhbHVlOwoJSW50MTYJCQkJCW1heFZhbHVlOwoJSW50MTYJCQkJCXBh Z2VTaXplOwoJSW50MTYJCQkJCXBlblBvc0luQ2FyOwoJSW50MTYJCQkJCXNhdmVQb3M7Cn0gU2Ny b2xsQmFyVHlwZTsKCnR5cGVkZWYgU2Nyb2xsQmFyVHlwZSAqU2Nyb2xsQmFyUHRyOwoKIyA3NCAi Li4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL1Njcm9sbEJhci5oIgoKCgoK IyAyNiAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL0Zvcm0uaCIgMgoK IyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvVUkvVGFibGUuaCIgMQog CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKIAoKCgoKCgoKCiAKIAplbnVtIHRhYmxlSXRlbVN0 eWxlcyB7IGNoZWNrYm94VGFibGVJdGVtLCAKICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21U YWJsZUl0ZW0sIAogICAgICAgICAgICAgICAgICAgICAgIGRhdGVUYWJsZUl0ZW0sIAogICAgICAg ICAgICAgICAgICAgICAgIGxhYmVsVGFibGVJdGVtLAogICAgICAgICAgICAgICAgICAgICAgIG51 bWVyaWNUYWJsZUl0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgcG9wdXBUcmlnZ2VyVGFibGVJ dGVtLAogICAgICAgICAgICAgICAgICAgICAgIHRleHRUYWJsZUl0ZW0sCiAgICAgICAgICAgICAg ICAgICAgICAgdGV4dFdpdGhOb3RlVGFibGVJdGVtLAogICAgICAgICAgICAgICAgICAgICAgIHRp bWVUYWJsZUl0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgbmFycm93VGV4dFRhYmxlSXRlbQog ICAgICAgICAgICAgICAgICAgICAgIH07CnR5cGVkZWYgZW51bSB0YWJsZUl0ZW1TdHlsZXMgVGFi bGVJdGVtU3R5bGVUeXBlOwoKCnR5cGVkZWYgc3RydWN0IHsKCVRhYmxlSXRlbVN0eWxlVHlwZQlp dGVtVHlwZTsJCQogICBGb250SUQJCQkJCWZvbnRJRDsJCSAKCUludDE2CQkJCQkJaW50VmFsdWU7 CglDaGFyICogIAkJCQkJcHRyOwp9IFRhYmxlSXRlbVR5cGU7CnR5cGVkZWYgVGFibGVJdGVtVHlw ZSAqVGFibGVJdGVtUHRyOwoKCiAKdHlwZWRlZiB2b2lkIFRhYmxlRHJhd0l0ZW1GdW5jVHlwZSAg CgkJKHZvaWQgKnRhYmxlUCwgSW50MTYgcm93LCBJbnQxNiBjb2x1bW4sIFJlY3RhbmdsZVR5cGUg KmJvdW5kcyk7Cgp0eXBlZGVmIFRhYmxlRHJhd0l0ZW1GdW5jVHlwZSAqVGFibGVEcmF3SXRlbUZ1 bmNQdHI7CgoKIAp0eXBlZGVmIEVyciBUYWJsZUxvYWREYXRhRnVuY1R5cGUgCgkJKHZvaWQgKnRh YmxlUCwgSW50MTYgcm93LCBJbnQxNiBjb2x1bW4sIEJvb2xlYW4gZWRpdGFibGUsIAoJCU1lbUhh bmRsZSAqIGRhdGFILCBJbnQxNiAqZGF0YU9mZnNldCwgSW50MTYgKmRhdGFTaXplLCBGaWVsZFB0 ciBmbGQpOwoKdHlwZWRlZiBUYWJsZUxvYWREYXRhRnVuY1R5cGUgKlRhYmxlTG9hZERhdGFGdW5j UHRyOwoKCiAKdHlwZWRlZglCb29sZWFuIFRhYmxlU2F2ZURhdGFGdW5jVHlwZQoJCSh2b2lkICp0 YWJsZVAsIEludDE2IHJvdywgSW50MTYgY29sdW1uKTsKCnR5cGVkZWYgVGFibGVTYXZlRGF0YUZ1 bmNUeXBlICpUYWJsZVNhdmVEYXRhRnVuY1B0cjsKCnR5cGVkZWYgc3RydWN0IHsKCUNvb3JkCQkJ CQkJCXdpZHRoOwkJCQkJIAoJVUludDE2CQkJCQkJcmVzZXJ2ZWQxIAkJOiA1OwoJVUludDE2CQkJ CQkJbWFza2VkCQkJOiAxOyAgIAoJVUludDE2CQkJCQkJZWRpdEluZGljYXRvcgk6IDE7CglVSW50 MTYJCQkJCQl1c2FibGUgCQkJOiAxOwoJVUludDE2CQkJCQkJcmVzZXJ2ZWQyCQk6IDg7CglDb29y ZAkJCQkJCQlzcGFjaW5nOwkJCQkJIAoJVGFibGVEcmF3SXRlbUZ1bmNQdHIJCWRyYXdDYWxsYmFj azsKCVRhYmxlTG9hZERhdGFGdW5jUHRyCQlsb2FkRGF0YUNhbGxiYWNrOwoJVGFibGVTYXZlRGF0 YUZ1bmNQdHIJCXNhdmVEYXRhQ2FsbGJhY2s7Cgp9IFRhYmxlQ29sdW1uQXR0clR5cGU7CgoKdHlw ZWRlZiBzdHJ1Y3QgewoJVUludDE2CQkJCQkJaWQ7CglDb29yZAkJCQkJCQloZWlnaHQ7CQkJCQkg CglVSW50MzIJCQkJCQlkYXRhOwoKCVVJbnQxNgkJCQkJCXJlc2VydmVkMQkJOiA3OwoJVUludDE2 CQkJCQkJdXNhYmxlCQkJOiAxOwoJVUludDE2CQkJCQkJcmVzZXJ2ZWQyCQk6IDQ7CglVSW50MTYJ CQkJCQltYXNrZWQJCQk6IDE7ICAgCglVSW50MTYJCQkJCQlpbnZhbGlkCQkJOiAxOwkgCglVSW50 MTYgCQkJCQkJc3RhdGljSGVpZ2h0CTogMTsgICAKCVVJbnQxNgkJCQkJCXNlbGVjdGFibGUJCTog MTsKCglVSW50MTYJCQkJCQlyZXNlcnZlZDM7Cgp9IFRhYmxlUm93QXR0clR5cGU7CgoKdHlwZWRl ZiBzdHJ1Y3QgewoJVUludDE2IAkJCQkJCXZpc2libGU6MTsJCQkgCiAgIFVJbnQxNiAJCQkJCQll ZGl0YWJsZToxOwkJCSAKCVVJbnQxNiAJCQkJCQllZGl0aW5nOjE7CQkJIAoJVUludDE2IAkJCQkJ CXNlbGVjdGVkOjE7CQkJIAoJVUludDE2CQkJCQkJaGFzU2Nyb2xsQmFyOjE7CSAKCVVJbnQxNgkJ CQkJCXJlc2VydmVkOjExOwp9IFRhYmxlQXR0clR5cGU7CgoKdHlwZWRlZiBzdHJ1Y3QgVGFibGVU eXBlIHsKCVVJbnQxNgkJCQkJCWlkOwogICBSZWN0YW5nbGVUeXBlCQkJCWJvdW5kczsKICAgVGFi bGVBdHRyVHlwZQkJCQlhdHRyOwoJSW50MTYJCQkJCQkJbnVtQ29sdW1uczsKCUludDE2CQkJCQkJ CW51bVJvd3M7CglJbnQxNgkJCQkJCQljdXJyZW50Um93OwoJSW50MTYJCQkJCQkJY3VycmVudENv bHVtbjsKCUludDE2CQkJCQkJCXRvcFJvdzsKCVRhYmxlQ29sdW1uQXR0clR5cGUgKgljb2x1bW5B dHRyczsKICAgVGFibGVSb3dBdHRyVHlwZSAqICAgIAlyb3dBdHRyczsKCVRhYmxlSXRlbVB0cgkJ CQlpdGVtczsKCUZpZWxkVHlwZQkJCQkJY3VycmVudEZpZWxkOwp9IFRhYmxlVHlwZTsKCnR5cGVk ZWYgVGFibGVUeXBlICpUYWJsZVB0cjsKCgogCiAKIAojIDMxNyAiLi4vU3JjU2hhcmVkL1BhbG0v UGxhdGZvcm0vSW5jcy9Db3JlL1VJL1RhYmxlLmgiCgoKCiMgMjcgIi4uL1NyY1NoYXJlZC9QYWxt L1BsYXRmb3JtL0luY3MvQ29yZS9VSS9Gb3JtLmgiIDIKCgoKCgoKCiAKCgogCgoKCgogCmVudW0g YWxlcnRUeXBlcyB7CglpbmZvcm1hdGlvbkFsZXJ0LAoJY29uZmlybWF0aW9uQWxlcnQsCgl3YXJu aW5nQWxlcnQsCgllcnJvckFsZXJ0IH07CnR5cGVkZWYgZW51bSBhbGVydFR5cGVzIFBhbG1fQWxl cnRUeXBlIDsKCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQxNgkJYWxlcnRUeXBlOwoJVUludDE2CQlo ZWxwUnNjSUQ7CglVSW50MTYJCW51bUJ1dHRvbnM7CglVSW50MTYJCWRlZmF1bHRCdXR0b247Cn0g QWxlcnRUZW1wbGF0ZVR5cGU7CgoKIAplbnVtIGZvcm1PYmplY3RzIHsKCWZybUZpZWxkT2JqLAoJ ZnJtQ29udHJvbE9iaiwKCWZybUxpc3RPYmosCglmcm1UYWJsZU9iaiwKCWZybUJpdG1hcE9iaiwK CWZybUxpbmVPYmosCglmcm1GcmFtZU9iaiwKCWZybVJlY3RhbmdsZU9iaiwKCWZybUxhYmVsT2Jq LAoJZnJtVGl0bGVPYmosCglmcm1Qb3B1cE9iaiwKCWZybUdyYWZmaXRpU3RhdGVPYmosCglmcm1H YWRnZXRPYmosCglmcm1TY3JvbGxCYXJPYmogfTsKdHlwZWRlZiBlbnVtIGZvcm1PYmplY3RzIEZv cm1PYmplY3RLaW5kOwoKCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQxNiB1c2FibGUJCQk6MTsJIAoJ VUludDE2IHJlc2VydmVkCQk6MTU7CSAKfSBGb3JtT2JqQXR0clR5cGU7CgoKIAoKCgoKCgp0eXBl ZGVmIHN0cnVjdCB7CglVSW50MTYgdXNhYmxlCQkJOjE7CSAKCVVJbnQxNiBleHRlbmRlZAkJOjE7 CSAKCVVJbnQxNiB2aXNpYmxlCQkJOjE7CSAKCVVJbnQxNiByZXNlcnZlZAkJOjEzOwkgCn0gRm9y bUdhZGdldEF0dHJUeXBlOwoKc3RydWN0IEZvcm1UeXBlOyAgCnR5cGVkZWYgQm9vbGVhbiAoRm9y bUdhZGdldEhhbmRsZXJUeXBlKSAoc3RydWN0IEZvcm1HYWRnZXRUeXBlICpnYWRnZXRQLCBVSW50 MTYgY21kLCB2b2lkICpwYXJhbVApOwoKc3RydWN0IEZvcm1HYWRnZXRUeXBlIHsKCVVJbnQxNgkJ CQkJCWlkOwoJRm9ybUdhZGdldEF0dHJUeXBlCQlhdHRyOwoJUmVjdGFuZ2xlVHlwZQkJCQlyZWN0 OwoJY29uc3Qgdm9pZCAqCQkJICAgZGF0YTsKCUZvcm1HYWRnZXRIYW5kbGVyVHlwZQkqaGFuZGxl cjsKfTsKdHlwZWRlZiBzdHJ1Y3QgRm9ybUdhZGdldFR5cGUgRm9ybUdhZGdldFR5cGU7CgoKIAoK dHlwZWRlZiBzdHJ1Y3QgewoJRm9ybU9iakF0dHJUeXBlCQkJYXR0cjsKCVBvaW50VHlwZQkJCQkJ cG9zOwoJVUludDE2CQkgICAgIAkJCXJzY0lEOwp9IEZvcm1CaXRtYXBUeXBlOwoKCnR5cGVkZWYg c3RydWN0IHsKCUZvcm1PYmpBdHRyVHlwZQkJCWF0dHI7CglQb2ludFR5cGUJICAgICAgCQlwb2lu dDE7CSAgIAoJUG9pbnRUeXBlCSAgICAgIAkJcG9pbnQyOwkgICAKfSBGb3JtTGluZVR5cGU7CgoK dHlwZWRlZiBzdHJ1Y3QgewoJVUludDE2CQkJCQkJaWQ7CglGb3JtT2JqQXR0clR5cGUJCQlhdHRy OwoJUmVjdGFuZ2xlVHlwZQkJCQlyZWN0OwoJVUludDE2ICAgICAJCQkJCWZyYW1lVHlwZTsKfSBG b3JtRnJhbWVUeXBlOwoKCnR5cGVkZWYgc3RydWN0IHsKCUZvcm1PYmpBdHRyVHlwZQkJCWF0dHI7 CglSZWN0YW5nbGVUeXBlCQkJCXJlY3Q7Cn0gRm9ybVJlY3RhbmdsZVR5cGU7CgoKdHlwZWRlZiBz dHJ1Y3QgewoJVUludDE2CQkJCQkJaWQ7CglQb2ludFR5cGUJCQkJCXBvczsKCUZvcm1PYmpBdHRy VHlwZQkJCWF0dHI7CglGb250SUQJCQkJCQlmb250SUQ7CglVSW50OCAJCQkJCQlyZXNlcnZlZDsK CUNoYXIgKgkJCQkJCXRleHQ7Cn0gRm9ybUxhYmVsVHlwZTsKCgp0eXBlZGVmIHN0cnVjdCB7CglS ZWN0YW5nbGVUeXBlCQkJCXJlY3Q7CglDaGFyICoJCQkJCQl0ZXh0Owp9IEZvcm1UaXRsZVR5cGU7 CgoKdHlwZWRlZiBzdHJ1Y3QgewoJVUludDE2CQkJCQkJY29udHJvbElEOwoJVUludDE2CQkJCQkJ bGlzdElEOwp9IEZvcm1Qb3B1cFR5cGU7CgoKdHlwZWRlZiBzdHJ1Y3QgewoJUG9pbnRUeXBlCQkJ CQlwb3M7Cn0gRnJtR3JhZmZpdGlTdGF0ZVR5cGU7CgoKdHlwZWRlZiB1bmlvbiB7Cgl2b2lkICog ICAgICAgICAgICAJCXB0cjsKCUZpZWxkVHlwZSAqCQkJCQlmaWVsZDsKCUNvbnRyb2xUeXBlICoJ CQkJY29udHJvbDsKCUdyYXBoaWNDb250cm9sVHlwZSAqCQlncmFwaGljQ29udHJvbDsKCVNsaWRl ckNvbnRyb2xUeXBlICoJCXNsaWRlckNvbnRyb2w7CglMaXN0VHlwZQkqCQkJCQlsaXN0OwoJVGFi bGVUeXBlICoJCQkJCXRhYmxlOwoJRm9ybUJpdG1hcFR5cGUgKgkJCWJpdG1hcDsKIAogCiAKCUZv cm1MYWJlbFR5cGUgKgkJCWxhYmVsOwoJRm9ybVRpdGxlVHlwZSAqCQkJdGl0bGU7CQoJRm9ybVBv cHVwVHlwZSAqCQkJcG9wdXA7CglGcm1HcmFmZml0aVN0YXRlVHlwZSAqCWdyZlN0YXRlOwoJRm9y bUdhZGdldFR5cGUgKgkJCWdhZGdldDsKCVNjcm9sbEJhclR5cGUgKgkJCXNjcm9sbEJhcjsKfSBG b3JtT2JqZWN0VHlwZTsKCiAKCgp0eXBlZGVmIHN0cnVjdCB7CglGb3JtT2JqZWN0S2luZAkJCQlv YmplY3RUeXBlOwoJVUludDggCQkJCQkJcmVzZXJ2ZWQ7CglGb3JtT2JqZWN0VHlwZQkJCQlvYmpl Y3Q7Cn0gRm9ybU9iakxpc3RUeXBlOwoKCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQxNiB1c2FibGUJ CQk6MTsJIAoJVUludDE2IGVuYWJsZWQJCQk6MTsJIAoJVUludDE2IHZpc2libGUJCQk6MTsJIAoJ VUludDE2IGRpcnR5CQkJOjE7CSAKCVVJbnQxNiBzYXZlQmVoaW5kCQk6MTsJIAoJVUludDE2IGdy YWZmaXRpU2hpZnQJOjE7ICAgIAoJVUludDE2IGdsb2JhbHNBdmFpbGFibGU6MTsgIAoJCQkJCQkJ CQkJIAoJVUludDE2IGRvaW5nRGlhbG9nCToxOwkgCglVSW50MTYgZXhpdERpYWxvZwkJOjE7CSAK CVVJbnQxNiByZXNlcnZlZAkJOjc7CSAKCVVJbnQxNiByZXNlcnZlZDI7CQkJCSAKfSBGb3JtQXR0 clR5cGU7CgoKdHlwZWRlZiBCb29sZWFuIEZvcm1FdmVudEhhbmRsZXJUeXBlIChFdmVudFR5cGUg KmV2ZW50UCk7Cgp0eXBlZGVmIEZvcm1FdmVudEhhbmRsZXJUeXBlICpGb3JtRXZlbnRIYW5kbGVy UHRyOwoKc3RydWN0IEZvcm1UeXBlIHsKCVdpbmRvd1R5cGUJCQkJCXdpbmRvdzsKCVVJbnQxNgkJ CQkJCWZvcm1JZDsKICAgRm9ybUF0dHJUeXBlCQkJCWF0dHI7CglXaW5IYW5kbGUJICAgICAgIAkJ Yml0c0JlaGluZEZvcm07CglGb3JtRXZlbnRIYW5kbGVyVHlwZSAqCWhhbmRsZXI7CglVSW50MTYJ CQkJCQlmb2N1czsKCVVJbnQxNgkJCQkJCWRlZmF1bHRCdXR0b247CglVSW50MTYJCQkJCQloZWxw UnNjSWQ7CglVSW50MTYJCQkJCQltZW51UnNjSWQ7CglVSW50MTYJCQkJCQludW1PYmplY3RzOwoJ Rm9ybU9iakxpc3RUeXBlICoJCQlvYmplY3RzOwp9OwoKdHlwZWRlZiBzdHJ1Y3QgRm9ybVR5cGUg Rm9ybVR5cGU7CnR5cGVkZWYgRm9ybVR5cGUgKkZvcm1QdHI7CgoKIAogCiAKIAogCnR5cGVkZWYg c3RydWN0IEZvcm1BY3RpdmVTdGF0ZVR5cGUgewoJVUludDE2CWRhdGFbMTFdOwoJfSBGb3JtQWN0 aXZlU3RhdGVUeXBlOwoJCgogCnR5cGVkZWYgQm9vbGVhbiBGb3JtQ2hlY2tSZXNwb25zZUZ1bmNU eXBlIAoJCShJbnQxNiBidXR0b24sIENoYXIgKiBhdHRlbXB0KTsKCnR5cGVkZWYgRm9ybUNoZWNr UmVzcG9uc2VGdW5jVHlwZSAqRm9ybUNoZWNrUmVzcG9uc2VGdW5jUHRyOwoKCiAKIAogCgoKCgoK CgogCiAKIAogCiAKCiMgNTA4ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUv VUkvRm9ybS5oIgoKCgojIDEzNSAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKIAogCgkJCiAKIAoJ CQogCiAKIAogCgkJCiAKIAoJCQogCiAKCQkKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9y bS9JbmNzL0NvcmUvVUkvVUlSZXNvdXJjZXMuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCiAKCgoKIAogCiAKCgoKIAogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAK IAoKCgoJCQkJCQkJCQkJCQkJCQkgCgoKCgoKIAoKIAoKIAogCiAKCgoKCgogCiAKIAoKCgogCiAK IAogCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgogCgoKIAoKCgoKCgoKCgoK CgoKCiAKCgoKIAoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKCgogCgoKCgogCgoKCgoKCgoKCgogCgoK CiAKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCgoKCgogCgoK CgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKIAoKIAoKCgoKCgoKCgoKCiAKIAogCiMgMzIw ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvVUkvVUlSZXNvdXJjZXMuaCIK CgoKIyAxNTIgIi4uL1NyY1NoYXJlZC9QYWxtLmgiIDIKCgogCgoJIAplbnVtIGNsaXBib2FyZEZv cm1hdHMgeyBjbGlwYm9hcmRUZXh0LCBjbGlwYm9hcmRJbmssIGNsaXBib2FyZEJpdG1hcCB9Owp0 eXBlZGVmIGVudW0gY2xpcGJvYXJkRm9ybWF0cyBDbGlwYm9hcmRGb3JtYXRUeXBlOwoKCgoJCgkJ CQkJCQkJIAoJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vQ29yZS9TeXN0ZW0vSW5j c1Bydi9EZWJ1Z1Bydi5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoK CgogCgoKdHlwZWRlZiBzdHJ1Y3QgQnJlYWtwb2ludFR5cGUgewoJTWVtUHRyCQlhZGRyOwkJCQkJ CQkJCSAKCUJvb2xlYW4JZW5hYmxlZDsJCQkJCQkJCSAKCUJvb2xlYW4JaW5zdGFsbGVkOwkJCQkJ CQkgCgl9IEJyZWFrcG9pbnRUeXBlOwoKCgoKCiAKCgogCgogCiAKIAogCiAKIAoKCgp0eXBlZGVm IHN0cnVjdCBTeXNQa3RTdGF0ZUNtZFR5cGUgewoJVUludDgJY29tbWFuZDsJVUludDgJX2ZpbGxl ciA7CQkJCQkJCQkgCgl9IFN5c1BrdFN0YXRlQ21kQ21kVHlwZTsKdHlwZWRlZiBTeXNQa3RTdGF0 ZUNtZENtZFR5cGUqCVN5c1BrdFN0YXRlQ21kQ21kUHRyOwoKCiAKdHlwZWRlZiBzdHJ1Y3QgU3lz UGt0U3RhdGVSc3BUeXBlIHsKCVVJbnQ4CWNvbW1hbmQ7CVVJbnQ4CV9maWxsZXIgOwkJCQkJCQkJ IAoJQm9vbGVhbgkJCQkJCXJlc2V0dGVkOwkJCSAKCVVJbnQ4IAkJCQkJCXJlc2VydmVkMTsKCVVJ bnQxNgkJCQkJCWV4Y2VwdGlvbklkOwkJIAoJCQkJCQkJCQkJCQkJCQkgCglNNjhLUmVnc1R5cGUJ CQkJcmVnOwkJCQkJIAoJVUludDE2CQkJCQkJaW5zdFsxNSBdOwoJCQkJCQkJCQkJCQkJCQkgCgkJ CQkJCQkJCQkJCQkJCSAKCUJyZWFrcG9pbnRUeXBlCQkJCWJwWyg1ICArMSkgXTsJIAoKCXZvaWQJ CQkJCQkJKnN0YXJ0QWRkcjsJCQkgCgl2b2lkCQkJCQkJCSplbmRBZGRyOwkJCSAKCWNoYXIJCQkJ CQkJbmFtZVszMiBdOwoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ CQkJCQkJIAoJVUludDgJCQkJCQkJdHJhcFRhYmxlUmV2OwkJIAoJCQkJCQkJCQkJCQkJCQkgCglV SW50OCAJCQkJCQlyZXNlcnZlZDI7Cgl9IFN5c1BrdFN0YXRlUnNwVHlwZTsKdHlwZWRlZiBTeXNQ a3RTdGF0ZVJzcFR5cGUqCVN5c1BrdFN0YXRlUnNwUHRyOwoKIAogCiAKIAogCiAKIAp0eXBlZGVm IHN0cnVjdCBTeXNQa3RSdG5OYW1lQ21kVHlwZSB7CglVSW50OAljb21tYW5kOwlVSW50OAlfZmls bGVyIDsJCQkJCQkJIAoJdm9pZAkJCQkJCQkqYWRkcmVzczsJCSAKCX0gU3lzUGt0UnRuTmFtZUNt ZFR5cGU7CnR5cGVkZWYgU3lzUGt0UnRuTmFtZUNtZFR5cGUqCVN5c1