From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 48441 invoked by alias); 20 Oct 2015 13:21:58 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 48344 invoked by uid 89); 20 Oct 2015 13:21:57 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-qg0-f54.google.com Received: from mail-qg0-f54.google.com (HELO mail-qg0-f54.google.com) (209.85.192.54) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Tue, 20 Oct 2015 13:21:55 +0000 Received: by qgeo38 with SMTP id o38so14418320qge.0 for ; Tue, 20 Oct 2015 06:21:52 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.140.130.200 with SMTP id 191mr4000011qhc.32.1445347312140; Tue, 20 Oct 2015 06:21:52 -0700 (PDT) Received: by 10.55.91.6 with HTTP; Tue, 20 Oct 2015 06:21:51 -0700 (PDT) In-Reply-To: References: <2AB9494F-91EC-4CF6-945B-0CB03A583513@comcast.net> <1D91C2C8-833D-4F6D-9C57-C22D61662A83@comcast.net> Date: Tue, 20 Oct 2015 13:25:00 -0000 Message-ID: Subject: Re: [PATCH] x86 interrupt attribute From: Yulia Koval To: Uros Bizjak Cc: "H.J. Lu" , Mike Stump , GCC Patches Content-Type: multipart/mixed; boundary=001a113553a81e2c6e052289252b X-SW-Source: 2015-10/txt/msg01878.txt.bz2 --001a113553a81e2c6e052289252b Content-Type: text/plain; charset=UTF-8 Content-length: 7322 The debug_info section for the interrupt function looks ok. I tried to call it from assembler code to check it in gdb. pushl $0x333 ;eflags pushl $0x111 ;cs pushl $0x222 ;eip jmp foo ;interrupt function #define uword_t unsigned int struct interrupt_frame { uword_t ip; uword_t cs; uword_t flags; }; I get this inside the interrupt function: Breakpoint 1, foo (frame=0xffffd560) at interrupt-1.c:7 7 a = (struct interrupt_frame*) frame; (gdb) p/x ((struct interrupt_frame*)frame)->ip $1 = 0x222 (gdb) p/x ((struct interrupt_frame*)frame)->cs $3 = 0x111 (gdb) p/x ((struct interrupt_frame*)frame)->flags $4 = 0x333 Frame pointer info looks ok. On Tue, Oct 13, 2015 at 3:18 PM, Yulia Koval wrote: > > Here is the current version of the patch with all the fixes. > Regtested\bootstraped it on 64 bit. > > We need a pointer since interrupt handler will update data pointing > to by frame. Since error_code isn't at the normal location where the > parameter is passed on stack and frame isn't in a hard register, we > changed ix86_function_arg: > > + if (!cum->caller && cfun->machine->func_type != TYPE_NORMAL) > + { > + /* The first argument of interrupt handler is a pointer and > + points to the return address slot on stack. The optional > + second argument is an integer for error code on stack. */ > + gcc_assert (type != NULL_TREE); > + if (POINTER_TYPE_P (type)) > + { > + if (cfun->machine->func_type == TYPE_EXCEPTION) > + /* (AP) in the current frame in exception handler. */ > + arg = arg_pointer_rtx; > + else > + /* -WORD(AP) in the current frame in interrupt handler. */ > + arg = force_reg (Pmode, > + plus_constant (Pmode, arg_pointer_rtx, > + -UNITS_PER_WORD)); > + if (mode != Pmode) > + arg = convert_to_mode (mode, arg, 1); > + } > + else > + { > + gcc_assert (TREE_CODE (type) == INTEGER_TYPE > + && cfun->machine->func_type == TYPE_EXCEPTION > + && mode == word_mode); > + /* The error code is at -WORD(AP) in the current frame in > + exception handler. */ > + arg = gen_rtx_MEM (word_mode, > + plus_constant (Pmode, arg_pointer_rtx, > + -UNITS_PER_WORD)); > + } > + > + return arg; > + } > + > > to return a pseudo register. It violates > > Return where to put the arguments to a function. > Return zero to push the argument on the stack, or a hard register in > which to store the argument. > > Register allocator has no problem with parameters in pseudo registers. > But GCC crashes when it tries to access DECL_INCOMING_RTL as a hard > register when generating debug information. We worked around it by > doing > > + > + if (cfun->machine->func_type != TYPE_NORMAL) > + { > + /* Since the pointer argument of interrupt handler isn't a real > + argument, adjust DECL_INCOMING_RTL for debug output. */ > + tree arg = DECL_ARGUMENTS (current_function_decl); > + gcc_assert (arg != NULL_TREE > + && POINTER_TYPE_P (TREE_TYPE (arg))); > + if (cfun->machine->func_type == TYPE_EXCEPTION) > + /* (AP) in the current frame in exception handler. */ > + DECL_INCOMING_RTL (arg) = arg_pointer_rtx; > + else > + /* -WORD(AP) in the current frame in interrupt handler. */ > + DECL_INCOMING_RTL (arg) = plus_constant (Pmode, > + arg_pointer_rtx, > + -UNITS_PER_WORD); > + } > > > On Mon, Oct 5, 2015 at 12:29 PM, Uros Bizjak wrote: > > On Mon, Oct 5, 2015 at 1:17 AM, H.J. Lu wrote: > > > >>>>>>> Looking a bit deeper into the code, it looks that we want to realign > >>>>>>> the stack in the interrupt handler. Let's assume that interrupt > >>>>>>> handler is calling some other function that saves SSE vector regs to > >>>>>>> the stack. According to the x86 ABI, incoming stack of the called > >>>>>>> function is assumed to be aligned to 16 bytes. But, interrupt handler > >>>>>>> violates this assumption, since the stack could be aligned to only 4 > >>>>>>> bytes for 32bit and 8 bytes for 64bit targets. Entering the called > >>>>>>> function with stack, aligned to less than 16 bytes will certainly > >>>>>>> violate ABI. > >>>>>>> > >>>>>>> So, it looks to me that we need to realign the stack in the interrupt > >>>>>>> handler unconditionally to 16bytes. In this case, we also won't need > >>>>>>> the following changes: > >>>>>>> > >>>>>> > >>>>>> Current stack alignment implementation requires at least > >>>>>> one, maybe two, scratch registers: > >>>>>> > >>>>>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67841 > >>>>>> > >>>>>> Extend it to the interrupt handler, which doesn't have any scratch > >>>>>> registers may require significant changes in backend as well as > >>>>>> register allocator. > >>>>> > >>>>> But without realignment, the handler is unusable for anything but > >>>>> simple functions. The handler will crash when called function will try > >>>>> to save vector reg to stack. > >>>>> > >>>> > >>>> We can use unaligned load and store to avoid crash. > >>> > >>> Oh, sorry, I meant "called function will crash", like: > >>> > >>> -> interrupt when %rsp = 0x...8 -> > >>> -> interrupt handler -> > >>> -> calls some function that tries to save xmm reg to stack > >>> -> crash in the called function > >>> > >> > >> It should be fixed by this patch. But we need to fix stack > >> alignment in interrupt handler to avoid scratch register. > >> > >> > >> -- > >> H.J. > >> --- > >> commit 15f48be1dc7ff48207927d0b835e593d058f695b > >> Author: H.J. Lu > >> Date: Sun Oct 4 16:14:03 2015 -0700 > >> > >> Correctly set incoming stack boundary for interrupt handler > >> > >> diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c > >> index 7ebdcd9..0f0cc3c 100644 > >> --- a/gcc/config/i386/i386.c > >> +++ b/gcc/config/i386/i386.c > >> @@ -12037,8 +12037,11 @@ ix86_minimum_incoming_stack_boundary (bool sibcall) > >> { > >> unsigned int incoming_stack_boundary; > >> > >> + /* Stack of interrupt handler is always aligned to word_mode. */ > >> + if (cfun->machine->func_type != TYPE_NORMAL) > >> + incoming_stack_boundary = TARGET_64BIT ? 64 : 32; > > > > Just a heads up that in order to support stack realignmnent on x86_64, > > MIN_STACK_BOUNDARY will soon be changed to BITS_PER_WORD, so you can > > use it in the line above. Please see comment #5 and #6 of PR 66697 > > [1]. > > > >> /* Prefer the one specified at command line. */ > >> - if (ix86_user_incoming_stack_boundary) > >> + else if (ix86_user_incoming_stack_boundary) > >> incoming_stack_boundary = ix86_user_incoming_stack_boundary; > >> /* In 32bit, use MIN_STACK_BOUNDARY for incoming stack boundary > >> if -mstackrealign is used, it isn't used for sibcall check and > > > > [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66697 > > > > Uros. --001a113553a81e2c6e052289252b Content-Type: application/octet-stream; name=patch_repost Content-Disposition: attachment; filename=patch_repost Content-Transfer-Encoding: base64 X-Attachment-Id: f_ifzefz5f0 Content-length: 111724 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oIGIv Z2NjL2NvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmgKaW5kZXggNmExN2VmNC4u YzdmZjM5MyAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYtcHJv dG9zLmgKKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmgKQEAg LTI3OCw2ICsyNzgsOCBAQCBleHRlcm4gcnR4IG1heWJlX2dldF9wb29sX2Nv bnN0YW50IChydHgpOwogZXh0ZXJuIGNoYXIgaW50ZXJuYWxfbGFiZWxfcHJl Zml4WzE2XTsKIGV4dGVybiBpbnQgaW50ZXJuYWxfbGFiZWxfcHJlZml4X2xl bjsKIAorZXh0ZXJuIGJvb2wgaXg4Nl9lcGlsb2d1ZV91c2VzIChpbnQpOwor CiBlbnVtIGl4ODZfYWRkcmVzc19zZWcgeyBTRUdfREVGQVVMVCwgU0VHX0ZT LCBTRUdfR1MgfTsKIHN0cnVjdCBpeDg2X2FkZHJlc3MKIHsKZGlmZiAtLWdp dCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMgYi9nY2MvY29uZmlnL2kzODYv aTM4Ni5jCmluZGV4IDQxOTk2NmQuLjRjMjVjOWUgMTAwNjQ0Ci0tLSBhL2dj Yy9jb25maWcvaTM4Ni9pMzg2LmMKKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kz ODYuYwpAQCAtMjQ3Myw2ICsyNDczLDggQEAgc3RydWN0IGl4ODZfZnJhbWUK IHsKICAgaW50IG5zc2VyZWdzOwogICBpbnQgbnJlZ3M7CisgIGludCBuYm5k cmVnczsKKyAgaW50IG5tYXNrcmVnczsKICAgaW50IHZhX2FyZ19zaXplOwog ICBpbnQgcmVkX3pvbmVfc2l6ZTsKICAgaW50IG91dGdvaW5nX2FyZ3VtZW50 c19zaXplOwpAQCAtMjQ4Myw2ICsyNDg1LDggQEAgc3RydWN0IGl4ODZfZnJh bWUKICAgSE9TVF9XSURFX0lOVCBzdGFja19wb2ludGVyX29mZnNldDsKICAg SE9TVF9XSURFX0lOVCBoZnBfc2F2ZV9vZmZzZXQ7CiAgIEhPU1RfV0lERV9J TlQgcmVnX3NhdmVfb2Zmc2V0OworICBIT1NUX1dJREVfSU5UIGJuZF9yZWdf c2F2ZV9vZmZzZXQ7CisgIEhPU1RfV0lERV9JTlQgbWFza19yZWdfc2F2ZV9v ZmZzZXQ7CiAgIEhPU1RfV0lERV9JTlQgc3NlX3JlZ19zYXZlX29mZnNldDsK IAogICAvKiBXaGVuIHNhdmVfcmVnc191c2luZ19tb3YgaXMgc2V0LCBlbWl0 IHByb2xvZ3VlIHVzaW5nCkBAIC01NTcwLDYgKzU1NzQsMTMgQEAgaXg4Nl9j b25kaXRpb25hbF9yZWdpc3Rlcl91c2FnZSAodm9pZCkKIHsKICAgaW50IGks IGNfbWFzazsKIAorICAvKiBJZiB0aGVyZSBhcmUgbm8gY2FsbGVyLXNhdmVk IHJlZ2lzdGVycywgcHJlc2VydmUgYWxsIHJlZ2lzdGVycy4KKyAgICAgZXhj ZXB0IGZpeGVkX3JlZ3MuICAqLworICBpZiAoY2Z1biAmJiBjZnVuLT5tYWNo aW5lLT5ub19jYWxsZXJfc2F2ZWRfcmVnaXN0ZXJzKQorICAgIGZvciAoaSA9 IDA7IGkgPCBGSVJTVF9QU0VVRE9fUkVHSVNURVI7IGkrKykKKyAgICAgIGlm ICghZml4ZWRfcmVnc1tpXSkKKwljYWxsX3VzZWRfcmVnc1tpXSA9IDA7CisK ICAgLyogRm9yIDMyLWJpdCB0YXJnZXRzLCBzcXVhc2ggdGhlIFJFWCByZWdp c3RlcnMuICAqLwogICBpZiAoISBUQVJHRVRfNjRCSVQpCiAgICAgewpAQCAt NjM0OSw2ICs2MzYwLDIxIEBAIGl4ODZfc2V0X2N1cnJlbnRfZnVuY3Rpb24g KHRyZWUgZm5kZWNsKQogICAgICAgcmV0dXJuOwogICAgIH0KIAorICBpZiAo bG9va3VwX2F0dHJpYnV0ZSAoImludGVycnVwdCIsIERFQ0xfQVRUUklCVVRF UyAoZm5kZWNsKSkpCisgICAgeworICAgICAgaW50IG5hcmdzID0gMDsKKyAg ICAgIGZvciAodHJlZSBhcmcgPSBERUNMX0FSR1VNRU5UUyAoZm5kZWNsKTsK KwkgICBhcmc7CisJICAgYXJnID0gVFJFRV9DSEFJTiAoYXJnKSkKKwluYXJn cysrOworICAgICAgY2Z1bi0+bWFjaGluZS0+bm9fY2FsbGVyX3NhdmVkX3Jl Z2lzdGVycyA9IHRydWU7CisgICAgICBjZnVuLT5tYWNoaW5lLT5mdW5jX3R5 cGUKKwk9IG5hcmdzID09IDIgPyBUWVBFX0VYQ0VQVElPTiA6IFRZUEVfSU5U RVJSVVBUOworICAgIH0KKyAgZWxzZSBpZiAobG9va3VwX2F0dHJpYnV0ZSAo Im5vX2NhbGxlcl9zYXZlZF9yZWdpc3RlcnMiLAorCQkJICAgICBERUNMX0FU VFJJQlVURVMgKGZuZGVjbCkpKQorICAgIGNmdW4tPm1hY2hpbmUtPm5vX2Nh bGxlcl9zYXZlZF9yZWdpc3RlcnMgPSB0cnVlOworCiAgIHRyZWUgbmV3X3Ry ZWUgPSBERUNMX0ZVTkNUSU9OX1NQRUNJRklDX1RBUkdFVCAoZm5kZWNsKTsK ICAgaWYgKG5ld190cmVlID09IE5VTExfVFJFRSkKICAgICBuZXdfdHJlZSA9 IHRhcmdldF9vcHRpb25fZGVmYXVsdF9ub2RlOwpAQCAtNjM3Miw2ICs2Mzk4 LDExIEBAIGl4ODZfc2V0X2N1cnJlbnRfZnVuY3Rpb24gKHRyZWUgZm5kZWNs KQogICAgICAgJiYgKGNhbGxfdXNlZF9yZWdzW1NJX1JFR10KIAkgID09IChj ZnVuLT5tYWNoaW5lLT5jYWxsX2FiaSA9PSBNU19BQkkpKSkKICAgICByZWlu aXRfcmVncyAoKTsKKyAgLyogQVggcmVnaXN0ZXIgaXMgb25seSBwcmVzZXJ2 ZWQgaWYgdGhlcmUgYXJlIG5vIGNhbGxlci1zYXZlZAorICAgICByZWdpc3Rl cnMuICAqLworICBlbHNlIGlmIChjZnVuLT5tYWNoaW5lLT5ub19jYWxsZXJf c2F2ZWRfcmVnaXN0ZXJzCisJICAgPT0gY2FsbF91c2VkX3JlZ3NbQVhfUkVH XSkKKyAgICByZWluaXRfcmVncyAoKTsKIH0KIAogDApAQCAtNjYzNSw2ICs2 NjY2LDEwIEBAIGl4ODZfZnVuY3Rpb25fb2tfZm9yX3NpYmNhbGwgKHRyZWUg ZGVjbCwgdHJlZSBleHApCiAgIHRyZWUgdHlwZSwgZGVjbF9vcl90eXBlOwog ICBydHggYSwgYjsKIAorICAvKiBTaWJsaW5nIGNhbGwgaXNuJ3QgT0sgaWYg dGhlcmUgYXJlIG5vIGNhbGxlci1zYXZlZCByZWdpc3RlcnMuICAqLworICBp ZiAoY2Z1bi0+bWFjaGluZS0+bm9fY2FsbGVyX3NhdmVkX3JlZ2lzdGVycykK KyAgICByZXR1cm4gZmFsc2U7CisKICAgLyogSWYgd2UgYXJlIGdlbmVyYXRp bmcgcG9zaXRpb24taW5kZXBlbmRlbnQgY29kZSwgd2UgY2Fubm90IHNpYmNh bGwKICAgICAgb3B0aW1pemUgZGlyZWN0IGNhbGxzIHRvIGdsb2JhbCBmdW5j dGlvbnMsIGFzIHRoZSBQTFQgcmVxdWlyZXMKICAgICAgJWVieCBiZSBsaXZl LiAoRGFyd2luIGRvZXMgbm90IGhhdmUgYSBQTFQuKSAgKi8KQEAgLTc4MDgs NiArNzg0Myw4IEBAIHR5cGVfbmF0dXJhbF9tb2RlIChjb25zdF90cmVlIHR5 cGUsIGNvbnN0IENVTVVMQVRJVkVfQVJHUyAqY3VtLAogCQkgICAgICB9CiAJ CSAgfQogCQllbHNlIGlmICgoc2l6ZSA9PSA4ICYmICFUQVJHRVRfNjRCSVQp CisJCQkgJiYgKCFjZnVuCisJCQkgICAgIHx8IGNmdW4tPm1hY2hpbmUtPmZ1 bmNfdHlwZSA9PSBUWVBFX05PUk1BTCkKIAkJCSAmJiAhVEFSR0VUX01NWAog CQkJICYmICFUQVJHRVRfSUFNQ1UpCiAJCSAgewpAQCAtODc4Nyw2ICs4ODI0 LDExIEBAIGl4ODZfZnVuY3Rpb25fYXJnX2FkdmFuY2UgKGN1bXVsYXRpdmVf YXJnc190IGN1bV92LCBtYWNoaW5lX21vZGUgbW9kZSwKICAgSE9TVF9XSURF X0lOVCBieXRlcywgd29yZHM7CiAgIGludCBucmVnczsKIAorICAvKiBUaGUg YXJndW1lbnQgb2YgaW50ZXJydXB0IGhhbmRsZXIgaXMgYSBzcGVjaWFsIGNh c2UgYW5kIGlzCisgICAgIGhhbmRsZWQgaW4gaXg4Nl9mdW5jdGlvbl9hcmcu ICAqLworICBpZiAoIWN1bS0+Y2FsbGVyICYmIGNmdW4tPm1hY2hpbmUtPmZ1 bmNfdHlwZSAhPSBUWVBFX05PUk1BTCkKKyAgICByZXR1cm47CisKICAgaWYg KG1vZGUgPT0gQkxLbW9kZSkKICAgICBieXRlcyA9IGludF9zaXplX2luX2J5 dGVzICh0eXBlKTsKICAgZWxzZQpAQCAtOTEwMyw2ICs5MTQ1LDQwIEBAIGl4 ODZfZnVuY3Rpb25fYXJnIChjdW11bGF0aXZlX2FyZ3NfdCBjdW1fdiwgbWFj aGluZV9tb2RlIG9tb2RlLAogICBIT1NUX1dJREVfSU5UIGJ5dGVzLCB3b3Jk czsKICAgcnR4IGFyZzsKIAorICBpZiAoIWN1bS0+Y2FsbGVyICYmIGNmdW4t Pm1hY2hpbmUtPmZ1bmNfdHlwZSAhPSBUWVBFX05PUk1BTCkKKyAgICB7Cisg ICAgICAvKiBUaGUgZmlyc3QgYXJndW1lbnQgb2YgaW50ZXJydXB0IGhhbmRs ZXIgaXMgYSBwb2ludGVyIGFuZAorCSBwb2ludHMgdG8gdGhlIHJldHVybiBh ZGRyZXNzIHNsb3Qgb24gc3RhY2suICBUaGUgb3B0aW9uYWwKKwkgc2Vjb25k IGFyZ3VtZW50IGlzIGFuIGludGVnZXIgZm9yIGVycm9yIGNvZGUgb24gc3Rh Y2suICAqLworICAgICAgZ2NjX2Fzc2VydCAodHlwZSAhPSBOVUxMX1RSRUUp OworICAgICAgaWYgKFBPSU5URVJfVFlQRV9QICh0eXBlKSkKKwl7CisJICBp ZiAoY2Z1bi0+bWFjaGluZS0+ZnVuY190eXBlID09IFRZUEVfRVhDRVBUSU9O KQorCSAgICAvKiAoQVApIGluIHRoZSBjdXJyZW50IGZyYW1lIGluIGV4Y2Vw dGlvbiBoYW5kbGVyLiAgKi8KKwkgICAgYXJnID0gYXJnX3BvaW50ZXJfcnR4 OworCSAgZWxzZQorCSAgICAvKiAtV09SRChBUCkgaW4gdGhlIGN1cnJlbnQg ZnJhbWUgaW4gaW50ZXJydXB0IGhhbmRsZXIuICAqLworCSAgICBhcmcgPSBm b3JjZV9yZWcgKFBtb2RlLAorCQkJICAgICBwbHVzX2NvbnN0YW50IChQbW9k ZSwgYXJnX3BvaW50ZXJfcnR4LAorCQkJCQkgICAgLVVOSVRTX1BFUl9XT1JE KSk7CisJICBpZiAobW9kZSAhPSBQbW9kZSkKKwkgICAgYXJnID0gY29udmVy dF90b19tb2RlIChtb2RlLCBhcmcsIDEpOworCX0KKyAgICAgIGVsc2UKKwl7 CisJICBnY2NfYXNzZXJ0IChUUkVFX0NPREUgKHR5cGUpID09IElOVEVHRVJf VFlQRQorCQkgICAgICAmJiBjZnVuLT5tYWNoaW5lLT5mdW5jX3R5cGUgPT0g VFlQRV9FWENFUFRJT04KKwkJICAgICAgJiYgbW9kZSA9PSB3b3JkX21vZGUp OworCSAgLyogVGhlIGVycm9yIGNvZGUgaXMgYXQgLVdPUkQoQVApIGluIHRo ZSBjdXJyZW50IGZyYW1lIGluCisJICAgICBleGNlcHRpb24gaGFuZGxlci4g ICovCisJICBhcmcgPSBnZW5fcnR4X01FTSAod29yZF9tb2RlLAorCQkJICAg ICBwbHVzX2NvbnN0YW50IChQbW9kZSwgYXJnX3BvaW50ZXJfcnR4LAorCQkJ CQkgICAgLVVOSVRTX1BFUl9XT1JEKSk7CisJfQorCisgICAgICByZXR1cm4g YXJnOworICAgIH0KKwogICAvKiBBbGwgcG9pbnRlciBib3VuZHMgYXJndW1l bnRzIGFyZSBoYW5kbGVkIHNlcGFyYXRlbHkgaGVyZS4gICovCiAgIGlmICgo dHlwZSAmJiBQT0lOVEVSX0JPVU5EU19UWVBFX1AgKHR5cGUpKQogICAgICAg fHwgUE9JTlRFUl9CT1VORFNfTU9ERV9QIChtb2RlKSkKQEAgLTEwODE4LDcg KzEwODk0LDEwIEBAIGl4ODZfY2FuX3VzZV9yZXR1cm5faW5zbl9wICh2b2lk KQogewogICBzdHJ1Y3QgaXg4Nl9mcmFtZSBmcmFtZTsKIAotICBpZiAoISBy ZWxvYWRfY29tcGxldGVkIHx8IGZyYW1lX3BvaW50ZXJfbmVlZGVkKQorICAv KiBEb24ndCB1c2UgYHJldCcgaW5zdHJ1Y3Rpb24gaW4gaW50ZXJydXB0IGhh bmRsZXIuICAqLworICBpZiAoISByZWxvYWRfY29tcGxldGVkCisgICAgICB8 fCBmcmFtZV9wb2ludGVyX25lZWRlZAorICAgICAgfHwgY2Z1bi0+bWFjaGlu ZS0+ZnVuY190eXBlICE9IFRZUEVfTk9STUFMKQogICAgIHJldHVybiAwOwog CiAgIC8qIERvbid0IGFsbG93IG1vcmUgdGhhbiAzMmsgcG9wLCBzaW5jZSB0 aGF0J3MgYWxsIHdlIGNhbiBkbwpAQCAtMTExMjgsMTEgKzExMjA3LDUyIEBA IGl4ODZfc2VsZWN0X2FsdF9waWNfcmVnbnVtICh2b2lkKQogICByZXR1cm4g SU5WQUxJRF9SRUdOVU07CiB9CiAKKy8qIFJldHVybiB0cnVlIGlmIFJFR05P IGlzIHVzZWQgYnkgdGhlIGVwaWxvZ3VlLiAgKi8KKworYm9vbAoraXg4Nl9l cGlsb2d1ZV91c2VzIChpbnQgcmVnbm8pCit7CisgIC8qIElmIHRoZXJlIGFy ZSBubyBjYWxsZXItc2F2ZWQgcmVnaXN0ZXJzLCB3ZSBwcmVzZXJ2ZSBhbGwg cmVnaXN0ZXJzLAorICAgICBleGNlcHQgZm9yIE1NWCBhbmQgeDg3IHJlZ2lz dGVycyB3aGljaCBhcmVuJ3Qgc3VwcG9ydGVkIHdoZW4gc2F2aW5nCisgICAg IGFuZCByZXN0b3JpbmcgcmVnaXN0ZXJzLiAgRG9uJ3QgZXhwbGljaXRseSBz YXZlIFNQIHJlZ2lzdGVyIHNpbmNlCisgICAgIGl0IGlzIGFsd2F5cyBwcmVz ZXJ2ZWQuICAqLworICByZXR1cm4gKGVwaWxvZ3VlX2NvbXBsZXRlZAorCSAg JiYgY2Z1bi0+bWFjaGluZS0+bm9fY2FsbGVyX3NhdmVkX3JlZ2lzdGVycwor CSAgJiYgIWZpeGVkX3JlZ3NbcmVnbm9dCisJICAmJiAhU1RBQ0tfUkVHTk9f UCAocmVnbm8pCisJICAmJiAhTU1YX1JFR05PX1AgKHJlZ25vKSk7Cit9CisK Ky8qIFJldHVybiBUUlVFIGlmIHJlZ2lzdGVyIFJFR05PIGlzIGV2ZXIgZGVm aW5lZC4uICAqLworCitzdGF0aWMgYm9vbAoraXg4Nl9yZWdfZXZlcl9kZWZp bmVkX3AgKHVuc2lnbmVkIGludCByZWdubykKK3sKKyAgZGZfcmVmIGRlZjsK KworICBmb3IgKGRlZiA9IERGX1JFR19ERUZfQ0hBSU4gKHJlZ25vKTsgZGVm OyBkZWYgPSBERl9SRUZfTkVYVF9SRUcgKGRlZikpCisgICAgaWYgKCFERl9S RUZfSVNfQVJUSUZJQ0lBTCAoZGVmKSkKKyAgICAgIHJldHVybiB0cnVlOwor CisgIHJldHVybiBmYWxzZTsKK30KKwogLyogUmV0dXJuIFRSVUUgaWYgd2Ug bmVlZCB0byBzYXZlIFJFR05PLiAgKi8KIAogc3RhdGljIGJvb2wKIGl4ODZf c2F2ZV9yZWcgKHVuc2lnbmVkIGludCByZWdubywgYm9vbCBtYXliZV9laF9y ZXR1cm4pCiB7CisgIC8qIElmIHRoZXJlIGFyZSBubyBjYWxsZXItc2F2ZWQg cmVnaXN0ZXJzLCB3ZSBwcmVzZXJ2ZSBhbGwgcmVnaXN0ZXJzLAorICAgICBl eGNlcHQgZm9yIE1NWCBhbmQgeDg3IHJlZ2lzdGVycyB3aGljaCBhcmVuJ3Qg c3VwcG9ydGVkIHdoZW4gc2F2aW5nCisgICAgIGFuZCByZXN0b3JpbmcgcmVn aXN0ZXJzLiAgRG9uJ3QgZXhwbGljaXRseSBzYXZlIFNQIHJlZ2lzdGVyIHNp bmNlCisgICAgIGl0IGlzIGFsd2F5cyBwcmVzZXJ2ZWQuICAqLworICBpZiAo cmVsb2FkX2NvbXBsZXRlZCAmJiBjZnVuLT5tYWNoaW5lLT5ub19jYWxsZXJf c2F2ZWRfcmVnaXN0ZXJzKQorICAgIHJldHVybiAoZGZfcmVnc19ldmVyX2xp dmVfcCAocmVnbm8pCisJICAgICYmIGl4ODZfcmVnX2V2ZXJfZGVmaW5lZF9w IChyZWdubykKKwkgICAgJiYgIWZpeGVkX3JlZ3NbcmVnbm9dCisJICAgICYm ICFTVEFDS19SRUdOT19QIChyZWdubykKKwkgICAgJiYgIU1NWF9SRUdOT19Q IChyZWdubykpOworCiAgIGlmIChyZWdubyA9PSBSRUFMX1BJQ19PRkZTRVRf VEFCTEVfUkVHTlVNCiAgICAgICAmJiBwaWNfb2Zmc2V0X3RhYmxlX3J0eCkK ICAgICB7CkBAIC0xMTE4OSw2ICsxMTMwOSwzNCBAQCBpeDg2X25zYXZlZF9y ZWdzICh2b2lkKQogICByZXR1cm4gbnJlZ3M7CiB9CiAKKy8qIFJldHVybiBu dW1iZXIgb2Ygc2F2ZWQgYm91bmQgcmVnaXN0ZXJzLiAgKi8KKworc3RhdGlj IGludAoraXg4Nl9uc2F2ZWRfYm5kcmVncyAodm9pZCkKK3sKKyAgaW50IG5y ZWdzID0gMDsKKyAgaW50IHJlZ25vOworCisgIGZvciAocmVnbm8gPSAwOyBy ZWdubyA8IEZJUlNUX1BTRVVET19SRUdJU1RFUjsgcmVnbm8rKykKKyAgICBp ZiAoQk5EX1JFR05PX1AgKHJlZ25vKSAmJiBpeDg2X3NhdmVfcmVnIChyZWdu bywgdHJ1ZSkpCisgICAgICBucmVncyArKzsKKyAgcmV0dXJuIG5yZWdzOwor fQorCisvKiBSZXR1cm4gbnVtYmVyIG9mIHNhdmVkIG1hc2sgcmVnaXN0ZXJz LiAgKi8KKworc3RhdGljIGludAoraXg4Nl9uc2F2ZWRfbWFza3JlZ3MgKHZv aWQpCit7CisgIGludCBucmVncyA9IDA7CisgIGludCByZWdubzsKKworICBm b3IgKHJlZ25vID0gMDsgcmVnbm8gPCBGSVJTVF9QU0VVRE9fUkVHSVNURVI7 IHJlZ25vKyspCisgICAgaWYgKE1BU0tfUkVHTk9fUCAocmVnbm8pICYmIGl4 ODZfc2F2ZV9yZWcgKHJlZ25vLCB0cnVlKSkKKyAgICAgIG5yZWdzICsrOwor ICByZXR1cm4gbnJlZ3M7Cit9CisKIC8qIFJldHVybiBudW1iZXIgb2Ygc2F2 ZWQgU1NFIHJlZ2lzdGVycy4gICovCiAKIHN0YXRpYyBpbnQKQEAgLTExMTk3 LDcgKzExMzQ1LDEwIEBAIGl4ODZfbnNhdmVkX3NzZXJlZ3MgKHZvaWQpCiAg IGludCBucmVncyA9IDA7CiAgIGludCByZWdubzsKIAotICBpZiAoIVRBUkdF VF82NEJJVF9NU19BQkkpCisgIC8qIEFsd2F5cyBuZWVkIHRvIHNhdmUgU1NF IHJlZ2lzdGVycyBpZiB0aGVyZSBhcmUgbm8gY2FsbGVyLXNhdmVkCisgICAg IHJlZ2lzdGVycy4gICovCisgIGlmICghVEFSR0VUXzY0QklUX01TX0FCSQor ICAgICAgJiYgIWNmdW4tPm1hY2hpbmUtPm5vX2NhbGxlcl9zYXZlZF9yZWdp c3RlcnMpCiAgICAgcmV0dXJuIDA7CiAgIGZvciAocmVnbm8gPSAwOyByZWdu byA8IEZJUlNUX1BTRVVET19SRUdJU1RFUjsgcmVnbm8rKykKICAgICBpZiAo U1NFX1JFR05PX1AgKHJlZ25vKSAmJiBpeDg2X3NhdmVfcmVnIChyZWdubywg dHJ1ZSkpCkBAIC0xMTI3OCw2ICsxMTQyOSw4IEBAIGl4ODZfY29tcHV0ZV9m cmFtZV9sYXlvdXQgKHN0cnVjdCBpeDg2X2ZyYW1lICpmcmFtZSkKICAgSE9T VF9XSURFX0lOVCB0b19hbGxvY2F0ZTsKIAogICBmcmFtZS0+bnJlZ3MgPSBp eDg2X25zYXZlZF9yZWdzICgpOworICBmcmFtZS0+bmJuZHJlZ3MgPSBpeDg2 X25zYXZlZF9ibmRyZWdzICgpOworICBmcmFtZS0+bm1hc2tyZWdzID0gaXg4 Nl9uc2F2ZWRfbWFza3JlZ3MgKCk7CiAgIGZyYW1lLT5uc3NlcmVncyA9IGl4 ODZfbnNhdmVkX3NzZXJlZ3MgKCk7CiAKICAgLyogNjQtYml0IE1TIEFCSSBz ZWVtIHRvIHJlcXVpcmUgc3RhY2sgYWxpZ25tZW50IHRvIGJlIGFsd2F5cyAx NiBleGNlcHQgZm9yCkBAIC0xMTM3OSwxOSArMTE1MzIsMzkgQEAgaXg4Nl9j b21wdXRlX2ZyYW1lX2xheW91dCAoc3RydWN0IGl4ODZfZnJhbWUgKmZyYW1l KQogICBpZiAoVEFSR0VUX1NFSCkKICAgICBmcmFtZS0+aGFyZF9mcmFtZV9w b2ludGVyX29mZnNldCA9IG9mZnNldDsKIAorICAvKiBTZXQgQk5EIHJlZ2lz dGVyIHNhdmUgYXJlYS4gICovCisgIGlmIChmcmFtZS0+bmJuZHJlZ3MpCisg ICAgb2Zmc2V0ICs9IGZyYW1lLT5uYm5kcmVncyAqIChpeDg2X3Btb2RlID09 IFBNT0RFX0RJID8gMTYgOiA4KTsKKyAgZnJhbWUtPmJuZF9yZWdfc2F2ZV9v ZmZzZXQgPSBvZmZzZXQ7CisKKyAgLyogU2V0IE1BU0sgcmVnaXN0ZXIgc2F2 ZSBhcmVhLiAgKi8KKyAgaWYgKGZyYW1lLT5ubWFza3JlZ3MpCisgICAgb2Zm c2V0ICs9IGZyYW1lLT5ubWFza3JlZ3MgKiAoVEFSR0VUX0FWWDUxMkJXID8g OCA6IDIpOworICBmcmFtZS0+bWFza19yZWdfc2F2ZV9vZmZzZXQgPSBvZmZz ZXQ7CisKICAgLyogQWxpZ24gYW5kIHNldCBTU0UgcmVnaXN0ZXIgc2F2ZSBh cmVhLiAgKi8KICAgaWYgKGZyYW1lLT5uc3NlcmVncykKICAgICB7CisgICAg ICAvKiBXZSBtdXN0IHNhdmUgZnVsbCB2ZWN0b3IgcmVnaXN0ZXJzIGlmIHRo ZXJlIGFyZSBubworCSBjYWxsZXItc2F2ZWQgcmVnaXN0ZXJzLiAgKi8KKyAg ICAgIHVuc2lnbmVkIGludCB2ZWNfcmVnc2l6ZTsKKyAgICAgIGlmIChjZnVu LT5tYWNoaW5lLT5ub19jYWxsZXJfc2F2ZWRfcmVnaXN0ZXJzKQorCXZlY19y ZWdzaXplID0gKFRBUkdFVF9BVlg1MTJGID8gNjQgOiAoVEFSR0VUX0FWWCA/ IDMyIDogMTYpKTsKKyAgICAgIGVsc2UKKwl2ZWNfcmVnc2l6ZSA9IDE2Owor CiAgICAgICAvKiBUaGUgb25seSBBQkkgdGhhdCBoYXMgc2F2ZWQgU1NFIHJl Z2lzdGVycyAoV2luNjQpIGFsc28gaGFzIGEKIAkgMTYtYnl0ZSBhbGlnbmVk IGRlZmF1bHQgc3RhY2ssIGFuZCB0aHVzIHdlIGRvbid0IG5lZWQgdG8gYmUK IAkgd2l0aGluIHRoZSByZS1hbGlnbmVkIGxvY2FsIHN0YWNrIGZyYW1lIHRv IHNhdmUgdGhlbS4gIEluIGNhc2UKIAkgaW5jb21pbmcgc3RhY2sgYm91bmRh cnkgaXMgYWxpZ25lZCB0byBsZXNzIHRoYW4gMTYgYnl0ZXMsCiAJIHVuYWxp Z25lZCBtb3ZlIG9mIFNTRSByZWdpc3RlciB3aWxsIGJlIGVtaXR0ZWQsIHNv IHRoZXJlIGlzCiAJIG5vIHBvaW50IHRvIHJvdW5kIHVwIHRoZSBTU0UgcmVn aXN0ZXIgc2F2ZSBhcmVhIG91dHNpZGUgdGhlCi0JIHJlLWFsaWduZWQgbG9j YWwgc3RhY2sgZnJhbWUgdG8gMTYgYnl0ZXMuICAqLwotICAgICAgaWYgKGl4 ODZfaW5jb21pbmdfc3RhY2tfYm91bmRhcnkgPj0gMTI4KQotCW9mZnNldCA9 IFJPVU5EX1VQIChvZmZzZXQsIDE2KTsKLSAgICAgIG9mZnNldCArPSBmcmFt ZS0+bnNzZXJlZ3MgKiAxNjsKKwkgcmUtYWxpZ25lZCBsb2NhbCBzdGFjayBm cmFtZSB0byAxNiBieXRlcy4gIFdoZW4gZnVsbCB2ZWN0b3IKKwkgcmVnaXN0 ZXJzIGFyZSBzYXZlZCwgd2UgY2hlY2sgaW5jb21pbmcgc3RhY2sgYm91bmRh cnkgYWdhaW5zdAorCSB0aGUgc2l6ZSBvZiB2ZWN0b3IgcmVnaXN0ZXJzLiAg Ki8KKyAgICAgIGlmIChpeDg2X2luY29taW5nX3N0YWNrX2JvdW5kYXJ5ID49 ICh2ZWNfcmVnc2l6ZSAqIEJJVFNfUEVSX1VOSVQpKQorCW9mZnNldCA9IFJP VU5EX1VQIChvZmZzZXQsIHZlY19yZWdzaXplKTsKKyAgICAgIG9mZnNldCAr PSBmcmFtZS0+bnNzZXJlZ3MgKiB2ZWNfcmVnc2l6ZTsKICAgICB9CiAgIGZy YW1lLT5zc2VfcmVnX3NhdmVfb2Zmc2V0ID0gb2Zmc2V0OwogCkBAIC0xMTQ0 NSw3ICsxMTYxOCw3IEBAIGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQgKHN0 cnVjdCBpeDg2X2ZyYW1lICpmcmFtZSkKICAgZnJhbWUtPnN0YWNrX3BvaW50 ZXJfb2Zmc2V0ID0gb2Zmc2V0OwogCiAgIC8qIFNpemUgcHJvbG9ndWUgbmVl ZHMgdG8gYWxsb2NhdGUuICAqLwotICB0b19hbGxvY2F0ZSA9IG9mZnNldCAt IGZyYW1lLT5zc2VfcmVnX3NhdmVfb2Zmc2V0OworICB0b19hbGxvY2F0ZSA9 IG9mZnNldCAtIGZyYW1lLT5ibmRfcmVnX3NhdmVfb2Zmc2V0OwogCiAgIGlm ICgoIXRvX2FsbG9jYXRlICYmIGZyYW1lLT5ucmVncyA8PSAxKQogICAgICAg fHwgKFRBUkdFVF82NEJJVCAmJiB0b19hbGxvY2F0ZSA+PSAoSE9TVF9XSURF X0lOVCkgMHg4MDAwMDAwMCkpCkBAIC0xMTY5OSwxOCArMTE4NzIsNjcgQEAg aXg4Nl9lbWl0X3NhdmVfcmVnc191c2luZ19tb3YgKEhPU1RfV0lERV9JTlQg Y2ZhX29mZnNldCkKICAgICAgIH0KIH0KIAorLyogRW1pdCBjb2RlIHRvIHNh dmUgQk5EIHJlZ2lzdGVycyB1c2luZyBNT1YgaW5zbnMuCisgICBGaXJzdCBy ZWdpc3RlciBpcyBzdG9yZWQgYXQgQ0ZBIC0gQ0ZBX09GRlNFVC4gICovCitz dGF0aWMgdm9pZAoraXg4Nl9lbWl0X3NhdmVfYm5kX3JlZ3NfdXNpbmdfbW92 IChIT1NUX1dJREVfSU5UIGNmYV9vZmZzZXQpCit7CisgIHVuc2lnbmVkIGlu dCByZWdubzsKKyAgZW51bSBtYWNoaW5lX21vZGUgbW9kZSA9IEJORG1vZGU7 CisgIHVuc2lnbmVkIGludCBzaXplID0gR0VUX01PREVfU0laRSAobW9kZSk7 CisKKyAgZm9yIChyZWdubyA9IDA7IHJlZ25vIDwgRklSU1RfUFNFVURPX1JF R0lTVEVSOyByZWdubysrKQorICAgIGlmIChCTkRfUkVHTk9fUCAocmVnbm8p ICYmIGl4ODZfc2F2ZV9yZWcgKHJlZ25vLCB0cnVlKSkKKyAgICAgIHsKKwlp eDg2X2VtaXRfc2F2ZV9yZWdfdXNpbmdfbW92IChtb2RlLCByZWdubywgY2Zh X29mZnNldCk7CisJY2ZhX29mZnNldCAtPSBzaXplOworICAgICAgfQorfQor CisvKiBFbWl0IGNvZGUgdG8gc2F2ZSBNQVNLIHJlZ2lzdGVycyB1c2luZyBN T1YgaW5zbnMuCisgICBGaXJzdCByZWdpc3RlciBpcyBzdG9yZWQgYXQgQ0ZB IC0gQ0ZBX09GRlNFVC4gICovCitzdGF0aWMgdm9pZAoraXg4Nl9lbWl0X3Nh dmVfbWFza19yZWdzX3VzaW5nX21vdiAoSE9TVF9XSURFX0lOVCBjZmFfb2Zm c2V0KQoreworICB1bnNpZ25lZCBpbnQgcmVnbm87CisgIGVudW0gbWFjaGlu ZV9tb2RlIG1vZGUgPSBUQVJHRVRfQVZYNTEyQlcgPyBESW1vZGUgOiBISW1v ZGU7CisgIHVuc2lnbmVkIGludCBzaXplID0gR0VUX01PREVfU0laRSAobW9k ZSk7CisKKyAgZm9yIChyZWdubyA9IDA7IHJlZ25vIDwgRklSU1RfUFNFVURP X1JFR0lTVEVSOyByZWdubysrKQorICAgIGlmIChNQVNLX1JFR05PX1AgKHJl Z25vKSAmJiBpeDg2X3NhdmVfcmVnIChyZWdubywgdHJ1ZSkpCisgICAgICB7 CisJaXg4Nl9lbWl0X3NhdmVfcmVnX3VzaW5nX21vdiAobW9kZSwgcmVnbm8s IGNmYV9vZmZzZXQpOworCWNmYV9vZmZzZXQgLT0gc2l6ZTsKKyAgICAgIH0K K30KKwogLyogRW1pdCBjb2RlIHRvIHNhdmUgU1NFIHJlZ2lzdGVycyB1c2lu ZyBNT1YgaW5zbnMuCiAgICBGaXJzdCByZWdpc3RlciBpcyBzdG9yZWQgYXQg Q0ZBIC0gQ0ZBX09GRlNFVC4gICovCiBzdGF0aWMgdm9pZAogaXg4Nl9lbWl0 X3NhdmVfc3NlX3JlZ3NfdXNpbmdfbW92IChIT1NUX1dJREVfSU5UIGNmYV9v ZmZzZXQpCiB7CiAgIHVuc2lnbmVkIGludCByZWdubzsKKyAgZW51bSBtYWNo aW5lX21vZGUgdmVjdG9yX3JlZ19tb2RlOworCisgIGlmIChjZnVuLT5tYWNo aW5lLT5ub19jYWxsZXJfc2F2ZWRfcmVnaXN0ZXJzKQorICAgIHsKKyAgICAg IC8qIFdlIG11c3Qgc2F2ZSBmdWxsIHZlY3RvciByZWdpc3RlcnMgaWYgdGhl cmUgYXJlIG5vCisJIGNhbGxlci1zYXZlZCByZWdpc3RlcnMuICAqLworICAg ICAgaWYgKFRBUkdFVF9BVlg1MTJGKQorCXZlY3Rvcl9yZWdfbW9kZSA9IFYx NlNGbW9kZTsKKyAgICAgIGVsc2UgaWYgKFRBUkdFVF9BVlgpCisJdmVjdG9y X3JlZ19tb2RlID0gVjhTRm1vZGU7CisgICAgICBlbHNlCisJdmVjdG9yX3Jl Z19tb2RlID0gVjRTRm1vZGU7CisgICAgfQorICBlbHNlCisgICAgdmVjdG9y X3JlZ19tb2RlID0gVjRTRm1vZGU7CiAKICAgZm9yIChyZWdubyA9IDA7IHJl Z25vIDwgRklSU1RfUFNFVURPX1JFR0lTVEVSOyByZWdubysrKQogICAgIGlm IChTU0VfUkVHTk9fUCAocmVnbm8pICYmIGl4ODZfc2F2ZV9yZWcgKHJlZ25v LCB0cnVlKSkKICAgICAgIHsKLQlpeDg2X2VtaXRfc2F2ZV9yZWdfdXNpbmdf bW92IChWNFNGbW9kZSwgcmVnbm8sIGNmYV9vZmZzZXQpOwotCWNmYV9vZmZz ZXQgLT0gR0VUX01PREVfU0laRSAoVjRTRm1vZGUpOworCWl4ODZfZW1pdF9z YXZlX3JlZ191c2luZ19tb3YgKHZlY3Rvcl9yZWdfbW9kZSwgcmVnbm8sIGNm YV9vZmZzZXQpOworCWNmYV9vZmZzZXQgLT0gR0VUX01PREVfU0laRSAodmVj dG9yX3JlZ19tb2RlKTsKICAgICAgIH0KIH0KIApAQCAtMTE4NjYsMTMgKzEy MDg4LDE3IEBAIGZpbmRfZHJhcF9yZWcgKHZvaWQpCiB7CiAgIHRyZWUgZGVj bCA9IGNmdW4tPmRlY2w7CiAKKyAgLyogQWx3YXlzIHVzZSBjYWxsZWUtc2F2 ZWQgcmVnaXN0ZXIgaWYgdGhlcmUgYXJlIG5vIGNhbGxlci1zYXZlZAorICAg ICByZWdpc3RlcnMuICAqLwogICBpZiAoVEFSR0VUXzY0QklUKQogICAgIHsK ICAgICAgIC8qIFVzZSBSMTMgZm9yIG5lc3RlZCBmdW5jdGlvbiBvciBmdW5j dGlvbiBuZWVkIHN0YXRpYyBjaGFpbi4KIAkgU2luY2UgZnVuY3Rpb24gd2l0 aCB0YWlsIGNhbGwgbWF5IHVzZSBhbnkgY2FsbGVyLXNhdmVkCiAJIHJlZ2lz dGVycyBpbiBlcGlsb2d1ZSwgRFJBUCBtdXN0IG5vdCB1c2UgY2FsbGVyLXNh dmVkCiAJIHJlZ2lzdGVyIGluIHN1Y2ggY2FzZS4gICovCi0gICAgICBpZiAo REVDTF9TVEFUSUNfQ0hBSU4gKGRlY2wpIHx8IGNydGwtPnRhaWxfY2FsbF9l bWl0KQorICAgICAgaWYgKERFQ0xfU1RBVElDX0NIQUlOIChkZWNsKQorCSAg fHwgY2Z1bi0+bWFjaGluZS0+bm9fY2FsbGVyX3NhdmVkX3JlZ2lzdGVycwor CSAgfHwgY3J0bC0+dGFpbF9jYWxsX2VtaXQpCiAJcmV0dXJuIFIxM19SRUc7 CiAKICAgICAgIHJldHVybiBSMTBfUkVHOwpAQCAtMTE4ODMsNyArMTIxMDks OSBAQCBmaW5kX2RyYXBfcmVnICh2b2lkKQogCSBTaW5jZSBmdW5jdGlvbiB3 aXRoIHRhaWwgY2FsbCBtYXkgdXNlIGFueSBjYWxsZXItc2F2ZWQKIAkgcmVn aXN0ZXJzIGluIGVwaWxvZ3VlLCBEUkFQIG11c3Qgbm90IHVzZSBjYWxsZXIt c2F2ZWQKIAkgcmVnaXN0ZXIgaW4gc3VjaCBjYXNlLiAgKi8KLSAgICAgIGlm IChERUNMX1NUQVRJQ19DSEFJTiAoZGVjbCkgfHwgY3J0bC0+dGFpbF9jYWxs X2VtaXQpCisgICAgICBpZiAoREVDTF9TVEFUSUNfQ0hBSU4gKGRlY2wpCisJ ICB8fCBjZnVuLT5tYWNoaW5lLT5ub19jYWxsZXJfc2F2ZWRfcmVnaXN0ZXJz CisJICB8fCBjcnRsLT50YWlsX2NhbGxfZW1pdCkKIAlyZXR1cm4gRElfUkVH OwogCiAgICAgICAvKiBSZXVzZSBzdGF0aWMgY2hhaW4gcmVnaXN0ZXIgaWYg aXQgaXNuJ3QgdXNlZCBmb3IgcGFyYW1ldGVyCkBAIC0xMTkyNCw4ICsxMjE1 MiwxMiBAQCBpeDg2X21pbmltdW1faW5jb21pbmdfc3RhY2tfYm91bmRhcnkg KGJvb2wgc2liY2FsbCkKIHsKICAgdW5zaWduZWQgaW50IGluY29taW5nX3N0 YWNrX2JvdW5kYXJ5OwogCisgIC8qIFN0YWNrIG9mIGludGVycnVwdCBoYW5k bGVyIGlzIGFsd2F5cyBhbGlnbmVkIHRvIE1JTl9TVEFDS19CT1VOREFSWS4K KyAgICovCisgIGlmIChjZnVuLT5tYWNoaW5lLT5mdW5jX3R5cGUgIT0gVFlQ RV9OT1JNQUwpCisgICAgaW5jb21pbmdfc3RhY2tfYm91bmRhcnkgPSBNSU5f U1RBQ0tfQk9VTkRBUlk7CiAgIC8qIFByZWZlciB0aGUgb25lIHNwZWNpZmll ZCBhdCBjb21tYW5kIGxpbmUuICovCi0gIGlmIChpeDg2X3VzZXJfaW5jb21p bmdfc3RhY2tfYm91bmRhcnkpCisgIGVsc2UgaWYgKGl4ODZfdXNlcl9pbmNv bWluZ19zdGFja19ib3VuZGFyeSkKICAgICBpbmNvbWluZ19zdGFja19ib3Vu ZGFyeSA9IGl4ODZfdXNlcl9pbmNvbWluZ19zdGFja19ib3VuZGFyeTsKICAg LyogSW4gMzJiaXQsIHVzZSBNSU5fU1RBQ0tfQk9VTkRBUlkgZm9yIGluY29t aW5nIHN0YWNrIGJvdW5kYXJ5CiAgICAgIGlmIC1tc3RhY2tyZWFsaWduIGlz IHVzZWQsIGl0IGlzbid0IHVzZWQgZm9yIHNpYmNhbGwgY2hlY2sgYW5kCkBA IC0xMjU1Niw2ICsxMjc4OCw4IEBAIGl4ODZfZXhwYW5kX3Byb2xvZ3VlICh2 b2lkKQogICBzdHJ1Y3QgaXg4Nl9mcmFtZSBmcmFtZTsKICAgSE9TVF9XSURF X0lOVCBhbGxvY2F0ZTsKICAgYm9vbCBpbnRfcmVnaXN0ZXJzX3NhdmVkOwor ICBib29sIGJuZF9yZWdpc3RlcnNfc2F2ZWQ7CisgIGJvb2wgbWFza19yZWdp c3RlcnNfc2F2ZWQ7CiAgIGJvb2wgc3NlX3JlZ2lzdGVyc19zYXZlZDsKICAg cnR4IHN0YXRpY19jaGFpbiA9IE5VTExfUlRYOwogCkBAIC0xMjcyMSw2ICsx Mjk1NSw4IEBAIGl4ODZfZXhwYW5kX3Byb2xvZ3VlICh2b2lkKQogICAgIH0K IAogICBpbnRfcmVnaXN0ZXJzX3NhdmVkID0gKGZyYW1lLm5yZWdzID09IDAp OworICBibmRfcmVnaXN0ZXJzX3NhdmVkID0gKGZyYW1lLm5ibmRyZWdzID09 IDApOworICBtYXNrX3JlZ2lzdGVyc19zYXZlZCA9IChmcmFtZS5ubWFza3Jl Z3MgPT0gMCk7CiAgIHNzZV9yZWdpc3RlcnNfc2F2ZWQgPSAoZnJhbWUubnNz ZXJlZ3MgPT0gMCk7CiAKICAgaWYgKGZyYW1lX3BvaW50ZXJfbmVlZGVkICYm ICFtLT5mcy5mcF92YWxpZCkKQEAgLTEyNzg1LDEwICsxMzAyMSwxMCBAQCBp eDg2X2V4cGFuZF9wcm9sb2d1ZSAodm9pZCkKIAkgdGhhdCB3ZSBtdXN0IGFs bG9jYXRlIHRoZSBzaXplIG9mIHRoZSByZWdpc3RlciBzYXZlIGFyZWEgYmVm b3JlCiAJIHBlcmZvcm1pbmcgdGhlIGFjdHVhbCBhbGlnbm1lbnQuICBPdGhl cndpc2Ugd2UgY2Fubm90IGd1YXJhbnRlZQogCSB0aGF0IHRoZXJlJ3MgZW5v dWdoIHN0b3JhZ2UgYWJvdmUgdGhlIHJlYWxpZ25tZW50IHBvaW50LiAgKi8K LSAgICAgIGlmIChtLT5mcy5zcF9vZmZzZXQgIT0gZnJhbWUuc3NlX3JlZ19z YXZlX29mZnNldCkKKyAgICAgIGlmIChtLT5mcy5zcF9vZmZzZXQgIT0gZnJh bWUuYm5kX3JlZ19zYXZlX29mZnNldCkKICAgICAgICAgcHJvX2VwaWxvZ3Vl X2FkanVzdF9zdGFjayAoc3RhY2tfcG9pbnRlcl9ydHgsIHN0YWNrX3BvaW50 ZXJfcnR4LAogCQkJCSAgIEdFTl9JTlQgKG0tPmZzLnNwX29mZnNldAotCQkJ CQkgICAgLSBmcmFtZS5zc2VfcmVnX3NhdmVfb2Zmc2V0KSwKKwkJCQkJICAg IC0gZnJhbWUuYm5kX3JlZ19zYXZlX29mZnNldCksCiAJCQkJICAgLTEsIGZh bHNlKTsKIAogICAgICAgLyogQWxpZ24gdGhlIHN0YWNrLiAgKi8KQEAgLTEz MDE1LDYgKzEzMjUxLDEwIEBAIGl4ODZfZXhwYW5kX3Byb2xvZ3VlICh2b2lk KQogCiAgIGlmICghaW50X3JlZ2lzdGVyc19zYXZlZCkKICAgICBpeDg2X2Vt aXRfc2F2ZV9yZWdzX3VzaW5nX21vdiAoZnJhbWUucmVnX3NhdmVfb2Zmc2V0 KTsKKyAgaWYgKCFibmRfcmVnaXN0ZXJzX3NhdmVkKQorICAgIGl4ODZfZW1p dF9zYXZlX2JuZF9yZWdzX3VzaW5nX21vdiAoZnJhbWUuYm5kX3JlZ19zYXZl X29mZnNldCk7CisgIGlmICghbWFza19yZWdpc3RlcnNfc2F2ZWQpCisgICAg aXg4Nl9lbWl0X3NhdmVfbWFza19yZWdzX3VzaW5nX21vdiAoZnJhbWUubWFz a19yZWdfc2F2ZV9vZmZzZXQpOwogICBpZiAoIXNzZV9yZWdpc3RlcnNfc2F2 ZWQpCiAgICAgaXg4Nl9lbWl0X3NhdmVfc3NlX3JlZ3NfdXNpbmdfbW92IChm cmFtZS5zc2VfcmVnX3NhdmVfb2Zmc2V0KTsKIApAQCAtMTMwNjAsNiArMTMz MDAsMjMgQEAgaXg4Nl9leHBhbmRfcHJvbG9ndWUgKHZvaWQpCiAgICAgIGNv bWJpbmVkIHdpdGggcHJvbG9ndWUgbW9kaWZpY2F0aW9ucy4gICovCiAgIGlm IChUQVJHRVRfU0VIKQogICAgIGVtaXRfaW5zbiAoZ2VuX3Byb2xvZ3VlX3Vz ZSAoc3RhY2tfcG9pbnRlcl9ydHgpKTsKKworICBpZiAoY2Z1bi0+bWFjaGlu ZS0+ZnVuY190eXBlICE9IFRZUEVfTk9STUFMKQorICAgIHsKKyAgICAgIC8q IFNpbmNlIHRoZSBwb2ludGVyIGFyZ3VtZW50IG9mIGludGVycnVwdCBoYW5k bGVyIGlzbid0IGEgcmVhbAorCSBhcmd1bWVudCwgYWRqdXN0IERFQ0xfSU5D T01JTkdfUlRMIGZvciBkZWJ1ZyBvdXRwdXQuICAqLworICAgICAgdHJlZSBh cmcgPSBERUNMX0FSR1VNRU5UUyAoY3VycmVudF9mdW5jdGlvbl9kZWNsKTsK KyAgICAgIGdjY19hc3NlcnQgKGFyZyAhPSBOVUxMX1RSRUUKKwkJICAmJiBQ T0lOVEVSX1RZUEVfUCAoVFJFRV9UWVBFIChhcmcpKSk7CisgICAgICBpZiAo Y2Z1bi0+bWFjaGluZS0+ZnVuY190eXBlID09IFRZUEVfRVhDRVBUSU9OKQor CS8qIChBUCkgaW4gdGhlIGN1cnJlbnQgZnJhbWUgaW4gZXhjZXB0aW9uIGhh bmRsZXIuICAqLworCURFQ0xfSU5DT01JTkdfUlRMIChhcmcpID0gYXJnX3Bv aW50ZXJfcnR4OworICAgICAgZWxzZQorCS8qIC1XT1JEKEFQKSBpbiB0aGUg Y3VycmVudCBmcmFtZSBpbiBpbnRlcnJ1cHQgaGFuZGxlci4gICovCisJREVD TF9JTkNPTUlOR19SVEwgKGFyZykgPSBwbHVzX2NvbnN0YW50IChQbW9kZSwK KwkJCQkJCSBhcmdfcG9pbnRlcl9ydHgsCisJCQkJCQkgLVVOSVRTX1BFUl9X T1JEKTsKKyAgICB9CiB9CiAKIC8qIEVtaXQgY29kZSB0byByZXN0b3JlIFJF RyB1c2luZyBhIFBPUCBpbnNuLiAgKi8KQEAgLTEzMjAxLDYgKzEzNDU4LDkw IEBAIGl4ODZfZW1pdF9yZXN0b3JlX3JlZ3NfdXNpbmdfbW92IChIT1NUX1dJ REVfSU5UIGNmYV9vZmZzZXQsCiAgICAgICB9CiB9CiAKKy8qIEVtaXQgY29k ZSB0byByZXN0b3JlIHNhdmVkIEJORCByZWdpc3RlcnMgdXNpbmcgTU9WIGlu c25zLgorICAgRmlyc3QgcmVnaXN0ZXIgaXMgcmVzdG9yZWQgZnJvbSBDRkEg LSBDRkFfT0ZGU0VULiAgKi8KK3N0YXRpYyB2b2lkCitpeDg2X2VtaXRfcmVz dG9yZV9ibmRfcmVnc191c2luZ19tb3YgKEhPU1RfV0lERV9JTlQgY2ZhX29m ZnNldCwKKwkJCQkgICAgICBib29sIG1heWJlX2VoX3JldHVybikKK3sKKyAg c3RydWN0IG1hY2hpbmVfZnVuY3Rpb24gKm0gPSBjZnVuLT5tYWNoaW5lOwor ICB1bnNpZ25lZCBpbnQgcmVnbm87CisgIGVudW0gbWFjaGluZV9tb2RlIG1v ZGUgPSBCTkRtb2RlOworICB1bnNpZ25lZCBpbnQgc2l6ZSA9IEdFVF9NT0RF X1NJWkUgKG1vZGUpOworCisgIGZvciAocmVnbm8gPSAwOyByZWdubyA8IEZJ UlNUX1BTRVVET19SRUdJU1RFUjsgcmVnbm8rKykKKyAgICBpZiAoQk5EX1JF R05PX1AgKHJlZ25vKSAmJiBpeDg2X3NhdmVfcmVnIChyZWdubywgbWF5YmVf ZWhfcmV0dXJuKSkKKyAgICAgIHsKKwlydHggcmVnID0gZ2VuX3J0eF9SRUcg KG1vZGUsIHJlZ25vKTsKKwlydHggbWVtOworCXJ0eF9pbnNuICppbnNuOwor CisJbWVtID0gY2hvb3NlX2Jhc2VhZGRyIChjZmFfb2Zmc2V0KTsKKwltZW0g PSBnZW5fZnJhbWVfbWVtIChtb2RlLCBtZW0pOworCWluc24gPSBlbWl0X21v dmVfaW5zbiAocmVnLCBtZW0pOworCisJaWYgKG0tPmZzLmNmYV9yZWcgPT0g Y3J0bC0+ZHJhcF9yZWcgJiYgcmVnbm8gPT0gUkVHTk8gKGNydGwtPmRyYXBf cmVnKSkKKwkgIHsKKwkgICAgLyogUHJldmlvdXNseSB3ZSdkIHJlcHJlc2Vu dGVkIHRoZSBDRkEgYXMgYW4gZXhwcmVzc2lvbgorCSAgICAgICBsaWtlICoo JWVicCAtIDgpLiAgV2UndmUganVzdCBwb3BwZWQgdGhhdCB2YWx1ZSBmcm9t CisJICAgICAgIHRoZSBzdGFjaywgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byBy ZXNldCB0aGUgQ0ZBIHRvCisJICAgICAgIHRoZSBkcmFwIHJlZ2lzdGVyLiAg VGhpcyB3aWxsIHJlbWFpbiB1bnRpbCB3ZSByZXN0b3JlCisJICAgICAgIHRo ZSBzdGFjayBwb2ludGVyLiAgKi8KKwkgICAgYWRkX3JlZ19ub3RlIChpbnNu LCBSRUdfQ0ZBX0RFRl9DRkEsIHJlZyk7CisJICAgIFJUWF9GUkFNRV9SRUxB VEVEX1AgKGluc24pID0gMTsKKworCSAgICAvKiBUaGlzIG1lYW5zIHRoYXQg dGhlIERSQVAgcmVnaXN0ZXIgaXMgdmFsaWQgZm9yIGFkZHJlc3NpbmcuICAq LworCSAgICBtLT5mcy5kcmFwX3ZhbGlkID0gdHJ1ZTsKKwkgIH0KKwllbHNl CisJICBpeDg2X2FkZF9jZmFfcmVzdG9yZV9ub3RlIChOVUxMLCByZWcsIGNm YV9vZmZzZXQpOworCisJY2ZhX29mZnNldCAtPSBzaXplOworICAgICAgfQor fQorCisvKiBFbWl0IGNvZGUgdG8gcmVzdG9yZSBzYXZlZCBNQVNLIHJlZ2lz dGVycyB1c2luZyBNT1YgaW5zbnMuCisgICBGaXJzdCByZWdpc3RlciBpcyBy ZXN0b3JlZCBmcm9tIENGQSAtIENGQV9PRkZTRVQuICAqLworc3RhdGljIHZv aWQKK2l4ODZfZW1pdF9yZXN0b3JlX21hc2tfcmVnc191c2luZ19tb3YgKEhP U1RfV0lERV9JTlQgY2ZhX29mZnNldCwKKwkJCQkgICAgICAgYm9vbCBtYXli ZV9laF9yZXR1cm4pCit7CisgIHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uICpt ID0gY2Z1bi0+bWFjaGluZTsKKyAgdW5zaWduZWQgaW50IHJlZ25vOworICBl bnVtIG1hY2hpbmVfbW9kZSBtb2RlID0gVEFSR0VUX0FWWDUxMkJXID8gRElt b2RlIDogSEltb2RlOworICB1bnNpZ25lZCBpbnQgc2l6ZSA9IEdFVF9NT0RF X1NJWkUgKG1vZGUpOworCisgIGZvciAocmVnbm8gPSAwOyByZWdubyA8IEZJ UlNUX1BTRVVET19SRUdJU1RFUjsgcmVnbm8rKykKKyAgICBpZiAoTUFTS19S RUdOT19QIChyZWdubykgJiYgaXg4Nl9zYXZlX3JlZyAocmVnbm8sIG1heWJl X2VoX3JldHVybikpCisgICAgICB7CisJcnR4IHJlZyA9IGdlbl9ydHhfUkVH IChtb2RlLCByZWdubyk7CisJcnR4IG1lbTsKKwlydHhfaW5zbiAqaW5zbjsK KworCW1lbSA9IGNob29zZV9iYXNlYWRkciAoY2ZhX29mZnNldCk7CisJbWVt ID0gZ2VuX2ZyYW1lX21lbSAobW9kZSwgbWVtKTsKKwlpbnNuID0gZW1pdF9t b3ZlX2luc24gKHJlZywgbWVtKTsKKworCWlmIChtLT5mcy5jZmFfcmVnID09 IGNydGwtPmRyYXBfcmVnICYmIHJlZ25vID09IFJFR05PIChjcnRsLT5kcmFw X3JlZykpCisJICB7CisJICAgIC8qIFByZXZpb3VzbHkgd2UnZCByZXByZXNl bnRlZCB0aGUgQ0ZBIGFzIGFuIGV4cHJlc3Npb24KKwkgICAgICAgbGlrZSAq KCVlYnAgLSA4KS4gIFdlJ3ZlIGp1c3QgcG9wcGVkIHRoYXQgdmFsdWUgZnJv bQorCSAgICAgICB0aGUgc3RhY2ssIHdoaWNoIG1lYW5zIHdlIG5lZWQgdG8g cmVzZXQgdGhlIENGQSB0bworCSAgICAgICB0aGUgZHJhcCByZWdpc3Rlci4g IFRoaXMgd2lsbCByZW1haW4gdW50aWwgd2UgcmVzdG9yZQorCSAgICAgICB0 aGUgc3RhY2sgcG9pbnRlci4gICovCisJICAgIGFkZF9yZWdfbm90ZSAoaW5z biwgUkVHX0NGQV9ERUZfQ0ZBLCByZWcpOworCSAgICBSVFhfRlJBTUVfUkVM QVRFRF9QIChpbnNuKSA9IDE7CisKKwkgICAgLyogVGhpcyBtZWFucyB0aGF0 IHRoZSBEUkFQIHJlZ2lzdGVyIGlzIHZhbGlkIGZvciBhZGRyZXNzaW5nLiAg Ki8KKwkgICAgbS0+ZnMuZHJhcF92YWxpZCA9IHRydWU7CisJICB9CisJZWxz ZQorCSAgaXg4Nl9hZGRfY2ZhX3Jlc3RvcmVfbm90ZSAoTlVMTCwgcmVnLCBj ZmFfb2Zmc2V0KTsKKworCWNmYV9vZmZzZXQgLT0gc2l6ZTsKKyAgICAgIH0K K30KKwogLyogRW1pdCBjb2RlIHRvIHJlc3RvcmUgc2F2ZWQgcmVnaXN0ZXJz IHVzaW5nIE1PViBpbnNucy4KICAgIEZpcnN0IHJlZ2lzdGVyIGlzIHJlc3Rv cmVkIGZyb20gQ0ZBIC0gQ0ZBX09GRlNFVC4gICovCiBzdGF0aWMgdm9pZApA QCAtMTMyMDgsMjcgKzEzNTQ5LDQ0IEBAIGl4ODZfZW1pdF9yZXN0b3JlX3Nz ZV9yZWdzX3VzaW5nX21vdiAoSE9TVF9XSURFX0lOVCBjZmFfb2Zmc2V0LAog CQkJCSAgICAgIGJvb2wgbWF5YmVfZWhfcmV0dXJuKQogewogICB1bnNpZ25l ZCBpbnQgcmVnbm87CisgIGVudW0gbWFjaGluZV9tb2RlIHZlY3Rvcl9yZWdf bW9kZTsKKworICBpZiAoY2Z1bi0+bWFjaGluZS0+bm9fY2FsbGVyX3NhdmVk X3JlZ2lzdGVycykKKyAgICB7CisgICAgICAvKiBXZSBtdXN0IHJlc3RvcmUg ZnVsbCB2ZWN0b3IgcmVnaXN0ZXJzIGlmIHRoZXJlIGFyZSBubworCSBjYWxs ZXItc2F2ZWQgcmVnaXN0ZXJzLiAgKi8KKyAgICAgIGlmIChUQVJHRVRfQVZY NTEyRikKKwl2ZWN0b3JfcmVnX21vZGUgPSBWMTZTRm1vZGU7CisgICAgICBl bHNlIGlmIChUQVJHRVRfQVZYKQorCXZlY3Rvcl9yZWdfbW9kZSA9IFY4U0Zt b2RlOworICAgICAgZWxzZQorCXZlY3Rvcl9yZWdfbW9kZSA9IFY0U0Ztb2Rl OworICAgIH0KKyAgZWxzZQorICAgIHZlY3Rvcl9yZWdfbW9kZSA9IFY0U0Zt b2RlOwogCiAgIGZvciAocmVnbm8gPSAwOyByZWdubyA8IEZJUlNUX1BTRVVE T19SRUdJU1RFUjsgcmVnbm8rKykKICAgICBpZiAoU1NFX1JFR05PX1AgKHJl Z25vKSAmJiBpeDg2X3NhdmVfcmVnIChyZWdubywgbWF5YmVfZWhfcmV0dXJu KSkKICAgICAgIHsKLQlydHggcmVnID0gZ2VuX3J0eF9SRUcgKFY0U0Ztb2Rl LCByZWdubyk7CisJcnR4IHJlZyA9IGdlbl9ydHhfUkVHICh2ZWN0b3JfcmVn X21vZGUsIHJlZ25vKTsKIAlydHggbWVtOwogCXVuc2lnbmVkIGludCBhbGln bjsKIAogCW1lbSA9IGNob29zZV9iYXNlYWRkciAoY2ZhX29mZnNldCk7Ci0J bWVtID0gZ2VuX3J0eF9NRU0gKFY0U0Ztb2RlLCBtZW0pOworCW1lbSA9IGdl bl9ydHhfTUVNICh2ZWN0b3JfcmVnX21vZGUsIG1lbSk7CiAKIAkvKiBUaGUg bG9jYXRpb24gaXMgYWxpZ25lZCB1cCB0byBJTkNPTUlOR19TVEFDS19CT1VO REFSWS4gICovCi0JYWxpZ24gPSBNSU4gKEdFVF9NT0RFX0FMSUdOTUVOVCAo VjRTRm1vZGUpLCBJTkNPTUlOR19TVEFDS19CT1VOREFSWSk7CisJYWxpZ24g PSBNSU4gKEdFVF9NT0RFX0FMSUdOTUVOVCAodmVjdG9yX3JlZ19tb2RlKSwK KwkJICAgICBJTkNPTUlOR19TVEFDS19CT1VOREFSWSk7CiAJc2V0X21lbV9h bGlnbiAobWVtLCBhbGlnbik7CiAKIAkvKiBTU0Ugc2F2ZXMgYXJlIG5vdCB3 aXRoaW4gcmUtYWxpZ25lZCBsb2NhbCBzdGFjayBmcmFtZS4KIAkgICBJbiBj YXNlIElOQ09NSU5HX1NUQUNLX0JPVU5EQVJZIGlzIG1pc2FsaWduZWQsIHdl IGhhdmUKIAkgICB0byBlbWl0IHVuYWxpZ25lZCBsb2FkLiAgKi8KLQlpZiAo YWxpZ24gPCAxMjgpCisJaWYgKHZlY3Rvcl9yZWdfbW9kZSA9PSBWNFNGbW9k ZSAmJiBhbGlnbiA8IDEyOCkKIAkgIHsKLQkgICAgcnR4IHVuc3BlYyA9IGdl bl9ydHhfVU5TUEVDIChWNFNGbW9kZSwgZ2VuX3J0dmVjICgxLCBtZW0pLAor CSAgICBydHggdW5zcGVjID0gZ2VuX3J0eF9VTlNQRUMgKHZlY3Rvcl9yZWdf bW9kZSwKKwkJCQkJIGdlbl9ydHZlYyAoMSwgbWVtKSwKIAkJCQkJIFVOU1BF Q19MT0FEVSk7CiAJICAgIGVtaXRfaW5zbiAoZ2VuX3J0eF9TRVQgKHJlZywg dW5zcGVjKSk7CiAJICB9CkBAIC0xMzIzNyw3ICsxMzU5NSw3IEBAIGl4ODZf ZW1pdF9yZXN0b3JlX3NzZV9yZWdzX3VzaW5nX21vdiAoSE9TVF9XSURFX0lO VCBjZmFfb2Zmc2V0LAogCiAJaXg4Nl9hZGRfY2ZhX3Jlc3RvcmVfbm90ZSAo TlVMTCwgcmVnLCBjZmFfb2Zmc2V0KTsKIAotCWNmYV9vZmZzZXQgLT0gR0VU X01PREVfU0laRSAoVjRTRm1vZGUpOworCWNmYV9vZmZzZXQgLT0gR0VUX01P REVfU0laRSAodmVjdG9yX3JlZ19tb2RlKTsKICAgICAgIH0KIH0KIApAQCAt MTMzMzYsMTYgKzEzNjk0LDI1IEBAIGl4ODZfZXhwYW5kX2VwaWxvZ3VlIChp bnQgc3R5bGUpCiAgICAgICBpZiAoVEFSR0VUXzY0QklUCiAJICAmJiBtLT5m cy5zcF9vZmZzZXQgPiAweDdmZmZmZmZmCiAJICAmJiAhKG0tPmZzLmZwX3Zh bGlkIHx8IG0tPmZzLmRyYXBfdmFsaWQpCi0JICAmJiAoZnJhbWUubnNzZXJl Z3MgKyBmcmFtZS5ucmVncykgIT0gMCkKKwkgICYmIChmcmFtZS5uc3NlcmVn cyArIGZyYW1lLm5tYXNrcmVncyArIGZyYW1lLm5ibmRyZWdzCisJICAgICAg KyBmcmFtZS5ucmVncykgIT0gMCkKIAl7CiAJICBwcm9fZXBpbG9ndWVfYWRq dXN0X3N0YWNrIChzdGFja19wb2ludGVyX3J0eCwgc3RhY2tfcG9pbnRlcl9y dHgsCiAJCQkJICAgICBHRU5fSU5UIChtLT5mcy5zcF9vZmZzZXQKLQkJCQkJ ICAgICAgLSBmcmFtZS5zc2VfcmVnX3NhdmVfb2Zmc2V0KSwKKwkJCQkJICAg ICAgLSBmcmFtZS5ibmRfcmVnX3NhdmVfb2Zmc2V0KSwKIAkJCQkgICAgIHN0 eWxlLAogCQkJCSAgICAgbS0+ZnMuY2ZhX3JlZyA9PSBzdGFja19wb2ludGVy X3J0eCk7CiAJfQogICAgIH0KIAorICBpZiAoZnJhbWUubmJuZHJlZ3MpCisg ICAgaXg4Nl9lbWl0X3Jlc3RvcmVfYm5kX3JlZ3NfdXNpbmdfbW92IChmcmFt ZS5ibmRfcmVnX3NhdmVfb2Zmc2V0LAorCQkJCQkgIHN0eWxlID09IDIpOwor CisgIGlmIChmcmFtZS5ubWFza3JlZ3MpCisgICAgaXg4Nl9lbWl0X3Jlc3Rv cmVfbWFza19yZWdzX3VzaW5nX21vdiAoZnJhbWUubWFza19yZWdfc2F2ZV9v ZmZzZXQsCisJCQkJCSAgIHN0eWxlID09IDIpOworCiAgIC8qIElmIHRoZXJl IGFyZSBhbnkgU1NFIHJlZ2lzdGVycyB0byByZXN0b3JlLCB0aGVuIHdlIGhh dmUgdG8gZG8gaXQKICAgICAgdmlhIG1vdmVzLCBzaW5jZSB0aGVyZSdzIG9i dmlvdXNseSBubyBwb3AgZm9yIFNTRSByZWdzLiAgKi8KICAgaWYgKGZyYW1l Lm5zc2VyZWdzKQpAQCAtMTM1NDMsNyArMTM5MTAsMjAgQEAgaXg4Nl9leHBh bmRfZXBpbG9ndWUgKGludCBzdHlsZSkKICAgICAgIHJldHVybjsKICAgICB9 CiAKLSAgaWYgKGNydGwtPmFyZ3MucG9wc19hcmdzICYmIGNydGwtPmFyZ3Mu c2l6ZSkKKyAgaWYgKGNmdW4tPm1hY2hpbmUtPmZ1bmNfdHlwZSAhPSBUWVBF X05PUk1BTCkKKyAgICB7CisgICAgICAvKiBSZXR1cm4gd2l0aCB0aGUgIklS RVQiIGluc3RydWN0aW9uIGZyb20gaW50ZXJydXB0IGhhbmRsZXIuCisJIFBv cCB0aGUgJ0VSUk9SX0NPREUnIG9mZiB0aGUgc3RhY2sgYmVmb3JlIHRoZSAn SVJFVCcKKwkgaW5zdHJ1Y3Rpb24gaW4gZXhjZXB0aW9uIGhhbmRsZXIuICAq LworICAgICAgaWYgKGNmdW4tPm1hY2hpbmUtPmZ1bmNfdHlwZSA9PSBUWVBF X0VYQ0VQVElPTikKKwl7CisJICBydHggciA9IHBsdXNfY29uc3RhbnQgKFBt b2RlLCBzdGFja19wb2ludGVyX3J0eCwKKwkJCQkgVU5JVFNfUEVSX1dPUkQp OworCSAgZW1pdF9pbnNuIChnZW5fcnR4X1NFVCAoc3RhY2tfcG9pbnRlcl9y dHgsIHIpKTsKKwl9CisgICAgICBlbWl0X2p1bXBfaW5zbiAoZ2VuX2ludGVy cnVwdF9yZXR1cm4gKCkpOworICAgIH0KKyAgZWxzZSBpZiAoY3J0bC0+YXJn cy5wb3BzX2FyZ3MgJiYgY3J0bC0+YXJncy5zaXplKQogICAgIHsKICAgICAg IHJ0eCBwb3BjID0gR0VOX0lOVCAoY3J0bC0+YXJncy5wb3BzX2FyZ3MpOwog CkBAIC0xODUxMiw2ICsxODg5MiwxNCBAQCBpeDg2X2V4cGFuZF9tb3ZlICht YWNoaW5lX21vZGUgbW9kZSwgcnR4IG9wZXJhbmRzW10pCiAgIHJ0eCBvcDAs IG9wMTsKICAgZW51bSB0bHNfbW9kZWwgbW9kZWw7CiAKKyAgaWYgKGNmdW4t Pm1hY2hpbmUtPmZ1bmNfdHlwZSAhPSBUWVBFX05PUk1BTCAmJiBJU19TVEFD S19NT0RFIChtb2RlKSkKKyAgICB7CisgICAgICBlcnJvciAoIjgwMzg3IGlu c3RydWN0aW9ucyBhcmVuJ3QgYWxsb3dlZCBpbiAlcyBzZXJ2aWNlIHJvdXRp bmUiLAorCSAgICAgKGNmdW4tPm1hY2hpbmUtPmZ1bmNfdHlwZSA9PSBUWVBF X0VYQ0VQVElPTgorCSAgICAgID8gImV4Y2VwdGlvbiIgOiAiaW50ZXJydXB0 IikpOworICAgICAgcmV0dXJuOworICAgIH0KKwogICBvcDAgPSBvcGVyYW5k c1swXTsKICAgb3AxID0gb3BlcmFuZHNbMV07CiAKQEAgLTE4NjU2LDYgKzE5 MDQ0LDE1IEBAIGl4ODZfZXhwYW5kX3ZlY3Rvcl9tb3ZlIChtYWNoaW5lX21v ZGUgbW9kZSwgcnR4IG9wZXJhbmRzW10pCiAgIHJ0eCBvcDAgPSBvcGVyYW5k c1swXSwgb3AxID0gb3BlcmFuZHNbMV07CiAgIHVuc2lnbmVkIGludCBhbGln biA9IEdFVF9NT0RFX0FMSUdOTUVOVCAobW9kZSk7CiAKKyAgaWYgKGNmdW4t Pm1hY2hpbmUtPmZ1bmNfdHlwZSAhPSBUWVBFX05PUk1BTAorICAgICAgJiYg VkFMSURfTU1YX1JFR19NT0RFIChtb2RlKSkKKyAgICB7CisgICAgICBlcnJv ciAoIk1NWC8zRG5vdyBpbnN0cnVjdGlvbnMgYXJlbid0IGFsbG93ZWQgaW4g JXMgc2VydmljZSByb3V0aW5lIiwKKwkgICAgIChjZnVuLT5tYWNoaW5lLT5m dW5jX3R5cGUgPT0gVFlQRV9FWENFUFRJT04KKwkgICAgICA/ICJleGNlcHRp b24iIDogImludGVycnVwdCIpKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisK ICAgaWYgKHB1c2hfb3BlcmFuZCAob3AwLCBWT0lEbW9kZSkpCiAgICAgb3Aw ID0gZW1pdF9tb3ZlX3Jlc29sdmVfcHVzaCAobW9kZSwgb3AwKTsKIApAQCAt MjY3NDEsNiArMjcxMzgsMTcgQEAgaXg4Nl9leHBhbmRfY2FsbCAocnR4IHJl dHZhbCwgcnR4IGZuYWRkciwgcnR4IGNhbGxhcmcxLAogICBydHggdmVjWzNd OwogICBydHggdXNlID0gTlVMTCwgY2FsbDsKICAgdW5zaWduZWQgaW50IHZl Y19sZW4gPSAwOworICB0cmVlIGZuZGVjbDsKKworICBpZiAoR0VUX0NPREUg KFhFWFAgKGZuYWRkciwgMCkpID09IFNZTUJPTF9SRUYpCisgICAgeworICAg ICAgZm5kZWNsID0gU1lNQk9MX1JFRl9ERUNMIChYRVhQIChmbmFkZHIsIDAp KTsKKyAgICAgIGlmIChmbmRlY2wKKwkgICYmIChsb29rdXBfYXR0cmlidXRl ICgiaW50ZXJydXB0IiwgREVDTF9BVFRSSUJVVEVTIChmbmRlY2wpKSkpCisJ ZXJyb3IgKCJpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lIGNhbid0IGJlIGNh bGxlZCBkaXJlY3RseSIpOworICAgIH0KKyAgZWxzZQorICAgIGZuZGVjbCA9 IE5VTExfVFJFRTsKIAogICBpZiAocG9wID09IGNvbnN0MF9ydHgpCiAgICAg cG9wID0gTlVMTDsKQEAgLTI2ODM4LDggKzI3MjQ2LDI5IEBAIGl4ODZfZXhw YW5kX2NhbGwgKHJ0eCByZXR2YWwsIHJ0eCBmbmFkZHIsIHJ0eCBjYWxsYXJn MSwKICAgICAgIHZlY1t2ZWNfbGVuKytdID0gcG9wOwogICAgIH0KIAotICBp ZiAoVEFSR0VUXzY0QklUX01TX0FCSQotICAgICAgJiYgKCFjYWxsYXJnMiB8 fCBJTlRWQUwgKGNhbGxhcmcyKSAhPSAtMikpCisgIGlmIChjZnVuLT5tYWNo aW5lLT5ub19jYWxsZXJfc2F2ZWRfcmVnaXN0ZXJzCisgICAgICAmJiAoIWZu ZGVjbAorCSAgfHwgIWxvb2t1cF9hdHRyaWJ1dGUgKCJub19jYWxsZXJfc2F2 ZWRfcmVnaXN0ZXJzIiwKKwkJCQlERUNMX0FUVFJJQlVURVMgKGZuZGVjbCkp KSkKKyAgICB7CisgICAgICBzdGF0aWMgY29uc3QgY2hhciBpeDg2X2NhbGxf dXNlZF9yZWdzW10gPSBDQUxMX1VTRURfUkVHSVNURVJTOworICAgICAgYm9v bCBpc182NGJpdF9tc19hYmkgPSAoVEFSR0VUXzY0QklUCisJCQkgICAgICAm JiBpeDg2X2Z1bmN0aW9uX2FiaSAoZm5kZWNsKSA9PSBNU19BQkkpOworICAg ICAgY2hhciBjX21hc2sgPSBDQUxMX1VTRURfUkVHSVNURVJTX01BU0sgKGlz XzY0Yml0X21zX2FiaSk7CisKKyAgICAgIC8qIElmIHRoZXJlIGFyZSBubyBj YWxsZXItc2F2ZWQgcmVnaXN0ZXJzLCBhZGQgYWxsIHJlZ2lzdGVycworCSB0 aGF0IGFyZSBjbG9iYmVyZWQgYnkgdGhlIGNhbGwuICAqLworICAgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBGSVJTVF9QU0VVRE9fUkVHSVNURVI7IGkrKykK KwlpZiAoIWZpeGVkX3JlZ3NbaV0KKwkgICAgJiYgKGl4ODZfY2FsbF91c2Vk X3JlZ3NbaV0gPT0gMQorCQl8fCAoaXg4Nl9jYWxsX3VzZWRfcmVnc1tpXSAm IGNfbWFzaykpCisJICAgICYmICFTVEFDS19SRUdOT19QIChpKQorCSAgICAm JiAhTU1YX1JFR05PX1AgKGkpKQorCSAgY2xvYmJlcl9yZWcgKCZ1c2UsCisJ CSAgICAgICBnZW5fcnR4X1JFRyAoR0VUX01PREUgKHJlZ25vX3JlZ19ydHhb aV0pLCBpKSk7CisgICAgfQorICBlbHNlIGlmIChUQVJHRVRfNjRCSVRfTVNf QUJJCisJICAgJiYgKCFjYWxsYXJnMiB8fCBJTlRWQUwgKGNhbGxhcmcyKSAh PSAtMikpCiAgICAgewogICAgICAgaW50IGNvbnN0IGNyZWdzX3NpemUKIAk9 IEFSUkFZX1NJWkUgKHg4Nl82NF9tc19zeXN2X2V4dHJhX2Nsb2JiZXJlZF9y ZWdpc3RlcnMpOwpAQCAtNDQyMjYsNiArNDQ2NTUsNzUgQEAgaXg4Nl9oYW5k bGVfZm5kZWNsX2F0dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHJlZSBuYW1lLCB0 cmVlLCBpbnQsCiAgIHJldHVybiBOVUxMX1RSRUU7CiB9CiAKK3N0YXRpYyB0 cmVlCitpeDg2X2hhbmRsZV9ub19jYWxsZXJfc2F2ZWRfcmVnaXN0ZXJzX2F0 dHJpYnV0ZSAodHJlZSAqbm9kZSwKKwkJCQkJCSB0cmVlIG5hbWUsIHRyZWUs IGludCwKKwkJCQkJCSBib29sICpub19hZGRfYXR0cnMpCit7CisgIGlmIChU UkVFX0NPREUgKCpub2RlKSAhPSBGVU5DVElPTl9ERUNMKQorICAgIHsKKyAg ICAgIHdhcm5pbmcgKE9QVF9XYXR0cmlidXRlcywgIiVxRSBhdHRyaWJ1dGUg b25seSBhcHBsaWVzIHRvIGZ1bmN0aW9ucyIsCisJICAgICAgIG5hbWUpOwor ICAgICAgKm5vX2FkZF9hdHRycyA9IHRydWU7CisgICAgfQorICAvKiBERUNM X1JFU1VMVCBkb2VzIG5vdCBleGlzdCB0aGVyZSB5ZXQsIGJ1dCB0aGUgZnVu Y3Rpb24gdHlwZQorICAgICBjb250YWlucyByZXR1cm4gdHlwZSBkYXRhLiAg Ki8KKyAgdHJlZSBmdW5jX3R5cGUgPSBUUkVFX1RZUEUgKCpub2RlKTsKKyAg dHJlZSByZXR1cm5fdHlwZSA9IFRSRUVfVFlQRSAoZnVuY190eXBlKTsKKyAg aWYgKCEgVk9JRF9UWVBFX1AgKHJldHVybl90eXBlKSkKKyAgICBlcnJvciAo ImZ1bmN0aW9uIHdpdGhvdXQgY2FsbGVyLXNhdmVkIHJlZ2lzdGVycyBjYW4n dCBoYXZlIG5vbi12b2lkIHJldHVybiB2YWx1ZSIpOworICByZXR1cm4gTlVM TF9UUkVFOworfQorCitzdGF0aWMgdHJlZQoraXg4Nl9oYW5kbGVfaW50ZXJy dXB0X2F0dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHJlZSBuYW1lLCB0cmVlLCBp bnQsCisJCQkJIGJvb2wgKm5vX2FkZF9hdHRycykKK3sKKyAgaWYgKFRSRUVf Q09ERSAoKm5vZGUpICE9IEZVTkNUSU9OX0RFQ0wpCisgICAgeworICAgICAg d2FybmluZyAoT1BUX1dhdHRyaWJ1dGVzLCAiJXFFIGF0dHJpYnV0ZSBvbmx5 IGFwcGxpZXMgdG8gZnVuY3Rpb25zIiwKKwkgICAgICAgbmFtZSk7CisgICAg ICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsKKyAgICB9CisKKyAgLyogREVDTF9S RVNVTFQgYW5kIERFQ0xfQVJHVU1FTlRTIGRvIG5vdCBleGlzdCB0aGVyZSB5 ZXQsCisgICAgIGJ1dCB0aGUgZnVuY3Rpb24gdHlwZSBjb250YWlucyBhcmdz IGFuZCByZXR1cm4gdHlwZSBkYXRhLiAgKi8KKyAgdHJlZSBmdW5jX3R5cGUg PSBUUkVFX1RZUEUgKCpub2RlKTsKKyAgdHJlZSByZXR1cm5fdHlwZSA9IFRS RUVfVFlQRSAoZnVuY190eXBlKTsKKworICBpbnQgbmFyZ3MgPSAwOworICB0 cmVlIGN1cnJlbnRfYXJnX3R5cGUgPSBUWVBFX0FSR19UWVBFUyAoZnVuY190 eXBlKTsKKyAgd2hpbGUgKGN1cnJlbnRfYXJnX3R5cGUKKwkgJiYgISBWT0lE X1RZUEVfUCAoVFJFRV9WQUxVRSAoY3VycmVudF9hcmdfdHlwZSkpKQorICAg IHsKKyAgICAgIGlmIChuYXJncyA9PSAwKQorCXsKKwkgIGlmICghIFBPSU5U RVJfVFlQRV9QIChUUkVFX1ZBTFVFIChjdXJyZW50X2FyZ190eXBlKSkpCisJ ICAgIGVycm9yICgiaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZSBzaG91bGQg aGF2ZSBhIHBvaW50ZXIgIgorCQkgICAiYXMgdGhlIGZpcnN0IGFyZ3VtZW50 Iik7CisJfQorICAgICAgZWxzZSBpZiAobmFyZ3MgPT0gMSkKKwl7CisJICBp ZiAoVFJFRV9DT0RFIChUUkVFX1ZBTFVFIChjdXJyZW50X2FyZ190eXBlKSkg IT0gSU5URUdFUl9UWVBFCisJICAgICAgfHwgVFlQRV9NT0RFIChUUkVFX1ZB TFVFIChjdXJyZW50X2FyZ190eXBlKSkgIT0gd29yZF9tb2RlKQorCSAgICBl cnJvciAoImludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmUgc2hvdWxkIGhhdmUg dW5zaWduZWQgJXMiCisJCSAgICJpbnQgYXMgdGhlIHNlY29uZCBhcmd1bWVu dCIsCisJCSAgIFRBUkdFVF82NEJJVAorCQkgICA/IChUQVJHRVRfWDMyID8g ImxvbmcgbG9uZyAiIDogImxvbmcgIikKKwkJICAgOiAiIik7CisJfQorICAg ICAgbmFyZ3MrKzsKKyAgICAgIGN1cnJlbnRfYXJnX3R5cGUgPSBUUkVFX0NI QUlOIChjdXJyZW50X2FyZ190eXBlKTsKKyAgICB9CisgIGlmICghbmFyZ3Mg fHwgbmFyZ3MgPiAyKQorICAgIGVycm9yICgiaW50ZXJydXB0IHNlcnZpY2Ug cm91dGluZSBjYW4gb25seSBoYXZlIGEgcG9pbnRlciBhcmd1bWVudCAiCisJ ICAgImFuZCBhbiBvcHRpb25hbCBpbnRlZ2VyIGFyZ3VtZW50Iik7CisgIGlm ICghIFZPSURfVFlQRV9QIChyZXR1cm5fdHlwZSkpCisgICAgZXJyb3IgKCJp bnRlcnJ1cHQgc2VydmljZSByb3V0aW5lIGNhbid0IGhhdmUgbm9uLXZvaWQg cmV0dXJuIHZhbHVlIik7CisKKyAgcmV0dXJuIE5VTExfVFJFRTsKK30KKwog c3RhdGljIGJvb2wKIGl4ODZfbXNfYml0ZmllbGRfbGF5b3V0X3AgKGNvbnN0 X3RyZWUgcmVjb3JkX3R5cGUpCiB7CkBAIC00ODIyNyw2ICs0ODcyNSwxMSBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9zcGVjIGl4ODZfYXR0 cmlidXRlX3RhYmxlW10gPQogICAgIGZhbHNlIH0sCiAgIHsgImNhbGxlZV9w b3BfYWdncmVnYXRlX3JldHVybiIsIDEsIDEsIGZhbHNlLCB0cnVlLCB0cnVl LAogICAgIGl4ODZfaGFuZGxlX2NhbGxlZV9wb3BfYWdncmVnYXRlX3JldHVy biwgdHJ1ZSB9LAorICB7ICJpbnRlcnJ1cHQiLCAwLCAwLCB0cnVlLCBmYWxz ZSwgZmFsc2UsCisgICAgaXg4Nl9oYW5kbGVfaW50ZXJydXB0X2F0dHJpYnV0 ZSwgZmFsc2UgfSwKKyAgeyAibm9fY2FsbGVyX3NhdmVkX3JlZ2lzdGVycyIs IDAsIDAsIHRydWUsIGZhbHNlLCBmYWxzZSwKKyAgICBpeDg2X2hhbmRsZV9u b19jYWxsZXJfc2F2ZWRfcmVnaXN0ZXJzX2F0dHJpYnV0ZSwgZmFsc2UgfSwK KwogICAvKiBFbmQgZWxlbWVudC4gICovCiAgIHsgTlVMTCwgICAgICAgIDAs IDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIE5VTEwsIGZhbHNlIH0KIH07CmRp ZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5oIGIvZ2NjL2NvbmZp Zy9pMzg2L2kzODYuaAppbmRleCA0YTg0ZmI5Li4zYmZlNjA0IDEwMDY0NAot LS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5oCisrKyBiL2djYy9jb25maWcv aTM4Ni9pMzg2LmgKQEAgLTE3MzUsNiArMTczNSwxMSBAQCB0eXBlZGVmIHN0 cnVjdCBpeDg2X2FyZ3MgewogCiAjZGVmaW5lIEVYSVRfSUdOT1JFX1NUQUNL IDEKIAorLyogRGVmaW5lIHRoaXMgbWFjcm8gYXMgYSBDIGV4cHJlc3Npb24g dGhhdCBpcyBub256ZXJvIGZvciByZWdpc3RlcnMKKyAgIHVzZWQgYnkgdGhl IGVwaWxvZ3VlIG9yIHRoZSBgcmV0dXJuJyBwYXR0ZXJuLiAgKi8KKworI2Rl ZmluZSBFUElMT0dVRV9VU0VTKFJFR05PKSBpeDg2X2VwaWxvZ3VlX3VzZXMg KFJFR05PKQorCiAvKiBPdXRwdXQgYXNzZW1ibGVyIGNvZGUgZm9yIGEgYmxv Y2sgY29udGFpbmluZyB0aGUgY29uc3RhbnQgcGFydHMKICAgIG9mIGEgdHJh bXBvbGluZSwgbGVhdmluZyBzcGFjZSBmb3IgdGhlIHZhcmlhYmxlIHBhcnRz LiAgKi8KIApAQCAtMjQ1MCw2ICsyNDU1LDE4IEBAIHN0cnVjdCBHVFkoKCkp IG1hY2hpbmVfZnJhbWVfc3RhdGUKIC8qIFByaXZhdGUgdG8gd2lubnQuYy4g ICovCiBzdHJ1Y3Qgc2VoX2ZyYW1lX3N0YXRlOwogCitlbnVtIGZ1bmN0aW9u X3R5cGUKK3sKKyAgVFlQRV9OT1JNQUwgPSAwLAorICAvKiBUaGUgY3VycmVu dCBmdW5jdGlvbiBpcyBhbiBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lIHdp dGggYQorICAgICBwb2ludGVyIGFyZ3VtZW50IGFzIHNwZWNpZmllZCBieSB0 aGUgImludGVycnVwdCIgYXR0cmlidXRlLiAgKi8KKyAgVFlQRV9JTlRFUlJV UFQsCisgIC8qIFRoZSBjdXJyZW50IGZ1bmN0aW9uIGlzIGFuIGludGVycnVw dCBzZXJ2aWNlIHJvdXRpbmUgd2l0aCBhCisgICAgIHBvaW50ZXIgYXJndW1l bnQgYW5kIGFuIGludGVnZXIgYXJndW1lbnQgYXMgc3BlY2lmaWVkIGJ5IHRo ZQorICAgICAiaW50ZXJydXB0IiBhdHRyaWJ1dGUuICAqLworICBUWVBFX0VY Q0VQVElPTgorfTsKKwogc3RydWN0IEdUWSgoKSkgbWFjaGluZV9mdW5jdGlv biB7CiAgIHN0cnVjdCBzdGFja19sb2NhbF9lbnRyeSAqc3RhY2tfbG9jYWxz OwogICBjb25zdCBjaGFyICpzb21lX2xkX25hbWU7CkBAIC0yNTAwLDYgKzI1 MTcsMTMgQEAgc3RydWN0IEdUWSgoKSkgbWFjaGluZV9mdW5jdGlvbiB7CiAg IC8qIElmIHRydWUsIGl0IGlzIHNhZmUgdG8gbm90IHNhdmUvcmVzdG9yZSBE UkFQIHJlZ2lzdGVyLiAgKi8KICAgQk9PTF9CSVRGSUVMRCBub19kcmFwX3Nh dmVfcmVzdG9yZSA6IDE7CiAKKyAgLyogRnVuY3Rpb24gdHlwZS4gICovCisg IEVOVU1fQklURklFTEQoZnVuY3Rpb25fdHlwZSkgZnVuY190eXBlIDogMjsK KworICAvKiBJZiB0cnVlLCB0aGUgY3VycmVudCBmdW5jdGlvbiBpcyBhIGZ1 bmN0aW9uIHNwZWNpZmllZCB3aXRoCisgICAgIHRoZSAiaW50ZXJydXB0IiBv ciAibm9fY2FsbGVyX3NhdmVkX3JlZ2lzdGVycyIgYXR0cmlidXRlLiAgKi8K KyAgQk9PTF9CSVRGSUVMRCBub19jYWxsZXJfc2F2ZWRfcmVnaXN0ZXJzIDog MTsKKwogICAvKiBJZiB0cnVlLCB0aGVyZSBpcyByZWdpc3RlciBhdmFpbGFi bGUgZm9yIGFyZ3VtZW50IHBhc3NpbmcuICBUaGlzCiAgICAgIGlzIHVzZWQg b25seSBpbiBpeDg2X2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsIGJ5IDMyLWJp dCB0byBkZXRlcm1pbmUKICAgICAgaWYgdGhlcmUgaXMgc2NyYXRjaCByZWdp c3RlciBhdmFpbGFibGUgZm9yIGluZGlyZWN0IHNpYmNhbGwuICBJbgpkaWZm IC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQgYi9nY2MvY29uZmln L2kzODYvaTM4Ni5tZAppbmRleCBkMGMwZDIzLi44MTA4MzNjIDEwMDY0NAot LS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZAorKysgYi9nY2MvY29uZmln L2kzODYvaTM4Ni5tZApAQCAtMTkzLDYgKzE5Myw5IEBACiAgIFVOU1BFQ19C TkRDVQogICBVTlNQRUNfQk5EQ04KICAgVU5TUEVDX01QWF9GRU5DRQorCisg IDs7IElSRVQgc3VwcG9ydAorICBVTlNQRUNfSU5URVJSVVBUX1JFVFVSTgog XSkKIAogKGRlZmluZV9jX2VudW0gInVuc3BlY3YiIFsKQEAgLTEyMTkwLDYg KzEyMTkzLDEyIEBACiAgICAoc2V0X2F0dHIgIm1vZHJtIiAiMCIpCiAgICAo c2V0X2F0dHIgIm1heWJlX3ByZWZpeF9ibmQiICIxIildKQogCisoZGVmaW5l X2luc24gImludGVycnVwdF9yZXR1cm4iCisgIFsoc2ltcGxlX3JldHVybikK KyAgICh1bnNwZWMgWyhjb25zdF9pbnQgMCldIFVOU1BFQ19JTlRFUlJVUFRf UkVUVVJOKV0KKyAgInJlbG9hZF9jb21wbGV0ZWQiCisgICJpcmV0IikKKwog OzsgVXNlZCBieSB4ODZfbWFjaGluZV9kZXBlbmRlbnRfcmVvcmcgdG8gYXZv aWQgcGVuYWx0eSBvbiBzaW5nbGUgYnl0ZSBSRVQKIDs7IGluc3RydWN0aW9u IEF0aGxvbiBhbmQgSzggaGF2ZS4KIApkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9l eHRlbmQudGV4aSBiL2djYy9kb2MvZXh0ZW5kLnRleGkKaW5kZXggNzk0NDBk My4uYjcwZTQwYyAxMDA2NDQKLS0tIGEvZ2NjL2RvYy9leHRlbmQudGV4aQor KysgYi9nY2MvZG9jL2V4dGVuZC50ZXhpCkBAIC01MDc5LDYgKzUwNzksNjkg QEAgT24geDg2LTMyIHRhcmdldHMsIHRoZSBAY29kZXtzdGRjYWxsfSBhdHRy aWJ1dGUgY2F1c2VzIHRoZSBjb21waWxlciB0bwogYXNzdW1lIHRoYXQgdGhl IGNhbGxlZCBmdW5jdGlvbiBwb3BzIG9mZiB0aGUgc3RhY2sgc3BhY2UgdXNl ZCB0bwogcGFzcyBhcmd1bWVudHMsIHVubGVzcyBpdCB0YWtlcyBhIHZhcmlh YmxlIG51bWJlciBvZiBhcmd1bWVudHMuCiAKK0BpdGVtIG5vX2NhbGxlcl9z YXZlZF9yZWdpc3RlcnMKK0BjaW5kZXggQGNvZGV7bm9fY2FsbGVyX3NhdmVk X3JlZ2lzdGVyc30gZnVuY3Rpb24gYXR0cmlidXRlLCB4ODYKK1VzZSB0aGlz IGF0dHJpYnV0ZSB0byBpbmRpY2F0ZSB0aGF0IHRoZSBzcGVjaWZpZWQgZnVu Y3Rpb24gaGFzIG5vCitjYWxsZXItc2F2ZWQgcmVnaXN0ZXJzLiAgVGhhdCBp cywgYWxsIHJlZ2lzdGVycyBhcmUgY2FsbGVlLXNhdmVkLgorVGhlIGNvbXBp bGVyIGdlbmVyYXRlcyBwcm9wZXIgZnVuY3Rpb24gZW50cnkgYW5kIGV4aXQg c2VxdWVuY2VzIHRvCitzYXZlIGFuZCByZXN0b3JlIGFueSBtb2RpZmllZCBy ZWdpc3RlcnMuCisKK0BpdGVtIGludGVycnVwdAorQGNpbmRleCBAY29kZXtp bnRlcnJ1cHR9IGZ1bmN0aW9uIGF0dHJpYnV0ZSwgeDg2CitVc2UgdGhpcyBh dHRyaWJ1dGUgdG8gaW5kaWNhdGUgdGhhdCB0aGUgc3BlY2lmaWVkIGZ1bmN0 aW9uIGlzIGFuCitpbnRlcnJ1cHQgaGFuZGxlci4gIFRoZSBjb21waWxlciBn ZW5lcmF0ZXMgZnVuY3Rpb24KK2VudHJ5IGFuZCBleGl0IHNlcXVlbmNlcyBz dWl0YWJsZSBmb3IgdXNlIGluIGFuIGludGVycnVwdCBoYW5kbGVyIHdoZW4K K3RoaXMgYXR0cmlidXRlIGlzIHByZXNlbnQuICBUaGUgQGNvZGV7SVJFVH0g aW5zdHJ1Y3Rpb24sIGluc3RlYWQgb2YgdGhlCitAY29kZXtSRVR9IGluc3Ry dWN0aW9uLCBpcyB1c2VkIHRvIHJldHVybiBmcm9tIGludGVycnVwdCBoYW5k bGVycy4gIEFsbAorcmVnaXN0ZXJzLCBleGNlcHQgZm9yIHRoZSBFRkxBR1Mg cmVnaXN0ZXIgd2hpY2ggaXMgcmVzdG9yZWQgYnkgdGhlCitAY29kZXtJUkVU fSBpbnN0cnVjdGlvbiwgYXJlIHByZXNlcnZlZCBieSB0aGUgY29tcGlsZXIu CisKK0FueSBpbnRlcnJ1cHRpYmxlLXdpdGhvdXQtc3RhY2stc3dpdGNoIGNv ZGUgbXVzdCBiZSBjb21waWxlZCB3aXRoCitAb3B0aW9uey1tbm8tcmVkLXpv bmV9IHNpbmNlIGludGVycnVwdCBoYW5kbGVycyBjYW4gYW5kIHdpbGwsIGJl Y2F1c2UKK29mIHRoZSBoYXJkd2FyZSBkZXNpZ24sIHRvdWNoIHRoZSByZWQg em9uZS4KKworQW4gaW50ZXJydXB0IGhhbmRsZXIgbXVzdCBiZSBkZWNsYXJl ZCB3aXRoIGEgbWFuZGF0b3J5IHBvaW50ZXIKK2FyZ3VtZW50OgorCitAc21h bGxleGFtcGxlCitzdHJ1Y3QgaW50ZXJydXB0X2ZyYW1lOworCitfX2F0dHJp YnV0ZV9fICgoaW50ZXJydXB0KSkKK3ZvaWQKK2YgKHN0cnVjdCBpbnRlcnJ1 cHRfZnJhbWUgKmZyYW1lKQorQHsKK0B9CitAZW5kIHNtYWxsZXhhbXBsZQor CithbmQgdXNlciBtdXN0IHByb3Blcmx5IGRlZmluZSB0aGUgc3RydWN0dXJl IHRoZSBwb2ludGVyIHBvaW50aW5nIHRvLgorCitUaGUgZXhjZXB0aW9uIGhh bmRsZXIgaXMgdmVyeSBzaW1pbGFyIHRvIHRoZSBpbnRlcnJ1cHQgaGFuZGxl ciB3aXRoCithIGRpZmZlcmVudCBtYW5kYXRvcnkgZnVuY3Rpb24gc2lnbmF0 dXJlOgorCitAc21hbGxleGFtcGxlCisjaWZkZWYgX194ODZfNjRfXwordHlw ZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHV3b3JkX3Q7CisjZWxzZQor dHlwZWRlZiB1bnNpZ25lZCBpbnQgdXdvcmRfdDsKKyNlbmRpZgorCitzdHJ1 Y3QgaW50ZXJydXB0X2ZyYW1lOworCitfX2F0dHJpYnV0ZV9fICgoaW50ZXJy dXB0KSkKK3ZvaWQKK2YgKHN0cnVjdCBpbnRlcnJ1cHRfZnJhbWUgKmZyYW1l LCB1d29yZF90IGVycm9yX2NvZGUpCitAeworICAuLi4KK0B9CitAZW5kIHNt YWxsZXhhbXBsZQorCithbmQgY29tcGlsZXIgcG9wcyB0aGUgZXJyb3IgY29k ZSBvZmYgdGhlIHN0YWNrIGJlZm9yZSB0aGUgQGNvZGV7SVJFVH0KK2luc3Ry dWN0aW9uLgorCitUaGUgZXhjZXB0aW9uIGhhbmRsZXIgc2hvdWxkIG9ubHkg YmUgdXNlZCBmb3IgZXhjZXB0aW9ucyB3aGljaCBwdXNoIGFuCitlcnJvciBj b2RlIGFuZCBhbGwgb3RoZXIgZXhjZXB0aW9ucyBtdXN0IHVzZSB0aGUgaW50 ZXJydXB0IGhhbmRsZXIuCitUaGUgc3lzdGVtIHdpbGwgY3Jhc2ggaWYgdGhl IHdyb25nIGhhbmRsZXIgaXMgdXNlZC4KKwogQGl0ZW0gdGFyZ2V0IChAdmFy e29wdGlvbnN9KQogQGNpbmRleCBAY29kZXt0YXJnZXR9IGZ1bmN0aW9uIGF0 dHJpYnV0ZQogQXMgZGlzY3Vzc2VkIGluIEByZWZ7Q29tbW9uIEZ1bmN0aW9u IEF0dHJpYnV0ZXN9LCB0aGlzIGF0dHJpYnV0ZSAKZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0xLmMgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMS5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5ZDZiMjAKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9pbnRlcnJ1cHQtMS5jCkBAIC0wLDAgKzEsNTMgQEAKKy8qIHsgZGctZG8g Y29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXB1c2gt YXJncyAtbWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncyIgfSAqLworCitleHRl cm4gdm9pZCBmb28gKHZvaWQgKikgX19hdHRyaWJ1dGVfXyAoKGludGVycnVw dCkpOworZXh0ZXJuIGludCBiYXIgKGludCk7CisKK3ZvaWQgZm9vICh2b2lk ICpmcmFtZSkKK3sKKyAgaW50IGEsYixjLGQsZSxmLGk7CisgIGEgPSBiYXIg KDUpOworICBiID0gYmFyIChhKTsKKyAgYyA9IGJhciAoYik7CisgIGQgPSBi YXIgKGMpOworICBlID0gYmFyIChkKTsKKyAgZiA9IGJhciAoZSk7CisgIGZv ciAoaSA9IDE7IGkgPCAxMDsgaSsrKQorICB7CisgICAgYSArPSBiYXIgKGEg KyBpKSArIGJhciAoYiArIGkpICsKKwkgYmFyIChjICsgaSkgKyBiYXIgKGQg KyBpKSArCisJIGJhciAoZSArIGkpICsgYmFyIChmICsgaSk7CisgIH0KK30K Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAicHVzaCg/ Omx8cSlcW1xcdCBcXSolKD86ZXxyKWF4IiAxIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJwdXNoKD86bHxxKVxbXFx0 IFxdKiUoPzplfHIpYngiIDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMgInB1c2goPzpsfHEpXFtcXHQgXF0qJSg/OmV8 ciljeCIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyAicHVzaCg/Omx8cSlcW1xcdCBcXSolKD86ZXxyKWR4IiAxIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJw dXNoKD86bHxxKVxbXFx0IFxdKiUoPzplfHIpc2kiIDEgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInB1c2hsXFtcXHQg XF0qJWVkaSIgMiB7IHRhcmdldCBpYTMyIH0gfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInB1c2hxXFtcXHQgXF0qJXJk aSIgMSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInB1c2hxXFtcXHQgXF0qJXI4 IiAxIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAicHVzaHFcW1xcdCBcXSolcjki IDEgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJwdXNocVxbXFx0IFxdKiVyMTAi IDEgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJwdXNocVxbXFx0IFxdKiVyMTEi IDEgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJwdXNocVxbXFx0IFxdKiVyMTIi IDEgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJwdXNocVxbXFx0IFxdKiVyMTMi IDEgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJwdXNocVxbXFx0IFxdKiVyMTQi IDEgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJwdXNocVxbXFx0IFxdKiVyMTUi IDEgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJwb3AoPzpsfHEpXFtcXHQgXF0q JSg/OmV8cilheCIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyAicG9wKD86bHxxKVxbXFx0IFxdKiUoPzplfHIpYngi IDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGlt ZXMgInBvcCg/Omx8cSlcW1xcdCBcXSolKD86ZXxyKWN4IiAxIH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJwb3AoPzps fHEpXFtcXHQgXF0qJSg/OmV8cilkeCIgMSB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAicG9wKD86bHxxKVxbXFx0IFxd KiUoPzplfHIpc2kiIDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgInBvcGxcW1xcdCBcXSolZWRpIiAyIHsgdGFyZ2V0 IGlhMzIgfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyAicG9wcVxbXFx0IFxdKiVyZGkiIDEgeyB0YXJnZXQgeyAhIGlh MzIgfSB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LXRpbWVzICJwb3BxXFtcXHQgXF0qJXI4IiAxIHsgdGFyZ2V0IHsgISBpYTMy IH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10 aW1lcyAicG9wcVxbXFx0IFxdKiVyOSIgMSB7IHRhcmdldCB7ICEgaWEzMiB9 IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGlt ZXMgInBvcHFcW1xcdCBcXSolcjEwIiAxIHsgdGFyZ2V0IHsgISBpYTMyIH0g fSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1l cyAicG9wcVxbXFx0IFxdKiVyMTEiIDEgeyB0YXJnZXQgeyAhIGlhMzIgfSB9 IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVz ICJwb3BxXFtcXHQgXF0qJXIxMiIgMSB7IHRhcmdldCB7ICEgaWEzMiB9IH0g fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg InBvcHFcW1xcdCBcXSolcjEzIiAxIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAi cG9wcVxbXFx0IFxdKiVyMTQiIDEgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJw b3BxXFtcXHQgXF0qJXIxNSIgMSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImlyZXQiIH0g fSovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9pbnRlcnJ1cHQtMTAuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L2ludGVycnVwdC0xMC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjY0ZTYyMWMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMTAuYwpAQCAtMCww ICsxLDI0IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgKi0qLWxp bnV4KiB9IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tYXZ4NTEyYncg LW1uby1pYW1jdSAtbWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncyIgfSAqLwor CitleHRlcm4gdm9pZCBiYXIgKHZvaWQpOworCitzdHJ1Y3QgaW50ZXJydXB0 X2ZyYW1lOworCit2b2lkCisgX19hdHRyaWJ1dGVfXyAoKGludGVycnVwdCkp Citmb28gKHN0cnVjdCBpbnRlcnJ1cHRfZnJhbWUgKmZyYW1lKQoreworICBi YXIgKCk7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10 aW1lcyAibW92dXBzXFtcXHQgXF0qJXptbVxbMC05XF0rLFxbXFx0IFxdKi1c WzAtOVxdKlxcKCVcW3JlXF0/YnBcXCkiIDMyIHsgdGFyZ2V0IHsgISBpYTMy IH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10 aW1lcyAibW92dXBzXFtcXHQgXF0qLVxbMC05XF0qXFwoJVxbcmVcXT9icFxc KSxcW1xcdCBcXSolem1tXFswLTlcXSsiIDMyIHsgdGFyZ2V0IHsgISBpYTMy IH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10 aW1lcyAibW92dXBzXFtcXHQgXF0qJXptbVxbMC05XF0rLFxbXFx0IFxdKi1c WzAtOVxdKlxcKCVcW3JlXF0/YnBcXCkiIDggeyB0YXJnZXQgaWEzMiB9IH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJt b3Z1cHNcW1xcdCBcXSotXFswLTlcXSpcXCglXFtyZVxdP2JwXFwpLFxbXFx0 IFxdKiV6bW1cWzAtOVxdKyIgOCB7IHRhcmdldCBpYTMyIH0gfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImttb3ZxXFtc XHQgXF0qJWtcWzAtN1xdKyxcW1xcdCBcXSotXFswLTlcXSpcXCglXFtyZVxd P2JwXFwpIiA4IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLXRpbWVzICJrbW92cVxbXFx0IFxdKi1cWzAtOVxdKlxcKCVcW3JlXF0/ YnBcXCksXFtcXHQgXF0qJWtcWzAtN1xdKyIgOCB9IH0gKi8KKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFtcXHQgXF0qJXJi eCIgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcW1xcdCBcXSolcjFcWzIt NVxdKyIgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaGxcW1xcdCBcXSolZWJ4 IiB7IHRhcmdldCBpYTMyIH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItbm90ICJwdXNobFxbXFx0IFxdKiVlKHN8ZClpIiB7IHRh cmdldCBpYTMyIH0gfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMTEuYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0xMS5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhNDcwMTkKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1 cHQtMTEuYwpAQCAtMCwwICsxLDM3IEBACisvKiB7IGRnLWRvIGNvbXBpbGUg eyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAi LU8yIC1tbm8tc3NlIC1tbm8taWFtY3UgLW1hY2N1bXVsYXRlLW91dGdvaW5n LWFyZ3MiIH0gKi8KKworZXh0ZXJuIHZvaWQgYmFyICh2b2lkKTsKKwordm9p ZAorIF9fYXR0cmlidXRlX18gKChpbnRlcnJ1cHQpKQorZm9vICh2b2lkICpm cmFtZSkKK3sKKyAgYmFyICgpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItbm90ICJtb3Z1cHNcW1xcdCAuXF0qJSh4fHl8eiltbVxb MC05XF0rIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci1ub3QgImttb3YuXFtcXHQgXF0qJWtcWzAtN1xdKyxcW1xcdCBcXSpcW1xc LV0/XFswLTlcXSpcXCglXFtyZVxdP3NwXFwpIiB9IH0gKi8KKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImttb3YuXFtcXHQgXF0qXFsw LTlcXSpcXCglXFtyZVxdP3NwXFwpLFxbXFx0IFxdKiVrXFswLTdcXSsiIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVz aHFcW1xcdCBcXSolcmJ4IiB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxb XFx0IFxdKiVyMVxbMi01XF0rIiB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNo bFxbXFx0IFxdKiVlYngiIHsgdGFyZ2V0IGlhMzIgfSB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hsXFtcXHQgXF0q JWUoc3xkKWkiIHsgdGFyZ2V0IGlhMzIgfSB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAicHVzaCg/Omx8cSlcW1xcdCBc XSolKD86ZXxyKWF4IiAxIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzICJwdXNoKD86bHxxKVxbXFx0IFxdKiUoPzplfHIp Y3giIDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIt dGltZXMgInB1c2goPzpsfHEpXFtcXHQgXF0qJSg/OmV8cilkeCIgMSB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAicHVz aHFcW1xcdCBcXSolcmRpIiAxIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAicHVz aHFcW1xcdCBcXSolcnNpIiAxIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAicHVz aHFcW1xcdCBcXSolcjgiIDEgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJwdXNo cVxbXFx0IFxdKiVyOSIgMSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInB1c2hx XFtcXHQgXF0qJXIxMCIgMSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInB1c2hx XFtcXHQgXF0qJXIxMSIgMSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInBvcCg/ Omx8cSlcW1xcdCBcXSolKD86ZXxyKWF4IiAxIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJwb3AoPzpsfHEpXFtcXHQg XF0qJSg/OmV8ciljeCIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci10aW1lcyAicG9wKD86bHxxKVxbXFx0IFxdKiUoPzplfHIp ZHgiIDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIt dGltZXMgInBvcHFcW1xcdCBcXSolcmRpIiAxIHsgdGFyZ2V0IHsgISBpYTMy IH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10 aW1lcyAicG9wcVxbXFx0IFxdKiVyc2kiIDEgeyB0YXJnZXQgeyAhIGlhMzIg fSB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRp bWVzICJwb3BxXFtcXHQgXF0qJXI4IiAxIHsgdGFyZ2V0IHsgISBpYTMyIH0g fSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1l cyAicG9wcVxbXFx0IFxdKiVyOSIgMSB7IHRhcmdldCB7ICEgaWEzMiB9IH0g fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg InBvcHFcW1xcdCBcXSolcjEwIiAxIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAi cG9wcVxbXFx0IFxdKiVyMTEiIDEgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0g fSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kz ODYvaW50ZXJydXB0LTEyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9pbnRlcnJ1cHQtMTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi41YzllYjc0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTEyLmMKQEAgLTAs MCArMSwyMCBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGct b3B0aW9ucyAiLU8yIiB9ICovCisKK2V4dGVybiBpbnQgY2hlY2tfaW50IChp bnQgKmksIHZvaWQgKiwgaW50IGFsaWduKTsKK3R5cGVkZWYgaW50IGFsaWdu ZWQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg2NCkpKTsKK3R5cGVkZWYgdW5z aWduZWQgaW50IHV3b3JkX3QgX19hdHRyaWJ1dGVfXyAoKG1vZGUgKF9fd29y ZF9fKSkpOworCitfX2F0dHJpYnV0ZV9fKChpbnRlcnJ1cHQpKQordm9pZAor Zm9vICh2b2lkICpmcmFtZSwgdXdvcmRfdCBlcnJvcl9jb2RlKQoreworICBh bGlnbmVkIGo7CisgIGlmIChjaGVja19pbnQgKGZyYW1lLCAmaiwgX19hbGln bm9mX18oaikpKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKK30KKworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJhbmRcW2xxXF0/ XFteXFxuXF0qLTY0LFxbXlxcblxdKnNwIiAxIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJhZGQoPzpsfHEpXFtcXHQg XF0qXFxcJDgsXFtcXHQgXF0qJVxbcmVcXT9zcCIgMSB7IHRhcmdldCB7ICEg aWEzMiB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMgImFkZGxcW1xcdCBcXSpcXFwkNCxcW1xcdCBcXSolZXNwIiAx IHsgdGFyZ2V0IGlhMzIgfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlciAiaXJldCIgfSB9Ki8KZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0xMy5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTEzLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNmMGIyNQotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2lu dGVycnVwdC0xMy5jCkBAIC0wLDAgKzEsMTcgQEAKKy8qIHsgZGctZG8gY29t cGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAqLworCitleHRl cm4gaW50IGNoZWNrX2ludCAoaW50ICppLCB2b2lkICosIGludCBhbGlnbik7 Cit0eXBlZGVmIGludCBhbGlnbmVkIF9fYXR0cmlidXRlX18oKGFsaWduZWQo NjQpKSk7CisKK19fYXR0cmlidXRlX18oKGludGVycnVwdCkpCit2b2lkCitm b28gKHZvaWQgKmZyYW1lKQoreworICBhbGlnbmVkIGo7CisgIGlmIChjaGVj a19pbnQgKGZyYW1lLCAmaiwgX19hbGlnbm9mX18oaikpKQorICAgIF9fYnVp bHRpbl9hYm9ydCAoKTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLXRpbWVzICJhbmRcW2xxXF0/XFteXFxuXF0qLTY0LFxbXlxcblxd KnNwIiAxIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy ICJpcmV0IiB9IH0qLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvaW50ZXJydXB0LTE0LmMgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMTQuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi4zNzcyYjAxCi0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTE0 LmMKQEAgLTAsMCArMSwzOCBAQAorLyogeyBkZy1kbyBjb21waWxlIHsgdGFy Z2V0ICotKi1saW51eCogfSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAt bW5vLXNzZSAtbW5vLWlhbWN1IC1tbm8tc3NlNCAtbW5vLXBvcGNudCAtbWFj Y3VtdWxhdGUtb3V0Z29pbmctYXJncyIgfSAqLworCitleHRlcm4gaW50IGks IGNudDsKKwordm9pZAorIF9fYXR0cmlidXRlX18gKChpbnRlcnJ1cHQpKQor Zm9vICh2b2lkICpmcmFtZSkKK3sKKyAgY250ID0gX19idWlsdGluX3BvcGNv dW50IChpKTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LW5vdCAibW92dXBzXFtcXHQgLlxdKiUoeHx5fHopbW1cWzAtOVxdKyIgfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJrbW92 LlxbXFx0IFxdKiVrXFswLTdcXSssXFtcXHQgXF0qXFtcXC1dP1xbMC05XF0q XFwoJVxbcmVcXT9zcFxcKSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItbm90ICJrbW92LlxbXFx0IFxdKlxbMC05XF0qXFwoJVxb cmVcXT9zcFxcKSxcW1xcdCBcXSola1xbMC03XF0rIiB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFtcXHQgXF0q JXJieCIgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcW1xcdCBcXSolcjFc WzItNVxdKyIgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaGxcW1xcdCBcXSol ZWJ4IiB7IHRhcmdldCBpYTMyIH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItbm90ICJwdXNobFxbXFx0IFxdKiVlc2kiIHsgdGFy Z2V0IGlhMzIgfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci10aW1lcyAicHVzaCg/Omx8cSlcW1xcdCBcXSolKD86ZXxyKWF4IiAx IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVz ICJwdXNoKD86bHxxKVxbXFx0IFxdKiUoPzplfHIpY3giIDEgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInB1c2goPzps fHEpXFtcXHQgXF0qJSg/OmV8cilkeCIgMSB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAicHVzaCg/Omx8cSlcW1xcdCBc XSolKD86ZXxyKWRpIiAxIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzICJwdXNocVxbXFx0IFxdKiVyc2kiIDEgeyB0YXJn ZXQgeyAhIGlhMzIgfSB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzICJwdXNocVxbXFx0IFxdKiVyOCIgMSB7IHRhcmdl dCB7ICEgaWEzMiB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgInB1c2hxXFtcXHQgXF0qJXI5IiAxIHsgdGFyZ2V0 IHsgISBpYTMyIH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyAicHVzaHFcW1xcdCBcXSolcjEwIiAxIHsgdGFyZ2V0 IHsgISBpYTMyIH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyAicHVzaHFcW1xcdCBcXSolcjExIiAxIHsgdGFyZ2V0 IHsgISBpYTMyIH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyAicG9wKD86bHxxKVxbXFx0IFxdKiUoPzplfHIpYXgi IDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGlt ZXMgInBvcCg/Omx8cSlcW1xcdCBcXSolKD86ZXxyKWN4IiAxIH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJwb3AoPzps fHEpXFtcXHQgXF0qJSg/OmV8cilkeCIgMSB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAicG9wKD86bHxxKVxbXFx0IFxd KiUoPzplfHIpZGkiIDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgInBvcHFcW1xcdCBcXSolcnNpIiAxIHsgdGFyZ2V0 IHsgISBpYTMyIH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyAicG9wcVxbXFx0IFxdKiVyOCIgMSB7IHRhcmdldCB7 ICEgaWEzMiB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItdGltZXMgInBvcHFcW1xcdCBcXSolcjkiIDEgeyB0YXJnZXQgeyAh IGlhMzIgfSB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLXRpbWVzICJwb3BxXFtcXHQgXF0qJXIxMCIgMSB7IHRhcmdldCB7ICEg aWEzMiB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMgInBvcHFcW1xcdCBcXSolcjExIiAxIHsgdGFyZ2V0IHsgISBp YTMyIH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyAiaXJldCIgMSB9IH0qLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTE1LmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMTUuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNmQ4MmMyCi0tLSAvZGV2 L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50 ZXJydXB0LTE1LmMKQEAgLTAsMCArMSwyOCBAQAorLyogeyBkZy1kbyBjb21w aWxlIHsgdGFyZ2V0ICotKi1saW51eCogfSB9ICovCisvKiB7IGRnLW9wdGlv bnMgIi1PMiAtbW5vLWF2eDUxMmYgLW1uby1pYW1jdSAtbWF2eCAtbXB1c2gt YXJncyAtbWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncyIgfSAqLworCit0eXBl ZGVmIHVuc2lnbmVkIGludCB1d29yZF90IF9fYXR0cmlidXRlX18gKChtb2Rl IChfX3dvcmRfXykpKTsKK2V4dGVybiB2b2lkIGJhciAoaW50KSBfX2F0dHJp YnV0ZV9fICgobm9fY2FsbGVyX3NhdmVkX3JlZ2lzdGVycykpOworCit2b2lk CisgX19hdHRyaWJ1dGVfXyAoKGludGVycnVwdCkpCitmbjEgKHZvaWQgKmZy YW1lLCB1d29yZF90IGVycm9yKQoreworICBiYXIgKGVycm9yKTsKK30KKwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAibW92dXBzXFtc XHQgLlxdKiUoeHx5fHopbW1cWzAtOVxdKyIgfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICIocHVzaHxwb3ApKGx8cSlcW1xc dCBcXSolKHJ8ZSkoYnxjfGQpeCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItbm90ICIocHVzaHxwb3ApKGx8cSlcW1xcdCBcXSol KHJ8ZSlzaSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItbm90ICIocHVzaHxwb3ApbFxbXFx0IFxdKiVlZGkiIHsgdGFyZ2V0IGlh MzIgfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1u b3QgIihwdXNofHBvcClxXFtcXHQgXF0qJXJheCIgeyB0YXJnZXQgeyAhIGlh MzIgfSB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LW5vdCAiKHB1c2h8cG9wKXFcW1xcdCBcXSolclxbMC05XF0rIiB7IHRhcmdl dCB7ICEgaWEzMiB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgInB1c2goPzpsfHEpXFtcXHQgXF0qJSg/OnJ8ZSli cCIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10 aW1lcyAibGVhdmUiIDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgInB1c2hsXFtcXHQgXF0qJWVheCIgMSB7IHRhcmdl dCBpYTMyIH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMgIm1vdmxcW1xcdCBcXSotNFxcKCVlYnBcXCksXFtcXHQgXF0q JWVheCIgMSB7IHRhcmdldCBpYTMyIH0gfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInB1c2hxXFtcXHQgXF0qJXJkaSIg MSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIm1vdnFcW1xcdCBcXSotOFxcKCUo PzpyfGUpYnBcXCksXFtcXHQgXF0qJXJkaSIgMSB7IHRhcmdldCB7ICEgaWEz MiB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIt dGltZXMgImFkZGxcW1xcdCBcXSpcXFwkNCxcW1xcdCBcXSolZXNwIiAxIHsg dGFyZ2V0IGlhMzIgfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyAiYWRkKD86bHxxKVxbXFx0IFxdKlxcXCQ4LFxbXFx0 IFxdKiVcW3JlXF0/c3AiIDEgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJpcmV0 IiAxIH0gfSovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9pbnRlcnJ1cHQtMTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L2ludGVycnVwdC0xNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmYyMGYxMTcKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMTYuYwpA QCAtMCwwICsxLDI4IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQg Ki0qLWxpbnV4KiB9IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8t YXZ4NTEyZiAtbW5vLWlhbWN1IC1tYXZ4IC1tbm8tcHVzaC1hcmdzIC1tYWNj dW11bGF0ZS1vdXRnb2luZy1hcmdzIiB9ICovCisKK3R5cGVkZWYgdW5zaWdu ZWQgaW50IHV3b3JkX3QgX19hdHRyaWJ1dGVfXyAoKG1vZGUgKF9fd29yZF9f KSkpOworZXh0ZXJuIHZvaWQgYmFyIChpbnQpIF9fYXR0cmlidXRlX18gKChu b19jYWxsZXJfc2F2ZWRfcmVnaXN0ZXJzKSk7CisKK3ZvaWQKKyBfX2F0dHJp YnV0ZV9fICgoaW50ZXJydXB0KSkKK2ZuMSAodm9pZCAqZnJhbWUsIHV3b3Jk X3QgZXJyb3IpCit7CisgIGJhciAoZXJyb3IpOworfQorCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJtb3Z1cHNcW1xcdCAuXF0qJSh4 fHl8eiltbVxbMC05XF0rIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci1ub3QgIihwdXNofHBvcCkobHxxKVxbXFx0IFxdKiUocnxl KShifGN8ZCl4IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci1ub3QgIihwdXNofHBvcCkobHxxKVxbXFx0IFxdKiUocnxlKXNpIiB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIihw dXNofHBvcClsXFtcXHQgXF0qJWVkaSIgeyB0YXJnZXQgaWEzMiB9IH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiKHB1c2h8 cG9wKXFcW1xcdCBcXSolcmF4IiB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICIocHVz aHxwb3ApcVxbXFx0IFxdKiVyXFswLTlcXSsiIHsgdGFyZ2V0IHsgISBpYTMy IH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10 aW1lcyAicHVzaCg/Omx8cSlcW1xcdCBcXSolKD86cnxlKWJwIiAxIH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJsZWF2 ZSIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10 aW1lcyAicHVzaGxcW1xcdCBcXSolZWF4IiAxIHsgdGFyZ2V0IGlhMzIgfSB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAi bW92bFxbXFx0IFxdKi00XFwoJWVicFxcKSxcW1xcdCBcXSolZWF4IiAxIHsg dGFyZ2V0IGlhMzIgfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyAicHVzaHFcW1xcdCBcXSolcmRpIiAxIHsgdGFyZ2V0 IHsgISBpYTMyIH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyAibW92cVxbXFx0IFxdKi04XFwoJSg/OnJ8ZSlicFxc KSxcW1xcdCBcXSolcmRpIiAxIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiYWRk bFxbXFx0IFxdKlxcXCQ0LFxbXFx0IFxdKiVlc3AiIDEgeyB0YXJnZXQgaWEz MiB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRp bWVzICJhZGQoPzpsfHEpXFtcXHQgXF0qXFxcJDgsXFtcXHQgXF0qJVxbcmVc XT9zcCIgMSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImlyZXQiIDEgfSB9Ki8K ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2lu dGVycnVwdC0xNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv aW50ZXJydXB0LTE3LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uNDg2YTJlYgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0xNy5jCkBAIC0wLDAgKzEs MzMgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgq IH0gfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1hdng1MTJmIC1t bm8taWFtY3UgLW1hdnggLW1wdXNoLWFyZ3MgLW1uby1hY2N1bXVsYXRlLW91 dGdvaW5nLWFyZ3MiIH0gKi8KKworZXh0ZXJuIHZvaWQgYmFyIChpbnQpIF9f YXR0cmlidXRlX18gKChub19jYWxsZXJfc2F2ZWRfcmVnaXN0ZXJzKSk7CisK K3ZvaWQKKyBfX2F0dHJpYnV0ZV9fICgoaW50ZXJydXB0KSkKK2ZuMSAodm9p ZCAqZnJhbWUpCit7CisgIGJhciAoMyk7Cit9CisKK3ZvaWQKKyBfX2F0dHJp YnV0ZV9fICgoaW50ZXJydXB0KSkKK2ZuMiAodm9pZCAqZnJhbWUpCit7Cisg IGJhciAoMyk7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci1ub3QgIm1vdnVwc1xbXFx0IC5cXSolKHh8eXx6KW1tXFswLTlcXSsiIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiKHB1 c2h8cG9wKShsfHEpXFtcXHQgXF0qJShyfGUpKGF8YnxjfGQpeCIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICIocHVzaHxw b3ApKGx8cSlcW1xcdCBcXSolKHJ8ZSlzaSIgfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICIocHVzaHxwb3ApcVxbXFx0IFxd KiVyXFs4LTlcXSsiIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIihwdXNofHBvcClx XFtcXHQgXF0qJXIxXFswLTJcXSsiIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIihw dXNofHBvcClxXFtcXHQgXF0qJXIxXFs0LTVcXSsiIHsgdGFyZ2V0IHsgISBp YTMyIH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyAicHVzaCg/Omx8cSlcW1xcdCBcXSolKD86cnxlKWJwIiAyIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJs ZWF2ZSIgMiB7IHRhcmdldCBpYTMyIH0gfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInB1c2hsXFtcXHQgXF0qJWVkaSIg MiB7IHRhcmdldCBpYTMyIH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMgInB1c2hxXFtcXHQgXF0qJXJkaSIgMiB7IHRh cmdldCB7ICEgaWEzMiB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMgInBvcHFcW1xcdCBcXSolcmRpIiAyIHsgdGFy Z2V0IHsgISBpYTMyIH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci10aW1lcyAicHVzaHFcW1xcdCBcXSolcjEzIiAyIHsgdGFy Z2V0IHsgISBpYTMyIH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci10aW1lcyAicG9wcVxbXFx0IFxdKiVyMTMiIDIgeyB0YXJn ZXQgeyAhIGlhMzIgfSB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzICJpcmV0IiAyIH0gfSovCmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMTguYyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0xOC5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmMzI4NTEK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9pbnRlcnJ1cHQtMTguYwpAQCAtMCwwICsxLDM1IEBACisvKiB7IGRn LWRvIGNvbXBpbGUgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gKi8KKy8qIHsg ZGctb3B0aW9ucyAiLU8yIC1tbm8tYXZ4NTEyZiAtbW5vLWlhbWN1IC1tYXZ4 IC1tcHVzaC1hcmdzIC1tYWNjdW11bGF0ZS1vdXRnb2luZy1hcmdzIiB9ICov CisKK3R5cGVkZWYgdW5zaWduZWQgaW50IHV3b3JkX3QgX19hdHRyaWJ1dGVf XyAoKG1vZGUgKF9fd29yZF9fKSkpOworZXh0ZXJuIHZvaWQgYmFyIChpbnQp IF9fYXR0cmlidXRlX18gKChub19jYWxsZXJfc2F2ZWRfcmVnaXN0ZXJzKSk7 CisKK3ZvaWQKKyBfX2F0dHJpYnV0ZV9fICgoaW50ZXJydXB0KSkKK2ZuMSAo dm9pZCAqZnJhbWUsIHV3b3JkX3QgZXJyb3IpCit7CisgIGJhciAoZXJyb3Ip OworfQorCit2b2lkCisgX19hdHRyaWJ1dGVfXyAoKGludGVycnVwdCkpCitm bjIgKHZvaWQgKmZyYW1lLCB1d29yZF90IGVycm9yKQoreworICBiYXIgKGVy cm9yKTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5v dCAibW92dXBzXFtcXHQgLlxdKiUoeHx5fHopbW1cWzAtOVxdKyIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICIocHVzaHxw b3ApKGx8cSlcW1xcdCBcXSolKHJ8ZSkoYnxjfGQpeCIgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICIocHVzaHxwb3ApKGx8 cSlcW1xcdCBcXSolKHJ8ZSlzaSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItbm90ICIocHVzaHxwb3ApbFxbXFx0IFxdKiVlZGki IHsgdGFyZ2V0IGlhMzIgfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci1ub3QgIihwdXNofHBvcClxXFtcXHQgXF0qJXJheCIgeyB0 YXJnZXQgeyAhIGlhMzIgfSB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyLW5vdCAiKHB1c2h8cG9wKXFcW1xcdCBcXSolclxbMC05 XF0rIiB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInB1c2goPzpsfHEpXFtcXHQg XF0qJSg/OnJ8ZSlicCIgMiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci10aW1lcyAibGVhdmUiIDIgfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInB1c2hsXFtcXHQgXF0qJWVh eCIgMiB7IHRhcmdldCBpYTMyIH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItdGltZXMgIm1vdmxcW1xcdCBcXSotNFxcKCVlYnBc XCksXFtcXHQgXF0qJWVheCIgMiB7IHRhcmdldCBpYTMyIH0gfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInB1c2hxXFtc XHQgXF0qJXJkaSIgMiB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIm1vdnFcW1xc dCBcXSotOFxcKCUoPzpyfGUpYnBcXCksXFtcXHQgXF0qJXJkaSIgMiB7IHRh cmdldCB7ICEgaWEzMiB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMgImFkZGxcW1xcdCBcXSpcXFwkNCxcW1xcdCBc XSolZXNwIiAyIHsgdGFyZ2V0IGlhMzIgfSB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiYWRkKD86bHxxKVxbXFx0IFxd KlxcXCQ4LFxbXFx0IFxdKiVcW3JlXF0/c3AiIDIgeyB0YXJnZXQgeyAhIGlh MzIgfSB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LXRpbWVzICJpcmV0IiAyIH0gfSovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMTkuYyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0xOS5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3ZTJmYmQKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRl cnJ1cHQtMTkuYwpAQCAtMCwwICsxLDI1IEBACisvKiB7IGRnLWRvIGNvbXBp bGUgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLU8yIC1tbm8tYXZ4NTEyZiAtbW5vLWlhbWN1IC1tYXZ4IC1tbm8tcHVz aC1hcmdzIC1tYWNjdW11bGF0ZS1vdXRnb2luZy1hcmdzIiB9ICovCisKK2V4 dGVybiB2b2lkIGZvbyAoaW50KSBfX2F0dHJpYnV0ZV9fICgobm9fY2FsbGVy X3NhdmVkX3JlZ2lzdGVycykpOworZXh0ZXJuIHZvaWQgYmFyIChpbnQpIF9f YXR0cmlidXRlX18gKChub19jYWxsZXJfc2F2ZWRfcmVnaXN0ZXJzKSk7Citl eHRlcm4gaW50IHg7CisKK3ZvaWQKK2ZvbyAoaW50IGkpCit7CisgIGJhciAo aSk7CisgIHggPSBpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItbm90ICJtb3Z1cHNcW1xcdCBcXSolKHh8eXx6KW1tXFswLTlcXSss XFtcXHQgXF0tKlxbMC05XF0qXFwoJVxbcmVcXT9icFxcKSIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJtb3Z1cHNcW1xc dCBcXSotXFswLTlcXSpcXCglXFtyZVxdP2JwXFwpLFxbXFx0IFxdKiUoeHx5 fHopbW1cWzAtOVxdKyIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItbm90ICIocHVzaHxwb3ApKGx8cSlcW1xcdCBcXSolKHJ8ZSko YnxjfGQpeCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItbm90ICIocHVzaHxwb3ApKGx8cSlcW1xcdCBcXSolKHJ8ZSlzaSIgfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICIocHVz aHxwb3ApKGx8cSlcW1xcdCBcXSolKHJ8ZSlicCIgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICIocHVzaHxwb3ApbFxbXFx0 IFxdKiVlZGkiIHsgdGFyZ2V0IGlhMzIgfSB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIihwdXNofHBvcClxXFtcXHQgXF0q JXJcWzAtOVxdKyIgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJwdXNoKD86bHxx KVxbXFx0IFxdKiUoPzpyfGUpYXgiIDEgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInBvcCg/Omx8cSlcW1xcdCBcXSol KD86cnxlKWF4IiAxIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLXRpbWVzICJwdXNocVxbXFx0IFxdKiVyZGkiIDEgeyB0YXJnZXQg eyAhIGlhMzIgfSB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLXRpbWVzICJwb3BxXFtcXHQgXF0qJXJkaSIgMSB7IHRhcmdldCB7 ICEgaWEzMiB9IH0gfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMi5jIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTIuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2I0MGIwCi0tLSAvZGV2L251bGwK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0 LTIuYwpAQCAtMCwwICsxLDExIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAq LworLyogeyBkZy1vcHRpb25zICItTzIgLVdhbGwgLWciIH0gKi8KKwordm9p ZAorX19hdHRyaWJ1dGVfXygoaW50ZXJydXB0KSkKK2ZuICh2b2lkICpmcmFt ZSkKK3sKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5v dCAiYWRkKGx8cSlcW1xcdCBcXSpcXCRcWzAtOVxdKixcW1xcdCBcXSolXFty ZVxdP3NwIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciAiaXJldCIgfSB9Ki8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9pMzg2L2ludGVycnVwdC0yMC5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTIwLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uNzc5YWRkYgotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0y MC5jCkBAIC0wLDAgKzEsMjcgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB7IHRh cmdldCAqLSotbGludXgqIH0gfSAqLworLyogeyBkZy1vcHRpb25zICItTzIg LW1uby1hdng1MTJmIC1tbm8taWFtY3UgLW1hdnggLW1uby1wdXNoLWFyZ3Mi IH0gKi8KKworZXh0ZXJuIHZvaWQgZm9vIChpbnQpIF9fYXR0cmlidXRlX18g KChub19jYWxsZXJfc2F2ZWRfcmVnaXN0ZXJzKSk7CitleHRlcm4gdm9pZCBi YXIgKGludCkgX19hdHRyaWJ1dGVfXyAoKG5vX2NhbGxlcl9zYXZlZF9yZWdp c3RlcnMpKTsKK2V4dGVybiBpbnQgeDsKKwordm9pZAorZm9vIChpbnQgaSkK K3sKKyAgeCA9IGk7CisgIGJhciAoaSArIDEpOworfQorCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJtb3Z1cHNcW1xcdCBcXSolKHh8 eXx6KW1tXFswLTlcXSssXFtcXHQgXF0tKlxbMC05XF0qXFwoJVxbcmVcXT9i cFxcKSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIt bm90ICJtb3Z1cHNcW1xcdCBcXSotXFswLTlcXSpcXCglXFtyZVxdP2JwXFwp LFxbXFx0IFxdKiUoeHx5fHopbW1cWzAtOVxdKyIgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICIocHVzaHxwb3ApKGx8cSlc W1xcdCBcXSolKHJ8ZSkoYnxjfGQpeCIgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItbm90ICIocHVzaHxwb3ApKGx8cSlcW1xcdCBc XSolKHJ8ZSlzaSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItbm90ICIocHVzaHxwb3ApKGx8cSlcW1xcdCBcXSolKHJ8ZSlicCIg fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICIo cHVzaHxwb3ApbFxbXFx0IFxdKiVlZGkiIHsgdGFyZ2V0IGlhMzIgfSB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIihwdXNo fHBvcClxXFtcXHQgXF0qJXJkeCIgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiKHB1 c2h8cG9wKXFcW1xcdCBcXSolclxbMC05XF0rIiB7IHRhcmdldCB7ICEgaWEz MiB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIt dGltZXMgInB1c2hsXFtcXHQgXF0qJWVheCIgMSB7IHRhcmdldCBpYTMyIH0g fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg InBvcGxcW1xcdCBcXSolZWF4IiAxIHsgdGFyZ2V0IGlhMzIgfSB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAicHVzaHFc W1xcdCBcXSolcmRpIiAxIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAicG9wcVxb XFx0IFxdKiVyZGkiIDEgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wIiB9IH0q LwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv aW50ZXJydXB0LTIxLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9pbnRlcnJ1cHQtMjEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi43Y2M1MTgxCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTIxLmMKQEAgLTAsMCAr MSwyNSBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0 aW9ucyAiLU8yIC1tbm8tYXZ4IC1tbm8taWFtY3UgLW1zc2UiIH0gKi8KKwor dm9pZAorX19hdHRyaWJ1dGVfXygobm9fY2FsbGVyX3NhdmVkX3JlZ2lzdGVy cykpCitmbiAodm9pZCkKK3sKKyAgYXNtICgiIyIKKyAgICAgICA6CisgICAg ICAgOgorICAgICAgIDogInhtbTMiKTsKK30KKworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJtb3ZhcHNcW1xcdCBcXSoleG1tMyxc W1xcdCBcXSotP1xbMC05XF0qXFwoJVxbcmVcXT9zcFxcKSIgMSB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAibW92YXBz XFtcXHQgXF0qLT9cWzAtOVxdKlxcKCVcW3JlXF0/c3BcXCksXFtcXHQgXF0q JXhtbTMiIDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItbm90ICJtb3YoYXx1KXBzXFtcXHQgXF0qJSh4fHl8eiltbVxbMC0yXF0r LFxbXFx0IFxdKlxbMC05XF0qXFwoJVxbcmVcXT9zcFxcKSIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJtb3YoYXx1KXBz XFtcXHQgXF0qXFswLTlcXSpcXCglXFtyZVxdP3NwXFwpLFxbXFx0IFxdKiUo eHx5fHopbW1cWzAtMlxdKyIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItbm90ICJtb3YoYXx1KXBzXFtcXHQgXF0qJSh4fHl8eilt bVxbNC05XF0rLFxbXFx0IFxdKlxbMC05XF0qXFwoJVxbcmVcXT9zcFxcKSIg fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJt b3YoYXx1KXBzXFtcXHQgXF0qXFswLTlcXSpcXCglXFtyZVxdP3NwXFwpLFxb XFx0IFxdKiUoeHx5fHopbW1cWzQtOVxdKyIgfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJtb3YoYXx1KXBzXFtcXHQgXF0q JSh4fHl8eiltbTFcWzAtOVxdKyxcW1xcdCBcXSpcWzAtOVxdKlxcKCVcW3Jl XF0/c3BcXCkiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLW5vdCAibW92KGF8dSlwc1xbXFx0IFxdKlxbMC05XF0qXFwoJVxbcmVc XT9zcFxcKSxcW1xcdCBcXSolKHh8eXx6KW1tMVxbMC05XF0rIiB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIihwdXNofHBv cCkobHxxKVxbXFx0IFxdKiUocnxlKShhfGJ8Y3xkKXgiIH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiKHB1c2h8cG9wKShs fHEpXFtcXHQgXF0qJShyfGUpKHN8ZClpIiB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIihwdXNofHBvcCkobHxxKVxbXFx0 IFxdKiUocnxlKWJwIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci1ub3QgIihwdXNofHBvcClxXFtcXHQgXF0qJXJcWzAtOVxdKyIg eyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTIyLmMgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMjIuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGQ2MjkwCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kz ODYvaW50ZXJydXB0LTIyLmMKQEAgLTAsMCArMSwyNSBAQAorLyogeyBkZy1k byBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tYXZ4 NTEyZiAtbW5vLWlhbWN1IC1tYXZ4IiB9ICovCisKK3ZvaWQKK19fYXR0cmli dXRlX18oKG5vX2NhbGxlcl9zYXZlZF9yZWdpc3RlcnMpKQorZm4gKHZvaWQp Cit7CisgIGFzbSAoIiMiCisgICAgICAgOgorICAgICAgIDoKKyAgICAgICA6 ICJ4bW0zIik7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyAibW92dXBzXFtcXHQgXF0qJXltbTMsXFtcXHQgXF0qLT9cWzAt OVxdKlxcKCVcW3JlXF0/c3BcXCkiIDEgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIm1vdnVwc1xbXFx0IFxdKi0/XFsw LTlcXSpcXCglXFtyZVxdP3NwXFwpLFxbXFx0IFxdKiV5bW0zIiAxIH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAibW92KGF8 dSlwc1xbXFx0IFxdKiUoeHx5fHopbW1cWzAtMlxdKyxcW1xcdCBcXSpcWzAt OVxdKlxcKCVcW3JlXF0/c3BcXCkiIH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyLW5vdCAibW92KGF8dSlwc1xbXFx0IFxdKlxbMC05 XF0qXFwoJVxbcmVcXT9zcFxcKSxcW1xcdCBcXSolKHh8eXx6KW1tXFswLTJc XSsiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5v dCAibW92KGF8dSlwc1xbXFx0IFxdKiUoeHx5fHopbW1cWzQtOVxdKyxcW1xc dCBcXSpcWzAtOVxdKlxcKCVcW3JlXF0/c3BcXCkiIH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAibW92KGF8dSlwc1xbXFx0 IFxdKlxbMC05XF0qXFwoJVxbcmVcXT9zcFxcKSxcW1xcdCBcXSolKHh8eXx6 KW1tXFs0LTlcXSsiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLW5vdCAibW92KGF8dSlwc1xbXFx0IFxdKiUoeHx5fHopbW0xXFsw LTlcXSssXFtcXHQgXF0qXFswLTlcXSpcXCglXFtyZVxdP3NwXFwpIiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIm1vdihh fHUpcHNcW1xcdCBcXSpcWzAtOVxdKlxcKCVcW3JlXF0/c3BcXCksXFtcXHQg XF0qJSh4fHl8eiltbTFcWzAtOVxdKyIgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItbm90ICIocHVzaHxwb3ApKGx8cSlcW1xcdCBc XSolKHJ8ZSkoYXxifGN8ZCl4IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci1ub3QgIihwdXNofHBvcCkobHxxKVxbXFx0IFxdKiUo cnxlKShzfGQpaSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItbm90ICIocHVzaHxwb3ApKGx8cSlcW1xcdCBcXSolKHJ8ZSlicCIg fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICIo cHVzaHxwb3ApcVxbXFx0IFxdKiVyXFswLTlcXSsiIHsgdGFyZ2V0IHsgISBp YTMyIH0gfSB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9pMzg2L2ludGVycnVwdC0yMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTIzLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZTBjZjU1MAotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0y My5jCkBAIC0wLDAgKzEsMjUgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWF2eDUxMmYgLW1uby1pYW1jdSIg fSAqLworCit2b2lkCitfX2F0dHJpYnV0ZV9fKChub19jYWxsZXJfc2F2ZWRf cmVnaXN0ZXJzKSkKK2ZuICh2b2lkKQoreworICBhc20gKCIjIgorICAgICAg IDoKKyAgICAgICA6CisgICAgICAgOiAieG1tMyIpOworfQorCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIm1vdnVwc1xbXFx0IFxd KiV6bW0zLFxbXFx0IFxdKi0/XFswLTlcXSpcXCglXFtyZVxdP3NwXFwpIiAx IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVz ICJtb3Z1cHNcW1xcdCBcXSotP1xbMC05XF0qXFwoJVxbcmVcXT9zcFxcKSxc W1xcdCBcXSolem1tMyIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci1ub3QgIm1vdihhfHUpcHNcW1xcdCBcXSolKHh8eXx6KW1t XFswLTJcXSssXFtcXHQgXF0qXFswLTlcXSpcXCglXFtyZVxdP3NwXFwpIiB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIm1v dihhfHUpcHNcW1xcdCBcXSpcWzAtOVxdKlxcKCVcW3JlXF0/c3BcXCksXFtc XHQgXF0qJSh4fHl8eiltbVxbMC0yXF0rIiB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIm1vdihhfHUpcHNcW1xcdCBcXSol KHh8eXx6KW1tXFs0LTlcXSssXFtcXHQgXF0qXFswLTlcXSpcXCglXFtyZVxd P3NwXFwpIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci1ub3QgIm1vdihhfHUpcHNcW1xcdCBcXSpcWzAtOVxdKlxcKCVcW3JlXF0/ c3BcXCksXFtcXHQgXF0qJSh4fHl8eiltbVxbNC05XF0rIiB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIm1vdihhfHUpcHNc W1xcdCBcXSolKHh8eXx6KW1tMVxbMC05XF0rLFxbXFx0IFxdKlxbMC05XF0q XFwoJVxbcmVcXT9zcFxcKSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItbm90ICJtb3YoYXx1KXBzXFtcXHQgXF0qXFswLTlcXSpc XCglXFtyZVxdP3NwXFwpLFxbXFx0IFxdKiUoeHx5fHopbW0xXFswLTlcXSsi IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAi KHB1c2h8cG9wKShsfHEpXFtcXHQgXF0qJShyfGUpKGF8YnxjfGQpeCIgfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICIocHVz aHxwb3ApKGx8cSlcW1xcdCBcXSolKHJ8ZSkoc3xkKWkiIH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiKHB1c2h8cG9wKShs fHEpXFtcXHQgXF0qJShyfGUpYnAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyLW5vdCAiKHB1c2h8cG9wKXFcW1xcdCBcXSolclxb MC05XF0rIiB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSB9ICovCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQt MjQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVw dC0yNC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjli OTJjMDAKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMjQuYwpAQCAtMCwwICsxLDIxIEBACisv KiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSAqLwor LyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pYW1jdSAtbW1weCIgfSAqLwor Cit2b2lkCitfX2F0dHJpYnV0ZV9fKChub19jYWxsZXJfc2F2ZWRfcmVnaXN0 ZXJzKSkKK2ZuICh2b2lkKQoreworICBhc20gKCIjIgorICAgICAgIDoKKyAg ICAgICA6CisgICAgICAgOiAiYm5kMyIpOworfQorCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImJuZG1vdlxbXFx0IFxdKiVibmQz LFxbXFx0IFxdKlxbXFwtXF0/XFswLTlcXSpcXCglXFtyZVxdP3NwXFwpIiAx IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVz ICJibmRtb3ZcW1xcdCBcXSpcW1xcLVxdP1xbMC05XF0qXFwoJVxbcmVcXT9z cFxcKSxcW1xcdCBcXSolYm5kMyIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlci1ub3QgIm1vdihhfHUpcHNcW1xcdCBcXSolKHh8 eXx6KW1tXFswLTlcXSssXFtcXHQgXF0qXFswLTlcXSpcXCglXFtyZVxdP3Nw XFwpIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1u b3QgIm1vdihhfHUpcHNcW1xcdCBcXSpcWzAtOVxdKlxcKCVcW3JlXF0/c3Bc XCksXFtcXHQgXF0qJSh4fHl8eiltbVxbMC05XF0rIiB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIihwdXNofHBvcCkobHxx KVxbXFx0IFxdKiUocnxlKShhfGJ8Y3xkKXgiIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiKHB1c2h8cG9wKShsfHEpXFtc XHQgXF0qJShyfGUpKHN8ZClpIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci1ub3QgIihwdXNofHBvcCkobHxxKVxbXFx0IFxdKiUo cnxlKWJwIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci1ub3QgIihwdXNofHBvcClxXFtcXHQgXF0qJXJcWzAtOVxdKyIgeyB0YXJn ZXQgeyAhIGlhMzIgfSB9IH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTI1LmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMjUuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDlmZDNhCi0tLSAvZGV2 L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50 ZXJydXB0LTI1LmMKQEAgLTAsMCArMSwyNCBAQAorLyogeyBkZy1kbyBjb21w aWxlIHsgdGFyZ2V0IGlhMzIgfSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1P MiAtbW5vLWF2eCAtbW5vLWlhbWN1IC1tc3NlIC1taW5jb21pbmctc3RhY2st Ym91bmRhcnk9MiIgfSAqLworCit2b2lkCitfX2F0dHJpYnV0ZV9fKChub19j YWxsZXJfc2F2ZWRfcmVnaXN0ZXJzKSkKK2ZuICh2b2lkKQoreworICBhc20g KCIjIgorICAgICAgIDoKKyAgICAgICA6CisgICAgICAgOiAieG1tMyIpOwor fQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIm1v dnVwc1xbXFx0IFxdKiV4bW0zLFxbXFx0IFxdKlxbMC05XF0qXFwoJVxbcmVc XT9zcFxcKSIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci10aW1lcyAibW92dXBzXFtcXHQgXF0qXFswLTlcXSpcXCglXFtyZVxd P3NwXFwpLFxbXFx0IFxdKiV4bW0zIiAxIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAibW92KGF8dSlwc1xbXFx0IFxdKiUo eHx5fHopbW1cWzAtMlxdKyxcW1xcdCBcXSpcWzAtOVxdKlxcKCVcW3JlXF0/ c3BcXCkiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LW5vdCAibW92KGF8dSlwc1xbXFx0IFxdKlxbMC05XF0qXFwoJVxbcmVcXT9z cFxcKSxcW1xcdCBcXSolKHh8eXx6KW1tXFswLTJcXSsiIH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAibW92KGF8dSlwc1xb XFx0IFxdKiUoeHx5fHopbW1cWzQtOVxdKyxcW1xcdCBcXSpcWzAtOVxdKlxc KCVcW3JlXF0/c3BcXCkiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLW5vdCAibW92KGF8dSlwc1xbXFx0IFxdKlxbMC05XF0qXFwo JVxbcmVcXT9zcFxcKSxcW1xcdCBcXSolKHh8eXx6KW1tXFs0LTlcXSsiIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAibW92 KGF8dSlwc1xbXFx0IFxdKiUoeHx5fHopbW0xXFswLTlcXSssXFtcXHQgXF0q XFswLTlcXSpcXCglXFtyZVxdP3NwXFwpIiB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIm1vdihhfHUpcHNcW1xcdCBcXSpc WzAtOVxdKlxcKCVcW3JlXF0/c3BcXCksXFtcXHQgXF0qJSh4fHl8eiltbTFc WzAtOVxdKyIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItbm90ICIocHVzaHxwb3ApbFxbXFx0IFxdKiVlKGF8YnxjfGQpeCIgfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICIocHVz aHxwb3ApbFxbXFx0IFxdKiVlKHN8ZClpIiB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIihwdXNofHBvcClsXFtcXHQgXF0q JWVicCIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMjYuYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9pMzg2L2ludGVycnVwdC0yNi5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjI3YjQwYjAKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMjYu YwpAQCAtMCwwICsxLDExIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwor LyogeyBkZy1vcHRpb25zICItTzIgLVdhbGwgLWciIH0gKi8KKwordm9pZAor X19hdHRyaWJ1dGVfXygoaW50ZXJydXB0KSkKK2ZuICh2b2lkICpmcmFtZSkK K3sKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAi YWRkKGx8cSlcW1xcdCBcXSpcXCRcWzAtOVxdKixcW1xcdCBcXSolXFtyZVxd P3NwIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAi aXJldCIgfSB9Ki8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L2ludGVycnVwdC0yNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvaW50ZXJydXB0LTI3LmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uNzc0YmI0YgotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0yNy5j CkBAIC0wLDAgKzEsMTYgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisv KiB7IGRnLW9wdGlvbnMgIi1PMCAtZyAtbW5vLWF2eCAtbW5vLWlhbWN1IC1t c3NlIiB9ICovCisKK3R5cGVkZWYgZmxvYXQgX192NHNmIF9fYXR0cmlidXRl X18gKChfX3ZlY3Rvcl9zaXplX18gKDE2KSkpOworX192NHNmIHgsIHk7CisK K3ZvaWQKK19fYXR0cmlidXRlX18oKGludGVycnVwdCkpCitmbiAodm9pZCAq ZnJhbWUpCit7CisgIHggPSB5OworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMgIm1vdnVwc1xbXFx0IFxdKiV4bW0wLFxbXFx0 IFxdKi0/XFswLTlcXSpcXCglXFtyZVxdP2JwXFwpIiAxIH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJtb3Z1cHNcW1xc dCBcXSotP1xbMC05XF0qXFwoJVxbcmVcXT9icFxcKSxcW1xcdCBcXSoleG1t MCIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAi aXJldCIgfSB9Ki8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L2ludGVycnVwdC0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmIwOWY1NmMKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMy5jCkBA IC0wLDAgKzEsMTQgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7 IGRnLW9wdGlvbnMgIi1PMiAtZyIgfSAqLworCit0eXBlZGVmIHVuc2lnbmVk IGludCB1d29yZF90IF9fYXR0cmlidXRlX18gKChtb2RlIChfX3dvcmRfXykp KTsKKwordm9pZAorX19hdHRyaWJ1dGVfXygoaW50ZXJydXB0KSkKK2ZuICh2 b2lkKiBmcmFtZSwgdXdvcmRfdCBlcnJvcikKK3sKK30KKworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJhZGQoPzpsfHEpXFtcXHQg XF0qXFxcJDgsXFtcXHQgXF0qJVxbcmVcXT9zcCIgMSB7IHRhcmdldCB7ICEg aWEzMiB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMgImFkZGxcW1xcdCBcXSpcXFwkNCxcW1xcdCBcXSolZXNwIiAx IHsgdGFyZ2V0IGlhMzIgfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlciAiaXJldCIgfSB9Ki8KZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLmMgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVy ci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MDk0 ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci5jCkBAIC0wLDAgKzEsMjcgQEAK Ky8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1P MiAtbTgwMzg3IC1tbG9uZy1kb3VibGUtODAgLW1uby1pYW1jdSAtbW5vLXNz ZSIgfSAqLworCit0eXBlZGVmIHVuc2lnbmVkIGludCB1d29yZF90IF9fYXR0 cmlidXRlX18gKChtb2RlIChfX3dvcmRfXykpKTsKKworZXh0ZXJuIGxvbmcg ZG91YmxlIHksIHg7CisKK3ZvaWQKK2ZuMCAodm9pZCkKK3sKKyAgeCA9IHk7 CisgIHkgPSAwOworfQorCit2b2lkCitfX2F0dHJpYnV0ZV9fKChpbnRlcnJ1 cHQpKQorZm4xICh2b2lkICpmcmFtZSwgdXdvcmRfdCBlcnJvcikKK3sKKyAg eCA9IDA7IC8qIHsgZGctZXJyb3IgIjgwMzg3IGluc3RydWN0aW9ucyBhcmVu J3QgYWxsb3dlZCBpbiBleGNlcHRpb24gc2VydmljZSByb3V0aW5lIiB9ICov Cit9CisKK3ZvaWQKK19fYXR0cmlidXRlX18oKGludGVycnVwdCkpCitmbjIg KHZvaWQgKmZyYW1lKQoreworICB4ID0geTsgLyogeyBkZy1lcnJvciAiODAz ODcgaW5zdHJ1Y3Rpb25zIGFyZW4ndCBhbGxvd2VkIGluIGludGVycnVwdCBz ZXJ2aWNlIHJvdXRpbmUiIH0gKi8KK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC00LmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtNC5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzNGRiZTAKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRl cnJ1cHQtNC5jCkBAIC0wLDAgKzEsMzIgQEAKKy8qIHsgZGctZG8gbGluayB9 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1nIiB9ICovCisKKyNpbmNsdWRl IDxzdGRpbnQuaD4KKworZXh0ZXJuIHZvaWQgbGlua19lcnJvciAodm9pZCk7 CisKK3R5cGVkZWYgdW5zaWduZWQgaW50IHV3b3JkX3QgX19hdHRyaWJ1dGVf XyAoKG1vZGUgKF9fd29yZF9fKSkpOworCitzdHJ1Y3QgaW50ZXJydXB0X2Zy YW1lCit7CisgIHV3b3JkX3QgaXA7CisgIHV3b3JkX3QgY3M7CisgIHV3b3Jk X3QgZmxhZ3M7CisgIHV3b3JkX3Qgc3A7CisgIHV3b3JkX3Qgc3M7Cit9Owor CitfX2F0dHJpYnV0ZV9fICgodXNlZCwgaW50ZXJydXB0KSkKK3ZvaWQKK2Zv byAoc3RydWN0IGludGVycnVwdF9mcmFtZSAqZnJhbWUpCit7CisgIHZvaWQg KnJhID0gX19idWlsdGluX3JldHVybl9hZGRyZXNzICgwKTsKKyAgaWYgKCh1 aW50cHRyX3QpIHJhICE9ICh1aW50cHRyX3QpIGZyYW1lLT5pcCkKKyAgICBs aW5rX2Vycm9yICgpOworfQorCitpbnQKK21haW4gKHZvaWQpCit7CisgIHJl dHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYvaW50ZXJydXB0LTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L2ludGVycnVwdC01LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uM2M0YmMyZAotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC01LmMKQEAg LTAsMCArMSwyMyBAQAorLyogeyBkZy1kbyBsaW5rIH0gKi8KKy8qIHsgZGct b3B0aW9ucyAiLU8gLWciIH0gKi8KKworI2luY2x1ZGUgPHN0ZGludC5oPgor CitleHRlcm4gdm9pZCBsaW5rX2Vycm9yICh2b2lkKTsKKwordHlwZWRlZiB1 bnNpZ25lZCBpbnQgdXdvcmRfdCBfX2F0dHJpYnV0ZV9fICgobW9kZSAoX193 b3JkX18pKSk7CisKK19fYXR0cmlidXRlX18gKCh1c2VkLCBpbnRlcnJ1cHQp KQordm9pZAorZm9vICh2b2lkICpmcmFtZSwgdXdvcmRfdCBlcnJvcikKK3sK KyAgdm9pZCAqcmEgPSBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MgKDApOwor ICBpZiAoKHVpbnRwdHJfdCkgcmEgIT0gKHVpbnRwdHJfdCkgZXJyb3IpCisg ICAgbGlua19lcnJvciAoKTsKK30KKworaW50CittYWluICh2b2lkKQorewor ICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9pMzg2L2ludGVycnVwdC02LmMgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtNi5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmExYTNkMGUKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtNi5j CkBAIC0wLDAgKzEsNDAgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisv KiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAqLworCit0eXBlZGVmIHVuc2lnbmVk IGludCB1d29yZF90IF9fYXR0cmlidXRlX18gKChtb2RlIChfX3dvcmRfXykp KTsKKworZXh0ZXJuIGludCBlcnJvcjsKKworX19hdHRyaWJ1dGVfXygoaW50 ZXJydXB0KSkKK3ZvaWQKK2ZuMSAodm9pZCAqcCwgc2hvcnQgZXJyb3JfY29k ZSkKK3sgLyogeyBkZy1lcnJvciAiaW50ZXJydXB0IHNlcnZpY2Ugcm91dGlu ZSBzaG91bGQgaGF2ZSB1bnNpZ25lZCBcKGxvbmcgbG9uZyB8bG9uZyB8XClp bnQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCIgfSAqLworfQorCitfX2F0dHJp YnV0ZV9fKChpbnRlcnJ1cHQpKQordm9pZAorZm4yICh2b2lkKQoreyAvKiB7 IGRnLWVycm9yICJpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lIGNhbiBvbmx5 IGhhdmUgYSBwb2ludGVyIGFyZ3VtZW50IGFuZCBhbiBvcHRpb25hbCBpbnRl Z2VyIGFyZ3VtZW50IiB9ICovCit9CisKK19fYXR0cmlidXRlX18oKGludGVy cnVwdCkpCit2b2lkCitmbjMgKHV3b3JkX3QgZXJyb3JfY29kZSkKK3sgLyog eyBkZy1lcnJvciAiaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZSBzaG91bGQg aGF2ZSBhIHBvaW50ZXIgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IiB9ICovCisg IGVycm9yID0gZXJyb3JfY29kZTsKK30KKworX19hdHRyaWJ1dGVfXygoaW50 ZXJydXB0KSkKK3ZvaWQKK2ZuNCAodXdvcmRfdCBlcnJvcl9jb2RlLCB2b2lk ICpmcmFtZSkKK3sgLyogeyBkZy1lcnJvciAiaW50ZXJydXB0IHNlcnZpY2Ug cm91dGluZSBzaG91bGQgaGF2ZSAuKiB0aGUgLiogYXJndW1lbnQiIH0gKi8K KyAgZXJyb3IgPSBlcnJvcl9jb2RlOworfQorCitleHRlcm4gaW50IGZuNSAo dm9pZCAqKSBfX2F0dHJpYnV0ZV9fICgoaW50ZXJydXB0KSk7IC8qIHsgZGct ZXJyb3IgImludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmUgY2FuJ3QgaGF2ZSBu b24tdm9pZCByZXR1cm4gdmFsdWUiIH0gKi8KKworaW50CitmbjUgKHZvaWQg KmZyYW1lKQoreworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC03LmMgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtNy5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NDQxYTIKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9p bnRlcnJ1cHQtNy5jCkBAIC0wLDAgKzEsMTIgQEAKKy8qIHsgZGctZG8gY29t cGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAqLworCitleHRl cm4gaW50IGVycm9yOworCitleHRlcm4gdm9pZCBmbiAodm9pZCAqKSBfX2F0 dHJpYnV0ZV9fKChpbnRlcnJ1cHQpKTsKKwordm9pZAorZm9vICh2b2lkKQor eworICBmbiAoJmVycm9yKTsgLyogeyBkZy1lcnJvciAiaW50ZXJydXB0IHNl cnZpY2Ugcm91dGluZSBjYW4ndCBiZSBjYWxsZWQgZGlyZWN0bHkiIH0gKi8K K30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L2ludGVycnVwdC04LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9pbnRlcnJ1cHQtOC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmRlZmVjMmUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtOC5jCkBAIC0wLDAgKzEs MjAgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgq IH0gfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1hdng1MTJmIC1t bm8taWFtY3UgLW1hdnggLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MiIH0g Ki8KKworZXh0ZXJuIHZvaWQgYmFyICh2b2lkKTsKKwordm9pZAorIF9fYXR0 cmlidXRlX18gKChpbnRlcnJ1cHQpKQorZm9vICh2b2lkICpmcmFtZSkKK3sK KyAgYmFyICgpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMgIm1vdnVwc1xbXFx0IFxdKiV5bW1cWzAtOVxdKyxcW1xcdCBc XSotXFswLTlcXSpcXCglXFtyZVxdP2JwXFwpIiAxNiB7IHRhcmdldCB7ICEg aWEzMiB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMgIm1vdnVwc1xbXFx0IFxdKi1cWzAtOVxdKlxcKCVcW3JlXF0/ YnBcXCksXFtcXHQgXF0qJXltbVxbMC05XF0rIiAxNiB7IHRhcmdldCB7ICEg aWEzMiB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMgIm1vdnVwc1xbXFx0IFxdKiV5bW1cWzAtOVxdKyxcW1xcdCBc XSotXFswLTlcXSpcXCglXFtyZVxdP2JwXFwpIiA4IHsgdGFyZ2V0IGlhMzIg fSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1l cyAibW92dXBzXFtcXHQgXF0qLVxbMC05XF0qXFwoJVxbcmVcXT9icFxcKSxc W1xcdCBcXSoleW1tXFswLTlcXSsiIDggeyB0YXJnZXQgaWEzMiB9IH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFc W1xcdCBcXSolcmJ4IiB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbXFx0 IFxdKiVyMVxbMi01XF0rIiB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNobFxb XFx0IFxdKiVlYngiIHsgdGFyZ2V0IGlhMzIgfSB9IH0gKi8KKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hsXFtcXHQgXF0qJWUo c3xkKWkiIHsgdGFyZ2V0IGlhMzIgfSB9IH0gKi8KZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC05LmMgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtOS5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2YmQ4ZGQKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9pbnRlcnJ1cHQtOS5jCkBAIC0wLDAgKzEsMjIgQEAKKy8qIHsgZGctZG8g Y29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLworLyogeyBkZy1v cHRpb25zICItTzIgLW1uby1hdng1MTJidyAtbW5vLWlhbWN1IC1tYXZ4NTEy ZiAtbWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncyIgfSAqLworCitleHRlcm4g dm9pZCBiYXIgKHZvaWQpOworCit2b2lkCisgX19hdHRyaWJ1dGVfXyAoKGlu dGVycnVwdCkpCitmb28gKHZvaWQgKmZyYW1lKQoreworICBiYXIgKCk7Cit9 CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAibW92 dXBzXFtcXHQgXF0qJXptbVxbMC05XF0rLFxbXFx0IFxdLSpcWzAtOVxdKlxc KCVcW3JlXF0/YnBcXCkiIDMyIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAibW92 dXBzXFtcXHQgXF0qLVxbMC05XF0qXFwoJVxbcmVcXT9icFxcKSxcW1xcdCBc XSolem1tXFswLTlcXSsiIDMyIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAibW92 dXBzXFtcXHQgXF0qJXptbVxbMC05XF0rLFxbXFx0IFxdKi1cWzAtOVxdKlxc KCVcW3JlXF0/YnBcXCkiIDggeyB0YXJnZXQgaWEzMiB9IH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJtb3Z1cHNcW1xc dCBcXSotXFswLTlcXSpcXCglXFtyZVxdP2JwXFwpLFxbXFx0IFxdKiV6bW1c WzAtOVxdKyIgOCB7IHRhcmdldCBpYTMyIH0gfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImttb3Z3XFtcXHQgXF0qJWtc WzAtN1xdKyxcW1xcdCBcXSotXFswLTlcXSpcXCglXFtyZVxdP2JwXFwpIiA4 IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVz ICJrbW92d1xbXFx0IFxdKi1cWzAtOVxdKlxcKCVcW3JlXF0/YnBcXCksXFtc XHQgXF0qJWtcWzAtN1xdKyIgOCB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFtcXHQgXF0qJXJieCIgeyB0YXJn ZXQgeyAhIGlhMzIgfSB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLW5vdCAicHVzaHFcW1xcdCBcXSolcjFcWzItNVxdKyIgeyB0 YXJnZXQgeyAhIGlhMzIgfSB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyLW5vdCAicHVzaGxcW1xcdCBcXSolZWJ4IiB7IHRhcmdl dCBpYTMyIH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItbm90ICJwdXNobFxbXFx0IFxdKiVlKHN8ZClpIiB7IHRhcmdldCBpYTMy IH0gfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9pbnRlcnJ1cHQtYm5kLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtYm5kLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uOWY1MDY2MQotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC1ibmQu YwpAQCAtMCwwICsxLDE2IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJn ZXQgeyAhIHgzMiB9IH0gfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLW1u by1pYW1jdSAtbW1weCIgfSAqLworCit2b2lkCitfX2F0dHJpYnV0ZV9fKChp bnRlcnJ1cHQpKQorZm4gKHZvaWQgKmZyYW1lKQoreworICBhc20gKCIjIgor ICAgICAgIDoKKyAgICAgICA6CisgICAgICAgOiAiYm5kMyIpOworfQorCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImJuZG1vdlxb XFx0IFxdKiVibmQzLFxbXFx0IFxdKlxbXFwtXF0/XFswLTlcXSpcXCglXFty ZVxdP3NwXFwpIiAxIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLXRpbWVzICJibmRtb3ZcW1xcdCBcXSpcW1xcLVxdP1xbMC05XF0q XFwoJVxbcmVcXT9zcFxcKSxcW1xcdCBcXSolYm5kMyIgMSB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiaXJldCIgfSB9Ki8KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVy cnVwdC1pYW1jdS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv aW50ZXJydXB0LWlhbWN1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uNzEyYjg1ZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC1pYW1jdS5jCkBAIC0w LDAgKzEsMzUgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBpYTMy IH0gfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLW1pYW1jdSAtbWFjY3Vt dWxhdGUtb3V0Z29pbmctYXJncyIgfSAqLworCitleHRlcm4gdm9pZCBmb28g KHZvaWQgKikgX19hdHRyaWJ1dGVfXyAoKGludGVycnVwdCkpOworZXh0ZXJu IGludCBiYXIgKGludCk7CisKK3ZvaWQgZm9vICh2b2lkICpmcmFtZSkKK3sK KyAgaW50IGEsYixjLGQsZSxmLGk7CisgIGEgPSBiYXIgKDUpOworICBiID0g YmFyIChhKTsKKyAgYyA9IGJhciAoYik7CisgIGQgPSBiYXIgKGMpOworICBl ID0gYmFyIChkKTsKKyAgZiA9IGJhciAoZSk7CisgIGZvciAoaSA9IDE7IGkg PCAxMDsgaSsrKQorICAgIGEgKz0gYmFyIChhICsgaSkgKyBiYXIgKGIgKyBp KSArCisJIGJhciAoYyArIGkpICsgYmFyIChkICsgaSkgKworCSBiYXIgKGUg KyBpKSArIGJhciAoZitpKTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzICJwdXNobFxbXFx0IFxdKiVlYXgiIDEgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInB1c2hs XFtcXHQgXF0qJWVieCIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci10aW1lcyAicHVzaGxcW1xcdCBcXSolZWN4IiAxIH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJwdXNo bFxbXFx0IFxdKiVlZHgiIDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMgInB1c2hsXFtcXHQgXF0qJWVkaSIgMSB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAicHVz aGxcW1xcdCBcXSolZXNpIiAxIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyLXRpbWVzICJwdXNobFxbXFx0IFxdKiVlYnAiIDEgfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInBv cGxcW1xcdCBcXSolZWF4IiAxIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyLXRpbWVzICJwb3BsXFtcXHQgXF0qJWVjeCIgMSB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAicG9w bFxbXFx0IFxdKiVlZHgiIDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMgInBvcGxcW1xcdCBcXSolZWRpIiAxIH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJwb3Bs XFtcXHQgXF0qJWVzaSIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci10aW1lcyAicG9wbFxbXFx0IFxdKiVlYnAiIDEgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImlyZXQiIH0gfSov CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9p bnRlcnJ1cHQtbW14LWVyci5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2kzODYvaW50ZXJydXB0LW1teC1lcnIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5mYzRmMzY3Ci0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LW1teC1l cnIuYwpAQCAtMCwwICsxLDM3IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAq LworLyogeyBkZy1vcHRpb25zICItTzIgLW1tbXggLW1uby1pYW1jdSIgfSAq LworCit0eXBlZGVmIHVuc2lnbmVkIGludCB1d29yZF90IF9fYXR0cmlidXRl X18gKChtb2RlIChfX3dvcmRfXykpKTsKK3R5cGVkZWYgc2hvcnQgX192NGhp IF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDgpKSk7Cit0eXBl ZGVmIGludCBfX202NCBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9f ICg4KSwgX19tYXlfYWxpYXNfXykpOworCitleHRlcm4gX19tNjQgeSwgeDsK Kwordm9pZAorZm4wICh2b2lkKQoreworICB4ID0gX19leHRlbnNpb25fXyAo X19tNjQpeyAwIH07CisgIHggPSAoX19tNjQpIF9fYnVpbHRpbl9pYTMyX3Bh Y2tzc3diICgoX192NGhpKSB4LCAoX192NGhpKSB5KTsKKyAgeSA9IHg7Cit9 CisKK3ZvaWQKK19fYXR0cmlidXRlX18oKGludGVycnVwdCkpCitmbjEgKHZv aWQgKmZyYW1lKQoreworICB4ID0gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9w YWNrc3N3YiAoKF9fdjRoaSkgeCwgKF9fdjRoaSkgeSk7IC8qIHsgZGctZXJy b3IgIk1NWC8zRG5vdyAoaW5zdHJ1Y3Rpb25zfGludHJpbnNpY3MpIGFyZW4n dCBhbGxvd2VkIGluIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmUiIH0gKi8K K30KKwordm9pZAorX19hdHRyaWJ1dGVfXygoaW50ZXJydXB0KSkKK2ZuMiAo dm9pZCAqZnJhbWUpCit7CisgIHggPSB5OyAvKiB7IGRnLWVycm9yICJNTVgv M0Rub3cgaW5zdHJ1Y3Rpb25zIGFyZW4ndCBhbGxvd2VkIGluIGludGVycnVw dCBzZXJ2aWNlIHJvdXRpbmUiIH0gKi8KK30KKwordm9pZAorX19hdHRyaWJ1 dGVfXygoaW50ZXJydXB0KSkKK2ZuMyAodm9pZCAqZnJhbWUsIHV3b3JkX3Qg ZXJyb3IpCit7CisgIHggPSBfX2V4dGVuc2lvbl9fIChfX202NCl7IDAgfTsg LyogeyBkZy1lcnJvciAiTU1YLzNEbm93IGluc3RydWN0aW9ucyBhcmVuJ3Qg YWxsb3dlZCBpbiBleGNlcHRpb24gc2VydmljZSByb3V0aW5lIiB9ICovCit9 CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9p bnRlcnJ1cHQtcmVkem9uZS0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9pbnRlcnJ1cHQtcmVkem9uZS0xLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uNzk2YjgxYgotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC1y ZWR6b25lLTEuYwpAQCAtMCwwICsxLDE2IEBACisvKiB7IGRnLWRvIGNvbXBp bGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLU8yIC1tcmVkLXpvbmUiIH0gKi8KKwordm9pZAorX19hdHRyaWJ1dGVf XygoaW50ZXJydXB0KSkKK2ZuICh2b2lkICpmcmFtZSkKK3sKKyAgLyogTm8g bmVlZCB0byBhZGp1c3Qgc3RhY2sgaWYgbGVzcyB0aGFuIDEyOCBieXRlcyBh cmUgdXNlZCBvbiBzdGFjaworICAgICB3aXRoIGEgMTI4LWJ5dGUgcmVkIHpv bmUuICAqLworICBjaGFyIGFycmF5WzExMl07CisgIGFzbSAoIiMgJTAgIgor ICAgICAgIDoKKyAgICAgICA6ICJyIiAoYXJyYXkpKTsKK30KKworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiKHN1YnxhZGQpKGx8cSlc W1xcdCBcXSpcXCRcWzAtOVxdKixcW1xcdCBcXSolXFtyZVxdP3NwIiB9IH0g Ki8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L2ludGVycnVwdC1yZWR6b25lLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L2ludGVycnVwdC1yZWR6b25lLTIuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmEyODIyCi0tLSAvZGV2L251bGwK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0 LXJlZHpvbmUtMi5jCkBAIC0wLDAgKzEsMTYgQEAKKy8qIHsgZGctZG8gY29t cGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLworLyogeyBkZy1vcHRp b25zICItTzIgLW1yZWQtem9uZSIgfSAqLworCit2b2lkCitfX2F0dHJpYnV0 ZV9fKChpbnRlcnJ1cHQpKQorZm4gKHZvaWQgKmZyYW1lKQoreworICAvKiBO ZWVkIHRvIGFkanVzdCBzdGFjayBpZiBtb3JlIHRoYW4gMTI4IGJ5dGVzIGFy ZSB1c2VkIG9uIHN0YWNrCisgICAgIHdpdGggYSAxMjgtYnl0ZSByZWQgem9u ZS4gICovCisgIGNoYXIgYXJyYXlbMTEzXTsKKyAgYXNtICgiIyAlMCAiCisg ICAgICAgOgorICAgICAgIDogInIiIChhcnJheSkpOworfQorCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIig/OnN1YnxhZGQpKD86 bHxxKVxbXFx0IFxdKlxcXCRcWzAtOVxdKixcW1xcdCBcXSolXFtyZVxdP3Nw IiAyIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYvaW50ZXJydXB0LXNpYmNhbGwuYyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC1zaWJjYWxsLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIyMmFjZgotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVy cnVwdC1zaWJjYWxsLmMKQEAgLTAsMCArMSwxMiBAQAorLyogeyBkZy1kbyBj b21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8zIiB9ICovCisKK2V4 dGVybiB2b2lkIGZvbyAodm9pZCAqKSBfX2F0dHJpYnV0ZV9fICgoaW50ZXJy dXB0KSk7CitleHRlcm4gdm9pZCBiYXIgKHZvaWQpOworCit2b2lkIGZvbyAo dm9pZCAqZnJhbWUpCit7CisgIGJhciAoKTsKK30KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlci1ub3QgImptcCIgfSB9Ki8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlciAiaXJldCIgfSB9Ki8KZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC1zd2l0 Y2gtYWJpLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRl cnJ1cHQtc3dpdGNoLWFiaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmIxYjBhYmUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtc3dpdGNoLWFiaS5j CkBAIC0wLDAgKzEsMTYgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisv KiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAqLworCitleHRlcm4gdm9pZCBiYXIg KGludCk7CisKK3ZvaWQgZjEgKHZvaWQpeyAgYmFyICgxKTsgfQorX19hdHRy aWJ1dGVfXygoaW50ZXJydXB0KSkKK3ZvaWQgZjIgKHZvaWQgKmZyYW1lKXsg IGJhciAoMik7IH0KK3ZvaWQgZjMgKHZvaWQpeyAgYmFyICgzKTsgfQorX19h dHRyaWJ1dGVfXygoaW50ZXJydXB0KSkKK3ZvaWQgZjQgKHZvaWQgKmZyYW1l KXsgIGJhciAoNCk7IH0KK3ZvaWQgZjUgKHZvaWQpeyAgYmFyICg1KTsgfQor CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInB1c2gu XHQlLmF4IiAyIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLXRpbWVzICJwb3AuXHQlLmF4IiAyIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJpcmV0IiAyIH0gfSAqLwpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJy dXB0LXhtbS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50 ZXJydXB0LXhtbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjZmZmRkOTYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQteG1tLmMKQEAgLTAsMCArMSwx NiBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLU8yIC1tbm8tYXZ4IC1tbm8taWFtY3UgLW1zc2UiIH0gKi8KKwordm9p ZAorX19hdHRyaWJ1dGVfXygoaW50ZXJydXB0KSkKK2ZuICh2b2lkICpmcmFt ZSkKK3sKKyAgYXNtICgiIyIKKyAgICAgICA6CisgICAgICAgOgorICAgICAg IDogInhtbTMiKTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLXRpbWVzICJtb3Z1cHNcW1xcdCBcXSoleG1tMyxcW1xcdCBcXSotP1xb MC05XF0qXFwoJVxbcmVcXT9zcFxcKSIgMSB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAibW92dXBzXFtcXHQgXF0qLT9c WzAtOVxdKlxcKCVcW3JlXF0/c3BcXCksXFtcXHQgXF0qJXhtbTMiIDEgfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImlyZXQiIH0g fSovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9pbnRlcnJ1cHQteW1tLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9pbnRlcnJ1cHQteW1tLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMDc1NGFlMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC15bW0uYwpAQCAt MCwwICsxLDE2IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBk Zy1vcHRpb25zICItTzIgLW1uby1hdng1MTJmIC1tbm8taWFtY3UgLW1hdngi IH0gKi8KKwordm9pZAorX19hdHRyaWJ1dGVfXygoaW50ZXJydXB0KSkKK2Zu ICh2b2lkICpmcmFtZSkKK3sKKyAgYXNtICgiIyIKKyAgICAgICA6CisgICAg ICAgOgorICAgICAgIDogInhtbTMiKTsKK30KKworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJ2bW92dXBzXFtcXHQgXF0qJXltbTMs XFtcXHQgXF0qLT9cWzAtOVxdKlxcKCVcW3JlXF0/c3BcXCkiIDEgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInZtb3Z1 cHNcW1xcdCBcXSotP1xbMC05XF0qXFwoJVxbcmVcXT9zcFxcKSxcW1xcdCBc XSoleW1tMyIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt YmxlciAiaXJldCIgfSB9Ki8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC16bW0uYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC16bW0uYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGQyZmExCi0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJy dXB0LXptbS5jCkBAIC0wLDAgKzEsMTYgQEAKKy8qIHsgZGctZG8gY29tcGls ZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWF2eDUxMmYgLW1uby1p YW1jdSIgfSAqLworCit2b2lkCitfX2F0dHJpYnV0ZV9fKChpbnRlcnJ1cHQp KQorZm4gKHZvaWQgKmZyYW1lKQoreworICBhc20gKCIjIgorICAgICAgIDoK KyAgICAgICA6CisgICAgICAgOiAieG1tMyIpOworfQorCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInZtb3Z1cHNcW1xcdCBcXSol em1tMyxcW1xcdCBcXSotP1xbMC05XF0qXFwoJVxbcmVcXT9zcFxcKSIgMSB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAi dm1vdnVwc1xbXFx0IFxdKi0/XFswLTlcXSpcXCglXFtyZVxdP3NwXFwpLFxb XFx0IFxdKiV6bW0zIiAxIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyICJpcmV0IiB9IH0qLwo= --001a113553a81e2c6e052289252b--