Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1whjTm-000OAJ-0u for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Jul 2026 07:47:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1whjTk-00BdhG-26 for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Jul 2026 07:47:29 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1whjTj-00Bdgk-2U for pgsql-hackers@lists.postgresql.org; Thu, 09 Jul 2026 07:47:29 +0000 Received: from mail-ej1-x634.google.com ([2a00:1450:4864:20::634]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1whjTd-00000000Hdo-1m0P for pgsql-hackers@lists.postgresql.org; Thu, 09 Jul 2026 07:47:27 +0000 Received: by mail-ej1-x634.google.com with SMTP id a640c23a62f3a-c15cf78d1a2so140286366b.1 for ; Thu, 09 Jul 2026 00:47:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1783583239; x=1784188039; darn=lists.postgresql.org; h=in-reply-to:references:cc:from:to:subject:message-id:date :mime-version:content-type:from:to:cc:subject:date:message-id :reply-to:content-type; bh=E6LwOGMCMwWwYfH/wdSGphf42q++liEXeE9u/PXjmTc=; b=SdpRHTvNOKTHZlvG0YVigMlOuHQakoUiNJKKQqbxvNMZzcHYMw51/wuqHLdy82jgs+ k6Bno+QQeFYC8xeS2xI4DUotqWn723PGSZcH0Qe4Y4oo5JrfUi/iw+QrPZq83TZ58bRY px+YxijwGya1QsindJIn3HDjzYAY+IW4iCZ+vjDaHBQoYkBzxFjV0Ji3VWdK6s72ivDj 6ViAJz9cj2JQsnTrZm20AABRwCS2JCTSVhfmlPc9RO0bctwBeBzjpBIk2vfda2kh3/go v3Lm2KgTuDSJ+Xqc17EAUxcLDNB0Vc1EuaG4oLOeINbvnKkP57AM/A3SkSHni1Gs1mrZ jYgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783583239; x=1784188039; h=in-reply-to:references:cc:from:to:subject:message-id:date :mime-version:content-type:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=E6LwOGMCMwWwYfH/wdSGphf42q++liEXeE9u/PXjmTc=; b=Kx8BhhckRl46+oflc/dcxiySa6boPP83I/F6KLFXM6ekuc2UgOHhliicbbq0eWTO44 CRCa8t9HtceHQ5TUmJZ52Am2SlrigGt5QYwkYwYGVBtllo2sE2uWC9KGPXsX0dh5U9qo x4Fs4cjxH1CupFe9EeDJIHYSelJmALyFghyyqz41OH7W+HBlGpoLgc3BQ9Y7YxwidN3w nqsu6m0bfPV5HLLxszH6iQS1qkgsp4x+qaZ6b9Mp7/rPjoCMG/9SJlhy25jOo+WFg/Ng tbhQOsIjxJNy2hLZVrFmdf3EXv/ME90aO360sz6v+Sp3jxMD+Iel5rlFrlXQgN6p/kE8 AYkg== X-Gm-Message-State: AOJu0YykLDgrMdSWctJUkk80OwSJLIxsJLTLaauBDUL6CDa4Tku2QtCH SBNbmEZRfPJpotPQSNwTdt+KITtpUhH1e0OHbUegxIHyMmtba17+nlRou3vSQyTy86o= X-Gm-Gg: AfdE7cmHgmzU0Z9uH3qj7ujjN/eIZI56qWeY4SMXPejSQly/xGBIeubAoIOKa1jVe5W SzgSlanefEfIRceoPCeoCOiZRtktmnJuOV4AvAmahVsNygSBj5i27umdzwg1UrZJT8IrpuNqxW3 MCjxcF5F7sfDCrm95xYs9mscJYVFei34fJWC57T3NjgDWsftaDilhSu3RJgj8euS1XXXem1l0xH Tgii+1Oro1HY7QluDiAXFd4iG5B2dfahpoclzOryygRcffiWJ1BnN2ihLI0v5/Chsl8UWhtkT21 GiWABHj7YRDMUGn235S0jge7bYan6NKBGrWZ8zOdmMUZCijK3ylR+J8ljJzXW9munufFcUGL+Uh jeHNuT7gLZFgabcIQBsgK87uim1l4NyrVxanyI3UWD9Z2J0beN3MflzfLoScYJ3fy0Wp819Hj+Y f8NAGOGOIRUJTHCJ081Jmc2PUsQGtAGlKXyPdSwA== X-Received: by 2002:a17:906:7311:b0:c12:a425:cbca with SMTP id a640c23a62f3a-c15ce120431mr253164366b.54.1783583236222; Thu, 09 Jul 2026 00:47:16 -0700 (PDT) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c15ad844cacsm450520466b.19.2026.07.09.00.47.14 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 09 Jul 2026 00:47:14 -0700 (PDT) Content-Type: multipart/mixed; boundary=16407362cd95456687a9f74fa396331c7bb1f2b42fbbf0186421d2cfd94b Mime-Version: 1.0 Date: Thu, 09 Jul 2026 09:47:14 +0200 Message-Id: Subject: Re: Don't use the deprecated and insecure PQcancel in our frontend tools anymore To: "Heikki Linnakangas" From: "Jelte Fennema-Nio" Cc: "PostgreSQL Hackers" , "Alvaro Herrera" , "Jacob Champion" X-Mailer: aerc 0.20.1-31-gf6db7c329ce0 References: <88dfe280-ba29-4943-95b8-63abc9f3f771@iki.fi> <9d7ba3ac-d660-483e-8f68-9096a2464e90@iki.fi> In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --16407362cd95456687a9f74fa396331c7bb1f2b42fbbf0186421d2cfd94b Content-Type: multipart/alternative; boundary=b8570d2c54946c5115955dec1bc43ad45a27e41010e3ecf6a41bbedeb88d --b8570d2c54946c5115955dec1bc43ad45a27e41010e3ecf6a41bbedeb88d Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Tue Jul 7, 2026 at 9:54 AM CEST, Jelte Fennema-Nio wrote: > Attached is a new version that improves the > comment and starts using the same 1 second poll on all platforms. Rebased on top of latest master (on top of the no more TerminateThread comm= it) --b8570d2c54946c5115955dec1bc43ad45a27e41010e3ecf6a41bbedeb88d-- --16407362cd95456687a9f74fa396331c7bb1f2b42fbbf0186421d2cfd94b Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v10-0001-psql-Replace-cancel_pressed-with-CancelRequested.patch Content-Type: text/x-patch; charset=utf-8; name=v10-0001-psql-Replace-cancel_pressed-with-CancelRequested.patch RnJvbSBmZGQzMmJiNmY5OWI5MmNmODZkOTIzYmJmYjU2YjZkNjFhNjhkN2E3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUdWUsIDcgQXByIDIwMjYgMTg6MjQ6MDEgKzAyMDAKU3ViamVjdDogW1BBVENIIHYx MCAxLzRdIHBzcWw6IFJlcGxhY2UgY2FuY2VsX3ByZXNzZWQgd2l0aCBDYW5jZWxSZXF1ZXN0ZWQK CkluIGE0ZmQzYWE3IHNyYy9mZV91dGlscy9jYW5jZWwuYyB3YXMgaW50cm9kdWNlZCB3aGljaCBh ZGRlZAp0aGUgQ2FuY2VsUmVxdWVzdGVkIHZhcmlhYmxlLiBUaGlzIG5ldyB2YXJpYWJsZSB3YXMg dXNlZCBpbiBwc3FsIHRvCnJlcGxhY2UgdGhlIGNhbmNlbF9wcmVzc2VkIHZhcmlhYmxlLCBidXQg dGhhdCBxdWlja2x5IGdvdCByZXZlcnRlZCBpbgo1ZDQzYzNjNTQuIFRoZSByZWFzb24gd2FzIHRo YXQgY2FuY2VsX3ByZXNzZWQgaGFkIG5vdCBmdWxseSByZXBsYWNlZCBieQpDYW5jZWxSZXF1ZXN0 ZWQgZXZlcnl3aGVyZSBpbiB0aGUgY29kZSwgYW5kIHRoZSBtaXhlZCB1c2FnZSBjYXVzZWQKaXNz dWVzIChlLmcuIHdpdGggXHdhdGNoKS4KClRoaXMgbm93IGRvZXMgdGhhdCBvcmlnaW5hbCByZWZh Y3RvciBjb3JyZWN0bHkgYnkgdXNpbmcgQ2FuY2VsUmVxdWVzdGVkCmV2ZXJ5d2hlcmUgYW5kIGNv bXBsZXRlbHkgZ2V0dGluZyByaWQgb2YgY2FuY2VsX3ByZXNzZWQuCgo1ZDQzYzNjNTQgbWVudGlv bnMgdGhlIC0tc2luZ2xlLXN0ZXAgZmxhZyBhcyBzb21ldGhpbmcgdGhhdCByZXF1aXJlZApmdXJ0 aGVyIGFuYWx5c2lzLiBJIHRyaWVkIC0tc2luZ2xlLXN0ZXAgd2l0aCBhbmQgd2l0aG91dCB0aGlz IGNvbW1pdCwKYW5kIEN0cmwrQyBiZWhhdmVzIHRoZSBzYW1lIGluIGJvdGguIEkgYWxzbyBjYW5u b3QgdGhpbmsgb2YgYSByZWFzb24gd2h5Cml0IHdvdWxkIGJlaGF2ZSBhbnkgZGlmZmVyZW50bHku CgpUaGUgb25seSBzbGlnaHQgYmVoYXZpb3JhbCBjaGFuZ2UgSSBjb3VsZCB0aGluayBvZiB3YXMg dGhhdApjYW5jZWxfcHJlc3NlZCB3YXMgc2V0IGFmdGVyIHBzcWwncyBsb25nanVtcCwgYW5kIENh bmNlbFJlcXVlc3RlZCBpcyBzZXQKYmVmb3JlLiBCdXQgc2luY2UgQ2FuY2VsUmVxdWVzdGVkIGlz IG5vdyBzZXQgdG8gZmFsc2UgYWZ0ZXIgdGhlIGxvbmdqdW1wCnRoZXJlJ3Mgbm8gcHJhY3RpY2Fs IGRpZmZlcmVuY2UgY2F1c2VkIGJ5IHRoYXQuCi0tLQogc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYyAg ICAgICB8ICAxMCArKy0tCiBzcmMvYmluL3BzcWwvY29tbW9uLmMgICAgICAgIHwgIDIxICsrKyst LS0tCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgIHwgICA5ICsrLS0KIHNyYy9iaW4vcHNx bC9tYWlubG9vcC5jICAgICAgfCAgIDcgKy0tCiBzcmMvYmluL3BzcWwvdmFyaWFibGVzLmMgICAg IHwgICAzICstCiBzcmMvZmVfdXRpbHMvcHJpbnQuYyAgICAgICAgIHwgMTAxICsrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9mZV91dGlscy9wcmludC5oIHwg ICAyIC0KIDcgZmlsZXMgY2hhbmdlZCwgNzQgaW5zZXJ0aW9ucygrKSwgNzkgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYyBiL3NyYy9iaW4vcHNxbC9jb21t YW5kLmMKaW5kZXggN2ZkZDQ1MTFhMzYuLjczN2VlNWFiOTk1IDEwMDY0NAotLS0gYS9zcmMvYmlu L3BzcWwvY29tbWFuZC5jCisrKyBiL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKQEAgLTQzOTIsNyAr NDM5Miw3IEBAIHdhaXRfdW50aWxfY29ubmVjdGVkKFBHY29ubiAqY29ubikKIAkJICogT24gZXZl cnkgaXRlcmF0aW9uIG9mIHRoZSBjb25uZWN0aW9uIHNlcXVlbmNlLCBsZXQncyBjaGVjayBpZiB0 aGUKIAkJICogdXNlciBoYXMgcmVxdWVzdGVkIGEgY2FuY2VsbGF0aW9uLgogCQkgKi8KLQkJaWYg KGNhbmNlbF9wcmVzc2VkKQorCQlpZiAoQ2FuY2VsUmVxdWVzdGVkKQogCQkJYnJlYWs7CiAKIAkJ LyoKQEAgLTQ0MDQsNyArNDQwNCw3IEBAIHdhaXRfdW50aWxfY29ubmVjdGVkKFBHY29ubiAqY29u bikKIAkJCWJyZWFrOwogCiAJCS8qCi0JCSAqIElmIHRoZSB1c2VyIHNlbmRzIFNJR0lOVCBiZXR3 ZWVuIHRoZSBjYW5jZWxfcHJlc3NlZCBjaGVjaywgYW5kCisJCSAqIElmIHRoZSB1c2VyIHNlbmRz IFNJR0lOVCBiZXR3ZWVuIHRoZSBDYW5jZWxSZXF1ZXN0ZWQgY2hlY2ssIGFuZAogCQkgKiBwb2xs aW5nIG9mIHRoZSBzb2NrZXQsIGl0IHdpbGwgbm90IGJlIHJlY29nbml6ZWQuIEluc3RlYWQsIHdl IHdpbGwKIAkJICoganVzdCB3YWl0IHVudGlsIHRoZSBuZXh0IHN0ZXAgaW4gdGhlIGNvbm5lY3Rp b24gc2VxdWVuY2Ugb3IKIAkJICogZm9yZXZlciwgd2hpY2ggbWlnaHQgcmVxdWlyZSB1c2VycyB0 byBzZW5kIFNJR1RFUk0gb3IgU0lHUVVJVC4KQEAgLTQ0MTUsNyArNDQxNSw3IEBAIHdhaXRfdW50 aWxfY29ubmVjdGVkKFBHY29ubiAqY29ubikKIAkJICogVGhlIHNlbGYtcGlwZSB0cmljayByZXF1 aXJlcyBhIGJpdCBvZiBjb2RlIHRvIHNldHVwLiBwc2VsZWN0KDIpIGFuZAogCQkgKiBwcG9sbCgy KSBhcmUgbm90IG9uIGFsbCB0aGUgcGxhdGZvcm1zIHdlIHN1cHBvcnQuIFRoZSBzaW1wbGVzdAog CQkgKiBzb2x1dGlvbiBoYXBwZW5zIHRvIGp1c3QgYmUgYWRkaW5nIGEgdGltZW91dCwgc28gbGV0 J3Mgd2FpdCBmb3IgMQotCQkgKiBzZWNvbmQgYW5kIGNoZWNrIGNhbmNlbF9wcmVzc2VkIGFnYWlu LgorCQkgKiBzZWNvbmQgYW5kIGNoZWNrIENhbmNlbFJlcXVlc3RlZCBhZ2Fpbi4KIAkJICovCiAJ CWVuZF90aW1lID0gUFFnZXRDdXJyZW50VGltZVVTZWMoKSArIDEwMDAwMDA7CiAJCXJjID0gUFFz b2NrZXRQb2xsKHNvY2ssIGZvclJlYWQsICFmb3JSZWFkLCBlbmRfdGltZSk7CkBAIC02MDgyLDcg KzYwODIsNyBAQCBkb193YXRjaChQUUV4cEJ1ZmZlciBxdWVyeV9idWYsIGRvdWJsZSBzbGVlcCwg aW50IGl0ZXIsIGludCBtaW5fcm93cykKIAkJCWxvbmcJCXMgPSBNaW4oaSwgMTAwMEwpOwogCiAJ CQlwZ191c2xlZXAocyAqIDEwMDBMKTsKLQkJCWlmIChjYW5jZWxfcHJlc3NlZCkKKwkJCWlmIChD YW5jZWxSZXF1ZXN0ZWQpCiAJCQl7CiAJCQkJZG9uZSA9IHRydWU7CiAJCQkJYnJlYWs7CkBAIC02 MDkyLDcgKzYwOTIsNyBAQCBkb193YXRjaChQUUV4cEJ1ZmZlciBxdWVyeV9idWYsIGRvdWJsZSBz bGVlcCwgaW50IGl0ZXIsIGludCBtaW5fcm93cykKICNlbHNlCiAJCS8qIHNpZ3dhaXQoKSB3aWxs IGhhbmRsZSBTSUdJTlQuICovCiAJCXNpZ3Byb2NtYXNrKFNJR19CTE9DSywgJnNpZ2ludCwgTlVM TCk7Ci0JCWlmIChjYW5jZWxfcHJlc3NlZCkKKwkJaWYgKENhbmNlbFJlcXVlc3RlZCkKIAkJCWRv bmUgPSB0cnVlOwogCiAJCS8qIFdhaXQgZm9yIFNJR0lOVCwgU0lHQ0hMRCBvciBTSUdBTFJNLiAq LwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2NvbW1vbi5jIGIvc3JjL2Jpbi9wc3FsL2NvbW1v bi5jCmluZGV4IDdkYjgwMjVkMjRjLi43MjFmODczM2E1MyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w c3FsL2NvbW1vbi5jCisrKyBiL3NyYy9iaW4vcHNxbC9jb21tb24uYwpAQCAtMjkyLDcgKzI5Miw3 IEBAIE5vdGljZVByb2Nlc3Nvcih2b2lkICphcmcsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiAgKgog ICogU0lHSU5UIGlzIHN1cHBvc2VkIHRvIGFib3J0IGFsbCBsb25nLXJ1bm5pbmcgcHNxbCBvcGVy YXRpb25zLCBub3Qgb25seQogICogZGF0YWJhc2UgcXVlcmllcy4gIEluIG1vc3QgcGxhY2VzLCB0 aGlzIGlzIGFjY29tcGxpc2hlZCBieSBjaGVja2luZwotICogY2FuY2VsX3ByZXNzZWQgZHVyaW5n IGxvbmctcnVubmluZyBsb29wcy4gIEhvd2V2ZXIsIHRoYXQgd29uJ3Qgd29yayB3aGVuCisgKiBD YW5jZWxSZXF1ZXN0ZWQgZHVyaW5nIGxvbmctcnVubmluZyBsb29wcy4gIEhvd2V2ZXIsIHRoYXQg d29uJ3Qgd29yayB3aGVuCiAgKiBibG9ja2VkIG9uIHVzZXIgaW5wdXQgKGluIHJlYWRsaW5lKCkg b3IgZmdldHMoKSkuICBJbiB0aG9zZSBwbGFjZXMsIHdlCiAgKiBzZXQgc2lnaW50X2ludGVycnVw dF9lbmFibGVkIHRydWUgd2hpbGUgYmxvY2tlZCwgaW5zdHJ1Y3RpbmcgdGhlIHNpZ25hbAogICog Y2F0Y2hlciB0byBsb25nam1wIHRocm91Z2ggc2lnaW50X2ludGVycnVwdF9qbXAuICBXZSBhc3N1 bWUgcmVhZGxpbmUgYW5kCkBAIC0zMTYsOSArMzE2LDYgQEAgcHNxbF9jYW5jZWxfY2FsbGJhY2so dm9pZCkKIAkJc2lnbG9uZ2ptcChzaWdpbnRfaW50ZXJydXB0X2ptcCwgMSk7CiAJfQogI2VuZGlm Ci0KLQkvKiBlbHNlLCBzZXQgY2FuY2VsIGZsYWcgdG8gc3RvcCBhbnkgbG9uZy1ydW5uaW5nIGxv b3BzICovCi0JY2FuY2VsX3ByZXNzZWQgPSB0cnVlOwogfQogCiB2b2lkCkBAIC04ODEsOCArODc4 LDggQEAgRXhlY1F1ZXJ5VHVwbGVzKGNvbnN0IFBHcmVzdWx0ICpyZXN1bHQpCiAJCQl7CiAJCQkJ Y29uc3QgY2hhciAqcXVlcnkgPSBQUWdldHZhbHVlKHJlc3VsdCwgciwgYyk7CiAKLQkJCQkvKiBB YmFuZG9uIGV4ZWN1dGlvbiBpZiBjYW5jZWxfcHJlc3NlZCAqLwotCQkJCWlmIChjYW5jZWxfcHJl c3NlZCkKKwkJCQkvKiBBYmFuZG9uIGV4ZWN1dGlvbiBpZiBDYW5jZWxSZXF1ZXN0ZWQgKi8KKwkJ CQlpZiAoQ2FuY2VsUmVxdWVzdGVkKQogCQkJCQlnb3RvIGxvb3BfZXhpdDsKIAogCQkJCS8qCkBA IC0xMTQ2LDcgKzExNDMsNyBAQCBTZW5kUXVlcnkoY29uc3QgY2hhciAqcXVlcnkpCiAJCWlmIChm Z2V0cyhidWYsIHNpemVvZihidWYpLCBzdGRpbikgIT0gTlVMTCkKIAkJCWlmIChidWZbMF0gPT0g J3gnKQogCQkJCWdvdG8gc2VuZHF1ZXJ5X2NsZWFudXA7Ci0JCWlmIChjYW5jZWxfcHJlc3NlZCkK KwkJaWYgKENhbmNlbFJlcXVlc3RlZCkKIAkJCWdvdG8gc2VuZHF1ZXJ5X2NsZWFudXA7CiAJfQog CWVsc2UgaWYgKHBzZXQuZWNobyA9PSBQU1FMX0VDSE9fUVVFUklFUykKQEAgLTE3NjgsNyArMTc2 NSw3IEBAIEV4ZWNRdWVyeUFuZFByb2Nlc3NSZXN1bHRzKGNvbnN0IGNoYXIgKnF1ZXJ5LAogCSAq IGNvbnN1bWVkLiAgVGhlIHVzZXIncyBpbnRlbnRpb24sIHRob3VnaCwgaXMgdG8gY2FuY2VsIHRo ZSBlbnRpcmUgd2F0Y2gKIAkgKiBwcm9jZXNzLCBzbyBkZXRlY3QgYSBzZW50IGNhbmNlbGxhdGlv biByZXF1ZXN0IGFuZCBleGl0IGluIHRoaXMgY2FzZS4KIAkgKi8KLQlpZiAoaXNfd2F0Y2ggJiYg Y2FuY2VsX3ByZXNzZWQpCisJaWYgKGlzX3dhdGNoICYmIENhbmNlbFJlcXVlc3RlZCkKIAl7CiAJ CUNsZWFyT3JTYXZlQWxsUmVzdWx0cygpOwogCQlyZXR1cm4gMDsKQEAgLTE5ODYsNyArMTk4Myw3 IEBAIEV4ZWNRdWVyeUFuZFByb2Nlc3NSZXN1bHRzKGNvbnN0IGNoYXIgKnF1ZXJ5LAogCQkJCSAq IHVzZSBvZiBjaHVua2luZyBmb3IgYWxsIGNhc2VzIGluIHdoaWNoIFByaW50UXVlcnlSZXN1bHQK IAkJCQkgKiB3b3VsZCBzZW5kIHRoZSByZXN1bHQgdG8gc29tZXBsYWNlIG90aGVyIHRoYW4gcHJp bnRRdWVyeS4KIAkJCQkgKi8KLQkJCQlpZiAoc3VjY2VzcyAmJiAhZmx1c2hfZXJyb3IgJiYgIWNh bmNlbF9wcmVzc2VkKQorCQkJCWlmIChzdWNjZXNzICYmICFmbHVzaF9lcnJvciAmJiAhQ2FuY2Vs UmVxdWVzdGVkKQogCQkJCXsKIAkJCQkJcHJpbnRRdWVyeShyZXN1bHQsICZteV9wb3B0LCB0dXBs ZXNfZm91dCwgaXNfcGFnZXIsIHBzZXQubG9nZmlsZSk7CiAJCQkJCWZsdXNoX2Vycm9yID0gZmZs dXNoKHR1cGxlc19mb3V0KTsKQEAgLTIwMTMsNyArMjAxMCw3IEBAIEV4ZWNRdWVyeUFuZFByb2Nl c3NSZXN1bHRzKGNvbnN0IGNoYXIgKnF1ZXJ5LAogCQkJCUFzc2VydChQUW50dXBsZXMocmVzdWx0 KSA9PSAwKTsKIAogCQkJCS8qIERpc3BsYXkgdGhlIGZvb3RlciB1c2luZyB0aGUgZW1wdHkgcmVz dWx0ICovCi0JCQkJaWYgKHN1Y2Nlc3MgJiYgIWZsdXNoX2Vycm9yICYmICFjYW5jZWxfcHJlc3Nl ZCkKKwkJCQlpZiAoc3VjY2VzcyAmJiAhZmx1c2hfZXJyb3IgJiYgIUNhbmNlbFJlcXVlc3RlZCkK IAkJCQl7CiAJCQkJCW15X3BvcHQudG9wdC5zdG9wX3RhYmxlID0gdHJ1ZTsKIAkJCQkJcHJpbnRR dWVyeShyZXN1bHQsICZteV9wb3B0LCB0dXBsZXNfZm91dCwgaXNfcGFnZXIsIHBzZXQubG9nZmls ZSk7CkBAIC0yMTcyLDcgKzIxNjksNyBAQCBFeGVjUXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhjb25z dCBjaGFyICpxdWVyeSwKIAkJQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0KTsKIAkJcmVzdWx0ID0g bmV4dF9yZXN1bHQ7CiAKLQkJaWYgKGNhbmNlbF9wcmVzc2VkICYmIFBRcGlwZWxpbmVTdGF0dXMo cHNldC5kYikgPT0gUFFfUElQRUxJTkVfT0ZGKQorCQlpZiAoQ2FuY2VsUmVxdWVzdGVkICYmIFBR cGlwZWxpbmVTdGF0dXMocHNldC5kYikgPT0gUFFfUElQRUxJTkVfT0ZGKQogCQl7CiAJCQkvKgog CQkJICogT3V0c2lkZSBvZiBhIHBpcGVsaW5lLCBkcm9wIHRoZSBuZXh0IHJlc3VsdCwgYXMgd2Vs bCBhcyBhbnkKQEAgLTIyMjksNyArMjIyNiw3IEBAIEV4ZWNRdWVyeUFuZFByb2Nlc3NSZXN1bHRz KGNvbnN0IGNoYXIgKnF1ZXJ5LAogCWlmICghQ2hlY2tDb25uZWN0aW9uKCkpCiAJCXJldHVybiAt MTsKIAotCWlmIChjYW5jZWxfcHJlc3NlZCB8fCByZXR1cm5fZWFybHkpCisJaWYgKENhbmNlbFJl cXVlc3RlZCB8fCByZXR1cm5fZWFybHkpCiAJCXJldHVybiAwOwogCiAJcmV0dXJuIHN1Y2Nlc3Mg PyAxIDogLTE7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4v cHNxbC9kZXNjcmliZS5jCmluZGV4IGZlZjg2YjRjY2EzLi5lZmY3MzQwMDRhNSAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMK QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJjb21tb24uaCIKICNpbmNsdWRlICJjb21tb24v bG9nZ2luZy5oIgogI2luY2x1ZGUgImRlc2NyaWJlLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvY2Fu Y2VsLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvbWJwcmludC5oIgogI2luY2x1ZGUgImZlX3V0aWxz L3ByaW50LmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvc3RyaW5nX3V0aWxzLmgiCkBAIC0xNTEyLDcg KzE1MTMsNyBAQCBkZXNjcmliZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29s IHZlcmJvc2UsIGJvb2wgc2hvd1N5c3RlbSkKIAkJCVBRY2xlYXIocmVzKTsKIAkJCXJldHVybiBm YWxzZTsKIAkJfQotCQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJCWlmIChDYW5jZWxSZXF1ZXN0ZWQp CiAJCXsKIAkJCVBRY2xlYXIocmVzKTsKIAkJCXJldHVybiBmYWxzZTsKQEAgLTU0OTgsNyArNTQ5 OSw3IEBAIGxpc3RUU1BhcnNlcnNWZXJib3NlKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQlyZXR1 cm4gZmFsc2U7CiAJCX0KIAotCQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJCWlmIChDYW5jZWxSZXF1 ZXN0ZWQpCiAJCXsKIAkJCVBRY2xlYXIocmVzKTsKIAkJCXJldHVybiBmYWxzZTsKQEAgLTU4ODgs NyArNTg4OSw3IEBAIGxpc3RUU0NvbmZpZ3NWZXJib3NlKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJ CQlyZXR1cm4gZmFsc2U7CiAJCX0KIAotCQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJCWlmIChDYW5j ZWxSZXF1ZXN0ZWQpCiAJCXsKIAkJCVBRY2xlYXIocmVzKTsKIAkJCXJldHVybiBmYWxzZTsKQEAg LTYzNjcsNyArNjM2OCw3IEBAIGxpc3RFeHRlbnNpb25Db250ZW50cyhjb25zdCBjaGFyICpwYXR0 ZXJuKQogCQkJUFFjbGVhcihyZXMpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9Ci0JCWlmIChjYW5j ZWxfcHJlc3NlZCkKKwkJaWYgKENhbmNlbFJlcXVlc3RlZCkKIAkJewogCQkJUFFjbGVhcihyZXMp OwogCQkJcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL21haW5sb29wLmMg Yi9zcmMvYmluL3BzcWwvbWFpbmxvb3AuYwppbmRleCAxZjQwOWE1NzNiNy4uZTMwZWI2MTM2MTgg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9tYWlubG9vcC5jCisrKyBiL3NyYy9iaW4vcHNxbC9t YWlubG9vcC5jCkBAIC0xMCw2ICsxMCw3IEBACiAjaW5jbHVkZSAiY29tbWFuZC5oIgogI2luY2x1 ZGUgImNvbW1vbi5oIgogI2luY2x1ZGUgImNvbW1vbi9sb2dnaW5nLmgiCisjaW5jbHVkZSAiZmVf dXRpbHMvY2FuY2VsLmgiCiAjaW5jbHVkZSAiaW5wdXQuaCIKICNpbmNsdWRlICJtYWlubG9vcC5o IgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCkBAIC04NSw3ICs4Niw3IEBAIE1haW5Mb29wKEZJ TEUgKnNvdXJjZSkKIAkJLyoKIAkJICogQ2xlYW4gdXAgYWZ0ZXIgYSBwcmV2aW91cyBDb250cm9s LUMKIAkJICovCi0JCWlmIChjYW5jZWxfcHJlc3NlZCkKKwkJaWYgKENhbmNlbFJlcXVlc3RlZCkK IAkJewogCQkJaWYgKCFwc2V0LmN1cl9jbWRfaW50ZXJhY3RpdmUpCiAJCQl7CkBAIC05Niw3ICs5 Nyw3IEBAIE1haW5Mb29wKEZJTEUgKnNvdXJjZSkKIAkJCQlicmVhazsKIAkJCX0KIAotCQkJY2Fu Y2VsX3ByZXNzZWQgPSBmYWxzZTsKKwkJCUNhbmNlbFJlcXVlc3RlZCA9IGZhbHNlOwogCQl9CiAK IAkJLyoKQEAgLTExOCw3ICsxMTksNyBAQCBNYWluTG9vcChGSUxFICpzb3VyY2UpCiAJCQlwcm9t cHRfc3RhdHVzID0gUFJPTVBUX1JFQURZOwogCQkJbmVlZF9yZWRpc3BsYXkgPSBmYWxzZTsKIAkJ CXBzZXQuc3RtdF9saW5lbm8gPSAxOwotCQkJY2FuY2VsX3ByZXNzZWQgPSBmYWxzZTsKKwkJCUNh bmNlbFJlcXVlc3RlZCA9IGZhbHNlOwogCiAJCQlpZiAocHNldC5jdXJfY21kX2ludGVyYWN0aXZl KQogCQkJewpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3ZhcmlhYmxlcy5jIGIvc3JjL2Jpbi9w c3FsL3ZhcmlhYmxlcy5jCmluZGV4IDgwNjBmMjk1OWNjLi43MWVlYWZkMDM5ZiAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wc3FsL3ZhcmlhYmxlcy5jCisrKyBiL3NyYy9iaW4vcHNxbC92YXJpYWJsZXMu YwpAQCAtMTEsNiArMTEsNyBAQAogCiAjaW5jbHVkZSAiY29tbW9uLmgiCiAjaW5jbHVkZSAiY29t bW9uL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJmZV91dGlscy9jYW5jZWwuaCIKICNpbmNsdWRlICJ2 YXJpYWJsZXMuaCIKIAogLyoKQEAgLTI2NSw3ICsyNjYsNyBAQCBQcmludFZhcmlhYmxlcyhWYXJp YWJsZVNwYWNlIHNwYWNlKQogCXsKIAkJaWYgKHB0ci0+dmFsdWUpCiAJCQlwcmludGYoIiVzID0g JyVzJ1xuIiwgcHRyLT5uYW1lLCBwdHItPnZhbHVlKTsKLQkJaWYgKGNhbmNlbF9wcmVzc2VkKQor CQlpZiAoQ2FuY2VsUmVxdWVzdGVkKQogCQkJYnJlYWs7CiAJfQogfQpkaWZmIC0tZ2l0IGEvc3Jj L2ZlX3V0aWxzL3ByaW50LmMgYi9zcmMvZmVfdXRpbHMvcHJpbnQuYwppbmRleCBhY2YyMGNiNDk4 Yi4uOTRkMDA4NjVjMTcgMTAwNjQ0Ci0tLSBhL3NyYy9mZV91dGlscy9wcmludC5jCisrKyBiL3Ny Yy9mZV91dGlscy9wcmludC5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqIFRoaXMgZmlsZSB1c2Vk IHRvIGJlIHBhcnQgb2YgcHNxbCwgYnV0IG5vdyBpdCdzIHNlcGFyYXRlZCBvdXQgdG8gYWxsb3cK ICAqIG90aGVyIGZyb250ZW5kIHByb2dyYW1zIHRvIHVzZSBpdC4gIEJlY2F1c2UgdGhlIHByaW50 aW5nIGNvZGUgbmVlZHMKLSAqIGFjY2VzcyB0byB0aGUgY2FuY2VsX3ByZXNzZWQgZmxhZyBhcyB3 ZWxsIGFzIFNJR1BJUEUgdHJhcHBpbmcgYW5kCisgKiBhY2Nlc3MgdG8gdGhlIENhbmNlbFJlcXVl c3RlZCBmbGFnIGFzIHdlbGwgYXMgU0lHUElQRSB0cmFwcGluZyBhbmQKICAqIHBhZ2VyIG9wZW4v Y2xvc2UgZnVuY3Rpb25zLCBhbGwgdGhhdCBzdHVmZiBjYW1lIHdpdGggaXQuCiAgKgogICoKQEAg LTMwLDYgKzMwLDcgQEAKICNlbmRpZgogCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlX2QuaCIK KyNpbmNsdWRlICJmZV91dGlscy9jYW5jZWwuaCIKICNpbmNsdWRlICJmZV91dGlscy9tYnByaW50 LmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvcHJpbnQuaCIKIApAQCAtMzksMTMgKzQwLDkgQEAKICNl bmRpZgogCiAvKgotICogSWYgdGhlIGNhbGxpbmcgcHJvZ3JhbSBkb2Vzbid0IGhhdmUgYW55IG1l Y2hhbmlzbSBmb3Igc2V0dGluZwotICogY2FuY2VsX3ByZXNzZWQsIGl0IHdpbGwgaGF2ZSBubyBl ZmZlY3QuCi0gKgotICogTm90ZTogcHJpbnQuYydzIGdlbmVyYWwgc3RyYXRlZ3kgZm9yIHdoZW4g dG8gY2hlY2sgY2FuY2VsX3ByZXNzZWQgaXMgdG8gZG8KKyAqIE5vdGU6IHByaW50LmMncyBnZW5l cmFsIHN0cmF0ZWd5IGZvciB3aGVuIHRvIGNoZWNrIENhbmNlbFJlcXVlc3RlZCBpcyB0byBkbwog ICogc28gYXQgY29tcGxldGlvbiBvZiBlYWNoIHJvdyBvZiBvdXRwdXQuCiAgKi8KLXZvbGF0aWxl IHNpZ19hdG9taWNfdCBjYW5jZWxfcHJlc3NlZCA9IGZhbHNlOwogCiBzdGF0aWMgYm9vbCBhbHdh eXNfaWdub3JlX3NpZ3BpcGUgPSBmYWxzZTsKIApAQCAtNDQyLDcgKzQzOSw3IEBAIHByaW50X3Vu YWxpZ25lZF90ZXh0KGNvbnN0IHByaW50VGFibGVDb250ZW50ICpjb250LCBGSUxFICpmb3V0KQog CWNvbnN0IGNoYXIgKmNvbnN0ICpwdHI7CiAJYm9vbAkJbmVlZF9yZWNvcmRzZXAgPSBmYWxzZTsK IAotCWlmIChjYW5jZWxfcHJlc3NlZCkKKwlpZiAoQ2FuY2VsUmVxdWVzdGVkKQogCQlyZXR1cm47 CiAKIAlpZiAoY29udC0+b3B0LT5zdGFydF90YWJsZSkKQEAgLTQ3Nyw3ICs0NzQsNyBAQCBwcmlu dF91bmFsaWduZWRfdGV4dChjb25zdCBwcmludFRhYmxlQ29udGVudCAqY29udCwgRklMRSAqZm91 dCkKIAkJewogCQkJcHJpbnRfc2VwYXJhdG9yKGNvbnQtPm9wdC0+cmVjb3JkU2VwLCBmb3V0KTsK IAkJCW5lZWRfcmVjb3Jkc2VwID0gZmFsc2U7Ci0JCQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJCQlp ZiAoQ2FuY2VsUmVxdWVzdGVkKQogCQkJCWJyZWFrOwogCQl9CiAJCWZwdXRzKCpwdHIsIGZvdXQp OwpAQCAtNDkzLDcgKzQ5MCw3IEBAIHByaW50X3VuYWxpZ25lZF90ZXh0KGNvbnN0IHByaW50VGFi bGVDb250ZW50ICpjb250LCBGSUxFICpmb3V0KQogCXsKIAkJcHJpbnRUYWJsZUZvb3RlciAqZm9v dGVycyA9IGZvb3RlcnNfd2l0aF9kZWZhdWx0KGNvbnQpOwogCi0JCWlmICghb3B0X3R1cGxlc19v bmx5ICYmIGZvb3RlcnMgIT0gTlVMTCAmJiAhY2FuY2VsX3ByZXNzZWQpCisJCWlmICghb3B0X3R1 cGxlc19vbmx5ICYmIGZvb3RlcnMgIT0gTlVMTCAmJiAhQ2FuY2VsUmVxdWVzdGVkKQogCQl7CiAJ CQlwcmludFRhYmxlRm9vdGVyICpmOwogCkBAIC01MzMsNyArNTMwLDcgQEAgcHJpbnRfdW5hbGln bmVkX3ZlcnRpY2FsKGNvbnN0IHByaW50VGFibGVDb250ZW50ICpjb250LCBGSUxFICpmb3V0KQog CWNvbnN0IGNoYXIgKmNvbnN0ICpwdHI7CiAJYm9vbAkJbmVlZF9yZWNvcmRzZXAgPSBmYWxzZTsK IAotCWlmIChjYW5jZWxfcHJlc3NlZCkKKwlpZiAoQ2FuY2VsUmVxdWVzdGVkKQogCQlyZXR1cm47 CiAKIAlpZiAoY29udC0+b3B0LT5zdGFydF90YWJsZSkKQEAgLTU1OCw3ICs1NTUsNyBAQCBwcmlu dF91bmFsaWduZWRfdmVydGljYWwoY29uc3QgcHJpbnRUYWJsZUNvbnRlbnQgKmNvbnQsIEZJTEUg KmZvdXQpCiAJCQlwcmludF9zZXBhcmF0b3IoY29udC0+b3B0LT5yZWNvcmRTZXAsIGZvdXQpOwog CQkJcHJpbnRfc2VwYXJhdG9yKGNvbnQtPm9wdC0+cmVjb3JkU2VwLCBmb3V0KTsKIAkJCW5lZWRf cmVjb3Jkc2VwID0gZmFsc2U7Ci0JCQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJCQlpZiAoQ2FuY2Vs UmVxdWVzdGVkKQogCQkJCWJyZWFrOwogCQl9CiAKQEAgLTU3NSw3ICs1NzIsNyBAQCBwcmludF91 bmFsaWduZWRfdmVydGljYWwoY29uc3QgcHJpbnRUYWJsZUNvbnRlbnQgKmNvbnQsIEZJTEUgKmZv dXQpCiAJaWYgKGNvbnQtPm9wdC0+c3RvcF90YWJsZSkKIAl7CiAJCS8qIHByaW50IGZvb3RlcnMg Ki8KLQkJaWYgKCFvcHRfdHVwbGVzX29ubHkgJiYgY29udC0+Zm9vdGVycyAhPSBOVUxMICYmICFj YW5jZWxfcHJlc3NlZCkKKwkJaWYgKCFvcHRfdHVwbGVzX29ubHkgJiYgY29udC0+Zm9vdGVycyAh PSBOVUxMICYmICFDYW5jZWxSZXF1ZXN0ZWQpCiAJCXsKIAkJCXByaW50VGFibGVGb290ZXIgKmY7 CiAKQEAgLTY4Myw3ICs2ODAsNyBAQCBwcmludF9hbGlnbmVkX3RleHQoY29uc3QgcHJpbnRUYWJs ZUNvbnRlbnQgKmNvbnQsIEZJTEUgKmZvdXQsIGJvb2wgaXNfcGFnZXIpCiAJaW50CQkJb3V0cHV0 X2NvbHVtbnMgPSAwOyAvKiBXaWR0aCBvZiBpbnRlcmFjdGl2ZSBjb25zb2xlICovCiAJYm9vbAkJ aXNfbG9jYWxfcGFnZXIgPSBmYWxzZTsKIAotCWlmIChjYW5jZWxfcHJlc3NlZCkKKwlpZiAoQ2Fu Y2VsUmVxdWVzdGVkKQogCQlyZXR1cm47CiAKIAlpZiAob3B0X2JvcmRlciA+IDIpCkBAIC0xMDA0 LDcgKzEwMDEsNyBAQCBwcmludF9hbGlnbmVkX3RleHQoY29uc3QgcHJpbnRUYWJsZUNvbnRlbnQg KmNvbnQsIEZJTEUgKmZvdXQsIGJvb2wgaXNfcGFnZXIpCiAJewogCQlib29sCQltb3JlX2xpbmVz OwogCi0JCWlmIChjYW5jZWxfcHJlc3NlZCkKKwkJaWYgKENhbmNlbFJlcXVlc3RlZCkKIAkJCWJy ZWFrOwogCiAJCS8qCkBAIC0xMTYwLDEyICsxMTU3LDEyIEBAIHByaW50X2FsaWduZWRfdGV4dChj b25zdCBwcmludFRhYmxlQ29udGVudCAqY29udCwgRklMRSAqZm91dCwgYm9vbCBpc19wYWdlcikK IAl7CiAJCXByaW50VGFibGVGb290ZXIgKmZvb3RlcnMgPSBmb290ZXJzX3dpdGhfZGVmYXVsdChj b250KTsKIAotCQlpZiAob3B0X2JvcmRlciA9PSAyICYmICFjYW5jZWxfcHJlc3NlZCkKKwkJaWYg KG9wdF9ib3JkZXIgPT0gMiAmJiAhQ2FuY2VsUmVxdWVzdGVkKQogCQkJX3ByaW50X2hvcml6b250 YWxfbGluZShjb2xfY291bnQsIHdpZHRoX3dyYXAsIG9wdF9ib3JkZXIsCiAJCQkJCQkJCSAgIFBS SU5UX1JVTEVfQk9UVE9NLCBmb3JtYXQsIGZvdXQpOwogCiAJCS8qIHByaW50IGZvb3RlcnMgKi8K LQkJaWYgKGZvb3RlcnMgJiYgIW9wdF90dXBsZXNfb25seSAmJiAhY2FuY2VsX3ByZXNzZWQpCisJ CWlmIChmb290ZXJzICYmICFvcHRfdHVwbGVzX29ubHkgJiYgIUNhbmNlbFJlcXVlc3RlZCkKIAkJ ewogCQkJcHJpbnRUYWJsZUZvb3RlciAqZjsKIApAQCAtMTMyNSw3ICsxMzIyLDcgQEAgcHJpbnRf YWxpZ25lZF92ZXJ0aWNhbChjb25zdCBwcmludFRhYmxlQ29udGVudCAqY29udCwKIAkJCQlkbXVs dGlsaW5lID0gZmFsc2U7CiAJaW50CQkJb3V0cHV0X2NvbHVtbnMgPSAwOyAvKiBXaWR0aCBvZiBp bnRlcmFjdGl2ZSBjb25zb2xlICovCiAKLQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJaWYgKENhbmNl bFJlcXVlc3RlZCkKIAkJcmV0dXJuOwogCiAJaWYgKG9wdF9ib3JkZXIgPiAyKQpAQCAtMTM0MSw3 ICsxMzM4LDcgQEAgcHJpbnRfYWxpZ25lZF92ZXJ0aWNhbChjb25zdCBwcmludFRhYmxlQ29udGVu dCAqY29udCwKIAl7CiAJCXByaW50VGFibGVGb290ZXIgKmZvb3RlcnMgPSBmb290ZXJzX3dpdGhf ZGVmYXVsdChjb250KTsKIAotCQlpZiAoIW9wdF90dXBsZXNfb25seSAmJiAhY2FuY2VsX3ByZXNz ZWQgJiYgZm9vdGVycykKKwkJaWYgKCFvcHRfdHVwbGVzX29ubHkgJiYgIUNhbmNlbFJlcXVlc3Rl ZCAmJiBmb290ZXJzKQogCQl7CiAJCQlwcmludFRhYmxlRm9vdGVyICpmOwogCkBAIC0xNTk3LDcg KzE1OTQsNyBAQCBwcmludF9hbGlnbmVkX3ZlcnRpY2FsKGNvbnN0IHByaW50VGFibGVDb250ZW50 ICpjb250LAogCQkJCQlvZmZzZXQsCiAJCQkJCWNoYXJzX3RvX291dHB1dDsKIAotCQlpZiAoY2Fu Y2VsX3ByZXNzZWQpCisJCWlmIChDYW5jZWxSZXF1ZXN0ZWQpCiAJCQlicmVhazsKIAogCQlpZiAo aSA9PSAwKQpAQCAtMTgwNiwxMiArMTgwMywxMiBAQCBwcmludF9hbGlnbmVkX3ZlcnRpY2FsKGNv bnN0IHByaW50VGFibGVDb250ZW50ICpjb250LAogCiAJaWYgKGNvbnQtPm9wdC0+c3RvcF90YWJs ZSkKIAl7Ci0JCWlmIChvcHRfYm9yZGVyID09IDIgJiYgIWNhbmNlbF9wcmVzc2VkKQorCQlpZiAo b3B0X2JvcmRlciA9PSAyICYmICFDYW5jZWxSZXF1ZXN0ZWQpCiAJCQlwcmludF9hbGlnbmVkX3Zl cnRpY2FsX2xpbmUoY29udC0+b3B0LCAwLCBod2lkdGgsIGR3aWR0aCwKIAkJCQkJCQkJCQlvdXRw dXRfY29sdW1ucywgUFJJTlRfUlVMRV9CT1RUT00sIGZvdXQpOwogCiAJCS8qIHByaW50IGZvb3Rl cnMgKi8KLQkJaWYgKCFvcHRfdHVwbGVzX29ubHkgJiYgY29udC0+Zm9vdGVycyAhPSBOVUxMICYm ICFjYW5jZWxfcHJlc3NlZCkKKwkJaWYgKCFvcHRfdHVwbGVzX29ubHkgJiYgY29udC0+Zm9vdGVy cyAhPSBOVUxMICYmICFDYW5jZWxSZXF1ZXN0ZWQpCiAJCXsKIAkJCXByaW50VGFibGVGb290ZXIg KmY7CiAKQEAgLTE4ODUsNyArMTg4Miw3IEBAIHByaW50X2Nzdl90ZXh0KGNvbnN0IHByaW50VGFi bGVDb250ZW50ICpjb250LCBGSUxFICpmb3V0KQogCWNvbnN0IGNoYXIgKmNvbnN0ICpwdHI7CiAJ aW50CQkJaTsKIAotCWlmIChjYW5jZWxfcHJlc3NlZCkKKwlpZiAoQ2FuY2VsUmVxdWVzdGVkKQog CQlyZXR1cm47CiAKIAkvKgpAQCAtMTkyOCw3ICsxOTI1LDcgQEAgcHJpbnRfY3N2X3ZlcnRpY2Fs KGNvbnN0IHByaW50VGFibGVDb250ZW50ICpjb250LCBGSUxFICpmb3V0KQogCS8qIHByaW50IHJl Y29yZHMgKi8KIAlmb3IgKGkgPSAwLCBwdHIgPSBjb250LT5jZWxsczsgKnB0cjsgaSsrLCBwdHIr KykKIAl7Ci0JCWlmIChjYW5jZWxfcHJlc3NlZCkKKwkJaWYgKENhbmNlbFJlcXVlc3RlZCkKIAkJ CXJldHVybjsKIAogCQkvKiBwcmludCBuYW1lIG9mIGNvbHVtbiAqLwpAQCAtMjAwMSw3ICsxOTk4 LDcgQEAgcHJpbnRfaHRtbF90ZXh0KGNvbnN0IHByaW50VGFibGVDb250ZW50ICpjb250LCBGSUxF ICpmb3V0KQogCXVuc2lnbmVkIGludCBpOwogCWNvbnN0IGNoYXIgKmNvbnN0ICpwdHI7CiAKLQlp ZiAoY2FuY2VsX3ByZXNzZWQpCisJaWYgKENhbmNlbFJlcXVlc3RlZCkKIAkJcmV0dXJuOwogCiAJ aWYgKGNvbnQtPm9wdC0+c3RhcnRfdGFibGUpCkBAIC0yMDM4LDcgKzIwMzUsNyBAQCBwcmludF9o dG1sX3RleHQoY29uc3QgcHJpbnRUYWJsZUNvbnRlbnQgKmNvbnQsIEZJTEUgKmZvdXQpCiAJewog CQlpZiAoaSAlIGNvbnQtPm5jb2x1bW5zID09IDApCiAJCXsKLQkJCWlmIChjYW5jZWxfcHJlc3Nl ZCkKKwkJCWlmIChDYW5jZWxSZXF1ZXN0ZWQpCiAJCQkJYnJlYWs7CiAJCQlmcHV0cygiICA8dHIg dmFsaWduPVwidG9wXCI+XG4iLCBmb3V0KTsKIAkJfQpAQCAtMjA2Myw3ICsyMDYwLDcgQEAgcHJp bnRfaHRtbF90ZXh0KGNvbnN0IHByaW50VGFibGVDb250ZW50ICpjb250LCBGSUxFICpmb3V0KQog CQlmcHV0cygiPC90YWJsZT5cbiIsIGZvdXQpOwogCiAJCS8qIHByaW50IGZvb3RlcnMgKi8KLQkJ aWYgKCFvcHRfdHVwbGVzX29ubHkgJiYgZm9vdGVycyAhPSBOVUxMICYmICFjYW5jZWxfcHJlc3Nl ZCkKKwkJaWYgKCFvcHRfdHVwbGVzX29ubHkgJiYgZm9vdGVycyAhPSBOVUxMICYmICFDYW5jZWxS ZXF1ZXN0ZWQpCiAJCXsKIAkJCXByaW50VGFibGVGb290ZXIgKmY7CiAKQEAgLTIwOTEsNyArMjA4 OCw3IEBAIHByaW50X2h0bWxfdmVydGljYWwoY29uc3QgcHJpbnRUYWJsZUNvbnRlbnQgKmNvbnQs IEZJTEUgKmZvdXQpCiAJdW5zaWduZWQgaW50IGk7CiAJY29uc3QgY2hhciAqY29uc3QgKnB0cjsK IAotCWlmIChjYW5jZWxfcHJlc3NlZCkKKwlpZiAoQ2FuY2VsUmVxdWVzdGVkKQogCQlyZXR1cm47 CiAKIAlpZiAoY29udC0+b3B0LT5zdGFydF90YWJsZSkKQEAgLTIxMTUsNyArMjExMiw3IEBAIHBy aW50X2h0bWxfdmVydGljYWwoY29uc3QgcHJpbnRUYWJsZUNvbnRlbnQgKmNvbnQsIEZJTEUgKmZv dXQpCiAJewogCQlpZiAoaSAlIGNvbnQtPm5jb2x1bW5zID09IDApCiAJCXsKLQkJCWlmIChjYW5j ZWxfcHJlc3NlZCkKKwkJCWlmIChDYW5jZWxSZXF1ZXN0ZWQpCiAJCQkJYnJlYWs7CiAJCQlpZiAo IW9wdF90dXBsZXNfb25seSkKIAkJCQlmcHJpbnRmKGZvdXQsCkBAIC0yMTQ0LDcgKzIxNDEsNyBA QCBwcmludF9odG1sX3ZlcnRpY2FsKGNvbnN0IHByaW50VGFibGVDb250ZW50ICpjb250LCBGSUxF ICpmb3V0KQogCQlmcHV0cygiPC90YWJsZT5cbiIsIGZvdXQpOwogCiAJCS8qIHByaW50IGZvb3Rl cnMgKi8KLQkJaWYgKCFvcHRfdHVwbGVzX29ubHkgJiYgY29udC0+Zm9vdGVycyAhPSBOVUxMICYm ICFjYW5jZWxfcHJlc3NlZCkKKwkJaWYgKCFvcHRfdHVwbGVzX29ubHkgJiYgY29udC0+Zm9vdGVy cyAhPSBOVUxMICYmICFDYW5jZWxSZXF1ZXN0ZWQpCiAJCXsKIAkJCXByaW50VGFibGVGb290ZXIg KmY7CiAKQEAgLTIxOTMsNyArMjE5MCw3IEBAIHByaW50X2FzY2lpZG9jX3RleHQoY29uc3QgcHJp bnRUYWJsZUNvbnRlbnQgKmNvbnQsIEZJTEUgKmZvdXQpCiAJdW5zaWduZWQgaW50IGk7CiAJY29u c3QgY2hhciAqY29uc3QgKnB0cjsKIAotCWlmIChjYW5jZWxfcHJlc3NlZCkKKwlpZiAoQ2FuY2Vs UmVxdWVzdGVkKQogCQlyZXR1cm47CiAKIAlpZiAoY29udC0+b3B0LT5zdGFydF90YWJsZSkKQEAg LTIyNTIsNyArMjI0OSw3IEBAIHByaW50X2FzY2lpZG9jX3RleHQoY29uc3QgcHJpbnRUYWJsZUNv bnRlbnQgKmNvbnQsIEZJTEUgKmZvdXQpCiAJewogCQlpZiAoaSAlIGNvbnQtPm5jb2x1bW5zID09 IDApCiAJCXsKLQkJCWlmIChjYW5jZWxfcHJlc3NlZCkKKwkJCWlmIChDYW5jZWxSZXF1ZXN0ZWQp CiAJCQkJYnJlYWs7CiAJCX0KIApAQCAtMjI4MCw3ICsyMjc3LDcgQEAgcHJpbnRfYXNjaWlkb2Nf dGV4dChjb25zdCBwcmludFRhYmxlQ29udGVudCAqY29udCwgRklMRSAqZm91dCkKIAkJcHJpbnRU YWJsZUZvb3RlciAqZm9vdGVycyA9IGZvb3RlcnNfd2l0aF9kZWZhdWx0KGNvbnQpOwogCiAJCS8q IHByaW50IGZvb3RlcnMgKi8KLQkJaWYgKCFvcHRfdHVwbGVzX29ubHkgJiYgZm9vdGVycyAhPSBO VUxMICYmICFjYW5jZWxfcHJlc3NlZCkKKwkJaWYgKCFvcHRfdHVwbGVzX29ubHkgJiYgZm9vdGVy cyAhPSBOVUxMICYmICFDYW5jZWxSZXF1ZXN0ZWQpCiAJCXsKIAkJCXByaW50VGFibGVGb290ZXIg KmY7CiAKQEAgLTIzMDQsNyArMjMwMSw3IEBAIHByaW50X2FzY2lpZG9jX3ZlcnRpY2FsKGNvbnN0 IHByaW50VGFibGVDb250ZW50ICpjb250LCBGSUxFICpmb3V0KQogCXVuc2lnbmVkIGludCBpOwog CWNvbnN0IGNoYXIgKmNvbnN0ICpwdHI7CiAKLQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJaWYgKENh bmNlbFJlcXVlc3RlZCkKIAkJcmV0dXJuOwogCiAJaWYgKGNvbnQtPm9wdC0+c3RhcnRfdGFibGUp CkBAIC0yMzQzLDcgKzIzNDAsNyBAQCBwcmludF9hc2NpaWRvY192ZXJ0aWNhbChjb25zdCBwcmlu dFRhYmxlQ29udGVudCAqY29udCwgRklMRSAqZm91dCkKIAl7CiAJCWlmIChpICUgY29udC0+bmNv bHVtbnMgPT0gMCkKIAkJewotCQkJaWYgKGNhbmNlbF9wcmVzc2VkKQorCQkJaWYgKENhbmNlbFJl cXVlc3RlZCkKIAkJCQlicmVhazsKIAkJCWlmICghb3B0X3R1cGxlc19vbmx5KQogCQkJCWZwcmlu dGYoZm91dCwKQEAgLTIzNzAsNyArMjM2Nyw3IEBAIHByaW50X2FzY2lpZG9jX3ZlcnRpY2FsKGNv bnN0IHByaW50VGFibGVDb250ZW50ICpjb250LCBGSUxFICpmb3V0KQogCWlmIChjb250LT5vcHQt PnN0b3BfdGFibGUpCiAJewogCQkvKiBwcmludCBmb290ZXJzICovCi0JCWlmICghb3B0X3R1cGxl c19vbmx5ICYmIGNvbnQtPmZvb3RlcnMgIT0gTlVMTCAmJiAhY2FuY2VsX3ByZXNzZWQpCisJCWlm ICghb3B0X3R1cGxlc19vbmx5ICYmIGNvbnQtPmZvb3RlcnMgIT0gTlVMTCAmJiAhQ2FuY2VsUmVx dWVzdGVkKQogCQl7CiAJCQlwcmludFRhYmxlRm9vdGVyICpmOwogCkBAIC0yNDYxLDcgKzI0NTgs NyBAQCBwcmludF9sYXRleF90ZXh0KGNvbnN0IHByaW50VGFibGVDb250ZW50ICpjb250LCBGSUxF ICpmb3V0KQogCXVuc2lnbmVkIGludCBpOwogCWNvbnN0IGNoYXIgKmNvbnN0ICpwdHI7CiAKLQlp ZiAoY2FuY2VsX3ByZXNzZWQpCisJaWYgKENhbmNlbFJlcXVlc3RlZCkKIAkJcmV0dXJuOwogCiAJ aWYgKG9wdF9ib3JkZXIgPiAzKQpAQCAtMjUyMiw3ICsyNTE5LDcgQEAgcHJpbnRfbGF0ZXhfdGV4 dChjb25zdCBwcmludFRhYmxlQ29udGVudCAqY29udCwgRklMRSAqZm91dCkKIAkJCWZwdXRzKCIg XFxcXFxuIiwgZm91dCk7CiAJCQlpZiAob3B0X2JvcmRlciA9PSAzKQogCQkJCWZwdXRzKCJcXGhs aW5lXG4iLCBmb3V0KTsKLQkJCWlmIChjYW5jZWxfcHJlc3NlZCkKKwkJCWlmIChDYW5jZWxSZXF1 ZXN0ZWQpCiAJCQkJYnJlYWs7CiAJCX0KIAkJZWxzZQpAQCAtMjUzOSw3ICsyNTM2LDcgQEAgcHJp bnRfbGF0ZXhfdGV4dChjb25zdCBwcmludFRhYmxlQ29udGVudCAqY29udCwgRklMRSAqZm91dCkK IAkJZnB1dHMoIlxcZW5ke3RhYnVsYXJ9XG5cblxcbm9pbmRlbnQgIiwgZm91dCk7CiAKIAkJLyog cHJpbnQgZm9vdGVycyAqLwotCQlpZiAoZm9vdGVycyAmJiAhb3B0X3R1cGxlc19vbmx5ICYmICFj YW5jZWxfcHJlc3NlZCkKKwkJaWYgKGZvb3RlcnMgJiYgIW9wdF90dXBsZXNfb25seSAmJiAhQ2Fu Y2VsUmVxdWVzdGVkKQogCQl7CiAJCQlwcmludFRhYmxlRm9vdGVyICpmOwogCkBAIC0yNTcxLDcg KzI1NjgsNyBAQCBwcmludF9sYXRleF9sb25ndGFibGVfdGV4dChjb25zdCBwcmludFRhYmxlQ29u dGVudCAqY29udCwgRklMRSAqZm91dCkKIAljb25zdCBjaGFyICpsYXN0X29wdF90YWJsZV9hdHRy X2NoYXIgPSBOVUxMOwogCWNvbnN0IGNoYXIgKmNvbnN0ICpwdHI7CiAKLQlpZiAoY2FuY2VsX3By ZXNzZWQpCisJaWYgKENhbmNlbFJlcXVlc3RlZCkKIAkJcmV0dXJuOwogCiAJaWYgKG9wdF9ib3Jk ZXIgPiAzKQpAQCAtMjcwNyw3ICsyNzA0LDcgQEAgcHJpbnRfbGF0ZXhfbG9uZ3RhYmxlX3RleHQo Y29uc3QgcHJpbnRUYWJsZUNvbnRlbnQgKmNvbnQsIEZJTEUgKmZvdXQpCiAJCQlpZiAob3B0X2Jv cmRlciA9PSAzKQogCQkJCWZwdXRzKCIgXFxobGluZVxuIiwgZm91dCk7CiAJCX0KLQkJaWYgKGNh bmNlbF9wcmVzc2VkKQorCQlpZiAoQ2FuY2VsUmVxdWVzdGVkKQogCQkJYnJlYWs7CiAJfQogCkBA IC0yNzI1LDcgKzI3MjIsNyBAQCBwcmludF9sYXRleF92ZXJ0aWNhbChjb25zdCBwcmludFRhYmxl Q29udGVudCAqY29udCwgRklMRSAqZm91dCkKIAl1bnNpZ25lZCBpbnQgaTsKIAljb25zdCBjaGFy ICpjb25zdCAqcHRyOwogCi0JaWYgKGNhbmNlbF9wcmVzc2VkKQorCWlmIChDYW5jZWxSZXF1ZXN0 ZWQpCiAJCXJldHVybjsKIAogCWlmIChvcHRfYm9yZGVyID4gMikKQEAgLTI3NTgsNyArMjc1NSw3 IEBAIHByaW50X2xhdGV4X3ZlcnRpY2FsKGNvbnN0IHByaW50VGFibGVDb250ZW50ICpjb250LCBG SUxFICpmb3V0KQogCQkvKiBuZXcgcmVjb3JkICovCiAJCWlmIChpICUgY29udC0+bmNvbHVtbnMg PT0gMCkKIAkJewotCQkJaWYgKGNhbmNlbF9wcmVzc2VkKQorCQkJaWYgKENhbmNlbFJlcXVlc3Rl ZCkKIAkJCQlicmVhazsKIAkJCWlmICghb3B0X3R1cGxlc19vbmx5KQogCQkJewpAQCAtMjc4OCw3 ICsyNzg1LDcgQEAgcHJpbnRfbGF0ZXhfdmVydGljYWwoY29uc3QgcHJpbnRUYWJsZUNvbnRlbnQg KmNvbnQsIEZJTEUgKmZvdXQpCiAJCWZwdXRzKCJcXGVuZHt0YWJ1bGFyfVxuXG5cXG5vaW5kZW50 ICIsIGZvdXQpOwogCiAJCS8qIHByaW50IGZvb3RlcnMgKi8KLQkJaWYgKGNvbnQtPmZvb3RlcnMg JiYgIW9wdF90dXBsZXNfb25seSAmJiAhY2FuY2VsX3ByZXNzZWQpCisJCWlmIChjb250LT5mb290 ZXJzICYmICFvcHRfdHVwbGVzX29ubHkgJiYgIUNhbmNlbFJlcXVlc3RlZCkKIAkJewogCQkJcHJp bnRUYWJsZUZvb3RlciAqZjsKIApAQCAtMjgzNCw3ICsyODMxLDcgQEAgcHJpbnRfdHJvZmZfbXNf dGV4dChjb25zdCBwcmludFRhYmxlQ29udGVudCAqY29udCwgRklMRSAqZm91dCkKIAl1bnNpZ25l ZCBpbnQgaTsKIAljb25zdCBjaGFyICpjb25zdCAqcHRyOwogCi0JaWYgKGNhbmNlbF9wcmVzc2Vk KQorCWlmIChDYW5jZWxSZXF1ZXN0ZWQpCiAJCXJldHVybjsKIAogCWlmIChvcHRfYm9yZGVyID4g MikKQEAgLTI4ODgsNyArMjg4NSw3IEBAIHByaW50X3Ryb2ZmX21zX3RleHQoY29uc3QgcHJpbnRU YWJsZUNvbnRlbnQgKmNvbnQsIEZJTEUgKmZvdXQpCiAJCWlmICgoaSArIDEpICUgY29udC0+bmNv bHVtbnMgPT0gMCkKIAkJewogCQkJZnB1dGMoJ1xuJywgZm91dCk7Ci0JCQlpZiAoY2FuY2VsX3By ZXNzZWQpCisJCQlpZiAoQ2FuY2VsUmVxdWVzdGVkKQogCQkJCWJyZWFrOwogCQl9CiAJCWVsc2UK QEAgLTI5MDIsNyArMjg5OSw3IEBAIHByaW50X3Ryb2ZmX21zX3RleHQoY29uc3QgcHJpbnRUYWJs ZUNvbnRlbnQgKmNvbnQsIEZJTEUgKmZvdXQpCiAJCWZwdXRzKCIuVEVcbi5EUyBMXG4iLCBmb3V0 KTsKIAogCQkvKiBwcmludCBmb290ZXJzICovCi0JCWlmIChmb290ZXJzICYmICFvcHRfdHVwbGVz X29ubHkgJiYgIWNhbmNlbF9wcmVzc2VkKQorCQlpZiAoZm9vdGVycyAmJiAhb3B0X3R1cGxlc19v bmx5ICYmICFDYW5jZWxSZXF1ZXN0ZWQpCiAJCXsKIAkJCXByaW50VGFibGVGb290ZXIgKmY7CiAK QEAgLTI5MjgsNyArMjkyNSw3IEBAIHByaW50X3Ryb2ZmX21zX3ZlcnRpY2FsKGNvbnN0IHByaW50 VGFibGVDb250ZW50ICpjb250LCBGSUxFICpmb3V0KQogCWNvbnN0IGNoYXIgKmNvbnN0ICpwdHI7 CiAJdW5zaWduZWQgc2hvcnQgY3VycmVudF9mb3JtYXQgPSAwOwkvKiAwPW5vbmUsIDE9aGVhZGVy LCAyPWJvZHkgKi8KIAotCWlmIChjYW5jZWxfcHJlc3NlZCkKKwlpZiAoQ2FuY2VsUmVxdWVzdGVk KQogCQlyZXR1cm47CiAKIAlpZiAob3B0X2JvcmRlciA+IDIpCkBAIC0yOTY0LDcgKzI5NjEsNyBA QCBwcmludF90cm9mZl9tc192ZXJ0aWNhbChjb25zdCBwcmludFRhYmxlQ29udGVudCAqY29udCwg RklMRSAqZm91dCkKIAkJLyogbmV3IHJlY29yZCAqLwogCQlpZiAoaSAlIGNvbnQtPm5jb2x1bW5z ID09IDApCiAJCXsKLQkJCWlmIChjYW5jZWxfcHJlc3NlZCkKKwkJCWlmIChDYW5jZWxSZXF1ZXN0 ZWQpCiAJCQkJYnJlYWs7CiAJCQlpZiAoIW9wdF90dXBsZXNfb25seSkKIAkJCXsKQEAgLTMwMDks NyArMzAwNiw3IEBAIHByaW50X3Ryb2ZmX21zX3ZlcnRpY2FsKGNvbnN0IHByaW50VGFibGVDb250 ZW50ICpjb250LCBGSUxFICpmb3V0KQogCQlmcHV0cygiLlRFXG4uRFMgTFxuIiwgZm91dCk7CiAK IAkJLyogcHJpbnQgZm9vdGVycyAqLwotCQlpZiAoY29udC0+Zm9vdGVycyAmJiAhb3B0X3R1cGxl c19vbmx5ICYmICFjYW5jZWxfcHJlc3NlZCkKKwkJaWYgKGNvbnQtPmZvb3RlcnMgJiYgIW9wdF90 dXBsZXNfb25seSAmJiAhQ2FuY2VsUmVxdWVzdGVkKQogCQl7CiAJCQlwcmludFRhYmxlRm9vdGVy ICpmOwogCkBAIC0zMTg3LDcgKzMxODQsNyBAQCBDbG9zZVBhZ2VyKEZJTEUgKnBhZ2VycGlwZSkK IAkJICogcGFnZXIgcXVpdCBhcyBhIHJlc3VsdCBvZiB0aGUgU0lHSU5ULCB0aGlzIG1lc3NhZ2Ug d29uJ3QgZ28KIAkJICogYW55d2hlcmUgLi4uCiAJCSAqLwotCQlpZiAoY2FuY2VsX3ByZXNzZWQp CisJCWlmIChDYW5jZWxSZXF1ZXN0ZWQpCiAJCQlmcHJpbnRmKHBhZ2VycGlwZSwgXygiSW50ZXJy dXB0ZWRcbiIpKTsKIAogCQlwY2xvc2UocGFnZXJwaXBlKTsKQEAgLTM2NTYsNyArMzY1Myw3IEBA IHByaW50VGFibGUoY29uc3QgcHJpbnRUYWJsZUNvbnRlbnQgKmNvbnQsCiB7CiAJYm9vbAkJaXNf bG9jYWxfcGFnZXIgPSBmYWxzZTsKIAotCWlmIChjYW5jZWxfcHJlc3NlZCkKKwlpZiAoQ2FuY2Vs UmVxdWVzdGVkKQogCQlyZXR1cm47CiAKIAlpZiAoY29udC0+b3B0LT5mb3JtYXQgPT0gUFJJTlRf Tk9USElORykKQEAgLTM3NjUsNyArMzc2Miw3IEBAIHByaW50UXVlcnkoY29uc3QgUEdyZXN1bHQg KnJlc3VsdCwgY29uc3QgcHJpbnRRdWVyeU9wdCAqb3B0LAogCQkJCXIsCiAJCQkJYzsKIAotCWlm IChjYW5jZWxfcHJlc3NlZCkKKwlpZiAoQ2FuY2VsUmVxdWVzdGVkKQogCQlyZXR1cm47CiAKIAlw cmludFRhYmxlSW5pdCgmY29udCwgJm9wdC0+dG9wdCwgb3B0LT50aXRsZSwKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2ZlX3V0aWxzL3ByaW50LmggYi9zcmMvaW5jbHVkZS9mZV91dGlscy9wcmlu dC5oCmluZGV4IDk0ZjZhNTkzNjE5Li4yMzA5N2JhODUzYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvZmVfdXRpbHMvcHJpbnQuaAorKysgYi9zcmMvaW5jbHVkZS9mZV91dGlscy9wcmludC5oCkBA IC0xOTUsOCArMTk1LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgcHJpbnRRdWVyeU9wdAogfSBwcmludFF1 ZXJ5T3B0OwogCiAKLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgY2Fu Y2VsX3ByZXNzZWQ7Ci0KIGV4dGVybiBQR0RMTElNUE9SVCBjb25zdCBwcmludFRleHRGb3JtYXQg cGdfYXNjaWlmb3JtYXQ7CiBleHRlcm4gUEdETExJTVBPUlQgY29uc3QgcHJpbnRUZXh0Rm9ybWF0 IHBnX2FzY2lpZm9ybWF0X29sZDsKIGV4dGVybiBQR0RMTElNUE9SVCBwcmludFRleHRGb3JtYXQg cGdfdXRmOGZvcm1hdDsJLyogaWRlYWxseSB3b3VsZCBiZSBjb25zdCwKCmJhc2UtY29tbWl0OiA4 ZTBjMjUyNzUzYmFjNTU2MDFmMjNmMGMwNGQ0ZTE2MDFmYjYwMDc0Ci0tIAoyLjU0LjAKCg== --16407362cd95456687a9f74fa396331c7bb1f2b42fbbf0186421d2cfd94b Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v10-0002-fe_utils-Simplify-cancel-logic-in-wait_on_slots.patch Content-Type: text/x-patch; charset=utf-8; name=v10-0002-fe_utils-Simplify-cancel-logic-in-wait_on_slots.patch RnJvbSBkMTFlYTk5OWJlMmU5ZjhkZjg1MzY3MmY2OGZmODMyYzk0Njk5MTFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUdWUsIDcgQXByIDIwMjYgMTk6NTQ6MTMgKzAyMDAKU3ViamVjdDogW1BBVENIIHYx MCAyLzRdIGZlX3V0aWxzOiBTaW1wbGlmeSBjYW5jZWwgbG9naWMgaW4gd2FpdF9vbl9zbG90cwoK VGhpcyByZW1vdmVzIHRoZSBTZXRDYW5jZWxDb25uIGNhbGwgaW4gd2FpdF9vbl9zbG90cy4gVGhp cyBjYWxsIHdhcwpjb25mdXNpbmcgYmVjYXVzZSBpdCB3YXMgb25seSBjYWxsZWQgZm9yIGEgc2lu Z2xlIGNvbm5lY3Rpb24gb2YgYWxsIHRoZQpjb25uZWN0aW9ucyB0aGF0IHRoZSBzZWxlY3RfbG9v cCB3b3VsZCB3YWl0IG9uLiBJdCBjYW4gYmUgbWFkZQpjb21wbGV0ZWx5IHJlZHVuZGFudCBieSBj aGVja2luZyBDYW5jZWxSZXF1ZXN0ZWQgaW4gc2VsZWN0X2xvb3AgaXRzZWxmLgoKVG8gZG8gdGhh dCByZWxpYWJseSB3ZSBuZWVkIHRvIHdhaXQgZm9yIHNvY2tldCBhY3Rpdml0eSBpbiBhIHdheSB0 aGF0IGlzCnJhY2UtZnJlZSB3aXRoIHJlc3BlY3QgdG8gU0lHSU5UOiB3aXRoIHBsYWluIHNlbGVj dCgpIGEgU0lHSU5UIGFycml2aW5nCmJldHdlZW4gdGhlIENhbmNlbFJlcXVlc3RlZCBjaGVjayBh bmQgdGhlIHN0YXJ0IG9mIHRoZSB3YWl0IGNvdWxkIGxlYXZlCnVzIGJsb2NrZWQgdW50aWwgYSBz b2NrZXQgaGFwcGVucyB0byBiZWNvbWUgcmVhZGFibGUsIHdoaWNoIGZvciBhIHN0dWNrCnNlcnZl ciBtaWdodCBiZSBuZXZlci4gT24gcGxhdGZvcm1zIHRoYXQgaGF2ZSBwc2VsZWN0KCkgd2Ugbm93 IHVzZSBpdCwKa2VlcGluZyBTSUdJTlQgYmxvY2tlZCBhcm91bmQgdGhlIENhbmNlbFJlcXVlc3Rl ZCBjaGVjayBhbmQgbGV0dGluZwpwc2VsZWN0KCkgdW5ibG9jayBpdCBhdG9taWNhbGx5IGZvciB0 aGUgZHVyYXRpb24gb2YgdGhlIHdhaXQgb25seS4gVGhhdAp3YXkgYSBTSUdJTlQgZGVsaXZlcmVk IGluIHRoZSByYWNlIHdpbmRvdyBzdGF5cyBwZW5kaW5nIGFuZCBpbnRlcnJ1cHRzCnBzZWxlY3Qo KSBpbW1lZGlhdGVseS4gT24gcGxhdGZvcm1zIHdpdGhvdXQgcHNlbGVjdCgpIChpbmNsdWRpbmcg V2luZG93cykKd2UgZmFsbCBiYWNrIHRvIHNlbGVjdCgpIHdpdGggYSAxIHNlY29uZCB0aW1lb3V0 IGFuZCBwb2xsIENhbmNlbFJlcXVlc3RlZAptYW51YWxseS4KLS0tCiBjb25maWd1cmUgICAgICAg ICAgICAgICAgICAgIHwgIDIgKy0KIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgfCAgMSAr CiBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgIHwgIDEgKwogc3JjL2ZlX3V0aWxzL3BhcmFs bGVsX3Nsb3QuYyB8IDg1ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogc3Jj L2luY2x1ZGUvcGdfY29uZmlnLmguaW4gICB8ICAzICsrCiA1IGZpbGVzIGNoYW5nZWQsIDY0IGlu c2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2Nv bmZpZ3VyZQppbmRleCAzNWIwYjcyZjBhNy4uMjQ4NTlkYWQzODUgMTAwNzU1Ci0tLSBhL2NvbmZp Z3VyZQorKysgYi9jb25maWd1cmUKQEAgLTE1ODg4LDcgKzE1ODg4LDcgQEAgZmkKIExJQlNfaW5j bHVkaW5nX3JlYWRsaW5lPSIkTElCUyIKIExJQlM9YGVjaG8gIiRMSUJTIiB8IHNlZCAtZSAncy8t bGVkaXQvL2cnIC1lICdzLy1scmVhZGxpbmUvL2cnYAogCi1mb3IgYWNfZnVuYyBpbiBiYWNrdHJh Y2Vfc3ltYm9scyBjb3B5ZmlsZSBjb3B5X2ZpbGVfcmFuZ2UgZWxmX2F1eF9pbmZvIGV4cGxpY2l0 X21lbXNldCBnZXRhdXh2YWwgZ2V0aWZhZGRycyBnZXRwZWVydWNyZWQgaW5ldF9wdG9uIGtxdWV1 ZSBsb2NhbGVjb252X2wgbWJzdG93Y3NfbCBtZW1zZXRfZXhwbGljaXQgcG9zaXhfZmFsbG9jYXRl IHBwb2xsIHB0aHJlYWRfaXNfdGhyZWFkZWRfbnAgc2V0cHJvY3RpdGxlIHNldHByb2N0aXRsZV9m YXN0IHN0cnNpZ25hbCBzeW5jZnMgc3luY19maWxlX3JhbmdlIHVzZWxvY2FsZSB3Y3N0b21ic19s Citmb3IgYWNfZnVuYyBpbiBiYWNrdHJhY2Vfc3ltYm9scyBjb3B5ZmlsZSBjb3B5X2ZpbGVfcmFu Z2UgZWxmX2F1eF9pbmZvIGV4cGxpY2l0X21lbXNldCBnZXRhdXh2YWwgZ2V0aWZhZGRycyBnZXRw ZWVydWNyZWQgaW5ldF9wdG9uIGtxdWV1ZSBsb2NhbGVjb252X2wgbWJzdG93Y3NfbCBtZW1zZXRf ZXhwbGljaXQgcG9zaXhfZmFsbG9jYXRlIHBwb2xsIHBzZWxlY3QgcHRocmVhZF9pc190aHJlYWRl ZF9ucCBzZXRwcm9jdGl0bGUgc2V0cHJvY3RpdGxlX2Zhc3Qgc3Ryc2lnbmFsIHN5bmNmcyBzeW5j X2ZpbGVfcmFuZ2UgdXNlbG9jYWxlIHdjc3RvbWJzX2wKIGRvIDoKICAgYXNfYWNfdmFyPWAkYXNf ZWNobyAiYWNfY3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCiBhY19mbl9jX2NoZWNrX2Z1 bmMgIiRMSU5FTk8iICIkYWNfZnVuYyIgIiRhc19hY192YXIiCmRpZmYgLS1naXQgYS9jb25maWd1 cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggMGU2MjRmZTM2YjkuLjVlMTFkN2RhZmRjIDEwMDY0 NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0xODY1LDYgKzE4NjUs NyBAQCBBQ19DSEVDS19GVU5DUyhtNF9ub3JtYWxpemUoWwogCW1lbXNldF9leHBsaWNpdAogCXBv c2l4X2ZhbGxvY2F0ZQogCXBwb2xsCisJcHNlbGVjdAogCXB0aHJlYWRfaXNfdGhyZWFkZWRfbnAK IAlzZXRwcm9jdGl0bGUKIAlzZXRwcm9jdGl0bGVfZmFzdApkaWZmIC0tZ2l0IGEvbWVzb24uYnVp bGQgYi9tZXNvbi5idWlsZAppbmRleCBkODhhN2E3MDMwOC4uOGVmNTc3MTMyYjkgMTAwNjQ0Ci0t LSBhL21lc29uLmJ1aWxkCisrKyBiL21lc29uLmJ1aWxkCkBAIC0zMjI0LDYgKzMyMjQsNyBAQCBm dW5jX2NoZWNrcyA9IFsKICAgWydwb3NpeF9mYWR2aXNlJ10sCiAgIFsncG9zaXhfZmFsbG9jYXRl J10sCiAgIFsncHBvbGwnXSwKKyAgWydwc2VsZWN0J10sCiAgIFsncHRocmVhZF9iYXJyaWVyX3dh aXQnLCB7J2RlcGVuZGVuY2llcyc6IFt0aHJlYWRfZGVwXX1dLAogICBbJ3B0aHJlYWRfaXNfdGhy ZWFkZWRfbnAnLCB7J2RlcGVuZGVuY2llcyc6IFt0aHJlYWRfZGVwXX1dLAogICBbJ3NlbV9pbml0 JywgeydkZXBlbmRlbmNpZXMnOiBbcnRfZGVwLCB0aHJlYWRfZGVwXSwgJ3NraXAnOiBzZW1hX2tp bmQgIT0gJ3VubmFtZWRfcG9zaXgnLCAnZGVmaW5lJzogZmFsc2V9XSwKZGlmZiAtLWdpdCBhL3Ny Yy9mZV91dGlscy9wYXJhbGxlbF9zbG90LmMgYi9zcmMvZmVfdXRpbHMvcGFyYWxsZWxfc2xvdC5j CmluZGV4IGZiOWU2Y2M0ZWMxLi5kOTEzZTE0YzYyNSAxMDA2NDQKLS0tIGEvc3JjL2ZlX3V0aWxz L3BhcmFsbGVsX3Nsb3QuYworKysgYi9zcmMvZmVfdXRpbHMvcGFyYWxsZWxfc2xvdC5jCkBAIC0x OSw2ICsxOSwxMCBAQAogI2luY2x1ZGUgInBvc3RncmVzX2ZlLmgiCiAKICNpbmNsdWRlIDxzeXMv c2VsZWN0Lmg+CisjaWZkZWYgSEFWRV9QU0VMRUNUCisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2lu Y2x1ZGUgPHNpZ25hbC5oPgorI2VuZGlmCiAKICNpbmNsdWRlICJjb21tb24vbG9nZ2luZy5oIgog I2luY2x1ZGUgImZlX3V0aWxzL2NhbmNlbC5oIgpAQCAtODIsMjcgKzg2LDU2IEBAIHNlbGVjdF9s b29wKGludCBtYXhGZCwgZmRfc2V0ICp3b3JrZXJzZXQpCiAJaW50CQkJaTsKIAlmZF9zZXQJCXNh dmVTZXQgPSAqd29ya2Vyc2V0OwogCi0JaWYgKENhbmNlbFJlcXVlc3RlZCkKLQkJcmV0dXJuIC0x OworI2lmZGVmIEhBVkVfUFNFTEVDVAorCisJLyoKKwkgKiBPbiBwbGF0Zm9ybXMgdGhhdCBoYXZl IGl0LCB3ZSB3YWl0IHdpdGggcHNlbGVjdCgpIHJhdGhlciB0aGFuIHNlbGVjdCgpLAorCSAqIHNv IHRoYXQgd2UgY2FuIHJlYWN0IHRvIGEgY2FuY2VsIHJlcXVlc3Qgd2l0aG91dCBwb2xsaW5nIGZv ciBpdC4gIFRoZQorCSAqIHByb2JsZW0gd2l0aCBwbGFpbiBzZWxlY3QoKSBpcyBhIHJhY2U6IFNJ R0lOVCBjYW4gYXJyaXZlIGFmdGVyIHdlIGNoZWNrCisJICogQ2FuY2VsUmVxdWVzdGVkIGJ1dCBi ZWZvcmUgc2VsZWN0KCkgc3RhcnRzIHdhaXRpbmcsIGluIHdoaWNoIGNhc2UKKwkgKiBzZWxlY3Qo KSB3b3VsZCBrZWVwIHdhaXRpbmcgdW50aWwgYSBzb2NrZXQgaGFwcGVucyB0byBiZWNvbWUgcmVh ZGFibGUKKwkgKiAod2hpY2ggZm9yIGEgc3R1Y2sgc2VydmVyIG1pZ2h0IGJlIG5ldmVyKS4gIFdl IGNsb3NlIHRoYXQgcmFjZSBieQorCSAqIGtlZXBpbmcgU0lHSU5UIGJsb2NrZWQgYXJvdW5kIHRo ZSBDYW5jZWxSZXF1ZXN0ZWQgY2hlY2sgYW5kIGhhdmluZworCSAqIHBzZWxlY3QoKSB1bmJsb2Nr IGl0ICh2aWEgb3JpZ21hc2spIG9ubHkgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgd2FpdDoKKwkg KiBhIFNJR0lOVCBkZWxpdmVyZWQgaW4gdGhlIHJhY2Ugd2luZG93IHN0YXlzIHBlbmRpbmcgYW5k IHRoZW4gaW50ZXJydXB0cworCSAqIHBzZWxlY3QoKSBpbW1lZGlhdGVseSB3aXRoIEVJTlRSLCBz byB3ZSBsb29wIGFyb3VuZCBhbmQgYmFpbCBvdXQuCisJICovCisJc2lnc2V0X3QJb3JpZ21hc2s7 CisJc2lnc2V0X3QJYmxvY2ttYXNrOworCisJc2lnZW1wdHlzZXQoJmJsb2NrbWFzayk7CisJc2ln YWRkc2V0KCZibG9ja21hc2ssIFNJR0lOVCk7CisJcHRocmVhZF9zaWdtYXNrKFNJR19CTE9DSywg JmJsb2NrbWFzaywgJm9yaWdtYXNrKTsKKyNlbmRpZgogCiAJZm9yICg7OykKIAl7CisJCWlmIChD YW5jZWxSZXF1ZXN0ZWQpCisJCXsKKwkJCWkgPSAtMTsKKwkJCWJyZWFrOworCQl9CisKKwkJKndv cmtlcnNldCA9IHNhdmVTZXQ7CisjaWZkZWYgSEFWRV9QU0VMRUNUCisJCS8qIE5VTEwgdGltZW91 dDogd2FpdCBpbmRlZmluaXRlbHksIHJlbHlpbmcgb24gU0lHSU5UIHRvIHdha2UgdXMuICovCisJ CWkgPSBwc2VsZWN0KG1heEZkICsgMSwgd29ya2Vyc2V0LCBOVUxMLCBOVUxMLCBOVUxMLCAmb3Jp Z21hc2spOworI2Vsc2UKKwogCQkvKgotCQkgKiBPbiBXaW5kb3dzLCB3ZSBuZWVkIHRvIGNoZWNr IG9uY2UgaW4gYSB3aGlsZSBmb3IgY2FuY2VsIHJlcXVlc3RzOwotCQkgKiBvbiBvdGhlciBwbGF0 Zm9ybXMgd2UgcmVseSBvbiBzZWxlY3QoKSByZXR1cm5pbmcgd2hlbiBpbnRlcnJ1cHRlZC4KKwkJ ICogV2l0aG91dCBwc2VsZWN0KCkgd2UgY2FuJ3Qgd2FpdCByYWNlLWZyZWUsIHNvIGFkZCBhIHRp bWVvdXQgb2YgMQorCQkgKiBzZWNvbmQgdG8gdGhlIHNlbGVjdCgpIGFuZCBwb2xsIENhbmNlbFJl cXVlc3RlZCBtYW51YWxseSBhcyBhCisJCSAqIGZhbGxiYWNrLiAgVGhpcyBhbHNvIGNvdmVycyBX aW5kb3dzLCB3aGVyZSBhIGNhbmNlbCByZXF1ZXN0IGlzCisJCSAqIHNpZ25hbGxlZCBieSBhIHNl cGFyYXRlIGNvbnNvbGUtaGFuZGxlciB0aHJlYWQgcmF0aGVyIHRoYW4gYnkKKwkJICogaW50ZXJy dXB0aW5nIHRoZSB3YWl0LgogCQkgKi8KLQkJc3RydWN0IHRpbWV2YWwgKnR2cDsKLSNpZmRlZiBX SU4zMgotCQlzdHJ1Y3QgdGltZXZhbCB0diA9IHswLCAxMDAwMDAwfTsKKwkJeworCQkJc3RydWN0 IHRpbWV2YWwgdHYgPSB7MCwgMTAwMDAwMH07CiAKLQkJdHZwID0gJnR2OwotI2Vsc2UKLQkJdHZw ID0gTlVMTDsKKwkJCWkgPSBzZWxlY3QobWF4RmQgKyAxLCB3b3JrZXJzZXQsIE5VTEwsIE5VTEws ICZ0dik7CisJCX0KICNlbmRpZgogCi0JCSp3b3JrZXJzZXQgPSBzYXZlU2V0OwotCQlpID0gc2Vs ZWN0KG1heEZkICsgMSwgd29ya2Vyc2V0LCBOVUxMLCBOVUxMLCB0dnApOwotCiAjaWZkZWYgV0lO MzIKIAkJaWYgKGkgPT0gU09DS0VUX0VSUk9SKQogCQl7CkBAIC0xMTQsMTQgKzE0NywxOSBAQCBz ZWxlY3RfbG9vcChpbnQgbWF4RmQsIGZkX3NldCAqd29ya2Vyc2V0KQogI2VuZGlmCiAKIAkJaWYg KGkgPCAwICYmIGVycm5vID09IEVJTlRSKQotCQkJY29udGludWU7CQkJLyogaWdub3JlIHRoaXMg Ki8KLQkJaWYgKGkgPCAwIHx8IENhbmNlbFJlcXVlc3RlZCkKLQkJCXJldHVybiAtMTsJCQkvKiBi dXQgbm90IHRoaXMgKi8KKwkJCWNvbnRpbnVlOwkJCS8qIGludGVycnVwdGVkLCByZS1jaGVjayBD YW5jZWxSZXF1ZXN0ZWQgKi8KIAkJaWYgKGkgPT0gMCkKLQkJCWNvbnRpbnVlOwkJCS8qIHRpbWVv dXQgKFdpbjMyIG9ubHkpICovCi0JCWJyZWFrOworCQkJY29udGludWU7CQkJLyogdGltZW91dCAo b25seSByZWFjaGFibGUgdmlhIHNlbGVjdCgpKSAqLworCQlicmVhazsJCQkJCS8qIHJlYWR5IHNv Y2tldHMsIG9yIGEgaGFyZCBlcnJvciAqLwogCX0KIAorI2lmZGVmIEhBVkVfUFNFTEVDVAorCXB0 aHJlYWRfc2lnbWFzayhTSUdfU0VUTUFTSywgJm9yaWdtYXNrLCBOVUxMKTsKKyNlbmRpZgorCisJ aWYgKGkgPCAwKQorCQlyZXR1cm4gLTE7CisKIAlyZXR1cm4gaTsKIH0KIApAQCAtMTk3LDggKzIz NSw3IEBAIHdhaXRfb25fc2xvdHMoUGFyYWxsZWxTbG90QXJyYXkgKnNhKQogewogCWludAkJCWk7 CiAJZmRfc2V0CQlzbG90c2V0OwotCWludAkJCW1heEZkID0gMDsKLQlQR2Nvbm4JICAgKmNhbmNl bGNvbm4gPSBOVUxMOworCWludAkJCW1heEZkID0gLTE7CiAKIAkvKiBXZSBtdXN0IHJlY29uc3Ry dWN0IHRoZSBmZF9zZXQgZm9yIGVhY2ggY2FsbCB0byBzZWxlY3RfbG9vcCAqLwogCUZEX1pFUk8o JnNsb3RzZXQpOwpAQCAtMjE5LDEwICsyNTYsNiBAQCB3YWl0X29uX3Nsb3RzKFBhcmFsbGVsU2xv dEFycmF5ICpzYSkKIAkJaWYgKHNvY2sgPCAwKQogCQkJY29udGludWU7CiAKLQkJLyogS2VlcCB0 cmFjayBvZiB0aGUgZmlyc3QgdmFsaWQgY29ubmVjdGlvbiB3ZSBzZWUuICovCi0JCWlmIChjYW5j ZWxjb25uID09IE5VTEwpCi0JCQljYW5jZWxjb25uID0gc2EtPnNsb3RzW2ldLmNvbm5lY3Rpb247 Ci0KIAkJRkRfU0VUKHNvY2ssICZzbG90c2V0KTsKIAkJaWYgKHNvY2sgPiBtYXhGZCkKIAkJCW1h eEZkID0gc29jazsKQEAgLTIzMiwxMiArMjY1LDEwIEBAIHdhaXRfb25fc2xvdHMoUGFyYWxsZWxT bG90QXJyYXkgKnNhKQogCSAqIElmIHdlIGdldCB0aGlzIGZhciB3aXRoIG5vIHZhbGlkIGNvbm5l Y3Rpb25zLCBwcm9jZXNzaW5nIGNhbm5vdAogCSAqIGNvbnRpbnVlLgogCSAqLwotCWlmIChjYW5j ZWxjb25uID09IE5VTEwpCisJaWYgKG1heEZkIDwgMCkKIAkJcmV0dXJuIGZhbHNlOwogCi0JU2V0 Q2FuY2VsQ29ubihjYW5jZWxjb25uKTsKIAlpID0gc2VsZWN0X2xvb3AobWF4RmQsICZzbG90c2V0 KTsKLQlSZXNldENhbmNlbENvbm4oKTsKIAogCS8qIGZhaWx1cmU/ICovCiAJaWYgKGkgPCAwKQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4gYi9zcmMvaW5jbHVkZS9wZ19j b25maWcuaC5pbgppbmRleCA0ZjgxMTNjMTQ0Yi4uM2MxZTBkMTRhNjUgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCisrKyBiL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmlu CkBAIC0zMDksNiArMzA5LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHBv bGwnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUFBPTEwKIAorLyogRGVmaW5lIHRvIDEgaWYg eW91IGhhdmUgdGhlIGBwc2VsZWN0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1BTRUxFQ1QK KwogLyogRGVmaW5lIGlmIHlvdSBoYXZlIFBPU0lYIHRocmVhZHMgbGlicmFyaWVzIGFuZCBoZWFk ZXIgZmlsZXMuICovCiAjdW5kZWYgSEFWRV9QVEhSRUFECiAKLS0gCjIuNTQuMAoK --16407362cd95456687a9f74fa396331c7bb1f2b42fbbf0186421d2cfd94b Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v10-0003-Move-Windows-pthread-compatibility-functions-to-.patch Content-Type: text/x-patch; charset=utf-8; name=v10-0003-Move-Windows-pthread-compatibility-functions-to-.patch RnJvbSBhNjA0YzFjYWY3MWQwNTQ5YTYyZjc5OTA5YWQyYTlkMjI0MTZjNWU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBTYXQsIDEzIERlYyAyMDI1IDE4OjE4OjEzICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 MTAgMy80XSBNb3ZlIFdpbmRvd3MgcHRocmVhZCBjb21wYXRpYmlsaXR5IGZ1bmN0aW9ucyB0bwog c3JjL3BvcnQKClRoaXMgaXMgaW4gcHJlcGFyYXRpb24gb2YgYSBmb2xsb3ctdXAgY29tbWl0IHdo aWNoIHdpbGwgc3RhcnQgdG8gdXNlCnRoZXNlIGZ1bmN0aW9ucyBpbiBtb3JlIHBsYWNlcyB0aGFu IGp1c3QgbGlicHEuCi0tLQogY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IDEgKwogc3JjL2ludGVyZmFjZXMvbGlicHEvTWFrZWZpbGUgICAgICAgICAgICAg ICAgICB8IDEgLQogc3JjL2ludGVyZmFjZXMvbGlicHEvbWVzb24uYnVpbGQgICAgICAgICAgICAg ICB8IDIgKy0KIHNyYy9wb3J0L21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAxICsKIHNyYy97aW50ZXJmYWNlcy9saWJwcSA9PiBwb3J0fS9wdGhyZWFkLXdpbjMyLmMgfCA0 ICsrLS0KIDUgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQog cmVuYW1lIHNyYy97aW50ZXJmYWNlcy9saWJwcSA9PiBwb3J0fS9wdGhyZWFkLXdpbjMyLmMgKDk0 JSkKCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggNWUxMWQ3 ZGFmZGMuLjk3NWIyNTFkMzg3IDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmln dXJlLmFjCkBAIC0xOTYyLDYgKzE5NjIsNyBAQCBpZiB0ZXN0ICIkUE9SVE5BTUUiID0gIndpbjMy IjsgdGhlbgogICBBQ19MSUJPQkooZGlybW9kKQogICBBQ19MSUJPQkooa2lsbCkKICAgQUNfTElC T0JKKG9wZW4pCisgIEFDX0xJQk9CSihwdGhyZWFkLXdpbjMyKQogICBBQ19MSUJPQkooc3lzdGVt KQogICBBQ19MSUJPQkood2luMzJjb21tb24pCiAgIEFDX0xJQk9CSih3aW4zMmRsb3BlbikKZGlm ZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL01ha2VmaWxlIGIvc3JjL2ludGVyZmFjZXMv bGlicHEvTWFrZWZpbGUKaW5kZXggMDk2Mzk5NWVlZDQuLmQ2Y2ZiMDBkNjU1IDEwMDY0NAotLS0g YS9zcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZQorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJw cS9NYWtlZmlsZQpAQCAtNzUsNyArNzUsNiBAQCBlbmRpZgogCiBpZmVxICgkKFBPUlROQU1FKSwg d2luMzIpCiBPQkpTICs9IFwKLQlwdGhyZWFkLXdpbjMyLm8gXAogCXdpbjMyLm8KIGVuZGlmCiAK ZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL21lc29uLmJ1aWxkIGIvc3JjL2ludGVy ZmFjZXMvbGlicHEvbWVzb24uYnVpbGQKaW5kZXggYjBhZTcyMTY3YTEuLmI5NDk3ODBiODViIDEw MDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9tZXNvbi5idWlsZAorKysgYi9zcmMvaW50 ZXJmYWNlcy9saWJwcS9tZXNvbi5idWlsZApAQCAtMjAsNyArMjAsNyBAQCBsaWJwcV9zb3VyY2Vz ID0gZmlsZXMoCiBsaWJwcV9zb19zb3VyY2VzID0gW10gIyBmb3Igc2hhcmVkIGxpYiwgaW4gYWRk aXRpb24gdG8gdGhlIGFib3ZlCiAKIGlmIGhvc3Rfc3lzdGVtID09ICd3aW5kb3dzJwotICBsaWJw cV9zb3VyY2VzICs9IGZpbGVzKCdwdGhyZWFkLXdpbjMyLmMnLCAnd2luMzIuYycpCisgIGxpYnBx X3NvdXJjZXMgKz0gZmlsZXMoJ3dpbjMyLmMnKQogICBsaWJwcV9zb19zb3VyY2VzICs9IHJjX2xp Yl9nZW4ucHJvY2Vzcyh3aW4zMnZlcl9yYywgZXh0cmFfYXJnczogWwogICAgICctLU5BTUUnLCAn bGlicHEnLAogICAgICctLUZJTEVERVNDJywgJ1Bvc3RncmVTUUwgQWNjZXNzIExpYnJhcnknLF0p CmRpZmYgLS1naXQgYS9zcmMvcG9ydC9tZXNvbi5idWlsZCBiL3NyYy9wb3J0L21lc29uLmJ1aWxk CmluZGV4IDkyMmIzZjY0Njc2Li4xMDgzM2IxMzg0MiAxMDA2NDQKLS0tIGEvc3JjL3BvcnQvbWVz b24uYnVpbGQKKysrIGIvc3JjL3BvcnQvbWVzb24uYnVpbGQKQEAgLTMzLDYgKzMzLDcgQEAgaWYg aG9zdF9zeXN0ZW0gPT0gJ3dpbmRvd3MnCiAgICAgJ2Rpcm1vZC5jJywKICAgICAna2lsbC5jJywK ICAgICAnb3Blbi5jJywKKyAgICAncHRocmVhZC13aW4zMi5jJywKICAgICAnc3lzdGVtLmMnLAog ICAgICd3aW4zMmNvbW1vbi5jJywKICAgICAnd2luMzJkbG9wZW4uYycsCmRpZmYgLS1naXQgYS9z cmMvaW50ZXJmYWNlcy9saWJwcS9wdGhyZWFkLXdpbjMyLmMgYi9zcmMvcG9ydC9wdGhyZWFkLXdp bjMyLmMKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gc3JjL2ludGVyZmFjZXMvbGli cHEvcHRocmVhZC13aW4zMi5jCnJlbmFtZSB0byBzcmMvcG9ydC9wdGhyZWFkLXdpbjMyLmMKaW5k ZXggY2Y2NjI4NGYwMDcuLjQ4ZDY4YjY5M2E3IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9s aWJwcS9wdGhyZWFkLXdpbjMyLmMKKysrIGIvc3JjL3BvcnQvcHRocmVhZC13aW4zMi5jCkBAIC01 LDEyICs1LDEyIEBACiAqCiAqIENvcHlyaWdodCAoYykgMjAwNC0yMDI2LCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAogKiBJREVOVElGSUNBVElPTgotKglzcmMvaW50ZXJmYWNl cy9saWJwcS9wdGhyZWFkLXdpbjMyLmMKKyoJc3JjL3BvcnQvcHRocmVhZC13aW4zMi5jCiAqCiAq LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogKi8KIAotI2luY2x1ZGUgInBvc3RncmVzX2ZlLmgiCisjaW5jbHVk ZSAiYy5oIgogCiAjaW5jbHVkZSAicHRocmVhZC13aW4zMi5oIgogCi0tIAoyLjU0LjAKCg== --16407362cd95456687a9f74fa396331c7bb1f2b42fbbf0186421d2cfd94b Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v10-0004-Don-t-use-deprecated-and-insecure-PQcancel-psql-.patch Content-Type: text/x-patch; charset=utf-8; name=v10-0004-Don-t-use-deprecated-and-insecure-PQcancel-psql-.patch RnJvbSA4YTlkZWU0NDc0OWUxMTZjNTlmMDZlNDNhNDAwODVmODMwZTQyOTI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBTYXQsIDEzIERlYyAyMDI1IDEzOjA1OjUwICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 MTAgNC80XSBEb24ndCB1c2UgZGVwcmVjYXRlZCBhbmQgaW5zZWN1cmUgUFFjYW5jZWwgcHNxbCBh bmQKIG90aGVyIHRvb2xzIGFueW1vcmUKCkFsbCBvZiBvdXIgZnJvbnRlbmQgdG9vbHMgdGhhdCB1 c2VkIG91ciBmZV91dGlscyB0byBjYW5jZWwgcXVlcmllcywKaW5jbHVkaW5nIHBzcWwsIHN0aWxs IHVzZWQgUFFjYW5jZWwgdG8gc2VuZCBjYW5jZWwgcmVxdWVzdHMgdG8gdGhlCnNlcnZlci4gVGhh dCBmdW5jdGlvbiBpcyBpbnNlY3VyZSwgYmVjYXVzZSBpdCBkb2VzIG5vdCB1c2UgZW5jcnlwdGlv biB0bwpzZW5kIHRoZSBjYW5jZWwgcmVxdWVzdC4gVGhpcyBzdGFydHMgdXNpbmcgdGhlIG5ldyBj YW5jZWxsYXRpb24gQVBJcwooaW50cm9kdWNlZCBpbiA2MTQ2MWEzMDApIGZvciBhbGwgdGhlc2Ug ZnJvbnRlbmQgdG9vbHMuIFRoZXNlIEFQSXMgdXNlCnRoZSBzYW1lIGVuY3J5cHRpb24gc2V0dGlu Z3MgYXMgdGhlIGNvbm5lY3Rpb24gdGhhdCdzIGJlaW5nIGNhbmNlbGxlZC4KU2luY2UgdGhlc2Ug QVBJcyBhcmUgbm90IHNpZ25hbC1zYWZlIHRoaXMgcmVxdWlyZWQgYSByZWZhY3RvciB0byBub3QK c2VuZCB0aGUgY2FuY2VsIHJlcXVlc3QgaW4gYSBzaWduYWwgaGFuZGxlciBhbnltb3JlLCBidXQg aW5zdGVhZCB1c2luZyBhCmRlZGljYXRlZCB0aHJlYWQuCgpTaW1pbGFyIGxvZ2ljIHdhcyBhbHJl YWR5IHVzZWQgZm9yIFdpbmRvd3MgYW55d2F5LCBzbyB0aGlzIGhhcyB0aGUKYmVuZWZpdCB0aGF0 IGl0IG1ha2VzIHRoZSBjYW5jZWwgbG9naWMgbW9yZSB1bmlmb3JtIGFjcm9zcyBvdXIgc3VwcG9y dGVkCnBsYXRmb3Jtcy4gSW4gdGhlIHBnX2R1bXAgY29kZSB0aGVyZSdzIHN0aWxsIHF1aXRlIGEg Yml0IG9mIGJlaGF2aW91cmFsCmRpZmZlcmVuY2UgdGhvdWdoLCBiZWNhdXNlIHBnX2R1bXAgaXMg dXNpbmcgdGhyZWFkcyBmb3IgcGFyYWxsZWxpc20gb24KV2luZG93cywgYnV0IHByb2Nlc3NlcyBv biBVbml4ZXMuCi0tLQogbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAy ICstCiBzcmMvYmluL3BnX2FtY2hlY2svcGdfYW1jaGVjay5jICAgICAgfCAgIDIgKy0KIHNyYy9i aW4vcGdfZHVtcC9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2Jpbi9wZ19kdW1w L21lc29uLmJ1aWxkICAgICAgICAgIHwgICAyICsKIHNyYy9iaW4vcGdfZHVtcC9wYXJhbGxlbC5j ICAgICAgICAgICB8IDMzNSArKysrKysrKy0tLS0tLS0tLS0tLQogc3JjL2Jpbi9wZ19kdW1wL3Bn X2JhY2t1cF9hcmNoaXZlci5jIHwgICAyICstCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2Fy Y2hpdmVyLmggfCAgIDggKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfZGIuYyAgICAgICB8 ICAgNyArLQogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyAgICAgICAgICAgIHwgICAyICstCiBz cmMvYmluL3BzcWwvY29tbW9uLmMgICAgICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iaW4vc2Ny aXB0cy9jbHVzdGVyZGIuYyAgICAgICAgICB8ICAgMiArLQogc3JjL2Jpbi9zY3JpcHRzL3JlaW5k ZXhkYi5jICAgICAgICAgIHwgICAyICstCiBzcmMvYmluL3NjcmlwdHMvdmFjdXVtaW5nLmMgICAg ICAgICAgfCAgIDIgKy0KIHNyYy9mZV91dGlscy9NYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAg MiArLQogc3JjL2ZlX3V0aWxzL2NhbmNlbC5jICAgICAgICAgICAgICAgIHwgNDM5ICsrKysrKysr KysrKysrKysrKystLS0tLS0tLQogc3JjL2luY2x1ZGUvZmVfdXRpbHMvY2FuY2VsLmggICAgICAg IHwgIDE1ICstCiAxNiBmaWxlcyBjaGFuZ2VkLCA0NzggaW5zZXJ0aW9ucygrKSwgMzU2IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKaW5kZXggOGVm NTc3MTMyYjkuLmRjYTgxOTdiZjgxIDEwMDY0NAotLS0gYS9tZXNvbi5idWlsZAorKysgYi9tZXNv bi5idWlsZApAQCAtMzY1MSw3ICszNjUxLDcgQEAgZnJvbnRlbmRfY29kZSA9IGRlY2xhcmVfZGVw ZW5kZW5jeSgKICAgaW5jbHVkZV9kaXJlY3RvcmllczogW3Bvc3RncmVzX2luY10sCiAgIGxpbmtf d2l0aDogW2ZlX3V0aWxzLCBjb21tb25fc3RhdGljLCBwZ3BvcnRfc3RhdGljXSwKICAgc291cmNl czogZ2VuZXJhdGVkX2hlYWRlcnNfc3RhbXAsCi0gIGRlcGVuZGVuY2llczogW29zX2RlcHMsIGxp YmludGxdLAorICBkZXBlbmRlbmNpZXM6IFtvc19kZXBzLCBsaWJpbnRsLCB0aHJlYWRfZGVwXSwK ICkKIAogYmFja2VuZF9ib3RoX2RlcHMgKz0gWwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19hbWNo ZWNrL3BnX2FtY2hlY2suYyBiL3NyYy9iaW4vcGdfYW1jaGVjay9wZ19hbWNoZWNrLmMKaW5kZXgg MDliYTA1OTY0MDAuLjI3MjhiY2RiMWFhIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2FtY2hlY2sv cGdfYW1jaGVjay5jCisrKyBiL3NyYy9iaW4vcGdfYW1jaGVjay9wZ19hbWNoZWNrLmMKQEAgLTQ3 OCw3ICs0NzgsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJY3BhcmFtcy5kYm5h bWUgPSBOVUxMOwogCWNwYXJhbXMub3ZlcnJpZGVfZGJuYW1lID0gTlVMTDsKIAotCXNldHVwX2Nh bmNlbF9oYW5kbGVyKE5VTEwpOworCXNldHVwX2NhbmNlbF9oYW5kbGVyKE5VTEwsIE5VTEwpOwog CiAJLyogY2hvb3NlIHRoZSBkYXRhYmFzZSBmb3Igb3VyIGluaXRpYWwgY29ubmVjdGlvbiAqLwog CWlmIChvcHRzLmFsbGRiKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL01ha2VmaWxlIGIv c3JjL2Jpbi9wZ19kdW1wL01ha2VmaWxlCmluZGV4IDc5MDczYjBhMGVhLi5mNzYzNDZjNGY2YyAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL01ha2VmaWxlCisrKyBiL3NyYy9iaW4vcGdfZHVt cC9NYWtlZmlsZQpAQCAtMjEsNyArMjEsNyBAQCBleHBvcnQgTFo0CiBleHBvcnQgWlNURAogZXhw b3J0IHdpdGhfaWN1CiAKLW92ZXJyaWRlIENQUEZMQUdTIDo9IC1JJChsaWJwcV9zcmNkaXIpICQo Q1BQRkxBR1MpCitvdmVycmlkZSBDUFBGTEFHUyA6PSAtSSQobGlicHFfc3JjZGlyKSAtSSQodG9w X3NyY2Rpcikvc3JjL3BvcnQgJChDUFBGTEFHUykKIExERkxBR1NfSU5URVJOQUwgKz0gLUwkKHRv cF9idWlsZGRpcikvc3JjL2ZlX3V0aWxzIC1scGdmZXV0aWxzICQobGlicHFfcGdwb3J0KQogCiBP QkpTID0gXApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL21lc29uLmJ1aWxkIGIvc3JjL2Jp bi9wZ19kdW1wL21lc29uLmJ1aWxkCmluZGV4IDc5YmQ1MDM2ODQxLi5lYjU1ZDdhNTBjZiAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iaW4vcGdfZHVt cC9tZXNvbi5idWlsZApAQCAtMjIsNiArMjIsOCBAQCBwZ19kdW1wX2NvbW1vbl9zb3VyY2VzID0g ZmlsZXMoCiBwZ19kdW1wX2NvbW1vbiA9IHN0YXRpY19saWJyYXJ5KCdsaWJwZ2R1bXBfY29tbW9u JywKICAgcGdfZHVtcF9jb21tb25fc291cmNlcywKICAgY19wY2g6IHBjaF9wb3N0Z3Jlc19mZV9o LAorICAjIHBvcnQgbmVlZHMgdG8gYmUgaW4gaW5jbHVkZSBwYXRoIGR1ZSB0byBwdGhyZWFkLXdp bjMyLmgKKyAgaW5jbHVkZV9kaXJlY3RvcmllczogWycuLi8uLi9wb3J0J10sCiAgIGRlcGVuZGVu Y2llczogW2Zyb250ZW5kX2NvZGUsIGxpYnBxLCBsejQsIHpsaWIsIHpzdGRdLAogICBrd2FyZ3M6 IGludGVybmFsX2xpYl9hcmdzLAogKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BhcmFs bGVsLmMgYi9zcmMvYmluL3BnX2R1bXAvcGFyYWxsZWwuYwppbmRleCA0YTBkMDRiNjQ2Zi4uOGJl NDQzMGM4N2IgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wYXJhbGxlbC5jCisrKyBiL3Ny Yy9iaW4vcGdfZHVtcC9wYXJhbGxlbC5jCkBAIC02MCw2ICs2MCw4IEBACiAjaW5jbHVkZSA8ZmNu dGwuaD4KICNlbmRpZgogCisjaW5jbHVkZSAiY29tbW9uL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJm ZV91dGlscy9jYW5jZWwuaCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKICNp bmNsdWRlICJwYXJhbGxlbC5oIgogI2luY2x1ZGUgInBnX2JhY2t1cF91dGlscy5oIgpAQCAtMTc0 LDEwICsxNzYsNiBAQCB0eXBlZGVmIHN0cnVjdCBEdW1wU2lnbmFsSW5mb3JtYXRpb24KIAogc3Rh dGljIHZvbGF0aWxlIER1bXBTaWduYWxJbmZvcm1hdGlvbiBzaWduYWxfaW5mbzsKIAotI2lmZGVm IFdJTjMyCi1zdGF0aWMgQ1JJVElDQUxfU0VDVElPTiBzaWduYWxfaW5mb19sb2NrOwotI2VuZGlm Ci0KIC8qCiAgKiBXcml0ZSBhIHNpbXBsZSBzdHJpbmcgdG8gc3RkZXJyIC0tLSBtdXN0IGJlIHNh ZmUgaW4gYSBzaWduYWwgaGFuZGxlci4KICAqIFdlIGlnbm9yZSB0aGUgd3JpdGUoKSByZXN1bHQg c2luY2UgdGhlcmUncyBub3QgbXVjaCB3ZSBjb3VsZCBkbyBhYm91dCBpdC4KQEAgLTIwOSw2ICsy MDcsNyBAQCBzdGF0aWMgdm9pZCBXYWl0Rm9yVGVybWluYXRpbmdXb3JrZXJzKFBhcmFsbGVsU3Rh dGUgKnBzdGF0ZSk7CiBzdGF0aWMgdm9pZCBzZXRfY2FuY2VsX2hhbmRsZXIodm9pZCk7CiBzdGF0 aWMgdm9pZCBzZXRfY2FuY2VsX3BzdGF0ZShQYXJhbGxlbFN0YXRlICpwc3RhdGUpOwogc3RhdGlj IHZvaWQgc2V0X2NhbmNlbF9zbG90X2FyY2hpdmUoUGFyYWxsZWxTbG90ICpzbG90LCBBcmNoaXZl SGFuZGxlICpBSCk7CitzdGF0aWMgdm9pZCBTdG9wV29ya2Vycyh2b2lkKTsKIHN0YXRpYyB2b2lk IFJ1bldvcmtlcihBcmNoaXZlSGFuZGxlICpBSCwgUGFyYWxsZWxTbG90ICpzbG90KTsKIHN0YXRp YyBpbnQJR2V0SWRsZVdvcmtlcihQYXJhbGxlbFN0YXRlICpwc3RhdGUpOwogc3RhdGljIGJvb2wg SGFzRXZlcnlXb3JrZXJUZXJtaW5hdGVkKFBhcmFsbGVsU3RhdGUgKnBzdGF0ZSk7CkBAIC00MTAs MzIgKzQwOSw5IEBAIFNodXRkb3duV29ya2Vyc0hhcmQoUGFyYWxsZWxTdGF0ZSAqcHN0YXRlKQog CS8qCiAJICogRm9yY2UgZWFybHkgdGVybWluYXRpb24gb2YgYW55IGNvbW1hbmRzIGN1cnJlbnRs eSBpbiBwcm9ncmVzcy4KIAkgKi8KLSNpZm5kZWYgV0lOMzIKLQkvKiBPbiBub24tV2luZG93cywg c2VuZCBTSUdURVJNIHRvIGVhY2ggd29ya2VyIHByb2Nlc3MuICovCi0JZm9yIChpID0gMDsgaSA8 IHBzdGF0ZS0+bnVtV29ya2VyczsgaSsrKQotCXsKLQkJcGlkX3QJCXBpZCA9IHBzdGF0ZS0+cGFy YWxsZWxTbG90W2ldLnBpZDsKLQotCQlpZiAocGlkICE9IDApCi0JCQlraWxsKHBpZCwgU0lHVEVS TSk7Ci0JfQotI2Vsc2UKLQotCS8qCi0JICogT24gV2luZG93cywgc2VuZCBxdWVyeSBjYW5jZWxz IGRpcmVjdGx5IHRvIHRoZSB3b3JrZXJzJyBiYWNrZW5kcy4gIFVzZQotCSAqIGEgY3JpdGljYWwg c2VjdGlvbiB0byBlbnN1cmUgd29ya2VyIHRocmVhZHMgZG9uJ3QgY2hhbmdlIHN0YXRlLgotCSAq LwotCUVudGVyQ3JpdGljYWxTZWN0aW9uKCZzaWduYWxfaW5mb19sb2NrKTsKLQlmb3IgKGkgPSAw OyBpIDwgcHN0YXRlLT5udW1Xb3JrZXJzOyBpKyspCi0JewotCQlBcmNoaXZlSGFuZGxlICpBSCA9 IHBzdGF0ZS0+cGFyYWxsZWxTbG90W2ldLkFIOwotCQljaGFyCQllcnJidWZbMV07Ci0KLQkJaWYg KEFIICE9IE5VTEwgJiYgQUgtPmNvbm5DYW5jZWwgIT0gTlVMTCkKLQkJCSh2b2lkKSBQUWNhbmNl bChBSC0+Y29ubkNhbmNlbCwgZXJyYnVmLCBzaXplb2YoZXJyYnVmKSk7Ci0JfQotCUxlYXZlQ3Jp dGljYWxTZWN0aW9uKCZzaWduYWxfaW5mb19sb2NrKTsKLSNlbmRpZgorCUxvY2tDYW5jZWxUaHJl YWQoKTsKKwlTdG9wV29ya2VycygpOworCVVubG9ja0NhbmNlbFRocmVhZCgpOwogCiAJLyogTm93 IHdhaXQgZm9yIHRoZW0gdG8gdGVybWluYXRlLiAqLwogCVdhaXRGb3JUZXJtaW5hdGluZ1dvcmtl cnMocHN0YXRlKTsKQEAgLTUxOSw3NSArNDk1LDY4IEBAIFdhaXRGb3JUZXJtaW5hdGluZ1dvcmtl cnMoUGFyYWxsZWxTdGF0ZSAqcHN0YXRlKQogICogY291bGQgbGVhdmUgYSBTUUwgY29tbWFuZCAo ZS5nLiwgQ1JFQVRFIElOREVYIG9uIGEgbGFyZ2UgdGFibGUpIHJ1bm5pbmcKICAqIGZvciBhIGxv bmcgdGltZS4gIEluc3RlYWQsIHdlIHRyeSB0byBzZW5kIGEgY2FuY2VsIHJlcXVlc3QgYW5kIHRo ZW4gZGllLgogICogcGdfZHVtcCBwcm9iYWJseSBkb2Vzbid0IHJlYWxseSBuZWVkIHRoaXMsIGJ1 dCB3ZSBtaWdodCBhcyB3ZWxsIHVzZSBpdAotICogdGhlcmUgdG9vLiAgTm90ZSB0aGF0IHNlbmRp bmcgdGhlIGNhbmNlbCBkaXJlY3RseSBmcm9tIHRoZSBzaWduYWwgaGFuZGxlcgotICogaXMgc2Fm ZSBiZWNhdXNlIFBRY2FuY2VsKCkgaXMgd3JpdHRlbiB0byBtYWtlIGl0IHNvLgorICogdGhlcmUg dG9vLgogICoKLSAqIEluIHBhcmFsbGVsIG9wZXJhdGlvbiBvbiBVbml4LCBlYWNoIHByb2Nlc3Mg aXMgcmVzcG9uc2libGUgZm9yIGNhbmNlbGluZwotICogaXRzIG93biBjb25uZWN0aW9uICh0aGlz IG11c3QgYmUgc28gYmVjYXVzZSBub2JvZHkgZWxzZSBoYXMgYWNjZXNzIHRvIGl0KS4KLSAqIEZ1 cnRoZXJtb3JlLCB0aGUgbGVhZGVyIHByb2Nlc3Mgc2hvdWxkIGF0dGVtcHQgdG8gZm9yd2FyZCBp dHMgc2lnbmFsIHRvCi0gKiBlYWNoIGNoaWxkLiAgSW4gc2ltcGxlIG1hbnVhbCB1c2Ugb2YgcGdf ZHVtcC9wZ19yZXN0b3JlLCBmb3J3YXJkaW5nIGlzbid0Ci0gKiBuZWVkZWQgYmVjYXVzZSB0eXBp bmcgY29udHJvbC1DIGF0IHRoZSBjb25zb2xlIHdvdWxkIGRlbGl2ZXIgU0lHSU5UIHRvCi0gKiBl dmVyeSBtZW1iZXIgb2YgdGhlIHRlcm1pbmFsIHByb2Nlc3MgZ3JvdXAgLS0tIGJ1dCBpbiBvdGhl ciBzY2VuYXJpb3MgaXQKLSAqIG1pZ2h0IGJlIHRoYXQgb25seSB0aGUgbGVhZGVyIGdldHMgc2ln bmFsZWQuCisgKiBPbiBVbml4LCB0aGUgc2lnbmFsIGhhbmRsZXIgd2FrZXMgdXAgYSBkZWRpY2F0 ZWQgY2FuY2VsIHRocmVhZCB2aWEgYQorICogc2VsZi1waXBlLCB3aGljaCB0aGVuIHNlbmRzIHRo ZSBjYW5jZWwgYW5kIGNhbGxzIF9leGl0KCkuICBUaGlzIHRocmVhZCBhbHNvCisgKiBmb3J3YXJk cyB0aGUgc2lnbmFsIHRvIGVhY2ggY2hpbGQgc28gdGhleSBjYW4gYWxzbyBjYW5jZWwgdGhlaXIg cXVlcmllcy4gSW4KKyAqIHNpbXBsZSBtYW51YWwgdXNlIG9mIHBnX2R1bXAvcGdfcmVzdG9yZSwg Zm9yd2FyZGluZyBpc24ndCBuZWVkZWQgYmVjYXVzZQorICogdHlwaW5nIGNvbnRyb2wtQyBhdCB0 aGUgY29uc29sZSB3b3VsZCBkZWxpdmVyIFNJR0lOVCB0byBldmVyeSBtZW1iZXIgb2YgdGhlCisg KiB0ZXJtaW5hbCBwcm9jZXNzIGdyb3VwIC0tLSBidXQgaW4gb3RoZXIgc2NlbmFyaW9zIGl0IG1p Z2h0IGJlIHRoYXQgb25seSB0aGUKKyAqIGxlYWRlciBnZXRzIHNpZ25hbGVkLgogICoKICAqIE9u IFdpbmRvd3MsIHRoZSBjYW5jZWwgaGFuZGxlciBydW5zIGluIGEgc2VwYXJhdGUgdGhyZWFkLCBi ZWNhdXNlIHRoYXQncwogICogaG93IFNldENvbnNvbGVDdHJsSGFuZGxlciB3b3Jrcy4gIEJlY2F1 c2UgdGhlIHdvcmtlcnMgYXJlIHRocmVhZHMgaW4gdGhpcwogICogc2FtZSBwcm9jZXNzLCB3ZSBz ZXQgYSBmbGFnIChpc19jYW5jZWxfaW5fcHJvZ3Jlc3MoKSkgc28gdGhleSBzdGF5IHF1aWV0CiAg KiBhYm91dCB0aGUgcXVlcnkgY2FuY2VsbGF0aW9ucyBpbnN0ZWFkIG9mIGNsdXR0ZXJpbmcgdGhl IHNjcmVlbiwgdGhlbiBzZW5kCi0gKiBjYW5jZWxzIG9uIGFsbCBhY3RpdmUgY29ubmVjdGlvbnMg YW5kIHJldHVybiBGQUxTRSwgd2hpY2ggd2lsbCBhbGxvdyB0aGUKLSAqIHByb2Nlc3MgdG8gZGll LiAgRm9yIHNhZmV0eSdzIHNha2UsIHdlIHVzZSBhIGNyaXRpY2FsIHNlY3Rpb24gdG8gcHJvdGVj dAotICogdGhlIFBHY2FuY2VsIHN0cnVjdHVyZXMgYWdhaW5zdCBiZWluZyBjaGFuZ2VkIHdoaWxl IHRoZSBzaWduYWwgdGhyZWFkIHJ1bnMuCisgKiBjYW5jZWxzIG9uIGFsbCBhY3RpdmUgY29ubmVj dGlvbnMgYW5kIGNhbGwgX2V4aXQoKSB0byB0ZXJtaW5hdGUgdGhlCisgKiBwcm9jZXNzLiAgQWNj ZXNzIHRvIHRoZSBzaGFyZWQgUEdjYW5jZWxDb25uIHN0cnVjdHVyZXMgaXMgc2VyaWFsaXplZCBh Z2FpbnN0CisgKiB0aGUgbWFpbiB0aHJlYWQgYnkgdGhlIGNhbmNlbCB0aHJlYWQgbG9jayBoZWxk IGFyb3VuZCB0aGUgY2FsbGJhY2suCiAgKi8KIAotI2lmbmRlZiBXSU4zMgotCiAvKgotICogU2ln bmFsIGhhbmRsZXIgKFVuaXggb25seSkKKyAqIENhbmNlbCBhbGwgYWN0aXZlIHF1ZXJpZXMsIHBy aW50IGEgdGVybWluYXRpb24gbWVzc2FnZSwgYW5kIGV4aXQuCisgKgorICogSW52b2tlZCBmcm9t IHRoZSBjYW5jZWwgdGhyZWFkIChVbml4KSBvciB0aGUgV2luZG93cyBjb25zb2xlIGhhbmRsZXIg dGhyZWFkLgorICogSXQgbmV2ZXIgcmV0dXJuczogYWZ0ZXIgc2VuZGluZyB0aGUgY2FuY2VscyBp dCBjYWxscyBfZXhpdCgpIHNvIHRoYXQgdGhlCisgKiBwcm9jZXNzIHRlcm1pbmF0ZXMgb24gY2Fu Y2VsLiAgV2UgdXNlIF9leGl0KCkgcmF0aGVyIHRoYW4gZXhpdCgpIGJlY2F1c2UgdGhlCisgKiBs YXR0ZXIgd291bGQgaW52b2tlIGF0ZXhpdCBoYW5kbGVycyB0aGF0IGNhbiBmYWlsIGlmIHdlIGlu dGVycnVwdGVkIHJlbGF0ZWQKKyAqIGNvZGUuCiAgKi8KLXN0YXRpYyB2b2lkCi1zaWdUZXJtSGFu ZGxlcihTSUdOQUxfQVJHUykKK3BnX25vcmV0dXJuIHN0YXRpYyB2b2lkCitDYW5jZWxCYWNrZW5k c0FuZEV4aXQodm9pZCkKIHsKLQlpbnQJCQlpOwotCWNoYXIJCWVycmJ1ZlsxXTsKKyNpZmRlZiBX SU4zMgogCiAJLyoKLQkgKiBTb21lIHBsYXRmb3JtcyBhbGxvdyBkZWxpdmVyeSBvZiBuZXcgc2ln bmFscyB0byBpbnRlcnJ1cHQgYW4gYWN0aXZlCi0JICogc2lnbmFsIGhhbmRsZXIuICBUaGF0IGNv dWxkIG11Y2sgdXAgb3VyIGF0dGVtcHQgdG8gc2VuZCBQUWNhbmNlbCwgc28KLQkgKiBkaXNhYmxl IHRoZSBzaWduYWxzIHRoYXQgc2V0X2NhbmNlbF9oYW5kbGVyIGVuYWJsZWQuCisJICogT24gV2lu ZG93cyB0aGUgd29ya2VycyBhcmUgdGhyZWFkcyB3aXRoaW4gdGhpcyBzYW1lIHByb2Nlc3MuICBP bmNlIHdlCisJICogY2FuY2VsIHRoZWlyIHF1ZXJpZXMgYmVsb3cgdGhleSB3b3VsZCByZWNlaXZl IHRoZSBjYW5jZWxsYXRpb24gYXMgYW4KKwkgKiBlcnJvciBhbmQgcmVwb3J0IGl0LCBjbHV0dGVy aW5nIHRoZSB1c2VyJ3Mgc2NyZWVuIGluIHRoZSBicmllZiB3aW5kb3cKKwkgKiBiZWZvcmUgdGhl IHByb2Nlc3MgZXhpdHMuICBUZWxsIHRoZW0gdG8gc3RheSBxdWlldCBhYm91dCBpdCBieSBzZXR0 aW5nCisJICogYSBmbGFnLiAgVGhpcyBtdXN0IGJlIHNldCBiZWZvcmUgd2Ugc2VuZCBhbnkgY2Fu Y2VsLCBzbyB0aGF0IGEgd29ya2VyIGlzCisJICogZ3VhcmFudGVlZCB0byBzZWUgaXQgYnkgdGhl IHRpbWUgaXRzIHF1ZXJ5IGZhaWxzIGFzIGEgcmVzdWx0LgogCSAqLwotCXBxc2lnbmFsKFNJR0lO VCwgUEdfU0lHX0lHTik7Ci0JcHFzaWduYWwoU0lHVEVSTSwgUEdfU0lHX0lHTik7Ci0JcHFzaWdu YWwoU0lHUVVJVCwgUEdfU0lHX0lHTik7CisJc2V0X2NhbmNlbF9pbl9wcm9ncmVzcygpOworI2Vu ZGlmCiAKIAkvKgotCSAqIElmIHdlJ3JlIGluIHRoZSBsZWFkZXIsIGZvcndhcmQgc2lnbmFsIHRv IGFsbCB3b3JrZXJzLiAgKEl0IHNlZW1zIGJlc3QKLQkgKiB0byBkbyB0aGlzIGJlZm9yZSBQUWNh bmNlbDsga2lsbGluZyB0aGUgbGVhZGVyIHRyYW5zYWN0aW9uIHdpbGwgcmVzdWx0Ci0JICogaW4g aW52YWxpZC1zbmFwc2hvdCBlcnJvcnMgZnJvbSBhY3RpdmUgd29ya2Vycywgd2hpY2ggbWF5YmUg d2UgY2FuCi0JICogcXVpZXQgYnkga2lsbGluZyB3b3JrZXJzIGZpcnN0LikgIElnbm9yZSBhbnkg ZXJyb3JzLgorCSAqIFN0b3Agd29ya2VycyBmaXJzdCB0byBhdm9pZCBpbnZhbGlkLXNuYXBzaG90 IGVycm9ycyBpZiB0aGUgbGVhZGVyCisJICogY2FuY2VscyBiZWZvcmUgd29ya2Vycy4KIAkgKi8K LQlpZiAoc2lnbmFsX2luZm8ucHN0YXRlICE9IE5VTEwpCi0JewotCQlmb3IgKGkgPSAwOyBpIDwg c2lnbmFsX2luZm8ucHN0YXRlLT5udW1Xb3JrZXJzOyBpKyspCi0JCXsKLQkJCXBpZF90CQlwaWQg PSBzaWduYWxfaW5mby5wc3RhdGUtPnBhcmFsbGVsU2xvdFtpXS5waWQ7CisJU3RvcFdvcmtlcnMo KTsKIAotCQkJaWYgKHBpZCAhPSAwKQotCQkJCWtpbGwocGlkLCBTSUdURVJNKTsKLQkJfQotCX0K KwlpZiAoc2lnbmFsX2luZm8ubXlBSCAhPSBOVUxMICYmIHNpZ25hbF9pbmZvLm15QUgtPmNhbmNl bENvbm4gIT0gTlVMTCkKKwkJKHZvaWQpIFBRY2FuY2VsQmxvY2tpbmcoc2lnbmFsX2luZm8ubXlB SC0+Y2FuY2VsQ29ubik7CiAKIAkvKgotCSAqIFNlbmQgUXVlcnlDYW5jZWwgaWYgd2UgaGF2ZSBh IGNvbm5lY3Rpb24gdG8gc2VuZCB0by4gIElnbm9yZSBlcnJvcnMsCi0JICogdGhlcmUncyBub3Qg bXVjaCB3ZSBjYW4gZG8gYWJvdXQgdGhlbSBhbnl3YXkuCi0JICovCi0JaWYgKHNpZ25hbF9pbmZv Lm15QUggIT0gTlVMTCAmJiBzaWduYWxfaW5mby5teUFILT5jb25uQ2FuY2VsICE9IE5VTEwpCi0J CSh2b2lkKSBQUWNhbmNlbChzaWduYWxfaW5mby5teUFILT5jb25uQ2FuY2VsLCBlcnJidWYsIHNp emVvZihlcnJidWYpKTsKLQotCS8qCi0JICogUmVwb3J0IHdlJ3JlIHF1aXR0aW5nLCB1c2luZyBu b3RoaW5nIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiB3cml0ZSgyKS4KLQkgKiBXaGVuIGluIHBhcmFs bGVsIG9wZXJhdGlvbiwgb25seSB0aGUgbGVhZGVyIHByb2Nlc3Mgc2hvdWxkIGRvIHRoaXMuCisJ ICogUHJpbnQgdGVybWluYXRpb24gbWVzc2FnZS4gSW4gcGFyYWxsZWwgb3BlcmF0aW9uLCBvbmx5 IHRoZSBsZWFkZXIKKwkgKiBzaG91bGQgcHJpbnQgdGhpcy4gT24gV2luZG93cywgd29ya2VycyBh cmUgdGhyZWFkcyBpbiB0aGUgc2FtZSBwcm9jZXNzCisJICogYW5kIHRoZSBjb25zb2xlIGhhbmRs ZXIgb25seSBydW5zIGluIHRoZSBsZWFkZXIgY29udGV4dCwgc28gd2UgY2FuCisJICogYWx3YXlz IHByaW50IGl0LgogCSAqLworI2lmbmRlZiBXSU4zMgogCWlmICghc2lnbmFsX2luZm8uYW1fd29y a2VyKQorI2VuZGlmCiAJewogCQlpZiAocHJvZ25hbWUpCiAJCXsKQEAgLTU5NywxMDYgKzU2Niw0 MiBAQCBzaWdUZXJtSGFuZGxlcihTSUdOQUxfQVJHUykKIAkJd3JpdGVfc3RkZXJyKCJ0ZXJtaW5h dGVkIGJ5IHVzZXJcbiIpOwogCX0KIAotCS8qCi0JICogQW5kIGRpZSwgdXNpbmcgX2V4aXQoKSBu b3QgZXhpdCgpIGJlY2F1c2UgdGhlIGxhdHRlciB3aWxsIGludm9rZSBhdGV4aXQKLQkgKiBoYW5k bGVycyB0aGF0IGNhbiBmYWlsIGlmIHdlIGludGVycnVwdGVkIHJlbGF0ZWQgY29kZS4KLQkgKi8K IAlfZXhpdCgxKTsKIH0KIAogLyoKLSAqIEVuYWJsZSBjYW5jZWwgaW50ZXJydXB0IGhhbmRsZXIs IGlmIG5vdCBhbHJlYWR5IGRvbmUuCi0gKi8KLXN0YXRpYyB2b2lkCi1zZXRfY2FuY2VsX2hhbmRs ZXIodm9pZCkKLXsKLQkvKgotCSAqIFdoZW4gZm9ya2luZywgc2lnbmFsX2luZm8uaGFuZGxlcl9z ZXQgd2lsbCBwcm9wYWdhdGUgaW50byB0aGUgbmV3Ci0JICogcHJvY2VzcywgYnV0IHRoYXQncyBm aW5lIGJlY2F1c2UgdGhlIHNpZ25hbCBoYW5kbGVyIHN0YXRlIGRvZXMgdG9vLgotCSAqLwotCWlm ICghc2lnbmFsX2luZm8uaGFuZGxlcl9zZXQpCi0JewotCQlzaWduYWxfaW5mby5oYW5kbGVyX3Nl dCA9IHRydWU7Ci0KLQkJcHFzaWduYWwoU0lHSU5ULCBzaWdUZXJtSGFuZGxlcik7Ci0JCXBxc2ln bmFsKFNJR1RFUk0sIHNpZ1Rlcm1IYW5kbGVyKTsKLQkJcHFzaWduYWwoU0lHUVVJVCwgc2lnVGVy bUhhbmRsZXIpOwotCX0KLX0KLQotI2Vsc2UJCQkJCQkJLyogV0lOMzIgKi8KLQotLyoKLSAqIENv bnNvbGUgaW50ZXJydXB0IGhhbmRsZXIgLS0tIHJ1bnMgaW4gYSBuZXdseS1zdGFydGVkIHRocmVh ZC4KKyAqIFN0b3AgYWxsIHdvcmtlciBwcm9jZXNzZXMvdGhyZWFkcy4KICAqCi0gKiBBZnRlciBz dG9wcGluZyBvdGhlciB0aHJlYWRzIGFuZCBzZW5kaW5nIGNhbmNlbCByZXF1ZXN0cyBvbiBhbGwg b3BlbgotICogY29ubmVjdGlvbnMsIHdlIHJldHVybiBGQUxTRSB3aGljaCB3aWxsIGFsbG93IHRo ZSBkZWZhdWx0IEV4aXRQcm9jZXNzKCkKLSAqIGFjdGlvbiB0byBiZSB0YWtlbi4KKyAqIE9uIFVu aXgsIHNlbmQgU0lHVEVSTSB0byBlYWNoIHdvcmtlciBwcm9jZXNzOyB0aGVpciBzaWduYWwgaGFu ZGxlcnMgd2lsbAorICogc2VuZCBjYW5jZWwgcmVxdWVzdHMgdG8gdGhlaXIgYmFja2VuZHMuCisg KgorICogT24gV2luZG93cywgd29ya2VycyBhcmUgdGhyZWFkcyBpbiB0aGUgc2FtZSBwcm9jZXNz LCBzbyB3ZSBzZW5kIGNhbmNlbAorICogcmVxdWVzdHMgZGlyZWN0bHkgdG8gdGhlaXIgYmFja2Vu ZHMuCisgKgorICogQ2FsbGVyIG11c3QgaG9sZCB0aGUgY2FuY2VsIHRocmVhZCBsb2NrICh2aWEg TG9ja0NhbmNlbFRocmVhZCkuCiAgKi8KLXN0YXRpYyBCT09MIFdJTkFQSQotY29uc29sZUhhbmRs ZXIoRFdPUkQgZHdDdHJsVHlwZSkKK3N0YXRpYyB2b2lkCitTdG9wV29ya2Vycyh2b2lkKQogewog CWludAkJCWk7Ci0JY2hhcgkJZXJyYnVmWzFdOwotCi0JaWYgKGR3Q3RybFR5cGUgPT0gQ1RSTF9D X0VWRU5UIHx8Ci0JCWR3Q3RybFR5cGUgPT0gQ1RSTF9CUkVBS19FVkVOVCkKLQl7Ci0JCS8qCi0J CSAqIFRlbGwgd29ya2VyIHRocmVhZHMgdG8gc3RheSBxdWlldCBhYm91dCB0aGUgcXVlcnkgY2Fu Y2VsbGF0aW9ucwotCQkgKiB3ZSdyZSBhYm91dCB0byBzZW5kIHRoZW07IG90aGVyd2lzZSB0aGV5 J2QgcmVwb3J0IHRoZW0gYXMgZXJyb3JzCi0JCSAqIGFuZCBjbHV0dGVyIHRoZSB1c2VyJ3Mgc2Ny ZWVuLiAgVGhpcyBtdXN0IGJlIHNldCBiZWZvcmUgd2Ugc2VuZCBhbnkKLQkJICogY2FuY2VsLCBz byB0aGF0IGEgd29ya2VyIGlzIGd1YXJhbnRlZWQgdG8gc2VlIGl0IGJ5IHRoZSB0aW1lIGl0cwot CQkgKiBxdWVyeSBmYWlscyBhcyBhIHJlc3VsdC4KLQkJICovCi0JCXNldF9jYW5jZWxfaW5fcHJv Z3Jlc3MoKTsKIAotCQkvKiBDcml0aWNhbCBzZWN0aW9uIHByZXZlbnRzIGNoYW5naW5nIGRhdGEg d2UgbG9vayBhdCBoZXJlICovCi0JCUVudGVyQ3JpdGljYWxTZWN0aW9uKCZzaWduYWxfaW5mb19s b2NrKTsKLQotCQkvKgotCQkgKiBJZiBpbiBwYXJhbGxlbCBtb2RlLCBzZW5kIFF1ZXJ5Q2FuY2Vs IHRvIGVhY2ggd29ya2VyJ3MgY29ubmVjdGVkCi0JCSAqIGJhY2tlbmQuICBEbyB0aGlzIGJlZm9y ZSBjYW5jZWxpbmcgdGhlIG1haW4gdHJhbnNhY3Rpb24sIGVsc2Ugd2UKLQkJICogbWlnaHQgZ2V0 IGludmFsaWQtc25hcHNob3QgZXJyb3JzIHJlcG9ydGVkIGJlZm9yZSB3ZSBjYW4gc3RvcCB0aGUK LQkJICogd29ya2Vycy4gIElnbm9yZSBlcnJvcnMsIHRoZXJlJ3Mgbm90IG11Y2ggd2UgY2FuIGRv IGFib3V0IHRoZW0KLQkJICogYW55d2F5LgotCQkgKi8KLQkJaWYgKHNpZ25hbF9pbmZvLnBzdGF0 ZSAhPSBOVUxMKQotCQl7Ci0JCQlmb3IgKGkgPSAwOyBpIDwgc2lnbmFsX2luZm8ucHN0YXRlLT5u dW1Xb3JrZXJzOyBpKyspCi0JCQl7Ci0JCQkJQXJjaGl2ZUhhbmRsZSAqQUggPSBzaWduYWxfaW5m by5wc3RhdGUtPnBhcmFsbGVsU2xvdFtpXS5BSDsKLQotCQkJCWlmIChBSCAhPSBOVUxMICYmIEFI LT5jb25uQ2FuY2VsICE9IE5VTEwpCi0JCQkJCSh2b2lkKSBQUWNhbmNlbChBSC0+Y29ubkNhbmNl bCwgZXJyYnVmLCBzaXplb2YoZXJyYnVmKSk7Ci0JCQl9Ci0JCX0KKwlpZiAoc2lnbmFsX2luZm8u cHN0YXRlID09IE5VTEwpCisJCXJldHVybjsKIAotCQkvKgotCQkgKiBTZW5kIFF1ZXJ5Q2FuY2Vs IHRvIGxlYWRlciBjb25uZWN0aW9uLCBpZiBlbmFibGVkLiAgSWdub3JlIGVycm9ycywKLQkJICog dGhlcmUncyBub3QgbXVjaCB3ZSBjYW4gZG8gYWJvdXQgdGhlbSBhbnl3YXkuCi0JCSAqLwotCQlp ZiAoc2lnbmFsX2luZm8ubXlBSCAhPSBOVUxMICYmIHNpZ25hbF9pbmZvLm15QUgtPmNvbm5DYW5j ZWwgIT0gTlVMTCkKLQkJCSh2b2lkKSBQUWNhbmNlbChzaWduYWxfaW5mby5teUFILT5jb25uQ2Fu Y2VsLAotCQkJCQkJCWVycmJ1Ziwgc2l6ZW9mKGVycmJ1ZikpOworCWZvciAoaSA9IDA7IGkgPCBz aWduYWxfaW5mby5wc3RhdGUtPm51bVdvcmtlcnM7IGkrKykKKwl7CisjaWZuZGVmIFdJTjMyCisJ CXBpZF90CQlwaWQgPSBzaWduYWxfaW5mby5wc3RhdGUtPnBhcmFsbGVsU2xvdFtpXS5waWQ7CiAK LQkJTGVhdmVDcml0aWNhbFNlY3Rpb24oJnNpZ25hbF9pbmZvX2xvY2spOworCQlpZiAocGlkICE9 IDApCisJCQlraWxsKHBpZCwgU0lHVEVSTSk7CisjZWxzZQorCQlBcmNoaXZlSGFuZGxlICpBSCA9 IHNpZ25hbF9pbmZvLnBzdGF0ZS0+cGFyYWxsZWxTbG90W2ldLkFIOwogCi0JCS8qCi0JCSAqIFJl cG9ydCB3ZSdyZSBxdWl0dGluZywgdXNpbmcgbm90aGluZyBtb3JlIGNvbXBsaWNhdGVkIHRoYW4K LQkJICogd3JpdGUoMikuICBXZSBzaG91bGQgYmUgYWJsZSB0byB1c2UgcGdfbG9nXyooKSBoZXJl LCBidXQgZm9yIG5vdyB3ZQotCQkgKiBzdGF5IGFsaWduZWQgd2l0aCB0aGUgc2lnVGVybUhhbmRs ZXIgYmVoYXZpb3IuCi0JCSAqLwotCQlpZiAocHJvZ25hbWUpCi0JCXsKLQkJCXdyaXRlX3N0ZGVy cihwcm9nbmFtZSk7Ci0JCQl3cml0ZV9zdGRlcnIoIjogIik7Ci0JCX0KLQkJd3JpdGVfc3RkZXJy KCJ0ZXJtaW5hdGVkIGJ5IHVzZXJcbiIpOworCQlpZiAoQUggIT0gTlVMTCAmJiBBSC0+Y2FuY2Vs Q29ubiAhPSBOVUxMKQorCQkJKHZvaWQpIFBRY2FuY2VsQmxvY2tpbmcoQUgtPmNhbmNlbENvbm4p OworI2VuZGlmCiAJfQotCi0JLyogQWx3YXlzIHJldHVybiBGQUxTRSB0byBhbGxvdyBzaWduYWwg aGFuZGxpbmcgdG8gY29udGludWUgKi8KLQlyZXR1cm4gRkFMU0U7CiB9CiAKIC8qCkBAIC03MDUs NTggKzYxMCw1NSBAQCBjb25zb2xlSGFuZGxlcihEV09SRCBkd0N0cmxUeXBlKQogc3RhdGljIHZv aWQKIHNldF9jYW5jZWxfaGFuZGxlcih2b2lkKQogewotCWlmICghc2lnbmFsX2luZm8uaGFuZGxl cl9zZXQpCi0JewotCQlzaWduYWxfaW5mby5oYW5kbGVyX3NldCA9IHRydWU7CisJaWYgKHNpZ25h bF9pbmZvLmhhbmRsZXJfc2V0KQorCQlyZXR1cm47CiAKLQkJSW5pdGlhbGl6ZUNyaXRpY2FsU2Vj dGlvbigmc2lnbmFsX2luZm9fbG9jayk7CisJc2lnbmFsX2luZm8uaGFuZGxlcl9zZXQgPSB0cnVl OwogCi0JCVNldENvbnNvbGVDdHJsSGFuZGxlcihjb25zb2xlSGFuZGxlciwgVFJVRSk7Ci0JfQot fQorCXNldHVwX2NhbmNlbF9oYW5kbGVyKE5VTEwsIENhbmNlbEJhY2tlbmRzQW5kRXhpdCk7CiAK LSNlbmRpZgkJCQkJCQkvKiBXSU4zMiAqLworI2lmbmRlZiBXSU4zMgorCXBxc2lnbmFsKFNJR1RF Uk0sIENhbmNlbFNpZ25hbEhhbmRsZXIpOworCXBxc2lnbmFsKFNJR1FVSVQsIENhbmNlbFNpZ25h bEhhbmRsZXIpOworI2VuZGlmCit9CiAKIAogLyoKICAqIHNldF9hcmNoaXZlX2NhbmNlbF9pbmZv CiAgKgotICogRmlsbCBBSC0+Y29ubkNhbmNlbCB3aXRoIGNhbmNlbGxhdGlvbiBpbmZvIGZvciB0 aGUgc3BlY2lmaWVkIGRhdGFiYXNlCisgKiBGaWxsIEFILT5jYW5jZWxDb25uIHdpdGggY2FuY2Vs bGF0aW9uIGluZm8gZm9yIHRoZSBzcGVjaWZpZWQgZGF0YWJhc2UKICAqIGNvbm5lY3Rpb247IG9y IGNsZWFyIGl0IGlmIGNvbm4gaXMgTlVMTC4KICAqLwogdm9pZAogc2V0X2FyY2hpdmVfY2FuY2Vs X2luZm8oQXJjaGl2ZUhhbmRsZSAqQUgsIFBHY29ubiAqY29ubikKIHsKLQlQR2NhbmNlbCAgICpv bGRDb25uQ2FuY2VsOworCVBHY2FuY2VsQ29ubiAqb2xkQ2FuY2VsQ29ubjsKIAogCS8qCi0JICog QWN0aXZhdGUgdGhlIGludGVycnVwdCBoYW5kbGVyIGlmIHdlIGRpZG4ndCB5ZXQgaW4gdGhpcyBw cm9jZXNzLiAgT24KLQkgKiBXaW5kb3dzLCB0aGlzIGFsc28gaW5pdGlhbGl6ZXMgc2lnbmFsX2lu Zm9fbG9jazsgdGhlcmVmb3JlIGl0J3MKKwkgKiBBY3RpdmF0ZSB0aGUgaW50ZXJydXB0IGhhbmRs ZXIgaWYgd2UgZGlkbid0IHlldCBpbiB0aGlzIHByb2Nlc3MuIEl0J3MKIAkgKiBpbXBvcnRhbnQg dGhhdCB0aGlzIGhhcHBlbiBhdCBsZWFzdCBvbmNlIGJlZm9yZSB3ZSBmb3JrIG9mZiBhbnkKIAkg KiB0aHJlYWRzLgogCSAqLwogCXNldF9jYW5jZWxfaGFuZGxlcigpOwogCiAJLyoKLQkgKiBPbiBV bml4LCB3ZSBhc3N1bWUgdGhhdCBzdG9yaW5nIGEgcG9pbnRlciB2YWx1ZSBpcyBhdG9taWMgd2l0 aCByZXNwZWN0Ci0JICogdG8gYW55IHBvc3NpYmxlIHNpZ25hbCBpbnRlcnJ1cHQuICBPbiBXaW5k b3dzLCB1c2UgYSBjcml0aWNhbCBzZWN0aW9uLgorCSAqIFVzZSBtdXRleCB0byBwcmV2ZW50IHRo ZSBjYW5jZWwgaGFuZGxlciBmcm9tIHVzaW5nIHRoZSBwb2ludGVyIHdoaWxlCisJICogd2UncmUg Y2hhbmdpbmcgaXQuCiAJICovCi0KLSNpZmRlZiBXSU4zMgotCUVudGVyQ3JpdGljYWxTZWN0aW9u KCZzaWduYWxfaW5mb19sb2NrKTsKLSNlbmRpZgorCUxvY2tDYW5jZWxUaHJlYWQoKTsKIAogCS8q IEZyZWUgdGhlIG9sZCBvbmUgaWYgd2UgaGF2ZSBvbmUgKi8KLQlvbGRDb25uQ2FuY2VsID0gQUgt PmNvbm5DYW5jZWw7CisJb2xkQ2FuY2VsQ29ubiA9IEFILT5jYW5jZWxDb25uOwogCS8qIGJlIHN1 cmUgaW50ZXJydXB0IGhhbmRsZXIgZG9lc24ndCB1c2UgcG9pbnRlciB3aGlsZSBmcmVlaW5nICov Ci0JQUgtPmNvbm5DYW5jZWwgPSBOVUxMOworCUFILT5jYW5jZWxDb25uID0gTlVMTDsKIAotCWlm IChvbGRDb25uQ2FuY2VsICE9IE5VTEwpCi0JCVBRZnJlZUNhbmNlbChvbGRDb25uQ2FuY2VsKTsK KwlpZiAob2xkQ2FuY2VsQ29ubiAhPSBOVUxMKQorCQlQUWNhbmNlbEZpbmlzaChvbGRDYW5jZWxD b25uKTsKIAogCS8qIFNldCB0aGUgbmV3IG9uZSBpZiBzcGVjaWZpZWQgKi8KIAlpZiAoY29ubikK LQkJQUgtPmNvbm5DYW5jZWwgPSBQUWdldENhbmNlbChjb25uKTsKKwkJQUgtPmNhbmNlbENvbm4g PSBQUWNhbmNlbENyZWF0ZShjb25uKTsKIAogCS8qCiAJICogT24gVW5peCwgdGhlcmUncyBvbmx5 IGV2ZXIgb25lIGFjdGl2ZSBBcmNoaXZlSGFuZGxlIHBlciBwcm9jZXNzLCBzbyB3ZQpAQCAtNzcy LDQ5ICs2NzQsMzUgQEAgc2V0X2FyY2hpdmVfY2FuY2VsX2luZm8oQXJjaGl2ZUhhbmRsZSAqQUgs IFBHY29ubiAqY29ubikKIAkJc2lnbmFsX2luZm8ubXlBSCA9IEFIOwogI2VuZGlmCiAKLSNpZmRl ZiBXSU4zMgotCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZzaWduYWxfaW5mb19sb2NrKTsKLSNlbmRp ZgorCVVubG9ja0NhbmNlbFRocmVhZCgpOwogfQogCiAvKgogICogc2V0X2NhbmNlbF9wc3RhdGUK ICAqCiAgKiBTZXQgc2lnbmFsX2luZm8ucHN0YXRlIHRvIHBvaW50IHRvIHRoZSBzcGVjaWZpZWQg UGFyYWxsZWxTdGF0ZSwgaWYgYW55LgotICogV2UgbmVlZCB0aGlzIG1haW5seSB0byBoYXZlIGFu IGludGVybG9jayBhZ2FpbnN0IFdpbmRvd3Mgc2lnbmFsIHRocmVhZC4KKyAqIFdlIG5lZWQgdGhp cyBtYWlubHkgdG8gaGF2ZSBhbiBpbnRlcmxvY2sgYWdhaW5zdCB0aGUgY2FuY2VsIGhhbmRsZXIg dGhyZWFkLgogICovCiBzdGF0aWMgdm9pZAogc2V0X2NhbmNlbF9wc3RhdGUoUGFyYWxsZWxTdGF0 ZSAqcHN0YXRlKQogewotI2lmZGVmIFdJTjMyCi0JRW50ZXJDcml0aWNhbFNlY3Rpb24oJnNpZ25h bF9pbmZvX2xvY2spOwotI2VuZGlmCi0KKwlMb2NrQ2FuY2VsVGhyZWFkKCk7CiAJc2lnbmFsX2lu Zm8ucHN0YXRlID0gcHN0YXRlOwotCi0jaWZkZWYgV0lOMzIKLQlMZWF2ZUNyaXRpY2FsU2VjdGlv bigmc2lnbmFsX2luZm9fbG9jayk7Ci0jZW5kaWYKKwlVbmxvY2tDYW5jZWxUaHJlYWQoKTsKIH0K IAogLyoKICAqIHNldF9jYW5jZWxfc2xvdF9hcmNoaXZlCiAgKgogICogU2V0IFBhcmFsbGVsU2xv dCdzIEFIIGZpZWxkIHRvIHBvaW50IHRvIHRoZSBzcGVjaWZpZWQgYXJjaGl2ZSwgaWYgYW55Lgot ICogV2UgbmVlZCB0aGlzIG1haW5seSB0byBoYXZlIGFuIGludGVybG9jayBhZ2FpbnN0IFdpbmRv d3Mgc2lnbmFsIHRocmVhZC4KKyAqIFdlIG5lZWQgdGhpcyBtYWlubHkgdG8gaGF2ZSBhbiBpbnRl cmxvY2sgYWdhaW5zdCB0aGUgY2FuY2VsIGhhbmRsZXIgdGhyZWFkLgogICovCiBzdGF0aWMgdm9p ZAogc2V0X2NhbmNlbF9zbG90X2FyY2hpdmUoUGFyYWxsZWxTbG90ICpzbG90LCBBcmNoaXZlSGFu ZGxlICpBSCkKIHsKLSNpZmRlZiBXSU4zMgotCUVudGVyQ3JpdGljYWxTZWN0aW9uKCZzaWduYWxf aW5mb19sb2NrKTsKLSNlbmRpZgotCisJTG9ja0NhbmNlbFRocmVhZCgpOwogCXNsb3QtPkFIID0g QUg7Ci0KLSNpZmRlZiBXSU4zMgotCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZzaWduYWxfaW5mb19s b2NrKTsKLSNlbmRpZgorCVVubG9ja0NhbmNlbFRocmVhZCgpOwogfQogCiAKQEAgLTkyOSw3ICs4 MTcsNyBAQCBQYXJhbGxlbEJhY2t1cFN0YXJ0KEFyY2hpdmVIYW5kbGUgKkFIKQogCiAJLyoKIAkg KiBUZW1wb3JhcmlseSBkaXNhYmxlIHF1ZXJ5IGNhbmNlbGxhdGlvbiBvbiB0aGUgbGVhZGVyIGNv bm5lY3Rpb24uICBUaGlzCi0JICogZW5zdXJlcyB0aGF0IGNoaWxkIHByb2Nlc3NlcyB3b24ndCBp bmhlcml0IHZhbGlkIEFILT5jb25uQ2FuY2VsCisJICogZW5zdXJlcyB0aGF0IGNoaWxkIHByb2Nl c3NlcyB3b24ndCBpbmhlcml0IHZhbGlkIEFILT5jYW5jZWxDb25uCiAJICogc2V0dGluZ3MgYW5k IHRodXMgd29uJ3QgdHJ5IHRvIGlzc3VlIGNhbmNlbHMgYWdhaW5zdCB0aGUgbGVhZGVyJ3MKIAkg KiBjb25uZWN0aW9uLiAgTm8gaGFybSBpcyBkb25lIGlmIHdlIGZhaWwgd2hpbGUgaXQncyBkaXNh YmxlZCwgYmVjYXVzZQogCSAqIHRoZSBsZWFkZXIgY29ubmVjdGlvbiBpcyBpZGxlIGF0IHRoaXMg cG9pbnQgYW55d2F5LgpAQCAtOTQ3LDYgKzgzNSw3IEBAIFBhcmFsbGVsQmFja3VwU3RhcnQoQXJj aGl2ZUhhbmRsZSAqQUgpCiAJCXVpbnRwdHJfdAloYW5kbGU7CiAjZWxzZQogCQlwaWRfdAkJcGlk OworCQlzaWdzZXRfdAljYW5jZWxfc2V0OwogI2VuZGlmCiAJCVBhcmFsbGVsU2xvdCAqc2xvdCA9 ICYocHN0YXRlLT5wYXJhbGxlbFNsb3RbaV0pOwogCQlpbnQJCQlwaXBlTVdbMl0sCkBAIC05Nzcs NiArODY2LDE4IEBAIFBhcmFsbGVsQmFja3VwU3RhcnQoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJCXNs b3QtPmhUaHJlYWQgPSBoYW5kbGU7CiAJCXNsb3QtPndvcmtlclN0YXR1cyA9IFdSS1JfSURMRTsK ICNlbHNlCQkJCQkJCS8qICFXSU4zMiAqLworCisJCS8qCisJCSAqIEJsb2NrIHNpZ25hbHMgYmVm b3JlIGZvcmsgc28gdGhhdCBubyBzaWduYWwgY2FuIGFycml2ZSBpbiB0aGUgY2hpbGQKKwkJICog YmVmb3JlIFJlc2V0Q2FuY2VsQWZ0ZXJGb3JrKCkgaGFzIGNsZWFuZWQgdXAgdGhlIGluaGVyaXRl ZCBjYW5jZWwKKwkJICogc3RhdGUgKHBpcGUgZmRzLCBzaWduYWwgaGFuZGxlcnMsIG11dGV4KS4K KwkJICovCisJCXNpZ2VtcHR5c2V0KCZjYW5jZWxfc2V0KTsKKwkJc2lnYWRkc2V0KCZjYW5jZWxf c2V0LCBTSUdJTlQpOworCQlzaWdhZGRzZXQoJmNhbmNlbF9zZXQsIFNJR1RFUk0pOworCQlzaWdh ZGRzZXQoJmNhbmNlbF9zZXQsIFNJR1FVSVQpOworCQlzaWdwcm9jbWFzayhTSUdfQkxPQ0ssICZj YW5jZWxfc2V0LCBOVUxMKTsKKwogCQlwaWQgPSBmb3JrKCk7CiAJCWlmIChwaWQgPT0gMCkKIAkJ ewpAQCAtOTg5LDYgKzg5MCwxMiBAQCBQYXJhbGxlbEJhY2t1cFN0YXJ0KEFyY2hpdmVIYW5kbGUg KkFIKQogCQkJLyogaW5zdHJ1Y3Qgc2lnbmFsIGhhbmRsZXIgdGhhdCB3ZSdyZSBpbiBhIHdvcmtl ciBub3cgKi8KIAkJCXNpZ25hbF9pbmZvLmFtX3dvcmtlciA9IHRydWU7CiAKKwkJCXNpZ25hbF9p bmZvLmhhbmRsZXJfc2V0ID0gZmFsc2U7CisJCQlSZXNldENhbmNlbEFmdGVyRm9yaygpOworCQkJ cHFzaWduYWwoU0lHVEVSTSwgUEdfU0lHX0RGTCk7CisJCQlwcXNpZ25hbChTSUdRVUlULCBQR19T SUdfREZMKTsKKwkJCXNpZ3Byb2NtYXNrKFNJR19VTkJMT0NLLCAmY2FuY2VsX3NldCwgTlVMTCk7 CisKIAkJCS8qIGNsb3NlIHJlYWQgZW5kIG9mIFdvcmtlciAtPiBMZWFkZXIgKi8KIAkJCWNsb3Nl c29ja2V0KHBpcGVXTVtQSVBFX1JFQURdKTsKIAkJCS8qIGNsb3NlIHdyaXRlIGVuZCBvZiBMZWFk ZXIgLT4gV29ya2VyICovCkBAIC0xMDE3LDYgKzkyNCw4IEBAIFBhcmFsbGVsQmFja3VwU3RhcnQo QXJjaGl2ZUhhbmRsZSAqQUgpCiAJCX0KIAogCQkvKiBJbiBMZWFkZXIgYWZ0ZXIgc3VjY2Vzc2Z1 bCBmb3JrICovCisJCXNpZ3Byb2NtYXNrKFNJR19VTkJMT0NLLCAmY2FuY2VsX3NldCwgTlVMTCk7 CisKIAkJc2xvdC0+cGlkID0gcGlkOwogCQlzbG90LT53b3JrZXJTdGF0dXMgPSBXUktSX0lETEU7 CiAKQEAgLTE0MDUsOCArMTMxNCwxMiBAQCBMaXN0ZW5Ub1dvcmtlcnMoQXJjaGl2ZUhhbmRsZSAq QUgsIFBhcmFsbGVsU3RhdGUgKnBzdGF0ZSwgYm9vbCBkb193YWl0KQogCiAJaWYgKCFtc2cpCiAJ ewotCQkvKiBJZiBkb193YWl0IGlzIHRydWUsIHdlIG11c3QgaGF2ZSBkZXRlY3RlZCBFT0Ygb24g c29tZSBzb2NrZXQgKi8KLQkJaWYgKGRvX3dhaXQpCisJCS8qCisJCSAqIElmIGRvX3dhaXQgaXMg dHJ1ZSwgd2UgbXVzdCBoYXZlIGRldGVjdGVkIEVPRiBvbiBzb21lIHNvY2tldC4gSWYKKwkJICog aXQncyBkdWUgdG8gYSBjYW5jZWwgcmVxdWVzdCwgdGhhdCdzIGV4cGVjdGVkLCBvdGhlcndpc2Ug aXQncyBhCisJCSAqIHByb2JsZW0uCisJCSAqLworCQlpZiAoZG9fd2FpdCAmJiAhQ2FuY2VsUmVx dWVzdGVkKQogCQkJcGdfZmF0YWwoImEgd29ya2VyIHByb2Nlc3MgZGllZCB1bmV4cGVjdGVkbHki KTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19i YWNrdXBfYXJjaGl2ZXIuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwpp bmRleCA3N2NjNTBlMDYwNy4uYjMyODVlNTkzMTEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVt cC9wZ19iYWNrdXBfYXJjaGl2ZXIuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2Fy Y2hpdmVyLmMKQEAgLTUyMDEsNyArNTIwMSw3IEBAIENsb25lQXJjaGl2ZShBcmNoaXZlSGFuZGxl ICpBSCkKIAogCS8qIFRoZSBjbG9uZSB3aWxsIGhhdmUgaXRzIG93biBjb25uZWN0aW9uLCBzbyBk aXNyZWdhcmQgY29ubmVjdGlvbiBzdGF0ZSAqLwogCWNsb25lLT5jb25uZWN0aW9uID0gTlVMTDsK LQljbG9uZS0+Y29ubkNhbmNlbCA9IE5VTEw7CisJY2xvbmUtPmNhbmNlbENvbm4gPSBOVUxMOwog CWNsb25lLT5jdXJyVXNlciA9IE5VTEw7CiAJY2xvbmUtPmN1cnJTY2hlbWEgPSBOVUxMOwogCWNs b25lLT5jdXJyVGFibGVBbSA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdf YmFja3VwX2FyY2hpdmVyLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmgK aW5kZXggYzE1MjhkNzg4NTMuLjI4ZmViYWMwYzQzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1 bXAvcGdfYmFja3VwX2FyY2hpdmVyLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9h cmNoaXZlci5oCkBAIC0yODgsOCArMjg4LDEyIEBAIHN0cnVjdCBfYXJjaGl2ZUhhbmRsZQogCWNo YXIJICAgKnNhdmVkUGFzc3dvcmQ7CS8qIHBhc3N3b3JkIGZvciByb3B0LT51c2VybmFtZSwgaWYg a25vd24gKi8KIAljaGFyCSAgICp1c2Vfcm9sZTsKIAlQR2Nvbm4JICAgKmNvbm5lY3Rpb247Ci0J LyogSWYgY29ubkNhbmNlbCBpc24ndCBOVUxMLCBTSUdJTlQgaGFuZGxlciB3aWxsIHNlbmQgYSBj YW5jZWwgKi8KLQlQR2NhbmNlbCAgICp2b2xhdGlsZSBjb25uQ2FuY2VsOworCisJLyoKKwkgKiBJ ZiBjYW5jZWxDb25uIGlzbid0IE5VTEwsIFNJR0lOVCBoYW5kbGVyIHdpbGwgdHJpZ2dlciB0aGUg Y2FuY2VsIHRocmVhZAorCSAqIHRvIHNlbmQgYSBjYW5jZWwuCisJICovCisJUEdjYW5jZWxDb25u ICpjYW5jZWxDb25uOwogCiAJaW50CQkJY29ubmVjdFRvREI7CS8qIEZsYWcgdG8gaW5kaWNhdGUg aWYgZGlyZWN0IERCIGNvbm5lY3Rpb24gaXMKIAkJCQkJCQkJICogcmVxdWlyZWQgKi8KZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfZGIuYyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19iYWNrdXBfZGIuYwppbmRleCAxN2MwYjdjYmRmMi4uZmQwNTFiOTg4OWMgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfZGIuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdf YmFja3VwX2RiLmMKQEAgLTg0LDcgKzg0LDcgQEAgUmVjb25uZWN0VG9TZXJ2ZXIoQXJjaGl2ZUhh bmRsZSAqQUgsIGNvbnN0IGNoYXIgKmRibmFtZSkKIAogCS8qCiAJICogTm90ZTogd2Ugd2FudCB0 byBlc3RhYmxpc2ggdGhlIG5ldyBjb25uZWN0aW9uLCBhbmQgaW4gcGFydGljdWxhciB1cGRhdGUK LQkgKiBBcmNoaXZlSGFuZGxlJ3MgY29ubkNhbmNlbCwgYmVmb3JlIGNsb3Npbmcgb2xkIGNvbm5l Y3Rpb24uICBPdGhlcndpc2UKKwkgKiBBcmNoaXZlSGFuZGxlJ3MgY2FuY2VsQ29ubiwgYmVmb3Jl IGNsb3Npbmcgb2xkIGNvbm5lY3Rpb24uICBPdGhlcndpc2UKIAkgKiBhbiBpbGwtdGltZWQgU0lH SU5UIGNvdWxkIHRyeSB0byBhY2Nlc3MgYSBkZWFkIGNvbm5lY3Rpb24uCiAJICovCiAJQUgtPmNv bm5lY3Rpb24gPSBOVUxMOwkJLyogZG9kZ2UgZXJyb3IgY2hlY2sgaW4gQ29ubmVjdERhdGFiYXNl QWh4ICovCkBAIC0xNjQsMTIgKzE2NCwxMSBAQCB2b2lkCiBEaXNjb25uZWN0RGF0YWJhc2UoQXJj aGl2ZSAqQUhYKQogewogCUFyY2hpdmVIYW5kbGUgKkFIID0gKEFyY2hpdmVIYW5kbGUgKikgQUhY OwotCWNoYXIJCWVycmJ1ZlsxXTsKIAogCWlmICghQUgtPmNvbm5lY3Rpb24pCiAJCXJldHVybjsK IAotCWlmIChBSC0+Y29ubkNhbmNlbCkKKwlpZiAoQUgtPmNhbmNlbENvbm4pCiAJewogCQkvKgog CQkgKiBJZiB3ZSBoYXZlIGFuIGFjdGl2ZSBxdWVyeSwgc2VuZCBhIGNhbmNlbCBiZWZvcmUgY2xv c2luZywgaWdub3JpbmcKQEAgLTE3Nyw3ICsxNzYsNyBAQCBEaXNjb25uZWN0RGF0YWJhc2UoQXJj aGl2ZSAqQUhYKQogCQkgKiBoZWxwZnVsIGR1cmluZyBwZ19mYXRhbCgpLgogCQkgKi8KIAkJaWYg KFBRdHJhbnNhY3Rpb25TdGF0dXMoQUgtPmNvbm5lY3Rpb24pID09IFBRVFJBTlNfQUNUSVZFKQot CQkJKHZvaWQpIFBRY2FuY2VsKEFILT5jb25uQ2FuY2VsLCBlcnJidWYsIHNpemVvZihlcnJidWYp KTsKKwkJCSh2b2lkKSBQUWNhbmNlbEJsb2NraW5nKEFILT5jYW5jZWxDb25uKTsKIAogCQkvKgog CQkgKiBQcmV2ZW50IHNpZ25hbCBoYW5kbGVyIGZyb20gc2VuZGluZyBhIGNhbmNlbCBhZnRlciB0 aGlzLgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyBiL3NyYy9iaW4vcGdi ZW5jaC9wZ2JlbmNoLmMKaW5kZXggOGFiMzVhOGM4M2UuLmE0NzUxMTU0MjAzIDEwMDY0NAotLS0g YS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCisrKyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNo LmMKQEAgLTUzMzYsNyArNTMzNiw3IEBAIHJ1bkluaXRTdGVwcyhjb25zdCBjaGFyICppbml0aWFs aXplX3N0ZXBzKQogCWlmICgoY29uID0gZG9Db25uZWN0KCkpID09IE5VTEwpCiAJCXBnX2ZhdGFs KCJjb3VsZCBub3QgY3JlYXRlIGNvbm5lY3Rpb24gZm9yIGluaXRpYWxpemF0aW9uIik7CiAKLQlz ZXR1cF9jYW5jZWxfaGFuZGxlcihOVUxMKTsKKwlzZXR1cF9jYW5jZWxfaGFuZGxlcihOVUxMLCBO VUxMKTsKIAlTZXRDYW5jZWxDb25uKGNvbik7CiAKIAlmb3IgKHN0ZXAgPSBpbml0aWFsaXplX3N0 ZXBzOyAqc3RlcCAhPSAnXDAnOyBzdGVwKyspCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvY29t bW9uLmMgYi9zcmMvYmluL3BzcWwvY29tbW9uLmMKaW5kZXggNzIxZjg3MzNhNTMuLjY2NTY4YTE4 ZjgxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvY29tbW9uLmMKKysrIGIvc3JjL2Jpbi9wc3Fs L2NvbW1vbi5jCkBAIC0zMDUsMjMgKzMwNSwyNyBAQCB2b2xhdGlsZSBzaWdfYXRvbWljX3Qgc2ln aW50X2ludGVycnVwdF9lbmFibGVkID0gZmFsc2U7CiAKIHNpZ2ptcF9idWYJc2lnaW50X2ludGVy cnVwdF9qbXA7CiAKKyNpZm5kZWYgV0lOMzIKIHN0YXRpYyB2b2lkCiBwc3FsX2NhbmNlbF9jYWxs YmFjayh2b2lkKQogewotI2lmbmRlZiBXSU4zMgogCS8qIGlmIHdlIGFyZSB3YWl0aW5nIGZvciBp bnB1dCwgbG9uZ2ptcCBvdXQgb2YgaXQgKi8KIAlpZiAoc2lnaW50X2ludGVycnVwdF9lbmFibGVk KQogCXsKIAkJc2lnaW50X2ludGVycnVwdF9lbmFibGVkID0gZmFsc2U7CiAJCXNpZ2xvbmdqbXAo c2lnaW50X2ludGVycnVwdF9qbXAsIDEpOwogCX0KLSNlbmRpZgogfQorI2VuZGlmCiAKIHZvaWQK IHBzcWxfc2V0dXBfY2FuY2VsX2hhbmRsZXIodm9pZCkKIHsKLQlzZXR1cF9jYW5jZWxfaGFuZGxl cihwc3FsX2NhbmNlbF9jYWxsYmFjayk7CisjaWZuZGVmIFdJTjMyCisJc2V0dXBfY2FuY2VsX2hh bmRsZXIocHNxbF9jYW5jZWxfY2FsbGJhY2ssIE5VTEwpOworI2Vsc2UKKwlzZXR1cF9jYW5jZWxf aGFuZGxlcihOVUxMLCBOVUxMKTsKKyNlbmRpZgogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4v c2NyaXB0cy9jbHVzdGVyZGIuYyBiL3NyYy9iaW4vc2NyaXB0cy9jbHVzdGVyZGIuYwppbmRleCA1 M2JiYjQyYzg4My4uZjI4MmE4OGM3NmQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vc2NyaXB0cy9jbHVz dGVyZGIuYworKysgYi9zcmMvYmluL3NjcmlwdHMvY2x1c3RlcmRiLmMKQEAgLTE0MCw3ICsxNDAs NyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJY3BhcmFtcy5wcm9tcHRfcGFzc3dv cmQgPSBwcm9tcHRfcGFzc3dvcmQ7CiAJY3BhcmFtcy5vdmVycmlkZV9kYm5hbWUgPSBOVUxMOwog Ci0Jc2V0dXBfY2FuY2VsX2hhbmRsZXIoTlVMTCk7CisJc2V0dXBfY2FuY2VsX2hhbmRsZXIoTlVM TCwgTlVMTCk7CiAKIAlpZiAoYWxsZGIpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9zY3JpcHRz L3JlaW5kZXhkYi5jIGIvc3JjL2Jpbi9zY3JpcHRzL3JlaW5kZXhkYi5jCmluZGV4IGQ3ZmIxNmQz Yzg1Li43NTYxM2I5OTVlZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9zY3JpcHRzL3JlaW5kZXhkYi5j CisrKyBiL3NyYy9iaW4vc2NyaXB0cy9yZWluZGV4ZGIuYwpAQCAtMjExLDcgKzIxMSw3IEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAljcGFyYW1zLnByb21wdF9wYXNzd29yZCA9IHBy b21wdF9wYXNzd29yZDsKIAljcGFyYW1zLm92ZXJyaWRlX2RibmFtZSA9IE5VTEw7CiAKLQlzZXR1 cF9jYW5jZWxfaGFuZGxlcihOVUxMKTsKKwlzZXR1cF9jYW5jZWxfaGFuZGxlcihOVUxMLCBOVUxM KTsKIAogCWlmIChjb25jdXJyZW50Q29ucyA+IDEgJiYgc3lzY2F0YWxvZykKIAkJcGdfZmF0YWwo ImNhbm5vdCB1c2UgbXVsdGlwbGUgam9icyB0byByZWluZGV4IHN5c3RlbSBjYXRhbG9ncyIpOwpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9zY3JpcHRzL3ZhY3V1bWluZy5jIGIvc3JjL2Jpbi9zY3JpcHRz L3ZhY3V1bWluZy5jCmluZGV4IDg1NWE1NzU0Yzk4Li5lZmE0ODk5ODUzZiAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9zY3JpcHRzL3ZhY3V1bWluZy5jCisrKyBiL3NyYy9iaW4vc2NyaXB0cy92YWN1dW1p bmcuYwpAQCAtNTgsNyArNTgsNyBAQCB2YWN1dW1pbmdfbWFpbihDb25uUGFyYW1zICpjcGFyYW1z LCBjb25zdCBjaGFyICpkYm5hbWUsCiAJCQkgICB1bnNpZ25lZCBpbnQgdGJsX2NvdW50LCBpbnQg Y29uY3VycmVudENvbnMsCiAJCQkgICBjb25zdCBjaGFyICpwcm9nbmFtZSkKIHsKLQlzZXR1cF9j YW5jZWxfaGFuZGxlcihOVUxMKTsKKwlzZXR1cF9jYW5jZWxfaGFuZGxlcihOVUxMLCBOVUxMKTsK IAogCS8qIEF2b2lkIG9wZW5pbmcgZXh0cmEgY29ubmVjdGlvbnMuICovCiAJaWYgKHRibF9jb3Vu dCA+IDAgJiYgKGNvbmN1cnJlbnRDb25zID4gdGJsX2NvdW50KSkKZGlmZiAtLWdpdCBhL3NyYy9m ZV91dGlscy9NYWtlZmlsZSBiL3NyYy9mZV91dGlscy9NYWtlZmlsZQppbmRleCBjYmZiZjkzYWM2 OS4uODA5YWIyMWNjMGMgMTAwNjQ0Ci0tLSBhL3NyYy9mZV91dGlscy9NYWtlZmlsZQorKysgYi9z cmMvZmVfdXRpbHMvTWFrZWZpbGUKQEAgLTE3LDcgKzE3LDcgQEAgc3ViZGlyID0gc3JjL2ZlX3V0 aWxzCiB0b3BfYnVpbGRkaXIgPSAuLi8uLgogaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01h a2VmaWxlLmdsb2JhbAogCi1vdmVycmlkZSBDUFBGTEFHUyA6PSAtREZST05URU5EIC1JJChsaWJw cV9zcmNkaXIpICQoQ1BQRkxBR1MpCitvdmVycmlkZSBDUFBGTEFHUyA6PSAtREZST05URU5EIC1J JChsaWJwcV9zcmNkaXIpIC1JJCh0b3Bfc3JjZGlyKS9zcmMvcG9ydCAkKENQUEZMQUdTKQogCiBP QkpTID0gXAogCWFyY2hpdmUubyBcCmRpZmYgLS1naXQgYS9zcmMvZmVfdXRpbHMvY2FuY2VsLmMg Yi9zcmMvZmVfdXRpbHMvY2FuY2VsLmMKaW5kZXggOWZhYzA0ZTMzM2UuLjhmMjYxZDhmMWNkIDEw MDY0NAotLS0gYS9zcmMvZmVfdXRpbHMvY2FuY2VsLmMKKysrIGIvc3JjL2ZlX3V0aWxzL2NhbmNl bC5jCkBAIC0zLDcgKzMsNyBAQAogICogUXVlcnkgY2FuY2VsbGF0aW9uIHN1cHBvcnQgZm9yIGZy b250ZW5kIGNvZGUKICAqCiAgKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBTSUdJTlQvQ3RybC1DIGhh bmRsaW5nIGZvciBmcm9udGVuZCB0b29scyB0aGF0IG5lZWQgdG8KLSAqIGNhbmNlbCBxdWVyaWVz IG9yIGludGVycnVwdCBvdGhlciBvcGVyYXRpb25zLiAgSXQgcHJvdmlkZXMgdGhyZWUKKyAqIGNh bmNlbCBxdWVyaWVzIG9yIGludGVycnVwdCBvdGhlciBvcGVyYXRpb25zLiAgSXQgcHJvdmlkZXMg Zm91cgogICogaW5kZXBlbmRlbnQgbWVjaGFuaXNtcywgYW55IGNvbWJpbmF0aW9uIG9mIHdoaWNo IGNhbiBiZSB1c2VkIGJ5IGFuCiAgKiBhcHBsaWNhdGlvbjoKICAqCkBAIC0xMyw5ICsxMyw5IEBA CiAgKiAgICBjYWxsaW5nIFNldENhbmNlbENvbm4oKSB0byByZWdpc3RlciB0aGUgY29ubmVjdGlv biB0aGF0IGlzIChvciB3aWxsIGJlKQogICogICAgcnVubmluZyB0aGUgcXVlcnksIHByaW9yIHRv IHdhaXRpbmcgZm9yIHRoZSByZXN1bHQuICBXaGVuIFNJR0lOVC9DdHJsLUMKICAqICAgIGlzIHJl Y2VpdmVkLCBhIGNhbmNlbCByZXF1ZXN0IGZvciB0aGlzIGNvbm5lY3Rpb24gd2lsbCB0aGVuIGJl IHNlbnQgZnJvbQotICogICAgdGhlIHNpZ25hbCBoYW5kbGVyIChvbiBXaW5kb3dzLCBmcm9tIGEg c2VwYXJhdGUgdGhyZWFkKS4gIFRoYXQgaW4gdHVybgotICogICAgd2lsbCB0aGVuIChhc3N1bWlu ZyBhIGNvLW9wZXJhdGluZyBzZXJ2ZXIpIGNhdXNlIHRoZSBzZXJ2ZXIgdG8gY2FuY2VsCi0gKiAg ICB0aGUgcXVlcnkgYW5kIHNlbmQgYW4gZXJyb3IgdG8gdGhlIHdhaXRpbmcgY2xpZW50IG9uIHRo ZSBtYWluIHRocmVhZC4KKyAqICAgIGEgc2VwYXJhdGUgdGhyZWFkLiAgVGhhdCBpbiB0dXJuIHdp bGwgdGhlbiAoYXNzdW1pbmcgYSBjby1vcGVyYXRpbmcKKyAqICAgIHNlcnZlcikgY2F1c2UgdGhl IHNlcnZlciB0byBjYW5jZWwgdGhlIHF1ZXJ5IGFuZCBzZW5kIGFuIGVycm9yIHRvIHRoZQorICog ICAgd2FpdGluZyBjbGllbnQgb24gdGhlIG1haW4gdGhyZWFkLgogICogICAgVGhlIGNhbmNlbCBj b25uZWN0aW9uIGlzIGEgcHJvY2Vzcy13aWRlIGdsb2JhbCwgc28gb25seSBvbmUgY29ubmVjdGlv bgogICogICAgY2FuIGJlIHRoZSBjYW5jZWwgdGFyZ2V0IGF0IGEgdGltZS4gIFJlc2V0Q2FuY2Vs Q29ubigpIHNob3VsZCBiZSBjYWxsZWQKICAqICAgIHRvIGRpc2FybSB0aGUgbWVjaGFuaXNtIGFn YWluIGFmdGVyIHRoZSBibG9ja2luZyB3YWl0IGhhcyBjb21wbGV0ZWQuCkBAIC0yNiwxMSArMjYs MjEgQEAKICAqICAgIG5vdCBibG9ja2VkIChpbmRlZmluaXRlbHkpLCBidXQgbmVlZHMgdG8gdGFr ZSBhbiBhY3Rpb24gd2hlbiBDdHJsLUMgaXMKICAqICAgIHByZXNzZWQsIHN1Y2ggYXMgYnJlYWsg b3V0IG9mIGEgbG9uZyBydW5uaW5nIGxvb3AuCiAgKgotICogMy4gU2lnbmFsIGhhbmRsZXIgY2Fs bGJhY2sgLS0gQSBjYWxsYmFjayBmdW5jdGlvbiBjYW4gYmUgcmVnaXN0ZXJlZCB3aXRoCisgKiAz LiBUaHJlYWQgaGFuZGxlciBjYWxsYmFjayAtLSBBIGNhbGxiYWNrIGZ1bmN0aW9uIGNhbiBiZSBy ZWdpc3RlcmVkIHdpdGgKKyAqICAgIHNldHVwX2NhbmNlbF9oYW5kbGVyKCksIHdoaWNoIHdpbGwg dGhlbiBiZSBjYWxsZWQgd2hlbmV2ZXIgU0lHSU5UIGlzCisgKiAgICByZWNlaXZlZC4gIFVubGlr ZSB0aGUgc2lnbmFsIGhhbmRsZXIgY2FsbGJhY2sgYmVsb3csIGl0IGRvZXMgbm90IHJ1biBpbgor ICogICAgdGhlIHNpZ25hbCBoYW5kbGVyIGJ1dCBpbiB0aGUgc2FtZSBzZXBhcmF0ZSB0aHJlYWQg dGhhdCBzZW5kcyB0aGUgY2FuY2VsCisgKiAgICByZXF1ZXN0ICh0aGUgZGVkaWNhdGVkIGNhbmNl bCB0aHJlYWQgb24gVW5peCwgdGhlIGNvbnNvbGUgaGFuZGxlciB0aHJlYWQKKyAqICAgIG9uIFdp bmRvd3MpLCBzbyBpdCBuZWVkIG5vdCBiZSBhc3luYy1zaWduYWwtc2FmZS4gIFRoYXQgdGhyZWFk IGhvbGRzCisgKiAgICBjYW5jZWxfdGhyZWFkX2xvY2sgd2hpbGUgdGhlIGNhbGxiYWNrIHJ1bnMs IHNvIGNvZGUgc2hhcmluZyBkYXRhIHdpdGggdGhlCisgKiAgICBjYWxsYmFjayBzaG91bGQgdGFr ZSB0aGUgc2FtZSBsb2NrIHZpYQorICogICAgTG9ja0NhbmNlbFRocmVhZCgpL1VubG9ja0NhbmNl bFRocmVhZCgpLgorICoKKyAqIDQuIFNpZ25hbCBoYW5kbGVyIGNhbGxiYWNrIC0tIEEgY2FsbGJh Y2sgZnVuY3Rpb24gY2FuIGJlIHJlZ2lzdGVyZWQgd2l0aAogICogICAgc2V0dXBfY2FuY2VsX2hh bmRsZXIoKSwgd2hpY2ggd2lsbCB0aGVuIGJlIGNhbGxlZCBkaXJlY3RseSBmcm9tIHRoZQogICog ICAgc2lnbmFsIGhhbmRsZXIgd2hlbmV2ZXIgU0lHSU5UIGlzIHJlY2VpdmVkLiAgQmVjYXVzZSBp dCBpcyBjYWxsZWQgZnJvbSBhCiAgKiAgICBzaWduYWwgaGFuZGxlciwgdGhlIGNhbGxiYWNrIGZ1 bmN0aW9uIG11c3QgYmUgYXN5bmMtc2lnbmFsLXNhZmUuICBPbgotICogICAgV2luZG93cywgaXQg aXMgY2FsbGVkIGZyb20gYSBzZXBhcmF0ZSBzaWduYWwtaGFuZGxpbmcgdGhyZWFkLiAgTk9URTog VGhlCisgKiAgICBXaW5kb3dzLCB0aGlzIGNhbGxiYWNrIGlzIG5ldmVyIGNhbGxlZC4gIE5PVEU6 IFRoZQogICogICAgY2FsbGJhY2sgaXMgY2FsbGVkIEFGVEVSIHNldHRpbmcgQ2FuY2VsUmVxdWVz dGVkIGJ1dCBCRUZPUkUgc2VuZGluZyB0aGUKICAqICAgIGNhbmNlbCByZXF1ZXN0IHRvIHRoZSBz ZXJ2ZXIgKGlmIGFybWVkIGJ5IFNldENhbmNlbENvbm4pLiAgVGhpcyBtZWFucwogICogICAgdGhh dCBpZiB0aGUgY2FsbGJhY2sgZXhpdHMgb3IgbG9uZ2ptcHMsIG5vIGNhbmNlbCByZXF1ZXN0IHdp bGwgYmUgc2VudApAQCAtNDYsOSArNTYsMjEgQEAKIAogI2luY2x1ZGUgInBvc3RncmVzX2ZlLmgi CiAKKyNpbmNsdWRlIDxzaWduYWwuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KIAorI2lmbmRlZiBX SU4zMgorI2luY2x1ZGUgPGZjbnRsLmg+CisjZW5kaWYKKworI2lmZGVmIFdJTjMyCisjaW5jbHVk ZSAicHRocmVhZC13aW4zMi5oIgorI2Vsc2UKKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisjZW5kaWYK KwogI2luY2x1ZGUgImNvbW1vbi9jb25uZWN0LmgiCisjaW5jbHVkZSAiY29tbW9uL2xvZ2dpbmcu aCIKICNpbmNsdWRlICJmZV91dGlscy9jYW5jZWwuaCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJp bmdfdXRpbHMuaCIKIApAQCAtNjYsMTEgKzg4LDE5IEBACiAJCSh2b2lkKSByY187IFwKIAl9IHdo aWxlICgwKQogCisKKy8qCisgKiBDYW5jZWwgY29ubmVjdGlvbiB0aGF0IHNob3VsZCBiZSB1c2Vk IHRvIHNlbmQgY2FuY2VsIHJlcXVlc3RzLgorICovCitzdGF0aWMgUEdjYW5jZWxDb25uICpjYW5j ZWxDb25uID0gTlVMTDsKKwogLyoKLSAqIENvbnRhaW5zIGFsbCB0aGUgaW5mb3JtYXRpb24gbmVl ZGVkIHRvIGNhbmNlbCBhIHF1ZXJ5IGlzc3VlZCBmcm9tCi0gKiBhIGRhdGFiYXNlIGNvbm5lY3Rp b24gdG8gdGhlIGJhY2tlbmQuCisgKiBNdXRleCBoZWxkIGJ5IHRoZSBjYW5jZWwgdGhyZWFkIGZv ciB0aGUgZHVyYXRpb24gb2YgdGhlIGNhbmNlbCBjYWxsYmFjay4KKyAqIFNldENhbmNlbENvbm4o KS9SZXNldENhbmNlbENvbm4oKSBvbiB0aGUgbWFpbiB0aHJlYWQgdGFrZSB0aGlzIGxvY2sgdG9v LAorICogc28gdGhleSB3aWxsIHdhaXQgZm9yIGFueSBpbi1mbGlnaHQgY2FuY2VsIHRvIGZpbmlz aCBiZWZvcmUgcmVwbGFjaW5nIG9yCisgKiBmcmVlaW5nIGNhbmNlbENvbm4uCiAgKi8KLXN0YXRp YyBQR2NhbmNlbCAqdm9sYXRpbGUgY2FuY2VsQ29ubiA9IE5VTEw7CitzdGF0aWMgcHRocmVhZF9t dXRleF90IGNhbmNlbF90aHJlYWRfbG9jayA9IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVI7CiAK IC8qCiAgKiBQcmVkZXRlcm1pbmVkIGxvY2FsaXplZCBlcnJvciBzdHJpbmdzIC0tLSBuZWVkZWQg dG8gYXZvaWQgdHJ5aW5nCkBAIC04OCwxNjggKzExOCwxODAgQEAgc3RhdGljIGNvbnN0IGNoYXIg KmNhbmNlbF9ub3Rfc2VudF9tc2cgPSBOVUxMOwogICovCiB2b2xhdGlsZSBzaWdfYXRvbWljX3Qg Q2FuY2VsUmVxdWVzdGVkID0gZmFsc2U7CiAKLSNpZmRlZiBXSU4zMgotc3RhdGljIENSSVRJQ0FM X1NFQ1RJT04gY2FuY2VsQ29ubkxvY2s7Ci0jZW5kaWYKKy8qCisgKiBTaWduYWwgaGFuZGxlciBj YWxsYmFjaywgY2FsbGVkIGRpcmVjdGx5IGZyb20gc2lnbmFsIGhhbmRsZXIgY29udGV4dC4KKyAq IE11c3QgYmUgYXN5bmMtc2lnbmFsLXNhZmUuCisgKi8KK3N0YXRpYyB2b2lkICgqc2lnbmFsX2Nh bGxiYWNrX2ZuKSAodm9pZCkgPSBOVUxMOwogCiAvKgotICogQWRkaXRpb25hbCBjYWxsYmFjayBm b3IgY2FuY2VsbGF0aW9ucy4KKyAqIENhbmNlbCB0aHJlYWQgY2FsbGJhY2ssIGNhbGxlZCBmcm9t IHRoZSBjYW5jZWwgdGhyZWFkIChVbml4KSBvciBjb25zb2xlCisgKiBoYW5kbGVyIChXaW5kb3dz KSB3aGVuIGEgY2FuY2VsIHNpZ25hbCBpcyByZWNlaXZlZC4KICAqLwotc3RhdGljIHZvaWQgKCpj YW5jZWxfY2FsbGJhY2spICh2b2lkKSA9IE5VTEw7CitzdGF0aWMgdm9pZCAoKnRocmVhZF9jYWxs YmFja19mbikgKHZvaWQpID0gTlVMTDsKKworI2lmbmRlZiBXSU4zMgorLyoKKyAqIE9uIFVuaXgs IHRoZSBTSUdJTlQgc2lnbmFsIGhhbmRsZXIgY2Fubm90IGNhbGwgUFFjYW5jZWxCbG9ja2luZygp IGRpcmVjdGx5CisgKiBiZWNhdXNlIGl0IGlzIG5vdCBhc3luYy1zaWduYWwtc2FmZS4gIEluc3Rl YWQsIHdlIHVzZSBhIHBpcGUgdG8gd2FrZSBhCisgKiBkZWRpY2F0ZWQgY2FuY2VsIHRocmVhZDog dGhlIHNpZ25hbCBoYW5kbGVyIHdyaXRlcyBhIGJ5dGUgdG8gdGhlIHBpcGUsIGFuZAorICogdGhl IGNhbmNlbCB0aHJlYWQncyBibG9ja2luZyByZWFkKCkgcmV0dXJucywgdHJpZ2dlcmluZyB0aGUg YWN0dWFsIGNhbmNlbAorICogcmVxdWVzdC4KKyAqLworc3RhdGljIGludAljYW5jZWxfcGlwZVsy XSA9IHstMSwgLTF9OworI2VuZGlmCiAKIAogLyoKLSAqIFNldENhbmNlbENvbm4KKyAqIFNlbmQg YSBjYW5jZWwgcmVxdWVzdCB0byB0aGUgY29ubmVjdGlvbiwgaWYgb25lIGlzIHNldC4KICAqCi0g KiBTZXQgY2FuY2VsQ29ubiB0byBwb2ludCB0byB0aGUgY3VycmVudCBkYXRhYmFzZSBjb25uZWN0 aW9uLgorICogQ2FsbGVkIGZyb20gdGhlIGNhbmNlbCB0aHJlYWQgKFVuaXgpIG9yIHRoZSBjb25z b2xlIGhhbmRsZXIgdGhyZWFkCisgKiAoV2luZG93cyksIG5ldmVyIGZyb20gdGhlIHNpZ25hbCBo YW5kbGVyIGl0c2VsZi4gIFRoZSBjYWxsZXIgaXMKKyAqIHJlc3BvbnNpYmxlIGZvciBob2xkaW5n IGNhbmNlbF90aHJlYWRfbG9jay4KICAqLwotdm9pZAotU2V0Q2FuY2VsQ29ubihQR2Nvbm4gKmNv bm4pCitzdGF0aWMgdm9pZAorU2VuZENhbmNlbFJlcXVlc3Qodm9pZCkKIHsKLQlQR2NhbmNlbCAg ICpvbGRDYW5jZWxDb25uOwotCi0jaWZkZWYgV0lOMzIKLQlFbnRlckNyaXRpY2FsU2VjdGlvbigm Y2FuY2VsQ29ubkxvY2spOwotI2VuZGlmCisJUEdjYW5jZWxDb25uICpjYzsKIAotCS8qIEZyZWUg dGhlIG9sZCBvbmUgaWYgd2UgaGF2ZSBvbmUgKi8KLQlvbGRDYW5jZWxDb25uID0gY2FuY2VsQ29u bjsKKwljYyA9IGNhbmNlbENvbm47CisJaWYgKGNjID09IE5VTEwpCisJCXJldHVybjsKIAotCS8q IGJlIHN1cmUgaGFuZGxlX3NpZ2ludCBkb2Vzbid0IHVzZSBwb2ludGVyIHdoaWxlIGZyZWVpbmcg Ki8KLQljYW5jZWxDb25uID0gTlVMTDsKKwl3cml0ZV9zdGRlcnIoY2FuY2VsX3NlbnRfbXNnKTsK IAotCWlmIChvbGRDYW5jZWxDb25uICE9IE5VTEwpCi0JCVBRZnJlZUNhbmNlbChvbGRDYW5jZWxD b25uKTsKLQotCWNhbmNlbENvbm4gPSBQUWdldENhbmNlbChjb25uKTsKKwlpZiAoIVBRY2FuY2Vs QmxvY2tpbmcoY2MpKQorCXsKKwkJY2hhcgkgICAqZXJybXNnID0gUFFjYW5jZWxFcnJvck1lc3Nh Z2UoY2MpOwogCi0jaWZkZWYgV0lOMzIKLQlMZWF2ZUNyaXRpY2FsU2VjdGlvbigmY2FuY2VsQ29u bkxvY2spOwotI2VuZGlmCisJCXdyaXRlX3N0ZGVycihjYW5jZWxfbm90X3NlbnRfbXNnKTsKKwkJ aWYgKGVycm1zZykKKwkJCXdyaXRlX3N0ZGVycihlcnJtc2cpOworCX0KKwkvKiBSZXNldCBmb3Ig cG9zc2libGUgcmV1c2UgKi8KKwlQUWNhbmNlbFJlc2V0KGNjKTsKIH0KIAorCiAvKgotICogUmVz ZXRDYW5jZWxDb25uCisgKiBIZWxwZXIgdG8gcmVwbGFjZSBjYW5jZWxDb25uIHdpdGggYSBuZXcg dmFsdWUuCiAgKgotICogRnJlZSB0aGUgY3VycmVudCBjYW5jZWwgY29ubmVjdGlvbiwgaWYgYW55 LCBhbmQgc2V0IHRvIE5VTEwuCisgKiBUYWtlcyBjYW5jZWxfdGhyZWFkX2xvY2ssIHdoaWNoIGFs c28gd2FpdHMgZm9yIGFueSBpbi1mbGlnaHQgY2FuY2VsCisgKiBjYWxsYmFjayB0byBmaW5pc2gs IHNpbmNlIHRoZSBjYW5jZWwgdGhyZWFkIGhvbGRzIHRoZSBzYW1lIGxvY2suCiAgKi8KLXZvaWQK LVJlc2V0Q2FuY2VsQ29ubih2b2lkKQorc3RhdGljIHZvaWQKK1NldENhbmNlbENvbm5JbnRlcm5h bChQR2NhbmNlbENvbm4gKm5ld0NhbmNlbENvbm4pCiB7Ci0JUEdjYW5jZWwgICAqb2xkQ2FuY2Vs Q29ubjsKLQotI2lmZGVmIFdJTjMyCi0JRW50ZXJDcml0aWNhbFNlY3Rpb24oJmNhbmNlbENvbm5M b2NrKTsKLSNlbmRpZgorCVBHY2FuY2VsQ29ubiAqb2xkQ2FuY2VsQ29ubjsKIAorCUxvY2tDYW5j ZWxUaHJlYWQoKTsKIAlvbGRDYW5jZWxDb25uID0gY2FuY2VsQ29ubjsKLQotCS8qIGJlIHN1cmUg aGFuZGxlX3NpZ2ludCBkb2Vzbid0IHVzZSBwb2ludGVyIHdoaWxlIGZyZWVpbmcgKi8KLQljYW5j ZWxDb25uID0gTlVMTDsKKwljYW5jZWxDb25uID0gbmV3Q2FuY2VsQ29ubjsKKwlVbmxvY2tDYW5j ZWxUaHJlYWQoKTsKIAogCWlmIChvbGRDYW5jZWxDb25uICE9IE5VTEwpCi0JCVBRZnJlZUNhbmNl bChvbGRDYW5jZWxDb25uKTsKLQotI2lmZGVmIFdJTjMyCi0JTGVhdmVDcml0aWNhbFNlY3Rpb24o JmNhbmNlbENvbm5Mb2NrKTsKLSNlbmRpZgorCQlQUWNhbmNlbEZpbmlzaChvbGRDYW5jZWxDb25u KTsKIH0KIAotCiAvKgotICogQ29kZSB0byBzdXBwb3J0IHF1ZXJ5IGNhbmNlbGxhdGlvbgotICoK LSAqIE5vdGUgdGhhdCBzZW5kaW5nIHRoZSBjYW5jZWwgZGlyZWN0bHkgZnJvbSB0aGUgc2lnbmFs IGhhbmRsZXIgaXMgc2FmZQotICogYmVjYXVzZSBQUWNhbmNlbCgpIGlzIHdyaXR0ZW4gdG8gbWFr ZSBpdCBzby4gIFdlIHVzZSB3cml0ZSgpIHRvIHJlcG9ydAotICogdG8gc3RkZXJyIGJlY2F1c2Ug aXQncyBiZXR0ZXIgdG8gdXNlIHNpbXBsZSBmYWNpbGl0aWVzIGluIGEgc2lnbmFsCi0gKiBoYW5k bGVyLgorICogU2V0Q2FuY2VsQ29ubgogICoKLSAqIE9uIFdpbmRvd3MsIHRoZSBzaWduYWwgY2Fu Y2VsaW5nIGhhcHBlbnMgb24gYSBzZXBhcmF0ZSB0aHJlYWQsIGJlY2F1c2UKLSAqIHRoYXQncyBo b3cgU2V0Q29uc29sZUN0cmxIYW5kbGVyIHdvcmtzLiAgVGhlIFBRY2FuY2VsIGZ1bmN0aW9uIGlz IHNhZmUKLSAqIGZvciB0aGlzICh1bmxpa2UgUFFyZXF1ZXN0Q2FuY2VsKS4gIEhvd2V2ZXIsIGEg Q1JJVElDQUxfU0VDVElPTiBpcyByZXF1aXJlZAotICogdG8gcHJvdGVjdCB0aGUgUEdjYW5jZWwg c3RydWN0dXJlIGFnYWluc3QgYmVpbmcgY2hhbmdlZCB3aGlsZSB0aGUgc2lnbmFsCi0gKiB0aHJl YWQgaXMgdXNpbmcgaXQuCisgKiBTZXQgY2FuY2VsQ29ubiB0byBwb2ludCB0byBhIGNhbmNlbCBj b25uZWN0aW9uIGZvciB0aGUgZ2l2ZW4gZGF0YWJhc2UKKyAqIGNvbm5lY3Rpb24uIFRoaXMgY3Jl YXRlcyBhIG5ldyBQR2NhbmNlbENvbm4gdGhhdCBjYW4gYmUgdXNlZCB0byBzZW5kCisgKiBjYW5j ZWwgcmVxdWVzdHMuCiAgKi8KLQotI2lmbmRlZiBXSU4zMgordm9pZAorU2V0Q2FuY2VsQ29ubihQ R2Nvbm4gKmNvbm4pCit7CisJU2V0Q2FuY2VsQ29ubkludGVybmFsKFBRY2FuY2VsQ3JlYXRlKGNv bm4pKTsKK30KIAogLyoKLSAqIGhhbmRsZV9zaWdpbnQKKyAqIFJlc2V0Q2FuY2VsQ29ubgogICoK LSAqIEhhbmRsZSBpbnRlcnJ1cHQgc2lnbmFscyBieSBjYW5jZWxpbmcgdGhlIGN1cnJlbnQgY29t bWFuZCwgaWYgY2FuY2VsQ29ubgotICogaXMgc2V0LgorICogQ2xlYXIgY2FuY2VsQ29ubiwgcHJl dmVudGluZyBhbnkgcGVuZGluZyBjYW5jZWwgZnJvbSBiZWluZyBzZW50LgorICogV2FpdHMgZm9y IGFueSBpbi1mbGlnaHQgY2FuY2VsIHJlcXVlc3QgdG8gY29tcGxldGUgZmlyc3QuCiAgKi8KLXN0 YXRpYyB2b2lkCi1oYW5kbGVfc2lnaW50KFNJR05BTF9BUkdTKQordm9pZAorUmVzZXRDYW5jZWxD b25uKHZvaWQpCiB7Ci0JY2hhcgkJZXJyYnVmWzI1Nl07CisJU2V0Q2FuY2VsQ29ubkludGVybmFs KE5VTEwpOworfQogCi0JQ2FuY2VsUmVxdWVzdGVkID0gdHJ1ZTsKIAotCWlmIChjYW5jZWxfY2Fs bGJhY2sgIT0gTlVMTCkKLQkJY2FuY2VsX2NhbGxiYWNrKCk7CisvKgorICogTG9ja0NhbmNlbFRo cmVhZCAvIFVubG9ja0NhbmNlbFRocmVhZAorICoKKyAqIEFjcXVpcmUgb3IgcmVsZWFzZSBjYW5j ZWxfdGhyZWFkX2xvY2suICBFeHRlcm5hbCBjYWxsZXJzIChlLmcuIHBnX2R1bXApCisgKiB1c2Ug dGhlc2UgdG8gcHJvdGVjdCBzaGFyZWQgZGF0YSB0aGF0IHRoZSBjYW5jZWwtdGhyZWFkIGNhbGxi YWNrIGFsc28KKyAqIGFjY2Vzc2VzLCB3aXRob3V0IGV4cG9zaW5nIHRoZSBtdXRleCBkaXJlY3Rs eS4KKyAqLwordm9pZAorTG9ja0NhbmNlbFRocmVhZCh2b2lkKQoreworCXB0aHJlYWRfbXV0ZXhf bG9jaygmY2FuY2VsX3RocmVhZF9sb2NrKTsKK30KIAotCS8qIFNlbmQgUXVlcnlDYW5jZWwgaWYg d2UgYXJlIHByb2Nlc3NpbmcgYSBkYXRhYmFzZSBxdWVyeSAqLwotCWlmIChjYW5jZWxDb25uICE9 IE5VTEwpCi0JewotCQlpZiAoUFFjYW5jZWwoY2FuY2VsQ29ubiwgZXJyYnVmLCBzaXplb2YoZXJy YnVmKSkpCi0JCXsKLQkJCXdyaXRlX3N0ZGVycihjYW5jZWxfc2VudF9tc2cpOwotCQl9Ci0JCWVs c2UKLQkJewotCQkJd3JpdGVfc3RkZXJyKGNhbmNlbF9ub3Rfc2VudF9tc2cpOwotCQkJd3JpdGVf c3RkZXJyKGVycmJ1Zik7Ci0JCX0KLQl9Cit2b2lkCitVbmxvY2tDYW5jZWxUaHJlYWQodm9pZCkK K3sKKwlwdGhyZWFkX211dGV4X3VubG9jaygmY2FuY2VsX3RocmVhZF9sb2NrKTsKIH0KIAorI2lm bmRlZiBXSU4zMgogLyoKLSAqIHNldHVwX2NhbmNlbF9oYW5kbGVyCisgKiBSZXNldENhbmNlbEFm dGVyRm9yaworICoKKyAqIFJlc2V0IGNhbmNlbCBtb2R1bGUgc3RhdGUgYWZ0ZXIgZm9yaygpLiBU aHJlYWRzIGRvbid0IHN1cnZpdmUgZm9yaygpLCBzbyB0aGUKKyAqIGNhbmNlbCB0aHJlYWQgYW5k IGl0cyBwaXBlIGFyZSBnb25lLiBUaGUgbXV0ZXggbWF5IGhhdmUgYmVlbiBoZWxkIGJ5IHRoZQor ICogY2FuY2VsIHRocmVhZCBhdCBmb3JrIHRpbWUsIHNvIHdlIG11c3QgcmVpbml0aWFsaXplIGl0 IHJhdGhlciB0aGFuIHRyeWluZyB0bworICogdW5sb2NrIGl0LiAgY2FuY2VsQ29ubiBpcyBOVUxM ZWQgd2l0aG91dCBmcmVlaW5nIGJlY2F1c2UgdGhlIHBhcmVudCBwcm9jZXNzCisgKiBvd25zIHRo ZSB1bmRlcmx5aW5nIG9iamVjdC4gIFRoZSBTSUdJTlQgaGFuZGxlciBpcyByZXNldCB0byBTSUdf REZMIHNvIHRoYXQKKyAqIGEgc2lnbmFsIGFycml2aW5nIGJlZm9yZSBzZXR1cF9jYW5jZWxfaGFu ZGxlcigpIGlzIGNhbGxlZCBhZ2FpbiBkb2Vzbid0IHRyeQorICogdG8gd3JpdGUgdG8gdGhlIGNs b3NlZCBwaXBlLgogICoKLSAqIFJlZ2lzdGVyIHF1ZXJ5IGNhbmNlbGxhdGlvbiBjYWxsYmFjayBm b3IgU0lHSU5ULgorICogVGhlIGNoaWxkIHdpbGwgc2V0IHVwIGEgZnJlc2ggY2FuY2VsIHRocmVh ZCB3aGVuIGl0IGxhdGVyIGNhbGxzCisgKiBzZXR1cF9jYW5jZWxfaGFuZGxlcigpLgogICovCiB2 b2lkCi1zZXR1cF9jYW5jZWxfaGFuZGxlcih2b2lkICgqcXVlcnlfY2FuY2VsX2NhbGxiYWNrKSAo dm9pZCkpCitSZXNldENhbmNlbEFmdGVyRm9yayh2b2lkKQogewotCWNhbmNlbF9jYWxsYmFjayA9 IHF1ZXJ5X2NhbmNlbF9jYWxsYmFjazsKLQljYW5jZWxfc2VudF9tc2cgPSBfKCJDYW5jZWwgcmVx dWVzdCBzZW50XG4iKTsKLQljYW5jZWxfbm90X3NlbnRfbXNnID0gXygiQ291bGQgbm90IHNlbmQg Y2FuY2VsIHJlcXVlc3Q6ICIpOworCWNsb3NlKGNhbmNlbF9waXBlWzBdKTsKKwljbG9zZShjYW5j ZWxfcGlwZVsxXSk7CisJY2FuY2VsX3BpcGVbMF0gPSBjYW5jZWxfcGlwZVsxXSA9IC0xOwogCi0J cHFzaWduYWwoU0lHSU5ULCBoYW5kbGVfc2lnaW50KTsKLX0KKwlwdGhyZWFkX211dGV4X2luaXQo JmNhbmNlbF90aHJlYWRfbG9jaywgTlVMTCk7CisKKwljYW5jZWxDb25uID0gTlVMTDsKKwlDYW5j ZWxSZXF1ZXN0ZWQgPSBmYWxzZTsKIAotI2Vsc2UJCQkJCQkJLyogV0lOMzIgKi8KKwlwcXNpZ25h bChTSUdJTlQsIFBHX1NJR19ERkwpOworfQorI2VuZGlmCiAKKyNpZmRlZiBXSU4zMgorLyoKKyAq IENvbnNvbGUgY29udHJvbCBoYW5kbGVyIGZvciBXaW5kb3dzLgorICoKKyAqIFRoaXMgcnVucyBp biBhIHNlcGFyYXRlIHRocmVhZCBjcmVhdGVkIGJ5IHRoZSBPUywgc28gd2UgY2FuIHNhZmVseSBj YWxsCisgKiB0aGUgYmxvY2tpbmcgY2FuY2VsIEFQSSBkaXJlY3RseS4KKyAqLwogc3RhdGljIEJP T0wgV0lOQVBJCiBjb25zb2xlSGFuZGxlcihEV09SRCBkd0N0cmxUeXBlKQogewotCWNoYXIJCWVy cmJ1ZlsyNTZdOwotCiAJaWYgKGR3Q3RybFR5cGUgPT0gQ1RSTF9DX0VWRU5UIHx8CiAJCWR3Q3Ry bFR5cGUgPT0gQ1RSTF9CUkVBS19FVkVOVCkKIAl7CiAJCUNhbmNlbFJlcXVlc3RlZCA9IHRydWU7 CiAKLQkJaWYgKGNhbmNlbF9jYWxsYmFjayAhPSBOVUxMKQotCQkJY2FuY2VsX2NhbGxiYWNrKCk7 CisJCUxvY2tDYW5jZWxUaHJlYWQoKTsKIAotCQkvKiBTZW5kIFF1ZXJ5Q2FuY2VsIGlmIHdlIGFy ZSBwcm9jZXNzaW5nIGEgZGF0YWJhc2UgcXVlcnkgKi8KLQkJRW50ZXJDcml0aWNhbFNlY3Rpb24o JmNhbmNlbENvbm5Mb2NrKTsKLQkJaWYgKGNhbmNlbENvbm4gIT0gTlVMTCkKLQkJewotCQkJaWYg KFBRY2FuY2VsKGNhbmNlbENvbm4sIGVycmJ1Ziwgc2l6ZW9mKGVycmJ1ZikpKQotCQkJewotCQkJ CXdyaXRlX3N0ZGVycihjYW5jZWxfc2VudF9tc2cpOwotCQkJfQotCQkJZWxzZQotCQkJewotCQkJ CXdyaXRlX3N0ZGVycihjYW5jZWxfbm90X3NlbnRfbXNnKTsKLQkJCQl3cml0ZV9zdGRlcnIoZXJy YnVmKTsKLQkJCX0KLQkJfQorCQlTZW5kQ2FuY2VsUmVxdWVzdCgpOwogCi0JCUxlYXZlQ3JpdGlj YWxTZWN0aW9uKCZjYW5jZWxDb25uTG9jayk7CisJCWlmICh0aHJlYWRfY2FsbGJhY2tfZm4gIT0g TlVMTCkKKwkJCXRocmVhZF9jYWxsYmFja19mbigpOworCisJCVVubG9ja0NhbmNlbFRocmVhZCgp OwogCiAJCXJldHVybiBUUlVFOwogCX0KQEAgLTI1OCwxNiArMzAwLDE2OSBAQCBjb25zb2xlSGFu ZGxlcihEV09SRCBkd0N0cmxUeXBlKQogCQlyZXR1cm4gRkFMU0U7CiB9CiAKKyNlbHNlCQkJCQkJ CS8qICFXSU4zMiAqLworCisvKgorICogU2lnbmFsIGhhbmRsZXIgdGhhdCBzZXR1cF9jYW5jZWxf aGFuZGxlciBjb25maWd1cmVzIGZvciBTSUdJTlQuIEV4cG9zZWQgc28KKyAqIG90aGVyIHNpZ25h bHMgdGhhbiBTSUdJTlQgY2FuIHVzZSBpdCBpZiBkZXNpcmVkLgorICovCiB2b2lkCi1zZXR1cF9j YW5jZWxfaGFuZGxlcih2b2lkICgqY2FsbGJhY2spICh2b2lkKSkKK0NhbmNlbFNpZ25hbEhhbmRs ZXIoU0lHTkFMX0FSR1MpCiB7Ci0JY2FuY2VsX2NhbGxiYWNrID0gY2FsbGJhY2s7Ci0JY2FuY2Vs X3NlbnRfbXNnID0gXygiQ2FuY2VsIHJlcXVlc3Qgc2VudFxuIik7Ci0JY2FuY2VsX25vdF9zZW50 X21zZyA9IF8oIkNvdWxkIG5vdCBzZW5kIGNhbmNlbCByZXF1ZXN0OiAiKTsKKwlpbnQJCQlzYXZl X2Vycm5vID0gZXJybm87CiAKLQlJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKCZjYW5jZWxDb25u TG9jayk7CisJQ2FuY2VsUmVxdWVzdGVkID0gdHJ1ZTsKIAotCVNldENvbnNvbGVDdHJsSGFuZGxl cihjb25zb2xlSGFuZGxlciwgVFJVRSk7CisJaWYgKHNpZ25hbF9jYWxsYmFja19mbiAhPSBOVUxM KQorCQlzaWduYWxfY2FsbGJhY2tfZm4oKTsKKworCS8qIFdha2UgdXAgdGhlIGNhbmNlbCB0aHJl YWQgKi8KKwlpZiAoY2FuY2VsX3BpcGVbMV0gPj0gMCkKKwl7CisJCWNoYXIJCWMgPSAxOworCQlp bnQJCQlyYyA9IHdyaXRlKGNhbmNlbF9waXBlWzFdLCAmYywgMSk7CisKKwkJKHZvaWQpIHJjOwor CX0KKworCWVycm5vID0gc2F2ZV9lcnJubzsKIH0KIAotI2VuZGlmCQkJCQkJCS8qIFdJTjMyICov CisvKgorICogVGhyZWFkIG1haW4gZnVuY3Rpb24gZm9yIGNyZWF0ZV9jYW5jZWxfdGhyZWFkLiAg V2FpdHMgZm9yIHRoZSBzaWduYWwKKyAqIGhhbmRsZXIgdG8gd3JpdGUgYSBieXRlIHRvIHRoZSBw aXBlLCB0aGVuIGNhbGxzIHRoZSBjYW5jZWwgY2FsbGJhY2suCisgKi8KK3N0YXRpYyB2b2lkICoK K2NhbmNlbF90aHJlYWRfbG9vcCh2b2lkICphcmcpCit7CisJZm9yICg7OykKKwl7CisJCWNoYXIJ CWJ1ZlsxNl07CisJCXNzaXplX3QJCXJjOworCisJCXJjID0gcmVhZChjYW5jZWxfcGlwZVswXSwg YnVmLCBzaXplb2YoYnVmKSk7CisJCWlmIChyYyA8PSAwKQorCQl7CisJCQlpZiAoZXJybm8gPT0g RUlOVFIpCisJCQkJY29udGludWU7CisJCQkvKiBQaXBlIGNsb3NlZCBvciBlcnJvciAtIGV4aXQg dGhyZWFkICovCisJCQlicmVhazsKKwkJfQorCisJCUxvY2tDYW5jZWxUaHJlYWQoKTsKKworCQlT ZW5kQ2FuY2VsUmVxdWVzdCgpOworCisJCWlmICh0aHJlYWRfY2FsbGJhY2tfZm4gIT0gTlVMTCkK KwkJCXRocmVhZF9jYWxsYmFja19mbigpOworCisJCS8qCisJCSAqIERyYWluIGFueSBwZW5kaW5n IGJ5dGVzIGZyb20gdGhlIGNhbmNlbCBwaXBlLCBzbyB0aGF0IHNpZ25hbHMKKwkJICogcmVjZWl2 ZWQgd2hpbGUgd2Ugd2VyZSBhbHJlYWR5IGhhbmRsaW5nIGEgY2FuY2VsIGRvbid0IGNhdXNlIHVz IHRvCisJCSAqIHdha2UgdXAgYWdhaW4gYW5kIGNhbmNlbCBhIHN1YnNlcXVlbnQgcXVlcnkuCisJ CSAqLworCQlmY250bChjYW5jZWxfcGlwZVswXSwgRl9TRVRGTCwgT19OT05CTE9DSyk7CisJCXdo aWxlIChyZWFkKGNhbmNlbF9waXBlWzBdLCBidWYsIHNpemVvZihidWYpKSA+IDApCisJCQk7CQkJ CQkvKiBsb29wIHVudGlsIHBpcGUgaXMgZnVsbHkgZHJhaW5lZCAqLworCQlmY250bChjYW5jZWxf cGlwZVswXSwgRl9TRVRGTCwgMCk7CisKKwkJVW5sb2NrQ2FuY2VsVGhyZWFkKCk7CisJfQorCisJ cmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBjcmVhdGVfY2FuY2VsX3RocmVhZAorICoKKyAqIENy ZWF0ZSBhIGRlZGljYXRlZCB0aHJlYWQgYW5kIGFzc29jaWF0ZWQgcGlwZSBmb3IgYXN5bmMtc2ln bmFsLXNhZmUgY2FuY2VsCisgKiBoYW5kbGluZy4gIFRoZSBwaXBlIGFsbG93cyBzaWduYWwgaGFu ZGxlcnMgKHdoaWNoIGNhbm5vdCBzYWZlbHkgY2FsbCBjb21wbGV4CisgKiBmdW5jdGlvbnMpIHRv IHdha2UgdXAgdGhlIHRocmVhZCBieSB3cml0aW5nIGEgYnl0ZS4KKyAqCisgKiBUaGUgd3JpdGUg ZW5kIG9mIHRoZSBwaXBlIGlzIHNldCBub24tYmxvY2tpbmcgc28gc2lnbmFsIGhhbmRsZXJzIG5l dmVyCisgKiBibG9jay4gIFRoZSB0aHJlYWQgaXMgY3JlYXRlZCB3aXRoIGFsbCBzaWduYWxzIGJs b2NrZWQgc28gdGhhdCBzaWduYWxzIGFyZQorICogYWx3YXlzIGRlbGl2ZXJlZCB0byB0aGUgbWFp biB0aHJlYWQuICBUaGUgdGhyZWFkIHJ1bnMgdW50aWwgcHJvY2VzcyBleGl0LgorICogTm8gaGFu ZGxlIGlzIHJldHVybmVkIGJlY2F1c2UgY3VycmVudGx5IG5vIGNhbGxlcnMgbmVlZCB0byBqb2lu IGl0LgorICovCitzdGF0aWMgdm9pZAorY3JlYXRlX2NhbmNlbF90aHJlYWQodm9pZCkKK3sKKwlz aWdzZXRfdAlzYXZlX3NldDsKKwlzaWdzZXRfdAlibG9ja19zZXQ7CisJcHRocmVhZF90CXRocmVh ZDsKKwlpbnQJCQlyYzsKKworCWlmIChwaXBlKGNhbmNlbF9waXBlKSA8IDApCisJeworCQlwZ19s b2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUgcGlwZSBmb3IgY2FuY2VsOiAlbSIpOworCQlleGl0 KDEpOworCX0KKworCS8qCisJICogTWFrZSB0aGUgd3JpdGUgZW5kIG5vbi1ibG9ja2luZywgc28g dGhhdCB0aGUgc2lnbmFsIGhhbmRsZXIgd29uJ3QgYmxvY2sKKwkgKiBpZiB0aGUgcGlwZSBidWZm ZXIgaXMgZnVsbCAod2hpY2ggaXMgdmVyeSB1bmxpa2VseSBpbiBwcmFjdGljZSBidXQKKwkgKiBw b3NzaWJsZSBpbiB0aGVvcnkpLgorCSAqLworCWZjbnRsKGNhbmNlbF9waXBlWzFdLCBGX1NFVEZM LCBPX05PTkJMT0NLKTsKKworCS8qCisJICogQmxvY2sgYWxsIHNpZ25hbHMgYmVmb3JlIGNyZWF0 aW5nIHRoZSBjYW5jZWwgdGhyZWFkLCBzbyB0aGF0IGl0CisJICogaW5oZXJpdHMgYSBzaWduYWwg bWFzayB3aXRoIGFsbCBzaWduYWxzIGJsb2NrZWQuICBUaGlzIGVuc3VyZXMgc2lnbmFscworCSAq IGFyZSBhbHdheXMgZGVsaXZlcmVkIHRvIHRoZSBtYWluIHRocmVhZCwgd2hpY2ggbWF0dGVycyBi ZWNhdXNlIHNvbWUKKwkgKiBzaWduYWxfY2FsbGJhY2sgZnVuY3Rpb25zIGNhbGwgc2lnbG9uZ2pt cCgpIGJhY2sgdG8gYSBzaWdzZXRqbXAoKSBvbgorCSAqIHRoZSBtYWluIHRocmVhZCdzIHN0YWNr LCBzcGVjaWZpY2FsbHkgdGhlIHBzcWxfY2FuY2VsX2NhbGxiYWNrCisJICogZnVuY3Rpb24uCisJ ICovCisJc2lnZmlsbHNldCgmYmxvY2tfc2V0KTsKKwlwdGhyZWFkX3NpZ21hc2soU0lHX0JMT0NL LCAmYmxvY2tfc2V0LCAmc2F2ZV9zZXQpOworCisJcmMgPSBwdGhyZWFkX2NyZWF0ZSgmdGhyZWFk LCBOVUxMLCBjYW5jZWxfdGhyZWFkX2xvb3AsIE5VTEwpOworCisJcHRocmVhZF9zaWdtYXNrKFNJ R19TRVRNQVNLLCAmc2F2ZV9zZXQsIE5VTEwpOworCisJaWYgKHJjICE9IDApCisJeworCQlwZ19s b2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUgY2FuY2VsIHRocmVhZDogJXMiLCBzdHJlcnJvcihy YykpOworCQlleGl0KDEpOworCX0KKworCXB0aHJlYWRfZGV0YWNoKHRocmVhZCk7Cit9CisKKyNl bmRpZgkJCQkJCQkvKiAhV0lOMzIgKi8KKworCisvKgorICogc2V0dXBfY2FuY2VsX2hhbmRsZXIK KyAqCisgKiBTZXQgdXAgc2lnbmFsIGhhbmRsaW5nIGZvciBTSUdJTlQgKFVuaXgpIG9yIGNvbnNv bGUgZXZlbnRzIChXaW5kb3dzKSB0bworICogcGVyZm9ybSBjYW5jZWwgYWN0aW9ucy4KKyAqCisg KiBzaWduYWxfY2FsbGJhY2sgaXMgaW52b2tlZCBkaXJlY3RseSBmcm9tIHRoZSBzaWduYWwgaGFu ZGxlciBjb250ZXh0IG9uCisgKiBldmVyeSBTSUdJTlQgKG9uIFVuaXgpLCBzbyBpdCBtdXN0IGJl IGFzeW5jLXNpZ25hbC1zYWZlLiAgQ2FuIGJlIE5VTEwuCisgKiBPbiBXaW5kb3dzLCBzaWduYWwg aGFuZGxlcnMgZG9uJ3QgZXhpc3QgKHRoZSBjb25zb2xlIGhhbmRsZXIgcnVucyBpbiBhCisgKiBz ZXBhcmF0ZSB0aHJlYWQpLCBzbyBzaWduYWxfY2FsbGJhY2sgbXVzdCBiZSBOVUxMLgorICoKKyAq IHRocmVhZF9jYWxsYmFjayBpcyBpbnZva2VkIGZyb20gYSBkZWRpY2F0ZWQgY2FuY2VsIHRocmVh ZCAoVW5peCkgb3IgdGhlCisgKiBjb25zb2xlIGhhbmRsZXIgdGhyZWFkIChXaW5kb3dzKSB3aGVu IGEgc2lnbmFsIGlzIHJlY2VpdmVkLiBDYW4gYmUgTlVMTC4KKyAqLwordm9pZAorc2V0dXBfY2Fu Y2VsX2hhbmRsZXIodm9pZCAoKnNpZ25hbF9jYWxsYmFjaykgKHZvaWQpLAorCQkJCQkgdm9pZCAo KnRocmVhZF9jYWxsYmFjaykgKHZvaWQpKQoreworI2lmZGVmIFdJTjMyCisJQXNzZXJ0KHNpZ25h bF9jYWxsYmFjayA9PSBOVUxMKTsKKyNlbmRpZgorCisJc2lnbmFsX2NhbGxiYWNrX2ZuID0gc2ln bmFsX2NhbGxiYWNrOworCXRocmVhZF9jYWxsYmFja19mbiA9IHRocmVhZF9jYWxsYmFjazsKKwlj YW5jZWxfc2VudF9tc2cgPSBfKCJTZW5kaW5nIGNhbmNlbCByZXF1ZXN0XG4iKTsKKwljYW5jZWxf bm90X3NlbnRfbXNnID0gXygiQ291bGQgbm90IHNlbmQgY2FuY2VsIHJlcXVlc3Q6ICIpOworCisj aWZkZWYgV0lOMzIKKwlTZXRDb25zb2xlQ3RybEhhbmRsZXIoY29uc29sZUhhbmRsZXIsIFRSVUUp OworI2Vsc2UKKwljcmVhdGVfY2FuY2VsX3RocmVhZCgpOworCXBxc2lnbmFsKFNJR0lOVCwgQ2Fu Y2VsU2lnbmFsSGFuZGxlcik7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Zl X3V0aWxzL2NhbmNlbC5oIGIvc3JjL2luY2x1ZGUvZmVfdXRpbHMvY2FuY2VsLmgKaW5kZXggZTE3 NGZiODNiOTIuLmZlYjE5NzBkMzcyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9mZV91dGlscy9j YW5jZWwuaAorKysgYi9zcmMvaW5jbHVkZS9mZV91dGlscy9jYW5jZWwuaApAQCAtMjMsMTAgKzIz LDE1IEBAIGV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2FuY2VsUmVx dWVzdGVkOwogZXh0ZXJuIHZvaWQgU2V0Q2FuY2VsQ29ubihQR2Nvbm4gKmNvbm4pOwogZXh0ZXJu IHZvaWQgUmVzZXRDYW5jZWxDb25uKHZvaWQpOwogCi0vKgotICogQSBjYWxsYmFjayBjYW4gYmUg b3B0aW9uYWxseSBzZXQgdXAgdG8gYmUgY2FsbGVkIGF0IGNhbmNlbGxhdGlvbgotICogdGltZS4K LSAqLwotZXh0ZXJuIHZvaWQgc2V0dXBfY2FuY2VsX2hhbmRsZXIodm9pZCAoKnF1ZXJ5X2NhbmNl bF9jYWxsYmFjaykgKHZvaWQpKTsKK2V4dGVybiB2b2lkIHNldHVwX2NhbmNlbF9oYW5kbGVyKHZv aWQgKCpzaWduYWxfY2FsbGJhY2spICh2b2lkKSwKKwkJCQkJCQkJIHZvaWQgKCp0aHJlYWRfY2Fs bGJhY2spICh2b2lkKSk7CisKK2V4dGVybiB2b2lkIExvY2tDYW5jZWxUaHJlYWQodm9pZCk7Citl eHRlcm4gdm9pZCBVbmxvY2tDYW5jZWxUaHJlYWQodm9pZCk7CisKKyNpZm5kZWYgV0lOMzIKK2V4 dGVybiB2b2lkIFJlc2V0Q2FuY2VsQWZ0ZXJGb3JrKHZvaWQpOworZXh0ZXJuIHZvaWQgQ2FuY2Vs U2lnbmFsSGFuZGxlcihTSUdOQUxfQVJHUyk7CisjZW5kaWYKIAogI2VuZGlmCQkJCQkJCS8qIENB TkNFTF9IICovCi0tIAoyLjU0LjAKCg== --16407362cd95456687a9f74fa396331c7bb1f2b42fbbf0186421d2cfd94b--