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 1pZv5e-0004CL-5V for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Mar 2023 14:48:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pZv5c-0005fe-Br for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Mar 2023 14:48:24 +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 1pZv5b-0005dB-OF for pgsql-hackers@lists.postgresql.org; Wed, 08 Mar 2023 14:48:24 +0000 Received: from mail-lf1-x134.google.com ([2a00:1450:4864:20::134]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pZv5Z-0001dd-6W for pgsql-hackers@postgresql.org; Wed, 08 Mar 2023 14:48:22 +0000 Received: by mail-lf1-x134.google.com with SMTP id i28so21757869lfv.0 for ; Wed, 08 Mar 2023 06:48:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678286898; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=/LzI26Uee9kMlLFO7kBo9TZsbyBNYA8tTwK/HotjMRA=; b=ZuGAxKakx5uAWC1GE9ld9h8cUMopm405vXgudRWG3GZALijvM0HV2GJEm1Nm9Kpsih gRCs5lwlC5I74uYiNG6FwYK2siLsD7luz3P9W8Bzd8OPAdb+b2fYhOk68qbX0VNWDnS4 0hrqLIpiAKwuW8GLGbh7ec4od3ugVZuQp94vFc0eZ8JJ/XSEM4dYC7Pl2I8I14J0BdQB K9o9NhyD2yff9vM0rcuyqHc0Cut1SP9uCcF/HuR/7CdaAJTMH5gU1z0fhTOkSE1pJ/n6 4ekuNlGKFzq+w8dk66TDfpceAPPJQPTIRXs3IxJ+XinS53qIEvGwH+5mrQOU5COFN0Zd Qvzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678286898; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=/LzI26Uee9kMlLFO7kBo9TZsbyBNYA8tTwK/HotjMRA=; b=j698z3rtuqVgUJFmaxorqq5ZOW511alJjQDYRcCP8EKcBIKWqDmrB/ArztrYWGsxf8 8+uTs7i7RGYUvzHL07IiLzLTCjoA4nWFsom/mhnGoZC5P/7zcKEDAV0yVWTcxByBYzpu MAvNtIeqfYyfTWyjmKUcdwhTbc33qbm1PvTUPSKflmpI/LSXRLFwWZ0gTJ8xiO91WA/T PgRvQkzFa5UdVdMdpE3si46Yyj2OHZvjaFV7IoVkQxywpQcDiv5i5Zg+tuIfOtBg9vPx yoM2/+om8XOy8eV4zqIsIFT4d/3LQIoinQ6NFkgipUxPBi/R3zxMr3OK7VwxM3GP7Mjn nJhA== X-Gm-Message-State: AO0yUKXSi0seHXilRdEUH2zfIOHErPD2YUwJ6ylH0yrU2MDyWP8ZBfks 66jvhk+RdqPuyMgtq6G6bXdomzlD0oA9N0v+DWo= X-Google-Smtp-Source: AK7set9mVvpSotokBTQj73IMH0dXArXdHonn58ofoWnrOkZSQhWF/3neTbmlM/vgFDlfkzZdqlvvZNvpwxmdrU2Ycjw= X-Received: by 2002:ac2:4c2e:0:b0:4dd:a025:d8c with SMTP id u14-20020ac24c2e000000b004dda0250d8cmr5860293lfq.5.1678286898097; Wed, 08 Mar 2023 06:48:18 -0800 (PST) MIME-Version: 1.0 References: <20230307.111745.676528378431466705.horikyota.ntt@gmail.com> <20230307.154902.1060895277048303254.horikyota.ntt@gmail.com> In-Reply-To: From: Bharath Rupireddy Date: Wed, 8 Mar 2023 20:18:06 +0530 Message-ID: Subject: Re: Add pg_walinspect function with block info columns To: Michael Paquier Cc: Kyotaro Horiguchi , boekewurm+postgres@gmail.com, melanieplageman@gmail.com, pgsql-hackers@postgresql.org, pg@bowt.ie Content-Type: multipart/mixed; boundary="00000000000064bd7005f6649e8b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000064bd7005f6649e8b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Mar 8, 2023 at 4:23=E2=80=AFPM Michael Paquier wrote: > > On Wed, Mar 08, 2023 at 04:01:56PM +0530, Bharath Rupireddy wrote: > > I understand that performance is critical here but we need to ensure > > memory is used wisely. Therefore, I'd still vote to free at least the > > major contributors here, that is, pfree(raw_data);, pfree(raw_page); > > and pfree(flags); right after they are done using. I'm sure pfree()s > > don't hurt more than resetting memory context for every block_id. > > Okay by me to have intermediate pfrees between each block scanned if > you feel strongly about it. Thanks. Attached v4 with that change. -- Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --00000000000064bd7005f6649e8b Content-Type: application/x-patch; name="v4-0001-Rework-pg_walinspect-to-retrieve-more-block-infor.patch" Content-Disposition: attachment; filename="v4-0001-Rework-pg_walinspect-to-retrieve-more-block-infor.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lezsa96n0 RnJvbSBlNzMyNDUyNzdjZmFmOTU0NjJlZjFmMWZlNTMzNGJmNWFiYTg3YTJhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgOCBNYXIgMjAyMyAxNDoyOTo1MCArMDAw MApTdWJqZWN0OiBbUEFUQ0ggdjRdIFJld29yayBwZ193YWxpbnNwZWN0IHRvIHJldHJpZXZlIG1v cmUgYmxvY2sgaW5mb3JtYXRpb24KCi0tLQogLi4uL3BnX3dhbGluc3BlY3QvZXhwZWN0ZWQvcGdf d2FsaW5zcGVjdC5vdXQgIHwgIDM1ICsrLS0KIC4uLi9wZ193YWxpbnNwZWN0L3BnX3dhbGluc3Bl Y3QtLTEuMC0tMS4xLnNxbCB8ICAxNiArLQogY29udHJpYi9wZ193YWxpbnNwZWN0L3BnX3dhbGlu c3BlY3QuYyAgICAgICAgIHwgMTUwICsrKysrKysrKysrKystLS0tLQogY29udHJpYi9wZ193YWxp bnNwZWN0L3NxbC9wZ193YWxpbnNwZWN0LnNxbCAgIHwgIDMzICsrLS0KIGRvYy9zcmMvc2dtbC9w Z3dhbGluc3BlY3Quc2dtbCAgICAgICAgICAgICAgICB8ICA0OCArKysrLS0KIDUgZmlsZXMgY2hh bmdlZCwgMTk2IGluc2VydGlvbnMoKyksIDg2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcGdfd2FsaW5zcGVjdC9leHBlY3RlZC9wZ193YWxpbnNwZWN0Lm91dCBiL2NvbnRyaWIv cGdfd2FsaW5zcGVjdC9leHBlY3RlZC9wZ193YWxpbnNwZWN0Lm91dAppbmRleCA5YmNiMDUzNTRl Li5lMGViN2NhMDhmIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3dhbGluc3BlY3QvZXhwZWN0ZWQv cGdfd2FsaW5zcGVjdC5vdXQKKysrIGIvY29udHJpYi9wZ193YWxpbnNwZWN0L2V4cGVjdGVkL3Bn X3dhbGluc3BlY3Qub3V0CkBAIC03NCwxNyArNzQsMjggQEAgU0VMRUNUIENPVU5UKCopID49IDEg QVMgb2sgRlJPTSBwZ19nZXRfd2FsX3JlY29yZHNfaW5mbyg6J3dhbF9sc24xJywgOid3YWxfbHNu MicKICgxIHJvdykKIAogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVGVzdHMgdG8gZ2V0IGZ1bGwgcGFnZSBp bWFnZSAoRlBJKSBmcm9tIFdBTCByZWNvcmQKKy0tIFRlc3RzIHRvIGdldCBibG9jayBpbmZvcm1h dGlvbiBmcm9tIFdBTCByZWNvcmQKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFVwZGF0ZSB0YWJsZSB0byBn ZW5lcmF0ZSBzb21lIGJsb2NrIGRhdGEKIFNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSBBUyB3 YWxfbHNuMyBcZ3NldAotLS0gRm9yY2UgRlBJIG9uIHRoZSBuZXh0IHVwZGF0ZS4KLUNIRUNLUE9J TlQ7Ci0tLSBVcGRhdGUgdGFibGUgdG8gZ2VuZXJhdGUgYW4gRlBJLgotVVBEQVRFIHNhbXBsZV90 YmwgU0VUIGNvbDEgPSBjb2wxICogMTAwIFdIRVJFIGNvbDEgPSAxOworVVBEQVRFIHNhbXBsZV90 YmwgU0VUIGNvbDEgPSBjb2wxICsgMSBXSEVSRSBjb2wxID0gMTsKIFNFTEVDVCBwZ19jdXJyZW50 X3dhbF9sc24oKSBBUyB3YWxfbHNuNCBcZ3NldAorLS0gQ2hlY2sgaWYgd2UgZ2V0IGJsb2NrIGRh dGEgZnJvbSBXQUwgcmVjb3JkLgorU0VMRUNUIENPVU5UKCopID49IDEgQVMgb2sgRlJPTSBwZ19n ZXRfd2FsX2Jsb2NrX2luZm8oOid3YWxfbHNuMycsIDond2FsX2xzbjQnKQorICBXSEVSRSByZWxm aWxlbm9kZSA9IDonc2FtcGxlX3RibF9vaWQnIEFORCBibG9ja2RhdGEgSVMgTk9UIE5VTEw7Cisg b2sgCistLS0tCisgdAorKDEgcm93KQorCistLSBGb3JjZSBmdWxsLXBhZ2UgaW1hZ2Ugb24gdGhl IG5leHQgdXBkYXRlLgorU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIEFTIHdhbF9sc241IFxn c2V0CitDSEVDS1BPSU5UOworVVBEQVRFIHNhbXBsZV90YmwgU0VUIGNvbDEgPSBjb2wxICsgMSBX SEVSRSBjb2wxID0gMjsKK1NFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSBBUyB3YWxfbHNuNiBc Z3NldAogLS0gQ2hlY2sgaWYgd2UgZ2V0IEZQSSBmcm9tIFdBTCByZWNvcmQuCi1TRUxFQ1QgQ09V TlQoKikgPj0gMSBBUyBvayBGUk9NIHBnX2dldF93YWxfZnBpX2luZm8oOid3YWxfbHNuMycsIDon d2FsX2xzbjQnKQotICBXSEVSRSByZWxmaWxlbm9kZSA9IDonc2FtcGxlX3RibF9vaWQnOworU0VM RUNUIENPVU5UKCopID49IDEgQVMgb2sgRlJPTSBwZ19nZXRfd2FsX2Jsb2NrX2luZm8oOid3YWxf bHNuNScsIDond2FsX2xzbjYnKQorICBXSEVSRSByZWxmaWxlbm9kZSA9IDonc2FtcGxlX3RibF9v aWQnIEFORCBmcGkgSVMgTk9UIE5VTEw7CiAgb2sgCiAtLS0tCiAgdApAQCAtMTE2LDcgKzEyNyw3 IEBAIFNFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX3BnX3dhbGluc3BlY3Qn LAogKDEgcm93KQogCiBTRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSgncmVncmVzc19wZ193 YWxpbnNwZWN0JywKLSAgJ3BnX2dldF93YWxfZnBpX2luZm8ocGdfbHNuLCBwZ19sc24pICcsICdF WEVDVVRFJyk7IC0tIG5vCisgICdwZ19nZXRfd2FsX2Jsb2NrX2luZm8ocGdfbHNuLCBwZ19sc24p ICcsICdFWEVDVVRFJyk7IC0tIG5vCiAgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSAKIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogIGYKQEAgLTE0Niw3ICsxNTcsNyBAQCBTRUxFQ1QgaGFzX2Z1bmN0 aW9uX3ByaXZpbGVnZSgncmVncmVzc19wZ193YWxpbnNwZWN0JywKICgxIHJvdykKIAogU0VMRUNU IGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfcGdfd2FsaW5zcGVjdCcsCi0gICdwZ19n ZXRfd2FsX2ZwaV9pbmZvKHBnX2xzbiwgcGdfbHNuKSAnLCAnRVhFQ1VURScpOyAtLSB5ZXMKKyAg J3BnX2dldF93YWxfYmxvY2tfaW5mbyhwZ19sc24sIHBnX2xzbikgJywgJ0VYRUNVVEUnKTsgLS0g eWVzCiAgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog IHQKQEAgLTE2MCw3ICsxNzEsNyBAQCBHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2dldF93 YWxfcmVjb3Jkc19pbmZvKHBnX2xzbiwgcGdfbHNuKQogICBUTyByZWdyZXNzX3BnX3dhbGluc3Bl Y3Q7CiBHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2dldF93YWxfc3RhdHMocGdfbHNuLCBw Z19sc24sIGJvb2xlYW4pCiAgIFRPIHJlZ3Jlc3NfcGdfd2FsaW5zcGVjdDsKLUdSQU5UIEVYRUNV VEUgT04gRlVOQ1RJT04gcGdfZ2V0X3dhbF9mcGlfaW5mbyhwZ19sc24sIHBnX2xzbikKK0dSQU5U IEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfZ2V0X3dhbF9ibG9ja19pbmZvKHBnX2xzbiwgcGdfbHNu KQogICBUTyByZWdyZXNzX3BnX3dhbGluc3BlY3Q7CiBTRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZp bGVnZSgncmVncmVzc19wZ193YWxpbnNwZWN0JywKICAgJ3BnX2dldF93YWxfcmVjb3JkX2luZm8o cGdfbHNuKScsICdFWEVDVVRFJyk7IC0tIHllcwpAQCAtMTg0LDcgKzE5NSw3IEBAIFNFTEVDVCBo YXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX3BnX3dhbGluc3BlY3QnLAogKDEgcm93KQog CiBTRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSgncmVncmVzc19wZ193YWxpbnNwZWN0JywK LSAgJ3BnX2dldF93YWxfZnBpX2luZm8ocGdfbHNuLCBwZ19sc24pICcsICdFWEVDVVRFJyk7IC0t IHllcworICAncGdfZ2V0X3dhbF9ibG9ja19pbmZvKHBnX2xzbiwgcGdfbHNuKSAnLCAnRVhFQ1VU RScpOyAtLSB5ZXMKICBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlIAogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgdApAQCAtMTk2LDcgKzIwNyw3IEBAIFJFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9O IHBnX2dldF93YWxfcmVjb3Jkc19pbmZvKHBnX2xzbiwgcGdfbHNuKQogICBGUk9NIHJlZ3Jlc3Nf cGdfd2FsaW5zcGVjdDsKIFJFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2dldF93YWxfc3Rh dHMocGdfbHNuLCBwZ19sc24sIGJvb2xlYW4pCiAgIEZST00gcmVncmVzc19wZ193YWxpbnNwZWN0 OwotUkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfZ2V0X3dhbF9mcGlfaW5mbyhwZ19sc24s IHBnX2xzbikKK1JFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2dldF93YWxfYmxvY2tfaW5m byhwZ19sc24sIHBnX2xzbikKICAgRlJPTSByZWdyZXNzX3BnX3dhbGluc3BlY3Q7CiAtLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CiAtLSBDbGVhbiB1cApkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ193YWxpbnNwZWN0L3Bn X3dhbGluc3BlY3QtLTEuMC0tMS4xLnNxbCBiL2NvbnRyaWIvcGdfd2FsaW5zcGVjdC9wZ193YWxp bnNwZWN0LS0xLjAtLTEuMS5zcWwKaW5kZXggMWU5ZTFlNjExNS4uZTY3NGVmMjVhYSAxMDA2NDQK LS0tIGEvY29udHJpYi9wZ193YWxpbnNwZWN0L3BnX3dhbGluc3BlY3QtLTEuMC0tMS4xLnNxbAor KysgYi9jb250cmliL3BnX3dhbGluc3BlY3QvcGdfd2FsaW5zcGVjdC0tMS4wLS0xLjEuc3FsCkBA IC00LDIxICs0LDI1IEBACiBcZWNobyBVc2UgIkFMVEVSIEVYVEVOU0lPTiBwZ193YWxpbnNwZWN0 IFVQREFURSBUTyAnMS4xJyIgdG8gbG9hZCB0aGlzIGZpbGUuIFxxdWl0CiAKIC0tCi0tLSBwZ19n ZXRfd2FsX2ZwaV9pbmZvKCkKKy0tIHBnX2dldF93YWxfYmxvY2tfaW5mbygpCiAtLQotQ1JFQVRF IEZVTkNUSU9OIHBnX2dldF93YWxfZnBpX2luZm8oSU4gc3RhcnRfbHNuIHBnX2xzbiwKK0NSRUFU RSBGVU5DVElPTiBwZ19nZXRfd2FsX2Jsb2NrX2luZm8oSU4gc3RhcnRfbHNuIHBnX2xzbiwKIAlJ TiBlbmRfbHNuIHBnX2xzbiwKIAlPVVQgbHNuIHBnX2xzbiwKKwlPVVQgYmxvY2tpZCBpbnQyLAog CU9VVCByZWx0YWJsZXNwYWNlIG9pZCwKIAlPVVQgcmVsZGF0YWJhc2Ugb2lkLAogCU9VVCByZWxm aWxlbm9kZSBvaWQsCiAJT1VUIHJlbGJsb2NrbnVtYmVyIGludDgsCiAJT1VUIGZvcmtuYW1lIHRl eHQsCi0JT1VUIGZwaSBieXRlYQorCU9VVCBibG9ja2RhdGEgYnl0ZWEsCisJT1VUIGZwaSBieXRl YSwKKwlPVVQgZnBpbGVuIGludDQsCisJT1VUIGZwaWluZm8gdGV4dFtdCiApCiBSRVRVUk5TIFNF VE9GIHJlY29yZAotQVMgJ01PRFVMRV9QQVRITkFNRScsICdwZ19nZXRfd2FsX2ZwaV9pbmZvJwor QVMgJ01PRFVMRV9QQVRITkFNRScsICdwZ19nZXRfd2FsX2Jsb2NrX2luZm8nCiBMQU5HVUFHRSBD IFNUUklDVCBQQVJBTExFTCBTQUZFOwogCi1SRVZPS0UgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19n ZXRfd2FsX2ZwaV9pbmZvKHBnX2xzbiwgcGdfbHNuKSBGUk9NIFBVQkxJQzsKLUdSQU5UIEVYRUNV VEUgT04gRlVOQ1RJT04gcGdfZ2V0X3dhbF9mcGlfaW5mbyhwZ19sc24sIHBnX2xzbikgVE8gcGdf cmVhZF9zZXJ2ZXJfZmlsZXM7CitSRVZPS0UgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19nZXRfd2Fs X2Jsb2NrX2luZm8ocGdfbHNuLCBwZ19sc24pIEZST00gUFVCTElDOworR1JBTlQgRVhFQ1VURSBP TiBGVU5DVElPTiBwZ19nZXRfd2FsX2Jsb2NrX2luZm8ocGdfbHNuLCBwZ19sc24pIFRPIHBnX3Jl YWRfc2VydmVyX2ZpbGVzOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ193YWxpbnNwZWN0L3BnX3dh bGluc3BlY3QuYyBiL2NvbnRyaWIvcGdfd2FsaW5zcGVjdC9wZ193YWxpbnNwZWN0LmMKaW5kZXgg YjdiMGE4MDVlZS4uNWVhZDMwNjI4ZSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ193YWxpbnNwZWN0 L3BnX3dhbGluc3BlY3QuYworKysgYi9jb250cmliL3BnX3dhbGluc3BlY3QvcGdfd2FsaW5zcGVj dC5jCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2d1dGlscy5oIgogI2lu Y2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJ1dGls cy9hcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMv cGdfbHNuLmgiCiAKQEAgLTMwLDcgKzMxLDcgQEAKIAogUEdfTU9EVUxFX01BR0lDOwogCi1QR19G VU5DVElPTl9JTkZPX1YxKHBnX2dldF93YWxfZnBpX2luZm8pOworUEdfRlVOQ1RJT05fSU5GT19W MShwZ19nZXRfd2FsX2Jsb2NrX2luZm8pOwogUEdfRlVOQ1RJT05fSU5GT19WMShwZ19nZXRfd2Fs X3JlY29yZF9pbmZvKTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEocGdfZ2V0X3dhbF9yZWNvcmRzX2lu Zm8pOwogUEdfRlVOQ1RJT05fSU5GT19WMShwZ19nZXRfd2FsX3JlY29yZHNfaW5mb190aWxsX2Vu ZF9vZl93YWwpOwpAQCAtNTYsNyArNTcsNyBAQCBzdGF0aWMgdm9pZCBGaWxsWExvZ1N0YXRzUm93 KGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQ2NCBuLCB1aW50NjQgdG90YWxfY291bnQsCiAJCQkJCQkJ IERhdHVtICp2YWx1ZXMsIGJvb2wgKm51bGxzLCB1aW50MzIgbmNvbHMpOwogc3RhdGljIHZvaWQg R2V0V2FsU3RhdHMoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIFhMb2dSZWNQdHIgc3RhcnRfbHNu LAogCQkJCQkJWExvZ1JlY1B0ciBlbmRfbHNuLCBib29sIHN0YXRzX3Blcl9yZWNvcmQpOwotc3Rh dGljIHZvaWQgR2V0V0FMRlBJSW5mbyhGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgWExvZ1JlYWRl clN0YXRlICpyZWNvcmQpOworc3RhdGljIHZvaWQgR2V0V0FMQmxvY2tJbmZvKEZ1bmN0aW9uQ2Fs bEluZm8gZmNpbmZvLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiAKIC8qCiAgKiBDaGVjayBp ZiB0aGUgZ2l2ZW4gTFNOIGlzIGluIGZ1dHVyZS4gQWxzbywgcmV0dXJuIHRoZSBMU04gdXAgdG8g d2hpY2ggdGhlCkBAIC0yMjEsNDkgKzIyMiw0MyBAQCBHZXRXQUxSZWNvcmRJbmZvKFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkLCBEYXR1bSAqdmFsdWVzLAogCiAKIC8qCi0gKiBTdG9yZSBhIHNldCBv ZiBmdWxsIHBhZ2UgaW1hZ2VzIGZyb20gYSBzaW5nbGUgcmVjb3JkLgorICogU3RvcmUgYSBzZXQg b2YgYmxvY2sgaW5mb3JtYXRpb24gZnJvbSBhIHNpbmdsZSByZWNvcmQgKEZQSSBhbmQgYmxvY2sK KyAqIGluZm9ybWF0aW9uKS4KICAqLwogc3RhdGljIHZvaWQKLUdldFdBTEZQSUluZm8oRnVuY3Rp b25DYWxsSW5mbyBmY2luZm8sIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQorR2V0V0FMQmxvY2tJ bmZvKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIHsK LSNkZWZpbmUgUEdfR0VUX1dBTF9GUElfSU5GT19DT0xTIDcKKyNkZWZpbmUgUEdfR0VUX1dBTF9C TE9DS19JTkZPX0NPTFMgMTEKIAlpbnQJCQlibG9ja19pZDsKIAlSZXR1cm5TZXRJbmZvICpyc2lu Zm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87CiAKIAlmb3IgKGJsb2Nr X2lkID0gMDsgYmxvY2tfaWQgPD0gWExvZ1JlY01heEJsb2NrSWQocmVjb3JkKTsgYmxvY2tfaWQr KykKIAl7Ci0JCVBHQWxpZ25lZEJsb2NrIGJ1ZjsKLQkJUGFnZQkJcGFnZTsKLQkJYnl0ZWEJICAg KnJhd19wYWdlOwotCQlCbG9ja051bWJlciBibGs7CisJCURlY29kZWRCa3BCbG9jayAqYmxrOwor CQlCbG9ja051bWJlciBibGtubzsKIAkJUmVsRmlsZUxvY2F0b3Igcm5vZGU7CiAJCUZvcmtOdW1i ZXIJZm9yazsKLQkJRGF0dW0JCXZhbHVlc1tQR19HRVRfV0FMX0ZQSV9JTkZPX0NPTFNdID0gezB9 OwotCQlib29sCQludWxsc1tQR19HRVRfV0FMX0ZQSV9JTkZPX0NPTFNdID0gezB9OworCQlieXRl YQkgICAqcmF3X2RhdGEgPSBOVUxMOworCQlieXRlYQkgICAqcmF3X3BhZ2UgPSBOVUxMOworCQlE YXR1bQkgICAqZmxhZ3MgPSBOVUxMOworCQlEYXR1bQkJdmFsdWVzW1BHX0dFVF9XQUxfQkxPQ0tf SU5GT19DT0xTXSA9IHswfTsKKwkJYm9vbAkJbnVsbHNbUEdfR0VUX1dBTF9CTE9DS19JTkZPX0NP TFNdID0gezB9OwogCQlpbnQJCQlpID0gMDsKIAogCQlpZiAoIVhMb2dSZWNIYXNCbG9ja1JlZihy ZWNvcmQsIGJsb2NrX2lkKSkKIAkJCWNvbnRpbnVlOwogCi0JCWlmICghWExvZ1JlY0hhc0Jsb2Nr SW1hZ2UocmVjb3JkLCBibG9ja19pZCkpCi0JCQljb250aW51ZTsKLQotCQlwYWdlID0gKFBhZ2Up IGJ1Zi5kYXRhOwotCi0JCWlmICghUmVzdG9yZUJsb2NrSW1hZ2UocmVjb3JkLCBibG9ja19pZCwg cGFnZSkpCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVEVSTkFM X0VSUk9SKSwKLQkJCQkJIGVycm1zZ19pbnRlcm5hbCgiJXMiLCByZWNvcmQtPmVycm9ybXNnX2J1 ZikpKTsKKwkJYmxrID0gWExvZ1JlY0dldEJsb2NrKHJlY29yZCwgYmxvY2tfaWQpOwogCi0JCS8q IEZ1bGwgcGFnZSBleGlzdHMsIHNvIGxldCdzIHNhdmUgaXQuICovCiAJCSh2b2lkKSBYTG9nUmVj R2V0QmxvY2tUYWdFeHRlbmRlZChyZWNvcmQsIGJsb2NrX2lkLAotCQkJCQkJCQkJCSAgJnJub2Rl LCAmZm9yaywgJmJsaywgTlVMTCk7CisJCQkJCQkJCQkJICAmcm5vZGUsICZmb3JrLCAmYmxrbm8s IE5VTEwpOwogCiAJCXZhbHVlc1tpKytdID0gTFNOR2V0RGF0dW0ocmVjb3JkLT5SZWFkUmVjUHRy KTsKLQkJdmFsdWVzW2krK10gPSBPYmplY3RJZEdldERhdHVtKHJub2RlLnNwY09pZCk7Ci0JCXZh bHVlc1tpKytdID0gT2JqZWN0SWRHZXREYXR1bShybm9kZS5kYk9pZCk7Ci0JCXZhbHVlc1tpKytd ID0gT2JqZWN0SWRHZXREYXR1bShybm9kZS5yZWxOdW1iZXIpOwotCQl2YWx1ZXNbaSsrXSA9IElu dDY0R2V0RGF0dW0oKGludDY0KSBibGspOworCQl2YWx1ZXNbaSsrXSA9IEludDE2R2V0RGF0dW0o YmxvY2tfaWQpOworCQl2YWx1ZXNbaSsrXSA9IE9iamVjdElkR2V0RGF0dW0oYmxrLT5ybG9jYXRv ci5zcGNPaWQpOworCQl2YWx1ZXNbaSsrXSA9IE9iamVjdElkR2V0RGF0dW0oYmxrLT5ybG9jYXRv ci5kYk9pZCk7CisJCXZhbHVlc1tpKytdID0gT2JqZWN0SWRHZXREYXR1bShibGstPnJsb2NhdG9y LnJlbE51bWJlcik7CisJCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bSgoaW50NjQpIGJsa25v KTsKIAogCQlpZiAoZm9yayA+PSAwICYmIGZvcmsgPD0gTUFYX0ZPUktOVU0pCiAJCQl2YWx1ZXNb aSsrXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oZm9ya05hbWVzW2ZvcmtdKTsKQEAgLTI3MiwzNCAr MjY3LDEwOSBAQCBHZXRXQUxGUElJbmZvKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCkKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlRFUk5BTF9FUlJPUiks CiAJCQkJCSBlcnJtc2dfaW50ZXJuYWwoImludmFsaWQgZm9yayBudW1iZXI6ICV1IiwgZm9yaykp KTsKIAotCQkvKiBJbml0aWFsaXplIGJ5dGVhIGJ1ZmZlciB0byBjb3B5IHRoZSBGUEkgdG8uICov Ci0JCXJhd19wYWdlID0gKGJ5dGVhICopIHBhbGxvYyhCTENLU1ogKyBWQVJIRFJTWik7Ci0JCVNF VF9WQVJTSVpFKHJhd19wYWdlLCBCTENLU1ogKyBWQVJIRFJTWik7CisJCS8qIEJsb2NrIGRhdGEg Ki8KKwkJaWYgKGJsay0+aGFzX2RhdGEpCisJCXsKKwkJCS8qIEluaXRpYWxpemUgYnl0ZWEgYnVm ZmVyIHRvIGNvcHkgdGhlIGRhdGEgdG8gKi8KKwkJCXJhd19kYXRhID0gKGJ5dGVhICopIHBhbGxv YyhibGstPmRhdGFfbGVuICsgVkFSSERSU1opOworCQkJU0VUX1ZBUlNJWkUocmF3X2RhdGEsIGJs ay0+ZGF0YV9sZW4gKyBWQVJIRFJTWik7CiAKLQkJLyogVGFrZSBhIHZlcmJhdGltIGNvcHkgb2Yg dGhlIEZQSS4gKi8KLQkJbWVtY3B5KFZBUkRBVEEocmF3X3BhZ2UpLCBwYWdlLCBCTENLU1opOwor CQkJLyogQ29weSB0aGUgZGF0YSAqLworCQkJbWVtY3B5KFZBUkRBVEEocmF3X2RhdGEpLCBibGst PmRhdGEsIGJsay0+ZGF0YV9sZW4pOworCQkJdmFsdWVzW2krK10gPSBQb2ludGVyR2V0RGF0dW0o cmF3X2RhdGEpOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogTm8gZGF0YSwgc28gc2V0IHRoaXMg ZmllbGQgdG8gTlVMTCAqLworCQkJbnVsbHNbaSsrXSA9IHRydWU7CisJCX0KIAotCQl2YWx1ZXNb aSsrXSA9IFBvaW50ZXJHZXREYXR1bShyYXdfcGFnZSk7CisJCWlmIChibGstPmhhc19pbWFnZSkK KwkJeworCQkJUEdBbGlnbmVkQmxvY2sgYnVmOworCQkJUGFnZQkJcGFnZTsKKwkJCWludAkJCWJp dGNudDsKKwkJCWludAkJCWNudCA9IDA7CisJCQlBcnJheVR5cGUgICphOworCisJCQlwYWdlID0g KFBhZ2UpIGJ1Zi5kYXRhOworCisJCQkvKiBGdWxsIHBhZ2UgaW1hZ2UgZXhpc3RzLCBzbyBsZXQn cyBzYXZlIGl0ICovCisJCQlpZiAoIVJlc3RvcmVCbG9ja0ltYWdlKHJlY29yZCwgYmxvY2tfaWQs IHBhZ2UpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVEVS TkFMX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2dfaW50ZXJuYWwoIiVzIiwgcmVjb3JkLT5lcnJvcm1z Z19idWYpKSk7CisKKwkJCS8qIEluaXRpYWxpemUgYnl0ZWEgYnVmZmVyIHRvIGNvcHkgdGhlIEZQ SSB0byAqLworCQkJcmF3X3BhZ2UgPSAoYnl0ZWEgKikgcGFsbG9jKEJMQ0tTWiArIFZBUkhEUlNa KTsKKwkJCVNFVF9WQVJTSVpFKHJhd19wYWdlLCBCTENLU1ogKyBWQVJIRFJTWik7CisKKwkJCS8q IFRha2UgYSB2ZXJiYXRpbSBjb3B5IG9mIHRoZSBGUEkgKi8KKwkJCW1lbWNweShWQVJEQVRBKHJh d19wYWdlKSwgcGFnZSwgQkxDS1NaKTsKKworCQkJdmFsdWVzW2krK10gPSBQb2ludGVyR2V0RGF0 dW0ocmF3X3BhZ2UpOworCQkJdmFsdWVzW2krK10gPSBVSW50MzJHZXREYXR1bShibGstPmJpbWdf bGVuKTsKKworCQkJLyogRlBJIGZsYWdzICovCisJCQliaXRjbnQgPSBwZ19wb3Bjb3VudCgoY29u c3QgY2hhciAqKSAmYmxrLT5iaW1nX2luZm8sCisJCQkJCQkJCSBzaXplb2YodWludDgpKTsKKwkJ CS8qIEJ1aWxkIHNldCBvZiByYXcgZmxhZ3MgKi8KKwkJCWZsYWdzID0gKERhdHVtICopIHBhbGxv YzAoc2l6ZW9mKERhdHVtKSAqIGJpdGNudCk7CisKKwkJCWlmICgoYmxrLT5iaW1nX2luZm8gJiBC S1BJTUFHRV9IQVNfSE9MRSkgIT0gMCkKKwkJCQlmbGFnc1tjbnQrK10gPSBDU3RyaW5nR2V0VGV4 dERhdHVtKCJIQVNfSE9MRSIpOworCQkJaWYgKGJsay0+YXBwbHlfaW1hZ2UpCisJCQkJZmxhZ3Nb Y250KytdID0gQ1N0cmluZ0dldFRleHREYXR1bSgiQVBQTFkiKTsKKwkJCWlmICgoYmxrLT5iaW1n X2luZm8gJiBCS1BJTUFHRV9DT01QUkVTU19QR0xaKSAhPSAwKQorCQkJCWZsYWdzW2NudCsrXSA9 IENTdHJpbmdHZXRUZXh0RGF0dW0oIkNPTVBSRVNTX1BHTFoiKTsKKwkJCWlmICgoYmxrLT5iaW1n X2luZm8gJiBCS1BJTUFHRV9DT01QUkVTU19MWjQpICE9IDApCisJCQkJZmxhZ3NbY250KytdID0g Q1N0cmluZ0dldFRleHREYXR1bSgiQ09NUFJFU1NfTFo0Iik7CisJCQlpZiAoKGJsay0+YmltZ19p bmZvICYgQktQSU1BR0VfQ09NUFJFU1NfWlNURCkgIT0gMCkKKwkJCQlmbGFnc1tjbnQrK10gPSBD U3RyaW5nR2V0VGV4dERhdHVtKCJDT01QUkVTU19aU1REIik7CisKKwkJCUFzc2VydChjbnQgPD0g Yml0Y250KTsKKwkJCWEgPSBjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihmbGFncywgY250LCBURVhU T0lEKTsKKwkJCXZhbHVlc1tpKytdID0gUG9pbnRlckdldERhdHVtKGEpOworCQl9CisJCWVsc2UK KwkJeworCQkJLyogTm8gZnVsbCBwYWdlIGltYWdlLCBzbyBzdG9yZSBOVUxMcyBmb3IgYWxsIGl0 cyBmaWVsZHMgKi8KKwkJCW1lbXNldCgmbnVsbHNbaV0sIHRydWUsIDMgKiBzaXplb2YoYm9vbCkp OworCQkJaSArPSAzOworCQl9CiAKLQkJQXNzZXJ0KGkgPT0gUEdfR0VUX1dBTF9GUElfSU5GT19D T0xTKTsKKwkJQXNzZXJ0KGkgPT0gUEdfR0VUX1dBTF9CTE9DS19JTkZPX0NPTFMpOwogCiAJCXR1 cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+c2V0UmVzdWx0LCByc2luZm8tPnNldERlc2MsCiAJ CQkJCQkJIHZhbHVlcywgbnVsbHMpOworCisJCS8qCisJCSAqIEZyZWUgdXAgc29tZSBzcGFjZSB0 byBub3QgbGVhayBtZW1vcnkgd2hpbGUgdHJhdmVyc2luZyBhbGwgYmxvY2sKKwkJICogSURzLgor CQkgKi8KKwkJaWYgKHJhd19kYXRhKQorCQkJcGZyZWUocmF3X2RhdGEpOworCQlpZiAocmF3X3Bh Z2UpCisJCQlwZnJlZShyYXdfcGFnZSk7CisJCWlmIChmbGFncykKKwkJCXBmcmVlKGZsYWdzKTsK IAl9CiAKLSN1bmRlZiBQR19HRVRfV0FMX0ZQSV9JTkZPX0NPTFMKKyN1bmRlZiBQR19HRVRfV0FM X0ZQSV9CTE9DS19DT0xTCiB9CiAKIC8qCi0gKiBHZXQgZnVsbCBwYWdlIGltYWdlcyB3aXRoIHRo ZWlyIHJlbGF0aW9uIGluZm9ybWF0aW9uIGZvciBhbGwgdGhlIFdBTAotICogcmVjb3JkcyBiZXR3 ZWVuIHN0YXJ0IGFuZCBlbmQgTFNOcy4gIERlY29tcHJlc3Npb24gaXMgYXBwbGllZCB0byB0aGUK LSAqIGJsb2NrcywgaWYgbmVjZXNzYXJ5LgorICogR2V0IGluZm9ybWF0aW9uIGFib3V0IGFsbCB0 aGUgYmxvY2tzIHNhdmVkIGluIFdBTCByZWNvcmRzIGJldHdlZW4gc3RhcnQKKyAqIGFuZCBlbmQg TFNOcy4gVGhpcyBwcm9kdWNlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZnVsbCBwYWdlIGltYWdl cyB3aXRoCisgKiB0aGVpciByZWxhdGlvbiBpbmZvcm1hdGlvbiwgYW5kIHRoZSBkYXRhIHNhdmVk IGluIGVhY2ggYmxvY2sgYXNzb2NpYXRlZAorICogdG8gYSByZWNvcmQuIERlY29tcHJlc3Npb24g aXMgYXBwbGllZCB0byB0aGUgZnVsbCBwYWdlIGltYWdlcywgaWYKKyAqIG5lY2Vzc2FyeS4KICAq CiAgKiBUaGlzIGZ1bmN0aW9uIGVtaXRzIGFuIGVycm9yIGlmIGEgZnV0dXJlIHN0YXJ0IG9yIGVu ZCBXQUwgTFNOIGkuZS4gV0FMIExTTgogICogdGhlIGRhdGFiYXNlIHN5c3RlbSBkb2Vzbid0IGtu b3cgYWJvdXQgaXMgc3BlY2lmaWVkLgogICovCiBEYXR1bQotcGdfZ2V0X3dhbF9mcGlfaW5mbyhQ R19GVU5DVElPTl9BUkdTKQorcGdfZ2V0X3dhbF9ibG9ja19pbmZvKFBHX0ZVTkNUSU9OX0FSR1Mp CiB7CiAJWExvZ1JlY1B0cglzdGFydF9sc247CiAJWExvZ1JlY1B0cgllbmRfbHNuOwpAQCAtMzE3 LDcgKzM4Nyw3IEBAIHBnX2dldF93YWxfZnBpX2luZm8oUEdfRlVOQ1RJT05fQVJHUykKIAl4bG9n cmVhZGVyID0gSW5pdFhMb2dSZWFkZXJTdGF0ZShzdGFydF9sc24pOwogCiAJdG1wX2N4dCA9IEFs bG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKLQkJCQkJCQkJCSJwZ19n ZXRfd2FsX2ZwaV9pbmZvIHRlbXBvcmFyeSBjeHQiLAorCQkJCQkJCQkJInBnX2dldF9ibG9ja19m cGlfaW5mbyB0ZW1wb3JhcnkgY3h0IiwKIAkJCQkJCQkJCUFMTE9DU0VUX0RFRkFVTFRfU0laRVMp OwogCiAJd2hpbGUgKFJlYWROZXh0WExvZ1JlY29yZCh4bG9ncmVhZGVyKSAmJgpAQCAtMzI2LDcg KzM5Niw3IEBAIHBnX2dldF93YWxfZnBpX2luZm8oUEdfRlVOQ1RJT05fQVJHUykKIAkJLyogVXNl IHRoZSB0bXAgY29udGV4dCBzbyB3ZSBjYW4gY2xlYW4gdXAgYWZ0ZXIgZWFjaCB0dXBsZSBpcyBk b25lICovCiAJCW9sZF9jeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8odG1wX2N4dCk7CiAKLQkJ R2V0V0FMRlBJSW5mbyhmY2luZm8sIHhsb2dyZWFkZXIpOworCQlHZXRXQUxCbG9ja0luZm8oZmNp bmZvLCB4bG9ncmVhZGVyKTsKIAogCQkvKiBjbGVhbiB1cCBhbmQgc3dpdGNoIGJhY2sgKi8KIAkJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZF9jeHQpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ193 YWxpbnNwZWN0L3NxbC9wZ193YWxpbnNwZWN0LnNxbCBiL2NvbnRyaWIvcGdfd2FsaW5zcGVjdC9z cWwvcGdfd2FsaW5zcGVjdC5zcWwKaW5kZXggODQ5MjAxYTFmOC4uMDFhMTIwZjM5OCAxMDA2NDQK LS0tIGEvY29udHJpYi9wZ193YWxpbnNwZWN0L3NxbC9wZ193YWxpbnNwZWN0LnNxbAorKysgYi9j b250cmliL3BnX3dhbGluc3BlY3Qvc3FsL3BnX3dhbGluc3BlY3Quc3FsCkBAIC01MywyMCArNTMs MjUgQEAgU0VMRUNUIENPVU5UKCopID49IDEgQVMgb2sgRlJPTSBwZ19nZXRfd2FsX3JlY29yZHNf aW5mbyg6J3dhbF9sc24xJywgOid3YWxfbHNuMicKIAkJCVdIRVJFIHJlc291cmNlX21hbmFnZXIg PSAnSGVhcCcgQU5EIHJlY29yZF90eXBlID0gJ0lOU0VSVCc7CiAKIC0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IFRlc3RzIHRvIGdldCBmdWxsIHBhZ2UgaW1hZ2UgKEZQSSkgZnJvbSBXQUwgcmVjb3JkCistLSBU ZXN0cyB0byBnZXQgYmxvY2sgaW5mb3JtYXRpb24gZnJvbSBXQUwgcmVjb3JkCiAtLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci1TRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkgQVMgd2FsX2xzbjMgXGdzZXQKLQotLS0g Rm9yY2UgRlBJIG9uIHRoZSBuZXh0IHVwZGF0ZS4KLUNIRUNLUE9JTlQ7CiAKLS0tIFVwZGF0ZSB0 YWJsZSB0byBnZW5lcmF0ZSBhbiBGUEkuCi1VUERBVEUgc2FtcGxlX3RibCBTRVQgY29sMSA9IGNv bDEgKiAxMDAgV0hFUkUgY29sMSA9IDE7CistLSBVcGRhdGUgdGFibGUgdG8gZ2VuZXJhdGUgc29t ZSBibG9jayBkYXRhCitTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkgQVMgd2FsX2xzbjMgXGdz ZXQKK1VQREFURSBzYW1wbGVfdGJsIFNFVCBjb2wxID0gY29sMSArIDEgV0hFUkUgY29sMSA9IDE7 CiBTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkgQVMgd2FsX2xzbjQgXGdzZXQKKy0tIENoZWNr IGlmIHdlIGdldCBibG9jayBkYXRhIGZyb20gV0FMIHJlY29yZC4KK1NFTEVDVCBDT1VOVCgqKSA+ PSAxIEFTIG9rIEZST00gcGdfZ2V0X3dhbF9ibG9ja19pbmZvKDond2FsX2xzbjMnLCA6J3dhbF9s c240JykKKyAgV0hFUkUgcmVsZmlsZW5vZGUgPSA6J3NhbXBsZV90Ymxfb2lkJyBBTkQgYmxvY2tk YXRhIElTIE5PVCBOVUxMOwogCistLSBGb3JjZSBmdWxsLXBhZ2UgaW1hZ2Ugb24gdGhlIG5leHQg dXBkYXRlLgorU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIEFTIHdhbF9sc241IFxnc2V0CitD SEVDS1BPSU5UOworVVBEQVRFIHNhbXBsZV90YmwgU0VUIGNvbDEgPSBjb2wxICsgMSBXSEVSRSBj b2wxID0gMjsKK1NFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSBBUyB3YWxfbHNuNiBcZ3NldAog LS0gQ2hlY2sgaWYgd2UgZ2V0IEZQSSBmcm9tIFdBTCByZWNvcmQuCi1TRUxFQ1QgQ09VTlQoKikg Pj0gMSBBUyBvayBGUk9NIHBnX2dldF93YWxfZnBpX2luZm8oOid3YWxfbHNuMycsIDond2FsX2xz bjQnKQotICBXSEVSRSByZWxmaWxlbm9kZSA9IDonc2FtcGxlX3RibF9vaWQnOworU0VMRUNUIENP VU5UKCopID49IDEgQVMgb2sgRlJPTSBwZ19nZXRfd2FsX2Jsb2NrX2luZm8oOid3YWxfbHNuNScs IDond2FsX2xzbjYnKQorICBXSEVSRSByZWxmaWxlbm9kZSA9IDonc2FtcGxlX3RibF9vaWQnIEFO RCBmcGkgSVMgTk9UIE5VTEw7CiAKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIFRlc3RzIGZvciBwZXJtaXNz aW9ucwpAQCAtODMsNyArODgsNyBAQCBTRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSgncmVn cmVzc19wZ193YWxpbnNwZWN0JywKICAgJ3BnX2dldF93YWxfc3RhdHMocGdfbHNuLCBwZ19sc24s IGJvb2xlYW4pICcsICdFWEVDVVRFJyk7IC0tIG5vCiAKIFNFTEVDVCBoYXNfZnVuY3Rpb25fcHJp dmlsZWdlKCdyZWdyZXNzX3BnX3dhbGluc3BlY3QnLAotICAncGdfZ2V0X3dhbF9mcGlfaW5mbyhw Z19sc24sIHBnX2xzbikgJywgJ0VYRUNVVEUnKTsgLS0gbm8KKyAgJ3BnX2dldF93YWxfYmxvY2tf aW5mbyhwZ19sc24sIHBnX2xzbikgJywgJ0VYRUNVVEUnKTsgLS0gbm8KIAogLS0gRnVuY3Rpb25z IGFjY2Vzc2libGUgYnkgdXNlcnMgd2l0aCByb2xlIHBnX3JlYWRfc2VydmVyX2ZpbGVzCiAKQEAg LTk5LDcgKzEwNCw3IEBAIFNFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX3Bn X3dhbGluc3BlY3QnLAogICAncGdfZ2V0X3dhbF9zdGF0cyhwZ19sc24sIHBnX2xzbiwgYm9vbGVh bikgJywgJ0VYRUNVVEUnKTsgLS0geWVzCiAKIFNFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdl KCdyZWdyZXNzX3BnX3dhbGluc3BlY3QnLAotICAncGdfZ2V0X3dhbF9mcGlfaW5mbyhwZ19sc24s IHBnX2xzbikgJywgJ0VYRUNVVEUnKTsgLS0geWVzCisgICdwZ19nZXRfd2FsX2Jsb2NrX2luZm8o cGdfbHNuLCBwZ19sc24pICcsICdFWEVDVVRFJyk7IC0tIHllcwogCiBSRVZPS0UgcGdfcmVhZF9z ZXJ2ZXJfZmlsZXMgRlJPTSByZWdyZXNzX3BnX3dhbGluc3BlY3Q7CiAKQEAgLTExMyw3ICsxMTgs NyBAQCBHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2dldF93YWxfcmVjb3Jkc19pbmZvKHBn X2xzbiwgcGdfbHNuKQogR1JBTlQgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19nZXRfd2FsX3N0YXRz KHBnX2xzbiwgcGdfbHNuLCBib29sZWFuKQogICBUTyByZWdyZXNzX3BnX3dhbGluc3BlY3Q7CiAK LUdSQU5UIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfZ2V0X3dhbF9mcGlfaW5mbyhwZ19sc24sIHBn X2xzbikKK0dSQU5UIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfZ2V0X3dhbF9ibG9ja19pbmZvKHBn X2xzbiwgcGdfbHNuKQogICBUTyByZWdyZXNzX3BnX3dhbGluc3BlY3Q7CiAKIFNFTEVDVCBoYXNf ZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX3BnX3dhbGluc3BlY3QnLApAQCAtMTI2LDcgKzEz MSw3IEBAIFNFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX3BnX3dhbGluc3Bl Y3QnLAogICAncGdfZ2V0X3dhbF9zdGF0cyhwZ19sc24sIHBnX2xzbiwgYm9vbGVhbikgJywgJ0VY RUNVVEUnKTsgLS0geWVzCiAKIFNFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNz X3BnX3dhbGluc3BlY3QnLAotICAncGdfZ2V0X3dhbF9mcGlfaW5mbyhwZ19sc24sIHBnX2xzbikg JywgJ0VYRUNVVEUnKTsgLS0geWVzCisgICdwZ19nZXRfd2FsX2Jsb2NrX2luZm8ocGdfbHNuLCBw Z19sc24pICcsICdFWEVDVVRFJyk7IC0tIHllcwogCiBSRVZPS0UgRVhFQ1VURSBPTiBGVU5DVElP TiBwZ19nZXRfd2FsX3JlY29yZF9pbmZvKHBnX2xzbikKICAgRlJPTSByZWdyZXNzX3BnX3dhbGlu c3BlY3Q7CkBAIC0xMzcsNyArMTQyLDcgQEAgUkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdf Z2V0X3dhbF9yZWNvcmRzX2luZm8ocGdfbHNuLCBwZ19sc24pCiBSRVZPS0UgRVhFQ1VURSBPTiBG VU5DVElPTiBwZ19nZXRfd2FsX3N0YXRzKHBnX2xzbiwgcGdfbHNuLCBib29sZWFuKQogICBGUk9N IHJlZ3Jlc3NfcGdfd2FsaW5zcGVjdDsKIAotUkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdf Z2V0X3dhbF9mcGlfaW5mbyhwZ19sc24sIHBnX2xzbikKK1JFVk9LRSBFWEVDVVRFIE9OIEZVTkNU SU9OIHBnX2dldF93YWxfYmxvY2tfaW5mbyhwZ19sc24sIHBnX2xzbikKICAgRlJPTSByZWdyZXNz X3BnX3dhbGluc3BlY3Q7CiAKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9wZ3dhbGluc3BlY3Quc2dtbCBiL2RvYy9zcmMvc2dtbC9wZ3dhbGluc3BlY3Quc2dtbAppbmRl eCAzZDdjZGI5NWNjLi5kMjYxMTVkNmYyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcGd3YWxp bnNwZWN0LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Bnd2FsaW5zcGVjdC5zZ21sCkBAIC0xOTAs MzEgKzE5MCw1MSBAQCBjb21iaW5lZF9zaXplX3BlcmNlbnRhZ2UgICAgIHwgMi44NjM0MDcyOTEw NTMwNzk1CiAKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+Ci0gICAgIDxmdW5jdGlvbj5w Z19nZXRfd2FsX2ZwaV9pbmZvKHN0YXJ0X2xzbiBwZ19sc24sIGVuZF9sc24gcGdfbHNuKSByZXR1 cm5zIHNldG9mIHJlY29yZDwvZnVuY3Rpb24+CisgICAgIDxmdW5jdGlvbj5wZ19nZXRfd2FsX2Js b2NrX2luZm8oc3RhcnRfbHNuIHBnX2xzbiwgZW5kX2xzbiBwZ19sc24pIHJldHVybnMgc2V0b2Yg cmVjb3JkPC9mdW5jdGlvbj4KICAgICA8L3Rlcm0+CiAKICAgICA8bGlzdGl0ZW0+CiAgICAgIDxw YXJhPgotICAgICAgR2V0cyBhIGNvcHkgb2YgZnVsbCBwYWdlIGltYWdlcyBhcyA8dHlwZT5ieXRl YTwvdHlwZT4gdmFsdWVzIChhZnRlcgotICAgICAgYXBwbHlpbmcgZGVjb21wcmVzc2lvbiB3aGVu IG5lY2Vzc2FyeSkgYW5kIHRoZWlyIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQKLSAgICAgIHdpdGgg YWxsIHRoZSB2YWxpZCBXQUwgcmVjb3JkcyBiZXR3ZWVuCisgICAgICBHZXRzIGEgY29weSBvZiB0 aGUgYmxvY2sgaW5mb3JtYXRpb24gc3RvcmVkIGluIFdBTCByZWNvcmRzLiBUaGlzIGluY2x1ZGVz CisgICAgICBjb3BpZXMgb2YgdGhlIGJsb2NrIGRhdGEgKDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+ IGlmIG5vbmUpIGFuZCBmdWxsIHBhZ2UKKyAgICAgIGltYWdlcyBhcyA8dHlwZT5ieXRlYTwvdHlw ZT4gdmFsdWVzIChhZnRlcgorICAgICAgYXBwbHlpbmcgZGVjb21wcmVzc2lvbiB3aGVuIG5lY2Vz c2FyeSwgb3IgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gaWYgbm9uZSkKKyAgICAgIGFuZCB0aGVp ciBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggYWxsIHRoZSB2YWxpZCBXQUwgcmVjb3JkcyBi ZXR3ZWVuCiAgICAgICA8cmVwbGFjZWFibGU+c3RhcnRfbHNuPC9yZXBsYWNlYWJsZT4gYW5kCi0g ICAgICA8cmVwbGFjZWFibGU+ZW5kX2xzbjwvcmVwbGFjZWFibGU+LiBSZXR1cm5zIG9uZSByb3cg cGVyIGZ1bGwgcGFnZSBpbWFnZS4KLSAgICAgIElmIDxyZXBsYWNlYWJsZT5zdGFydF9sc248L3Jl cGxhY2VhYmxlPiBvcgorICAgICAgPHJlcGxhY2VhYmxlPmVuZF9sc248L3JlcGxhY2VhYmxlPi4g UmV0dXJucyBvbmUgcm93IHBlciBibG9jayByZWdpc3RlcmVkCisgICAgICBpbiBhIFdBTCByZWNv cmQuIElmIDxyZXBsYWNlYWJsZT5zdGFydF9sc248L3JlcGxhY2VhYmxlPiBvcgogICAgICAgPHJl cGxhY2VhYmxlPmVuZF9sc248L3JlcGxhY2VhYmxlPiBhcmUgbm90IHlldCBhdmFpbGFibGUsIHRo ZSBmdW5jdGlvbgogICAgICAgd2lsbCByYWlzZSBhbiBlcnJvci4gRm9yIGV4YW1wbGU6CiA8c2Ny ZWVuPgotcG9zdGdyZXM9IyBTRUxFQ1QgbHNuLCByZWx0YWJsZXNwYWNlLCByZWxkYXRhYmFzZSwg cmVsZmlsZW5vZGUsIHJlbGJsb2NrbnVtYmVyLAotICAgICAgICAgICAgICAgICAgZm9ya25hbWUs IHN1YnN0cmluZyhmcGkgZm9yIDI0KSBhcyBmcGlfdHJpbW1lZAotICAgICAgICAgICAgIEZST00g cGdfZ2V0X3dhbF9mcGlfaW5mbygnMC8xODAxNjkwJywgJzAvMTgyNUM2MCcpOworcG9zdGdyZXM9 IyBTRUxFQ1QgbHNuLCBibG9ja2lkLCByZWx0YWJsZXNwYWNlLCByZWxkYXRhYmFzZSwgcmVsZmls ZW5vZGUsCisgICAgICAgICAgICAgICAgICByZWxibG9ja251bWJlciwgZm9ya25hbWUsCisgICAg ICAgICAgICAgICAgICBzdWJzdHJpbmcoYmxvY2tkYXRhIGZvciAyNCkgYXMgYmxvY2tfdHJpbW1l ZCwKKyAgICAgICAgICAgICAgICAgIHN1YnN0cmluZyhmcGkgZm9yIDI0KSBhcyBmcGlfdHJpbW1l ZCwgZnBpbGVuLCBmcGlpbmZvCisgICAgICAgICAgICAgRlJPTSBwZ19nZXRfd2FsX2Jsb2NrX2lu Zm8oJzAvMTg3MTA4MCcsICcwLzE4NzE0NDAnKTsKIC1bIFJFQ09SRCAxIF0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWxzbiAgICAgICAgICAg IHwgMC8xODA3RTIwCitsc24gICAgICAgICAgICB8IDAvMTg3MTIwOAorYmxvY2tpZCAgICAgICAg fCAwCiByZWx0YWJsZXNwYWNlICB8IDE2NjMKLXJlbGRhdGFiYXNlICAgIHwgNQotcmVsZmlsZW5v ZGUgICAgfCAxNjM5NgotcmVsYmxvY2tudW1iZXIgfCA0MworcmVsZGF0YWJhc2UgICAgfCAxNjM4 NAorcmVsZmlsZW5vZGUgICAgfCAxMjU1CityZWxibG9ja251bWJlciB8IDk2CiBmb3JrbmFtZSAg ICAgICB8IG1haW4KLWZwaV90cmltbWVkICAgIHwgXHgwMDAwMDAwMGI4OWU2NjAxMDAwMDAwMDBh MDAzYzAwMzAwMjAwNDIwMDAwMDAwMDAKK2Jsb2NrX3RyaW1tZWQgIHwgXHgwNzAwMDgwMDA5MDAw YTAwCitmcGlfdHJpbW1lZCAgICB8CitmcGlsZW4gICAgICAgICB8CitmcGlpbmZvICAgICAgICB8 CistWyBSRUNPUkQgMiBdLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCitsc24gICAgICAgICAgICB8IDAvMTg3MTJGOAorYmxvY2tpZCAgICAgICAg fCAwCityZWx0YWJsZXNwYWNlICB8IDE2NjMKK3JlbGRhdGFiYXNlICAgIHwgMTYzODQKK3JlbGZp bGVub2RlICAgIHwgMTYzOTIKK3JlbGJsb2NrbnVtYmVyIHwgMAorZm9ya25hbWUgICAgICAgfCBt YWluCitibG9ja190cmltbWVkICB8IFx4MDI4MDAxMjgxODAxNjQwMDAwMDAKK2ZwaV90cmltbWVk ICAgIHwgXHgwMDAwMDAwMDUwMTA4NzAxMDAwMDAwMDAyYzAwNjAxZjAwMjAwNDIwZTAwMjAwMDAK K2ZwaWxlbiAgICAgICAgIHwgMjA0CitmcGlpbmZvICAgICAgICB8IHtIQVNfSE9MRSxBUFBMWX0K IDwvc2NyZWVuPgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KLS0gCjIuMzQuMQoK --00000000000064bd7005f6649e8b--