From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21730 invoked by alias); 21 Feb 2003 00:46:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 21681 invoked by uid 71); 21 Feb 2003 00:46:00 -0000 Resent-Date: 21 Feb 2003 00:46:00 -0000 Resent-Message-ID: <20030221004600.21680.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, bkhiatt@us.ibm.com Received: (qmail 19034 invoked by uid 48); 21 Feb 2003 00:40:43 -0000 Message-Id: <20030221004043.19033.qmail@sources.redhat.com> Date: Fri, 21 Feb 2003 00:46:00 -0000 From: bkhiatt@us.ibm.com Reply-To: bkhiatt@us.ibm.com To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: bootstrap/9784: gcc 3.2.2 bootstrap on AIX 5.2 fails with GCC 2.9 as compiler X-SW-Source: 2003-02/txt/msg01047.txt.bz2 List-Id: >Number: 9784 >Category: bootstrap >Synopsis: gcc 3.2.2 bootstrap on AIX 5.2 fails with GCC 2.9 as compiler >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Feb 21 00:46:00 UTC 2003 >Closed-Date: >Last-Modified: >Originator: Brian Karl Hiatt >Release: gcc-3.2.2 >Organization: >Environment: IBM AIX 5.2 on SMP PowerPC_POWER3 CPU. 64 bit kernel installed. gcc 2.9 is a 32bit executable. Using GNU Make version 3.79.1 >Description: In directory /usr/local/gcc-obj/gcc Command: ./xgcc -B./ -B/usr/local/powerpc-ibm-aix5.2.0.0/bin/ -isystem /usr/local/powerpc-ibm-aix5.2.0.0/include -isystem /usr/local/powerpc-ibm-aix5.2.0.0/sys-include -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -isystem ./include -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -I. -I. -I../../gcc-3.2.2/gcc -I../../gcc-3.2.2/gcc/. -I../../gcc-3.2.2/gcc/config -I../../gcc-3.2.2/gcc/../include -DL_fixunsdfsi -c ../../gcc-3.2.2/gcc/libgcc2.c -o libgcc/./_fixunsdfsi.o Output: ../../gcc-3.2.2/gcc/libgcc2.c: In function `__fixunsdfsi': ../../gcc-3.2.2/gcc/libgcc2.c:1174: unrecognizable insn: (insn 13 12 14 (set (reg:CCEQ 119) (compare:CCEQ (ior:SI (gt:SI (reg:CCFP 118) (const_int 0 [0x0])) (eq:SI (reg:CCFP 118) (const_int 0 [0x0]))) (const_int 1 [0x1]))) -1 (insn_list 12 (nil)) (expr_list:REG_DEAD (reg:CCFP 118) (nil))) ../../gcc-3.2.2/gcc/libgcc2.c:1174: Internal compiler error in extract_insn, at recog.c:2148 Please submit a full bug report, with preprocessed source if appropriate. See for instructions. make[3]: *** [libgcc/./_fixunsdfsi.o] Error 1 make[3]: Leaving directory `/usr/local/gcc-obj/gcc' make[2]: *** [stmp-multilib] Error 2 make[2]: Leaving directory `/usr/local/gcc-obj/gcc' make[1]: *** [stage1_build] Error 2 make[1]: Leaving directory `/usr/local/gcc-obj/gcc' make: *** [bootstrap] Error 2 # ./xgcc -v Using built-in specs. Configured with: ../gcc-3.2.2/configure Thread model: aix gcc version 3.2.2 GCC Used to make xgcc # gcc -v Reading specs from /usr/bin/../lib/gcc-lib/powerpc-ibm-aix5.1.0.0/2.9-aix51-020209/specs gcc version 2.9-aix51-020209 >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="libgcc2.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="libgcc2.i" IyAxICIuLi8uLi9nY2MtMy4yLjIvZ2NjL2xpYmdjYzIuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEg Ijxjb21tYW5kIGxpbmU+IgojIDEgIi4uLy4uL2djYy0zLjIuMi9nY2MvbGliZ2NjMi5jIgojIDM2 ICIuLi8uLi9nY2MtMy4yLjIvZ2NjL2xpYmdjYzIuYyIKIyAxICJ0Y29uZmlnLmgiIDEKCgoKCgpz dHJ1Y3QgcnR4X2RlZjsKdHlwZWRlZiBzdHJ1Y3QgcnR4X2RlZiAqcnR4OwpzdHJ1Y3QgcnR2ZWNf ZGVmOwp0eXBlZGVmIHN0cnVjdCBydHZlY19kZWYgKnJ0dmVjOwp1bmlvbiB0cmVlX25vZGU7CnR5 cGVkZWYgdW5pb24gdHJlZV9ub2RlICp0cmVlOwoKCiMgMSAiLi4vLi4vZ2NjLTMuMi4yL2luY2x1 ZGUvYW5zaWRlY2wuaCIgMQojIDE1ICJ0Y29uZmlnLmgiIDIKIyAxICIuLi8uLi9nY2MtMy4yLjIv Z2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmgiIDEKIyAxNTQgIi4uLy4uL2djYy0zLjIuMi9nY2Mv Y29uZmlnL3JzNjAwMC9yczYwMDAuaCIKZXh0ZXJuIGludCB0YXJnZXRfZmxhZ3M7CiMgMzgyICIu Li8uLi9nY2MtMy4yLjIvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmgiCmVudW0gcHJvY2Vzc29y X3R5cGUKIHsKICAgUFJPQ0VTU09SX1JJT1MxLAogICBQUk9DRVNTT1JfUklPUzIsCiAgIFBST0NF U1NPUl9SUzY0QSwKICAgUFJPQ0VTU09SX01QQ0NPUkUsCiAgIFBST0NFU1NPUl9QUEM0MDMsCiAg IFBST0NFU1NPUl9QUEM0MDUsCiAgIFBST0NFU1NPUl9QUEM2MDEsCiAgIFBST0NFU1NPUl9QUEM2 MDMsCiAgIFBST0NFU1NPUl9QUEM2MDQsCiAgIFBST0NFU1NPUl9QUEM2MDRlLAogICBQUk9DRVNT T1JfUFBDNjIwLAogICBQUk9DRVNTT1JfUFBDNjMwLAogICBQUk9DRVNTT1JfUFBDNzUwLAogICBQ Uk9DRVNTT1JfUFBDNzQwMCwKICAgUFJPQ0VTU09SX1BQQzc0NTAKfTsKCmV4dGVybiBlbnVtIHBy b2Nlc3Nvcl90eXBlIHJzNjAwMF9jcHU7CiMgNDM3ICIuLi8uLi9nY2MtMy4yLjIvZ2NjL2NvbmZp Zy9yczYwMDAvcnM2MDAwLmgiCnN0cnVjdCByczYwMDBfY3B1X3NlbGVjdAp7CiAgY29uc3QgY2hh ciAqc3RyaW5nOwogIGNvbnN0IGNoYXIgKm5hbWU7CiAgaW50IHNldF90dW5lX3A7CiAgaW50IHNl dF9hcmNoX3A7Cn07CgpleHRlcm4gc3RydWN0IHJzNjAwMF9jcHVfc2VsZWN0IHJzNjAwMF9zZWxl Y3RbXTsKCgpleHRlcm4gY29uc3QgY2hhciAqcnM2MDAwX2RlYnVnX25hbWU7CmV4dGVybiBjb25z dCBjaGFyICpyczYwMDBfYWJpX3N0cmluZzsKZXh0ZXJuIGludCByczYwMDBfZGVidWdfc3RhY2s7 CmV4dGVybiBpbnQgcnM2MDAwX2RlYnVnX2FyZzsKCgoKCgoKZXh0ZXJuIGNvbnN0IGNoYXIgKnJz NjAwMF9sb25nX2RvdWJsZV9zaXplX3N0cmluZzsKZXh0ZXJuIGludCByczYwMDBfbG9uZ19kb3Vi bGVfdHlwZV9zaXplOwpleHRlcm4gaW50IHJzNjAwMF9hbHRpdmVjX2FiaTsKIyAxMDUxICIuLi8u Li9nY2MtMy4yLjIvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmgiCmVudW0gcmVnX2NsYXNzCnsK ICBOT19SRUdTLAogIEJBU0VfUkVHUywKICBHRU5FUkFMX1JFR1MsCiAgRkxPQVRfUkVHUywKICBB TFRJVkVDX1JFR1MsCiAgVlJTQVZFX1JFR1MsCiAgTk9OX1NQRUNJQUxfUkVHUywKICBNUV9SRUdT LAogIExJTktfUkVHUywKICBDVFJfUkVHUywKICBMSU5LX09SX0NUUl9SRUdTLAogIFNQRUNJQUxf UkVHUywKICBTUEVDX09SX0dFTl9SRUdTLAogIENSMF9SRUdTLAogIENSX1JFR1MsCiAgTk9OX0ZM T0FUX1JFR1MsCiAgWEVSX1JFR1MsCiAgQUxMX1JFR1MsCiAgTElNX1JFR19DTEFTU0VTCn07CiMg MTI4OSAiLi4vLi4vZ2NjLTMuMi4yL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5oIgplbnVtIHJz NjAwMF9hYmkgewogIEFCSV9OT05FLAogIEFCSV9BSVgsCiAgQUJJX0FJWF9OT0RFU0MsCgogIEFC SV9WNCwKICBBQklfREFSV0lOCn07CgpleHRlcm4gZW51bSByczYwMDBfYWJpIHJzNjAwMF9jdXJy ZW50X2FiaTsKCgp0eXBlZGVmIHN0cnVjdCByczYwMDBfc3RhY2sgewogIGludCBmaXJzdF9ncF9y ZWdfc2F2ZTsKICBpbnQgZmlyc3RfZnBfcmVnX3NhdmU7CiAgaW50IGZpcnN0X2FsdGl2ZWNfcmVn X3NhdmU7CiAgaW50IGxyX3NhdmVfcDsKICBpbnQgY3Jfc2F2ZV9wOwogIHVuc2lnbmVkIGludCB2 cnNhdmVfbWFzazsKICBpbnQgdG9jX3NhdmVfcDsKICBpbnQgcHVzaF9wOwogIGludCBjYWxsc19w OwogIGVudW0gcnM2MDAwX2FiaSBhYmk7CiAgaW50IGdwX3NhdmVfb2Zmc2V0OwogIGludCBmcF9z YXZlX29mZnNldDsKICBpbnQgYWx0aXZlY19zYXZlX29mZnNldDsKICBpbnQgbHJfc2F2ZV9vZmZz ZXQ7CiAgaW50IGNyX3NhdmVfb2Zmc2V0OwogIGludCB2cnNhdmVfc2F2ZV9vZmZzZXQ7CiAgaW50 IHRvY19zYXZlX29mZnNldDsKICBpbnQgdmFyYXJnc19zYXZlX29mZnNldDsKICBpbnQgZWhyZF9v ZmZzZXQ7CiAgaW50IHJlZ19zaXplOwogIGludCB2YXJhcmdzX3NpemU7CiAgaW50IHZhcnNfc2l6 ZTsKICBpbnQgcGFybV9zaXplOwogIGludCBzYXZlX3NpemU7CiAgaW50IGZpeGVkX3NpemU7CiAg aW50IGdwX3NpemU7CiAgaW50IGZwX3NpemU7CiAgaW50IGFsdGl2ZWNfc2l6ZTsKICBpbnQgY3Jf c2l6ZTsKICBpbnQgbHJfc2l6ZTsKICBpbnQgdnJzYXZlX3NpemU7CiAgaW50IGFsdGl2ZWNfcGFk ZGluZ19zaXplOwoKICBpbnQgdG9jX3NpemU7CiAgaW50IHRvdGFsX3NpemU7Cn0gcnM2MDAwX3N0 YWNrX3Q7CiMgMTU1OSAiLi4vLi4vZ2NjLTMuMi4yL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5o Igp0eXBlZGVmIHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uCnsKCiAgaW50IHN5c3ZfdmFyYXJnc19w OwoKICBpbnQgcmFfbmVlZHNfZnVsbF9mcmFtZTsKfSBtYWNoaW5lX2Z1bmN0aW9uOwojIDE1ODUg Ii4uLy4uL2djYy0zLjIuMi9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuaCIKdHlwZWRlZiBzdHJ1 Y3QgcnM2MDAwX2FyZ3MKewogIGludCB3b3JkczsKICBpbnQgZnJlZ25vOwogIGludCB2cmVnbm87 CiAgaW50IG5hcmdzX3Byb3RvdHlwZTsKICBpbnQgb3JpZ19uYXJnczsKICBpbnQgcHJvdG90eXBl OwogIGludCBjYWxsX2Nvb2tpZTsKICBpbnQgc3lzdl9ncmVnbm87Cn0gQ1VNVUxBVElWRV9BUkdT OwojIDI0MDAgIi4uLy4uL2djYy0zLjIuMi9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuaCIKZXh0 ZXJuIHN0cnVjdCBydHhfZGVmICpyczYwMDBfY29tcGFyZV9vcDAsICpyczYwMDBfY29tcGFyZV9v cDE7CmV4dGVybiBpbnQgcnM2MDAwX2NvbXBhcmVfZnBfcDsKIyAyNDE1ICIuLi8uLi9nY2MtMy4y LjIvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmgiCmV4dGVybiBpbnQgdG9jX2luaXRpYWxpemVk OwojIDI1MTcgIi4uLy4uL2djYy0zLjIuMi9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuaCIKZXh0 ZXJuIGNoYXIgcnM2MDAwX3JlZ19uYW1lc1tdWzhdOwojIDI4MjYgIi4uLy4uL2djYy0zLjIuMi9n Y2MvY29uZmlnL3JzNjAwMC9yczYwMDAuaCIKZXh0ZXJuIGludCBmbGFnX3BpYzsKZXh0ZXJuIGlu dCBvcHRpbWl6ZTsKZXh0ZXJuIGludCBmbGFnX2V4cGVuc2l2ZV9vcHRpbWl6YXRpb25zOwpleHRl cm4gaW50IGZyYW1lX3BvaW50ZXJfbmVlZGVkOwoKZW51bSByczYwMDBfYnVpbHRpbnMKewoKICBB TFRJVkVDX0JVSUxUSU5fU1RfSU5URVJOQUxfNHNpLAogIEFMVElWRUNfQlVJTFRJTl9MRF9JTlRF Uk5BTF80c2ksCiAgQUxUSVZFQ19CVUlMVElOX1NUX0lOVEVSTkFMXzhoaSwKICBBTFRJVkVDX0JV SUxUSU5fTERfSU5URVJOQUxfOGhpLAogIEFMVElWRUNfQlVJTFRJTl9TVF9JTlRFUk5BTF8xNnFp LAogIEFMVElWRUNfQlVJTFRJTl9MRF9JTlRFUk5BTF8xNnFpLAogIEFMVElWRUNfQlVJTFRJTl9T VF9JTlRFUk5BTF80c2YsCiAgQUxUSVZFQ19CVUlMVElOX0xEX0lOVEVSTkFMXzRzZiwKICBBTFRJ VkVDX0JVSUxUSU5fVkFERFVCTSwKICBBTFRJVkVDX0JVSUxUSU5fVkFERFVITSwKICBBTFRJVkVD X0JVSUxUSU5fVkFERFVXTSwKICBBTFRJVkVDX0JVSUxUSU5fVkFEREZQLAogIEFMVElWRUNfQlVJ TFRJTl9WQUREQ1VXLAogIEFMVElWRUNfQlVJTFRJTl9WQUREVUJTLAogIEFMVElWRUNfQlVJTFRJ Tl9WQUREU0JTLAogIEFMVElWRUNfQlVJTFRJTl9WQUREVUhTLAogIEFMVElWRUNfQlVJTFRJTl9W QUREU0hTLAogIEFMVElWRUNfQlVJTFRJTl9WQUREVVdTLAogIEFMVElWRUNfQlVJTFRJTl9WQURE U1dTLAogIEFMVElWRUNfQlVJTFRJTl9WQU5ELAogIEFMVElWRUNfQlVJTFRJTl9WQU5EQywKICBB TFRJVkVDX0JVSUxUSU5fVkFWR1VCLAogIEFMVElWRUNfQlVJTFRJTl9WQVZHU0IsCiAgQUxUSVZF Q19CVUlMVElOX1ZBVkdVSCwKICBBTFRJVkVDX0JVSUxUSU5fVkFWR1NILAogIEFMVElWRUNfQlVJ TFRJTl9WQVZHVVcsCiAgQUxUSVZFQ19CVUlMVElOX1ZBVkdTVywKICBBTFRJVkVDX0JVSUxUSU5f VkNGVVgsCiAgQUxUSVZFQ19CVUlMVElOX1ZDRlNYLAogIEFMVElWRUNfQlVJTFRJTl9WQ1RTWFMs CiAgQUxUSVZFQ19CVUlMVElOX1ZDVFVYUywKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEJGUCwKICBB TFRJVkVDX0JVSUxUSU5fVkNNUEVRVUIsCiAgQUxUSVZFQ19CVUlMVElOX1ZDTVBFUVVILAogIEFM VElWRUNfQlVJTFRJTl9WQ01QRVFVVywKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEVRRlAsCiAgQUxU SVZFQ19CVUlMVElOX1ZDTVBHRUZQLAogIEFMVElWRUNfQlVJTFRJTl9WQ01QR1RVQiwKICBBTFRJ VkVDX0JVSUxUSU5fVkNNUEdUU0IsCiAgQUxUSVZFQ19CVUlMVElOX1ZDTVBHVFVILAogIEFMVElW RUNfQlVJTFRJTl9WQ01QR1RTSCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEdUVVcsCiAgQUxUSVZF Q19CVUlMVElOX1ZDTVBHVFNXLAogIEFMVElWRUNfQlVJTFRJTl9WQ01QR1RGUCwKICBBTFRJVkVD X0JVSUxUSU5fVkVYUFRFRlAsCiAgQUxUSVZFQ19CVUlMVElOX1ZMT0dFRlAsCiAgQUxUSVZFQ19C VUlMVElOX1ZNQURERlAsCiAgQUxUSVZFQ19CVUlMVElOX1ZNQVhVQiwKICBBTFRJVkVDX0JVSUxU SU5fVk1BWFNCLAogIEFMVElWRUNfQlVJTFRJTl9WTUFYVUgsCiAgQUxUSVZFQ19CVUlMVElOX1ZN QVhTSCwKICBBTFRJVkVDX0JVSUxUSU5fVk1BWFVXLAogIEFMVElWRUNfQlVJTFRJTl9WTUFYU1cs CiAgQUxUSVZFQ19CVUlMVElOX1ZNQVhGUCwKICBBTFRJVkVDX0JVSUxUSU5fVk1IQUREU0hTLAog IEFMVElWRUNfQlVJTFRJTl9WTUhSQUREU0hTLAogIEFMVElWRUNfQlVJTFRJTl9WTUxBRERVSE0s CiAgQUxUSVZFQ19CVUlMVElOX1ZNUkdIQiwKICBBTFRJVkVDX0JVSUxUSU5fVk1SR0hILAogIEFM VElWRUNfQlVJTFRJTl9WTVJHSFcsCiAgQUxUSVZFQ19CVUlMVElOX1ZNUkdMQiwKICBBTFRJVkVD X0JVSUxUSU5fVk1SR0xILAogIEFMVElWRUNfQlVJTFRJTl9WTVJHTFcsCiAgQUxUSVZFQ19CVUlM VElOX1ZNU1VNVUJNLAogIEFMVElWRUNfQlVJTFRJTl9WTVNVTU1CTSwKICBBTFRJVkVDX0JVSUxU SU5fVk1TVU1VSE0sCiAgQUxUSVZFQ19CVUlMVElOX1ZNU1VNU0hNLAogIEFMVElWRUNfQlVJTFRJ Tl9WTVNVTVVIUywKICBBTFRJVkVDX0JVSUxUSU5fVk1TVU1TSFMsCiAgQUxUSVZFQ19CVUlMVElO X1ZNSU5VQiwKICBBTFRJVkVDX0JVSUxUSU5fVk1JTlNCLAogIEFMVElWRUNfQlVJTFRJTl9WTUlO VUgsCiAgQUxUSVZFQ19CVUlMVElOX1ZNSU5TSCwKICBBTFRJVkVDX0JVSUxUSU5fVk1JTlVXLAog IEFMVElWRUNfQlVJTFRJTl9WTUlOU1csCiAgQUxUSVZFQ19CVUlMVElOX1ZNSU5GUCwKICBBTFRJ VkVDX0JVSUxUSU5fVk1VTEVVQiwKICBBTFRJVkVDX0JVSUxUSU5fVk1VTEVTQiwKICBBTFRJVkVD X0JVSUxUSU5fVk1VTEVVSCwKICBBTFRJVkVDX0JVSUxUSU5fVk1VTEVTSCwKICBBTFRJVkVDX0JV SUxUSU5fVk1VTE9VQiwKICBBTFRJVkVDX0JVSUxUSU5fVk1VTE9TQiwKICBBTFRJVkVDX0JVSUxU SU5fVk1VTE9VSCwKICBBTFRJVkVDX0JVSUxUSU5fVk1VTE9TSCwKICBBTFRJVkVDX0JVSUxUSU5f Vk5NU1VCRlAsCiAgQUxUSVZFQ19CVUlMVElOX1ZOT1IsCiAgQUxUSVZFQ19CVUlMVElOX1ZPUiwK ICBBTFRJVkVDX0JVSUxUSU5fVlNFTF80U0ksCiAgQUxUSVZFQ19CVUlMVElOX1ZTRUxfNFNGLAog IEFMVElWRUNfQlVJTFRJTl9WU0VMXzhISSwKICBBTFRJVkVDX0JVSUxUSU5fVlNFTF8xNlFJLAog IEFMVElWRUNfQlVJTFRJTl9WUEVSTV80U0ksCiAgQUxUSVZFQ19CVUlMVElOX1ZQRVJNXzRTRiwK ICBBTFRJVkVDX0JVSUxUSU5fVlBFUk1fOEhJLAogIEFMVElWRUNfQlVJTFRJTl9WUEVSTV8xNlFJ LAogIEFMVElWRUNfQlVJTFRJTl9WUEtVSFVNLAogIEFMVElWRUNfQlVJTFRJTl9WUEtVV1VNLAog IEFMVElWRUNfQlVJTFRJTl9WUEtQWCwKICBBTFRJVkVDX0JVSUxUSU5fVlBLVUhTUywKICBBTFRJ VkVDX0JVSUxUSU5fVlBLU0hTUywKICBBTFRJVkVDX0JVSUxUSU5fVlBLVVdTUywKICBBTFRJVkVD X0JVSUxUSU5fVlBLU1dTUywKICBBTFRJVkVDX0JVSUxUSU5fVlBLVUhVUywKICBBTFRJVkVDX0JV SUxUSU5fVlBLU0hVUywKICBBTFRJVkVDX0JVSUxUSU5fVlBLVVdVUywKICBBTFRJVkVDX0JVSUxU SU5fVlBLU1dVUywKICBBTFRJVkVDX0JVSUxUSU5fVlJFRlAsCiAgQUxUSVZFQ19CVUlMVElOX1ZS RklNLAogIEFMVElWRUNfQlVJTFRJTl9WUkZJTiwKICBBTFRJVkVDX0JVSUxUSU5fVlJGSVAsCiAg QUxUSVZFQ19CVUlMVElOX1ZSRklaLAogIEFMVElWRUNfQlVJTFRJTl9WUkxCLAogIEFMVElWRUNf QlVJTFRJTl9WUkxILAogIEFMVElWRUNfQlVJTFRJTl9WUkxXLAogIEFMVElWRUNfQlVJTFRJTl9W UlNRUlRFRlAsCiAgQUxUSVZFQ19CVUlMVElOX1ZTTEIsCiAgQUxUSVZFQ19CVUlMVElOX1ZTTEgs CiAgQUxUSVZFQ19CVUlMVElOX1ZTTFcsCiAgQUxUSVZFQ19CVUlMVElOX1ZTTCwKICBBTFRJVkVD X0JVSUxUSU5fVlNMTywKICBBTFRJVkVDX0JVSUxUSU5fVlNQTFRCLAogIEFMVElWRUNfQlVJTFRJ Tl9WU1BMVEgsCiAgQUxUSVZFQ19CVUlMVElOX1ZTUExUVywKICBBTFRJVkVDX0JVSUxUSU5fVlNQ TFRJU0IsCiAgQUxUSVZFQ19CVUlMVElOX1ZTUExUSVNILAogIEFMVElWRUNfQlVJTFRJTl9WU1BM VElTVywKICBBTFRJVkVDX0JVSUxUSU5fVlNSQiwKICBBTFRJVkVDX0JVSUxUSU5fVlNSSCwKICBB TFRJVkVDX0JVSUxUSU5fVlNSVywKICBBTFRJVkVDX0JVSUxUSU5fVlNSQUIsCiAgQUxUSVZFQ19C VUlMVElOX1ZTUkFILAogIEFMVElWRUNfQlVJTFRJTl9WU1JBVywKICBBTFRJVkVDX0JVSUxUSU5f VlNSLAogIEFMVElWRUNfQlVJTFRJTl9WU1JPLAogIEFMVElWRUNfQlVJTFRJTl9WU1VCVUJNLAog IEFMVElWRUNfQlVJTFRJTl9WU1VCVUhNLAogIEFMVElWRUNfQlVJTFRJTl9WU1VCVVdNLAogIEFM VElWRUNfQlVJTFRJTl9WU1VCRlAsCiAgQUxUSVZFQ19CVUlMVElOX1ZTVUJDVVcsCiAgQUxUSVZF Q19CVUlMVElOX1ZTVUJVQlMsCiAgQUxUSVZFQ19CVUlMVElOX1ZTVUJTQlMsCiAgQUxUSVZFQ19C VUlMVElOX1ZTVUJVSFMsCiAgQUxUSVZFQ19CVUlMVElOX1ZTVUJTSFMsCiAgQUxUSVZFQ19CVUlM VElOX1ZTVUJVV1MsCiAgQUxUSVZFQ19CVUlMVElOX1ZTVUJTV1MsCiAgQUxUSVZFQ19CVUlMVElO X1ZTVU00VUJTLAogIEFMVElWRUNfQlVJTFRJTl9WU1VNNFNCUywKICBBTFRJVkVDX0JVSUxUSU5f VlNVTTRTSFMsCiAgQUxUSVZFQ19CVUlMVElOX1ZTVU0yU1dTLAogIEFMVElWRUNfQlVJTFRJTl9W U1VNU1dTLAogIEFMVElWRUNfQlVJTFRJTl9WWE9SLAogIEFMVElWRUNfQlVJTFRJTl9WU0xET0lf MTZRSSwKICBBTFRJVkVDX0JVSUxUSU5fVlNMRE9JXzhISSwKICBBTFRJVkVDX0JVSUxUSU5fVlNM RE9JXzRTSSwKICBBTFRJVkVDX0JVSUxUSU5fVlNMRE9JXzRTRiwKICBBTFRJVkVDX0JVSUxUSU5f VlVQS0hTQiwKICBBTFRJVkVDX0JVSUxUSU5fVlVQS0hQWCwKICBBTFRJVkVDX0JVSUxUSU5fVlVQ S0hTSCwKICBBTFRJVkVDX0JVSUxUSU5fVlVQS0xTQiwKICBBTFRJVkVDX0JVSUxUSU5fVlVQS0xQ WCwKICBBTFRJVkVDX0JVSUxUSU5fVlVQS0xTSCwKICBBTFRJVkVDX0JVSUxUSU5fTVRWU0NSLAog IEFMVElWRUNfQlVJTFRJTl9NRlZTQ1IsCiAgQUxUSVZFQ19CVUlMVElOX0RTU0FMTCwKICBBTFRJ VkVDX0JVSUxUSU5fRFNTLAogIEFMVElWRUNfQlVJTFRJTl9MVlNMLAogIEFMVElWRUNfQlVJTFRJ Tl9MVlNSLAogIEFMVElWRUNfQlVJTFRJTl9EU1RULAogIEFMVElWRUNfQlVJTFRJTl9EU1RTVCwK ICBBTFRJVkVDX0JVSUxUSU5fRFNUU1RULAogIEFMVElWRUNfQlVJTFRJTl9EU1QsCiAgQUxUSVZF Q19CVUlMVElOX0xWRUJYLAogIEFMVElWRUNfQlVJTFRJTl9MVkVIWCwKICBBTFRJVkVDX0JVSUxU SU5fTFZFV1gsCiAgQUxUSVZFQ19CVUlMVElOX0xWWEwsCiAgQUxUSVZFQ19CVUlMVElOX0xWWCwK ICBBTFRJVkVDX0JVSUxUSU5fU1RWWCwKICBBTFRJVkVDX0JVSUxUSU5fU1RWRUJYLAogIEFMVElW RUNfQlVJTFRJTl9TVFZFSFgsCiAgQUxUSVZFQ19CVUlMVElOX1NUVkVXWCwKICBBTFRJVkVDX0JV SUxUSU5fU1RWWEwsCiAgQUxUSVZFQ19CVUlMVElOX1ZDTVBCRlBfUCwKICBBTFRJVkVDX0JVSUxU SU5fVkNNUEVRRlBfUCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEVRVUJfUCwKICBBTFRJVkVDX0JV SUxUSU5fVkNNUEVRVUhfUCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEVRVVdfUCwKICBBTFRJVkVD X0JVSUxUSU5fVkNNUEdFRlBfUCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEdURlBfUCwKICBBTFRJ VkVDX0JVSUxUSU5fVkNNUEdUU0JfUCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEdUU0hfUCwKICBB TFRJVkVDX0JVSUxUSU5fVkNNUEdUU1dfUCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEdUVUJfUCwK ICBBTFRJVkVDX0JVSUxUSU5fVkNNUEdUVUhfUCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEdUVVdf UCwKICBBTFRJVkVDX0JVSUxUSU5fQUJTU19WNFNJLAogIEFMVElWRUNfQlVJTFRJTl9BQlNTX1Y4 SEksCiAgQUxUSVZFQ19CVUlMVElOX0FCU1NfVjE2UUksCiAgQUxUSVZFQ19CVUlMVElOX0FCU19W NFNJLAogIEFMVElWRUNfQlVJTFRJTl9BQlNfVjRTRiwKICBBTFRJVkVDX0JVSUxUSU5fQUJTX1Y4 SEksCiAgQUxUSVZFQ19CVUlMVElOX0FCU19WMTZRSQp9OwojIDE2ICJ0Y29uZmlnLmgiIDIKIyAx ICIuLi8uLi9nY2MtMy4yLjIvZ2NjL2NvbmZpZy9yczYwMDAvYWl4LmgiIDEKIyAxNyAidGNvbmZp Zy5oIiAyCiMgMSAiLi4vLi4vZ2NjLTMuMi4yL2djYy9jb25maWcvcnM2MDAwL2FpeDUxLmgiIDEK IyAxOCAidGNvbmZpZy5oIiAyCiMgMSAiLi4vLi4vZ2NjLTMuMi4yL2djYy9jb25maWcvcnM2MDAw L3hjb2ZmLmgiIDEKIyAxOSAidGNvbmZpZy5oIiAyCiMgMSAiLi4vLi4vZ2NjLTMuMi4yL2djYy9k ZWZhdWx0cy5oIiAxCiMgMjAgInRjb25maWcuaCIgMgojIDM3ICIuLi8uLi9nY2MtMy4yLjIvZ2Nj L2xpYmdjYzIuYyIgMgojIDEgIi4uLy4uL2djYy0zLjIuMi9nY2MvdHN5c3RlbS5oIiAxCiMgMzcg Ii4uLy4uL2djYy0zLjIuMi9nY2MvdHN5c3RlbS5oIgojIDEgImluY2x1ZGUvc3RkZGVmLmgiIDEg MyA0CiMgMTUxICJpbmNsdWRlL3N0ZGRlZi5oIiAzIDQKdHlwZWRlZiBsb25nIGludCBwdHJkaWZm X3Q7CiMgMjEzICJpbmNsdWRlL3N0ZGRlZi5oIiAzIDQKdHlwZWRlZiBsb25nIHVuc2lnbmVkIGlu dCBzaXplX3Q7CiMgMzI1ICJpbmNsdWRlL3N0ZGRlZi5oIiAzIDQKdHlwZWRlZiBzaG9ydCB1bnNp Z25lZCBpbnQgd2NoYXJfdDsKIyAzOCAiLi4vLi4vZ2NjLTMuMi4yL2djYy90c3lzdGVtLmgiIDIK IyA2MCAiLi4vLi4vZ2NjLTMuMi4yL2djYy90c3lzdGVtLmgiCiMgMSAiaW5jbHVkZS9zdGRhcmcu aCIgMSAzIDQKIyA0MyAiaW5jbHVkZS9zdGRhcmcuaCIgMyA0CnR5cGVkZWYgX19idWlsdGluX3Zh X2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMgMTEwICJpbmNsdWRlL3N0ZGFyZy5oIiAzIDQKdHlwZWRl ZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwojIDYxICIuLi8uLi9nY2MtMy4yLjIvZ2NjL3RzeXN0 ZW0uaCIgMgoKCiMgMSAiaW5jbHVkZS9zdGRpby5oIiAxIDMgNAojIDU3ICJpbmNsdWRlL3N0ZGlv LmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9zdGFuZGFyZHMuaCIgMSAzIDQKIyA1OCAiaW5jbHVk ZS9zdGRpby5oIiAyIDMgNAojIDk2ICJpbmNsdWRlL3N0ZGlvLmgiIDMgNAp0eXBlZGVmIGxvbmcg ZnBvc190OwoKCgp0eXBlZGVmIGxvbmcgbG9uZyBmcG9zNjRfdDsKIyAxNjUgImluY2x1ZGUvc3Rk aW8uaCIgMyA0CnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBjaGFyICpfcHRyOwog ICAgICAgIGludCBfY250OwogICAgICAgIHVuc2lnbmVkIGNoYXIgKl9iYXNlOwogICAgICAgIHVu c2lnbmVkIGNoYXIgKl9idWZlbmRwOwogICAgICAgIHNob3J0IF9mbGFnOwogICAgICAgIHNob3J0 IF9maWxlOwogICAgICAgIGludCBfX3N0ZGlvaWQ7CiAgICAgICAgY2hhciAqX19uZXdiYXNlOwog ICAgICAgIHZvaWQgKl9sb2NrOwp9IEZJTEU7CgoKCgoKZXh0ZXJuIEZJTEUgX2lvYlsxNl07CiMg MTk0ICJpbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gc2l6ZV90IGZyZWFkKHZvaWQgKiwgc2l6 ZV90LCBzaXplX3QsIEZJTEUgKik7CmV4dGVybiBzaXplX3QgZndyaXRlKGNvbnN0IHZvaWQgKiwg c2l6ZV90LCBzaXplX3QsRklMRSAqKTsKCgoKIyAxICIvdXNyL2luY2x1ZGUvdmFfbGlzdC5oIiAx IDMgNAojIDIwMCAiaW5jbHVkZS9zdGRpby5oIiAyIDMgNAoKCgoKCmV4dGVybiBpbnQgdnNjYW5m KGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwpleHRlcm4gaW50IHZmc2NhbmYoRklMRSAq LCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKZXh0ZXJuIGludCB2c3NjYW5mKGNvbnN0 IGNoYXIgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CiMgMjU2ICJpbmNsdWRlL3N0 ZGlvLmgiIDMgNApleHRlcm4gaW50IF9fZmxzYnVmKHVuc2lnbmVkIGNoYXIsIEZJTEUgKik7CmV4 dGVybiBpbnQgX19maWxidWYoRklMRSAqKTsKZXh0ZXJuIGludCBmZXJyb3IoRklMRSAqKTsKZXh0 ZXJuIGludCBmZW9mKEZJTEUgKik7CmV4dGVybiB2b2lkIGNsZWFyZXJyKEZJTEUgKik7CmV4dGVy biBpbnQgcHV0Y2hhcihpbnQpOwpleHRlcm4gaW50IGdldGNoYXIodm9pZCk7CmV4dGVybiBpbnQg cHV0YyhpbnQsIEZJTEUgKik7CmV4dGVybiBpbnQgZ2V0YyhGSUxFICopOwpleHRlcm4gaW50IHJl bW92ZShjb25zdCBjaGFyICopOwpleHRlcm4gaW50IHJlbmFtZShjb25zdCBjaGFyICosIGNvbnN0 IGNoYXIgKik7CmV4dGVybiBGSUxFICp0bXBmaWxlKHZvaWQpOwpleHRlcm4gY2hhciAqdG1wbmFt KGNoYXIgKik7CmV4dGVybiBpbnQgZmNsb3NlKEZJTEUgKik7CmV4dGVybiBpbnQgZmZsdXNoKEZJ TEUgKik7CmV4dGVybiBGSUxFICogZm9wZW4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpl eHRlcm4gRklMRSAqIGZyZW9wZW4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIEZJTEUgKik7 CmV4dGVybiB2b2lkIHNldGJ1ZihGSUxFICosIGNoYXIgKik7CmV4dGVybiBpbnQgc2V0dmJ1ZihG SUxFICosIGNoYXIgKiwgaW50LCBzaXplX3QpOwpleHRlcm4gaW50IGZwcmludGYoRklMRSAqLCBj b25zdCBjaGFyICosIC4uLik7CmV4dGVybiBpbnQgZnNjYW5mKEZJTEUgKiwgY29uc3QgY2hhciAq LCAuLi4pOwpleHRlcm4gaW50IHByaW50Zihjb25zdCBjaGFyICosIC4uLik7CmV4dGVybiBpbnQg c2NhbmYoY29uc3QgY2hhciAqLCAuLi4pOwpleHRlcm4gaW50IHNwcmludGYoY2hhciAqLCBjb25z dCBjaGFyICosIC4uLik7CgpleHRlcm4gaW50IHNucHJpbnRmKGNoYXIgKiwgc2l6ZV90LCBjb25z dCBjaGFyICosIC4uLik7CgpleHRlcm4gaW50IHNzY2FuZihjb25zdCBjaGFyICosIGNvbnN0IGNo YXIgKiwgLi4uKTsKIyAyOTQgImluY2x1ZGUvc3RkaW8uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRl L3ZhX2xpc3QuaCIgMSAzIDQKIyAyOTUgImluY2x1ZGUvc3RkaW8uaCIgMiAzIDQKZXh0ZXJuIGlu dCB2ZnByaW50ZihGSUxFICosIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwpleHRlcm4g aW50IHZwcmludGYoY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmV4dGVybiBpbnQgdnNw cmludGYoY2hhciAqLCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKCmV4dGVybiBpbnQg dnNucHJpbnRmKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsK CgoKZXh0ZXJuIGludCBmZ2V0YyhGSUxFICopOwpleHRlcm4gY2hhciAqIGZnZXRzKGNoYXIgKiwg aW50LCBGSUxFICopOwpleHRlcm4gaW50IGZwdXRjKGludCwgRklMRSAqKTsKZXh0ZXJuIGludCBm cHV0cyhjb25zdCBjaGFyICosIEZJTEUgKik7CmV4dGVybiBjaGFyICpnZXRzKGNoYXIgKik7CmV4 dGVybiBpbnQgcHV0cyhjb25zdCBjaGFyICopOwpleHRlcm4gaW50IHVuZ2V0YyhpbnQsIEZJTEUg Kik7CmV4dGVybiBpbnQgZmdldHBvcyhGSUxFICosIGZwb3NfdCAqKTsKZXh0ZXJuIGludCBmc2Vl ayhGSUxFICosIGxvbmcgaW50LCBpbnQpOwpleHRlcm4gaW50IGZzZXRwb3MoRklMRSAqLCBjb25z dCBmcG9zX3QgKik7CmV4dGVybiBsb25nIGZ0ZWxsKEZJTEUgKik7CmV4dGVybiB2b2lkIHJld2lu ZChGSUxFICopOwpleHRlcm4gdm9pZCBwZXJyb3IoY29uc3QgY2hhciAqKTsKCgoKCgpleHRlcm4g aW50IGdldGNfdW5sb2NrZWQoRklMRSAqKTsKZXh0ZXJuIGludCBnZXRjaGFyX3VubG9ja2VkKHZv aWQpOwpleHRlcm4gaW50IHB1dGNfdW5sb2NrZWQoaW50LCBGSUxFICopOwpleHRlcm4gaW50IHB1 dGNoYXJfdW5sb2NrZWQoaW50KTsKIyA0MTMgImluY2x1ZGUvc3RkaW8uaCIgMyA0CiMgMSAiaW5j bHVkZS9zeXMvdHlwZXMuaCIgMSAzIDQKIyA2NCAiaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CiMg MSAiaW5jbHVkZS9zeXMvaW50dHlwZXMuaCIgMSAzIDQKIyA3MSAiaW5jbHVkZS9zeXMvaW50dHlw ZXMuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGludC5oIiAxIDMgNAojIDQyICIvdXNyL2lu Y2x1ZGUvc3RkaW50LmgiIDMgNAp0eXBlZGVmIHNpZ25lZCBjaGFyIGludDhfdDsKdHlwZWRlZiBz aWduZWQgc2hvcnQgaW50MTZfdDsKdHlwZWRlZiBzaWduZWQgaW50IGludDMyX3Q7CgoKCgp0eXBl ZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50NjRfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVp bnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQg aW50IHVpbnQzMl90OwoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWludDY0X3Q7CiMg NjkgIi91c3IvaW5jbHVkZS9zdGRpbnQuaCIgMyA0CnR5cGVkZWYgaW50NjRfdCBpbnRtYXhfdDsK dHlwZWRlZiB1aW50NjRfdCB1aW50bWF4X3Q7CiMgODEgIi91c3IvaW5jbHVkZS9zdGRpbnQuaCIg MyA0CnR5cGVkZWYgc2lnbmVkIGxvbmcgaW50cHRyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1 aW50cHRyX3Q7CgoKCgoKdHlwZWRlZiBzaWduZWQgY2hhciBpbnRfbGVhc3Q4X3Q7CnR5cGVkZWYg c2lnbmVkIHNob3J0IGludF9sZWFzdDE2X3Q7CnR5cGVkZWYgc2lnbmVkIGludCBpbnRfbGVhc3Qz Ml90OwoKCgoKdHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIGludF9sZWFzdDY0X3Q7CgoKCnR5cGVk ZWYgdW5zaWduZWQgY2hhciB1aW50X2xlYXN0OF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVp bnRfbGVhc3QxNl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X2xlYXN0MzJfdDsKCgoKCnR5 cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVpbnRfbGVhc3Q2NF90OwoKCgoKCgoKdHlwZWRlZiBz aWduZWQgY2hhciBpbnRfZmFzdDhfdDsKdHlwZWRlZiBpbnQzMl90IGludF9mYXN0MTZfdDsKdHlw ZWRlZiBpbnQzMl90IGludF9mYXN0MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnRfZmFz dDhfdDsKdHlwZWRlZiB1aW50MzJfdCB1aW50X2Zhc3QxNl90Owp0eXBlZGVmIHVpbnQzMl90IHVp bnRfZmFzdDMyX3Q7Cgp0eXBlZGVmIGludDY0X3QgaW50X2Zhc3Q2NF90Owp0eXBlZGVmIHVpbnQ2 NF90IHVpbnRfZmFzdDY0X3Q7CiMgNzIgImluY2x1ZGUvc3lzL2ludHR5cGVzLmgiIDIgMyA0CgoK Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50bWF4X3QgcXVvdDsKICAgICAgICBpbnRtYXhf dCByZW07Cn0gaW1heGRpdl90OwojIDEwMCAiaW5jbHVkZS9zeXMvaW50dHlwZXMuaCIgMyA0CmV4 dGVybiBpbnRtYXhfdCBpbWF4YWJzKGludG1heF90KTsKZXh0ZXJuIGltYXhkaXZfdCBpbWF4ZGl2 IChpbnRtYXhfdCwgaW50bWF4X3QpOwpleHRlcm4gaW50bWF4X3QgX3N0cnRvbGxtYXgoY29uc3Qg Y2hhciAqICwgY2hhciAqKiAsIGludCk7CmV4dGVybiB1aW50bWF4X3Qgc3RydG91bWF4KGNvbnN0 IGNoYXIgKiAsIGNoYXIgKiogLCBpbnQpOwojIDExNyAiaW5jbHVkZS9zeXMvaW50dHlwZXMuaCIg MyA0CmV4dGVybiBpbnRtYXhfdCB3Y3N0b2ltYXgoY29uc3Qgd2NoYXJfdCAqICwgd2NoYXJfdCAq KiAsIGludCApOwpleHRlcm4gdWludG1heF90IHdjc3RvdW1heChjb25zdCB3Y2hhcl90ICogLCB3 Y2hhcl90ICoqICwgaW50KTsKIyAxMzQgImluY2x1ZGUvc3lzL2ludHR5cGVzLmgiIDMgNAp0eXBl ZGVmIGludDMyX3QgaW50ZmFzdF90Owp0eXBlZGVmIHVpbnQzMl90IHVpbnRmYXN0X3Q7CiMgNTg0 ICJpbmNsdWRlL3N5cy9pbnR0eXBlcy5oIiAzIDQKdHlwZWRlZiBzaWduZWQgbG9uZyBfX2xvbmcz Ml90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191bG9uZzMyX3Q7CiMgNTk2ICJpbmNsdWRlL3N5 cy9pbnR0eXBlcy5oIiAzIDQKdHlwZWRlZiBzaWduZWQgaW50IF9fbG9uZzY0X3Q7CnR5cGVkZWYg dW5zaWduZWQgaW50IF9fdWxvbmc2NF90OwojIDYwOCAiaW5jbHVkZS9zeXMvaW50dHlwZXMuaCIg MyA0CnR5cGVkZWYgc2lnbmVkIGludCBpbnQzMmxvbmc2NF90Owp0eXBlZGVmIHVuc2lnbmVkIGlu dCB1aW50MzJsb25nNjRfdDsKIyA2MjEgImluY2x1ZGUvc3lzL2ludHR5cGVzLmgiIDMgNAp0eXBl ZGVmIHNpZ25lZCBsb25nIGxvbmczMmludDY0X3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1bG9u ZzMyaW50NjRfdDsKIyA2MzEgImluY2x1ZGUvc3lzL2ludHR5cGVzLmgiIDMgNAp0eXBlZGVmIHNp Z25lZCBjaGFyIGludDg7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludDE2Owp0eXBlZGVmIHNpZ25l ZCBpbnQgaW50MzI7CgoKCgp0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50NjQ7CgoKCnR5cGVk ZWYgdW5zaWduZWQgY2hhciB1X2ludDg7CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1X2ludDhfdDsK dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1X2ludDE2Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVf aW50MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQzMjsKdHlwZWRlZiB1bnNpZ25lZCBp bnQgdV9pbnQzMl90OwoKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVfaW50NjQ7CnR5 cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVfaW50NjRfdDsKIyA2NSAiaW5jbHVkZS9zeXMvdHlw ZXMuaCIgMiAzIDQKIyAxMTkgImluY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHVuc2ln bmVkIGludCB3Y3R5cGVfdDsKIyAxNDUgImluY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVm IGludCB0aW1lX3Q7CgoKCgoKCnR5cGVkZWYgaW50IGNsb2NrX3Q7CiMgMTcwICJpbmNsdWRlL3N5 cy90eXBlcy5oIiAzIDQKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVjaGFyX3Q7CnR5cGVkZWYgdW5z aWduZWQgc2hvcnQgdXNob3J0X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnRfdDsKdHlwZWRl ZiB1bnNpZ25lZCBsb25nIHVsb25nX3Q7CnR5cGVkZWYgc2lnbmVkIGxvbmcgc3NpemVfdDsKCgoK CnR5cGVkZWYgaW50IGxldmVsX3Q7CnR5cGVkZWYgX19sb25nNjRfdCBkYWRkcl90Owp0eXBlZGVm IGludCBkYWRkcjMyX3Q7Cgp0eXBlZGVmIGludDY0X3QgZGFkZHI2NF90OwoKdHlwZWRlZiBjaGFy ICogY2FkZHJfdDsKdHlwZWRlZiBfX3Vsb25nNjRfdCBpbm9fdDsKdHlwZWRlZiB1aW50X3QgaW5v MzJfdDsKCnR5cGVkZWYgdWludDY0X3QgaW5vNjRfdDsKCnR5cGVkZWYgc2hvcnQgY250X3Q7CgoK Cgp0eXBlZGVmIF9fdWxvbmc2NF90IGRldl90OwoKdHlwZWRlZiB1aW50X3QgZGV2MzJfdDsKCnR5 cGVkZWYgdWludDY0X3QgZGV2NjRfdDsKCnR5cGVkZWYgaW50IGNoYW5fdDsKdHlwZWRlZiBpbnQg dGltZTMyX3Q7CnR5cGVkZWYgaW50IHBpZDMyX3Q7CnR5cGVkZWYgaW50IHRpZDMyX3Q7Cgp0eXBl ZGVmIHVpbnQ2NF90IHBpZDY0X3Q7CnR5cGVkZWYgdWludDY0X3QgdGlkNjRfdDsKdHlwZWRlZiB1 aW50NjRfdCB0aW1lNjRfdDsKCgoKCgoKCnR5cGVkZWYgdm9pZCAqIF9fcHRyMzI7CnR5cGVkZWYg Y2hhciAqIF9fY3B0cjMyOwoKCnR5cGVkZWYgaW50IHNvZmZfdDsKCgoKCnR5cGVkZWYgbG9uZyBv ZmZfdDsKCgoKdHlwZWRlZiBsb25nIGxvbmcgb2ZmNjRfdDsKCgp0eXBlZGVmIGxvbmcgcGFkZHJf dDsKdHlwZWRlZiBpbnQzMmxvbmc2NF90IGtleV90Owp0eXBlZGVmIF9fbG9uZzY0X3QgdGltZXJf dDsKdHlwZWRlZiBpbnQgdGltZXIzMl90OwoKdHlwZWRlZiBpbnQ2NF90IHRpbWVyNjRfdDsKCnR5 cGVkZWYgc2hvcnQgbmxpbmtfdDsKdHlwZWRlZiB1aW50X3QgbW9kZV90Owp0eXBlZGVmIHVpbnRf dCB1aWRfdDsKdHlwZWRlZiB1aW50X3QgZ2lkX3Q7CnR5cGVkZWYgX19wdHIzMiBtaWRfdDsKdHlw ZWRlZiBpbnQzMmxvbmc2NF90IHBpZF90Owp0eXBlZGVmIF9fbG9uZzY0X3QgdGlkX3Q7CnR5cGVk ZWYgY2hhciBzbGFiX3RbMTJdOwp0eXBlZGVmIGxvbmcgbXR5cF90Owp0eXBlZGVmIGludCBib29s ZWFuX3Q7CnR5cGVkZWYgaW50IGNyaWRfdDsKCgoKCgp0eXBlZGVmIF9fbG9uZzY0X3QgYmxrY250 X3Q7CgoKCgoKdHlwZWRlZiBfX2xvbmc2NF90IGJsa3NpemVfdDsKCgoKCnR5cGVkZWYgaW50IGJs a2NudDMyX3Q7CnR5cGVkZWYgaW50IGJsa3NpemUzMl90OwoKdHlwZWRlZiB1aW50NjRfdCBibGtj bnQ2NF90Owp0eXBlZGVmIHVpbnQ2NF90IGJsa3NpemU2NF90OwoKCgp0eXBlZGVmIHVsb25nX3Qg ZnNibGtjbnRfdDsKdHlwZWRlZiB1bG9uZ190IGZzZmlsY250X3Q7CgoKCiAgICAgICAgdHlwZWRl ZiBpbnQgd2ludF90OwoKCgp0eXBlZGVmIHVpbnQzMmxvbmc2NF90IGlkX3Q7CnR5cGVkZWYgdW5z aWduZWQgaW50IHVzZWNvbmRzX3Q7CnR5cGVkZWYgc2lnbmVkIGludCBzdXNlY29uZHNfdDsKdHlw ZWRlZiBpbnQgY2xvY2tpZF90OwoKCgoKdHlwZWRlZiBzdHJ1Y3Qgc2lnc2V0X3QgewojIDMwMSAi aW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CiAgICAgICAgdW5zaWduZWQgaW50IGxvc2lnczsKICAg ICAgICB1bnNpZ25lZCBpbnQgaGlzaWdzOwoKCgoKCn0gc2lnc2V0X3Q7Cgp0eXBlZGVmIHN0cnVj dCB7CgogICAgICAgIHVuc2lnbmVkIGludCBsb3NpZ3MsIGhpc2lnczsKCgoKfSBzaWdzZXQzMl90 OwoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1aW50NjRfdCBzc19zZXRbNF07Cn0gc2lnc2V0 NjRfdDsKIyAzMzAgImluY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIGludCBzaWduYWxf dDsKCgoKCnR5cGVkZWYgc3RydWN0IGZzaWRfdCB7CgoKCgogICAgICAgIHVuc2lnbmVkIGludCB2 YWxbMl07CgoKCgp9IGZzaWRfdDsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IGZzaWQ2NF90IHsKCiAg ICAgICAgdWludDY0X3QgdmFsWzJdOwoKCgp9IGZzaWQ2NF90OwoKdHlwZWRlZiB2b2lkICpwdGhy ZWFkX2F0dHJfdDsKdHlwZWRlZiB2b2lkICpwdGhyZWFkX2NvbmRhdHRyX3Q7CnR5cGVkZWYgdm9p ZCAqcHRocmVhZF9tdXRleGF0dHJfdDsKCgp0eXBlZGVmIHZvaWQgKnB0aHJlYWRfcndsb2NrYXR0 cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHB0aHJlYWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBp bnQgcHRocmVhZF9rZXlfdDsKCnR5cGVkZWYgc3RydWN0CnsKCgoKICAgICAgICBpbnQgX19tdF93 b3JkWzEzXTsKCn0KcHRocmVhZF9tdXRleF90OwoKdHlwZWRlZiBzdHJ1Y3QKewoKCgogICAgICAg IGludCBfX2N2X3dvcmRbMTFdOwoKfQpwdGhyZWFkX2NvbmRfdDsKCnR5cGVkZWYgc3RydWN0CnsK CgoKICAgICAgICBpbnQgX19vbl93b3JkWzI4XTsKCn0KcHRocmVhZF9vbmNlX3Q7CgoKdHlwZWRl ZiBzdHJ1Y3QKewoKCgogICAgICAgIGludCBfX3J3X3dvcmRbNTJdOwoKfQpwdGhyZWFkX3J3bG9j a190OwoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfcXVhZCB7IGludCB2YWxbMl07IH0gcXVhZDsKCgoK IyAxICIvdXNyL2luY2x1ZGUvc3lzL21fdHlwZXMuaCIgMSAzIDQKIyA0MCAiL3Vzci9pbmNsdWRl L3N5cy9tX3R5cGVzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9zeXMvdm1fdHlwZXMuaCIgMSAz IDQKIyAzNSAiL3Vzci9pbmNsdWRlL3N5cy92bV90eXBlcy5oIiAzIDQKdHlwZWRlZiBsb25nIHZt aWRfdDsKdHlwZWRlZiB1bG9uZ190IHZtaGFuZGxlX3Q7CgoKCgoKdHlwZWRlZiBpbnQgdm1pZDMy X3Q7CnR5cGVkZWYgdWludF90IHZtaGFuZGxlMzJfdDsKCgoKCgoKCnR5cGVkZWYgbG9uZzMyaW50 NjRfdCBrdm1pZF90Owp0eXBlZGVmIHVsb25nMzJpbnQ2NF90IGt2bWhhbmRsZV90OwojIDYxICIv dXNyL2luY2x1ZGUvc3lzL3ZtX3R5cGVzLmgiIDMgNAp0eXBlZGVmIGxvbmcgbG9uZyB2bWlkNjRf dDsKdHlwZWRlZiBsb25nIGxvbmcgcnBuNjRfdDsKdHlwZWRlZiBsb25nIGxvbmcgY250NjRfdDsK CgoKCgoKdHlwZWRlZiBpbnQzMmxvbmc2NF90IHZtaWR4X3Q7CnR5cGVkZWYgaW50MzJsb25nNjRf dCB2bWtleV90Owp0eXBlZGVmIGludDMybG9uZzY0X3Qgdm1od2tleV90Owp0eXBlZGVmIGludDMy bG9uZzY0X3QgdnBuX3Q7CnR5cGVkZWYgaW50MzJsb25nNjRfdCBycG5fdDsKCnR5cGVkZWYgdW5z aWduZWQgbG9uZyBwdGV4X3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBzd2hhdHhfdDsKCnR5cGVk ZWYgdWludDMybG9uZzY0X3QgZXNpZF90OwoKCgoKdHlwZWRlZiB1c2hvcnRfdCBhcHR4X3Q7CgoK dHlwZWRlZiBpbnQgcGR0eF90OwoKdHlwZWRlZiBpbnQgdW5pZHhfdDsKdHlwZWRlZiBpbnQgc25p ZHhfdDsKdHlwZWRlZiBpbnQgdm1ub2RlaWR4X3Q7Cgp0eXBlZGVmIGludCBrdnBuX3Q7CgogICB0 eXBlZGVmIGludCBrcnBuX3Q7Cgp0eXBlZGVmIGludDMybG9uZzY0X3Qgdm1zaXplX3Q7Cgp0eXBl ZGVmIGludDMybG9uZzY0X3Qgdm1tX2xvY2tfdDsKCgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9u ZyB1cmVnX3Q7CiMgMTI2ICIvdXNyL2luY2x1ZGUvc3lzL3ZtX3R5cGVzLmgiIDMgNAp0eXBlZGVm IHN0cnVjdAoKdm1hZGRyX3QKCnsKCiAgICAgICAgdm1oYW5kbGVfdCBzcnZhbDsKICAgICAgICBj YWRkcl90IG9mZnNldDsKCgoKCn0gdm1hZGRyX3Q7CgoKCnR5cGVkZWYgc3RydWN0CgphZHNwYWNl X3QKCnsKCiAgICAgICAgdWxvbmczMmludDY0X3QgYWxsb2M7CiAgICAgICAgdm1oYW5kbGVfdCBz cnZhbFsxNl07CgoKCgp9IGFkc3BhY2VfdDsKIyAxNzQgIi91c3IvaW5jbHVkZS9zeXMvdm1fdHlw ZXMuaCIgMyA0CnR5cGVkZWYgZW51bSBfTVJfQVRUUl9UWVBFIHsKICBCYWRBdHRyID0gMCwKICBW aXJ0QWRkciA9IDEKfSBNUl9BVFRSX1RZUEU7Cgp0eXBlZGVmIGVudW0gX01SX0xBQkVMX1RZUEUg ewogIEJhZE1lbSA9IDAsCiAgRnJlZU1lbSA9IDEsCiAgSVBMQ0IgPSAyLAogIFJNQUxMT0MgPSAz LAogIFBNX0hFQVAgPSA0LAogIFJUQVNfSEVBUCA9IDUsCiAgVENFX1RBQkxFID0gNiwKICBJT19T UEFDRSA9IDcKfSBNUl9MQUJFTF9UWVBFOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2ln bmVkIGxvbmcgbG9uZyBtcl9hZGRyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtcl9zaXpl OwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXJfYXR0OwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXJf bGFiZWw7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbXJfbm9kZWlkOwogICAgICAgIGNoYXIgcmVz ZXJ2ZWRbNF07Cn0gaXBsY2JfbWFwX3JlZ190OwojIDIzMCAiL3Vzci9pbmNsdWRlL3N5cy92bV90 eXBlcy5oIiAzIDQKdHlwZWRlZiB2bWhhbmRsZV90IHZtbHBnaGFuZGxlX3Q7CiMgNDEgIi91c3Iv aW5jbHVkZS9zeXMvbV90eXBlcy5oIiAyIDMgNAoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgbGFiZWxf dAp7CgogICAgICAgIHN0cnVjdCBsYWJlbF90ICpwcmV2OwogICAgICAgIHVsb25nX3QgaWFyOwog ICAgICAgIHVsb25nX3Qgc3RhY2s7CiAgICAgICAgdWxvbmdfdCB0b2M7CiAgICAgICAgdWxvbmdf dCBjcjsKICAgICAgICB1bG9uZ190IGludHByaTsKICAgICAgICB1bG9uZ190IHJlZ1sxOV07CiMg NjcgIi91c3IvaW5jbHVkZS9zeXMvbV90eXBlcy5oIiAzIDQKfSBsYWJlbF90OwoKdHlwZWRlZiBp bnQzMmxvbmc2NF90IGV4dF90OwojIDQyMyAiaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzIDQKIyA0 NzEgImluY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBf X3B0cjY0Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2NwdHI2NDsKCgoKCgoKdHlwZWRl ZiB1c2hvcnRfdCBVbmlDaGFyOwp0eXBlZGVmIHVpbnRfdCBVVEYzMkNoYXI7CgoKCgp0eXBlZGVm IHVjaGFyX3QgdWNoYXI7CnR5cGVkZWYgdXNob3J0X3QgdXNob3J0Owp0eXBlZGVmIHVpbnRfdCB1 aW50Owp0eXBlZGVmIHVsb25nX3QgdWxvbmc7Cgp0eXBlZGVmIHN0cnVjdCB7IGludCByWzFdOyB9 ICogcGh5c2Fkcl90Owp0eXBlZGVmIHBoeXNhZHJfdCBwaHlzYWRyOwoKCnR5cGVkZWYgdW5zaWdu ZWQgY2hhciB1X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiB1 bnNpZ25lZCBpbnQgdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1X2xvbmc7Cgp0eXBlZGVm IGludCBzd2Jsa190OwoKCgoKc3RydWN0IHNpZ3NldCB7CgoKCiAgICAgICAgdW5zaWduZWQgaW50 IGxvc2lnczsKICAgICAgICB1bnNpZ25lZCBpbnQgaGlzaWdzOwoKfTsKCgpzdHJ1Y3QgZnNpZCB7 CgogICAgICAgIHVuc2lnbmVkIGludCB2YWxbMl07CgoKCn07CiMgNTI5ICJpbmNsdWRlL3N5cy90 eXBlcy5oIiAzIDQKc3RydWN0IGZpbGVpZCB7CiAgICAgICAgdWludF90IGZpZF9sZW47CiAgICAg ICAgaW5vMzJfdCBmaWRfaW5vOwogICAgICAgIHVpbnRfdCBmaWRfZ2VuOwogICAgICAgIGNoYXIg ZmlkX3hbMjAgLSAoc2l6ZW9mKGlubzMyX3QpICsgMikgLSBzaXplb2YodWludF90KV07Cn07CiMg NTUwICJpbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKc3RydWN0IGZpZCB7CiAgICAgICAgdWludF90 IGZpZF9sZW47CiAgICAgICAgY2hhciBmaWRfZGF0YVsyMF07Cn07CnR5cGVkZWYgc3RydWN0IGZp ZCBmaWRfdDsKCgpzdHJ1Y3QgZmhhbmRsZSB7CiAgICAgICAgY2hhciB4WzMyXTsKfTsKdHlwZWRl ZiBzdHJ1Y3QgZmhhbmRsZSBmaGFuZGxlX3Q7CgpzdHJ1Y3QgZmlsZWhhbmRsZSB7CiAgICAgICAg ZnNpZF90IGZoX2ZzaWQ7CiAgICAgICAgc3RydWN0IGZpbGVpZCBmaF9maWQ7Cn07CiMgNTc0ICJp bmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKc3RydWN0IHVuaXF1ZV9pZCB7CiAgICAgICBfX3Vsb25n MzJfdCB3b3JkMTsKICAgICAgIF9fdWxvbmczMl90IHdvcmQyOwogICAgICAgX191bG9uZzMyX3Qg d29yZDM7CiAgICAgICBfX3Vsb25nMzJfdCB3b3JkNDsKfTsKdHlwZWRlZiBzdHJ1Y3QgdW5pcXVl X2lkIHVuaXF1ZV9pZF90OwojIDYwNiAiaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYg bG9uZyBsb25nIG9mZnNldF90OwojIDYxNiAiaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVk ZWYgbG9uZyBsb25nIHNzaXplNjRfdDsKCgoKCgp0eXBlZGVmIGxvbmcgbG9uZyBsb25nbG9uZ190 Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1X2xvbmdsb25nX3Q7CgoKdHlwZWRlZiB1bnNp Z25lZCBpbnQgY2xhc3NfaWRfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZTY0 X3Q7CiMgNDE0ICJpbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CiMgNDI0ICJpbmNsdWRlL3N0ZGlvLmgi IDMgNApleHRlcm4gaW50IGZpbGVubyhGSUxFICopOwpleHRlcm4gRklMRSAqZmRvcGVuKGludCxj b25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqY3Rlcm1pZChjaGFyICopOwoKZXh0ZXJuIHZvaWQg ZmxvY2tmaWxlKEZJTEUgKik7CmV4dGVybiB2b2lkIGZ1bmxvY2tmaWxlKEZJTEUgKik7CmV4dGVy biBpbnQgZnNlZWtvKEZJTEUgKiwgb2ZmX3QsIGludCk7CmV4dGVybiBvZmZfdCBmdGVsbG8oRklM RSAqKTsKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUoRklMRSAqKTsKZXh0ZXJuIHZvaWQgZnVubG9j a2ZpbGUoRklMRSAqKTsKIyA0NDYgImluY2x1ZGUvc3RkaW8uaCIgMyA0CiMgMSAiL3Vzci9pbmNs dWRlL3ZhX2xpc3QuaCIgMSAzIDQKIyA0NDcgImluY2x1ZGUvc3RkaW8uaCIgMiAzIDQKCmV4dGVy biBjaGFyICpvcHRhcmc7CmV4dGVybiBpbnQgb3B0ZXJyOwpleHRlcm4gaW50IG9wdGluZDsKZXh0 ZXJuIGludCBvcHRvcHQ7CiMgNDY0ICJpbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gaW50IGdl dHcoRklMRSAqKTsKZXh0ZXJuIGludCBwdXR3KGludCwgRklMRSAqKTsKZXh0ZXJuIGNoYXIgKnRl bXBuYW0oY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKZXh0ZXJuIEZJTEUgKnBvcGVuKGNvbnN0 IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBwY2xvc2UoRklMRSAqKTsKZXh0ZXJu IGludCBnZXRvcHQoaW50LCBjaGFyICogY29uc3QgW10sIGNvbnN0IGNoYXIqKTsKZXh0ZXJuIGNo YXIgKmN1c2VyaWQoY2hhciAqKTsKIyA0ODAgImluY2x1ZGUvc3RkaW8uaCIgMyA0CiMgMSAiL3Vz ci9pbmNsdWRlL3N5cy9saW1pdHMuaCIgMSAzIDQKIyAyNjMgIi91c3IvaW5jbHVkZS9zeXMvbGlt aXRzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9mbG9hdC5oIiAxIDMgNAojIDIzNSAiL3Vzci9p bmNsdWRlL2Zsb2F0LmgiIDMgNAogICAgICAgIGV4dGVybiB1bnNpZ25lZCBpbnQgU0lORklOSVRZ OwogICAgICAgIGV4dGVybiB1bnNpZ25lZCBpbnQgX0RCTElORlsyXTsKICAgICAgICBleHRlcm4g dW5zaWduZWQgaW50IFNRTkFOOwogICAgICAgIGV4dGVybiB1bnNpZ25lZCBpbnQgRFFOQU5bMl07 CiAgICAgICAgZXh0ZXJuIHVuc2lnbmVkIGludCBTU05BTjsKICAgICAgICBleHRlcm4gdW5zaWdu ZWQgaW50IERTTkFOWzJdOwojIDI2NiAiL3Vzci9pbmNsdWRlL2Zsb2F0LmgiIDMgNAp0eXBlZGVm IHVuc2lnbmVkIHNob3J0IGZwcm5kX3Q7CiMgMjc1ICIvdXNyL2luY2x1ZGUvZmxvYXQuaCIgMyA0 CmZwcm5kX3QgZnBfcmVhZF9ybmQodm9pZCk7CmZwcm5kX3QgZnBfc3dhcF9ybmQoZnBybmRfdCBy bmQpOwojIDI2NCAiL3Vzci9pbmNsdWRlL3N5cy9saW1pdHMuaCIgMiAzIDQKIyA0ODEgImluY2x1 ZGUvc3RkaW8uaCIgMiAzIDQKCgoKZXh0ZXJuIGludCBmZ2V0cG9zNjQoRklMRSAqLCBmcG9zNjRf dCAqKTsKZXh0ZXJuIEZJTEUgKmZvcGVuNjQoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpl eHRlcm4gRklMRSAqZnJlb3BlbjY0KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBGSUxFICop OwpleHRlcm4gaW50IGZzZWVrbzY0KEZJTEUgKiwgb2ZmNjRfdCwgaW50KTsKZXh0ZXJuIGludCBm c2V0cG9zNjQoRklMRSAqLCBjb25zdCBmcG9zNjRfdCAqKTsKZXh0ZXJuIG9mZjY0X3QgZnRlbGxv NjQoRklMRSAqKTsKCgoKCgoKZXh0ZXJuIHZvaWQgc2V0YnVmZmVyKEZJTEUgKiwgY2hhciAqLCBz aXplX3QpOwpleHRlcm4gdm9pZCBzZXRsaW5lYnVmKEZJTEUgKik7CiMgNjQgIi4uLy4uL2djYy0z LjIuMi9nY2MvdHN5c3RlbS5oIiAyCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMSAz IDQKIyA2MiAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDMgNApleHRlcm4gaW50IGVycm5vOwoKCgoK CgoKZXh0ZXJuIGNoYXIgKnN5c19lcnJsaXN0W107CmV4dGVybiBpbnQgc3lzX25lcnI7CiMgNzAg Ii4uLy4uL2djYy0zLjIuMi9nY2MvdHN5c3RlbS5oIiAyCgoKZXh0ZXJuIGludCBlcnJubzsKCgoK IyAxICJpbmNsdWRlL3N0cmluZy5oIiAxIDMgNAojIDEwNCAiaW5jbHVkZS9zdHJpbmcuaCIgMyA0 CiAgICAgICAgZXh0ZXJuIHZvaWQgKm1lbWNocihjb25zdCB2b2lkICosIGludCwgc2l6ZV90KTsK CiAgICAgICAgZXh0ZXJuIHZvaWQgKm1lbWNweSh2b2lkICogLCBjb25zdCB2b2lkICogLCBzaXpl X3QpOwogICAgICAgIGV4dGVybiB2b2lkICptZW1zZXQodm9pZCAqLCBpbnQsIHNpemVfdCk7CiAg ICAgICAgZXh0ZXJuIHNpemVfdCBzdHJjc3BuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsK ICAgICAgICBleHRlcm4gc2l6ZV90IHN0cmxlbihjb25zdCBjaGFyICopOwogICAgICAgIGV4dGVy biBzaXplX3Qgc3Ryc3BuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKIyAxNDcgImluY2x1 ZGUvc3RyaW5nLmgiIDMgNAogICAgICAgIGV4dGVybiBjaGFyICpzdHJjaHIoY29uc3QgY2hhciAq LCBpbnQpOwogICAgICAgIGV4dGVybiBjaGFyICpzdHJwYnJrKGNvbnN0IGNoYXIgKiwgY29uc3Qg Y2hhciAqKTsKICAgICAgICBleHRlcm4gY2hhciAqc3RycmNocihjb25zdCBjaGFyICosIGludCk7 CiAgICAgICAgZXh0ZXJuIGNoYXIgKnN0cnN0cihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7 CgoKICAgICAgICBleHRlcm4gdm9pZCAqbWVtbW92ZSh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6 ZV90KTsKICAgICAgICBleHRlcm4gY2hhciAqc3RyY3B5KGNoYXIgKiAsIGNvbnN0IGNoYXIgKiAp OwogICAgICAgIGV4dGVybiBjaGFyICpzdHJuY3B5KGNoYXIgKiAsIGNvbnN0IGNoYXIgKiAsIHNp emVfdCk7CiAgICAgICAgZXh0ZXJuIGNoYXIgKnN0cmNhdChjaGFyICogLCBjb25zdCBjaGFyICog KTsKICAgICAgICBleHRlcm4gY2hhciAqc3RybmNhdChjaGFyICogLCBjb25zdCBjaGFyICogLCBz aXplX3QpOwogICAgICAgIGV4dGVybiBpbnQgbWVtY21wKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9p ZCAqLHNpemVfdCk7CiAgICAgICAgZXh0ZXJuIGludCBzdHJjbXAoY29uc3QgY2hhciAqLCBjb25z dCBjaGFyICopOwogICAgICAgIGV4dGVybiBpbnQgc3RybmNtcChjb25zdCBjaGFyICosY29uc3Qg Y2hhciAqLHNpemVfdCk7CiAgICAgICAgZXh0ZXJuIGludCBzdHJuY29sbGVuKGNvbnN0IGNoYXIg KiwgY29uc3QgaW50ICk7CiAgICAgICAgZXh0ZXJuIGNoYXIgKnN0cnRvayhjaGFyICogLCBjb25z dCBjaGFyICogKTsKICAgICAgICBleHRlcm4gY2hhciAqc3RyZXJyb3IoaW50KTsKICAgICAgICBl eHRlcm4gaW50IHN0cmNvbGwoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwogICAgICAgIGV4 dGVybiBzaXplX3Qgc3RyeGZybShjaGFyICogLCBjb25zdCBjaGFyICogLCBzaXplX3QpOwogICAg ICAgIGV4dGVybiBjaGFyICpzdHJ0b2tfcihjaGFyICosIGNvbnN0IGNoYXIgKiwgY2hhciAqKik7 CiMgMTgwICJpbmNsdWRlL3N0cmluZy5oIiAzIDQKICAgICAgICBleHRlcm4gdm9pZCAqbWVtY2Nw eSh2b2lkICogLCBjb25zdCB2b2lkICogLCBpbnQsIHNpemVfdCk7CiMgMTg5ICJpbmNsdWRlL3N0 cmluZy5oIiAzIDQKZXh0ZXJuIGNoYXIgKnN0cmR1cChjb25zdCBjaGFyICopOwojIDI0MyAiaW5j bHVkZS9zdHJpbmcuaCIgMyA0CiAgICAgICAgZXh0ZXJuIHdjaGFyX3QgKndjc2Nocihjb25zdCB3 Y2hhcl90ICosIHdjaGFyX3QpOwogICAgICAgIGV4dGVybiB3Y2hhcl90ICp3Y3NwYnJrKGNvbnN0 IHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqKTsKICAgICAgICBleHRlcm4gd2NoYXJfdCAqd2Nz cmNocihjb25zdCB3Y2hhcl90ICosIHdjaGFyX3QpOwoKICAgICAgICBleHRlcm4gY2hhciAqaW5k ZXgoY29uc3QgY2hhciAqLCBpbnQpOwogICAgICAgIGV4dGVybiBjaGFyICpyaW5kZXgoY29uc3Qg Y2hhciAqLCBpbnQpOwogICAgICAgIGV4dGVybiB2b2lkIHN3YWIoY29uc3Qgdm9pZCAqLCB2b2lk ICosIHNzaXplX3QpOwogICAgICAgIGV4dGVybiB3Y2hhcl90ICp3Y3NjYXQod2NoYXJfdCAqLCBj b25zdCB3Y2hhcl90ICopOwogICAgICAgIGV4dGVybiBpbnQgd2NzY21wKGNvbnN0IHdjaGFyX3Qg KiwgY29uc3Qgd2NoYXJfdCAqKTsKICAgICAgICBleHRlcm4gd2NoYXJfdCAqd2NzY3B5KHdjaGFy X3QgKiwgY29uc3Qgd2NoYXJfdCAqKTsKICAgICAgICBleHRlcm4gc2l6ZV90IHdjc2NzcG4oY29u c3Qgd2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICopOwogICAgICAgIGV4dGVybiBzaXplX3Qgd2Nz bGVuKGNvbnN0IHdjaGFyX3QgKik7CiAgICAgICAgZXh0ZXJuIHdjaGFyX3QgKndjc25jYXQod2No YXJfdCAqLCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCk7CiAgICAgICAgZXh0ZXJuIGludCB3Y3Nu Y21wKGNvbnN0IHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqLCBzaXplX3QpOwogICAgICAgIGV4 dGVybiB3Y2hhcl90ICp3Y3NuY3B5KHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqLCBzaXplX3Qp OwogICAgICAgIGV4dGVybiBzaXplX3Qgd2Nzc3BuKGNvbnN0IHdjaGFyX3QgKiwgY29uc3Qgd2No YXJfdCAqKTsKICAgICAgICBleHRlcm4gd2NoYXJfdCAqd2Nzd2NzKGNvbnN0IHdjaGFyX3QgKiwg Y29uc3Qgd2NoYXJfdCAqKTsKICAgICAgICBleHRlcm4gaW50IHdjc3dpZHRoKGNvbnN0IHdjaGFy X3QgKiwgc2l6ZV90KTsKICAgICAgICBleHRlcm4gaW50IHdjd2lkdGgod2NoYXJfdCk7CiAgICAg ICAgZXh0ZXJuIGludCB3Y3Njb2xsKGNvbnN0IHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqKTsK ICAgICAgICBleHRlcm4gc2l6ZV90IHdjc3hmcm0od2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICos IHNpemVfdCk7CiAgICAgICAgZXh0ZXJuIGNoYXIgKl9fbGludXhfc3RyZXJyb3JfcihpbnQsIGNo YXIgKiwgc2l6ZV90KTsKICAgICAgICBleHRlcm4gY2hhciAqIHN0cm5kdXAoY29uc3QgY2hhciAq LCBzaXplX3QpOwogICAgICAgIGV4dGVybiBzaXplX3Qgc3Rybmxlbihjb25zdCBjaGFyICosIHNp emVfdCk7CiAgICAgICAgZXh0ZXJuIGNoYXIgKiBzdHJzZXAoY2hhciAqKiwgY29uc3QgY2hhciAq KTsKICAgICAgICBleHRlcm4gdm9pZCAqIG1lbW1lbShjb25zdCB2b2lkICosIHNpemVfdCwgY29u c3Qgdm9pZCAqLCBzaXplX3QpOwogICAgICAgIGV4dGVybiBjaGFyICogc3RwY3B5KGNoYXIgKiwg Y29uc3QgY2hhciAqKTsKICAgICAgICBleHRlcm4gY2hhciAqIHN0cG5jcHkoY2hhciAqLCBjb25z dCBjaGFyICosIHNpemVfdCk7CiAgICAgICAgZXh0ZXJuIGNoYXIgKiBzdHJzaWduYWwoaW50KTsK CgoKCgogICAgICAgIGV4dGVybiBpbnQgc3RyY2FzZWNtcChjb25zdCBjaGFyICosIGNvbnN0IGNo YXIgKik7CiAgICAgICAgZXh0ZXJuIGludCBzdHJuY2FzZWNtcChjb25zdCBjaGFyICosIGNvbnN0 IGNoYXIgKiwgc2l6ZV90KTsKIyA3NyAiLi4vLi4vZ2NjLTMuMi4yL2djYy90c3lzdGVtLmgiIDIK CgoKIyAxICJpbmNsdWRlL3N0ZGxpYi5oIiAxIDMgNAojIDEwNCAiaW5jbHVkZS9zdGRsaWIuaCIg MyA0CnR5cGVkZWYgc3RydWN0IGRpdl90IHsKICAgICAgICBpbnQgcXVvdDsKICAgICAgICBpbnQg cmVtOwp9IGRpdl90OwoKdHlwZWRlZiBzdHJ1Y3QgbGRpdl90IHsKICAgICAgICBsb25nIGludCBx dW90OwogICAgICAgIGxvbmcgaW50IHJlbTsKfSBsZGl2X3Q7CgoKCgoKCmV4dGVybiBzaXplX3Qg X19nZXRtYmN1cm1heCAodm9pZCk7CmV4dGVybiBpbnQgX19nZXRtYXhkaXNwd2lkdGggKHZvaWQp OwojIDEzMCAiaW5jbHVkZS9zdGRsaWIuaCIgMyA0CiAgICAgICAgZXh0ZXJuIGRvdWJsZSBzdHJ0 b2QoY29uc3QgY2hhciAqICwgY2hhciAqKiApOyBleHRlcm4gbG9uZyBpbnQgc3RydG9sKGNvbnN0 IGNoYXIgKiAsIGNoYXIgKiogLAppbnQpOwogICAgICAgIGV4dGVybiB1bnNpZ25lZCBsb25nIGlu dCBzdHJ0b3VsKGNvbnN0IGNoYXIgKiAsIGNoYXIgKiogLCBpbnQpOwojIDE0MyAiaW5jbHVkZS9z dGRsaWIuaCIgMyA0CiAgICAgICAgZXh0ZXJuIHZvaWQgX0V4aXQoaW50KTsKICAgICAgICBleHRl cm4gZmxvYXQgc3RydG9mKGNvbnN0IGNoYXIgKiAsIGNoYXIgKiogKTsKCgoKCgoKCnR5cGVkZWYg c3RydWN0IGxsZGl2X3QgewogICAgIGxvbmcgbG9uZyBpbnQgcXVvdDsKICAgICBsb25nIGxvbmcg aW50IHJlbSA7Cn0gbGxkaXZfdDsKIyAxNjUgImluY2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4g bG9uZyBsb25nIGludCBhdG9sbChjb25zdCBjaGFyICopOwpleHRlcm4gbG9uZyBsb25nIGludCBs bGFicyggbG9uZyBsb25nIGludCApOwpleHRlcm4gbGxkaXZfdCBsbGRpdiggbG9uZyBsb25nIGlu dCwgbG9uZyBsb25nIGludCApOwoKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9sbCgKICAgICBj b25zdCBjaGFyICogLAogICAgIGNoYXIgKiogLAogICAgIGludCApOwpleHRlcm4gdW5zaWduZWQg bG9uZyBsb25nIGludCBzdHJ0b3VsbCgKICAgICBjb25zdCBjaGFyICogLAogICAgIGNoYXIgKiog LAogICAgIGludCApOwojIDE4NiAiaW5jbHVkZS9zdGRsaWIuaCIgMyA0CnN0YXRpYyBsb25nIGRv dWJsZQpzdHJ0b2xkKGNvbnN0IGNoYXIgKiBfX2EsIGNoYXIgKiogX19iKSB7CiAgICAgICAgcmV0 dXJuICgobG9uZyBkb3VibGUpc3RydG9kIChfX2EsIF9fYikpOwp9CiMgMjA1ICJpbmNsdWRlL3N0 ZGxpYi5oIiAzIDQKICAgICAgICBleHRlcm4gaW50IG1ibGVuKGNvbnN0IGNoYXIgKiwgc2l6ZV90 KTsKICAgICAgICBleHRlcm4gc2l6ZV90IG1ic3Rvd2NzKHdjaGFyX3QgKiAsIGNvbnN0IGNoYXIg KiAsIHNpemVfdCk7CiAgICAgICAgZXh0ZXJuIGludCBtYnRvd2Mod2NoYXJfdCAqICwgY29uc3Qg Y2hhciAqICwgc2l6ZV90KTsKICAgICAgICBleHRlcm4gc2l6ZV90IHdjc3RvbWJzKGNoYXIgKiAs IGNvbnN0IHdjaGFyX3QgKiAsIHNpemVfdCk7CiAgICAgICAgZXh0ZXJuIGludCB3Y3RvbWIoY2hh ciAqLCBjb25zdCB3Y2hhcl90KTsKIyAyNjEgImluY2x1ZGUvc3RkbGliLmgiIDMgNAogICAgICAg IGV4dGVybiBkb3VibGUgYXRvZihjb25zdCBjaGFyICopOwogICAgICAgIGV4dGVybiBpbnQgYXRv aShjb25zdCBjaGFyICopOwogICAgICAgIGV4dGVybiBsb25nIGludCBhdG9sKGNvbnN0IGNoYXIg Kik7CiAgICAgICAgZXh0ZXJuIGludCByYW5kKHZvaWQpOwogICAgICAgIGV4dGVybiB2b2lkIHNy YW5kKHVuc2lnbmVkIGludCk7CiAgICAgICAgZXh0ZXJuIHZvaWQgKmNhbGxvYyhzaXplX3QsIHNp emVfdCk7CiAgICAgICAgZXh0ZXJuIHZvaWQgZnJlZSh2b2lkICopOwogICAgICAgIGV4dGVybiB2 b2lkICptYWxsb2Moc2l6ZV90KTsKICAgICAgICBleHRlcm4gdm9pZCAqcmVhbGxvYyh2b2lkICos IHNpemVfdCk7CiAgICAgICAgZXh0ZXJuIHZvaWQgYWJvcnQodm9pZCk7CiAgICAgICAgZXh0ZXJu IGludCBhdGV4aXQodm9pZCAoKikodm9pZCkpOwogICAgICAgIGV4dGVybiB2b2lkIGV4aXQoaW50 KTsKICAgICAgICBleHRlcm4gY2hhciAqZ2V0ZW52KGNvbnN0IGNoYXIgKik7CiAgICAgICAgZXh0 ZXJuIGludCBzeXN0ZW0oY29uc3QgY2hhciAqKTsKICAgICAgICBleHRlcm4gdm9pZCAqYnNlYXJj aChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIGludCgqKShjb25z dCB2b2lkICosY29uc3Qgdm9pZCAqKSk7CiAgICAgICAgZXh0ZXJuIHZvaWQgcXNvcnQodm9pZCAq LCBzaXplX3QsIHNpemVfdCwgaW50KCopKGNvbnN0IHZvaWQgKixjb25zdCB2b2lkICopKTsKIyAy ODcgImluY2x1ZGUvc3RkbGliLmgiIDMgNAogICAgICAgIGV4dGVybiBpbnQgYWJzKGludCk7CiAg ICAgICAgZXh0ZXJuIHN0cnVjdCBkaXZfdCBkaXYoaW50LCBpbnQpOwogICAgICAgIGV4dGVybiBs b25nIGludCBsYWJzKGxvbmcgaW50KTsKICAgICAgICBleHRlcm4gc3RydWN0IGxkaXZfdCBsZGl2 KGxvbmcgaW50LCBsb25nIGludCk7CiMgMzE0ICJpbmNsdWRlL3N0ZGxpYi5oIiAzIDQKIyAxICJp bmNsdWRlL3N5cy93YWl0LmgiIDEgMyA0CiMgNTggImluY2x1ZGUvc3lzL3dhaXQuaCIgMyA0CiMg MSAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAxIDMgNAojIDU3ICIvdXNyL2luY2x1ZGUv c3lzL3Jlc291cmNlLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAxIDMgNAoj IDkwICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0CnN0cnVjdCB0aW1ldmFsIHsKICAgICAg ICB0aW1lX3QgdHZfc2VjOwoKICAgICAgICBzdXNlY29uZHNfdCB0dl91c2VjOwoKCgp9OwoKCgoK c3RydWN0IHRpbWV2YWwzMiB7CiAgICBpbnQzMl90IHR2X3NlYzsKICAgIGludDMyX3QgdHZfdXNl YzsKfTsKCgoKCgoKc3RydWN0IHRpbWV2YWw2NCB7CiAgICBpbnQ2NF90IHR2X3NlYzsKICAgIGlu dDMyX3QgdHZfdXNlYzsKCgoKfTsKCgoKCgoKc3RydWN0IGl0aW1lcnZhbCB7CiAgICAgICAgc3Ry dWN0IHRpbWV2YWwgaXRfaW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgaXRfdmFsdWU7 Cn07CgoKCgoKCgpleHRlcm4gaW50IGdldGl0aW1lcihpbnQsIHN0cnVjdCBpdGltZXJ2YWwgKik7 CmV4dGVybiBpbnQgc2V0aXRpbWVyKGludCwgY29uc3Qgc3RydWN0IGl0aW1lcnZhbCAqLCBzdHJ1 Y3QgaXRpbWVydmFsICopOwpleHRlcm4gaW50IGdldHRpbWVvZmRheShzdHJ1Y3QgdGltZXZhbCAq LCB2b2lkICopOwpleHRlcm4gaW50IHV0aW1lcyhjb25zdCBjaGFyICosIGNvbnN0IHN0cnVjdCB0 aW1ldmFsICopOwojIDE1NyAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNAp0eXBlZGVmIHN0 cnVjdAoKZmRfc2V0Cgp7CiAgICAgICAgbG9uZyBmZHNfYml0c1soNjU1MzQvKHNpemVvZihsb25n KSAqIDgpKzEpXTsKfSBmZF9zZXQ7CiMgMTcyICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0 CmV4dGVybiBpbnQgc2VsZWN0KGludCwgZmRfc2V0ICosIGZkX3NldCAqLCBmZF9zZXQgKiwgc3Ry dWN0IHRpbWV2YWwgKik7CiMgMjg2ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0CnN0cnVj dCB0aW1lc3RydWNfdCB7CiAgICAgICAgdGltZV90IHR2X3NlYzsKICAgICAgICBzdXNlY29uZHNf dCB0dl9uc2VjOwp9OwoKCgoKCnN0cnVjdCB0aW1lc3RydWMzMl90IHsKICAgIGludDMyX3QgdHZf c2VjOwogICAgaW50MzJfdCB0dl9uc2VjOwp9OwoKCgoKc3RydWN0IHRpbWVzdHJ1YzY0X3Qgewog ICAgaW50NjRfdCB0dl9zZWM7CiAgICBpbnQzMl90IHR2X25zZWM7Cn07CiMgMzE4ICIvdXNyL2lu Y2x1ZGUvc3lzL3RpbWUuaCIgMyA0CnN0cnVjdCBpdGltZXJzdHJ1Y190IHsKICAgICAgICBzdHJ1 Y3QgdGltZXN0cnVjX3QgaXRfaW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IHRpbWVzdHJ1Y190IGl0 X3ZhbHVlOwp9OwoKCgoKCnN0cnVjdCBpdGltZXJzdHJ1YzMyX3QgewogICAgc3RydWN0IHRpbWVz dHJ1YzMyX3QgaXRfaW50ZXJ2YWw7CiAgICBzdHJ1Y3QgdGltZXN0cnVjMzJfdCBpdF92YWx1ZTsK fTsKCgoKCnN0cnVjdCBpdGltZXJzdHJ1YzY0X3QgewogICAgc3RydWN0IHRpbWVzdHJ1YzY0X3Qg aXRfaW50ZXJ2YWw7CiAgICBzdHJ1Y3QgdGltZXN0cnVjNjRfdCBpdF92YWx1ZTsKfTsKIyAzNTAg Ii91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgdGltZWJhc2VzdHJ1 Y3QgewogICAgICAgIGludCBmbGFnOwogICAgICAgIHVuc2lnbmVkIGludCB0Yl9oaWdoOwogICAg ICAgIHVuc2lnbmVkIGludCB0Yl9sb3c7CiAgICAgICAgfSB0aW1lYmFzZXN0cnVjdF90OwoKaW50 IHJlYWRfcmVhbF90aW1lKHRpbWViYXNlc3RydWN0X3QgKiwgc2l6ZV90KTsKaW50IHRpbWVfYmFz ZV90b190aW1lKHRpbWViYXNlc3RydWN0X3QgKiwgc2l6ZV90KTsKIyA0ODIgIi91c3IvaW5jbHVk ZS9zeXMvdGltZS5oIiAzIDQKc3RydWN0IHRpbWV6b25lIHsKICAgICAgICBpbnQgdHpfbWludXRl c3dlc3Q7CiAgICAgICAgaW50IHR6X2RzdHRpbWU7Cn07CiMgNTggIi91c3IvaW5jbHVkZS9zeXMv cmVzb3VyY2UuaCIgMiAzIDQKIyAxMDIgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMyA0 CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBybGltX3Q7CnN0cnVjdCBybGltaXQgewogICAgICAgIHJs aW1fdCBybGltX2N1cjsKICAgICAgICBybGltX3QgcmxpbV9tYXg7Cn07CgoKCgoKdHlwZWRlZiB1 bnNpZ25lZCBsb25nIGxvbmcgcmxpbTY0X3Q7CnN0cnVjdCBybGltaXQ2NCB7CiAgICAgICAgcmxp bTY0X3QgcmxpbV9jdXI7CiAgICAgICAgcmxpbTY0X3QgcmxpbV9tYXg7Cn07CiMgMTU1ICIvdXNy L2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDMgNApzdHJ1Y3QgcnVzYWdlCnsKICAgICAgICBzdHJ1 Y3QgdGltZXZhbCBydV91dGltZTsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBydV9zdGltZTsKICAg ICAgICBsb25nIHJ1X21heHJzczsKICAgICAgICBsb25nIHJ1X2l4cnNzOwogICAgICAgIGxvbmcg cnVfaWRyc3M7CiAgICAgICAgbG9uZyBydV9pc3JzczsKICAgICAgICBsb25nIHJ1X21pbmZsdDsK ICAgICAgICBsb25nIHJ1X21hamZsdDsKICAgICAgICBsb25nIHJ1X25zd2FwOwogICAgICAgIGxv bmcgcnVfaW5ibG9jazsKICAgICAgICBsb25nIHJ1X291YmxvY2s7CiAgICAgICAgbG9uZyBydV9t c2dzbmQ7CiAgICAgICAgbG9uZyBydV9tc2dyY3Y7CiAgICAgICAgbG9uZyBydV9uc2lnbmFsczsK ICAgICAgICBsb25nIHJ1X252Y3N3OwogICAgICAgIGxvbmcgcnVfbml2Y3N3OwoKfTsKIyAxODMg Ii91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMyA0CnN0cnVjdCBydXNhZ2U2NAp7CgoKCgog ICAgICAgIHN0cnVjdCB0aW1ldmFsIHJ1X3V0aW1lOwogICAgICAgIHN0cnVjdCB0aW1ldmFsIHJ1 X3N0aW1lOwoKICAgICAgICBsb25nIGxvbmcgcnVfbWF4cnNzOwogICAgICAgIGxvbmcgbG9uZyBy dV9peHJzczsKICAgICAgICBsb25nIGxvbmcgcnVfaWRyc3M7CiAgICAgICAgbG9uZyBsb25nIHJ1 X2lzcnNzOwogICAgICAgIGxvbmcgbG9uZyBydV9taW5mbHQ7CiAgICAgICAgbG9uZyBsb25nIHJ1 X21hamZsdDsKICAgICAgICBsb25nIGxvbmcgcnVfbnN3YXA7CiAgICAgICAgbG9uZyBsb25nIHJ1 X2luYmxvY2s7CiAgICAgICAgbG9uZyBsb25nIHJ1X291YmxvY2s7CiAgICAgICAgbG9uZyBsb25n IHJ1X21zZ3NuZDsKICAgICAgICBsb25nIGxvbmcgcnVfbXNncmN2OwogICAgICAgIGxvbmcgbG9u ZyBydV9uc2lnbmFsczsKICAgICAgICBsb25nIGxvbmcgcnVfbnZjc3c7CiAgICAgICAgbG9uZyBs b25nIHJ1X25pdmNzdzsKfTsKCgoKCgpzdHJ1Y3QgdHJ1c2FnZTY0CnsKICAgICAgICBzdHJ1Y3Qg dGltZXZhbDY0IHJ1X3V0aW1lOwogICAgICAgIHN0cnVjdCB0aW1ldmFsNjQgcnVfc3RpbWU7CiAg ICAgICAgbG9uZ2xvbmdfdCBydV9tYXhyc3M7CiAgICAgICAgbG9uZ2xvbmdfdCBydV9peHJzczsK ICAgICAgICBsb25nbG9uZ190IHJ1X2lkcnNzOwogICAgICAgIGxvbmdsb25nX3QgcnVfaXNyc3M7 CiAgICAgICAgbG9uZ2xvbmdfdCBydV9taW5mbHQ7CiAgICAgICAgbG9uZ2xvbmdfdCBydV9tYWpm bHQ7CiAgICAgICAgbG9uZ2xvbmdfdCBydV9uc3dhcDsKICAgICAgICBsb25nbG9uZ190IHJ1X2lu YmxvY2s7CiAgICAgICAgbG9uZ2xvbmdfdCBydV9vdWJsb2NrOwogICAgICAgIGxvbmdsb25nX3Qg cnVfbXNnc25kOwogICAgICAgIGxvbmdsb25nX3QgcnVfbXNncmN2OwogICAgICAgIGxvbmdsb25n X3QgcnVfbnNpZ25hbHM7CiAgICAgICAgbG9uZ2xvbmdfdCBydV9udmNzdzsKICAgICAgICBsb25n bG9uZ190IHJ1X25pdmNzdzsKfTsKCgoKCgpzdHJ1Y3QgdHJ1c2FnZTMyCnsKICAgICAgICBzdHJ1 Y3QgdGltZXZhbDMyIHJ1X3V0aW1lOwogICAgICAgIHN0cnVjdCB0aW1ldmFsMzIgcnVfc3RpbWU7 CiAgICAgICAgc2lnbmVkIGludCBydV9tYXhyc3M7CiAgICAgICAgc2lnbmVkIGludCBydV9peHJz czsKICAgICAgICBzaWduZWQgaW50IHJ1X2lkcnNzOwogICAgICAgIHNpZ25lZCBpbnQgcnVfaXNy c3M7CiAgICAgICAgc2lnbmVkIGludCBydV9taW5mbHQ7CiAgICAgICAgc2lnbmVkIGludCBydV9t YWpmbHQ7CiAgICAgICAgc2lnbmVkIGludCBydV9uc3dhcDsKICAgICAgICBzaWduZWQgaW50IHJ1 X2luYmxvY2s7CiAgICAgICAgc2lnbmVkIGludCBydV9vdWJsb2NrOwogICAgICAgIHNpZ25lZCBp bnQgcnVfbXNnc25kOwogICAgICAgIHNpZ25lZCBpbnQgcnVfbXNncmN2OwogICAgICAgIHNpZ25l ZCBpbnQgcnVfbnNpZ25hbHM7CiAgICAgICAgc2lnbmVkIGludCBydV9udmNzdzsKICAgICAgICBz aWduZWQgaW50IHJ1X25pdmNzdzsKfTsKIyAzMjMgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2Uu aCIgMyA0CmV4dGVybiBpbnQgZ2V0cHJpb3JpdHkoaW50LCBpZF90KTsKZXh0ZXJuIGludCBzZXRw cmlvcml0eShpbnQsIGlkX3QsIGludCk7CmV4dGVybiBpbnQgZ2V0cmxpbWl0KGludCwgc3RydWN0 IHJsaW1pdCAqKTsKZXh0ZXJuIGludCBzZXRybGltaXQoaW50LCBjb25zdCBzdHJ1Y3QgcmxpbWl0 ICopOwoKCmV4dGVybiBpbnQgZ2V0cmxpbWl0NjQoaW50LCBzdHJ1Y3QgcmxpbWl0NjQgKik7CmV4 dGVybiBpbnQgc2V0cmxpbWl0NjQoaW50LCBjb25zdCBzdHJ1Y3QgcmxpbWl0NjQgKik7CgoKCgoK CgpleHRlcm4gaW50IGdldHJ1c2FnZShpbnQsIHN0cnVjdCBydXNhZ2UgKik7CgpleHRlcm4gaW50 IGdldHJ1c2FnZTY0KGludCwgc3RydWN0IHJ1c2FnZTY0ICopOwojIDU5ICJpbmNsdWRlL3N5cy93 YWl0LmgiIDIgMyA0CgoKCiMgMSAiaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDEgMyA0CiMgMTA5ICJp bmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0CmV4dGVybiB2b2lkICgqc2lnbmFsKGludCwgdm9pZCAo KikoaW50KSkpKGludCk7CgoKCgoKCgpleHRlcm4gaW50IHJhaXNlKGludCk7CgoKdHlwZWRlZiBp bnQgc2lnX2F0b21pY190OwojIDI0NiAiaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNAp1bmlvbiBz aWd2YWwKewoKCgogICAgICAgIHZvaWQgKiBzaXZhbF9wdHI7CgogICAgICAgIGludCBzaXZhbF9p bnQ7Cn07CiMgMjY3ICJpbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0CnR5cGVkZWYgc3RydWN0IHsK ICAgICAgICBpbnQgc2lfc2lnbm87CiAgICAgICAgaW50IHNpX2Vycm5vOwogICAgICAgIGludCBz aV9jb2RlOwojIDI4NCAiaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNAogICAgICAgIHBpZF90IHNp X3BpZDsKCgogICAgICAgIHVpZF90IHNpX3VpZDsKIyAzMTAgImluY2x1ZGUvc3lzL3NpZ25hbC5o IiAzIDQKICAgICAgICB2b2lkICpzaV9hZGRyOwogICAgICAgIGludCBzaV9zdGF0dXM7CgoKICAg ICAgICBsb25nIHNpX2JhbmQ7CgoKICAgICAgICB1bmlvbiBzaWd2YWwgc2lfdmFsdWU7CgoKCgoK CgogICAgICAgIGludCBfX3BhZFs3XTsKCgoKfSBzaWdpbmZvX3Q7CgoKCgoKCgpzdHJ1Y3Qgc2ln YWN0aW9uIHsKICAgdW5pb24gewoKCgoKCgogICAgICAgIHZvaWQgKCpfX3N1X2hhbmRsZXIpKGlu dCk7CgoKCiAgICAgICAgdm9pZCAoKl9fc3Vfc2lnYWN0aW9uKSAoaW50LCBzaWdpbmZvX3QgKiwg dm9pZCAqKTsKCgoKICAgIH0gc2FfdW5pb247CiAgICAgICAgc2lnc2V0X3Qgc2FfbWFzazsKICAg ICAgICBpbnQgc2FfZmxhZ3M7Cn07CiMgMzc4ICJpbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0CiMg MSAiL3Vzci9pbmNsdWRlL3N5cy9jb250ZXh0LmgiIDEgMyA0CiMgMzkgIi91c3IvaW5jbHVkZS9z eXMvY29udGV4dC5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvc3lzL21fcGFyYW0uaCIgMSAzIDQK IyA0MCAiL3Vzci9pbmNsdWRlL3N5cy9jb250ZXh0LmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRl L3N5cy9tc3RzYXZlLmgiIDEgMyA0CiMgNDcgIi91c3IvaW5jbHVkZS9zeXMvbXN0c2F2ZS5oIiAz IDQKc3RydWN0Cgptc3RzYXZlCgoKCnsKCiAgICAgICAgc3RydWN0IG1zdHNhdmUgKnByZXY7CiAg ICAgICAgbGFiZWxfdCAqa2ptcGJ1ZjsKICAgICAgICBjaGFyICpzdGFja2ZpeDsKICAgICAgICBj aGFyIGludHByaTsKICAgICAgICBjaGFyIGJhY2t0OwogICAgICAgIGNoYXIgcnN2ZFsyXTsKICAg ICAgICBwaWRfdCBjdXJpZDsKCiAgICAgICAgaW50IGV4Y3BfdHlwZTsKICAgICAgICB1bG9uZ190 IGlhcjsKICAgICAgICB1bG9uZ190IG1zcjsKICAgICAgICB1bG9uZ190IGNyOwogICAgICAgIHVs b25nX3QgbHI7CiAgICAgICAgdWxvbmdfdCBjdHI7CiAgICAgICAgdWxvbmdfdCB4ZXI7CiAgICAg ICAgdWxvbmdfdCBtcTsKICAgICAgICB1bG9uZ190IHRpZDsKICAgICAgICB1bG9uZ190IGZwc2Ny OwogICAgICAgIGNoYXIgZnBldTsKICAgICAgICBjaGFyIGZwaW5mbzsKICAgICAgICBjaGFyIHBh ZFsyXTsKCiAgICAgICAgdWxvbmdfdCBleGNlcHRbNV07CiAgICAgICAgY2hhciBwYWQxWzRdOwog ICAgICAgIHVsb25nX3Qgb19pYXI7CiAgICAgICAgdWxvbmdfdCBvX3RvYzsKICAgICAgICB1bG9u Z190IG9fYXJnMTsKICAgICAgICB1bG9uZ190IGV4Y2JyYW5jaDsKCgoKICAgICAgICB1bG9uZ190 IGZwc2NyeDsKICAgICAgICB1bG9uZ190IG9fdmFkZHI7CiAgICAgICAgdWxvbmdfdCBjYWNoZWFs aWduWzddOwogICAgICAgIGFkc3BhY2VfdCBhczsKICAgICAgICB1bG9uZ190IGdwclszMl07CiAg ICAgICAgZG91YmxlIGZwclszMl07CiMgMTMxICIvdXNyL2luY2x1ZGUvc3lzL21zdHNhdmUuaCIg MyA0Cn07CiMgMjM2ICIvdXNyL2luY2x1ZGUvc3lzL21zdHNhdmUuaCIgMyA0CmV4dGVybiBjaGFy IF9fcG1hcF9zdGFja1tdOwojIDQxICIvdXNyL2luY2x1ZGUvc3lzL2NvbnRleHQuaCIgMiAzIDQK IyA2NCAiL3Vzci9pbmNsdWRlL3N5cy9jb250ZXh0LmgiIDMgNAp0eXBlZGVmIHN0cnVjdCB7CgoK CgogICAgICAgIHZvaWQgKnNzX3NwOwogICAgICAgIHNpemVfdCBzc19zaXplOwoKCiAgICAgICAg aW50IHNzX2ZsYWdzOwoKICAgICAgICBpbnQgX19wYWRbNF07Cgp9IHN0YWNrX3Q7CiMgMTE5ICIv dXNyL2luY2x1ZGUvc3lzL2NvbnRleHQuaCIgMyA0CnN0cnVjdCBfX2NvbnRleHQ2NCB7CiAgICAg ICAgdW5zaWduZWQgbG9uZyBsb25nIGdwclszMl07CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb25n IG1zcjsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaWFyOwogICAgICAgIHVuc2lnbmVkIGxv bmcgbG9uZyBscjsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgY3RyOwogICAgICAgIHVuc2ln bmVkIGludCBjcjsKICAgICAgICB1bnNpZ25lZCBpbnQgeGVyOwogICAgICAgIHVuc2lnbmVkIGlu dCBmcHNjcjsKICAgICAgICB1bnNpZ25lZCBpbnQgZnBzY3J4OwogICAgICAgIHVuc2lnbmVkIGxv bmcgbG9uZyBleGNlcHRbMV07CiAgICAgICAgZG91YmxlIGZwclszMl07CiAgICAgICAgY2hhciBm cGV1OwogICAgICAgIGNoYXIgZnBpbmZvOwogICAgICAgIGNoYXIgcGFkWzJdOwogICAgICAgIGlu dCBleGNwX3R5cGU7Cn07CiMgMTY3ICIvdXNyL2luY2x1ZGUvc3lzL2NvbnRleHQuaCIgMyA0CnN0 cnVjdCBzaWdjb250ZXh0NjQgewogICAgICAgIGludCBzY19vbnN0YWNrOwogICAgICAgIHNpZ3Nl dDY0X3Qgc2NfbWFzazsKICAgICAgICBpbnQgc2NfdWVycm9yOwogICAgICAgIHN0cnVjdCBfX2Nv bnRleHQ2NCBzY19jb250ZXh0Owp9OwojIDI0NSAiL3Vzci9pbmNsdWRlL3N5cy9jb250ZXh0Lmgi IDMgNApzdHJ1Y3QgX19qbXBidWYgewoKICAgICAgICBzdHJ1Y3QgbXN0c2F2ZSBqbXBfY29udGV4 dDsKCgoKfTsKIyAyNzkgIi91c3IvaW5jbHVkZS9zeXMvY29udGV4dC5oIiAzIDQKc3RydWN0IF9f c2lnY29udGV4dCB7CgogICAgICAgIGludCBzY19vbnN0YWNrOwoKCgogICAgICAgIHNpZ3NldF90 IHNjX21hc2s7CgogICAgICAgIGludCBzY191ZXJyb3I7CiAgICAgICAgc3RydWN0IF9fam1wYnVm IHNjX2ptcGJ1ZjsKIyAyOTkgIi91c3IvaW5jbHVkZS9zeXMvY29udGV4dC5oIiAzIDQKfTsKIyAz MDggIi91c3IvaW5jbHVkZS9zeXMvY29udGV4dC5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgX19qbXBi dWYgbWNvbnRleHRfdDsKCnR5cGVkZWYgc3RydWN0IHVjb250ZXh0X3QgewogICAgICAgIGludCBf X3NjX29uc3RhY2s7CgoKCgogICAgICAgIHNpZ3NldF90IHVjX3NpZ21hc2s7CgoKICAgICAgICBp bnQgX19zY191ZXJyb3I7CiAgICAgICAgbWNvbnRleHRfdCB1Y19tY29udGV4dDsKCgoKICAgICAg ICBzdHJ1Y3QgdWNvbnRleHRfdCAqdWNfbGluazsKCgogICAgICAgIHN0YWNrX3QgdWNfc3RhY2s7 CiAgICAgICAgaW50IF9fcGFkWzRdOwp9IHVjb250ZXh0X3Q7CiMgMzc5ICJpbmNsdWRlL3N5cy9z aWduYWwuaCIgMiAzIDQKCgoKCnN0cnVjdCBzaWdzdGFjayB7CiAgICAgICAgdm9pZCAqc3Nfc3A7 CiAgICAgICAgaW50IHNzX29uc3RhY2s7Cn07CiMgNDY3ICJpbmNsdWRlL3N5cy9zaWduYWwuaCIg MyA0CmV4dGVybiBpbnQgc2lnbWFzayhpbnQpOwojIDYyNSAiaW5jbHVkZS9zeXMvc2lnbmFsLmgi IDMgNAojIDEgIi91c3IvaW5jbHVkZS9zeXMvbV9zaWduYWwuaCIgMSAzIDQKIyA2MjYgImluY2x1 ZGUvc3lzL3NpZ25hbC5oIiAyIDMgNAojIDYzNSAiaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNApz dHJ1Y3Qgc2lnZXZlbnQgewogICAgICAgIHVuaW9uIHNpZ3ZhbCBzaWdldl92YWx1ZTsKICAgICAg ICBpbnQgc2lnZXZfc2lnbm87CiAgICAgICAgaW50IHNpZ2V2X25vdGlmeTsKCgoKCiAgICAgICAg dm9pZCAoKnNpZ2V2X25vdGlmeV9mdW5jdGlvbikodW5pb24gc2lndmFsKTsKICAgICAgICBwdGhy ZWFkX2F0dHJfdCAqIHNpZ2V2X25vdGlmeV9hdHRyaWJ1dGVzOwoKfTsKIyA2NjggImluY2x1ZGUv c3lzL3NpZ25hbC5oIiAzIDQKc3RydWN0IG9zaWdldmVudCB7CgoKCiAgICAgICAgdm9pZCAqc2V2 dF92YWx1ZTsKCiAgICAgICAgc2lnbmFsX3Qgc2V2dF9zaWdubzsKfTsKIyA5OTMgImluY2x1ZGUv c3lzL3NpZ25hbC5oIiAzIDQKc3RydWN0IHNpZ3ZlYyB7CiMgMTAwNSAiaW5jbHVkZS9zeXMvc2ln bmFsLmgiIDMgNAogICB1bmlvbiB7CgoKCgoKCiAgICAgICAgdm9pZCAoKnN2X2hhbmRsZXIpKGlu dCk7CgoKCiAgICAgICAgdm9pZCAoKnN2X3NpZ2FjdGlvbikgKGludCwgc2lnaW5mb190ICosIHZv aWQgKik7CiAgIH0gc3ZfdW5pb247CiAgICAgICAgaW50IHN2X21hc2s7CiAgICAgICAgaW50IHN2 X2ZsYWdzOwoKfTsKIyAxMDg1ICJpbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0CmV4dGVybiBpbnQg c2lnd2FpdChjb25zdCBzaWdzZXRfdCAqLCBpbnQgKik7CgpleHRlcm4gaW50IHNpZ2Jsb2NrKGlu dCk7CmV4dGVybiBpbnQgc2lnbG9jYWxtYXNrKGludCwgY29uc3Qgc2lnc2V0X3QgKik7CmV4dGVy biBpbnQgc2lndmVjKGludCwgc3RydWN0IHNpZ3ZlYyAqLCBzdHJ1Y3Qgc2lndmVjICopOwoKCgoK CgoKZXh0ZXJuIGludCBzaWdnZXRtYXNrKHZvaWQpOwpleHRlcm4gaW50IHNpZ3NldG1hc2soaW50 KTsKIyAxMTM3ICJpbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0CmV4dGVybiBpbnQga2lsbChwaWRf dCwgaW50KTsKZXh0ZXJuIGludCBzaWdwcm9jbWFzayhpbnQsIGNvbnN0IHNpZ3NldF90ICosIHNp Z3NldF90ICopOwpleHRlcm4gaW50IHNpZ3N1c3BlbmQoY29uc3Qgc2lnc2V0X3QgKik7CgpleHRl cm4gaW50IHNpZ2FjdGlvbihpbnQsIGNvbnN0IHN0cnVjdCBzaWdhY3Rpb24gKiwgc3RydWN0IHNp Z2FjdGlvbiAqKTsKCmV4dGVybiBpbnQgc2lnZW1wdHlzZXQoc2lnc2V0X3QgKik7CmV4dGVybiBp bnQgc2lnZmlsbHNldChzaWdzZXRfdCAqKTsKZXh0ZXJuIGludCBzaWdhZGRzZXQoc2lnc2V0X3Qg KiwgaW50KTsKZXh0ZXJuIGludCBzaWdkZWxzZXQoc2lnc2V0X3QgKiwgaW50KTsKZXh0ZXJuIGlu dCBzaWdpc21lbWJlcihjb25zdCBzaWdzZXRfdCAqLCBpbnQpOwpleHRlcm4gaW50IHNpZ3BlbmRp bmcoc2lnc2V0X3QgKik7CgoKZXh0ZXJuIHZvaWQgKCpic2Rfc2lnbmFsIChpbnQsIHZvaWQgKCop KGludCkpKShpbnQpOwpleHRlcm4gaW50IGtpbGxwZyhwaWRfdCwgaW50KTsKZXh0ZXJuIGludCBz aWdob2xkKGludCk7CmV4dGVybiBpbnQgc2lnaWdub3JlKGludCk7CmV4dGVybiBpbnQgc2lnaW50 ZXJydXB0KGludCwgaW50KTsKZXh0ZXJuIGludCBzaWdwYXVzZShpbnQpOwpleHRlcm4gaW50IHNp Z3JlbHNlKGludCk7CmV4dGVybiB2b2lkICgqc2lnc2V0KGludCwgdm9pZCgqKShpbnQpKSkoaW50 KTsKCmV4dGVybiBpbnQgc2lnYWx0c3RhY2soY29uc3Qgc3RhY2tfdCAqLCBzdGFja190ICopOwpl eHRlcm4gaW50IHNpZ3N0YWNrKHN0cnVjdCBzaWdzdGFjayAqLCBzdHJ1Y3Qgc2lnc3RhY2sgKik7 CgoKCmV4dGVybiBpbnQgcHRocmVhZF9raWxsKHB0aHJlYWRfdCwgaW50KTsKZXh0ZXJuIGludCBw dGhyZWFkX3NpZ21hc2soaW50LCBjb25zdCBzaWdzZXRfdCAqLCBzaWdzZXRfdCAqKTsKZXh0ZXJu IGludCBzaWdxdWV1ZShwaWRfdCwgaW50LCBjb25zdCB1bmlvbiBzaWd2YWwpOwpzdHJ1Y3QgdGlt ZXNwZWM7CmV4dGVybiBpbnQgc2lndGltZWR3YWl0KGNvbnN0IHNpZ3NldF90ICosIHNpZ2luZm9f dCAqLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKik7CmV4dGVybiBpbnQgc2lnd2FpdGluZm8oY29u c3Qgc2lnc2V0X3QgKiwgc2lnaW5mb190ICopOwojIDYzICJpbmNsdWRlL3N5cy93YWl0LmgiIDIg MyA0CiMgMTQ4ICJpbmNsdWRlL3N5cy93YWl0LmgiIDMgNAp0eXBlZGVmIGVudW0ge1BfQUxMLCBQ X1BJRCwgUF9QR0lEfSBpZHR5cGVfdDsKIyAxNjYgImluY2x1ZGUvc3lzL3dhaXQuaCIgMyA0CmV4 dGVybiBwaWRfdCB3YWl0KGludCAqKTsKCmV4dGVybiBwaWRfdCB3YWl0cGlkKHBpZF90LCBpbnQg KiwgaW50KTsKIyAxODAgImluY2x1ZGUvc3lzL3dhaXQuaCIgMyA0CmV4dGVybiBpbnQgd2FpdGlk KGlkdHlwZV90LCBpZF90LCBzaWdpbmZvX3QgKiwgaW50KTsKCgoKZXh0ZXJuIHBpZF90IHdhaXQz KGludCAqLCBpbnQsIHN0cnVjdCBydXNhZ2UgKik7CgoKCmV4dGVybiBwaWRfdCBrd2FpdHBpZChp bnQgKiwgcGlkX3QsIGludCwgc3RydWN0IHJ1c2FnZSAqLCBzaWdpbmZvX3QgKik7CgpleHRlcm4g cGlkX3Qga3dhaXRwaWQ2NChpbnQgKiwgcGlkX3QsIGludCwgc3RydWN0IHJ1c2FnZTY0ICosIHNp Z2luZm9fdCAqKTsKCgoKZXh0ZXJuIHBpZF90IHdhaXQzNjQoaW50ICosIGludCwgc3RydWN0IHJ1 c2FnZTY0ICopOwojIDIwOCAiaW5jbHVkZS9zeXMvd2FpdC5oIiAzIDQKZXh0ZXJuIHBpZF90IHdh aXQ0KHBpZF90LCBpbnQgKiwgaW50LCBzdHJ1Y3QgcnVzYWdlICopOwojIDMxNSAiaW5jbHVkZS9z dGRsaWIuaCIgMiAzIDQKIyAzOTEgImluY2x1ZGUvc3RkbGliLmgiIDMgNAogICAgICAgIGV4dGVy biBkb3VibGUgZHJhbmQ0OCh2b2lkKTsKICAgICAgICBleHRlcm4gZG91YmxlIGVyYW5kNDgodW5z aWduZWQgc2hvcnRbXSk7CiAgICAgICAgZXh0ZXJuIGxvbmcganJhbmQ0OCh1bnNpZ25lZCBzaG9y dFtdKTsKICAgICAgICBleHRlcm4gdm9pZCBsY29uZzQ4KHVuc2lnbmVkIHNob3J0IGludCAqKTsK ICAgICAgICBleHRlcm4gbG9uZyBscmFuZDQ4KHZvaWQpOwogICAgICAgIGV4dGVybiBsb25nIG1y YW5kNDgodm9pZCk7CiAgICAgICAgZXh0ZXJuIGxvbmcgbnJhbmQ0OCh1bnNpZ25lZCBzaG9ydFtd KTsKICAgICAgICBleHRlcm4gdW5zaWduZWQgc2hvcnQgKnNlZWQ0OCh1bnNpZ25lZCBzaG9ydFtd KTsKICAgICAgICBleHRlcm4gdm9pZCBzZXRrZXkoY29uc3QgY2hhciAqKTsKICAgICAgICBleHRl cm4gdm9pZCBzcmFuZDQ4KGxvbmcpOwoKICAgICAgICBleHRlcm4gaW50IHB1dGVudihjaGFyICop OwojIDQyMCAiaW5jbHVkZS9zdGRsaWIuaCIgMyA0CiAgICAgICAgZXh0ZXJuIGludCByYW5kX3Io dW5zaWduZWQgaW50ICopOwojIDQ0NCAiaW5jbHVkZS9zdGRsaWIuaCIgMyA0CiAgICAgICAgZXh0 ZXJuIGxvbmcgYTY0bChjb25zdCBjaGFyICopOwogICAgICAgIGV4dGVybiBjaGFyICplY3Z0KGRv dWJsZSwgaW50LCBpbnQgKiwgaW50ICopOwogICAgICAgIGV4dGVybiBjaGFyICpmY3Z0KGRvdWJs ZSwgaW50LCBpbnQgKiwgaW50ICopOwogICAgICAgIGV4dGVybiBjaGFyICpnY3Z0KGRvdWJsZSwg aW50LCBjaGFyICopOwogICAgICAgIGV4dGVybiBpbnQgZ2V0c3Vib3B0KGNoYXIgKiosIGNoYXIg KmNvbnN0ICosIGNoYXIgKiopOwogICAgICAgIGV4dGVybiBpbnQgZ3JhbnRwdChpbnQpOwogICAg ICAgIGV4dGVybiBjaGFyICppbml0c3RhdGUodW5zaWduZWQsIGNoYXIgKiwgc2l6ZV90KTsKICAg ICAgICBleHRlcm4gY2hhciAqbDY0YShsb25nKTsKICAgICAgICBleHRlcm4gY2hhciAqbWt0ZW1w KGNoYXIgKik7CiAgICAgICAgZXh0ZXJuIGludCBta3N0ZW1wKGNoYXIgKik7CiAgICAgICAgZXh0 ZXJuIGNoYXIgKnB0c25hbWUoaW50KTsKICAgICAgICBleHRlcm4gbG9uZyByYW5kb20odm9pZCk7 CiAgICAgICAgZXh0ZXJuIGNoYXIgKnJlYWxwYXRoKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKICAg ICAgICBleHRlcm4gY2hhciAqc2V0c3RhdGUoY29uc3QgY2hhciAqKTsKICAgICAgICBleHRlcm4g dm9pZCBzcmFuZG9tKHVuc2lnbmVkKTsKICAgICAgICBleHRlcm4gaW50IHVubG9ja3B0KGludCk7 CiMgNTM4ICJpbmNsdWRlL3N0ZGxpYi5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2xvY2Fs ZWRlZi5oIiAxIDMgNAojIDM5ICIvdXNyL2luY2x1ZGUvc3lzL2xvY2FsZWRlZi5oIiAzIDQKc3Ry dWN0IF9fTENfbG9jYWxlOwpzdHJ1Y3QgX0xDX2xvY2FsZV9vYmpoZGw7CgoKIyAxICIvdXNyL2lu Y2x1ZGUvc3lzL2xjX2NvcmUuaCIgMSAzIDQKIyA1MiAiL3Vzci9pbmNsdWRlL3N5cy9sY19jb3Jl LmgiIDMgNAp0eXBlZGVmIHN0cnVjdCB7CgogICAgdW5zaWduZWQgc2hvcnQKICAgICAgICBfX3R5 cGVfaWQsCiAgICAgICAgX19tYWdpYzsKICAgIHVuc2lnbmVkIGxvbmcKICAgICAgICBfX3ZlcnNp b247CgogICAgc2l6ZV90IF9fc2l6ZTsKCn0gX0xDX29iamVjdF90OwojIDEwMiAiL3Vzci9pbmNs dWRlL3N5cy9sY19jb3JlLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCB7CgogICAgX0xDX29iamVjdF90 IF9faGRyOwoKCgogICAgaW50IF9fY2F0Z2V0czsKICAgIGludCBfX2NhdGNsb3NlOwoKCiAgICBp bnQgX19jb21wcmVzczsKICAgIGludCBfX2RlY29tcHJlc3M7CiAgICBpbnQgX19zdGFydF9jb21w cmVzczsKICAgIGludCBfX2VuZF9jb21wcmVzczsKCgogICAgaW50IF9faW5pdDsKICAgIHZvaWQg Kl9fZGF0YTsKfSBfTENfY29yZV9jYXJfdDsKCnR5cGVkZWYgc3RydWN0IHsKCiAgICBfTENfb2Jq ZWN0X3QgX19oZHI7CgoKICAgIGludCBfX25sX2xhbmdpbmZvOwoKCiAgICBpbnQgX19tYnRvd2M7 CiAgICBpbnQgX19tYnN0b3djczsKICAgIGludCBfX3djdG9tYjsKICAgIGludCBfX3djc3RvbWJz OwoKCiAgICBpbnQgX19tYmxlbjsKCgogICAgaW50IF9fd2Nzd2lkdGg7CiAgICBpbnQgX193Y3dp ZHRoOwoKCiAgICBpbnQgX19tYnRvcGM7CiAgICBpbnQgX19tYnN0b3BjczsKICAgIGludCBfX3Bj dG9tYjsKICAgIGludCBfX3Bjc3RvbWJzOwoKCiAgICBpbnQgX19jc2lkOwogICAgaW50IF9fd2Nz aWQ7CgoKICAgIGludCBfX2luaXQ7CiAgICB2b2lkICpfX2RhdGE7Cn0gX0xDX2NvcmVfY2hhcm1h cF90OwoKCnR5cGVkZWYgc3RydWN0IHsKCiAgICBfTENfb2JqZWN0X3QgX19oZHI7CgoKICAgIGlu dCBfX3Rvd3VwcGVyOwogICAgaW50IF9fdG93bG93ZXI7CgoKICAgIGludCBfX2dldF93Y3R5cGU7 CiAgICBpbnQgX19pc193Y3R5cGU7CgoKICAgIGludCBfX2luaXQ7CiAgICB2b2lkICpfX2RhdGE7 Cn0gX0xDX2NvcmVfY3R5cGVfdDsKCnR5cGVkZWYgc3RydWN0IHsKCiAgICBfTENfb2JqZWN0X3Qg X19oZHI7CgoKICAgIGludCBfX3N0cmNvbGw7CiAgICBpbnQgX19zdHJ4ZnJtOwoKCiAgICBpbnQg X193Y3Njb2xsOwogICAgaW50IF9fd2NzeGZybTsKCgogICAgaW50IF9fZm5tYXRjaDsKCgogICAg aW50IF9fcmVnY29tcDsKICAgIGludCBfX3JlZ2Vycm9yOwogICAgaW50IF9fcmVnZXhlYzsKICAg IGludCBfX3JlZ2ZyZWU7CgoKICAgIGludCBfX2luaXQ7CiAgICB2b2lkICpfX2RhdGE7Cn0gX0xD X2NvcmVfY29sbGF0ZV90OwoKCnR5cGVkZWYgc3RydWN0IHsKCiAgICBfTENfb2JqZWN0X3QgX19o ZHI7CgoKICAgIGludCBfX25sX2xhbmdpbmZvOwoKCiAgICBpbnQgX19zdHJmdGltZTsKICAgIGlu dCBfX3N0cnB0aW1lOwoKCiAgICBpbnQgX193Y3NmdGltZTsKCgogICAgaW50IF9faW5pdDsKICAg IHZvaWQgKl9fZGF0YTsKfSBfTENfY29yZV90aW1lX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewoKICAg IF9MQ19vYmplY3RfdCBfX2hkcjsKCgogICAgaW50IF9fbmxfbGFuZ2luZm87CgoKICAgIGludCBf X3N0cmZtb247CgoKICAgIGludCBfX2luaXQ7CiAgICB2b2lkICpfX2RhdGE7Cn0gX0xDX2NvcmVf bW9uZXRhcnlfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CgogICAgX0xDX29iamVjdF90IF9faGRyOwoK CiAgICBpbnQgX19ubF9sYW5naW5mbzsKCgogICAgaW50IF9faW5pdDsKICAgIHZvaWQgKl9fZGF0 YTsKfSBfTENfY29yZV9udW1lcmljX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewoKICAgIF9MQ19vYmpl Y3RfdCBfX2hkcjsKCgogICAgaW50IF9fbmxfbGFuZ2luZm87CgoKICAgIGludCBfX3JwbWF0Y2g7 CgoKICAgIGludCBfX2luaXQ7CiAgICB2b2lkICpfX2RhdGE7Cn0gX0xDX2NvcmVfcmVzcF90OwoK dHlwZWRlZiBzdHJ1Y3QgewoKICAgIF9MQ19vYmplY3RfdCBfX2hkcjsKCgogICAgaW50IF9fbmxf bGFuZ2luZm87CiAgICBpbnQgX19sb2NhbGVjb252OwoKCiAgICBpbnQgX19pbml0OwogICAgdm9p ZCAqX19kYXRhOwp9IF9MQ19jb3JlX2xvY2FsZV90OwojIDQ0ICIvdXNyL2luY2x1ZGUvc3lzL2xv Y2FsZWRlZi5oIiAyIDMgNAojIDEgImluY2x1ZGUvbG9jYWxlLmgiIDEgMyA0CiMgNjAgImluY2x1 ZGUvbG9jYWxlLmgiIDMgNApzdHJ1Y3QgbGNvbnYgewogICBjaGFyICpkZWNpbWFsX3BvaW50Owog ICBjaGFyICp0aG91c2FuZHNfc2VwOwogICBjaGFyICpncm91cGluZzsKICAgY2hhciAqaW50X2N1 cnJfc3ltYm9sOwogICBjaGFyICpjdXJyZW5jeV9zeW1ib2w7CiAgIGNoYXIgKm1vbl9kZWNpbWFs X3BvaW50OwogICBjaGFyICptb25fdGhvdXNhbmRzX3NlcDsKICAgY2hhciAqbW9uX2dyb3VwaW5n OwogICBjaGFyICpwb3NpdGl2ZV9zaWduOwogICBjaGFyICpuZWdhdGl2ZV9zaWduOwogICBjaGFy IGludF9mcmFjX2RpZ2l0czsKICAgY2hhciBmcmFjX2RpZ2l0czsKICAgY2hhciBwX2NzX3ByZWNl ZGVzOwogICBjaGFyIHBfc2VwX2J5X3NwYWNlOwogICBjaGFyIG5fY3NfcHJlY2VkZXM7CiAgIGNo YXIgbl9zZXBfYnlfc3BhY2U7CiAgIGNoYXIgcF9zaWduX3Bvc247CiAgIGNoYXIgbl9zaWduX3Bv c247CgoKICAgY2hhciAqbGVmdF9wYXJlbnRoZXNpczsKICAgY2hhciAqcmlnaHRfcGFyZW50aGVz aXM7CgoKCgoKCiAgIGNoYXIgaW50X3BfY3NfcHJlY2VkZXM7CiAgIGNoYXIgaW50X3Bfc2VwX2J5 X3NwYWNlOwogICBjaGFyIGludF9uX2NzX3ByZWNlZGVzOwogICBjaGFyIGludF9uX3NlcF9ieV9z cGFjZTsKICAgY2hhciBpbnRfcF9zaWduX3Bvc247CiAgIGNoYXIgaW50X25fc2lnbl9wb3NuOwoj IDEwMyAiaW5jbHVkZS9sb2NhbGUuaCIgMyA0Cn0gOwojIDExOSAiaW5jbHVkZS9sb2NhbGUuaCIg MyA0CnN0cnVjdCBsY29udiAqbG9jYWxlY29udih2b2lkKTsKY2hhciAqc2V0bG9jYWxlKGludCwg Y29uc3QgY2hhciAqKTsKCgoKCgp0eXBlZGVmIHN0cnVjdCBsY29udiBsY29udjsKIyA0NSAiL3Vz ci9pbmNsdWRlL3N5cy9sb2NhbGVkZWYuaCIgMiAzIDQKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9s b2NhbGVkZWYzMS5oIiAxIDMgNAojIDM5ICIvdXNyL2luY2x1ZGUvc3lzL2xvY2FsZWRlZjMxLmgi IDMgNAp0eXBlZGVmIHN0cnVjdCBjb2xkZXNjIHsKICAgICAgICBzaG9ydCBjZF9zdHJvZmY7CiAg ICAgICAgc2hvcnQgY2RfcmVwb2ZmOwogICAgICAgIHNob3J0IGNkX2N2YWw7CiAgICAgICAgc2hv cnQgY2RfY3VuaXE7Cn0gY29sZGVzY190OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgY29sbGF0aW9uX3Rh YmxlIHsKICAgICAgICBzaG9ydCBsY192ZXJzaW9uOwogICAgICAgIHNob3J0IGxjX2xlbmd0aDsK ICAgICAgICBjaGFyICpsY19sb2NhbGVfbmFtZTsKICAgICAgICBpbnQgbGVuX2NvbGxhdGU7CiAg ICAgICAgc2hvcnQgKmxjX2NvbGxhdGU7CiAgICAgICAgaW50IGxlbl9jb2x1bmlxOwogICAgICAg IHNob3J0ICpsY19jb2x1bmlxOwogICAgICAgIGludCBsZW5fY29sZGVzYzsKICAgICAgICBjb2xk ZXNjX3QgKmxjX2NvbGRlc2M7CiAgICAgICAgaW50IGxlbl9zdHJpbmdzOwogICAgICAgIHdjaGFy X3QgKmxjX3N0cmluZ3M7CiAgICAgICAgaW50IGhpZ2hfY3ZhbHVlOwp9IGNvbF90OwoKCgoKCgoK dHlwZWRlZiBzdHJ1Y3QgY2hhcl9jbGFzc2lmaWNhdGlvbl90YWJsZSB7CiAgICAgICAgc2hvcnQg bGNfdmVyc2lvbjsKICAgICAgICBzaG9ydCBsY19sZW5ndGg7CiAgICAgICAgc2hvcnQgbGNfY29k ZV90eXBlOwogICAgICAgIHNob3J0IG1iX2N1cl9tYXg7CiAgICAgICAgc2hvcnQgbWJfY3VyX21p bjsKICAgICAgICBzaG9ydCBsY19kc3Bfd2lkdGg7CiAgICAgICAgY2hhciAqbGNfbG9jYWxlX25h bWU7CiAgICAgICAgaW50IGxlbl9jYXNlY29udjsKICAgICAgICB3Y2hhcl90ICpsY19jYXNlY29u djsKICAgICAgICBpbnQgbGVuX2N0eXBlOwogICAgICAgIHVuc2lnbmVkIHNob3J0ICpsY19jdHlw ZTsKfSBjdHlwZV90OwoKCgoKCnR5cGVkZWYgc3RydWN0IGxjX21vbmV0YXJ5X3RhYmxlIHsKICAg ICAgICBzaG9ydCBsY192ZXJzaW9uOwogICAgICAgIHNob3J0IGxjX2xlbmd0aDsKICAgICAgICBj aGFyICpsY19sb2NhbGVfbmFtZTsKICAgICAgICBjaGFyICppbnRfY3Vycl9zeW1ib2w7CiAgICAg ICAgY2hhciAqY3VycmVuY3lfc3ltYm9sOwogICAgICAgIGNoYXIgKm1vbl9kZWNpbWFsX3BvaW50 OwogICAgICAgIGNoYXIgKm1vbl90aG91c2FuZHNfc2VwOwogICAgICAgIGNoYXIgKm1vbl9ncm91 cGluZzsKICAgICAgICBjaGFyICpwb3NpdGl2ZV9zaWduOwogICAgICAgIGNoYXIgKm5lZ2F0aXZl X3NpZ247CiAgICAgICAgY2hhciBpbnRfZnJhY19kaWdpdHM7CiAgICAgICAgY2hhciBmcmFjX2Rp Z2l0czsKICAgICAgICBjaGFyIHBfY3NfcHJlY2VkZXM7CiAgICAgICAgY2hhciBwX3NlcF9ieV9z cGFjZTsKICAgICAgICBjaGFyIG5fY3NfcHJlY2VkZXM7CiAgICAgICAgY2hhciBuX3NlcF9ieV9z cGFjZTsKICAgICAgICBjaGFyIHBfc2lnbl9wb3NuOwogICAgICAgIGNoYXIgbl9zaWduX3Bvc247 Cn0gbW9uX3Q7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgbnVtZXJpY190YWJsZSB7CiAgICAgICAgc2hv cnQgbGNfdmVyc2lvbjsKICAgICAgICBzaG9ydCBsY19sZW5ndGg7CiAgICAgICAgY2hhciAqbGNf bG9jYWxlX25hbWU7CiAgICAgICAgY2hhciAqZGVjaW1hbF9wb2ludDsKICAgICAgICBjaGFyICp0 aG91c2FuZHNfc2VwOwogICAgICAgIGNoYXIgKmdyb3VwaW5nOwp9IG51bV90OwoKCgoKCnR5cGVk ZWYgc3RydWN0IGxjX21lc3NhZ2VzX3RhYmxlIHsKICAgICAgICBzaG9ydCBsY192ZXJzaW9uOwog ICAgICAgIHNob3J0IGxjX2xlbmd0aDsKICAgICAgICBjaGFyICpsY19sb2NhbGVfbmFtZTsKICAg ICAgICBjaGFyICptZXNzYWdlczsKICAgICAgICBjaGFyICp5ZXNfc3RyaW5nOwogICAgICAgIGNo YXIgKm5vX3N0cmluZzsKfSBtc2dfdDsKCgoKCgp0eXBlZGVmIHN0cnVjdCBsY190aW1lX3RhYmxl IHsKICAgICAgICBzaG9ydCBsY192ZXJzaW9uOwogICAgICAgIHNob3J0IGxjX2xlbmd0aDsKICAg ICAgICBjaGFyICpsY19sb2NhbGVfbmFtZTsKICAgICAgICBjaGFyICp0X2ZtdDsKICAgICAgICBj aGFyICpkX2ZtdDsKICAgICAgICBjaGFyICpubGxkYXRlOwogICAgICAgIGNoYXIgKmRfdF9mbXQ7 CiAgICAgICAgY2hhciAqYWJkYXk7CiAgICAgICAgY2hhciAqZGF5OwogICAgICAgIGNoYXIgKmFi bW9uOwogICAgICAgIGNoYXIgKm1vbjsKCgoKCiAgICAgICAgY2hhciAqbWlzYzsKICAgICAgICBj aGFyICp0c3RyczsKICAgICAgICBjaGFyICp0dW5pdHM7CgoKCiAgICAgICAgY2hhciAqeWVhcjsK ICAgICAgICBjaGFyICphbV9wbTsKfSB0aW1fdDsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3Qgd2NoYXJf bWFwcGluZ190YWJsZSB7CiAgICAgICAgc2hvcnQgbGNfdmVyc2lvbjsKICAgICAgICBzaG9ydCBs Y19sZW5ndGg7CiAgICAgICAgY2hhciAqbGNfaWRlbnRpZmllcjsKfSBtYXBfdDsKIyAxODMgIi91 c3IvaW5jbHVkZS9zeXMvbG9jYWxlZGVmMzEuaCIgMyA0CnR5cGVkZWYgc3RydWN0IGxvY2FsZWlu Zm9fdGFibGUgewogICAgICAgIGNoYXIgbGNfbWFnMCwgbGNfbWFnMTsKICAgICAgICBzaG9ydCBs Y192ZXJzaW9uOwogICAgICAgIHNob3J0IGxjX2NvZGVfdHlwZTsKICAgICAgICBzaG9ydCBsY19s ZW5ndGg7CiAgICAgICAgY29sX3QgKmxjX2NvbHRibDsKICAgICAgICBjdHlwZV90ICpsY19jaHJ0 Ymw7CiAgICAgICAgbW9uX3QgKmxjX21vbnRibDsKICAgICAgICBudW1fdCAqbGNfbnVtdGJsOwog ICAgICAgIHRpbV90ICpsY190aW10Ymw7CiAgICAgICAgbXNnX3QgKmxjX21zZ3RibDsKICAgICAg ICBtYXBfdCAqbGNfbWFwdGJsOwp9IGxvY190OwojIDQ3ICIvdXNyL2luY2x1ZGUvc3lzL2xvY2Fs ZWRlZi5oIiAyIDMgNAojIDY2ICIvdXNyL2luY2x1ZGUvc3lzL2xvY2FsZWRlZi5oIiAzIDQKdHlw ZWRlZiBzdHJ1Y3QgewoKICAgIF9MQ19jb3JlX2NoYXJtYXBfdCBjb3JlOwoKICAgIGNoYXIgKmNt X2NzbmFtZTsKCiAgICBzaXplX3QgY21fbWJfY3VyX21heDsKICAgIHNpemVfdCBjbV9tYl9jdXJf bWluOwoKICAgIHVuc2lnbmVkIGNoYXIKICAgICAgICAgICAgIGNtX21heF9kaXNwX3dpZHRoOwoK CiAgICB1bnNpZ25lZAogICAgICAgIGNoYXIgKmNtX2NzdGFiOwoKICAgIHN0cnVjdCBfX0xDX2xv Y2FsZQogICAgICAgICAgICAgKmxvY19yZWM7CgogICAgdm9pZCAqX19tZXRoX3B0cjsKICAgIHZv aWQgKl9fZGF0YV9wdHI7Cgp9IF9MQ19jaGFybWFwX3Q7Cgp0eXBlZGVmIHN0cnVjdCBfTENfY2hh cm1hcF9vYmpoZGwgX0xDX2NoYXJtYXBfb2JqaGRsX3Q7CgpzdHJ1Y3QgX0xDX2NoYXJtYXBfb2Jq aGRsIHsKICAgICAgICBfTENfY2hhcm1hcF90ICpvYmo7CgoKICAgICAgICB2b2lkICooKiptZXRo KSgpOwoKCnN0cnVjdCBfTENfbG9jYWxlX29iamhkbCAqbG9jX2hkbDsKCgp9OwoKCgoKCgoKdHlw ZWRlZiBzdHJ1Y3QgewoKICAgIF9MQ19jb3JlX21vbmV0YXJ5X3QgY29yZTsKCiAgICBjaGFyICpp bnRfY3Vycl9zeW1ib2w7CiAgICBjaGFyICpjdXJyZW5jeV9zeW1ib2w7CiAgICBjaGFyICptb25f ZGVjaW1hbF9wb2ludDsKICAgIGNoYXIgKm1vbl90aG91c2FuZHNfc2VwOwogICAgY2hhciAqbW9u X2dyb3VwaW5nOwogICAgY2hhciAqcG9zaXRpdmVfc2lnbjsKICAgIGNoYXIgKm5lZ2F0aXZlX3Np Z247CiAgICBzaWduZWQgY2hhciBpbnRfZnJhY19kaWdpdHM7CiAgICBzaWduZWQgY2hhciBmcmFj X2RpZ2l0czsKICAgIHNpZ25lZCBjaGFyIHBfY3NfcHJlY2VkZXM7CiAgICBzaWduZWQgY2hhciBw X3NlcF9ieV9zcGFjZTsKICAgIHNpZ25lZCBjaGFyIG5fY3NfcHJlY2VkZXM7CiAgICBzaWduZWQg Y2hhciBuX3NlcF9ieV9zcGFjZTsKICAgIHNpZ25lZCBjaGFyIHBfc2lnbl9wb3NuOwogICAgc2ln bmVkIGNoYXIgbl9zaWduX3Bvc247CiAgICBjaGFyICpkZWJpdF9zaWduOwogICAgY2hhciAqY3Jl ZGl0X3NpZ247CiAgICBjaGFyICpsZWZ0X3BhcmVudGhlc2lzOwogICAgY2hhciAqcmlnaHRfcGFy ZW50aGVzaXM7CgogICAgc3RydWN0IF9fTENfbG9jYWxlCiAgICAgICAgICAgICAqbG9jX3JlYzsK CiAgICB2b2lkICpfX21ldGhfcHRyOwogICAgdm9pZCAqX19kYXRhX3B0cjsKCgogICAgc2lnbmVk IGNoYXIgaW50X3BfY3NfcHJlY2VkZXM7CiAgICBzaWduZWQgY2hhciBpbnRfcF9zZXBfYnlfc3Bh Y2U7CiAgICBzaWduZWQgY2hhciBpbnRfbl9jc19wcmVjZWRlczsKICAgIHNpZ25lZCBjaGFyIGlu dF9uX3NlcF9ieV9zcGFjZTsKICAgIHNpZ25lZCBjaGFyIGludF9wX3NpZ25fcG9zbjsKICAgIHNp Z25lZCBjaGFyIGludF9uX3NpZ25fcG9zbjsKIyAxNTYgIi91c3IvaW5jbHVkZS9zeXMvbG9jYWxl ZGVmLmgiIDMgNAp9IF9MQ19tb25ldGFyeV90OwoKdHlwZWRlZiBzdHJ1Y3QgX0xDX21vbmV0YXJ5 X29iamhkbCBfTENfbW9uZXRhcnlfb2JqaGRsX3Q7CnN0cnVjdCBfTENfbW9uZXRhcnlfb2JqaGRs IHsKICAgICAgICBfTENfbW9uZXRhcnlfdCAqb2JqOwoKCiAgICAgICAgdm9pZCAqKCoqbWV0aCko KTsKCgpzdHJ1Y3QgX0xDX2xvY2FsZV9vYmpoZGwgKmxvY19oZGw7CgoKfTsKCgoKCgoKdHlwZWRl ZiBzdHJ1Y3QgewoKICAgIF9MQ19jb3JlX251bWVyaWNfdCBjb3JlOwoKICAgIGNoYXIgKmRlY2lt YWxfcG9pbnQ7CiAgICBjaGFyICp0aG91c2FuZHNfc2VwOwogICAgdW5zaWduZWQKICAgICAgICBj aGFyICpncm91cGluZzsKCiAgICBzdHJ1Y3QgX19MQ19sb2NhbGUKICAgICAgICAgICAgICpsb2Nf cmVjOwoKICAgIHZvaWQgKl9fbWV0aF9wdHI7CiAgICB2b2lkICpfX2RhdGFfcHRyOwoKfSBfTENf bnVtZXJpY190OwoKdHlwZWRlZiBzdHJ1Y3QgX0xDX251bWVyaWNfb2JqaGRsIF9MQ19udW1lcmlj X29iamhkbF90OwpzdHJ1Y3QgX0xDX251bWVyaWNfb2JqaGRsIHsKICAgICAgICBfTENfbnVtZXJp Y190ICpvYmo7CgoKICAgICAgICB2b2lkICooKiptZXRoKSgpOwoKCnN0cnVjdCBfTENfbG9jYWxl X29iamhkbCAqbG9jX2hkbDsKCgp9OwoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewoKICAgIF9MQ19j b3JlX3Jlc3BfdCBjb3JlOwoKICAgIGNoYXIgKnllc2V4cHI7CiAgICBjaGFyICpub2V4cHI7CiAg ICBjaGFyICp5ZXNzdHI7CiAgICBjaGFyICpub3N0cjsKCiAgICBzdHJ1Y3QgX19MQ19sb2NhbGUK ICAgICAgICAgICAgICpsb2NfcmVjOwoKICAgIHZvaWQgKl9fbWV0aF9wdHI7CiAgICB2b2lkICpf X2RhdGFfcHRyOwoKfSBfTENfcmVzcF90OwoKdHlwZWRlZiBzdHJ1Y3QgX0xDX3Jlc3Bfb2JqaGRs IF9MQ19yZXNwX29iamhkbF90OwpzdHJ1Y3QgX0xDX3Jlc3Bfb2JqaGRsIHsKICAgICAgICBfTENf cmVzcF90ICpvYmo7CgoKICAgICAgICB2b2lkICooKiptZXRoKSgpOwoKCnN0cnVjdCBfTENfbG9j YWxlX29iamhkbCAqbG9jX2hkbDsKCgp9OwoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewoKICAgIF9M Q19jb3JlX3RpbWVfdCBjb3JlOwoKICAgIGNoYXIgKmRfZm10OwogICAgY2hhciAqdF9mbXQ7CiAg ICBjaGFyICpkX3RfZm10OwogICAgY2hhciAqdF9mbXRfYW1wbTsKICAgIGNoYXIgKmFiZGF5Wzdd OwogICAgY2hhciAqZGF5WzddOwogICAgY2hhciAqYWJtb25bMTJdOwogICAgY2hhciAqbW9uWzEy XTsKICAgIGNoYXIgKmFtX3BtWzJdOwogICAgY2hhciAqZXJhOwogICAgY2hhciAqZXJhX3llYXI7 CiAgICBjaGFyICplcmFfZF9mbXQ7CiAgICBjaGFyICphbHRfZGlnaXRzOwogICAgY2hhciAqZXJh X2RfdF9mbXQ7CiAgICBjaGFyICplcmFfdF9mbXQ7CgogICAgc3RydWN0IF9fTENfbG9jYWxlCiAg ICAgICAgICAgICAqbG9jX3JlYzsKCiAgICB2b2lkICpfX21ldGhfcHRyOwogICAgdm9pZCAqX19k YXRhX3B0cjsKCn0gX0xDX3RpbWVfdDsKCnR5cGVkZWYgc3RydWN0IF9MQ190aW1lX29iamhkbCBf TENfdGltZV9vYmpoZGxfdDsKc3RydWN0IF9MQ190aW1lX29iamhkbCB7CiAgICAgICAgX0xDX3Rp bWVfdCAqb2JqOwoKCiAgICAgICAgdm9pZCAqKCoqbWV0aCkoKTsKCgpzdHJ1Y3QgX0xDX2xvY2Fs ZV9vYmpoZGwgKmxvY19oZGw7CgoKfTsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgdW5zaWdu ZWQKICAgICAgICBzaG9ydCBuWzQgKzFdOwp9IF9MQ193ZWlnaHRfdDsKCgoKCgoKdHlwZWRlZiBz dHJ1Y3QgewoKICAgIGNoYXIgKmNlX3N5bTsKICAgIF9MQ193ZWlnaHRfdCBjZV93Z3Q7Cgp9IF9M Q19jb2xsZWxfdDsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgX0xDX3dlaWdodF90IGN0X3dn dDsKCgogICAgX0xDX2NvbGxlbF90ICpjdF9jb2xsZWw7Cgp9IF9MQ19jb2x0YmxfdDsKIyAzMzUg Ii91c3IvaW5jbHVkZS9zeXMvbG9jYWxlZGVmLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCB7CiAgICBj aGFyICp0Z3Rfd2d0X3N0cls0ICsxXTsKCgp9IF9MQ19zdWJzX3Q7CgoKCgoKCgp0eXBlZGVmIHN0 cnVjdCB7CgogICAgX0xDX2NvcmVfY29sbGF0ZV90IGNvcmU7CgogICAgdW5zaWduZWQKICAgICAg ICBjaGFyIGNvX25vcmQ7CgogICAgX0xDX3dlaWdodF90IGNvX3NvcnQ7CgoKICAgIHdjaGFyX3Qg Y29fd2NfbWluOwogICAgd2NoYXJfdCBjb193Y19tYXg7CgogICAgd2NoYXJfdCBjb19jb2xfbWlu OwogICAgd2NoYXJfdCBjb19jb2xfbWF4OwoKICAgIF9MQ19jb2x0YmxfdCAqY29fY29sdGJsOwoK ICAgIHVuc2lnbmVkCiAgICAgICAgY2hhciBjb19uc3ViczsKICAgIF9MQ19zdWJzX3QgKmNvX3N1 YnM7CgogICAgdW5zaWduZWQKICAgICAgICBzaG9ydCBjb19zcGVjaWFsOwoKCgoKICAgIHN0cnVj dCBfX0xDX2xvY2FsZQogICAgICAgICAgICAgICAgKmxvY19yZWM7CgogICAgdm9pZCAqX19tZXRo X3B0cjsKICAgIHZvaWQgKl9fZGF0YV9wdHI7Cgp9IF9MQ19jb2xsYXRlX3Q7Cgp0eXBlZGVmIHN0 cnVjdCBfTENfY29sbGF0ZV9vYmpoZGwgX0xDX2NvbGxhdGVfb2JqaGRsX3Q7CnN0cnVjdCBfTENf Y29sbGF0ZV9vYmpoZGwgewogICAgICAgIF9MQ19jb2xsYXRlX3QgKm9iajsKCgogICAgICAgIHZv aWQgKigqKm1ldGgpKCk7CgoKc3RydWN0IF9MQ19sb2NhbGVfb2JqaGRsICpsb2NfaGRsOwoKCn07 CiMgNDA4ICIvdXNyL2luY2x1ZGUvc3lzL2xvY2FsZWRlZi5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3Qg ewoKICAgIGNoYXIgKm5hbWU7CiAgICB1bnNpZ25lZAogICAgICAgIGludCBtYXNrOwoKfSBfTENf Y2xhc3NubV90OwoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewoKICBfTENfY29yZV9jdHlwZV90IGNv cmU7CgoKICB3Y2hhcl90IG1pbl93YzsKICB3Y2hhcl90IG1heF93YzsKCgogIHdjaGFyX3QgKnVw cGVyOwogIHdjaGFyX3QgKmxvd2VyOwoKCiAgdW5zaWduZWQKICAgICAgaW50ICptYXNrOwogIHVu c2lnbmVkCiAgICAgIGludCAqcW1hc2s7CiAgdW5zaWduZWQKICAgICAgY2hhciAqcWlkeDsKCgog IHVuc2lnbmVkCiAgICAgIGNoYXIgbmNsYXNzZXM7CiBfTENfY2xhc3NubV90ICpjbGFzc25tczsK CiAgICBzdHJ1Y3QgX19MQ19sb2NhbGUKICAgICAgICAgICAgICAgKmxvY19yZWM7CgogICAgdm9p ZCAqX19tZXRoX3B0cjsKICAgIHZvaWQgKl9fZGF0YV9wdHI7Cgp9IF9MQ19jdHlwZV90OwoKdHlw ZWRlZiBzdHJ1Y3QgX0xDX2N0eXBlX29iamhkbCBfTENfY3R5cGVfb2JqaGRsX3Q7CnN0cnVjdCBf TENfY3R5cGVfb2JqaGRsIHsKICAgICAgICBfTENfY3R5cGVfdCAqb2JqOwoKCiAgICAgICAgdm9p ZCAqKCoqbWV0aCkoKTsKCgpzdHJ1Y3QgX0xDX2xvY2FsZV9vYmpoZGwgKmxvY19oZGw7CgoKfTsK IyA0ODEgIi91c3IvaW5jbHVkZS9zeXMvbG9jYWxlZGVmLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBf X0xDX2xvY2FsZSB7CgogICAgX0xDX2NvcmVfbG9jYWxlX3QgY29yZTsKCiAgICBjaGFyICpubF9p bmZvWzYzXTsKICAgIHN0cnVjdCBsY29udiAqbmxfbGNvbnY7CgogICAgX0xDX2NoYXJtYXBfb2Jq aGRsX3QgbGNfY2hhcm1hcDsKICAgIF9MQ19jb2xsYXRlX29iamhkbF90IGxjX2NvbGxhdGU7CiAg ICBfTENfY3R5cGVfb2JqaGRsX3QgbGNfY3R5cGU7CiAgICBfTENfbW9uZXRhcnlfb2JqaGRsX3Qg bGNfbW9uZXRhcnk7CiAgICBfTENfbnVtZXJpY19vYmpoZGxfdCBsY19udW1lcmljOwogICAgX0xD X3Jlc3Bfb2JqaGRsX3QgbGNfcmVzcDsKICAgIF9MQ190aW1lX29iamhkbF90IGxjX3RpbWU7Cgog ICAgc3RydWN0IF9fTENfbG9jYWxlICpsb2NfcmVjOwoKCiAgICB2b2lkICpfX21ldGhfcHRyOwog ICAgdm9pZCAqX19kYXRhX3B0cjsKCiAgICBjaGFyICpfX25sX3llc3N0cjsKICAgIGNoYXIgKl9f bmxfbm9zdHI7CiAgICBjaGFyICpfX25sX2NybmN5c3RyOwoKfSBfTENfbG9jYWxlX3Q7Cgp0eXBl ZGVmIHN0cnVjdCBfTENfbG9jYWxlX29iamhkbCBfTENfbG9jYWxlX29iamhkbF90OwpzdHJ1Y3Qg X0xDX2xvY2FsZV9vYmpoZGwgewogICAgICAgIF9MQ19sb2NhbGVfdCAqb2JqOwoKCiAgICAgICAg dm9pZCAqKCoqbWV0aCkoKTsKCgpzdHJ1Y3QgX0xDX2xvY2FsZV9vYmpoZGwgKmxvY19oZGw7CgoK fTsKIyA1MjggIi91c3IvaW5jbHVkZS9zeXMvbG9jYWxlZGVmLmgiIDMgNAp0eXBlZGVmIHN0cnVj dCBfTENfb2JqZWN0X2hhbmRsZSBfTENfb2JqZWN0X2hhbmRsZV90OwpzdHJ1Y3QgX0xDX29iamVj dF9oYW5kbGUgewogICAgdW5pb24gewogICAgICAgIF9MQ19vYmplY3RfdCBsY19vYmplY3Q7CiAg ICAgICAgX0xDX2xvY2FsZV9vYmpoZGxfdCBsY19sb2NhbGU7CiAgICAgICAgX0xDX2NoYXJtYXBf b2JqaGRsX3QgbGNfY2hhcm1hcDsKICAgICAgICBfTENfY29sbGF0ZV9vYmpoZGxfdCBsY19jb2xs YXRlOwogICAgICAgIF9MQ19jdHlwZV9vYmpoZGxfdCBsY19jdHlwZTsKICAgICAgICBfTENfbW9u ZXRhcnlfb2JqaGRsX3QgbGNfbW9uZXRhcnk7CiAgICAgICAgX0xDX251bWVyaWNfb2JqaGRsX3Qg bGNfbnVtZXJpYzsKICAgICAgICBfTENfcmVzcF9vYmpoZGxfdCBsY19yZXNwOwogICAgICAgIF9M Q190aW1lX29iamhkbF90IGxjX3RpbWU7CiAgICB9IG9iajsKCgogICAgdm9pZCAqKCoqbWV0aCko KTsKCgpzdHJ1Y3QgX0xDX2xvY2FsZV9vYmpoZGwgKmxvY19oZGw7CgoKfTsKCgp0eXBlZGVmIHN0 cnVjdCB7CiAgICBfTENfb2JqZWN0X3QgaGRyOwogICAgX0xDX2xvY2FsZV9vYmpoZGxfdCBoYW5k bGU7Cn0gX0xDX2xvYWRfb2JqZWN0X3Q7CgoKCgoKCgpleHRlcm4gX0xDX2NoYXJtYXBfb2JqaGRs X3QgX19sY19jaGFybWFwOwpleHRlcm4gX0xDX2NvbGxhdGVfb2JqaGRsX3QgX19sY19jb2xsYXRl OwpleHRlcm4gX0xDX2N0eXBlX29iamhkbF90IF9fbGNfY3R5cGU7CmV4dGVybiBfTENfbW9uZXRh cnlfb2JqaGRsX3QgX19sY19tb25ldGFyeTsKZXh0ZXJuIF9MQ19udW1lcmljX29iamhkbF90IF9f bGNfbnVtZXJpYzsKZXh0ZXJuIF9MQ19yZXNwX29iamhkbF90IF9fbGNfcmVzcDsKZXh0ZXJuIF9M Q190aW1lX29iamhkbF90IF9fbGNfdGltZTsKZXh0ZXJuIF9MQ19sb2NhbGVfb2JqaGRsX3QgX19s Y19sb2NhbGU7CiMgNTM5ICJpbmNsdWRlL3N0ZGxpYi5oIiAyIDMgNAojIDU1MSAiaW5jbHVkZS9z dGRsaWIuaCIgMyA0CmV4dGVybiBjaGFyICpvcHRhcmc7CmV4dGVybiBpbnQgb3B0aW5kOwpleHRl cm4gaW50IG9wdGVycjsKIyA1NjkgImluY2x1ZGUvc3RkbGliLmgiIDMgNAogICAgICAgIGV4dGVy biBmbG9hdCBhdG9mZihjaGFyICopOwogICAgICAgIGV4dGVybiBpbnQgc2V0ZW52KGNvbnN0IGNo YXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOwogICAgICAgIGV4dGVybiBpbnQgdW5zZXRlbnYoY29u c3QgY2hhciAqKTsKICAgICAgICBleHRlcm4gdm9pZCBpbXVsX2RibChsb25nLCBsb25nLCBsb25n ICopOwogICAgICAgIGV4dGVybiB2b2lkIHVtdWxfZGJsKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVk IGxvbmcsIHVuc2lnbmVkIGxvbmcgKik7CiAgICAgICAgZXh0ZXJuIGludCBvbl9leGl0KHZvaWQg KCopKGludCwgdm9pZCAqKSwgdm9pZCAqKTsKIyA1OTkgImluY2x1ZGUvc3RkbGliLmgiIDMgNAog ICAgICAgIGV4dGVybiBkb3VibGUgd2NzdG9kKGNvbnN0IHdjaGFyX3QgKiwgd2NoYXJfdCAqKik7 CiAgICAgICAgZXh0ZXJuIGxvbmcgaW50IHdjc3RvbChjb25zdCB3Y2hhcl90ICosIHdjaGFyX3Qg KiosIGludCk7CiAgICAgICAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHdjc3RvdWwoY29uc3Qg d2NoYXJfdCAqLCB3Y2hhcl90ICoqLCBpbnQpOwoKICAgICAgICBleHRlcm4gaW50IHJwbWF0Y2go Y29uc3QgY2hhciAqKTsKICAgICAgICBleHRlcm4gaW50IGNsZWFyZW52KHZvaWQpOwogICAgICAg IGV4dGVybiBpbnQgZ2V0b3B0KGludCwgY2hhciogY29uc3QqLCBjb25zdCBjaGFyKik7CiAgICAg ICAgZXh0ZXJuIGNoYXIgKmdldHBhc3MoY29uc3QgY2hhciAqKTsKCiAgICAgICAgZXh0ZXJuIGlu dCB0dHlzbG90KHZvaWQpOwogICAgICAgIGV4dGVybiB2b2lkICp2YWxsb2Moc2l6ZV90KTsKIyA4 MSAiLi4vLi4vZ2NjLTMuMi4yL2djYy90c3lzdGVtLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvdW5p c3RkLmgiIDEgMyA0CiMgNTQgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CiMgMSAiL3Vzci9p bmNsdWRlL3N5cy9hY2Nlc3MuaCIgMSAzIDQKIyA4NiAiL3Vzci9pbmNsdWRlL3N5cy9hY2Nlc3Mu aCIgMyA0CiAgICAgICAgZXh0ZXJuIGNoYXIgKmFjbF9nZXQoY2hhciAqKTsKICAgICAgICBleHRl cm4gY2hhciAqYWNsX2ZnZXQoaW50KTsKICAgICAgICBleHRlcm4gaW50IGFjbF9jaGcoY2hhciAq LCBpbnQsIGludCwgaW50KTsKICAgICAgICBleHRlcm4gaW50IGFjbF9mY2hnKGludCwgaW50LCBp bnQsIGludCk7CiAgICAgICAgZXh0ZXJuIGludCBhY2xfcHV0KGNoYXIgKiwgY2hhciAqLCBpbnQp OwogICAgICAgIGV4dGVybiBpbnQgYWNsX2ZwdXQoaW50LCBjaGFyICosIGludCk7CiAgICAgICAg ZXh0ZXJuIGludCBhY2xfc2V0KGNoYXIgKiwgaW50LCBpbnQsIGludCk7CiAgICAgICAgZXh0ZXJu IGludCBhY2xfZnNldChpbnQsIGludCwgaW50LCBpbnQpOwogICAgICAgIGV4dGVybiBpbnQgYWNj ZXNzeChjaGFyICosIGludCwgaW50KTsKIyA1NSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMg NAojIDEzNCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIGludCBhY2Nlc3MoY29u c3QgY2hhciAqLCBpbnQpOwpleHRlcm4gdW5zaWduZWQgaW50IGFsYXJtKHVuc2lnbmVkIGludCk7 CmV4dGVybiBpbnQgY2hkaXIoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBjaG93bihjb25zdCBj aGFyICosIHVpZF90LCBnaWRfdCk7CmV4dGVybiBpbnQgY2xvc2UoaW50KTsKZXh0ZXJuIGNoYXIg KmN0ZXJtaWQoY2hhciAqKTsKZXh0ZXJuIGludCBkdXAoaW50KTsKZXh0ZXJuIGludCBkdXAyKGlu dCwgaW50KTsKZXh0ZXJuIGludCBleGVjbChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4u KTsKZXh0ZXJuIGludCBleGVjdihjb25zdCBjaGFyICosIGNoYXIgKmNvbnN0IFtdKTsKZXh0ZXJu IGludCBleGVjbGUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7CmV4dGVybiBpbnQg ZXhlY3ZlKGNvbnN0IGNoYXIgKiwgY2hhciAqY29uc3QgW10sIGNoYXIgKmNvbnN0IFtdKTsKZXh0 ZXJuIGludCBleGVjbHAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7CmV4dGVybiBp bnQgZXhlY3ZwKGNvbnN0IGNoYXIgKiwgY2hhciAqY29uc3QgW10pOwpleHRlcm4gdm9pZCBfZXhp dChpbnQpOwpleHRlcm4gcGlkX3QgZm9yayh2b2lkKTsKZXh0ZXJuIGxvbmcgZnBhdGhjb25mKGlu dCwgaW50KTsKZXh0ZXJuIGNoYXIgKmdldGN3ZChjaGFyICosIHNpemVfdCk7CmV4dGVybiBnaWRf dCBnZXRlZ2lkKHZvaWQpOwpleHRlcm4gdWlkX3QgZ2V0ZXVpZCh2b2lkKTsKZXh0ZXJuIGdpZF90 IGdldGdpZCh2b2lkKTsKZXh0ZXJuIGludCBnZXRncm91cHMoaW50LCBnaWRfdCBbXSk7CmV4dGVy biBjaGFyICpnZXRsb2dpbih2b2lkKTsKCmV4dGVybiBwaWRfdCBnZXRwZ3JwKHZvaWQpOwoKZXh0 ZXJuIHBpZF90IGdldHBpZCh2b2lkKTsKZXh0ZXJuIHBpZF90IGdldHBwaWQodm9pZCk7CmV4dGVy biB1aWRfdCBnZXR1aWQodm9pZCk7CmV4dGVybiBpbnQgaXNhdHR5KGludCk7CmV4dGVybiBpbnQg bGluayhjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBvZmZfdCBsc2VlayhpbnQs IG9mZl90LCBpbnQpOwoKZXh0ZXJuIG9mZjY0X3QgbHNlZWs2NChpbnQsIG9mZjY0X3QsIGludCk7 CgpleHRlcm4gbG9uZyBwYXRoY29uZihjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBpbnQgcGF1 c2Uodm9pZCk7CmV4dGVybiBpbnQgcGlwZShpbnQgW10pOwoKZXh0ZXJuIGludCBwdGhyZWFkX2F0 Zm9yayh2b2lkICgqKSh2b2lkKSwgdm9pZCAoKikodm9pZCksIHZvaWQgKCopKHZvaWQpKTsKCmV4 dGVybiBzc2l6ZV90IHJlYWQoaW50LCB2b2lkICosIHNpemVfdCk7CmV4dGVybiBpbnQgcm1kaXIo Y29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBzZXRnaWQoZ2lkX3QpOwpleHRlcm4gaW50IHNldHBn aWQocGlkX3QsIHBpZF90KTsKZXh0ZXJuIHBpZF90IHNldHNpZCh2b2lkKTsKZXh0ZXJuIGludCBz ZXR1aWQodWlkX3QpOwpleHRlcm4gdW5zaWduZWQgaW50IHNsZWVwKHVuc2lnbmVkIGludCk7CmV4 dGVybiBsb25nIHN5c2NvbmYoaW50KTsKZXh0ZXJuIHBpZF90IHRjZ2V0cGdycChpbnQpOwpleHRl cm4gaW50IHRjc2V0cGdycChpbnQsIHBpZF90KTsKZXh0ZXJuIGNoYXIgKnR0eW5hbWUoaW50KTsK ZXh0ZXJuIGludCB1bmxpbmsoY29uc3QgY2hhciAqKTsKZXh0ZXJuIHNzaXplX3Qgd3JpdGUoaW50 LCBjb25zdCB2b2lkICosIHNpemVfdCk7CiMgMjM0ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMg NApleHRlcm4gY2hhciAqb3B0YXJnOwpleHRlcm4gaW50IG9wdGluZCwgb3B0ZXJyLCBvcHRvcHQ7 CiMgMjQ5ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNAogICAgICAgIGV4dGVybiBzaXplX3Qg Y29uZnN0cihpbnQsIGNoYXIqLCBzaXplX3QpOwogICAgICAgIGV4dGVybiBjaGFyICpjcnlwdChj b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CiAgICAgICAgZXh0ZXJuIHZvaWQgZW5jcnlwdChj aGFyICosIGludCk7CiAgICAgICAgZXh0ZXJuIGludCBmc3luYyhpbnQpOwogICAgICAgIGV4dGVy biBpbnQgZ2V0b3B0KGludCwgY2hhciogY29uc3QqLCBjb25zdCBjaGFyKik7CiAgICAgICAgZXh0 ZXJuIGludCBuaWNlKGludCk7CiAgICAgICAgZXh0ZXJuIHZvaWQgc3dhYihjb25zdCB2b2lkICos IHZvaWQgKiwgc3NpemVfdCk7CiAgICAgICAgZXh0ZXJuIGludCBjaHJvb3QoY29uc3QgY2hhciAq KTsKICAgICAgICBleHRlcm4gY2hhciAqY3VzZXJpZChjaGFyICopOwogICAgICAgIGV4dGVybiBj aGFyICpnZXRwYXNzKGNvbnN0IGNoYXIgKik7CiMgNTc4ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgi IDMgNAojIDEgIi91c3IvaW5jbHVkZS9zeXMvbG9ja2YuaCIgMSAzIDQKIyA0NSAiL3Vzci9pbmNs dWRlL3N5cy9sb2NrZi5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMSAzIDQK IyA0OCAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9zeXMv bW9kZS5oIiAxIDMgNAojIDQ5ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMiAzIDQKIyA2MiAi L3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMgNApzdHJ1Y3Qgc3RhdAp7CiAgICAgICAgZGV2X3Qg c3RfZGV2OwoKCgoKICAgICAgICBpbm9fdCBzdF9pbm87CgoKCgogICAgICAgIG1vZGVfdCBzdF9t b2RlOwoKICAgICAgICBubGlua190IHN0X25saW5rOwogICAgICAgIHVzaG9ydF90IHN0X2ZsYWc7 CgoKCgoKCiAgICAgICAgdWlkX3Qgc3RfdWlkOwogICAgICAgIGdpZF90IHN0X2dpZDsKCgogICAg ICAgIGRldl90IHN0X3JkZXY7CgoKCiAgICAgICAgb2ZmX3Qgc3Rfc2l6ZTsKCgoKICAgICAgICB0 aW1lX3Qgc3RfYXRpbWU7CiAgICAgICAgaW50IHN0X3NwYXJlMTsKICAgICAgICB0aW1lX3Qgc3Rf bXRpbWU7CiAgICAgICAgaW50IHN0X3NwYXJlMjsKICAgICAgICB0aW1lX3Qgc3RfY3RpbWU7CiAg ICAgICAgaW50IHN0X3NwYXJlMzsKICAgICAgICBibGtzaXplX3Qgc3RfYmxrc2l6ZTsKICAgICAg ICBibGtjbnRfdCBzdF9ibG9ja3M7CgoKICAgICAgICBpbnQgc3RfdmZzdHlwZTsKICAgICAgICB1 aW50X3Qgc3RfdmZzOwogICAgICAgIHVpbnRfdCBzdF90eXBlOwogICAgICAgIHVpbnRfdCBzdF9n ZW47CgoKICAgICAgICB1aW50X3Qgc3RfcmVzZXJ2ZWRbOV07CgoKCgp9OwojIDE3NCAiL3Vzci9p bmNsdWRlL3N5cy9zdGF0LmgiIDMgNApzdHJ1Y3Qgc3RhdDY0CnsKICAgICAgICBkZXZfdCBzdF9k ZXY7CgoKCgogICAgICAgIGlub190IHN0X2lubzsKICAgICAgICBtb2RlX3Qgc3RfbW9kZTsKICAg ICAgICBubGlua190IHN0X25saW5rOwogICAgICAgIHVzaG9ydF90IHN0X2ZsYWc7CiAgICAgICAg dWlkX3Qgc3RfdWlkOwogICAgICAgIGdpZF90IHN0X2dpZDsKICAgICAgICBkZXZfdCBzdF9yZGV2 OwoKCiAgICAgICAgc29mZl90IHN0X3NzaXplOwogICAgICAgIHRpbWVfdCBzdF9hdGltZTsKICAg ICAgICBpbnQgc3Rfc3BhcmUxOwogICAgICAgIHRpbWVfdCBzdF9tdGltZTsKICAgICAgICBpbnQg c3Rfc3BhcmUyOwogICAgICAgIHRpbWVfdCBzdF9jdGltZTsKICAgICAgICBpbnQgc3Rfc3BhcmUz OwogICAgICAgIGJsa3NpemVfdCBzdF9ibGtzaXplOwogICAgICAgIGJsa2NudF90IHN0X2Jsb2Nr czsKCgogICAgICAgIGludCBzdF92ZnN0eXBlOwogICAgICAgIHVpbnRfdCBzdF92ZnM7CiAgICAg ICAgdWludF90IHN0X3R5cGU7CiAgICAgICAgdWludF90IHN0X2dlbjsKICAgICAgICB1aW50X3Qg c3RfcmVzZXJ2ZWRbMTBdOwoKCgogICAgICAgIG9mZjY0X3Qgc3Rfc2l6ZTsKCn07CiMgMjI1ICIv dXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0CiAgICAgICAgZXh0ZXJuIG1vZGVfdCB1bWFzayht b2RlX3QpOwojIDI1MyAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMgNAogICAgICAgIGV4dGVy biBpbnQgbWtkaXIoY29uc3QgY2hhciAqLCBtb2RlX3QpOwogICAgICAgIGV4dGVybiBpbnQgc3Rh dChjb25zdCBjaGFyICosIHN0cnVjdCBzdGF0ICopOwogICAgICAgIGV4dGVybiBpbnQgZnN0YXQo aW50LCBzdHJ1Y3Qgc3RhdCAqKTsKCiAgICAgICAgZXh0ZXJuIGludCBzdGF0NjQoY29uc3QgY2hh ciAqLCBzdHJ1Y3Qgc3RhdDY0ICopOwogICAgICAgIGV4dGVybiBpbnQgZnN0YXQ2NChpbnQsIHN0 cnVjdCBzdGF0NjQgKik7CgoKICAgICAgICBleHRlcm4gaW50IGNobW9kKGNvbnN0IGNoYXIgKiwg bW9kZV90KTsKCgogICAgICAgIGV4dGVybiBpbnQgZmNobW9kKGludCwgbW9kZV90KTsKICAgICAg ICBleHRlcm4gaW50IGxzdGF0KGNvbnN0IGNoYXIgKiwgc3RydWN0IHN0YXQgKik7CgogICAgICAg IGV4dGVybiBpbnQgbHN0YXQ2NChjb25zdCBjaGFyICosIHN0cnVjdCBzdGF0NjQgKik7CgoKICAg ICAgICBleHRlcm4gaW50IG1rbm9kKGNvbnN0IGNoYXIgKiwgbW9kZV90LCBkZXZfdCk7CgoKCgoK ICAgICAgICBleHRlcm4gaW50IG1rZmlmbyhjb25zdCBjaGFyICosIG1vZGVfdCk7CiMgNDYgIi91 c3IvaW5jbHVkZS9zeXMvbG9ja2YuaCIgMiAzIDQKIyA2MiAiL3Vzci9pbmNsdWRlL3N5cy9sb2Nr Zi5oIiAzIDQKICAgICAgICBleHRlcm4gaW50IGxvY2tmIChpbnQsIGludCwgb2ZmX3QpOwoKICAg ICAgICBleHRlcm4gaW50IGxvY2tmNjQgKGludCwgaW50LCBvZmY2NF90KTsKIyA1NzkgIi91c3Iv aW5jbHVkZS91bmlzdGQuaCIgMiAzIDQKIyA2MDYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0 CiAgICAgICAgZXh0ZXJuIGludCBicmsodm9pZCAqKTsKICAgICAgICBleHRlcm4gaW50IGZjaGRp cihpbnQpOwogICAgICAgIGV4dGVybiBpbnQgZmNob3duKGludCwgdWlkX3QsIGdpZF90KTsKICAg ICAgICBleHRlcm4gaW50IGZ0cnVuY2F0ZShpbnQsIG9mZl90KTsKCiAgICAgICAgZXh0ZXJuIGlu dCBmdHJ1bmNhdGU2NChpbnQsIG9mZjY0X3QpOwoKICAgICAgICBleHRlcm4gaW50IGdldGR0YWJs ZXNpemUodm9pZCk7CiAgICAgICAgZXh0ZXJuIGludCBnZXRob3N0bmFtZShjaGFyICosIHNpemVf dCk7CiAgICAgICAgZXh0ZXJuIGxvbmcgZ2V0aG9zdGlkKHZvaWQpOwogICAgICAgIGV4dGVybiBp bnQgZ2V0cGFnZXNpemUodm9pZCk7CiAgICAgICAgZXh0ZXJuIHBpZF90IGdldHBnaWQocGlkX3Qp OwogICAgICAgIGV4dGVybiBwaWRfdCBnZXRzaWQocGlkX3QpOwogICAgICAgIGV4dGVybiBjaGFy ICpnZXR3ZChjaGFyICopOwogICAgICAgIGV4dGVybiBpbnQgbGNob3duKGNvbnN0IGNoYXIgKiwg dWlkX3QsIGdpZF90KTsKICAgICAgICBleHRlcm4gaW50IHJlYWRsaW5rKGNvbnN0IGNoYXIgKiwg Y2hhciAqLCBzaXplX3QpOwoKCgogICAgICAgIGV4dGVybiB2b2lkICpzYnJrKGludHB0cl90KTsK CgoKCiAgICAgICAgZXh0ZXJuIHBpZF90IHNldHBncnAodm9pZCk7CgogICAgICAgIGV4dGVybiBp bnQgc2V0cmVnaWQoZ2lkX3QsIGdpZF90KTsKICAgICAgICBleHRlcm4gaW50IHNldHJldWlkKHVp ZF90LCB1aWRfdCk7CiAgICAgICAgZXh0ZXJuIGludCBzeW1saW5rKGNvbnN0IGNoYXIgKiwgY29u c3QgY2hhciAqKTsKICAgICAgICBleHRlcm4gdm9pZCBzeW5jKHZvaWQpOwogICAgICAgIGV4dGVy biBpbnQgdHJ1bmNhdGUoY29uc3QgY2hhciAqLCBvZmZfdCk7CgogICAgICAgIGV4dGVybiBpbnQg dHJ1bmNhdGU2NChjb25zdCBjaGFyICosIG9mZjY0X3QpOwoKICAgICAgICBleHRlcm4gdXNlY29u ZHNfdCB1YWxhcm0odXNlY29uZHNfdCwgdXNlY29uZHNfdCk7CiAgICAgICAgZXh0ZXJuIGludCB1 c2xlZXAodXNlY29uZHNfdCk7CiAgICAgICAgZXh0ZXJuIHBpZF90IHZmb3JrKHZvaWQpOwoKICAg ICAgICBleHRlcm4gaW50IGdldGxvZ2luX3IoY2hhciAqLCBzaXplX3QpOwogICAgICAgIGV4dGVy biBpbnQgdHR5bmFtZV9yKGludCwgY2hhciAqLCBzaXplX3QpOwoKCgoKCgogICAgICAgIGV4dGVy biBzc2l6ZV90IHByZWFkKGludCwgdm9pZCAqLCBzaXplX3QsIG9mZl90KTsKICAgICAgICBleHRl cm4gc3NpemVfdCBwd3JpdGUoaW50LCBjb25zdCB2b2lkICosIHNpemVfdCwgb2ZmX3QpOwoKICAg ICAgICBleHRlcm4gc3NpemVfdCBwcmVhZDY0KGludCwgdm9pZCAqLCBzaXplX3QsIG9mZjY0X3Qp OwogICAgICAgIGV4dGVybiBzc2l6ZV90IHB3cml0ZTY0KGludCwgY29uc3Qgdm9pZCAqLCBzaXpl X3QsIG9mZjY0X3QpOwojIDY2NiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIGNo YXIgKiplbnZpcm9uOwoKCgoKCiAgICAgICAgZXh0ZXJuIHBpZF90IGZfZm9yayh2b2lkKTsKIyA2 OTcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CiAgICAgICAgZXh0ZXJuIGludCBzZXRlZ2lk KGdpZF90KTsKICAgICAgICBleHRlcm4gaW50IHNldGV1aWQodWlkX3QpOwogICAgICAgIGV4dGVy biBpbnQgc2V0cmdpZChnaWRfdCk7CiAgICAgICAgZXh0ZXJuIGludCBzZXRydWlkKHVpZF90KTsK CiAgICAgICAgZXh0ZXJuIGludCBpb2N0bChpbnQsIGludCwgLi4uKTsKCgoKCgoKICAgICAgICBl eHRlcm4gaW50IHNldGdyb3VwcyhpbnQsIGdpZF90IFtdKTsKCiAgICAgICAgZXh0ZXJuIGludCBy ZWFkeChpbnQsIGNoYXIqLCB1bnNpZ25lZCwgbG9uZyk7CiAgICAgICAgZXh0ZXJuIGludCB3cml0 ZXgoaW50LCBjaGFyKiwgdW5zaWduZWQsIGxvbmcpOwoKCgoKCiAgICAgICAgZXh0ZXJuIG9mZl90 IGZjbGVhcihpbnQsIG9mZl90KTsKICAgICAgICBleHRlcm4gaW50IGZzeW5jX3JhbmdlKGludCwg aW50LCBvZmZfdCwgb2ZmX3QpOwoKICAgICAgICBleHRlcm4gb2ZmNjRfdCBmY2xlYXI2NChpbnQs IG9mZjY0X3QpOwogICAgICAgIGV4dGVybiBpbnQgZnN5bmNfcmFuZ2U2NChpbnQsIGludCwgb2Zm NjRfdCwgb2ZmNjRfdCk7CgogICAgICAgIGV4dGVybiBvZmZzZXRfdCBsbHNlZWsoaW50LCBvZmZz ZXRfdCwgaW50KTsKICAgICAgICBleHRlcm4gY2hhciAqIGdldHVzZXJzaGVsbCh2b2lkKTsKICAg ICAgICBleHRlcm4gdm9pZCBzZXR1c2Vyc2hlbGwodm9pZCk7CiAgICAgICAgZXh0ZXJuIHZvaWQg ZW5kdXNlcnNoZWxsKHZvaWQpOwogICAgICAgIGV4dGVybiBjaGFyICogZ2V0X2N1cnJlbnRfZGly X25hbWUodm9pZCk7CiAgICAgICAgZXh0ZXJuIGludCBzeXNmcyhpbnQsIC4uLik7CiAgICAgICAg ZXh0ZXJuIGludCBmZGF0YXN5bmMoaW50KTsKICAgICAgICBleHRlcm4gaW50IGZpbmZvKGNvbnN0 IGNoYXIgKiwgaW50LCB2b2lkICosIGludDMybG9uZzY0X3QpOwogICAgICAgIGV4dGVybiBpbnQg ZmZpbmZvKGludCwgaW50LCB2b2lkICosIGludDMybG9uZzY0X3QpOwojIDgyICIuLi8uLi9nY2Mt My4yLjIvZ2NjL3RzeXN0ZW0uaCIgMgoKCiMgMSAiaW5jbHVkZS9saW1pdHMuaCIgMSAzIDQKIyAx MSAiaW5jbHVkZS9saW1pdHMuaCIgMyA0CiMgMSAiaW5jbHVkZS9zeXNsaW1pdHMuaCIgMSAzIDQK CgoKCgoKIyAxICJpbmNsdWRlL2xpbWl0cy5oIiAxIDMgNAojIDEzMiAiaW5jbHVkZS9saW1pdHMu aCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAxIDMgNAojIDEzMyAiaW5jbHVkZS9s aW1pdHMuaCIgMiAzIDQKIyA4ICJpbmNsdWRlL3N5c2xpbWl0cy5oIiAyIDMgNAojIDEyICJpbmNs dWRlL2xpbWl0cy5oIiAyIDMgNAojIDg1ICIuLi8uLi9nY2MtMy4yLjIvZ2NjL3RzeXN0ZW0uaCIg MgoKCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzIDQKIyA5MiAiL3Vzci9pbmNsdWRlL3Rp bWUuaCIgMyA0CnN0cnVjdCB0bSB7CiAgICAgICAgaW50IHRtX3NlYzsKICAgICAgICBpbnQgdG1f bWluOwogICAgICAgIGludCB0bV9ob3VyOwogICAgICAgIGludCB0bV9tZGF5OwogICAgICAgIGlu dCB0bV9tb247CiAgICAgICAgaW50IHRtX3llYXI7CiAgICAgICAgaW50IHRtX3dkYXk7CiAgICAg ICAgaW50IHRtX3lkYXk7CiAgICAgICAgaW50IHRtX2lzZHN0Owp9OwojIDEzNCAiL3Vzci9pbmNs dWRlL3RpbWUuaCIgMyA0CiAgICBleHRlcm4gc2l6ZV90IHN0cmZ0aW1lKGNoYXIgKiwgc2l6ZV90 LCBjb25zdCBjaGFyICosIGNvbnN0IHN0cnVjdCB0bSAqKTsKICAgIGV4dGVybiBjbG9ja190IGNs b2NrKHZvaWQpOwogICAgZXh0ZXJuIGRvdWJsZSBkaWZmdGltZSh0aW1lX3QsIHRpbWVfdCk7CiAg ICBleHRlcm4gdGltZV90IG1rdGltZShzdHJ1Y3QgdG0gKik7CgogICAgZXh0ZXJuIHRpbWVfdCB0 aW1lKHRpbWVfdCAqKTsKCiAgICBleHRlcm4gY2hhciAqYXNjdGltZShjb25zdCBzdHJ1Y3QgdG0g Kik7CiAgICBleHRlcm4gY2hhciAqY3RpbWUoY29uc3QgdGltZV90ICopOwogICAgZXh0ZXJuIHN0 cnVjdCB0bSAqZ210aW1lKGNvbnN0IHRpbWVfdCAqKTsKICAgIGV4dGVybiBzdHJ1Y3QgdG0gKmxv Y2FsdGltZShjb25zdCB0aW1lX3QgKik7CiMgMTU0ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQK ICAgIGV4dGVybiBjaGFyICphc2N0aW1lX3IoY29uc3Qgc3RydWN0IHRtICosIGNoYXIgKik7CiAg ICBleHRlcm4gY2hhciAqY3RpbWVfcihjb25zdCB0aW1lX3QgKiwgY2hhciAqKTsKICAgIGV4dGVy biBzdHJ1Y3QgdG0gKmdtdGltZV9yKGNvbnN0IHRpbWVfdCAqLCBzdHJ1Y3QgdG0gKik7CiAgICBl eHRlcm4gc3RydWN0IHRtICpsb2NhbHRpbWVfcihjb25zdCB0aW1lX3QgKiwgc3RydWN0IHRtICop OwojIDE4MiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CmV4dGVybiBjaGFyICp0em5hbWVbXTsK CgoKCiAgICBleHRlcm4gdm9pZCB0enNldCh2b2lkKTsKCgoKCgogICAgZXh0ZXJuIGxvbmcgdGlt ZXpvbmU7CiAgICBleHRlcm4gaW50IGRheWxpZ2h0OwoKCgogICAgZXh0ZXJuIGNoYXIgKnN0cnB0 aW1lKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgdG0gKik7CgoKCgogICAgICAg IGV4dGVybiBpbnQgZ2V0ZGF0ZV9lcnI7CgoKCiAgICAgICAgZXh0ZXJuIHN0cnVjdCB0bSAqZ2V0 ZGF0ZShjb25zdCBjaGFyICopOwoKCgoKc3RydWN0IHRpbWVzcGVjIHsKICAgICAgICB0aW1lX3Qg dHZfc2VjOwogICAgICAgIGxvbmcgdHZfbnNlYzsKfTsKCnN0cnVjdCBpdGltZXJzcGVjIHsKICAg ICAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfaW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IHRpbWVzcGVj IGl0X3ZhbHVlOwp9OwoKCgoKZXh0ZXJuIGludCBjbG9ja19nZXRyZXMoY2xvY2tpZF90LCBzdHJ1 Y3QgdGltZXNwZWMgKik7CmV4dGVybiBpbnQgY2xvY2tfZ2V0dGltZShjbG9ja2lkX3QsIHN0cnVj dCB0aW1lc3BlYyAqKTsKZXh0ZXJuIGludCBjbG9ja19zZXR0aW1lKGNsb2NraWRfdCwgY29uc3Qg c3RydWN0IHRpbWVzcGVjICopOwpleHRlcm4gaW50IG5hbm9zbGVlcChjb25zdCBzdHJ1Y3QgdGlt ZXNwZWMgKiwgc3RydWN0IHRpbWVzcGVjICopOwoKZXh0ZXJuIGludCB0aW1lcl9jcmVhdGUoY2xv Y2tpZF90LCBzdHJ1Y3Qgc2lnZXZlbnQgKiwgdGltZXJfdCAqKTsKCgoKZXh0ZXJuIGludCB0aW1l cl9kZWxldGUodGltZXJfdCk7CmV4dGVybiBpbnQgdGltZXJfZ2V0dGltZSh0aW1lcl90LCBzdHJ1 Y3QgaXRpbWVyc3BlYyAqKTsKZXh0ZXJuIGludCB0aW1lcl9nZXRvdmVycnVuKHRpbWVyX3QpOwpl eHRlcm4gaW50IHRpbWVyX3NldHRpbWUodGltZXJfdCwgaW50LCBjb25zdCBzdHJ1Y3QgaXRpbWVy c3BlYyAqLCBzdHJ1Y3QgaXRpbWVyc3BlYyAqKTsKCgoKCgojIDEgImluY2x1ZGUvc3RkZGVmLmgi IDEgMyA0CiMgMjQ0ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMgNAojIDI1MyAiL3Vzci9pbmNs dWRlL3RpbWUuaCIgMyA0CiAgICAgICAgZXh0ZXJuIHVuc2lnbmVkIGNoYXIgKk5MY3RpbWUobG9u ZyAqKTsKICAgICAgICBleHRlcm4gdW5zaWduZWQgY2hhciAqTkxhc2N0aW1lKHN0cnVjdCB0bSAq KTsKICAgICAgICBleHRlcm4gY2hhciAqTkxzdHJ0aW1lKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBj aGFyICosIGNvbnN0IHN0cnVjdCB0bSAqKTsKIyA4OCAiLi4vLi4vZ2NjLTMuMi4yL2djYy90c3lz dGVtLmgiIDIKIyAzOCAiLi4vLi4vZ2NjLTMuMi4yL2djYy9saWJnY2MyLmMiIDIKCgoKCgoKIyAx ICIuLi8uLi9nY2MtMy4yLjIvZ2NjL2xpYmdjYzIuaCIgMQojIDI1ICIuLi8uLi9nY2MtMy4yLjIv Z2NjL2xpYmdjYzIuaCIKZXh0ZXJuIGludCBfX2djY19iY21wIChjb25zdCB1bnNpZ25lZCBjaGFy ICosIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiwgc2l6ZV90KTsKZXh0ZXJuIHZvaWQgX19jbGVhcl9j YWNoZSAoY2hhciAqLCBjaGFyICopOwpleHRlcm4gdm9pZCBfX2VwcmludGYgKGNvbnN0IGNoYXIg KiwgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIgKikKICBfX2F0dHJpYnV0 ZV9fICgoX19ub3JldHVybl9fKSk7CgpzdHJ1Y3QgYmI7CmV4dGVybiB2b2lkIF9fYmJfZXhpdF9m dW5jICh2b2lkKTsKZXh0ZXJuIHZvaWQgX19iYl9pbml0X2Z1bmMgKHN0cnVjdCBiYiAqKTsKZXh0 ZXJuIHZvaWQgX19iYl9mb3JrX2Z1bmMgKHZvaWQpOwpleHRlcm4gdm9pZCBfX2JiX3RyYWNlX2Z1 bmMgKHZvaWQpOwpleHRlcm4gdm9pZCBfX2JiX3RyYWNlX3JldCAodm9pZCk7CmV4dGVybiB2b2lk IF9fYmJfaW5pdF90cmFjZV9mdW5jIChzdHJ1Y3QgYmIgKiwgdW5zaWduZWQgbG9uZyk7CgpzdHJ1 Y3QgZXhjZXB0aW9uX2Rlc2NyaXB0b3I7CmV4dGVybiBzaG9ydCBpbnQgX19nZXRfZWhfdGFibGVf bGFuZ3VhZ2UgKHN0cnVjdCBleGNlcHRpb25fZGVzY3JpcHRvciAqKTsKZXh0ZXJuIHNob3J0IGlu dCBfX2dldF9laF90YWJsZV92ZXJzaW9uIChzdHJ1Y3QgZXhjZXB0aW9uX2Rlc2NyaXB0b3IgKik7 CiMgNjcgIi4uLy4uL2djYy0zLjIuMi9nY2MvbGliZ2NjMi5oIgp0eXBlZGVmIGludCBRSXR5cGUg X19hdHRyaWJ1dGVfXyAoKG1vZGUgKFFJKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBVUUl0eXBl IF9fYXR0cmlidXRlX18gKChtb2RlIChRSSkpKTsKdHlwZWRlZiBpbnQgSEl0eXBlIF9fYXR0cmli dXRlX18gKChtb2RlIChISSkpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgVUhJdHlwZSBfX2F0dHJp YnV0ZV9fICgobW9kZSAoSEkpKSk7CgoKdHlwZWRlZiBpbnQgU0l0eXBlIF9fYXR0cmlidXRlX18g KChtb2RlIChTSSkpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgVVNJdHlwZSBfX2F0dHJpYnV0ZV9f ICgobW9kZSAoU0kpKSk7CgoKdHlwZWRlZiBpbnQgREl0eXBlIF9fYXR0cmlidXRlX18gKChtb2Rl IChESSkpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgVURJdHlwZSBfX2F0dHJpYnV0ZV9fICgobW9k ZSAoREkpKSk7CiMgODkgIi4uLy4uL2djYy0zLjIuMi9nY2MvbGliZ2NjMi5oIgp0eXBlZGVmIGZs b2F0IFNGdHlwZSBfX2F0dHJpYnV0ZV9fICgobW9kZSAoU0YpKSk7CnR5cGVkZWYgZmxvYXQgREZ0 eXBlIF9fYXR0cmlidXRlX18gKChtb2RlIChERikpKTsKIyAxMjIgIi4uLy4uL2djYy0zLjIuMi9n Y2MvbGliZ2NjMi5oIgp0eXBlZGVmIGludCB3b3JkX3R5cGUgX19hdHRyaWJ1dGVfXyAoKG1vZGUg KF9fd29yZF9fKSkpOwojIDIxNCAiLi4vLi4vZ2NjLTMuMi4yL2djYy9saWJnY2MyLmgiCmV4dGVy biBESXR5cGUgX19tdWxkaTMgKERJdHlwZSwgREl0eXBlKTsKZXh0ZXJuIERJdHlwZSBfX2RpdmRp MyAoREl0eXBlLCBESXR5cGUpOwpleHRlcm4gVURJdHlwZSBfX3VkaXZkaTMgKFVESXR5cGUsIFVE SXR5cGUpOwpleHRlcm4gVURJdHlwZSBfX3Vtb2RkaTMgKFVESXR5cGUsIFVESXR5cGUpOwpleHRl cm4gREl0eXBlIF9fbW9kZGkzIChESXR5cGUsIERJdHlwZSk7CgoKCgpleHRlcm4gVURJdHlwZSBf X3VkaXZtb2RkaTQgKFVESXR5cGUsIFVESXR5cGUsIFVESXR5cGUgKik7CgoKCgpleHRlcm4gREl0 eXBlIF9fbmVnZGkyIChESXR5cGUpOwoKCmV4dGVybiBESXR5cGUgX19sc2hyZGkzIChESXR5cGUs IHdvcmRfdHlwZSk7CmV4dGVybiBESXR5cGUgX19hc2hsZGkzIChESXR5cGUsIHdvcmRfdHlwZSk7 CmV4dGVybiBESXR5cGUgX19hc2hyZGkzIChESXR5cGUsIHdvcmRfdHlwZSk7CmV4dGVybiBESXR5 cGUgX19mZnNkaTIgKERJdHlwZSk7CgoKCgpleHRlcm4gVVNJdHlwZSBfX3VkaXZfd19zZGl2IChV U0l0eXBlICosIFVTSXR5cGUsIFVTSXR5cGUsIFVTSXR5cGUpOwoKCmV4dGVybiB3b3JkX3R5cGUg X19jbXBkaTIgKERJdHlwZSwgREl0eXBlKTsKZXh0ZXJuIHdvcmRfdHlwZSBfX3VjbXBkaTIgKERJ dHlwZSwgREl0eXBlKTsKCmV4dGVybiBTSXR5cGUgX19hYnN2c2kyIChTSXR5cGUpOwpleHRlcm4g REl0eXBlIF9fYWJzdmRpMiAoREl0eXBlKTsKZXh0ZXJuIFNJdHlwZSBfX2FkZHZzaTMgKFNJdHlw ZSwgU0l0eXBlKTsKZXh0ZXJuIERJdHlwZSBfX2FkZHZkaTMgKERJdHlwZSwgREl0eXBlKTsKZXh0 ZXJuIFNJdHlwZSBfX3N1YnZzaTMgKFNJdHlwZSwgU0l0eXBlKTsKZXh0ZXJuIERJdHlwZSBfX3N1 YnZkaTMgKERJdHlwZSwgREl0eXBlKTsKZXh0ZXJuIFNJdHlwZSBfX211bHZzaTMgKFNJdHlwZSwg U0l0eXBlKTsKZXh0ZXJuIERJdHlwZSBfX211bHZkaTMgKERJdHlwZSwgREl0eXBlKTsKZXh0ZXJu IFNJdHlwZSBfX25lZ3ZzaTIgKFNJdHlwZSk7CmV4dGVybiBESXR5cGUgX19uZWd2ZGkyIChESXR5 cGUpOwoKCmV4dGVybiBESXR5cGUgX19maXhkZmRpIChERnR5cGUpOwpleHRlcm4gREl0eXBlIF9f Zml4c2ZkaSAoU0Z0eXBlKTsKZXh0ZXJuIERGdHlwZSBfX2Zsb2F0ZGlkZiAoREl0eXBlKTsKZXh0 ZXJuIFNGdHlwZSBfX2Zsb2F0ZGlzZiAoREl0eXBlKTsKZXh0ZXJuIFVTSXR5cGUgX19maXh1bnNk ZnNpIChERnR5cGUpOwpleHRlcm4gVVNJdHlwZSBfX2ZpeHVuc3Nmc2kgKFNGdHlwZSk7CmV4dGVy biBESXR5cGUgX19maXh1bnNkZmRpIChERnR5cGUpOwpleHRlcm4gREl0eXBlIF9fZml4dW5zc2Zk aSAoU0Z0eXBlKTsKIyAyODQgIi4uLy4uL2djYy0zLjIuMi9nY2MvbGliZ2NjMi5oIgogIHN0cnVj dCBEV3N0cnVjdCB7U0l0eXBlIGhpZ2gsIGxvdzt9OwojIDI5MyAiLi4vLi4vZ2NjLTMuMi4yL2dj Yy9saWJnY2MyLmgiCnR5cGVkZWYgdW5pb24KewogIHN0cnVjdCBEV3N0cnVjdCBzOwogIERJdHlw ZSBsbDsKfSBEV3VuaW9uOwoKIyAxICIuLi8uLi9nY2MtMy4yLjIvZ2NjL2xvbmdsb25nLmgiIDEK IyAzMDAgIi4uLy4uL2djYy0zLjIuMi9nY2MvbGliZ2NjMi5oIiAyCiMgNDUgIi4uLy4uL2djYy0z LjIuMi9nY2MvbGliZ2NjMi5jIiAyCiMgMTE2NiAiLi4vLi4vZ2NjLTMuMi4yL2djYy9saWJnY2My LmMiCiMgMSAiaW5jbHVkZS9saW1pdHMuaCIgMSAzIDQKIyAxMTY3ICIuLi8uLi9nY2MtMy4yLjIv Z2NjL2xpYmdjYzIuYyIgMgoKVVNJdHlwZQpfX2ZpeHVuc2Rmc2kgKERGdHlwZSBhKQp7CiAgaWYg KGEgPj0gLSAoREZ0eXBlKSAoLSAoKFNJdHlwZSkoKChVU0l0eXBlKTEgPDwgKCg0ICogOCkgLSAx KSkgLSAxKSkgLSAxKSkKICAgIHJldHVybiAoU0l0eXBlKSAoYSArICgtICgoU0l0eXBlKSgoKFVT SXR5cGUpMSA8PCAoKDQgKiA4KSAtIDEpKSAtIDEpKSAtIDEpKSAtICgtICgoU0l0eXBlKSgoKFVT SXR5cGUpMSA8PCAoKDQgKiA4KSAtIDEpKSAtIDEpKSAtIDEpOwogIHJldHVybiAoU0l0eXBlKSBh Owp9Cg==