Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nXde9-00046D-Dp for pgsql-hackers@arkaria.postgresql.org; Fri, 25 Mar 2022 06:42:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nXde7-0005cm-TY for pgsql-hackers@arkaria.postgresql.org; Fri, 25 Mar 2022 06:42:03 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nXde7-0005cc-07 for pgsql-hackers@lists.postgresql.org; Fri, 25 Mar 2022 06:42:03 +0000 Received: from mail-oa1-x35.google.com ([2001:4860:4864:20::35]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nXde4-0005vW-Bn for pgsql-hackers@lists.postgresql.org; Fri, 25 Mar 2022 06:42:01 +0000 Received: by mail-oa1-x35.google.com with SMTP id 586e51a60fabf-de3f2a19c8so7294944fac.1 for ; Thu, 24 Mar 2022 23:42:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=khK9E0kINrbAXba3Bl/kZPjiuinBqDnvdI2tz5TGHzQ=; b=Y0a9XX90nPdlNskzlbxkRx35pZzIqNtLuxpzzou3thoXfjF4oGy+7Irmh/epWcfsdv QoL4zuGTyV/WnMx4WwJKNiqrvCpi0hTyxZUrAb+9QhxRmhudXwp/s5FBGJKmlVoLl3pN rtOJngsJQf2WvbC3GhUrNhTDNJrJ15NUazK3wABhX4PXOnBYjzKwaikcVKmgeEMy+uJy lSDu9HCw2erLUiGf0wrzl18rDJJIUtXqvh5T5lH1/Gj/NUDzyNnL0n1SjFTZo2XuBohB V/Ham73w/twn//WcpdiUZQNEUZpfamTFHBOcLs3eleHWOs27rILnxwVHDH59VruGvuvJ kW8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=khK9E0kINrbAXba3Bl/kZPjiuinBqDnvdI2tz5TGHzQ=; b=UiVxKLpthn8aXmmSoIcNJO08/JpjXq9tbZHvkX0hLNd6nSAfLYcoA6Rge2jupvVUDR Ra9Uu56iVEQf/3l8tzB8CzzwEoigL/ZxlPxtvyBpC5Id4c4pCsECAbeKKOSn+LSQrUq4 ey07pPYwokDTnsQ9ZNSKgb20kIjsmuj2a18gWby+ZqMlS3H5BeZFYJL/c+1fr2O13zga bOn9JpHGiwWeGTkT9L1xDsTBOUtV+2pixTW5+hfgCz4T5nR8YPJGiGPGIz7VphqsIqjC 51x03o9hlvGwGoJNKLlKk6f9lNKkc9LtbSA2OGDFZ0ESTmLny5AI4ZWLs/vWQFYvGDfZ X/mA== X-Gm-Message-State: AOAM531UntySdwCdjkkZhmlDA64a9lGpsrKh/le8eU+qyBhmP8v06xjO U8JIviiSbPQkg5/Hd7GZchG3tYUrmCA5oe+6FRc= X-Google-Smtp-Source: ABdhPJyM8SgQQ4omJecOV6SmElCzfmBuszRo918rpxXQmB9s0zTyFSh57VDyDMgs70Xy7U8kHa1VPcO58+M9+x/CBRI= X-Received: by 2002:a05:6870:2328:b0:d9:a4af:ebda with SMTP id w40-20020a056870232800b000d9a4afebdamr4435196oao.162.1648190519745; Thu, 24 Mar 2022 23:41:59 -0700 (PDT) MIME-Version: 1.0 References: <20220322180006.hgbsoldgbljyrcm7@alap3.anarazel.de> <20220324.135246.1277919245181951980.horikyota.ntt@gmail.com> <20220324184758.tylwfuixi5l5ukb6@alap3.anarazel.de> In-Reply-To: <20220324184758.tylwfuixi5l5ukb6@alap3.anarazel.de> From: Bharath Rupireddy Date: Fri, 25 Mar 2022 12:11:47 +0530 Message-ID: Subject: Re: pg_walinspect - a new extension to get raw WAL data and WAL stats To: Andres Freund Cc: Kyotaro Horiguchi , Ashutosh Sharma , Stephen Frost , Jeff Davis , Robert Haas , Andrew Dunstan , Greg Stark , Jeremy Schneider , Bruce Momjian , PostgreSQL Hackers , SATYANARAYANA NARLAPURAM , marvin_liang@qq.com, actyzhang@outlook.com Content-Type: multipart/mixed; boundary="00000000000073b99905db0542b4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000073b99905db0542b4 Content-Type: text/plain; charset="UTF-8" On Fri, Mar 25, 2022 at 12:18 AM Andres Freund wrote: > > Hi, > > On 2022-03-24 15:02:29 +0530, Bharath Rupireddy wrote: > > On Thu, Mar 24, 2022 at 10:22 AM Kyotaro Horiguchi > > > This doesn't seem to be a part of xlogreader. Couldn't we add a new > > > module "xlogstats"? XLogRecGetBlockRefInfo also doesn't seem to me as > > > a part of xlogreader, the xlogstats looks like a better place. > > > > I'm not sure if it's worth adding new files xlogstats.h/.c just for 2 > > structures, 1 macro, and 2 functions with no plan to add new stats > > structures or functions. Since xlogreader is the one that reads the > > WAL, and is being included by both backend and other modules (tools > > and extensions) IMO it's the right place. However, I can specify in > > xlogreader that if at all the new stats related structures or > > functions are going to be added, it's good to move them into a new > > header and .c file. > > I don't like that location for XLogRecGetBlockRefInfo(). How about putting it > in xlogdesc.c - that kind of fits? Done. > And what do you think about creating src/backend/access/rmgrdesc/stats.c for > XLogRecStoreStats()? It's not a perfect location, but not too bad either. > > XLogRecGetLen() would be ok in xlogreader, but stats.c also would work? I've added a new xlogstats.c/.h (as suggested by Kyotaro-san as well) file under src/backend/access/transam/. I don't think the new file fits well under rmgrdesc. Attaching v15 patch-set, please have a look at it. Regards, Bharath Rupireddy. --00000000000073b99905db0542b4 Content-Type: application/x-patch; name="v15-0001-Refactor-pg_waldump-code.patch" Content-Disposition: attachment; filename="v15-0001-Refactor-pg_waldump-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l16177ez0 RnJvbSBlNWEyZTQ3M2FiZDk4YTg1MDQwNmM3OTkxY2YxNjAxNDQwYmUyYzk3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjUgTWFyIDIwMjIgMDU6NTc6MDkgKzAw MDAKU3ViamVjdDogW1BBVENIIHYxNV0gUmVmYWN0b3IgcGdfd2FsZHVtcCBjb2RlCgpUaGlzIHBh dGNoIHB1dHMgc29tZSBnZW5lcmljIGNodW5rcyBvZiBwZ193YWxkdW1wJ3MgY29kZSBpbnRvCnNl cGFyYXRlIHJldXNhYmxlIGZ1bmN0aW9ucyBpbiB4bG9nZGVzYy5jIGFuZCB4bG9nc3RhdHMuYywg YSBuZXcKZmlsZSBhbG9uZyB4bG9nc3RhdHMuaCBpbnRyb2R1Y2VkIGZvciBwbGFjaW5nIFdBTCBz dGF0cyBhbmQKc3RydWN0dXJlcy4KClRoaXMgd2F5LCBvdGhlciBtb2R1bGVzIGNhbiByZXVzZSB0 aGVzZSBjb21tb24gZnVuY3Rpb25zLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy94 bG9nZGVzYy5jIHwgMTI1ICsrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL01ha2VmaWxlICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dz dGF0cy5jIHwgIDkzICsrKysrKysrKysrKwogc3JjL2Jpbi9wZ193YWxkdW1wLy5naXRpZ25vcmUg ICAgICAgICAgfCAgIDEgKwogc3JjL2Jpbi9wZ193YWxkdW1wL01ha2VmaWxlICAgICAgICAgICAg fCAgIDggKy0KIHNyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMgICAgICAgIHwgMTk4ICsr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9nX2ludGVybmFs LmggICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9nc3RhdHMuaCAgICAgICAgIHwg IDQwICsrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDI4MiBpbnNlcnRpb25zKCspLCAxODkgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxv Z3N0YXRzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3N0YXRz LmgKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MveGxvZ2Rlc2MuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy94bG9nZGVzYy5jCmluZGV4IGU3NDUyYWY2Nzku LjQyOWU1ZGNkNWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy94bG9n ZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy94bG9nZGVzYy5jCkBAIC0y MDAsMyArMjAwLDEyOCBAQCB4bG9nX2lkZW50aWZ5KHVpbnQ4IGluZm8pCiAKIAlyZXR1cm4gaWQ7 CiB9CisKKy8qCisgKiBSZXR1cm5zIGEgc3RyaW5nIGdpdmluZyBpbmZvcm1hdGlvbiBhYm91dCBh bGwgdGhlIGJsb2NrcyBpbiBhbgorICogWExvZ1JlY29yZC4KKyAqLwordm9pZAorWExvZ1JlY0dl dEJsb2NrUmVmSW5mbyhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCwgY2hhciAqZGVsaW1pdGVyLAor CQkJCQkgICB1aW50MzIgKmZwaV9sZW4sIGJvb2wgZGV0YWlsZWRfZm9ybWF0LAorCQkJCQkgICBT dHJpbmdJbmZvIGJ1ZikKK3sKKwlpbnQJYmxvY2tfaWQ7CisKKwlBc3NlcnQocmVjb3JkICE9IE5V TEwpOworCisJaWYgKGRldGFpbGVkX2Zvcm1hdCAmJiBkZWxpbWl0ZXIgIT0gTlVMTCkKKwkJYXBw ZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnXG4nKTsKKworCWZvciAoYmxvY2tfaWQgPSAwOyBibG9j a19pZCA8PSBYTG9nUmVjTWF4QmxvY2tJZChyZWNvcmQpOyBibG9ja19pZCsrKQorCXsKKwkJUmVs RmlsZU5vZGUgcm5vZGUgPSB7SW52YWxpZE9pZCwgSW52YWxpZE9pZCwgSW52YWxpZE9pZH07CisJ CUZvcmtOdW1iZXIJZm9ya251bSA9IEludmFsaWRGb3JrTnVtYmVyOworCQlCbG9ja051bWJlciBi bGsgPSBJbnZhbGlkQmxvY2tOdW1iZXI7CisKKwkJaWYgKCFYTG9nUmVjSGFzQmxvY2tSZWYocmVj b3JkLCBibG9ja19pZCkpCisJCQljb250aW51ZTsKKworCQlYTG9nUmVjR2V0QmxvY2tUYWcocmVj b3JkLCBibG9ja19pZCwgJnJub2RlLCAmZm9ya251bSwgJmJsayk7CisKKwkJaWYgKGRldGFpbGVk X2Zvcm1hdCkKKwkJeworCQkJLyogR2V0IGJsb2NrIHJlZmVyZW5jZXMgaW4gZGV0YWlsZWQgZm9y bWF0LiAqLworCisJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwKKwkJCQkJCQkgIlx0YmxrcmVmICMl ZDogcmVsICV1LyV1LyV1IGZvcmsgJXMgYmxrICV1IiwKKwkJCQkJCQkgYmxvY2tfaWQsCisJCQkJ CQkJIHJub2RlLnNwY05vZGUsIHJub2RlLmRiTm9kZSwgcm5vZGUucmVsTm9kZSwKKwkJCQkJCQkg Zm9ya05hbWVzW2ZvcmtudW1dLAorCQkJCQkJCSBibGspOworCisJCQlpZiAoWExvZ1JlY0hhc0Js b2NrSW1hZ2UocmVjb3JkLCBibG9ja19pZCkpCisJCQl7CisJCQkJdWludDgJCWJpbWdfaW5mbyA9 IFhMb2dSZWNHZXRCbG9jayhyZWNvcmQsIGJsb2NrX2lkKS0+YmltZ19pbmZvOworCisJCQkJLyog Q2FsY3VsYXRlIHRoZSBhbW91bnQgb2YgRlBJIGRhdGEgaW4gdGhlIHJlY29yZC4gKi8KKwkJCQlp ZiAoZnBpX2xlbikKKwkJCQkJKmZwaV9sZW4gKz0gWExvZ1JlY0dldEJsb2NrKHJlY29yZCwgYmxv Y2tfaWQpLT5iaW1nX2xlbjsKKworCQkJCWlmIChCS1BJTUFHRV9DT01QUkVTU0VEKGJpbWdfaW5m bykpCisJCQkJeworCQkJCQljb25zdCBjaGFyICptZXRob2Q7CisKKwkJCQkJaWYgKChiaW1nX2lu Zm8gJiBCS1BJTUFHRV9DT01QUkVTU19QR0xaKSAhPSAwKQorCQkJCQkJbWV0aG9kID0gInBnbHoi OworCQkJCQllbHNlIGlmICgoYmltZ19pbmZvICYgQktQSU1BR0VfQ09NUFJFU1NfTFo0KSAhPSAw KQorCQkJCQkJbWV0aG9kID0gImx6NCI7CisJCQkJCWVsc2UgaWYgKChiaW1nX2luZm8gJiBCS1BJ TUFHRV9DT01QUkVTU19aU1REKSAhPSAwKQorCQkJCQkJbWV0aG9kID0gInpzdGQiOworCQkJCQll bHNlCisJCQkJCQltZXRob2QgPSAidW5rbm93biI7CisKKwkJCQkJYXBwZW5kU3RyaW5nSW5mbyhi dWYsCisJCQkJCQkJCQkgIiAoRlBXJXMpOyBob2xlOiBvZmZzZXQ6ICV1LCBsZW5ndGg6ICV1LCAi CisJCQkJCQkJCQkgImNvbXByZXNzaW9uIHNhdmVkOiAldSwgbWV0aG9kOiAlcyIsCisJCQkJCQkJ CQkgWExvZ1JlY0Jsb2NrSW1hZ2VBcHBseShyZWNvcmQsIGJsb2NrX2lkKSA/CisJCQkJCQkJCQkg IiIgOiAiIGZvciBXQUwgdmVyaWZpY2F0aW9uIiwKKwkJCQkJCQkJCSBYTG9nUmVjR2V0QmxvY2so cmVjb3JkLCBibG9ja19pZCktPmhvbGVfb2Zmc2V0LAorCQkJCQkJCQkJIFhMb2dSZWNHZXRCbG9j ayhyZWNvcmQsIGJsb2NrX2lkKS0+aG9sZV9sZW5ndGgsCisJCQkJCQkJCQkgQkxDS1NaIC0KKwkJ CQkJCQkJCSBYTG9nUmVjR2V0QmxvY2socmVjb3JkLCBibG9ja19pZCktPmhvbGVfbGVuZ3RoIC0K KwkJCQkJCQkJCSBYTG9nUmVjR2V0QmxvY2socmVjb3JkLCBibG9ja19pZCktPmJpbWdfbGVuLAor CQkJCQkJCQkJIG1ldGhvZCk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCWFwcGVuZFN0 cmluZ0luZm8oYnVmLAorCQkJCQkJCQkJICIgKEZQVyVzKTsgaG9sZTogb2Zmc2V0OiAldSwgbGVu Z3RoOiAldSIsCisJCQkJCQkJCQkgWExvZ1JlY0Jsb2NrSW1hZ2VBcHBseShyZWNvcmQsIGJsb2Nr X2lkKSA/CisJCQkJCQkJCQkgIiIgOiAiIGZvciBXQUwgdmVyaWZpY2F0aW9uIiwKKwkJCQkJCQkJ CSBYTG9nUmVjR2V0QmxvY2socmVjb3JkLCBibG9ja19pZCktPmhvbGVfb2Zmc2V0LAorCQkJCQkJ CQkJIFhMb2dSZWNHZXRCbG9jayhyZWNvcmQsIGJsb2NrX2lkKS0+aG9sZV9sZW5ndGgpOworCQkJ CX0KKwkJCX0KKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIEdldCBibG9jayByZWZlcmVuY2VzIGlu IHNob3J0IGZvcm1hdC4gKi8KKworCQkJaWYgKGZvcmtudW0gIT0gTUFJTl9GT1JLTlVNKQorCQkJ eworCQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLAorCQkJCQkJCQkgIiwgYmxrcmVmICMlZDogcmVs ICV1LyV1LyV1IGZvcmsgJXMgYmxrICV1IiwKKwkJCQkJCQkJIGJsb2NrX2lkLAorCQkJCQkJCQkg cm5vZGUuc3BjTm9kZSwgcm5vZGUuZGJOb2RlLCBybm9kZS5yZWxOb2RlLAorCQkJCQkJCQkgZm9y a05hbWVzW2ZvcmtudW1dLAorCQkJCQkJCQkgYmxrKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJ CQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwKKwkJCQkJCQkJICIsIGJsa3JlZiAjJWQ6IHJlbCAldS8l dS8ldSBibGsgJXUiLAorCQkJCQkJCQkgYmxvY2tfaWQsCisJCQkJCQkJCSBybm9kZS5zcGNOb2Rl LCBybm9kZS5kYk5vZGUsIHJub2RlLnJlbE5vZGUsCisJCQkJCQkJCSBibGspOworCQkJfQorCisJ CQlpZiAoWExvZ1JlY0hhc0Jsb2NrSW1hZ2UocmVjb3JkLCBibG9ja19pZCkpCisJCQl7CisJCQkJ LyogQ2FsY3VsYXRlIHRoZSBhbW91bnQgb2YgRlBJIGRhdGEgaW4gdGhlIHJlY29yZC4gKi8KKwkJ CQlpZiAoZnBpX2xlbikKKwkJCQkJKmZwaV9sZW4gKz0gWExvZ1JlY0dldEJsb2NrKHJlY29yZCwg YmxvY2tfaWQpLT5iaW1nX2xlbjsKKworCQkJCWlmIChYTG9nUmVjQmxvY2tJbWFnZUFwcGx5KHJl Y29yZCwgYmxvY2tfaWQpKQorCQkJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiBGUFciKTsKKwkJ CQllbHNlCisJCQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiIEZQVyBmb3IgV0FMIHZlcmlmaWNh dGlvbiIpOworCQkJfQorCQl9CisKKwkJaWYgKGRldGFpbGVkX2Zvcm1hdCAmJiBkZWxpbWl0ZXIg IT0gTlVMTCkKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJ1xuJyk7CisJfQorCisJaWYg KCFkZXRhaWxlZF9mb3JtYXQgJiYgZGVsaW1pdGVyICE9IE5VTEwpCisJCWFwcGVuZFN0cmluZ0lu Zm9DaGFyKGJ1ZiwgJ1xuJyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL01ha2VmaWxlCmluZGV4 IDc5MzE0YzY5YWIuLjA3MWYzZGJlMGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL01ha2VmaWxl CkBAIC0zMyw2ICszMyw3IEBAIE9CSlMgPSBcCiAJeGxvZ2luc2VydC5vIFwKIAl4bG9ncmVhZGVy Lm8gXAogCXhsb2dyZWNvdmVyeS5vIFwKKwl4bG9nc3RhdHMubyBcCiAJeGxvZ3V0aWxzLm8KIAog aW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2NvbW1vbi5tawpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3N0YXRzLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9nc3RhdHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi5hZmYzMDY5ZWNiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZ3N0YXRzLmMKQEAgLTAsMCArMSw5MyBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KgorICogeGxvZ3N0YXRzLmMKKyAqCQlGdW5jdGlvbnMgZm9yIFdBTCBTdGF0aXRzdGljcworICoK KyAqIENvcHlyaWdodCAoYykgMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3Jv dXAKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJCXNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2dzdGF0cy5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0 Z3Jlcy5oIgorCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWFkZXIuaCIKKyNpbmNsdWRlICJhY2Nl c3MveGxvZ3N0YXRzLmgiCisKKy8qCisgKiBDYWxjdWxhdGUgdGhlIHNpemUgb2YgYSByZWNvcmQs IHNwbGl0IGludG8gIUZQSSBhbmQgRlBJIHBhcnRzLgorICovCit2b2lkCitYTG9nUmVjR2V0TGVu KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkLCB1aW50MzIgKnJlY19sZW4sCisJCQkgIHVpbnQzMiAq ZnBpX2xlbikKK3sKKwlpbnQJYmxvY2tfaWQ7CisKKwkvKgorCSAqIENhbGN1bGF0ZSB0aGUgYW1v dW50IG9mIEZQSSBkYXRhIGluIHRoZSByZWNvcmQuCisJICoKKwkgKiBYWFg6IFdlIHBlZWsgaW50 byB4bG9ncmVhZGVyJ3MgcHJpdmF0ZSBkZWNvZGVkIGJhY2t1cCBibG9ja3MgZm9yIHRoZQorCSAq IGJpbWdfbGVuIGluZGljYXRpbmcgdGhlIGxlbmd0aCBvZiBGUEkgZGF0YS4KKwkgKi8KKwkqZnBp X2xlbiA9IDA7CisJZm9yIChibG9ja19pZCA9IDA7IGJsb2NrX2lkIDw9IFhMb2dSZWNNYXhCbG9j a0lkKHJlY29yZCk7IGJsb2NrX2lkKyspCisJeworCQlpZiAoWExvZ1JlY0hhc0Jsb2NrSW1hZ2Uo cmVjb3JkLCBibG9ja19pZCkpCisJCQkqZnBpX2xlbiArPSBYTG9nUmVjR2V0QmxvY2socmVjb3Jk LCBibG9ja19pZCktPmJpbWdfbGVuOworCX0KKworCS8qCisJICogQ2FsY3VsYXRlIHRoZSBsZW5n dGggb2YgdGhlIHJlY29yZCBhcyB0aGUgdG90YWwgbGVuZ3RoIC0gdGhlIGxlbmd0aCBvZgorCSAq IGFsbCB0aGUgYmxvY2sgaW1hZ2VzLgorCSAqLworCSpyZWNfbGVuID0gWExvZ1JlY0dldFRvdGFs TGVuKHJlY29yZCkgLSAqZnBpX2xlbjsKK30KKworLyoKKyAqIFN0b3JlIHBlci1ybWdyIGFuZCBw ZXItcmVjb3JkIHN0YXRpc3RpY3MgZm9yIGEgZ2l2ZW4gcmVjb3JkLgorICovCit2b2lkCitYTG9n UmVjU3RvcmVTdGF0cyhYTG9nU3RhdHMgKnN0YXRzLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkK K3sKKwlSbWdySWQJcm1pZDsKKwl1aW50OAlyZWNpZDsKKwl1aW50MzIJcmVjX2xlbjsKKwl1aW50 MzIJZnBpX2xlbjsKKworCUFzc2VydChzdGF0cyAhPSBOVUxMICYmIHJlY29yZCAhPSBOVUxMKTsK KworCXN0YXRzLT5jb3VudCsrOworCisJcm1pZCA9IFhMb2dSZWNHZXRSbWlkKHJlY29yZCk7CisK KwlYTG9nUmVjR2V0TGVuKHJlY29yZCwgJnJlY19sZW4sICZmcGlfbGVuKTsKKworCS8qIFVwZGF0 ZSBwZXItcm1nciBzdGF0aXN0aWNzICovCisKKwlzdGF0cy0+cm1ncl9zdGF0c1tybWlkXS5jb3Vu dCsrOworCXN0YXRzLT5ybWdyX3N0YXRzW3JtaWRdLnJlY19sZW4gKz0gcmVjX2xlbjsKKwlzdGF0 cy0+cm1ncl9zdGF0c1tybWlkXS5mcGlfbGVuICs9IGZwaV9sZW47CisKKwkvKgorCSAqIFVwZGF0 ZSBwZXItcmVjb3JkIHN0YXRpc3RpY3MsIHdoZXJlIHRoZSByZWNvcmQgaXMgaWRlbnRpZmllZCBi eSBhCisJICogY29tYmluYXRpb24gb2YgdGhlIFJtZ3JJZCBhbmQgdGhlIGZvdXIgYml0cyBvZiB0 aGUgeGxfaW5mbyBmaWVsZCB0aGF0CisJICogYXJlIHRoZSBybWdyJ3MgZG9tYWluIChyZXN1bHRp bmcgaW4gc2l4dGVlbiBwb3NzaWJsZSBlbnRyaWVzIHBlcgorCSAqIFJtZ3JJZCkuCisJICovCisK KwlyZWNpZCA9IFhMb2dSZWNHZXRJbmZvKHJlY29yZCkgPj4gNDsKKworCS8qCisJICogWEFDVCBy ZWNvcmRzIG5lZWQgdG8gYmUgaGFuZGxlZCBkaWZmZXJlbnRseS4gVGhvc2UgcmVjb3JkcyB1c2Ug dGhlCisJICogZmlyc3QgYml0IG9mIHRob3NlIGZvdXIgYml0cyBmb3IgYW4gb3B0aW9uYWwgZmxh ZyB2YXJpYWJsZSBhbmQgdGhlCisJICogZm9sbG93aW5nIHRocmVlIGJpdHMgZm9yIHRoZSBvcGNv ZGUuIFdlIGZpbHRlciBvcGNvZGUgb3V0IG9mIHhsX2luZm8KKwkgKiBhbmQgdXNlIGl0IGFzIHRo ZSBpZGVudGlmaWVyIG9mIHRoZSByZWNvcmQuCisJICovCisJaWYgKHJtaWQgPT0gUk1fWEFDVF9J RCkKKwkJcmVjaWQgJj0gMHgwNzsKKworCXN0YXRzLT5yZWNvcmRfc3RhdHNbcm1pZF1bcmVjaWRd LmNvdW50Kys7CisJc3RhdHMtPnJlY29yZF9zdGF0c1tybWlkXVtyZWNpZF0ucmVjX2xlbiArPSBy ZWNfbGVuOworCXN0YXRzLT5yZWNvcmRfc3RhdHNbcm1pZF1bcmVjaWRdLmZwaV9sZW4gKz0gZnBp X2xlbjsKK30KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC8uZ2l0aWdub3JlIGIvc3Jj L2Jpbi9wZ193YWxkdW1wLy5naXRpZ25vcmUKaW5kZXggM2JlMDBhOGI2MS4uZGFiYjZlMzRiNiAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wLy5naXRpZ25vcmUKKysrIGIvc3JjL2Jpbi9w Z193YWxkdW1wLy5naXRpZ25vcmUKQEAgLTIzLDYgKzIzLDcgQEAKIC94YWN0ZGVzYy5jCiAveGxv Z2Rlc2MuYwogL3hsb2dyZWFkZXIuYworL3hsb2dzdGF0LmMKIAogIyBHZW5lcmF0ZWQgYnkgdGVz dCBzdWl0ZQogL3RtcF9jaGVjay8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9NYWtl ZmlsZSBiL3NyYy9iaW4vcGdfd2FsZHVtcC9NYWtlZmlsZQppbmRleCA5ZjMzM2QwYzhhLi5kNjQ1 OWUxN2M3IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvTWFrZWZpbGUKKysrIGIvc3Jj L2Jpbi9wZ193YWxkdW1wL01ha2VmaWxlCkBAIC0xMyw3ICsxMyw4IEBAIE9CSlMgPSBcCiAJY29t cGF0Lm8gXAogCXBnX3dhbGR1bXAubyBcCiAJcm1ncmRlc2MubyBcCi0JeGxvZ3JlYWRlci5vCisJ eGxvZ3JlYWRlci5vIFwKKwl4bG9nc3RhdHMubwogCiBvdmVycmlkZSBDUFBGTEFHUyA6PSAtREZS T05URU5EICQoQ1BQRkxBR1MpCiAKQEAgLTI5LDYgKzMwLDkgQEAgcGdfd2FsZHVtcDogJChPQkpT KSB8IHN1Ym1ha2UtbGlicGdwb3J0CiB4bG9ncmVhZGVyLmM6ICUgOiAkKHRvcF9zcmNkaXIpL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtLyUKIAlybSAtZiAkQCAmJiAkKExOX1MpICQ8IC4KIAor eGxvZ3N0YXRzLmM6ICUgOiAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft LyUKKwlybSAtZiAkQCAmJiAkKExOX1MpICQ8IC4KKwogJChSTUdSREVTQ1NPVVJDRVMpOiAlIDog JCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvJQogCXJtIC1mICRAICYm ICQoTE5fUykgJDwgLgogCkBAIC00Miw3ICs0Niw3IEBAIHVuaW5zdGFsbDoKIAlybSAtZiAnJChE RVNURElSKSQoYmluZGlyKS9wZ193YWxkdW1wJChYKScKIAogY2xlYW4gZGlzdGNsZWFuIG1haW50 YWluZXItY2xlYW46Ci0Jcm0gLWYgcGdfd2FsZHVtcCQoWCkgJChPQkpTKSAkKFJNR1JERVNDU09V UkNFUykgeGxvZ3JlYWRlci5jCisJcm0gLWYgcGdfd2FsZHVtcCQoWCkgJChPQkpTKSAkKFJNR1JE RVNDU09VUkNFUykgeGxvZ3JlYWRlci5jIHhsb2dzdGF0cy5jCiAJcm0gLXJmIHRtcF9jaGVjawog CiBjaGVjazoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMgYi9z cmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCmluZGV4IDlmZmU5ZTU1YmQuLmYzMTRkMzNl YmYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKKysrIGIvc3Jj L2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUg ImFjY2Vzcy94bG9nX2ludGVybmFsLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWFkZXIuaCIK ICNpbmNsdWRlICJhY2Nlc3MveGxvZ3JlY29yZC5oIgorI2luY2x1ZGUgImFjY2Vzcy94bG9nc3Rh dHMuaCIKICNpbmNsdWRlICJjb21tb24vZmVfbWVtdXRpbHMuaCIKICNpbmNsdWRlICJjb21tb24v bG9nZ2luZy5oIgogI2luY2x1ZGUgImdldG9wdF9sb25nLmgiCkBAIC02NiwyMyArNjcsNiBAQCB0 eXBlZGVmIHN0cnVjdCBYTG9nRHVtcENvbmZpZwogCWJvb2wJCWZpbHRlcl9ieV9mcHc7CiB9IFhM b2dEdW1wQ29uZmlnOwogCi10eXBlZGVmIHN0cnVjdCBTdGF0cwotewotCXVpbnQ2NAkJY291bnQ7 Ci0JdWludDY0CQlyZWNfbGVuOwotCXVpbnQ2NAkJZnBpX2xlbjsKLX0gU3RhdHM7Ci0KLSNkZWZp bmUgTUFYX1hMSU5GT19UWVBFUyAxNgotCi10eXBlZGVmIHN0cnVjdCBYTG9nRHVtcFN0YXRzCi17 Ci0JdWludDY0CQljb3VudDsKLQlYTG9nUmVjUHRyCXN0YXJ0cHRyOwotCVhMb2dSZWNQdHIJZW5k cHRyOwotCVN0YXRzCQlybWdyX3N0YXRzW1JNX05FWFRfSURdOwotCVN0YXRzCQlyZWNvcmRfc3Rh dHNbUk1fTkVYVF9JRF1bTUFYX1hMSU5GT19UWVBFU107Ci19IFhMb2dEdW1wU3RhdHM7CiAKICNk ZWZpbmUgZmF0YWxfZXJyb3IoLi4uKSBkbyB7IHBnX2xvZ19mYXRhbChfX1ZBX0FSR1NfXyk7IGV4 aXQoRVhJVF9GQUlMVVJFKTsgfSB3aGlsZSgwKQogCkBAIC00NTMsODEgKzQzNyw2IEBAIFhMb2dS ZWNvcmRIYXNGUFcoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJcmV0dXJuIGZhbHNlOwogfQog Ci0vKgotICogQ2FsY3VsYXRlIHRoZSBzaXplIG9mIGEgcmVjb3JkLCBzcGxpdCBpbnRvICFGUEkg YW5kIEZQSSBwYXJ0cy4KLSAqLwotc3RhdGljIHZvaWQKLVhMb2dEdW1wUmVjb3JkTGVuKFhMb2dS ZWFkZXJTdGF0ZSAqcmVjb3JkLCB1aW50MzIgKnJlY19sZW4sIHVpbnQzMiAqZnBpX2xlbikKLXsK LQlpbnQJCQlibG9ja19pZDsKLQotCS8qCi0JICogQ2FsY3VsYXRlIHRoZSBhbW91bnQgb2YgRlBJ IGRhdGEgaW4gdGhlIHJlY29yZC4KLQkgKgotCSAqIFhYWDogV2UgcGVlayBpbnRvIHhsb2dyZWFk ZXIncyBwcml2YXRlIGRlY29kZWQgYmFja3VwIGJsb2NrcyBmb3IgdGhlCi0JICogYmltZ19sZW4g aW5kaWNhdGluZyB0aGUgbGVuZ3RoIG9mIEZQSSBkYXRhLgotCSAqLwotCSpmcGlfbGVuID0gMDsK LQlmb3IgKGJsb2NrX2lkID0gMDsgYmxvY2tfaWQgPD0gWExvZ1JlY01heEJsb2NrSWQocmVjb3Jk KTsgYmxvY2tfaWQrKykKLQl7Ci0JCWlmIChYTG9nUmVjSGFzQmxvY2tJbWFnZShyZWNvcmQsIGJs b2NrX2lkKSkKLQkJCSpmcGlfbGVuICs9IFhMb2dSZWNHZXRCbG9jayhyZWNvcmQsIGJsb2NrX2lk KS0+YmltZ19sZW47Ci0JfQotCi0JLyoKLQkgKiBDYWxjdWxhdGUgdGhlIGxlbmd0aCBvZiB0aGUg cmVjb3JkIGFzIHRoZSB0b3RhbCBsZW5ndGggLSB0aGUgbGVuZ3RoIG9mCi0JICogYWxsIHRoZSBi bG9jayBpbWFnZXMuCi0JICovCi0JKnJlY19sZW4gPSBYTG9nUmVjR2V0VG90YWxMZW4ocmVjb3Jk KSAtICpmcGlfbGVuOwotfQotCi0vKgotICogU3RvcmUgcGVyLXJtZ3IgYW5kIHBlci1yZWNvcmQg c3RhdGlzdGljcyBmb3IgYSBnaXZlbiByZWNvcmQuCi0gKi8KLXN0YXRpYyB2b2lkCi1YTG9nRHVt cENvdW50UmVjb3JkKFhMb2dEdW1wQ29uZmlnICpjb25maWcsIFhMb2dEdW1wU3RhdHMgKnN0YXRz LAotCQkJCQlYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKLXsKLQlSbWdySWQJCXJtaWQ7Ci0JdWlu dDgJCXJlY2lkOwotCXVpbnQzMgkJcmVjX2xlbjsKLQl1aW50MzIJCWZwaV9sZW47Ci0KLQlzdGF0 cy0+Y291bnQrKzsKLQotCXJtaWQgPSBYTG9nUmVjR2V0Um1pZChyZWNvcmQpOwotCi0JWExvZ0R1 bXBSZWNvcmRMZW4ocmVjb3JkLCAmcmVjX2xlbiwgJmZwaV9sZW4pOwotCi0JLyogVXBkYXRlIHBl ci1ybWdyIHN0YXRpc3RpY3MgKi8KLQotCXN0YXRzLT5ybWdyX3N0YXRzW3JtaWRdLmNvdW50Kys7 Ci0Jc3RhdHMtPnJtZ3Jfc3RhdHNbcm1pZF0ucmVjX2xlbiArPSByZWNfbGVuOwotCXN0YXRzLT5y bWdyX3N0YXRzW3JtaWRdLmZwaV9sZW4gKz0gZnBpX2xlbjsKLQotCS8qCi0JICogVXBkYXRlIHBl ci1yZWNvcmQgc3RhdGlzdGljcywgd2hlcmUgdGhlIHJlY29yZCBpcyBpZGVudGlmaWVkIGJ5IGEK LQkgKiBjb21iaW5hdGlvbiBvZiB0aGUgUm1ncklkIGFuZCB0aGUgZm91ciBiaXRzIG9mIHRoZSB4 bF9pbmZvIGZpZWxkIHRoYXQKLQkgKiBhcmUgdGhlIHJtZ3IncyBkb21haW4gKHJlc3VsdGluZyBp biBzaXh0ZWVuIHBvc3NpYmxlIGVudHJpZXMgcGVyCi0JICogUm1ncklkKS4KLQkgKi8KLQotCXJl Y2lkID0gWExvZ1JlY0dldEluZm8ocmVjb3JkKSA+PiA0OwotCi0JLyoKLQkgKiBYQUNUIHJlY29y ZHMgbmVlZCB0byBiZSBoYW5kbGVkIGRpZmZlcmVudGx5LiBUaG9zZSByZWNvcmRzIHVzZSB0aGUK LQkgKiBmaXJzdCBiaXQgb2YgdGhvc2UgZm91ciBiaXRzIGZvciBhbiBvcHRpb25hbCBmbGFnIHZh cmlhYmxlIGFuZCB0aGUKLQkgKiBmb2xsb3dpbmcgdGhyZWUgYml0cyBmb3IgdGhlIG9wY29kZS4g V2UgZmlsdGVyIG9wY29kZSBvdXQgb2YgeGxfaW5mbwotCSAqIGFuZCB1c2UgaXQgYXMgdGhlIGlk ZW50aWZpZXIgb2YgdGhlIHJlY29yZC4KLQkgKi8KLQlpZiAocm1pZCA9PSBSTV9YQUNUX0lEKQot CQlyZWNpZCAmPSAweDA3OwotCi0Jc3RhdHMtPnJlY29yZF9zdGF0c1tybWlkXVtyZWNpZF0uY291 bnQrKzsKLQlzdGF0cy0+cmVjb3JkX3N0YXRzW3JtaWRdW3JlY2lkXS5yZWNfbGVuICs9IHJlY19s ZW47Ci0Jc3RhdHMtPnJlY29yZF9zdGF0c1tybWlkXVtyZWNpZF0uZnBpX2xlbiArPSBmcGlfbGVu OwotfQotCiAvKgogICogUHJpbnQgYSByZWNvcmQgdG8gc3Rkb3V0CiAgKi8KQEAgLTUzOCwxNSAr NDQ3LDEyIEBAIFhMb2dEdW1wRGlzcGxheVJlY29yZChYTG9nRHVtcENvbmZpZyAqY29uZmlnLCBY TG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAljb25zdCBSbWdyRGVzY0RhdGEgKmRlc2MgPSAmUm1n ckRlc2NUYWJsZVtYTG9nUmVjR2V0Um1pZChyZWNvcmQpXTsKIAl1aW50MzIJCXJlY19sZW47CiAJ dWludDMyCQlmcGlfbGVuOwotCVJlbEZpbGVOb2RlIHJub2RlOwotCUZvcmtOdW1iZXIJZm9ya251 bTsKLQlCbG9ja051bWJlciBibGs7Ci0JaW50CQkJYmxvY2tfaWQ7CiAJdWludDgJCWluZm8gPSBY TG9nUmVjR2V0SW5mbyhyZWNvcmQpOwogCVhMb2dSZWNQdHIJeGxfcHJldiA9IFhMb2dSZWNHZXRQ cmV2KHJlY29yZCk7CiAJU3RyaW5nSW5mb0RhdGEgczsKKwljaGFyCWRlbGltID0geydcbid9Owog Ci0JWExvZ0R1bXBSZWNvcmRMZW4ocmVjb3JkLCAmcmVjX2xlbiwgJmZwaV9sZW4pOworCVhMb2dS ZWNHZXRMZW4ocmVjb3JkLCAmcmVjX2xlbiwgJmZwaV9sZW4pOwogCiAJcHJpbnRmKCJybWdyOiAl LTExcyBsZW4gKHJlYy90b3QpOiAlNnUvJTZ1LCB0eDogJTEwdSwgbHNuOiAlWC8lMDhYLCBwcmV2 ICVYLyUwOFgsICIsCiAJCSAgIGRlc2MtPnJtX25hbWUsCkBAIC01NjQsOTMgKzQ3MCwxMSBAQCBY TG9nRHVtcERpc3BsYXlSZWNvcmQoWExvZ0R1bXBDb25maWcgKmNvbmZpZywgWExvZ1JlYWRlclN0 YXRlICpyZWNvcmQpCiAJaW5pdFN0cmluZ0luZm8oJnMpOwogCWRlc2MtPnJtX2Rlc2MoJnMsIHJl Y29yZCk7CiAJcHJpbnRmKCIlcyIsIHMuZGF0YSk7Ci0JcGZyZWUocy5kYXRhKTsKLQotCWlmICgh Y29uZmlnLT5ia3BfZGV0YWlscykKLQl7Ci0JCS8qIHByaW50IGJsb2NrIHJlZmVyZW5jZXMgKHNo b3J0IGZvcm1hdCkgKi8KLQkJZm9yIChibG9ja19pZCA9IDA7IGJsb2NrX2lkIDw9IFhMb2dSZWNN YXhCbG9ja0lkKHJlY29yZCk7IGJsb2NrX2lkKyspCi0JCXsKLQkJCWlmICghWExvZ1JlY0hhc0Js b2NrUmVmKHJlY29yZCwgYmxvY2tfaWQpKQotCQkJCWNvbnRpbnVlOwotCi0JCQlYTG9nUmVjR2V0 QmxvY2tUYWcocmVjb3JkLCBibG9ja19pZCwgJnJub2RlLCAmZm9ya251bSwgJmJsayk7Ci0JCQlp ZiAoZm9ya251bSAhPSBNQUlOX0ZPUktOVU0pCi0JCQkJcHJpbnRmKCIsIGJsa3JlZiAjJWQ6IHJl bCAldS8ldS8ldSBmb3JrICVzIGJsayAldSIsCi0JCQkJCSAgIGJsb2NrX2lkLAotCQkJCQkgICBy bm9kZS5zcGNOb2RlLCBybm9kZS5kYk5vZGUsIHJub2RlLnJlbE5vZGUsCi0JCQkJCSAgIGZvcmtO YW1lc1tmb3JrbnVtXSwKLQkJCQkJICAgYmxrKTsKLQkJCWVsc2UKLQkJCQlwcmludGYoIiwgYmxr cmVmICMlZDogcmVsICV1LyV1LyV1IGJsayAldSIsCi0JCQkJCSAgIGJsb2NrX2lkLAotCQkJCQkg ICBybm9kZS5zcGNOb2RlLCBybm9kZS5kYk5vZGUsIHJub2RlLnJlbE5vZGUsCi0JCQkJCSAgIGJs ayk7Ci0JCQlpZiAoWExvZ1JlY0hhc0Jsb2NrSW1hZ2UocmVjb3JkLCBibG9ja19pZCkpCi0JCQl7 Ci0JCQkJaWYgKFhMb2dSZWNCbG9ja0ltYWdlQXBwbHkocmVjb3JkLCBibG9ja19pZCkpCi0JCQkJ CXByaW50ZigiIEZQVyIpOwotCQkJCWVsc2UKLQkJCQkJcHJpbnRmKCIgRlBXIGZvciBXQUwgdmVy aWZpY2F0aW9uIik7Ci0JCQl9Ci0JCX0KLQkJcHV0Y2hhcignXG4nKTsKLQl9Ci0JZWxzZQotCXsK LQkJLyogcHJpbnQgYmxvY2sgcmVmZXJlbmNlcyAoZGV0YWlsZWQgZm9ybWF0KSAqLwotCQlwdXRj aGFyKCdcbicpOwotCQlmb3IgKGJsb2NrX2lkID0gMDsgYmxvY2tfaWQgPD0gWExvZ1JlY01heEJs b2NrSWQocmVjb3JkKTsgYmxvY2tfaWQrKykKLQkJewotCQkJaWYgKCFYTG9nUmVjSGFzQmxvY2tS ZWYocmVjb3JkLCBibG9ja19pZCkpCi0JCQkJY29udGludWU7Ci0KLQkJCVhMb2dSZWNHZXRCbG9j a1RhZyhyZWNvcmQsIGJsb2NrX2lkLCAmcm5vZGUsICZmb3JrbnVtLCAmYmxrKTsKLQkJCXByaW50 ZigiXHRibGtyZWYgIyVkOiByZWwgJXUvJXUvJXUgZm9yayAlcyBibGsgJXUiLAotCQkJCSAgIGJs b2NrX2lkLAotCQkJCSAgIHJub2RlLnNwY05vZGUsIHJub2RlLmRiTm9kZSwgcm5vZGUucmVsTm9k ZSwKLQkJCQkgICBmb3JrTmFtZXNbZm9ya251bV0sCi0JCQkJICAgYmxrKTsKLQkJCWlmIChYTG9n UmVjSGFzQmxvY2tJbWFnZShyZWNvcmQsIGJsb2NrX2lkKSkKLQkJCXsKLQkJCQl1aW50OAkJYmlt Z19pbmZvID0gWExvZ1JlY0dldEJsb2NrKHJlY29yZCwgYmxvY2tfaWQpLT5iaW1nX2luZm87CiAK LQkJCQlpZiAoQktQSU1BR0VfQ09NUFJFU1NFRChiaW1nX2luZm8pKQotCQkJCXsKLQkJCQkJY29u c3QgY2hhciAqbWV0aG9kOwotCi0JCQkJCWlmICgoYmltZ19pbmZvICYgQktQSU1BR0VfQ09NUFJF U1NfUEdMWikgIT0gMCkKLQkJCQkJCW1ldGhvZCA9ICJwZ2x6IjsKLQkJCQkJZWxzZSBpZiAoKGJp bWdfaW5mbyAmIEJLUElNQUdFX0NPTVBSRVNTX0xaNCkgIT0gMCkKLQkJCQkJCW1ldGhvZCA9ICJs ejQiOwotCQkJCQllbHNlIGlmICgoYmltZ19pbmZvICYgQktQSU1BR0VfQ09NUFJFU1NfWlNURCkg IT0gMCkKLQkJCQkJCW1ldGhvZCA9ICJ6c3RkIjsKLQkJCQkJZWxzZQotCQkJCQkJbWV0aG9kID0g InVua25vd24iOwotCi0JCQkJCXByaW50ZigiIChGUFclcyk7IGhvbGU6IG9mZnNldDogJXUsIGxl bmd0aDogJXUsICIKLQkJCQkJCSAgICJjb21wcmVzc2lvbiBzYXZlZDogJXUsIG1ldGhvZDogJXMi LAotCQkJCQkJICAgWExvZ1JlY0Jsb2NrSW1hZ2VBcHBseShyZWNvcmQsIGJsb2NrX2lkKSA/Ci0J CQkJCQkgICAiIiA6ICIgZm9yIFdBTCB2ZXJpZmljYXRpb24iLAotCQkJCQkJICAgWExvZ1JlY0dl dEJsb2NrKHJlY29yZCwgYmxvY2tfaWQpLT5ob2xlX29mZnNldCwKLQkJCQkJCSAgIFhMb2dSZWNH ZXRCbG9jayhyZWNvcmQsIGJsb2NrX2lkKS0+aG9sZV9sZW5ndGgsCi0JCQkJCQkgICBCTENLU1og LQotCQkJCQkJICAgWExvZ1JlY0dldEJsb2NrKHJlY29yZCwgYmxvY2tfaWQpLT5ob2xlX2xlbmd0 aCAtCi0JCQkJCQkgICBYTG9nUmVjR2V0QmxvY2socmVjb3JkLCBibG9ja19pZCktPmJpbWdfbGVu LAotCQkJCQkJICAgbWV0aG9kKTsKLQkJCQl9Ci0JCQkJZWxzZQotCQkJCXsKLQkJCQkJcHJpbnRm KCIgKEZQVyVzKTsgaG9sZTogb2Zmc2V0OiAldSwgbGVuZ3RoOiAldSIsCi0JCQkJCQkgICBYTG9n UmVjQmxvY2tJbWFnZUFwcGx5KHJlY29yZCwgYmxvY2tfaWQpID8KLQkJCQkJCSAgICIiIDogIiBm b3IgV0FMIHZlcmlmaWNhdGlvbiIsCi0JCQkJCQkgICBYTG9nUmVjR2V0QmxvY2socmVjb3JkLCBi bG9ja19pZCktPmhvbGVfb2Zmc2V0LAotCQkJCQkJICAgWExvZ1JlY0dldEJsb2NrKHJlY29yZCwg YmxvY2tfaWQpLT5ob2xlX2xlbmd0aCk7Ci0JCQkJfQotCQkJfQotCQkJcHV0Y2hhcignXG4nKTsK LQkJfQotCX0KKwlyZXNldFN0cmluZ0luZm8oJnMpOworCVhMb2dSZWNHZXRCbG9ja1JlZkluZm8o cmVjb3JkLCAmZGVsaW0sIE5VTEwsIGNvbmZpZy0+YmtwX2RldGFpbHMsICZzKTsKKwlwcmludGYo IiVzIiwgcy5kYXRhKTsKKwlwZnJlZShzLmRhdGEpOwogfQogCiAvKgpAQCAtNjk4LDcgKzUyMiw3 IEBAIFhMb2dEdW1wU3RhdHNSb3coY29uc3QgY2hhciAqbmFtZSwKICAqIERpc3BsYXkgc3VtbWFy eSBzdGF0aXN0aWNzIGFib3V0IHRoZSByZWNvcmRzIHNlZW4gc28gZmFyLgogICovCiBzdGF0aWMg dm9pZAotWExvZ0R1bXBEaXNwbGF5U3RhdHMoWExvZ0R1bXBDb25maWcgKmNvbmZpZywgWExvZ0R1 bXBTdGF0cyAqc3RhdHMpCitYTG9nRHVtcERpc3BsYXlTdGF0cyhYTG9nRHVtcENvbmZpZyAqY29u ZmlnLCBYTG9nU3RhdHMgKnN0YXRzKQogewogCWludAkJCXJpLAogCQkJCXJqOwpAQCAtODU5LDcg KzY4Myw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCVhMb2dSZWFkZXJTdGF0ZSAq eGxvZ3JlYWRlcl9zdGF0ZTsKIAlYTG9nRHVtcFByaXZhdGUgcHJpdmF0ZTsKIAlYTG9nRHVtcENv bmZpZyBjb25maWc7Ci0JWExvZ0R1bXBTdGF0cyBzdGF0czsKKwlYTG9nU3RhdHMgc3RhdHM7CiAJ WExvZ1JlY29yZCAqcmVjb3JkOwogCVhMb2dSZWNQdHIJZmlyc3RfcmVjb3JkOwogCWNoYXIJICAg KndhbGRpciA9IE5VTEw7CkBAIC05MTMsNyArNzM3LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAKIAltZW1zZXQoJnByaXZhdGUsIDAsIHNpemVvZihYTG9nRHVtcFByaXZhdGUpKTsK IAltZW1zZXQoJmNvbmZpZywgMCwgc2l6ZW9mKFhMb2dEdW1wQ29uZmlnKSk7Ci0JbWVtc2V0KCZz dGF0cywgMCwgc2l6ZW9mKFhMb2dEdW1wU3RhdHMpKTsKKwltZW1zZXQoJnN0YXRzLCAwLCBzaXpl b2YoWExvZ1N0YXRzKSk7CiAKIAlwcml2YXRlLnRpbWVsaW5lID0gMTsKIAlwcml2YXRlLnN0YXJ0 cHRyID0gSW52YWxpZFhMb2dSZWNQdHI7CkBAIC0xMjg5LDcgKzExMTMsNyBAQCBtYWluKGludCBh cmdjLCBjaGFyICoqYXJndikKIAkJewogCQkJaWYgKGNvbmZpZy5zdGF0cyA9PSB0cnVlKQogCQkJ ewotCQkJCVhMb2dEdW1wQ291bnRSZWNvcmQoJmNvbmZpZywgJnN0YXRzLCB4bG9ncmVhZGVyX3N0 YXRlKTsKKwkJCQlYTG9nUmVjU3RvcmVTdGF0cygmc3RhdHMsIHhsb2dyZWFkZXJfc3RhdGUpOwog CQkJCXN0YXRzLmVuZHB0ciA9IHhsb2dyZWFkZXJfc3RhdGUtPkVuZFJlY1B0cjsKIAkJCX0KIAkJ CWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nX2ludGVybmFsLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3MveGxvZ19pbnRlcm5hbC5oCmluZGV4IDBlOTQ4MzMxMjkuLmQ3YzM1 YzM3YzQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nX2ludGVybmFsLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dfaW50ZXJuYWwuaApAQCAtMzI5LDYgKzMyOSwxMSBA QCBleHRlcm4gWExvZ1JlY1B0ciBSZXF1ZXN0WExvZ1N3aXRjaChib29sIG1hcmtfdW5pbXBvcnRh bnQpOwogCiBleHRlcm4gdm9pZCBHZXRPbGRlc3RSZXN0YXJ0UG9pbnQoWExvZ1JlY1B0ciAqb2xk cmVjcHRyLCBUaW1lTGluZUlEICpvbGR0bGkpOwogCitleHRlcm4gdm9pZCBYTG9nUmVjR2V0Qmxv Y2tSZWZJbmZvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkLAorCQkJCQkJCQkgICBjaGFyICpkZWxp bWl0ZXIsIHVpbnQzMiAqZnBpX2xlbiwKKwkJCQkJCQkJICAgYm9vbCBkZXRhaWxlZF9mb3JtYXQs CisJCQkJCQkJCSAgIFN0cmluZ0luZm8gYmxrX3JlZik7CisKIC8qCiAgKiBFeHBvcnRlZCBmb3Ig dGhlIGZ1bmN0aW9ucyBpbiB0aW1lbGluZS5jIGFuZCB4bG9nYXJjaGl2ZS5jLiAgT25seSB2YWxp ZAogICogaW4gdGhlIHN0YXJ0dXAgcHJvY2Vzcy4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy94bG9nc3RhdHMuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nc3RhdHMuaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zNmQ4MzNmODJiCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dzdGF0cy5oCkBAIC0wLDAgKzEsNDAgQEAKKy8q LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHhsb2dzdGF0cy5oCisgKgkJRGVmaW5pdGlvbnMgZm9y IFdBTCBTdGF0aXRzdGljcworICoKKyAqIENvcHlyaWdodCAoYykgMjAyMiwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJCXNyYy9p bmNsdWRlL2FjY2Vzcy94bG9nc3RhdHMuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisj aWZuZGVmIFhMT0dTVEFUU19ICisjZGVmaW5lIFhMT0dTVEFUU19ICisKKyNkZWZpbmUgTUFYX1hM SU5GT19UWVBFUyAxNgorCit0eXBlZGVmIHN0cnVjdCBYTG9nUmVjU3RhdHMKK3sKKwl1aW50NjQJ Y291bnQ7CisJdWludDY0CXJlY19sZW47CisJdWludDY0CWZwaV9sZW47Cit9IFhMb2dSZWNTdGF0 czsKKwordHlwZWRlZiBzdHJ1Y3QgWExvZ1N0YXRzCit7CisJdWludDY0CWNvdW50OworI2lmZGVm IEZST05URU5ECisJWExvZ1JlY1B0cglzdGFydHB0cjsKKwlYTG9nUmVjUHRyCWVuZHB0cjsKKyNl bmRpZgorCVhMb2dSZWNTdGF0cyAgICBybWdyX3N0YXRzW1JNX05FWFRfSURdOworCVhMb2dSZWNT dGF0cyAgICByZWNvcmRfc3RhdHNbUk1fTkVYVF9JRF1bTUFYX1hMSU5GT19UWVBFU107Cit9IFhM b2dTdGF0czsKKworZXh0ZXJuIHZvaWQgWExvZ1JlY0dldExlbihYTG9nUmVhZGVyU3RhdGUgKnJl Y29yZCwgdWludDMyICpyZWNfbGVuLAorCQkJCQkJICB1aW50MzIgKmZwaV9sZW4pOworZXh0ZXJu IHZvaWQgWExvZ1JlY1N0b3JlU3RhdHMoWExvZ1N0YXRzICpzdGF0cywgWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQpOworCisjZW5kaWYJCQkJCQkJLyogWExPR1NUQVRTX0ggKi8KLS0gCjIuMjUuMQoK --00000000000073b99905db0542b4 Content-Type: application/x-patch; name="v15-0002-pg_walinspect.patch" Content-Disposition: attachment; filename="v15-0002-pg_walinspect.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l16179bl1 RnJvbSA2MTg3M2E3NjIxNjdjMmE0YTQzMWQwODAzYjE2Mzc5NDg4M2YzYjIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjUgTWFyIDIwMjIgMDY6MTA6MjYgKzAw MDAKU3ViamVjdDogW1BBVENIIHYxNV0gcGdfd2FsaW5zcGVjdAoKLS0tCiBjb250cmliL01ha2Vm aWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBjb250cmliL3BnX3dhbGlu c3BlY3QvLmdpdGlnbm9yZSAgICAgICAgICAgICB8ICAgNCArCiBjb250cmliL3BnX3dhbGluc3Bl Y3QvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAyNiArCiBjb250cmliL3BnX3dhbGluc3BlY3Qv cGdfd2FsaW5zcGVjdC0tMS4wLnNxbCB8IDEzMiArKysrCiBjb250cmliL3BnX3dhbGluc3BlY3Qv cGdfd2FsaW5zcGVjdC5jICAgICAgICB8IDY1MyArKysrKysrKysrKysrKysrKysrCiBjb250cmli L3BnX3dhbGluc3BlY3QvcGdfd2FsaW5zcGVjdC5jb250cm9sICB8ICAgNSArCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVhZGVyLmMgICAgICB8ICAxMyArLQogc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMgICAgICAgfCAgMzMgKwogc3JjL2Jpbi9wZ193YWxk dW1wL3BnX3dhbGR1bXAuYyAgICAgICAgICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvYWNjZXNz L3hsb2cuaCAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy94 bG9nX2ludGVybmFsLmggICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MveGxv Z3JlYWRlci5oICAgICAgICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3V0 aWxzLmggICAgICAgICAgICAgICB8ICAgNCArCiAxMyBmaWxlcyBjaGFuZ2VkLCA4NzEgaW5zZXJ0 aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9wZ193 YWxpbnNwZWN0Ly5naXRpZ25vcmUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3BnX3dhbGlu c3BlY3QvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3BnX3dhbGluc3BlY3Qv cGdfd2FsaW5zcGVjdC0tMS4wLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcGdfd2Fs aW5zcGVjdC9wZ193YWxpbnNwZWN0LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3BnX3dh bGluc3BlY3QvcGdfd2FsaW5zcGVjdC5jb250cm9sCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9NYWtl ZmlsZSBiL2NvbnRyaWIvTWFrZWZpbGUKaW5kZXggMzMyYjQ4NmVjYy4uYmJmMjIwNDA3YiAxMDA2 NDQKLS0tIGEvY29udHJpYi9NYWtlZmlsZQorKysgYi9jb250cmliL01ha2VmaWxlCkBAIC00MSw2 ICs0MSw3IEBAIFNVQkRJUlMgPSBcCiAJCXBncm93bG9ja3MJXAogCQlwZ3N0YXR0dXBsZQlcCiAJ CXBnX3Zpc2liaWxpdHkJXAorCQlwZ193YWxpbnNwZWN0CVwKIAkJcG9zdGdyZXNfZmR3CVwKIAkJ c2VnCQlcCiAJCXNwaQkJXApkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ193YWxpbnNwZWN0Ly5naXRp Z25vcmUgYi9jb250cmliL3BnX3dhbGluc3BlY3QvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi41ZGNiM2ZmOTcyCi0tLSAvZGV2L251bGwKKysrIGIvY29u dHJpYi9wZ193YWxpbnNwZWN0Ly5naXRpZ25vcmUKQEAgLTAsMCArMSw0IEBACisjIEdlbmVyYXRl ZCBzdWJkaXJlY3RvcmllcworL2xvZy8KKy9yZXN1bHRzLworL3RtcF9jaGVjay8KZGlmZiAtLWdp dCBhL2NvbnRyaWIvcGdfd2FsaW5zcGVjdC9NYWtlZmlsZSBiL2NvbnRyaWIvcGdfd2FsaW5zcGVj dC9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jOTJhOTc0 NDdmCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9wZ193YWxpbnNwZWN0L01ha2VmaWxlCkBA IC0wLDAgKzEsMjYgQEAKKyMgY29udHJpYi9wZ193YWxpbnNwZWN0L01ha2VmaWxlCisKK01PRFVM RV9iaWcgPSBwZ193YWxpbnNwZWN0CitPQkpTID0gXAorCSQoV0lOMzJSRVMpIFwKKwlwZ193YWxp bnNwZWN0Lm8KK1BHRklMRURFU0MgPSAicGdfd2FsaW5zcGVjdCAtIGZ1bmN0aW9ucyB0byBpbnNw ZWN0IGNvbnRlbnRzIG9mIFBvc3RncmVTUUwgV3JpdGUtQWhlYWQgTG9nIgorCitQR19DUFBGTEFH UyA9IC1JJChsaWJwcV9zcmNkaXIpCitTSExJQl9MSU5LX0lOVEVSTkFMID0gJChsaWJwcSkKKwor RVhURU5TSU9OID0gcGdfd2FsaW5zcGVjdAorREFUQSA9IHBnX3dhbGluc3BlY3QtLTEuMC5zcWwK KworUkVHUkVTUyA9IHBnX3dhbGluc3BlY3QKKworaWZkZWYgVVNFX1BHWFMKK1BHX0NPTkZJRyA9 IHBnX2NvbmZpZworUEdYUyA6PSAkKHNoZWxsICQoUEdfQ09ORklHKSAtLXBneHMpCitpbmNsdWRl ICQoUEdYUykKK2Vsc2UKK3N1YmRpciA9IGNvbnRyaWIvcGdfd2FsaW5zcGVjdAordG9wX2J1aWxk ZGlyID0gLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwK K2luY2x1ZGUgJCh0b3Bfc3JjZGlyKS9jb250cmliL2NvbnRyaWItZ2xvYmFsLm1rCitlbmRpZgpk aWZmIC0tZ2l0IGEvY29udHJpYi9wZ193YWxpbnNwZWN0L3BnX3dhbGluc3BlY3QtLTEuMC5zcWwg Yi9jb250cmliL3BnX3dhbGluc3BlY3QvcGdfd2FsaW5zcGVjdC0tMS4wLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi45YjE5MmRkMmMxCi0tLSAvZGV2L251bGwKKysr IGIvY29udHJpYi9wZ193YWxpbnNwZWN0L3BnX3dhbGluc3BlY3QtLTEuMC5zcWwKQEAgLTAsMCAr MSwxMzIgQEAKKy8qIGNvbnRyaWIvcGdfd2FsaW5zcGVjdC9wZ193YWxpbnNwZWN0LS0xLjAuc3Fs ICovCisKKy0tIGNvbXBsYWluIGlmIHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0 aGFuIHZpYSBDUkVBVEUgRVhURU5TSU9OCitcZWNobyBVc2UgIkNSRUFURSBFWFRFTlNJT04gcGdf d2FsaW5zcGVjdCIgdG8gbG9hZCB0aGlzIGZpbGUuIFxxdWl0CisKKy0tCistLSBwZ19nZXRfd2Fs X3JlY29yZCgpCistLQorQ1JFQVRFIEZVTkNUSU9OIHBnX2dldF93YWxfcmVjb3JkKElOIGluX2xz biBwZ19sc24sCisgICAgT1VUIHN0YXJ0X2xzbiBwZ19sc24sCisgICAgT1VUIGVuZF9sc24gcGdf bHNuLAorICAgIE9VVCBwcmV2X2xzbiBwZ19sc24sCisgICAgT1VUIHJlY29yZF9sZW5ndGggaW50 NCwKKyAgICBPVVQgcmVjb3JkIGJ5dGVhCispCitBUyAnTU9EVUxFX1BBVEhOQU1FJywgJ3BnX2dl dF93YWxfcmVjb3JkJworTEFOR1VBR0UgQyBTVFJJQ1QgUEFSQUxMRUwgU0FGRTsKKworUkVWT0tF IEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfZ2V0X3dhbF9yZWNvcmQocGdfbHNuKSBGUk9NIFBVQkxJ QzsKK0dSQU5UIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfZ2V0X3dhbF9yZWNvcmQocGdfbHNuKSBU TyBwZ19yZWFkX3NlcnZlcl9maWxlczsKKworLS0KKy0tIHBnX2dldF93YWxfcmVjb3JkX2luZm8o KQorLS0KK0NSRUFURSBGVU5DVElPTiBwZ19nZXRfd2FsX3JlY29yZF9pbmZvKElOIGluX2xzbiBw Z19sc24sCisgICAgT1VUIHN0YXJ0X2xzbiBwZ19sc24sCisgICAgT1VUIGVuZF9sc24gcGdfbHNu LAorICAgIE9VVCBwcmV2X2xzbiBwZ19sc24sCisgICAgT1VUIHhpZCB4aWQsCisgICAgT1VUIHJl c291cmNlX21hbmFnZXIgdGV4dCwKKyAgICBPVVQgcmVjb3JkX2xlbmd0aCBpbnQ0LAorICAgIE9V VCBmcGlfbGVuZ3RoIGludDQsCisJT1VUIGRlc2NyaXB0aW9uIHRleHQsCisgICAgT1VUIGJsb2Nr X3JlZiB0ZXh0LAorICAgIE9VVCBkYXRhX2xlbmd0aCBpbnQ0LAorICAgIE9VVCBkYXRhIGJ5dGVh CispCitBUyAnTU9EVUxFX1BBVEhOQU1FJywgJ3BnX2dldF93YWxfcmVjb3JkX2luZm8nCitMQU5H VUFHRSBDIFNUUklDVCBQQVJBTExFTCBTQUZFOworCitSRVZPS0UgRVhFQ1VURSBPTiBGVU5DVElP TiBwZ19nZXRfd2FsX3JlY29yZF9pbmZvKHBnX2xzbikgRlJPTSBQVUJMSUM7CitHUkFOVCBFWEVD VVRFIE9OIEZVTkNUSU9OIHBnX2dldF93YWxfcmVjb3JkX2luZm8ocGdfbHNuKSBUTyBwZ19yZWFk X3NlcnZlcl9maWxlczsKKworLS0KKy0tIHBnX2dldF93YWxfcmVjb3Jkc19pbmZvKCkKKy0tCitD UkVBVEUgRlVOQ1RJT04gcGdfZ2V0X3dhbF9yZWNvcmRzX2luZm8oSU4gc3RhcnRfbHNuIHBnX2xz biwKKyAgICBJTiBlbmRfbHNuIHBnX2xzbiwKKyAgICBPVVQgc3RhcnRfbHNuIHBnX2xzbiwKKyAg ICBPVVQgZW5kX2xzbiBwZ19sc24sCisgICAgT1VUIHByZXZfbHNuIHBnX2xzbiwKKyAgICBPVVQg eGlkIHhpZCwKKyAgICBPVVQgcmVzb3VyY2VfbWFuYWdlciB0ZXh0LAorICAgIE9VVCByZWNvcmRf bGVuZ3RoIGludDQsCisgICAgT1VUIGZwaV9sZW5ndGggaW50NCwKKwlPVVQgZGVzY3JpcHRpb24g dGV4dCwKKyAgICBPVVQgYmxvY2tfcmVmIHRleHQsCisgICAgT1VUIGRhdGFfbGVuZ3RoIGludDQs CisgICAgT1VUIGRhdGEgYnl0ZWEKKykKK1JFVFVSTlMgU0VUT0YgcmVjb3JkCitBUyAnTU9EVUxF X1BBVEhOQU1FJywgJ3BnX2dldF93YWxfcmVjb3Jkc19pbmZvJworTEFOR1VBR0UgQyBTVFJJQ1Qg UEFSQUxMRUwgU0FGRTsKKworUkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfZ2V0X3dhbF9y ZWNvcmRzX2luZm8ocGdfbHNuLCBwZ19sc24pIEZST00gUFVCTElDOworR1JBTlQgRVhFQ1VURSBP TiBGVU5DVElPTiBwZ19nZXRfd2FsX3JlY29yZHNfaW5mbyhwZ19sc24sIHBnX2xzbikgVE8gcGdf cmVhZF9zZXJ2ZXJfZmlsZXM7CisKKy0tCistLSBwZ19nZXRfd2FsX3JlY29yZHNfaW5mb190aWxs X2VuZF9vZl93YWwoKQorLS0KK0NSRUFURSBGVU5DVElPTiBwZ19nZXRfd2FsX3JlY29yZHNfaW5m b190aWxsX2VuZF9vZl93YWwoSU4gc3RhcnRfbHNuIHBnX2xzbiwKKyAgICBPVVQgc3RhcnRfbHNu IHBnX2xzbiwKKyAgICBPVVQgZW5kX2xzbiBwZ19sc24sCisgICAgT1VUIHByZXZfbHNuIHBnX2xz biwKKyAgICBPVVQgeGlkIHhpZCwKKyAgICBPVVQgcmVzb3VyY2VfbWFuYWdlciB0ZXh0LAorICAg IE9VVCByZWNvcmRfbGVuZ3RoIGludDQsCisgICAgT1VUIGZwaV9sZW5ndGggaW50NCwKKwlPVVQg ZGVzY3JpcHRpb24gdGV4dCwKKyAgICBPVVQgYmxvY2tfcmVmIHRleHQsCisgICAgT1VUIGRhdGFf bGVuZ3RoIGludDQsCisgICAgT1VUIGRhdGEgYnl0ZWEKKykKK1JFVFVSTlMgU0VUT0YgcmVjb3Jk CitBUyAnTU9EVUxFX1BBVEhOQU1FJywgJ3BnX2dldF93YWxfcmVjb3Jkc19pbmZvX3RpbGxfZW5k X29mX3dhbCcKK0xBTkdVQUdFIEMgU1RSSUNUIFBBUkFMTEVMIFNBRkU7CisKK1JFVk9LRSBFWEVD VVRFIE9OIEZVTkNUSU9OIHBnX2dldF93YWxfcmVjb3Jkc19pbmZvX3RpbGxfZW5kX29mX3dhbChw Z19sc24pIEZST00gUFVCTElDOworR1JBTlQgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19nZXRfd2Fs X3JlY29yZHNfaW5mb190aWxsX2VuZF9vZl93YWwocGdfbHNuKSBUTyBwZ19yZWFkX3NlcnZlcl9m aWxlczsKKworLS0KKy0tIHBnX2dldF93YWxfc3RhdHMoKQorLS0KK0NSRUFURSBGVU5DVElPTiBw Z19nZXRfd2FsX3N0YXRzKElOIHN0YXJ0X2xzbiBwZ19sc24sCisgICAgSU4gZW5kX2xzbiBwZ19s c24sCisgICAgT1VUIHJlc291cmNlX21hbmFnZXIgdGV4dCwKKyAgICBPVVQgY291bnQgaW50OCwK KyAgICBPVVQgY291bnRfcGVyY2VudGFnZSBmbG9hdDQsCisgICAgT1VUIHJlY29yZF9zaXplIGlu dDgsCisgICAgT1VUIHJlY29yZF9zaXplX3BlcmNlbnRhZ2UgZmxvYXQ0LAorICAgIE9VVCBmcGlf c2l6ZSBpbnQ4LAorICAgIE9VVCBmcGlfc2l6ZV9wZXJjZW50YWdlIGZsb2F0NCwKKyAgICBPVVQg Y29tYmluZWRfc2l6ZSBpbnQ4LAorICAgIE9VVCBjb21iaW5lZF9zaXplX3BlcmNlbnRhZ2UgZmxv YXQ0CispCitSRVRVUk5TIFNFVE9GIHJlY29yZAorQVMgJ01PRFVMRV9QQVRITkFNRScsICdwZ19n ZXRfd2FsX3N0YXRzJworTEFOR1VBR0UgQyBTVFJJQ1QgUEFSQUxMRUwgU0FGRTsKKworUkVWT0tF IEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfZ2V0X3dhbF9zdGF0cyhwZ19sc24sIHBnX2xzbikgRlJP TSBQVUJMSUM7CitHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2dldF93YWxfc3RhdHMocGdf bHNuLCBwZ19sc24pIFRPIHBnX3JlYWRfc2VydmVyX2ZpbGVzOworCistLQorLS0gcGdfZ2V0X3dh bF9zdGF0c190aWxsX2VuZF9vZl93YWwoKQorLS0KK0NSRUFURSBGVU5DVElPTiBwZ19nZXRfd2Fs X3N0YXRzX3RpbGxfZW5kX29mX3dhbChJTiBzdGFydF9sc24gcGdfbHNuLAorICAgIE9VVCByZXNv dXJjZV9tYW5hZ2VyIHRleHQsCisgICAgT1VUIGNvdW50IGludDgsCisgICAgT1VUIGNvdW50X3Bl cmNlbnRhZ2UgZmxvYXQ0LAorICAgIE9VVCByZWNvcmRfc2l6ZSBpbnQ4LAorICAgIE9VVCByZWNv cmRfc2l6ZV9wZXJjZW50YWdlIGZsb2F0NCwKKyAgICBPVVQgZnBpX3NpemUgaW50OCwKKyAgICBP VVQgZnBpX3NpemVfcGVyY2VudGFnZSBmbG9hdDQsCisgICAgT1VUIGNvbWJpbmVkX3NpemUgaW50 OCwKKyAgICBPVVQgY29tYmluZWRfc2l6ZV9wZXJjZW50YWdlIGZsb2F0NAorKQorUkVUVVJOUyBT RVRPRiByZWNvcmQKK0FTICdNT0RVTEVfUEFUSE5BTUUnLCAncGdfZ2V0X3dhbF9zdGF0c190aWxs X2VuZF9vZl93YWwnCitMQU5HVUFHRSBDIFNUUklDVCBQQVJBTExFTCBTQUZFOworCitSRVZPS0Ug RVhFQ1VURSBPTiBGVU5DVElPTiBwZ19nZXRfd2FsX3N0YXRzX3RpbGxfZW5kX29mX3dhbChwZ19s c24pIEZST00gUFVCTElDOworR1JBTlQgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19nZXRfd2FsX3N0 YXRzX3RpbGxfZW5kX29mX3dhbChwZ19sc24pIFRPIHBnX3JlYWRfc2VydmVyX2ZpbGVzOwpkaWZm IC0tZ2l0IGEvY29udHJpYi9wZ193YWxpbnNwZWN0L3BnX3dhbGluc3BlY3QuYyBiL2NvbnRyaWIv cGdfd2FsaW5zcGVjdC9wZ193YWxpbnNwZWN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uMGFhNGMwYWVlZAotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcGdfd2Fs aW5zcGVjdC9wZ193YWxpbnNwZWN0LmMKQEAgLTAsMCArMSw2NTMgQEAKKy8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICoKKyAqIHBnX3dhbGluc3BlY3QuYworICoJCSAgRnVuY3Rpb25zIHRvIGluc3BlY3Qg Y29udGVudHMgb2YgUG9zdGdyZVNRTCBXcml0ZS1BaGVhZCBMb2cKKyAqCisgKiBDb3B5cmlnaHQg KGMpIDIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURF TlRJRklDQVRJT04KKyAqCQkgIGNvbnRyaWIvcGdfd2FsaW5zcGVjdC9wZ193YWxpbnNwZWN0LmMK KyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNp bmNsdWRlICJhY2Nlc3MveGxvZy5oIgorI2luY2x1ZGUgImFjY2Vzcy94bG9nX2ludGVybmFsLmgi CisjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWFkZXIuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ3Jl Y292ZXJ5LmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dzdGF0cy5oIgorI2luY2x1ZGUgImFjY2Vz cy94bG9ndXRpbHMuaCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWlzY2FkbWlu LmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9wZ19sc24u aCIKKworLyoKKyAqIE5PVEU6IEZvciBhbnkgY29kZSBjaGFuZ2Ugb3IgaXNzdWUgZml4IGhlcmUs IGl0IGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0bworICogZ2l2ZSBhIHRob3VnaHQgYWJvdXQgZG9p bmcgdGhlIHNhbWUgaW4gcGdfd2FsZHVtcCB0b29sIGFzIHdlbGwuCisgKi8KKworUEdfTU9EVUxF X01BR0lDOworCitQR19GVU5DVElPTl9JTkZPX1YxKHBnX2dldF93YWxfcmVjb3JkKTsKK1BHX0ZV TkNUSU9OX0lORk9fVjEocGdfZ2V0X3dhbF9yZWNvcmRfaW5mbyk7CitQR19GVU5DVElPTl9JTkZP X1YxKHBnX2dldF93YWxfcmVjb3Jkc19pbmZvKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEocGdfZ2V0 X3dhbF9yZWNvcmRzX2luZm9fdGlsbF9lbmRfb2Zfd2FsKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEo cGdfZ2V0X3dhbF9zdGF0cyk7CitQR19GVU5DVElPTl9JTkZPX1YxKHBnX2dldF93YWxfc3RhdHNf dGlsbF9lbmRfb2Zfd2FsKTsKKwordHlwZWRlZiB2b2lkICgqR2V0V0FMRGV0YWlsc0NCKSAoRnVu Y3Rpb25DYWxsSW5mbyBmY2luZm8sCisJCQkJCQkJCSBYTG9nUmVjUHRyIHN0YXJ0X2xzbiwKKwkJ CQkJCQkJIFhMb2dSZWNQdHIgZW5kX2xzbik7CisKK3N0YXRpYyBib29sIElzRnV0dXJlTFNOKFhM b2dSZWNQdHIgbHNuLCBYTG9nUmVjUHRyICpjdXJyX2xzbik7CitzdGF0aWMgWExvZ1JlYWRlclN0 YXRlICpJbml0WExvZ1JlYWRlclN0YXRlKFhMb2dSZWNQdHIgbHNuLAorCQkJCQkJCQkJCQlYTG9n UmVjUHRyICpmaXJzdF9yZWNvcmQpOworc3RhdGljIFhMb2dSZWNvcmQgKlJlYWROZXh0WExvZ1Jl Y29yZChYTG9nUmVhZGVyU3RhdGUgKnhsb2dyZWFkZXIsCisJCQkJCQkJCQkgIFhMb2dSZWNQdHIg Zmlyc3RfcmVjb3JkKTsKK3N0YXRpYyBEYXR1bSBHZXRXQUxSZWNvcmRJbnRlcm5hbChGdW5jdGlv bkNhbGxJbmZvIGZjaW5mbywgRGF0dW0gKnZhbHVlcywKKwkJCQkJCQkJICBib29sICpudWxscywg dWludDMyIG5jb2xzLCBib29sIGdldF9pbmZvKTsKK3N0YXRpYyB2b2lkIEdldFhMb2dSZWNvcmRJ bmZvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQkgIERh dHVtICp2YWx1ZXMsIGJvb2wgKm51bGxzLCB1aW50MzIgbmNvbHMpOworc3RhdGljIHZvaWQgR2V0 V0FMRGV0YWlsc0d1dHMoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wgdGlsbF9lbmRfb2Zf d2FsLAorCQkJCQkJCSAgR2V0V0FMRGV0YWlsc0NCIHdhbF9kZXRhaWxzX2NiKTsKK3N0YXRpYyB2 b2lkIEdldFdBTFJlY29yZHNJbmZvKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBYTG9nUmVjUHRy IHN0YXJ0X2xzbiwKKwkJCQkJCQkgIFhMb2dSZWNQdHIgZW5kX2xzbik7CitzdGF0aWMgdm9pZCBH ZXRYTG9nU3VtbWFyeVN0YXRzKFhMb2dTdGF0cyAqIHN0YXRzLCBSZXR1cm5TZXRJbmZvICpyc2lu Zm8sCisJCQkJCQkJCURhdHVtICp2YWx1ZXMsIGJvb2wgKm51bGxzLCB1aW50MzIgbmNvbHMpOwor c3RhdGljIHZvaWQgRmlsbFhMb2dTdGF0c1Jvdyhjb25zdCBjaGFyICpuYW1lLCB1aW50NjQgbiwg dWludDY0IHRvdGFsX2NvdW50LAorCQkJCQkJCSB1aW50NjQgcmVjX2xlbiwgdWludDY0IHRvdGFs X3JlY19sZW4sCisJCQkJCQkJIHVpbnQ2NCBmcGlfbGVuLCB1aW50NjQgdG90YWxfZnBpX2xlbiwK KwkJCQkJCQkgdWludDY0IHRvdF9sZW4sIHVpbnQ2NCB0b3RhbF9sZW4sCisJCQkJCQkJIERhdHVt ICp2YWx1ZXMsIGJvb2wgKm51bGxzLCB1aW50MzIgbmNvbHMpOworc3RhdGljIHZvaWQgR2V0V2Fs U3RhdHMoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIFhMb2dSZWNQdHIgc3RhcnRfbHNuLAorCQkJ CQkJWExvZ1JlY1B0ciBlbmRfbHNuKTsKKworLyoKKyAqIERldGVybWludGUgaWYgdGhlIGdpdmVu IExTTiBpcyBpbiBmdXR1cmUgYW5kIHJldHVybiB0aGUgTFNOIHVwIHRvIHdoaWNoIHRoZQorICog c2VydmVyIGhhcyBXQUwuCisgKi8KK3N0YXRpYyBib29sCitJc0Z1dHVyZUxTTihYTG9nUmVjUHRy IGxzbiwgWExvZ1JlY1B0ciAqY3Vycl9sc24pCit7CisJLyoKKwkgKiBXZSBkZXRlcm1pbmUgdGhl IGN1cnJlbnQgTFNOIG9mIHRoZSBzZXJ2ZXIgc2ltaWxhciB0byBob3cgcGFnZV9yZWFkCisJICog Y2FsbGJhY2sgcmVhZF9sb2NhbF94bG9nX3BhZ2Vfbm9fd2FpdCBkb2VzLgorCSAqLworCWlmICgh UmVjb3ZlcnlJblByb2dyZXNzKCkpCisJCSpjdXJyX2xzbiA9IEdldEZsdXNoUmVjUHRyKE5VTEwp OworCWVsc2UKKwkJKmN1cnJfbHNuID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMKTsKKworCUFz c2VydCghWExvZ1JlY1B0cklzSW52YWxpZCgqY3Vycl9sc24pKTsKKworCWlmIChsc24gPj0gKmN1 cnJfbHNuKQorCQlyZXR1cm4gdHJ1ZTsKKworCXJldHVybiBmYWxzZTsKK30KKworLyoKKyAqIElu dGlhbGl6ZSBXQUwgcmVhZGVyIGFuZCBpZGVudGlmeSBmaXJzdCB2YWxpZCBMU04uCisgKi8KK3N0 YXRpYyBYTG9nUmVhZGVyU3RhdGUgKgorSW5pdFhMb2dSZWFkZXJTdGF0ZShYTG9nUmVjUHRyIGxz biwgWExvZ1JlY1B0ciAqZmlyc3RfcmVjb3JkKQoreworCVhMb2dSZWFkZXJTdGF0ZSAqeGxvZ3Jl YWRlcjsKKworCS8qCisJICogUmVhZGluZyBXQUwgYmVsb3cgdGhlIGZpcnN0IHBhZ2Ugb2YgdGhl IGZpcnN0IHNnZW1lbnRzIGlzbid0IGFsbG93ZWQuCisJICogVGhpcyBpcyBhIGJvb3RzdHJhcCBX QUwgcGFnZSBhbmQgdGhlIHBhZ2VfcmVhZCBjYWxsYmFjayBmYWlscyB0byByZWFkCisJICogaXQu CisJICovCisJaWYgKGxzbiA8IFhMT0dfQkxDS1NaKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShl cnJtc2coImNvdWxkIG5vdCByZWFkIFdBTCBhdCBMU04gJVgvJVgiLAorCQkJCQkJTFNOX0ZPUk1B VF9BUkdTKGxzbikpKSk7CisKKwl4bG9ncmVhZGVyID0gWExvZ1JlYWRlckFsbG9jYXRlKHdhbF9z ZWdtZW50X3NpemUsIE5VTEwsCisJCQkJCQkJCQlYTF9ST1VUSU5FKC5wYWdlX3JlYWQgPSAmcmVh ZF9sb2NhbF94bG9nX3BhZ2Vfbm9fd2FpdCwKKwkJCQkJCQkJCQkJICAgLnNlZ21lbnRfb3BlbiA9 ICZ3YWxfc2VnbWVudF9vcGVuLAorCQkJCQkJCQkJCQkgICAuc2VnbWVudF9jbG9zZSA9ICZ3YWxf c2VnbWVudF9jbG9zZSksCisJCQkJCQkJCQlOVUxMKTsKKworCWlmICh4bG9ncmVhZGVyID09IE5V TEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PVVRfT0ZfTUVNT1JZ KSwKKwkJCQkgZXJybXNnKCJvdXQgb2YgbWVtb3J5IiksCisJCQkJIGVycmRldGFpbCgiRmFpbGVk IHdoaWxlIGFsbG9jYXRpbmcgYSBXQUwgcmVhZGluZyBwcm9jZXNzb3IuIikpKTsKKworCS8qIEZp cnN0IGZpbmQgYSB2YWxpZCByZWNwdHIgdG8gc3RhcnQgZnJvbS4gKi8KKwkqZmlyc3RfcmVjb3Jk ID0gWExvZ0ZpbmROZXh0UmVjb3JkKHhsb2dyZWFkZXIsIGxzbik7CisKKwlpZiAoWExvZ1JlY1B0 cklzSW52YWxpZCgqZmlyc3RfcmVjb3JkKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNn KCJjb3VsZCBub3QgZmluZCBhIHZhbGlkIHJlY29yZCBhZnRlciAlWC8lWCIsCisJCQkJCQlMU05f Rk9STUFUX0FSR1MobHNuKSkpKTsKKworCXJldHVybiB4bG9ncmVhZGVyOworfQorCisvKgorICog UmVhZCBuZXh0IFdBTCByZWNvcmQuCisgKi8KK3N0YXRpYyBYTG9nUmVjb3JkICoKK1JlYWROZXh0 WExvZ1JlY29yZChYTG9nUmVhZGVyU3RhdGUgKnhsb2dyZWFkZXIsIFhMb2dSZWNQdHIgZmlyc3Rf cmVjb3JkKQoreworCVhMb2dSZWNvcmQgKnJlY29yZDsKKwljaGFyCSplcnJvcm1zZzsKKworCXJl Y29yZCA9IFhMb2dSZWFkUmVjb3JkKHhsb2dyZWFkZXIsICZlcnJvcm1zZyk7CisKKwlpZiAocmVj b3JkID09IE5VTEwpCisJeworCQlpZiAoZXJyb3Jtc2cpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKKwkJCQkJIGVycm1zZygiY291bGQgbm90IHJl YWQgV0FMIGF0ICVYLyVYOiAlcyIsCisJCQkJCQkJTFNOX0ZPUk1BVF9BUkdTKGZpcnN0X3JlY29y ZCksIGVycm9ybXNnKSkpOworCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29k ZV9mb3JfZmlsZV9hY2Nlc3MoKSwKKwkJCQkJIGVycm1zZygiY291bGQgbm90IHJlYWQgV0FMIGF0 ICVYLyVYIiwKKwkJCQkJCQlMU05fRk9STUFUX0FSR1MoZmlyc3RfcmVjb3JkKSkpKTsKKwl9CisK KwlyZXR1cm4gcmVjb3JkOworfQorCisvKgorICogR2V0IFdBTCByZWNvcmQgaW5mby4KKyAqLwor c3RhdGljIHZvaWQKK0dldFhMb2dSZWNvcmRJbmZvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkLCBY TG9nUmVjUHRyIGxzbiwKKwkJCQkgIERhdHVtICp2YWx1ZXMsIGJvb2wgKm51bGxzLCB1aW50MzIg bmNvbHMpCit7CisJY29uc3QgY2hhciAqaWQ7CisJY29uc3QgUm1nckRhdGEgKmRlc2M7CisJdWlu dDMyCWZwaV9sZW4gPSAwOworCVN0cmluZ0luZm9EYXRhIHJlY19kZXNjOworCVN0cmluZ0luZm9E YXRhIHJlY19ibGtfcmVmOworCWJ5dGVhCSpkYXRhOworCWNoYXIJKm1haW5fZGF0YTsKKwl1aW50 MzIJbWFpbl9kYXRhX2xlbjsKKwlpbnQJaSA9IDA7CisKKwlkZXNjID0gJlJtZ3JUYWJsZVtYTG9n UmVjR2V0Um1pZChyZWNvcmQpXTsKKwlpbml0U3RyaW5nSW5mbygmcmVjX2Rlc2MpOworCWlkID0g ZGVzYy0+cm1faWRlbnRpZnkoWExvZ1JlY0dldEluZm8ocmVjb3JkKSk7CisKKwlpZiAoaWQgPT0g TlVMTCkKKwkJYXBwZW5kU3RyaW5nSW5mbygmcmVjX2Rlc2MsICJVTktOT1dOICgleCkgIiwgWExv Z1JlY0dldEluZm8ocmVjb3JkKSAmIH5YTFJfSU5GT19NQVNLKTsKKwllbHNlCisJCWFwcGVuZFN0 cmluZ0luZm8oJnJlY19kZXNjLCAiJXMgIiwgaWQpOworCisJZGVzYy0+cm1fZGVzYygmcmVjX2Rl c2MsIHJlY29yZCk7CisKKwkvKiBCbG9jayByZWZlcmVuY2VzLiAqLworCWluaXRTdHJpbmdJbmZv KCZyZWNfYmxrX3JlZik7CisJWExvZ1JlY0dldEJsb2NrUmVmSW5mbyhyZWNvcmQsIE5VTEwsICZm cGlfbGVuLCB0cnVlLCAmcmVjX2Jsa19yZWYpOworCisJbWFpbl9kYXRhX2xlbiA9IFhMb2dSZWNH ZXREYXRhTGVuKHJlY29yZCk7CisJZGF0YSA9IChieXRlYSAqKSBwYWxsb2MobWFpbl9kYXRhX2xl biArIFZBUkhEUlNaKTsKKwlTRVRfVkFSU0laRShkYXRhLCBtYWluX2RhdGFfbGVuICsgVkFSSERS U1opOworCW1haW5fZGF0YSA9IFZBUkRBVEEoZGF0YSk7CisJbWVtY3B5KG1haW5fZGF0YSwgWExv Z1JlY0dldERhdGEocmVjb3JkKSwgbWFpbl9kYXRhX2xlbik7CisKKwl2YWx1ZXNbaSsrXSA9IExT TkdldERhdHVtKGxzbik7CisJdmFsdWVzW2krK10gPSBMU05HZXREYXR1bShyZWNvcmQtPkVuZFJl Y1B0ciAtIDEpOworCXZhbHVlc1tpKytdID0gTFNOR2V0RGF0dW0oWExvZ1JlY0dldFByZXYocmVj b3JkKSk7CisJdmFsdWVzW2krK10gPSBUcmFuc2FjdGlvbklkR2V0RGF0dW0oWExvZ1JlY0dldFhp ZChyZWNvcmQpKTsKKwl2YWx1ZXNbaSsrXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oZGVzYy0+cm1f bmFtZSk7CisJdmFsdWVzW2krK10gPSBVSW50MzJHZXREYXR1bShYTG9nUmVjR2V0VG90YWxMZW4o cmVjb3JkKSk7CisJdmFsdWVzW2krK10gPSBVSW50MzJHZXREYXR1bShmcGlfbGVuKTsKKwl2YWx1 ZXNbaSsrXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0ocmVjX2Rlc2MuZGF0YSk7CisJdmFsdWVzW2kr K10gPSBDU3RyaW5nR2V0VGV4dERhdHVtKHJlY19ibGtfcmVmLmRhdGEpOworCXZhbHVlc1tpKytd ID0gVUludDMyR2V0RGF0dW0obWFpbl9kYXRhX2xlbik7CisJdmFsdWVzW2krK10gPSBQb2ludGVy R2V0RGF0dW0oZGF0YSk7CisKKwlBc3NlcnQoaSA9PSBuY29scyk7Cit9CisKKy8qCisgKiBHZXQg V0FMIHJlY29yZCBkYXRhIG9yIGluZm8uCisgKi8KK0RhdHVtCitHZXRXQUxSZWNvcmRJbnRlcm5h bChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgRGF0dW0gKnZhbHVlcywgYm9vbCAqbnVsbHMsCisJ CQkJCSB1aW50MzIgbmNvbHMsIGJvb2wgZ2V0X2luZm8pCit7CisJWExvZ1JlY1B0cglsc247CisJ WExvZ1JlY1B0cgljdXJyX2xzbjsKKwlYTG9nUmVjb3JkICpyZWNvcmQ7CisJWExvZ1JlY1B0cglm aXJzdF9yZWNvcmQ7CisJWExvZ1JlYWRlclN0YXRlICp4bG9ncmVhZGVyOworCVR1cGxlRGVzYwl0 dXBkZXNjOworCUhlYXBUdXBsZQl0dXBsZTsKKwlEYXR1bQlyZXN1bHQ7CisKKwlsc24gPSBQR19H RVRBUkdfTFNOKDApOworCisJaWYgKElzRnV0dXJlTFNOKGxzbiwgJmN1cnJfbHNuKSkKKwl7CisJ CS8qCisJCSAqIEdldEZsdXNoUmVjUHRyIG9yIEdldFhMb2dSZXBsYXlSZWNQdHIgZ2l2ZXMgImVu ZCsxIiBMU04gb2YgdGhlIGxhc3QKKwkJICogcmVjb3JkIGZsdXNoZWQgb3IgcmVwbGF5ZWQgcmVz cGVjdGl2ZWx5LiBCdXQgbGV0J3MgdXNlIHRoZSBMU04gdXAKKwkJICogdG8gImVuZCIgaW4gdXNl ciBmYWNpbmcgbWVzc2FnZS4KKwkJICovCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZygiY2Fubm90IGFj Y2VwdCBmdXR1cmUgaW5wdXQgTFNOIiksCisJCQkJIGVycmRldGFpbCgiTGFzdCBXQUwgcmVjb3Jk IG9uIHRoZSBkYXRhYmFzZSBzeXN0ZW0gZW5kcyBhdCBMU04gJVgvJVguIiwKKwkJCQkJCSAgIExT Tl9GT1JNQVRfQVJHUyhjdXJyX2xzbiAtIDEpKSkpOworCX0KKworCS8qIEJ1aWxkIGEgdHVwbGUg ZGVzY3JpcHRvciBmb3Igb3VyIHJlc3VsdCB0eXBlLiAqLworCWlmIChnZXRfY2FsbF9yZXN1bHRf dHlwZShmY2luZm8sIE5VTEwsICZ0dXBkZXNjKSAhPSBUWVBFRlVOQ19DT01QT1NJVEUpCisJCWVs b2coRVJST1IsICJyZXR1cm4gdHlwZSBtdXN0IGJlIGEgcm93IHR5cGUiKTsKKworCXhsb2dyZWFk ZXIgPSBJbml0WExvZ1JlYWRlclN0YXRlKGxzbiwgJmZpcnN0X3JlY29yZCk7CisKKwlBc3NlcnQo eGxvZ3JlYWRlcik7CisKKwlyZWNvcmQgPSBSZWFkTmV4dFhMb2dSZWNvcmQoeGxvZ3JlYWRlciwg Zmlyc3RfcmVjb3JkKTsKKworCU1lbVNldCh2YWx1ZXMsIDAsIG5jb2xzKTsKKwlNZW1TZXQobnVs bHMsIDAsIG5jb2xzKTsKKworCWlmIChnZXRfaW5mbykKKwl7CisJCUdldFhMb2dSZWNvcmRJbmZv KHhsb2dyZWFkZXIsIGZpcnN0X3JlY29yZCwgdmFsdWVzLCBudWxscywKKwkJCQkJCSAgbmNvbHMp OworCX0KKwllbHNlCisJeworCQlieXRlYQkqcmVjOworCQl1aW50MzIJcmVjX2xlbjsKKwkJY2hh cgkqcmVjX2RhdGE7CisJCWludAlpID0gMDsKKworCQlyZWNfbGVuID0gWExvZ1JlY0dldFRvdGFs TGVuKHhsb2dyZWFkZXIpOworCisJCUFzc2VydChyZWNfbGVuID4gMCk7CisKKwkJcmVjID0gKGJ5 dGVhICopIHBhbGxvYyhyZWNfbGVuICsgVkFSSERSU1opOworCQlTRVRfVkFSU0laRShyZWMsIHJl Y19sZW4gKyBWQVJIRFJTWik7CisJCXJlY19kYXRhID0gVkFSREFUQShyZWMpOworCisJCW1lbWNw eShyZWNfZGF0YSwgcmVjb3JkLCByZWNfbGVuKTsKKworCQl2YWx1ZXNbaSsrXSA9IExTTkdldERh dHVtKGZpcnN0X3JlY29yZCk7CisJCXZhbHVlc1tpKytdID0gTFNOR2V0RGF0dW0oeGxvZ3JlYWRl ci0+RW5kUmVjUHRyIC0gMSk7CisJCXZhbHVlc1tpKytdID0gTFNOR2V0RGF0dW0oWExvZ1JlY0dl dFByZXYoeGxvZ3JlYWRlcikpOworCQl2YWx1ZXNbaSsrXSA9IFVJbnQzMkdldERhdHVtKHJlY19s ZW4pOworCQl2YWx1ZXNbaSsrXSA9IFBvaW50ZXJHZXREYXR1bShyZWMpOworCisJCUFzc2VydChp ID09IG5jb2xzKTsKKwl9CisKKwlYTG9nUmVhZGVyRnJlZSh4bG9ncmVhZGVyKTsKKworCXR1cGxl ID0gaGVhcF9mb3JtX3R1cGxlKHR1cGRlc2MsIHZhbHVlcywgbnVsbHMpOworCXJlc3VsdCA9IEhl YXBUdXBsZUdldERhdHVtKHR1cGxlKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBH ZXQgV0FMIHJlY29yZC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGVtaXRzIGFuIGVycm9yIGlmIGEg ZnV0dXJlIFdBTCBMU04gaS5lLiBXQUwgTFNOIHRoZSBkYXRhYmFzZQorICogc3lzdGVtIGRvZXNu J3Qga25vdyBhYm91dCBpcyBzcGVjaWZpZWQuCisgKi8KK0RhdHVtCitwZ19nZXRfd2FsX3JlY29y ZChQR19GVU5DVElPTl9BUkdTKQoreworI2RlZmluZSBQR19HRVRfV0FMX1JFQ09SRF9DT0xTIDUK KwlEYXR1bQlyZXN1bHQ7CisJRGF0dW0JdmFsdWVzW1BHX0dFVF9XQUxfUkVDT1JEX0NPTFNdOwor CWJvb2wJbnVsbHNbUEdfR0VUX1dBTF9SRUNPUkRfQ09MU107CisKKwlyZXN1bHQgPSBHZXRXQUxS ZWNvcmRJbnRlcm5hbChmY2luZm8sIHZhbHVlcywgbnVsbHMsCisJCQkJCQkJCSAgUEdfR0VUX1dB TF9SRUNPUkRfQ09MUywKKwkJCQkJCQkJICBmYWxzZSk7CisKKwlQR19SRVRVUk5fREFUVU0ocmVz dWx0KTsKKyN1bmRlZiBQR19HRVRfV0FMX1JFQ09SRF9DT0xTCit9CisKKy8qCisgKiBHZXQgV0FM IHJlY29yZCBpbmZvIGFuZCBkYXRhLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gZW1pdHMgYW4gZXJy b3IgaWYgYSBmdXR1cmUgV0FMIExTTiBpLmUuIFdBTCBMU04gdGhlIGRhdGFiYXNlCisgKiBzeXN0 ZW0gZG9lc24ndCBrbm93IGFib3V0IGlzIHNwZWNpZmllZC4KKyAqLworRGF0dW0KK3BnX2dldF93 YWxfcmVjb3JkX2luZm8oUEdfRlVOQ1RJT05fQVJHUykKK3sKKyNkZWZpbmUgUEdfR0VUX1dBTF9S RUNPUkRfSU5GT19DT0xTIDExCisJRGF0dW0JcmVzdWx0OworCURhdHVtCXZhbHVlc1tQR19HRVRf V0FMX1JFQ09SRF9JTkZPX0NPTFNdOworCWJvb2wJbnVsbHNbUEdfR0VUX1dBTF9SRUNPUkRfSU5G T19DT0xTXTsKKworCXJlc3VsdCA9IEdldFdBTFJlY29yZEludGVybmFsKGZjaW5mbywgdmFsdWVz LCBudWxscywKKwkJCQkJCQkJICBQR19HRVRfV0FMX1JFQ09SRF9JTkZPX0NPTFMsCisJCQkJCQkJ CSAgdHJ1ZSk7CisKKwlQR19SRVRVUk5fREFUVU0ocmVzdWx0KTsKKyN1bmRlZiBQR19HRVRfV0FM X1JFQ09SRF9JTkZPX0NPTFMKK30KKworLyoKKyAqIEdldCBXQUwgZGV0YWlscyBzdWNoIGFzIHJl Y29yZCBpbmZvLCBzdGF0cyB1c2luZyB0aGUgcGFzc2VkIGluIGNhbGxiYWNrLgorICovCitzdGF0 aWMgdm9pZAorR2V0V0FMRGV0YWlsc0d1dHMoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wg dGlsbF9lbmRfb2Zfd2FsLAorCQkJCSAgR2V0V0FMRGV0YWlsc0NCIHdhbF9kZXRhaWxzX2NiKQor eworCVhMb2dSZWNQdHIJc3RhcnRfbHNuOworCVhMb2dSZWNQdHIJZW5kX2xzbjsKKwlYTG9nUmVj UHRyCWN1cnJfbHNuOworCisJc3RhcnRfbHNuID0gUEdfR0VUQVJHX0xTTigwKTsKKworCS8qIElm IG5vdCB0aWxsIGVuZCBvZiB3YWwsIGVuZF9sc24gd291bGQgaGF2ZSBiZWVuIHNwZWNpZmllZC4g Ki8KKwlpZiAoIXRpbGxfZW5kX29mX3dhbCkKKwkJZW5kX2xzbiA9IFBHX0dFVEFSR19MU04oMSk7 CisKKwlpZiAoSXNGdXR1cmVMU04oc3RhcnRfbHNuLCAmY3Vycl9sc24pKQorCXsKKwkJLyoKKwkJ ICogR2V0Rmx1c2hSZWNQdHIgb3IgR2V0WExvZ1JlcGxheVJlY1B0ciBnaXZlcyAiZW5kKzEiIExT TiBvZiB0aGUgbGFzdAorCQkgKiByZWNvcmQgZmx1c2hlZCBvciByZXBsYXllZCByZXNwZWN0aXZl bHkuIEJ1dCBsZXQncyB1c2UgdGhlIExTTiB1cAorCQkgKiB0byAiZW5kIiBpbiB1c2VyIGZhY2lu ZyBtZXNzYWdlLgorCQkgKi8KKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgYWNjZXB0IGZ1 dHVyZSBzdGFydCBMU04iKSwKKwkJCQkgZXJyZGV0YWlsKCJMYXN0IFdBTCByZWNvcmQgb24gdGhl IGRhdGFiYXNlIHN5c3RlbSBlbmRzIGF0IExTTiAlWC8lWC4iLAorCQkJCQkJICAgTFNOX0ZPUk1B VF9BUkdTKGN1cnJfbHNuIC0gMSkpKSk7CisJfQorCisJaWYgKCF0aWxsX2VuZF9vZl93YWwgJiYg ZW5kX2xzbiA+PSBjdXJyX2xzbikKKwl7CisJCS8qCisJCSAqIEdldEZsdXNoUmVjUHRyIG9yIEdl dFhMb2dSZXBsYXlSZWNQdHIgZ2l2ZXMgImVuZCsxIiBMU04gb2YgdGhlIGxhc3QKKwkJICogcmVj b3JkIGZsdXNoZWQgb3IgcmVwbGF5ZWQgcmVzcGVjdGl2ZWx5LiBCdXQgbGV0J3MgdXNlIHRoZSBM U04gdXAKKwkJICogdG8gImVuZCIgaW4gdXNlciBmYWNpbmcgbWVzc2FnZS4KKwkJICovCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxV RSksCisJCQkJIGVycm1zZygiY2Fubm90IGFjY2VwdCBmdXR1cmUgZW5kIExTTiIpLAorCQkJCSBl cnJkZXRhaWwoIkxhc3QgV0FMIHJlY29yZCBvbiB0aGUgZGF0YWJhc2Ugc3lzdGVtIGVuZHMgYXQg TFNOICVYLyVYLiIsCisJCQkJCQkgICBMU05fRk9STUFUX0FSR1MoY3Vycl9sc24gLSAxKSkpKTsK Kwl9CisKKwkvKgorCSAqIEdldEZsdXNoUmVjUHRyIG9yIEdldFhMb2dSZXBsYXlSZWNQdHIgZ2l2 ZXMgImVuZCsxIiBMU04gb2YgdGhlIGxhc3QKKwkgKiByZWNvcmQgZmx1c2hlZCBvciByZXBsYXll ZCByZXNwZWN0aXZlbHkuIEJ1dCBsZXQncyB1c2UgdGhlIExTTiB1cCB0bworCSAqICJlbmQiLgor CSAqLworCWlmICh0aWxsX2VuZF9vZl93YWwpCisJCWVuZF9sc24gPSBjdXJyX2xzbiAtIDE7CisK KwlpZiAoc3RhcnRfbHNuID49IGVuZF9sc24pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZygiV0FMIHN0 YXJ0IExTTiBtdXN0IGJlIGxlc3MgdGhhbiBlbmQgTFNOIikpKTsKKworCXdhbF9kZXRhaWxzX2Ni KGZjaW5mbywgc3RhcnRfbHNuLCBlbmRfbHNuKTsKK30KKworLyoKKyAqIEdldCBpbmZvIGFuZCBk YXRhIG9mIGFsbCBXQUwgcmVjb3JkcyBiZXR3ZWVuIHN0YXJ0IExTTiBhbmQgZW5kIExTTi4KKyAq Lworc3RhdGljIHZvaWQKK0dldFdBTFJlY29yZHNJbmZvKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZv LCBYTG9nUmVjUHRyIHN0YXJ0X2xzbiwKKwkJCQkgIFhMb2dSZWNQdHIgZW5kX2xzbikKK3sKKyNk ZWZpbmUgUEdfR0VUX1dBTF9SRUNPUkRTX0lORk9fQ09MUyAxMQorCVhMb2dSZWNQdHIJZmlyc3Rf cmVjb3JkOworCVhMb2dSZWFkZXJTdGF0ZSAqeGxvZ3JlYWRlcjsKKwlSZXR1cm5TZXRJbmZvICpy c2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87CisJRGF0dW0JdmFs dWVzW1BHX0dFVF9XQUxfUkVDT1JEU19JTkZPX0NPTFNdOworCWJvb2wJbnVsbHNbUEdfR0VUX1dB TF9SRUNPUkRTX0lORk9fQ09MU107CisKKwlTZXRTaW5nbGVGdW5jQ2FsbChmY2luZm8sIDApOwor CisJeGxvZ3JlYWRlciA9IEluaXRYTG9nUmVhZGVyU3RhdGUoc3RhcnRfbHNuLCAmZmlyc3RfcmVj b3JkKTsKKworCUFzc2VydCh4bG9ncmVhZGVyKTsKKworCU1lbVNldCh2YWx1ZXMsIDAsIHNpemVv Zih2YWx1ZXMpKTsKKwlNZW1TZXQobnVsbHMsIDAsIHNpemVvZihudWxscykpOworCisJZm9yICg7 OykKKwl7CisJCSh2b2lkKSBSZWFkTmV4dFhMb2dSZWNvcmQoeGxvZ3JlYWRlciwgZmlyc3RfcmVj b3JkKTsKKworCQkvKgorCQkgKiBMZXQncyBub3Qgc2hvdyB0aGUgcmVjb3JkIGluZm8gaWYgaXQg aXMgc3Bhbm5pbmcgbW9yZSB0aGFuIHRoZQorCQkgKiBlbmRfbHNuLiBFbmRSZWNQdHIgaXMgImVu ZCsxIiBvZiB0aGUgbGFzdCByZWFkIHJlY29yZCwgaGVuY2UKKwkJICogdXNlICJlbmQiIGhlcmUu CisJCSAqLworCQlpZiAoKHhsb2dyZWFkZXItPkVuZFJlY1B0ciAtIDEpIDw9IGVuZF9sc24pCisJ CXsKKwkJCUdldFhMb2dSZWNvcmRJbmZvKHhsb2dyZWFkZXIsIHhsb2dyZWFkZXItPmN1cnJSZWNQ dHIsIHZhbHVlcywgbnVsbHMsCisJCQkJCQkJICBQR19HRVRfV0FMX1JFQ09SRFNfSU5GT19DT0xT KTsKKworCQkJdHVwbGVzdG9yZV9wdXR2YWx1ZXMocnNpbmZvLT5zZXRSZXN1bHQsIHJzaW5mby0+ c2V0RGVzYywKKwkJCQkJCQkJIHZhbHVlcywgbnVsbHMpOworCQl9CisKKwkJLyogRXhpdCBsb29w IGlmIHJlYWQgdXAgdG8gZW5kX2xzbi4gKi8KKwkJaWYgKHhsb2dyZWFkZXItPkVuZFJlY1B0ciA+ PSBlbmRfbHNuKQorCQkJYnJlYWs7CisKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwl9CisK KwlYTG9nUmVhZGVyRnJlZSh4bG9ncmVhZGVyKTsKKworI3VuZGVmIFBHX0dFVF9XQUxfUkVDT1JE U19JTkZPX0NPTFMKK30KKworLyoKKyAqIEdldCBpbmZvIGFuZCBkYXRhIG9mIGFsbCBXQUwgcmVj b3JkcyBiZXR3ZWVuIHN0YXJ0IExTTiBhbmQgZW5kIExTTi4KKyAqCisgKiBUaGlzIGZ1bmN0aW9u IGVtaXRzIGFuIGVycm9yIGlmIGEgZnV0dXJlIHN0YXJ0IG9yIGVuZCBXQUwgTFNOIGkuZS4gV0FM IExTTgorICogdGhlIGRhdGFiYXNlIHN5c3RlbSBkb2Vzbid0IGtub3cgYWJvdXQgaXMgc3BlY2lm aWVkLgorICovCitEYXR1bQorcGdfZ2V0X3dhbF9yZWNvcmRzX2luZm8oUEdfRlVOQ1RJT05fQVJH UykKK3sKKwlHZXRXQUxEZXRhaWxzR3V0cyhmY2luZm8sIGZhbHNlLCBHZXRXQUxSZWNvcmRzSW5m byk7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQorCisvKgorICogR2V0IGluZm8gYW5kIGRhdGEg b2YgYWxsIFdBTCByZWNvcmRzIGZyb20gc3RhcnQgTFNOIHRpbGwgZW5kIG9mIFdBTC4KKyAqCisg KiBUaGlzIGZ1bmN0aW9uIGVtaXRzIGFuIGVycm9yIGlmIGEgZnV0dXJlIHN0YXJ0IGkuZS4gV0FM IExTTiB0aGUgZGF0YWJhc2UKKyAqIHN5c3RlbSBkb2Vzbid0IGtub3cgYWJvdXQgaXMgc3BlY2lm aWVkLgorICovCitEYXR1bQorcGdfZ2V0X3dhbF9yZWNvcmRzX2luZm9fdGlsbF9lbmRfb2Zfd2Fs KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJR2V0V0FMRGV0YWlsc0d1dHMoZmNpbmZvLCB0cnVlLCBH ZXRXQUxSZWNvcmRzSW5mbyk7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQorCisvKgorICogRmls bCBzaW5nbGUgcm93IG9mIHJlY29yZCBjb3VudHMgYW5kIHNpemVzIGZvciBhbiBybWdyIG9yIHJl Y29yZC4KKyAqLworc3RhdGljIHZvaWQKK0ZpbGxYTG9nU3RhdHNSb3coY29uc3QgY2hhciAqbmFt ZSwKKwkJCQkgdWludDY0IG4sIHVpbnQ2NCB0b3RhbF9jb3VudCwKKwkJCQkgdWludDY0IHJlY19s ZW4sIHVpbnQ2NCB0b3RhbF9yZWNfbGVuLAorCQkJCSB1aW50NjQgZnBpX2xlbiwgdWludDY0IHRv dGFsX2ZwaV9sZW4sCisJCQkJIHVpbnQ2NCB0b3RfbGVuLCB1aW50NjQgdG90YWxfbGVuLAorCQkJ CSBEYXR1bSAqdmFsdWVzLCBib29sICpudWxscywgdWludDMyIG5jb2xzKQoreworCWRvdWJsZQlu X3BjdCwKKwkJCXJlY19sZW5fcGN0LAorCQkJZnBpX2xlbl9wY3QsCisJCQl0b3RfbGVuX3BjdDsK KwlpbnQJaSA9IDA7CisKKwluX3BjdCA9IDA7CisJaWYgKHRvdGFsX2NvdW50ICE9IDApCisJCW5f cGN0ID0gMTAwICogKGRvdWJsZSkgbiAvIHRvdGFsX2NvdW50OworCisJcmVjX2xlbl9wY3QgPSAw OworCWlmICh0b3RhbF9yZWNfbGVuICE9IDApCisJCXJlY19sZW5fcGN0ID0gMTAwICogKGRvdWJs ZSkgcmVjX2xlbiAvIHRvdGFsX3JlY19sZW47CisKKwlmcGlfbGVuX3BjdCA9IDA7CisJaWYgKHRv dGFsX2ZwaV9sZW4gIT0gMCkKKwkJZnBpX2xlbl9wY3QgPSAxMDAgKiAoZG91YmxlKSBmcGlfbGVu IC8gdG90YWxfZnBpX2xlbjsKKworCXRvdF9sZW5fcGN0ID0gMDsKKwlpZiAodG90YWxfbGVuICE9 IDApCisJCXRvdF9sZW5fcGN0ID0gMTAwICogKGRvdWJsZSkgdG90X2xlbiAvIHRvdGFsX2xlbjsK KworCXZhbHVlc1tpKytdID0gQ1N0cmluZ0dldFRleHREYXR1bShuYW1lKTsKKwl2YWx1ZXNbaSsr XSA9IEludDY0R2V0RGF0dW0obik7CisJdmFsdWVzW2krK10gPSBGbG9hdDRHZXREYXR1bShuX3Bj dCk7CisJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKHJlY19sZW4pOworCXZhbHVlc1tpKytd ID0gRmxvYXQ0R2V0RGF0dW0ocmVjX2xlbl9wY3QpOworCXZhbHVlc1tpKytdID0gSW50NjRHZXRE YXR1bShmcGlfbGVuKTsKKwl2YWx1ZXNbaSsrXSA9IEZsb2F0NEdldERhdHVtKGZwaV9sZW5fcGN0 KTsKKwl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0odG90X2xlbik7CisJdmFsdWVzW2krK10g PSBGbG9hdDRHZXREYXR1bSh0b3RfbGVuX3BjdCk7CisKKwlBc3NlcnQoaSA9PSBuY29scyk7Cit9 CisKKy8qCisgKiBHZXQgc3VtbWFyeSBzdGF0aXN0aWNzIGFib3V0IHRoZSByZWNvcmRzIHNlZW4g c28gZmFyLgorICovCitzdGF0aWMgdm9pZAorR2V0WExvZ1N1bW1hcnlTdGF0cyhYTG9nU3RhdHMg KnN0YXRzLCBSZXR1cm5TZXRJbmZvICpyc2luZm8sCisJCQkJCURhdHVtICp2YWx1ZXMsIGJvb2wg Km51bGxzLCB1aW50MzIgbmNvbHMpCit7CisJdWludDY0CXRvdGFsX2NvdW50ID0gMDsKKwl1aW50 NjQJdG90YWxfcmVjX2xlbiA9IDA7CisJdWludDY0CXRvdGFsX2ZwaV9sZW4gPSAwOworCXVpbnQ2 NAl0b3RhbF9sZW4gPSAwOworCWludAlyaTsKKworCS8qCisJICogRWFjaCByb3cgc2hvd3MgaXRz IHBlcmNlbnRhZ2VzIG9mIHRoZSB0b3RhbCwgc28gbWFrZSBhIGZpcnN0IHBhc3MgdG8KKwkgKiBj YWxjdWxhdGUgY29sdW1uIHRvdGFscy4KKwkgKi8KKwlmb3IgKHJpID0gMDsgcmkgPCBSTV9ORVhU X0lEOyByaSsrKQorCXsKKwkJdG90YWxfY291bnQgKz0gc3RhdHMtPnJtZ3Jfc3RhdHNbcmldLmNv dW50OworCQl0b3RhbF9yZWNfbGVuICs9IHN0YXRzLT5ybWdyX3N0YXRzW3JpXS5yZWNfbGVuOwor CQl0b3RhbF9mcGlfbGVuICs9IHN0YXRzLT5ybWdyX3N0YXRzW3JpXS5mcGlfbGVuOworCX0KKwl0 b3RhbF9sZW4gPSB0b3RhbF9yZWNfbGVuICsgdG90YWxfZnBpX2xlbjsKKworCWZvciAocmkgPSAw OyByaSA8IFJNX05FWFRfSUQ7IHJpKyspCisJeworCQl1aW50NjQJCWNvdW50OworCQl1aW50NjQJ CXJlY19sZW47CisJCXVpbnQ2NAkJZnBpX2xlbjsKKwkJdWludDY0CQl0b3RfbGVuOworCQljb25z dCBSbWdyRGF0YSAqZGVzYyA9ICZSbWdyVGFibGVbcmldOworCisJCWNvdW50ID0gc3RhdHMtPnJt Z3Jfc3RhdHNbcmldLmNvdW50OworCQlyZWNfbGVuID0gc3RhdHMtPnJtZ3Jfc3RhdHNbcmldLnJl Y19sZW47CisJCWZwaV9sZW4gPSBzdGF0cy0+cm1ncl9zdGF0c1tyaV0uZnBpX2xlbjsKKwkJdG90 X2xlbiA9IHJlY19sZW4gKyBmcGlfbGVuOworCisJCUZpbGxYTG9nU3RhdHNSb3coZGVzYy0+cm1f bmFtZSwgY291bnQsIHRvdGFsX2NvdW50LCByZWNfbGVuLAorCQkJCQkJIHRvdGFsX3JlY19sZW4s IGZwaV9sZW4sIHRvdGFsX2ZwaV9sZW4sIHRvdF9sZW4sCisJCQkJCQkgdG90YWxfbGVuLCB2YWx1 ZXMsIG51bGxzLCBuY29scyk7CisKKwkJdHVwbGVzdG9yZV9wdXR2YWx1ZXMocnNpbmZvLT5zZXRS ZXN1bHQsIHJzaW5mby0+c2V0RGVzYywKKwkJCQkJCQkgdmFsdWVzLCBudWxscyk7CisJfQorfQor CisvKgorICogR2V0IFdBTCBzdGF0cyBiZXR3ZWVuIHN0YXJ0IExTTiBhbmQgZW5kIExTTi4KKyAq Lworc3RhdGljIHZvaWQKK0dldFdhbFN0YXRzKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBYTG9n UmVjUHRyIHN0YXJ0X2xzbiwKKwkJCVhMb2dSZWNQdHIgZW5kX2xzbikKK3sKKyNkZWZpbmUgUEdf R0VUX1dBTF9TVEFUU19DT0xTIDkKKwlYTG9nUmVjUHRyCWZpcnN0X3JlY29yZDsKKwlYTG9nUmVh ZGVyU3RhdGUgKnhsb2dyZWFkZXI7CisJWExvZ1N0YXRzIHN0YXRzOworCVJldHVyblNldEluZm8g KnJzaW5mbyA9IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKKwlEYXR1bQl2 YWx1ZXNbUEdfR0VUX1dBTF9TVEFUU19DT0xTXTsKKwlib29sCW51bGxzW1BHX0dFVF9XQUxfU1RB VFNfQ09MU107CisKKwlTZXRTaW5nbGVGdW5jQ2FsbChmY2luZm8sIDApOworCisJeGxvZ3JlYWRl ciA9IEluaXRYTG9nUmVhZGVyU3RhdGUoc3RhcnRfbHNuLCAmZmlyc3RfcmVjb3JkKTsKKworCU1l bVNldCgmc3RhdHMsIDAsIHNpemVvZihzdGF0cykpOworCisJZm9yICg7OykKKwl7CisJCSh2b2lk KSBSZWFkTmV4dFhMb2dSZWNvcmQoeGxvZ3JlYWRlciwgZmlyc3RfcmVjb3JkKTsKKworCQkvKgor CQkgKiBMZXQncyBub3Qgc2hvdyB0aGUgcmVjb3JkIGluZm8gaWYgaXQgaXMgc3Bhbm5pbmcgbW9y ZSB0aGFuIHRoZQorCQkgKiBlbmRfbHNuLiBFbmRSZWNQdHIgaXMgImVuZCsxIiBvZiB0aGUgbGFz dCByZWFkIHJlY29yZCwgaGVuY2UKKwkJICogdXNlICJlbmQiIGhlcmUuCisJCSAqLworCQlpZiAo KHhsb2dyZWFkZXItPkVuZFJlY1B0ciAtIDEpIDw9IGVuZF9sc24pCisJCQlYTG9nUmVjU3RvcmVT dGF0cygmc3RhdHMsIHhsb2dyZWFkZXIpOworCisJCS8qIEV4aXQgbG9vcCBpZiByZWFkIHVwIHRv IGVuZF9sc24uICovCisJCWlmICh4bG9ncmVhZGVyLT5FbmRSZWNQdHIgPj0gZW5kX2xzbikKKwkJ CWJyZWFrOworCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJfQorCisJWExvZ1JlYWRlckZy ZWUoeGxvZ3JlYWRlcik7CisKKwlNZW1TZXQodmFsdWVzLCAwLCBzaXplb2YodmFsdWVzKSk7CisJ TWVtU2V0KG51bGxzLCAwLCBzaXplb2YobnVsbHMpKTsKKworCUdldFhMb2dTdW1tYXJ5U3RhdHMo JnN0YXRzLCByc2luZm8sIHZhbHVlcywgbnVsbHMsCisJCQkJCQlQR19HRVRfV0FMX1NUQVRTX0NP TFMpOworCisjdW5kZWYgUEdfR0VUX1dBTF9TVEFUU19DT0xTCit9CisKKy8qCisgKiBHZXQgc3Rh dHMgb2YgYWxsIFdBTCByZWNvcmRzIGJldHdlZW4gc3RhcnQgTFNOIGFuZCBlbmQgTFNOLgorICoK KyAqIFRoaXMgZnVuY3Rpb24gZW1pdHMgYW4gZXJyb3IgaWYgYSBmdXR1cmUgc3RhcnQgb3IgZW5k IFdBTCBMU04gaS5lLiBXQUwgTFNOCisgKiB0aGUgZGF0YWJhc2Ugc3lzdGVtIGRvZXNuJ3Qga25v dyBhYm91dCBpcyBzcGVjaWZpZWQuCisgKi8KK0RhdHVtCitwZ19nZXRfd2FsX3N0YXRzKFBHX0ZV TkNUSU9OX0FSR1MpCit7CisJR2V0V0FMRGV0YWlsc0d1dHMoZmNpbmZvLCBmYWxzZSwgR2V0V2Fs U3RhdHMpOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KKworLyoKKyAqIEdldCBzdGF0cyBvZiBh bGwgV0FMIHJlY29yZHMgZnJvbSBzdGFydCBMU04gdGlsbCBlbmQgb2YgV0FMLgorICoKKyAqIFRo aXMgZnVuY3Rpb24gZW1pdHMgYW4gZXJyb3IgaWYgYSBmdXR1cmUgc3RhcnQgaS5lLiBXQUwgTFNO IHRoZSBkYXRhYmFzZQorICogc3lzdGVtIGRvZXNuJ3Qga25vdyBhYm91dCBpcyBzcGVjaWZpZWQu CisgKi8KK0RhdHVtCitwZ19nZXRfd2FsX3N0YXRzX3RpbGxfZW5kX29mX3dhbChQR19GVU5DVElP Tl9BUkdTKQoreworCUdldFdBTERldGFpbHNHdXRzKGZjaW5mbywgdHJ1ZSwgR2V0V2FsU3RhdHMp OworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfd2FsaW5z cGVjdC9wZ193YWxpbnNwZWN0LmNvbnRyb2wgYi9jb250cmliL3BnX3dhbGluc3BlY3QvcGdfd2Fs aW5zcGVjdC5jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjAx N2U1NmEyYmIKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3BnX3dhbGluc3BlY3QvcGdfd2Fs aW5zcGVjdC5jb250cm9sCkBAIC0wLDAgKzEsNSBAQAorIyBwZ193YWxpbnNwZWN0IGV4dGVuc2lv bgorY29tbWVudCA9ICdmdW5jdGlvbnMgdG8gaW5zcGVjdCBjb250ZW50cyBvZiBQb3N0Z3JlU1FM IFdyaXRlLUFoZWFkIExvZycKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAnCittb2R1bGVfcGF0aG5h bWUgPSAnJGxpYmRpci9wZ193YWxpbnNwZWN0JworcmVsb2NhdGFibGUgPSB0cnVlCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVhZGVyLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVhZGVyLmMKaW5kZXggZTQzN2M0Mjk5Mi4uNTg1Yzk0YzQ4 OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlYWRlci5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWFkZXIuYwpAQCAtMTMyMCwxMyAr MTMyMCw2IEBAIFhMb2dSZWFkZXJWYWxpZGF0ZVBhZ2VIZWFkZXIoWExvZ1JlYWRlclN0YXRlICpz dGF0ZSwgWExvZ1JlY1B0ciByZWNwdHIsCiAJcmV0dXJuIHRydWU7CiB9CiAKLSNpZmRlZiBGUk9O VEVORAotLyoKLSAqIEZ1bmN0aW9ucyB0aGF0IGFyZSBjdXJyZW50bHkgbm90IG5lZWRlZCBpbiB0 aGUgYmFja2VuZCwgYnV0IGFyZSBiZXR0ZXIKLSAqIGltcGxlbWVudGVkIGluc2lkZSB4bG9ncmVh ZGVyLmMgYmVjYXVzZSBvZiB0aGUgaW50ZXJuYWwgZmFjaWxpdGllcyBhdmFpbGFibGUKLSAqIGhl cmUuCi0gKi8KLQogLyoKICAqIEZpbmQgdGhlIGZpcnN0IHJlY29yZCB3aXRoIGFuIGxzbiA+PSBS ZWNQdHIuCiAgKgpAQCAtMTQ0Nyw2ICsxNDQwLDEyIEBAIGVycjoKIAlyZXR1cm4gSW52YWxpZFhM b2dSZWNQdHI7CiB9CiAKKyNpZmRlZiBGUk9OVEVORAorLyoKKyAqIEZ1bmN0aW9ucyB0aGF0IGFy ZSBjdXJyZW50bHkgbm90IG5lZWRlZCBpbiB0aGUgYmFja2VuZCwgYnV0IGFyZSBiZXR0ZXIKKyAq IGltcGxlbWVudGVkIGluc2lkZSB4bG9ncmVhZGVyLmMgYmVjYXVzZSBvZiB0aGUgaW50ZXJuYWwg ZmFjaWxpdGllcyBhdmFpbGFibGUKKyAqIGhlcmUuCisgKi8KICNlbmRpZgkJCQkJCQkvKiBGUk9O VEVORCAqLwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxv Z3V0aWxzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYwppbmRleCA1 MTFmMmYxODZmLi43YWRlNzE2YjQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9ndXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRp bHMuYwpAQCAtNzksNiArNzksMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaW52YWxpZF9wYWdlCiAK IHN0YXRpYyBIVEFCICppbnZhbGlkX3BhZ2VfdGFiID0gTlVMTDsKIAorc3RhdGljIGludAorcmVh ZF9sb2NhbF94bG9nX3BhZ2VfZ3V0cyhYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRy IHRhcmdldFBhZ2VQdHIsCisJCQkJCQkgIGludCByZXFMZW4sIFhMb2dSZWNQdHIgdGFyZ2V0UmVj UHRyLAorCQkJCQkJICBjaGFyICpjdXJfcGFnZSwgYm9vbCB3YWl0X2Zvcl93YWwpOwogCiAvKiBS ZXBvcnQgYSByZWZlcmVuY2UgdG8gYW4gaW52YWxpZCBwYWdlICovCiBzdGF0aWMgdm9pZApAQCAt ODUxLDYgKzg1NSwzMSBAQCB3YWxfc2VnbWVudF9jbG9zZShYTG9nUmVhZGVyU3RhdGUgKnN0YXRl KQogaW50CiByZWFkX2xvY2FsX3hsb2dfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9n UmVjUHRyIHRhcmdldFBhZ2VQdHIsCiAJCQkJCSBpbnQgcmVxTGVuLCBYTG9nUmVjUHRyIHRhcmdl dFJlY1B0ciwgY2hhciAqY3VyX3BhZ2UpCit7CisJcmV0dXJuIHJlYWRfbG9jYWxfeGxvZ19wYWdl X2d1dHMoc3RhdGUsIHRhcmdldFBhZ2VQdHIsIHJlcUxlbiwKKwkJCQkJCQkJCSB0YXJnZXRSZWNQ dHIsIGN1cl9wYWdlLCB0cnVlKTsKK30KKworLyoKKyAqIFNhbWUgYXMgcmVhZF9sb2NhbF94bG9n X3BhZ2UgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCB3YWl0IGZvciBmdXR1cmUgV0FMCisgKiB0byBi ZSBhdmFpbGFibGUuCisgKi8KK2ludAorcmVhZF9sb2NhbF94bG9nX3BhZ2Vfbm9fd2FpdChYTG9n UmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIsCisJCQkJCQkJIGlu dCByZXFMZW4sIFhMb2dSZWNQdHIgdGFyZ2V0UmVjUHRyLAorCQkJCQkJCSBjaGFyICpjdXJfcGFn ZSkKK3sKKwlyZXR1cm4gcmVhZF9sb2NhbF94bG9nX3BhZ2VfZ3V0cyhzdGF0ZSwgdGFyZ2V0UGFn ZVB0ciwgcmVxTGVuLAorCQkJCQkJCQkJIHRhcmdldFJlY1B0ciwgY3VyX3BhZ2UsIGZhbHNlKTsK K30KKworLyoKKyAqIEltcGxlbWVudGF0aW9uIG9mIHJlYWRfbG9jYWxfeGxvZ19wYWdlIGFuZCBp dHMgbm8gd2FpdCB2ZXJzaW9uLgorICovCitzdGF0aWMgaW50CityZWFkX2xvY2FsX3hsb2dfcGFn ZV9ndXRzKFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwK KwkJCQkJCSAgaW50IHJlcUxlbiwgWExvZ1JlY1B0ciB0YXJnZXRSZWNQdHIsCisJCQkJCQkgIGNo YXIgKmN1cl9wYWdlLCBib29sIHdhaXRfZm9yX3dhbCkKIHsKIAlYTG9nUmVjUHRyCXJlYWRfdXB0 bywKIAkJCQlsb2M7CkBAIC05MDYsNiArOTM1LDEwIEBAIHJlYWRfbG9jYWxfeGxvZ19wYWdlKFhM b2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwKIAkJCWlmIChs b2MgPD0gcmVhZF91cHRvKQogCQkJCWJyZWFrOwogCisJCQkvKiBJZiBhc2tlZCwgbGV0J3Mgbm90 IHdhaXQgZm9yIGZ1dHVyZSBXQUwuICovCisJCQlpZiAoIXdhaXRfZm9yX3dhbCkKKwkJCQlicmVh azsKKwogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJCXBnX3VzbGVlcCgxMDAwTCk7CiAJ CX0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMgYi9zcmMvYmlu L3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCmluZGV4IGYzMTRkMzNlYmYuLmNhZDViMzU5NGEgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKKysrIGIvc3JjL2Jpbi9w Z193YWxkdW1wL3BnX3dhbGR1bXAuYwpAQCAtMjcsNiArMjcsMTEgQEAKICNpbmNsdWRlICJnZXRv cHRfbG9uZy5oIgogI2luY2x1ZGUgInJtZ3JkZXNjLmgiCiAKKy8qCisgKiBOT1RFOiBGb3IgYW55 IGNvZGUgY2hhbmdlIG9yIGlzc3VlIGZpeCBoZXJlLCBpdCBpcyBoaWdobHkgcmVjb21tZW5kZWQg dG8KKyAqIGdpdmUgYSB0aG91Z2h0IGFib3V0IGRvaW5nIHRoZSBzYW1lIGluIHBnX3dhbGluc3Bl Y3QgY29udHJpYiBtb2R1bGUgYXMgd2VsbC4KKyAqLworCiBzdGF0aWMgY29uc3QgY2hhciAqcHJv Z25hbWU7CiAKIHN0YXRpYyBpbnQJV2FsU2VnU3o7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9h Y2Nlc3MveGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAppbmRleCAwOWY2NDY0MzMx Li4zZTY0NDM3MmY5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKQEAgLTMxLDcgKzMxLDcgQEAgZXh0ZXJuIFhMb2dS ZWNQdHIgWGFjdExhc3RSZWNFbmQ7CiBleHRlcm4gUEdETExJTVBPUlQgWExvZ1JlY1B0ciBYYWN0 TGFzdENvbW1pdEVuZDsKIAogLyogdGhlc2UgdmFyaWFibGVzIGFyZSBHVUMgcGFyYW1ldGVycyBy ZWxhdGVkIHRvIFhMT0cgKi8KLWV4dGVybiBpbnQJd2FsX3NlZ21lbnRfc2l6ZTsKK2V4dGVybiBQ R0RMTElNUE9SVCBpbnQJd2FsX3NlZ21lbnRfc2l6ZTsKIGV4dGVybiBpbnQJbWluX3dhbF9zaXpl X21iOwogZXh0ZXJuIGludAltYXhfd2FsX3NpemVfbWI7CiBleHRlcm4gaW50CXdhbF9rZWVwX3Np emVfbWI7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ19pbnRlcm5hbC5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dfaW50ZXJuYWwuaAppbmRleCBkN2MzNWMzN2M0Li4yOTg1 Yzc1MzYxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ19pbnRlcm5hbC5oCisr KyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nX2ludGVybmFsLmgKQEAgLTMxOSw3ICszMTksNyBA QCB0eXBlZGVmIHN0cnVjdCBSbWdyRGF0YQogCQkJCQkJCSAgc3RydWN0IFhMb2dSZWNvcmRCdWZm ZXIgKmJ1Zik7CiB9IFJtZ3JEYXRhOwogCi1leHRlcm4gY29uc3QgUm1nckRhdGEgUm1nclRhYmxl W107CitleHRlcm4gUEdETExJTVBPUlQgY29uc3QgUm1nckRhdGEgUm1nclRhYmxlW107CiAKIC8q CiAgKiBFeHBvcnRlZCB0byBzdXBwb3J0IHhsb2cgc3dpdGNoaW5nIGZyb20gY2hlY2twb2ludGVy CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlYWRlci5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3hsb2dyZWFkZXIuaAppbmRleCBmNDM4OGNjOWJlLi5iNGM3ZDkzNzg3IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlYWRlci5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy94bG9ncmVhZGVyLmgKQEAgLTM0MCw5ICszNDAsNyBAQCBleHRlcm4gdm9pZCBYTG9n UmVhZGVyU2V0RGVjb2RlQnVmZmVyKFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsCiAKIC8qIFBvc2l0 aW9uIHRoZSBYTG9nUmVhZGVyIHRvIGdpdmVuIHJlY29yZCAqLwogZXh0ZXJuIHZvaWQgWExvZ0Jl Z2luUmVhZChYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIFJlY1B0cik7Ci0jaWZk ZWYgRlJPTlRFTkQKIGV4dGVybiBYTG9nUmVjUHRyIFhMb2dGaW5kTmV4dFJlY29yZChYTG9nUmVh ZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIFJlY1B0cik7Ci0jZW5kaWYJCQkJCQkJLyogRlJP TlRFTkQgKi8KIAogLyogUmV0dXJuIHZhbHVlcyBmcm9tIFhMb2dQYWdlUmVhZENCLiAqLwogdHlw ZWRlZiBlbnVtIFhMb2dQYWdlUmVhZFJlc3VsdApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNj ZXNzL3hsb2d1dGlscy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2d1dGlscy5oCmluZGV4IDY0 NzA4OTQ5ZGIuLjIyYzIyOTlkNjggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9n dXRpbHMuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3V0aWxzLmgKQEAgLTkyLDYgKzky LDEwIEBAIGV4dGVybiB2b2lkIEZyZWVGYWtlUmVsY2FjaGVFbnRyeShSZWxhdGlvbiBmYWtlcmVs KTsKIGV4dGVybiBpbnQJcmVhZF9sb2NhbF94bG9nX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0 ZSwKIAkJCQkJCQkJIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwgaW50IHJlcUxlbiwKIAkJCQkJ CQkJIFhMb2dSZWNQdHIgdGFyZ2V0UmVjUHRyLCBjaGFyICpjdXJfcGFnZSk7CitleHRlcm4gaW50 CXJlYWRfbG9jYWxfeGxvZ19wYWdlX25vX3dhaXQoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwKKwkJ CQkJCQkJCQkgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBpbnQgcmVxTGVuLAorCQkJCQkJCQkJ CSBYTG9nUmVjUHRyIHRhcmdldFJlY1B0ciwKKwkJCQkJCQkJCQkgY2hhciAqY3VyX3BhZ2UpOwog ZXh0ZXJuIHZvaWQgd2FsX3NlZ21lbnRfb3BlbihYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLAogCQkJ CQkJCSBYTG9nU2VnTm8gbmV4dFNlZ05vLAogCQkJCQkJCSBUaW1lTGluZUlEICp0bGlfcCk7Ci0t IAoyLjI1LjEKCg== --00000000000073b99905db0542b4 Content-Type: application/x-patch; name="v15-0003-pg_walinspect-tests.patch" Content-Disposition: attachment; filename="v15-0003-pg_walinspect-tests.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l1617b5v2 RnJvbSA5YTkzNTg1NzJmYTc4NzcwNzdmOTk2MmQ1ODk0YThjYWQ2M2I1ZjUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjUgTWFyIDIwMjIgMDY6MTE6MzggKzAw MDAKU3ViamVjdDogW1BBVENIIHYxNV0gcGdfd2FsaW5zcGVjdCB0ZXN0cwoKLS0tCiAuLi4vcGdf d2FsaW5zcGVjdC9leHBlY3RlZC9wZ193YWxpbnNwZWN0Lm91dCAgfCAyMTYgKysrKysrKysrKysr KysrKysrCiBjb250cmliL3BnX3dhbGluc3BlY3Qvc3FsL3BnX3dhbGluc3BlY3Quc3FsICAgfCAx NDYgKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDM2MiBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgY29udHJpYi9wZ193YWxpbnNwZWN0L2V4cGVjdGVkL3BnX3dhbGluc3Bl Y3Qub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9wZ193YWxpbnNwZWN0L3NxbC9wZ193 YWxpbnNwZWN0LnNxbAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfd2FsaW5zcGVjdC9leHBlY3Rl ZC9wZ193YWxpbnNwZWN0Lm91dCBiL2NvbnRyaWIvcGdfd2FsaW5zcGVjdC9leHBlY3RlZC9wZ193 YWxpbnNwZWN0Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43NDQ1 YzdkZmRlCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9wZ193YWxpbnNwZWN0L2V4cGVjdGVk L3BnX3dhbGluc3BlY3Qub3V0CkBAIC0wLDAgKzEsMjE2IEBACitDUkVBVEUgRVhURU5TSU9OIHBn X3dhbGluc3BlY3Q7CitDUkVBVEUgVEFCTEUgc2FtcGxlX3RibChjb2wxIGludCwgY29sMiBpbnQp OworU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIEFTIHdhbF9sc24xIFxnc2V0CitJTlNFUlQg SU5UTyBzYW1wbGVfdGJsIFNFTEVDVCAqIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIpOworU0VM RUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIEFTIHdhbF9sc24yIFxnc2V0CitJTlNFUlQgSU5UTyBz YW1wbGVfdGJsIFNFTEVDVCAqIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIpOworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gVGVzdHMgZm9yIGlucHV0IHZhbGlkYXRpb24KKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1NFTEVD VCBDT1VOVCgqKSA+PSAwIEFTIG9rIEZST00gcGdfZ2V0X3dhbF9yZWNvcmRzX2luZm8oOid3YWxf bHNuMicsIDond2FsX2xzbjEnKTsgLS0gRVJST1IKK0VSUk9SOiAgV0FMIHN0YXJ0IExTTiBtdXN0 IGJlIGxlc3MgdGhhbiBlbmQgTFNOCitTRUxFQ1QgQ09VTlQoKikgPj0gMCBBUyBvayBGUk9NIHBn X2dldF93YWxfc3RhdHMoOid3YWxfbHNuMicsIDond2FsX2xzbjEnKTsgLS0gRVJST1IKK0VSUk9S OiAgV0FMIHN0YXJ0IExTTiBtdXN0IGJlIGxlc3MgdGhhbiBlbmQgTFNOCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBUZXN0cyBmb3IgYWxsIGZ1bmN0aW9uIGV4ZWN1dGlvbnMKKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1NF TEVDVCBDT1VOVCgqKSA+PSAwIEFTIG9rIEZST00gcGdfZ2V0X3dhbF9yZWNvcmQoOid3YWxfbHNu MScpOworIG9rIAorLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIENPVU5UKCopID49IDAgQVMg b2sgRlJPTSBwZ19nZXRfd2FsX3JlY29yZHNfaW5mbyg6J3dhbF9sc24xJywgOid3YWxfbHNuMicp OworIG9rIAorLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIENPVU5UKCopID49IDAgQVMgb2sg RlJPTSBwZ19nZXRfd2FsX3JlY29yZHNfaW5mb190aWxsX2VuZF9vZl93YWwoOid3YWxfbHNuMScp OworIG9rIAorLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIENPVU5UKCopID49IDAgQVMgb2sg RlJPTSBwZ19nZXRfd2FsX3N0YXRzKDond2FsX2xzbjEnLCA6J3dhbF9sc24yJyk7Cisgb2sgCist LS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgQ09VTlQoKikgPj0gMCBBUyBvayBGUk9NIHBnX2dl dF93YWxfc3RhdHNfdGlsbF9lbmRfb2Zfd2FsKDond2FsX2xzbjEnKTsKKyBvayAKKy0tLS0KKyB0 CisoMSByb3cpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3RzIGZvciBmaWx0ZXJpbmcgb3V0IFdB TCByZWNvcmRzIG9mIGEgcGFydGljdWxhciB0YWJsZQorLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorU0VMRUNUIG9p ZCBBUyBzYW1wbGVfdGJsX29pZCBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAnc2FtcGxl X3RibCcgXGdzZXQKK1NFTEVDVCBDT1VOVCgqKSA+PSAxIEFTIG9rIEZST00gcGdfZ2V0X3dhbF9y ZWNvcmRzX2luZm8oOid3YWxfbHNuMScsIDond2FsX2xzbjInKQorCQkJV0hFUkUgYmxvY2tfcmVm IExJS0UgY29uY2F0KCclJywgOidzYW1wbGVfdGJsX29pZCcsICclJykgQU5EIHJlc291cmNlX21h bmFnZXIgPSAnSGVhcCc7Cisgb2sgCistLS0tCisgdAorKDEgcm93KQorCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBUZXN0cyBmb3IgcGVybWlzc2lvbnMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NSRUFURSBST0xFIHJl Z3Jlc3NfcGdfd2FsaW5zcGVjdDsKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdy ZXNzX3BnX3dhbGluc3BlY3QnLAorICAncGdfZ2V0X3dhbF9yZWNvcmQocGdfbHNuKScsICdFWEVD VVRFJyk7IC0tIG5vCisgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIGYKKygxIHJvdykKKworU0VMRUNUIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3Jl Z3Jlc3NfcGdfd2FsaW5zcGVjdCcsCisgICdwZ19nZXRfd2FsX3JlY29yZF9pbmZvKHBnX2xzbikn LCAnRVhFQ1VURScpOyAtLSBubworIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmls ZWdlKCdyZWdyZXNzX3BnX3dhbGluc3BlY3QnLAorICAncGdfZ2V0X3dhbF9yZWNvcmRzX2luZm8o cGdfbHNuLCBwZ19sc24pICcsICdFWEVDVVRFJyk7IC0tIG5vCisgaGFzX2Z1bmN0aW9uX3ByaXZp bGVnZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VMRUNUIGhh c19mdW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfcGdfd2FsaW5zcGVjdCcsCisgICdwZ19nZXRf d2FsX3JlY29yZHNfaW5mb190aWxsX2VuZF9vZl93YWwocGdfbHNuKSAnLCAnRVhFQ1VURScpOyAt LSBubworIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBmCisoMSByb3cpCisKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX3Bn X3dhbGluc3BlY3QnLAorICAncGdfZ2V0X3dhbF9zdGF0cyhwZ19sc24sIHBnX2xzbikgJywgJ0VY RUNVVEUnKTsgLS0gbm8KKyBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgZgorKDEgcm93KQorCitTRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSgn cmVncmVzc19wZ193YWxpbnNwZWN0JywKKyAgJ3BnX2dldF93YWxfc3RhdHNfdGlsbF9lbmRfb2Zf d2FsKHBnX2xzbikgJywgJ0VYRUNVVEUnKTsgLS0gbm8KKyBoYXNfZnVuY3Rpb25fcHJpdmlsZWdl IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorCistLSBGdW5jdGlvbnMg YWNjZXNzaWJsZSBieSB1c2VycyB3aXRoIHJvbGUgcGdfcmVhZF9zZXJ2ZXJfZmlsZXMKK0dSQU5U IHBnX3JlYWRfc2VydmVyX2ZpbGVzIFRPIHJlZ3Jlc3NfcGdfd2FsaW5zcGVjdDsKK1NFTEVDVCBo YXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX3BnX3dhbGluc3BlY3QnLAorICAncGdfZ2V0 X3dhbF9yZWNvcmQocGdfbHNuKScsICdFWEVDVVRFJyk7IC0tIHllcworIGhhc19mdW5jdGlvbl9w cml2aWxlZ2UgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVD VCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX3BnX3dhbGluc3BlY3QnLAorICAncGdf Z2V0X3dhbF9yZWNvcmRfaW5mbyhwZ19sc24pJywgJ0VYRUNVVEUnKTsgLS0geWVzCisgaGFzX2Z1 bmN0aW9uX3ByaXZpbGVnZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykK KworU0VMRUNUIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfcGdfd2FsaW5zcGVjdCcs CisgICdwZ19nZXRfd2FsX3JlY29yZHNfaW5mbyhwZ19sc24sIHBnX2xzbikgJywgJ0VYRUNVVEUn KTsgLS0geWVzCisgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jl c3NfcGdfd2FsaW5zcGVjdCcsCisgICdwZ19nZXRfd2FsX3JlY29yZHNfaW5mb190aWxsX2VuZF9v Zl93YWwocGdfbHNuKSAnLCAnRVhFQ1VURScpOyAtLSB5ZXMKKyBoYXNfZnVuY3Rpb25fcHJpdmls ZWdlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgaGFz X2Z1bmN0aW9uX3ByaXZpbGVnZSgncmVncmVzc19wZ193YWxpbnNwZWN0JywKKyAgJ3BnX2dldF93 YWxfc3RhdHMocGdfbHNuLCBwZ19sc24pICcsICdFWEVDVVRFJyk7IC0tIHllcworIGhhc19mdW5j dGlvbl9wcml2aWxlZ2UgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisK K1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX3BnX3dhbGluc3BlY3QnLAor ICAncGdfZ2V0X3dhbF9zdGF0c190aWxsX2VuZF9vZl93YWwocGdfbHNuKSAnLCAnRVhFQ1VURScp OyAtLSB5ZXMKKyBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgdAorKDEgcm93KQorCitSRVZPS0UgcGdfcmVhZF9zZXJ2ZXJfZmlsZXMgRlJPTSByZWdy ZXNzX3BnX3dhbGluc3BlY3Q7CistLSBTdXBlcnVzZXIgY2FuIGdyYW50IGV4ZWN1dGUgdG8gb3Ro ZXIgdXNlcnMKK0dSQU5UIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfZ2V0X3dhbF9yZWNvcmQocGdf bHNuKQorICBUTyByZWdyZXNzX3BnX3dhbGluc3BlY3Q7CitHUkFOVCBFWEVDVVRFIE9OIEZVTkNU SU9OIHBnX2dldF93YWxfcmVjb3JkX2luZm8ocGdfbHNuKQorICBUTyByZWdyZXNzX3BnX3dhbGlu c3BlY3Q7CitHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2dldF93YWxfcmVjb3Jkc19pbmZv KHBnX2xzbiwgcGdfbHNuKQorICBUTyByZWdyZXNzX3BnX3dhbGluc3BlY3Q7CitHUkFOVCBFWEVD VVRFIE9OIEZVTkNUSU9OIHBnX2dldF93YWxfc3RhdHMocGdfbHNuLCBwZ19sc24pCisgIFRPIHJl Z3Jlc3NfcGdfd2FsaW5zcGVjdDsKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdy ZXNzX3BnX3dhbGluc3BlY3QnLAorICAncGdfZ2V0X3dhbF9yZWNvcmQocGdfbHNuKScsICdFWEVD VVRFJyk7IC0tIHllcworIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdy ZWdyZXNzX3BnX3dhbGluc3BlY3QnLAorICAncGdfZ2V0X3dhbF9yZWNvcmRfaW5mbyhwZ19sc24p JywgJ0VYRUNVVEUnKTsgLS0geWVzCisgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIGhhc19mdW5jdGlvbl9wcml2 aWxlZ2UoJ3JlZ3Jlc3NfcGdfd2FsaW5zcGVjdCcsCisgICdwZ19nZXRfd2FsX3JlY29yZHNfaW5m byhwZ19sc24sIHBnX2xzbikgJywgJ0VYRUNVVEUnKTsgLS0geWVzCisgaGFzX2Z1bmN0aW9uX3By aXZpbGVnZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNU IGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfcGdfd2FsaW5zcGVjdCcsCisgICdwZ19n ZXRfd2FsX3JlY29yZHNfaW5mb190aWxsX2VuZF9vZl93YWwocGdfbHNuKSAnLCAnRVhFQ1VURScp OyAtLSB5ZXMKKyBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgZgorKDEgcm93KQorCitTRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSgncmVncmVz c19wZ193YWxpbnNwZWN0JywKKyAgJ3BnX2dldF93YWxfc3RhdHMocGdfbHNuLCBwZ19sc24pICcs ICdFWEVDVVRFJyk7IC0tIHllcworIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmls ZWdlKCdyZWdyZXNzX3BnX3dhbGluc3BlY3QnLAorICAncGdfZ2V0X3dhbF9zdGF0c190aWxsX2Vu ZF9vZl93YWwocGdfbHNuKSAnLCAnRVhFQ1VURScpOyAtLSB5ZXMKKyBoYXNfZnVuY3Rpb25fcHJp dmlsZWdlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorCitSRVZPS0Ug RVhFQ1VURSBPTiBGVU5DVElPTiBwZ19nZXRfd2FsX3JlY29yZChwZ19sc24pCisgIEZST00gcmVn cmVzc19wZ193YWxpbnNwZWN0OworUkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfZ2V0X3dh bF9yZWNvcmRfaW5mbyhwZ19sc24pCisgIEZST00gcmVncmVzc19wZ193YWxpbnNwZWN0OworUkVW T0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfZ2V0X3dhbF9yZWNvcmRzX2luZm8ocGdfbHNuLCBw Z19sc24pCisgIEZST00gcmVncmVzc19wZ193YWxpbnNwZWN0OworUkVWT0tFIEVYRUNVVEUgT04g RlVOQ1RJT04gcGdfZ2V0X3dhbF9yZWNvcmRzX2luZm9fdGlsbF9lbmRfb2Zfd2FsKHBnX2xzbikK KyAgRlJPTSByZWdyZXNzX3BnX3dhbGluc3BlY3Q7CitSRVZPS0UgRVhFQ1VURSBPTiBGVU5DVElP TiBwZ19nZXRfd2FsX3N0YXRzKHBnX2xzbiwgcGdfbHNuKQorICBGUk9NIHJlZ3Jlc3NfcGdfd2Fs aW5zcGVjdDsKK1JFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2dldF93YWxfc3RhdHNfdGls bF9lbmRfb2Zfd2FsKHBnX2xzbikKKyAgRlJPTSByZWdyZXNzX3BnX3dhbGluc3BlY3Q7CistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBDbGVhbiB1cAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorRFJPUCBST0xFIHJlZ3Jlc3Nf cGdfd2FsaW5zcGVjdDsKK0RST1AgVEFCTEUgc2FtcGxlX3RibDsKZGlmZiAtLWdpdCBhL2NvbnRy aWIvcGdfd2FsaW5zcGVjdC9zcWwvcGdfd2FsaW5zcGVjdC5zcWwgYi9jb250cmliL3BnX3dhbGlu c3BlY3Qvc3FsL3BnX3dhbGluc3BlY3Quc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLjNhOTdlZjcxNTMKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3BnX3dhbGlu c3BlY3Qvc3FsL3BnX3dhbGluc3BlY3Quc3FsCkBAIC0wLDAgKzEsMTQ2IEBACitDUkVBVEUgRVhU RU5TSU9OIHBnX3dhbGluc3BlY3Q7CisKK0NSRUFURSBUQUJMRSBzYW1wbGVfdGJsKGNvbDEgaW50 LCBjb2wyIGludCk7CisKK1NFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSBBUyB3YWxfbHNuMSBc Z3NldAorCitJTlNFUlQgSU5UTyBzYW1wbGVfdGJsIFNFTEVDVCAqIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDIpOworCitTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkgQVMgd2FsX2xzbjIgXGdz ZXQKKworSU5TRVJUIElOVE8gc2FtcGxlX3RibCBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAyKTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdHMgZm9yIGlucHV0IHZhbGlkYXRpb24K Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKworU0VMRUNUIENPVU5UKCopID49IDAgQVMgb2sgRlJPTSBwZ19nZXRf d2FsX3JlY29yZHNfaW5mbyg6J3dhbF9sc24yJywgOid3YWxfbHNuMScpOyAtLSBFUlJPUgorCitT RUxFQ1QgQ09VTlQoKikgPj0gMCBBUyBvayBGUk9NIHBnX2dldF93YWxfc3RhdHMoOid3YWxfbHNu MicsIDond2FsX2xzbjEnKTsgLS0gRVJST1IKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdHMgZm9y IGFsbCBmdW5jdGlvbiBleGVjdXRpb25zCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1NFTEVDVCBDT1VOVCgq KSA+PSAwIEFTIG9rIEZST00gcGdfZ2V0X3dhbF9yZWNvcmQoOid3YWxfbHNuMScpOworCitTRUxF Q1QgQ09VTlQoKikgPj0gMCBBUyBvayBGUk9NIHBnX2dldF93YWxfcmVjb3Jkc19pbmZvKDond2Fs X2xzbjEnLCA6J3dhbF9sc24yJyk7CisKK1NFTEVDVCBDT1VOVCgqKSA+PSAwIEFTIG9rIEZST00g cGdfZ2V0X3dhbF9yZWNvcmRzX2luZm9fdGlsbF9lbmRfb2Zfd2FsKDond2FsX2xzbjEnKTsKKwor U0VMRUNUIENPVU5UKCopID49IDAgQVMgb2sgRlJPTSBwZ19nZXRfd2FsX3N0YXRzKDond2FsX2xz bjEnLCA6J3dhbF9sc24yJyk7CisKK1NFTEVDVCBDT1VOVCgqKSA+PSAwIEFTIG9rIEZST00gcGdf Z2V0X3dhbF9zdGF0c190aWxsX2VuZF9vZl93YWwoOid3YWxfbHNuMScpOworCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBUZXN0cyBmb3IgZmlsdGVyaW5nIG91dCBXQUwgcmVjb3JkcyBvZiBhIHBhcnRpY3Vs YXIgdGFibGUKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKworU0VMRUNUIG9pZCBBUyBzYW1wbGVfdGJsX29pZCBG Uk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAnc2FtcGxlX3RibCcgXGdzZXQKKworU0VMRUNU IENPVU5UKCopID49IDEgQVMgb2sgRlJPTSBwZ19nZXRfd2FsX3JlY29yZHNfaW5mbyg6J3dhbF9s c24xJywgOid3YWxfbHNuMicpCisJCQlXSEVSRSBibG9ja19yZWYgTElLRSBjb25jYXQoJyUnLCA6 J3NhbXBsZV90Ymxfb2lkJywgJyUnKSBBTkQgcmVzb3VyY2VfbWFuYWdlciA9ICdIZWFwJzsKKwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0gVGVzdHMgZm9yIHBlcm1pc3Npb25zCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitD UkVBVEUgUk9MRSByZWdyZXNzX3BnX3dhbGluc3BlY3Q7CisKK1NFTEVDVCBoYXNfZnVuY3Rpb25f cHJpdmlsZWdlKCdyZWdyZXNzX3BnX3dhbGluc3BlY3QnLAorICAncGdfZ2V0X3dhbF9yZWNvcmQo cGdfbHNuKScsICdFWEVDVVRFJyk7IC0tIG5vCisKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmls ZWdlKCdyZWdyZXNzX3BnX3dhbGluc3BlY3QnLAorICAncGdfZ2V0X3dhbF9yZWNvcmRfaW5mbyhw Z19sc24pJywgJ0VYRUNVVEUnKTsgLS0gbm8KKworU0VMRUNUIGhhc19mdW5jdGlvbl9wcml2aWxl Z2UoJ3JlZ3Jlc3NfcGdfd2FsaW5zcGVjdCcsCisgICdwZ19nZXRfd2FsX3JlY29yZHNfaW5mbyhw Z19sc24sIHBnX2xzbikgJywgJ0VYRUNVVEUnKTsgLS0gbm8KKworU0VMRUNUIGhhc19mdW5jdGlv bl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfcGdfd2FsaW5zcGVjdCcsCisgICdwZ19nZXRfd2FsX3JlY29y ZHNfaW5mb190aWxsX2VuZF9vZl93YWwocGdfbHNuKSAnLCAnRVhFQ1VURScpOyAtLSBubworCitT RUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSgncmVncmVzc19wZ193YWxpbnNwZWN0JywKKyAg J3BnX2dldF93YWxfc3RhdHMocGdfbHNuLCBwZ19sc24pICcsICdFWEVDVVRFJyk7IC0tIG5vCisK K1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX3BnX3dhbGluc3BlY3QnLAor ICAncGdfZ2V0X3dhbF9zdGF0c190aWxsX2VuZF9vZl93YWwocGdfbHNuKSAnLCAnRVhFQ1VURScp OyAtLSBubworCistLSBGdW5jdGlvbnMgYWNjZXNzaWJsZSBieSB1c2VycyB3aXRoIHJvbGUgcGdf cmVhZF9zZXJ2ZXJfZmlsZXMKKworR1JBTlQgcGdfcmVhZF9zZXJ2ZXJfZmlsZXMgVE8gcmVncmVz c19wZ193YWxpbnNwZWN0OworCitTRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSgncmVncmVz c19wZ193YWxpbnNwZWN0JywKKyAgJ3BnX2dldF93YWxfcmVjb3JkKHBnX2xzbiknLCAnRVhFQ1VU RScpOyAtLSB5ZXMKKworU0VMRUNUIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfcGdf d2FsaW5zcGVjdCcsCisgICdwZ19nZXRfd2FsX3JlY29yZF9pbmZvKHBnX2xzbiknLCAnRVhFQ1VU RScpOyAtLSB5ZXMKKworU0VMRUNUIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfcGdf d2FsaW5zcGVjdCcsCisgICdwZ19nZXRfd2FsX3JlY29yZHNfaW5mbyhwZ19sc24sIHBnX2xzbikg JywgJ0VYRUNVVEUnKTsgLS0geWVzCisKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdy ZWdyZXNzX3BnX3dhbGluc3BlY3QnLAorICAncGdfZ2V0X3dhbF9yZWNvcmRzX2luZm9fdGlsbF9l bmRfb2Zfd2FsKHBnX2xzbikgJywgJ0VYRUNVVEUnKTsgLS0geWVzCisKK1NFTEVDVCBoYXNfZnVu Y3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX3BnX3dhbGluc3BlY3QnLAorICAncGdfZ2V0X3dhbF9z dGF0cyhwZ19sc24sIHBnX2xzbikgJywgJ0VYRUNVVEUnKTsgLS0geWVzCisKK1NFTEVDVCBoYXNf ZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX3BnX3dhbGluc3BlY3QnLAorICAncGdfZ2V0X3dh bF9zdGF0c190aWxsX2VuZF9vZl93YWwocGdfbHNuKSAnLCAnRVhFQ1VURScpOyAtLSB5ZXMKKwor UkVWT0tFIHBnX3JlYWRfc2VydmVyX2ZpbGVzIEZST00gcmVncmVzc19wZ193YWxpbnNwZWN0Owor CistLSBTdXBlcnVzZXIgY2FuIGdyYW50IGV4ZWN1dGUgdG8gb3RoZXIgdXNlcnMKK0dSQU5UIEVY RUNVVEUgT04gRlVOQ1RJT04gcGdfZ2V0X3dhbF9yZWNvcmQocGdfbHNuKQorICBUTyByZWdyZXNz X3BnX3dhbGluc3BlY3Q7CisKK0dSQU5UIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfZ2V0X3dhbF9y ZWNvcmRfaW5mbyhwZ19sc24pCisgIFRPIHJlZ3Jlc3NfcGdfd2FsaW5zcGVjdDsKKworR1JBTlQg RVhFQ1VURSBPTiBGVU5DVElPTiBwZ19nZXRfd2FsX3JlY29yZHNfaW5mbyhwZ19sc24sIHBnX2xz bikKKyAgVE8gcmVncmVzc19wZ193YWxpbnNwZWN0OworCitHUkFOVCBFWEVDVVRFIE9OIEZVTkNU SU9OIHBnX2dldF93YWxfc3RhdHMocGdfbHNuLCBwZ19sc24pCisgIFRPIHJlZ3Jlc3NfcGdfd2Fs aW5zcGVjdDsKKworU0VMRUNUIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfcGdfd2Fs aW5zcGVjdCcsCisgICdwZ19nZXRfd2FsX3JlY29yZChwZ19sc24pJywgJ0VYRUNVVEUnKTsgLS0g eWVzCisKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX3BnX3dhbGluc3Bl Y3QnLAorICAncGdfZ2V0X3dhbF9yZWNvcmRfaW5mbyhwZ19sc24pJywgJ0VYRUNVVEUnKTsgLS0g eWVzCisKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX3BnX3dhbGluc3Bl Y3QnLAorICAncGdfZ2V0X3dhbF9yZWNvcmRzX2luZm8ocGdfbHNuLCBwZ19sc24pICcsICdFWEVD VVRFJyk7IC0tIHllcworCitTRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSgncmVncmVzc19w Z193YWxpbnNwZWN0JywKKyAgJ3BnX2dldF93YWxfcmVjb3Jkc19pbmZvX3RpbGxfZW5kX29mX3dh bChwZ19sc24pICcsICdFWEVDVVRFJyk7IC0tIHllcworCitTRUxFQ1QgaGFzX2Z1bmN0aW9uX3By aXZpbGVnZSgncmVncmVzc19wZ193YWxpbnNwZWN0JywKKyAgJ3BnX2dldF93YWxfc3RhdHMocGdf bHNuLCBwZ19sc24pICcsICdFWEVDVVRFJyk7IC0tIHllcworCitTRUxFQ1QgaGFzX2Z1bmN0aW9u X3ByaXZpbGVnZSgncmVncmVzc19wZ193YWxpbnNwZWN0JywKKyAgJ3BnX2dldF93YWxfc3RhdHNf dGlsbF9lbmRfb2Zfd2FsKHBnX2xzbikgJywgJ0VYRUNVVEUnKTsgLS0geWVzCisKK1JFVk9LRSBF WEVDVVRFIE9OIEZVTkNUSU9OIHBnX2dldF93YWxfcmVjb3JkKHBnX2xzbikKKyAgRlJPTSByZWdy ZXNzX3BnX3dhbGluc3BlY3Q7CisKK1JFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2dldF93 YWxfcmVjb3JkX2luZm8ocGdfbHNuKQorICBGUk9NIHJlZ3Jlc3NfcGdfd2FsaW5zcGVjdDsKKwor UkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfZ2V0X3dhbF9yZWNvcmRzX2luZm8ocGdfbHNu LCBwZ19sc24pCisgIEZST00gcmVncmVzc19wZ193YWxpbnNwZWN0OworCitSRVZPS0UgRVhFQ1VU RSBPTiBGVU5DVElPTiBwZ19nZXRfd2FsX3JlY29yZHNfaW5mb190aWxsX2VuZF9vZl93YWwocGdf bHNuKQorICBGUk9NIHJlZ3Jlc3NfcGdfd2FsaW5zcGVjdDsKKworUkVWT0tFIEVYRUNVVEUgT04g RlVOQ1RJT04gcGdfZ2V0X3dhbF9zdGF0cyhwZ19sc24sIHBnX2xzbikKKyAgRlJPTSByZWdyZXNz X3BnX3dhbGluc3BlY3Q7CisKK1JFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2dldF93YWxf c3RhdHNfdGlsbF9lbmRfb2Zfd2FsKHBnX2xzbikKKyAgRlJPTSByZWdyZXNzX3BnX3dhbGluc3Bl Y3Q7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tIENsZWFuIHVwCistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0RST1Ag Uk9MRSByZWdyZXNzX3BnX3dhbGluc3BlY3Q7CisKK0RST1AgVEFCTEUgc2FtcGxlX3RibDsKLS0g CjIuMjUuMQoK --00000000000073b99905db0542b4 Content-Type: application/x-patch; name="v15-0004-pg_walinspect-docs.patch" Content-Disposition: attachment; filename="v15-0004-pg_walinspect-docs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l1617d0r3 RnJvbSAwZDEzZmJkNWYyNjVmNDFhOGY1M2RlOGIyYzM1YTJiNjBiZDUzNzc5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjUgTWFyIDIwMjIgMDY6MTI6NDUgKzAw MDAKU3ViamVjdDogW1BBVENIIHYxNV0gcGdfd2FsaW5zcGVjdCBkb2NzCgotLS0KIGRvYy9zcmMv c2dtbC9jb250cmliLnNnbWwgICAgICB8ICAgMSArCiBkb2Mvc3JjL3NnbWwvZmlsZWxpc3Quc2dt bCAgICAgfCAgIDEgKwogZG9jL3NyYy9zZ21sL3Bnd2FsaW5zcGVjdC5zZ21sIHwgMjM0ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAyMzYgaW5zZXJ0 aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRvYy9zcmMvc2dtbC9wZ3dhbGluc3BlY3Quc2dt bAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb250cmliLnNnbWwgYi9kb2Mvc3JjL3NnbWwv Y29udHJpYi5zZ21sCmluZGV4IDFlNDJjZTFhN2YuLjRlN2I4N2E0MmYgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9jb250cmliLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbnRyaWIuc2dtbApA QCAtMTMxLDYgKzEzMSw3IEBAIENSRUFURSBFWFRFTlNJT04gPHJlcGxhY2VhYmxlPm1vZHVsZV9u YW1lPC9yZXBsYWNlYWJsZT47CiAgJnBnc3VyZ2VyeTsKICAmcGd0cmdtOwogICZwZ3Zpc2liaWxp dHk7CisgJnBnd2FsaW5zcGVjdDsKICAmcG9zdGdyZXMtZmR3OwogICZzZWc7CiAgJnNlcGdzcWw7 CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZmlsZWxpc3Quc2dtbCBiL2RvYy9zcmMvc2dtbC9m aWxlbGlzdC5zZ21sCmluZGV4IGZkODUzYWYwMWYuLjM0YzE5YzgwZjEgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9maWxlbGlzdC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9maWxlbGlzdC5zZ21s CkBAIC0xNDcsNiArMTQ3LDcgQEAKIDwhRU5USVRZIHBnc3VyZ2VyeSAgICAgICBTWVNURU0gInBn c3VyZ2VyeS5zZ21sIj4KIDwhRU5USVRZIHBndHJnbSAgICAgICAgICBTWVNURU0gInBndHJnbS5z Z21sIj4KIDwhRU5USVRZIHBndmlzaWJpbGl0eSAgICBTWVNURU0gInBndmlzaWJpbGl0eS5zZ21s Ij4KKzwhRU5USVRZIHBnd2FsaW5zcGVjdCAJIFNZU1RFTSAicGd3YWxpbnNwZWN0LnNnbWwiPgog PCFFTlRJVFkgcG9zdGdyZXMtZmR3ICAgIFNZU1RFTSAicG9zdGdyZXMtZmR3LnNnbWwiPgogPCFF TlRJVFkgc2VnICAgICAgICAgICAgIFNZU1RFTSAic2VnLnNnbWwiPgogPCFFTlRJVFkgY29udHJp Yi1zcGkgICAgIFNZU1RFTSAiY29udHJpYi1zcGkuc2dtbCI+CmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcGd3YWxpbnNwZWN0LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcGd3YWxpbnNwZWN0LnNnbWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uOGFiMTNjMzhjNAotLS0gL2Rl di9udWxsCisrKyBiL2RvYy9zcmMvc2dtbC9wZ3dhbGluc3BlY3Quc2dtbApAQCAtMCwwICsxLDIz NCBAQAorPCEtLSBkb2Mvc3JjL3NnbWwvcGd3YWxpbnNwZWN0LnNnbWwgLS0+CisKKzxzZWN0MSBp ZD0icGd3YWxpbnNwZWN0IiB4cmVmbGFiZWw9InBnX3dhbGluc3BlY3QiPgorIDx0aXRsZT5wZ193 YWxpbnNwZWN0PC90aXRsZT4KKworIDxpbmRleHRlcm0gem9uZT0icGd3YWxpbnNwZWN0Ij4KKyAg PHByaW1hcnk+cGdfd2FsaW5zcGVjdDwvcHJpbWFyeT4KKyA8L2luZGV4dGVybT4KKworIDxwYXJh PgorICBUaGUgPGZpbGVuYW1lPnBnX3dhbGluc3BlY3Q8L2ZpbGVuYW1lPiBtb2R1bGUgcHJvdmlk ZXMgZnVuY3Rpb25zIHRoYXQgYWxsb3cKKyAgeW91IHRvIGluc3BlY3QgdGhlIGNvbnRlbnRzIG9m IHdyaXRlLWFoZWFkIGxvZyBvZiA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+ CisgIGRhdGFiYXNlIGNsdXN0ZXIgYXQgYSBsb3cgbGV2ZWwsIHdoaWNoIGlzIHVzZWZ1bCBmb3Ig ZGVidWdnaW5nIG9yIGFuYWx5dGljYWwKKyAgb3IgcmVwb3J0aW5nIG9yIGVkdWNhdGlvbmFsIHB1 cnBvc2VzLgorIDwvcGFyYT4KKworIDxwYXJhPgorICBBbGwgdGhlIGZ1bmN0aW9ucyBvZiB0aGlz IG1vZHVsZSB3aWxsIHByb3ZpZGUgdGhlIFdBTCBpbmZvcm1hdGlvbiB1c2luZyB0aGUKKyAgY3Vy cmVudCBzZXJ2ZXIncyB0aW1lbGluZSBJRC4KKyA8L3BhcmE+CisKKyA8cGFyYT4KKyAgQnkgZGVm YXVsdCwgdXNlIG9mIHRoZXNlIGZ1bmN0aW9ucyBpcyByZXN0cmljdGVkIHRvIHN1cGVydXNlcnMg YW5kIG1lbWJlcnMgb2YKKyAgdGhlIDxsaXRlcmFsPnBnX3JlYWRfc2VydmVyX2ZpbGVzPC9saXRl cmFsPiByb2xlLiBBY2Nlc3MgbWF5IGJlIGdyYW50ZWQgYnkKKyAgc3VwZXJ1c2VycyB0byBvdGhl cnMgdXNpbmcgPGNvbW1hbmQ+R1JBTlQ8L2NvbW1hbmQ+LgorIDwvcGFyYT4KKyAgICAKKyA8c2Vj dDI+CisgIDx0aXRsZT5HZW5lcmFsIEZ1bmN0aW9uczwvdGl0bGU+CisKKyAgPHZhcmlhYmxlbGlz dD4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxmdW5jdGlvbj4KKyAgICAg IHBnX2dldF93YWxfcmVjb3JkKGluX2xzbiBwZ19sc24sCisgICAgICAgICAgICAgICAgICAgICAg ICBzdGFydF9sc24gT1VUIHBnX2xzbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9sc24g T1VUIHBnX2xzbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZF9sZW5ndGggT1VUIGlu dDQsCisgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQgT1VUIGJ5dGVhKQorICAgICA8L2Z1 bmN0aW9uPgorICAgIDwvdGVybT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAg ICBHZXRzIHJhdyBXQUwgcmVjb3JkIGRhdGEgb2YgYSBnaXZlbiBMU04uIFRoaXMgZnVuY3Rpb24g ZW1pdHMgYW4gZXJyb3IgaWYKKyAgICAgIGEgZnV0dXJlICh0aGUgTFNOIGRhdGFiYXNlIHN5c3Rl bSBkb2Vzbid0IGtub3cgYWJvdXQpCisgICAgICA8cmVwbGFjZWFibGU+aW5fbHNuPC9yZXBsYWNl YWJsZT4gaXMgc3BlY2lmaWVkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwv dmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8ZnVu Y3Rpb24+CisgICAgICBwZ19nZXRfd2FsX3JlY29yZF9pbmZvKGluX2xzbiBwZ19sc24sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xzbiBPVVQgcGdfbHNuLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlbmRfbHNuIE9VVCBwZ19sc24sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHByZXZfbHNuIE9VVCBwZ19sc24sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHhpZCBPVVQgeGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJj ZV9tYW5hZ2VyIE9VVCB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRf bGVuZ3RoIE9VVCBpbnQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcGlfbGVuZ3Ro IE9VVCBpbnQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiBPVVQg dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfcmVmIE9VVCB0ZXh0LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX2xlbmd0aCBPVVQgaW50NCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSBPVVQgYnl0ZWEpCisgICAgIDwvZnVuY3Rpb24+ CisgICAgPC90ZXJtPgorCisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIEdldHMg V0FMIHJlY29yZCBpbmZvcm1hdGlvbiBvZiBhIGdpdmVuIExTTi4gVGhpcyBmdW5jdGlvbiBlbWl0 cyBhbiBlcnJvcgorICAgICAgaWYgYSBmdXR1cmUgKHRoZSBMU04gZGF0YWJhc2Ugc3lzdGVtIGRv ZXNuJ3Qga25vdyBhYm91dCkKKyAgICAgIDxyZXBsYWNlYWJsZT5pbl9sc248L3JlcGxhY2VhYmxl PiBpcyBzcGVjaWZpZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJs aXN0ZW50cnk+CisKKyAgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8ZnVuY3Rp b24+CisgICAgICBwZ19nZXRfd2FsX3JlY29yZHNfaW5mbyhzdGFydF9sc24gcGdfbHNuLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xzbiBwZ19sc24sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdGFydF9sc24gT1VUIHBnX2xzbiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVuZF9sc24gT1VUIHBnX2xzbiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHByZXZfbHNuIE9VVCBwZ19sc24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB4aWQgT1VUIHhpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlX21h bmFnZXIgT1VUIHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRfbGVu Z3RoIE9VVCBpbnQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnBpX2xlbmd0aCBP VVQgaW50NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uIE9VVCB0 ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfcmVmIE9VVCB0ZXh0LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9sZW5ndGggT1VUIGludDQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhIE9VVCBieXRlYSkKKyAgICAgIHJldHVybnMg c2V0b2YgcmVjb3JkCisgICAgIDwvZnVuY3Rpb24+CisgICAgPC90ZXJtPgorCisgICAgPGxpc3Rp dGVtPgorICAgICA8cGFyYT4KKyAgICAgIEdldHMgaW5mb3JtYXRpb24gb2YgYWxsIHRoZSB2YWxp ZCBXQUwgcmVjb3JkcyBiZXR3ZWVuCisgICAgICA8cmVwbGFjZWFibGU+c3RhcnRfbHNuPC9yZXBs YWNlYWJsZT4gYW5kIDxyZXBsYWNlYWJsZT5lbmRfbHNuPC9yZXBsYWNlYWJsZT4uCisgICAgICBS ZXR1cm5zIG9uZSByb3cgcGVyIGVhY2ggdmFsaWQgV0FMIHJlY29yZC4gVGhpcyBmdW5jdGlvbiBl bWl0cyBhbiBlcnJvcgorICAgICAgaWYgYSBmdXR1cmUgKHRoZSBMU04gZGF0YWJhc2Ugc3lzdGVt IGRvZXNuJ3Qga25vdyBhYm91dCkKKyAgICAgIDxyZXBsYWNlYWJsZT5zdGFydF9sc248L3JlcGxh Y2VhYmxlPiBvciA8cmVwbGFjZWFibGU+ZW5kX2xzbjwvcmVwbGFjZWFibGU+CisgICAgICBpcyBz cGVjaWZpZWQuIEZvciBleGFtcGxlLCB1c2FnZSBvZiB0aGUgZnVuY3Rpb24gaXMgYXMgZm9sbG93 czoKKzxzY3JlZW4+Citwb3N0Z3Jlcz0jIHNlbGVjdCBzdGFydF9sc24sIGVuZF9sc24sIHByZXZf bHNuLCB4aWQsIHJlc291cmNlX21hbmFnZXIsIHJlY29yZF9sZW5ndGgsIGZwaV9sZW5ndGgsIGJs b2NrX3JlZiwgZGF0YV9sZW5ndGggZnJvbSBwZ19nZXRfd2FsX3JlY29yZHNfaW5mbygnMC8xNDAx NzkwJywgJzAvMTQwMUQ4OCcpOworIHN0YXJ0X2xzbiB8ICBlbmRfbHNuICB8IHByZXZfbHNuICB8 IHhpZCB8IHJlc291cmNlX21hbmFnZXIgfCByZWNvcmRfbGVuZ3RoIHwgZnBpX2xlbmd0aCB8ICAg ICAgICAgICAgICAgICAgICAgYmxvY2tfcmVmICAgICAgICAgICAgICAgICAgICAgIHwgZGF0YV9s ZW5ndGggCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyAwLzE0 MDE4QjAgfCAwLzE0MDE4RUYgfCAwLzE0MDE3ODggfCA2NzMgfCBCdHJlZSAgICAgICAgICAgIHwg ICAgICAgICAgICA2NCB8ICAgICAgICAgIDAgfCAgICAgICAgIGJsa3JlZiAjMDogcmVsIDE2NjMv MS8yNjk2IGZvcmsgbWFpbiBibGsgMSB8ICAgICAgICAgICAyCisgMC8xNDAxOEYwIHwgMC8xNDAx QTE3IHwgMC8xNDAxOEIwIHwgNjczIHwgSGVhcCAgICAgICAgICAgICB8ICAgICAgICAgICAyOTAg fCAgICAgICAgICAwIHwgICAgICAgICBibGtyZWYgIzA6IHJlbCAxNjYzLzEvMjYxOSBmb3JrIG1h aW4gYmxrIDEgfCAgICAgICAgICAgMworIDAvMTQwMUExOCB8IDAvMTQwMUE1NyB8IDAvMTQwMThG MCB8IDY3MyB8IEJ0cmVlICAgICAgICAgICAgfCAgICAgICAgICAgIDY0IHwgICAgICAgICAgMCB8 ICAgICAgICAgYmxrcmVmICMwOiByZWwgMTY2My8xLzI2OTYgZm9yayBtYWluIGJsayAxIHwgICAg ICAgICAgIDIKKyAwLzE0MDFBNTggfCAwLzE0MDFCNDcgfCAwLzE0MDFBMTggfCA2NzMgfCBIZWFw ICAgICAgICAgICAgIHwgICAgICAgICAgIDIzNCB8ICAgICAgICAgIDAgfCAgICAgICAgIGJsa3Jl ZiAjMDogcmVsIDE2NjMvMS8yNjE5IGZvcmsgbWFpbiBibGsgMSB8ICAgICAgICAgICAzCisgMC8x NDAxQjQ4IHwgMC8xNDAxQjg3IHwgMC8xNDAxQTU4IHwgNjczIHwgQnRyZWUgICAgICAgICAgICB8 ICAgICAgICAgICAgNjQgfCAgICAgICAgICAwIHwgICAgICAgICBibGtyZWYgIzA6IHJlbCAxNjYz LzEvMjY5NiBmb3JrIG1haW4gYmxrIDEgfCAgICAgICAgICAgMgorIDAvMTQwMUI4OCB8IDAvMTQw MUM2NyB8IDAvMTQwMUI0OCB8IDY3MyB8IEhlYXAgICAgICAgICAgICAgfCAgICAgICAgICAgMjIy IHwgICAgICAgICAgMCB8ICAgICAgICAgYmxrcmVmICMwOiByZWwgMTY2My8xLzI2MTkgZm9yayBt YWluIGJsayAxIHwgICAgICAgICAgIDMKKyAwLzE0MDFDNjggfCAwLzE0MDFDQTcgfCAwLzE0MDFC ODggfCA2NzMgfCBCdHJlZSAgICAgICAgICAgIHwgICAgICAgICAgICA2NCB8ICAgICAgICAgIDAg fCAgICAgICAgIGJsa3JlZiAjMDogcmVsIDE2NjMvMS8yNjk2IGZvcmsgbWFpbiBibGsgMSB8ICAg ICAgICAgICAyCisgMC8xNDAxQ0E4IHwgMC8xNDAxRDg3IHwgMC8xNDAxQzY4IHwgNjczIHwgSGVh cCAgICAgICAgICAgICB8ICAgICAgICAgICAyMTcgfCAgICAgICAgICAwIHwgICAgICAgICBibGty ZWYgIzA6IHJlbCAxNjYzLzEvMjYxOSBmb3JrIG1haW4gYmxrIDEgfCAgICAgICAgICAgMworKDgg cm93cykKKzwvc2NyZWVuPgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFy bGlzdGVudHJ5PgorCisgICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGZ1bmN0 aW9uPgorICAgICAgcGdfZ2V0X3dhbF9yZWNvcmRzX2luZm9fdGlsbF9lbmRfb2Zfd2FsKHN0YXJ0 X2xzbiBwZ19sc24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RhcnRfbHNuIE9VVCBwZ19sc24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZW5kX2xzbiBPVVQgcGdfbHNuLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZfbHNuIE9VVCBwZ19sc24sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGlkIE9VVCB4aWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VfbWFuYWdlciBP VVQgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZWNvcmRfbGVuZ3RoIE9VVCBpbnQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZwaV9sZW5ndGggT1VUIGludDQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gT1VUIHRleHQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfcmVmIE9VVCB0ZXh0LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfbGVuZ3Ro IE9VVCBpbnQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGEgT1VUIGJ5dGVhKQorICAgICAgcmV0dXJucyBzZXRvZiByZWNvcmQKKyAgICAgPC9mdW5j dGlvbj4KKyAgICA8L3Rlcm0+CisKKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAg VGhpcyBmdW5jdGlvbiBpcyBzYW1lIGFzIDxmdW5jdGlvbj5wZ19nZXRfd2FsX3JlY29yZHNfaW5m bygpPC9mdW5jdGlvbj4KKyAgICAgIGV4Y2VwdCB0aGF0IGl0IGdldHMgaW5mb3JtYXRpb24gb2Yg YWxsIHRoZSB2YWxpZCBXQUwgcmVjb3JkcyBmcm9tIAorICAgICAgPHJlcGxhY2VhYmxlPnN0YXJ0 X2xzbjwvcmVwbGFjZWFibGU+IHRpbGwgZW5kIG9mIFdBTC4KKyAgICAgPC9wYXJhPgorICAgIDwv bGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgIDx2YXJsaXN0ZW50cnk+CisgICAg PHRlcm0+CisgICAgIDxmdW5jdGlvbj4KKyAgICAgIHBnX2dldF93YWxfc3RhdHMoc3RhcnRfbHNu IHBnX2xzbiwKKyAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xzbiBwZ19sc24sCisgICAgICAg ICAgICAgICAgICAgICAgIHJlc291cmNlX21hbmFnZXIgT1VUIHRleHQsCisgICAgICAgICAgICAg ICAgICAgICAgIGNvdW50IE9VVCBpbnQ4LAorICAgICAgICAgICAgICAgICAgICAgICBjb3VudF9w ZXJjZW50YWdlIE9VVCBmbG9hdDQsCisgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZF9sZW5n dGggT1VUIGludDgsCisgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZF9sZW5ndGhfcGVyY2Vu dGFnZSBPVVQgZmxvYXQ0LAorICAgICAgICAgICAgICAgICAgICAgICBmcGlfbGVuZ3RoIE9VVCBp bnQ4LAorICAgICAgICAgICAgICAgICAgICAgICBmcGlfbGVuZ3RoX3BlcmNlbnRhZ2UgT1VUIGZs b2F0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29tYmluZWRfc2l6ZSBPVVQgaW50OCwKKyAg ICAgICAgICAgICAgICAgICAgICAgY29tYmluZWRfc2l6ZV9wZXJjZW50YWdlIE9VVCBmbG9hdDQp CisgICAgICByZXR1cm5zIHNldG9mIHJlY29yZAorICAgICA8L2Z1bmN0aW9uPgorICAgIDwvdGVy bT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBHZXRzIHN0YXRpc3RpY3Mg b2YgYWxsIHRoZSB2YWxpZCBXQUwgcmVjb3JkcyBiZXR3ZWVuCisgICAgICA8cmVwbGFjZWFibGU+ c3RhcnRfbHNuPC9yZXBsYWNlYWJsZT4gYW5kIDxyZXBsYWNlYWJsZT5lbmRfbHNuPC9yZXBsYWNl YWJsZT4uCisgICAgICBSZXR1cm5zIG9uZSByb3cgcGVyIGVhY2ggdmFsaWQgV0FMIHJlY29yZC4g VGhpcyBmdW5jdGlvbiBlbWl0cyBhbiBlcnJvcgorICAgICAgaWYgYSBmdXR1cmUgKHRoZSBMU04g ZGF0YWJhc2Ugc3lzdGVtIGRvZXNuJ3Qga25vdyBhYm91dCkKKyAgICAgIDxyZXBsYWNlYWJsZT5z dGFydF9sc248L3JlcGxhY2VhYmxlPiBvciA8cmVwbGFjZWFibGU+ZW5kX2xzbjwvcmVwbGFjZWFi bGU+CisgICAgICBpcyBzcGVjaWZpZWQuIEZvciBleGFtcGxlLCB1c2FnZSBvZiB0aGUgZnVuY3Rp b24gaXMgYXMgZm9sbG93czoKKzxzY3JlZW4+Citwb3N0Z3Jlcz0jIHNlbGVjdCAqIGZyb20gcGdf Z2V0X3dhbF9zdGF0cygnMC8xM0U4MEMwJywgJzAvMTYwMDAwMCcpIHdoZXJlIGNvdW50ID4gMDsK KyByZXNvdXJjZV9tYW5hZ2VyIHwgY291bnQgfCBjb3VudF9wZXJjZW50YWdlIHwgcmVjb3JkX3Np emUgfCByZWNvcmRfc2l6ZV9wZXJjZW50YWdlIHwgZnBpX3NpemUgfCBmcGlfc2l6ZV9wZXJjZW50 YWdlIHwgY29tYmluZWRfc2l6ZSB8IGNvbWJpbmVkX3NpemVfcGVyY2VudGFnZSAKKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBYTE9HICAgICAgICAgICAg IHwgICAgIDYgfCAgICAgIDAuMDMyMTU2MDY1IHwgICAgICAgICA2MDAgfCAgICAgICAgICAxLjM5 NjUwNThlLTA1IHwgICAgICAgIDAgfCAgICAgICAgICAgICAgICAgICAwIHwgICAgICAgICAgIDYw MCB8ICAgICAgICAgICAgMS4zOTYzMDEyZS0wNQorIFRyYW5zYWN0aW9uICAgICAgfCAgICA2MSB8 ICAgICAgIDAuMzI2OTE5OTcgfCAgICAgICAxNjM5OSB8ICAgICAgICAgIDAuMDAwMzgxNjg4MzMg fCAgICAgICAgMCB8ICAgICAgICAgICAgICAgICAgIDAgfCAgICAgICAgIDE2Mzk5IHwgICAgICAg ICAgICAgMC4wMDAzODE2MzI0CisgU3RvcmFnZSAgICAgICAgICB8ICAgICAxIHwgICAgICAwLjAw NTM1OTM0NCB8ICAgICAgICAgIDQyIHwgICAgICAgICAgIDkuNzc1NTQxZS0wNyB8ICAgICAgICAw IHwgICAgICAgICAgICAgICAgICAgMCB8ICAgICAgICAgICAgNDIgfCAgICAgICAgICAgICA5Ljc3 NDEwOWUtMDcKKyBEYXRhYmFzZSAgICAgICAgIHwgICAgIDIgfCAgICAgIDAuMDEwNzE4Njg4IHwg ICAgICAgICAgODQgfCAgICAgICAgICAxLjk1NTEwODJlLTA2IHwgICAgICAgIDAgfCAgICAgICAg ICAgICAgICAgICAwIHwgICAgICAgICAgICA4NCB8ICAgICAgICAgICAgMS45NTQ4MjE4ZS0wNgor IFN0YW5kYnkgICAgICAgICAgfCAgIDE0NyB8ICAgICAgIDAuNzg3ODIzNTYgfCAgICAgICAxMjcy NiB8ICAgICAgICAgICAwLjAwMDI5NjE5ODkgfCAgICAgICAgMCB8ICAgICAgICAgICAgICAgICAg IDAgfCAgICAgICAgIDEyNzI2IHwgICAgICAgICAgICAgMC4wMDAyOTYxNTU1CisgSGVhcDIgICAg ICAgICAgICB8ICAgODA0IHwgICAgICAgIDQuMzA4OTEyOCB8ICAgICAgMTkwMjgzIHwgICAgICAg ICAgIDAuMDA0NDI4ODU1NiB8ICAgMzc0MDk2IHwgICAgICAgICAgICA1OS40MTEwNiB8ICAgICAg ICA1NjQzNzkgfCAgICAgICAgICAgICAgMC4wMTMxMzQwNTEKKyBIZWFwICAgICAgICAgICAgIHwg MTY3OTAgfCAgICAgICAgIDg5Ljk4MzM4IHwgICAgIDExOTE4MzUgfCAgICAgICAgICAgIDAuMDI3 NzQwMDc2IHwgICAxNTc1MjggfCAgICAgICAgICAgIDI1LjAxNzM5IHwgICAgICAgMTM0OTM2MyB8 ICAgICAgICAgICAgICAwLjAzMTQwMTk1NQorIEJ0cmVlICAgICAgICAgICAgfCAgIDg0OCB8ICAg ICAgICA0LjU0NDcyMzUgfCAgNDI5NTAyNTM5NSB8ICAgICAgICAgICAgICAgOTkuOTY3MTMgfCAg ICA5ODA1MCB8ICAgICAgICAgICAxNS41NzE1NDkgfCAgICA0Mjk1MTIzNDQ1IHwgICAgICAgICAg ICAgICAgIDk5Ljk1NDc3CisoOCByb3dzKQorPC9zY3JlZW4+CisgICAgIDwvcGFyYT4KKyAgICA8 L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICA8dmFybGlzdGVudHJ5PgorICAg IDx0ZXJtPgorICAgICA8ZnVuY3Rpb24+CisgICAgICBwZ19nZXRfd2FsX3N0YXRzX3RpbGxfZW5k X29mX3dhbChzdGFydF9sc24gcGdfbHNuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVzb3VyY2VfbWFuYWdlciBPVVQgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvdW50IE9VVCBpbnQ4LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY291bnRfcGVyY2VudGFnZSBPVVQgZmxvYXQ0LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkX2xlbmd0aCBPVVQgaW50OCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZF9sZW5ndGhfcGVyY2Vu dGFnZSBPVVQgZmxvYXQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZnBpX2xlbmd0aCBPVVQgaW50OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZwaV9sZW5ndGhfcGVyY2VudGFnZSBPVVQgZmxvYXQ0LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29tYmluZWRfc2l6ZSBPVVQgaW50OCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbWJpbmVkX3NpemVfcGVyY2VudGFnZSBPVVQg ZmxvYXQ0KQorICAgICAgcmV0dXJucyBzZXRvZiByZWNvcmQKKyAgICAgPC9mdW5jdGlvbj4KKyAg ICA8L3Rlcm0+CisKKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmdW5j dGlvbiBpcyBzYW1lIGFzIDxmdW5jdGlvbj5wZ19nZXRfd2FsX3N0YXRzKCk8L2Z1bmN0aW9uPiBl eGNlcHQKKyAgICAgIHRoYXQgaXQgZ2V0cyBzdGF0cyBvZiBhbGwgdGhlIHZhbGlkIFdBTCByZWNv cmRzIGZyb20KKyAgICAgIDxyZXBsYWNlYWJsZT5zdGFydF9sc248L3JlcGxhY2VhYmxlPiB0aWxs IGVuZCBvZiBXQUwuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0 ZW50cnk+CisKKyAgPC92YXJpYWJsZWxpc3Q+CisgPC9zZWN0Mj4KKworIDxzZWN0Mj4KKyAgPHRp dGxlPkF1dGhvcjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBCaGFyYXRoIFJ1cGlyZWRkeSA8ZW1h aWw+YmhhcmF0aC5ydXBpcmVkZHlmb3Jwb3N0Z3Jlc0BnbWFpbC5jb208L2VtYWlsPgorICA8L3Bh cmE+CisgPC9zZWN0Mj4KKworPC9zZWN0MT4KLS0gCjIuMjUuMQoK --00000000000073b99905db0542b4--