From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x52e.google.com (mail-ed1-x52e.google.com [IPv6:2a00:1450:4864:20::52e]) by sourceware.org (Postfix) with ESMTPS id 9281C39484B0 for ; Fri, 25 Nov 2022 08:41:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9281C39484B0 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ed1-x52e.google.com with SMTP id s5so5403514edc.12 for ; Fri, 25 Nov 2022 00:41:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=qhZjigvpSinspxvuR69j9G1+szGySRKp4D976HZrJTs=; b=MqtdBjYXwZJjlnLL8d3uCggXZB8RiuXlHY3luCDO+QnFZg+x3uh8Fx/gDpD9r+hlUU 9kQPeXtljPOLrYL+lAue5vQMSZALfK44h/phLdg9KVy0x6/BmIosownV1qV0zin8ds3G jXBB53cbYBaZjgA+jOHEU6iqQG++wLHerkSyd2fvJ8Ma7+1/15SYEZ6+gD0FeE/avYRv vBJSW81TO9fy/d+lFDKzY3Ml2GbLANA2yWWvzPnRuPjrnaL7EwdpcP+UrGhLRUvoB/6r aJ/vU/MOWjtOVOvCSQ66+PKkF9qGTgG1V12iWb0nImOy3ThH9ILaZwgwheD2O1ltqWJ5 VkEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=qhZjigvpSinspxvuR69j9G1+szGySRKp4D976HZrJTs=; b=mcricNP71EO7oe7LwDWhI5cAeFXsauZjk7F9Qzk07hpRgnUhy/sAVfFvaU24e0O6PE wrEdJbm4CO6cElwwiQadXioR8SiViUVAP78e3z+IoZaiyBB5FiQyI8KeWbY8RBgbLNKU DQMFgEMnpVO1GvJKlVLHD0beMxhHZ+kYS/pFLeYShTwmC+Njmkx+fny4PG6kHfb1p+CJ hgiFHErarsiF2UdR23CCrB9cU9c3JQbjogYitmURDmkBWmxx+klIpBPgYqRzQtFpMjPV QxyshJE+yLnJgr6P3W33PMCK+3P5IOZm0qj9A8h3yPHU0c5PmpUNpNSVBpaAujwvLmFA 1ISQ== X-Gm-Message-State: ANoB5pm+vzdtwmeb+TyyVQWWbFYiPPWhhttrmDjoLy9VdvVLwQ4UDZm0 F5sn8qeX4ZwHu8AtZAiSt8ZxxD5dxe171x8DCFWn7iLF X-Google-Smtp-Source: AA0mqf5HkiHphD3ywFiMzpa3K908pDBtWxIHBFmK5hyIrVaORn3BFSAqlTws53pRxWvq7hdo3riRjZTqJqZp8PphDWM= X-Received: by 2002:aa7:db16:0:b0:46a:d41:b1f0 with SMTP id t22-20020aa7db16000000b0046a0d41b1f0mr12565404eds.59.1669365666282; Fri, 25 Nov 2022 00:41:06 -0800 (PST) MIME-Version: 1.0 From: Zopolis0 Date: Fri, 25 Nov 2022 19:40:54 +1100 Message-ID: Subject: [PATCH 20/56] Re-add Java handling to gcc and gcc/cp. To: gcc-patches@gcc.gnu.org Content-Type: multipart/mixed; boundary="0000000000008a1ab805ee477b51" X-Spam-Status: No, score=0.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,PYZOR_CHECK,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --0000000000008a1ab805ee477b51 Content-Type: text/plain; charset="UTF-8" --0000000000008a1ab805ee477b51 Content-Type: application/x-patch; name="0020-Re-add-Java-handling-to-gcc-and-gcc-cp.patch" Content-Disposition: attachment; filename="0020-Re-add-Java-handling-to-gcc-and-gcc-cp.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_law78uw60 RnJvbSBhNzgwMWMxOGZhYzliMjBlZTQ3ZDA5ZWQxNTM4MGE4M2ZhYmVlZWM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWlsaWFuIERvd25leSBUd2lzcyA8Y3JlYXRvcnNtaXRo bWR0QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAxOCBOb3YgMjAyMiAwOTozNDozMCArMTEwMApTdWJq ZWN0OiBbUEFUQ0ggMjAvNTZdIFJlLWFkZCBKYXZhIGhhbmRsaW5nIHRvIGdjYyBhbmQgZ2NjL2Nw LgoKZ2NjL2NwL0NoYW5nZUxvZzoKCgkqIGNhbGwuY2MgKGJ1aWxkX2phdmFfaW50ZXJmYWNlX2Zu X3JlZik6IFJlLWFkZC4KCShidWlsZF9vdmVyX2NhbGwpOiBIYW5kbGUgVFlQRV9KQVZBX0lOVEVS RkFDRS4KCShqYXZhX2lmYWNlX2xvb2t1cF9mbik6IFJlLWFkZC4KCSogY2xhc3MuY2MgKGFkZF9t ZXRob2QpOiBIYW5kbGUgVFlQRV9GT1JfSkFWQS4KCShhZGRfaW1wbGljaXRseV9kZWNsYXJlZF9t ZW1iZXJzKTogTGlrZXdpc2UuCgkoZGV0ZXJtaW5lX2tleV9tZXRob2QpOiBMaWtld2lzZS4KCShm aW5pc2hfc3RydWN0XzEpOiBMaWtld2lzZS4KCShwdXNoX2xhbmdfY29udGV4dCk6IEhhbmRsZSBs YW5nX25hbWVfamF2YS4KCSogY3AtbGFuZy5jYyAoY3BfZWhfcGVyc29uYWxpdHkpOiBIYW5kbGUg cHJhZ21hX2phdmFfZXhjZXB0aW9ucy4KCSogY3AtdHJlZS5oIChlbnVtIGNwX3RyZWVfaW5kZXgp OiBSZS1hZGQgQ1BUSV9KQVZBXyosIENQVElfTEFOR19OQU1FX0pBVkEgYW5kIENQVElfSkNMQVNT LgoJKGphdmFfYnl0ZV90eXBlX25vZGUpOiBSZS1hZGQuCgkoamF2YV9zaG9ydF90eXBlX25vZGUp OiBMaWtld2lzZS4KCShqYXZhX2ludF90eXBlX25vZGUpOiBMaWtld2lzZS4KCShqYXZhX2xvbmdf dHlwZV9ub2RlKTogTGlrZXdpc2UuCgkoamF2YV9mbG9hdF90eXBlX25vZGUpOiBMaWtld2lzZS4K CShqYXZhX2RvdWJsZV90eXBlX25vZGUpOiBMaWtld2lzZS4KCShqYXZhX2NoYXJfdHlwZV9ub2Rl KTogTGlrZXdpc2UuCgkoamF2YV9ib29sZWFuX3R5cGVfbm9kZSk6IExpa2V3aXNlLgoJKGxhbmdf bmFtZV9qYXZhKTogTGlrZXdpc2UuCgkoamNsYXNzX25vZGUpOiBMaWtld2lzZS4KCShjcF9nbG9i YWxfdHJlZXMpOiBSZS1hZGQgVFlQRV9GT1JfSkFWQS4KCShlbnVtIGxhbmd1YWdlcyk6IFJlLWFk ZCBsYW5nX2phdmEuCgkoVFlQRV9GT1JfSkFWQSk6IFJlLWFkZC4KCShzdHJ1Y3QgbGFuZ190eXBl KTogUmUtYWRkIGphdmFfaW50ZXJmYWNlLgoJKFRZUEVfSkFWQV9JTlRFUkZBQ0UpOiBSZS1hZGQu Cgkoc3RydWN0IGxhbmdfZGVjbF9iYXNlKTogSW5jcmVhc2UgbGFuZ3VhZ2UgYnkgMS4KCShjaGVj a19qYXZhX21ldGhvZCk6IFJlLWFkZC4KCShidWlsZF9qYXZhX2NsYXNzX3JlZik6IExpa2V3aXNl LgoJKHByYWdtYV9qYXZhX2V4Y2VwdGlvbnMpOiBMaWtld2lzZS4KCSogZGVjbC5jYyAocmVjb3Jk X2J1aWx0aW5famF2YV90eXBlKTogUmUtYWRkLgoJKGluaXRpYWxpemVfcHJlZGVmaW5lZF9pZGVu dGlmaWVycyk6IFJlLWFkZCBKYXZhLgoJKGN4eF9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IFJlLWFk ZCBqYXZhXypfdHlwZV9ub2RlLgoJKGNwX2ZpbmlzaF9kZWNsKTogSGFuZGxlIFRZUEVfRk9SX0pB VkEuCgkoZ3Jva2ZuZGVjbCk6IExpa2V3aXNlLgoJKGNoZWNrX3NwZWNpYWxfZnVuY3Rpb25fcmV0 dXJuX3R5cGUpOiBMaWtld2lzZS4KCShncm9rZGVjbGFyYXRvcik6IFNldCBUWVBFX0ZPUl9KQVZB LgoJKGdyb2twYXJtcyk6IEhhbmRsZSBUWVBFX0ZPUl9KQVZBLgoJKHhyZWZfYmFzZXR5cGVzKTog TGlrZXdpc2UuCgkoY2hlY2tfZnVuY3Rpb25fdHlwZSk6IExpa2V3aXNlLgoJKG1heWJlX3JldHVy bl90aGlzKTogTGlrZXdpc2UuCgkqIGRlY2wyLmNjIChhY2NlcHRhYmxlX2phdmFfdHlwZSk6IFJl LWFkZC4KCShjaGVja19qYXZhX21ldGhvZCk6IExpa2V3aXNlLgoJKGltcG9ydF9leHBvcnRfZGVj bCk6IEhhbmRsZSBUWVBFX0ZPUl9KQVZBLgoJKGJ1aWxkX2phdmFfbWV0aG9kX2FsaWFzZXMpOiBS ZS1hZGQuCgkoY19wYXJzZV9maW5hbF9jbGVhbnVwcyk6IENhbGwgYnVpbGRfamF2YV9tZXRob2Rf YWxpYXNlcy4KCShwb3NzaWJseV9pbmxpbmVkX3ApOiBUZXN0IHByYWdtYV9qYXZhX2V4Y2VwdGlv bnMuCgkqIGVycm9yLmNjIChsYW5ndWFnZV90b19zdHJpbmcpOiBIYW5kbGUgbGFuZ19qYXZhLgoJ KiBleGNlcHQuY2MgKGRlY2xfaXNfamF2YV90eXBlKTogUmUtYWRkLgoJKGVoX3R5cGVfaW5mbyk6 IFJlLWFkZCBqYXZhIHR5cGUgaGFuZGxpbmcuCgkoY2hvb3NlX3BlcnNvbmFsaXR5X3JvdXRpbmUp OiBSZS1hZGQuCgkoaW5pdGlhbGl6ZV9oYW5kbGVyX3Bhcm0pOiBDYWxsIGNob29zZV9wZXJzb25h bGl0eV9yb3V0aW5lLgoJKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IEhhbmRsZSBqYXZhIHR5 cGVzLgoJKGJ1aWxkX3Rocm93KTogTGlrZXdpc2UuCgkqIGluaXQuY2MgKGJ1aWxkX25ld18xKTog SGFuZGxlIFRZUEVfRk9SX0pBVkEuCgkoYnVpbGRfamF2YV9jbGFzc19yZWYpOiBMaWtld2lzZS4K CSogbGV4LmNjIChoYW5kbGVfcHJhZ21hX2phdmFfZXhjZXB0aW9ucyk6IFJlLWFkZC4KCShpbml0 X2NwX3ByYWdtYSk6IFJlZ2lzdGVyIEdDQyBqYXZhX2V4Y2VwdGlvbnMgcHJhZ21hLgoJKHNldF9k ZWNsX2xpbmthZ2UpOiBIYW5kbGUgbGFuZ19uYW1lX2phdmEuCgkqIG1hbmdsZS5jYyAod3JpdGVf amF2YV9pbnRlZ2VyX3R5cGVfY29kZXMpOiBSZS1hZGQuCgkod3JpdGVfYnVpbHRpbl90eXBlKTog SGFuZGxlIFRZUEVfRk9SX0pBVkEuCgkod3JpdGVfYmFyZV9mdW5jdGlvbl90eXBlKTogSGFuZGxl IGphdmFfKl90eXBlX25vZGUuCgkqIG1ldGhvZC5jYyAoaW1wbGljaXRseV9kZWNsYXJlX2ZuKTog SGFuZGxlIFRZUEVfRk9SX0pBVkEuCgkqIG5hbWUtbG9va3VwLmNjIChwdXNodGFnKTogU2V0IFRZ UEVfRk9SX0pBVkEuCgkqIHB0LmNjIChtYXliZV9uZXdfcGFydGlhbF9zcGVjaWFsaXphdGlvbik6 IENvcHkgVFlQRV9GT1JfSkFWQS4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBMaWtld2lzZS4K CShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IExpa2V3aXNlLgoJKiB0cmVlLmNjIChoYW5k bGVfamF2YV9pbnRlcmZhY2VfYXR0cmlidXRlKTogUmUtYWRkLgoJKiB0eXBlY2suY2MgKHN0cnVj dHVyYWxfY29tcHR5cGVzKTogQ29tcGFyZSBUWVBFX0ZPUl9KQVZBLgoKZ2NjL0NoYW5nZUxvZzoK CgkqIGR3YXJmMm91dC5jYyAoaXNfamF2YSk6IFJlLWFkZC4KCShvdXRwdXRfcHVibmFtZSk6IEhh bmRsZSBpc19qYXZhLgoJKGxvd2VyX2JvdW5kX2RlZmF1bHQpOiBIYW5kbGUgRFdfTEFOR19KYXZh LgoJKGdlbl9jb21waWxlX3VuaXRfZGllKTogTGlrZXdpc2UuCgkqIGdpbXBsaWZ5LmNjIChtb3N0 bHlfY29weV90cmVlX3IpOiBSZS1hZGQgSmF2YS1zcGVjaWFsIHBhcnQuCgkqIGlwYS1mcmVlLWxh bmctZGF0YS5jYyAoZnJlZV9sYW5nX2RhdGFfaW5fdHlwZSk6IEhhbmRsZSBKYXZhJ3MgdXNhZ2Ug b2YgVFlQRV9NSU5fVkFMVUUuCgkoZmluZF9kZWNsc190eXBlc19yKTogSGFuZGxlIEphdmEncyB1 c2FnZSBvZiBUWVBFX0JJTkZPLgoJKiB0cmVlLmNjICh2ZXJpZnlfdHlwZSk6IEhhbmRsZSBKYXZh J3MgdXNhZ2Ugb2YgVFlQRV9NSU5fVkFMVUUsIFRZUEVfQklORk8sIGFuZCBUWVBFX1NUUklOR19G TEFHLgotLS0KIGdjYy9jcC9jYWxsLmNjICAgICAgICAgICAgfCAgNjYgKysrKysrKysrKysrKysr Ky0KIGdjYy9jcC9jbGFzcy5jYyAgICAgICAgICAgfCAgNTAgKysrKysrKysrKysrLQogZ2NjL2Nw L2NwLWxhbmcuY2MgICAgICAgICB8ICAgNSArLQogZ2NjL2NwL2NwLXRyZWUuaCAgICAgICAgICB8 ICA0NSArKysrKysrKysrLQogZ2NjL2NwL2RlY2wuY2MgICAgICAgICAgICB8IDEyNCArKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tCiBnY2MvY3AvZGVjbDIuY2MgICAgICAgICAgIHwgMTIy ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogZ2NjL2NwL2Vycm9yLmNjICAgICAgICAg ICB8ICAgMyArCiBnY2MvY3AvZXhjZXB0LmNjICAgICAgICAgIHwgMTUyICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystCiBnY2MvY3AvaW5pdC5jYyAgICAgICAgICAgIHwgMTI4 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCiBnY2MvY3AvbGV4LmNjICAgICAgICAg ICAgIHwgIDE4ICsrKysrCiBnY2MvY3AvbWFuZ2xlLmNjICAgICAgICAgIHwgIDYyICsrKysrKysr KysrKysrKy0KIGdjYy9jcC9tZXRob2QuY2MgICAgICAgICAgfCAgIDIgKy0KIGdjYy9jcC9uYW1l LWxvb2t1cC5jYyAgICAgfCAgIDMgKwogZ2NjL2NwL3B0LmNjICAgICAgICAgICAgICB8ICAgMyAr CiBnY2MvY3AvdHJlZS5jYyAgICAgICAgICAgIHwgIDI4ICsrKysrKysKIGdjYy9jcC90eXBlY2su Y2MgICAgICAgICAgfCAgIDIgKwogZ2NjL2R3YXJmMm91dC5jYyAgICAgICAgICB8ICAxNyArKysr LQogZ2NjL2dpbXBsaWZ5LmNjICAgICAgICAgICB8ICAgNyArLQogZ2NjL2lwYS1mcmVlLWxhbmct ZGF0YS5jYyB8ICAxNiArKystCiBnY2MvdHJlZS5jYyAgICAgICAgICAgICAgIHwgIDMwICsrKysr KystCiAyMCBmaWxlcyBjaGFuZ2VkLCA4MzkgaW5zZXJ0aW9ucygrKSwgNDQgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZ2NjL2NwL2NhbGwuY2MgYi9nY2MvY3AvY2FsbC5jYwppbmRleCA0NTll ODZiNWYwOS4uMzJlYWQ1Nzc3MzcgMTAwNjQ0Ci0tLSBhL2djYy9jcC9jYWxsLmNjCisrKyBiL2dj Yy9jcC9jYWxsLmNjCkBAIC0xNjcsNiArMTY3LDcgQEAgc3RhdGljIGludCBjb21wYXJlX2ljcyAo Y29udmVyc2lvbiAqLCBjb252ZXJzaW9uICopOwogc3RhdGljIHZvaWQgbWF5YmVfd2Fybl9jbGFz c19tZW1hY2Nlc3MgKGxvY2F0aW9uX3QsIHRyZWUsCiAJCQkJCWNvbnN0IHZlYzx0cmVlLCB2YV9n Yz4gKik7CiBzdGF0aWMgdHJlZSBidWlsZF9vdmVyX2NhbGwgKHN0cnVjdCB6X2NhbmRpZGF0ZSAq LCBpbnQsIHRzdWJzdF9mbGFnc190KTsKK3N0YXRpYyB0cmVlIGJ1aWxkX2phdmFfaW50ZXJmYWNl X2ZuX3JlZiAodHJlZSwgdHJlZSk7CiBzdGF0aWMgdHJlZSBjb252ZXJ0X2xpa2UgKGNvbnZlcnNp b24gKiwgdHJlZSwgdHN1YnN0X2ZsYWdzX3QpOwogc3RhdGljIHRyZWUgY29udmVydF9saWtlX3dp dGhfY29udGV4dCAoY29udmVyc2lvbiAqLCB0cmVlLCB0cmVlLCBpbnQsCiAJCQkJICAgICAgIHRz dWJzdF9mbGFnc190KTsKQEAgLTEwMjQyLDcgKzEwMjQzLDEwIEBAIGJ1aWxkX292ZXJfY2FsbCAo c3RydWN0IHpfY2FuZGlkYXRlICpjYW5kLCBpbnQgZmxhZ3MsIHRzdWJzdF9mbGFnc190IGNvbXBs YWluKQogICAgICAgaWYgKFRSRUVfU0lERV9FRkZFQ1RTIChhcmdhcnJheVswXSkpCiAJYXJnYXJy YXlbMF0gPSBzYXZlX2V4cHIgKGFyZ2FycmF5WzBdKTsKICAgICAgIHQgPSBidWlsZF9wb2ludGVy X3R5cGUgKFRSRUVfVFlQRSAoZm4pKTsKLSAgICAgIGZuID0gYnVpbGRfdmZuX3JlZiAoYXJnYXJy YXlbMF0sIERFQ0xfVklOREVYIChmbikpOworICAgICAgaWYgKERFQ0xfQ09OVEVYVCAoZm4pICYm IFRZUEVfSkFWQV9JTlRFUkZBQ0UgKERFQ0xfQ09OVEVYVCAoZm4pKSkKKwlmbiA9IGJ1aWxkX2ph dmFfaW50ZXJmYWNlX2ZuX3JlZiAoZm4sIGFyZ2FycmF5WzBdKTsKKyAgICAgIGVsc2UKKwlmbiA9 IGJ1aWxkX3Zmbl9yZWYgKGFyZ2FycmF5WzBdLCBERUNMX1ZJTkRFWCAoZm4pKTsKICAgICAgIFRS RUVfVFlQRSAoZm4pID0gdDsKICAgICB9CiAgIGVsc2UKQEAgLTEwODE5LDYgKzEwODIzLDY2IEBA IGJ1aWxkX2N4eF9jYWxsICh0cmVlIGZuLCBpbnQgbmFyZ3MsIHRyZWUgKmFyZ2FycmF5LAogICBy ZXR1cm4gY29udmVydF9mcm9tX3JlZmVyZW5jZSAoZm4pOwogfQogCitzdGF0aWMgR1RZKCgpKSB0 cmVlIGphdmFfaWZhY2VfbG9va3VwX2ZuOworCisvKiBNYWtlIGFuIGV4cHJlc3Npb24gd2hpY2gg eWllbGRzIHRoZSBhZGRyZXNzIG9mIHRoZSBKYXZhIGludGVyZmFjZQorICAgbWV0aG9kIEZOLiAg VGhpcyBpcyBhY2hpZXZlZCBieSBnZW5lcmF0aW5nIGEgY2FsbCB0byBsaWJqYXZhJ3MKKyAgIF9K dl9Mb29rdXBJbnRlcmZhY2VNZXRob2RJZHgoKS4gICovCisKK3N0YXRpYyB0cmVlCitidWlsZF9q YXZhX2ludGVyZmFjZV9mbl9yZWYgKHRyZWUgZm4sIHRyZWUgaW5zdGFuY2UpCit7CisgIHRyZWUg bG9va3VwX2ZuLCBtZXRob2QsIGlkeDsKKyAgdHJlZSBrbGFzc19yZWYsIGlmYWNlLCBpZmFjZV9y ZWY7CisgIGludCBpOworCisgIGlmICghamF2YV9pZmFjZV9sb29rdXBfZm4pCisgICAgeworICAg ICAgdHJlZSBmdHlwZSA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAocHRyX3R5cGVfbm9kZSwK KwkJCQkJICAgICBwdHJfdHlwZV9ub2RlLCBwdHJfdHlwZV9ub2RlLAorCQkJCQkgICAgIGphdmFf aW50X3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKKyAgICAgIGphdmFfaWZhY2VfbG9va3VwX2ZuCisJ PSBhZGRfYnVpbHRpbl9mdW5jdGlvbiAoIl9Kdl9Mb29rdXBJbnRlcmZhY2VNZXRob2RJZHgiLCBm dHlwZSwKKwkJCQkwLCBOT1RfQlVJTFRfSU4sIE5VTEwsIE5VTExfVFJFRSk7CisgICAgfQorCisg IC8qIExvb2sgdXAgdGhlIHBvaW50ZXIgdG8gdGhlIHJ1bnRpbWUgamF2YS5sYW5nLkNsYXNzIG9i amVjdCBmb3IgYGluc3RhbmNlJy4KKyAgICAgVGhpcyBpcyB0aGUgZmlyc3QgZW50cnkgaW4gdGhl IHZ0YWJsZS4gICovCisgIGtsYXNzX3JlZiA9IGJ1aWxkX3Z0YmxfcmVmIChjcF9idWlsZF9mb2xk X2luZGlyZWN0X3JlZiAoaW5zdGFuY2UpLAorCQkJICAgICAgaW50ZWdlcl96ZXJvX25vZGUpOwor CisgIC8qIEdldCB0aGUgamF2YS5sYW5nLkNsYXNzIHBvaW50ZXIgZm9yIHRoZSBpbnRlcmZhY2Ug YmVpbmcgY2FsbGVkLiAgKi8KKyAgaWZhY2UgPSBERUNMX0NPTlRFWFQgKGZuKTsKKyAgaWZhY2Vf cmVmID0gbG9va3VwX2ZpZWxkIChpZmFjZSwgZ2V0X2lkZW50aWZpZXIgKCJjbGFzcyQiKSwgMCwg ZmFsc2UpOworICBpZiAoIWlmYWNlX3JlZiB8fCAhVkFSX1AgKGlmYWNlX3JlZikKKyAgICAgIHx8 IERFQ0xfQ09OVEVYVCAoaWZhY2VfcmVmKSAhPSBpZmFjZSkKKyAgICB7CisgICAgICBlcnJvciAo ImNvdWxkIG5vdCBmaW5kIGNsYXNzJCBmaWVsZCBpbiBqYXZhIGludGVyZmFjZSB0eXBlICVxVCIs CisJCWlmYWNlKTsKKyAgICAgIHJldHVybiBlcnJvcl9tYXJrX25vZGU7CisgICAgfQorICBpZmFj ZV9yZWYgPSBidWlsZF9hZGRyZXNzIChpZmFjZV9yZWYpOworICBpZmFjZV9yZWYgPSBjb252ZXJ0 IChidWlsZF9wb2ludGVyX3R5cGUgKGlmYWNlKSwgaWZhY2VfcmVmKTsKKworICAvKiBEZXRlcm1p bmUgdGhlIGl0YWJsZSBpbmRleCBvZiBGTi4gICovCisgIGkgPSAxOworICBmb3IgKG1ldGhvZCA9 IFRZUEVfRklFTERTIChpZmFjZSk7IG1ldGhvZDsgbWV0aG9kID0gREVDTF9DSEFJTiAobWV0aG9k KSkKKyAgICB7CisgICAgICBpZiAoIURFQ0xfVklSVFVBTF9QIChtZXRob2QpKQorCWNvbnRpbnVl OworICAgICAgaWYgKGZuID09IG1ldGhvZCkKKwlicmVhazsKKyAgICAgIGkrKzsKKyAgICB9Cisg IGlkeCA9IGJ1aWxkX2ludF9jc3QgKE5VTExfVFJFRSwgaSk7CisKKyAgbG9va3VwX2ZuID0gYnVp bGQxIChBRERSX0VYUFIsCisJCSAgICAgIGJ1aWxkX3BvaW50ZXJfdHlwZSAoVFJFRV9UWVBFIChq YXZhX2lmYWNlX2xvb2t1cF9mbikpLAorCQkgICAgICBqYXZhX2lmYWNlX2xvb2t1cF9mbik7Cisg IHJldHVybiBidWlsZF9jYWxsX25hcnkgKHB0cl90eXBlX25vZGUsIGxvb2t1cF9mbiwKKwkJCSAg Mywga2xhc3NfcmVmLCBpZmFjZV9yZWYsIGlkeCk7Cit9CisKIC8qIFJldHVybnMgdGhlIHZhbHVl IHRvIHVzZSBmb3IgdGhlIGluLWNoYXJnZSBwYXJhbWV0ZXIgd2hlbiBtYWtpbmcgYQogICAgY2Fs bCB0byBhIGZ1bmN0aW9uIHdpdGggdGhlIGluZGljYXRlZCBOQU1FLgogCmRpZmYgLS1naXQgYS9n Y2MvY3AvY2xhc3MuY2MgYi9nY2MvY3AvY2xhc3MuY2MKaW5kZXggYWViY2I1MzczOWUuLjJkYWZi NTRiOGMxIDEwMDY0NAotLS0gYS9nY2MvY3AvY2xhc3MuY2MKKysrIGIvZ2NjL2NwL2NsYXNzLmNj CkBAIC0xMjQ3LDYgKzEyNDcsMTYgQEAgYWRkX21ldGhvZCAodHJlZSB0eXBlLCB0cmVlIG1ldGhv ZCwgYm9vbCB2aWFfdXNpbmcpCiAgIC8qIE1haW50YWluIFRZUEVfSEFTX1VTRVJfQ09OU1RSVUNU T1IsIGV0Yy4gICovCiAgIGdyb2tfc3BlY2lhbF9tZW1iZXJfcHJvcGVydGllcyAobWV0aG9kKTsK IAorICBpZiAoREVDTF9NQVlCRV9JTl9DSEFSR0VfREVTVFJVQ1RPUl9QIChtZXRob2QpICYmIChU WVBFX0ZPUl9KQVZBICh0eXBlKSkpCisgICAgeworICAgICAgaWYgKCFERUNMX0FSVElGSUNJQUwg KG1ldGhvZCkpCisgICAgICAgIGVycm9yICgiSmF2YSBjbGFzcyAlcVQgY2Fubm90IGhhdmUgYSBk ZXN0cnVjdG9yIiwgdHlwZSk7CisgICAgICBlbHNlIGlmIChUWVBFX0hBU19OT05UUklWSUFMX0RF U1RSVUNUT1IgKHR5cGUpKQorICAgICAgICBlcnJvciAoIkphdmEgY2xhc3MgJXFUIGNhbm5vdCBo YXZlIGFuIGltcGxpY2l0IG5vbi10cml2aWFsICIKKyAgICAgICAgICAgICAgICJkZXN0cnVjdG9y IiwKKyAgICAgICAgICAgICAgIHR5cGUpOworICAgIH0KKwogICAqc2xvdCA9IGN1cnJlbnRfZm5z OwogCiAgIHJldHVybiB0cnVlOwpAQCAtMzMwNiw5ICszMzE2LDE4IEBAIGFkZF9pbXBsaWNpdGx5 X2RlY2xhcmVkX21lbWJlcnMgKHRyZWUgdCwgdHJlZSogYWNjZXNzX2RlY2xzLAogewogICAvKiBE ZXN0cnVjdG9yLiAgKi8KICAgaWYgKCFDTEFTU1RZUEVfREVTVFJVQ1RPUiAodCkpCisgICAgewog ICAgIC8qIEluIGdlbmVyYWwsIHdlIGNyZWF0ZSBkZXN0cnVjdG9ycyBsYXppbHkuICAqLwogICAg IENMQVNTVFlQRV9MQVpZX0RFU1RSVUNUT1IgKHQpID0gMTsKIAorICAgICAgaWYgKFRZUEVfSEFT X05PTlRSSVZJQUxfREVTVFJVQ1RPUiAodCkKKwkgICYmIFRZUEVfRk9SX0pBVkEgKHQpKQorCS8q IEJ1dCBpZiB0aGlzIGlzIGEgSmF2YSBjbGFzcywgYW55IG5vbi10cml2aWFsIGRlc3RydWN0b3Ig aXMKKwkgICBpbnZhbGlkLCBldmVuIGlmIGNvbXBpbGVyLWdlbmVyYXRlZC4gIFRoZXJlZm9yZSwg aWYgdGhlCisJICAgZGVzdHJ1Y3RvciBpcyBub24tdHJpdmlhbCB3ZSBjcmVhdGUgaXQgbm93LiAg Ki8KKwlsYXppbHlfZGVjbGFyZV9mbiAoc2ZrX2Rlc3RydWN0b3IsIHQpOworICAgIH0KKwogICBi b29sIG1vdmVfb2sgPSBmYWxzZTsKICAgaWYgKGN4eF9kaWFsZWN0ID49IGN4eDExICYmIENMQVNT VFlQRV9MQVpZX0RFU1RSVUNUT1IgKHQpCiAgICAgICAmJiAhVFlQRV9IQVNfQ09QWV9DVE9SICh0 KSAmJiAhVFlQRV9IQVNfQ09QWV9BU1NJR04gKHQpCkBAIC0zMzM2LDcgKzMzNTUsNyBAQCBhZGRf aW1wbGljaXRseV9kZWNsYXJlZF9tZW1iZXJzICh0cmVlIHQsIHRyZWUqIGFjY2Vzc19kZWNscywK IAogICAgICBJZiBhIGNsYXNzIGRlZmluaXRpb24gZG9lcyBub3QgZXhwbGljaXRseSBkZWNsYXJl IGEgY29weQogICAgICBjb25zdHJ1Y3Rvciwgb25lIGlzIGRlY2xhcmVkIGltcGxpY2l0bHkuICAq LwotICBpZiAoISBUWVBFX0hBU19DT1BZX0NUT1IgKHQpKQorICBpZiAoISBUWVBFX0hBU19DT1BZ X0NUT1IgKHQpICYmICEgVFlQRV9GT1JfSkFWQSAodCkpCiAgICAgewogICAgICAgVFlQRV9IQVNf Q09QWV9DVE9SICh0KSA9IDE7CiAgICAgICBUWVBFX0hBU19DT05TVF9DT1BZX0NUT1IgKHQpID0g IWNhbnRfaGF2ZV9jb25zdF9jY3RvcjsKQEAgLTMzNDksNyArMzM2OCw3IEBAIGFkZF9pbXBsaWNp dGx5X2RlY2xhcmVkX21lbWJlcnMgKHRyZWUgdCwgdHJlZSogYWNjZXNzX2RlY2xzLAogICAgICB3 aGVuIGl0IGlzIG5lZWRlZC4gIEZvciBub3csIGp1c3QgcmVjb3JkIHdoZXRoZXIgb3Igbm90IHRo ZSB0eXBlCiAgICAgIG9mIHRoZSBwYXJhbWV0ZXIgdG8gdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3Ig d2lsbCBiZSBhIGNvbnN0IG9yCiAgICAgIG5vbi1jb25zdCByZWZlcmVuY2UuICAqLwotICBpZiAo IVRZUEVfSEFTX0NPUFlfQVNTSUdOICh0KSkKKyAgaWYgKCFUWVBFX0hBU19DT1BZX0FTU0lHTiAo dCkgJiYgIVRZUEVfRk9SX0pBVkEgKHQpKQogICAgIHsKICAgICAgIFRZUEVfSEFTX0NPUFlfQVNT SUdOICh0KSA9IDE7CiAgICAgICBUWVBFX0hBU19DT05TVF9DT1BZX0FTU0lHTiAodCkgPSAhY2Fu dF9oYXZlX2NvbnN0X2Fzc2lnbm1lbnQ7CkBAIC03MDMxLDcgKzcwNTAsOCBAQCBkZXRlcm1pbmVf a2V5X21ldGhvZCAodHJlZSB0eXBlKQogewogICB0cmVlIG1ldGhvZDsKIAotICBpZiAocHJvY2Vz c2luZ190ZW1wbGF0ZV9kZWNsCisgIGlmIChUWVBFX0ZPUl9KQVZBICh0eXBlKQorICAgICAgfHwg cHJvY2Vzc2luZ190ZW1wbGF0ZV9kZWNsCiAgICAgICB8fCBDTEFTU1RZUEVfVEVNUExBVEVfSU5T VEFOVElBVElPTiAodHlwZSkKICAgICAgIHx8IENMQVNTVFlQRV9JTlRFUkZBQ0VfS05PV04gKHR5 cGUpKQogICAgIHJldHVybjsKQEAgLTc2MTksNyArNzYzOSw5IEBAIGZpbmlzaF9zdHJ1Y3RfMSAo dHJlZSB0KQogICAvKiBCdWlsZCB0aGUgVlRUIGZvciBULiAgKi8KICAgYnVpbGRfdnR0ICh0KTsK IAotICBpZiAod2Fybl9ub252ZHRvcgorICAvKiBUaGlzIHdhcm5pbmcgZG9lcyBub3QgbWFrZSBz ZW5zZSBmb3IgSmF2YSBjbGFzc2VzLCBzaW5jZSB0aGV5CisgICAgIGNhbm5vdCBoYXZlIGRlc3Ry dWN0b3JzLiAgKi8KKyAgaWYgKCFUWVBFX0ZPUl9KQVZBICh0KSAmJiB3YXJuX25vbnZkdG9yCiAg ICAgICAmJiBUWVBFX1BPTFlNT1JQSElDX1AgKHQpICYmIGFjY2Vzc2libGVfbnZkdG9yX3AgKHQp CiAgICAgICAmJiAhQ0xBU1NUWVBFX0ZJTkFMICh0KSkKICAgICB3YXJuaW5nIChPUFRfV25vbl92 aXJ0dWFsX2R0b3IsCkBAIC04MzMwLDkgKzgzNTIsMjkgQEAgcHVzaF9sYW5nX2NvbnRleHQgKHRy ZWUgbmFtZSkKICAgdmVjX3NhZmVfcHVzaCAoY3VycmVudF9sYW5nX2Jhc2UsIGN1cnJlbnRfbGFu Z19uYW1lKTsKIAogICBpZiAobmFtZSA9PSBsYW5nX25hbWVfY3BsdXNwbHVzKQorICAgIHsKICAg ICBjdXJyZW50X2xhbmdfbmFtZSA9IG5hbWU7CisgICAgfQorICBlbHNlIGlmIChuYW1lID09IGxh bmdfbmFtZV9qYXZhKQorICAgIHsKKyAgICAgIGN1cnJlbnRfbGFuZ19uYW1lID0gbmFtZTsKKyAg ICAgIC8qIERFQ0xfSUdOT1JFRF9QIGlzIGluaXRpYWxseSBzZXQgZm9yIHRoZXNlIHR5cGVzLCB0 byBhdm9pZCBjbHV0dGVyLgorCSAoU2VlIHJlY29yZF9idWlsdGluX2phdmFfdHlwZSBpbiBkZWNs LmNjLikgIEhvd2V2ZXIsIHRoYXQgY2F1c2VzCisJIGluY29ycmVjdCBkZWJ1ZyBlbnRyaWVzIGlm IHRoZXNlIHR5cGVzIGFyZSBhY3R1YWxseSB1c2VkLgorCSBTbyB3ZSByZS1lbmFibGUgZGVidWcg b3V0cHV0IGFmdGVyIGV4dGVybiAiSmF2YSIuICAqLworICAgICAgREVDTF9JR05PUkVEX1AgKFRZ UEVfTkFNRSAoamF2YV9ieXRlX3R5cGVfbm9kZSkpID0gMDsKKyAgICAgIERFQ0xfSUdOT1JFRF9Q IChUWVBFX05BTUUgKGphdmFfc2hvcnRfdHlwZV9ub2RlKSkgPSAwOworICAgICAgREVDTF9JR05P UkVEX1AgKFRZUEVfTkFNRSAoamF2YV9pbnRfdHlwZV9ub2RlKSkgPSAwOworICAgICAgREVDTF9J R05PUkVEX1AgKFRZUEVfTkFNRSAoamF2YV9sb25nX3R5cGVfbm9kZSkpID0gMDsKKyAgICAgIERF Q0xfSUdOT1JFRF9QIChUWVBFX05BTUUgKGphdmFfZmxvYXRfdHlwZV9ub2RlKSkgPSAwOworICAg ICAgREVDTF9JR05PUkVEX1AgKFRZUEVfTkFNRSAoamF2YV9kb3VibGVfdHlwZV9ub2RlKSkgPSAw OworICAgICAgREVDTF9JR05PUkVEX1AgKFRZUEVfTkFNRSAoamF2YV9jaGFyX3R5cGVfbm9kZSkp ID0gMDsKKyAgICAgIERFQ0xfSUdOT1JFRF9QIChUWVBFX05BTUUgKGphdmFfYm9vbGVhbl90eXBl X25vZGUpKSA9IDA7CisgICAgfQogICBlbHNlIGlmIChuYW1lID09IGxhbmdfbmFtZV9jKQorICAg IHsKICAgICBjdXJyZW50X2xhbmdfbmFtZSA9IG5hbWU7CisgICAgfQogICBlbHNlCiAgICAgZXJy b3IgKCJsYW5ndWFnZSBzdHJpbmcgJTxcIiVFXCIlPiBub3QgcmVjb2duaXplZCIsIG5hbWUpOwog fQpkaWZmIC0tZ2l0IGEvZ2NjL2NwL2NwLWxhbmcuY2MgYi9nY2MvY3AvY3AtbGFuZy5jYwppbmRl eCBhM2YyOWVkYTBkNi4uYWY2NmZlNTcyN2YgMTAwNjQ0Ci0tLSBhL2djYy9jcC9jcC1sYW5nLmNj CisrKyBiL2djYy9jcC9jcC1sYW5nLmNjCkBAIC0xNTIsNyArMTUyLDEwIEBAIHN0YXRpYyB0cmVl CiBjcF9laF9wZXJzb25hbGl0eSAodm9pZCkKIHsKICAgaWYgKCFjcF9laF9wZXJzb25hbGl0eV9k ZWNsKQotICAgIGNwX2VoX3BlcnNvbmFsaXR5X2RlY2wgPSBidWlsZF9wZXJzb25hbGl0eV9mdW5j dGlvbiAoImd4eCIpOworICAgIHsKKyAgICAgIGNvbnN0IGNoYXIgKmxhbmcgPSAocHJhZ21hX2ph dmFfZXhjZXB0aW9ucyA/ICJnY2oiIDogImd4eCIpOworICAgICAgY3BfZWhfcGVyc29uYWxpdHlf ZGVjbCA9IGJ1aWxkX3BlcnNvbmFsaXR5X2Z1bmN0aW9uIChsYW5nKTsKKyAgICB9CiAKICAgcmV0 dXJuIGNwX2VoX3BlcnNvbmFsaXR5X2RlY2w7CiB9CmRpZmYgLS1naXQgYS9nY2MvY3AvY3AtdHJl ZS5oIGIvZ2NjL2NwL2NwLXRyZWUuaAppbmRleCA1NDhiNTMzMjY2YS4uNjI1NDMwNTEzNTkgMTAw NjQ0Ci0tLSBhL2djYy9jcC9jcC10cmVlLmgKKysrIGIvZ2NjL2NwL2NwLXRyZWUuaApAQCAtMTMw LDYgKzEzMCwxNSBAQCBvcGVyYXRvciA9PSAoY29uc3QgY3BfZXhwciAmbGhzLCB0cmVlIHJocykK IAwKIGVudW0gY3BfdHJlZV9pbmRleAogeworICAgIENQVElfSkFWQV9CWVRFX1RZUEUsCisgICAg Q1BUSV9KQVZBX1NIT1JUX1RZUEUsCisgICAgQ1BUSV9KQVZBX0lOVF9UWVBFLAorICAgIENQVElf SkFWQV9MT05HX1RZUEUsCisgICAgQ1BUSV9KQVZBX0ZMT0FUX1RZUEUsCisgICAgQ1BUSV9KQVZB X0RPVUJMRV9UWVBFLAorICAgIENQVElfSkFWQV9DSEFSX1RZUEUsCisgICAgQ1BUSV9KQVZBX0JP T0xFQU5fVFlQRSwKKwogICAgIENQVElfV0NIQVJfREVDTCwKICAgICBDUFRJX1ZUQUJMRV9FTlRS WV9UWVBFLAogICAgIENQVElfREVMVEFfVFlQRSwKQEAgLTE5NSwxMCArMjA0LDEyIEBAIGVudW0g Y3BfdHJlZV9pbmRleAogCiAgICAgQ1BUSV9MQU5HX05BTUVfQywKICAgICBDUFRJX0xBTkdfTkFN RV9DUExVU1BMVVMsCisgICAgQ1BUSV9MQU5HX05BTUVfSkFWQSwKIAogICAgIENQVElfRU1QVFlf RVhDRVBUX1NQRUMsCiAgICAgQ1BUSV9OT0VYQ0VQVF9UUlVFX1NQRUMsCiAgICAgQ1BUSV9OT0VY Q0VQVF9GQUxTRV9TUEVDLAorICAgIENQVElfSkNMQVNTLAogICAgIENQVElfTk9FWENFUFRfREVG RVJSRURfU1BFQywKIAogICAgIENQVElfQU5ZX1RBUkcsCkBAIC0yNDYsNiArMjU3LDE1IEBAIGVu dW0gY3BfdHJlZV9pbmRleAogCiBleHRlcm4gR1RZKCgpKSB0cmVlIGNwX2dsb2JhbF90cmVlc1tD UFRJX01BWF07CiAKKyNkZWZpbmUgamF2YV9ieXRlX3R5cGVfbm9kZSAgICAgICAgICAgIGNwX2ds b2JhbF90cmVlc1tDUFRJX0pBVkFfQllURV9UWVBFXQorI2RlZmluZSBqYXZhX3Nob3J0X3R5cGVf bm9kZSAgICAgICAgICAgY3BfZ2xvYmFsX3RyZWVzW0NQVElfSkFWQV9TSE9SVF9UWVBFXQorI2Rl ZmluZSBqYXZhX2ludF90eXBlX25vZGUgICAgICAgICAgICAgY3BfZ2xvYmFsX3RyZWVzW0NQVElf SkFWQV9JTlRfVFlQRV0KKyNkZWZpbmUgamF2YV9sb25nX3R5cGVfbm9kZSAgICAgICAgICAgIGNw X2dsb2JhbF90cmVlc1tDUFRJX0pBVkFfTE9OR19UWVBFXQorI2RlZmluZSBqYXZhX2Zsb2F0X3R5 cGVfbm9kZSAgICAgICAgICAgY3BfZ2xvYmFsX3RyZWVzW0NQVElfSkFWQV9GTE9BVF9UWVBFXQor I2RlZmluZSBqYXZhX2RvdWJsZV90eXBlX25vZGUgICAgICAgICAgY3BfZ2xvYmFsX3RyZWVzW0NQ VElfSkFWQV9ET1VCTEVfVFlQRV0KKyNkZWZpbmUgamF2YV9jaGFyX3R5cGVfbm9kZSAgICAgICAg ICAgIGNwX2dsb2JhbF90cmVlc1tDUFRJX0pBVkFfQ0hBUl9UWVBFXQorI2RlZmluZSBqYXZhX2Jv b2xlYW5fdHlwZV9ub2RlICAgICAgICAgY3BfZ2xvYmFsX3RyZWVzW0NQVElfSkFWQV9CT09MRUFO X1RZUEVdCisKICNkZWZpbmUgd2NoYXJfZGVjbF9ub2RlCQkJY3BfZ2xvYmFsX3RyZWVzW0NQVElf V0NIQVJfREVDTF0KICNkZWZpbmUgdnRhYmxlX2VudHJ5X3R5cGUJCWNwX2dsb2JhbF90cmVlc1tD UFRJX1ZUQUJMRV9FTlRSWV9UWVBFXQogLyogVGhlIHR5cGUgdXNlZCB0byByZXByZXNlbnQgYW4g b2Zmc2V0IGJ5IHdoaWNoIHRvIGFkanVzdCB0aGUgYHRoaXMnCkBAIC0zNTIsNiArMzcyLDcgQEAg ZXh0ZXJuIEdUWSgoKSkgdHJlZSBjcF9nbG9iYWxfdHJlZXNbQ1BUSV9NQVhdOwogI2RlZmluZSBv bXBfaWRlbnRpZmllcgkJCWNwX2dsb2JhbF90cmVlc1tDUFRJX09NUF9JREVOVElGSUVSXQogI2Rl ZmluZSBsYW5nX25hbWVfYwkJCWNwX2dsb2JhbF90cmVlc1tDUFRJX0xBTkdfTkFNRV9DXQogI2Rl ZmluZSBsYW5nX25hbWVfY3BsdXNwbHVzCQljcF9nbG9iYWxfdHJlZXNbQ1BUSV9MQU5HX05BTUVf Q1BMVVNQTFVTXQorI2RlZmluZSBsYW5nX25hbWVfamF2YSAgICAgICAgICAgICAgICAgY3BfZ2xv YmFsX3RyZWVzW0NQVElfTEFOR19OQU1FX0pBVkFdCiAKIC8qIEV4Y2VwdGlvbiBzcGVjaWZpZXJz IHVzZWQgZm9yIHRocm93KCksIG5vZXhjZXB0KHRydWUpLAogICAgbm9leGNlcHQoZmFsc2UpIGFu ZCBkZWZlcnJlZCBub2V4Y2VwdC4gIFdlIHJlbHkgb24gdGhlc2UgYmVpbmcKQEAgLTM2MSw2ICsz ODIsOSBAQCBleHRlcm4gR1RZKCgpKSB0cmVlIGNwX2dsb2JhbF90cmVlc1tDUFRJX01BWF07CiAj ZGVmaW5lIG5vZXhjZXB0X2ZhbHNlX3NwZWMJCWNwX2dsb2JhbF90cmVlc1tDUFRJX05PRVhDRVBU X0ZBTFNFX1NQRUNdCiAjZGVmaW5lIG5vZXhjZXB0X2RlZmVycmVkX3NwZWMJCWNwX2dsb2JhbF90 cmVlc1tDUFRJX05PRVhDRVBUX0RFRkVSUkVEX1NQRUNdCiAKKy8qIElmIG5vbi1OVUxMLCBhIFBP SU5URVJfVFlQRSBlcXVpdmFsZW50IHRvIChqYXZhOjpsYW5nOjpDbGFzcyopLiAgKi8KKyNkZWZp bmUgamNsYXNzX25vZGUgICAgICAgICAgICAgICAgICAgIGNwX2dsb2JhbF90cmVlc1tDUFRJX0pD TEFTU10KKwogLyogRXhjZXB0aW9uIGhhbmRsaW5nIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4gICov CiAjZGVmaW5lIHRlcm1pbmF0ZV9mbgkJCWNwX2dsb2JhbF90cmVlc1tDUFRJX1RFUk1JTkFURV9G Tl0KICNkZWZpbmUgY2FsbF91bmV4cGVjdGVkX2ZuCQljcF9nbG9iYWxfdHJlZXNbQ1BUSV9DQUxM X1VORVhQRUNURURfRk5dCkBAIC01MzcsNiArNTYxLDcgQEAgZXh0ZXJuIEdUWSgoKSkgdHJlZSBj cF9nbG9iYWxfdHJlZXNbQ1BUSV9NQVhdOwogICAgMTogVFlQRV9IQVNfVVNFUl9DT05TVFJVQ1RP Ui4KICAgIDI6IFRZUEVfSEFTX0xBVEVfUkVUVVJOX1RZUEUgKGluIEZVTkNUSU9OX1RZUEUsIE1F VEhPRF9UWVBFKQogICAgICAgVFlQRV9QVFJNRU1GVU5DX0ZMQUcgKGluIFJFQ09SRF9UWVBFKQor ICAgMzogVFlQRV9GT1JfSkFWQS4KICAgIDQ6IFRZUEVfSEFTX05PTlRSSVZJQUxfREVTVFJVQ1RP UgogICAgNTogQ0xBU1NfVFlQRV9QIChpbiBSRUNPUkRfVFlQRSBhbmQgVU5JT05fVFlQRSkKICAg ICAgIEVOVU1fRklYRURfVU5ERVJMWUlOR19UWVBFX1AgKGluIEVOVU1FUkFMX1RZUEUpCkBAIC0y MjE5LDcgKzIyNDQsNyBAQCBleHRlcm4gYm9vbCBzdGF0ZW1lbnRfY29kZV9wW01BWF9UUkVFX0NP REVTXTsKIAogI2RlZmluZSBTVEFURU1FTlRfQ09ERV9QKENPREUpIHN0YXRlbWVudF9jb2RlX3Bb KGludCkgKENPREUpXQogCi1lbnVtIGxhbmd1YWdlcyB7IGxhbmdfYywgbGFuZ19jcGx1c3BsdXMg fTsKK2VudW0gbGFuZ3VhZ2VzIHsgbGFuZ19jLCBsYW5nX2NwbHVzcGx1cywgbGFuZ19qYXZhIH07 CiAKIC8qIE1hY3JvcyB0byBtYWtlIGVycm9yIHJlcG9ydGluZyBmdW5jdGlvbnMnIGxpdmVzIGVh c2llci4gICovCiAjZGVmaW5lIFRZUEVfTElOS0FHRV9JREVOVElGSUVSKE5PREUpIFwKQEAgLTIy NzcsNiArMjMwMiw5IEBAIGVudW0gbGFuZ3VhZ2VzIHsgbGFuZ19jLCBsYW5nX2NwbHVzcGx1cyB9 OwogI2RlZmluZSBPVkVSTE9BRF9UWVBFX1AoVCkgXAogICAoQ0xBU1NfVFlQRV9QIChUKSB8fCBU UkVFX0NPREUgKFQpID09IEVOVU1FUkFMX1RZUEUpCiAKKy8qIFRydWUgaWYgdGhpcyBhICJKYXZh IiB0eXBlLCBkZWZpbmVkIGluICdleHRlcm4gIkphdmEiJy4gICovCisjZGVmaW5lIFRZUEVfRk9S X0pBVkEoTk9ERSkgVFlQRV9MQU5HX0ZMQUdfMyAoTk9ERSkKKwogLyogVHJ1ZSBpZiB0aGlzIHR5 cGUgaXMgZGVwZW5kZW50LiAgVGhpcyBwcmVkaWNhdGUgaXMgb25seSB2YWxpZCBpZgogICAgVFlQ RV9ERVBFTkRFTlRfUF9WQUxJRCBpcyB0cnVlLiAgKi8KICNkZWZpbmUgVFlQRV9ERVBFTkRFTlRf UChOT0RFKSBUWVBFX0xBTkdfRkxBR18wIChOT0RFKQpAQCAtMjM4MSw2ICsyNDA5LDcgQEAgc3Ry dWN0IEdUWSgoKSkgbGFuZ190eXBlIHsKICAgdW5zaWduZWQgZGlhbW9uZF9zaGFwZWQgOiAxOwog ICB1bnNpZ25lZCByZXBlYXRlZF9iYXNlIDogMTsKICAgdW5zaWduZWQgYmVpbmdfZGVmaW5lZCA6 IDE7CisgIHVuc2lnbmVkIGphdmFfaW50ZXJmYWNlIDogMTsKICAgdW5zaWduZWQgZGVidWdfcmVx dWVzdGVkIDogMTsKICAgdW5zaWduZWQgZmllbGRzX3JlYWRvbmx5IDogMTsKICAgdW5zaWduZWQg cHRybWVtZnVuY19mbGFnIDogMTsKQEAgLTI0MTYsNyArMjQ0NSw3IEBAIHN0cnVjdCBHVFkoKCkp IGxhbmdfdHlwZSB7CiAgIC8qIFRoZXJlIGFyZSBzb21lIGJpdHMgbGVmdCB0byBmaWxsIG91dCBh IDMyLWJpdCB3b3JkLiAgS2VlcCB0cmFjawogICAgICBvZiB0aGlzIGJ5IHVwZGF0aW5nIHRoZSBz aXplIG9mIHRoaXMgYml0ZmllbGQgd2hlbmV2ZXIgeW91IGFkZCBvcgogICAgICByZW1vdmUgYSBm bGFnLiAgKi8KLSAgdW5zaWduZWQgZHVtbXkgOiAzOworICB1bnNpZ25lZCBkdW1teSA6IDI7CiAK ICAgdHJlZSBwcmltYXJ5X2Jhc2U7CiAgIHZlYzx0cmVlX3BhaXJfcywgdmFfZ2M+ICp2Y2FsbF9p bmRpY2VzOwpAQCAtMjYxNCw2ICsyNjQzLDExIEBAIHN0cnVjdCBHVFkoKCkpIGxhbmdfdHlwZSB7 CiAjZGVmaW5lIENMQVNTVFlQRV9BTElHTl9VTklUKE5PREUpIFwKICAgKENMQVNTVFlQRV9BTElH TiAoTk9ERSkgLyBCSVRTX1BFUl9VTklUKQogCisvKiBUcnVlIGlmIHRoaXMgYSBKYXZhIGludGVy ZmFjZSB0eXBlLCBkZWNsYXJlZCB3aXRoCisgICAnX19hdHRyaWJ1dGVfXyAoKGphdmFfaW50ZXJm YWNlKSknLiAgKi8KKyNkZWZpbmUgVFlQRV9KQVZBX0lOVEVSRkFDRShOT0RFKSBcCisgIChMQU5H X1RZUEVfQ0xBU1NfQ0hFQ0sgKE5PREUpLT5qYXZhX2ludGVyZmFjZSkKKwogLyogQSB2ZWM8dHJl ZT4gb2YgdmlydHVhbCBmdW5jdGlvbnMgd2hpY2ggY2Fubm90IGJlIGluaGVyaXRlZCBieQogICAg ZGVyaXZlZCBjbGFzc2VzLiAgV2hlbiBkZXJpdmluZyBmcm9tIHRoaXMgdHlwZSwgdGhlIGRlcml2 ZWQKICAgIGNsYXNzIG11c3QgcHJvdmlkZSBpdHMgb3duIGRlZmluaXRpb24gZm9yIGVhY2ggb2Yg dGhlc2UgZnVuY3Rpb25zLiAgKi8KQEAgLTI4NjAsNyArMjg5NCw3IEBAIGVudW0gbGFuZ19kZWNs X3NlbGVjdG9yCiAKIHN0cnVjdCBHVFkoKCkpIGxhbmdfZGVjbF9iYXNlIHsKICAgRU5VTV9CSVRG SUVMRChsYW5nX2RlY2xfc2VsZWN0b3IpIHNlbGVjdG9yIDogMzsKLSAgRU5VTV9CSVRGSUVMRChs YW5ndWFnZXMpIGxhbmd1YWdlIDogMTsKKyAgRU5VTV9CSVRGSUVMRChsYW5ndWFnZXMpIGxhbmd1 YWdlIDogMjsKICAgdW5zaWduZWQgdXNlX3RlbXBsYXRlIDogMjsKICAgdW5zaWduZWQgbm90X3Jl YWxseV9leHRlcm4gOiAxOwkgICAvKiB2YXIgb3IgZm4gKi8KICAgdW5zaWduZWQgaW5pdGlhbGl6 ZWRfaW5fY2xhc3MgOiAxOwkgICAvKiB2YXIgb3IgZm4gKi8KQEAgLTY1NTYsNiArNjU5MCw5IEBA IGNsYXNzX29mX3RoaXNfcGFybSAoY29uc3RfdHJlZSBmbnR5cGUpCiAgICBlLmcgICJpbnQgZih2 b2lkKSIuICAqLwogZXh0ZXJuIGNwX3BhcmFtZXRlcl9kZWNsYXJhdG9yICpub19wYXJhbWV0ZXJz OwogCisvKiBUcnVlIGlmIHdlIHNhdyAiI3ByYWdtYSBHQ0MgamF2YV9leGNlcHRpb25zIi4gICov CitleHRlcm4gYm9vbCBwcmFnbWFfamF2YV9leGNlcHRpb25zOworCiAvKiBWYXJpb3VzIGR1bXAg aWRzLiAgKi8KIGV4dGVybiBpbnQgY2xhc3NfZHVtcF9pZDsKIGV4dGVybiBpbnQgbW9kdWxlX2R1 bXBfaWQ7CkBAIC02OTUwLDYgKzY5ODcsNyBAQCBleHRlcm4gdHJlZSBkb19hZ2dyZWdhdGVfcGFy ZW5faW5pdAkJKHRyZWUsIHRyZWUpOwogZXh0ZXJuIHZvaWQgcmVjb3JkX21hbmdsaW5nCQkJKHRy ZWUsIGJvb2wpOwogZXh0ZXJuIHZvaWQgb3ZlcndyaXRlX21hbmdsaW5nCQkJKHRyZWUsIHRyZWUp OwogZXh0ZXJuIHZvaWQgbm90ZV9tYW5nbGluZ19hbGlhcwkJCSh0cmVlLCB0cmVlKTsKK2V4dGVy biBib29sIGNoZWNrX2phdmFfbWV0aG9kICAgICAgICAgICAgICAgICAgKHRyZWUpOwogZXh0ZXJu IHZvaWQgZ2VuZXJhdGVfbWFuZ2xpbmdfYWxpYXNlcwkJKHZvaWQpOwogZXh0ZXJuIHRyZWUgYnVp bGRfbWVtZm5fdHlwZQkJCSh0cmVlLCB0cmVlLCBjcF9jdl9xdWFscywgY3BfcmVmX3F1YWxpZmll cik7CiBleHRlcm4gdHJlZSBidWlsZF9wb2ludGVyX3B0cm1lbWZuX3R5cGUJKHRyZWUpOwpAQCAt NzEyMCw2ICs3MTU4LDcgQEAgZXh0ZXJuIHRyZWUgYnVpbGRfdmVjX2RlbGV0ZQkJCShsb2NhdGlv bl90LCB0cmVlLCB0cmVlLAogCQkJCQkJIHRzdWJzdF9mbGFnc190KTsKIGV4dGVybiB0cmVlIGNy ZWF0ZV90ZW1wb3JhcnlfdmFyCQkodHJlZSk7CiBleHRlcm4gdm9pZCBpbml0aWFsaXplX3Z0Ymxf cHRycwkJKHRyZWUpOworZXh0ZXJuIHRyZWUgYnVpbGRfamF2YV9jbGFzc19yZWYgICAgICAgICAg ICAgICAodHJlZSk7CiBleHRlcm4gdHJlZSBzY2FsYXJfY29uc3RhbnRfdmFsdWUJCSh0cmVlKTsK IGV4dGVybiB0cmVlIGRlY2xfY29uc3RhbnRfdmFsdWUJCQkodHJlZSwgYm9vbCk7CiBleHRlcm4g dHJlZSBkZWNsX3JlYWxseV9jb25zdGFudF92YWx1ZQkJKHRyZWUsIGJvb2wgPSB0cnVlKTsKZGlm ZiAtLWdpdCBhL2djYy9jcC9kZWNsLmNjIGIvZ2NjL2NwL2RlY2wuY2MKaW5kZXggMDY3NDBkNDIw ZDkuLmM5MWU2NWQxODA4IDEwMDY0NAotLS0gYS9nY2MvY3AvZGVjbC5jYworKysgYi9nY2MvY3Av ZGVjbC5jYwpAQCAtNzgsNiArNzgsNyBAQCBzdGF0aWMgdm9pZCBjaGVja19zdGF0aWNfdmFyaWFi bGVfZGVmaW5pdGlvbiAodHJlZSwgdHJlZSk7CiBzdGF0aWMgdm9pZCByZWNvcmRfdW5rbm93bl90 eXBlICh0cmVlLCBjb25zdCBjaGFyICopOwogc3RhdGljIGludCBtZW1iZXJfZnVuY3Rpb25fb3Jf ZWxzZSAodHJlZSwgdHJlZSwgZW51bSBvdmVybG9hZF9mbGFncyk7CiBzdGF0aWMgdHJlZSBsb2Nh bF92YXJpYWJsZV9wX3dhbGtmbiAodHJlZSAqLCBpbnQgKiwgdm9pZCAqKTsKK3N0YXRpYyB0cmVl IHJlY29yZF9idWlsdGluX2phdmFfdHlwZSAoY29uc3QgY2hhciAqLCBpbnQpOwogc3RhdGljIGNv bnN0IGNoYXIgKnRhZ19uYW1lIChlbnVtIHRhZ190eXBlcyk7CiBzdGF0aWMgdHJlZSBsb29rdXBf YW5kX2NoZWNrX3RhZyAoZW51bSB0YWdfdHlwZXMsIHRyZWUsIFRBR19ob3csIGJvb2wpOwogc3Rh dGljIHZvaWQgbWF5YmVfZGVkdWNlX3NpemVfZnJvbV9hcnJheV9pbml0ICh0cmVlLCB0cmVlKTsK QEAgLTQ1MjAsNiArNDUyMSw1MyBAQCByZWNvcmRfYnVpbHRpbl90eXBlIChlbnVtIHJpZCByaWRf aW5kZXgsCiAgICAgfQogfQogCisvKiBSZWNvcmQgb25lIG9mIHRoZSBzdGFuZGFyZCBKYXZhIHR5 cGVzLgorICogRGVjbGFyZSBpdCBhcyBoYXZpbmcgdGhlIGdpdmVuIE5BTUUuCisgKiBJZiBTSVpF ID4gMCwgaXQgaXMgdGhlIHNpemUgb2Ygb25lIG9mIHRoZSBpbnRlZ3JhbCB0eXBlczsKKyAqIG90 aGVyd2lzZSBpdCBpcyB0aGUgbmVnYXRpdmUgb2YgdGhlIHNpemUgb2Ygb25lIG9mIHRoZSBvdGhl ciB0eXBlcy4gICovCisKK3N0YXRpYyB0cmVlCityZWNvcmRfYnVpbHRpbl9qYXZhX3R5cGUgKGNv bnN0IGNoYXIqIG5hbWUsIGludCBzaXplKQoreworICB0cmVlIHR5cGUsIGRlY2w7CisgIGlmIChz aXplID4gMCkKKyAgICB7CisgICAgICB0eXBlID0gYnVpbGRfbm9uc3RhbmRhcmRfaW50ZWdlcl90 eXBlIChzaXplLCAwKTsKKyAgICAgIHR5cGUgPSBidWlsZF9kaXN0aW5jdF90eXBlX2NvcHkgKHR5 cGUpOworICAgIH0KKyAgZWxzZSBpZiAoc2l6ZSA+IC0zMikKKyAgICB7CisgICAgICB0cmVlIHN0 eXBlOworICAgICAgLyogIl9famF2YV9jaGFyIiBvciAiIl9famF2YV9ib29sZWFuIi4gICovCisg ICAgICB0eXBlID0gYnVpbGRfbm9uc3RhbmRhcmRfaW50ZWdlcl90eXBlICgtc2l6ZSwgMSk7Cisg ICAgICB0eXBlID0gYnVpbGRfZGlzdGluY3RfdHlwZV9jb3B5ICh0eXBlKTsKKyAgICAgIC8qIEdl dCB0aGUgc2lnbmVkIHR5cGUgY2FjaGVkIGFuZCBhdHRhY2hlZCB0byB0aGUgdW5zaWduZWQgdHlw ZSwKKwlzbyBpdCBkb2Vzbid0IGdldCBnYXJiYWdlLWNvbGxlY3RlZCBhdCAicmFuZG9tIiB0aW1l cywKKwljYXVzaW5nIHBvdGVudGlhbCBjb2RlZ2VuIGRpZmZlcmVuY2VzIG91dCBvZiBkaWZmZXJl bnQgVUlEcworCWFuZCBkaWZmZXJlbnQgYWxpYXMgc2V0IG51bWJlcnMuICAqLworICAgICAgc3R5 cGUgPSBidWlsZF9ub25zdGFuZGFyZF9pbnRlZ2VyX3R5cGUgKC1zaXplLCAwKTsKKyAgICAgIHN0 eXBlID0gYnVpbGRfZGlzdGluY3RfdHlwZV9jb3B5IChzdHlwZSk7CisgICAgICBUUkVFX0NIQUlO ICh0eXBlKSA9IHN0eXBlOworICAgICAgLyppZiAoc2l6ZSA9PSAtMSkgICAgICAgIFRSRUVfU0VU X0NPREUgKHR5cGUsIEJPT0xFQU5fVFlQRSk7Ki8KKyAgICB9CisgIGVsc2UKKyAgICB7IC8qICJf X2phdmFfZmxvYXQiIG9yICIiX19qYXZhX2RvdWJsZSIuICAqLworICAgICAgdHlwZSA9IG1ha2Vf bm9kZSAoUkVBTF9UWVBFKTsKKyAgICAgIFRZUEVfUFJFQ0lTSU9OICh0eXBlKSA9IC0gc2l6ZTsK KyAgICAgIGxheW91dF90eXBlICh0eXBlKTsKKyAgICB9CisgIHJlY29yZF9idWlsdGluX3R5cGUg KFJJRF9NQVgsIG5hbWUsIHR5cGUpOworICBkZWNsID0gVFlQRV9OQU1FICh0eXBlKTsKKworICAv KiBTdXBwcmVzcyBnZW5lcmF0ZSBkZWJ1ZyBzeW1ib2wgZW50cmllcyBmb3IgdGhlc2UgdHlwZXMs CisgICAgIHNpbmNlIGZvciBub3JtYWwgQysrIHRoZXkgYXJlIGp1c3QgY2x1dHRlci4KKyAgICAg SG93ZXZlciwgcHVzaF9sYW5nX2NvbnRleHQgdW5kb2VzIHRoaXMgaWYgZXh0ZXJuICJKYXZhIiBp cyBzZWVuLiAgKi8KKyAgREVDTF9JR05PUkVEX1AgKGRlY2wpID0gMTsKKworICBUWVBFX0ZPUl9K QVZBICh0eXBlKSA9IDE7CisgIHJldHVybiB0eXBlOworfQorCiAvKiBQdXNoIGEgdHlwZSBpbnRv IHRoZSBuYW1lc3BhY2Ugc28gdGhhdCB0aGUgYmFjayBlbmRzIGlnbm9yZSBpdC4gICovCiAKIHN0 YXRpYyB2b2lkCkBAIC00NTUyLDYgKzQ2MDAsNyBAQCBpbml0aWFsaXplX3ByZWRlZmluZWRfaWRl bnRpZmllcnMgKHZvaWQpCiAgIHN0YXRpYyBjb25zdCBwcmVkZWZpbmVkX2lkZW50aWZpZXIgcHJl ZGVmaW5lZF9pZGVudGlmaWVyc1tdID0gewogICAgIHsiQysrIiwgJmxhbmdfbmFtZV9jcGx1c3Bs dXMsIGNpa19ub3JtYWx9LAogICAgIHsiQyIsICZsYW5nX25hbWVfYywgY2lrX25vcm1hbH0sCisg ICAgeyAiSmF2YSIsICZsYW5nX25hbWVfamF2YSwgY2lrX25vcm1hbH0sCiAgICAgLyogU29tZSBv ZiB0aGVzZSBuYW1lcyBoYXZlIGEgdHJhaWxpbmcgc3BhY2Ugc28gdGhhdCBpdCBpcwogICAgICAg IGltcG9zc2libGUgZm9yIHRoZW0gdG8gY29uZmxpY3Qgd2l0aCBuYW1lcyB3cml0dGVuIGJ5IHVz ZXJzLiAgKi8KICAgICB7Il9fY3QgIiwgJmN0b3JfaWRlbnRpZmllciwgY2lrX2N0b3J9LApAQCAt NDY2NSw2ICs0NzE0LDE1IEBAIGN4eF9pbml0X2RlY2xfcHJvY2Vzc2luZyAodm9pZCkKIAogICBj X2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMgKCk7CiAKKyAgamF2YV9ieXRlX3R5cGVfbm9kZSA9 IHJlY29yZF9idWlsdGluX2phdmFfdHlwZSAoIl9famF2YV9ieXRlIiwgOCk7CisgIGphdmFfc2hv cnRfdHlwZV9ub2RlID0gcmVjb3JkX2J1aWx0aW5famF2YV90eXBlICgiX19qYXZhX3Nob3J0Iiwg MTYpOworICBqYXZhX2ludF90eXBlX25vZGUgPSByZWNvcmRfYnVpbHRpbl9qYXZhX3R5cGUgKCJf X2phdmFfaW50IiwgMzIpOworICBqYXZhX2xvbmdfdHlwZV9ub2RlID0gcmVjb3JkX2J1aWx0aW5f amF2YV90eXBlICgiX19qYXZhX2xvbmciLCA2NCk7CisgIGphdmFfZmxvYXRfdHlwZV9ub2RlID0g cmVjb3JkX2J1aWx0aW5famF2YV90eXBlICgiX19qYXZhX2Zsb2F0IiwgLTMyKTsKKyAgamF2YV9k b3VibGVfdHlwZV9ub2RlID0gcmVjb3JkX2J1aWx0aW5famF2YV90eXBlICgiX19qYXZhX2RvdWJs ZSIsIC02NCk7CisgIGphdmFfY2hhcl90eXBlX25vZGUgPSByZWNvcmRfYnVpbHRpbl9qYXZhX3R5 cGUgKCJfX2phdmFfY2hhciIsIC0xNik7CisgIGphdmFfYm9vbGVhbl90eXBlX25vZGUgPSByZWNv cmRfYnVpbHRpbl9qYXZhX3R5cGUgKCJfX2phdmFfYm9vbGVhbiIsIC0xKTsKKwogICB0cmVlIGJv b2xfZnR5cGUgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKGJvb2xlYW5fdHlwZV9ub2RlLCBO VUxMX1RSRUUpOwogICB0cmVlIGRlY2wKICAgICA9IGFkZF9idWlsdGluX2Z1bmN0aW9uICgiX19i dWlsdGluX2lzX2NvbnN0YW50X2V2YWx1YXRlZCIsCkBAIC04NTkxLDYgKzg2NDksMTkgQEAgY3Bf ZmluaXNoX2RlY2wgKHRyZWUgZGVjbCwgdHJlZSBpbml0LCBib29sIGluaXRfY29uc3RfZXhwcl9w LAogCSAgICAgaXMgKm5vdCogZGVmaW5lZC4gICovCiAJICAmJiAoIURFQ0xfRVhURVJOQUwgKGRl Y2wpIHx8IGluaXQpKQogCXsKKwlpZiAoVFlQRV9GT1JfSkFWQSAodHlwZSkgJiYgTUFZQkVfQ0xB U1NfVFlQRV9QICh0eXBlKSkKKwkgIHsKKwkgICAgdHJlZSBqY2xhc3MgPSBnZXRfZ2xvYmFsX2Jp bmRpbmcgKGdldF9pZGVudGlmaWVyICgiamNsYXNzIikpOworCSAgICAvKiBBbGxvdyBsaWJqYXZh L3ByaW1zLmNjIGRlZmluZSBwcmltaXRpdmUgY2xhc3Nlcy4gICovCisJICAgIGlmIChpbml0ICE9 IE5VTExfVFJFRQorCQl8fCBqY2xhc3MgPT0gTlVMTF9UUkVFCisJCXx8IFRSRUVfQ09ERSAoamNs YXNzKSAhPSBUWVBFX0RFQ0wKKwkJfHwgIVBPSU5URVJfVFlQRV9QIChUUkVFX1RZUEUgKGpjbGFz cykpCisJCXx8ICFzYW1lX3R5cGVfaWdub3JpbmdfdG9wX2xldmVsX3F1YWxpZmllcnNfcAorCQko dHlwZSwgVFJFRV9UWVBFIChUUkVFX1RZUEUgKGpjbGFzcykpKSkKKwkgICAgICBlcnJvciAoIkph dmEgb2JqZWN0ICVxRCBub3QgYWxsb2NhdGVkIHdpdGggJTxuZXclPiIsIGRlY2wpOworCSAgICBp bml0ID0gTlVMTF9UUkVFOworCSAgfQogCSAgY2xlYW51cHMgPSBtYWtlX3RyZWVfdmVjdG9yICgp OwogCSAgaW5pdCA9IGNoZWNrX2luaXRpYWxpemVyIChkZWNsLCBpbml0LCBmbGFncywgJmNsZWFu dXBzKTsKIApAQCAtODYzNCw2ICs4NzA1LDkgQEAgY3BfZmluaXNoX2RlY2wgKHRyZWUgZGVjbCwg dHJlZSBpbml0LCBib29sIGluaXRfY29uc3RfZXhwcl9wLAogCSAgIHNvIHRoYXQgd2UgY2FuIGRl Y2lkZSBsYXRlciB0byBlbWl0IGRlYnVnIGluZm8gZm9yIHRoZW0uICAqLwogCXJlY29yZF90eXBl c191c2VkX2J5X2N1cnJlbnRfdmFyX2RlY2wgKGRlY2wpOwogICAgIH0KKyAgZWxzZSBpZiAoVFJF RV9DT0RFIChkZWNsKSA9PSBGSUVMRF9ERUNMCisJICAmJiBUWVBFX0ZPUl9KQVZBICh0eXBlKSAm JiBNQVlCRV9DTEFTU19UWVBFX1AgKHR5cGUpKQorICAgIGVycm9yICgibm9uLXN0YXRpYyBkYXRh IG1lbWJlciAlcUQgaGFzIEphdmEgY2xhc3MgdHlwZSIsIGRlY2wpOwogCiAgIC8qIEFkZCB0aGlz IGRlY2xhcmF0aW9uIHRvIHRoZSBzdGF0ZW1lbnQtdHJlZS4gIFRoaXMgbmVlZHMgdG8gaGFwcGVu CiAgICAgIGFmdGVyIHRoZSBjYWxsIHRvIGNoZWNrX2luaXRpYWxpemVyIHNvIHRoYXQgdGhlIERF Q0xfRVhQUiBmb3IgYQpAQCAtMTA2ODIsNyArMTA3NTYsOSBAQCBncm9rZm5kZWNsICh0cmVlIGN0 eXBlLAogCWNoZWNrX21haW5fcGFyYW1ldGVyX3R5cGVzIChkZWNsKTsKICAgICB9CiAKLSAgaWYg KGN0eXBlICE9IE5VTExfVFJFRSAmJiBjaGVjaykKKyAgaWYgKGN0eXBlICE9IE5VTExfVFJFRQor ICAgICAgJiYgKCEgVFlQRV9GT1JfSkFWQSAoY3R5cGUpIHx8IGNoZWNrX2phdmFfbWV0aG9kIChk ZWNsKSkKKyAgICAgICYmIGNoZWNrKQogICAgIHsKICAgICAgIHRyZWUgb2xkX2RlY2wgPSBjaGVj a19jbGFzc2ZuIChjdHlwZSwgZGVjbCwKIAkJCQkgICAgIChjdXJyZW50X3RlbXBsYXRlX2RlcHRo CkBAIC0xMTYxMiw3ICsxMTY4OCw3IEBAIGNoZWNrX3NwZWNpYWxfZnVuY3Rpb25fcmV0dXJuX3R5 cGUgKHNwZWNpYWxfZnVuY3Rpb25fa2luZCBzZmssCiAJZXJyb3JfYXQgKHNtYWxsZXN0X3R5cGVf cXVhbHNfbG9jYXRpb24gKHR5cGVfcXVhbHMsIGxvY2F0aW9ucyksCiAJCSAgInF1YWxpZmllcnMg YXJlIG5vdCBhbGxvd2VkIG9uIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uIik7CiAKLSAgICAgIGlm ICh0YXJnZXRtLmN4eC5jZHRvcl9yZXR1cm5zX3RoaXMgKCkpCisgICAgICBpZiAodGFyZ2V0bS5j eHguY2R0b3JfcmV0dXJuc190aGlzICgpICYmICFUWVBFX0ZPUl9KQVZBIChvcHR5cGUpKQogCXR5 cGUgPSBidWlsZF9wb2ludGVyX3R5cGUgKG9wdHlwZSk7CiAgICAgICBlbHNlCiAJdHlwZSA9IHZv aWRfdHlwZV9ub2RlOwpAQCAtMTE2MjcsOCArMTE3MDMsMTAgQEAgY2hlY2tfc3BlY2lhbF9mdW5j dGlvbl9yZXR1cm5fdHlwZSAoc3BlY2lhbF9mdW5jdGlvbl9raW5kIHNmaywKIAkJICAicXVhbGlm aWVycyBhcmUgbm90IGFsbG93ZWQgb24gZGVzdHJ1Y3RvciBkZWNsYXJhdGlvbiIpOwogCiAgICAg ICAvKiBXZSBjYW4ndCB1c2UgdGhlIHByb3BlciByZXR1cm4gdHlwZSBoZXJlIGJlY2F1c2Ugd2Ug cnVuIGludG8KLQkgcHJvYmxlbXMgd2l0aCBhbWJpZ3VvdXMgYmFzZXMgYW5kIGNvdmFyaWFudCBy ZXR1cm5zLiAgKi8KLSAgICAgIGlmICh0YXJnZXRtLmN4eC5jZHRvcl9yZXR1cm5zX3RoaXMgKCkp CisJIHByb2JsZW1zIHdpdGggYW1iaWd1b3VzIGJhc2VzIGFuZCBjb3ZhcmlhbnQgcmV0dXJucy4K KwkgSmF2YSBjbGFzc2VzIGFyZSBsZWZ0IHVuY2hhbmdlZCBiZWNhdXNlICh2b2lkICopIGlzbid0 IGEgdmFsaWQKKwkgSmF2YSB0eXBlLCBhbmQgd2UgZG9uJ3Qgd2FudCB0byBjaGFuZ2UgdGhlIEph dmEgQUJJLiAgKi8KKyAgICAgIGlmICh0YXJnZXRtLmN4eC5jZHRvcl9yZXR1cm5zX3RoaXMgKCkg JiYgIVRZUEVfRk9SX0pBVkEgKG9wdHlwZSkpCiAJdHlwZSA9IGJ1aWxkX3BvaW50ZXJfdHlwZSAo dm9pZF90eXBlX25vZGUpOwogICAgICAgZWxzZQogCXR5cGUgPSB2b2lkX3R5cGVfbm9kZTsKQEAg LTEzNzY5LDYgKzEzODQ3LDExIEBAIGdyb2tkZWNsYXJhdG9yIChjb25zdCBjcF9kZWNsYXJhdG9y ICpkZWNsYXJhdG9yLAogCSAgcmV0dXJuIGVycm9yX21hcmtfbm9kZTsKIAl9CiAKKyAgICAgIC8q IE5vdGUgdGhhdCB0aGUgZ3JhbW1hciByZWplY3RzIHN0b3JhZ2UgY2xhc3NlcworCWluIHR5cGVu YW1lcywgZmllbGRzIG9yIHBhcmFtZXRlcnMuICAqLworICAgICAgaWYgKGN1cnJlbnRfbGFuZ19u YW1lID09IGxhbmdfbmFtZV9qYXZhKQorICAgICAgIFRZUEVfRk9SX0pBVkEgKHR5cGUpID0gMTsK KwogICAgICAgLyogVGhpcyBkZWNsYXJhdGlvbjoKIAogCSAgIHR5cGVkZWYgdm9pZCBmKGludCkg Y29uc3Q7CkBAIC0xNTA2MCw2ICsxNTE0MywxNiBAQCBncm9rcGFybXMgKHRyZWUgcGFybWxpc3Qs IHRyZWUgKnBhcm1zKQogCSAgVFJFRV9UWVBFIChkZWNsKSA9IGVycm9yX21hcmtfbm9kZTsKIAl9 CiAKKyAgICAgIGlmICh0eXBlICE9IGVycm9yX21hcmtfbm9kZQorCSAmJiBUWVBFX0ZPUl9KQVZB ICh0eXBlKQorCSAmJiBNQVlCRV9DTEFTU19UWVBFX1AgKHR5cGUpKQorICAgICAgIHsKKwkgZXJy b3IgKCJwYXJhbWV0ZXIgJXFEIGhhcyBKYXZhIGNsYXNzIHR5cGUiLCBkZWNsKTsKKwkgdHlwZSA9 IGVycm9yX21hcmtfbm9kZTsKKwkgVFJFRV9UWVBFIChkZWNsKSA9IGVycm9yX21hcmtfbm9kZTsK KwkgaW5pdCA9IE5VTExfVFJFRTsKKyAgICAgICB9CisKICAgICAgIGlmICh0eXBlICE9IGVycm9y X21hcmtfbm9kZSkKIAl7CiAJICBpZiAoZGVwcmVjYXRlZF9zdGF0ZSAhPSBVTkFWQUlMQUJMRV9E RVBSRUNBVEVEX1NVUFBSRVNTKQpAQCAtMTYyMjUsOCArMTYzMTgsMTMgQEAgeHJlZl9iYXNldHlw ZXMgKHRyZWUgcmVmLCB0cmVlIGJhc2VfbGlzdCkKICAgICB9CiAKICAgaWYgKG1heF9iYXNlcyA+ IDEpCisgICAgeworICAgICAgaWYgKFRZUEVfRk9SX0pBVkEgKHJlZikpCisgICAgICAgZXJyb3Ig KCJKYXZhIGNsYXNzICVxVCBjYW5ub3QgaGF2ZSBtdWx0aXBsZSBiYXNlcyIsIHJlZik7CisgICAg ICBlbHNlCiAgICAgd2FybmluZyAoT1BUX1dtdWx0aXBsZV9pbmhlcml0YW5jZSwKIAkgICAgICIl cVQgZGVmaW5lZCB3aXRoIG11bHRpcGxlIGRpcmVjdCBiYXNlcyIsIHJlZik7CisgICAgfQogCiAg IGlmIChtYXhfdmJhc2VzKQogICAgIHsKQEAgLTE2MjM1LDcgKzE2MzMzLDkgQEAgeHJlZl9iYXNl dHlwZXMgKHRyZWUgcmVmLCB0cmVlIGJhc2VfbGlzdCkKIAogICAgICAgdmVjX2FsbG9jIChDTEFT U1RZUEVfVkJBU0VDTEFTU0VTIChyZWYpLCBtYXhfdmJhc2VzKTsKIAotICAgICAgaWYgKG1heF9k dmJhc2VzKQorICAgICAgaWYgKFRZUEVfRk9SX0pBVkEgKHJlZikpCisgICAgICAgZXJyb3IgKCJK YXZhIGNsYXNzICVxVCBjYW5ub3QgaGF2ZSB2aXJ0dWFsIGJhc2VzIiwgcmVmKTsKKyAgICAgIGVs c2UgaWYgKG1heF9kdmJhc2VzKQogCXdhcm5pbmcgKE9QVF9XdmlydHVhbF9pbmhlcml0YW5jZSwK IAkJICIlcVQgZGVmaW5lZCB3aXRoIGRpcmVjdCB2aXJ0dWFsIGJhc2UiLCByZWYpOwogICAgIH0K QEAgLTE2MjY3LDYgKzE2MzY3LDkgQEAgeHJlZl9iYXNldHlwZXMgKHRyZWUgcmVmLCB0cmVlIGJh c2VfbGlzdCkKIAkgIGdvdG8gZHJvcHBlZF9iYXNlOwogCX0KIAorICAgICAgaWYgKFRZUEVfRk9S X0pBVkEgKGJhc2V0eXBlKSAmJiAoY3VycmVudF9sYW5nX2RlcHRoICgpID09IDApKQorICAgICAg IFRZUEVfRk9SX0pBVkEgKHJlZikgPSAxOworCiAgICAgICBiYXNlX2JpbmZvID0gTlVMTF9UUkVF OwogICAgICAgaWYgKENMQVNTX1RZUEVfUCAoYmFzZXR5cGUpICYmICFkZXBlbmRlbnRfc2NvcGVf cCAoYmFzZXR5cGUpKQogCXsKQEAgLTE3MTI3LDExICsxNzIzMCwxNSBAQCBjaGVja19mdW5jdGlv bl90eXBlICh0cmVlIGRlY2wsIHRyZWUgY3VycmVudF9mdW5jdGlvbl9wYXJtcykKICAgaWYgKGRl cGVuZGVudF90eXBlX3AgKHJldHVybl90eXBlKQogICAgICAgfHwgdHlwZV91c2VzX2F1dG8gKHJl dHVybl90eXBlKSkKICAgICByZXR1cm47Ci0gIGlmICghQ09NUExFVEVfT1JfVk9JRF9UWVBFX1Ag KHJldHVybl90eXBlKSkKKyAgaWYgKCFDT01QTEVURV9PUl9WT0lEX1RZUEVfUCAocmV0dXJuX3R5 cGUpCisgICAgICB8fCAoVFlQRV9GT1JfSkFWQSAocmV0dXJuX3R5cGUpICYmIE1BWUJFX0NMQVNT X1RZUEVfUCAocmV0dXJuX3R5cGUpKSkKICAgICB7CiAgICAgICB0cmVlIGFyZ3MgPSBUWVBFX0FS R19UWVBFUyAoZm50eXBlKTsKIAotICAgICAgZXJyb3IgKCJyZXR1cm4gdHlwZSAlcSNUIGlzIGlu Y29tcGxldGUiLCByZXR1cm5fdHlwZSk7CisgICAgICBpZiAoIUNPTVBMRVRFX09SX1ZPSURfVFlQ RV9QIChyZXR1cm5fdHlwZSkpCisJZXJyb3IgKCJyZXR1cm4gdHlwZSAlcSNUIGlzIGluY29tcGxl dGUiLCByZXR1cm5fdHlwZSk7CisgICAgICBlbHNlCisJZXJyb3IgKCJyZXR1cm4gdHlwZSBoYXMg SmF2YSBjbGFzcyB0eXBlICVxI1QiLCByZXR1cm5fdHlwZSk7CiAKICAgICAgIC8qIE1ha2UgaXQg cmV0dXJuIHZvaWQgaW5zdGVhZC4gICovCiAgICAgICBpZiAoVFJFRV9DT0RFIChmbnR5cGUpID09 IE1FVEhPRF9UWVBFKQpAQCAtMTc3NDcsNyArMTc4NTQsOCBAQCBzdG9yZV9wYXJtX2RlY2xzICh0 cmVlIGN1cnJlbnRfZnVuY3Rpb25fcGFybXMpCiB2b2lkCiBtYXliZV9yZXR1cm5fdGhpcyAodm9p ZCkKIHsKLSAgaWYgKHRhcmdldG0uY3h4LmNkdG9yX3JldHVybnNfdGhpcyAoKSkKKyAgaWYgKHRh cmdldG0uY3h4LmNkdG9yX3JldHVybnNfdGhpcyAoKQorICAgICYmICghIFRZUEVfRk9SX0pBVkEg KGN1cnJlbnRfY2xhc3NfdHlwZSkpKQogICAgIHsKICAgICAgIC8qIFJldHVybiB0aGUgYWRkcmVz cyBvZiB0aGUgb2JqZWN0LiAgKi8KICAgICAgIHRyZWUgdmFsID0gREVDTF9BUkdVTUVOVFMgKGN1 cnJlbnRfZnVuY3Rpb25fZGVjbCk7CmRpZmYgLS1naXQgYS9nY2MvY3AvZGVjbDIuY2MgYi9nY2Mv Y3AvZGVjbDIuY2MKaW5kZXggZjk1NTI5YTVjOWEuLmMzYTAwYTU5ZTUxIDEwMDY0NAotLS0gYS9n Y2MvY3AvZGVjbDIuY2MKKysrIGIvZ2NjL2NwL2RlY2wyLmNjCkBAIC01Niw2ICs1Niw3IEBAIGlu dCByYXdfZHVtcF9pZDsKICAKIGV4dGVybiBjcHBfcmVhZGVyICpwYXJzZV9pbjsKIAorc3RhdGlj IGJvb2wgYWNjZXB0YWJsZV9qYXZhX3R5cGUgKHRyZWUpOwogc3RhdGljIHRyZWUgc3RhcnRfb2Jq ZWN0cyAoYm9vbCwgdW5zaWduZWQsIGJvb2wpOwogc3RhdGljIHRyZWUgZmluaXNoX29iamVjdHMg KGJvb2wsIHVuc2lnbmVkLCB0cmVlLCBib29sID0gdHJ1ZSk7CiBzdGF0aWMgdHJlZSBzdGFydF9w YXJ0aWFsX2luaXRfZmluaV9mbiAoYm9vbCwgdW5zaWduZWQsIHVuc2lnbmVkKTsKQEAgLTcwNSw2 ICs3MDYsODAgQEAgY2hlY2tfbWVtYmVyX3RlbXBsYXRlICh0cmVlIHRtcGwpCiAgICAgZXJyb3Ig KCJ0ZW1wbGF0ZSBkZWNsYXJhdGlvbiBvZiAlcSNEIiwgZGVjbCk7CiB9CiAKKy8qIFJldHVybiB0 cnVlIGlmZiBUWVBFIGlzIGEgdmFsaWQgSmF2YSBwYXJhbWV0ZXIgb3IgcmV0dXJuIHR5cGUuICAq LworCitzdGF0aWMgYm9vbAorYWNjZXB0YWJsZV9qYXZhX3R5cGUgKHRyZWUgdHlwZSkKK3sKKyAg aWYgKHR5cGUgPT0gZXJyb3JfbWFya19ub2RlKQorICAgIHJldHVybiBmYWxzZTsKKworICBpZiAo Vk9JRF9UWVBFX1AgKHR5cGUpIHx8IFRZUEVfRk9SX0pBVkEgKHR5cGUpKQorICAgIHJldHVybiB0 cnVlOworICBpZiAoVFlQRV9QVFJfUCAodHlwZSkgfHwgVFJFRV9DT0RFICh0eXBlKSA9PSBSRUZF UkVOQ0VfVFlQRSkKKyAgICB7CisgICAgICB0eXBlID0gVFJFRV9UWVBFICh0eXBlKTsKKyAgICAg IGlmIChUUkVFX0NPREUgKHR5cGUpID09IFJFQ09SRF9UWVBFKQorICAgICAgIHsKKwkgdHJlZSBh cmdzOyAgaW50IGk7CisJIGlmICghIFRZUEVfRk9SX0pBVkEgKHR5cGUpKQorCSAgIHJldHVybiBm YWxzZTsKKwkgaWYgKCEgQ0xBU1NUWVBFX1RFTVBMQVRFX0lORk8gKHR5cGUpKQorCSAgIHJldHVy biB0cnVlOworCSBhcmdzID0gQ0xBU1NUWVBFX1RJX0FSR1MgKHR5cGUpOworCSBpID0gVFJFRV9W RUNfTEVOR1RIIChhcmdzKTsKKwkgd2hpbGUgKC0taSA+PSAwKQorCSAgIHsKKwkgICAgIHR5cGUg PSBUUkVFX1ZFQ19FTFQgKGFyZ3MsIGkpOworCSAgICAgaWYgKFRZUEVfUFRSX1AgKHR5cGUpKQor CSAgICAgICB0eXBlID0gVFJFRV9UWVBFICh0eXBlKTsKKwkgICAgIGlmICghIFRZUEVfRk9SX0pB VkEgKHR5cGUpKQorCSAgICAgICByZXR1cm4gZmFsc2U7CisJICAgfQorCSByZXR1cm4gdHJ1ZTsK KyAgICAgICB9CisgICAgfQorICByZXR1cm4gZmFsc2U7Cit9CisKKy8qIEZvciBhIE1FVEhPRCBp biBhIEphdmEgY2xhc3MgQ1RZUEUsIHJldHVybiB0cnVlIGlmCisgICB0aGUgcGFyYW1ldGVyIGFu ZCByZXR1cm4gdHlwZXMgYXJlIHZhbGlkIEphdmEgdHlwZXMuCisgICBPdGhlcndpc2UsIHByaW50 IGFwcHJvcHJpYXRlIGVycm9yIG1lc3NhZ2VzLCBhbmQgcmV0dXJuIGZhbHNlLiAgKi8KKworYm9v bAorY2hlY2tfamF2YV9tZXRob2QgKHRyZWUgbWV0aG9kKQoreworICBib29sIGplcnIgPSBmYWxz ZTsKKyAgdHJlZSBhcmdfdHlwZXMgPSBUWVBFX0FSR19UWVBFUyAoVFJFRV9UWVBFIChtZXRob2Qp KTsKKyAgdHJlZSByZXRfdHlwZSA9IFRSRUVfVFlQRSAoVFJFRV9UWVBFIChtZXRob2QpKTsKKwor ICBpZiAoIWFjY2VwdGFibGVfamF2YV90eXBlIChyZXRfdHlwZSkpCisgICAgeworICAgICAgZXJy b3IgKCJKYXZhIG1ldGhvZCAlcUQgaGFzIG5vbi1KYXZhIHJldHVybiB0eXBlICVxVCIsCisJICAg IG1ldGhvZCwgcmV0X3R5cGUpOworICAgICAgamVyciA9IHRydWU7CisgICAgfQorCisgIGFyZ190 eXBlcyA9IFRSRUVfQ0hBSU4gKGFyZ190eXBlcyk7CisgIGlmIChERUNMX0hBU19JTl9DSEFSR0Vf UEFSTV9QIChtZXRob2QpKQorICAgIGFyZ190eXBlcyA9IFRSRUVfQ0hBSU4gKGFyZ190eXBlcyk7 CisgIGlmIChERUNMX0hBU19WVFRfUEFSTV9QIChtZXRob2QpKQorICAgIGFyZ190eXBlcyA9IFRS RUVfQ0hBSU4gKGFyZ190eXBlcyk7CisKKyAgZm9yICg7IGFyZ190eXBlcyAhPSBOVUxMX1RSRUU7 IGFyZ190eXBlcyA9IFRSRUVfQ0hBSU4gKGFyZ190eXBlcykpCisgICAgeworICAgICAgdHJlZSB0 eXBlID0gVFJFRV9WQUxVRSAoYXJnX3R5cGVzKTsKKyAgICAgIGlmICghYWNjZXB0YWJsZV9qYXZh X3R5cGUgKHR5cGUpKQorICAgICAgIHsKKwkgIGlmICh0eXBlICE9IGVycm9yX21hcmtfbm9kZSkK KwkgICBlcnJvciAoIkphdmEgbWV0aG9kICVxRCBoYXMgbm9uLUphdmEgcGFyYW1ldGVyIHR5cGUg JXFUIiwKKwkJICBtZXRob2QsIHR5cGUpOworCSBqZXJyID0gdHJ1ZTsKKyAgICAgICB9CisgICAg fQorICByZXR1cm4gIWplcnI7Cit9CisKIC8qIFNhbml0eSBjaGVjazogcmVwb3J0IGVycm9yIGlm IHRoaXMgZnVuY3Rpb24gRlVOQ1RJT04gaXMgbm90CiAgICByZWFsbHkgYSBtZW1iZXIgb2YgdGhl IGNsYXNzIChDVFlQRSkgaXQgaXMgc3VwcG9zZWQgdG8gYmVsb25nIHRvLgogICAgVEVNUExBVEVf UEFSTVMgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIG9mIGEgbWVt YmVyCkBAIC0zMjQ4LDggKzMzMjMsMTAgQEAgaW1wb3J0X2V4cG9ydF9kZWNsICh0cmVlIGRlY2wp CiAgICAgewogICAgICAgY2xhc3NfdHlwZSA9IERFQ0xfQ09OVEVYVCAoZGVjbCk7CiAgICAgICBp bXBvcnRfZXhwb3J0X2NsYXNzIChjbGFzc190eXBlKTsKLSAgICAgIGlmIChDTEFTU1RZUEVfSU5U RVJGQUNFX0tOT1dOIChjbGFzc190eXBlKQotCSAgJiYgQ0xBU1NUWVBFX0lOVEVSRkFDRV9PTkxZ IChjbGFzc190eXBlKSkKKyAgICAgIGlmIChUWVBFX0ZPUl9KQVZBIChjbGFzc190eXBlKSkKKyAg ICAgICAgaW1wb3J0X3AgPSB0cnVlOworICAgICAgZWxzZSBpZiAoQ0xBU1NUWVBFX0lOVEVSRkFD RV9LTk9XTiAoY2xhc3NfdHlwZSkKKwkJJiYgQ0xBU1NUWVBFX0lOVEVSRkFDRV9PTkxZIChjbGFz c190eXBlKSkKIAlpbXBvcnRfcCA9IHRydWU7CiAgICAgICBlbHNlIGlmICgoIWZsYWdfd2VhayB8 fCBUQVJHRVRfV0VBS19OT1RfSU5fQVJDSElWRV9UT0MpCiAJICAgICAgICYmICFDTEFTU1RZUEVf VVNFX1RFTVBMQVRFIChjbGFzc190eXBlKQpAQCAtNDM1Miw2ICs0NDI5LDQyIEBAIGdlbmVyYXRl X2N0b3Jfb3JfZHRvcl9mdW5jdGlvbiAoYm9vbCBpbml0cCwgdW5zaWduZWQgcHJpb3JpdHksCiAg IGV4cGFuZF9vcl9kZWZlcl9mbiAoZmluaXNoX29iamVjdHMgKGluaXRwLCBwcmlvcml0eSwgYm9k eSwgZm5zICE9IE5VTExfVFJFRSkpOwogfQogCisvKiBKYXZhIHJlcXVpcmVzIHRoYXQgd2UgYmUg YWJsZSB0byByZWZlcmVuY2UgYSBsb2NhbCBhZGRyZXNzIGZvciBhCisgICBtZXRob2QsIGFuZCBu b3QgYmUgY29uZnVzZWQgYnkgUExUIGVudHJpZXMuICBJZiBzdXBwb3J0ZWQsIGNyZWF0ZSBhCisg ICBoaWRkZW4gYWxpYXMgZm9yIGFsbCBzdWNoIG1ldGhvZHMuICAqLworCitzdGF0aWMgdm9pZAor YnVpbGRfamF2YV9tZXRob2RfYWxpYXNlcyAodm9pZCkKK3sKKyNpZm5kZWYgSEFWRV9HQVNfSElE REVOCisgIHJldHVybjsKKyNlbmRpZgorCisgIHN0cnVjdCBjZ3JhcGhfbm9kZSAqbm9kZTsKKyAg Rk9SX0VBQ0hfRlVOQ1RJT04gKG5vZGUpCisgICAgeworICAgICAgdHJlZSBmbmRlY2wgPSBub2Rl LT5kZWNsOworCisgICAgICBpZiAoREVDTF9DTEFTU19TQ09QRV9QIChmbmRlY2wpCisJICYmIFRZ UEVfRk9SX0pBVkEgKERFQ0xfQ09OVEVYVCAoZm5kZWNsKSkKKwkgJiYgVEFSR0VUX1VTRV9MT0NB TF9USFVOS19BTElBU19QIChmbmRlY2wpKQorICAgICAgIHsKKwkgLyogTWFuZ2xlIHRoZSBuYW1l IGluIGEgcHJlZGljdGFibGUgd2F5OyB3ZSBuZWVkIHRvIHJlZmVyZW5jZQorCSAgICB0aGlzIGZy b20gYSBqYXZhIGNvbXBpbGVkIG9iamVjdCBmaWxlLiAgKi8KKwkgdHJlZSBvaWQgPSBERUNMX0FT U0VNQkxFUl9OQU1FIChmbmRlY2wpOworCSBjb25zdCBjaGFyICpvbmFtZSA9IElERU5USUZJRVJf UE9JTlRFUiAob2lkKTsKKwkgZ2NjX2Fzc2VydCAob25hbWVbMF0gPT0gJ18nICYmIG9uYW1lWzFd ID09ICdaJyk7CisJIGNoYXIgKm5uYW1lID0gQUNPTkNBVCAoKCJfWkdBIiwgb25hbWUgKyAyLCBO VUxMKSk7CisKKwkgdHJlZSBhbGlhcyA9IG1ha2VfYWxpYXNfZm9yIChmbmRlY2wsIGdldF9pZGVu dGlmaWVyIChubmFtZSkpOworCSBUUkVFX1BVQkxJQyAoYWxpYXMpID0gMTsKKwkgREVDTF9WSVNJ QklMSVRZIChhbGlhcykgPSBWSVNJQklMSVRZX0hJRERFTjsKKworCSBjZ3JhcGhfbm9kZTo6Y3Jl YXRlX3NhbWVfYm9keV9hbGlhcyAoYWxpYXMsIGZuZGVjbCk7CisgICAgICAgfQorICAgIH0KK30K KwogLyogUmV0dXJuIEMrKyBwcm9wZXJ0eSBvZiBULCBiYXNlZCBvbiBnaXZlbiBvcGVyYXRpb24g T1AuICAqLwogCiBzdGF0aWMgaW50CkBAIC01MjQyLDYgKzUzNTUsOSBAQCBjX3BhcnNlX2ZpbmFs X2NsZWFudXBzICh2b2lkKQogICAvKiBHZW5lcmF0ZSBhbnkgbWlzc2luZyBhbGlhc2VzLiAgKi8K ICAgbWF5YmVfYXBwbHlfcGVuZGluZ19wcmFnbWFfd2Vha3MgKCk7CiAKKyAgLyogR2VuZXJhdGUg SmF2YSBoaWRkZW4gYWxpYXNlcy4gICovCisgIGJ1aWxkX2phdmFfbWV0aG9kX2FsaWFzZXMgKCk7 CisKICAgaWYgKGZsYWdfdnRhYmxlX3ZlcmlmeSkKICAgICB7CiAgICAgICB2dHZfcmVjb3Zlcl9j bGFzc19pbmZvICgpOwpAQCAtNTQyMCw3ICs1NTM2LDcgQEAgcG9zc2libHlfaW5saW5lZF9wICh0 cmVlIGRlY2wpCiAgIGdjY19hc3NlcnQgKFRSRUVfQ09ERSAoZGVjbCkgPT0gRlVOQ1RJT05fREVD TCk7CiAgIGlmIChERUNMX1VOSU5MSU5BQkxFIChkZWNsKSkKICAgICByZXR1cm4gZmFsc2U7Ci0g IGlmICghb3B0aW1pemUpCisgIGlmICghb3B0aW1pemUgfHwgcHJhZ21hX2phdmFfZXhjZXB0aW9u cykKICAgICByZXR1cm4gREVDTF9ERUNMQVJFRF9JTkxJTkVfUCAoZGVjbCk7CiAgIC8qIFdoZW4g b3B0aW1pemluZywgd2UgbWlnaHQgaW5saW5lIGV2ZXJ5dGhpbmcgd2hlbiBmbGF0dGVuCiAgICAg IGF0dHJpYnV0ZSBvciBoZXVyaXN0aWNzIGlubGluaW5nIGZvciBzaXplIG9yIGF1dG9pbmxpbmlu ZwpkaWZmIC0tZ2l0IGEvZ2NjL2NwL2Vycm9yLmNjIGIvZ2NjL2NwL2Vycm9yLmNjCmluZGV4IDEy YjI4ZThlZTViLi5lZmMwN2YxZWQ5MCAxMDA2NDQKLS0tIGEvZ2NjL2NwL2Vycm9yLmNjCisrKyBi L2djYy9jcC9lcnJvci5jYwpAQCAtMzMzOSw2ICszMzM5LDkgQEAgbGFuZ3VhZ2VfdG9fc3RyaW5n IChlbnVtIGxhbmd1YWdlcyBjKQogICAgIGNhc2UgbGFuZ19jcGx1c3BsdXM6CiAgICAgICByZXR1 cm4gIkMrKyI7CiAKKyAgICBjYXNlIGxhbmdfamF2YToKKyAgICAgIHJldHVybiAiSmF2YSI7CisK ICAgICBkZWZhdWx0OgogICAgICAgZ2NjX3VucmVhY2hhYmxlICgpOwogICAgIH0KZGlmZiAtLWdp dCBhL2djYy9jcC9leGNlcHQuY2MgYi9nY2MvY3AvZXhjZXB0LmNjCmluZGV4IDI2NzdhOWI3Njc4 Li5jYjA3ZDZkMTc4MyAxMDA2NDQKLS0tIGEvZ2NjL2NwL2V4Y2VwdC5jYworKysgYi9nY2MvY3Av ZXhjZXB0LmNjCkBAIC0zNiw2ICszNiw3IEBAIHN0YXRpYyB0cmVlIHByZXBhcmVfZWhfdHlwZSAo dHJlZSk7CiBzdGF0aWMgdHJlZSBkb19iZWdpbl9jYXRjaCAodm9pZCk7CiBzdGF0aWMgaW50IGR0 b3Jfbm90aHJvdyAodHJlZSk7CiBzdGF0aWMgdHJlZSBkb19lbmRfY2F0Y2ggKHRyZWUpOworc3Rh dGljIGJvb2wgZGVjbF9pc19qYXZhX3R5cGUgKHRyZWUgZGVjbCwgaW50IGVycik7CiBzdGF0aWMg dm9pZCBpbml0aWFsaXplX2hhbmRsZXJfcGFybSAodHJlZSwgdHJlZSk7CiBzdGF0aWMgdHJlZSBk b19hbGxvY2F0ZV9leGNlcHRpb24gKHRyZWUpOwogc3RhdGljIHRyZWUgd3JhcF9jbGVhbnVwc19y ICh0cmVlICosIGludCAqLCB2b2lkICopOwpAQCAtMTAzLDEwICsxMDQsMTcgQEAgcHJlcGFyZV9l aF90eXBlICh0cmVlIHR5cGUpCiB0cmVlCiBlaF90eXBlX2luZm8gKHRyZWUgdHlwZSkKIHsKKyAg dHJlZSBleHA7CisKICAgaWYgKHR5cGUgPT0gTlVMTF9UUkVFIHx8IHR5cGUgPT0gZXJyb3JfbWFy a19ub2RlKQogICAgIHJldHVybiB0eXBlOwogCi0gIHJldHVybiBnZXRfdGluZm9fZGVjbCAodHlw ZSk7CisgIGlmIChkZWNsX2lzX2phdmFfdHlwZSAodHlwZSwgMCkpCisgICAgZXhwID0gYnVpbGRf amF2YV9jbGFzc19yZWYgKFRSRUVfVFlQRSAodHlwZSkpOworICBlbHNlCisgICAgZXhwID0gZ2V0 X3RpbmZvX2RlY2wgKHR5cGUpOworCisgIHJldHVybiBleHA7CiB9CiAKIC8qIEJ1aWxkIHRoZSBh ZGRyZXNzIG9mIGEgdHlwZWluZm8gZGVjbCBmb3IgdXNlIGluIHRoZSBydW50aW1lCkBAIC0yNzAs NiArMjc4LDEwNyBAQCBwdXNoX2VoX2NsZWFudXAgKHRyZWUgdHlwZSkKICAgZmluaXNoX2RlY2xf Y2xlYW51cCAoTlVMTF9UUkVFLCBkb19lbmRfY2F0Y2ggKHR5cGUpKTsKIH0KIAorLyogUmV0dXJu IG5vbnplcm8gdmFsdWUgaWYgREVDTCBpcyBhIEphdmEgdHlwZSBzdWl0YWJsZSBmb3IgY2F0Y2gg b3IKKyAgIHRocm93LiAgKi8KKworc3RhdGljIGJvb2wKK2RlY2xfaXNfamF2YV90eXBlICh0cmVl IGRlY2wsIGludCBlcnIpCit7CisgIGJvb2wgciA9IChUWVBFX1BUUl9QIChkZWNsKQorCSAgICAm JiBUUkVFX0NPREUgKFRSRUVfVFlQRSAoZGVjbCkpID09IFJFQ09SRF9UWVBFCisJICAgICYmIFRZ UEVfRk9SX0pBVkEgKFRSRUVfVFlQRSAoZGVjbCkpKTsKKworICBpZiAoZXJyKQorICAgIHsKKyAg ICAgIGlmIChUUkVFX0NPREUgKGRlY2wpID09IFJFRkVSRU5DRV9UWVBFCisJICAmJiBUUkVFX0NP REUgKFRSRUVfVFlQRSAoZGVjbCkpID09IFJFQ09SRF9UWVBFCisJICAmJiBUWVBFX0ZPUl9KQVZB IChUUkVFX1RZUEUgKGRlY2wpKSkKKwl7CisJICAvKiBDYW4ndCB0aHJvdyBhIHJlZmVyZW5jZS4g ICovCisJICBlcnJvciAoInR5cGUgJXFUIGlzIGRpc2FsbG93ZWQgaW4gSmF2YSAlPHRocm93JT4g b3IgJTxjYXRjaCU+IiwKKwkJIGRlY2wpOworCX0KKworICAgICAgaWYgKHIpCisJeworCSAgdHJl ZSBqdGhyb3dfbm9kZQorCSAgICA9IGdldF9nbG9iYWxfYmluZGluZyAoZ2V0X2lkZW50aWZpZXIg KCJqdGhyb3dhYmxlIikpOworCisJICBpZiAoanRocm93X25vZGUgPT0gTlVMTF9UUkVFKQorCSAg ICBmYXRhbF9lcnJvcgorCSAgICAgIChpbnB1dF9sb2NhdGlvbiwKKwkgICAgICAgImNhbGwgdG8g SmF2YSAlPGNhdGNoJT4gb3IgJTx0aHJvdyU+IHdpdGggJTxqdGhyb3dhYmxlJT4gdW5kZWZpbmVk Iik7CisKKwkgIGp0aHJvd19ub2RlID0gVFJFRV9UWVBFIChUUkVFX1RZUEUgKGp0aHJvd19ub2Rl KSk7CisKKwkgIGlmICghIERFUklWRURfRlJPTV9QIChqdGhyb3dfbm9kZSwgVFJFRV9UWVBFIChk ZWNsKSkpCisJICAgIHsKKwkgICAgICAvKiBUaHJvd24gb2JqZWN0IG11c3QgYmUgYSBUaHJvd2Fi bGUuICAqLworCSAgICAgIGVycm9yICgidHlwZSAlcVQgaXMgbm90IGRlcml2ZWQgZnJvbSAlPGph dmE6Omxhbmc6OlRocm93YWJsZSU+IiwKKwkJICAgICBUUkVFX1RZUEUgKGRlY2wpKTsKKwkgICAg fQorCX0KKyAgICB9CisKKyAgcmV0dXJuIHI7Cit9CisKKy8qIFNlbGVjdCB0aGUgcGVyc29uYWxp dHkgcm91dGluZSB0byBiZSB1c2VkIGZvciBleGNlcHRpb24gaGFuZGxpbmcsCisgICBvciBpc3N1 ZSBhbiBlcnJvciBpZiB3ZSBuZWVkIHR3byBkaWZmZXJlbnQgb25lcyBpbiB0aGUgc2FtZQorICAg dHJhbnNsYXRpb24gdW5pdC4KKyAgID8/PyBBdCBwcmVzZW50IERFQ0xfRlVOQ1RJT05fUEVSU09O QUxJVFkgaXMgc2V0IHZpYQorICAgTEFOR19IT09LU19FSF9QRVJTT05BTElUWS4gIFNob3VsZCBp dCBiZSBkb25lIGhlcmUgaW5zdGVhZD8gICovCit2b2lkCitjaG9vc2VfcGVyc29uYWxpdHlfcm91 dGluZSAoZW51bSBsYW5ndWFnZXMgbGFuZykKK3sKKyAgc3RhdGljIGVudW0geworICAgIGNob3Nl X25vbmUsCisgICAgY2hvc2VfY3BwLAorICAgIGNob3NlX2phdmEsCisgICAgZ2F2ZV9lcnJvcgor ICB9IHN0YXRlOworCisgIHN3aXRjaCAoc3RhdGUpCisgICAgeworICAgIGNhc2UgZ2F2ZV9lcnJv cjoKKyAgICAgIHJldHVybjsKKworICAgIGNhc2UgY2hvc2VfY3BwOgorICAgICAgaWYgKGxhbmcg IT0gbGFuZ19jcGx1c3BsdXMpCisJZ290byBnaXZlX2Vycm9yOworICAgICAgcmV0dXJuOworCisg ICAgY2FzZSBjaG9zZV9qYXZhOgorICAgICAgaWYgKGxhbmcgIT0gbGFuZ19qYXZhKQorCWdvdG8g Z2l2ZV9lcnJvcjsKKyAgICAgIHJldHVybjsKKworICAgIGNhc2UgY2hvc2Vfbm9uZToKKyAgICAg IDsgLyogUHJvY2VlZCB0byBsYW5ndWFnZSBzZWxlY3Rpb24uICAqLworICAgIH0KKworICBzd2l0 Y2ggKGxhbmcpCisgICAgeworICAgIGNhc2UgbGFuZ19jcGx1c3BsdXM6CisgICAgICBzdGF0ZSA9 IGNob3NlX2NwcDsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBsYW5nX2phdmE6CisgICAgICBz dGF0ZSA9IGNob3NlX2phdmE7CisgICAgICB0ZXJtaW5hdGVfZm4gPSBidWlsdGluX2RlY2xfZXhw bGljaXQgKEJVSUxUX0lOX0FCT1JUKTsKKyAgICAgIHByYWdtYV9qYXZhX2V4Y2VwdGlvbnMgPSB0 cnVlOworICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgZ2NjX3VucmVhY2hhYmxl ICgpOworICAgIH0KKyAgcmV0dXJuOworCisgZ2l2ZV9lcnJvcjoKKyAgZXJyb3IgKCJtaXhpbmcg QysrIGFuZCBKYXZhIGNhdGNoZXMgaW4gYSBzaW5nbGUgdHJhbnNsYXRpb24gdW5pdCIpOworICBz dGF0ZSA9IGdhdmVfZXJyb3I7Cit9CisKIC8qIFdyYXAgRVhQUiBpbiBhIE1VU1RfTk9UX1RIUk9X X0VYUFIgZXhwcmVzc2luZyB0aGF0IEVYUFIgbXVzdAogICAgbm90IHRocm93IGFueSBleGNlcHRp b25zIGlmIENPTkQgaXMgdHJ1ZS4gIEEgY29uZGl0aW9uIG9mCiAgICBOVUxMX1RSRUUgaXMgdHJl YXRlZCBhcyAndHJ1ZScuICAqLwpAQCAtMzI1LDYgKzQzNCw5IEBAIGluaXRpYWxpemVfaGFuZGxl cl9wYXJtICh0cmVlIGRlY2wsIHRyZWUgZXhwKQogICBpZiAoIUlORElSRUNUX1RZUEVfUCAoaW5p dF90eXBlKSkKICAgICBpbml0X3R5cGUgPSBidWlsZF9yZWZlcmVuY2VfdHlwZSAoaW5pdF90eXBl KTsKIAorICBjaG9vc2VfcGVyc29uYWxpdHlfcm91dGluZSAoZGVjbF9pc19qYXZhX3R5cGUgKGlu aXRfdHlwZSwgMCkKKwkJCSAgICAgPyBsYW5nX2phdmEgOiBsYW5nX2NwbHVzcGx1cyk7CisKICAg LyogU2luY2UgcG9pbnRlcnMgYXJlIHBhc3NlZCBieSB2YWx1ZSwgaW5pdGlhbGl6ZSBhIHJlZmVy ZW5jZSB0bwogICAgICBwb2ludGVyIGNhdGNoIHBhcm0gd2l0aCB0aGUgYWRkcmVzcyBvZiB0aGUg dGVtcG9yYXJ5LiAgKi8KICAgaWYgKFRZUEVfUkVGX1AgKGluaXRfdHlwZSkKQEAgLTQwNCw2ICs1 MTYsMjIgQEAgZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrICh0cmVlIGRlY2wpCiAgIGVsc2UKICAg ICB0eXBlID0gTlVMTF9UUkVFOwogCisgIGlmIChkZWNsICYmIGRlY2xfaXNfamF2YV90eXBlICh0 eXBlLCAxKSkKKyAgICB7CisgICAgICAvKiBKYXZhIG9ubHkgcGFzc2VzIG9iamVjdCB2aWEgcG9p bnRlciBhbmQgZG9lc24ndCByZXF1aXJlCisJYWRqdXN0aW5nLiAgVGhlIGphdmEgb2JqZWN0IGlz IGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUKKwlnZW5lcmljIGV4Y2VwdGlvbiBoZWFkZXIuICAqLwor ICAgICAgZXhwID0gYnVpbGRfZXhjX3B0ciAoKTsKKyAgICAgIGV4cCA9IGJ1aWxkMSAoTk9QX0VY UFIsIGJ1aWxkX3BvaW50ZXJfdHlwZSAodHlwZSksIGV4cCk7CisgICAgICBleHAgPSBmb2xkX2J1 aWxkX3BvaW50ZXJfcGx1cyAoZXhwLAorCQkgICBmb2xkX2J1aWxkMV9sb2MgKGlucHV0X2xvY2F0 aW9uLAorCQkJCSAgICBORUdBVEVfRVhQUiwgc2l6ZXR5cGUsCisJCQkJICAgIFRZUEVfU0laRV9V TklUIChUUkVFX1RZUEUgKGV4cCkpKSk7CisgICAgICBleHAgPSBjcF9idWlsZF9mb2xkX2luZGly ZWN0X3JlZiAoZXhwKTsKKyAgICAgIGluaXRpYWxpemVfaGFuZGxlcl9wYXJtIChkZWNsLCBleHAp OworICAgICAgcmV0dXJuIHR5cGU7CisgICAgfQorCiAgIC8qIENhbGwgX19jeGFfZW5kX2NhdGNo IGF0IHRoZSBlbmQgb2YgcHJvY2Vzc2luZyB0aGUgZXhjZXB0aW9uLiAgKi8KICAgcHVzaF9laF9j bGVhbnVwICh0eXBlKTsKIApAQCAtNjMxLDcgKzc1OSwyNyBAQCBidWlsZF90aHJvdyAobG9jYXRp b25fdCBsb2MsIHRyZWUgZXhwKQogICBpZiAoISBkb2luZ19laCAoKSkKICAgICByZXR1cm4gZXJy b3JfbWFya19ub2RlOwogCi0gIGlmIChleHApCisgIGlmIChleHAgJiYgZGVjbF9pc19qYXZhX3R5 cGUgKFRSRUVfVFlQRSAoZXhwKSwgMSkpCisgICAgeworICAgICAgdHJlZSBuYW1lID0gZ2V0X2lk ZW50aWZpZXIgKCJfSnZfVGhyb3ciKTsKKyAgICAgIHRyZWUgZm4gPSBnZXRfZ2xvYmFsX2JpbmRp bmcgKG5hbWUpOworICAgICAgaWYgKCFmbikKKyAgICAgICB7CisJIC8qIERlY2xhcmUgdm9pZCBf SnZfVGhyb3cgKHZvaWQgKikuICAqLworCSB0cmVlIHRtcDsKKwkgdG1wID0gYnVpbGRfZnVuY3Rp b25fdHlwZV9saXN0IChwdHJfdHlwZV9ub2RlLAorCQkJCQkgcHRyX3R5cGVfbm9kZSwgTlVMTF9U UkVFKTsKKwkgZm4gPSBwdXNoX3Rocm93X2xpYnJhcnlfZm4gKG5hbWUsIHRtcCk7CisgICAgICAg fQorICAgICAgZWxzZSBpZiAocmVhbGx5X292ZXJsb2FkZWRfZm4gKGZuKSkKKyAgICAgICB7CisJ IGVycm9yICgiJXFEIHNob3VsZCBuZXZlciBiZSBvdmVybG9hZGVkIiwgZm4pOworCSByZXR1cm4g ZXJyb3JfbWFya19ub2RlOworICAgICAgIH0KKyAgICAgIGV4cCA9IGNwX2J1aWxkX2Z1bmN0aW9u X2NhbGxfbmFyeSAoZm4sIHRmX3dhcm5pbmdfb3JfZXJyb3IsCisJCQkJCWV4cCwgTlVMTF9UUkVF KTsKKyAgICB9CisgIGVsc2UgaWYgKGV4cCkKICAgICB7CiAgICAgICB0cmVlIHRocm93X3R5cGU7 CiAgICAgICB0cmVlIHRlbXBfdHlwZTsKZGlmZiAtLWdpdCBhL2djYy9jcC9pbml0LmNjIGIvZ2Nj L2NwL2luaXQuY2MKaW5kZXggMmZmZjRhZDJkYzcuLjE4ODVmMjA1OGI3IDEwMDY0NAotLS0gYS9n Y2MvY3AvaW5pdC5jYworKysgYi9nY2MvY3AvaW5pdC5jYwpAQCAtMzAzNyw2ICszMDM3LDcgQEAg YnVpbGRfbmV3XzEgKHZlYzx0cmVlLCB2YV9nYz4gKipwbGFjZW1lbnQsIHRyZWUgdHlwZSwgdHJl ZSBuZWx0cywKICAgdHJlZSBhbGxvY19mbjsKICAgdHJlZSBjb29raWVfZXhwciwgaW5pdF9leHBy OwogICBpbnQgbm90aHJvdywgY2hlY2tfbmV3OworICBpbnQgdXNlX2phdmFfbmV3ID0gMDsKICAg LyogSWYgbm9uLU5VTEwsIHRoZSBudW1iZXIgb2YgZXh0cmEgYnl0ZXMgdG8gYWxsb2NhdGUgYXQg dGhlCiAgICAgIGJlZ2lubmluZyBvZiB0aGUgc3RvcmFnZSBhbGxvY2F0ZWQgZm9yIGFuIGFycmF5 LW5ldyBleHByZXNzaW9uIGluCiAgICAgIG9yZGVyIHRvIHN0b3JlIHRoZSBudW1iZXIgb2YgZWxl bWVudHMuICAqLwpAQCAtMzMwNyw3ICszMzA4LDYyIEBAIGJ1aWxkX25ld18xICh2ZWM8dHJlZSwg dmFfZ2M+ICoqcGxhY2VtZW50LCB0cmVlIHR5cGUsIHRyZWUgbmVsdHMsCiAKICAgYm9vbCBtZW1i ZXJfbmV3X3AgPSBmYWxzZTsKIAorICBib29sIG1lbWJlcl9kZWxldGVfcCA9ICghZ2xvYmFsbHlf cXVhbGlmaWVkX3AKKwkJCSAgJiYgQ0xBU1NfVFlQRV9QIChlbHRfdHlwZSkKKwkJCSAgJiYgKGFy cmF5X3AKKwkJCSAgICAgID8gVFlQRV9HRVRTX1ZFQ19ERUxFVEUgKGVsdF90eXBlKQorCQkJICAg ICAgOiBUWVBFX0dFVFNfUkVHX0RFTEVURSAoZWx0X3R5cGUpKSk7CisKICAgLyogQWxsb2NhdGUg dGhlIG9iamVjdC4gICovCisgIGlmICh2ZWNfc2FmZV9pc19lbXB0eSAoKnBsYWNlbWVudCkgJiYg VFlQRV9GT1JfSkFWQSAoZWx0X3R5cGUpKQorICAgIHsKKyAgICAgIHRyZWUgY2xhc3NfYWRkcjsK KyAgICAgIHRyZWUgY2xhc3NfZGVjbDsKKyAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGFsbG9jX25h bWVbXSA9ICJfSnZfQWxsb2NPYmplY3QiOworCisgICAgICBpZiAoIU1BWUJFX0NMQVNTX1RZUEVf UCAoZWx0X3R5cGUpKQorCXsKKwkgIGVycm9yICgiJXFUIGlzbiUndCBhIHZhbGlkIEphdmEgY2xh c3MgdHlwZSIsIGVsdF90eXBlKTsKKwkgIHJldHVybiBlcnJvcl9tYXJrX25vZGU7CisJfQorCisg ICAgICBjbGFzc19kZWNsID0gYnVpbGRfamF2YV9jbGFzc19yZWYgKGVsdF90eXBlKTsKKyAgICAg IGlmIChjbGFzc19kZWNsID09IGVycm9yX21hcmtfbm9kZSkKKwlyZXR1cm4gZXJyb3JfbWFya19u b2RlOworCisgICAgICB1c2VfamF2YV9uZXcgPSAxOworCisgICAgICBpZiAoIShhbGxvY19mbiA9 IGdldF9nbG9iYWxfYmluZGluZyAoZ2V0X2lkZW50aWZpZXIgKGFsbG9jX25hbWUpKSkpCisJewor CSAgaWYgKGNvbXBsYWluICYgdGZfZXJyb3IpCisJICAgIGVycm9yICgiY2FsbCB0byBKYXZhIGNv bnN0cnVjdG9yIHdpdGggJXFzIHVuZGVmaW5lZCIsIGFsbG9jX25hbWUpOworCSAgcmV0dXJuIGVy cm9yX21hcmtfbm9kZTsKKwl9CisgICAgICBlbHNlIGlmIChyZWFsbHlfb3ZlcmxvYWRlZF9mbiAo YWxsb2NfZm4pKQorCXsKKwkgIGlmIChjb21wbGFpbiAmIHRmX2Vycm9yKQorCSAgICBlcnJvciAo IiVxRCBzaG91bGQgbmV2ZXIgYmUgb3ZlcmxvYWRlZCIsIGFsbG9jX2ZuKTsKKwkgIHJldHVybiBl cnJvcl9tYXJrX25vZGU7CisJfQorICAgICAgaWYgKFRSRUVfQ09ERSAoYWxsb2NfZm4pICE9IEZV TkNUSU9OX0RFQ0wKKwkgIHx8IFRSRUVfQ09ERSAoVFJFRV9UWVBFIChhbGxvY19mbikpICE9IEZV TkNUSU9OX1RZUEUKKwkgIHx8ICFQT0lOVEVSX1RZUEVfUCAoVFJFRV9UWVBFIChUUkVFX1RZUEUg KGFsbG9jX2ZuKSkpKQorCXsKKwkgIGlmIChjb21wbGFpbiAmIHRmX2Vycm9yKQorCSAgICBlcnJv ciAoIiVxRCBpcyBub3QgYSBmdW5jdGlvbiByZXR1cm5pbmcgYSBwb2ludGVyIiwgYWxsb2NfZm4p OworCSAgcmV0dXJuIGVycm9yX21hcmtfbm9kZTsKKwl9CisgICAgICBjbGFzc19hZGRyID0gYnVp bGQxIChBRERSX0VYUFIsIGpjbGFzc19ub2RlLCBjbGFzc19kZWNsKTsKKyAgICAgIGFsbG9jX2Nh bGwgPSBjcF9idWlsZF9mdW5jdGlvbl9jYWxsX25hcnkgKGFsbG9jX2ZuLCBjb21wbGFpbiwKKwkJ CQkJCWNsYXNzX2FkZHIsIE5VTExfVFJFRSk7CisgICAgfQorICBlbHNlIGlmIChUWVBFX0ZPUl9K QVZBIChlbHRfdHlwZSkgJiYgTUFZQkVfQ0xBU1NfVFlQRV9QIChlbHRfdHlwZSkpCisgICAgewor ICAgICAgZXJyb3IgKCJKYXZhIGNsYXNzICVxI1Qgb2JqZWN0IGFsbG9jYXRlZCB1c2luZyBwbGFj ZW1lbnQgbmV3IiwgZWx0X3R5cGUpOworICAgICAgcmV0dXJuIGVycm9yX21hcmtfbm9kZTsKKyAg ICB9CisgIGVsc2UKKyAgICB7CiAgIHRyZWUgZm5uYW1lOwogICB0cmVlIGZuczsKIApAQCAtMzMx OSwxMiArMzM3NSw2IEBAIGJ1aWxkX25ld18xICh2ZWM8dHJlZSwgdmFfZ2M+ICoqcGxhY2VtZW50 LCB0cmVlIHR5cGUsIHRyZWUgbmVsdHMsCiAJCSAgICAgPyBUWVBFX0hBU19BUlJBWV9ORVdfT1BF UkFUT1IgKGVsdF90eXBlKQogCQkgICAgIDogVFlQRV9IQVNfTkVXX09QRVJBVE9SIChlbHRfdHlw ZSkpOwogCi0gIGJvb2wgbWVtYmVyX2RlbGV0ZV9wID0gKCFnbG9iYWxseV9xdWFsaWZpZWRfcAot CQkJICAmJiBDTEFTU19UWVBFX1AgKGVsdF90eXBlKQotCQkJICAmJiAoYXJyYXlfcAotCQkJICAg ICAgPyBUWVBFX0dFVFNfVkVDX0RFTEVURSAoZWx0X3R5cGUpCi0JCQkgICAgICA6IFRZUEVfR0VU U19SRUdfREVMRVRFIChlbHRfdHlwZSkpKTsKLQogICBpZiAobWVtYmVyX25ld19wKQogICAgIHsK ICAgICAgIC8qIFVzZSBhIGNsYXNzLXNwZWNpZmljIG9wZXJhdG9yIG5ldy4gICovCkBAIC0zNDA5 LDggKzM0NTksMTEgQEAgYnVpbGRfbmV3XzEgKHZlYzx0cmVlLCB2YV9nYz4gKipwbGFjZW1lbnQs IHRyZWUgdHlwZSwgdHJlZSBuZWx0cywKIAogICAgICAgYWxsb2NfY2FsbCA9IGJ1aWxkX29wZXJh dG9yX25ld19jYWxsIChmbm5hbWUsIHBsYWNlbWVudCwKIAkJCQkJICAgICZzaXplLCAmY29va2ll X3NpemUsCi0JCQkJCSAgICBhbGlnbl9hcmcsIG91dGVyX25lbHRzX2NoZWNrLAorCQkJCQkJYWxp Z25fYXJnLAorCQkJCQkJb3V0ZXJfbmVsdHNfY2hlY2ssCiAJCQkJCSAgICAmYWxsb2NfZm4sIGNv bXBsYWluKTsKKworCSAgICB9CiAgICAgfQogCiAgIGlmIChhbGxvY19jYWxsID09IGVycm9yX21h cmtfbm9kZSkKQEAgLTM1MjMsOCArMzU3Niw5IEBAIGJ1aWxkX25ld18xICh2ZWM8dHJlZSwgdmFf Z2M+ICoqcGxhY2VtZW50LCB0cmVlIHR5cGUsIHRyZWUgbmVsdHMsCiAgICAgIFNvIGNoZWNrIGZv ciBhIG51bGwgZXhjZXB0aW9uIHNwZWMgb24gdGhlIG9wIG5ldyB3ZSBqdXN0IGNhbGxlZC4gICov CiAKICAgbm90aHJvdyA9IFRZUEVfTk9USFJPV19QIChUUkVFX1RZUEUgKGFsbG9jX2ZuKSk7Ci0g IGNoZWNrX25ldwotICAgID0gZmxhZ19jaGVja19uZXcgfHwgKG5vdGhyb3cgJiYgIXN0ZF9wbGFj ZW1lbnRfbmV3X2ZuX3AgKGFsbG9jX2ZuKSk7CisgIGNoZWNrX25ldyA9IChmbGFnX2NoZWNrX25l dworCSAgICAgIHx8IChub3Rocm93ICYmICFzdGRfcGxhY2VtZW50X25ld19mbl9wIChhbGxvY19m bikpKQorCSAgICAgICYmICEgdXNlX2phdmFfbmV3OwogCiAgIGlmIChjb29raWVfc2l6ZSkKICAg ICB7CkBAIC0zNzI4LDcgKzM3ODIsNyBAQCBidWlsZF9uZXdfMSAodmVjPHRyZWUsIHZhX2djPiAq KnBsYWNlbWVudCwgdHJlZSB0eXBlLCB0cmVlIG5lbHRzLAogICAgICB1bmFtYmlndW91cyBtYXRj aGluZyBkZWFsbG9jYXRpb24gZnVuY3Rpb24gY2FuIGJlIGZvdW5kLAogICAgICBwcm9wYWdhdGlu ZyB0aGUgZXhjZXB0aW9uIGRvZXMgbm90IGNhdXNlIHRoZSBvYmplY3QncyBtZW1vcnkgdG8gYmUK ICAgICAgZnJlZWQuICAqLwotICBpZiAoZmxhZ19leGNlcHRpb25zICYmIChpbml0X2V4cHIgfHwg bWVtYmVyX2RlbGV0ZV9wKSkKKyAgaWYgKGZsYWdfZXhjZXB0aW9ucyAmJiAoaW5pdF9leHByIHx8 IG1lbWJlcl9kZWxldGVfcCkgJiYgISB1c2VfamF2YV9uZXcpCiAgICAgewogICAgICAgZW51bSB0 cmVlX2NvZGUgZGNvZGUgPSBhcnJheV9wID8gVkVDX0RFTEVURV9FWFBSIDogREVMRVRFX0VYUFI7 CiAgICAgICB0cmVlIGNsZWFudXA7CkBAIC00MDI4LDYgKzQwODIsNjAgQEAgYnVpbGRfbmV3IChs b2NhdGlvbl90IGxvYywgdmVjPHRyZWUsIHZhX2djPiAqKnBsYWNlbWVudCwgdHJlZSB0eXBlLAog CiAgIHJldHVybiBydmFsOwogfQorCisvKiBHaXZlbiBhIEphdmEgY2xhc3MsIHJldHVybiBhIGRl Y2wgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGphdmEubGFuZy5DbGFzcy4gICovCisKK3RyZWUKK2J1 aWxkX2phdmFfY2xhc3NfcmVmICh0cmVlIHR5cGUpCit7CisgIHRyZWUgbmFtZSA9IE5VTExfVFJF RSwgY2xhc3NfZGVjbDsKKyAgc3RhdGljIHRyZWUgQ0xfc3VmZml4ID0gTlVMTF9UUkVFOworICBp ZiAoQ0xfc3VmZml4ID09IE5VTExfVFJFRSkKKyAgICBDTF9zdWZmaXggPSBnZXRfaWRlbnRpZmll cigiY2xhc3MkIik7CisgIGlmIChqY2xhc3Nfbm9kZSA9PSBOVUxMX1RSRUUpCisgICAgeworICAg ICAgamNsYXNzX25vZGUgPSBnZXRfZ2xvYmFsX2JpbmRpbmcgKGdldF9pZGVudGlmaWVyICgiamNs YXNzIikpOworICAgICAgaWYgKGpjbGFzc19ub2RlID09IE5VTExfVFJFRSkKKwl7CisJICBlcnJv ciAoImNhbGwgdG8gSmF2YSBjb25zdHJ1Y3Rvciwgd2hpbGUgJTxqY2xhc3MlPiB1bmRlZmluZWQi KTsKKwkgIHJldHVybiBlcnJvcl9tYXJrX25vZGU7CisJfQorICAgICAgamNsYXNzX25vZGUgPSBU UkVFX1RZUEUgKGpjbGFzc19ub2RlKTsKKyAgICB9CisKKyAgLyogTWFuZ2xlIHRoZSBjbGFzcyQg ZmllbGQuICAqLworICB7CisgICAgdHJlZSBmaWVsZDsKKyAgICBmb3IgKGZpZWxkID0gVFlQRV9G SUVMRFMgKHR5cGUpOyBmaWVsZDsgZmllbGQgPSBERUNMX0NIQUlOIChmaWVsZCkpCisgICAgICBp ZiAoREVDTF9OQU1FIChmaWVsZCkgPT0gQ0xfc3VmZml4KQorCXsKKwkgIG1hbmdsZV9kZWNsIChm aWVsZCk7CisJICBuYW1lID0gREVDTF9BU1NFTUJMRVJfTkFNRSAoZmllbGQpOworCSAgYnJlYWs7 CisJfQorICAgIGlmICghZmllbGQpCisgICAgICB7CisJZXJyb3IgKCJjYW5ub3QgZmluZCAlPGNs YXNzJCU+IGluICVxVCIsIHR5cGUpOworCXJldHVybiBlcnJvcl9tYXJrX25vZGU7CisgICAgICB9 CisgIH0KKworICBjbGFzc19kZWNsID0gZ2V0X2dsb2JhbF9iaW5kaW5nIChuYW1lKTsKKyAgaWYg KGNsYXNzX2RlY2wgPT0gTlVMTF9UUkVFKQorICAgIHsKKyAgICAgIGNsYXNzX2RlY2wgPSBidWls ZF9kZWNsIChpbnB1dF9sb2NhdGlvbiwKKwkJCSAgICAgICBWQVJfREVDTCwgbmFtZSwgVFJFRV9U WVBFIChqY2xhc3Nfbm9kZSkpOworICAgICAgVFJFRV9TVEFUSUMgKGNsYXNzX2RlY2wpID0gMTsK KyAgICAgIERFQ0xfRVhURVJOQUwgKGNsYXNzX2RlY2wpID0gMTsKKyAgICAgIFRSRUVfUFVCTElD IChjbGFzc19kZWNsKSA9IDE7CisgICAgICBERUNMX0FSVElGSUNJQUwgKGNsYXNzX2RlY2wpID0g MTsKKyAgICAgIERFQ0xfSUdOT1JFRF9QIChjbGFzc19kZWNsKSA9IDE7CisgICAgICBwdXNoZGVj bF90b3BfbGV2ZWwgKGNsYXNzX2RlY2wpOworICAgICAgbWFrZV9kZWNsX3J0bCAoY2xhc3NfZGVj bCk7CisgICAgfQorICByZXR1cm4gY2xhc3NfZGVjbDsKK30KKwogDAogc3RhdGljIHRyZWUKIGJ1 aWxkX3ZlY19kZWxldGVfMSAobG9jYXRpb25fdCBsb2MsIHRyZWUgYmFzZSwgdHJlZSBtYXhpbmRl eCwgdHJlZSB0eXBlLApkaWZmIC0tZ2l0IGEvZ2NjL2NwL2xleC5jYyBiL2djYy9jcC9sZXguY2MK aW5kZXggMjJkMWFiOTJhZGQuLmQ5YWI0MzdiNDExIDEwMDY0NAotLS0gYS9nY2MvY3AvbGV4LmNj CisrKyBiL2djYy9jcC9sZXguY2MKQEAgLTQyLDYgKzQyLDcgQEAgc3RhdGljIHZvaWQgaGFuZGxl X3ByYWdtYV92dGFibGUgKGNwcF9yZWFkZXIgKik7CiBzdGF0aWMgdm9pZCBoYW5kbGVfcHJhZ21h X3VuaXQgKGNwcF9yZWFkZXIgKik7CiBzdGF0aWMgdm9pZCBoYW5kbGVfcHJhZ21hX2ludGVyZmFj ZSAoY3BwX3JlYWRlciAqKTsKIHN0YXRpYyB2b2lkIGhhbmRsZV9wcmFnbWFfaW1wbGVtZW50YXRp b24gKGNwcF9yZWFkZXIgKik7CitzdGF0aWMgdm9pZCBoYW5kbGVfcHJhZ21hX2phdmFfZXhjZXB0 aW9ucyAoY3BwX3JlYWRlciAqKTsKIAogc3RhdGljIHZvaWQgaW5pdF9vcGVyYXRvcnMgKHZvaWQp Owogc3RhdGljIHZvaWQgY29weV9sYW5nX3R5cGUgKHRyZWUpOwpAQCAtNzUsNiArNzYsOSBAQCBz dHJ1Y3QgaW1wbF9maWxlcwogfTsKIAogc3RhdGljIHN0cnVjdCBpbXBsX2ZpbGVzICppbXBsX2Zp bGVfY2hhaW47CisKKy8qIFRydWUgaWYgd2Ugc2F3ICIjcHJhZ21hIEdDQyBqYXZhX2V4Y2VwdGlv bnMiLiAgKi8KK2Jvb2wgcHJhZ21hX2phdmFfZXhjZXB0aW9uczsKIAwKIHZvaWQKIGN4eF9maW5p c2ggKHZvaWQpCkBAIC0yOTIsNiArMjk2LDcgQEAgaW5pdF9jcF9wcmFnbWEgKHZvaWQpCiAgIGNf cmVnaXN0ZXJfcHJhZ21hICgwLCAiaW1wbGVtZW50YXRpb24iLCBoYW5kbGVfcHJhZ21hX2ltcGxl bWVudGF0aW9uKTsKICAgY19yZWdpc3Rlcl9wcmFnbWEgKCJHQ0MiLCAiaW50ZXJmYWNlIiwgaGFu ZGxlX3ByYWdtYV9pbnRlcmZhY2UpOwogICBjX3JlZ2lzdGVyX3ByYWdtYSAoIkdDQyIsICJpbXBs ZW1lbnRhdGlvbiIsIGhhbmRsZV9wcmFnbWFfaW1wbGVtZW50YXRpb24pOworICBjX3JlZ2lzdGVy X3ByYWdtYSAoIkdDQyIsICJqYXZhX2V4Y2VwdGlvbnMiLCBoYW5kbGVfcHJhZ21hX2phdmFfZXhj ZXB0aW9ucyk7CiB9CiAMCiAvKiBUUlVFIGlmIGEgY29kZSByZXByZXNlbnRzIGEgc3RhdGVtZW50 LiAgKi8KQEAgLTcwNCw2ICs3MDksMTcgQEAgaGFuZGxlX3ByYWdtYV9pbXBsZW1lbnRhdGlvbiAo Y3BwX3JlYWRlciogLypkZmlsZSovKQogICAgICAgaW1wbF9maWxlX2NoYWluID0gaWZpbGVzOwog ICAgIH0KIH0KKy8qIEluZGljYXRlIHRoYXQgdGhpcyBmaWxlIHVzZXMgSmF2YS1wZXJzb25hbGl0 eSBleGNlcHRpb24gaGFuZGxpbmcuICAqLworc3RhdGljIHZvaWQKK2hhbmRsZV9wcmFnbWFfamF2 YV9leGNlcHRpb25zIChjcHBfcmVhZGVyKiAvKmRmaWxlKi8pCit7CisgIHRyZWUgeDsKKyAgaWYg KHByYWdtYV9sZXggKCZ4KSAhPSBDUFBfRU9GKQorICAgIHdhcm5pbmcgKDAsICJqdW5rIGF0IGVu ZCBvZiAlPCNwcmFnbWEgR0NDJT4gJTxqYXZhX2V4Y2VwdGlvbnMlPiIpOworCisgIGNob29zZV9w ZXJzb25hbGl0eV9yb3V0aW5lIChsYW5nX2phdmEpOworICBwcmFnbWFfamF2YV9leGNlcHRpb25z ID0gdHJ1ZTsKK30KIAogLyogSXNzdWUgYW4gZXJyb3IgbWVzc2FnZSBpbmRpY2F0aW5nIHRoYXQg dGhlIGxvb2t1cCBvZiBOQU1FIChhbgogICAgSURFTlRJRklFUl9OT0RFKSBmYWlsZWQuICBSZXR1 cm5zIHRoZSBFUlJPUl9NQVJLX05PREUuICAqLwpAQCAtOTM0LDYgKzk1MCw4IEBAIHNldF9kZWNs X2xpbmthZ2UgKHRyZWUgdCkKICAgICBTRVRfREVDTF9MQU5HVUFHRSAodCwgbGFuZ19jcGx1c3Bs dXMpOwogICBlbHNlIGlmIChjdXJyZW50X2xhbmdfbmFtZSA9PSBsYW5nX25hbWVfYykKICAgICBT RVRfREVDTF9MQU5HVUFHRSAodCwgbGFuZ19jKTsKKyAgZWxzZSBpZiAoY3VycmVudF9sYW5nX25h bWUgPT0gbGFuZ19uYW1lX2phdmEpCisgICAgU0VUX0RFQ0xfTEFOR1VBR0UgKHQsIGxhbmdfamF2 YSk7CiAgIGVsc2UKICAgICBnY2NfdW5yZWFjaGFibGUgKCk7CiB9CmRpZmYgLS1naXQgYS9nY2Mv Y3AvbWFuZ2xlLmNjIGIvZ2NjL2NwL21hbmdsZS5jYwppbmRleCBlMzYzZWYzNWI5Zi4uYmYwNDM2 MDljZDEgMTAwNjQ0Ci0tLSBhL2djYy9jcC9tYW5nbGUuY2MKKysrIGIvZ2NjL2NwL21hbmdsZS5j YwpAQCAtMjQ1LDYgKzI0NSwxMCBAQCBzdGF0aWMgYm9vbCBlcXVhbF9hYmlfdGFncyAodHJlZSwg dHJlZSk7CiBzdGF0aWMgaW5saW5lIHZvaWQgc3RhcnRfbWFuZ2xpbmcgKGNvbnN0IHRyZWUpOwog c3RhdGljIHRyZWUgbWFuZ2xlX3NwZWNpYWxfZm9yX3R5cGUgKGNvbnN0IHRyZWUsIGNvbnN0IGNo YXIgKik7CiAKKy8qIEZvcmVpZ24gbGFuZ3VhZ2UgZnVuY3Rpb25zLiAgKi8KKworc3RhdGljIHZv aWQgd3JpdGVfamF2YV9pbnRlZ2VyX3R5cGVfY29kZXMgKGNvbnN0IHRyZWUpOworCiAvKiBBcHBl bmQgYSBzaW5nbGUgY2hhcmFjdGVyIHRvIHRoZSBlbmQgb2YgdGhlIG1hbmdsZWQKICAgIHJlcHJl c2VudGF0aW9uLiAgKi8KICNkZWZpbmUgd3JpdGVfY2hhcihDSEFSKQkJCQkJCVwKQEAgLTI2NzEs NiArMjY3NSw4IEBAIHdyaXRlX2J1aWx0aW5fdHlwZSAodHJlZSB0eXBlKQogCXdyaXRlX3N0cmlu ZyAoIkRzIik7CiAgICAgICBlbHNlIGlmICh0eXBlID09IGNoYXIzMl90eXBlX25vZGUpCiAJd3Jp dGVfc3RyaW5nICgiRGkiKTsKKyAgICAgIGVsc2UgaWYgKFRZUEVfRk9SX0pBVkEgKHR5cGUpKQor CXdyaXRlX2phdmFfaW50ZWdlcl90eXBlX2NvZGVzICh0eXBlKTsKICAgICAgIGVsc2UKIAl7CiAJ ICBzaXplX3QgaXRrOwpAQCAtMjcyNSw5ICsyNzMxLDkgQEAgd3JpdGVfYnVpbHRpbl90eXBlICh0 cmVlIHR5cGUpCiAgICAgICBicmVhazsKIAogICAgIGNhc2UgUkVBTF9UWVBFOgotICAgICAgaWYg KHR5cGUgPT0gZmxvYXRfdHlwZV9ub2RlKQorICAgICAgaWYgKHR5cGUgPT0gZmxvYXRfdHlwZV9u b2RlIHx8IHR5cGUgPT0gamF2YV9mbG9hdF90eXBlX25vZGUpCiAJd3JpdGVfY2hhciAoJ2YnKTsK LSAgICAgIGVsc2UgaWYgKHR5cGUgPT0gZG91YmxlX3R5cGVfbm9kZSkKKyAgICAgIGVsc2UgaWYg KHR5cGUgPT0gZG91YmxlX3R5cGVfbm9kZSB8fCB0eXBlID09IGphdmFfZG91YmxlX3R5cGVfbm9k ZSkKIAl3cml0ZV9jaGFyICgnZCcpOwogICAgICAgZWxzZSBpZiAodHlwZSA9PSBsb25nX2RvdWJs ZV90eXBlX25vZGUpCiAJd3JpdGVfY2hhciAoJ2UnKTsKQEAgLTI4MTUsMTYgKzI4MjEsNDAgQEAg d3JpdGVfZnVuY3Rpb25fdHlwZSAoY29uc3QgdHJlZSB0eXBlKQogLyogTm9uLXRlcm1pbmFsIDxi YXJlLWZ1bmN0aW9uLXR5cGU+LiAgVFlQRSBpcyBhIEZVTkNUSU9OX1RZUEUgb3IKICAgIE1FVEhP RF9UWVBFLiAgSWYgSU5DTFVERV9SRVRVUk5fVFlQRSBpcyBub256ZXJvLCB0aGUgcmV0dXJuIHZh bHVlCiAgICBpcyBtYW5nbGVkIGJlZm9yZSB0aGUgcGFyYW1ldGVyIHR5cGVzLiAgSWYgbm9uLU5V TEwsIERFQ0wgaXMKLSAgIEZVTkNUSU9OX0RFQ0wgZm9yIHRoZSBmdW5jdGlvbiB3aG9zZSB0eXBl IGlzIGJlaW5nIGVtaXR0ZWQuICAqLworICAgRlVOQ1RJT05fREVDTCBmb3IgdGhlIGZ1bmN0aW9u IHdob3NlIHR5cGUgaXMgYmVpbmcgZW1pdHRlZC4KKworICAgSWYgREVDTCBpcyBhIG1lbWJlciBv ZiBhIEphdmEgdHlwZSwgdGhlbiBhIGxpdGVyYWwgJ0onCisgICBpcyBvdXRwdXQgYW5kIHRoZSBy ZXR1cm4gdHlwZSBpcyBtYW5nbGVkIGFzIGlmIElOQ0xVREVfUkVUVVJOX1RZUEUKKyAgIHdlcmUg bm9uemVyby4KKworICAgICA8YmFyZS1mdW5jdGlvbi10eXBlPiA6Oj0gW0pdPC9zaWduYXR1cmUv IHR5cGU+KyAgKi8KIAogc3RhdGljIHZvaWQKIHdyaXRlX2JhcmVfZnVuY3Rpb25fdHlwZSAoY29u c3QgdHJlZSB0eXBlLCBjb25zdCBpbnQgaW5jbHVkZV9yZXR1cm5fdHlwZV9wLAogCQkJICBjb25z dCB0cmVlIGRlY2wpCiB7CisgIGludCBqYXZhX21ldGhvZF9wOworCiAgIE1BTkdMRV9UUkFDRV9U UkVFICgiYmFyZS1mdW5jdGlvbi10eXBlIiwgdHlwZSk7CiAKKyAgLyogRGV0ZWN0IEphdmEgbWV0 aG9kcyBhbmQgZW1pdCBzcGVjaWFsIGVuY29kaW5nLiAgKi8KKyAgaWYgKGRlY2wgIT0gTlVMTAor ICAgICAgJiYgREVDTF9GVU5DVElPTl9NRU1CRVJfUCAoZGVjbCkKKyAgICAgICYmIFRZUEVfRk9S X0pBVkEgKERFQ0xfQ09OVEVYVCAoZGVjbCkpCisgICAgICAmJiAhREVDTF9DT05TVFJVQ1RPUl9Q IChkZWNsKQorICAgICAgJiYgIURFQ0xfREVTVFJVQ1RPUl9QIChkZWNsKQorICAgICAgJiYgIURF Q0xfQ09OVl9GTl9QIChkZWNsKSkKKyAgICB7CisgICAgICBqYXZhX21ldGhvZF9wID0gMTsKKyAg ICAgIHdyaXRlX2NoYXIgKCdKJyk7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgamF2YV9t ZXRob2RfcCA9IDA7CisgICAgfQorCiAgIC8qIE1hbmdsZSB0aGUgcmV0dXJuIHR5cGUsIGlmIHJl cXVlc3RlZC4gICovCi0gIGlmIChpbmNsdWRlX3JldHVybl90eXBlX3ApCisgIGlmIChpbmNsdWRl X3JldHVybl90eXBlX3AgfHwgamF2YV9tZXRob2RfcCkKICAgICB3cml0ZV90eXBlIChUUkVFX1RZ UEUgKHR5cGUpKTsKIAogICAvKiBOb3cgbWFuZ2xlIHRoZSB0eXBlcyBvZiB0aGUgYXJndW1lbnRz LiAgKi8KQEAgLTQ2MDgsNiArNDYzOCwzMCBAQCBtYW5nbGVfdGVtcGxhdGVfcGFybV9vYmplY3Qg KHRyZWUgZXhwcikKICAgcmV0dXJuIGZpbmlzaF9tYW5nbGluZ19nZXRfaWRlbnRpZmllciAoKTsK IH0KIAwKKworLyogRm9yZWlnbiBsYW5ndWFnZSB0eXBlIG1hbmdsaW5nIHNlY3Rpb24uICAqLwor CisvKiBIb3cgdG8gd3JpdGUgdGhlIHR5cGUgY29kZXMgZm9yIHRoZSBpbnRlZ2VyIEphdmEgdHlw ZS4gICovCisKK3N0YXRpYyB2b2lkCit3cml0ZV9qYXZhX2ludGVnZXJfdHlwZV9jb2RlcyAoY29u c3QgdHJlZSB0eXBlKQoreworICBpZiAodHlwZSA9PSBqYXZhX2ludF90eXBlX25vZGUpCisgICAg d3JpdGVfY2hhciAoJ2knKTsKKyAgZWxzZSBpZiAodHlwZSA9PSBqYXZhX3Nob3J0X3R5cGVfbm9k ZSkKKyAgICB3cml0ZV9jaGFyICgncycpOworICBlbHNlIGlmICh0eXBlID09IGphdmFfYnl0ZV90 eXBlX25vZGUpCisgICAgd3JpdGVfY2hhciAoJ2MnKTsKKyAgZWxzZSBpZiAodHlwZSA9PSBqYXZh X2NoYXJfdHlwZV9ub2RlKQorICAgIHdyaXRlX2NoYXIgKCd3Jyk7CisgIGVsc2UgaWYgKHR5cGUg PT0gamF2YV9sb25nX3R5cGVfbm9kZSkKKyAgICB3cml0ZV9jaGFyICgneCcpOworICBlbHNlIGlm ICh0eXBlID09IGphdmFfYm9vbGVhbl90eXBlX25vZGUpCisgICAgd3JpdGVfY2hhciAoJ2InKTsK KyAgZWxzZQorICAgIGdjY191bnJlYWNoYWJsZSAoKTsKK30KKwogLyogR2l2ZW4gYSBDTEFTU19U WVBFLCBzdWNoIGFzIGEgcmVjb3JkIGZvciBzdGQ6OmJhZF9leGNlcHRpb24gdGhpcwogICAgZnVu Y3Rpb24gZ2VuZXJhdGVzIGEgbWFuZ2xlZCBuYW1lIGZvciB0aGUgdnRhYmxlIG1hcCB2YXJpYWJs ZSBvZgogICAgdGhlIGNsYXNzIHR5cGUuICBGb3IgZXhhbXBsZSwgaWYgdGhlIGNsYXNzIHR5cGUg aXMKZGlmZiAtLWdpdCBhL2djYy9jcC9tZXRob2QuY2MgYi9nY2MvY3AvbWV0aG9kLmNjCmluZGV4 IDFlOTYyYjZlM2IxLi41ZGRjNTA3OWU1OCAxMDA2NDQKLS0tIGEvZ2NjL2NwL21ldGhvZC5jYwor KysgYi9nY2MvY3AvbWV0aG9kLmNjCkBAIC0zMDkxLDcgKzMwOTEsNyBAQCBpbXBsaWNpdGx5X2Rl Y2xhcmVfZm4gKHNwZWNpYWxfZnVuY3Rpb25fa2luZCBraW5kLCB0cmVlIHR5cGUsCiAKICAgdHlw ZSA9IFRZUEVfTUFJTl9WQVJJQU5UICh0eXBlKTsKIAotICBpZiAodGFyZ2V0bS5jeHguY2R0b3Jf cmV0dXJuc190aGlzICgpKQorICBpZiAodGFyZ2V0bS5jeHguY2R0b3JfcmV0dXJuc190aGlzICgp ICYmICFUWVBFX0ZPUl9KQVZBICh0eXBlKSkKICAgICB7CiAgICAgICBpZiAoa2luZCA9PSBzZmtf ZGVzdHJ1Y3RvcikKIAkvKiBTZWUgY29tbWVudCBpbiBjaGVja19zcGVjaWFsX2Z1bmN0aW9uX3Jl dHVybl90eXBlLiAgKi8KZGlmZiAtLWdpdCBhL2djYy9jcC9uYW1lLWxvb2t1cC5jYyBiL2djYy9j cC9uYW1lLWxvb2t1cC5jYwppbmRleCBiNWY2ZTg0Y2FkOS4uYmJmZGJlMzg0ZDcgMTAwNjQ0Ci0t LSBhL2djYy9jcC9uYW1lLWxvb2t1cC5jYworKysgYi9nY2MvY3AvbmFtZS1sb29rdXAuY2MKQEAg LTc5MDYsNiArNzkwNiw5IEBAIHB1c2h0YWcgKHRyZWUgbmFtZSwgdHJlZSB0eXBlLCBUQUdfaG93 IGhvdykKICAgICAgIGlmICghY29udGV4dCkKIAljb250ZXh0ID0gY3VycmVudF9uYW1lc3BhY2U7 CiAKKyAgICAgIGlmIChjdXJyZW50X2xhbmdfbmFtZSA9PSBsYW5nX25hbWVfamF2YSkKKwlUWVBF X0ZPUl9KQVZBICh0eXBlKSA9IDE7CisKICAgICAgIHRkZWYgPSBjcmVhdGVfaW1wbGljaXRfdHlw ZWRlZiAobmFtZSwgdHlwZSk7CiAgICAgICBERUNMX0NPTlRFWFQgKHRkZWYpID0gRlJPQl9DT05U RVhUIChjb250ZXh0KTsKICAgICAgIHNldF9vcmlnaW5hdGluZ19tb2R1bGUgKHRkZWYpOwpkaWZm IC0tZ2l0IGEvZ2NjL2NwL3B0LmNjIGIvZ2NjL2NwL3B0LmNjCmluZGV4IGZiZjQ5OGFkMTZhLi43 ZjQ2Y2EyYmQ3ZCAxMDA2NDQKLS0tIGEvZ2NjL2NwL3B0LmNjCisrKyBiL2djYy9jcC9wdC5jYwpA QCAtOTU3LDYgKzk1Nyw3IEBAIG1heWJlX25ld19wYXJ0aWFsX3NwZWNpYWxpemF0aW9uICh0cmVl JiB0eXBlKQogCSBmb3IgdGhlIG5ld2x5IGRlY2xhcmVkIHNwZWNpYWxpemF0aW9uLiAgKi8KICAg ICAgIHRyZWUgdCA9IG1ha2VfY2xhc3NfdHlwZSAoVFJFRV9DT0RFICh0eXBlKSk7CiAgICAgICBD TEFTU1RZUEVfREVDTEFSRURfQ0xBU1MgKHQpID0gQ0xBU1NUWVBFX0RFQ0xBUkVEX0NMQVNTICh0 eXBlKTsKKyAgICAgIFRZUEVfRk9SX0pBVkEgKHQpID0gVFlQRV9GT1JfSkFWQSAodHlwZSk7CiAg ICAgICBTRVRfVFlQRV9URU1QTEFURV9JTkZPICh0LCBidWlsZF90ZW1wbGF0ZV9pbmZvICh0bXBs LCBhcmdzKSk7CiAKICAgICAgIC8qIFdlIG9ubHkgbmVlZCBhIHNlcGFyYXRlIHR5cGUgbm9kZSBm b3Igc3RvcmluZyB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzCkBAIC0xMDA1OSw2ICsxMDA2MCw3IEBA IGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyAodHJlZSBkMSwgdHJlZSBhcmdsaXN0LCB0cmVlIGluX2Rl Y2wsIHRyZWUgY29udGV4dCwKIAkgIENMQVNTVFlQRV9ERUNMQVJFRF9DTEFTUyAodCkKIAkgICAg PSBDTEFTU1RZUEVfREVDTEFSRURfQ0xBU1MgKHRlbXBsYXRlX3R5cGUpOwogCSAgU0VUX0NMQVNT VFlQRV9JTVBMSUNJVF9JTlNUQU5USUFUSU9OICh0KTsKKwkgIFRZUEVfRk9SX0pBVkEgKHQpID0g VFlQRV9GT1JfSkFWQSAodGVtcGxhdGVfdHlwZSk7CiAKIAkgIC8qIEEgbG9jYWwgY2xhc3MuICBN YWtlIHN1cmUgdGhlIGRlY2wgZ2V0cyByZWdpc3RlcmVkIHByb3Blcmx5LiAgKi8KIAkgIGlmIChj b250ZXh0ID09IGN1cnJlbnRfZnVuY3Rpb25fZGVjbCkKQEAgLTEyMDYyLDYgKzEyMDY0LDcgQEAg aW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUgKHRyZWUgdHlwZSkKICAgVFlQRV9QQUNLRUQgKHR5 cGUpID0gVFlQRV9QQUNLRUQgKHBhdHRlcm4pOwogICBTRVRfVFlQRV9BTElHTiAodHlwZSwgVFlQ RV9BTElHTiAocGF0dGVybikpOwogICBUWVBFX1VTRVJfQUxJR04gKHR5cGUpID0gVFlQRV9VU0VS X0FMSUdOIChwYXR0ZXJuKTsKKyAgVFlQRV9GT1JfSkFWQSAodHlwZSkgPSBUWVBFX0ZPUl9KQVZB IChwYXR0ZXJuKTsgLyogRm9yIGxpYmphdmEncyBKQXJyYXk8VD4gKi8KICAgQ0xBU1NUWVBFX05P Tl9BR0dSRUdBVEUgKHR5cGUpID0gQ0xBU1NUWVBFX05PTl9BR0dSRUdBVEUgKHBhdHRlcm4pOwog ICBpZiAoQU5PTl9BR0dSX1RZUEVfUCAocGF0dGVybikpCiAgICAgU0VUX0FOT05fQUdHUl9UWVBF X1AgKHR5cGUpOwpkaWZmIC0tZ2l0IGEvZ2NjL2NwL3RyZWUuY2MgYi9nY2MvY3AvdHJlZS5jYwpp bmRleCAwNGEwNTVkOWQ3Ny4uMjgyZjNkZGUxMjQgMTAwNjQ0Ci0tLSBhL2djYy9jcC90cmVlLmNj CisrKyBiL2djYy9jcC90cmVlLmNjCkBAIC00NCw2ICs0NCw3IEBAIHN0YXRpYyB0cmVlIGJ1aWxk X3RhcmdldF9leHByICh0cmVlLCB0cmVlLCB0c3Vic3RfZmxhZ3NfdCk7CiBzdGF0aWMgdHJlZSBj b3VudF90cmVlc19yICh0cmVlICosIGludCAqLCB2b2lkICopOwogc3RhdGljIHRyZWUgdmVyaWZ5 X3N0bXRfdHJlZV9yICh0cmVlICosIGludCAqLCB2b2lkICopOwogCitzdGF0aWMgdHJlZSBoYW5k bGVfamF2YV9pbnRlcmZhY2VfYXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwgYm9v bCAqKTsKIHN0YXRpYyB0cmVlIGhhbmRsZV9pbml0X3ByaW9yaXR5X2F0dHJpYnV0ZSAodHJlZSAq LCB0cmVlLCB0cmVlLCBpbnQsIGJvb2wgKik7CiBzdGF0aWMgdHJlZSBoYW5kbGVfYWJpX3RhZ19h dHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBib29sICopOwogc3RhdGljIHRyZWUg aGFuZGxlX2NvbnRyYWN0X2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQsIGJvb2wg Kik7CkBAIC01MDg4LDYgKzUwODksOCBAQCBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX3NwZWMgY3h4 X2F0dHJpYnV0ZV90YWJsZVtdID0KIHsKICAgLyogeyBuYW1lLCBtaW5fbGVuLCBtYXhfbGVuLCBk ZWNsX3JlcSwgdHlwZV9yZXEsIGZuX3R5cGVfcmVxLAogICAgICAgIGFmZmVjdHNfdHlwZV9pZGVu dGl0eSwgaGFuZGxlciwgZXhjbHVkZSB9ICovCisgIHsgImphdmFfaW50ZXJmYWNlIiwgMCwgMCwg ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisgICAgaGFuZGxlX2phdmFfaW50ZXJmYWNlX2F0 dHJpYnV0ZSwgTlVMTCB9LAogICB7ICJpbml0X3ByaW9yaXR5IiwgIDEsIDEsIHRydWUsICBmYWxz ZSwgZmFsc2UsIGZhbHNlLAogICAgIGhhbmRsZV9pbml0X3ByaW9yaXR5X2F0dHJpYnV0ZSwgTlVM TCB9LAogICB7ICJhYmlfdGFnIiwgMSwgLTEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsCkBA IC01MTIxLDYgKzUxMjQsMzEgQEAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9zcGVjIHN0ZF9hdHRy aWJ1dGVfdGFibGVbXSA9CiAgIHsgTlVMTCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs c2UsIE5VTEwsIE5VTEwgfQogfTsKIAorLyogSGFuZGxlIGEgImphdmFfaW50ZXJmYWNlIiBhdHRy aWJ1dGU7IGFyZ3VtZW50cyBhcyBpbgorICAgc3RydWN0IGF0dHJpYnV0ZV9zcGVjLmhhbmRsZXIu ICAqLworc3RhdGljIHRyZWUKK2hhbmRsZV9qYXZhX2ludGVyZmFjZV9hdHRyaWJ1dGUgKHRyZWUq IG5vZGUsCisJCQkJdHJlZSBuYW1lLAorCQkJCXRyZWUgLyphcmdzKi8sCisJCQkJaW50IGZsYWdz LAorCQkJCWJvb2wqIG5vX2FkZF9hdHRycykKK3sKKyAgaWYgKERFQ0xfUCAoKm5vZGUpCisgICAg ICB8fCAhQ0xBU1NfVFlQRV9QICgqbm9kZSkKKyAgICAgIHx8ICFUWVBFX0ZPUl9KQVZBICgqbm9k ZSkpCisgICAgeworICAgICAgZXJyb3IgKCIlcUUgYXR0cmlidXRlIGNhbiBvbmx5IGJlIGFwcGxp ZWQgdG8gSmF2YSBjbGFzcyBkZWZpbml0aW9ucyIsCisJICAgIG5hbWUpOworICAgICAgKm5vX2Fk ZF9hdHRycyA9IHRydWU7CisgICAgICByZXR1cm4gTlVMTF9UUkVFOworICAgIH0KKyAgaWYgKCEo ZmxhZ3MgJiAoaW50KSBBVFRSX0ZMQUdfVFlQRV9JTl9QTEFDRSkpCisgICAgKm5vZGUgPSBidWls ZF92YXJpYW50X3R5cGVfY29weSAoKm5vZGUpOworICBUWVBFX0pBVkFfSU5URVJGQUNFICgqbm9k ZSkgPSAxOworCisgIHJldHVybiBOVUxMX1RSRUU7Cit9CisKIC8qIEhhbmRsZSBhbiAiaW5pdF9w cmlvcml0eSIgYXR0cmlidXRlOyBhcmd1bWVudHMgYXMgaW4KICAgIHN0cnVjdCBhdHRyaWJ1dGVf c3BlYy5oYW5kbGVyLiAgKi8KIHN0YXRpYyB0cmVlCmRpZmYgLS1naXQgYS9nY2MvY3AvdHlwZWNr LmNjIGIvZ2NjL2NwL3R5cGVjay5jYwppbmRleCBkNTc1N2IyN2Y0OS4uMDkzODE3ZDg0ODkgMTAw NjQ0Ci0tLSBhL2djYy9jcC90eXBlY2suY2MKKysrIGIvZ2NjL2NwL3R5cGVjay5jYwpAQCAtMTQ1 OCw2ICsxNDU4LDggQEAgc3RydWN0dXJhbF9jb21wdHlwZXMgKHRyZWUgdDEsIHRyZWUgdDIsIGlu dCBzdHJpY3QpCiAJCQkJIGNlX3R5cGUpKQogCXJldHVybiBmYWxzZTsKICAgICB9CisgIGlmIChU WVBFX0ZPUl9KQVZBICh0MSkgIT0gVFlQRV9GT1JfSkFWQSAodDIpKQorICAgIHJldHVybiBmYWxz ZTsKIAogICAvKiBBbGxvdyBmb3IgdHdvIGRpZmZlcmVudCB0eXBlIG5vZGVzIHdoaWNoIGhhdmUg ZXNzZW50aWFsbHkgdGhlIHNhbWUKICAgICAgZGVmaW5pdGlvbi4gIE5vdGUgdGhhdCB3ZSBhbHJl YWR5IGNoZWNrZWQgZm9yIGVxdWFsaXR5IG9mIHRoZSB0eXBlCmRpZmYgLS1naXQgYS9nY2MvZHdh cmYyb3V0LmNjIGIvZ2NjL2R3YXJmMm91dC5jYwppbmRleCBlODEwNDRiOGM0OC4uYjNhMzQ2YTdi NWEgMTAwNjQ0Ci0tLSBhL2djYy9kd2FyZjJvdXQuY2MKKysrIGIvZ2NjL2R3YXJmMm91dC5jYwpA QCAtNTU3MSw2ICs1NTcxLDE2IEBAIGlzX2N4eCAoY29uc3RfdHJlZSBkZWNsKQogICByZXR1cm4g aXNfY3h4ICgpOwogfQogCisvKiBSZXR1cm4gVFJVRSBpZiB0aGUgbGFuZ3VhZ2UgaXMgSmF2YS4g ICovCisKK3N0YXRpYyBpbmxpbmUgYm9vbAoraXNfamF2YSAodm9pZCkKK3sKKyAgdW5zaWduZWQg aW50IGxhbmcgPSBnZXRfQVRfdW5zaWduZWQgKGNvbXBfdW5pdF9kaWUgKCksIERXX0FUX2xhbmd1 YWdlKTsKKworICByZXR1cm4gbGFuZyA9PSBEV19MQU5HX0phdmE7Cit9CisKIC8qIFJldHVybiBU UlVFIGlmIHRoZSBsYW5ndWFnZSBpcyBGb3J0cmFuLiAgKi8KIAogc3RhdGljIGlubGluZSBib29s CkBAIC0xMTYyOSw3ICsxMTYzOSw3IEBAIG91dHB1dF9wdWJuYW1lIChkd19vZmZzZXQgZGllX29m ZnNldCwgcHVibmFtZV9lbnRyeSAqZW50cnkpCiAgICAgICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0 b3I6CiAgICAgICAgICAgR0RCX0lOREVYX1NZTUJPTF9LSU5EX1NFVF9WQUxVRShmbGFncywKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQl9JTkRFWF9TWU1CT0xf S0lORF9WQVJJQUJMRSk7Ci0JICBpZiAoIWlzX2N4eCAoKSkKKwkgIGlmICghaXNfY3h4ICgpICYm ICFpc19qYXZhICgpKQogCSAgICBHREJfSU5ERVhfU1lNQk9MX1NUQVRJQ19TRVRfVkFMVUUoZmxh Z3MsIDEpOwogICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERXX1RBR19zdWJwcm9ncmFt OgpAQCAtMTE2NTgsNyArMTE2NjgsNyBAQCBvdXRwdXRfcHVibmFtZSAoZHdfb2Zmc2V0IGRpZV9v ZmZzZXQsIHB1Ym5hbWVfZW50cnkgKmVudHJ5KQogICAgICAgICBjYXNlIERXX1RBR191bmlvbl90 eXBlOgogICAgICAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgogICAgICAgICAgIEdE Ql9JTkRFWF9TWU1CT0xfS0lORF9TRVRfVkFMVUUoZmxhZ3MsIEdEQl9JTkRFWF9TWU1CT0xfS0lO RF9UWVBFKTsKLQkgIGlmICghaXNfY3h4ICgpKQorCSAgaWYgKCFpc19jeHggKCkgJiYgIWlzX2ph dmEgKCkpCiAJICAgIEdEQl9JTkRFWF9TWU1CT0xfU1RBVElDX1NFVF9WQUxVRShmbGFncywgMSk7 CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yMTUwNSw2ICsyMTUxNSw3 IEBAIGxvd2VyX2JvdW5kX2RlZmF1bHQgKHZvaWQpCiAgICAgY2FzZSBEV19MQU5HX0NfcGx1c19w bHVzXzE0OgogICAgIGNhc2UgRFdfTEFOR19PYmpDOgogICAgIGNhc2UgRFdfTEFOR19PYmpDX3Bs dXNfcGx1czoKKyAgICBjYXNlIERXX0xBTkdfSmF2YToKICAgICAgIHJldHVybiAwOwogICAgIGNh c2UgRFdfTEFOR19Gb3J0cmFuNzc6CiAgICAgY2FzZSBEV19MQU5HX0ZvcnRyYW45MDoKQEAgLTI1 MjIxLDYgKzI1MjMyLDggQEAgZ2VuX2NvbXBpbGVfdW5pdF9kaWUgKGNvbnN0IGNoYXIgKmZpbGVu YW1lKQogCQlsYW5ndWFnZSA9IERXX0xBTkdfRm9ydHJhbjA4OwogCSAgICB9CiAJfQorICAgICAg ZWxzZSBpZiAoc3RyY21wIChsYW5ndWFnZV9zdHJpbmcsICJHTlUgSmF2YSIpID09IDApCisJbGFu Z3VhZ2UgPSBEV19MQU5HX0phdmE7CiAgICAgICBlbHNlIGlmIChzdHJjbXAgKGxhbmd1YWdlX3N0 cmluZywgIkdOVSBPYmplY3RpdmUtQyIpID09IDApCiAJbGFuZ3VhZ2UgPSBEV19MQU5HX09iakM7 CiAgICAgICBlbHNlIGlmIChzdHJjbXAgKGxhbmd1YWdlX3N0cmluZywgIkdOVSBPYmplY3RpdmUt QysrIikgPT0gMCkKZGlmZiAtLWdpdCBhL2djYy9naW1wbGlmeS5jYyBiL2djYy9naW1wbGlmeS5j YwppbmRleCBlYjU2MmMzYTMxMy4uODQ1MDM4MTUxYzMgMTAwNjQ0Ci0tLSBhL2djYy9naW1wbGlm eS5jYworKysgYi9nY2MvZ2ltcGxpZnkuY2MKQEAgLTg5Miw3ICs4OTIsMTIgQEAgbW9zdGx5X2Nv cHlfdHJlZV9yICh0cmVlICp0cCwgaW50ICp3YWxrX3N1YnRyZWVzLCB2b2lkICpkYXRhKQogICAv KiBTdG9wIGF0IHR5cGVzLCBkZWNscywgY29uc3RhbnRzIGxpa2UgY29weV90cmVlX3IuICAqLwog ICBlbHNlIGlmIChUUkVFX0NPREVfQ0xBU1MgKGNvZGUpID09IHRjY190eXBlCiAJICAgfHwgVFJF RV9DT0RFX0NMQVNTIChjb2RlKSA9PSB0Y2NfZGVjbGFyYXRpb24KLQkgICB8fCBUUkVFX0NPREVf Q0xBU1MgKGNvZGUpID09IHRjY19jb25zdGFudCkKKwkgICB8fCBUUkVFX0NPREVfQ0xBU1MgKGNv ZGUpID09IHRjY19jb25zdGFudAorCSAgIC8qIFdlIGNhbid0IGRvIGFueXRoaW5nIHNlbnNpYmxl IHdpdGggYSBCTE9DSyB1c2VkIGFzIGFuCisJICAgICAgZXhwcmVzc2lvbiwgYnV0IHdlIGFsc28g Y2FuJ3QganVzdCBkaWUgd2hlbiB3ZSBzZWUgaXQKKwkgICAgICBiZWNhdXNlIG9mIG5vbi1leHBy ZXNzaW9uIHVzZXMuICBTbyB3ZSBhdmVydCBvdXIgZXllcworCSAgICAgIGFuZCBjcm9zcyBvdXIg ZmluZ2Vycy4gIFNpbGx5IEphdmEuICAqLworCSAgIHx8IGNvZGUgPT0gQkxPQ0spCiAgICAgKndh bGtfc3VidHJlZXMgPSAwOwogCiAgIC8qIENvcGUgd2l0aCB0aGUgc3RhdGVtZW50IGV4cHJlc3Np b24gZXh0ZW5zaW9uLiAgKi8KZGlmZiAtLWdpdCBhL2djYy9pcGEtZnJlZS1sYW5nLWRhdGEuY2Mg Yi9nY2MvaXBhLWZyZWUtbGFuZy1kYXRhLmNjCmluZGV4IGNjZGJmODQ5YzI1Li5kODJkYWI4NTJk OCAxMDA2NDQKLS0tIGEvZ2NjL2lwYS1mcmVlLWxhbmctZGF0YS5jYworKysgYi9nY2MvaXBhLWZy ZWUtbGFuZy1kYXRhLmNjCkBAIC00NTEsNiArNDUxLDggQEAgZnJlZV9sYW5nX2RhdGFfaW5fdHlw ZSAodHJlZSB0eXBlLCBjbGFzcyBmcmVlX2xhbmdfZGF0YV9kICpmbGQpCiAJICAvKiBDKysgRkUg dXNlcyBUUkVFX1BVUlBPU0UgdG8gc3RvcmUgaW5pdGlhbCB2YWx1ZXMuICAqLwogCSAgVFJFRV9Q VVJQT1NFIChwKSA9IE5VTEw7CiAJfQorICAgICAgLyogSmF2YSB1c2VzIFRZUEVfTUlOX1ZBTFVF IGZvciBUWVBFX0FSR1VNRU5UX1NJR05BVFVSRS4gICovCisgICAgICBUWVBFX01JTl9WQUxVRSAo dHlwZSkgPSBOVUxMOwogICAgIH0KICAgZWxzZSBpZiAoVFJFRV9DT0RFICh0eXBlKSA9PSBNRVRI T0RfVFlQRSkKICAgICB7CkBAIC00NjEsNiArNDYzLDggQEAgZnJlZV9sYW5nX2RhdGFfaW5fdHlw ZSAodHJlZSB0eXBlLCBjbGFzcyBmcmVlX2xhbmdfZGF0YV9kICpmbGQpCiAJICBUUkVFX1ZBTFVF IChwKSA9IGZsZF9zaW1wbGlmaWVkX3R5cGUgKFRSRUVfVkFMVUUgKHApLCBmbGQpOwogCSAgVFJF RV9QVVJQT1NFIChwKSA9IE5VTEw7CiAJfQorICAgICAgLyogSmF2YSB1c2VzIFRZUEVfTUlOX1ZB TFVFIGZvciBUWVBFX0FSR1VNRU5UX1NJR05BVFVSRS4gICovCisgICAgICBUWVBFX01JTl9WQUxV RSAodHlwZSkgPSBOVUxMOwogICAgIH0KICAgZWxzZSBpZiAoUkVDT1JEX09SX1VOSU9OX1RZUEVf UCAodHlwZSkpCiAgICAgewpAQCAtNzk4LDggKzgwMiwxNiBAQCBmaW5kX2RlY2xzX3R5cGVzX3Ig KHRyZWUgKnRwLCBpbnQgKndzLCB2b2lkICpkYXRhKQogCSAgdHJlZSB0ZW07CiAJICBGT1JfRUFD SF9WRUNfRUxUICgqQklORk9fQkFTRV9CSU5GT1MgKFRZUEVfQklORk8gKHQpKSwgaSwgdGVtKQog CSAgICBmbGRfd29ya2xpc3RfcHVzaCAoVFJFRV9UWVBFICh0ZW0pLCBmbGQpOwotCSAgZmxkX3dv cmtsaXN0X3B1c2ggKEJJTkZPX1RZUEUgKFRZUEVfQklORk8gKHQpKSwgZmxkKTsKLQkgIGZsZF93 b3JrbGlzdF9wdXNoIChCSU5GT19WVEFCTEUgKFRZUEVfQklORk8gKHQpKSwgZmxkKTsKKwkgIHRl bSA9IEJJTkZPX1ZJUlRVQUxTIChUWVBFX0JJTkZPICh0KSk7CisJICBpZiAodGVtCisJICAgICAg LyogVGhlIEphdmEgRkUgb3ZlcmxvYWRzIEJJTkZPX1ZJUlRVQUxTIGZvciBpdHMgb3duIHB1cnBv c2UuICAqLworCSAgICAgICYmIFRSRUVfQ09ERSAodGVtKSA9PSBUUkVFX0xJU1QpCisJICAgIGRv CisJICAgICAgeworCQlmbGRfd29ya2xpc3RfcHVzaCAoVFJFRV9WQUxVRSAodGVtKSwgZmxkKTsK KwkJdGVtID0gVFJFRV9DSEFJTiAodGVtKTsKKwkgICAgICB9CisJICAgIHdoaWxlICh0ZW0pOwog CX0KICAgICAgIGlmIChSRUNPUkRfT1JfVU5JT05fVFlQRV9QICh0KSkKIAl7CmRpZmYgLS1naXQg YS9nY2MvdHJlZS5jYyBiL2djYy90cmVlLmNjCmluZGV4IDBkYmFjMWNiMWY0Li5lYjc5OTRkN2Nh ZSAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUuY2MKKysrIGIvZ2NjL3RyZWUuY2MKQEAgLTEzOTAwLDgg KzEzOTAwLDE3IEBAIHZlcmlmeV90eXBlIChjb25zdF90cmVlIHQpCiAJCQkJICAgICBUUkVFX1RZ UEUgKFRZUEVfTUlOX1ZBTFVFICh0KSkKIAkgYnV0IGRvZXMgbm90IGZvciBDIHNpemV0eXBlcyBp biBMVE8uICAqLwogICAgIH0KKyAgLyogSmF2YSB1c2VzIFRZUEVfTUlOX1ZBTFVFX1JBVyBmb3Ig VFlQRV9BUkdVTUVOVF9TSUdOQVRVUkUuICAqLworICBlbHNlIGlmIChUWVBFX01JTl9WQUxVRV9S QVcgKHQpCisJICAgJiYgKChUUkVFX0NPREUgKHQpICE9IE1FVEhPRF9UWVBFICYmIFRSRUVfQ09E RSAodCkgIT0gRlVOQ1RJT05fVFlQRSkKKwkgICAgICAgfHwgaW5fbHRvX3ApKQorICAgIHsKKyAg ICAgIGVycm9yICgiJTxUWVBFX01JTl9WQUxVRV9SQVclPiBub24tTlVMTCIpOworICAgICAgZGVi dWdfdHJlZSAoVFlQRV9NSU5fVkFMVUVfUkFXICh0KSk7CisgICAgICBlcnJvcl9mb3VuZCA9IHRy dWU7CisgICAgfQogCi0gIC8qIENoZWNrIHZhcmlvdXMgdXNlcyBvZiBUWVBFX01BWFZBTF9SQVcu ICAqLworICAvKiBDaGVjayB2YXJpb3VzIHVzZXMgb2YgVFlQRV9NQVhfVkFMVUVfUkFXLiAgKi8K ICAgaWYgKFJFQ09SRF9PUl9VTklPTl9UWVBFX1AgKHQpKQogICAgIHsKICAgICAgIGlmICghVFlQ RV9CSU5GTyAodCkpCkBAIC0xMzkxMiw3ICsxMzkyMSw5IEBAIHZlcmlmeV90eXBlIChjb25zdF90 cmVlIHQpCiAJICBkZWJ1Z190cmVlIChUWVBFX0JJTkZPICh0KSk7CiAJICBlcnJvcl9mb3VuZCA9 IHRydWU7CiAJfQotICAgICAgZWxzZSBpZiAoVFJFRV9UWVBFIChUWVBFX0JJTkZPICh0KSkgIT0g VFlQRV9NQUlOX1ZBUklBTlQgKHQpKQorICAgICAgLyogRklYTUU6IEphdmEgYnVpbGRzIGludmFs aWQgZW1wdHkgYmluZm9zIHRoYXQgZG8gbm90IGhhdmUKKwkgVFJFRV9UWVBFIHNldC4gICovCisg ICAgICBlbHNlIGlmIChUUkVFX1RZUEUgKFRZUEVfQklORk8gKHQpKSAhPSBUWVBFX01BSU5fVkFS SUFOVCAodCkgJiYgMCkKIAl7CiAJICBlcnJvciAoIiU8VFlQRV9CSU5GTyU+IHR5cGUgaXMgbm90 ICU8VFlQRV9NQUlOX1ZBUklBTlQlPiIpOwogCSAgZGVidWdfdHJlZSAoVFJFRV9UWVBFIChUWVBF X0JJTkZPICh0KSkpOwpAQCAtMTQxMTgsNiArMTQxMjksMjEgQEAgdmVyaWZ5X3R5cGUgKGNvbnN0 X3RyZWUgdCkKICAgICAgIGVycm9yICgiJTxUWVBFX0NBQ0hFRF9WQUxVRVNfUCU+IGlzIHNldCB3 aGlsZSBpdCBzaG91bGQgbm90IGJlIik7CiAgICAgICBlcnJvcl9mb3VuZCA9IHRydWU7CiAgICAg fQorICBlbHNlIGlmICgoVFJFRV9DT0RFICh0KSA9PSBBUlJBWV9UWVBFIHx8IFRSRUVfQ09ERSAo dCkgPT0gSU5URUdFUl9UWVBFKQorICAgICAgJiYgVFlQRV9TVFJJTkdfRkxBRyAodCkpCisgICAg eworICAgICAgY29uc3RfdHJlZSBiID0gdDsKKyAgICAgIGlmIChUUkVFX0NPREUgKGIpID09IEFS UkFZX1RZUEUpCisJYiA9IFRSRUVfVFlQRSAodCk7CisgICAgICAvKiBKYXZhIGJ1aWxkcyBhcnJh eXMgd2l0aCBUWVBFX1NUUklOR19GTEFHIG9mIHByb21vdGVkX2NoYXJfdHlwZQorCSB0aGF0IGlz IDMyYml0cy4gICovCisgICAgICBpZiAoVFJFRV9DT0RFIChiKSAhPSBJTlRFR0VSX1RZUEUpCisJ eworCSAgZXJyb3IgKCIlPFRZUEVfU1RSSU5HX0ZMQUclPiBpcyBzZXQgb24gdHlwZSB0aGF0IGRv ZXMgbm90IGxvb2sgbGlrZSAiCisJCSAiJTxjaGFyJT4gbm9yIGFycmF5IG9mIGNoYXJzIik7CisJ ICBlcnJvcl9mb3VuZCA9IHRydWU7CisJfQorICAgIH0KICAgCiAgIC8qIGlwYS1kZXZpcnQgbWFr ZXMgYW4gYXNzdW1wdGlvbiB0aGF0IFRZUEVfTUVUSE9EX0JBU0VUWVBFIGlzIGFsd2F5cwogICAg ICBUWVBFX01BSU5fVkFSSUFOVCBhbmQgaXQgd291bGQgYmUgb2RkIHRvIGFkZCBtZXRob2RzIG9u bHkgdG8gdmFyaWF0bnMKLS0gCjIuMzguMQoK --0000000000008a1ab805ee477b51--