From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-il1-x134.google.com (mail-il1-x134.google.com [IPv6:2607:f8b0:4864:20::134]) by sourceware.org (Postfix) with ESMTPS id 784A83959CBB; Tue, 29 Sep 2020 14:55:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 784A83959CBB Received: by mail-il1-x134.google.com with SMTP id y2so5201095ila.0; Tue, 29 Sep 2020 07:55:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Ek6wyq3ySf+0I/g6alhXq7srYEUXVzH2V1QC7K/mxc4=; b=UEPeJ64nFeIfZJo5GKJrZYVP12s8OXWbeFv7RKnYH3+BSL/Y0fDfXgVqZkv6fl8Hv6 JTL+UKUO3ZnkxvI0uyVHlgC9P0ncLKXEABLd/ga0tLFbyOF6yc783SmPzIkdJ2ShqdeM Q3cCU49k7YIGrylYy9sig4EeiqjVqkxK4v7kUe0MfQCSlKCgiopzCxgBxbJ7gjhNwjwG BpVxMfO8K/XFkP9BtPS+NCku/qfeRY0CrOtBTBX/BmBhPtUx3fdwsHWCiywcpMG7olXX oESHUnxoTLgdgLR3Oa9BOBA0G0fekylhKqtpMDPGqtv8v1g3iiTJsT3gB9Y6yCvmBY0C XS9w== X-Gm-Message-State: AOAM531OGboN5WHcmc+8Npa6iQw4Di7Xn6CNZB2kElR8rQ+8HQfwGBcP CG1n+gSePMDpDGVadYKa7BygQekbktqe4p3DMvJ1+mDy4So= X-Google-Smtp-Source: ABdhPJyP4Xmskx8cHZVdTY4YpFVhzJezJRDkU4cpEqgFXXB/VFKNsdAEretXIRT4VI4TgLYXSgwZ7zcP1ar5Jh2S2ys= X-Received: by 2002:a05:6e02:d06:: with SMTP id g6mr3288715ilj.151.1601391310845; Tue, 29 Sep 2020 07:55:10 -0700 (PDT) MIME-Version: 1.0 References: <20200918160709.949608-1-hjl.tools@gmail.com> <20200918160709.949608-3-hjl.tools@gmail.com> <87eemm6n37.fsf@oldenburg2.str.redhat.com> <42e48ec7-4b11-387c-eaf0-50bc564dbca0@sourceware.org> <565f21f3-0630-2d4e-dff4-6cda90533fb5@gotplt.org> <8046ee6e-b0e9-405a-b266-3f28ad75165d@sourceware.org> In-Reply-To: <8046ee6e-b0e9-405a-b266-3f28ad75165d@sourceware.org> From: "H.J. Lu" Date: Tue, 29 Sep 2020 07:54:35 -0700 Message-ID: Subject: V5 [PATCH] Set tunable value as well as min/max values To: Siddhesh Poyarekar Cc: Florian Weimer , "H.J. Lu via Libc-alpha" Content-Type: multipart/mixed; boundary="0000000000003ad28705b074f8ef" X-Spam-Status: No, score=-3038.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Sep 2020 14:55:13 -0000 --0000000000003ad28705b074f8ef Content-Type: text/plain; charset="UTF-8" On Tue, Sep 29, 2020 at 6:50 AM Siddhesh Poyarekar wrote: > > On 29/09/20 18:00, H.J. Lu wrote: > > Here is the updated patch with TUNABLE_SET_BOUNDS_IF_VALID. > > > > OK for master? > > I don't think TUNABLE_SET_BOUNDS_IF_VALID is doing what it intends to do. > > > +#define TUNABLE_SET_BOUNDS_IF_VALID(__cur, __maxp, __minp, __type) \ > > minp and maxp are switched around. Fixed. > > +({ \ > > + __type min = __minp ? *((__type *) __minp) : (__cur)->type.min; \ > > + __type max = __maxp ? *((__type *) __maxp) : (__cur)->type.max; \ > > + if (__minp) \ > > + { \ > > + if (__maxp) \ > > + { \ > > + if (max > min) \ > > + { \ > > + (__cur)->type.min = min; \ > > + (__cur)->type.max = max; \ > > + } \ > > When both minp and maxp are specified, it checks if they're sane with > respect to each other but it should also check whether the range they > describe is a *subset* of (__cur)->type.min and (__cur)->type.max. > > > + } \ > > + else if (max > min) \ > > + (__cur)->type.min = min; \ > > You also need to make sure that (__cur)->type.min < min to ensure a more > restrictive range. > > > + } \ > > + else if (max > min) \ > > + (__cur)->type.max = min; \ > > I did not understand this one. > > Basically, this is what it should look like: > > if (__minp != NULL > && *__minp <= *__maxp __maxp may be NULL. > && *__minp >= (__cur)->type.min > && *__minp <= (__cur)->type.max) > (__cur)->type.min = *__minp; > > if (__maxp != NULL > && *__minp <= *_maxp __minp may be NULL. > && *__maxp >= (__cur)->type.min > && *__maxp <= (__cur)->type.max) > (__cur)->type.max = *maxp; > > You could collapse some of these conditions if we assume that maxp and > minp are always either NULL or not NULL together. > I don't think we should make such assumptions. Here is the updated patch with the check for the subset of (__cur)->type.min and (__cur)->type.max. -- H.J. --0000000000003ad28705b074f8ef Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Set-tunable-value-as-well-as-min-max-values.patch" Content-Disposition: attachment; filename="0001-Set-tunable-value-as-well-as-min-max-values.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kfo30j8k0 RnJvbSA5ZGQ2YWJiYjk0YzE1ODlmNThiMTJjOGRiYjUxNTljYzUxZTZiMDhlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IE1vbiwgMSBKdW4gMjAyMCAxNDoxMTozMiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFNldCB0dW5h YmxlIHZhbHVlIGFzIHdlbGwgYXMgbWluL21heCB2YWx1ZXMKClNvbWUgdHVuYWJsZSB2YWx1ZXMg YW5kIHRoZWlyIG1pbmltdW0vbWF4aW11bSB2YWx1ZXMgbXVzdCBiZSBkZXRlcm1pbnRlZAphdCBy dW4tdGltZS4gIEFkZCBUVU5BQkxFX1NFVF9XSVRIX0JPVU5EUyBhbmQgVFVOQUJMRV9TRVRfV0lU SF9CT1VORFNfRlVMTAp0byB1cGRhdGUgdHVuYWJsZSB2YWx1ZSB0b2dldGhlciB3aXRoIG1pbmlt dW0gYW5kIG1heGltdW0gdmFsdWVzLgpfX3R1bmFibGVfc2V0X3ZhbCBpcyB1cGRhdGVkIHRvIHNl dCB0dW5hYmxlIHZhbHVlIGFzIHdlbGwgYXMgbWluL21heAp2YWx1ZXMuCi0tLQogZWxmL2RsLXR1 bmFibGVzLmMgICAgICB8IDQ1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLQogZWxmL2RsLXR1bmFibGVzLmggICAgICB8IDIxICsrKysrKysrKysrKysrKysrKy0tCiBt YW51YWwvUkVBRE1FLnR1bmFibGVzIHwgMjQgKysrKysrKysrKysrKysrKysrKystLQogMyBmaWxl cyBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2VsZi9kbC10dW5hYmxlcy5jIGIvZWxmL2RsLXR1bmFibGVzLmMKaW5kZXggMjZlNmUyNjYxMi4u MmJhMjg0NDA3NSAxMDA2NDQKLS0tIGEvZWxmL2RsLXR1bmFibGVzLmMKKysrIGIvZWxmL2RsLXR1 bmFibGVzLmMKQEAgLTEwMCw4ICsxMDAsNDIgQEAgZ2V0X25leHRfZW52IChjaGFyICoqZW52cCwg Y2hhciAqKm5hbWUsIHNpemVfdCAqbmFtZWxlbiwgY2hhciAqKnZhbCwKICAgICB9CQkJCQkJCQkJ ICAgICAgXAogfSkKIAorI2RlZmluZSBUVU5BQkxFX1NFVF9CT1VORFNfSUZfVkFMSUQoX19jdXIs IF9fbWlucCwgX19tYXhwLCBfX3R5cGUpCSAgICAgIFwKKyh7CQkJCQkJCQkJICAgICAgXAorICBp ZiAoX19taW5wICE9IE5VTEwpCQkJCQkJCSAgICAgIFwKKyAgICB7CQkJCQkJCQkJICAgICAgXAor ICAgICAgLyogTUlOIGlzIHNwZWNpZmllZC4gICovCQkJCQkJICAgICAgXAorICAgICAgX190eXBl IG1pbiA9ICooKF9fdHlwZSAqKSBfX21pbnApOwkJCQkgICAgICBcCisgICAgICBpZiAoX19tYXhw ICE9IE5VTEwpCQkJCQkJICAgICAgXAorCXsJCQkJCQkJCSAgICAgIFwKKwkgICAvKiBCb3RoIE1J TiBhbmQgTUFYIGFyZSBzcGVjaWZpZWQuICAqLwkJCSAgICAgIFwKKwkgICAgX190eXBlIG1heCA9 ICooKF9fdHlwZSAqKSBfX21heHApOwkJCQkgICAgICBcCisJICBpZiAobWF4ID49IG1pbgkJCQkJ CSAgICAgIFwKKwkgICAgICAmJiBtYXggPD0gKF9fY3VyKS0+dHlwZS5tYXgJCQkJICAgICAgXAor CSAgICAgICYmIG1pbiA+PSAoX19jdXIpLT50eXBlLm1pbikJCQkJICAgICAgXAorCSAgICB7CQkJ CQkJCQkgICAgICBcCisJICAgICAgKF9fY3VyKS0+dHlwZS5taW4gPSBtaW47CQkJCQkgICAgICBc CisJICAgICAgKF9fY3VyKS0+dHlwZS5tYXggPSBtYXg7CQkJCQkgICAgICBcCisJICAgIH0JCQkJ CQkJCSAgICAgIFwKKwl9CQkJCQkJCQkgICAgICBcCisgICAgICBlbHNlIGlmIChtaW4gPiAoX19j dXIpLT50eXBlLm1pbiAmJiBtaW4gPD0gKF9fY3VyKS0+dHlwZS5tYXgpCSAgICAgIFwKKwl7CQkJ CQkJCQkgICAgICBcCisJICAvKiBPbmx5IE1JTiBpcyBzcGVjaWZpZWQuICAqLwkJCQkJICAgICAg XAorCSAgKF9fY3VyKS0+dHlwZS5taW4gPSBtaW47CQkJCQkgICAgICBcCisJfQkJCQkJCQkJICAg ICAgXAorICAgIH0JCQkJCQkJCQkgICAgICBcCisgIGVsc2UgaWYgKF9fbWF4cCAhPSBOVUxMKQkJ CQkJCSAgICAgIFwKKyAgICB7CQkJCQkJCQkJICAgICAgXAorICAgICAgLyogT25seSBNQVggaXMg c3BlY2lmaWVkLiAgKi8JCQkJCSAgICAgIFwKKyAgICAgIF9fdHlwZSBtYXggPSAqKChfX3R5cGUg KikgX19tYXhwKTsJCQkJICAgICAgXAorICAgICAgaWYgKG1heCA8IChfX2N1ciktPnR5cGUubWF4 ICYmIG1heCA+PSAoX19jdXIpLT50eXBlLm1pbikJCSAgICAgIFwKKwkoX19jdXIpLT50eXBlLm1h eCA9IG1heDsJCQkJCSAgICAgIFwKKyAgICB9CQkJCQkJCQkJICAgICAgXAorfSkKKwogc3RhdGlj IHZvaWQKLWRvX3R1bmFibGVfdXBkYXRlX3ZhbCAodHVuYWJsZV90ICpjdXIsIGNvbnN0IHZvaWQg KnZhbHApCitkb190dW5hYmxlX3VwZGF0ZV92YWwgKHR1bmFibGVfdCAqY3VyLCBjb25zdCB2b2lk ICp2YWxwLAorCQkgICAgICAgY29uc3Qgdm9pZCAqbWlucCwgY29uc3Qgdm9pZCAqbWF4cCkKIHsK ICAgdWludDY0X3QgdmFsOwogCkBAIC0xMTIsMTYgKzE0NiwxOSBAQCBkb190dW5hYmxlX3VwZGF0 ZV92YWwgKHR1bmFibGVfdCAqY3VyLCBjb25zdCB2b2lkICp2YWxwKQogICAgIHsKICAgICBjYXNl IFRVTkFCTEVfVFlQRV9JTlRfMzI6CiAJeworCSAgVFVOQUJMRV9TRVRfQk9VTkRTX0lGX1ZBTElE IChjdXIsIG1pbnAsIG1heHAsIGludDY0X3QpOwogCSAgVFVOQUJMRV9TRVRfVkFMX0lGX1ZBTElE X1JBTkdFIChjdXIsIHZhbCwgaW50NjRfdCk7CiAJICBicmVhazsKIAl9CiAgICAgY2FzZSBUVU5B QkxFX1RZUEVfVUlOVF82NDoKIAl7CisJICBUVU5BQkxFX1NFVF9CT1VORFNfSUZfVkFMSUQgKGN1 ciwgbWlucCwgbWF4cCwgdWludDY0X3QpOwogCSAgVFVOQUJMRV9TRVRfVkFMX0lGX1ZBTElEX1JB TkdFIChjdXIsIHZhbCwgdWludDY0X3QpOwogCSAgYnJlYWs7CiAJfQogICAgIGNhc2UgVFVOQUJM RV9UWVBFX1NJWkVfVDoKIAl7CisJICBUVU5BQkxFX1NFVF9CT1VORFNfSUZfVkFMSUQgKGN1ciwg bWlucCwgbWF4cCwgdWludDY0X3QpOwogCSAgVFVOQUJMRV9TRVRfVkFMX0lGX1ZBTElEX1JBTkdF IChjdXIsIHZhbCwgdWludDY0X3QpOwogCSAgYnJlYWs7CiAJfQpAQCAtMTUzLDE1ICsxOTAsMTUg QEAgdHVuYWJsZV9pbml0aWFsaXplICh0dW5hYmxlX3QgKmN1ciwgY29uc3QgY2hhciAqc3RydmFs KQogICAgICAgY3VyLT5pbml0aWFsaXplZCA9IHRydWU7CiAgICAgICB2YWxwID0gc3RydmFsOwog ICAgIH0KLSAgZG9fdHVuYWJsZV91cGRhdGVfdmFsIChjdXIsIHZhbHApOworICBkb190dW5hYmxl X3VwZGF0ZV92YWwgKGN1ciwgdmFscCwgTlVMTCwgTlVMTCk7CiB9CiAKIHZvaWQKLV9fdHVuYWJs ZV9zZXRfdmFsICh0dW5hYmxlX2lkX3QgaWQsIHZvaWQgKnZhbHApCitfX3R1bmFibGVfc2V0X3Zh bCAodHVuYWJsZV9pZF90IGlkLCB2b2lkICp2YWxwLCB2b2lkICptaW5wLCB2b2lkICptYXhwKQog ewogICB0dW5hYmxlX3QgKmN1ciA9ICZ0dW5hYmxlX2xpc3RbaWRdOwogCi0gIGRvX3R1bmFibGVf dXBkYXRlX3ZhbCAoY3VyLCB2YWxwKTsKKyAgZG9fdHVuYWJsZV91cGRhdGVfdmFsIChjdXIsIHZh bHAsIG1pbnAsIG1heHApOwogfQogCiAjaWYgVFVOQUJMRVNfRlJPTlRFTkQgPT0gVFVOQUJMRVNf RlJPTlRFTkRfdmFsc3RyaW5nCmRpZmYgLS1naXQgYS9lbGYvZGwtdHVuYWJsZXMuaCBiL2VsZi9k bC10dW5hYmxlcy5oCmluZGV4IGYwNWViNTBjMmYuLjU1MGIwY2M3ZjQgMTAwNjQ0Ci0tLSBhL2Vs Zi9kbC10dW5hYmxlcy5oCisrKyBiL2VsZi9kbC10dW5hYmxlcy5oCkBAIC03MCw5ICs3MCwxMCBA QCB0eXBlZGVmIHN0cnVjdCBfdHVuYWJsZSB0dW5hYmxlX3Q7CiAKIGV4dGVybiB2b2lkIF9fdHVu YWJsZXNfaW5pdCAoY2hhciAqKik7CiBleHRlcm4gdm9pZCBfX3R1bmFibGVfZ2V0X3ZhbCAodHVu YWJsZV9pZF90LCB2b2lkICosIHR1bmFibGVfY2FsbGJhY2tfdCk7Ci1leHRlcm4gdm9pZCBfX3R1 bmFibGVfc2V0X3ZhbCAodHVuYWJsZV9pZF90LCB2b2lkICopOworZXh0ZXJuIHZvaWQgX190dW5h YmxlX3NldF92YWwgKHR1bmFibGVfaWRfdCwgdm9pZCAqLCB2b2lkICosIHZvaWQgKik7CiBydGxk X2hpZGRlbl9wcm90byAoX190dW5hYmxlc19pbml0KQogcnRsZF9oaWRkZW5fcHJvdG8gKF9fdHVu YWJsZV9nZXRfdmFsKQorcnRsZF9oaWRkZW5fcHJvdG8gKF9fdHVuYWJsZV9zZXRfdmFsKQogCiAv KiBEZWZpbmUgVFVOQUJMRV9HRVQgYW5kIFRVTkFCTEVfU0VUIGluIHNob3J0IGZvcm0gaWYgVE9Q X05BTUVTUEFDRSBhbmQKICAgIFRVTkFCTEVfTkFNRVNQQUNFIGFyZSBkZWZpbmVkLiAgVGhpcyBp cyB1c2VmdWwgc2hvcnRoYW5kIHRvIGdldCBhbmQgc2V0CkBAIC04MiwxMSArODMsMTggQEAgcnRs ZF9oaWRkZW5fcHJvdG8gKF9fdHVuYWJsZV9nZXRfdmFsKQogICBUVU5BQkxFX0dFVF9GVUxMIChU T1BfTkFNRVNQQUNFLCBUVU5BQkxFX05BTUVTUEFDRSwgX19pZCwgX190eXBlLCBfX2NiKQogIyBk ZWZpbmUgVFVOQUJMRV9TRVQoX19pZCwgX190eXBlLCBfX3ZhbCkgXAogICBUVU5BQkxFX1NFVF9G VUxMIChUT1BfTkFNRVNQQUNFLCBUVU5BQkxFX05BTUVTUEFDRSwgX19pZCwgX190eXBlLCBfX3Zh bCkKKyMgZGVmaW5lIFRVTkFCTEVfU0VUX1dJVEhfQk9VTkRTKF9faWQsIF9fdHlwZSwgX192YWws IF9fbWluLCBfX21heCkgXAorICBUVU5BQkxFX1NFVF9XSVRIX0JPVU5EU19GVUxMIChUT1BfTkFN RVNQQUNFLCBUVU5BQkxFX05BTUVTUEFDRSwgX19pZCwgXAorCQkJCV9fdHlwZSwgX192YWwsIF9f bWluLCBfX21heCkKICNlbHNlCiAjIGRlZmluZSBUVU5BQkxFX0dFVChfX3RvcCwgX19ucywgX19p ZCwgX190eXBlLCBfX2NiKSBcCiAgIFRVTkFCTEVfR0VUX0ZVTEwgKF9fdG9wLCBfX25zLCBfX2lk LCBfX3R5cGUsIF9fY2IpCiAjIGRlZmluZSBUVU5BQkxFX1NFVChfX3RvcCwgX19ucywgX19pZCwg X190eXBlLCBfX3ZhbCkgXAogICBUVU5BQkxFX1NFVF9GVUxMIChfX3RvcCwgX19ucywgX19pZCwg X190eXBlLCBfX3ZhbCkKKyMgZGVmaW5lIFRVTkFCTEVfU0VUX1dJVEhfQk9VTkRTKF9fdG9wLCBf X25zLCBfX2lkLCBfX3R5cGUsIF9fdmFsLCBcCisJCQkJIF9fbWluLCBfX21heCkgXAorICBUVU5B QkxFX1NFVF9XSVRIX0JPVU5EU19GVUxMIChfX3RvcCwgX19ucywgX19pZCwgX190eXBlLCBfX3Zh bCwgXAorCQkJCV9fbWluLCBfX21heCkKICNlbmRpZgogCiAvKiBHZXQgYW5kIHJldHVybiBhIHR1 bmFibGUgdmFsdWUuICBJZiB0aGUgdHVuYWJsZSB3YXMgc2V0IGV4dGVybmFsbHkgYW5kIF9fQ0IK QEAgLTEwMyw3ICsxMTEsMTYgQEAgcnRsZF9oaWRkZW5fcHJvdG8gKF9fdHVuYWJsZV9nZXRfdmFs KQogIyBkZWZpbmUgVFVOQUJMRV9TRVRfRlVMTChfX3RvcCwgX19ucywgX19pZCwgX190eXBlLCBf X3ZhbCkgXAogKHsJCQkJCQkJCQkgICAgICBcCiAgIF9fdHVuYWJsZV9zZXRfdmFsIChUVU5BQkxF X0VOVU1fTkFNRSAoX190b3AsIF9fbnMsIF9faWQpLAkJICAgICAgXAotCQkJJiAoX190eXBlKSB7 X192YWx9KTsJCQkJICAgICAgXAorCQkgICAgICYgKF9fdHlwZSkge19fdmFsfSwgTlVMTCwgTlVM TCk7CQkJICAgICAgXAorfSkKKworLyogU2V0IGEgdHVuYWJsZSB2YWx1ZSB0b2dldGhlciB3aXRo IG1pbi9tYXggdmFsdWVzLiAgKi8KKyMgZGVmaW5lIFRVTkFCTEVfU0VUX1dJVEhfQk9VTkRTX0ZV TEwoX190b3AsIF9fbnMsIF9faWQsIF9fdHlwZSwgX192YWwsCSAgICAgIFwKKwkJCQkgICAgICBf X21pbiwgX19tYXgpCQkJICAgICAgXAorKHsJCQkJCQkJCQkgICAgICBcCisgIF9fdHVuYWJsZV9z ZXRfdmFsIChUVU5BQkxFX0VOVU1fTkFNRSAoX190b3AsIF9fbnMsIF9faWQpLAkJICAgICAgXAor CQkgICAgICYgKF9fdHlwZSkge19fdmFsfSwgICYgKF9fdHlwZSkge19fbWlufSwJCSAgICAgIFwK KwkJICAgICAmIChfX3R5cGUpIHtfX21heH0pOwkJCQkgICAgICBcCiB9KQogCiAvKiBOYW1lc3Bh Y2Ugc2FuaXR5IGZvciBjYWxsYmFjayBmdW5jdGlvbnMuICBVc2UgdGhpcyBtYWNybyB0byBrZWVw IHRoZQpkaWZmIC0tZ2l0IGEvbWFudWFsL1JFQURNRS50dW5hYmxlcyBiL21hbnVhbC9SRUFETUUu dHVuYWJsZXMKaW5kZXggZjg3YTMxYTY1ZS4uZmZmNmMyYTg3ZSAxMDA2NDQKLS0tIGEvbWFudWFs L1JFQURNRS50dW5hYmxlcworKysgYi9tYW51YWwvUkVBRE1FLnR1bmFibGVzCkBAIC02Nyw3ICs2 Nyw3IEBAIFRoZSBsaXN0IG9mIGFsbG93ZWQgYXR0cmlidXRlcyBhcmU6CiAJCQkJICAgICBub24t QVRfU0VDVVJFIHN1YnByb2Nlc3Nlcy4KIAkJCU5PTkU6IFJlYWQgYWxsIHRoZSB0aW1lLgogCi0y LiBVc2UgVFVOQUJMRV9HRVQvVFVOQUJMRV9TRVQgdG8gZ2V0IGFuZCBzZXQgdHVuYWJsZXMuCisy LiBVc2UgVFVOQUJMRV9HRVQvVFVOQUJMRV9TRVQvVFVOQUJMRV9TRVRfV0lUSF9CT1VORFMgdG8g Z2V0IGFuZCBzZXQgdHVuYWJsZXMuCiAKIDMuIE9QVElPTkFMOiBJZiB0dW5hYmxlcyBpbiBhIG5h bWVzcGFjZSBhcmUgYmVpbmcgdXNlZCBtdWx0aXBsZSB0aW1lcyB3aXRoaW4gYQogICAgc3BlY2lm aWMgbW9kdWxlLCBzZXQgdGhlIFRVTkFCTEVfTkFNRVNQQUNFIG1hY3JvIHRvIHJlZHVjZSB0aGUg YW1vdW50IG9mCkBAIC0xMTIsOSArMTEyLDI5IEBAIGZvcm0gb2YgdGhlIG1hY3JvcyBhcyBmb2xs b3dzOgogd2hlcmUgJ2dsaWJjJyBpcyB0aGUgdG9wIG5hbWVzcGFjZSwgJ2NwdScgaXMgdGhlIHR1 bmFibGUgbmFtZXNwYWNlIGFuZCB0aGUKIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1l IGFzIHRoZSBzaG9ydCBmb3JtIG1hY3Jvcy4KIAorVGhlIG1pbmltdW0gYW5kIG1heGltdW0gdmFs dWVzIGNhbiB1cGRhdGVkIHRvZ2V0aGVyIHdpdGggdGhlIHR1bmFibGUgdmFsdWUKK3VzaW5nOgor CisgIFRVTkFCTEVfU0VUX1dJVEhfQk9VTkRTIChjaGVjaywgaW50MzJfdCwgdmFsLCBtaW4sIG1h eCkKKword2hlcmUgJ2NoZWNrJyBpcyB0aGUgdHVuYWJsZSBuYW1lLCAnaW50MzJfdCcgaXMgdGhl IEMgdHlwZSBvZiB0aGUgdHVuYWJsZSwKKyd2YWwnIGlzIGEgdmFsdWUgb2Ygc2FtZSB0eXBlLCAn bWluJyBhbmQgJ21heCcgYXJlIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtCit2YWx1ZXMgb2YgdGhl IHR1bmFibGUuCisKK1RvIHNldCB0aGUgbWluaW11bSBhbmQgbWF4aW11bSB2YWx1ZXMgb2YgdHVu YWJsZXMgaW4gYSBkaWZmZXJlbnQgbmFtZXNwYWNlCitmcm9tIHRoYXQgbW9kdWxlLCB1c2UgdGhl IGZ1bGwgZm9ybSBvZiB0aGUgbWFjcm9zIGFzIGZvbGxvd3M6CisKKyAgdmFsID0gVFVOQUJMRV9H RVRfRlVMTCAoZ2xpYmMsIGNwdSwgaHdjYXBfbWFzaywgdWludDY0X3QsIE5VTEwpCisKKyAgVFVO QUJMRV9TRVRfV0lUSF9CT1VORFNfRlVMTCAoZ2xpYmMsIGNwdSwgaHdjYXBfbWFzaywgdWludDY0 X3QsIHZhbCwgbWluLCBtYXgpCisKK3doZXJlICdnbGliYycgaXMgdGhlIHRvcCBuYW1lc3BhY2Us ICdjcHUnIGlzIHRoZSB0dW5hYmxlIG5hbWVzcGFjZSBhbmQgdGhlCityZW1haW5pbmcgYXJndW1l bnRzIGFyZSB0aGUgc2FtZSBhcyB0aGUgc2hvcnQgZm9ybSBtYWNyb3MuCisKIFdoZW4gVFVOQUJM RV9OQU1FU1BBQ0UgaXMgbm90IGRlZmluZWQgaW4gYSBtb2R1bGUsIFRVTkFCTEVfR0VUIGlzIGVx dWl2YWxlbnQgdG8KIFRVTkFCTEVfR0VUX0ZVTEwsIHNvIHlvdSB3aWxsIG5lZWQgdG8gcHJvdmlk ZSBmdWxsIG5hbWVzcGFjZSBpbmZvcm1hdGlvbiBmb3IKLWJvdGggbWFjcm9zLiAgTGlrZXdpc2Ug Zm9yIFRVTkFCTEVfU0VUIGFuZCBUVU5BQkxFX1NFVF9GVUxMLgorYm90aCBtYWNyb3MuICBMaWtl d2lzZSBmb3IgVFVOQUJMRV9TRVQsIFRVTkFCTEVfU0VUX0ZVTEwsCitUVU5BQkxFX1NFVF9XSVRI X0JPVU5EUyBhbmQgVFVOQUJMRV9TRVRfV0lUSF9CT1VORFNfRlVMTC4KIAogKiogSU1QT1JUQU5U IE5PVEUgKioKIAotLSAKMi4yNi4yCgo= --0000000000003ad28705b074f8ef--