From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.3 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0AEEDC433E3 for ; Mon, 17 Aug 2020 04:32:15 +0000 (UTC) Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id CA77A20758 for ; Mon, 17 Aug 2020 04:32:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="As19D1qH" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CA77A20758 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=linux-kernel-mentees-bounces@lists.linuxfoundation.org Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 9BBB686398; Mon, 17 Aug 2020 04:32:14 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ogUUKoLulrpM; Mon, 17 Aug 2020 04:32:12 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by fraxinus.osuosl.org (Postfix) with ESMTP id CD6CB86199; Mon, 17 Aug 2020 04:32:12 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id B1979C088B; Mon, 17 Aug 2020 04:32:12 +0000 (UTC) Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 67222C07FF for ; Mon, 17 Aug 2020 04:32:11 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 493FE861C8 for ; Mon, 17 Aug 2020 04:32:11 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3QZwdE15GIha for ; Mon, 17 Aug 2020 04:32:07 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-pf1-f196.google.com (mail-pf1-f196.google.com [209.85.210.196]) by fraxinus.osuosl.org (Postfix) with ESMTPS id 106E786199 for ; Mon, 17 Aug 2020 04:32:07 +0000 (UTC) Received: by mail-pf1-f196.google.com with SMTP id x25so7619445pff.4 for ; Sun, 16 Aug 2020 21:32:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=o16XKgkA2ur5Ph6lBNP9KHPR/oIni79Ag1N9S6v1K2o=; b=As19D1qHxSdX3e9YqLolSSkeXUujrsfLQS9QVNxzc66IZiXEJMnxAF7Y8MVx2TUD/w 6u1BWUlcqGQa/+ux91fEDaowj5VR6iYkTLecKH1R8s3UNLq3h1F5XvJDMkg2J4Qwej0y kyvXvkIkKTSki7LCYpNUSBf0rL/Te0SXCJ7UzbBb6sy5H2O7ed5RMFR8ir7Zx2Sfnqv/ +h3+EGN/t7TrwdBtp42CT1GN3H0BFS8rHh+IrcuS6515MwBbR59MkzEjlCDoFCEVhqwa tK7bIBn2y1BZirCL8BfEDNBwJ0zikhuFX7wcDvK8JkdtWGNVib0KQ7PZeUG+pg9gLIZ+ vLRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=o16XKgkA2ur5Ph6lBNP9KHPR/oIni79Ag1N9S6v1K2o=; b=NKeHjBnDBkVh/pvHdnq55b+oKZ46+eFm0hdHlPx+aa2V0i1NvbDONCcln88ch08zlu A+usMBt7P8BmR9Zczv7/D9fWG3RQD/6t8NkER4BUc2glVOSCiRTiiJwIpDwxNUj/aNYn iPFcZYNzNcThV5zSbXyV8/QcjuvtVTgVPUnnRodIPJeSfWUjjsKa/HV5Y8KYUtqVE5IT n1TWP/UCu/0CIMwR+fidpLj++dkhJsByQq+qvzYvaUPEr+3rFcCbRTQUN5UzXc9MbJaa xqmrCmWSKWfJ8DTo9v/1GPNS+R63qVdlJ2AUabYHcyt6pGZxBgMv2SXRFJMvLu6YH8My MqNg== X-Gm-Message-State: AOAM533BN7BEOB3ymyMwZHqz5nQ87QwSGC3HnvIje8D18fBPn1r4oHWl 4u3/JJmjE7fHwg2WToknb6Q= X-Google-Smtp-Source: ABdhPJxhES5XEyYScNPO1ffXhKomc2f9q42i0fhBcJzUvwKy9ZGv8CwbzY3JB4RlgpqKGmD9t7pLgg== X-Received: by 2002:a63:cf03:: with SMTP id j3mr8860127pgg.14.1597638726255; Sun, 16 Aug 2020 21:32:06 -0700 (PDT) Received: from arpitha-Inspiron-7570.lan ([49.206.11.137]) by smtp.gmail.com with ESMTPSA id e22sm14900684pgi.62.2020.08.16.21.32.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Aug 2020 21:32:05 -0700 (PDT) From: Arpitha Raghunandan <98.arpi@gmail.com> To: brendanhiggins@google.com, skhan@linuxfoundation.org, andriy.shevchenko@linux.intel.com, pmladek@suse.com, rostedt@goodmis.org, sergey.senozhatsky@gmail.com, linux@rasmusvillemoes.dk Date: Mon, 17 Aug 2020 10:00:28 +0530 Message-Id: <20200817043028.76502-1-98.arpi@gmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Cc: Arpitha Raghunandan <98.arpi@gmail.com>, linux-kernel-mentees@lists.linuxfoundation.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, kunit-dev@googlegroups.com Subject: [Linux-kernel-mentees] [PATCH] lib: Convert test_printf.c to KUnit X-BeenThere: linux-kernel-mentees@lists.linuxfoundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-kernel-mentees-bounces@lists.linuxfoundation.org Sender: "Linux-kernel-mentees" Q29udmVydHMgdGVzdCBsaWIvdGVzdF9wcmludGYuYyB0byBLVW5pdC4KTW9yZSBpbmZvcm1hdGlv biBhYm91dCBLVW5pdCBjYW4gYmUgZm91bmQgYXQKaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2Mv aHRtbC9sYXRlc3QvZGV2LXRvb2xzL2t1bml0L2luZGV4Lmh0bWwuCktVbml0IHByb3ZpZGVzIGEg Y29tbW9uIGZyYW1ld29yayBmb3IgdW5pdCB0ZXN0cyBpbiB0aGUga2VybmVsLgoKU2lnbmVkLW9m Zi1ieTogQXJwaXRoYSBSYWdodW5hbmRhbiA8OTguYXJwaUBnbWFpbC5jb20+Ci0tLQogbGliL0tj b25maWcuZGVidWcgICAgICAgICAgICAgICAgICAgICB8ICAgNyArLQogbGliL01ha2VmaWxlICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogbGliL3t0ZXN0X3ByaW50Zi5jID0+IHBy aW50Zl9rdW5pdC5jfSB8IDQ5OCArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBj aGFuZ2VkLCAyNDYgaW5zZXJ0aW9ucygrKSwgMjYxIGRlbGV0aW9ucygtKQogcmVuYW1lIGxpYi97 dGVzdF9wcmludGYuYyA9PiBwcmludGZfa3VuaXQuY30gKDQ1JSkKCmRpZmYgLS1naXQgYS9saWIv S2NvbmZpZy5kZWJ1ZyBiL2xpYi9LY29uZmlnLmRlYnVnCmluZGV4IGUwNjhjM2M3MTg5YS4uNzQ1 NDI1OGNmNTdhIDEwMDY0NAotLS0gYS9saWIvS2NvbmZpZy5kZWJ1ZworKysgYi9saWIvS2NvbmZp Zy5kZWJ1ZwpAQCAtMjAyNyw5ICsyMDI3LDYgQEAgY29uZmlnIFRFU1RfU1RSU0NQWQogY29uZmln IFRFU1RfS1NUUlRPWAogCXRyaXN0YXRlICJUZXN0IGtzdHJ0byooKSBmYW1pbHkgb2YgZnVuY3Rp b25zIGF0IHJ1bnRpbWUiCiAKLWNvbmZpZyBURVNUX1BSSU5URgotCXRyaXN0YXRlICJUZXN0IHBy aW50ZigpIGZhbWlseSBvZiBmdW5jdGlvbnMgYXQgcnVudGltZSIKLQogY29uZmlnIFRFU1RfQklU TUFQCiAJdHJpc3RhdGUgIlRlc3QgYml0bWFwXyooKSBmYW1pbHkgb2YgZnVuY3Rpb25zIGF0IHJ1 bnRpbWUiCiAJaGVscApAQCAtMjI0Nyw2ICsyMjQ0LDEwIEBAIGNvbmZpZyBCSVRTX1RFU1QKIAog CSAgSWYgdW5zdXJlLCBzYXkgTi4KIAorY29uZmlnIFBSSU5URl9LVU5JVF9URVNUCisJdHJpc3Rh dGUgIktVbml0IHRlc3RzIGZvciBwcmludGYoKSBmYW1pbHkgb2YgZnVuY3Rpb25zIGF0IHJ1bnRp bWUiCisJZGVwZW5kcyBvbiBLVU5JVAorCiBjb25maWcgVEVTVF9VREVMQVkKIAl0cmlzdGF0ZSAi dWRlbGF5IHRlc3QgZHJpdmVyIgogCWhlbHAKZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xp Yi9NYWtlZmlsZQppbmRleCBlMjkwZmM1NzA3ZWEuLjY4ZTViMzJhMTg1ZiAxMDA2NDQKLS0tIGEv bGliL01ha2VmaWxlCisrKyBiL2xpYi9NYWtlZmlsZQpAQCAtNzcsNyArNzcsNiBAQCBvYmotJChD T05GSUdfVEVTVF9TT1JUKSArPSB0ZXN0X3NvcnQubwogb2JqLSQoQ09ORklHX1RFU1RfVVNFUl9D T1BZKSArPSB0ZXN0X3VzZXJfY29weS5vCiBvYmotJChDT05GSUdfVEVTVF9TVEFUSUNfS0VZUykg Kz0gdGVzdF9zdGF0aWNfa2V5cy5vCiBvYmotJChDT05GSUdfVEVTVF9TVEFUSUNfS0VZUykgKz0g dGVzdF9zdGF0aWNfa2V5X2Jhc2Uubwotb2JqLSQoQ09ORklHX1RFU1RfUFJJTlRGKSArPSB0ZXN0 X3ByaW50Zi5vCiBvYmotJChDT05GSUdfVEVTVF9CSVRNQVApICs9IHRlc3RfYml0bWFwLm8KIG9i ai0kKENPTkZJR19URVNUX1NUUlNDUFkpICs9IHRlc3Rfc3Ryc2NweS5vCiBvYmotJChDT05GSUdf VEVTVF9CSVRGSUVMRCkgKz0gdGVzdF9iaXRmaWVsZC5vCkBAIC0zNDMsMyArMzQyLDQgQEAgb2Jq LSQoQ09ORklHX1BMRE1GVykgKz0gcGxkbWZ3Lwogb2JqLSQoQ09ORklHX0xJU1RfS1VOSVRfVEVT VCkgKz0gbGlzdC10ZXN0Lm8KIG9iai0kKENPTkZJR19MSU5FQVJfUkFOR0VTX1RFU1QpICs9IHRl c3RfbGluZWFyX3Jhbmdlcy5vCiBvYmotJChDT05GSUdfQklUU19URVNUKSArPSB0ZXN0X2JpdHMu bworb2JqLSQoQ09ORklHX1BSSU5URl9LVU5JVF9URVNUKSArPSBwcmludGZfa3VuaXQubwpkaWZm IC0tZ2l0IGEvbGliL3Rlc3RfcHJpbnRmLmMgYi9saWIvcHJpbnRmX2t1bml0LmMKc2ltaWxhcml0 eSBpbmRleCA0NSUKcmVuYW1lIGZyb20gbGliL3Rlc3RfcHJpbnRmLmMKcmVuYW1lIHRvIGxpYi9w cmludGZfa3VuaXQuYwppbmRleCA3YWM4N2YxOGExMGYuLjY4YWM1ZjliOGQyOCAxMDA2NDQKLS0t IGEvbGliL3Rlc3RfcHJpbnRmLmMKKysrIGIvbGliL3ByaW50Zl9rdW5pdC5jCkBAIC01LDYgKzUs NyBAQAogCiAjZGVmaW5lIHByX2ZtdChmbXQpIEtCVUlMRF9NT0ROQU1FICI6ICIgZm10CiAKKyNp bmNsdWRlIDxrdW5pdC90ZXN0Lmg+CiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgogI2luY2x1ZGUg PGxpbnV4L2tlcm5lbC5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgpAQCAtMzAsNzkgKzMx LDYxIEBACiAjZGVmaW5lIFBBRF9TSVpFIDE2CiAjZGVmaW5lIEZJTExfQ0hBUiAnJCcKIAotc3Rh dGljIHVuc2lnbmVkIHRvdGFsX3Rlc3RzIF9faW5pdGRhdGE7Ci1zdGF0aWMgdW5zaWduZWQgZmFp bGVkX3Rlc3RzIF9faW5pdGRhdGE7Ci1zdGF0aWMgY2hhciAqdGVzdF9idWZmZXIgX19pbml0ZGF0 YTsKLXN0YXRpYyBjaGFyICphbGxvY2VkX2J1ZmZlciBfX2luaXRkYXRhOworc3RhdGljIGNoYXIg KnRlc3RfYnVmZmVyOworc3RhdGljIGNoYXIgKmFsbG9jZWRfYnVmZmVyOwogCi1zdGF0aWMgaW50 IF9fcHJpbnRmKDQsIDApIF9faW5pdAotZG9fdGVzdChpbnQgYnVmc2l6ZSwgY29uc3QgY2hhciAq ZXhwZWN0LCBpbnQgZWxlbiwKK3N0YXRpYyB2b2lkIF9fcHJpbnRmKDUsIDApCitkb190ZXN0KHN0 cnVjdCBrdW5pdCAqa3VuaXR0ZXN0LCBpbnQgYnVmc2l6ZSwgY29uc3QgY2hhciAqZXhwZWN0LCBp bnQgZWxlbiwKIAljb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXApCiB7CiAJdmFfbGlzdCBhcTsK IAlpbnQgcmV0LCB3cml0dGVuOwogCi0JdG90YWxfdGVzdHMrKzsKLQogCW1lbXNldChhbGxvY2Vk X2J1ZmZlciwgRklMTF9DSEFSLCBCVUZfU0laRSArIDIqUEFEX1NJWkUpOwogCXZhX2NvcHkoYXEs IGFwKTsKIAlyZXQgPSB2c25wcmludGYodGVzdF9idWZmZXIsIGJ1ZnNpemUsIGZtdCwgYXEpOwog CXZhX2VuZChhcSk7CiAKLQlpZiAocmV0ICE9IGVsZW4pIHsKLQkJcHJfd2FybigidnNucHJpbnRm KGJ1ZiwgJWQsIFwiJXNcIiwgLi4uKSByZXR1cm5lZCAlZCwgZXhwZWN0ZWQgJWRcbiIsCisJS1VO SVRfRVhQRUNUX0VRX01TRyhrdW5pdHRlc3QsIHJldCwgZWxlbiwKKwkJCSJ2c25wcmludGYoYnVm LCAlZCwgXCIlc1wiLCAuLi4pIHJldHVybmVkICVkLCBleHBlY3RlZCAlZFxuIiwKIAkJCWJ1ZnNp emUsIGZtdCwgcmV0LCBlbGVuKTsKLQkJcmV0dXJuIDE7Ci0JfQogCi0JaWYgKG1lbWNocl9pbnYo YWxsb2NlZF9idWZmZXIsIEZJTExfQ0hBUiwgUEFEX1NJWkUpKSB7Ci0JCXByX3dhcm4oInZzbnBy aW50ZihidWYsICVkLCBcIiVzXCIsIC4uLikgd3JvdGUgYmVmb3JlIGJ1ZmZlclxuIiwgYnVmc2l6 ZSwgZm10KTsKLQkJcmV0dXJuIDE7Ci0JfQorCUtVTklUX0VYUEVDVF9FUV9NU0coa3VuaXR0ZXN0 LCBtZW1jaHJfaW52KGFsbG9jZWRfYnVmZmVyLCBGSUxMX0NIQVIsIFBBRF9TSVpFKSwgTlVMTCwK KwkJCSJ2c25wcmludGYoYnVmLCAlZCwgXCIlc1wiLCAuLi4pIHdyb3RlIGJlZm9yZSBidWZmZXJc biIsCisJCQlidWZzaXplLCBmbXQpOwogCiAJaWYgKCFidWZzaXplKSB7Ci0JCWlmIChtZW1jaHJf aW52KHRlc3RfYnVmZmVyLCBGSUxMX0NIQVIsIEJVRl9TSVpFICsgUEFEX1NJWkUpKSB7Ci0JCQlw cl93YXJuKCJ2c25wcmludGYoYnVmLCAwLCBcIiVzXCIsIC4uLikgd3JvdGUgdG8gYnVmZmVyXG4i LAotCQkJCWZtdCk7Ci0JCQlyZXR1cm4gMTsKLQkJfQotCQlyZXR1cm4gMDsKKwkJS1VOSVRfRVhQ RUNUX0ZBTFNFX01TRyhrdW5pdHRlc3QsCisJCQltZW1jaHJfaW52KHRlc3RfYnVmZmVyLCBGSUxM X0NIQVIsIEJVRl9TSVpFICsgUEFEX1NJWkUpLAorCQkJInZzbnByaW50ZihidWYsIDAsIFwiJXNc IiwgLi4uKSB3cm90ZSB0byBidWZmZXJcbiIsIGZtdCk7CisJCXJldHVybjsKIAl9CiAKIAl3cml0 dGVuID0gbWluKGJ1ZnNpemUtMSwgZWxlbik7Ci0JaWYgKHRlc3RfYnVmZmVyW3dyaXR0ZW5dKSB7 Ci0JCXByX3dhcm4oInZzbnByaW50ZihidWYsICVkLCBcIiVzXCIsIC4uLikgZGlkIG5vdCBudWwt dGVybWluYXRlIGJ1ZmZlclxuIiwKKwlLVU5JVF9FWFBFQ1RfRkFMU0VfTVNHKGt1bml0dGVzdCwg dGVzdF9idWZmZXJbd3JpdHRlbl0sCisJCQkidnNucHJpbnRmKGJ1ZiwgJWQsIFwiJXNcIiwgLi4u KSBkaWQgbm90IG51bC10ZXJtaW5hdGUgYnVmZmVyXG4iLAogCQkJYnVmc2l6ZSwgZm10KTsKLQkJ cmV0dXJuIDE7Ci0JfQogCi0JaWYgKG1lbWNocl9pbnYodGVzdF9idWZmZXIgKyB3cml0dGVuICsg MSwgRklMTF9DSEFSLCBCVUZfU0laRSArIFBBRF9TSVpFIC0gKHdyaXR0ZW4gKyAxKSkpIHsKLQkJ cHJfd2FybigidnNucHJpbnRmKGJ1ZiwgJWQsIFwiJXNcIiwgLi4uKSB3cm90ZSBiZXlvbmQgdGhl IG51bC10ZXJtaW5hdG9yXG4iLAorCUtVTklUX0VYUEVDVF9GQUxTRV9NU0coa3VuaXR0ZXN0LAor CQkJbWVtY2hyX2ludih0ZXN0X2J1ZmZlciArIHdyaXR0ZW4gKyAxLCBGSUxMX0NIQVIsIEJVRl9T SVpFICsgUEFEX1NJWkUgLSAod3JpdHRlbiArIDEpKSwKKwkJCSJ2c25wcmludGYoYnVmLCAlZCwg XCIlc1wiLCAuLi4pIHdyb3RlIGJleW9uZCB0aGUgbnVsLXRlcm1pbmF0b3JcbiIsCiAJCQlidWZz aXplLCBmbXQpOwotCQlyZXR1cm4gMTsKLQl9CiAKLQlpZiAobWVtY21wKHRlc3RfYnVmZmVyLCBl eHBlY3QsIHdyaXR0ZW4pKSB7Ci0JCXByX3dhcm4oInZzbnByaW50ZihidWYsICVkLCBcIiVzXCIs IC4uLikgd3JvdGUgJyVzJywgZXhwZWN0ZWQgJyUuKnMnXG4iLAorCUtVTklUX0VYUEVDVF9FUV9N U0coa3VuaXR0ZXN0LCBtZW1jbXAodGVzdF9idWZmZXIsIGV4cGVjdCwgd3JpdHRlbiksIDAsCisJ CQkidnNucHJpbnRmKGJ1ZiwgJWQsIFwiJXNcIiwgLi4uKSB3cm90ZSAnJXMnLCBleHBlY3RlZCAn JS4qcydcbiIsCiAJCQlidWZzaXplLCBmbXQsIHRlc3RfYnVmZmVyLCB3cml0dGVuLCBleHBlY3Qp OwotCQlyZXR1cm4gMTsKLQl9Ci0JcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIF9fcHJpbnRm KDMsIDQpIF9faW5pdAotX190ZXN0KGNvbnN0IGNoYXIgKmV4cGVjdCwgaW50IGVsZW4sIGNvbnN0 IGNoYXIgKmZtdCwgLi4uKQorc3RhdGljIHZvaWQgX19wcmludGYoNCwgNSkKK19fdGVzdChzdHJ1 Y3Qga3VuaXQgKmt1bml0dGVzdCwgY29uc3QgY2hhciAqZXhwZWN0LCBpbnQgZWxlbiwgY29uc3Qg Y2hhciAqZm10LCAuLi4pCiB7CiAJdmFfbGlzdCBhcDsKIAlpbnQgcmFuZDsKIAljaGFyICpwOwog Ci0JaWYgKGVsZW4gPj0gQlVGX1NJWkUpIHsKLQkJcHJfZXJyKCJlcnJvciBpbiB0ZXN0IHN1aXRl OiBleHBlY3RlZCBvdXRwdXQgbGVuZ3RoICVkIHRvbyBsb25nLiBGb3JtYXQgd2FzICclcycuXG4i LAotCQkgICAgICAgZWxlbiwgZm10KTsKLQkJZmFpbGVkX3Rlc3RzKys7Ci0JCXJldHVybjsKLQl9 CisJS1VOSVRfRVhQRUNUX0xUX01TRyhrdW5pdHRlc3QsIGVsZW4sIEJVRl9TSVpFLAorCQkJImVy cm9yIGluIHRlc3Qgc3VpdGU6IGV4cGVjdGVkIG91dHB1dCBsZW5ndGggJWQgdG9vIGxvbmcuIEZv cm1hdCB3YXMgJyVzJy5cbiIsCisJCQllbGVuLCBmbXQpOwogCiAJdmFfc3RhcnQoYXAsIGZtdCk7 CiAKQEAgLTExMiw0OSArOTUsNDYgQEAgX190ZXN0KGNvbnN0IGNoYXIgKmV4cGVjdCwgaW50IGVs ZW4sIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogCSAqIGVub3VnaCBhbmQgMCksIGFuZCB0aGVuIHdl IGFsc28gdGVzdCB0aGF0IGt2YXNwcmludGYgd291bGQKIAkgKiBiZSBhYmxlIHRvIHByaW50IGl0 IGFzIGV4cGVjdGVkLgogCSAqLwotCWZhaWxlZF90ZXN0cyArPSBkb190ZXN0KEJVRl9TSVpFLCBl eHBlY3QsIGVsZW4sIGZtdCwgYXApOworCWRvX3Rlc3Qoa3VuaXR0ZXN0LCBCVUZfU0laRSwgZXhw ZWN0LCBlbGVuLCBmbXQsIGFwKTsKIAlyYW5kID0gMSArIHByYW5kb21fdTMyX21heChlbGVuKzEp OwogCS8qIFNpbmNlIGVsZW4gPCBCVUZfU0laRSwgd2UgaGF2ZSAxIDw9IHJhbmQgPD0gQlVGX1NJ WkUuICovCi0JZmFpbGVkX3Rlc3RzICs9IGRvX3Rlc3QocmFuZCwgZXhwZWN0LCBlbGVuLCBmbXQs IGFwKTsKLQlmYWlsZWRfdGVzdHMgKz0gZG9fdGVzdCgwLCBleHBlY3QsIGVsZW4sIGZtdCwgYXAp OworCWRvX3Rlc3Qoa3VuaXR0ZXN0LCByYW5kLCBleHBlY3QsIGVsZW4sIGZtdCwgYXApOworCWRv X3Rlc3Qoa3VuaXR0ZXN0LCAwLCBleHBlY3QsIGVsZW4sIGZtdCwgYXApOwogCiAJcCA9IGt2YXNw cmludGYoR0ZQX0tFUk5FTCwgZm10LCBhcCk7CiAJaWYgKHApIHsKLQkJdG90YWxfdGVzdHMrKzsK LQkJaWYgKG1lbWNtcChwLCBleHBlY3QsIGVsZW4rMSkpIHsKLQkJCXByX3dhcm4oImt2YXNwcmlu dGYoLi4uLCBcIiVzXCIsIC4uLikgcmV0dXJuZWQgJyVzJywgZXhwZWN0ZWQgJyVzJ1xuIiwKKwkJ S1VOSVRfRVhQRUNUX0VRX01TRyhrdW5pdHRlc3QsIG1lbWNtcChwLCBleHBlY3QsIGVsZW4rMSks IDAsCisJCQkJImt2YXNwcmludGYoLi4uLCBcIiVzXCIsIC4uLikgcmV0dXJuZWQgJyVzJywgZXhw ZWN0ZWQgJyVzJ1xuIiwKIAkJCQlmbXQsIHAsIGV4cGVjdCk7Ci0JCQlmYWlsZWRfdGVzdHMrKzsK LQkJfQogCQlrZnJlZShwKTsKIAl9CiAJdmFfZW5kKGFwKTsKIH0KIAotI2RlZmluZSB0ZXN0KGV4 cGVjdCwgZm10LCAuLi4pCQkJCQlcCi0JX190ZXN0KGV4cGVjdCwgc3RybGVuKGV4cGVjdCksIGZt dCwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgdGVzdChrdW5pdHRlc3QsIGV4cGVjdCwgZm10LCAu Li4pCQkJCQlcCisJX190ZXN0KGt1bml0dGVzdCwgZXhwZWN0LCBzdHJsZW4oZXhwZWN0KSwgZm10 LCAjI19fVkFfQVJHU19fKQogCi1zdGF0aWMgdm9pZCBfX2luaXQKLXRlc3RfYmFzaWModm9pZCkK K3N0YXRpYyB2b2lkCit0ZXN0X2Jhc2ljKHN0cnVjdCBrdW5pdCAqa3VuaXR0ZXN0KQogewogCS8q IFdvcmsgYXJvdW5kIGFubm95aW5nICJ3YXJuaW5nOiB6ZXJvLWxlbmd0aCBnbnVfcHJpbnRmIGZv cm1hdCBzdHJpbmciLiAqLwogCWNoYXIgbnVsID0gJ1wwJzsKIAotCXRlc3QoIiIsICZudWwpOwot CXRlc3QoIjEwMCUiLCAiMTAwJSUiKTsKLQl0ZXN0KCJ4eHgleXl5IiwgInh4eCVjeXl5IiwgJyUn KTsKLQlfX3Rlc3QoInh4eFwweXl5IiwgNywgInh4eCVjeXl5IiwgJ1wwJyk7CisJdGVzdChrdW5p dHRlc3QsICIiLCAmbnVsKTsKKwl0ZXN0KGt1bml0dGVzdCwgIjEwMCUiLCAiMTAwJSUiKTsKKwl0 ZXN0KGt1bml0dGVzdCwgInh4eCV5eXkiLCAieHh4JWN5eXkiLCAnJScpOworCV9fdGVzdChrdW5p dHRlc3QsICJ4eHhcMHl5eSIsIDcsICJ4eHglY3l5eSIsICdcMCcpOwogfQogCi1zdGF0aWMgdm9p ZCBfX2luaXQKLXRlc3RfbnVtYmVyKHZvaWQpCitzdGF0aWMgdm9pZAordGVzdF9udW1iZXIoc3Ry dWN0IGt1bml0ICprdW5pdHRlc3QpCiB7Ci0JdGVzdCgiMHgxMjM0YWJjZCAgIiwgIiUjLTEyeCIs IDB4MTIzNGFiY2QpOwotCXRlc3QoIiAgMHgxMjM0YWJjZCIsICIlIzEyeCIsIDB4MTIzNGFiY2Qp OwotCXRlc3QoIjB8MDAxfCAxMnwrMTIzfCAxMjM0fC0xMjN8LTEyMzQiLCAiJWR8JTAzZHwlM2R8 JStkfCUgZHwlK2R8JSBkIiwgMCwgMSwgMTIsIDEyMywgMTIzNCwgLTEyMywgLTEyMzQpOwotCXRl c3QoIjB8MXwxfDEyOHwyNTUiLCAiJWhodXwlaGh1fCVoaHV8JWhodXwlaGh1IiwgMCwgMSwgMjU3 LCAxMjgsIC0xKTsKLQl0ZXN0KCIwfDF8MXwtMTI4fC0xIiwgIiVoaGR8JWhoZHwlaGhkfCVoaGR8 JWhoZCIsIDAsIDEsIDI1NywgMTI4LCAtMSk7Ci0JdGVzdCgiMjAxNTEyMjQyMDE1MTIyNSIsICIl aG8laG8lI2hvIiwgMTAzNywgNTI4MiwgLTExNjI3KTsKKwl0ZXN0KGt1bml0dGVzdCwgIjB4MTIz NGFiY2QgICIsICIlIy0xMngiLCAweDEyMzRhYmNkKTsKKwl0ZXN0KGt1bml0dGVzdCwgIiAgMHgx MjM0YWJjZCIsICIlIzEyeCIsIDB4MTIzNGFiY2QpOworCXRlc3Qoa3VuaXR0ZXN0LCAiMHwwMDF8 IDEyfCsxMjN8IDEyMzR8LTEyM3wtMTIzNCIsICIlZHwlMDNkfCUzZHwlK2R8JSBkfCUrZHwlIGQi LCAwLCAxLCAxMiwgMTIzLCAxMjM0LCAtMTIzLCAtMTIzNCk7CisJdGVzdChrdW5pdHRlc3QsICIw fDF8MXwxMjh8MjU1IiwgIiVoaHV8JWhodXwlaGh1fCVoaHV8JWhodSIsIDAsIDEsIDI1NywgMTI4 LCAtMSk7CisJdGVzdChrdW5pdHRlc3QsICIwfDF8MXwtMTI4fC0xIiwgIiVoaGR8JWhoZHwlaGhk fCVoaGR8JWhoZCIsIDAsIDEsIDI1NywgMTI4LCAtMSk7CisJdGVzdChrdW5pdHRlc3QsICIyMDE1 MTIyNDIwMTUxMjI1IiwgIiVobyVobyUjaG8iLCAxMDM3LCA1MjgyLCAtMTE2MjcpOwogCS8qCiAJ ICogUE9TSVgvQzk5OiDCu1RoZSByZXN1bHQgb2YgY29udmVydGluZyB6ZXJvIHdpdGggYW4gZXhw bGljaXQKIAkgKiBwcmVjaXNpb24gb2YgemVybyBzaGFsbCBiZSBubyBjaGFyYWN0ZXJzLsKrIEhl bmNlIHRoZSBvdXRwdXQKQEAgLTE2Myw3ICsxNDMsNyBAQCB0ZXN0X251bWJlcih2b2lkKQogCSAq IGNhc2UuIFRoaXMgdGVzdCBjYXNlIHNpbXBseSBkb2N1bWVudHMgdGhlIGN1cnJlbnQKIAkgKiBi ZWhhdmlvdXIuCiAJICovCi0JdGVzdCgiMDB8MHwwfDB8MCIsICIlLjJkfCUuMWR8JS4wZHwlLipk fCUxLjBkIiwgMCwgMCwgMCwgMCwgMCwgMCk7CisJdGVzdChrdW5pdHRlc3QsICIwMHwwfDB8MHww IiwgIiUuMmR8JS4xZHwlLjBkfCUuKmR8JTEuMGQiLCAwLCAwLCAwLCAwLCAwLCAwKTsKICNpZm5k ZWYgX19DSEFSX1VOU0lHTkVEX18KIAl7CiAJCS8qCkBAIC0xNzMsMTkgKzE1MywxOSBAQCB0ZXN0 X251bWJlcih2b2lkKQogCQkgKiB3aXRoIDB4ZmYgb3IgY2FzdCB0byB1OC4KIAkJICovCiAJCWNo YXIgdmFsID0gLTE2OwotCQl0ZXN0KCIweGZmZmZmZmYwfDB4ZjB8MHhmMCIsICIlIzAyeHwlIzAy eHwlIzAyeCIsIHZhbCwgdmFsICYgMHhmZiwgKHU4KXZhbCk7CisJCXRlc3Qoa3VuaXR0ZXN0LCAi MHhmZmZmZmZmMHwweGYwfDB4ZjAiLCAiJSMwMnh8JSMwMnh8JSMwMngiLCB2YWwsIHZhbCAmIDB4 ZmYsICh1OCl2YWwpOwogCX0KICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCBfX2luaXQKLXRlc3Rf c3RyaW5nKHZvaWQpCitzdGF0aWMgdm9pZAordGVzdF9zdHJpbmcoc3RydWN0IGt1bml0ICprdW5p dHRlc3QpCiB7Ci0JdGVzdCgiIiwgIiVzJS4wcyIsICIiLCAiMTIzIik7Ci0JdGVzdCgiQUJDRHxh YmN8MTIzIiwgIiVzfCUuM3N8JS4qcyIsICJBQkNEIiwgImFiY2RlZiIsIDMsICIxMjM0NTYiKTsK LQl0ZXN0KCIxICB8ICAyfDMgIHwgIDR8NSAgIiwgIiUtM3N8JTNzfCUtKnN8JSpzfCUqcyIsICIx IiwgIjIiLCAzLCAiMyIsIDMsICI0IiwgLTMsICI1Iik7Ci0JdGVzdCgiMTIzNCAgICAgICIsICIl LTEwLjRzIiwgIjEyMzQ1NiIpOwotCXRlc3QoIiAgICAgIDEyMzQiLCAiJTEwLjRzIiwgIjEyMzQ1 NiIpOworCXRlc3Qoa3VuaXR0ZXN0LCAiIiwgIiVzJS4wcyIsICIiLCAiMTIzIik7CisJdGVzdChr dW5pdHRlc3QsICJBQkNEfGFiY3wxMjMiLCAiJXN8JS4zc3wlLipzIiwgIkFCQ0QiLCAiYWJjZGVm IiwgMywgIjEyMzQ1NiIpOworCXRlc3Qoa3VuaXR0ZXN0LCAiMSAgfCAgMnwzICB8ICA0fDUgICIs ICIlLTNzfCUzc3wlLSpzfCUqc3wlKnMiLCAiMSIsICIyIiwgMywgIjMiLCAzLCAiNCIsIC0zLCAi NSIpOworCXRlc3Qoa3VuaXR0ZXN0LCAiMTIzNCAgICAgICIsICIlLTEwLjRzIiwgIjEyMzQ1NiIp OworCXRlc3Qoa3VuaXR0ZXN0LCAiICAgICAgMTIzNCIsICIlMTAuNHMiLCAiMTIzNDU2Iik7CiAJ LyoKIAkgKiBQT1NJWCBhbmQgQzk5IHNheSB0aGF0IGEgbmVnYXRpdmUgcHJlY2lzaW9uICh3aGlj aCBpcyBvbmx5CiAJICogcG9zc2libGUgdG8gcGFzcyB2aWEgYSAqIGFyZ3VtZW50KSBzaG91bGQg YmUgdHJlYXRlZCBhcyBpZgpAQCAtMTk5LDEwICsxNzksMTAgQEAgdGVzdF9zdHJpbmcodm9pZCkK IAkgKiBhbnlvbmUgZXZlciBmZWVsIHRoZSBuZWVkIHRvIGZvbGxvdyB0aGUgc3RhbmRhcmRzIG1v cmUKIAkgKiBjbG9zZWx5LCB0aGlzIGNhbiBiZSByZXZpc2l0ZWQuCiAJICovCi0JdGVzdCgiICAg ICIsICIlNC4qcyIsIC01LCAiMTIzNDU2Iik7Ci0JdGVzdCgiMTIzNDU2IiwgIiUucyIsICIxMjM0 NTYiKTsKLQl0ZXN0KCJhfHwiLCAiJS5zfCUuMHN8JS4qcyIsICJhIiwgImIiLCAwLCAiYyIpOwot CXRlc3QoImEgIHwgICB8ICAgIiwgIiUtMy5zfCUtMy4wc3wlLTMuKnMiLCAiYSIsICJiIiwgMCwg ImMiKTsKKwl0ZXN0KGt1bml0dGVzdCwgIiAgICAiLCAiJTQuKnMiLCAtNSwgIjEyMzQ1NiIpOwor CXRlc3Qoa3VuaXR0ZXN0LCAiMTIzNDU2IiwgIiUucyIsICIxMjM0NTYiKTsKKwl0ZXN0KGt1bml0 dGVzdCwgImF8fCIsICIlLnN8JS4wc3wlLipzIiwgImEiLCAiYiIsIDAsICJjIik7CisJdGVzdChr dW5pdHRlc3QsICJhICB8ICAgfCAgICIsICIlLTMuc3wlLTMuMHN8JS0zLipzIiwgImEiLCAiYiIs IDAsICJjIik7CiB9CiAKICNkZWZpbmUgUExBSU5fQlVGX1NJWkUgNjQJLyogbGVhdmUgc29tZSBz cGFjZSBzbyB3ZSBkb24ndCBvb3BzICovCkBAIC0yMTYsNyArMTk2LDcgQEAgdGVzdF9zdHJpbmco dm9pZCkKICNkZWZpbmUgWkVST1MgIjAwMDAwMDAwIgkvKiBoZXggMzIgemVybyBiaXRzICovCiAj ZGVmaW5lIE9ORVMgImZmZmZmZmZmIgkJLyogaGV4IDMyIG9uZSBiaXRzICovCiAKLXN0YXRpYyBp bnQgX19pbml0CitzdGF0aWMgaW50CiBwbGFpbl9mb3JtYXQodm9pZCkKIHsKIAljaGFyIGJ1ZltQ TEFJTl9CVUZfU0laRV07CkBAIC0yNDgsNyArMjI4LDcgQEAgcGxhaW5fZm9ybWF0KHZvaWQpCiAj ZGVmaW5lIFpFUk9TICIiCiAjZGVmaW5lIE9ORVMgIiIKIAotc3RhdGljIGludCBfX2luaXQKK3N0 YXRpYyBpbnQKIHBsYWluX2Zvcm1hdCh2b2lkKQogewogCS8qIEZvcm1hdCBpcyBpbXBsaWNpdGx5 IHRlc3RlZCBmb3IgMzIgYml0IG1hY2hpbmVzIGJ5IHBsYWluX2hhc2goKSAqLwpAQCAtMjU3LDcg KzIzNyw3IEBAIHBsYWluX2Zvcm1hdCh2b2lkKQogCiAjZW5kaWYJLyogQklUU19QRVJfTE9ORyA9 PSA2NCAqLwogCi1zdGF0aWMgaW50IF9faW5pdAorc3RhdGljIGludAogcGxhaW5faGFzaF90b19i dWZmZXIoY29uc3Qgdm9pZCAqcCwgY2hhciAqYnVmLCBzaXplX3QgbGVuKQogewogCWludCBuY2hh cnM7CkBAIC0yNzYsNyArMjU2LDcgQEAgcGxhaW5faGFzaF90b19idWZmZXIoY29uc3Qgdm9pZCAq cCwgY2hhciAqYnVmLCBzaXplX3QgbGVuKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IF9f aW5pdAorc3RhdGljIGludAogcGxhaW5faGFzaCh2b2lkKQogewogCWNoYXIgYnVmW1BMQUlOX0JV Rl9TSVpFXTsKQEAgLTI5NiwyNyArMjc2LDIwIEBAIHBsYWluX2hhc2godm9pZCkKICAqIFdlIGNh bid0IHVzZSB0ZXN0KCkgdG8gdGVzdCAlcCBiZWNhdXNlIHdlIGRvbid0IGtub3cgd2hhdCBvdXRw dXQgdG8gZXhwZWN0CiAgKiBhZnRlciBhbiBhZGRyZXNzIGlzIGhhc2hlZC4KICAqLwotc3RhdGlj IHZvaWQgX19pbml0Ci1wbGFpbih2b2lkKQorc3RhdGljIHZvaWQKK3BsYWluKHN0cnVjdCBrdW5p dCAqa3VuaXR0ZXN0KQogewogCWludCBlcnI7CiAKIAllcnIgPSBwbGFpbl9oYXNoKCk7Ci0JaWYg KGVycikgewotCQlwcl93YXJuKCJwbGFpbiAncCcgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGhhc2hl ZFxuIik7Ci0JCWZhaWxlZF90ZXN0cysrOwotCQlyZXR1cm47Ci0JfQorCUtVTklUX0VYUEVDVF9F UV9NU0coa3VuaXR0ZXN0LCBlcnIsIDAsICJwbGFpbiAncCcgZG9lcyBub3QgYXBwZWFyIHRvIGJl IGhhc2hlZFxuIik7CiAKIAllcnIgPSBwbGFpbl9mb3JtYXQoKTsKLQlpZiAoZXJyKSB7Ci0JCXBy X3dhcm4oImhhc2hpbmcgcGxhaW4gJ3AnIGhhcyB1bmV4cGVjdGVkIGZvcm1hdFxuIik7Ci0JCWZh aWxlZF90ZXN0cysrOwotCX0KKwlLVU5JVF9FWFBFQ1RfRVFfTVNHKGt1bml0dGVzdCwgZXJyLCAw LCAiaGFzaGluZyBwbGFpbiAncCcgaGFzIHVuZXhwZWN0ZWQgZm9ybWF0XG4iKTsKIH0KIAotc3Rh dGljIHZvaWQgX19pbml0Ci10ZXN0X2hhc2hlZChjb25zdCBjaGFyICpmbXQsIGNvbnN0IHZvaWQg KnApCitzdGF0aWMgdm9pZAordGVzdF9oYXNoZWQoc3RydWN0IGt1bml0ICprdW5pdHRlc3QsIGNv bnN0IGNoYXIgKmZtdCwgY29uc3Qgdm9pZCAqcCkKIHsKIAljaGFyIGJ1ZltQTEFJTl9CVUZfU0la RV07CiAJaW50IHJldDsKQEAgLTMyOSw5MiArMzAyLDkyIEBAIHRlc3RfaGFzaGVkKGNvbnN0IGNo YXIgKmZtdCwgY29uc3Qgdm9pZCAqcCkKIAlpZiAocmV0KQogCQlyZXR1cm47CiAKLQl0ZXN0KGJ1 ZiwgZm10LCBwKTsKKwl0ZXN0KGt1bml0dGVzdCwgYnVmLCBmbXQsIHApOwogfQogCiAvKgogICog TlVMTCBwb2ludGVycyBhcmVuJ3QgaGFzaGVkLgogICovCi1zdGF0aWMgdm9pZCBfX2luaXQKLW51 bGxfcG9pbnRlcih2b2lkKQorc3RhdGljIHZvaWQKK251bGxfcG9pbnRlcihzdHJ1Y3Qga3VuaXQg Kmt1bml0dGVzdCkKIHsKLQl0ZXN0KFpFUk9TICIwMDAwMDAwMCIsICIlcCIsIE5VTEwpOwotCXRl c3QoWkVST1MgIjAwMDAwMDAwIiwgIiVweCIsIE5VTEwpOwotCXRlc3QoIihudWxsKSIsICIlcEUi LCBOVUxMKTsKKwl0ZXN0KGt1bml0dGVzdCwgWkVST1MgIjAwMDAwMDAwIiwgIiVwIiwgTlVMTCk7 CisJdGVzdChrdW5pdHRlc3QsIFpFUk9TICIwMDAwMDAwMCIsICIlcHgiLCBOVUxMKTsKKwl0ZXN0 KGt1bml0dGVzdCwgIihudWxsKSIsICIlcEUiLCBOVUxMKTsKIH0KIAogLyoKICAqIEVycm9yIHBv aW50ZXJzIGFyZW4ndCBoYXNoZWQuCiAgKi8KLXN0YXRpYyB2b2lkIF9faW5pdAotZXJyb3JfcG9p bnRlcih2b2lkKQorc3RhdGljIHZvaWQKK2Vycm9yX3BvaW50ZXIoc3RydWN0IGt1bml0ICprdW5p dHRlc3QpCiB7Ci0JdGVzdChPTkVTICJmZmZmZmZmNSIsICIlcCIsIEVSUl9QVFIoLTExKSk7Ci0J dGVzdChPTkVTICJmZmZmZmZmNSIsICIlcHgiLCBFUlJfUFRSKC0xMSkpOwotCXRlc3QoIihlZmF1 bHQpIiwgIiVwRSIsIEVSUl9QVFIoLTExKSk7CisJdGVzdChrdW5pdHRlc3QsIE9ORVMgImZmZmZm ZmY1IiwgIiVwIiwgRVJSX1BUUigtMTEpKTsKKwl0ZXN0KGt1bml0dGVzdCwgT05FUyAiZmZmZmZm ZjUiLCAiJXB4IiwgRVJSX1BUUigtMTEpKTsKKwl0ZXN0KGt1bml0dGVzdCwgIihlZmF1bHQpIiwg IiVwRSIsIEVSUl9QVFIoLTExKSk7CiB9CiAKICNkZWZpbmUgUFRSX0lOVkFMSUQgKCh2b2lkICop MHgwMDAwMDBhYikKIAotc3RhdGljIHZvaWQgX19pbml0Ci1pbnZhbGlkX3BvaW50ZXIodm9pZCkK K3N0YXRpYyB2b2lkCitpbnZhbGlkX3BvaW50ZXIoc3RydWN0IGt1bml0ICprdW5pdHRlc3QpCiB7 Ci0JdGVzdF9oYXNoZWQoIiVwIiwgUFRSX0lOVkFMSUQpOwotCXRlc3QoWkVST1MgIjAwMDAwMGFi IiwgIiVweCIsIFBUUl9JTlZBTElEKTsKLQl0ZXN0KCIoZWZhdWx0KSIsICIlcEUiLCBQVFJfSU5W QUxJRCk7CisJdGVzdF9oYXNoZWQoa3VuaXR0ZXN0LCAiJXAiLCBQVFJfSU5WQUxJRCk7CisJdGVz dChrdW5pdHRlc3QsIFpFUk9TICIwMDAwMDBhYiIsICIlcHgiLCBQVFJfSU5WQUxJRCk7CisJdGVz dChrdW5pdHRlc3QsICIoZWZhdWx0KSIsICIlcEUiLCBQVFJfSU5WQUxJRCk7CiB9CiAKLXN0YXRp YyB2b2lkIF9faW5pdAotc3ltYm9sX3B0cih2b2lkKQorc3RhdGljIHZvaWQKK3N5bWJvbF9wdHIo c3RydWN0IGt1bml0ICprdW5pdHRlc3QpCiB7CiB9CiAKLXN0YXRpYyB2b2lkIF9faW5pdAota2Vy bmVsX3B0cih2b2lkKQorc3RhdGljIHZvaWQKK2tlcm5lbF9wdHIoc3RydWN0IGt1bml0ICprdW5p dHRlc3QpCiB7CiAJLyogV2UgY2FuJ3QgdGVzdCB0aGlzIHdpdGhvdXQgYWNjZXNzIHRvIGtwdHJf cmVzdHJpY3QuICovCiB9CiAKLXN0YXRpYyB2b2lkIF9faW5pdAotc3RydWN0X3Jlc291cmNlKHZv aWQpCitzdGF0aWMgdm9pZAorc3RydWN0X3Jlc291cmNlKHN0cnVjdCBrdW5pdCAqa3VuaXR0ZXN0 KQogewogfQogCi1zdGF0aWMgdm9pZCBfX2luaXQKLWFkZHIodm9pZCkKK3N0YXRpYyB2b2lkCith ZGRyKHN0cnVjdCBrdW5pdCAqa3VuaXR0ZXN0KQogewogfQogCi1zdGF0aWMgdm9pZCBfX2luaXQK LWVzY2FwZWRfc3RyKHZvaWQpCitzdGF0aWMgdm9pZAorZXNjYXBlZF9zdHIoc3RydWN0IGt1bml0 ICprdW5pdHRlc3QpCiB7CiB9CiAKLXN0YXRpYyB2b2lkIF9faW5pdAotaGV4X3N0cmluZyh2b2lk KQorc3RhdGljIHZvaWQKK2hleF9zdHJpbmcoc3RydWN0IGt1bml0ICprdW5pdHRlc3QpCiB7CiAJ Y29uc3QgY2hhciBidWZbM10gPSB7MHhjMCwgMHhmZiwgMHhlZX07CiAKLQl0ZXN0KCJjMCBmZiBl ZXxjMDpmZjplZXxjMC1mZi1lZXxjMGZmZWUiLAorCXRlc3Qoa3VuaXR0ZXN0LCAiYzAgZmYgZWV8 YzA6ZmY6ZWV8YzAtZmYtZWV8YzBmZmVlIiwKIAkgICAgICIlM3BofCUzcGhDfCUzcGhEfCUzcGhO IiwgYnVmLCBidWYsIGJ1ZiwgYnVmKTsKLQl0ZXN0KCJjMCBmZiBlZXxjMDpmZjplZXxjMC1mZi1l ZXxjMGZmZWUiLAorCXRlc3Qoa3VuaXR0ZXN0LCAiYzAgZmYgZWV8YzA6ZmY6ZWV8YzAtZmYtZWV8 YzBmZmVlIiwKIAkgICAgICIlKnBofCUqcGhDfCUqcGhEfCUqcGhOIiwgMywgYnVmLCAzLCBidWYs IDMsIGJ1ZiwgMywgYnVmKTsKIH0KIAotc3RhdGljIHZvaWQgX19pbml0Ci1tYWModm9pZCkKK3N0 YXRpYyB2b2lkCittYWMoc3RydWN0IGt1bml0ICprdW5pdHRlc3QpCiB7CiAJY29uc3QgdTggYWRk cls2XSA9IHsweDJkLCAweDQ4LCAweGQ2LCAweGZjLCAweDdhLCAweDA1fTsKIAotCXRlc3QoIjJk OjQ4OmQ2OmZjOjdhOjA1IiwgIiVwTSIsIGFkZHIpOwotCXRlc3QoIjA1OjdhOmZjOmQ2OjQ4OjJk IiwgIiVwTVIiLCBhZGRyKTsKLQl0ZXN0KCIyZC00OC1kNi1mYy03YS0wNSIsICIlcE1GIiwgYWRk cik7Ci0JdGVzdCgiMmQ0OGQ2ZmM3YTA1IiwgIiVwbSIsIGFkZHIpOwotCXRlc3QoIjA1N2FmY2Q2 NDgyZCIsICIlcG1SIiwgYWRkcik7CisJdGVzdChrdW5pdHRlc3QsICIyZDo0ODpkNjpmYzo3YTow NSIsICIlcE0iLCBhZGRyKTsKKwl0ZXN0KGt1bml0dGVzdCwgIjA1OjdhOmZjOmQ2OjQ4OjJkIiwg IiVwTVIiLCBhZGRyKTsKKwl0ZXN0KGt1bml0dGVzdCwgIjJkLTQ4LWQ2LWZjLTdhLTA1IiwgIiVw TUYiLCBhZGRyKTsKKwl0ZXN0KGt1bml0dGVzdCwgIjJkNDhkNmZjN2EwNSIsICIlcG0iLCBhZGRy KTsKKwl0ZXN0KGt1bml0dGVzdCwgIjA1N2FmY2Q2NDgyZCIsICIlcG1SIiwgYWRkcik7CiB9CiAK LXN0YXRpYyB2b2lkIF9faW5pdAotaXA0KHZvaWQpCitzdGF0aWMgdm9pZAoraXA0KHN0cnVjdCBr dW5pdCAqa3VuaXR0ZXN0KQogewogCXN0cnVjdCBzb2NrYWRkcl9pbiBzYTsKIApAQCAtNDIyLDM0 ICszOTUsMzQgQEAgaXA0KHZvaWQpCiAJc2Euc2luX3BvcnQgPSBjcHVfdG9fYmUxNigxMjM0NSk7 CiAJc2Euc2luX2FkZHIuc19hZGRyID0gY3B1X3RvX2JlMzIoMHg3ZjAwMDAwMSk7CiAKLQl0ZXN0 KCIxMjcuMDAwLjAwMC4wMDF8MTI3LjAuMC4xIiwgIiVwaTR8JXBJNCIsICZzYS5zaW5fYWRkciwg JnNhLnNpbl9hZGRyKTsKLQl0ZXN0KCIxMjcuMDAwLjAwMC4wMDF8MTI3LjAuMC4xIiwgIiVwaVN8 JXBJUyIsICZzYSwgJnNhKTsKKwl0ZXN0KGt1bml0dGVzdCwgIjEyNy4wMDAuMDAwLjAwMXwxMjcu MC4wLjEiLCAiJXBpNHwlcEk0IiwgJnNhLnNpbl9hZGRyLCAmc2Euc2luX2FkZHIpOworCXRlc3Qo a3VuaXR0ZXN0LCAiMTI3LjAwMC4wMDAuMDAxfDEyNy4wLjAuMSIsICIlcGlTfCVwSVMiLCAmc2Es ICZzYSk7CiAJc2Euc2luX2FkZHIuc19hZGRyID0gY3B1X3RvX2JlMzIoMHgwMTAyMDMwNCk7Ci0J dGVzdCgiMDAxLjAwMi4wMDMuMDA0OjEyMzQ1fDEuMi4zLjQ6MTIzNDUiLCAiJXBpU3B8JXBJU3Ai LCAmc2EsICZzYSk7CisJdGVzdChrdW5pdHRlc3QsICIwMDEuMDAyLjAwMy4wMDQ6MTIzNDV8MS4y LjMuNDoxMjM0NSIsICIlcGlTcHwlcElTcCIsICZzYSwgJnNhKTsKIH0KIAotc3RhdGljIHZvaWQg X19pbml0Ci1pcDYodm9pZCkKK3N0YXRpYyB2b2lkCitpcDYoc3RydWN0IGt1bml0ICprdW5pdHRl c3QpCiB7CiB9CiAKLXN0YXRpYyB2b2lkIF9faW5pdAotaXAodm9pZCkKK3N0YXRpYyB2b2lkCitp cChzdHJ1Y3Qga3VuaXQgKmt1bml0dGVzdCkKIHsKLQlpcDQoKTsKLQlpcDYoKTsKKwlpcDQoa3Vu aXR0ZXN0KTsKKwlpcDYoa3VuaXR0ZXN0KTsKIH0KIAotc3RhdGljIHZvaWQgX19pbml0Ci11dWlk KHZvaWQpCitzdGF0aWMgdm9pZAordXVpZChzdHJ1Y3Qga3VuaXQgKmt1bml0dGVzdCkKIHsKIAlj b25zdCBjaGFyIHV1aWRbMTZdID0gezB4MCwgMHgxLCAweDIsIDB4MywgMHg0LCAweDUsIDB4Niwg MHg3LAogCQkJICAgICAgIDB4OCwgMHg5LCAweGEsIDB4YiwgMHhjLCAweGQsIDB4ZSwgMHhmfTsK IAotCXRlc3QoIjAwMDEwMjAzLTA0MDUtMDYwNy0wODA5LTBhMGIwYzBkMGUwZiIsICIlcFViIiwg dXVpZCk7Ci0JdGVzdCgiMDAwMTAyMDMtMDQwNS0wNjA3LTA4MDktMEEwQjBDMEQwRTBGIiwgIiVw VUIiLCB1dWlkKTsKLQl0ZXN0KCIwMzAyMDEwMC0wNTA0LTA3MDYtMDgwOS0wYTBiMGMwZDBlMGYi LCAiJXBVbCIsIHV1aWQpOwotCXRlc3QoIjAzMDIwMTAwLTA1MDQtMDcwNi0wODA5LTBBMEIwQzBE MEUwRiIsICIlcFVMIiwgdXVpZCk7CisJdGVzdChrdW5pdHRlc3QsICIwMDAxMDIwMy0wNDA1LTA2 MDctMDgwOS0wYTBiMGMwZDBlMGYiLCAiJXBVYiIsIHV1aWQpOworCXRlc3Qoa3VuaXR0ZXN0LCAi MDAwMTAyMDMtMDQwNS0wNjA3LTA4MDktMEEwQjBDMEQwRTBGIiwgIiVwVUIiLCB1dWlkKTsKKwl0 ZXN0KGt1bml0dGVzdCwgIjAzMDIwMTAwLTA1MDQtMDcwNi0wODA5LTBhMGIwYzBkMGUwZiIsICIl cFVsIiwgdXVpZCk7CisJdGVzdChrdW5pdHRlc3QsICIwMzAyMDEwMC0wNTA0LTA3MDYtMDgwOS0w QTBCMEMwRDBFMEYiLCAiJXBVTCIsIHV1aWQpOwogfQogCiBzdGF0aWMgc3RydWN0IGRlbnRyeSB0 ZXN0X2RlbnRyeVs0XSBfX2luaXRkYXRhID0gewpAQCAtNDY3LDM0ICs0NDAsMzQgQEAgc3RhdGlj IHN0cnVjdCBkZW50cnkgdGVzdF9kZW50cnlbNF0gX19pbml0ZGF0YSA9IHsKIAkgIC5kX2luYW1l ID0gInJvbWVvIiB9LAogfTsKIAotc3RhdGljIHZvaWQgX19pbml0Ci1kZW50cnkodm9pZCkKK3N0 YXRpYyB2b2lkCitkZW50cnkoc3RydWN0IGt1bml0ICprdW5pdHRlc3QpCiB7Ci0JdGVzdCgiZm9v IiwgIiVwZCIsICZ0ZXN0X2RlbnRyeVswXSk7Ci0JdGVzdCgiZm9vIiwgIiVwZDIiLCAmdGVzdF9k ZW50cnlbMF0pOworCXRlc3Qoa3VuaXR0ZXN0LCAiZm9vIiwgIiVwZCIsICZ0ZXN0X2RlbnRyeVsw XSk7CisJdGVzdChrdW5pdHRlc3QsICJmb28iLCAiJXBkMiIsICZ0ZXN0X2RlbnRyeVswXSk7CiAK LQl0ZXN0KCIobnVsbCkiLCAiJXBkIiwgTlVMTCk7Ci0JdGVzdCgiKGVmYXVsdCkiLCAiJXBkIiwg UFRSX0lOVkFMSUQpOwotCXRlc3QoIihudWxsKSIsICIlcEQiLCBOVUxMKTsKLQl0ZXN0KCIoZWZh dWx0KSIsICIlcEQiLCBQVFJfSU5WQUxJRCk7CisJdGVzdChrdW5pdHRlc3QsICIobnVsbCkiLCAi JXBkIiwgTlVMTCk7CisJdGVzdChrdW5pdHRlc3QsICIoZWZhdWx0KSIsICIlcGQiLCBQVFJfSU5W QUxJRCk7CisJdGVzdChrdW5pdHRlc3QsICIobnVsbCkiLCAiJXBEIiwgTlVMTCk7CisJdGVzdChr dW5pdHRlc3QsICIoZWZhdWx0KSIsICIlcEQiLCBQVFJfSU5WQUxJRCk7CiAKLQl0ZXN0KCJyb21l byIsICIlcGQiLCAmdGVzdF9kZW50cnlbM10pOwotCXRlc3QoImFsZmEvcm9tZW8iLCAiJXBkMiIs ICZ0ZXN0X2RlbnRyeVszXSk7Ci0JdGVzdCgiYnJhdm8vYWxmYS9yb21lbyIsICIlcGQzIiwgJnRl c3RfZGVudHJ5WzNdKTsKLQl0ZXN0KCIvYnJhdm8vYWxmYS9yb21lbyIsICIlcGQ0IiwgJnRlc3Rf ZGVudHJ5WzNdKTsKLQl0ZXN0KCIvYnJhdm8vYWxmYSIsICIlcGQ0IiwgJnRlc3RfZGVudHJ5WzJd KTsKKwl0ZXN0KGt1bml0dGVzdCwgInJvbWVvIiwgIiVwZCIsICZ0ZXN0X2RlbnRyeVszXSk7CisJ dGVzdChrdW5pdHRlc3QsICJhbGZhL3JvbWVvIiwgIiVwZDIiLCAmdGVzdF9kZW50cnlbM10pOwor CXRlc3Qoa3VuaXR0ZXN0LCAiYnJhdm8vYWxmYS9yb21lbyIsICIlcGQzIiwgJnRlc3RfZGVudHJ5 WzNdKTsKKwl0ZXN0KGt1bml0dGVzdCwgIi9icmF2by9hbGZhL3JvbWVvIiwgIiVwZDQiLCAmdGVz dF9kZW50cnlbM10pOworCXRlc3Qoa3VuaXR0ZXN0LCAiL2JyYXZvL2FsZmEiLCAiJXBkNCIsICZ0 ZXN0X2RlbnRyeVsyXSk7CiAKLQl0ZXN0KCJicmF2by9hbGZhICB8YnJhdm8vYWxmYSAgIiwgIiUt MTJwZDJ8JSpwZDIiLCAmdGVzdF9kZW50cnlbMl0sIC0xMiwgJnRlc3RfZGVudHJ5WzJdKTsKLQl0 ZXN0KCIgIGJyYXZvL2FsZmF8ICBicmF2by9hbGZhIiwgIiUxMnBkMnwlKnBkMiIsICZ0ZXN0X2Rl bnRyeVsyXSwgMTIsICZ0ZXN0X2RlbnRyeVsyXSk7CisJdGVzdChrdW5pdHRlc3QsICJicmF2by9h bGZhICB8YnJhdm8vYWxmYSAgIiwgIiUtMTJwZDJ8JSpwZDIiLCAmdGVzdF9kZW50cnlbMl0sIC0x MiwgJnRlc3RfZGVudHJ5WzJdKTsKKwl0ZXN0KGt1bml0dGVzdCwgIiAgYnJhdm8vYWxmYXwgIGJy YXZvL2FsZmEiLCAiJTEycGQyfCUqcGQyIiwgJnRlc3RfZGVudHJ5WzJdLCAxMiwgJnRlc3RfZGVu dHJ5WzJdKTsKIH0KIAotc3RhdGljIHZvaWQgX19pbml0Ci1zdHJ1Y3RfdmFfZm9ybWF0KHZvaWQp CitzdGF0aWMgdm9pZAorc3RydWN0X3ZhX2Zvcm1hdChzdHJ1Y3Qga3VuaXQgKmt1bml0dGVzdCkK IHsKIH0KIAotc3RhdGljIHZvaWQgX19pbml0Ci10aW1lX2FuZF9kYXRlKHZvaWQpCitzdGF0aWMg dm9pZAordGltZV9hbmRfZGF0ZShzdHJ1Y3Qga3VuaXQgKmt1bml0dGVzdCkKIHsKIAkvKiAxNTQz MjEwNTQzICovCiAJY29uc3Qgc3RydWN0IHJ0Y190aW1lIHRtID0gewpAQCAtNTA4LDI3ICs0ODEs MjcgQEAgdGltZV9hbmRfZGF0ZSh2b2lkKQogCS8qIDIwMTktMDEtMDRUMTU6MzI6MjMgKi8KIAl0 aW1lNjRfdCB0ID0gMTU0NjYxNTk0MzsKIAotCXRlc3QoIiglcHQ/KSIsICIlcHQiLCAmdG0pOwot CXRlc3QoIjIwMTgtMTEtMjZUMDU6MzU6NDMiLCAiJXB0UiIsICZ0bSk7Ci0JdGVzdCgiMDExOC0x MC0yNlQwNTozNTo0MyIsICIlcHRSciIsICZ0bSk7Ci0JdGVzdCgiMDU6MzU6NDN8MjAxOC0xMS0y NiIsICIlcHRSdHwlcHRSZCIsICZ0bSwgJnRtKTsKLQl0ZXN0KCIwNTozNTo0M3wwMTE4LTEwLTI2 IiwgIiVwdFJ0cnwlcHRSZHIiLCAmdG0sICZ0bSk7Ci0JdGVzdCgiMDU6MzU6NDN8MjAxOC0xMS0y NiIsICIlcHRSdHRyfCVwdFJkdHIiLCAmdG0sICZ0bSk7Ci0JdGVzdCgiMDU6MzU6NDMgdHJ8MjAx OC0xMS0yNiB0ciIsICIlcHRSdCB0cnwlcHRSZCB0ciIsICZ0bSwgJnRtKTsKKwl0ZXN0KGt1bml0 dGVzdCwgIiglcHQ/KSIsICIlcHQiLCAmdG0pOworCXRlc3Qoa3VuaXR0ZXN0LCAiMjAxOC0xMS0y NlQwNTozNTo0MyIsICIlcHRSIiwgJnRtKTsKKwl0ZXN0KGt1bml0dGVzdCwgIjAxMTgtMTAtMjZU MDU6MzU6NDMiLCAiJXB0UnIiLCAmdG0pOworCXRlc3Qoa3VuaXR0ZXN0LCAiMDU6MzU6NDN8MjAx OC0xMS0yNiIsICIlcHRSdHwlcHRSZCIsICZ0bSwgJnRtKTsKKwl0ZXN0KGt1bml0dGVzdCwgIjA1 OjM1OjQzfDAxMTgtMTAtMjYiLCAiJXB0UnRyfCVwdFJkciIsICZ0bSwgJnRtKTsKKwl0ZXN0KGt1 bml0dGVzdCwgIjA1OjM1OjQzfDIwMTgtMTEtMjYiLCAiJXB0UnR0cnwlcHRSZHRyIiwgJnRtLCAm dG0pOworCXRlc3Qoa3VuaXR0ZXN0LCAiMDU6MzU6NDMgdHJ8MjAxOC0xMS0yNiB0ciIsICIlcHRS dCB0cnwlcHRSZCB0ciIsICZ0bSwgJnRtKTsKIAotCXRlc3QoIjIwMTktMDEtMDRUMTU6MzI6MjMi LCAiJXB0VCIsICZ0KTsKLQl0ZXN0KCIwMTE5LTAwLTA0VDE1OjMyOjIzIiwgIiVwdFRyIiwgJnQp OwotCXRlc3QoIjE1OjMyOjIzfDIwMTktMDEtMDQiLCAiJXB0VHR8JXB0VGQiLCAmdCwgJnQpOwot CXRlc3QoIjE1OjMyOjIzfDAxMTktMDAtMDQiLCAiJXB0VHRyfCVwdFRkciIsICZ0LCAmdCk7CisJ dGVzdChrdW5pdHRlc3QsICIyMDE5LTAxLTA0VDE1OjMyOjIzIiwgIiVwdFQiLCAmdCk7CisJdGVz dChrdW5pdHRlc3QsICIwMTE5LTAwLTA0VDE1OjMyOjIzIiwgIiVwdFRyIiwgJnQpOworCXRlc3Qo a3VuaXR0ZXN0LCAiMTU6MzI6MjN8MjAxOS0wMS0wNCIsICIlcHRUdHwlcHRUZCIsICZ0LCAmdCk7 CisJdGVzdChrdW5pdHRlc3QsICIxNTozMjoyM3wwMTE5LTAwLTA0IiwgIiVwdFR0cnwlcHRUZHIi LCAmdCwgJnQpOwogfQogCi1zdGF0aWMgdm9pZCBfX2luaXQKLXN0cnVjdF9jbGsodm9pZCkKK3N0 YXRpYyB2b2lkCitzdHJ1Y3RfY2xrKHN0cnVjdCBrdW5pdCAqa3VuaXR0ZXN0KQogewogfQogCi1z dGF0aWMgdm9pZCBfX2luaXQKLWxhcmdlX2JpdG1hcCh2b2lkKQorc3RhdGljIHZvaWQKK2xhcmdl X2JpdG1hcChzdHJ1Y3Qga3VuaXQgKmt1bml0dGVzdCkKIHsKIAljb25zdCBpbnQgbmJpdHMgPSAx IDw8IDE2OwogCXVuc2lnbmVkIGxvbmcgKmJpdHMgPSBiaXRtYXBfemFsbG9jKG5iaXRzLCBHRlBf S0VSTkVMKTsKQEAgLTUzNyw2OSArNTEwLDY5IEBAIGxhcmdlX2JpdG1hcCh2b2lkKQogCiAJYml0 bWFwX3NldChiaXRzLCAxLCAyMCk7CiAJYml0bWFwX3NldChiaXRzLCA2MDAwMCwgMTUpOwotCXRl c3QoIjEtMjAsNjAwMDAtNjAwMTQiLCAiJSpwYmwiLCBuYml0cywgYml0cyk7CisJdGVzdChrdW5p dHRlc3QsICIxLTIwLDYwMDAwLTYwMDE0IiwgIiUqcGJsIiwgbmJpdHMsIGJpdHMpOwogCWJpdG1h cF9mcmVlKGJpdHMpOwogfQogCi1zdGF0aWMgdm9pZCBfX2luaXQKLWJpdG1hcCh2b2lkKQorc3Rh dGljIHZvaWQKK2JpdG1hcChzdHJ1Y3Qga3VuaXQgKmt1bml0dGVzdCkKIHsKIAlERUNMQVJFX0JJ VE1BUChiaXRzLCAyMCk7CiAJY29uc3QgaW50IHByaW1lc1tdID0gezIsMyw1LDcsMTEsMTMsMTcs MTl9OwogCWludCBpOwogCiAJYml0bWFwX3plcm8oYml0cywgMjApOwotCXRlc3QoIjAwMDAwfDAw MDAwIiwgIiUyMHBifCUqcGIiLCBiaXRzLCAyMCwgYml0cyk7Ci0JdGVzdCgifCIsICIlMjBwYmx8 JSpwYmwiLCBiaXRzLCAyMCwgYml0cyk7CisJdGVzdChrdW5pdHRlc3QsICIwMDAwMHwwMDAwMCIs ICIlMjBwYnwlKnBiIiwgYml0cywgMjAsIGJpdHMpOworCXRlc3Qoa3VuaXR0ZXN0LCAifCIsICIl MjBwYmx8JSpwYmwiLCBiaXRzLCAyMCwgYml0cyk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlf U0laRShwcmltZXMpOyArK2kpCiAJCXNldF9iaXQocHJpbWVzW2ldLCBiaXRzKTsKLQl0ZXN0KCJh MjhhY3xhMjhhYyIsICIlMjBwYnwlKnBiIiwgYml0cywgMjAsIGJpdHMpOwotCXRlc3QoIjItMyw1 LDcsMTEsMTMsMTcsMTl8Mi0zLDUsNywxMSwxMywxNywxOSIsICIlMjBwYmx8JSpwYmwiLCBiaXRz LCAyMCwgYml0cyk7CisJdGVzdChrdW5pdHRlc3QsICJhMjhhY3xhMjhhYyIsICIlMjBwYnwlKnBi IiwgYml0cywgMjAsIGJpdHMpOworCXRlc3Qoa3VuaXR0ZXN0LCAiMi0zLDUsNywxMSwxMywxNywx OXwyLTMsNSw3LDExLDEzLDE3LDE5IiwgIiUyMHBibHwlKnBibCIsIGJpdHMsIDIwLCBiaXRzKTsK IAogCWJpdG1hcF9maWxsKGJpdHMsIDIwKTsKLQl0ZXN0KCJmZmZmZnxmZmZmZiIsICIlMjBwYnwl KnBiIiwgYml0cywgMjAsIGJpdHMpOwotCXRlc3QoIjAtMTl8MC0xOSIsICIlMjBwYmx8JSpwYmwi LCBiaXRzLCAyMCwgYml0cyk7CisJdGVzdChrdW5pdHRlc3QsICJmZmZmZnxmZmZmZiIsICIlMjBw YnwlKnBiIiwgYml0cywgMjAsIGJpdHMpOworCXRlc3Qoa3VuaXR0ZXN0LCAiMC0xOXwwLTE5Iiwg IiUyMHBibHwlKnBibCIsIGJpdHMsIDIwLCBiaXRzKTsKIAotCWxhcmdlX2JpdG1hcCgpOworCWxh cmdlX2JpdG1hcChrdW5pdHRlc3QpOwogfQogCi1zdGF0aWMgdm9pZCBfX2luaXQKLW5ldGRldl9m ZWF0dXJlcyh2b2lkKQorc3RhdGljIHZvaWQKK25ldGRldl9mZWF0dXJlcyhzdHJ1Y3Qga3VuaXQg Kmt1bml0dGVzdCkKIHsKIH0KIAotc3RhdGljIHZvaWQgX19pbml0Ci1mbGFncyh2b2lkKQorc3Rh dGljIHZvaWQKK2ZsYWdzKHN0cnVjdCBrdW5pdCAqa3VuaXR0ZXN0KQogewogCXVuc2lnbmVkIGxv bmcgZmxhZ3M7CiAJZ2ZwX3QgZ2ZwOwogCWNoYXIgKmNtcF9idWZmZXI7CiAKIAlmbGFncyA9IDA7 Ci0JdGVzdCgiIiwgIiVwR3AiLCAmZmxhZ3MpOworCXRlc3Qoa3VuaXR0ZXN0LCAiIiwgIiVwR3Ai LCAmZmxhZ3MpOwogCiAJLyogUGFnZSBmbGFncyBzaG91bGQgZmlsdGVyIHRoZSB6b25lIGlkICov CiAJZmxhZ3MgPSAxVUwgPDwgTlJfUEFHRUZMQUdTOwotCXRlc3QoIiIsICIlcEdwIiwgJmZsYWdz KTsKKwl0ZXN0KGt1bml0dGVzdCwgIiIsICIlcEdwIiwgJmZsYWdzKTsKIAogCWZsYWdzIHw9IDFV TCA8PCBQR191cHRvZGF0ZSB8IDFVTCA8PCBQR19kaXJ0eSB8IDFVTCA8PCBQR19scnUKIAkJfCAx VUwgPDwgUEdfYWN0aXZlIHwgMVVMIDw8IFBHX3N3YXBiYWNrZWQ7Ci0JdGVzdCgidXB0b2RhdGV8 ZGlydHl8bHJ1fGFjdGl2ZXxzd2FwYmFja2VkIiwgIiVwR3AiLCAmZmxhZ3MpOworCXRlc3Qoa3Vu aXR0ZXN0LCAidXB0b2RhdGV8ZGlydHl8bHJ1fGFjdGl2ZXxzd2FwYmFja2VkIiwgIiVwR3AiLCAm ZmxhZ3MpOwogCiAKIAlmbGFncyA9IFZNX1JFQUQgfCBWTV9FWEVDIHwgVk1fTUFZUkVBRCB8IFZN X01BWVdSSVRFIHwgVk1fTUFZRVhFQwogCQkJfCBWTV9ERU5ZV1JJVEU7Ci0JdGVzdCgicmVhZHxl eGVjfG1heXJlYWR8bWF5d3JpdGV8bWF5ZXhlY3xkZW55d3JpdGUiLCAiJXBHdiIsICZmbGFncyk7 CisJdGVzdChrdW5pdHRlc3QsICJyZWFkfGV4ZWN8bWF5cmVhZHxtYXl3cml0ZXxtYXlleGVjfGRl bnl3cml0ZSIsICIlcEd2IiwgJmZsYWdzKTsKIAogCWdmcCA9IEdGUF9UUkFOU0hVR0U7Ci0JdGVz dCgiR0ZQX1RSQU5TSFVHRSIsICIlcEdnIiwgJmdmcCk7CisJdGVzdChrdW5pdHRlc3QsICJHRlBf VFJBTlNIVUdFIiwgIiVwR2ciLCAmZ2ZwKTsKIAogCWdmcCA9IEdGUF9BVE9NSUN8X19HRlBfRE1B OwotCXRlc3QoIkdGUF9BVE9NSUN8R0ZQX0RNQSIsICIlcEdnIiwgJmdmcCk7CisJdGVzdChrdW5p dHRlc3QsICJHRlBfQVRPTUlDfEdGUF9ETUEiLCAiJXBHZyIsICZnZnApOwogCiAJZ2ZwID0gX19H RlBfQVRPTUlDOwotCXRlc3QoIl9fR0ZQX0FUT01JQyIsICIlcEdnIiwgJmdmcCk7CisJdGVzdChr dW5pdHRlc3QsICJfX0dGUF9BVE9NSUMiLCAiJXBHZyIsICZnZnApOwogCiAJY21wX2J1ZmZlciA9 IGttYWxsb2MoQlVGX1NJWkUsIEdGUF9LRVJORUwpOwogCWlmICghY21wX2J1ZmZlcikKQEAgLTYw OCwxNyArNTgxLDE3IEBAIGZsYWdzKHZvaWQpCiAJLyogQW55IGZsYWdzIG5vdCB0cmFuc2xhdGVk IGJ5IHRoZSB0YWJsZSBzaG91bGQgcmVtYWluIG51bWVyaWMgKi8KIAlnZnAgPSB+X19HRlBfQklU U19NQVNLOwogCXNucHJpbnRmKGNtcF9idWZmZXIsIEJVRl9TSVpFLCAiJSNseCIsICh1bnNpZ25l ZCBsb25nKSBnZnApOwotCXRlc3QoY21wX2J1ZmZlciwgIiVwR2ciLCAmZ2ZwKTsKKwl0ZXN0KGt1 bml0dGVzdCwgY21wX2J1ZmZlciwgIiVwR2ciLCAmZ2ZwKTsKIAogCXNucHJpbnRmKGNtcF9idWZm ZXIsIEJVRl9TSVpFLCAiX19HRlBfQVRPTUlDfCUjbHgiLAogCQkJCQkJCSh1bnNpZ25lZCBsb25n KSBnZnApOwogCWdmcCB8PSBfX0dGUF9BVE9NSUM7Ci0JdGVzdChjbXBfYnVmZmVyLCAiJXBHZyIs ICZnZnApOworCXRlc3Qoa3VuaXR0ZXN0LCBjbXBfYnVmZmVyLCAiJXBHZyIsICZnZnApOwogCiAJ a2ZyZWUoY21wX2J1ZmZlcik7CiB9CiAKLXN0YXRpYyB2b2lkIF9faW5pdCBmd25vZGVfcG9pbnRl cih2b2lkKQorc3RhdGljIHZvaWQgZndub2RlX3BvaW50ZXIoc3RydWN0IGt1bml0ICprdW5pdHRl c3QpCiB7CiAJY29uc3Qgc3RydWN0IHNvZnR3YXJlX25vZGUgc29mdG5vZGVzW10gPSB7CiAJCXsg Lm5hbWUgPSAiZmlyc3QiLCB9LApAQCAtNjM4LDc5ICs2MTEsOTAgQEAgc3RhdGljIHZvaWQgX19p bml0IGZ3bm9kZV9wb2ludGVyKHZvaWQpCiAJCXJldHVybjsKIAl9CiAKLQl0ZXN0KGZ1bGxfbmFt ZV9zZWNvbmQsICIlcGZ3Iiwgc29mdHdhcmVfbm9kZV9md25vZGUoJnNvZnRub2Rlc1sxXSkpOwot CXRlc3QoZnVsbF9uYW1lLCAiJXBmdyIsIHNvZnR3YXJlX25vZGVfZndub2RlKCZzb2Z0bm9kZXNb Ml0pKTsKLQl0ZXN0KGZ1bGxfbmFtZSwgIiVwZndmIiwgc29mdHdhcmVfbm9kZV9md25vZGUoJnNv ZnRub2Rlc1syXSkpOwotCXRlc3Qoc2Vjb25kX25hbWUsICIlcGZ3UCIsIHNvZnR3YXJlX25vZGVf Zndub2RlKCZzb2Z0bm9kZXNbMV0pKTsKLQl0ZXN0KHRoaXJkX25hbWUsICIlcGZ3UCIsIHNvZnR3 YXJlX25vZGVfZndub2RlKCZzb2Z0bm9kZXNbMl0pKTsKKwl0ZXN0KGt1bml0dGVzdCwgZnVsbF9u YW1lX3NlY29uZCwgIiVwZnciLCBzb2Z0d2FyZV9ub2RlX2Z3bm9kZSgmc29mdG5vZGVzWzFdKSk7 CisJdGVzdChrdW5pdHRlc3QsIGZ1bGxfbmFtZSwgIiVwZnciLCBzb2Z0d2FyZV9ub2RlX2Z3bm9k ZSgmc29mdG5vZGVzWzJdKSk7CisJdGVzdChrdW5pdHRlc3QsIGZ1bGxfbmFtZSwgIiVwZndmIiwg c29mdHdhcmVfbm9kZV9md25vZGUoJnNvZnRub2Rlc1syXSkpOworCXRlc3Qoa3VuaXR0ZXN0LCBz ZWNvbmRfbmFtZSwgIiVwZndQIiwgc29mdHdhcmVfbm9kZV9md25vZGUoJnNvZnRub2Rlc1sxXSkp OworCXRlc3Qoa3VuaXR0ZXN0LCB0aGlyZF9uYW1lLCAiJXBmd1AiLCBzb2Z0d2FyZV9ub2RlX2Z3 bm9kZSgmc29mdG5vZGVzWzJdKSk7CiAKIAlzb2Z0d2FyZV9ub2RlX3VucmVnaXN0ZXIoJnNvZnRu b2Rlc1syXSk7CiAJc29mdHdhcmVfbm9kZV91bnJlZ2lzdGVyKCZzb2Z0bm9kZXNbMV0pOwogCXNv ZnR3YXJlX25vZGVfdW5yZWdpc3Rlcigmc29mdG5vZGVzWzBdKTsKIH0KIAotc3RhdGljIHZvaWQg X19pbml0Ci1lcnJwdHIodm9pZCkKK3N0YXRpYyB2b2lkCitlcnJwdHIoc3RydWN0IGt1bml0ICpr dW5pdHRlc3QpCiB7Ci0JdGVzdCgiLTEyMzQiLCAiJXBlIiwgRVJSX1BUUigtMTIzNCkpOworCXRl c3Qoa3VuaXR0ZXN0LCAiLTEyMzQiLCAiJXBlIiwgRVJSX1BUUigtMTIzNCkpOwogCiAJLyogQ2hl Y2sgdGhhdCAlcGUgd2l0aCBhIG5vbi1FUlJfUFRSIGdldHMgdHJlYXRlZCBhcyBvcmRpbmFyeSAl cC4gKi8KIAlCVUlMRF9CVUdfT04oSVNfRVJSKFBUUikpOwotCXRlc3RfaGFzaGVkKCIlcGUiLCBQ VFIpOworCXRlc3RfaGFzaGVkKGt1bml0dGVzdCwgIiVwZSIsIFBUUik7CiAKICNpZmRlZiBDT05G SUdfU1lNQk9MSUNfRVJSTkFNRQotCXRlc3QoIigtRU5PVFNPQ0spIiwgIiglcGUpIiwgRVJSX1BU UigtRU5PVFNPQ0spKTsKLQl0ZXN0KCIoLUVBR0FJTikiLCAiKCVwZSkiLCBFUlJfUFRSKC1FQUdB SU4pKTsKKwl0ZXN0KGt1bml0dGVzdCwgIigtRU5PVFNPQ0spIiwgIiglcGUpIiwgRVJSX1BUUigt RU5PVFNPQ0spKTsKKwl0ZXN0KGt1bml0dGVzdCwgIigtRUFHQUlOKSIsICIoJXBlKSIsIEVSUl9Q VFIoLUVBR0FJTikpOwogCUJVSUxEX0JVR19PTihFQUdBSU4gIT0gRVdPVUxEQkxPQ0spOwotCXRl c3QoIigtRUFHQUlOKSIsICIoJXBlKSIsIEVSUl9QVFIoLUVXT1VMREJMT0NLKSk7Ci0JdGVzdCgi Wy1FSU8gICAgXSIsICJbJS04cGVdIiwgRVJSX1BUUigtRUlPKSk7Ci0JdGVzdCgiWyAgICAtRUlP XSIsICJbJThwZV0iLCBFUlJfUFRSKC1FSU8pKTsKLQl0ZXN0KCItRVBST0JFX0RFRkVSIiwgIiVw ZSIsIEVSUl9QVFIoLUVQUk9CRV9ERUZFUikpOworCXRlc3Qoa3VuaXR0ZXN0LCAiKC1FQUdBSU4p IiwgIiglcGUpIiwgRVJSX1BUUigtRVdPVUxEQkxPQ0spKTsKKwl0ZXN0KGt1bml0dGVzdCwgIlst RUlPICAgIF0iLCAiWyUtOHBlXSIsIEVSUl9QVFIoLUVJTykpOworCXRlc3Qoa3VuaXR0ZXN0LCAi WyAgICAtRUlPXSIsICJbJThwZV0iLCBFUlJfUFRSKC1FSU8pKTsKKwl0ZXN0KGt1bml0dGVzdCwg Ii1FUFJPQkVfREVGRVIiLCAiJXBlIiwgRVJSX1BUUigtRVBST0JFX0RFRkVSKSk7CiAjZW5kaWYK IH0KIAotc3RhdGljIHZvaWQgX19pbml0Ci10ZXN0X3BvaW50ZXIodm9pZCkKLXsKLQlwbGFpbigp OwotCW51bGxfcG9pbnRlcigpOwotCWVycm9yX3BvaW50ZXIoKTsKLQlpbnZhbGlkX3BvaW50ZXIo KTsKLQlzeW1ib2xfcHRyKCk7Ci0Ja2VybmVsX3B0cigpOwotCXN0cnVjdF9yZXNvdXJjZSgpOwot CWFkZHIoKTsKLQllc2NhcGVkX3N0cigpOwotCWhleF9zdHJpbmcoKTsKLQltYWMoKTsKLQlpcCgp OwotCXV1aWQoKTsKLQlkZW50cnkoKTsKLQlzdHJ1Y3RfdmFfZm9ybWF0KCk7Ci0JdGltZV9hbmRf ZGF0ZSgpOwotCXN0cnVjdF9jbGsoKTsKLQliaXRtYXAoKTsKLQluZXRkZXZfZmVhdHVyZXMoKTsK LQlmbGFncygpOwotCWVycnB0cigpOwotCWZ3bm9kZV9wb2ludGVyKCk7Ci19Ci0KLXN0YXRpYyB2 b2lkIF9faW5pdCBzZWxmdGVzdCh2b2lkKQorc3RhdGljIHZvaWQKK3Rlc3RfcG9pbnRlcihzdHJ1 Y3Qga3VuaXQgKmt1bml0dGVzdCkKK3sKKwlwbGFpbihrdW5pdHRlc3QpOworCW51bGxfcG9pbnRl cihrdW5pdHRlc3QpOworCWVycm9yX3BvaW50ZXIoa3VuaXR0ZXN0KTsKKwlpbnZhbGlkX3BvaW50 ZXIoa3VuaXR0ZXN0KTsKKwlzeW1ib2xfcHRyKGt1bml0dGVzdCk7CisJa2VybmVsX3B0cihrdW5p dHRlc3QpOworCXN0cnVjdF9yZXNvdXJjZShrdW5pdHRlc3QpOworCWFkZHIoa3VuaXR0ZXN0KTsK Kwllc2NhcGVkX3N0cihrdW5pdHRlc3QpOworCWhleF9zdHJpbmcoa3VuaXR0ZXN0KTsKKwltYWMo a3VuaXR0ZXN0KTsKKwlpcChrdW5pdHRlc3QpOworCXV1aWQoa3VuaXR0ZXN0KTsKKwlkZW50cnko a3VuaXR0ZXN0KTsKKwlzdHJ1Y3RfdmFfZm9ybWF0KGt1bml0dGVzdCk7CisJdGltZV9hbmRfZGF0 ZShrdW5pdHRlc3QpOworCXN0cnVjdF9jbGsoa3VuaXR0ZXN0KTsKKwliaXRtYXAoa3VuaXR0ZXN0 KTsKKwluZXRkZXZfZmVhdHVyZXMoa3VuaXR0ZXN0KTsKKwlmbGFncyhrdW5pdHRlc3QpOworCWVy cnB0cihrdW5pdHRlc3QpOworCWZ3bm9kZV9wb2ludGVyKGt1bml0dGVzdCk7Cit9CisKK3N0YXRp YyB2b2lkIHNlbGZ0ZXN0KHN0cnVjdCBrdW5pdCAqa3VuaXR0ZXN0KQogewogCWFsbG9jZWRfYnVm ZmVyID0ga21hbGxvYyhCVUZfU0laRSArIDIqUEFEX1NJWkUsIEdGUF9LRVJORUwpOwogCWlmICgh YWxsb2NlZF9idWZmZXIpCiAJCXJldHVybjsKIAl0ZXN0X2J1ZmZlciA9IGFsbG9jZWRfYnVmZmVy ICsgUEFEX1NJWkU7CiAKLQl0ZXN0X2Jhc2ljKCk7Ci0JdGVzdF9udW1iZXIoKTsKLQl0ZXN0X3N0 cmluZygpOwotCXRlc3RfcG9pbnRlcigpOworCXRlc3RfYmFzaWMoa3VuaXR0ZXN0KTsKKwl0ZXN0 X251bWJlcihrdW5pdHRlc3QpOworCXRlc3Rfc3RyaW5nKGt1bml0dGVzdCk7CisJdGVzdF9wb2lu dGVyKGt1bml0dGVzdCk7CiAKIAlrZnJlZShhbGxvY2VkX2J1ZmZlcik7CiB9CiAKLUtTVE1fTU9E VUxFX0xPQURFUlModGVzdF9wcmludGYpOworc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIHByaW50 Zl90ZXN0X2Nhc2VzW10gPSB7CisJS1VOSVRfQ0FTRShzZWxmdGVzdCksCisJe30KK307CisKK3N0 YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgcHJpbnRmX3Rlc3Rfc3VpdGUgPSB7CisJLm5hbWUgPSAi cHJpbnRmLWt1bml0LXRlc3QiLAorCS50ZXN0X2Nhc2VzID0gcHJpbnRmX3Rlc3RfY2FzZXMsCit9 OworCitrdW5pdF90ZXN0X3N1aXRlKHByaW50Zl90ZXN0X3N1aXRlKTsKKwogTU9EVUxFX0FVVEhP UigiUmFzbXVzIFZpbGxlbW9lcyA8bGludXhAcmFzbXVzdmlsbGVtb2VzLmRrPiIpOwogTU9EVUxF X0xJQ0VOU0UoIkdQTCIpOwotLSAKMi4yNS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpMaW51eC1rZXJuZWwtbWVudGVlcyBtYWlsaW5nIGxpc3QKTGlu dXgta2VybmVsLW1lbnRlZXNAbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZwpodHRwczovL2xpc3Rz LmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1rZXJuZWwtbWVudGVl cwo=