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 1vVZ2m-0056rD-03 for pgsql-hackers@arkaria.postgresql.org; Tue, 16 Dec 2025 17:41:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vVZ2k-007u5l-38 for pgsql-hackers@arkaria.postgresql.org; Tue, 16 Dec 2025 17:41:03 +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 1vVZ2j-007u5d-32 for pgsql-hackers@lists.postgresql.org; Tue, 16 Dec 2025 17:41:03 +0000 Received: from mail-qv1-xf2c.google.com ([2607:f8b0:4864:20::f2c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vVZ2g-0010Lm-2f for pgsql-hackers@postgresql.org; Tue, 16 Dec 2025 17:41:00 +0000 Received: by mail-qv1-xf2c.google.com with SMTP id 6a1803df08f44-88a22eb38edso23189476d6.2 for ; Tue, 16 Dec 2025 09:40:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1765906857; x=1766511657; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Yeb5dUW4dSLND9UX/FuKPhaEZuns4fXvsWlTeQM0v6M=; b=E+G5p9McRPnWzYMxYugOnCd3J7Ry5lZkhFElim2NK3/btBvSKD0BwZpphKT6+aBIgh izZoE8oKgx4p0ToZiCKiyk7/e+0J+XwnFQg6C5i3D4gVkgEP+iLixIInTvwsinsivwdl LIzAWIumoV+y5zUPgHiey4pr6fmbYYwiQYcx6eskrKMosN1mqJa1z1ar57QCv1Fpn6GK POngKx1X9IkOlofxBsUn+mXG5yH/9dP4Csn8HpUmkqWItERPC11Bgn2St0B7Lhwxua8n j4LkxDHonDi5LfTCn0qUES3BmCc/YU9GKEI48eQ2yhsqWJlJH7hHWo7fEitdVSzLQLk7 EhjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765906857; x=1766511657; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Yeb5dUW4dSLND9UX/FuKPhaEZuns4fXvsWlTeQM0v6M=; b=GSqQDvp/MszNy1A0TOy010GP0oK5TTggPfD5jgeIsXwJzlOM2GkQu+nUGmkNg2mQnb GE7jylNl0kIcLhWgYyYqUTyxXJN4pbD937WQv6y9niRMRWX8wVYcWq4RvcM4tKSy9f58 1XHHxjRA5A9aPn5l720PACi7fTwNcEGbsHd5D2Kjn78w60MmFWITw12+A4Vmu7hD3UKn vVPe9uY5E2j9K7olNv3Q5Mr+RIpxQSfV0K7v2OS5sJ2ruhCTmjP9Byvp6FfsaKP0EfFS TZAtQfD4uLCqn7fbWTiZLV9V3hNL/iVxKmRDrAJtDoX1Y4JgAsW7Ae2AKt4SeqNjoMWI /csQ== X-Gm-Message-State: AOJu0Yy4dsRyfIvAtGEuvZRVC3PAZSzcENxPOeiXBKW5nXqfCWZ36OIe /82pUuIwVx1Ec9Ubbov953FXdjN13bxXVhlr3f1VuN9tFyawMhIy3WzJhGUo8Fya6dByw/Ez+jZ ukLLxxRpOWeV4BxtCro1wz3Wtui0C1TeLv9vz9eoouWedRmdiwSw= X-Gm-Gg: AY/fxX61CEJM1PCBSOWzaSNHGm4VWt6jjfI6xSJvqgvj+pcptGZfTdDXuqGQrGmnb0c W0SOEwXYZ8zpuEmuPf/vEiPqOAQf2WMLJegTXCCLKJVEzsg0ByfX6hFX/MqruymdgNxLxsrYTsu MzqQKJUJBRiZUoPM5rFr6qbOGjwKmlmuBXZ05rl+wsk5OM/o34f5jhmj8rNv6TFwA211KCvDwsn VKJjBNPAv+xbKvOhG5XN1A+AbeSlPOJYZuq406I9P7p8Zd/Y2Lqa3gEIfRNWmNdDrq4qNPQgQ== X-Google-Smtp-Source: AGHT+IGNvVpHbx+cqvi5JC/celSTQOuW3RIAlBm6wTN86jJgx9yOn12qW1tDmlnxC7unpvdT3y1gEyFnIFsdi7AMMVM= X-Received: by 2002:a05:6214:2dc4:b0:888:87ea:c7db with SMTP id 6a1803df08f44-88887eacc37mr247239586d6.39.1765906857298; Tue, 16 Dec 2025 09:40:57 -0800 (PST) MIME-Version: 1.0 References: <3720B2E1-0B96-4063-8D63-B5AE6AFEA159@gmail.com> In-Reply-To: <3720B2E1-0B96-4063-8D63-B5AE6AFEA159@gmail.com> From: Jacob Champion Date: Tue, 16 Dec 2025 09:40:44 -0800 X-Gm-Features: AQt7F2qCOFIuxB1MSOCRpUmF3G_GGwK-JE1w9OsvUo_wEo2CkEv2YOd67vn4-aY Message-ID: Subject: Re: [oauth] Stabilize the libpq-oauth ABI (and allow alternative implementations?) To: Chao Li Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000f056560646153aa9" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000f056560646153aa9 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Dec 11, 2025 at 11:43=E2=80=AFPM Chao Li w= rote: > This is a solid patch set. Only a few small comments: Thanks for the review! > The commit message has explained why SOCKTYPE is temporary and the reason= why adding prefix =E2=80=9CPG_=E2=80=9D is to avoid collisions. But I don= =E2=80=99t think code readers will always read commit messages, given the m= acro is a local and temporary, why adding a prefix starting with a undersco= re, like =E2=80=9C_PQ_SOCKTYPE=E2=80=9D, which explicitly indicates the mac= ro is kinda private. _PQ_SOCKTYPE is reserved (starts with _P), but I could add more explanatory comments if you think that'd be useful. See v2-0001, which now includes an explanation of the signature in the documentation. The hard part is that I don't want to require all Windows clients of libpq-fe.h to have to depend on Winsock; that's the only reason for this oddity. Otherwise I'd declare PGsocket as the public version of our internal pgsocket and call it a day. > + * Helper for handling user flow failures. If the implementation put any= thing > + * into request->error, it's added to conn->errorMessage here. > ``` > > Typo: put -> puts Past tense was my intent, but I've reworded to avoid any garden paths: "If anything was put into request->error, it's added to conn->errorMessage here." > =E2=80=9C*/=E2=80=9C in the end of the comment line seems a typo. Thanks, no idea why I did that. > "(prefer v2, below, instead)" looks confusing to me, though I can underst= and what it means. Maybe make it clearer, like =E2=80=9C(v2 is preferred; s= ee below)" Done. -- v2 makes these changes and rebases over latest HEAD. I'll plan to get 0001-3 in this week; probably tomorrow. Open questions remain: 1) 0004: Any objections to putting PQExpBuffer into libpq-fe.h? 2) 0004: Thoughts on the v2 inheritance struct style as opposed to relying on implementations to double-check the struct length? 3) 0005: Should I add the thread lock to an init() API, or expose a new PQgetThreadLock() that other code can use? 4) 0007: [all of it] My personal thoughts on these: 1) it's fine 2) it's a coin flip for me; inheritance is ugly, length magic is scary 3) I like the idea of PQgetThreadLock() so that we don't have to inject it everywhere it could possibly be needed Thanks, --Jacob --000000000000f056560646153aa9 Content-Type: text/plain; charset="US-ASCII"; name="since-v1.diff.txt" Content-Disposition: attachment; filename="since-v1.diff.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj8vard10 MTogIDNiMjdmNTRiNGRjICEgMTogIDgzMTJiZjMwNzI2IGxpYnBxLWZlLmg6IERvbid0IGNsYWlt IFNPQ0tUWVBFIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlCiAgICBAQCBDb21taXQgbWVzc2FnZQog ICAgICAgICBkb2Vzbid0IHNlZW0gdG9vIGZhci1mZXRjaGVkLCBnaXZlbiBpdHMgcHJveGltaXR5 IHRvIGV4aXN0aW5nIFBPU0lYCiAgICAgICAgIG1hY3JvIG5hbWVzLgogICAgIAogICAgLSAgICBB ZGQgYSBQUV8gcHJlZml4IHRvIGF2b2lkIGNvbGxpc2lvbnMsIGFuZCBiYWNrcGF0Y2guCiAgICAr ICAgIEFkZCBhIFBRXyBwcmVmaXggdG8gYXZvaWQgY29sbGlzaW9ucywgdXBkYXRlIGFuZCBpbXBy b3ZlIHRoZSBzdXJyb3VuZGluZwogICAgKyAgICBkb2N1bWVudGF0aW9uLCBhbmQgYmFja3BhdGNo LgogICAgIAogICAgKyAgICBSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWls LmNvbT4KICAgICsgICAgRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQU9ZbWklMkJt ckdnJTJCbl9YMk1PTGdlV2NqM3ZfTTAwZ1I4dXpfRDdtTTh6JTNEZFgxSllWYmclNDBtYWlsLmdt YWlsLmNvbQogICAgICAgICBCYWNrcGF0Y2gtdGhyb3VnaDogMTgKICAgICAKICAgICAgIyMgZG9j L3NyYy9zZ21sL2xpYnBxLnNnbWwgIyMKICAgICBAQCBkb2Mvc3JjL3NnbWwvbGlicHEuc2dtbDog dHlwZWRlZiBzdHJ1Y3QgUEdvYXV0aEJlYXJlclJlcXVlc3QKICAgIC0gICAgIC8qIENhbGxiYWNr IGltcGxlbWVudGluZyBhIGN1c3RvbSBhc3luY2hyb25vdXMgT0F1dGggZmxvdy4gKi8KICAgICsg CiAgICArICAgICAvKiBIb29rIG91dHB1dHMgKi8KICAgICsgCiAgICArLSAgICAvKiBDYWxsYmFj ayBpbXBsZW1lbnRpbmcgYSBjdXN0b20gYXN5bmNocm9ub3VzIE9BdXRoIGZsb3cuICovCiAgICAr KyAgICAvKgogICAgKysgICAgICogQ2FsbGJhY2sgaW1wbGVtZW50aW5nIGEgY3VzdG9tIGFzeW5j aHJvbm91cyBPQXV0aCBmbG93LiBUaGUgc2lnbmF0dXJlIGlzCiAgICArKyAgICAgKiBwbGF0Zm9y bS1kZXBlbmRlbnQ6IFBRX1NPQ0tUWVBFIGlzIFNPQ0tFVCBvbiBXaW5kb3dzLCBhbmQgaW50IGV2 ZXJ5d2hlcmUKICAgICsrICAgICAqIGVsc2UuCiAgICArKyAgICAgKi8KICAgICAgICAgIFBvc3Rn cmVzUG9sbGluZ1N0YXR1c1R5cGUgKCphc3luYykgKFBHY29ubiAqY29ubiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBQR29hdXRoQmVhcmVyUmVx dWVzdCAqcmVxdWVzdCwKICAgICAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFNPQ0tUWVBFICphbHRzb2NrKTsKICAgIEBAIGRvYy9zcmMvc2dtbC9saWJwcS5zZ21sOiB0 eXBlZGVmIHN0cnVjdCBQR29hdXRoQmVhcmVyUmVxdWVzdAogICAgICAKICAgICAgICAgIC8qIENh bGxiYWNrIHRvIGNsZWFuIHVwIGN1c3RvbSBhbGxvY2F0aW9ucy4gKi8KICAgICAgICAgIHZvaWQg ICAgICAgICgqY2xlYW51cCkgKFBHY29ubiAqY29ubiwgc3RydWN0IFBHb2F1dGhCZWFyZXJSZXF1 ZXN0ICpyZXF1ZXN0KTsKICAgICtAQCBkb2Mvc3JjL3NnbWwvbGlicHEuc2dtbDogdHlwZWRlZiBz dHJ1Y3QgUEdvYXV0aEJlYXJlclJlcXVlc3QKICAgICsgICAgICAgICAgaG9vay4gV2hlbiB0aGUg Y2FsbGJhY2sgY2Fubm90IG1ha2UgZnVydGhlciBwcm9ncmVzcyB3aXRob3V0IGJsb2NraW5nLAog ICAgKyAgICAgICAgICBpdCBzaG91bGQgcmV0dXJuIGVpdGhlciA8c3ltYm9sPlBHUkVTX1BPTExJ TkdfUkVBRElORzwvc3ltYm9sPiBvcgogICAgKyAgICAgICAgICA8c3ltYm9sPlBHUkVTX1BPTExJ TkdfV1JJVElORzwvc3ltYm9sPiBhZnRlciBzZXR0aW5nCiAgICArLSAgICAgICAgIDxsaXRlcmFs PipwZ3NvY2tldDwvbGl0ZXJhbD4gdG8gdGhlIGZpbGUgZGVzY3JpcHRvciB0aGF0IHdpbGwgYmUg bWFya2VkCiAgICArKyAgICAgICAgIDxsaXRlcmFsPiphbHRzb2NrPC9saXRlcmFsPiB0byB0aGUg ZmlsZSBkZXNjcmlwdG9yIHRoYXQgd2lsbCBiZSBtYXJrZWQKICAgICsgICAgICAgICAgcmVhZHkg dG8gcmVhZC93cml0ZSB3aGVuIHByb2dyZXNzIGNhbiBiZSBtYWRlIGFnYWluLiAoVGhpcyBkZXNj cmlwdG9yCiAgICArICAgICAgICAgIGlzIHRoZW4gcHJvdmlkZWQgdG8gdGhlIHRvcC1sZXZlbCBw b2xsaW5nIGxvb3AgdmlhCiAgICArICAgICAgICAgIDxmdW5jdGlvbj5QUXNvY2tldCgpPC9mdW5j dGlvbj4uKSBSZXR1cm4gPHN5bWJvbD5QR1JFU19QT0xMSU5HX09LPC9zeW1ib2w+CiAgICAgCiAg ICAgICMjIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmggIyMKICAgICBAQCBzcmMvaW50 ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oOiB0eXBlZGVmIHN0cnVjdCBfUEdwcm9tcHRPQXV0aERl dmljZQogICAgKyAJaW50CQkJZXhwaXJlc19pbjsJCS8qIHNlY29uZHMgdW50aWwgdXNlciBjb2Rl IGV4cGlyZXMgKi8KICAgICsgfSBQR3Byb21wdE9BdXRoRGV2aWNlOwogICAgICAKICAgIC0gLyog Zm9yIFBHb2F1dGhCZWFyZXJSZXF1ZXN0LmFzeW5jKCkgKi8KICAgICstLyogZm9yIFBHb2F1dGhC ZWFyZXJSZXF1ZXN0LmFzeW5jKCkgKi8KICAgICsrLyoKICAgICsrICogRm9yIFBHb2F1dGhCZWFy ZXJSZXF1ZXN0LmFzeW5jKCkuIFRoaXMgbWFjcm8ganVzdCBhbGxvd3MgY2xpZW50cyB0byBhdm9p ZAogICAgKysgKiBkZXBlbmRpbmcgb24gbGlicHEtaW50Lmggb3IgV2luc29jayBmb3IgdGhlICJz b2NrZXQiIHR5cGU7IGl0J3MgdW5kZWZpbmVkCiAgICArKyAqIGltbWVkaWF0ZWx5IGJlbG93Lgog ICAgKysgKi8KICAgICAgI2lmZGVmIF9XSU4zMgogICAgIC0jZGVmaW5lIFNPQ0tUWVBFIHVpbnRw dHJfdAkJLyogYXZvaWRzIGRlcGVuZGluZyBvbiB3aW5zb2NrMi5oIGZvciBTT0NLRVQgKi8KICAg ICArI2RlZmluZSBQUV9TT0NLVFlQRSB1aW50cHRyX3QJLyogYXZvaWRzIGRlcGVuZGluZyBvbiB3 aW5zb2NrMi5oIGZvciBTT0NLRVQgKi8KICAgIEBAIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBx LWZlLmg6IHR5cGVkZWYgc3RydWN0IF9QR3Byb21wdE9BdXRoRGV2aWNlCiAgICAgIAogICAgICB0 eXBlZGVmIHN0cnVjdCBQR29hdXRoQmVhcmVyUmVxdWVzdAogICAgIEBAIHNyYy9pbnRlcmZhY2Vz L2xpYnBxL2xpYnBxLWZlLmg6IHR5cGVkZWYgc3RydWN0IFBHb2F1dGhCZWFyZXJSZXF1ZXN0CiAg ICArIAkgKiBibG9ja2luZyBkdXJpbmcgdGhlIG9yaWdpbmFsIGNhbGwgdG8gdGhlIFBRQVVUSERB VEFfT0FVVEhfQkVBUkVSX1RPS0VOCiAgICArIAkgKiBob29rLCBpdCBtYXkgYmUgcmV0dXJuZWQg ZGlyZWN0bHksIGJ1dCBvbmUgb2YgcmVxdWVzdC0+YXN5bmMgb3IKICAgICsgCSAqIHJlcXVlc3Qt PnRva2VuIG11c3QgYmUgc2V0IGJ5IHRoZSBob29rLgogICAgKysJICoKICAgICsrCSAqIFRoZSAo UFFfU09DS1RZUEUgKikgaW4gdGhlIHNpZ25hdHVyZSBpcyBhIHBsYWNlaG9sZGVyIGZvciB0aGUg cGxhdGZvcm0ncwogICAgKysJICogbmF0aXZlIHNvY2tldCB0eXBlOiAoU09DS0VUICopIG9uIFdp bmRvd3MsIGFuZCAoaW50ICopIGV2ZXJ5d2hlcmUgZWxzZS4KICAgICAgCSAqLwogICAgICAJUG9z dGdyZXNQb2xsaW5nU3RhdHVzVHlwZSAoKmFzeW5jKSAoUEdjb25uICpjb25uLAogICAgICAJCQkJ CQkJCQkJc3RydWN0IFBHb2F1dGhCZWFyZXJSZXF1ZXN0ICpyZXF1ZXN0LAoyOiAgM2I1NjkwYTQ5 ZDcgISAyOiAgODk5NTk3ZDU3NzcgbGlicHEtb2F1dGg6IHVzZSBjb3JyZWN0IGNfYXJncyBpbiBt ZXNvbi5idWlsZAogICAgQEAgQ29tbWl0IG1lc3NhZ2UKICAgICAgICAgbGlicHFfc29fY19hcmdz LCByYXRoZXIgdGhhbiBsaWJwcV9vYXV0aF9zb19jX2FyZ3MuIChBdCB0aGUgbW9tZW50LCB0aGUK ICAgICAgICAgdHdvIGxpc3RzIGFyZSBpZGVudGljYWwsIGJ1dCB0aGF0IHdvbid0IGJlIHRydWUg Zm9yZXZlci4pCiAgICAgCiAgICArICAgIFJldmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNo YW9AZ21haWwuY29tPgogICAgKyAgICBEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NB T1ltaSUyQm1yR2clMkJuX1gyTU9MZ2VXY2ozdl9NMDBnUjh1el9EN21NOHolM0RkWDFKWVZiZyU0 MG1haWwuZ21haWwuY29tCiAgICAgICAgIEJhY2twYXRjaC10aHJvdWdoOiAxOAogICAgIAogICAg ICAjIyBzcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9tZXNvbi5idWlsZCAjIwozOiAgNDkzM2U5 YjUzZmIgISAzOiAgOTUzYzc0M2Y2OTIgb2F1dGhfdmFsaWRhdG9yOiBBdm9pZCByYWNlcyBpbiBs b2dfY2hlY2soKQogICAgQEAgQ29tbWl0IG1lc3NhZ2UKICAgICAKICAgICAgICAgQ29tbWl0IGUw ZjM3M2VlNCBmaXhlZCB1cCByYWNlcyBpbiBDbHVzdGVyOjpjb25uZWN0X2ZhaWxzIHdoZW4gdXNp bmcKICAgICAgICAgbG9nX2xpa2UuIHQvMDAyX2NsaWVudC5wbCBkaWRuJ3QgZ2V0IHRoZSBtZW1v LCB0aG91Z2gsIGJlY2F1c2UgaXQKICAgIC0gICAgZG9lc24ndCB1c2UgVGVzdDo6Q2x1c3RlciB0 byBwZXJmb3JtIGl0cyBjdXN0b20gaG9vayB0ZXN0cy4gSW50cm9kdWNlCiAgICAtICAgIHRoZSBm aXgsIGJhc2VkIG9uIGRlYnVnMiBsb2dnaW5nLCB0byBpdHMgdXNlIG9mIGxvZ19jaGVjaygpIGFz IHdlbGwsIGFuZAogICAgLSAgICBtb3ZlIHRoZSBsb2dpYyBpbnRvIHRoZSB0ZXN0KCkgaGVscGVy IHNvIHRoYXQgYW55IGFkZGl0aW9ucyBkb24ndCBuZWVkCiAgICAtICAgIHRvIGNvbnRpbnVhbGx5 IGR1cGxpY2F0ZSBpdC4KICAgICsgICAgZG9lc24ndCB1c2UgVGVzdDo6Q2x1c3RlciB0byBwZXJm b3JtIGl0cyBjdXN0b20gaG9vayB0ZXN0cy4gKFRoaXMgaXMKICAgICsgICAgcHJvYmFibHkgbm90 IGFuIGlzc3VlIGF0IHRoZSBtb21lbnQsIHNpbmNlIHRoZSBsb2cgY2hlY2sgaXMgb25seSBkb25l CiAgICArICAgIGFmdGVyIGF1dGhlbnRpY2F0aW9uIHN1Y2Nlc3MgYW5kIG5vdCBmYWlsdXJlLCBi dXQgdGhlcmUncyBubyByZWFzb24gdG8KICAgICsgICAgd2FpdCBmb3Igc29tZW9uZSB0byBoaXQg aXQuKQogICAgIAogICAgKyAgICBJbnRyb2R1Y2UgdGhlIGZpeCwgYmFzZWQgb24gZGVidWcyIGxv Z2dpbmcsIHRvIGl0cyB1c2Ugb2YgbG9nX2NoZWNrKCkgYXMKICAgICsgICAgd2VsbCwgYW5kIG1v dmUgdGhlIGxvZ2ljIGludG8gdGhlIHRlc3QoKSBoZWxwZXIgc28gdGhhdCBhbnkgYWRkaXRpb25z CiAgICArICAgIGRvbid0IG5lZWQgdG8gY29udGludWFsbHkgZHVwbGljYXRlIGl0LgogICAgKwog ICAgKyAgICBSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KICAg ICsgICAgRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQU9ZbWklMkJtckdnJTJCbl9Y Mk1PTGdlV2NqM3ZfTTAwZ1I4dXpfRDdtTTh6JTNEZFgxSllWYmclNDBtYWlsLmdtYWlsLmNvbQog ICAgICAgICBCYWNrcGF0Y2gtdGhyb3VnaDogMTgKICAgICAKICAgICAgIyMgc3JjL3Rlc3QvbW9k dWxlcy9vYXV0aF92YWxpZGF0b3IvdC8wMDJfY2xpZW50LnBsICMjCjQ6ICBiMmNlY2U1MmJhNiAh IDQ6ICAzYzA0N2U2Y2YyNCBsaWJwcTogSW50cm9kdWNlIFBRQVVUSERBVEFfT0FVVEhfQkVBUkVS X1RPS0VOX1YyCiAgICBAQCBDb21taXQgbWVzc2FnZQogICAgICAgICBUT0RPOiBDb3VsZCB3ZSBq dXN0IGFkZCB0byB0aGUgZW5kIG9mIFBHb2F1dGhCZWFyZXJSZXF1ZXN0LCBhbmQgdGVsbAogICAg ICAgICAgICAgICB1c2VycyBub3QgdG8gdXNlIHRoZSBhZGRpdGlvbmFsIGZpZWxkcyBpZiB0aGV5 IGhhdmUgdmVyc2lvbiAxPwogICAgIAogICAgKyAgICBSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGku ZXZhbi5jaGFvQGdtYWlsLmNvbT4KICAgICsgICAgRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS9DQU9ZbWklMkJtckdnJTJCbl9YMk1PTGdlV2NqM3ZfTTAwZ1I4dXpfRDdtTTh6JTNEZFgx SllWYmclNDBtYWlsLmdtYWlsLmNvbQogICAgKwogICAgICAjIyBkb2Mvc3JjL3NnbWwvbGlicHEu c2dtbCAjIwogICAgIEBAIGRvYy9zcmMvc2dtbC9saWJwcS5zZ21sOiBQUWF1dGhEYXRhSG9va190 eXBlIFBRZ2V0QXV0aERhdGFIb29rKHZvaWQpOwogICAgICAgICAgICAgIDxpbmRleHRlcm0+PHBy aW1hcnk+UFFBVVRIREFUQV9QUk9NUFRfT0FVVEhfREVWSUNFPC9wcmltYXJ5PjwvaW5kZXh0ZXJt PgogICAgQEAgc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaDogdHlwZWRlZiBlbnVtCiAg ICAgIAkJCQkJCQkJCSAqIFVSTCAqLwogICAgIC0JUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9L RU4sCS8qIHNlcnZlciByZXF1ZXN0cyBhbiBPQXV0aCBCZWFyZXIgdG9rZW4gKi8KICAgICArCVBR QVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOLAkvKiBzZXJ2ZXIgcmVxdWVzdHMgYW4gT0F1dGgg QmVhcmVyIHRva2VuCiAgICAtKwkJCQkJCQkJCSAqIChwcmVmZXIgdjIsIGJlbG93LCBpbnN0ZWFk KSAqLwogICAgKysJCQkJCQkJCQkgKiAodjIgaXMgcHJlZmVycmVkOyBzZWUgYmVsb3cpICovCiAg ICAgKwlQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTl9WMiwJLyogbmV3ZXN0IEFQSSBmb3Ig T0F1dGggQmVhcmVyIHRva2VucyAqLwogICAgICB9IFBHYXV0aERhdGE7CiAgICAgIAogICAgQEAg c3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5jOiBjbGVhbnVwOgogICAgICB9CiAg ICAgIAogICAgICsvKgogICAgLSsgKiBIZWxwZXIgZm9yIGhhbmRsaW5nIHVzZXIgZmxvdyBmYWls dXJlcy4gSWYgdGhlIGltcGxlbWVudGF0aW9uIHB1dCBhbnl0aGluZwogICAgLSsgKiBpbnRvIHJl cXVlc3QtPmVycm9yLCBpdCdzIGFkZGVkIHRvIGNvbm4tPmVycm9yTWVzc2FnZSBoZXJlLgogICAg KysgKiBIZWxwZXIgZm9yIGhhbmRsaW5nIGZsb3cgZmFpbHVyZXMuIElmIGFueXRoaW5nIHdhcyBw dXQgaW50byByZXF1ZXN0LT5lcnJvciwKICAgICsrICogaXQncyBhZGRlZCB0byBjb25uLT5lcnJv ck1lc3NhZ2UgaGVyZS4KICAgICArICovCiAgICAgK3N0YXRpYyB2b2lkCiAgICAgK3JlcG9ydF91 c2VyX2Zsb3dfZXJyb3IoUEdjb25uICpjb25uLCBjb25zdCBQR29hdXRoQmVhcmVyUmVxdWVzdFYy ICpyZXF1ZXN0KQogICAgQEAgc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvdC8wMDJf Y2xpZW50LnBsOiB0ZXN0KAogICAgICsJZXhwZWN0X3N1Y2Nlc3MgPT4gMSwKICAgICAgCWxvZ19s aWtlID0+IFtxci9vYXV0aF92YWxpZGF0b3I6IHRva2VuPSJteS10b2tlbiIsIHJvbGU9IiR1c2Vy Ii9dKTsKICAgICAgCiAgICAtKyMgTWFrZSBzdXJlIHRoZSB2MSBob29rIGNvbnRpbnVlcyB0byB3 b3JrLiAqLwogICAgKysjIE1ha2Ugc3VyZSB0aGUgdjEgaG9vayBjb250aW51ZXMgdG8gd29yay4K ICAgICArdGVzdCgKICAgICArCSJ2MSBzeW5jaHJvbm91cyBob29rIGNhbiBwcm92aWRlIGEgdG9r ZW4iLAogICAgICsJZmxhZ3MgPT4gWwo1OiAgYzAxMmJjNzE1ZTEgISA1OiAgZTY1NWQ0ZWUwOTEg bGlicHEtb2F1dGg6IFVzZSB0aGUgUEdvYXV0aEJlYXJlclJlcXVlc3RWMiBBUEkKICAgIEBAIENv bW1pdCBtZXNzYWdlCiAgICAgICAgICAgICAgIHRvIHRoZSBwcml2YXRlIE5MUyBpbml0aWFsaXph dGlvbi4gU2hvdWxkIHdlIGV4cG9zZSB0aGUgbG9jayB0bwogICAgICAgICAgICAgICB0aGF0IGZ1 bmN0aW9uIGFzIHdlbGw/CiAgICAgCiAgICArICAgIFJldmlld2VkLWJ5OiBDaGFvIExpIDxsaS5l dmFuLmNoYW9AZ21haWwuY29tPgogICAgKyAgICBEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5l cy9tL0NBT1ltaSUyQm1yR2clMkJuX1gyTU9MZ2VXY2ozdl9NMDBnUjh1el9EN21NOHolM0RkWDFK WVZiZyU0MG1haWwuZ21haWwuY29tCiAgICArCiAgICAgICMjIHNyYy9pbnRlcmZhY2VzL2xpYnBx LW9hdXRoL1JFQURNRSAjIwogICAgIEBAIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL1JFQURN RTogcmVzdWx0cyBpbiBhIGZhaWxlZCBjb25uZWN0aW9uLgogICAgICAKICAgIEBAIHNyYy9pbnRl cmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuYzogZnJlZV9hc3luY19jdHgoUEdjb25uICpj b25uLCBzdHJ1Y3QgYXN5CiAgICAgKwkgKiBhbHNvIHRoZSBkb2N1bWVudGF0aW9uIGZvciBzdHJ1 Y3QgYXN5bmNfY3R4LgogICAgICsJICovCiAgICAgKwlpZiAoYWN0eC0+ZXJyY3R4KQogICAgLSsJ CWFwcGVuZFBRRXhwQnVmZmVyKGVycmJ1ZiwgIiVzOiAiLCBsaWJwcV9nZXR0ZXh0KGFjdHgtPmVy cmN0eCkpOwogICAgKysJCWFwcGVuZFBRRXhwQnVmZmVyKGVycmJ1ZiwgIiVzOiAiLCBhY3R4LT5l cnJjdHgpOwogICAgICsKICAgICArCWlmIChQUUV4cEJ1ZmZlckRhdGFCcm9rZW4oYWN0eC0+ZXJy YnVmKSkKICAgICArCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihlcnJidWYsIGxpYnBxX2dldHRleHQo Im91dCBvZiBtZW1vcnkiKSk7CiAgICBAQCBzcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0 aC1jdXJsLmM6IHBnX2ZlX3J1bl9vYXV0aF9mbG93X2ltcGwoUEdjb25uICpjb25uKQogICAgIEBA IHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuYzogcGdfZmVfcnVuX29hdXRo X2Zsb3dfaW1wbChQR2Nvbm4gKmNvbm4pCiAgICAgIAkJewogICAgICAJCQljYXNlIE9BVVRIX1NU RVBfSU5JVDoKICAgIC0gCQkJCWFjdHgtPmVycmN0eCA9ICJmYWlsZWQgdG8gZmV0Y2ggT3BlbklE IGRpc2NvdmVyeSBkb2N1bWVudCI7CiAgICArIAkJCQlhY3R4LT5lcnJjdHggPSBsaWJwcV9nZXR0 ZXh0KCJmYWlsZWQgdG8gZmV0Y2ggT3BlbklEIGRpc2NvdmVyeSBkb2N1bWVudCIpOwogICAgIC0J CQkJaWYgKCFzdGFydF9kaXNjb3ZlcnkoYWN0eCwgY29ubl9vYXV0aF9kaXNjb3ZlcnlfdXJpKGNv bm4pKSkKICAgICArCQkJCWlmICghc3RhcnRfZGlzY292ZXJ5KGFjdHgsIGFjdHgtPmRpc2NvdmVy eV91cmkpKQogICAgICAJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogICAgQEAgc3JjL2ludGVyZmFj ZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5jOiBwZ19mZV9ydW5fb2F1dGhfZmxvd19pbXBsKFBH Y29ubiAqY29ubikKICAgICAtCSAqIGFsc28gdGhlIGRvY3VtZW50YXRpb24gZm9yIHN0cnVjdCBh c3luY19jdHguCiAgICAgLQkgKi8KICAgICAtCWlmIChhY3R4LT5lcnJjdHgpCiAgICAtLQkJYXBw ZW5kUFFFeHBCdWZmZXIoZXJyYnVmLCAiJXM6ICIsIGxpYnBxX2dldHRleHQoYWN0eC0+ZXJyY3R4 KSk7CiAgICArLQkJYXBwZW5kUFFFeHBCdWZmZXIoZXJyYnVmLCAiJXM6ICIsIGFjdHgtPmVycmN0 eCk7CiAgICAgLQogICAgIC0JaWYgKFBRRXhwQnVmZmVyRGF0YUJyb2tlbihhY3R4LT5lcnJidWYp KQogICAgIC0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGVycmJ1ZiwgbGlicHFfZ2V0dGV4dCgib3V0 IG9mIG1lbW9yeSIpKTsKICAgIEBAIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGgu Yzogb2F1dGhfaW5pdChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnBhc3N3CiAgICAgIHN0YXRp YyB2b2lkCiAgICAgIG9hdXRoX2ZyZWUodm9pZCAqb3BhcSkKICAgICBAQCBzcmMvaW50ZXJmYWNl cy9saWJwcS9mZS1hdXRoLW9hdXRoLmM6IGNsZWFudXA6CiAgICAtIH0KICAgIC0gCiAgICAtIC8q CiAgICAtLSAqIEhlbHBlciBmb3IgaGFuZGxpbmcgdXNlciBmbG93IGZhaWx1cmVzLiBJZiB0aGUg aW1wbGVtZW50YXRpb24gcHV0IGFueXRoaW5nCiAgICAtLSAqIGludG8gcmVxdWVzdC0+ZXJyb3Is IGl0J3MgYWRkZWQgdG8gY29ubi0+ZXJyb3JNZXNzYWdlIGhlcmUuCiAgICAtKyAqIEhlbHBlciBm b3IgaGFuZGxpbmcgZmxvdyBmYWlsdXJlcy4gSWYgdGhlIGltcGxlbWVudGF0aW9uIHB1dCBhbnl0 aGluZyBpbnRvCiAgICAtKyAqIHJlcXVlc3QtPmVycm9yLCBpdCdzIGFkZGVkIHRvIGNvbm4tPmVy cm9yTWVzc2FnZSBoZXJlLgogICAgKyAgKiBpdCdzIGFkZGVkIHRvIGNvbm4tPmVycm9yTWVzc2Fn ZSBoZXJlLgogICAgICAgKi8KICAgICAgc3RhdGljIHZvaWQKICAgICAtcmVwb3J0X3VzZXJfZmxv d19lcnJvcihQR2Nvbm4gKmNvbm4sIGNvbnN0IFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJlcXVl c3QpCjY6ICBkZDQ5MTU0MWEwMSAhIDY6ICA0MTEzMjk5MWJiNCBsaWJwcS1vYXV0aDogTmV2ZXIg bGluayBhZ2FpbnN0IGxpYnBxJ3MgZW5jb2RpbmcgZnVuY3Rpb25zCiAgICBAQCBDb21taXQgbWVz c2FnZQogICAgICAgICBkZXBlbmRlbmN5IG9uIHRoZSBleHBvcnRlZCBBUElzIHdpbGwgc2ltcGx5 IGZhaWwgdG8gbGluayB0aGUgc2hhcmVkCiAgICAgICAgIG1vZHVsZS4KICAgICAKICAgICsgICAg UmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+CiAgICArICAgIERp c2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FPWW1pJTJCbXJHZyUyQm5fWDJNT0xnZVdj ajN2X00wMGdSOHV6X0Q3bU04eiUzRGRYMUpZVmJnJTQwbWFpbC5nbWFpbC5jb20KICAgICsKICAg ICAgIyMgc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvbWVzb24uYnVpbGQgIyMKICAgICBAQCBz cmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9tZXNvbi5idWlsZDogbGlicHFfb2F1dGhfc291cmNl cyA9IGZpbGVzKAogICAgICBsaWJwcV9vYXV0aF9zb19zb3VyY2VzID0gZmlsZXMoCjc6ICBlZGEw YzZmOTA1OSAhIDc6ICBlMjBiNTU1YWJhNSBXSVA6IEludHJvZHVjZSB0aGlyZC1wYXJ0eSBPQXV0 aCBmbG93IHBsdWdpbnM/CiAgICBAQCBDb21taXQgbWVzc2FnZQogICAgICAgICAgICAgICBuZXcg dnVsbmVyYWJpbGl0aWVzCiAgICAgICAgIFRPRE86IGhvdyBoYXJkIHdvdWxkIGl0IGJlIHRvIHN1 cHBvcnQgV2luZG93cyBoZXJlPwogICAgIAogICAgKyAgICBEaXNjdXNzaW9uOiBodHRwczovL3Bv c3Rnci5lcy9tL0NBT1ltaSUyQm1yR2clMkJuX1gyTU9MZ2VXY2ozdl9NMDBnUjh1el9EN21NOHol M0RkWDFKWVZiZyU0MG1haWwuZ21haWwuY29tCiAgICArCiAgICAgICMjIHNyYy9pbnRlcmZhY2Vz L2xpYnBxL21lc29uLmJ1aWxkICMjCiAgICAgQEAgc3JjL2ludGVyZmFjZXMvbGlicHEvbWVzb24u YnVpbGQ6IHBrZ2NvbmZpZy5nZW5lcmF0ZSgKICAgICAgaW5zdGFsbF9oZWFkZXJzKAogICAgQEAg c3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvdC8wMDJfY2xpZW50LnBsOiBzdWIgdGVz dAogICAgICAKICAgICAgdGVzdCgKICAgICBAQCBzcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlk YXRvci90LzAwMl9jbGllbnQucGw6IHRlc3QoCiAgICAtICMgTWFrZSBzdXJlIHRoZSB2MSBob29r IGNvbnRpbnVlcyB0byB3b3JrLiAqLwogICAgKyAjIE1ha2Ugc3VyZSB0aGUgdjEgaG9vayBjb250 aW51ZXMgdG8gd29yay4KICAgICAgdGVzdCgKICAgICAgCSJ2MSBzeW5jaHJvbm91cyBob29rIGNh biBwcm92aWRlIGEgdG9rZW4iLAogICAgICsJaG9va19vbmx5ID0+IDEsICAgICMgcGx1Z2lucyBk b24ndCBzdXBwb3J0IEFQSSB2MQo= --000000000000f056560646153aa9 Content-Type: application/octet-stream; name="v2-0001-libpq-fe.h-Don-t-claim-SOCKTYPE-in-the-global-nam.patch" Content-Disposition: attachment; filename="v2-0001-libpq-fe.h-Don-t-claim-SOCKTYPE-in-the-global-nam.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj8vatqj1 RnJvbSA4MzEyYmYzMDcyNjAxZjAzZWVjZjU1ZDMxZmJhMzU4NGQyMTQ4NTRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogTW9uLCAxIERlYyAyMDI1IDEwOjUwOjQyIC0wODAwClN1YmplY3Q6 IFtQQVRDSCB2MiAxLzddIGxpYnBxLWZlLmg6IERvbid0IGNsYWltIFNPQ0tUWVBFIGluIHRoZSBn bG9iYWwKIG5hbWVzcGFjZQoKVGhlIGRlZmluaXRpb24gb2YgUEdvYXV0aEJlYXJlclJlcXVlc3Qg dXNlcyBhIHRlbXBvcmFyeSBTT0NLVFlQRSBtYWNybwp0byBoaWRlIHRoZSBkaWZmZXJlbmNlIGJl dHdlZW4gV2luZG93cyBhbmQgQmVya2VsZXkgc29ja2V0IGhhbmRsZXMsCnNpbmNlIHdlIGRvbid0 IHN1cmZhY2UgcGdzb2NrZXQgaW4gb3VyIHB1YmxpYyBBUEkuIFRoaXMgbWFjcm8gZG9lc24ndApu ZWVkIHRvIGVzY2FwZSB0aGUgaGVhZGVyLCBiZWNhdXNlIGltcGxlbWVudGVycyB3aWxsIGNob29z ZSB0aGUgY29ycmVjdApzb2NrZXQgdHlwZSBiYXNlZCBvbiB0aGVpciBwbGF0Zm9ybSwgc28gSSAj dW5kZWYnZCBpdCBpbW1lZGlhdGVseSBhZnRlcgp1c2UuCgpJIGRpZG4ndCBuYW1lc3BhY2UgdGhh dCBoZWxwZXIsIHRob3VnaCwgc28gaWYgYW55b25lIGVsc2UgbmVlZHMgYQpTT0NLVFlQRSBtYWNy bywgbGlicHEtZmUuaCB3aWxsIG5vdyB1bmhlbHBmdWxseSBnZXQgcmlkIG9mIGl0LiBUaGlzCmRv ZXNuJ3Qgc2VlbSB0b28gZmFyLWZldGNoZWQsIGdpdmVuIGl0cyBwcm94aW1pdHkgdG8gZXhpc3Rp bmcgUE9TSVgKbWFjcm8gbmFtZXMuCgpBZGQgYSBQUV8gcHJlZml4IHRvIGF2b2lkIGNvbGxpc2lv bnMsIHVwZGF0ZSBhbmQgaW1wcm92ZSB0aGUgc3Vycm91bmRpbmcKZG9jdW1lbnRhdGlvbiwgYW5k IGJhY2twYXRjaC4KClJldmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29t PgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBT1ltaSUyQm1yR2clMkJuX1gyTU9M Z2VXY2ozdl9NMDBnUjh1el9EN21NOHolM0RkWDFKWVZiZyU0MG1haWwuZ21haWwuY29tCkJhY2tw YXRjaC10aHJvdWdoOiAxOAotLS0KIGRvYy9zcmMvc2dtbC9saWJwcS5zZ21sICAgICAgICAgfCAx MCArKysrKysrLS0tCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oIHwgMTcgKysrKysr KysrKysrLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbGlicHEuc2dtbCBiL2RvYy9zcmMvc2dt bC9saWJwcS5zZ21sCmluZGV4IDdhYjY3OWE3NjVkLi43ZDA1OTM4ZmVkYSAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKQEAg LTEwNDIyLDEwICsxMDQyMiwxNCBAQCB0eXBlZGVmIHN0cnVjdCBQR29hdXRoQmVhcmVyUmVxdWVz dAogCiAgICAgLyogSG9vayBvdXRwdXRzICovCiAKLSAgICAvKiBDYWxsYmFjayBpbXBsZW1lbnRp bmcgYSBjdXN0b20gYXN5bmNocm9ub3VzIE9BdXRoIGZsb3cuICovCisgICAgLyoKKyAgICAgKiBD YWxsYmFjayBpbXBsZW1lbnRpbmcgYSBjdXN0b20gYXN5bmNocm9ub3VzIE9BdXRoIGZsb3cuIFRo ZSBzaWduYXR1cmUgaXMKKyAgICAgKiBwbGF0Zm9ybS1kZXBlbmRlbnQ6IFBRX1NPQ0tUWVBFIGlz IFNPQ0tFVCBvbiBXaW5kb3dzLCBhbmQgaW50IGV2ZXJ5d2hlcmUKKyAgICAgKiBlbHNlLgorICAg ICAqLwogICAgIFBvc3RncmVzUG9sbGluZ1N0YXR1c1R5cGUgKCphc3luYykgKFBHY29ubiAqY29u biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgUEdvYXV0 aEJlYXJlclJlcXVlc3QgKnJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU09DS1RZUEUgKmFsdHNvY2spOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFBRX1NPQ0tUWVBFICphbHRzb2NrKTsKIAogICAgIC8qIENhbGxiYWNrIHRv IGNsZWFuIHVwIGN1c3RvbSBhbGxvY2F0aW9ucy4gKi8KICAgICB2b2lkICAgICAgICAoKmNsZWFu dXApIChQR2Nvbm4gKmNvbm4sIHN0cnVjdCBQR29hdXRoQmVhcmVyUmVxdWVzdCAqcmVxdWVzdCk7 CkBAIC0xMDQ4Miw3ICsxMDQ4Niw3IEBAIHR5cGVkZWYgc3RydWN0IFBHb2F1dGhCZWFyZXJSZXF1 ZXN0CiAgICAgICAgICBob29rLiBXaGVuIHRoZSBjYWxsYmFjayBjYW5ub3QgbWFrZSBmdXJ0aGVy IHByb2dyZXNzIHdpdGhvdXQgYmxvY2tpbmcsCiAgICAgICAgICBpdCBzaG91bGQgcmV0dXJuIGVp dGhlciA8c3ltYm9sPlBHUkVTX1BPTExJTkdfUkVBRElORzwvc3ltYm9sPiBvcgogICAgICAgICAg PHN5bWJvbD5QR1JFU19QT0xMSU5HX1dSSVRJTkc8L3N5bWJvbD4gYWZ0ZXIgc2V0dGluZwotICAg ICAgICAgPGxpdGVyYWw+KnBnc29ja2V0PC9saXRlcmFsPiB0byB0aGUgZmlsZSBkZXNjcmlwdG9y IHRoYXQgd2lsbCBiZSBtYXJrZWQKKyAgICAgICAgIDxsaXRlcmFsPiphbHRzb2NrPC9saXRlcmFs PiB0byB0aGUgZmlsZSBkZXNjcmlwdG9yIHRoYXQgd2lsbCBiZSBtYXJrZWQKICAgICAgICAgIHJl YWR5IHRvIHJlYWQvd3JpdGUgd2hlbiBwcm9ncmVzcyBjYW4gYmUgbWFkZSBhZ2Fpbi4gKFRoaXMg ZGVzY3JpcHRvcgogICAgICAgICAgaXMgdGhlbiBwcm92aWRlZCB0byB0aGUgdG9wLWxldmVsIHBv bGxpbmcgbG9vcCB2aWEKICAgICAgICAgIDxmdW5jdGlvbj5QUXNvY2tldCgpPC9mdW5jdGlvbj4u KSBSZXR1cm4gPHN5bWJvbD5QR1JFU19QT0xMSU5HX09LPC9zeW1ib2w+CmRpZmYgLS1naXQgYS9z cmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGli cHEtZmUuaAppbmRleCAwODUyNTg0ZWRhZS4uODc3YTY0ODNiMzQgMTAwNjQ0Ci0tLSBhL3NyYy9p bnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmgKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGli cHEtZmUuaApAQCAtNzM4LDExICs3MzgsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgX1BHcHJvbXB0T0F1 dGhEZXZpY2UKIAlpbnQJCQlleHBpcmVzX2luOwkJLyogc2Vjb25kcyB1bnRpbCB1c2VyIGNvZGUg ZXhwaXJlcyAqLwogfSBQR3Byb21wdE9BdXRoRGV2aWNlOwogCi0vKiBmb3IgUEdvYXV0aEJlYXJl clJlcXVlc3QuYXN5bmMoKSAqLworLyoKKyAqIEZvciBQR29hdXRoQmVhcmVyUmVxdWVzdC5hc3lu YygpLiBUaGlzIG1hY3JvIGp1c3QgYWxsb3dzIGNsaWVudHMgdG8gYXZvaWQKKyAqIGRlcGVuZGlu ZyBvbiBsaWJwcS1pbnQuaCBvciBXaW5zb2NrIGZvciB0aGUgInNvY2tldCIgdHlwZTsgaXQncyB1 bmRlZmluZWQKKyAqIGltbWVkaWF0ZWx5IGJlbG93LgorICovCiAjaWZkZWYgX1dJTjMyCi0jZGVm aW5lIFNPQ0tUWVBFIHVpbnRwdHJfdAkJLyogYXZvaWRzIGRlcGVuZGluZyBvbiB3aW5zb2NrMi5o IGZvciBTT0NLRVQgKi8KKyNkZWZpbmUgUFFfU09DS1RZUEUgdWludHB0cl90CS8qIGF2b2lkcyBk ZXBlbmRpbmcgb24gd2luc29jazIuaCBmb3IgU09DS0VUICovCiAjZWxzZQotI2RlZmluZSBTT0NL VFlQRSBpbnQKKyNkZWZpbmUgUFFfU09DS1RZUEUgaW50CiAjZW5kaWYKIAogdHlwZWRlZiBzdHJ1 Y3QgUEdvYXV0aEJlYXJlclJlcXVlc3QKQEAgLTc2OCwxMCArNzcyLDEzIEBAIHR5cGVkZWYgc3Ry dWN0IFBHb2F1dGhCZWFyZXJSZXF1ZXN0CiAJICogYmxvY2tpbmcgZHVyaW5nIHRoZSBvcmlnaW5h bCBjYWxsIHRvIHRoZSBQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTgogCSAqIGhvb2ssIGl0 IG1heSBiZSByZXR1cm5lZCBkaXJlY3RseSwgYnV0IG9uZSBvZiByZXF1ZXN0LT5hc3luYyBvcgog CSAqIHJlcXVlc3QtPnRva2VuIG11c3QgYmUgc2V0IGJ5IHRoZSBob29rLgorCSAqCisJICogVGhl IChQUV9TT0NLVFlQRSAqKSBpbiB0aGUgc2lnbmF0dXJlIGlzIGEgcGxhY2Vob2xkZXIgZm9yIHRo ZSBwbGF0Zm9ybSdzCisJICogbmF0aXZlIHNvY2tldCB0eXBlOiAoU09DS0VUICopIG9uIFdpbmRv d3MsIGFuZCAoaW50ICopIGV2ZXJ5d2hlcmUgZWxzZS4KIAkgKi8KIAlQb3N0Z3Jlc1BvbGxpbmdT dGF0dXNUeXBlICgqYXN5bmMpIChQR2Nvbm4gKmNvbm4sCiAJCQkJCQkJCQkJc3RydWN0IFBHb2F1 dGhCZWFyZXJSZXF1ZXN0ICpyZXF1ZXN0LAotCQkJCQkJCQkJCVNPQ0tUWVBFICogYWx0c29jayk7 CisJCQkJCQkJCQkJUFFfU09DS1RZUEUgKiBhbHRzb2NrKTsKIAogCS8qCiAJICogQ2FsbGJhY2sg dG8gY2xlYW4gdXAgY3VzdG9tIGFsbG9jYXRpb25zLiBBIGhvb2sgaW1wbGVtZW50YXRpb24gbWF5 IHVzZQpAQCAtNzk4LDcgKzgwNSw3IEBAIHR5cGVkZWYgc3RydWN0IFBHb2F1dGhCZWFyZXJSZXF1 ZXN0CiAJdm9pZAkgICAqdXNlcjsKIH0gUEdvYXV0aEJlYXJlclJlcXVlc3Q7CiAKLSN1bmRlZiBT T0NLVFlQRQorI3VuZGVmIFBRX1NPQ0tUWVBFCiAKIGV4dGVybiBjaGFyICpQUWVuY3J5cHRQYXNz d29yZChjb25zdCBjaGFyICpwYXNzd2QsIGNvbnN0IGNoYXIgKnVzZXIpOwogZXh0ZXJuIGNoYXIg KlBRZW5jcnlwdFBhc3N3b3JkQ29ubihQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnBhc3N3ZCwg Y29uc3QgY2hhciAqdXNlciwgY29uc3QgY2hhciAqYWxnb3JpdGhtKTsKLS0gCjIuMzQuMQoK --000000000000f056560646153aa9 Content-Type: application/octet-stream; name="v2-0002-libpq-oauth-use-correct-c_args-in-meson.build.patch" Content-Disposition: attachment; filename="v2-0002-libpq-oauth-use-correct-c_args-in-meson.build.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj8vavjr2 RnJvbSA4OTk1OTdkNTc3N2FkMGI0MDE3M2E5ZTYzMGQyYTllMjU0MWY3NDBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogV2VkLCAzIERlYyAyMDI1IDA4OjU1OjUxIC0wODAwClN1YmplY3Q6 IFtQQVRDSCB2MiAyLzddIGxpYnBxLW9hdXRoOiB1c2UgY29ycmVjdCBjX2FyZ3MgaW4gbWVzb24u YnVpbGQKCkNvcHktcGFzdGUgYnVnIGZyb20gYjA2MzViZmRhOiBsaWJwcS1vYXV0aC5zbyB3YXMg YmVpbmcgYnVpbHQgd2l0aApsaWJwcV9zb19jX2FyZ3MsIHJhdGhlciB0aGFuIGxpYnBxX29hdXRo X3NvX2NfYXJncy4gKEF0IHRoZSBtb21lbnQsIHRoZQp0d28gbGlzdHMgYXJlIGlkZW50aWNhbCwg YnV0IHRoYXQgd29uJ3QgYmUgdHJ1ZSBmb3JldmVyLikKClJldmlld2VkLWJ5OiBDaGFvIExpIDxs aS5ldmFuLmNoYW9AZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NB T1ltaSUyQm1yR2clMkJuX1gyTU9MZ2VXY2ozdl9NMDBnUjh1el9EN21NOHolM0RkWDFKWVZiZyU0 MG1haWwuZ21haWwuY29tCkJhY2twYXRjaC10aHJvdWdoOiAxOAotLS0KIHNyYy9pbnRlcmZhY2Vz L2xpYnBxLW9hdXRoL21lc29uLmJ1aWxkIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEt b2F1dGgvbWVzb24uYnVpbGQgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9tZXNvbi5idWls ZAppbmRleCA1MDVlMTY3MWI4Ni4uODgxZTNmMjRmMTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZh Y2VzL2xpYnBxLW9hdXRoL21lc29uLmJ1aWxkCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9h dXRoL21lc29uLmJ1aWxkCkBAIC00MCw3ICs0MCw3IEBAIGxpYnBxX29hdXRoX25hbWUgPSAnbGli cHEtb2F1dGgtQDBAJy5mb3JtYXQocGdfdmVyc2lvbl9tYWpvcikKIGxpYnBxX29hdXRoX3NvID0g c2hhcmVkX21vZHVsZShsaWJwcV9vYXV0aF9uYW1lLAogICBsaWJwcV9vYXV0aF9zb3VyY2VzICsg bGlicHFfb2F1dGhfc29fc291cmNlcywKICAgaW5jbHVkZV9kaXJlY3RvcmllczogW2xpYnBxX29h dXRoX2luYywgcG9zdGdyZXNfaW5jXSwKLSAgY19hcmdzOiBsaWJwcV9zb19jX2FyZ3MsCisgIGNf YXJnczogbGlicHFfb2F1dGhfc29fY19hcmdzLAogICBjX3BjaDogcGNoX3Bvc3RncmVzX2ZlX2gs CiAgIGRlcGVuZGVuY2llczogW2Zyb250ZW5kX3NobGliX2NvZGUsIGxpYnBxLCBsaWJwcV9vYXV0 aF9kZXBzXSwKICAgbGlua19kZXBlbmRzOiBleHBvcnRfZmlsZSwKLS0gCjIuMzQuMQoK --000000000000f056560646153aa9 Content-Type: application/octet-stream; name="v2-0003-oauth_validator-Avoid-races-in-log_check.patch" Content-Disposition: attachment; filename="v2-0003-oauth_validator-Avoid-races-in-log_check.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj8vax9b3 RnJvbSA5NTNjNzQzZjY5MjZhNjM4YTY4ODhkMDBlMzNjNzU5MmM2NjBjOWUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVGh1LCA0IERlYyAyMDI1IDE2OjM0OjA5IC0wODAwClN1YmplY3Q6 IFtQQVRDSCB2MiAzLzddIG9hdXRoX3ZhbGlkYXRvcjogQXZvaWQgcmFjZXMgaW4gbG9nX2NoZWNr KCkKCkNvbW1pdCBlMGYzNzNlZTQgZml4ZWQgdXAgcmFjZXMgaW4gQ2x1c3Rlcjo6Y29ubmVjdF9m YWlscyB3aGVuIHVzaW5nCmxvZ19saWtlLiB0LzAwMl9jbGllbnQucGwgZGlkbid0IGdldCB0aGUg bWVtbywgdGhvdWdoLCBiZWNhdXNlIGl0CmRvZXNuJ3QgdXNlIFRlc3Q6OkNsdXN0ZXIgdG8gcGVy Zm9ybSBpdHMgY3VzdG9tIGhvb2sgdGVzdHMuIChUaGlzIGlzCnByb2JhYmx5IG5vdCBhbiBpc3N1 ZSBhdCB0aGUgbW9tZW50LCBzaW5jZSB0aGUgbG9nIGNoZWNrIGlzIG9ubHkgZG9uZQphZnRlciBh dXRoZW50aWNhdGlvbiBzdWNjZXNzIGFuZCBub3QgZmFpbHVyZSwgYnV0IHRoZXJlJ3Mgbm8gcmVh c29uIHRvCndhaXQgZm9yIHNvbWVvbmUgdG8gaGl0IGl0LikKCkludHJvZHVjZSB0aGUgZml4LCBi YXNlZCBvbiBkZWJ1ZzIgbG9nZ2luZywgdG8gaXRzIHVzZSBvZiBsb2dfY2hlY2soKSBhcwp3ZWxs LCBhbmQgbW92ZSB0aGUgbG9naWMgaW50byB0aGUgdGVzdCgpIGhlbHBlciBzbyB0aGF0IGFueSBh ZGRpdGlvbnMKZG9uJ3QgbmVlZCB0byBjb250aW51YWxseSBkdXBsaWNhdGUgaXQuCgpSZXZpZXdl ZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6 Ly9wb3N0Z3IuZXMvbS9DQU9ZbWklMkJtckdnJTJCbl9YMk1PTGdlV2NqM3ZfTTAwZ1I4dXpfRDdt TTh6JTNEZFgxSllWYmclNDBtYWlsLmdtYWlsLmNvbQpCYWNrcGF0Y2gtdGhyb3VnaDogMTgKLS0t CiAuLi4vbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvdC8wMDJfY2xpZW50LnBsICAgfCAyNCArKysr KysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgNiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci90 LzAwMl9jbGllbnQucGwgYi9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci90LzAwMl9j bGllbnQucGwKaW5kZXggYWFjMDIyMGQyMTUuLmU2YzkxZmM5MTFjIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci90LzAwMl9jbGllbnQucGwKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvdC8wMDJfY2xpZW50LnBsCkBAIC0yOSw2ICsyOSw4 IEBAICRub2RlLT5pbml0OwogJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAi bG9nX2Nvbm5lY3Rpb25zID0gYWxsXG4iKTsKICRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywKIAkib2F1dGhfdmFsaWRhdG9yX2xpYnJhcmllcyA9ICd2YWxpZGF0b3InXG4iKTsK KyMgTmVlZGVkIHRvIGluc3BlY3QgcG9zdG1hc3RlciBsb2cgYWZ0ZXIgY29ubmVjdGlvbiBmYWls dXJlOgorJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNz YWdlcyA9IGRlYnVnMiIpOwogJG5vZGUtPnN0YXJ0OwogCiAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICdDUkVBVEUgVVNFUiB0ZXN0OycpOwpAQCAtNDcsNyArNDksNyBAQCBsb2NhbCBhbGwg dGVzdCBvYXV0aCBpc3N1ZXI9IiRpc3N1ZXIiIHNjb3BlPSIkc2NvcGUiCiB9KTsKICRub2RlLT5y ZWxvYWQ7CiAKLW15ICRsb2dfc3RhcnQgPSAkbm9kZS0+d2FpdF9mb3JfbG9nKHFyL3JlbG9hZGlu ZyBjb25maWd1cmF0aW9uIGZpbGVzLyk7Ciskbm9kZS0+d2FpdF9mb3JfbG9nKHFyL3JlbG9hZGlu ZyBjb25maWd1cmF0aW9uIGZpbGVzLyk7CiAKICRFTlZ7UEdPQVVUSERFQlVHfSA9ICJVTlNBRkUi OwogCkBAIC03Myw2ICs3NSw3IEBAIHN1YiB0ZXN0CiAJbXkgQGNtZCA9ICgib2F1dGhfaG9va19j bGllbnQiLCBAeyRmbGFnc30sICRjb21tb25fY29ubnN0cik7CiAJbm90ZSAicnVubmluZyAnIiAu IGpvaW4oIicgJyIsIEBjbWQpIC4gIiciOwogCisJbXkgJGxvZ19zdGFydCA9IC1zICRub2RlLT5s b2dmaWxlOwogCW15ICgkc3Rkb3V0LCAkc3RkZXJyKSA9IHJ1bl9jb21tYW5kKFxAY21kKTsKIAog CWlmIChkZWZpbmVkKCRwYXJhbXN7ZXhwZWN0ZWRfc3Rkb3V0fSkpCkBAIC04OCw2ICs5MSwxOCBA QCBzdWIgdGVzdAogCXsKIAkJaXMoJHN0ZGVyciwgIiIsICIkdGVzdF9uYW1lOiBubyBzdGRlcnIi KTsKIAl9CisKKwlpZiAoZGVmaW5lZCgkcGFyYW1ze2xvZ19saWtlfSkpCisJeworCQkjIFNlZSBD bHVzdGVyOjpjb25uZWN0X2ZhaWxzKCkuIFRvIGF2b2lkIHJhY2VzLCB3ZSBoYXZlIHRvIHdhaXQg Zm9yIHRoZQorCQkjIHBvc3RtYXN0ZXIgdG8gZmx1c2ggdGhlIGxvZyBmb3IgdGhlIGZpbmlzaGVk IGNvbm5lY3Rpb24uCisJCSRub2RlLT53YWl0X2Zvcl9sb2coCisJCQlxci9ERUJVRzogICg/OjAw MDAwOiApP2ZvcmtlZCBuZXcgY2xpZW50IGJhY2tlbmQsIHBpZD0oXGQrKSBzb2NrZXQuKkRFQlVH OiAgKD86MDAwMDA6ICk/Y2xpZW50IGJhY2tlbmQgXChQSUQgXDFcKSBleGl0ZWQgd2l0aCBleGl0 IGNvZGUgXGQvcywKKwkJCSRsb2dfc3RhcnQpOworCisJCSRub2RlLT5sb2dfY2hlY2soIiR0ZXN0 X25hbWU6IGxvZyBtYXRjaGVzIiwKKwkJCSRsb2dfc3RhcnQsIGxvZ19saWtlID0+ICRwYXJhbXN7 bG9nX2xpa2V9KTsKKwl9CiB9CiAKIHRlc3QoCkBAIC05NywxMSArMTEyLDggQEAgdGVzdCgKIAkJ Ii0tZXhwZWN0ZWQtdXJpIiwgIiRpc3N1ZXIvLndlbGwta25vd24vb3BlbmlkLWNvbmZpZ3VyYXRp b24iLAogCQkiLS1leHBlY3RlZC1zY29wZSIsICRzY29wZSwKIAldLAotCWV4cGVjdGVkX3N0ZG91 dCA9PiBxci9jb25uZWN0aW9uIHN1Y2NlZWRlZC8pOwotCi0kbm9kZS0+bG9nX2NoZWNrKCJ2YWxp ZGF0b3IgcmVjZWl2ZXMgY29ycmVjdCB0b2tlbiIsCi0JJGxvZ19zdGFydCwKLQlsb2dfbGlrZSA9 PiBbIHFyL29hdXRoX3ZhbGlkYXRvcjogdG9rZW49Im15LXRva2VuIiwgcm9sZT0iJHVzZXIiLywg XSk7CisJZXhwZWN0ZWRfc3Rkb3V0ID0+IHFyL2Nvbm5lY3Rpb24gc3VjY2VlZGVkLywKKwlsb2df bGlrZSA9PiBbcXIvb2F1dGhfdmFsaWRhdG9yOiB0b2tlbj0ibXktdG9rZW4iLCByb2xlPSIkdXNl ciIvXSk7CiAKIGlmICgkRU5We3dpdGhfbGliY3VybH0gbmUgJ3llcycpCiB7Ci0tIAoyLjM0LjEK Cg== --000000000000f056560646153aa9 Content-Type: application/octet-stream; name="v2-0004-libpq-Introduce-PQAUTHDATA_OAUTH_BEARER_TOKEN_V2.patch" Content-Disposition: attachment; filename="v2-0004-libpq-Introduce-PQAUTHDATA_OAUTH_BEARER_TOKEN_V2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj8vaz0r4 RnJvbSAzYzA0N2U2Y2YyNDI5NzE1YTNkYWUxN2QzNzQxOGJlOWJmZDVmYzFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogTW9uLCAxIERlYyAyMDI1IDE1OjA3OjI2IC0wODAwClN1YmplY3Q6 IFtQQVRDSCB2MiA0LzddIGxpYnBxOiBJbnRyb2R1Y2UgUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJf VE9LRU5fVjIKCkZvciB0aGUgbGlicHEtb2F1dGggbW9kdWxlIHRvIGV2ZW50dWFsbHkgbWFrZSB1 c2Ugb2YgdGhlClBHb2F1dGhCZWFyZXJSZXF1ZXN0IEFQSSwgaXQgbmVlZHMgc29tZSBhZGRpdGlv bmFsIGZ1bmN0aW9uYWxpdHk6IHRoZQpkZXJpdmVkIElzc3VlciBJRCBmb3IgdGhlIGF1dGhvcml6 YXRpb24gc2VydmVyIG5lZWRzIHRvIGJlIHByb3ZpZGVkIGJ5CmxpYnBxLCBhbmQgZXJyb3IgbWVz c2FnZXMgbmVlZCB0byBiZSBidWlsdCB3aXRob3V0IHJlbHlpbmcgb24gUEdjb25uCmludGVybmFs cy4gVGhlc2UgZmVhdHVyZXMgc2VlbSB1c2VmdWwgZm9yIGFwcGxpY2F0aW9uIGhvb2tzLCB0b28s IHNvCnRoYXQgdGhleSBkb24ndCBlYWNoIGhhdmUgdG8gcmVpbnZlbnQgdGhlIHdoZWVsLgoKVGhl IG9yaWdpbmFsIHBsYW4gd2FzIGZvciBhZGRpdGlvbnMgdG8gUEdvYXV0aEJlYXJlclJlcXVlc3Qg dG8gYmUgbWFkZQp3aXRob3V0IGEgdmVyc2lvbiBidW1wIHRvIHRoZSBQR2F1dGhEYXRhIHR5cGUs IGFuZCB0aGF0IGFwcGxpY2F0aW9ucwp3b3VsZCBzaW1wbHkgY2hlY2sgYSBMSUJQUV9IQVNfKiBt YWNybyBhdCBjb21waWxlIHRpbWUgdG8gZGVjaWRlIHdoZXRoZXIKdGhleSBjb3VsZCB1c2UgdGhl IG5ldyBmZWF0dXJlcy4gVGhhdCB0aGVvcmV0aWNhbGx5IHdvcmtzIGZvcgphcHBsaWNhdGlvbnMg bGlua2VkIGFnYWluc3QgbGlicHEsIHNpbmNlIGl0J3Mgbm90IHNhZmUgdG8gZG93bmdyYWRlCmxp YnBxIGZyb20gdGhlIHZlcnNpb24geW91J3ZlIGNvbXBpbGVkIGFnYWluc3QuCgpUaGF0IHN0cmF0 ZWd5IHdvbid0IHdvcmsgZm9yIHBsdWdpbnMsIHRob3VnaCwgZHVlIHRvIGEgY29tcGxpY2F0aW9u CmZpcnN0IG5vdGljZWQgZHVyaW5nIHRoZSBsaWJwcS1vYXV0aCBtb2R1bGUgc3BsaXQ6IGl0J3Mg bm9ybWFsIGZvciBhCnBsdWdpbiBvbiBkaXNrIHRvIGJlICpuZXdlciogdGhhbiB0aGUgbGlicHEg dGhhdCdzIGxvYWRpbmcgaXQsIGJlY2F1c2UKeW91IG1pZ2h0IGhhdmUgdXBncmFkZWQgeW91ciBp bnN0YWxsYXRpb24gd2hpbGUgYW4gYXBwbGljYXRpb24gd2FzCnJ1bm5pbmcuIChQdXQgYW5vdGhl ciB3YXk6IGEgcGx1Z2luIGFyY2hpdGVjdHVyZSBjYXVzZXMgdGhlIGNvbXBpbGUtdGltZQphbmQg cnVuLXRpbWUgZGVwZW5kZW5jeSBhcnJvd3MgdG8gcG9pbnQgaW4gb3Bwb3NpdGUgZGlyZWN0aW9u cywgc28KcGx1Z2lucyB3b24ndCBiZSBhYmxlIHRvIHJlbHkgb24gdGhlIExJQlBRX0hBU18qIG1h Y3JvcyB0byBkZXRlcm1pbmUKd2hhdCBBUElzIGFyZSBhdmFpbGFibGUgdG8gdGhlbS4pCgooVE9E TzogQXJlIHRoZXJlIGltcGxpY2F0aW9ucyBmb3Igb3VyIHVzZSBvZiBSVExEX05PVyBhdCBkbG9w ZW4oKSB0aW1lPwpDYW4gdGhpcyBiZSBpbXByb3ZlZD8pCgpJbnN0ZWFkLCBhZGQgYSBuZXcgc3Ry dWN0IHdoaWNoIGV4dGVuZHMgdGhlICJ2MSIgUEdvYXV0aEJlYXJlclJlcXVlc3QuCldoZW4gYW4g YXBwbGljYXRpb24gaG9vayByZWNlaXZlcyBQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTl9W MiwgaXQKbWF5IHNhZmVseSBkb3duY2FzdCB0aGUgcmVxdWVzdCBwb2ludGVyIGl0IHJlY2VpdmVz IGluIGl0cyBjYWxsYmFja3MgdG8KbWFrZSB1c2Ugb2YgdGhlIG5ldyBmdW5jdGlvbmFsaXR5LiBs aWJwcSB3aWxsIGZpcnN0IHRyeSB0aGUgbmV3IHZlcnNpb24sCnRoZW4gZmFsbCBiYWNrIHRvIHRo ZSBvbGQgYmVmb3JlIGdpdmluZyB1cC4KClRPRE86IEVycm9yIGhhbmRsaW5nIGludHJvZHVjZXMg YSBkZXBlbmRlbmN5IG9uIHBxZXhwYnVmZmVyLmgsIHdoaWNoIGlzCiAgICAgIHRlY2huaWNhbGx5 IGNvbnNpZGVyZWQgaW50ZXJuYWwuLi4gYnV0IHdlIGV4cG9ydCB0aGUgQUJJIGZvciBwc3FsLAog ICAgICBzbyBpcyBpdCByZWFsbHkgaW50ZXJuYWwgYXQgdGhpcyBwb2ludD8KVE9ETzogQ291bGQg d2UganVzdCBhZGQgdG8gdGhlIGVuZCBvZiBQR29hdXRoQmVhcmVyUmVxdWVzdCwgYW5kIHRlbGwK ICAgICAgdXNlcnMgbm90IHRvIHVzZSB0aGUgYWRkaXRpb25hbCBmaWVsZHMgaWYgdGhleSBoYXZl IHZlcnNpb24gMT8KClJldmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29t PgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBT1ltaSUyQm1yR2clMkJuX1gyTU9M Z2VXY2ozdl9NMDBnUjh1el9EN21NOHolM0RkWDFKWVZiZyU0MG1haWwuZ21haWwuY29tCi0tLQog ZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwgICAgICAgICAgICAgICAgICAgICAgIHwgIDg3ICsrKysr KysrKysrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAg IHwgICAxICsKIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmggICAgICAgICAgICAgICB8 ICAzMiArKysrKy0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYyAgICAgICAg ICB8IDEwNCArKysrKysrKysrKysrLS0tLS0KIC4uLi9vYXV0aF92YWxpZGF0b3Ivb2F1dGhfaG9v a19jbGllbnQuYyAgICAgICB8ICA5NyArKysrKysrKysrKysrKystCiAuLi4vbW9kdWxlcy9vYXV0 aF92YWxpZGF0b3IvdC8wMDJfY2xpZW50LnBsICAgfCAgMzggKysrKysrLQogNiBmaWxlcyBjaGFu Z2VkLCAzMjQgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL2xpYnBxLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbGlicHEuc2dtbAppbmRleCA3ZDA1 OTM4ZmVkYS4uNTRiNTM5ZDg2NDcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sCkBAIC0xMDM1MCw2ICsxMDM1MCw3IEBAIFBR YXV0aERhdGFIb29rX3R5cGUgUFFnZXRBdXRoRGF0YUhvb2sodm9pZCk7CiAgICAgICAgIDxpbmRl eHRlcm0+PHByaW1hcnk+UFFBVVRIREFUQV9QUk9NUFRfT0FVVEhfREVWSUNFPC9wcmltYXJ5Pjwv aW5kZXh0ZXJtPgogICAgICAgIDwvdGVybT4KICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxw YXJhPjxlbXBoYXNpcz5BdmFpbGFibGUgaW4gUG9zdGdyZVNRTCAxOCBhbmQgbGF0ZXIuPC9lbXBo YXNpcz48L3BhcmE+CiAgICAgICAgIDxwYXJhPgogICAgICAgICAgUmVwbGFjZXMgdGhlIGRlZmF1 bHQgdXNlciBwcm9tcHQgZHVyaW5nIHRoZSBidWlsdGluIGRldmljZQogICAgICAgICAgYXV0aG9y aXphdGlvbiBjbGllbnQgZmxvdy4gPHJlcGxhY2VhYmxlPmRhdGE8L3JlcGxhY2VhYmxlPiBwb2lu dHMgdG8KQEAgLTEwNDAyLDYgKzEwNDAzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1BHcHJvbXB0T0F1 dGhEZXZpY2UKICAgICAgICAgPGluZGV4dGVybT48cHJpbWFyeT5QUUFVVEhEQVRBX09BVVRIX0JF QVJFUl9UT0tFTjwvcHJpbWFyeT48L2luZGV4dGVybT4KICAgICAgICA8L3Rlcm0+CiAgICAgICAg PGxpc3RpdGVtPgorICAgICAgICA8cGFyYT48ZW1waGFzaXM+QXZhaWxhYmxlIGluIFBvc3RncmVT UUwgMTggYW5kIGxhdGVyLjwvZW1waGFzaXM+PC9wYXJhPgogICAgICAgICA8cGFyYT4KICAgICAg ICAgIEFkZHMgYSBjdXN0b20gaW1wbGVtZW50YXRpb24gb2YgYSBmbG93LCByZXBsYWNpbmcgdGhl IGJ1aWx0aW4gZmxvdyBpZgogICAgICAgICAgaXQgaXMgPGxpbmsgbGlua2VuZD0iY29uZmlndXJl LW9wdGlvbi13aXRoLWxpYmN1cmwiPmluc3RhbGxlZDwvbGluaz4uCkBAIC0xMDQwOSw2ICsxMDQx MSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBfUEdwcm9tcHRPQXV0aERldmljZQogICAgICAgICAgdXNl ci9pc3N1ZXIvc2NvcGUgY29tYmluYXRpb24sIGlmIG9uZSBpcyBhdmFpbGFibGUgd2l0aG91dCBi bG9ja2luZywgb3IKICAgICAgICAgIGVsc2Ugc2V0IHVwIGFuIGFzeW5jaHJvbm91cyBjYWxsYmFj ayB0byByZXRyaWV2ZSBvbmUuCiAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPG5vdGU+CisgICAg ICAgICA8cGFyYT4KKyAgICAgICAgICBGb3IgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1 Y3RuYW1lPiByZWxlYXNlcyAxOSBhbmQgbGF0ZXIsCisgICAgICAgICAgYXBwbGljYXRpb25zIHNo b3VsZCBwcmVmZXIKKyAgICAgICAgICA8bGluayBsaW5rZW5kPSJsaWJwcS1vYXV0aC1hdXRoZGF0 YS1vYXV0aC1iZWFyZXItdG9rZW4tdjIiPjxsaXRlcmFsPlBRQVVUSERBVEFfT0FVVEhfQkVBUkVS X1RPS0VOX1YyPC9saXRlcmFsPjwvbGluaz4uCisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwv bm90ZT4KICAgICAgICAgPHBhcmE+CiAgICAgICAgICA8cmVwbGFjZWFibGU+ZGF0YTwvcmVwbGFj ZWFibGU+IHBvaW50cyB0byBhbiBpbnN0YW5jZQogICAgICAgICAgb2YgPHN5bWJvbD5QR29hdXRo QmVhcmVyUmVxdWVzdDwvc3ltYm9sPiwgd2hpY2ggc2hvdWxkIGJlIGZpbGxlZCBpbgpAQCAtMTA1 MDQsNiArMTA1MTMsODQgQEAgdHlwZWRlZiBzdHJ1Y3QgUEdvYXV0aEJlYXJlclJlcXVlc3QKICAg ICAgICAgPC9wYXJhPgogICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4K KworICAgICAgPHZhcmxpc3RlbnRyeSBpZD0ibGlicHEtb2F1dGgtYXV0aGRhdGEtb2F1dGgtYmVh cmVyLXRva2VuLXYyIj4KKyAgICAgICA8dGVybT4KKyAgICAgICAgPHN5bWJvbD5QUUFVVEhEQVRB X09BVVRIX0JFQVJFUl9UT0tFTl9WMjwvc3ltYm9sPgorICAgICAgICA8aW5kZXh0ZXJtPgorICAg ICAgICAgPHByaW1hcnk+UFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU5fVjI8L3ByaW1hcnk+ CisgICAgICAgICA8c2Vjb25kYXJ5PlBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOPC9zZWNv bmRhcnk+CisgICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgIDwvdGVybT4KKyAgICAgICA8bGlz dGl0ZW0+CisgICAgICAgIDxwYXJhPjxlbXBoYXNpcz5BdmFpbGFibGUgaW4gUG9zdGdyZVNRTCAx OSBhbmQgbGF0ZXIuPC9lbXBoYXNpcz48L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAg UHJvdmlkZXMgYWxsIHRoZSBmdW5jdGlvbmFsaXR5IG9mCisgICAgICAgICA8bGluayBsaW5rZW5k PSJsaWJwcS1vYXV0aC1hdXRoZGF0YS1vYXV0aC1iZWFyZXItdG9rZW4iPjxsaXRlcmFsPlBRQVVU SERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOPC9saXRlcmFsPjwvbGluaz4sCisgICAgICAgICBhbmQg YWRkcyB0aGUgYWJpbGl0eSB0byBzZXQgY3VzdG9tIGVycm9yIG1lc3NhZ2VzIGFuZCBpbnNwZWN0 IHRoZQorICAgICAgICAgT0F1dGggaXNzdWVyIElEIHRoYXQgdGhlIGNsaWVudCBleHBlY3RzIHRv IHVzZS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIDxyZXBsYWNl YWJsZT5kYXRhPC9yZXBsYWNlYWJsZT4gcG9pbnRzIHRvIGFuIGluc3RhbmNlCisgICAgICAgICBv ZiA8c3ltYm9sPlBHb2F1dGhCZWFyZXJSZXF1ZXN0VjI8L3N5bWJvbD4sIHdoaWNoIHNob3VsZCBi ZSBmaWxsZWQgaW4KKyAgICAgICAgIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbjoKKzxzeW5vcHNpcz4K K3R5cGVkZWYgc3RydWN0Cit7CisgICAgUEdvYXV0aEJlYXJlclJlcXVlc3QgdjE7ICAgIC8qIHNl ZSB0aGUgUEdvYXV0aEJlYXJlclJlcXVlc3Qgc3RydWN0LCBhYm92ZSAqLworCisgICAgLyogSG9v ayBpbnB1dHMgKGNvbnN0YW50IGFjcm9zcyBhbGwgY2FsbHMpICovCisgICAgY29uc3QgY2hhciAq aXNzdWVyOyAgICAgICAgICAgIC8qIHRoZSBpc3N1ZXIgaWRlbnRpZmllciAoUkZDIDkyMDcpIGlu IHVzZSAqLworCisgICAgLyogSG9vayBvdXRwdXRzICovCisKKyAgICAvKiBBbiBpbml0aWFsaXpl ZCwgZW1wdHkgYnVmZmVyIGZvciByZXBvcnRpbmcgZXJyb3JzIHdoZW4gdGhlIGZsb3cgZmFpbHMu ICovCisgICAgc3RydWN0IFBRRXhwQnVmZmVyRGF0YSAqZXJyb3I7Cit9IFBHb2F1dGhCZWFyZXJS ZXF1ZXN0VjI7Cis8L3N5bm9wc2lzPgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgor ICAgICAgICAgV2hlbiBhIDxsaXRlcmFsPlBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOX1Yy PC9saXRlcmFsPiBob29rIGlzIGluCisgICAgICAgICB1c2UsIDxhcHBsaWNhdGlvbj5saWJwcTwv YXBwbGljYXRpb24+IGFkZGl0aW9uYWxseSBndWFyYW50ZWVzIHRoYXQgdGhlCisgICAgICAgICA8 bGl0ZXJhbD5yZXF1ZXN0PC9saXRlcmFsPiBwb2ludGVyIHRoYXQgaXMgcHJvdmlkZWQgdG8gdGhl CisgICAgICAgICA8cmVwbGFjZWFibGU+djEuYXN5bmM8L3JlcGxhY2VhYmxlPiBhbmQgPHJlcGxh Y2VhYmxlPnYxLmNsZWFudXA8L3JlcGxhY2VhYmxlPgorICAgICAgICAgY2FsbGJhY2tzIG1heSBi ZSBzYWZlbHkgY2FzdCB0byA8bGl0ZXJhbD4oUEdvYXV0aEJlYXJlclJlcXVlc3RWMiZuYnNwOyop PC9saXRlcmFsPi4KKyAgICAgICAgIEltcGxlbWVudGF0aW9ucyBtdXN0IG90aGVyd2lzZSBmb2xs b3cgdGhlIHYxIEFQSSwgYXMgZGVzY3JpYmVkIGFib3ZlLAorICAgICAgICAgdXNpbmcgdGhlIDxy ZXBsYWNlYWJsZT52MTwvcmVwbGFjZWFibGU+IHN0cnVjdCBtZW1iZXIuCisgICAgICAgIDwvcGFy YT4KKyAgICAgICAgPHdhcm5pbmc+CisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBDYXN0aW5n IHRvIDxsaXRlcmFsPihQR29hdXRoQmVhcmVyUmVxdWVzdFYyJm5ic3A7Kik8L2xpdGVyYWw+IGlz CisgICAgICAgICAgPGVtcGhhc2lzPm9ubHk8L2VtcGhhc2lzPiBzYWZlIHdoZW4gdGhlIGhvb2sg dHlwZSBpcworICAgICAgICAgIDxsaXRlcmFsPlBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VO X1YyPC9saXRlcmFsPi4gQXBwbGljYXRpb25zIG1heQorICAgICAgICAgIGNyYXNoIG9yIG1pc2Jl aGF2ZSBpZiBhIGhvb2sgYXR0ZW1wdHMgdG8gdXNlIHYyIGZlYXR1cmVzIHdpdGggdGhlIHYxCisg ICAgICAgICAgaG9vayB0eXBlLgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3dhcm5pbmc+ CisgICAgICAgIDxwYXJhPgorICAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhlIGZ1bmN0aW9uYWxp dHkgb2YgdGhlIHZlcnNpb24gMSBBUEksIHRoZSB2MiBzdHJ1Y3QKKyAgICAgICAgIHByb3ZpZGVz IGFuIGFkZGl0aW9uYWwgaW5wdXQgYW5kIG91dHB1dCBmb3IgdGhlIGhvb2s6CisgICAgICAgIDwv cGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICA8cmVwbGFjZWFibGU+aXNzdWVyPC9yZXBs YWNlYWJsZT4gY29udGFpbnMgdGhlIGlzc3VlciBpZGVudGlmaWVyLCBhcworICAgICAgICAgZGVm aW5lZCBpbiA8dWxpbmsgdXJsPSJodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1s L3JmYzkyMDciPlJGQyA5MjA3PC91bGluaz4sCisgICAgICAgICB0aGF0IGlzIGluIHVzZSBmb3Ig dGhlIGN1cnJlbnQgY29ubmVjdGlvbi4gVGhpcyBpZGVudGlmaWVyIGlzCisgICAgICAgICBkZXRl cm1pbmVkIGJ5IDx4cmVmIGxpbmtlbmQ9ImxpYnBxLWNvbm5lY3Qtb2F1dGgtaXNzdWVyIi8+Lgor ICAgICAgICAgVG8gYXZvaWQgbWl4LXVwIGF0dGFja3MsIGN1c3RvbSBmbG93cyBzaG91bGQgZW5z dXJlIHRoYXQgYW55IGRpc2NvdmVyeQorICAgICAgICAgbWV0YWRhdGEgcHJvdmlkZWQgYnkgdGhl IGF1dGhvcml6YXRpb24gc2VydmVyIG1hdGNoZXMgdGhpcyBpc3N1ZXIgSUQuCisgICAgICAgIDwv cGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICA8cmVwbGFjZWFibGU+ZXJyb3I8L3JlcGxh Y2VhYmxlPiBjb250YWlucyBhbiBlbXB0eQorICAgICAgICAgPGxpdGVyYWw+UFFFeHBCdWZmZXI8 L2xpdGVyYWw+IHRoYXQgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGEgY3VzdG9tCisgICAgICAg ICBlcnJvciBtZXNzYWdlIHdoZW4gYSBmbG93IGZhaWxzLiBUaGUgbWVzc2FnZSB3aWxsIGJlIGlu Y2x1ZGVkIGFzIHBhcnQKKyAgICAgICAgIG9mIDxsaW5rIGxpbmtlbmQ9ImxpYnBxLVBRZXJyb3JN ZXNzYWdlIj48bGl0ZXJhbD5QUWVycm9yTWVzc2FnZSgpPC9saXRlcmFsPjwvbGluaz4uCisgICAg ICAgICBIb29rcyBtdXN0IG5vdCBmcmVlIG9yIHJlYXNzaWduIHRoaXMgYnVmZmVyOyBpdCBpcyBt YW5hZ2VkIGJ5CisgICAgICAgICA8YXBwbGljYXRpb24+bGlicHE8L2FwcGxpY2F0aW9uPi4gVGhl IEFQSSBmb3IgbWFuaXB1bGF0aW5nIHRoZSBlcnJvcgorICAgICAgICAgYnVmZmVyIGlzIHByb3Zp ZGVkIGluIDxsaXRlcmFsPiJpbnRlcm5hbC9wcWV4cGJ1ZmZlci5oIjwvbGl0ZXJhbD4uCisgICAg ICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisK ICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgPC9wYXJhPgogICAgPC9zZWN0Mz4KZGlmZiAtLWdp dCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKaW5kZXggMzQ1MTUzODU2NWUuLmIzY2MyNDJhNjZiIDEwMDY0NAotLS0g YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdApAQCAtMTkxNiw2ICsxOTE2LDcgQEAgUEdkYXRhVmFsdWUKIFBHbG9i amZ1bmNzCiBQR25vdGlmeQogUEdvYXV0aEJlYXJlclJlcXVlc3QKK1BHb2F1dGhCZWFyZXJSZXF1 ZXN0VjIKIFBHcGlwZWxpbmVTdGF0dXMKIFBHcHJvbXB0T0F1dGhEZXZpY2UKIFBHcmVzQXR0RGVz YwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaCBiL3NyYy9pbnRl cmZhY2VzL2xpYnBxL2xpYnBxLWZlLmgKaW5kZXggODc3YTY0ODNiMzQuLmUxMDhlNjYyOWYxIDEw MDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oCisrKyBiL3NyYy9pbnRl cmZhY2VzL2xpYnBxL2xpYnBxLWZlLmgKQEAgLTYzLDYgKzYzLDEwIEBAIGV4dGVybiAiQyIKIC8q IEluZGljYXRlcyBwcmVzZW5jZSBvZiB0aGUgUFFBVVRIREFUQV9QUk9NUFRfT0FVVEhfREVWSUNF IGF1dGhkYXRhIGhvb2sgKi8KICNkZWZpbmUgTElCUFFfSEFTX1BST01QVF9PQVVUSF9ERVZJQ0Ug MQogCisvKiBGZWF0dXJlcyBhZGRlZCBpbiBQb3N0Z3JlU1FMIHYxOTogKi8KKy8qIEluZGljYXRl cyBwcmVzZW5jZSBvZiB0aGUgUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU5fVjIgYXV0aGRh dGEgaG9vayAqLworI2RlZmluZSBMSUJQUV9IQVNfT0FVVEhfQkVBUkVSX1RPS0VOX1YyIDEKKwog LyoKICAqIE9wdGlvbiBmbGFncyBmb3IgUFFjb3B5UmVzdWx0CiAgKi8KQEAgLTE5Myw3ICsxOTcs OSBAQCB0eXBlZGVmIGVudW0KIHsKIAlQUUFVVEhEQVRBX1BST01QVF9PQVVUSF9ERVZJQ0UsIC8q IHVzZXIgbXVzdCB2aXNpdCBhIGRldmljZS1hdXRob3JpemF0aW9uCiAJCQkJCQkJCQkgKiBVUkwg Ki8KLQlQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTiwJLyogc2VydmVyIHJlcXVlc3RzIGFu IE9BdXRoIEJlYXJlciB0b2tlbiAqLworCVBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOLAkv KiBzZXJ2ZXIgcmVxdWVzdHMgYW4gT0F1dGggQmVhcmVyIHRva2VuCisJCQkJCQkJCQkgKiAodjIg aXMgcHJlZmVycmVkOyBzZWUgYmVsb3cpICovCisJUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9L RU5fVjIsCS8qIG5ld2VzdCBBUEkgZm9yIE9BdXRoIEJlYXJlciB0b2tlbnMgKi8KIH0gUEdhdXRo RGF0YTsKIAogLyogUEdjb25uIGVuY2Fwc3VsYXRlcyBhIGNvbm5lY3Rpb24gdG8gdGhlIGJhY2tl bmQuCkBAIC03MjksNiArNzM1LDcgQEAgZXh0ZXJuIGludAlQUWVudjJlbmNvZGluZyh2b2lkKTsK IAogLyogPT09IGluIGZlLWF1dGguYyA9PT0gKi8KIAorLyogQXV0aGRhdGEgZm9yIFBRQVVUSERB VEFfUFJPTVBUX09BVVRIX0RFVklDRSAqLwogdHlwZWRlZiBzdHJ1Y3QgX1BHcHJvbXB0T0F1dGhE ZXZpY2UKIHsKIAljb25zdCBjaGFyICp2ZXJpZmljYXRpb25fdXJpOwkvKiB2ZXJpZmljYXRpb24g VVJJIHRvIHZpc2l0ICovCkBAIC03NDksNiArNzU2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1BHcHJv bXB0T0F1dGhEZXZpY2UKICNkZWZpbmUgUFFfU09DS1RZUEUgaW50CiAjZW5kaWYKIAorLyogQXV0 aGRhdGEgZm9yIFBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOICovCiB0eXBlZGVmIHN0cnVj dCBQR29hdXRoQmVhcmVyUmVxdWVzdAogewogCS8qIEhvb2sgaW5wdXRzIChjb25zdGFudCBhY3Jv c3MgYWxsIGNhbGxzKSAqLwpAQCAtODA3LDYgKzgxNSwyOCBAQCB0eXBlZGVmIHN0cnVjdCBQR29h dXRoQmVhcmVyUmVxdWVzdAogCiAjdW5kZWYgUFFfU09DS1RZUEUKIAorc3RydWN0IFBRRXhwQnVm ZmVyRGF0YTsJCQkvKiBzZWUgcHFleHBidWZmZXIuaCAqLworCisvKiBBdXRoZGF0YSBmb3IgUFFB VVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU5fVjIgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisJUEdv YXV0aEJlYXJlclJlcXVlc3QgdjE7CS8qIHNlZSB0aGUgUEdvYXV0aEJlYXJlclJlcXVlc3Qgc3Ry dWN0LCBhYm92ZSAqLworCisJLyogSG9vayBpbnB1dHMgKGNvbnN0YW50IGFjcm9zcyBhbGwgY2Fs bHMpICovCisJY29uc3QgY2hhciAqaXNzdWVyOwkJCS8qIHRoZSBpc3N1ZXIgaWRlbnRpZmllciAo UkZDIDkyMDcpIGluIHVzZSwgYXMKKwkJCQkJCQkJICogZGVyaXZlZCBmcm9tIHRoZSBjb25uZWN0 aW9uJ3Mgb2F1dGhfaXNzdWVyICovCisKKwkvKiBIb29rIG91dHB1dHMgKi8KKworCS8qCisJICog QW4gaW5pdGlhbGl6ZWQsIGVtcHR5IGJ1ZmZlciBmb3IgcmVwb3J0aW5nIGVycm9ycyB3aGVuIHRo ZSBmbG93IGZhaWxzLgorCSAqIEltcGxlbWVudGF0aW9ucyBtYXkgdXNlIHRoZSBBUEkgaW4gcHFl eHBidWZmZXIuaCB0byBidWlsZCBhIGN1c3RvbQorCSAqIGVycm9yIGRlc2NyaXB0aW9uLiBJdCB3 aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBjb25uZWN0aW9uJ3MKKwkgKiBQUWVycm9yTWVzc2FnZSgp IG91dHB1dC4KKwkgKi8KKwlzdHJ1Y3QgUFFFeHBCdWZmZXJEYXRhICplcnJvcjsKK30gUEdvYXV0 aEJlYXJlclJlcXVlc3RWMjsKKwogZXh0ZXJuIGNoYXIgKlBRZW5jcnlwdFBhc3N3b3JkKGNvbnN0 IGNoYXIgKnBhc3N3ZCwgY29uc3QgY2hhciAqdXNlcik7CiBleHRlcm4gY2hhciAqUFFlbmNyeXB0 UGFzc3dvcmRDb25uKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcGFzc3dkLCBjb25zdCBjaGFy ICp1c2VyLCBjb25zdCBjaGFyICphbGdvcml0aG0pOwogZXh0ZXJuIFBHcmVzdWx0ICpQUWNoYW5n ZVBhc3N3b3JkKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqdXNlciwgY29uc3QgY2hhciAqcGFz c3dkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYyBi L3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYwppbmRleCBmYjYzYTMyNDlkNi4u Zjk0YmYzMWIyZWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1 dGguYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmMKQEAgLTY3NSw2 ICs2NzUsMzIgQEAgY2xlYW51cDoKIAlyZXR1cm4gc3VjY2VzczsKIH0KIAorLyoKKyAqIEhlbHBl ciBmb3IgaGFuZGxpbmcgZmxvdyBmYWlsdXJlcy4gSWYgYW55dGhpbmcgd2FzIHB1dCBpbnRvIHJl cXVlc3QtPmVycm9yLAorICogaXQncyBhZGRlZCB0byBjb25uLT5lcnJvck1lc3NhZ2UgaGVyZS4K KyAqLworc3RhdGljIHZvaWQKK3JlcG9ydF91c2VyX2Zsb3dfZXJyb3IoUEdjb25uICpjb25uLCBj b25zdCBQR29hdXRoQmVhcmVyUmVxdWVzdFYyICpyZXF1ZXN0KQoreworCWNvbnN0IGNoYXIgKmVy cm1zZyA9IE5VTEw7CisKKwlpZiAoUFFFeHBCdWZmZXJCcm9rZW4ocmVxdWVzdC0+ZXJyb3IpKQor CQllcnJtc2cgPSBsaWJwcV9nZXR0ZXh0KCJvdXQgb2YgbWVtb3J5Iik7CisJZWxzZSBpZiAocmVx dWVzdC0+ZXJyb3ItPmxlbikKKwkJZXJybXNnID0gcmVxdWVzdC0+ZXJyb3ItPmRhdGE7CisKKwlh cHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJIGxpYnBxX2dl dHRleHQoInVzZXItZGVmaW5lZCBPQXV0aCBmbG93IGZhaWxlZCIpKTsKKworCWlmIChlcnJtc2cp CisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLCAiOiAiKTsK KwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwgZXJybXNnKTsKKwl9 CisKKwlhcHBlbmRQUUV4cEJ1ZmZlckNoYXIoJmNvbm4tPmVycm9yTWVzc2FnZSwgJ1xuJyk7Cit9 CisKIC8qCiAgKiBDYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBvZiBjb25uLT5hc3luY19hdXRoKCkg Zm9yIGEgdXNlci1kZWZpbmVkIE9BdXRoIGZsb3cuCiAgKiBEZWxlZ2F0ZXMgdGhlIHJldHJpZXZh bCBvZiB0aGUgdG9rZW4gdG8gdGhlIGFwcGxpY2F0aW9uJ3MgYXN5bmMgY2FsbGJhY2suCkBAIC02 ODcsMjAgKzcxMywyMyBAQCBzdGF0aWMgUG9zdGdyZXNQb2xsaW5nU3RhdHVzVHlwZQogcnVuX3Vz ZXJfb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4pCiB7CiAJZmVfb2F1dGhfc3RhdGUgKnN0YXRlID0g Y29ubi0+c2FzbF9zdGF0ZTsKLQlQR29hdXRoQmVhcmVyUmVxdWVzdCAqcmVxdWVzdCA9IHN0YXRl LT5hc3luY19jdHg7CisJUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAqcmVxdWVzdCA9IHN0YXRlLT5h c3luY19jdHg7CiAJUG9zdGdyZXNQb2xsaW5nU3RhdHVzVHlwZSBzdGF0dXM7CiAKLQlpZiAoIXJl cXVlc3QtPmFzeW5jKQorCWlmICghcmVxdWVzdC0+djEuYXN5bmMpCiAJewogCQlsaWJwcV9hcHBl bmRfY29ubl9lcnJvcihjb25uLAogCQkJCQkJCQkidXNlci1kZWZpbmVkIE9BdXRoIGZsb3cgcHJv dmlkZWQgbmVpdGhlciBhIHRva2VuIG5vciBhbiBhc3luYyBjYWxsYmFjayIpOwogCQlyZXR1cm4g UEdSRVNfUE9MTElOR19GQUlMRUQ7CiAJfQogCi0Jc3RhdHVzID0gcmVxdWVzdC0+YXN5bmMoY29u biwgcmVxdWVzdCwgJmNvbm4tPmFsdHNvY2spOworCXN0YXR1cyA9IHJlcXVlc3QtPnYxLmFzeW5j KGNvbm4sCisJCQkJCQkJICAgKFBHb2F1dGhCZWFyZXJSZXF1ZXN0ICopIHJlcXVlc3QsCisJCQkJ CQkJICAgJmNvbm4tPmFsdHNvY2spOworCiAJaWYgKHN0YXR1cyA9PSBQR1JFU19QT0xMSU5HX0ZB SUxFRCkKIAl7Ci0JCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJ1c2VyLWRlZmluZWQg T0F1dGggZmxvdyBmYWlsZWQiKTsKKwkJcmVwb3J0X3VzZXJfZmxvd19lcnJvcihjb25uLCByZXF1 ZXN0KTsKIAkJcmV0dXJuIHN0YXR1czsKIAl9CiAJZWxzZSBpZiAoc3RhdHVzID09IFBHUkVTX1BP TExJTkdfT0spCkBAIC03MTAsMTQgKzczOSwxNCBAQCBydW5fdXNlcl9vYXV0aF9mbG93KFBHY29u biAqY29ubikKIAkJICogb250byB0aGUgb3JpZ2luYWwgc3RyaW5nLCBzaW5jZSBpdCBtYXkgbm90 IGJlIHNhZmUgZm9yIHVzIHRvIGZyZWUoKQogCQkgKiBpdC4pCiAJCSAqLwotCQlpZiAoIXJlcXVl c3QtPnRva2VuKQorCQlpZiAoIXJlcXVlc3QtPnYxLnRva2VuKQogCQl7CiAJCQlsaWJwcV9hcHBl bmRfY29ubl9lcnJvcihjb25uLAogCQkJCQkJCQkJInVzZXItZGVmaW5lZCBPQXV0aCBmbG93IGRp ZCBub3QgcHJvdmlkZSBhIHRva2VuIik7CiAJCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7 CiAJCX0KIAotCQljb25uLT5vYXV0aF90b2tlbiA9IHN0cmR1cChyZXF1ZXN0LT50b2tlbik7CisJ CWNvbm4tPm9hdXRoX3Rva2VuID0gc3RyZHVwKHJlcXVlc3QtPnYxLnRva2VuKTsKIAkJaWYgKCFj b25uLT5vYXV0aF90b2tlbikKIAkJewogCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwg Im91dCBvZiBtZW1vcnkiKTsKQEAgLTczOSwyMSArNzY4LDIzIEBAIHJ1bl91c2VyX29hdXRoX2Zs b3coUEdjb25uICpjb25uKQogfQogCiAvKgotICogQ2xlYW51cCBjYWxsYmFjayBmb3IgdGhlIGFz eW5jIHVzZXIgZmxvdy4gRGVsZWdhdGVzIG1vc3Qgb2YgaXRzIGpvYiB0byB0aGUKLSAqIHVzZXIt cHJvdmlkZWQgY2xlYW51cCBpbXBsZW1lbnRhdGlvbiwgdGhlbiBkaXNjb25uZWN0cyB0aGUgYWx0 c29jay4KKyAqIENsZWFudXAgY2FsbGJhY2sgZm9yIHRoZSBhc3luYyB1c2VyIGZsb3cuIERlbGVn YXRlcyBtb3N0IG9mIGl0cyBqb2IgdG8KKyAqIFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIuY2xlYW51 cCgpLCB0aGVuIGRpc2Nvbm5lY3RzIHRoZSBhbHRzb2NrIGFuZCBmcmVlcyB0aGUKKyAqIHJlcXVl c3QgaXRzZWxmLgogICovCiBzdGF0aWMgdm9pZAogY2xlYW51cF91c2VyX29hdXRoX2Zsb3coUEdj b25uICpjb25uKQogewogCWZlX29hdXRoX3N0YXRlICpzdGF0ZSA9IGNvbm4tPnNhc2xfc3RhdGU7 Ci0JUEdvYXV0aEJlYXJlclJlcXVlc3QgKnJlcXVlc3QgPSBzdGF0ZS0+YXN5bmNfY3R4OworCVBH b2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJlcXVlc3QgPSBzdGF0ZS0+YXN5bmNfY3R4OwogCiAJQXNz ZXJ0KHJlcXVlc3QpOwogCi0JaWYgKHJlcXVlc3QtPmNsZWFudXApCi0JCXJlcXVlc3QtPmNsZWFu dXAoY29ubiwgcmVxdWVzdCk7CisJaWYgKHJlcXVlc3QtPnYxLmNsZWFudXApCisJCXJlcXVlc3Qt PnYxLmNsZWFudXAoY29ubiwgKFBHb2F1dGhCZWFyZXJSZXF1ZXN0ICopIHJlcXVlc3QpOwogCWNv bm4tPmFsdHNvY2sgPSBQR0lOVkFMSURfU09DS0VUOwogCisJZGVzdHJveVBRRXhwQnVmZmVyKHJl cXVlc3QtPmVycm9yKTsKIAlmcmVlKHJlcXVlc3QpOwogCXN0YXRlLT5hc3luY19jdHggPSBOVUxM OwogfQpAQCAtOTc1LDggKzEwMDYsOCBAQCB1c2VfYnVpbHRpbl9mbG93KFBHY29ubiAqY29ubiwg ZmVfb2F1dGhfc3RhdGUgKnN0YXRlKQogICogdG9rZW4gZm9yIHByZXNlbnRhdGlvbiB0byB0aGUg c2VydmVyLgogICoKICAqIElmIHRoZSBhcHBsaWNhdGlvbiBoYXMgcmVnaXN0ZXJlZCBhIGN1c3Rv bSBmbG93IGhhbmRsZXIgdXNpbmcKLSAqIFBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOLCBp dCBtYXkgZWl0aGVyIHJldHVybiBhIHRva2VuIGltbWVkaWF0ZWx5IChlLmcuCi0gKiBpZiBpdCBo YXMgb25lIGNhY2hlZCBmb3IgaW1tZWRpYXRlIHVzZSksIG9yIHNldCB1cCBmb3IgYSBzZXJpZXMg b2YKKyAqIFBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOW19WMl0sIGl0IG1heSBlaXRoZXIg cmV0dXJuIGEgdG9rZW4gaW1tZWRpYXRlbHkKKyAqIChlLmcuIGlmIGl0IGhhcyBvbmUgY2FjaGVk IGZvciBpbW1lZGlhdGUgdXNlKSwgb3Igc2V0IHVwIGZvciBhIHNlcmllcyBvZgogICogYXN5bmNo cm9ub3VzIGNhbGxiYWNrcyB3aGljaCB3aWxsIGJlIG1hbmFnZWQgYnkgcnVuX3VzZXJfb2F1dGhf ZmxvdygpLgogICoKICAqIElmIHRoZSBkZWZhdWx0IGhhbmRsZXIgaXMgdXNlZCBpbnN0ZWFkLCBh IERldmljZSBBdXRob3JpemF0aW9uIGZsb3cgaXMgdXNlZApAQCAtOTkwLDI3ICsxMDIxLDQ0IEBA IHN0YXRpYyBib29sCiBzZXR1cF90b2tlbl9yZXF1ZXN0KFBHY29ubiAqY29ubiwgZmVfb2F1dGhf c3RhdGUgKnN0YXRlKQogewogCWludAkJCXJlczsKLQlQR29hdXRoQmVhcmVyUmVxdWVzdCByZXF1 ZXN0ID0gewotCQkub3BlbmlkX2NvbmZpZ3VyYXRpb24gPSBjb25uLT5vYXV0aF9kaXNjb3Zlcnlf dXJpLAotCQkuc2NvcGUgPSBjb25uLT5vYXV0aF9zY29wZSwKKwlQR29hdXRoQmVhcmVyUmVxdWVz dFYyIHJlcXVlc3QgPSB7CisJCS52MSA9IHsKKwkJCS5vcGVuaWRfY29uZmlndXJhdGlvbiA9IGNv bm4tPm9hdXRoX2Rpc2NvdmVyeV91cmksCisJCQkuc2NvcGUgPSBjb25uLT5vYXV0aF9zY29wZSwK KwkJfSwKKwkJLmlzc3VlciA9IGNvbm4tPm9hdXRoX2lzc3Vlcl9pZCwKKwkJLmVycm9yID0gY3Jl YXRlUFFFeHBCdWZmZXIoKSwKIAl9OwogCi0JQXNzZXJ0KHJlcXVlc3Qub3BlbmlkX2NvbmZpZ3Vy YXRpb24pOworCUFzc2VydChyZXF1ZXN0LnYxLm9wZW5pZF9jb25maWd1cmF0aW9uKTsKKwlBc3Nl cnQocmVxdWVzdC5pc3N1ZXIpOworCisJaWYgKFBRRXhwQnVmZmVyQnJva2VuKHJlcXVlc3QuZXJy b3IpKQorCXsKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm91dCBvZiBtZW1vcnki KTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qCisJICogVGhlIGNsaWVudCBtYXkgaGF2ZSBv dmVycmlkZGVuIHRoZSBPQXV0aCBmbG93LiBUcnkgdGhlIHYyIGhvb2sgZmlyc3QsCisJICogdGhl biBmYWxsIGJhY2sgdG8gdGhlIHYxIGltcGxlbWVudGF0aW9uLgorCSAqLworCXJlcyA9IFBRYXV0 aERhdGFIb29rKFBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOX1YyLCBjb25uLCAmcmVxdWVz dCk7CisJaWYgKHJlcyA9PSAwKQorCQlyZXMgPSBQUWF1dGhEYXRhSG9vayhQUUFVVEhEQVRBX09B VVRIX0JFQVJFUl9UT0tFTiwgY29ubiwgJnJlcXVlc3QpOwogCi0JLyogVGhlIGNsaWVudCBtYXkg aGF2ZSBvdmVycmlkZGVuIHRoZSBPQXV0aCBmbG93LiAqLwotCXJlcyA9IFBRYXV0aERhdGFIb29r KFBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOLCBjb25uLCAmcmVxdWVzdCk7CiAJaWYgKHJl cyA+IDApCiAJewotCQlQR29hdXRoQmVhcmVyUmVxdWVzdCAqcmVxdWVzdF9jb3B5OworCQlQR29h dXRoQmVhcmVyUmVxdWVzdFYyICpyZXF1ZXN0X2NvcHk7CiAKLQkJaWYgKHJlcXVlc3QudG9rZW4p CisJCWlmIChyZXF1ZXN0LnYxLnRva2VuKQogCQl7CiAJCQkvKgogCQkJICogV2UgYWxyZWFkeSBo YXZlIGEgdG9rZW4sIHNvIGNvcHkgaXQgaW50byB0aGUgY29ubi4gKFdlIGNhbid0CiAJCQkgKiBo b2xkIG9udG8gdGhlIG9yaWdpbmFsIHN0cmluZywgc2luY2UgaXQgbWF5IG5vdCBiZSBzYWZlIGZv ciB1cwogCQkJICogdG8gZnJlZSgpIGl0LikKIAkJCSAqLwotCQkJY29ubi0+b2F1dGhfdG9rZW4g PSBzdHJkdXAocmVxdWVzdC50b2tlbik7CisJCQljb25uLT5vYXV0aF90b2tlbiA9IHN0cmR1cChy ZXF1ZXN0LnYxLnRva2VuKTsKIAkJCWlmICghY29ubi0+b2F1dGhfdG9rZW4pCiAJCQl7CiAJCQkJ bGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm91dCBvZiBtZW1vcnkiKTsKQEAgLTEwMTgs OCArMTA2Niw5IEBAIHNldHVwX3Rva2VuX3JlcXVlc3QoUEdjb25uICpjb25uLCBmZV9vYXV0aF9z dGF0ZSAqc3RhdGUpCiAJCQl9CiAKIAkJCS8qIHNob3J0LWNpcmN1aXQgKi8KLQkJCWlmIChyZXF1 ZXN0LmNsZWFudXApCi0JCQkJcmVxdWVzdC5jbGVhbnVwKGNvbm4sICZyZXF1ZXN0KTsKKwkJCWlm IChyZXF1ZXN0LnYxLmNsZWFudXApCisJCQkJcmVxdWVzdC52MS5jbGVhbnVwKGNvbm4sIChQR29h dXRoQmVhcmVyUmVxdWVzdCAqKSAmcmVxdWVzdCk7CisJCQlkZXN0cm95UFFFeHBCdWZmZXIocmVx dWVzdC5lcnJvcik7CiAJCQlyZXR1cm4gdHJ1ZTsKIAkJfQogCkBAIC0xMDM4LDcgKzEwODcsNyBA QCBzZXR1cF90b2tlbl9yZXF1ZXN0KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRl KQogCX0KIAllbHNlIGlmIChyZXMgPCAwKQogCXsKLQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3Io Y29ubiwgInVzZXItZGVmaW5lZCBPQXV0aCBmbG93IGZhaWxlZCIpOworCQlyZXBvcnRfdXNlcl9m bG93X2Vycm9yKGNvbm4sICZyZXF1ZXN0KTsKIAkJZ290byBmYWlsOwogCX0KIAllbHNlIGlmICgh dXNlX2J1aWx0aW5fZmxvdyhjb25uLCBzdGF0ZSkpCkBAIC0xMDUwLDggKzEwOTksOSBAQCBzZXR1 cF90b2tlbl9yZXF1ZXN0KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlKQogCXJl dHVybiB0cnVlOwogCiBmYWlsOgotCWlmIChyZXF1ZXN0LmNsZWFudXApCi0JCXJlcXVlc3QuY2xl YW51cChjb25uLCAmcmVxdWVzdCk7CisJaWYgKHJlcXVlc3QudjEuY2xlYW51cCkKKwkJcmVxdWVz dC52MS5jbGVhbnVwKGNvbm4sIChQR29hdXRoQmVhcmVyUmVxdWVzdCAqKSAmcmVxdWVzdCk7CisJ ZGVzdHJveVBRRXhwQnVmZmVyKHJlcXVlc3QuZXJyb3IpOwogCXJldHVybiBmYWxzZTsKIH0KIApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3Ivb2F1dGhfaG9va19j bGllbnQuYyBiL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL29hdXRoX2hvb2tfY2xp ZW50LmMKaW5kZXggMTVkMGNmOTM4YTguLmIxYTNiMDE0MDc5IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci9vYXV0aF9ob29rX2NsaWVudC5jCisrKyBiL3NyYy90 ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL29hdXRoX2hvb2tfY2xpZW50LmMKQEAgLTIwLDYg KzIwLDcgQEAKIAogI2luY2x1ZGUgImdldG9wdF9sb25nLmgiCiAjaW5jbHVkZSAibGlicHEtZmUu aCIKKyNpbmNsdWRlICJwcWV4cGJ1ZmZlci5oIgogCiBzdGF0aWMgaW50CWhhbmRsZV9hdXRoX2Rh dGEoUEdhdXRoRGF0YSB0eXBlLCBQR2Nvbm4gKmNvbm4sIHZvaWQgKmRhdGEpOwogc3RhdGljIFBv c3RncmVzUG9sbGluZ1N0YXR1c1R5cGUgYXN5bmNfY2IoUEdjb25uICpjb25uLApAQCAtMzYsMTMg KzM3LDE2IEBAIHVzYWdlKGNoYXIgKmFyZ3ZbXSkKIAogCXByaW50ZigicmVjb2duaXplZCBmbGFn czpcbiIpOwogCXByaW50ZigiICAtaCwgLS1oZWxwICAgICAgICAgICAgICBzaG93IHRoaXMgbWVz c2FnZVxuIik7CisJcHJpbnRmKCIgIC12IFZFUlNJT04gICAgICAgICAgICAgIHNlbGVjdCB0aGUg aG9vayBBUEkgdmVyc2lvbiAoZGVmYXVsdCAyKVxuIik7CiAJcHJpbnRmKCIgIC0tZXhwZWN0ZWQt c2NvcGUgU0NPUEUgIGZhaWwgaWYgcmVjZWl2ZWQgc2NvcGVzIGRvIG5vdCBtYXRjaCBTQ09QRVxu Iik7CiAJcHJpbnRmKCIgIC0tZXhwZWN0ZWQtdXJpIFVSSSAgICAgIGZhaWwgaWYgcmVjZWl2ZWQg Y29uZmlndXJhdGlvbiBsaW5rIGRvZXMgbm90IG1hdGNoIFVSSVxuIik7CisJcHJpbnRmKCIgIC0t ZXhwZWN0ZWQtaXNzdWVyIElTUyAgIGZhaWwgaWYgcmVjZWl2ZWQgaXNzdWVyIGRvZXMgbm90IG1h dGNoIElTUyAodjIgb25seSlcbiIpOwogCXByaW50ZigiICAtLW1pc2JlaGF2ZT1NT0RFICAgICAg ICBoYXZlIHRoZSBob29rIGZhaWwgcmVxdWlyZWQgcG9zdGNvbmRpdGlvbnNcbiIKIAkJICAgIiAg ICAgICAgICAgICAgICAgICAgICAgICAgKE1PREVzOiBuby1ob29rLCBmYWlsLWFzeW5jLCBuby10 b2tlbiwgbm8tc29ja2V0KVxuIik7CiAJcHJpbnRmKCIgIC0tbm8taG9vayAgICAgICAgICAgICAg IGRvbid0IGluc3RhbGwgT0F1dGggaG9va3NcbiIpOwogCXByaW50ZigiICAtLWhhbmctZm9yZXZl ciAgICAgICAgICBkb24ndCBldmVyIHJldHVybiBhIHRva2VuIChjb21iaW5lIHdpdGggY29ubmVj dF90aW1lb3V0KVxuIik7CiAJcHJpbnRmKCIgIC0tdG9rZW4gVE9LRU4gICAgICAgICAgIHVzZSB0 aGUgcHJvdmlkZWQgVE9LRU4gdmFsdWVcbiIpOworCXByaW50ZigiICAtLWVycm9yIEVSUk1TRyAg ICAgICAgICBmYWlsIGluc3RlYWQsIHdpdGggdGhlIGdpdmVuIEVSUk1TRyAodjIgb25seSlcbiIp OwogCXByaW50ZigiICAtLXN0cmVzcy1hc3luYyAgICAgICAgICBidXN5LWxvb3Agb24gUFFjb25u ZWN0UG9sbCByYXRoZXIgdGhhbiBwb2xsaW5nXG4iKTsKIH0KIApAQCAtNTEsOSArNTUsMTIgQEAg c3RhdGljIGJvb2wgbm9faG9vayA9IGZhbHNlOwogc3RhdGljIGJvb2wgaGFuZ19mb3JldmVyID0g ZmFsc2U7CiBzdGF0aWMgYm9vbCBzdHJlc3NfYXN5bmMgPSBmYWxzZTsKIHN0YXRpYyBjb25zdCBj aGFyICpleHBlY3RlZF91cmkgPSBOVUxMOworc3RhdGljIGNvbnN0IGNoYXIgKmV4cGVjdGVkX2lz c3VlciA9IE5VTEw7CiBzdGF0aWMgY29uc3QgY2hhciAqZXhwZWN0ZWRfc2NvcGUgPSBOVUxMOwog c3RhdGljIGNvbnN0IGNoYXIgKm1pc2JlaGF2ZV9tb2RlID0gTlVMTDsKIHN0YXRpYyBjaGFyICp0 b2tlbiA9IE5VTEw7CitzdGF0aWMgY2hhciAqZXJybXNnID0gTlVMTDsKK3N0YXRpYyBpbnQJaG9v a192ZXJzaW9uID0gUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU5fVjI7CiAKIGludAogbWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQpAQCAtNjgsNiArNzUsOCBAQCBtYWluKGludCBhcmdj LCBjaGFyICphcmd2W10pCiAJCXsiaGFuZy1mb3JldmVyIiwgbm9fYXJndW1lbnQsIE5VTEwsIDEw MDR9LAogCQl7Im1pc2JlaGF2ZSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAxMDA1fSwKIAkJ eyJzdHJlc3MtYXN5bmMiLCBub19hcmd1bWVudCwgTlVMTCwgMTAwNn0sCisJCXsiZXhwZWN0ZWQt aXNzdWVyIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDEwMDd9LAorCQl7ImVycm9yIiwgcmVx dWlyZWRfYXJndW1lbnQsIE5VTEwsIDEwMDh9LAogCQl7MH0KIAl9OwogCkBAIC03NSw3ICs4NCw3 IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlQR2Nvbm4JICAgKmNvbm47CiAJaW50 CQkJYzsKIAotCXdoaWxlICgoYyA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJoIiwgbG9uZ19v cHRpb25zLCBOVUxMKSkgIT0gLTEpCisJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJn diwgImh2OiIsIGxvbmdfb3B0aW9ucywgTlVMTCkpICE9IC0xKQogCXsKIAkJc3dpdGNoIChjKQog CQl7CkBAIC04Myw2ICs5MiwxOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJ dXNhZ2UoYXJndik7CiAJCQkJcmV0dXJuIDA7CiAKKwkJCWNhc2UgJ3YnOgorCQkJCWlmIChzdHJj bXAob3B0YXJnLCAiMSIpID09IDApCisJCQkJCWhvb2tfdmVyc2lvbiA9IFBRQVVUSERBVEFfT0FV VEhfQkVBUkVSX1RPS0VOOworCQkJCWVsc2UgaWYgKHN0cmNtcChvcHRhcmcsICIyIikgPT0gMCkK KwkJCQkJaG9va192ZXJzaW9uID0gUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU5fVjI7CisJ CQkJZWxzZQorCQkJCXsKKwkJCQkJdXNhZ2UoYXJndik7CisJCQkJCXJldHVybiAxOworCQkJCX0K KwkJCQlicmVhazsKKwogCQkJY2FzZSAxMDAwOgkJCS8qIC0tZXhwZWN0ZWQtc2NvcGUgKi8KIAkJ CQlleHBlY3RlZF9zY29wZSA9IG9wdGFyZzsKIAkJCQlicmVhazsKQEAgLTExMSw2ICsxMzIsMTQg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJCXN0cmVzc19hc3luYyA9IHRydWU7 CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgMTAwNzoJCQkvKiAtLWV4cGVjdGVkLWlzc3VlciAqLwor CQkJCWV4cGVjdGVkX2lzc3VlciA9IG9wdGFyZzsKKwkJCQlicmVhazsKKworCQkJY2FzZSAxMDA4 OgkJCS8qIC0tZXJyb3IgKi8KKwkJCQllcnJtc2cgPSBvcHRhcmc7CisJCQkJYnJlYWs7CisKIAkJ CWRlZmF1bHQ6CiAJCQkJdXNhZ2UoYXJndik7CiAJCQkJcmV0dXJuIDE7CkBAIC0xNjcsMTYgKzE5 NiwyNCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIC8qCiAgKiBQUWF1dGhEYXRh SG9vayBpbXBsZW1lbnRhdGlvbi4gUmVwbGFjZXMgdGhlIGRlZmF1bHQgY2xpZW50IGZsb3cgYnkg aGFuZGxpbmcKLSAqIFBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOLgorICogUFFBVVRIREFU QV9PQVVUSF9CRUFSRVJfVE9LRU5bX1YyXS4KICAqLwogc3RhdGljIGludAogaGFuZGxlX2F1dGhf ZGF0YShQR2F1dGhEYXRhIHR5cGUsIFBHY29ubiAqY29ubiwgdm9pZCAqZGF0YSkKIHsKLQlQR29h dXRoQmVhcmVyUmVxdWVzdCAqcmVxID0gZGF0YTsKKwlQR29hdXRoQmVhcmVyUmVxdWVzdCAqcmVx OworCVBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJlcTIgPSBOVUxMOworCisJQXNzZXJ0KGhvb2tf dmVyc2lvbiA9PSBQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTiB8fAorCQkgICBob29rX3Zl cnNpb24gPT0gUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU5fVjIpOwogCi0JaWYgKG5vX2hv b2sgfHwgKHR5cGUgIT0gUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU4pKQorCWlmIChub19o b29rIHx8IHR5cGUgIT0gaG9va192ZXJzaW9uKQogCQlyZXR1cm4gMDsKIAorCXJlcSA9IGRhdGE7 CisJaWYgKHR5cGUgPT0gUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU5fVjIpCisJCXJlcTIg PSBkYXRhOworCiAJaWYgKGhhbmdfZm9yZXZlcikKIAl7CiAJCS8qIFN0YXJ0IGFzeW5jaHJvbm91 cyBwcm9jZXNzaW5nLiAqLwpAQCAtMjIxLDYgKzI1OCw0NCBAQCBoYW5kbGVfYXV0aF9kYXRhKFBH YXV0aERhdGEgdHlwZSwgUEdjb25uICpjb25uLCB2b2lkICpkYXRhKQogCQl9CiAJfQogCisJaWYg KGV4cGVjdGVkX2lzc3VlcikKKwl7CisJCWlmICghcmVxMikKKwkJeworCQkJZnByaW50ZihzdGRl cnIsICItLWV4cGVjdGVkLWlzc3VlciBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCAtdjFcbiIpOwor CQkJcmV0dXJuIC0xOworCQl9CisKKwkJaWYgKCFyZXEyLT5pc3N1ZXIpCisJCXsKKwkJCWZwcmlu dGYoc3RkZXJyLCAiZXhwZWN0ZWQgaXNzdWVyIFwiJXNcIiwgZ290IE5VTExcbiIsIGV4cGVjdGVk X2lzc3Vlcik7CisJCQlyZXR1cm4gLTE7CisJCX0KKworCQlpZiAoc3RyY21wKGV4cGVjdGVkX2lz c3VlciwgcmVxMi0+aXNzdWVyKSAhPSAwKQorCQl7CisJCQlmcHJpbnRmKHN0ZGVyciwgImV4cGVj dGVkIGlzc3VlciBcIiVzXCIsIGdvdCBcIiVzXCJcbiIsIGV4cGVjdGVkX2lzc3VlciwgcmVxMi0+ aXNzdWVyKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCX0KKworCWlmIChlcnJtc2cpCisJeworCQlp ZiAodG9rZW4pCisJCXsKKwkJCWZwcmludGYoc3RkZXJyLCAiLS1lcnJvciBjYW5ub3QgYmUgY29t YmluZWQgd2l0aCAtLXRva2VuXG4iKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCQllbHNlIGlmICgh cmVxMikKKwkJeworCQkJZnByaW50ZihzdGRlcnIsICItLWVycm9yIGNhbm5vdCBiZSBjb21iaW5l ZCB3aXRoIC12MVxuIik7CisJCQlyZXR1cm4gLTE7CisJCX0KKworCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihyZXEyLT5lcnJvciwgZXJybXNnKTsKKwkJcmV0dXJuIC0xOworCX0KKwogCXJlcS0+dG9r ZW4gPSB0b2tlbjsKIAlyZXR1cm4gMTsKIH0KQEAgLTI3Myw2ICszNDgsMjAgQEAgbWlzYmVoYXZl X2NiKFBHY29ubiAqY29ubiwgUEdvYXV0aEJlYXJlclJlcXVlc3QgKnJlcSwgcGdzb2NrZXQgKmFs dHNvY2spCiAJaWYgKHN0cmNtcChtaXNiZWhhdmVfbW9kZSwgImZhaWwtYXN5bmMiKSA9PSAwKQog CXsKIAkJLyogSnVzdCBmYWlsICJub3JtYWxseSIuICovCisJCWlmIChlcnJtc2cpCisJCXsKKwkJ CVBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJlcTI7CisKKwkJCWlmIChob29rX3ZlcnNpb24gPT0g UFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU4pCisJCQl7CisJCQkJZnByaW50ZihzdGRlcnIs ICItLWVycm9yIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIC12MVxuIik7CisJCQkJZXhpdCgxKTsK KwkJCX0KKworCQkJcmVxMiA9IChQR29hdXRoQmVhcmVyUmVxdWVzdFYyICopIHJlcTsKKwkJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHJlcTItPmVycm9yLCBlcnJtc2cpOworCQl9CisKIAkJcmV0dXJu IFBHUkVTX1BPTExJTkdfRkFJTEVEOwogCX0KIAllbHNlIGlmIChzdHJjbXAobWlzYmVoYXZlX21v ZGUsICJuby10b2tlbiIpID09IDApCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL29hdXRo X3ZhbGlkYXRvci90LzAwMl9jbGllbnQucGwgYi9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlk YXRvci90LzAwMl9jbGllbnQucGwKaW5kZXggZTZjOTFmYzkxMWMuLmY4NzhhMjNkMjAxIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci90LzAwMl9jbGllbnQucGwK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvdC8wMDJfY2xpZW50LnBsCkBA IC03OCw5ICs3OCw5IEBAIHN1YiB0ZXN0CiAJbXkgJGxvZ19zdGFydCA9IC1zICRub2RlLT5sb2dm aWxlOwogCW15ICgkc3Rkb3V0LCAkc3RkZXJyKSA9IHJ1bl9jb21tYW5kKFxAY21kKTsKIAotCWlm IChkZWZpbmVkKCRwYXJhbXN7ZXhwZWN0ZWRfc3Rkb3V0fSkpCisJaWYgKCRwYXJhbXN7ZXhwZWN0 X3N1Y2Nlc3N9KQogCXsKLQkJbGlrZSgkc3Rkb3V0LCAkcGFyYW1ze2V4cGVjdGVkX3N0ZG91dH0s ICIkdGVzdF9uYW1lOiBzdGRvdXQgbWF0Y2hlcyIpOworCQlsaWtlKCRzdGRvdXQsIHFyL2Nvbm5l Y3Rpb24gc3VjY2VlZGVkLywgIiR0ZXN0X25hbWU6IHN0ZG91dCBtYXRjaGVzIik7CiAJfQogCiAJ aWYgKGRlZmluZWQoJHBhcmFtc3tleHBlY3RlZF9zdGRlcnJ9KSkKQEAgLTExMCwxMSArMTEwLDI0 IEBAIHRlc3QoCiAJZmxhZ3MgPT4gWwogCQkiLS10b2tlbiIsICJteS10b2tlbiIsCiAJCSItLWV4 cGVjdGVkLXVyaSIsICIkaXNzdWVyLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uIiwK KwkJIi0tZXhwZWN0ZWQtaXNzdWVyIiwgIiRpc3N1ZXIiLAogCQkiLS1leHBlY3RlZC1zY29wZSIs ICRzY29wZSwKIAldLAotCWV4cGVjdGVkX3N0ZG91dCA9PiBxci9jb25uZWN0aW9uIHN1Y2NlZWRl ZC8sCisJZXhwZWN0X3N1Y2Nlc3MgPT4gMSwKIAlsb2dfbGlrZSA9PiBbcXIvb2F1dGhfdmFsaWRh dG9yOiB0b2tlbj0ibXktdG9rZW4iLCByb2xlPSIkdXNlciIvXSk7CiAKKyMgTWFrZSBzdXJlIHRo ZSB2MSBob29rIGNvbnRpbnVlcyB0byB3b3JrLgordGVzdCgKKwkidjEgc3luY2hyb25vdXMgaG9v ayBjYW4gcHJvdmlkZSBhIHRva2VuIiwKKwlmbGFncyA9PiBbCisJCSItdjEiLAorCQkiLS10b2tl biIgPT4gIm15LXRva2VuLXYxIiwKKwkJIi0tZXhwZWN0ZWQtdXJpIiA9PiAiJGlzc3Vlci8ud2Vs bC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbiIsCisJCSItLWV4cGVjdGVkLXNjb3BlIiA9PiAk c2NvcGUsCisJXSwKKwlleHBlY3Rfc3VjY2VzcyA9PiAxLAorCWxvZ19saWtlID0+IFtxci9vYXV0 aF92YWxpZGF0b3I6IHRva2VuPSJteS10b2tlbi12MSIsIHJvbGU9IiR1c2VyIi9dKTsKKwogaWYg KCRFTlZ7d2l0aF9saWJjdXJsfSBuZSAneWVzJykKIHsKIAkjIGxpYnBxIHNob3VsZCBoZWxwIHVz ZXJzIG91dCBpZiBubyBPQXV0aCBzdXBwb3J0IGlzIGJ1aWx0IGluLgpAQCAtMTI2LDYgKzEzOSwx NSBAQCBpZiAoJEVOVnt3aXRoX2xpYmN1cmx9IG5lICd5ZXMnKQogCSk7CiB9CiAKKyMgdjIgc3lu Y2hyb25vdXMgZmxvd3Mgc2hvdWxkIGJlIGFibGUgdG8gc2V0IGN1c3RvbSBlcnJvciBtZXNzYWdl cy4KK3Rlc3QoCisJImJhc2ljIHN5bmNocm9ub3VzIGhvb2sgY2FuIHNldCBlcnJvciBtZXNzYWdl cyIsCisJZmxhZ3MgPT4gWworCQkiLS1lcnJvciIgPT4gImEgY3VzdG9tIGVycm9yIG1lc3NhZ2Ui LAorCV0sCisJZXhwZWN0ZWRfc3RkZXJyID0+CisJICBxci91c2VyLWRlZmluZWQgT0F1dGggZmxv dyBmYWlsZWQ6IGEgY3VzdG9tIGVycm9yIG1lc3NhZ2UvKTsKKwogIyBjb25uZWN0X3RpbWVvdXQg c2hvdWxkIHdvcmsgaWYgdGhlIGZsb3cgZG9lc24ndCByZXNwb25kLgogJGNvbW1vbl9jb25uc3Ry ID0gIiRjb21tb25fY29ubnN0ciBjb25uZWN0X3RpbWVvdXQ9MSI7CiB0ZXN0KApAQCAtMTY1LDQg KzE4NywxNCBAQCBmb3JlYWNoIG15ICRjIChAY2FzZXMpCiAJCWV4cGVjdGVkX3N0ZGVyciA9PiAk Yy0+eydleHBlY3RlZF9lcnJvcid9KTsKIH0KIAorIyB2MiBhc3luYyBmbG93cyBzaG91bGQgYmUg YWJsZSB0byBzZXQgZXJyb3IgbWVzc2FnZXMsIHRvby4KK3Rlc3QoCisJImFzeW5jaHJvbm91cyBo b29rIGNhbiBzZXQgZXJyb3IgbWVzc2FnZXMiLAorCWZsYWdzID0+IFsKKwkJIi0tbWlzYmVoYXZl IiA9PiAiZmFpbC1hc3luYyIsCisJCSItLWVycm9yIiA9PiAiYXN5bmMgZXJyb3IgbWVzc2FnZSIs CisJXSwKKwlleHBlY3RlZF9zdGRlcnIgPT4KKwkgIHFyL3VzZXItZGVmaW5lZCBPQXV0aCBmbG93 IGZhaWxlZDogYXN5bmMgZXJyb3IgbWVzc2FnZS8pOworCiBkb25lX3Rlc3RpbmcoKTsKLS0gCjIu MzQuMQoK --000000000000f056560646153aa9 Content-Type: application/octet-stream; name="v2-0005-libpq-oauth-Use-the-PGoauthBearerRequestV2-API.patch" Content-Disposition: attachment; filename="v2-0005-libpq-oauth-Use-the-PGoauthBearerRequestV2-API.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj8vb0vf5 RnJvbSBlNjU1ZDRlZTA5MWM5MWY0YzE4Njk1YTI3N2MxYjBmNjUwN2Y3ZDEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVGh1LCAyMyBPY3QgMjAyNSAxMjoyNDoyMCAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjIgNS83XSBsaWJwcS1vYXV0aDogVXNlIHRoZSBQR29hdXRoQmVhcmVyUmVxdWVz dFYyIEFQSQoKU3dpdGNoIHRoZSBwcml2YXRlIGxpYnBxLW9hdXRoIEFCSSB0byB0aGUgcHVibGlj IFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIKQVBJLiBBIGh1Z2UgYW1vdW50IG9mIGdsdWUgY29kZSBj YW4gYmUgcmVtb3ZlZCBhcyBwYXJ0IG9mIHRoaXMsIGFuZCBzZXZlcmFsCmNvZGUgcGF0aHMgY2Fu IGJlIGRlZHVwbGljYXRlZC4gQWRkaXRpb25hbGx5LCB0aGUgc2hhcmVkIGxpYnJhcnkgbm8KbG9u Z2VyIG5lZWRzIHRvIGNoYW5nZSBpdHMgbmFtZSBmb3IgZXZlcnkgbWFqb3IgcmVsZWFzZTsgaXQn cyBub3cganVzdAoibGlicHEtb2F1dGguc28iLgoKVE9ETzogVGhpcyBBUEkgbWlnaHQgbmVlZCBh IHB1YmxpYyBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBpbiBhZGRpdGlvbgogICAgICB0byB0aGUg cHJpdmF0ZSBOTFMgaW5pdGlhbGl6YXRpb24uIFNob3VsZCB3ZSBleHBvc2UgdGhlIGxvY2sgdG8K ICAgICAgdGhhdCBmdW5jdGlvbiBhcyB3ZWxsPwoKUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2 YW4uY2hhb0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FPWW1p JTJCbXJHZyUyQm5fWDJNT0xnZVdjajN2X00wMGdSOHV6X0Q3bU04eiUzRGRYMUpZVmJnJTQwbWFp bC5nbWFpbC5jb20KLS0tCiBzcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9SRUFETUUgICAgICAg IHwgIDU5ICsrLS0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL2V4cG9ydHMudHh0ICAgfCAg IDMgKy0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL21lc29uLmJ1aWxkICAgfCAgIDQgKy0K IHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL01ha2VmaWxlICAgICAgfCAgIDkgKy0KIHNyYy9p bnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuaCAgfCAgIDYgKy0KIHNyYy9pbnRlcmZh Y2VzL2xpYnBxLW9hdXRoL29hdXRoLXV0aWxzLmggfCAgNDIgKy0tCiBzcmMvaW50ZXJmYWNlcy9s aWJwcS9mZS1hdXRoLW9hdXRoLmggICAgIHwgICA3ICstCiBzcmMvaW50ZXJmYWNlcy9saWJwcS1v YXV0aC9vYXV0aC1jdXJsLmMgIHwgMzQ3ICsrKysrKysrKysrKystLS0tLS0tLS0tCiBzcmMvaW50 ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC11dGlscy5jIHwgIDYwICstLS0KIHNyYy9pbnRlcmZh Y2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYyAgICAgfCAxOTQgKysrKysrLS0tLS0tLQogMTAgZmls ZXMgY2hhbmdlZCwgMzI3IGluc2VydGlvbnMoKyksIDQwNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9SRUFETUUgYi9zcmMvaW50ZXJmYWNlcy9s aWJwcS1vYXV0aC9SRUFETUUKaW5kZXggNTUzOTYyZDY0NGUuLjI3NmU2NzczNWYwIDEwMDY0NAot LS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9SRUFETUUKKysrIGIvc3JjL2ludGVyZmFj ZXMvbGlicHEtb2F1dGgvUkVBRE1FCkBAIC0xMCw0OCArMTAsMzUgQEAgcmVzdWx0cyBpbiBhIGZh aWxlZCBjb25uZWN0aW9uLgogCiA9IExvYWQtVGltZSBBQkkgPQogCi1UaGlzIG1vZHVsZSBBQkkg aXMgYW4gaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZGV0YWlsLCBzbyBpdCdzIHN1YmplY3QgdG8g Y2hhbmdlCi1hY3Jvc3MgbWFqb3IgcmVsZWFzZXM7IHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgKGxp YnBxLW9hdXRoLU1BSk9SKSByZWZsZWN0cyB0aGlzLgotVGhlIG1vZHVsZSBleHBvcnRzIHRoZSBm b2xsb3dpbmcgc3ltYm9sczoKK0FzIG9mIHYxOSwgdGhpcyBtb2R1bGUgQUJJIGlzIHB1YmxpYyBh bmQgY2Fubm90IGNoYW5nZSBpbmNvbXBhdGlibHkgd2l0aG91dCBhbHNvCitjaGFuZ2luZyB0aGUg ZW50cnkgcG9pbnRzLiBCb3RoIGxpYnBxIGFuZCBsaWJwcS1vYXV0aCBtdXN0IGdyYWNlZnVsbHkg aGFuZGxlCitzaXR1YXRpb25zIHdoZXJlIHRoZSBvdGhlciBsaWJyYXJ5IGlzIG9mIGEgZGlmZmVy ZW50IHJlbGVhc2UgdmVyc2lvbiwgcGFzdCBvcgorZnV0dXJlLCBzaW5jZSB1cGdyYWRlcyB0byB0 aGUgbGlicmFyaWVzIG1heSBoYXBwZW4gaW4gZWl0aGVyIG9yZGVyLgogCi0tIFBvc3RncmVzUG9s bGluZ1N0YXR1c1R5cGUgcGdfZmVfcnVuX29hdXRoX2Zsb3coUEdjb25uICpjb25uKTsKLS0gdm9p ZCBwZ19mZV9jbGVhbnVwX29hdXRoX2Zsb3coUEdjb25uICpjb25uKTsKKyhEb24ndCBhc3N1bWUg dGhhdCBwYWNrYWdlIHZlcnNpb24gZGVwZW5kZW5jaWVzIGZyb20gbGlicHEtb2F1dGggdG8gbGli cHEgd2lsbAorc2ltcGxpZnkgdGhlIHNpdHVhdGlvbiEgU2luY2UgbGlicHEgZGVsYXktbG9hZHMg bGlicHEtb2F1dGgsIHdlIHN0aWxsIGhhdmUgdG8KK2hhbmRsZSBjYXNlcyB3aGVyZSBhIGxvbmct cnVubmluZyBjbGllbnQgYXBwbGljYXRpb24gaGFzIGEgbGlicHEgdGhhdCdzIG9sZGVyCit0aGFu IGEgbmV3bHkgdXBncmFkZWQgcGx1Z2luLikKIAotcGdfZmVfcnVuX29hdXRoX2Zsb3cgYW5kIHBn X2ZlX2NsZWFudXBfb2F1dGhfZmxvdyBhcmUgaW1wbGVtZW50YXRpb25zIG9mCi1jb25uLT5hc3lu Y19hdXRoIGFuZCBjb25uLT5jbGVhbnVwX2FzeW5jX2F1dGgsIHJlc3BlY3RpdmVseS4KK1RoZSBt b2R1bGUgZXhwb3J0cyB0aGUgZm9sbG93aW5nIHN5bWJvbDoKIAotQXQgdGhlIG1vbWVudCwgcGdf ZmVfcnVuX29hdXRoX2Zsb3coKSByZWxpZXMgb24gbGlicHEncyBwZ19nX3RocmVhZGxvY2sgYW5k Ci1saWJwcV9nZXR0ZXh0KCksIHdoaWNoIG11c3QgYmUgaW5qZWN0ZWQgYnkgbGlicHEgdXNpbmcg dGhpcyBpbml0aWFsaXphdGlvbgotZnVuY3Rpb24gYmVmb3JlIHRoZSBmbG93IGlzIHJ1bjoKKy0g aW50IHBnX3N0YXJ0X29hdXRoYmVhcmVyKFBHY29ubiAqY29ubiwgUEdvYXV0aEJlYXJlclJlcXVl c3RWMiAqcmVxdWVzdCk7CisKK1RoZSBtb2R1bGUgdGhlbiBiZWhhdmVzIGFzIGlmIGl0IGhhZCBy ZWNlaXZlZCBhIFBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOX1YyCityZXF1ZXN0IHZpYSB0 aGUgUFFhdXRoRGF0YUhvb2sgQVBJLCBhbmQgaXQgZWl0aGVyIGZpbGxzIGluIGFuIGV4aXN0aW5n IHRva2VuIG9yCitwb3B1bGF0ZXMgdGhlIG5lY2Vzc2FyeSBjYWxsYmFja3MgZm9yIGEgdG9rZW4g dG8gYmUgb2J0YWluZWQgYXN5bmNocm9ub3VzbHkuCisoU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZv ciBQR29hdXRoQmVhcmVyUmVxdWVzdC4pIFRoZSBmdW5jdGlvbiByZXR1cm5zIHplcm8gb24KK3N1 Y2Nlc3MgYW5kIG5vbnplcm8gb24gZmFpbHVyZS4KKworQWRkaXRpb25hbGx5LCBsaWJwcS1vYXV0 aCByZWxpZXMgb24gbGlicHEncyBwZ19nX3RocmVhZGxvY2sgYW5kIGxpYnBxX2dldHRleHQoKSwK K3doaWNoIG11c3QgYmUgaW5qZWN0ZWQgYnkgbGlicHEgdXNpbmcgdGhpcyBpbml0aWFsaXphdGlv biBmdW5jdGlvbiBiZWZvcmUgdGhlCitmbG93IGlzIHJ1bjoKIAogLSB2b2lkIGxpYnBxX29hdXRo X2luaXQocGd0aHJlYWRsb2NrX3QgdGhyZWFkbG9jaywKLQkJCQkJCWxpYnBxX2dldHRleHRfZnVu YyBnZXR0ZXh0X2ltcGwsCi0JCQkJCQljb25uX2Vycm9yTWVzc2FnZV9mdW5jIGVycm1zZ19pbXBs LAotCQkJCQkJY29ubl9vYXV0aF9jbGllbnRfaWRfZnVuYyBjbGllbnRpZF9pbXBsLAotCQkJCQkJ Y29ubl9vYXV0aF9jbGllbnRfc2VjcmV0X2Z1bmMgY2xpZW50c2VjcmV0X2ltcGwsCi0JCQkJCQlj b25uX29hdXRoX2Rpc2NvdmVyeV91cmlfZnVuYyBkaXNjb3Zlcnl1cmlfaW1wbCwKLQkJCQkJCWNv bm5fb2F1dGhfaXNzdWVyX2lkX2Z1bmMgaXNzdWVyaWRfaW1wbCwKLQkJCQkJCWNvbm5fb2F1dGhf c2NvcGVfZnVuYyBzY29wZV9pbXBsLAotCQkJCQkJY29ubl9zYXNsX3N0YXRlX2Z1bmMgc2FzbHN0 YXRlX2ltcGwsCi0JCQkJCQlzZXRfY29ubl9hbHRzb2NrX2Z1bmMgc2V0YWx0c29ja19pbXBsLAot CQkJCQkJc2V0X2Nvbm5fb2F1dGhfdG9rZW5fZnVuYyBzZXR0b2tlbl9pbXBsKTsKLQotSXQgYWxz byByZWxpZXMgb24gYWNjZXNzIHRvIHNldmVyYWwgbWVtYmVycyBvZiB0aGUgUEdjb25uIHN0cnVj dC4gTm90IG9ubHkgY2FuCi10aGVzZSBjaGFuZ2UgcG9zaXRpb25zIGFjcm9zcyBtaW5vciB2ZXJz aW9ucywgYnV0IHRoZSBvZmZzZXRzIGFyZW4ndCBuZWNlc3NhcmlseQotc3RhYmxlIHdpdGhpbiBh IHNpbmdsZSBtaW5vciByZWxlYXNlIChjb25uLT5lcnJvck1lc3NhZ2UsIGZvciBpbnN0YW5jZSwg Y2FuCi1jaGFuZ2Ugb2Zmc2V0cyBkZXBlbmRpbmcgb24gY29uZmlndXJlLXRpbWUgb3B0aW9ucyku IFRoZXJlZm9yZSB0aGUgbmVjZXNzYXJ5Ci1hY2Nlc3NvcnMgKG5hbWVkIGNvbm5fKikgYW5kIG11 dGF0b3JzIChzZXRfY29ubl8qKSBhcmUgaW5qZWN0ZWQgaGVyZS4gV2l0aCB0aGlzCi1hcHByb2Fj aCwgd2UgY2FuIHNhZmVseSBzZWFyY2ggdGhlIHN0YW5kYXJkIGRsb3BlbigpIHBhdGhzIChlLmcu IFJQQVRILAotTERfTElCUkFSWV9QQVRILCB0aGUgU08gY2FjaGUpIGZvciBhbiBpbXBsZW1lbnRh dGlvbiBtb2R1bGUgdG8gdXNlLCBldmVuIGlmIHRoYXQKLW1vZHVsZSB3YXNuJ3QgY29tcGlsZWQg YXQgdGhlIHNhbWUgdGltZSBhcyBsaWJwcSAtLSB3aGljaCBiZWNvbWVzIGVzcGVjaWFsbHkKLWlt cG9ydGFudCBkdXJpbmcgImxpdmUgdXBncmFkZSIgc2l0dWF0aW9ucyB3aGVyZSBhIHJ1bm5pbmcg bGlicHEgYXBwbGljYXRpb24gaGFzCi10aGUgbGlicHEtb2F1dGggbW9kdWxlIHVwZGF0ZWQgb3V0 IGZyb20gdW5kZXIgaXQgYmVmb3JlIGl0J3MgZmlyc3QgbG9hZGVkIGZyb20KLWRpc2suCisJCQkJ CQlsaWJwcV9nZXR0ZXh0X2Z1bmMgZ2V0dGV4dF9pbXBsKTsKIAogPSBTdGF0aWMgQnVpbGQgPQog CiBUaGUgc3RhdGljIGxpYnJhcnkgbGlicHEuYSBkb2VzIG5vdCBwZXJmb3JtIGFueSBkeW5hbWlj IGxvYWRpbmcuIElmIHRoZSBidWlsdGluCi1mbG93IGlzIGVuYWJsZWQsIHRoZSBhcHBsaWNhdGlv biBpcyBleHBlY3RlZCB0byBsaW5rIGFnYWluc3QgbGlicHEtb2F1dGguYQotZGlyZWN0bHkgdG8g cHJvdmlkZSB0aGUgbmVjZXNzYXJ5IHN5bWJvbHMuIChsaWJwcS5hIGFuZCBsaWJwcS1vYXV0aC5h IG11c3QgYmUKLXBhcnQgb2YgdGhlIHNhbWUgYnVpbGQuIFVubGlrZSB0aGUgZHluYW1pYyBtb2R1 bGUsIHRoZXJlIGFyZSBubyB0cmFuc2xhdGlvbgotc2hpbXMgcHJvdmlkZWQuKQorZmxvdyBpcyBl bmFibGVkLCB0aGUgYXBwbGljYXRpb24gaXMgZXhwZWN0ZWQgdG8gbGluayBhZ2FpbnN0IGxpYnBx LW9hdXRoLmEgdG8KK3Byb3ZpZGUgdGhlIG5lY2Vzc2FyeSBzeW1ib2wsIG9yIGVsc2UgaW1wbGVt ZW50IHBnX3N0YXJ0X29hdXRoYmVhcmVyKCkgaXRzZWxmLgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVy ZmFjZXMvbGlicHEtb2F1dGgvZXhwb3J0cy50eHQgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0 aC9leHBvcnRzLnR4dAppbmRleCA2ODkxYTgzZGJmOS4uN2JjMTJiODYwZDcgMTAwNjQ0Ci0tLSBh L3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL2V4cG9ydHMudHh0CisrKyBiL3NyYy9pbnRlcmZh Y2VzL2xpYnBxLW9hdXRoL2V4cG9ydHMudHh0CkBAIC0xLDQgKzEsMyBAQAogIyBzcmMvaW50ZXJm YWNlcy9saWJwcS1vYXV0aC9leHBvcnRzLnR4dAogbGlicHFfb2F1dGhfaW5pdCAgICAgICAgICAx Ci1wZ19mZV9ydW5fb2F1dGhfZmxvdyAgICAgIDIKLXBnX2ZlX2NsZWFudXBfb2F1dGhfZmxvdyAg MworcGdfc3RhcnRfb2F1dGhiZWFyZXIgICAgICAyCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNl cy9saWJwcS1vYXV0aC9tZXNvbi5idWlsZCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL21l c29uLmJ1aWxkCmluZGV4IDg4MWUzZjI0ZjEwLi4xMTE5OTEwMGIyOCAxMDA2NDQKLS0tIGEvc3Jj L2ludGVyZmFjZXMvbGlicHEtb2F1dGgvbWVzb24uYnVpbGQKKysrIGIvc3JjL2ludGVyZmFjZXMv bGlicHEtb2F1dGgvbWVzb24uYnVpbGQKQEAgLTM1LDkgKzM1LDcgQEAgbGlicHFfb2F1dGhfc3Qg PSBzdGF0aWNfbGlicmFyeSgnbGlicHEtb2F1dGgnLAogCiAjIFRoaXMgaXMgYW4gaW50ZXJuYWwg bW9kdWxlOyB3ZSBkb24ndCB3YW50IGFuIFNPTkFNRSBhbmQgdGhlcmVmb3JlIGRvIG5vdCBzZXQK ICMgU09fTUFKT1JfVkVSU0lPTi4KLWxpYnBxX29hdXRoX25hbWUgPSAnbGlicHEtb2F1dGgtQDBA Jy5mb3JtYXQocGdfdmVyc2lvbl9tYWpvcikKLQotbGlicHFfb2F1dGhfc28gPSBzaGFyZWRfbW9k dWxlKGxpYnBxX29hdXRoX25hbWUsCitsaWJwcV9vYXV0aF9zbyA9IHNoYXJlZF9tb2R1bGUoJ2xp YnBxLW9hdXRoJywKICAgbGlicHFfb2F1dGhfc291cmNlcyArIGxpYnBxX29hdXRoX3NvX3NvdXJj ZXMsCiAgIGluY2x1ZGVfZGlyZWN0b3JpZXM6IFtsaWJwcV9vYXV0aF9pbmMsIHBvc3RncmVzX2lu Y10sCiAgIGNfYXJnczogbGlicHFfb2F1dGhfc29fY19hcmdzLApkaWZmIC0tZ2l0IGEvc3JjL2lu dGVyZmFjZXMvbGlicHEtb2F1dGgvTWFrZWZpbGUgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0 aC9NYWtlZmlsZQppbmRleCA1MTE0NWYwODVhOC4uMGZlYmIzOTNmZWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL01ha2VmaWxlCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xp YnBxLW9hdXRoL01ha2VmaWxlCkBAIC0xNiwxMyArMTYsMTAgQEAgaW5jbHVkZSAkKHRvcF9idWls ZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogUEdGSUxFREVTQyA9ICJsaWJwcS1vYXV0aCAtIGRl dmljZSBhdXRob3JpemF0aW9uIE9BdXRoIHN1cHBvcnQiCiAKICMgVGhpcyBpcyBhbiBpbnRlcm5h bCBtb2R1bGU7IHdlIGRvbid0IHdhbnQgYW4gU09OQU1FIGFuZCB0aGVyZWZvcmUgZG8gbm90IHNl dAotIyBTT19NQUpPUl9WRVJTSU9OLgotTkFNRSA9IHBxLW9hdXRoLSQoTUFKT1JWRVJTSU9OKQot Ci0jIEZvcmNlIHRoZSBuYW1lICJsaWJwcS1vYXV0aCIgZm9yIGJvdGggdGhlIHN0YXRpYyBhbmQg c2hhcmVkIGxpYnJhcmllcy4gVGhlCi0jIHN0YXRpY2xpYiBkb2Vzbid0IG5lZWQgdmVyc2lvbiBp bmZvcm1hdGlvbiBpbiBpdHMgbmFtZS4KKyMgU09fTUFKT1JfVkVSU0lPTi4gVGhpcyByZXF1aXJl cyBhbiBleHBsaWNpdCBvdmVycmlkZSBmb3IgdGhlIHNoYXJlZCBsaWJyYXJ5CisjIG5hbWUuCitO QU1FID0gcHEtb2F1dGgKIG92ZXJyaWRlIHNobGliIDo9IGxpYiQoTkFNRSkkKERMU1VGRklYKQot b3ZlcnJpZGUgc3RsaWIgOj0gbGlicHEtb2F1dGguYQogCiBvdmVycmlkZSBDUFBGTEFHUyA6PSAt SSQobGlicHFfc3JjZGlyKSAtSSQodG9wX2J1aWxkZGlyKS9zcmMvcG9ydCAkKENQUEZMQUdTKSAk KExJQkNVUkxfQ1BQRkxBR1MpCiBvdmVycmlkZSBDRkxBR1MgKz0gJChQVEhSRUFEX0NGTEFHUykK ZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuaCBiL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuaAppbmRleCAyNDhkMDQyNGFkMC4u NDc3MDQ2ODk1ODYgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRo LWN1cmwuaAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmgKQEAg LTE3LDggKzE3LDggQEAKIAogI2luY2x1ZGUgImxpYnBxLWZlLmgiCiAKLS8qIEV4cG9ydGVkIGFz eW5jLWF1dGggY2FsbGJhY2tzLiAqLwotZXh0ZXJuIFBHRExMRVhQT1JUIFBvc3RncmVzUG9sbGlu Z1N0YXR1c1R5cGUgcGdfZmVfcnVuX29hdXRoX2Zsb3coUEdjb25uICpjb25uKTsKLWV4dGVybiBQ R0RMTEVYUE9SVCB2b2lkIHBnX2ZlX2NsZWFudXBfb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4pOwor LyogRXhwb3J0ZWQgZmxvdyBjYWxsYmFjay4gKi8KK2V4dGVybiBQR0RMTEVYUE9SVCBpbnQgcGdf c3RhcnRfb2F1dGhiZWFyZXIoUEdjb25uICpjb25uLAorCQkJCQkJCQkJCQlQR29hdXRoQmVhcmVy UmVxdWVzdFYyICpyZXF1ZXN0KTsKIAogI2VuZGlmCQkJCQkJCS8qIE9BVVRIX0NVUkxfSCAqLwpk aWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtdXRpbHMuaCBiL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLXV0aWxzLmgKaW5kZXggZjRmZmVmZWYyMDgu LjM0M2FhOTVjYWNmIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0 aC11dGlscy5oCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLXV0aWxzLmgK QEAgLTE1LDUzICsxNSwxNCBAQAogI2lmbmRlZiBPQVVUSF9VVElMU19ICiAjZGVmaW5lIE9BVVRI X1VUSUxTX0gKIAotI2luY2x1ZGUgImZlLWF1dGgtb2F1dGguaCIKICNpbmNsdWRlICJsaWJwcS1m ZS5oIgogI2luY2x1ZGUgInBxZXhwYnVmZmVyLmgiCiAKLS8qCi0gKiBBIGJhbmsgb2YgY2FsbGJh Y2tzIHRvIHNhZmVseSBhY2Nlc3MgbWVtYmVycyBvZiBQR2Nvbm4sIHdoaWNoIGFyZSBhbGwgcGFz c2VkCi0gKiB0byBsaWJwcV9vYXV0aF9pbml0KCkgYnkgbGlicHEuCi0gKgotICogS2VlcCB0aGVz ZSBhbGlnbmVkIHdpdGggdGhlIGRlZmluaXRpb25zIGluIGZlLWF1dGgtb2F1dGguYyBhcyB3ZWxs IGFzIHRoZQotICogc3RhdGljIGRlY2xhcmF0aW9ucyBpbiBvYXV0aC1jdXJsLmMuCi0gKi8KLSNk ZWZpbmUgREVDTEFSRV9HRVRURVIoVFlQRSwgTUVNQkVSKSBcCi0JdHlwZWRlZiBUWVBFICgqY29u bl8gIyMgTUVNQkVSICMjIF9mdW5jKSAoUEdjb25uICpjb25uKTsgXAotCWV4dGVybiBjb25uXyAj IyBNRU1CRVIgIyMgX2Z1bmMgY29ubl8gIyMgTUVNQkVSOwotCi0jZGVmaW5lIERFQ0xBUkVfU0VU VEVSKFRZUEUsIE1FTUJFUikgXAotCXR5cGVkZWYgdm9pZCAoKnNldF9jb25uXyAjIyBNRU1CRVIg IyMgX2Z1bmMpIChQR2Nvbm4gKmNvbm4sIFRZUEUgdmFsKTsgXAotCWV4dGVybiBzZXRfY29ubl8g IyMgTUVNQkVSICMjIF9mdW5jIHNldF9jb25uXyAjIyBNRU1CRVI7Ci0KLURFQ0xBUkVfR0VUVEVS KFBRRXhwQnVmZmVyLCBlcnJvck1lc3NhZ2UpOwotREVDTEFSRV9HRVRURVIoY2hhciAqLCBvYXV0 aF9jbGllbnRfaWQpOwotREVDTEFSRV9HRVRURVIoY2hhciAqLCBvYXV0aF9jbGllbnRfc2VjcmV0 KTsKLURFQ0xBUkVfR0VUVEVSKGNoYXIgKiwgb2F1dGhfZGlzY292ZXJ5X3VyaSk7Ci1ERUNMQVJF X0dFVFRFUihjaGFyICosIG9hdXRoX2lzc3Vlcl9pZCk7Ci1ERUNMQVJFX0dFVFRFUihjaGFyICos IG9hdXRoX3Njb3BlKTsKLURFQ0xBUkVfR0VUVEVSKGZlX29hdXRoX3N0YXRlICosIHNhc2xfc3Rh dGUpOwotCi1ERUNMQVJFX1NFVFRFUihwZ3NvY2tldCwgYWx0c29jayk7Ci1ERUNMQVJFX1NFVFRF UihjaGFyICosIG9hdXRoX3Rva2VuKTsKLQotI3VuZGVmIERFQ0xBUkVfR0VUVEVSCi0jdW5kZWYg REVDTEFSRV9TRVRURVIKLQogdHlwZWRlZiBjaGFyICooKmxpYnBxX2dldHRleHRfZnVuYykgKGNv bnN0IGNoYXIgKm1zZ2lkKTsKIAogLyogSW5pdGlhbGl6ZXMgbGlicHEtb2F1dGguICovCiBleHRl cm4gUEdETExFWFBPUlQgdm9pZCBsaWJwcV9vYXV0aF9pbml0KHBndGhyZWFkbG9ja190IHRocmVh ZGxvY2ssCi0JCQkJCQkJCQkJIGxpYnBxX2dldHRleHRfZnVuYyBnZXR0ZXh0X2ltcGwsCi0JCQkJ CQkJCQkJIGNvbm5fZXJyb3JNZXNzYWdlX2Z1bmMgZXJybXNnX2ltcGwsCi0JCQkJCQkJCQkJIGNv bm5fb2F1dGhfY2xpZW50X2lkX2Z1bmMgY2xpZW50aWRfaW1wbCwKLQkJCQkJCQkJCQkgY29ubl9v YXV0aF9jbGllbnRfc2VjcmV0X2Z1bmMgY2xpZW50c2VjcmV0X2ltcGwsCi0JCQkJCQkJCQkJIGNv bm5fb2F1dGhfZGlzY292ZXJ5X3VyaV9mdW5jIGRpc2NvdmVyeXVyaV9pbXBsLAotCQkJCQkJCQkJ CSBjb25uX29hdXRoX2lzc3Vlcl9pZF9mdW5jIGlzc3VlcmlkX2ltcGwsCi0JCQkJCQkJCQkJIGNv bm5fb2F1dGhfc2NvcGVfZnVuYyBzY29wZV9pbXBsLAotCQkJCQkJCQkJCSBjb25uX3Nhc2xfc3Rh dGVfZnVuYyBzYXNsc3RhdGVfaW1wbCwKLQkJCQkJCQkJCQkgc2V0X2Nvbm5fYWx0c29ja19mdW5j IHNldGFsdHNvY2tfaW1wbCwKLQkJCQkJCQkJCQkgc2V0X2Nvbm5fb2F1dGhfdG9rZW5fZnVuYyBz ZXR0b2tlbl9pbXBsKTsKKwkJCQkJCQkJCQkgbGlicHFfZ2V0dGV4dF9mdW5jIGdldHRleHRfaW1w bCk7CiAKIC8qCiAgKiBEdXBsaWNhdGVkIEFQSXMsIGNvcGllZCBmcm9tIGxpYnBxIChwcmltYXJp bHkgbGlicHEtaW50LmgsIHdoaWNoIHdlIGNhbm5vdApAQCAtNzUsNyArMzYsNiBAQCB0eXBlZGVm IGVudW0KIAlQR19CT09MX05PCQkJCQkvKiBObyAoZmFsc2UpICovCiB9IFBHVGVybmFyeUJvb2w7 CiAKLWV4dGVybiB2b2lkIGxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKFBHY29ubiAqY29ubiwgY29u c3QgY2hhciAqZm10LC4uLikgcGdfYXR0cmlidXRlX3ByaW50ZigyLCAzKTsKIGV4dGVybiBib29s IG9hdXRoX3Vuc2FmZV9kZWJ1Z2dpbmdfZW5hYmxlZCh2b2lkKTsKIGV4dGVybiBpbnQJcHFfYmxv Y2tfc2lncGlwZShzaWdzZXRfdCAqb3NpZ3NldCwgYm9vbCAqc2lncGlwZV9wZW5kaW5nKTsKIGV4 dGVybiB2b2lkIHBxX3Jlc2V0X3NpZ3BpcGUoc2lnc2V0X3QgKm9zaWdzZXQsIGJvb2wgc2lncGlw ZV9wZW5kaW5nLCBib29sIGdvdF9lcGlwZSk7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9s aWJwcS9mZS1hdXRoLW9hdXRoLmggYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRo LmgKaW5kZXggMGQ1OWU5MTYwNWIuLmI5YWVkODc5ZTY0IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJm YWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmgKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt YXV0aC1vYXV0aC5oCkBAIC0yNywxMSArMjcsNiBAQCBlbnVtIGZlX29hdXRoX3N0ZXAKIAlGRV9P QVVUSF9TRVJWRVJfRVJST1IsCiB9OwogCi0vKgotICogVGhpcyBzdHJ1Y3QgaXMgZXhwb3J0ZWQg dG8gdGhlIGxpYnBxLW9hdXRoIG1vZHVsZS4gSWYgY2hhbmdlcyBhcmUgbmVlZGVkCi0gKiBkdXJp bmcgYmFja3BvcnRzIHRvIHN0YWJsZSBicmFuY2hlcywgcGxlYXNlIGtlZXAgQUJJIGNvbXBhdGli aWxpdHkgKG5vCi0gKiBjaGFuZ2VzIHRvIGV4aXN0aW5nIG1lbWJlcnMsIGFkZCBuZXcgbWVtYmVy cyBhdCB0aGUgZW5kLCBldGMuKS4KLSAqLwogdHlwZWRlZiBzdHJ1Y3QKIHsKIAllbnVtIGZlX29h dXRoX3N0ZXAgc3RlcDsKQEAgLTM5LDEyICszNCwxMiBAQCB0eXBlZGVmIHN0cnVjdAogCVBHY29u bgkgICAqY29ubjsKIAl2b2lkCSAgICphc3luY19jdHg7CiAKKwlib29sCQlidWlsdGluOwogCXZv aWQJICAgKmJ1aWx0aW5fZmxvdzsKIH0gZmVfb2F1dGhfc3RhdGU7CiAKIGV4dGVybiB2b2lkIHBx Q2xlYXJPQXV0aFRva2VuKFBHY29ubiAqY29ubik7CiBleHRlcm4gYm9vbCBvYXV0aF91bnNhZmVf ZGVidWdnaW5nX2VuYWJsZWQodm9pZCk7Ci1leHRlcm4gYm9vbCB1c2VfYnVpbHRpbl9mbG93KFBH Y29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlKTsKIAogLyogTWVjaGFuaXNtcyBpbiBm ZS1hdXRoLW9hdXRoLmMgKi8KIGV4dGVybiBjb25zdCBwZ19mZV9zYXNsX21lY2ggcGdfb2F1dGhf bWVjaDsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwu YyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuYwppbmRleCA5MmE3ZjFj ZDM4My4uYjk0NDU4Yzg2MGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRo L29hdXRoLWN1cmwuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJs LmMKQEAgLTI5LDcgKzI5LDYgQEAKICNlbmRpZgogCiAjaW5jbHVkZSAiY29tbW9uL2pzb25hcGku aCIKLSNpbmNsdWRlICJmZS1hdXRoLW9hdXRoLmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIK ICNpbmNsdWRlICJvYXV0aC1jdXJsLmgiCiAKQEAgLTQ0LDIzICs0MywxMCBAQAogCiAjZWxzZQkJ CQkJCQkvKiAhVVNFX0RZTkFNSUNfT0FVVEggKi8KIAotLyoKLSAqIFN0YXRpYyBidWlsZHMgbWF5 IHJlbHkgb24gUEdjb25uIG9mZnNldHMgZGlyZWN0bHkuIEtlZXAgdGhlc2UgYWxpZ25lZCB3aXRo Ci0gKiB0aGUgYmFuayBvZiBjYWxsYmFja3MgaW4gb2F1dGgtdXRpbHMuaC4KLSAqLworLyogU3Rh dGljIGJ1aWxkcyBtYXkgbWFrZSB1c2Ugb2YgbGlicHEgaW50ZXJuYWxzIGRpcmVjdGx5LiAqLwor I2luY2x1ZGUgImZlLWF1dGgtb2F1dGguaCIKICNpbmNsdWRlICJsaWJwcS1pbnQuaCIKIAotI2Rl ZmluZSBjb25uX2Vycm9yTWVzc2FnZShDT05OKSAoJkNPTk4tPmVycm9yTWVzc2FnZSkKLSNkZWZp bmUgY29ubl9vYXV0aF9jbGllbnRfaWQoQ09OTikgKENPTk4tPm9hdXRoX2NsaWVudF9pZCkKLSNk ZWZpbmUgY29ubl9vYXV0aF9jbGllbnRfc2VjcmV0KENPTk4pIChDT05OLT5vYXV0aF9jbGllbnRf c2VjcmV0KQotI2RlZmluZSBjb25uX29hdXRoX2Rpc2NvdmVyeV91cmkoQ09OTikgKENPTk4tPm9h dXRoX2Rpc2NvdmVyeV91cmkpCi0jZGVmaW5lIGNvbm5fb2F1dGhfaXNzdWVyX2lkKENPTk4pIChD T05OLT5vYXV0aF9pc3N1ZXJfaWQpCi0jZGVmaW5lIGNvbm5fb2F1dGhfc2NvcGUoQ09OTikgKENP Tk4tPm9hdXRoX3Njb3BlKQotI2RlZmluZSBjb25uX3Nhc2xfc3RhdGUoQ09OTikgKENPTk4tPnNh c2xfc3RhdGUpCi0KLSNkZWZpbmUgc2V0X2Nvbm5fYWx0c29jayhDT05OLCBWQUwpIGRvIHsgQ09O Ti0+YWx0c29jayA9IFZBTDsgfSB3aGlsZSAoMCkKLSNkZWZpbmUgc2V0X2Nvbm5fb2F1dGhfdG9r ZW4oQ09OTiwgVkFMKSBkbyB7IENPTk4tPm9hdXRoX3Rva2VuID0gVkFMOyB9IHdoaWxlICgwKQot CiAjZW5kaWYJCQkJCQkJLyogVVNFX0RZTkFNSUNfT0FVVEggKi8KIAogLyogT25lIGZpbmFsIGd1 YXJkcmFpbCBhZ2FpbnN0IGFjY2lkZW50YWwgaW5jbHVzaW9uLi4uICovCkBAIC0yMjcsNiArMjEz LDE1IEBAIGVudW0gT0F1dGhTdGVwCiAgKi8KIHN0cnVjdCBhc3luY19jdHgKIHsKKwkvKiByZWxl dmFudCBjb25uZWN0aW9uIG9wdGlvbnMgY2FjaGVkIGZyb20gdGhlIFBHY29ubiAqLworCWNoYXIJ ICAgKmNsaWVudF9pZDsJCS8qIG9hdXRoX2NsaWVudF9pZCAqLworCWNoYXIJICAgKmNsaWVudF9z ZWNyZXQ7CS8qIG9hdXRoX2NsaWVudF9zZWNyZXQgKG1heSBiZSBOVUxMKSAqLworCisJLyogb3B0 aW9ucyBjYWNoZWQgZnJvbSB0aGUgUEdvYXV0aEJlYXJlclJlcXVlc3QgKHdlIGRvbid0IG93biB0 aGVzZSkgKi8KKwljb25zdCBjaGFyICpkaXNjb3ZlcnlfdXJpOworCWNvbnN0IGNoYXIgKmlzc3Vl cl9pZDsKKwljb25zdCBjaGFyICpzY29wZTsKKwogCWVudW0gT0F1dGhTdGVwIHN0ZXA7CQkvKiB3 aGVyZSBhcmUgd2UgaW4gdGhlIGZsb3c/ICovCiAKIAlpbnQJCQl0aW1lcmZkOwkJLyogZGVzY3Jp cHRvciBmb3Igc2lnbmFsaW5nIGFzeW5jIHRpbWVvdXRzICovCkBAIC0yODYsNyArMjgxLDcgQEAg c3RydWN0IGFzeW5jX2N0eAogICogVGVhcnMgZG93biB0aGUgQ3VybCBoYW5kbGVzIGFuZCBmcmVl cyB0aGUgYXN5bmNfY3R4LgogICovCiBzdGF0aWMgdm9pZAotZnJlZV9hc3luY19jdHgoUEdjb25u ICpjb25uLCBzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4KQorZnJlZV9hc3luY19jdHgoUEdvYXV0aEJl YXJlclJlcXVlc3RWMiAqcmVxLCBzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4KQogewogCS8qCiAJICog SW4gZ2VuZXJhbCwgbm9uZSBvZiB0aGUgZXJyb3IgY2FzZXMgYmVsb3cgc2hvdWxkIGV2ZXIgaGFw cGVuIGlmIHdlIGhhdmUKQEAgLTMwNCw5ICsyOTksOSBAQCBmcmVlX2FzeW5jX2N0eChQR2Nvbm4g KmNvbm4sIHN0cnVjdCBhc3luY19jdHggKmFjdHgpCiAJCUNVUkxNY29kZQllcnIgPSBjdXJsX211 bHRpX3JlbW92ZV9oYW5kbGUoYWN0eC0+Y3VybG0sIGFjdHgtPmN1cmwpOwogCiAJCWlmIChlcnIp Ci0JCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLAotCQkJCQkJCQkJImxpYmN1cmwgZWFz eSBoYW5kbGUgcmVtb3ZhbCBmYWlsZWQ6ICVzIiwKLQkJCQkJCQkJCWN1cmxfbXVsdGlfc3RyZXJy b3IoZXJyKSk7CisJCQlhcHBlbmRQUUV4cEJ1ZmZlcihyZXEtPmVycm9yLAorCQkJCQkJCSAgbGli cHFfZ2V0dGV4dCgibGliY3VybCBlYXN5IGhhbmRsZSByZW1vdmFsIGZhaWxlZDogJXMiKSwKKwkJ CQkJCQkgIGN1cmxfbXVsdGlfc3RyZXJyb3IoZXJyKSk7CiAJfQogCiAJaWYgKGFjdHgtPmN1cmwp CkBAIC0zMjQsOSArMzE5LDkgQEAgZnJlZV9hc3luY19jdHgoUEdjb25uICpjb25uLCBzdHJ1Y3Qg YXN5bmNfY3R4ICphY3R4KQogCQlDVVJMTWNvZGUJZXJyID0gY3VybF9tdWx0aV9jbGVhbnVwKGFj dHgtPmN1cmxtKTsKIAogCQlpZiAoZXJyKQotCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29u biwKLQkJCQkJCQkJCSJsaWJjdXJsIG11bHRpIGhhbmRsZSBjbGVhbnVwIGZhaWxlZDogJXMiLAot CQkJCQkJCQkJY3VybF9tdWx0aV9zdHJlcnJvcihlcnIpKTsKKwkJCWFwcGVuZFBRRXhwQnVmZmVy KHJlcS0+ZXJyb3IsCisJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJsaWJjdXJsIG11bHRpIGhhbmRs ZSBjbGVhbnVwIGZhaWxlZDogJXMiKSwKKwkJCQkJCQkgIGN1cmxfbXVsdGlfc3RyZXJyb3IoZXJy KSk7CiAJfQogCiAJZnJlZV9wcm92aWRlcigmYWN0eC0+cHJvdmlkZXIpOwpAQCAtMzQxLDI5ICsz MzYsNjcgQEAgZnJlZV9hc3luY19jdHgoUEdjb25uICpjb25uLCBzdHJ1Y3QgYXN5bmNfY3R4ICph Y3R4KQogCWlmIChhY3R4LT50aW1lcmZkID49IDApCiAJCWNsb3NlKGFjdHgtPnRpbWVyZmQpOwog CisJZnJlZShhY3R4LT5jbGllbnRfaWQpOworCWZyZWUoYWN0eC0+Y2xpZW50X3NlY3JldCk7CisK IAlmcmVlKGFjdHgpOwogfQogCiAvKgotICogUmVsZWFzZSByZXNvdXJjZXMgdXNlZCBmb3IgdGhl IGFzeW5jaHJvbm91cyBleGNoYW5nZSBhbmQgZGlzY29ubmVjdCB0aGUKLSAqIGFsdHNvY2suCi0g KgotICogVGhpcyBpcyBjYWxsZWQgZWl0aGVyIGF0IHRoZSBlbmQgb2YgYSBzdWNjZXNzZnVsIGF1 dGhlbnRpY2F0aW9uLCBvciBkdXJpbmcKLSAqIHBxRHJvcENvbm5lY3Rpb24oKSwgc28gd2Ugd29u J3QgbGVhayByZXNvdXJjZXMgZXZlbiBpZiBQUWNvbm5lY3RQb2xsKCkgbmV2ZXIKLSAqIGNhbGxz IHVzIGJhY2suCisgKiBSZWxlYXNlIHJlc291cmNlcyB1c2VkIGZvciB0aGUgYXN5bmNocm9ub3Vz IGV4Y2hhbmdlLgogICovCi12b2lkCi1wZ19mZV9jbGVhbnVwX29hdXRoX2Zsb3coUEdjb25uICpj b25uKQorc3RhdGljIHZvaWQKK3BnX2ZlX2NsZWFudXBfb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4s IFBHb2F1dGhCZWFyZXJSZXF1ZXN0ICpyZXF1ZXN0KQogewotCWZlX29hdXRoX3N0YXRlICpzdGF0 ZSA9IGNvbm5fc2FzbF9zdGF0ZShjb25uKTsKKwlzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4ID0gcmVx dWVzdC0+dXNlcjsKKworCS8qIHJlcXVlc3QtPmNsZWFudXAgaXMgb25seSBzZXQgYWZ0ZXIgYWN0 eCBoYXMgYmVlbiBhbGxvY2F0ZWQuICovCisJQXNzZXJ0KGFjdHgpOwogCi0JaWYgKHN0YXRlLT5h c3luY19jdHgpCisJZnJlZV9hc3luY19jdHgoKFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKikgcmVx dWVzdCwgYWN0eCk7CisJcmVxdWVzdC0+dXNlciA9IE5VTEw7CisKKwkvKiBsaWJwcSBoYXMgbWFk ZSBpdHMgb3duIGNvcHkgb2YgdGhlIHRva2VuOyBjbGVhciBvdXJzIG5vdy4gKi8KKwlpZiAocmVx dWVzdC0+dG9rZW4pCiAJewotCQlmcmVlX2FzeW5jX2N0eChjb25uLCBzdGF0ZS0+YXN5bmNfY3R4 KTsKLQkJc3RhdGUtPmFzeW5jX2N0eCA9IE5VTEw7CisJCWV4cGxpY2l0X2J6ZXJvKHJlcXVlc3Qt PnRva2VuLCBzdHJsZW4ocmVxdWVzdC0+dG9rZW4pKTsKKwkJZnJlZShyZXF1ZXN0LT50b2tlbik7 CisJCXJlcXVlc3QtPnRva2VuID0gTlVMTDsKIAl9Cit9CisKKy8qCisgKiBCdWlsZHMgYW4gZXJy b3IgbWVzc2FnZSBmcm9tIGFjdHggYW5kIGFwcGVuZHMgaXQgdG8gcmVxLT5lcnJvci4KKyAqLwor c3RhdGljIHZvaWQKK2FwcGVuZF9hY3R4X2Vycm9yKFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJl cSwgc3RydWN0IGFzeW5jX2N0eCAqYWN0eCkKK3sKKwlQUUV4cEJ1ZmZlciBlcnJidWYgPSByZXEt PmVycm9yOworCisJLyoKKwkgKiBBc3NlbWJsZSB0aGUgdGhyZWUgcGFydHMgb2Ygb3VyIGVycm9y OiBjb250ZXh0LCBib2R5LCBhbmQgZGV0YWlsLiBTZWUKKwkgKiBhbHNvIHRoZSBkb2N1bWVudGF0 aW9uIGZvciBzdHJ1Y3QgYXN5bmNfY3R4LgorCSAqLworCWlmIChhY3R4LT5lcnJjdHgpCisJCWFw cGVuZFBRRXhwQnVmZmVyKGVycmJ1ZiwgIiVzOiAiLCBhY3R4LT5lcnJjdHgpOworCisJaWYgKFBR RXhwQnVmZmVyRGF0YUJyb2tlbihhY3R4LT5lcnJidWYpKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihlcnJidWYsIGxpYnBxX2dldHRleHQoIm91dCBvZiBtZW1vcnkiKSk7CisJZWxzZQorCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihlcnJidWYsIGFjdHgtPmVycmJ1Zi5kYXRhKTsKKworCWlmIChhY3R4 LT5jdXJsX2VyclswXSkKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyKGVycmJ1ZiwgIiAobGliY3Vy bDogJXMpIiwgYWN0eC0+Y3VybF9lcnIpOwogCi0Jc2V0X2Nvbm5fYWx0c29jayhjb25uLCBQR0lO VkFMSURfU09DS0VUKTsKKwkJLyogU29tZXRpbWVzIGxpYmN1cmwgYWRkcyBhIG5ld2xpbmUgdG8g dGhlIGVycm9yIGJ1ZmZlci4gOiggKi8KKwkJaWYgKGVycmJ1Zi0+bGVuID49IDIgJiYgZXJyYnVm LT5kYXRhW2VycmJ1Zi0+bGVuIC0gMl0gPT0gJ1xuJykKKwkJeworCQkJZXJyYnVmLT5kYXRhW2Vy cmJ1Zi0+bGVuIC0gMl0gPSAnKSc7CisJCQllcnJidWYtPmRhdGFbZXJyYnVmLT5sZW4gLSAxXSA9 ICdcMCc7CisJCQllcnJidWYtPmxlbi0tOworCQl9CisJfQogfQogCiAvKgpAQCAtMjE5OSw3ICsy MjMyLDcgQEAgc3RhdGljIGJvb2wKIGNoZWNrX2lzc3VlcihzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4 LCBQR2Nvbm4gKmNvbm4pCiB7CiAJY29uc3Qgc3RydWN0IHByb3ZpZGVyICpwcm92aWRlciA9ICZh Y3R4LT5wcm92aWRlcjsKLQljb25zdCBjaGFyICpvYXV0aF9pc3N1ZXJfaWQgPSBjb25uX29hdXRo X2lzc3Vlcl9pZChjb25uKTsKKwljb25zdCBjaGFyICpvYXV0aF9pc3N1ZXJfaWQgPSBhY3R4LT5p c3N1ZXJfaWQ7CiAKIAlBc3NlcnQob2F1dGhfaXNzdWVyX2lkKTsJLyogZW5zdXJlZCBieSBzZXR1 cF9vYXV0aF9wYXJhbWV0ZXJzKCkgKi8KIAlBc3NlcnQocHJvdmlkZXItPmlzc3Vlcik7CS8qIGVu c3VyZWQgYnkgcGFyc2VfcHJvdmlkZXIoKSAqLwpAQCAtMjMwMiw4ICsyMzM1LDggQEAgY2hlY2tf Zm9yX2RldmljZV9mbG93KHN0cnVjdCBhc3luY19jdHggKmFjdHgpCiBzdGF0aWMgYm9vbAogYWRk X2NsaWVudF9pZGVudGlmaWNhdGlvbihzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4LCBQUUV4cEJ1ZmZl ciByZXFib2R5LCBQR2Nvbm4gKmNvbm4pCiB7Ci0JY29uc3QgY2hhciAqb2F1dGhfY2xpZW50X2lk ID0gY29ubl9vYXV0aF9jbGllbnRfaWQoY29ubik7Ci0JY29uc3QgY2hhciAqb2F1dGhfY2xpZW50 X3NlY3JldCA9IGNvbm5fb2F1dGhfY2xpZW50X3NlY3JldChjb25uKTsKKwljb25zdCBjaGFyICpv YXV0aF9jbGllbnRfaWQgPSBhY3R4LT5jbGllbnRfaWQ7CisJY29uc3QgY2hhciAqb2F1dGhfY2xp ZW50X3NlY3JldCA9IGFjdHgtPmNsaWVudF9zZWNyZXQ7CiAKIAlib29sCQlzdWNjZXNzID0gZmFs c2U7CiAJY2hhcgkgICAqdXNlcm5hbWUgPSBOVUxMOwpAQCAtMjM4NiwxMSArMjQxOSwxMCBAQCBj bGVhbnVwOgogc3RhdGljIGJvb2wKIHN0YXJ0X2RldmljZV9hdXRoeihzdHJ1Y3QgYXN5bmNfY3R4 ICphY3R4LCBQR2Nvbm4gKmNvbm4pCiB7Ci0JY29uc3QgY2hhciAqb2F1dGhfc2NvcGUgPSBjb25u X29hdXRoX3Njb3BlKGNvbm4pOworCWNvbnN0IGNoYXIgKm9hdXRoX3Njb3BlID0gYWN0eC0+c2Nv cGU7CiAJY29uc3QgY2hhciAqZGV2aWNlX2F1dGh6X3VyaSA9IGFjdHgtPnByb3ZpZGVyLmRldmlj ZV9hdXRob3JpemF0aW9uX2VuZHBvaW50OwogCVBRRXhwQnVmZmVyIHdvcmtfYnVmZmVyID0gJmFj dHgtPndvcmtfZGF0YTsKIAotCUFzc2VydChjb25uX29hdXRoX2NsaWVudF9pZChjb25uKSk7IC8q IGVuc3VyZWQgYnkgc2V0dXBfb2F1dGhfcGFyYW1ldGVycygpICovCiAJQXNzZXJ0KGRldmljZV9h dXRoel91cmkpOwkvKiBlbnN1cmVkIGJ5IGNoZWNrX2Zvcl9kZXZpY2VfZmxvdygpICovCiAKIAkv KiBDb25zdHJ1Y3Qgb3VyIHJlcXVlc3QgYm9keS4gKi8KQEAgLTI0NzgsNyArMjUxMCw2IEBAIHN0 YXJ0X3Rva2VuX3JlcXVlc3Qoc3RydWN0IGFzeW5jX2N0eCAqYWN0eCwgUEdjb25uICpjb25uKQog CWNvbnN0IGNoYXIgKmRldmljZV9jb2RlID0gYWN0eC0+YXV0aHouZGV2aWNlX2NvZGU7CiAJUFFF eHBCdWZmZXIgd29ya19idWZmZXIgPSAmYWN0eC0+d29ya19kYXRhOwogCi0JQXNzZXJ0KGNvbm5f b2F1dGhfY2xpZW50X2lkKGNvbm4pKTsgLyogZW5zdXJlZCBieSBzZXR1cF9vYXV0aF9wYXJhbWV0 ZXJzKCkgKi8KIAlBc3NlcnQodG9rZW5fdXJpKTsJCQkvKiBlbnN1cmVkIGJ5IHBhcnNlX3Byb3Zp ZGVyKCkgKi8KIAlBc3NlcnQoZGV2aWNlX2NvZGUpOwkJLyogZW5zdXJlZCBieSBwYXJzZV9kZXZp Y2VfYXV0aHooKSAqLwogCkBAIC0yNjU3LDcgKzI2ODgsNyBAQCBwcm9tcHRfdXNlcihzdHJ1Y3Qg YXN5bmNfY3R4ICphY3R4LCBQR2Nvbm4gKmNvbm4pCiAgKiBmdW5jdGlvbiB3aWxsIG5vdCB0cnkg dG8gcmVpbml0aWFsaXplIEN1cmwgb24gc3VjY2Vzc2l2ZSBjYWxscy4KICAqLwogc3RhdGljIGJv b2wKLWluaXRpYWxpemVfY3VybChQR2Nvbm4gKmNvbm4pCitpbml0aWFsaXplX2N1cmwoUEdvYXV0 aEJlYXJlclJlcXVlc3RWMiAqcmVxKQogewogCS8qCiAJICogRG9uJ3QgbGV0IHRoZSBjb21waWxl ciBwbGF5IHRyaWNrcyB3aXRoIHRoaXMgdmFyaWFibGUuIEluIHRoZQpAQCAtMjY5MSw4ICsyNzIy LDggQEAgaW5pdGlhbGl6ZV9jdXJsKFBHY29ubiAqY29ubikKIAkJZ290byBkb25lOwogCWVsc2Ug aWYgKGluaXRfc3VjY2Vzc2Z1bCA9PSBQR19CT09MX05PKQogCXsKLQkJbGlicHFfYXBwZW5kX2Nv bm5fZXJyb3IoY29ubiwKLQkJCQkJCQkJImN1cmxfZ2xvYmFsX2luaXQgcHJldmlvdXNseSBmYWls ZWQgZHVyaW5nIE9BdXRoIHNldHVwIik7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHJlcS0+ZXJy b3IsCisJCQkJCQkJIGxpYnBxX2dldHRleHQoImN1cmxfZ2xvYmFsX2luaXQgcHJldmlvdXNseSBm YWlsZWQgZHVyaW5nIE9BdXRoIHNldHVwIikpOwogCQlnb3RvIGRvbmU7CiAJfQogCkBAIC0yNzEw LDggKzI3NDEsOCBAQCBpbml0aWFsaXplX2N1cmwoUEdjb25uICpjb25uKQogCSAqLwogCWlmIChj dXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCAmIH5DVVJMX0dMT0JBTF9XSU4zMikgIT0g Q1VSTEVfT0spCiAJewotCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLAotCQkJCQkJCQki Y3VybF9nbG9iYWxfaW5pdCBmYWlsZWQgZHVyaW5nIE9BdXRoIHNldHVwIik7CisJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHJlcS0+ZXJyb3IsCisJCQkJCQkJIGxpYnBxX2dldHRleHQoImN1cmxfZ2xv YmFsX2luaXQgZmFpbGVkIGR1cmluZyBPQXV0aCBzZXR1cCIpKTsKIAkJaW5pdF9zdWNjZXNzZnVs ID0gUEdfQk9PTF9OTzsKIAkJZ290byBkb25lOwogCX0KQEAgLTI3MzIsMTEgKzI3NjMsMTIgQEAg aW5pdGlhbGl6ZV9jdXJsKFBHY29ubiAqY29ubikKIAkJICogSW4gYSBkb3duZ3JhZGUgc2l0dWF0 aW9uLCB0aGUgZGFtYWdlIGlzIGFscmVhZHkgZG9uZS4gQ3VybCBnbG9iYWwKIAkJICogc3RhdGUg bWF5IGJlIGNvcnJ1cHRlZC4gQmUgbm9pc3kuCiAJCSAqLwotCQlsaWJwcV9hcHBlbmRfY29ubl9l cnJvcihjb25uLCAibGliY3VybCBpcyBubyBsb25nZXIgdGhyZWFkLXNhZmVcbiIKLQkJCQkJCQkJ Ilx0Q3VybCBpbml0aWFsaXphdGlvbiB3YXMgcmVwb3J0ZWQgdGhyZWFkLXNhZmUgd2hlbiBsaWJw cVxuIgotCQkJCQkJCQkiXHR3YXMgY29tcGlsZWQsIGJ1dCB0aGUgY3VycmVudGx5IGluc3RhbGxl ZCB2ZXJzaW9uIG9mXG4iCi0JCQkJCQkJCSJcdGxpYmN1cmwgcmVwb3J0cyB0aGF0IGl0IGlzIG5v dC4gUmVjb21waWxlIGxpYnBxIGFnYWluc3RcbiIKLQkJCQkJCQkJIlx0dGhlIGluc3RhbGxlZCB2 ZXJzaW9uIG9mIGxpYmN1cmwuIik7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHJlcS0+ZXJyb3Is CisJCQkJCQkJIGxpYnBxX2dldHRleHQoImxpYmN1cmwgaXMgbm8gbG9uZ2VyIHRocmVhZC1zYWZl XG4iCisJCQkJCQkJCQkJICAgIlx0Q3VybCBpbml0aWFsaXphdGlvbiB3YXMgcmVwb3J0ZWQgdGhy ZWFkLXNhZmUgd2hlbiBsaWJwcVxuIgorCQkJCQkJCQkJCSAgICJcdHdhcyBjb21waWxlZCwgYnV0 IHRoZSBjdXJyZW50bHkgaW5zdGFsbGVkIHZlcnNpb24gb2ZcbiIKKwkJCQkJCQkJCQkgICAiXHRs aWJjdXJsIHJlcG9ydHMgdGhhdCBpdCBpcyBub3QuIFJlY29tcGlsZSBsaWJwcSBhZ2FpbnN0XG4i CisJCQkJCQkJCQkJICAgIlx0dGhlIGluc3RhbGxlZCB2ZXJzaW9uIG9mIGxpYmN1cmwuIikpOwog CQlpbml0X3N1Y2Nlc3NmdWwgPSBQR19CT09MX05POwogCQlnb3RvIGRvbmU7CiAJfQpAQCAtMjc2 Niw1NCArMjc5OCwxNiBAQCBkb25lOgogICogcHJvdmlkZXIuCiAgKi8KIHN0YXRpYyBQb3N0Z3Jl c1BvbGxpbmdTdGF0dXNUeXBlCi1wZ19mZV9ydW5fb2F1dGhfZmxvd19pbXBsKFBHY29ubiAqY29u bikKK3BnX2ZlX3J1bl9vYXV0aF9mbG93X2ltcGwoUEdjb25uICpjb25uLCBQR29hdXRoQmVhcmVy UmVxdWVzdFYyICpyZXF1ZXN0LAorCQkJCQkJICBpbnQgKmFsdHNvY2spCiB7Ci0JZmVfb2F1dGhf c3RhdGUgKnN0YXRlID0gY29ubl9zYXNsX3N0YXRlKGNvbm4pOwotCXN0cnVjdCBhc3luY19jdHgg KmFjdHg7CisJc3RydWN0IGFzeW5jX2N0eCAqYWN0eCA9IHJlcXVlc3QtPnYxLnVzZXI7CiAJY2hh cgkgICAqb2F1dGhfdG9rZW4gPSBOVUxMOwotCVBRRXhwQnVmZmVyIGVycmJ1ZjsKLQotCWlmICgh aW5pdGlhbGl6ZV9jdXJsKGNvbm4pKQotCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7Ci0K LQlpZiAoIXN0YXRlLT5hc3luY19jdHgpCi0JewotCQkvKgotCQkgKiBDcmVhdGUgb3VyIGFzeW5j aHJvbm91cyBzdGF0ZSwgYW5kIGhvb2sgaXQgaW50byB0aGUgdXBwZXItbGV2ZWwKLQkJICogT0F1 dGggc3RhdGUgaW1tZWRpYXRlbHksIHNvIGFueSBmYWlsdXJlcyBiZWxvdyB3b24ndCBsZWFrIHRo ZQotCQkgKiBjb250ZXh0IGFsbG9jYXRpb24uCi0JCSAqLwotCQlhY3R4ID0gY2FsbG9jKDEsIHNp emVvZigqYWN0eCkpOwotCQlpZiAoIWFjdHgpCi0JCXsKLQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vy cm9yKGNvbm4sICJvdXQgb2YgbWVtb3J5Iik7Ci0JCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlM RUQ7Ci0JCX0KLQotCQlhY3R4LT5tdXggPSBQR0lOVkFMSURfU09DS0VUOwotCQlhY3R4LT50aW1l cmZkID0gLTE7Ci0KLQkJLyogU2hvdWxkIHdlIGVuYWJsZSB1bnNhZmUgZmVhdHVyZXM/ICovCi0J CWFjdHgtPmRlYnVnZ2luZyA9IG9hdXRoX3Vuc2FmZV9kZWJ1Z2dpbmdfZW5hYmxlZCgpOwotCi0J CXN0YXRlLT5hc3luY19jdHggPSBhY3R4OwotCi0JCWluaXRQUUV4cEJ1ZmZlcigmYWN0eC0+d29y a19kYXRhKTsKLQkJaW5pdFBRRXhwQnVmZmVyKCZhY3R4LT5lcnJidWYpOwotCi0JCWlmICghc2V0 dXBfbXVsdGlwbGV4ZXIoYWN0eCkpCi0JCQlnb3RvIGVycm9yX3JldHVybjsKLQotCQlpZiAoIXNl dHVwX2N1cmxfaGFuZGxlcyhhY3R4KSkKLQkJCWdvdG8gZXJyb3JfcmV0dXJuOwotCX0KLQotCWFj dHggPSBzdGF0ZS0+YXN5bmNfY3R4OwogCiAJZG8KIAl7CiAJCS8qIEJ5IGRlZmF1bHQsIHRoZSBt dWx0aXBsZXhlciBpcyB0aGUgYWx0c29jay4gUmVhc3NpZ24gYXMgZGVzaXJlZC4gKi8KLQkJc2V0 X2Nvbm5fYWx0c29jayhjb25uLCBhY3R4LT5tdXgpOworCQkqYWx0c29jayA9IGFjdHgtPm11eDsK IAogCQlzd2l0Y2ggKGFjdHgtPnN0ZXApCiAJCXsKQEAgLTI4NzgsNyArMjg3Miw3IEBAIHBnX2Zl X3J1bl9vYXV0aF9mbG93X2ltcGwoUEdjb25uICpjb25uKQogCiAJCQkJCWlmICghZXhwaXJlZCkK IAkJCQkJewotCQkJCQkJc2V0X2Nvbm5fYWx0c29jayhjb25uLCBhY3R4LT50aW1lcmZkKTsKKwkJ CQkJCSphbHRzb2NrID0gYWN0eC0+dGltZXJmZDsKIAkJCQkJCXJldHVybiBQR1JFU19QT0xMSU5H X1JFQURJTkc7CiAJCQkJCX0KIApAQCAtMjg5NSw3ICsyODg5LDcgQEAgcGdfZmVfcnVuX29hdXRo X2Zsb3dfaW1wbChQR2Nvbm4gKmNvbm4pCiAJCXsKIAkJCWNhc2UgT0FVVEhfU1RFUF9JTklUOgog CQkJCWFjdHgtPmVycmN0eCA9IGxpYnBxX2dldHRleHQoImZhaWxlZCB0byBmZXRjaCBPcGVuSUQg ZGlzY292ZXJ5IGRvY3VtZW50Iik7Ci0JCQkJaWYgKCFzdGFydF9kaXNjb3ZlcnkoYWN0eCwgY29u bl9vYXV0aF9kaXNjb3ZlcnlfdXJpKGNvbm4pKSkKKwkJCQlpZiAoIXN0YXJ0X2Rpc2NvdmVyeShh Y3R4LCBhY3R4LT5kaXNjb3ZlcnlfdXJpKSkKIAkJCQkJZ290byBlcnJvcl9yZXR1cm47CiAKIAkJ CQlhY3R4LT5zdGVwID0gT0FVVEhfU1RFUF9ESVNDT1ZFUlk7CkBAIC0yOTM1LDEwICsyOTI5LDEw IEBAIHBnX2ZlX3J1bl9vYXV0aF9mbG93X2ltcGwoUEdjb25uICpjb25uKQogCQkJCQlnb3RvIGVy cm9yX3JldHVybjsKIAogCQkJCS8qCi0JCQkJICogSG9vayBhbnkgb2F1dGhfdG9rZW4gaW50byB0 aGUgUEdjb25uIGltbWVkaWF0ZWx5IHNvIHRoYXQKLQkJCQkgKiB0aGUgYWxsb2NhdGlvbiBpc24n dCBsb3N0IGluIGNhc2Ugb2YgYW4gZXJyb3IuCisJCQkJICogSG9vayBhbnkgb2F1dGhfdG9rZW4g aW50byB0aGUgcmVxdWVzdCBzdHJ1Y3QgaW1tZWRpYXRlbHkgc28KKwkJCQkgKiB0aGF0IHRoZSBh bGxvY2F0aW9uIGlzbid0IGxvc3QgaW4gY2FzZSBvZiBhbiBlcnJvci4KIAkJCQkgKi8KLQkJCQlz ZXRfY29ubl9vYXV0aF90b2tlbihjb25uLCBvYXV0aF90b2tlbik7CisJCQkJcmVxdWVzdC0+djEu dG9rZW4gPSBvYXV0aF90b2tlbjsKIAogCQkJCWlmICghYWN0eC0+dXNlcl9wcm9tcHRlZCkKIAkJ CQl7CkBAIC0yOTY3LDcgKzI5NjEsNyBAQCBwZ19mZV9ydW5fb2F1dGhfZmxvd19pbXBsKFBHY29u biAqY29ubikKIAkJCQkgKiB0aGUgY2xpZW50IHdhaXQgZGlyZWN0bHkgb24gdGhlIHRpbWVyZmQg cmF0aGVyIHRoYW4gdGhlCiAJCQkJICogbXVsdGlwbGV4ZXIuCiAJCQkJICovCi0JCQkJc2V0X2Nv bm5fYWx0c29jayhjb25uLCBhY3R4LT50aW1lcmZkKTsKKwkJCQkqYWx0c29jayA9IGFjdHgtPnRp bWVyZmQ7CiAKIAkJCQlhY3R4LT5zdGVwID0gT0FVVEhfU1RFUF9XQUlUX0lOVEVSVkFMOwogCQkJ CWFjdHgtPnJ1bm5pbmcgPSAxOwpAQCAtMjk5Myw0OCArMjk4NywyMSBAQCBwZ19mZV9ydW5fb2F1 dGhfZmxvd19pbXBsKFBHY29ubiAqY29ubikKIAlyZXR1cm4gb2F1dGhfdG9rZW4gPyBQR1JFU19Q T0xMSU5HX09LIDogUEdSRVNfUE9MTElOR19SRUFESU5HOwogCiBlcnJvcl9yZXR1cm46Ci0JZXJy YnVmID0gY29ubl9lcnJvck1lc3NhZ2UoY29ubik7Ci0KLQkvKgotCSAqIEFzc2VtYmxlIHRoZSB0 aHJlZSBwYXJ0cyBvZiBvdXIgZXJyb3I6IGNvbnRleHQsIGJvZHksIGFuZCBkZXRhaWwuIFNlZQot CSAqIGFsc28gdGhlIGRvY3VtZW50YXRpb24gZm9yIHN0cnVjdCBhc3luY19jdHguCi0JICovCi0J aWYgKGFjdHgtPmVycmN0eCkKLQkJYXBwZW5kUFFFeHBCdWZmZXIoZXJyYnVmLCAiJXM6ICIsIGFj dHgtPmVycmN0eCk7Ci0KLQlpZiAoUFFFeHBCdWZmZXJEYXRhQnJva2VuKGFjdHgtPmVycmJ1Zikp Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGVycmJ1ZiwgbGlicHFfZ2V0dGV4dCgib3V0IG9mIG1l bW9yeSIpKTsKLQllbHNlCi0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGVycmJ1ZiwgYWN0eC0+ZXJy YnVmLmRhdGEpOwotCi0JaWYgKGFjdHgtPmN1cmxfZXJyWzBdKQotCXsKLQkJYXBwZW5kUFFFeHBC dWZmZXIoZXJyYnVmLCAiIChsaWJjdXJsOiAlcykiLCBhY3R4LT5jdXJsX2Vycik7Ci0KLQkJLyog U29tZXRpbWVzIGxpYmN1cmwgYWRkcyBhIG5ld2xpbmUgdG8gdGhlIGVycm9yIGJ1ZmZlci4gOigg Ki8KLQkJaWYgKGVycmJ1Zi0+bGVuID49IDIgJiYgZXJyYnVmLT5kYXRhW2VycmJ1Zi0+bGVuIC0g Ml0gPT0gJ1xuJykKLQkJewotCQkJZXJyYnVmLT5kYXRhW2VycmJ1Zi0+bGVuIC0gMl0gPSAnKSc7 Ci0JCQllcnJidWYtPmRhdGFbZXJyYnVmLT5sZW4gLSAxXSA9ICdcMCc7Ci0JCQllcnJidWYtPmxl bi0tOwotCQl9Ci0JfQotCi0JYXBwZW5kUFFFeHBCdWZmZXJDaGFyKGVycmJ1ZiwgJ1xuJyk7CisJ YXBwZW5kX2FjdHhfZXJyb3IocmVxdWVzdCwgYWN0eCk7CiAKIAlyZXR1cm4gUEdSRVNfUE9MTElO R19GQUlMRUQ7CiB9CiAKIC8qCi0gKiBUaGUgdG9wLWxldmVsIGVudHJ5IHBvaW50LiBUaGlzIGlz IGEgY29udmVuaWVudCBwbGFjZSB0byBwdXQgbmVjZXNzYXJ5Ci0gKiB3cmFwcGVyIGxvZ2ljIGJl Zm9yZSBoYW5kaW5nIG9mZiB0byB0aGUgdHJ1ZSBpbXBsZW1lbnRhdGlvbiwgYWJvdmUuCisgKiBU aGUgdG9wLWxldmVsIGVudHJ5IHBvaW50IGZvciB0aGUgZmxvdy4gVGhpcyBpcyBhIGNvbnZlbmll bnQgcGxhY2UgdG8gcHV0CisgKiBuZWNlc3Nhcnkgd3JhcHBlciBsb2dpYyBiZWZvcmUgaGFuZGlu ZyBvZmYgdG8gdGhlIHRydWUgaW1wbGVtZW50YXRpb24sIGFib3ZlLgogICovCi1Qb3N0Z3Jlc1Bv bGxpbmdTdGF0dXNUeXBlCi1wZ19mZV9ydW5fb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4pCitzdGF0 aWMgUG9zdGdyZXNQb2xsaW5nU3RhdHVzVHlwZQorcGdfZmVfcnVuX29hdXRoX2Zsb3coUEdjb25u ICpjb25uLCBzdHJ1Y3QgUEdvYXV0aEJlYXJlclJlcXVlc3QgKnJlcXVlc3QsCisJCQkJCSBpbnQg KmFsdHNvY2spCiB7CiAJUG9zdGdyZXNQb2xsaW5nU3RhdHVzVHlwZSByZXN1bHQ7Ci0JZmVfb2F1 dGhfc3RhdGUgKnN0YXRlID0gY29ubl9zYXNsX3N0YXRlKGNvbm4pOwotCXN0cnVjdCBhc3luY19j dHggKmFjdHg7CisJc3RydWN0IGFzeW5jX2N0eCAqYWN0eCA9IHJlcXVlc3QtPnVzZXI7CiAjaWZu ZGVmIFdJTjMyCiAJc2lnc2V0X3QJb3NpZ3NldDsKIAlib29sCQlzaWdwaXBlX3BlbmRpbmc7CkBA IC0zMDYxLDIwICszMDI4LDE2IEBAIHBnX2ZlX3J1bl9vYXV0aF9mbG93KFBHY29ubiAqY29ubikK IAltYXNrZWQgPSAocHFfYmxvY2tfc2lncGlwZSgmb3NpZ3NldCwgJnNpZ3BpcGVfcGVuZGluZykg PT0gMCk7CiAjZW5kaWYKIAotCXJlc3VsdCA9IHBnX2ZlX3J1bl9vYXV0aF9mbG93X2ltcGwoY29u bik7CisJcmVzdWx0ID0gcGdfZmVfcnVuX29hdXRoX2Zsb3dfaW1wbChjb25uLAorCQkJCQkJCQkJ ICAgKFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKikgcmVxdWVzdCwKKwkJCQkJCQkJCSAgIGFsdHNv Y2spOwogCiAJLyoKIAkgKiBUbyBhc3Npc3Qgd2l0aCBmaW5kaW5nIGJ1Z3MgaW4gY29tYl9tdWx0 aXBsZXhlcigpIGFuZAogCSAqIGRyYWluX3RpbWVyX2V2ZW50cygpLCB3aGVuIHdlJ3JlIGluIGRl YnVnIG1vZGUsIHRyYWNrIHRoZSB0b3RhbCBudW1iZXIKIAkgKiBvZiBjYWxscyB0byB0aGlzIGZ1 bmN0aW9uIGFuZCBwcmludCB0aGF0IGF0IHRoZSBlbmQgb2YgdGhlIGZsb3cuCi0JICoKLQkgKiBC ZSBjYXJlZnVsIHRoYXQgc3RhdGUtPmFzeW5jX2N0eCBjb3VsZCBiZSBOVUxMIGlmIGVhcmx5IGlu aXRpYWxpemF0aW9uCi0JICogZmFpbHMgZHVyaW5nIHRoZSBmaXJzdCBjYWxsLgogCSAqLwotCWFj dHggPSBzdGF0ZS0+YXN5bmNfY3R4OwotCUFzc2VydChhY3R4IHx8IHJlc3VsdCA9PSBQR1JFU19Q T0xMSU5HX0ZBSUxFRCk7Ci0KLQlpZiAoYWN0eCAmJiBhY3R4LT5kZWJ1Z2dpbmcpCisJaWYgKGFj dHgtPmRlYnVnZ2luZykKIAl7CiAJCWFjdHgtPmRiZ19udW1fY2FsbHMrKzsKIAkJaWYgKHJlc3Vs dCA9PSBQR1JFU19QT0xMSU5HX09LIHx8IHJlc3VsdCA9PSBQR1JFU19QT0xMSU5HX0ZBSUxFRCkK QEAgLTMwOTUsMyArMzA1OCwxMDMgQEAgcGdfZmVfcnVuX29hdXRoX2Zsb3coUEdjb25uICpjb25u KQogCiAJcmV0dXJuIHJlc3VsdDsKIH0KKworLyoKKyAqIENhbGxiYWNrIHJlZ2lzdHJhdGlvbiBm b3IgT0FVVEhCRUFSRVIuIGxpYnBxIGNhbGxzIHRoaXMgb25jZSBwZXIgT0F1dGgKKyAqIGNvbm5l Y3Rpb24uCisgKi8KK2ludAorcGdfc3RhcnRfb2F1dGhiZWFyZXIoUEdjb25uICpjb25uLCBQR29h dXRoQmVhcmVyUmVxdWVzdFYyICpyZXF1ZXN0KQoreworCXN0cnVjdCBhc3luY19jdHggKmFjdHg7 CisKKwlpZiAoIWluaXRpYWxpemVfY3VybChyZXF1ZXN0KSkJLyogVE9ETyBtb3ZlIHRvIGluaXQg ZnVuY3Rpb24/ICovCisJCXJldHVybiAtMTsKKworCS8qCisJICogQ3JlYXRlIG91ciBhc3luY2hy b25vdXMgc3RhdGUsIGFuZCBob29rIGl0IGludG8gdGhlIHVwcGVyLWxldmVsIE9BdXRoCisJICog c3RhdGUgaW1tZWRpYXRlbHksIHNvIGFueSBmYWlsdXJlcyBiZWxvdyB3b24ndCBsZWFrIHRoZSBj b250ZXh0CisJICogYWxsb2NhdGlvbi4KKwkgKi8KKwlhY3R4ID0gY2FsbG9jKDEsIHNpemVvZigq YWN0eCkpOworCWlmICghYWN0eCkKKwkJZ290byBvb207CisKKwlhY3R4LT5tdXggPSBQR0lOVkFM SURfU09DS0VUOworCWFjdHgtPnRpbWVyZmQgPSAtMTsKKworCS8qCisJICogTm93IHdlIGhhdmUg YSB2YWxpZCAoYnV0IHN0aWxsIHVzZWxlc3MpIGFjdHgsIHNvIHdlIGNhbiBmaWxsIGluIHRoZQor CSAqIHJlcXVlc3Qgb2JqZWN0LiBGcm9tIHRoaXMgcG9pbnQgb253YXJkLCBmYWlsdXJlcyB3aWxs IHJlc3VsdCBpbiBhIGNhbGwKKwkgKiB0byBwZ19mZV9jbGVhbnVwX29hdXRoX2Zsb3coKS4gRnVy dGhlciBjbGVhbnVwIGxvZ2ljIGJlbG9uZ3MgdGhlcmUuCisJICovCisJcmVxdWVzdC0+djEuYXN5 bmMgPSBwZ19mZV9ydW5fb2F1dGhfZmxvdzsKKwlyZXF1ZXN0LT52MS5jbGVhbnVwID0gcGdfZmVf Y2xlYW51cF9vYXV0aF9mbG93OworCXJlcXVlc3QtPnYxLnVzZXIgPSBhY3R4OworCisJLyoKKwkg KiBOb3cgZmluaXNoIGZpbGxpbmcgaW4gdGhlIGFjdHguCisJICovCisKKwkvKiBTaG91bGQgd2Ug ZW5hYmxlIHVuc2FmZSBmZWF0dXJlcz8gKi8KKwlhY3R4LT5kZWJ1Z2dpbmcgPSBvYXV0aF91bnNh ZmVfZGVidWdnaW5nX2VuYWJsZWQoKTsKKworCWluaXRQUUV4cEJ1ZmZlcigmYWN0eC0+d29ya19k YXRhKTsKKwlpbml0UFFFeHBCdWZmZXIoJmFjdHgtPmVycmJ1Zik7CisKKwkvKiBQdWxsIHJlbGV2 YW50IGNvbm5lY3Rpb24gb3B0aW9ucy4gKi8KKwl7CisJCVBRY29ubmluZm9PcHRpb24gKmNvbm5p bmZvID0gUFFjb25uaW5mbyhjb25uKTsKKworCQlpZiAoIWNvbm5pbmZvKQorCQkJZ290byBvb207 CisKKwkJZm9yIChQUWNvbm5pbmZvT3B0aW9uICpvcHQgPSBjb25uaW5mbzsgb3B0LT5rZXl3b3Jk OyBvcHQrKykKKwkJeworCQkJaWYgKCFvcHQtPnZhbCkKKwkJCQljb250aW51ZTsJCS8qIHNpbXBs aWZpZXMgdGhlIHN0cmR1cCBsb2dpYyBiZWxvdyAqLworCisJCQlpZiAoc3RyY21wKG9wdC0+a2V5 d29yZCwgIm9hdXRoX2NsaWVudF9pZCIpID09IDApCisJCQl7CisJCQkJYWN0eC0+Y2xpZW50X2lk ID0gc3RyZHVwKG9wdC0+dmFsKTsKKwkJCQlpZiAoIWFjdHgtPmNsaWVudF9pZCkKKwkJCQkJZ290 byBvb207CisJCQl9CisJCQllbHNlIGlmIChzdHJjbXAob3B0LT5rZXl3b3JkLCAib2F1dGhfY2xp ZW50X3NlY3JldCIpID09IDApCisJCQl7CisJCQkJYWN0eC0+Y2xpZW50X3NlY3JldCA9IHN0cmR1 cChvcHQtPnZhbCk7CisJCQkJaWYgKCFhY3R4LT5jbGllbnRfc2VjcmV0KQorCQkJCQlnb3RvIG9v bTsKKwkJCX0KKwkJfQorCisJCVBRY29ubmluZm9GcmVlKGNvbm5pbmZvKTsKKwl9CisKKwlhY3R4 LT5kaXNjb3ZlcnlfdXJpID0gcmVxdWVzdC0+djEub3BlbmlkX2NvbmZpZ3VyYXRpb247CisJYWN0 eC0+aXNzdWVyX2lkID0gcmVxdWVzdC0+aXNzdWVyOworCWFjdHgtPnNjb3BlID0gcmVxdWVzdC0+ djEuc2NvcGU7CisKKwlBc3NlcnQoYWN0eC0+Y2xpZW50X2lkKTsJLyogZW5zdXJlZCBieSBzZXR1 cF9vYXV0aF9wYXJhbWV0ZXJzKCkgKi8KKwlBc3NlcnQoYWN0eC0+aXNzdWVyX2lkKTsJLyogZW5z dXJlZCBieSBzZXR1cF9vYXV0aF9wYXJhbWV0ZXJzKCkgKi8KKwlBc3NlcnQoYWN0eC0+ZGlzY292 ZXJ5X3VyaSk7CS8qIGVuc3VyZWQgYnkgb2F1dGhfZXhjaGFuZ2UoKSAqLworCisJaWYgKCFzZXR1 cF9tdWx0aXBsZXhlcihhY3R4KSkKKwl7CisJCWFwcGVuZF9hY3R4X2Vycm9yKHJlcXVlc3QsIGFj dHgpOworCQlyZXR1cm4gLTE7CisJfQorCisJaWYgKCFzZXR1cF9jdXJsX2hhbmRsZXMoYWN0eCkp CisJeworCQlhcHBlbmRfYWN0eF9lcnJvcihyZXF1ZXN0LCBhY3R4KTsKKwkJcmV0dXJuIC0xOwor CX0KKworCXJldHVybiAwOworCitvb206CisJYXBwZW5kUFFFeHBCdWZmZXJTdHIocmVxdWVzdC0+ ZXJyb3IsCisJCQkJCQkgbGlicHFfZ2V0dGV4dCgib3V0IG9mIG1lbW9yeSIpKTsKKwlyZXR1cm4g LTE7Cit9CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC11dGls cy5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtdXRpbHMuYwppbmRleCA0NWZk Yzc1NzlmMi4uZjFkMzBlMDFjZjAgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9h dXRoL29hdXRoLXV0aWxzLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgt dXRpbHMuYwpAQCAtMzUsMTcgKzM1LDYgQEAKIHBndGhyZWFkbG9ja190IHBnX2dfdGhyZWFkbG9j azsKIHN0YXRpYyBsaWJwcV9nZXR0ZXh0X2Z1bmMgbGlicHFfZ2V0dGV4dF9pbXBsOwogCi1jb25u X2Vycm9yTWVzc2FnZV9mdW5jIGNvbm5fZXJyb3JNZXNzYWdlOwotY29ubl9vYXV0aF9jbGllbnRf aWRfZnVuYyBjb25uX29hdXRoX2NsaWVudF9pZDsKLWNvbm5fb2F1dGhfY2xpZW50X3NlY3JldF9m dW5jIGNvbm5fb2F1dGhfY2xpZW50X3NlY3JldDsKLWNvbm5fb2F1dGhfZGlzY292ZXJ5X3VyaV9m dW5jIGNvbm5fb2F1dGhfZGlzY292ZXJ5X3VyaTsKLWNvbm5fb2F1dGhfaXNzdWVyX2lkX2Z1bmMg Y29ubl9vYXV0aF9pc3N1ZXJfaWQ7Ci1jb25uX29hdXRoX3Njb3BlX2Z1bmMgY29ubl9vYXV0aF9z Y29wZTsKLWNvbm5fc2FzbF9zdGF0ZV9mdW5jIGNvbm5fc2FzbF9zdGF0ZTsKLQotc2V0X2Nvbm5f YWx0c29ja19mdW5jIHNldF9jb25uX2FsdHNvY2s7Ci1zZXRfY29ubl9vYXV0aF90b2tlbl9mdW5j IHNldF9jb25uX29hdXRoX3Rva2VuOwotCiAvKi0KICAqIEluaXRpYWxpemVzIGxpYnBxLW9hdXRo IGJ5IHNldHRpbmcgbmVjZXNzYXJ5IGNhbGxiYWNrcy4KICAqCkBAIC02Myw1NyArNTIsMTAgQEAg c2V0X2Nvbm5fb2F1dGhfdG9rZW5fZnVuYyBzZXRfY29ubl9vYXV0aF90b2tlbjsKICAqLwogdm9p ZAogbGlicHFfb2F1dGhfaW5pdChwZ3RocmVhZGxvY2tfdCB0aHJlYWRsb2NrX2ltcGwsCi0JCQkJ IGxpYnBxX2dldHRleHRfZnVuYyBnZXR0ZXh0X2ltcGwsCi0JCQkJIGNvbm5fZXJyb3JNZXNzYWdl X2Z1bmMgZXJybXNnX2ltcGwsCi0JCQkJIGNvbm5fb2F1dGhfY2xpZW50X2lkX2Z1bmMgY2xpZW50 aWRfaW1wbCwKLQkJCQkgY29ubl9vYXV0aF9jbGllbnRfc2VjcmV0X2Z1bmMgY2xpZW50c2VjcmV0 X2ltcGwsCi0JCQkJIGNvbm5fb2F1dGhfZGlzY292ZXJ5X3VyaV9mdW5jIGRpc2NvdmVyeXVyaV9p bXBsLAotCQkJCSBjb25uX29hdXRoX2lzc3Vlcl9pZF9mdW5jIGlzc3VlcmlkX2ltcGwsCi0JCQkJ IGNvbm5fb2F1dGhfc2NvcGVfZnVuYyBzY29wZV9pbXBsLAotCQkJCSBjb25uX3Nhc2xfc3RhdGVf ZnVuYyBzYXNsc3RhdGVfaW1wbCwKLQkJCQkgc2V0X2Nvbm5fYWx0c29ja19mdW5jIHNldGFsdHNv Y2tfaW1wbCwKLQkJCQkgc2V0X2Nvbm5fb2F1dGhfdG9rZW5fZnVuYyBzZXR0b2tlbl9pbXBsKQor CQkJCSBsaWJwcV9nZXR0ZXh0X2Z1bmMgZ2V0dGV4dF9pbXBsKQogewogCXBnX2dfdGhyZWFkbG9j ayA9IHRocmVhZGxvY2tfaW1wbDsKIAlsaWJwcV9nZXR0ZXh0X2ltcGwgPSBnZXR0ZXh0X2ltcGw7 Ci0JY29ubl9lcnJvck1lc3NhZ2UgPSBlcnJtc2dfaW1wbDsKLQljb25uX29hdXRoX2NsaWVudF9p ZCA9IGNsaWVudGlkX2ltcGw7Ci0JY29ubl9vYXV0aF9jbGllbnRfc2VjcmV0ID0gY2xpZW50c2Vj cmV0X2ltcGw7Ci0JY29ubl9vYXV0aF9kaXNjb3ZlcnlfdXJpID0gZGlzY292ZXJ5dXJpX2ltcGw7 Ci0JY29ubl9vYXV0aF9pc3N1ZXJfaWQgPSBpc3N1ZXJpZF9pbXBsOwotCWNvbm5fb2F1dGhfc2Nv cGUgPSBzY29wZV9pbXBsOwotCWNvbm5fc2FzbF9zdGF0ZSA9IHNhc2xzdGF0ZV9pbXBsOwotCXNl dF9jb25uX2FsdHNvY2sgPSBzZXRhbHRzb2NrX2ltcGw7Ci0Jc2V0X2Nvbm5fb2F1dGhfdG9rZW4g PSBzZXR0b2tlbl9pbXBsOwotfQotCi0vKgotICogQXBwZW5kIGEgZm9ybWF0dGVkIHN0cmluZyB0 byB0aGUgZXJyb3IgbWVzc2FnZSBidWZmZXIgb2YgdGhlIGdpdmVuCi0gKiBjb25uZWN0aW9uLCBh ZnRlciB0cmFuc2xhdGluZyBpdC4gIFRoaXMgaXMgYSBjb3B5IG9mIGxpYnBxJ3MgaW50ZXJuYWwg QVBJLgotICovCi12b2lkCi1saWJwcV9hcHBlbmRfY29ubl9lcnJvcihQR2Nvbm4gKmNvbm4sIGNv bnN0IGNoYXIgKmZtdCwuLi4pCi17Ci0JaW50CQkJc2F2ZV9lcnJubyA9IGVycm5vOwotCWJvb2wJ CWRvbmU7Ci0JdmFfbGlzdAkJYXJnczsKLQlQUUV4cEJ1ZmZlciBlcnJvck1lc3NhZ2UgPSBjb25u X2Vycm9yTWVzc2FnZShjb25uKTsKLQotCUFzc2VydChmbXRbc3RybGVuKGZtdCkgLSAxXSAhPSAn XG4nKTsKLQotCWlmIChQUUV4cEJ1ZmZlckJyb2tlbihlcnJvck1lc3NhZ2UpKQotCQlyZXR1cm47 CQkJCQkvKiBhbHJlYWR5IGZhaWxlZCAqLwotCi0JLyogTG9vcCBpbiBjYXNlIHdlIGhhdmUgdG8g cmV0cnkgYWZ0ZXIgZW5sYXJnaW5nIHRoZSBidWZmZXIuICovCi0JZG8KLQl7Ci0JCWVycm5vID0g c2F2ZV9lcnJubzsKLQkJdmFfc3RhcnQoYXJncywgZm10KTsKLQkJZG9uZSA9IGFwcGVuZFBRRXhw QnVmZmVyVkEoZXJyb3JNZXNzYWdlLCBsaWJwcV9nZXR0ZXh0KGZtdCksIGFyZ3MpOwotCQl2YV9l bmQoYXJncyk7Ci0JfSB3aGlsZSAoIWRvbmUpOwotCi0JYXBwZW5kUFFFeHBCdWZmZXJDaGFyKGVy cm9yTWVzc2FnZSwgJ1xuJyk7CiB9CiAKICNpZmRlZiBFTkFCTEVfTkxTCmRpZmYgLS1naXQgYS9z cmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJw cS9mZS1hdXRoLW9hdXRoLmMKaW5kZXggZjk0YmYzMWIyZWEuLmRhNmEyYzRhMmY3IDEwMDY0NAot LS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmMKKysrIGIvc3JjL2ludGVy ZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5jCkBAIC03OCw3ICs3OCw3IEBAIG9hdXRoX2luaXQo UEdjb25uICpjb25uLCBjb25zdCBjaGFyICpwYXNzd29yZCwKICAqIFRoaXMgaGFuZGxlcyBvbmx5 IG1lY2hhbmlzbSBzdGF0ZSB0aWVkIHRvIHRoZSBjb25uZWN0aW9uIGxpZmV0aW1lOyBzdGF0ZQog ICogc3RvcmVkIGluIHN0YXRlLT5hc3luY19jdHggaXMgZnJlZWQgdXAgZWl0aGVyIGltbWVkaWF0 ZWx5IGFmdGVyIHRoZQogICogYXV0aGVudGljYXRpb24gaGFuZHNoYWtlIHN1Y2NlZWRzLCBvciBi ZWZvcmUgdGhlIG1lY2hhbmlzbSBpcyBjbGVhbmVkIHVwIG9uCi0gKiBmYWlsdXJlLiBTZWUgcGdf ZmVfY2xlYW51cF9vYXV0aF9mbG93KCkgYW5kIGNsZWFudXBfdXNlcl9vYXV0aF9mbG93KCkuCisg KiBmYWlsdXJlLiBTZWUgcGdfZmVfY2xlYW51cF9vYXV0aF9mbG93KCkgYW5kIGNsZWFudXBfb2F1 dGhfZmxvdygpLgogICovCiBzdGF0aWMgdm9pZAogb2F1dGhfZnJlZSh2b2lkICpvcGFxKQpAQCAt NjgwLDggKzY4MCw5IEBAIGNsZWFudXA6CiAgKiBpdCdzIGFkZGVkIHRvIGNvbm4tPmVycm9yTWVz c2FnZSBoZXJlLgogICovCiBzdGF0aWMgdm9pZAotcmVwb3J0X3VzZXJfZmxvd19lcnJvcihQR2Nv bm4gKmNvbm4sIGNvbnN0IFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJlcXVlc3QpCityZXBvcnRf Zmxvd19lcnJvcihQR2Nvbm4gKmNvbm4sIGNvbnN0IFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJl cXVlc3QpCiB7CisJZmVfb2F1dGhfc3RhdGUgKnN0YXRlID0gY29ubi0+c2FzbF9zdGF0ZTsKIAlj b25zdCBjaGFyICplcnJtc2cgPSBOVUxMOwogCiAJaWYgKFBRRXhwQnVmZmVyQnJva2VuKHJlcXVl c3QtPmVycm9yKSkKQEAgLTY4OSwyOCArNjkwLDQ5IEBAIHJlcG9ydF91c2VyX2Zsb3dfZXJyb3Io UEdjb25uICpjb25uLCBjb25zdCBQR29hdXRoQmVhcmVyUmVxdWVzdFYyICpyZXF1ZXN0KQogCWVs c2UgaWYgKHJlcXVlc3QtPmVycm9yLT5sZW4pCiAJCWVycm1zZyA9IHJlcXVlc3QtPmVycm9yLT5k YXRhOwogCi0JYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJ CSBsaWJwcV9nZXR0ZXh0KCJ1c2VyLWRlZmluZWQgT0F1dGggZmxvdyBmYWlsZWQiKSk7Ci0KLQlp ZiAoZXJybXNnKQorCS8qCisJICogVXNlci1kZWZpbmVkIGZsb3dzIGFyZSBjYWxsZWQgb3V0IGV4 cGxpY2l0bHkgc28gdGhhdCB0aGUgdXNlciBrbm93cyB3aG8KKwkgKiB0byBibGFtZS4gQnVpbHRp biBmbG93cyBkb24ndCBuZWVkIHRoYXQgZXh0cmEgbWVzc2FnZSBsZW5ndGg7IHdlIGV4cGVjdAor CSAqIHRoZW0gdG8gYWx3YXlzIGZpbGwgaW4gcmVxdWVzdC0+ZXJyb3Igb24gZmFpbHVyZSBhbnl3 YXkuCisJICovCisJaWYgKHN0YXRlLT5idWlsdGluKQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXJT dHIoJmNvbm4tPmVycm9yTWVzc2FnZSwgIjogIik7CisJCWlmICghZXJybXNnKQorCQl7CisJCQkv KgorCQkJICogRG9uJ3QgdHVybiBhIGJ1ZyBoZXJlIGludG8gYSBjcmFzaCBpbiBwcm9kdWN0aW9u LCBidXQgZG9uJ3QKKwkJCSAqIGJvdGhlciB0cmFuc2xhdGluZyBlaXRoZXIuCisJCQkgKi8KKwkJ CUFzc2VydChmYWxzZSk7CisJCQllcnJtc2cgPSAiYnVpbHRpbiBmbG93IGZhaWxlZCBidXQgZGlk IG5vdCBwcm92aWRlIGFuIGVycm9yIG1lc3NhZ2UiOworCQl9CisKIAkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwgZXJybXNnKTsKIAl9CisJZWxzZQorCXsKKwkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCQkgbGlicHFfZ2V0 dGV4dCgidXNlci1kZWZpbmVkIE9BdXRoIGZsb3cgZmFpbGVkIikpOworCQlpZiAoZXJybXNnKQor CQl7CisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLCAiOiAiKTsK KwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsIGVycm1zZyk7CisJ CX0KKwl9CiAKIAlhcHBlbmRQUUV4cEJ1ZmZlckNoYXIoJmNvbm4tPmVycm9yTWVzc2FnZSwgJ1xu Jyk7CiB9CiAKIC8qCi0gKiBDYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBvZiBjb25uLT5hc3luY19h dXRoKCkgZm9yIGEgdXNlci1kZWZpbmVkIE9BdXRoIGZsb3cuCi0gKiBEZWxlZ2F0ZXMgdGhlIHJl dHJpZXZhbCBvZiB0aGUgdG9rZW4gdG8gdGhlIGFwcGxpY2F0aW9uJ3MgYXN5bmMgY2FsbGJhY2su CisgKiBDYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBvZiBjb25uLT5hc3luY19hdXRoKCkgZm9yIE9B dXRoIGZsb3dzLiBEZWxlZ2F0ZXMgdGhlCisgKiByZXRyaWV2YWwgb2YgdGhlIHRva2VuIHRvIHRo ZSBQR29hdXRoQmVhcmVyUmVxdWVzdFYyLmFzeW5jKCkgY2FsbGJhY2suCiAgKgotICogVGhpcyB3 aWxsIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBhcyBuZWVkZWQ7IHRoZSBhcHBsaWNhdGlvbiBp cyByZXNwb25zaWJsZQotICogZm9yIHNldHRpbmcgYW4gYWx0c29jayB0byBzaWduYWwgYW5kIHJl dHVybmluZyB0aGUgY29ycmVjdCBQR1JFU19QT0xMSU5HXyoKKyAqIFRoaXMgd2lsbCBiZSBjYWxs ZWQgbXVsdGlwbGUgdGltZXMgYXMgbmVlZGVkOyB0aGUgY2FsbGJhY2sgaXMgcmVzcG9uc2libGUg Zm9yCisgKiBzZXR0aW5nIGFuIGFsdHNvY2sgdG8gc2lnbmFsIGFuZCByZXR1cm5pbmcgdGhlIGNv cnJlY3QgUEdSRVNfUE9MTElOR18qCiAgKiBzdGF0dXNlcyBmb3IgdXNlIGJ5IFBRY29ubmVjdFBv bGwoKS4KICAqLwogc3RhdGljIFBvc3RncmVzUG9sbGluZ1N0YXR1c1R5cGUKLXJ1bl91c2VyX29h dXRoX2Zsb3coUEdjb25uICpjb25uKQorcnVuX29hdXRoX2Zsb3coUEdjb25uICpjb25uKQogewog CWZlX29hdXRoX3N0YXRlICpzdGF0ZSA9IGNvbm4tPnNhc2xfc3RhdGU7CiAJUEdvYXV0aEJlYXJl clJlcXVlc3RWMiAqcmVxdWVzdCA9IHN0YXRlLT5hc3luY19jdHg7CkBAIC03MTgsNiArNzQwLDcg QEAgcnVuX3VzZXJfb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4pCiAKIAlpZiAoIXJlcXVlc3QtPnYx LmFzeW5jKQogCXsKKwkJQXNzZXJ0KCFzdGF0ZS0+YnVpbHRpbik7CS8qIGJlIHZlcnkgbm9pc3kg aWYgb3VyIGNvZGUgZG9lcyB0aGlzICovCiAJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4s CiAJCQkJCQkJCSJ1c2VyLWRlZmluZWQgT0F1dGggZmxvdyBwcm92aWRlZCBuZWl0aGVyIGEgdG9r ZW4gbm9yIGFuIGFzeW5jIGNhbGxiYWNrIik7CiAJCXJldHVybiBQR1JFU19QT0xMSU5HX0ZBSUxF RDsKQEAgLTcyOSw3ICs3NTIsNyBAQCBydW5fdXNlcl9vYXV0aF9mbG93KFBHY29ubiAqY29ubikK IAogCWlmIChzdGF0dXMgPT0gUEdSRVNfUE9MTElOR19GQUlMRUQpCiAJewotCQlyZXBvcnRfdXNl cl9mbG93X2Vycm9yKGNvbm4sIHJlcXVlc3QpOworCQlyZXBvcnRfZmxvd19lcnJvcihjb25uLCBy ZXF1ZXN0KTsKIAkJcmV0dXJuIHN0YXR1czsKIAl9CiAJZWxzZSBpZiAoc3RhdHVzID09IFBHUkVT X1BPTExJTkdfT0spCkBAIC03NDEsNiArNzY0LDcgQEAgcnVuX3VzZXJfb2F1dGhfZmxvdyhQR2Nv bm4gKmNvbm4pCiAJCSAqLwogCQlpZiAoIXJlcXVlc3QtPnYxLnRva2VuKQogCQl7CisJCQlBc3Nl cnQoIXN0YXRlLT5idWlsdGluKTsKIAkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sCiAJ CQkJCQkJCQkidXNlci1kZWZpbmVkIE9BdXRoIGZsb3cgZGlkIG5vdCBwcm92aWRlIGEgdG9rZW4i KTsKIAkJCXJldHVybiBQR1JFU19QT0xMSU5HX0ZBSUxFRDsKQEAgLTc1OSw2ICs3ODMsNyBAQCBy dW5fdXNlcl9vYXV0aF9mbG93KFBHY29ubiAqY29ubikKIAkvKiBUaGUgaG9vayB3YW50cyB0aGUg Y2xpZW50IHRvIHBvbGwgdGhlIGFsdHNvY2suIE1ha2Ugc3VyZSBpdCBzZXQgb25lLiAqLwogCWlm IChjb25uLT5hbHRzb2NrID09IFBHSU5WQUxJRF9TT0NLRVQpCiAJeworCQlBc3NlcnQoIXN0YXRl LT5idWlsdGluKTsKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwKIAkJCQkJCQkJInVz ZXItZGVmaW5lZCBPQXV0aCBmbG93IGRpZCBub3QgcHJvdmlkZSBhIHNvY2tldCBmb3IgcG9sbGlu ZyIpOwogCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CkBAIC03NjgsMTIgKzc5MywxNiBA QCBydW5fdXNlcl9vYXV0aF9mbG93KFBHY29ubiAqY29ubikKIH0KIAogLyoKLSAqIENsZWFudXAg Y2FsbGJhY2sgZm9yIHRoZSBhc3luYyB1c2VyIGZsb3cuIERlbGVnYXRlcyBtb3N0IG9mIGl0cyBq b2IgdG8KKyAqIENsZWFudXAgY2FsbGJhY2sgZm9yIHRoZSBhc3luYyBmbG93LiBEZWxlZ2F0ZXMg bW9zdCBvZiBpdHMgam9iIHRvCiAgKiBQR29hdXRoQmVhcmVyUmVxdWVzdFYyLmNsZWFudXAoKSwg dGhlbiBkaXNjb25uZWN0cyB0aGUgYWx0c29jayBhbmQgZnJlZXMgdGhlCiAgKiByZXF1ZXN0IGl0 c2VsZi4KKyAqCisgKiBUaGlzIGlzIGNhbGxlZCBlaXRoZXIgYXQgdGhlIGVuZCBvZiBhIHN1Y2Nl c3NmdWwgYXV0aGVudGljYXRpb24sIG9yIGR1cmluZworICogcHFEcm9wQ29ubmVjdGlvbigpLCBz byB3ZSB3b24ndCBsZWFrIHJlc291cmNlcyBldmVuIGlmIFBRY29ubmVjdFBvbGwoKSBuZXZlcgor ICogY2FsbHMgdXMgYmFjay4KICAqLwogc3RhdGljIHZvaWQKLWNsZWFudXBfdXNlcl9vYXV0aF9m bG93KFBHY29ubiAqY29ubikKK2NsZWFudXBfb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4pCiB7CiAJ ZmVfb2F1dGhfc3RhdGUgKnN0YXRlID0gY29ubi0+c2FzbF9zdGF0ZTsKIAlQR29hdXRoQmVhcmVy UmVxdWVzdFYyICpyZXF1ZXN0ID0gc3RhdGUtPmFzeW5jX2N0eDsKQEAgLTc5NCwxMiArODIzLDE2 IEBAIGNsZWFudXBfdXNlcl9vYXV0aF9mbG93KFBHY29ubiAqY29ubikKICAqCiAgKiBUaGVyZSBh cmUgdGhyZWUgcG90ZW50aWFsIGltcGxlbWVudGF0aW9ucyBvZiB1c2VfYnVpbHRpbl9mbG93Ogog ICoKLSAqIDEpIElmIHRoZSBPQXV0aCBjbGllbnQgaXMgZGlzYWJsZWQgYXQgY29uZmlndXJhdGlv biB0aW1lLCByZXR1cm4gZmFsc2UuCisgKiAxKSBJZiB0aGUgT0F1dGggY2xpZW50IGlzIGRpc2Fi bGVkIGF0IGNvbmZpZ3VyYXRpb24gdGltZSwgcmV0dXJuIHplcm8uCiAgKiAgICBEZXBlbmRlbnQg Y2xpZW50cyBtdXN0IHByb3ZpZGUgdGhlaXIgb3duIGZsb3cuCiAgKiAyKSBJZiB0aGUgT0F1dGgg Y2xpZW50IGlzIGVuYWJsZWQgYW5kIFVTRV9EWU5BTUlDX09BVVRIIGlzIGRlZmluZWQsIGRsb3Bl bigpCiAgKiAgICB0aGUgbGlicHEtb2F1dGggcGx1Z2luIGFuZCB1c2UgaXRzIGltcGxlbWVudGF0 aW9uLgogICogMykgT3RoZXJ3aXNlLCB1c2UgZmxvdyBjYWxsYmFja3MgdGhhdCBhcmUgc3RhdGlj YWxseSBsaW5rZWQgaW50byB0aGUKICAqICAgIGV4ZWN1dGFibGUuCisgKgorICogRm9yIGNhbGxl ciBjb252ZW5pZW5jZSwgdGhlIHJldHVybiB2YWx1ZSBmb2xsb3dzIHRoZSBjb252ZW50aW9uIG9m CisgKiBQUWF1dGhEYXRhSG9vazogemVybyBtZWFucyBubyBpbXBsZW1lbnRhdGlvbiBpcyBwcm92 aWRlZCwgbmVnYXRpdmUgaW5kaWNhdGVzCisgKiBmYWlsdXJlLCBhbmQgcG9zaXRpdmUgaW5kaWNh dGVzIHN1Y2Nlc3MuCiAgKi8KIAogI2lmICFkZWZpbmVkKFVTRV9MSUJDVVJMKQpAQCAtODA4LDEw ICs4NDEsMTAgQEAgY2xlYW51cF91c2VyX29hdXRoX2Zsb3coUEdjb25uICpjb25uKQogICogVGhp cyBjb25maWd1cmF0aW9uIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgYnVpbHRpbiBmbG93LgogICovCiAK LWJvb2wKLXVzZV9idWlsdGluX2Zsb3coUEdjb25uICpjb25uLCBmZV9vYXV0aF9zdGF0ZSAqc3Rh dGUpCitzdGF0aWMgaW50Cit1c2VfYnVpbHRpbl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhf c3RhdGUgKnN0YXRlLCBQR29hdXRoQmVhcmVyUmVxdWVzdFYyICpyZXF1ZXN0KQogewotCXJldHVy biBmYWxzZTsKKwlyZXR1cm4gMDsKIH0KIAogI2VsaWYgZGVmaW5lZChVU0VfRFlOQU1JQ19PQVVU SCkKQEAgLTgyMiwzNiArODU1LDYgQEAgdXNlX2J1aWx0aW5fZmxvdyhQR2Nvbm4gKmNvbm4sIGZl X29hdXRoX3N0YXRlICpzdGF0ZSkKIAogdHlwZWRlZiBjaGFyICooKmxpYnBxX2dldHRleHRfZnVu YykgKGNvbnN0IGNoYXIgKm1zZ2lkKTsKIAotLyoKLSAqIERlZmluZSBhY2Nlc3Nvci9tdXRhdG9y IHNoaW1zIHRvIGluamVjdCBpbnRvIGxpYnBxLW9hdXRoLCBzbyB0aGF0IGl0IGRvZXNuJ3QKLSAq IGRlcGVuZCBvbiB0aGUgb2Zmc2V0cyB3aXRoaW4gUEdjb25uLiAoVGhlc2UgaGF2ZSBjaGFuZ2Vk IGR1cmluZyBtaW5vciB2ZXJzaW9uCi0gKiB1cGRhdGVzIGluIHRoZSBwYXN0LikKLSAqLwotCi0j ZGVmaW5lIERFRklORV9HRVRURVIoVFlQRSwgTUVNQkVSKSBcCi0JdHlwZWRlZiBUWVBFICgqY29u bl8gIyMgTUVNQkVSICMjIF9mdW5jKSAoUEdjb25uICpjb25uKTsgXAotCXN0YXRpYyBUWVBFIGNv bm5fICMjIE1FTUJFUihQR2Nvbm4gKmNvbm4pIHsgcmV0dXJuIGNvbm4tPk1FTUJFUjsgfQotCi0v KiBMaWtlIERFRklORV9HRVRURVIsIGJ1dCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbWVtYmVy LiAqLwotI2RlZmluZSBERUZJTkVfR0VUVEVSX1AoVFlQRSwgTUVNQkVSKSBcCi0JdHlwZWRlZiBU WVBFICgqY29ubl8gIyMgTUVNQkVSICMjIF9mdW5jKSAoUEdjb25uICpjb25uKTsgXAotCXN0YXRp YyBUWVBFIGNvbm5fICMjIE1FTUJFUihQR2Nvbm4gKmNvbm4pIHsgcmV0dXJuICZjb25uLT5NRU1C RVI7IH0KLQotI2RlZmluZSBERUZJTkVfU0VUVEVSKFRZUEUsIE1FTUJFUikgXAotCXR5cGVkZWYg dm9pZCAoKnNldF9jb25uXyAjIyBNRU1CRVIgIyMgX2Z1bmMpIChQR2Nvbm4gKmNvbm4sIFRZUEUg dmFsKTsgXAotCXN0YXRpYyB2b2lkIHNldF9jb25uXyAjIyBNRU1CRVIoUEdjb25uICpjb25uLCBU WVBFIHZhbCkgeyBjb25uLT5NRU1CRVIgPSB2YWw7IH0KLQotREVGSU5FX0dFVFRFUl9QKFBRRXhw QnVmZmVyLCBlcnJvck1lc3NhZ2UpOwotREVGSU5FX0dFVFRFUihjaGFyICosIG9hdXRoX2NsaWVu dF9pZCk7Ci1ERUZJTkVfR0VUVEVSKGNoYXIgKiwgb2F1dGhfY2xpZW50X3NlY3JldCk7Ci1ERUZJ TkVfR0VUVEVSKGNoYXIgKiwgb2F1dGhfZGlzY292ZXJ5X3VyaSk7Ci1ERUZJTkVfR0VUVEVSKGNo YXIgKiwgb2F1dGhfaXNzdWVyX2lkKTsKLURFRklORV9HRVRURVIoY2hhciAqLCBvYXV0aF9zY29w ZSk7Ci1ERUZJTkVfR0VUVEVSKGZlX29hdXRoX3N0YXRlICosIHNhc2xfc3RhdGUpOwotCi1ERUZJ TkVfU0VUVEVSKHBnc29ja2V0LCBhbHRzb2NrKTsKLURFRklORV9TRVRURVIoY2hhciAqLCBvYXV0 aF90b2tlbik7Ci0KIC8qCiAgKiBMb2FkcyB0aGUgbGlicHEtb2F1dGggcGx1Z2luIHZpYSBkbG9w ZW4oKSwgaW5pdGlhbGl6ZXMgaXQsIGFuZCBwbHVncyBpdHMKICAqIGNhbGxiYWNrcyBpbnRvIHRo ZSBjb25uZWN0aW9uJ3MgYXN5bmMgYXV0aCBoYW5kbGVycy4KQEAgLTg2MCwyNyArODYzLDIwIEBA IERFRklORV9TRVRURVIoY2hhciAqLCBvYXV0aF90b2tlbik7CiAgKiBoYW5kbGUgdGhlIHVzZSBj YXNlIHdoZXJlIHRoZSBidWlsZCBzdXBwb3J0cyBsb2FkaW5nIGEgZmxvdyBidXQgYSB1c2VyIGRv ZXMKICAqIG5vdCB3YW50IHRvIGluc3RhbGwgaXQuIFRyb3VibGVzaG9vdGluZyBvZiBsaW5rZXIv bG9hZGVyIGZhaWx1cmVzIGNhbiBiZSBkb25lCiAgKiB2aWEgUEdPQVVUSERFQlVHLgorICoKKyAq IFRoZSBsaWZldGltZSBvZiAqcmVxdWVzdCBlbmRzIHNob3J0bHkgYWZ0ZXIgdGhpcyBjYWxsLCBz byBpdCBtdXN0IGJlIGNvcGllZAorICogdG8gbG9uZ2VyLWxpdmVkIHN0b3JhZ2UuCiAgKi8KLWJv b2wKLXVzZV9idWlsdGluX2Zsb3coUEdjb25uICpjb25uLCBmZV9vYXV0aF9zdGF0ZSAqc3RhdGUp CitzdGF0aWMgaW50Cit1c2VfYnVpbHRpbl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3Rh dGUgKnN0YXRlLCBQR29hdXRoQmVhcmVyUmVxdWVzdFYyICpyZXF1ZXN0KQogewogCXN0YXRpYyBi b29sIGluaXRpYWxpemVkID0gZmFsc2U7CiAJc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBpbml0X211 dGV4ID0gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjsKIAlpbnQJCQlsb2NrZXJyOwogCiAJdm9p ZAkJKCppbml0KSAocGd0aHJlYWRsb2NrX3QgdGhyZWFkbG9jaywKLQkJCQkJCSBsaWJwcV9nZXR0 ZXh0X2Z1bmMgZ2V0dGV4dF9pbXBsLAotCQkJCQkJIGNvbm5fZXJyb3JNZXNzYWdlX2Z1bmMgZXJy bXNnX2ltcGwsCi0JCQkJCQkgY29ubl9vYXV0aF9jbGllbnRfaWRfZnVuYyBjbGllbnRpZF9pbXBs LAotCQkJCQkJIGNvbm5fb2F1dGhfY2xpZW50X3NlY3JldF9mdW5jIGNsaWVudHNlY3JldF9pbXBs LAotCQkJCQkJIGNvbm5fb2F1dGhfZGlzY292ZXJ5X3VyaV9mdW5jIGRpc2NvdmVyeXVyaV9pbXBs LAotCQkJCQkJIGNvbm5fb2F1dGhfaXNzdWVyX2lkX2Z1bmMgaXNzdWVyaWRfaW1wbCwKLQkJCQkJ CSBjb25uX29hdXRoX3Njb3BlX2Z1bmMgc2NvcGVfaW1wbCwKLQkJCQkJCSBjb25uX3Nhc2xfc3Rh dGVfZnVuYyBzYXNsc3RhdGVfaW1wbCwKLQkJCQkJCSBzZXRfY29ubl9hbHRzb2NrX2Z1bmMgc2V0 YWx0c29ja19pbXBsLAotCQkJCQkJIHNldF9jb25uX29hdXRoX3Rva2VuX2Z1bmMgc2V0dG9rZW5f aW1wbCk7Ci0JUG9zdGdyZXNQb2xsaW5nU3RhdHVzVHlwZSAoKmZsb3cpIChQR2Nvbm4gKmNvbm4p OwotCXZvaWQJCSgqY2xlYW51cCkgKFBHY29ubiAqY29ubik7CisJCQkJCQkgbGlicHFfZ2V0dGV4 dF9mdW5jIGdldHRleHRfaW1wbCk7CisJaW50CQkJKCpzdGFydF9mbG93KSAoUEdjb25uICpjb25u LCBQR29hdXRoQmVhcmVyUmVxdWVzdFYyICpyZXF1ZXN0KTsKIAogCS8qCiAJICogT24gbWFjT1Mg b25seSwgbG9hZCB0aGUgbW9kdWxlIHVzaW5nIGl0cyBhYnNvbHV0ZSBpbnN0YWxsIHBhdGg7IHRo ZQpAQCAtODkzLDkgKzg4OSw5IEBAIHVzZV9idWlsdGluX2Zsb3coUEdjb25uICpjb25uLCBmZV9v YXV0aF9zdGF0ZSAqc3RhdGUpCiAJICovCiAJY29uc3QgY2hhciAqY29uc3QgbW9kdWxlX25hbWUg PQogI2lmIGRlZmluZWQoX19kYXJ3aW5fXykKLQkJTElCRElSICIvbGlicHEtb2F1dGgtIiBQR19N QUpPUlZFUlNJT04gRExTVUZGSVg7CisJCUxJQkRJUiAiL2xpYnBxLW9hdXRoIiBETFNVRkZJWDsK ICNlbHNlCi0JCSJsaWJwcS1vYXV0aC0iIFBHX01BSk9SVkVSU0lPTiBETFNVRkZJWDsKKwkJImxp YnBxLW9hdXRoIiBETFNVRkZJWDsKICNlbmRpZgogCiAJc3RhdGUtPmJ1aWx0aW5fZmxvdyA9IGRs b3Blbihtb2R1bGVfbmFtZSwgUlRMRF9OT1cgfCBSVExEX0xPQ0FMKTsKQEAgLTkxMSwxMiArOTA3 LDExIEBAIHVzZV9idWlsdGluX2Zsb3coUEdjb25uICpjb25uLCBmZV9vYXV0aF9zdGF0ZSAqc3Rh dGUpCiAJCWlmIChvYXV0aF91bnNhZmVfZGVidWdnaW5nX2VuYWJsZWQoKSkKIAkJCWZwcmludGYo c3RkZXJyLCAiZmFpbGVkIGRsb3BlbiBmb3IgbGlicHEtb2F1dGg6ICVzXG4iLCBkbGVycm9yKCkp OwogCi0JCXJldHVybiBmYWxzZTsKKwkJcmV0dXJuIDA7CiAJfQogCiAJaWYgKChpbml0ID0gZGxz eW0oc3RhdGUtPmJ1aWx0aW5fZmxvdywgImxpYnBxX29hdXRoX2luaXQiKSkgPT0gTlVMTAotCQl8 fCAoZmxvdyA9IGRsc3ltKHN0YXRlLT5idWlsdGluX2Zsb3csICJwZ19mZV9ydW5fb2F1dGhfZmxv dyIpKSA9PSBOVUxMCi0JCXx8IChjbGVhbnVwID0gZGxzeW0oc3RhdGUtPmJ1aWx0aW5fZmxvdywg InBnX2ZlX2NsZWFudXBfb2F1dGhfZmxvdyIpKSA9PSBOVUxMKQorCQl8fCAoc3RhcnRfZmxvdyA9 IGRsc3ltKHN0YXRlLT5idWlsdGluX2Zsb3csICJwZ19zdGFydF9vYXV0aGJlYXJlciIpKSA9PSBO VUxMKQogCXsKIAkJLyoKIAkJICogVGhpcyBpcyBtb3JlIG9mIGFuIGVycm9yIGNvbmRpdGlvbiB0 aGFuIHRoZSBvbmUgYWJvdmUsIGJ1dCBkdWUgdG8KQEAgLTkyNiw3ICs5MjEsNyBAQCB1c2VfYnVp bHRpbl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlKQogCQkJZnByaW50 ZihzdGRlcnIsICJmYWlsZWQgZGxzeW0gZm9yIGxpYnBxLW9hdXRoOiAlc1xuIiwgZGxlcnJvcigp KTsKIAogCQlkbGNsb3NlKHN0YXRlLT5idWlsdGluX2Zsb3cpOwotCQlyZXR1cm4gZmFsc2U7CisJ CXJldHVybiAwOwogCX0KIAogCS8qCkBAIC05NDYsNTYgKzk0MSwzNyBAQCB1c2VfYnVpbHRpbl9m bG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlKQogCQlBc3NlcnQoZmFsc2Up OwogCiAJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJmYWlsZWQgdG8gbG9jayBtdXRl eCAoJWQpIiwgbG9ja2Vycik7Ci0JCXJldHVybiBmYWxzZTsKKwkJcmV0dXJuIDA7CiAJfQogCiAJ aWYgKCFpbml0aWFsaXplZCkKIAl7CiAJCWluaXQocGdfZ190aHJlYWRsb2NrLAogI2lmZGVmIEVO QUJMRV9OTFMKLQkJCSBsaWJwcV9nZXR0ZXh0LAorCQkJIGxpYnBxX2dldHRleHQKICNlbHNlCi0J CQkgTlVMTCwKKwkJCSBOVUxMCiAjZW5kaWYKLQkJCSBjb25uX2Vycm9yTWVzc2FnZSwKLQkJCSBj b25uX29hdXRoX2NsaWVudF9pZCwKLQkJCSBjb25uX29hdXRoX2NsaWVudF9zZWNyZXQsCi0JCQkg Y29ubl9vYXV0aF9kaXNjb3ZlcnlfdXJpLAotCQkJIGNvbm5fb2F1dGhfaXNzdWVyX2lkLAotCQkJ IGNvbm5fb2F1dGhfc2NvcGUsCi0JCQkgY29ubl9zYXNsX3N0YXRlLAotCQkJIHNldF9jb25uX2Fs dHNvY2ssCi0JCQkgc2V0X2Nvbm5fb2F1dGhfdG9rZW4pOworCQkJKTsKIAogCQlpbml0aWFsaXpl ZCA9IHRydWU7CiAJfQogCiAJcHRocmVhZF9tdXRleF91bmxvY2soJmluaXRfbXV0ZXgpOwogCi0J LyogU2V0IG91ciBhc3luY2hyb25vdXMgY2FsbGJhY2tzLiAqLwotCWNvbm4tPmFzeW5jX2F1dGgg PSBmbG93OwotCWNvbm4tPmNsZWFudXBfYXN5bmNfYXV0aCA9IGNsZWFudXA7Ci0KLQlyZXR1cm4g dHJ1ZTsKKwlyZXR1cm4gKHN0YXJ0X2Zsb3coY29ubiwgcmVxdWVzdCkgPT0gMCkgPyAxIDogLTE7 CiB9CiAKICNlbHNlCiAKIC8qCi0gKiBVc2UgdGhlIGJ1aWx0aW4gZmxvdyBpbiBsaWJwcS1vYXV0 aC5hIChzZWUgbGlicHEtb2F1dGgvb2F1dGgtY3VybC5oKS4KKyAqIEZvciBzdGF0aWMgYnVpbGRz LCB3ZSBjYW4ganVzdCBjYWxsIHBnX3N0YXJ0X29hdXRoYmVhcmVyKCkgZGlyZWN0bHkuIEl0J3MK KyAqIHByb3ZpZGVkIGJ5IGxpYnBxLW9hdXRoLmEuCiAgKi8KLQotZXh0ZXJuIFBvc3RncmVzUG9s bGluZ1N0YXR1c1R5cGUgcGdfZmVfcnVuX29hdXRoX2Zsb3coUEdjb25uICpjb25uKTsKLWV4dGVy biB2b2lkIHBnX2ZlX2NsZWFudXBfb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4pOwotCi1ib29sCi11 c2VfYnVpbHRpbl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlKQorc3Rh dGljIGludAordXNlX2J1aWx0aW5fZmxvdyhQR2Nvbm4gKmNvbm4sIGZlX29hdXRoX3N0YXRlICpz dGF0ZSwgUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAqcmVxdWVzdCkKIHsKLQkvKiBTZXQgb3VyIGFz eW5jaHJvbm91cyBjYWxsYmFja3MuICovCi0JY29ubi0+YXN5bmNfYXV0aCA9IHBnX2ZlX3J1bl9v YXV0aF9mbG93OwotCWNvbm4tPmNsZWFudXBfYXN5bmNfYXV0aCA9IHBnX2ZlX2NsZWFudXBfb2F1 dGhfZmxvdzsKLQotCXJldHVybiB0cnVlOworCXJldHVybiAocGdfc3RhcnRfb2F1dGhiZWFyZXIo Y29ubiwgcmVxdWVzdCkgPT0gMCkgPyAxIDogLTE7CiB9CiAKICNlbmRpZgkJCQkJCQkvKiBVU0Vf TElCQ1VSTCAqLwpAQCAtMTAwOCwxMSArOTg0LDExIEBAIHVzZV9idWlsdGluX2Zsb3coUEdjb25u ICpjb25uLCBmZV9vYXV0aF9zdGF0ZSAqc3RhdGUpCiAgKiBJZiB0aGUgYXBwbGljYXRpb24gaGFz IHJlZ2lzdGVyZWQgYSBjdXN0b20gZmxvdyBoYW5kbGVyIHVzaW5nCiAgKiBQUUFVVEhEQVRBX09B VVRIX0JFQVJFUl9UT0tFTltfVjJdLCBpdCBtYXkgZWl0aGVyIHJldHVybiBhIHRva2VuIGltbWVk aWF0ZWx5CiAgKiAoZS5nLiBpZiBpdCBoYXMgb25lIGNhY2hlZCBmb3IgaW1tZWRpYXRlIHVzZSks IG9yIHNldCB1cCBmb3IgYSBzZXJpZXMgb2YKLSAqIGFzeW5jaHJvbm91cyBjYWxsYmFja3Mgd2hp Y2ggd2lsbCBiZSBtYW5hZ2VkIGJ5IHJ1bl91c2VyX29hdXRoX2Zsb3coKS4KKyAqIGFzeW5jaHJv bm91cyBjYWxsYmFja3Mgd2hpY2ggd2lsbCBiZSBtYW5hZ2VkIGJ5IHJ1bl9vYXV0aF9mbG93KCku CiAgKgogICogSWYgdGhlIGRlZmF1bHQgaGFuZGxlciBpcyB1c2VkIGluc3RlYWQsIGEgRGV2aWNl IEF1dGhvcml6YXRpb24gZmxvdyBpcyB1c2VkCi0gKiBmb3IgdGhlIGNvbm5lY3Rpb24gaWYgc3Vw cG9ydCBoYXMgYmVlbiBjb21waWxlZCBpbi4gKFNlZQotICogZmUtYXV0aC1vYXV0aC1jdXJsLmMg Zm9yIGltcGxlbWVudGF0aW9uIGRldGFpbHMuKQorICogZm9yIHRoZSBjb25uZWN0aW9uIGlmIHN1 cHBvcnQgaGFzIGJlZW4gY29tcGlsZWQgaW4uIChTZWUgb2F1dGgtY3VybC5jIGZvcgorICogaW1w bGVtZW50YXRpb24gZGV0YWlscy4pCiAgKgogICogSWYgbmVpdGhlciBhIGN1c3RvbSBoYW5kbGVy IG5vciB0aGUgYnVpbHRpbiBmbG93IGlzIGF2YWlsYWJsZSwgdGhlIGNvbm5lY3Rpb24KICAqIGZh aWxzIGhlcmUuCkBAIC0xMDQxLDExICsxMDE3LDE3IEBAIHNldHVwX3Rva2VuX3JlcXVlc3QoUEdj b25uICpjb25uLCBmZV9vYXV0aF9zdGF0ZSAqc3RhdGUpCiAKIAkvKgogCSAqIFRoZSBjbGllbnQg bWF5IGhhdmUgb3ZlcnJpZGRlbiB0aGUgT0F1dGggZmxvdy4gVHJ5IHRoZSB2MiBob29rIGZpcnN0 LAotCSAqIHRoZW4gZmFsbCBiYWNrIHRvIHRoZSB2MSBpbXBsZW1lbnRhdGlvbi4KKwkgKiB0aGVu IGZhbGwgYmFjayB0byB0aGUgdjEgaW1wbGVtZW50YXRpb24uIElmIG5laXRoZXIgaXMgYXZhaWxh YmxlLCB0cnkKKwkgKiB0aGUgYnVpbHRpbiBmbG93LgogCSAqLwogCXJlcyA9IFBRYXV0aERhdGFI b29rKFBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOX1YyLCBjb25uLCAmcmVxdWVzdCk7CiAJ aWYgKHJlcyA9PSAwKQogCQlyZXMgPSBQUWF1dGhEYXRhSG9vayhQUUFVVEhEQVRBX09BVVRIX0JF QVJFUl9UT0tFTiwgY29ubiwgJnJlcXVlc3QpOworCWlmIChyZXMgPT0gMCkKKwl7CisJCXN0YXRl LT5idWlsdGluID0gdHJ1ZTsKKwkJcmVzID0gdXNlX2J1aWx0aW5fZmxvdyhjb25uLCBzdGF0ZSwg JnJlcXVlc3QpOworCX0KIAogCWlmIChyZXMgPiAwKQogCXsKQEAgLTEwODEsMTYgKzEwNjMsMTYg QEAgc2V0dXBfdG9rZW5fcmVxdWVzdChQR2Nvbm4gKmNvbm4sIGZlX29hdXRoX3N0YXRlICpzdGF0 ZSkKIAogCQkqcmVxdWVzdF9jb3B5ID0gcmVxdWVzdDsKIAotCQljb25uLT5hc3luY19hdXRoID0g cnVuX3VzZXJfb2F1dGhfZmxvdzsKLQkJY29ubi0+Y2xlYW51cF9hc3luY19hdXRoID0gY2xlYW51 cF91c2VyX29hdXRoX2Zsb3c7CisJCWNvbm4tPmFzeW5jX2F1dGggPSBydW5fb2F1dGhfZmxvdzsK KwkJY29ubi0+Y2xlYW51cF9hc3luY19hdXRoID0gY2xlYW51cF9vYXV0aF9mbG93OwogCQlzdGF0 ZS0+YXN5bmNfY3R4ID0gcmVxdWVzdF9jb3B5OwogCX0KIAllbHNlIGlmIChyZXMgPCAwKQogCXsK LQkJcmVwb3J0X3VzZXJfZmxvd19lcnJvcihjb25uLCAmcmVxdWVzdCk7CisJCXJlcG9ydF9mbG93 X2Vycm9yKGNvbm4sICZyZXF1ZXN0KTsKIAkJZ290byBmYWlsOwogCX0KLQllbHNlIGlmICghdXNl X2J1aWx0aW5fZmxvdyhjb25uLCBzdGF0ZSkpCisJZWxzZQogCXsKIAkJbGlicHFfYXBwZW5kX2Nv bm5fZXJyb3IoY29ubiwgIm5vIE9BdXRoIGZsb3dzIGFyZSBhdmFpbGFibGUgKHRyeSBpbnN0YWxs aW5nIHRoZSBsaWJwcS1vYXV0aCBwYWNrYWdlKSIpOwogCQlnb3RvIGZhaWw7Ci0tIAoyLjM0LjEK Cg== --000000000000f056560646153aa9 Content-Type: application/octet-stream; name="v2-0006-libpq-oauth-Never-link-against-libpq-s-encoding-f.patch" Content-Disposition: attachment; filename="v2-0006-libpq-oauth-Never-link-against-libpq-s-encoding-f.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj8vb31p6 RnJvbSA0MTEzMjk5MWJiNGRmOTA5OWVlZmEyYjQxOWRhNzQ2MmMwYTFiMzY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogV2VkLCAzIERlYyAyMDI1IDA5OjUzOjQ0IC0wODAwClN1YmplY3Q6 IFtQQVRDSCB2MiA2LzddIGxpYnBxLW9hdXRoOiBOZXZlciBsaW5rIGFnYWluc3QgbGlicHEncyBl bmNvZGluZwogZnVuY3Rpb25zCgpOb3cgdGhhdCBsaWJwcS1vYXV0aCBkb2Vzbid0IGhhdmUgdG8g bWF0Y2ggdGhlIG1ham9yIHZlcnNpb24gb2YgbGlicHEsCnNvbWUgdGhpbmdzIGluIHBnX3djaGFy LmggYXJlIHRlY2huaWNhbGx5IHVuc2FmZSBmb3IgdXMgdG8gdXNlLiAoU2VlCmI2YzdjZmFjOCBm b3IgYSBmdWxsZXIgZGlzY3Vzc2lvbi4pIFRoaXMgaXMgdW5saWtlbHkgdG8gYmUgYSBwcm9ibGVt IC0tCndlIG9ubHkgY2FyZSBhYm91dCBVVEYtOCBpbiB0aGUgY29udGV4dCBvZiBPQXV0aCByaWdo dCBub3cgLS0gYnV0IGlmCmFueW9uZSBkaWQgaW50cm9kdWNlIGEgd2F5IHRvIGhpdCBpdCwgaXQn ZCBiZSBleHRyZW1lbHkgZGlmZmljdWx0IHRvCmRlYnVnIG9yIHJlcHJvZHVjZSwgYW5kIGl0J2Qg YmUgYSBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSB0bwpib290LgoKRGVmaW5lIFVT RV9QUklWQVRFX0VOQ09ESU5HX0ZVTkNTIHNvIHRoYXQgYW55b25lIHdobyB0cmllcyB0byBhZGQg YQpkZXBlbmRlbmN5IG9uIHRoZSBleHBvcnRlZCBBUElzIHdpbGwgc2ltcGx5IGZhaWwgdG8gbGlu ayB0aGUgc2hhcmVkCm1vZHVsZS4KClJldmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9A Z21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBT1ltaSUyQm1yR2cl MkJuX1gyTU9MZ2VXY2ozdl9NMDBnUjh1el9EN21NOHolM0RkWDFKWVZiZyU0MG1haWwuZ21haWwu Y29tCi0tLQogc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvbWVzb24uYnVpbGQgfCAxMCArKysr KysrKystCiBzcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9NYWtlZmlsZSAgICB8IDExICsrKysr KysrKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvbWVzb24uYnVpbGQgYi9z cmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9tZXNvbi5idWlsZAppbmRleCAxMTE5OTEwMGIyOC4u Yjc1NTk5MDQ5MGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL21lc29u LmJ1aWxkCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL21lc29uLmJ1aWxkCkBAIC0x Miw3ICsxMiwxNSBAQCBsaWJwcV9vYXV0aF9zb3VyY2VzID0gZmlsZXMoCiBsaWJwcV9vYXV0aF9z b19zb3VyY2VzID0gZmlsZXMoCiAgICdvYXV0aC11dGlscy5jJywKICkKLWxpYnBxX29hdXRoX3Nv X2NfYXJncyA9IFsnLURVU0VfRFlOQU1JQ19PQVVUSCddCitsaWJwcV9vYXV0aF9zb19jX2FyZ3Mg PSBbCisgICctRFVTRV9EWU5BTUlDX09BVVRIJywKKworICAjIEEgYml0IG9mIGZvcndhcmQtbG9v a2luZyBwYXJhbm9pYTogZG9uJ3QgYWxsb3cgYW55b25lIHRvIGFjY2lkZW50YWxseSBkZXBlbmQK KyAgIyBvbiB0aGUgZW5jb2RpbmcgSURzIGNvbWluZyBmcm9tIGxpYnBxLiBUaGV5J3JlIG5vdCBn dWFyYW50ZWVkIHRvIG1hdGNoIHRoZQorICAjIElEcyBpbiB1c2UgYnkgb3VyIHZlcnNpb24gb2Yg cGdjb21tb24sIG5vdyB0aGF0IHdlIGFsbG93IHRoZSBtYWpvciB2ZXJzaW9uCisgICMgb2YgbGli cHEgdG8gZGlmZmVyIGZyb20gdGhlIG1ham9yIHZlcnNpb24gb2YgbGlicHEtb2F1dGguCisgICct RFVTRV9QUklWQVRFX0VOQ09ESU5HX0ZVTkNTJywKK10KIAogZXhwb3J0X2ZpbGUgPSBjdXN0b21f dGFyZ2V0KCdsaWJwcS1vYXV0aC5leHBvcnRzJywKICAga3dhcmdzOiBnZW5fZXhwb3J0X2t3YXJn cywKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL01ha2VmaWxlIGIvc3Jj L2ludGVyZmFjZXMvbGlicHEtb2F1dGgvTWFrZWZpbGUKaW5kZXggMGZlYmIzOTNmZWIuLjQ1NzJm ZTc4MGQwIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9NYWtlZmlsZQor KysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9NYWtlZmlsZQpAQCAtMjQsNiArMjQsMTQg QEAgb3ZlcnJpZGUgc2hsaWIgOj0gbGliJChOQU1FKSQoRExTVUZGSVgpCiBvdmVycmlkZSBDUFBG TEFHUyA6PSAtSSQobGlicHFfc3JjZGlyKSAtSSQodG9wX2J1aWxkZGlyKS9zcmMvcG9ydCAkKENQ UEZMQUdTKSAkKExJQkNVUkxfQ1BQRkxBR1MpCiBvdmVycmlkZSBDRkxBR1MgKz0gJChQVEhSRUFE X0NGTEFHUykKIAorb3ZlcnJpZGUgQ1BQRkxBR1NfU0hMSUIgOj0gLURVU0VfRFlOQU1JQ19PQVVU SAorCisjIEEgYml0IG9mIGZvcndhcmQtbG9va2luZyBwYXJhbm9pYTogZG9uJ3QgYWxsb3cgbGli cHEtb2F1dGguc28gdG8gYWNjaWRlbnRhbGx5CisjIGRlcGVuZCBvbiB0aGUgZW5jb2RpbmcgSURz IGNvbWluZyBmcm9tIGxpYnBxLiBUaGV5J3JlIG5vdCBndWFyYW50ZWVkIHRvIG1hdGNoCisjIHRo ZSBJRHMgaW4gdXNlIGJ5IG91ciB2ZXJzaW9uIG9mIHBnY29tbW9uLCBub3cgdGhhdCB3ZSBhbGxv dyB0aGUgbWFqb3IgdmVyc2lvbgorIyBvZiBsaWJwcSB0byBkaWZmZXIgZnJvbSB0aGUgbWFqb3Ig dmVyc2lvbiBvZiBsaWJwcS1vYXV0aC4KK292ZXJyaWRlIENQUEZMQUdTX1NITElCICs9IC1EVVNF X1BSSVZBVEVfRU5DT0RJTkdfRlVOQ1MKKwogT0JKUyA9IFwKIAkkKFdJTjMyUkVTKQogCkBAIC0z NCw4ICs0Miw3IEBAIE9CSlNfU0hMSUIgPSBcCiAJb2F1dGgtY3VybF9zaGxpYi5vIFwKIAlvYXV0 aC11dGlscy5vIFwKIAotb2F1dGgtdXRpbHMubzogb3ZlcnJpZGUgQ1BQRkxBR1MgKz0gLURVU0Vf RFlOQU1JQ19PQVVUSAotb2F1dGgtY3VybF9zaGxpYi5vOiBvdmVycmlkZSBDUFBGTEFHU19TSExJ QiArPSAtRFVTRV9EWU5BTUlDX09BVVRICitvYXV0aC11dGlscy5vOiBvdmVycmlkZSBDUFBGTEFH UyArPSAkKENQUEZMQUdTX1NITElCKQogCiAjIEFkZCBzaGxpYi0vc3RsaWItc3BlY2lmaWMgb2Jq ZWN0cy4KICQoc2hsaWIpOiBvdmVycmlkZSBPQkpTICs9ICQoT0JKU19TSExJQikKLS0gCjIuMzQu MQoK --000000000000f056560646153aa9 Content-Type: application/octet-stream; name="v2-0007-WIP-Introduce-third-party-OAuth-flow-plugins.patch" Content-Disposition: attachment; filename="v2-0007-WIP-Introduce-third-party-OAuth-flow-plugins.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj8vb4vs7 RnJvbSBlMjBiNTU1YWJhNTdhYzdlODEwYTBiM2U3ODIxNjkwZjdlNDEwNzJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogV2VkLCAzIERlYyAyMDI1IDE1OjQ3OjIzIC0wODAwClN1YmplY3Q6 IFtQQVRDSCB2MiA3LzddIFdJUDogSW50cm9kdWNlIHRoaXJkLXBhcnR5IE9BdXRoIGZsb3cgcGx1 Z2lucz8KClRoaXMgZXhwZXJpbWVudGFsIGNvbW1pdCBwcm9tb3RlcyB0aGUgcGdfc3RhcnRfb2F1 dGhiZWFyZXIgQVBJIHRvIGEKcHVibGljIGhlYWRlciAobGlicHEtb2F1dGguaCkgYW5kIGFkZHMg YSBQR09BVVRITU9EVUxFIGVudmlyb25tZW50CnZhcmlhYmxlIHRoYXQgb3ZlcnJpZGVzIHRoZSBs b2FkIHBhdGggZm9yIHRoZSBwbHVnaW4sIGFsbG93aW5nIHVzZXJzIHRvCnByb3ZpZGUgdGhlaXIg b3duLiBUaGUgbGlicHFfb2F1dGhfaW5pdCBmdW5jdGlvbiBpcyBub3cgb3B0aW9uYWwsIGFuZAp3 aWxsIHJlbWFpbiB1bmRvY3VtZW50ZWQuIChNb2R1bGVzIHRoYXQgZG9uJ3QgcHJvdmlkZSBpdCBh cmUgbWFya2VkIGFzCnVzZXItZGVmaW5lZC4pCgpUaGlzIGlzIGEgcmVsYXRpdmVseSBzbWFsbCBh bW91bnQgb2YgaW1wbGVtZW50YXRpb24gY2hhbmdlLCBidXQKdW5mb3J0dW5hdGVseSB0aGUgdGVz dHMgaGF2ZSBhIGxhcmdlIGFtb3VudCBvZiBjb2RlIG1vdGlvbiB0byBiZSBhYmxlIHRvCnNoYXJl IGxvZ2ljIGJldHdlZW4gdGhlIHRlc3QgZXhlY3V0YWJsZSBhbmQgcGx1Z2luLiBJIG1pZ2h0IG5l ZWQgdG8Kc3BsaXQgdGhhdCBpbnRvIG11bHRpcGxlIHNxdWFzaCEgY29tbWl0cyB0byBtYWtlIGl0 IG1vcmUgZWFzaWx5CnJldmlld2FibGUuCgpUT0RPOiBmaWd1cmUgb3V0IFBHRExMRVhQT1JULCB3 aGljaCB3ZSBkbyBub3QgY3VycmVudGx5IHByb3ZpZGUgcHVibGljbHkKVE9ETzogYWRkIGEgcHVi bGljIGluaXQoKSBBUEkgc28gdGhhdCBubyBvbmUgdHJpZXMgdG8gaW1wbGVtZW50CiAgICAgIGxp YnBxX29hdXRoX2luaXQoKT8KVE9ETzogbG9jayBkb3duIFBHT0FVVEhNT0RVTEUgYXMgbmVjZXNz YXJ5IHRvIGF2b2lkIGludHJvZHVjaW5nIGV4Y2l0aW5nCiAgICAgIG5ldyB2dWxuZXJhYmlsaXRp ZXMKVE9ETzogaG93IGhhcmQgd291bGQgaXQgYmUgdG8gc3VwcG9ydCBXaW5kb3dzIGhlcmU/CgpE aXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBT1ltaSUyQm1yR2clMkJuX1gyTU9MZ2VX Y2ozdl9NMDBnUjh1el9EN21NOHolM0RkWDFKWVZiZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3Jj L2ludGVyZmFjZXMvbGlicHEvbWVzb24uYnVpbGQgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9p bnRlcmZhY2VzL2xpYnBxL01ha2VmaWxlICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW50 ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmggICAgICAgfCAgMjQgLS0KIHNyYy9pbnRl cmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguaCAgICAgICAgICB8ICAgMiArLQogc3JjL2ludGVy ZmFjZXMvbGlicHEvbGlicHEtb2F1dGguaCAgICAgICAgICAgIHwgIDUyICsrKwogc3JjL2ludGVy ZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5jICAgICAgIHwgICAyICstCiBzcmMvaW50ZXJm YWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmMgICAgICAgICAgfCAgODEgKystLQogc3JjL3Rlc3Qv bW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvbWVzb24uYnVpbGQgIHwgIDE1ICsKIHNyYy90ZXN0L21v ZHVsZXMvb2F1dGhfdmFsaWRhdG9yL01ha2VmaWxlICAgICB8ICAxMCArLQogLi4uL29hdXRoX3Zh bGlkYXRvci9vYXV0aF90ZXN0X2NvbW1vbi5oICAgICAgIHwgIDI2ICsrCiBzcmMvdGVzdC9tb2R1 bGVzL29hdXRoX3ZhbGlkYXRvci9vYXV0aF9mbG93LmMgfCAgNjkgKysrKwogLi4uL29hdXRoX3Zh bGlkYXRvci9vYXV0aF9ob29rX2NsaWVudC5jICAgICAgIHwgMzE5ICstLS0tLS0tLS0tLS0tLQog Li4uL29hdXRoX3ZhbGlkYXRvci9vYXV0aF90ZXN0X2NvbW1vbi5jICAgICAgIHwgMzc0ICsrKysr KysrKysrKysrKysrKwogLi4uL21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL3QvMDAyX2NsaWVudC5w bCAgIHwgIDQxICstCiAxNCBmaWxlcyBjaGFuZ2VkLCA2NDkgaW5zZXJ0aW9ucygrKSwgMzY5IGRl bGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRo L29hdXRoLWN1cmwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2VzL2xpYnBxL2xp YnBxLW9hdXRoLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL29hdXRoX3Zh bGlkYXRvci9vYXV0aF90ZXN0X2NvbW1vbi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv bW9kdWxlcy9vYXV0aF92YWxpZGF0b3Ivb2F1dGhfZmxvdy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3Ivb2F1dGhfdGVzdF9jb21tb24uYwoKZGlm ZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL21lc29uLmJ1aWxkIGIvc3JjL2ludGVyZmFj ZXMvbGlicHEvbWVzb24uYnVpbGQKaW5kZXggYjI1OWM5OThmYTIuLmFjNzE1NDhiMDU5IDEwMDY0 NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9tZXNvbi5idWlsZAorKysgYi9zcmMvaW50ZXJm YWNlcy9saWJwcS9tZXNvbi5idWlsZApAQCAtMTI4LDYgKzEyOCw3IEBAIHBrZ2NvbmZpZy5nZW5l cmF0ZSgKIGluc3RhbGxfaGVhZGVycygKICAgJ2xpYnBxLWZlLmgnLAogICAnbGlicHEtZXZlbnRz LmgnLAorICAnbGlicHEtb2F1dGguaCcsCiApCiAKIGluc3RhbGxfaGVhZGVycygKZGlmZiAtLWdp dCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL01ha2VmaWxlIGIvc3JjL2ludGVyZmFjZXMvbGlicHEv TWFrZWZpbGUKaW5kZXggOWZlMzIxMTQ3ZmMuLjFkMGNkMjJmNmYwIDEwMDY0NAotLS0gYS9zcmMv aW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZQorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtl ZmlsZQpAQCAtMTU1LDYgKzE1NSw3IEBAICQodG9wX2J1aWxkZGlyKS9zcmMvcG9ydC9wZ19jb25m aWdfcGF0aHMuaDoKIGluc3RhbGw6IGFsbCBpbnN0YWxsZGlycyBpbnN0YWxsLWxpYgogCSQoSU5T VEFMTF9EQVRBKSAkKHNyY2RpcikvbGlicHEtZmUuaCAnJChERVNURElSKSQoaW5jbHVkZWRpcikn CiAJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9saWJwcS1ldmVudHMuaCAnJChERVNURElSKSQo aW5jbHVkZWRpciknCisJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9saWJwcS1vYXV0aC5oICck KERFU1RESVIpJChpbmNsdWRlZGlyKScKIAkkKElOU1RBTExfREFUQSkgJChzcmNkaXIpL2xpYnBx LWludC5oICckKERFU1RESVIpJChpbmNsdWRlZGlyX2ludGVybmFsKScKIAkkKElOU1RBTExfREFU QSkgJChzcmNkaXIpL2ZlLWF1dGgtc2FzbC5oICckKERFU1RESVIpJChpbmNsdWRlZGlyX2ludGVy bmFsKScKIAkkKElOU1RBTExfREFUQSkgJChzcmNkaXIpL3BxZXhwYnVmZmVyLmggJyQoREVTVERJ UikkKGluY2x1ZGVkaXJfaW50ZXJuYWwpJwpAQCAtMTc3LDYgKzE3OCw3IEBAIGluc3RhbGxkaXJz OiBpbnN0YWxsZGlycy1saWIKIHVuaW5zdGFsbDogdW5pbnN0YWxsLWxpYgogCXJtIC1mICckKERF U1RESVIpJChpbmNsdWRlZGlyKS9saWJwcS1mZS5oJwogCXJtIC1mICckKERFU1RESVIpJChpbmNs dWRlZGlyKS9saWJwcS1ldmVudHMuaCcKKwlybSAtZiAnJChERVNURElSKSQoaW5jbHVkZWRpcikv bGlicHEtb2F1dGguaCcKIAlybSAtZiAnJChERVNURElSKSQoaW5jbHVkZWRpcl9pbnRlcm5hbCkv bGlicHEtaW50LmgnCiAJcm0gLWYgJyQoREVTVERJUikkKGluY2x1ZGVkaXJfaW50ZXJuYWwpL2Zl LWF1dGgtc2FzbC5oJwogCXJtIC1mICckKERFU1RESVIpJChpbmNsdWRlZGlyX2ludGVybmFsKS9w cWV4cGJ1ZmZlci5oJwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1 dGgtY3VybC5oIGIvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5oCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzcwNDY4OTU4Ni4uMDAwMDAwMDAwMDAKLS0tIGEv c3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5oCisrKyAvZGV2L251bGwKQEAg LTEsMjQgKzAsMCBAQAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKgotICogb2F1dGgtY3VybC5oCi0g KgotICoJICBEZWZpbml0aW9ucyBmb3IgT0F1dGggRGV2aWNlIEF1dGhvcml6YXRpb24gbW9kdWxl Ci0gKgotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjUsIFBvc3RncmVTUUwgR2xv YmFsIERldmVsb3BtZW50IEdyb3VwCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJl Z2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQotICoKLSAqIHNyYy9pbnRlcmZh Y2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuaAotICoKLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICov Ci0KLSNpZm5kZWYgT0FVVEhfQ1VSTF9ICi0jZGVmaW5lIE9BVVRIX0NVUkxfSAotCi0jaW5jbHVk ZSAibGlicHEtZmUuaCIKLQotLyogRXhwb3J0ZWQgZmxvdyBjYWxsYmFjay4gKi8KLWV4dGVybiBQ R0RMTEVYUE9SVCBpbnQgcGdfc3RhcnRfb2F1dGhiZWFyZXIoUEdjb25uICpjb25uLAotCQkJCQkJ CQkJCQlQR29hdXRoQmVhcmVyUmVxdWVzdFYyICpyZXF1ZXN0KTsKLQotI2VuZGlmCQkJCQkJCS8q IE9BVVRIX0NVUkxfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0 aC1vYXV0aC5oIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5oCmluZGV4IGI5 YWVkODc5ZTY0Li4zMGQzZmY2NzQxZSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEv ZmUtYXV0aC1vYXV0aC5oCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGgu aApAQCAtMzUsNyArMzUsNyBAQCB0eXBlZGVmIHN0cnVjdAogCXZvaWQJICAgKmFzeW5jX2N0eDsK IAogCWJvb2wJCWJ1aWx0aW47Ci0Jdm9pZAkgICAqYnVpbHRpbl9mbG93OworCXZvaWQJICAgKmZs b3dfbW9kdWxlOwogfSBmZV9vYXV0aF9zdGF0ZTsKIAogZXh0ZXJuIHZvaWQgcHFDbGVhck9BdXRo VG9rZW4oUEdjb25uICpjb25uKTsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xp YnBxLW9hdXRoLmggYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1vYXV0aC5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yYTYyYjMzMGIxYwotLS0gL2Rldi9udWxs CisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLW9hdXRoLmgKQEAgLTAsMCArMSw1MiBA QAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogbGlicHEtb2F1dGguaAorICoJICBUaGlzIGZp bGUgY29udGFpbnMgc3RydWN0cyBhbmQgZnVuY3Rpb25zIHVzZWQgYnkgY3VzdG9tIE9BdXRoIHBs dWdpbnMuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZl bG9wbWVudCBHcm91cAorICoKKyAqIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLW9hdXRoLmgK KyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaWZuZGVmIExJQlBRX09BVVRIX0gKKyNk ZWZpbmUgTElCUFFfT0FVVEhfSAorCisjaW5jbHVkZSAibGlicHEtZmUuaCIKKworI2lmZGVmIF9f Y3BsdXNwbHVzCitleHRlcm4gIkMiCit7CisjZW5kaWYKKworLyogWFhYIGNhbid0IHJlbHkgb24g Yy5oLCBidXQgZHVwbGljYXRpbmcgdGhpcyBpcyBhc2tpbmcgZm9yIHRyb3VibGUgKi8KKyNpZm5k ZWYgUEdETExFWFBPUlQKKyNpZmRlZiBfV0lOMzIKKyNkZWZpbmUgUEdETExFWFBPUlQgX19kZWNs c3BlYyAoZGxsZXhwb3J0KQorI2VsaWYgZGVmaW5lZChfX2hhc19hdHRyaWJ1dGUpCisjaWYgX19o YXNfYXR0cmlidXRlKHZpc2liaWxpdHkpCisjZGVmaW5lIFBHRExMRVhQT1JUIF9fYXR0cmlidXRl X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCisjZWxzZQorI2RlZmluZSBQR0RMTEVYUE9SVAor I2VuZGlmCisjZWxzZQorI2RlZmluZSBQR0RMTEVYUE9SVAorI2VuZGlmCisjZW5kaWYKKworLyoK KyAqIFYxIEFQSQorICoKKyAqIEZsb3cgcGx1Z2lucyBtdXN0IHByb3ZpZGUgYW4gaW1wbGVtZW50 YXRpb24gb2YgdGhpcyBjYWxsYmFjay4KKyAqCisgKiBUT0RPOiBwcm92aWRlIGEgbWFnaWMgc3Ry dWN0IHRoYXQgYWxsb3dzIGJhY2t3YXJkcyBidXQgbm90IGZvcndhcmRzIGNvbXBhdD8KKyAqLwor ZXh0ZXJuIFBHRExMRVhQT1JUIGludCBwZ19zdGFydF9vYXV0aGJlYXJlcihQR2Nvbm4gKmNvbm4s CisJCQkJCQkJCQkJCVBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJlcXVlc3QpOworCisjaWZkZWYg X19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYJCQkJCQkJLyogTElCUFFfT0FVVEhfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5jIGIv c3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5jCmluZGV4IGI5NDQ1OGM4NjBm Li41ODdjOWM4ODJlNiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1 dGgtY3VybC5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuYwpA QCAtMjksOCArMjksOCBAQAogI2VuZGlmCiAKICNpbmNsdWRlICJjb21tb24vanNvbmFwaS5oIgor I2luY2x1ZGUgImxpYnBxLW9hdXRoLmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKLSNpbmNs dWRlICJvYXV0aC1jdXJsLmgiCiAKICNpZmRlZiBVU0VfRFlOQU1JQ19PQVVUSAogCmRpZmYgLS1n aXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmMgYi9zcmMvaW50ZXJmYWNl cy9saWJwcS9mZS1hdXRoLW9hdXRoLmMKaW5kZXggZGE2YTJjNGEyZjcuLjg4Y2YxYjQ1OTM4IDEw MDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmMKKysrIGIvc3Jj L2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5jCkBAIC0xNyw2ICsxNyw4IEBACiAKICNp ZmRlZiBVU0VfRFlOQU1JQ19PQVVUSAogI2luY2x1ZGUgPGRsZmNuLmg+CisjZWxzZQorI2luY2x1 ZGUgImxpYnBxLW9hdXRoLmgiCiAjZW5kaWYKIAogI2luY2x1ZGUgImNvbW1vbi9iYXNlNjQuaCIK QEAgLTg4NywxNSArODg5LDMzIEBAIHVzZV9idWlsdGluX2Zsb3coUEdjb25uICpjb25uLCBmZV9v YXV0aF9zdGF0ZSAqc3RhdGUsIFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJlCiAJICogT24gdGhl IG90aGVyIHBsYXRmb3JtcywgbG9hZCB0aGUgbW9kdWxlIHVzaW5nIG9ubHkgdGhlIGJhc2VuYW1l LCB0bwogCSAqIHJlbHkgb24gdGhlIHJ1bnRpbWUgbGlua2VyJ3Mgc3RhbmRhcmQgc2VhcmNoIGJl aGF2aW9yLgogCSAqLwotCWNvbnN0IGNoYXIgKmNvbnN0IG1vZHVsZV9uYW1lID0KKwljb25zdCBj aGFyICptb2R1bGVfbmFtZSA9CiAjaWYgZGVmaW5lZChfX2Rhcndpbl9fKQogCQlMSUJESVIgIi9s aWJwcS1vYXV0aCIgRExTVUZGSVg7CiAjZWxzZQogCQkibGlicHEtb2F1dGgiIERMU1VGRklYOwog I2VuZGlmCiAKLQlzdGF0ZS0+YnVpbHRpbl9mbG93ID0gZGxvcGVuKG1vZHVsZV9uYW1lLCBSVExE X05PVyB8IFJUTERfTE9DQUwpOwotCWlmICghc3RhdGUtPmJ1aWx0aW5fZmxvdykKKwkvKi0KKwkg KiBBZGRpdGlvbmFsbHksIHRoZSB1c2VyIG1heSBvdmVycmlkZSB0aGUgbW9kdWxlIHBhdGggZXhw bGljaXRseSB0byBiZQorCSAqIGFibGUgdG8gcHJvdmlkZSB0aGVpciBvd24gbW9kdWxlLCB2aWEg UEdPQVVUSE1PRFVMRS4KKwkgKgorCSAqIFRPRE86IGVycm9yIG1lc3NhZ2VzIGJlbG93IG5lZWQg dG8gYmUgcmV0aG91Z2h0IHdoZW4gdGhpcyBpcyBzZXQKKwkgKiBUT0RPOiBoYXZlIHRvIHRoaW5r IGFib3V0IF9hbGxfIHRoZSBzZWN1cml0eSByYW1pZmljYXRpb25zIG9mIHRoaXMuIFdoYXQKKwkg KiBleGlzdGluZyBwcm90ZWN0aW9ucyBpbiBMRF9MSUJSQVJZX1BBVEggKGFuZC9vciBTSVApIGFy ZSB3ZSBwb3RlbnRpYWxseQorCSAqIGJ5cGFzc2luZz8gU2hvdWxkIHdlIGNoZWNrIHRoZSBwZXJt aXNzaW9ucyBvZiB0aGUgZmlsZSBzb21laG93Li4uPworCSAqIFRPRE86IG1heWJlIGRpc2FsbG93 IGFueXRoaW5nIG5vdCB1bmRlcm5lYXRoIExJQkRJUj8gb3IgUEtHTElCRElSPworCSAqIFNob3Vs ZCBpdCBoYXZlIGEgbmFtaW5nIGNvbnZlbnRpb24/CisJICovCisJeworCQljb25zdCBjaGFyICpl bnYgPSBnZXRlbnYoIlBHT0FVVEhNT0RVTEUiKTsKKworCQlpZiAoZW52ICYmIGVudlswXSkKKwkJ CW1vZHVsZV9uYW1lID0gZW52OworCX0KKworCXN0YXRlLT5mbG93X21vZHVsZSA9IGRsb3Blbiht b2R1bGVfbmFtZSwgUlRMRF9OT1cgfCBSVExEX0xPQ0FMKTsKKwlpZiAoIXN0YXRlLT5mbG93X21v ZHVsZSkKIAl7CiAJCS8qCiAJCSAqIEZvciBlbmQgdXNlcnMsIHRoaXMgcHJvYmFibHkgaXNuJ3Qg YW4gZXJyb3IgY29uZGl0aW9uLCBpdCBqdXN0CkBAIC05MTAsOCArOTMwLDcgQEAgdXNlX2J1aWx0 aW5fZmxvdyhQR2Nvbm4gKmNvbm4sIGZlX29hdXRoX3N0YXRlICpzdGF0ZSwgUEdvYXV0aEJlYXJl clJlcXVlc3RWMiAqcmUKIAkJcmV0dXJuIDA7CiAJfQogCi0JaWYgKChpbml0ID0gZGxzeW0oc3Rh dGUtPmJ1aWx0aW5fZmxvdywgImxpYnBxX29hdXRoX2luaXQiKSkgPT0gTlVMTAotCQl8fCAoc3Rh cnRfZmxvdyA9IGRsc3ltKHN0YXRlLT5idWlsdGluX2Zsb3csICJwZ19zdGFydF9vYXV0aGJlYXJl ciIpKSA9PSBOVUxMKQorCWlmICgoc3RhcnRfZmxvdyA9IGRsc3ltKHN0YXRlLT5mbG93X21vZHVs ZSwgInBnX3N0YXJ0X29hdXRoYmVhcmVyIikpID09IE5VTEwpCiAJewogCQkvKgogCQkgKiBUaGlz IGlzIG1vcmUgb2YgYW4gZXJyb3IgY29uZGl0aW9uIHRoYW4gdGhlIG9uZSBhYm92ZSwgYnV0IGR1 ZSB0bwpAQCAtOTIwLDcgKzkzOSw3IEBAIHVzZV9idWlsdGluX2Zsb3coUEdjb25uICpjb25uLCBm ZV9vYXV0aF9zdGF0ZSAqc3RhdGUsIFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJlCiAJCWlmIChv YXV0aF91bnNhZmVfZGVidWdnaW5nX2VuYWJsZWQoKSkKIAkJCWZwcmludGYoc3RkZXJyLCAiZmFp bGVkIGRsc3ltIGZvciBsaWJwcS1vYXV0aDogJXNcbiIsIGRsZXJyb3IoKSk7CiAKLQkJZGxjbG9z ZShzdGF0ZS0+YnVpbHRpbl9mbG93KTsKKwkJZGxjbG9zZShzdGF0ZS0+Zmxvd19tb2R1bGUpOwog CQlyZXR1cm4gMDsKIAl9CiAKQEAgLTkzMCwzNCArOTQ5LDQ2IEBAIHVzZV9idWlsdGluX2Zsb3co UEdjb25uICpjb25uLCBmZV9vYXV0aF9zdGF0ZSAqc3RhdGUsIFBHb2F1dGhCZWFyZXJSZXF1ZXN0 VjIgKnJlCiAJICovCiAKIAkvKgotCSAqIFdlIG5lZWQgdG8gaW5qZWN0IG5lY2Vzc2FyeSBmdW5j dGlvbiBwb2ludGVycyBpbnRvIHRoZSBtb2R1bGUuIFRoaXMKLQkgKiBvbmx5IG5lZWRzIHRvIGJl IGRvbmUgb25jZSAtLSBldmVuIGlmIHRoZSBwb2ludGVycyBhcmUgY29uc3RhbnQsCi0JICogYXNz aWduaW5nIHRoZW0gd2hpbGUgYW5vdGhlciB0aHJlYWQgaXMgZXhlY3V0aW5nIHRoZSBmbG93cyBm ZWVscyBsaWtlCi0JICogdGVtcHRpbmcgZmF0ZS4KKwkgKiBPdXIgbGlicHEtb2F1dGguc28gcHJv dmlkZXMgYSBzcGVjaWFsIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGZvciBsaWJwcQorCSAqIGlu dGVncmF0aW9uLiBJdCdzIG5vdCBhIHByb2JsZW0gaWYgd2UgZG9uJ3QgZmluZCB0aGlzOyBpdCBq dXN0IG1lYW5zCisJICogdGhhdCBhIHVzZXItZGVmaW5lZCBQR09BVVRITU9EVUxFIGlzIGJlaW5n IHVzZWQuCiAJICovCi0JaWYgKChsb2NrZXJyID0gcHRocmVhZF9tdXRleF9sb2NrKCZpbml0X211 dGV4KSkgIT0gMCkKKwlpbml0ID0gZGxzeW0oc3RhdGUtPmZsb3dfbW9kdWxlLCAibGlicHFfb2F1 dGhfaW5pdCIpOworCisJaWYgKCFpbml0KQorCQlzdGF0ZS0+YnVpbHRpbiA9IGZhbHNlOyAvKiBh ZGp1c3Qgb3VyIGVycm9yIG1lc3NhZ2VzICovCisJZWxzZQogCXsKLQkJLyogU2hvdWxkIG5vdCBo YXBwZW4uLi4gYnV0IGRvbid0IGNvbnRpbnVlIGlmIGl0IGRvZXMuICovCi0JCUFzc2VydChmYWxz ZSk7CisJCS8qCisJCSAqIFdlIG5lZWQgdG8gaW5qZWN0IG5lY2Vzc2FyeSBmdW5jdGlvbiBwb2lu dGVycyBpbnRvIHRoZSBtb2R1bGUuIFRoaXMKKwkJICogb25seSBuZWVkcyB0byBiZSBkb25lIG9u Y2UgLS0gZXZlbiBpZiB0aGUgcG9pbnRlcnMgYXJlIGNvbnN0YW50LAorCQkgKiBhc3NpZ25pbmcg dGhlbSB3aGlsZSBhbm90aGVyIHRocmVhZCBpcyBleGVjdXRpbmcgdGhlIGZsb3dzIGZlZWxzCisJ CSAqIGxpa2UgdGVtcHRpbmcgZmF0ZS4KKwkJICovCisJCWlmICgobG9ja2VyciA9IHB0aHJlYWRf bXV0ZXhfbG9jaygmaW5pdF9tdXRleCkpICE9IDApCisJCXsKKwkJCS8qIFNob3VsZCBub3QgaGFw cGVuLi4uIGJ1dCBkb24ndCBjb250aW51ZSBpZiBpdCBkb2VzLiAqLworCQkJQXNzZXJ0KGZhbHNl KTsKIAotCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiZmFpbGVkIHRvIGxvY2sgbXV0 ZXggKCVkKSIsIGxvY2tlcnIpOwotCQlyZXR1cm4gMDsKLQl9CisJCQlsaWJwcV9hcHBlbmRfY29u bl9lcnJvcihjb25uLCAiZmFpbGVkIHRvIGxvY2sgbXV0ZXggKCVkKSIsIGxvY2tlcnIpOworCQkJ cmV0dXJuIDA7CisJCX0KIAotCWlmICghaW5pdGlhbGl6ZWQpCi0JewotCQlpbml0KHBnX2dfdGhy ZWFkbG9jaywKKwkJaWYgKCFpbml0aWFsaXplZCkKKwkJeworCQkJaW5pdChwZ19nX3RocmVhZGxv Y2ssCiAjaWZkZWYgRU5BQkxFX05MUwotCQkJIGxpYnBxX2dldHRleHQKKwkJCQkgbGlicHFfZ2V0 dGV4dAogI2Vsc2UKLQkJCSBOVUxMCisJCQkJIE5VTEwKICNlbmRpZgotCQkJKTsKKwkJCQkpOwog Ci0JCWluaXRpYWxpemVkID0gdHJ1ZTsKLQl9CisJCQlpbml0aWFsaXplZCA9IHRydWU7CisJCX0K IAotCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZpbml0X211dGV4KTsKKwkJcHRocmVhZF9tdXRleF91 bmxvY2soJmluaXRfbXV0ZXgpOworCX0KIAogCXJldHVybiAoc3RhcnRfZmxvdyhjb25uLCByZXF1 ZXN0KSA9PSAwKSA/IDEgOiAtMTsKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvb2F1 dGhfdmFsaWRhdG9yL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0 b3IvbWVzb24uYnVpbGQKaW5kZXggYTZmOTM3ZmQ3ZDcuLjFkODk4MjcwMjIwIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci9tZXNvbi5idWlsZAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci9tZXNvbi5idWlsZApAQCAtNTAsNiArNTAsNyBA QCB0ZXN0X2luc3RhbGxfbGlicyArPSBtYWdpY192YWxpZGF0b3IKIAogb2F1dGhfaG9va19jbGll bnRfc291cmNlcyA9IGZpbGVzKAogICAnb2F1dGhfaG9va19jbGllbnQuYycsCisgICdvYXV0aF90 ZXN0X2NvbW1vbi5jJywKICkKIAogaWYgaG9zdF9zeXN0ZW0gPT0gJ3dpbmRvd3MnCkBAIC02Nyw2 ICs2OCwxOSBAQCBvYXV0aF9ob29rX2NsaWVudCA9IGV4ZWN1dGFibGUoJ29hdXRoX2hvb2tfY2xp ZW50JywKICkKIHRlc3RwcmVwX3RhcmdldHMgKz0gb2F1dGhfaG9va19jbGllbnQKIAorb2F1dGhf ZmxvdyA9IHNoYXJlZF9tb2R1bGUoJ29hdXRoX2Zsb3cnLAorICBmaWxlcygKKyAgICAnb2F1dGhf Zmxvdy5jJywKKyAgICAnb2F1dGhfdGVzdF9jb21tb24uYycsCisgICksCisgIGluY2x1ZGVfZGly ZWN0b3JpZXM6IFtwb3N0Z3Jlc19pbmNdLAorICBkZXBlbmRlbmNpZXM6IFtmcm9udGVuZF9zaGxp Yl9jb2RlLCBsaWJwcV0sCisgIGt3YXJnczogZGVmYXVsdF9saWJfYXJncyArIHsKKyAgICAnaW5z dGFsbCc6IGZhbHNlLAorICB9LAorKQordGVzdHByZXBfdGFyZ2V0cyArPSBvYXV0aF9mbG93CisK IHRlc3RzICs9IHsKICAgJ25hbWUnOiAnb2F1dGhfdmFsaWRhdG9yJywKICAgJ3NkJzogbWVzb24u Y3VycmVudF9zb3VyY2VfZGlyKCksCkBAIC04MCw2ICs5NCw3IEBAIHRlc3RzICs9IHsKICAgICAg ICdQWVRIT04nOiBweXRob24uZnVsbF9wYXRoKCksCiAgICAgICAnd2l0aF9saWJjdXJsJzogb2F1 dGhfZmxvd19zdXBwb3J0ZWQgPyAneWVzJyA6ICdubycsCiAgICAgICAnd2l0aF9weXRob24nOiAn eWVzJywKKyAgICAgICdmbG93X21vZHVsZV9wYXRoJzogb2F1dGhfZmxvdy5mdWxsX3BhdGgoKSwK ICAgICB9LAogICB9LAogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxp ZGF0b3IvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci9NYWtlZmls ZQppbmRleCAwNWI5ZjA2ZWQ3My4uZTIyMDk4ZGFjYjggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21v ZHVsZXMvb2F1dGhfdmFsaWRhdG9yL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvb2F1 dGhfdmFsaWRhdG9yL01ha2VmaWxlCkBAIC0xNCwxMSArMTQsMTMgQEAgUEdGSUxFREVTQyA9ICJ2 YWxpZGF0b3IgLSB0ZXN0IE9BdXRoIHZhbGlkYXRvciBtb2R1bGUiCiAKIFBST0dSQU0gPSBvYXV0 aF9ob29rX2NsaWVudAogUEdBUFBJQ09OID0gd2luMzIKLU9CSlMgPSAkKFdJTjMyUkVTKSBvYXV0 aF9ob29rX2NsaWVudC5vCitPQkpTID0gJChXSU4zMlJFUykgb2F1dGhfaG9va19jbGllbnQubyBv YXV0aF90ZXN0X2NvbW1vbi5vCiAKIFBHX0NQUEZMQUdTID0gLUkkKGxpYnBxX3NyY2RpcikKIFBH X0xJQlNfSU5URVJOQUwgKz0gJChsaWJwcV9wZ3BvcnQpCiAKK0VYVFJBX0NMRUFOID0gb2F1dGhf ZmxvdyQoRExTVUZGSVgpIG9hdXRoX2Zsb3cubworCiBOT19JTlNUQUxMQ0hFQ0sgPSAxCiAKIFRB UF9URVNUUyA9IDEKQEAgLTMzLDggKzM1LDE0IEBAIHRvcF9idWlsZGRpciA9IC4uLy4uLy4uLy4u CiBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCiBpbmNsdWRlICQo dG9wX3NyY2RpcikvY29udHJpYi9jb250cmliLWdsb2JhbC5tawogCithbGw6IG9hdXRoX2Zsb3ck KERMU1VGRklYKQorCitvYXV0aF9mbG93JChETFNVRkZJWCk6IG9hdXRoX2Zsb3cubyBvYXV0aF90 ZXN0X2NvbW1vbi5vCisJJChDQykgJChDRkxBR1MpICReICQoTERGTEFHUykgJChsaWJwcV9wZ3Bv cnRfc2hsaWIpICQoTERGTEFHU19TTCkgLXNoYXJlZCAtbyAkQAorCiBleHBvcnQgUFlUSE9OCiBl eHBvcnQgd2l0aF9saWJjdXJsCiBleHBvcnQgd2l0aF9weXRob24KK2V4cG9ydCBmbG93X21vZHVs ZV9wYXRoIDo9ICQoYWJzX3RvcF9idWlsZGRpcikvJChzdWJkaXIpL29hdXRoX2Zsb3ckKERMU1VG RklYKQogCiBlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0 b3Ivb2F1dGhfdGVzdF9jb21tb24uaCBiL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9y L29hdXRoX3Rlc3RfY29tbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjMzZTcyZTMwNDQwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0 aF92YWxpZGF0b3Ivb2F1dGhfdGVzdF9jb21tb24uaApAQCAtMCwwICsxLDI2IEBACisvKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCisgKiBvYXV0aF90ZXN0X2NvbW1vbi5oCisgKgkgIFNoYXJlZCBmdW5j dGlvbmFsaXR5IGZvciBvYXV0aF9ob29rX2NsaWVudCBhbmQgb2F1dGhfZmxvdworICoKKyAqIENv cHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAq CisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaWZuZGVmIE9BVVRIX1RFU1RfQ09NTU9OX0gK KyNkZWZpbmUgT0FVVEhfVEVTVF9DT01NT05fSAorCisvKgorICogT25seSBwdWJsaWMgaGVhZGVy cyBjYW4gYmUgaGVyZSwgc2luY2Ugb2F1dGhfZmxvdy5jIGlzIHRyeWluZyB0byB0ZXN0IG9ubHkK KyAqIHRoZSBwdWJsaWMgQVBJLgorICovCisjaW5jbHVkZSAibGlicHEtZmUuaCIKKworZXh0ZXJu IGludAlzdHJlc3NfYXN5bmM7CQkvKiBmb3Igb2F1dGhfaG9va19jbGllbnQgKi8KKworZXh0ZXJu IGNoYXIgKm9hdXRoX3Rlc3RfcGFyc2VfYXJndihpbnQgYXJnYywgY2hhciAqYXJndltdLCBpbnQg Zm9yX3BsdWdpbik7CitleHRlcm4gaW50CW9hdXRoX3Rlc3RfYXV0aGRhdGFfaG9vayhQR2F1dGhE YXRhIHR5cGUsIFBHY29ubiAqY29ubiwgdm9pZCAqZGF0YSk7CitleHRlcm4gaW50CW9hdXRoX3Rl c3Rfc3RhcnRfZmxvdyhQR2Nvbm4gKmNvbm4sIFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJlcXVl c3QpOworCisjZW5kaWYJCQkJCQkJLyogT0FVVEhfVEVTVF9DT01NT05fSCAqLwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3Ivb2F1dGhfZmxvdy5jIGIvc3JjL3Rl c3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3Ivb2F1dGhfZmxvdy5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44MDY4YTQ1YWUyOQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL29hdXRoX2Zsb3cuYwpAQCAtMCwwICsxLDY5 IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBvYXV0aF9mbG93LmMKKyAqCSAgVGVzdCBw bHVnaW4gZm9yIGNsaWVudHNpZGUgT0F1dGggZmxvd3MKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIw MjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgor CisvKiBTaW5jZSB3ZSB3YW50IHRvIHRlc3QgdGhlIHB1YmxpYyBBUEksIG9ubHkgaW5jbHVkZSBw dWJsaWMgaGVhZGVycyBoZXJlLiAqLworI2luY2x1ZGUgImxpYnBxLWZlLmgiCisjaW5jbHVkZSAi bGlicHEtb2F1dGguaCIKKyNpbmNsdWRlICJvYXV0aF90ZXN0X2NvbW1vbi5oIgorCitzdGF0aWMg dm9pZAorbG9hZF90ZXN0X2ZsYWdzKHZvaWQpCit7CisJaW50CQkJYXJnYzsKKwljaGFyCSAgKiph cmd2OworCWNoYXIJICAgKmVudiA9IGdldGVudigiT0FVVEhfVEVTVF9GTEFHUyIpOworCWludAkJ CWZsYWdfY291bnQ7CisJaW50CQkJaTsKKworCWlmICghZW52IHx8ICFlbnZbMF0pCisJeworCQlm cHJpbnRmKHN0ZGVyciwgIk9BVVRIX1RFU1RfRkxBR1MgbXVzdCBiZSBzZXRcbiIpOworCQlleGl0 KDEpOworCX0KKworCWZsYWdfY291bnQgPSAxOworCWZvciAoY2hhciAqYyA9IGVudjsgKmM7IGMr KykKKwl7CisJCWlmICgqYyA9PSAnXHgwMScpCisJCQlmbGFnX2NvdW50Kys7CisJfQorCisJYXJn YyA9IGZsYWdfY291bnQgKyAxOworCWFyZ3YgPSBtYWxsb2Moc2l6ZW9mKCphcmd2KSAqIChhcmdj ICsgMSkpOworCWlmICghYXJndikKKwl7CisJCWZwcmludGYoc3RkZXJyLCAib3V0IG9mIG1lbW9y eSIpOworCQlleGl0KDEpOworCX0KKworCWFyZ3ZbMF0gPSAiW3BsdWdpbiB0ZXN0XSI7CisJZm9y IChpID0gMTsgaSA8IGZsYWdfY291bnQ7IGkrKykKKwl7CisJCWFyZ3ZbaV0gPSBlbnY7CisKKwkJ ZW52ID0gc3RyY2hyKGVudiwgJ1x4MDEnKTsKKwkJKmVudisrID0gJ1wwJzsKKwl9CisJYXJndltm bGFnX2NvdW50XSA9IGVudjsKKwlhcmd2W2FyZ2NdID0gTlVMTDsKKworCW9hdXRoX3Rlc3RfcGFy c2VfYXJndihhcmdjLCBhcmd2LCAxIC8qIHBsdWdpbiAqLyApOworfQorCitpbnQKK3BnX3N0YXJ0 X29hdXRoYmVhcmVyKFBHY29ubiAqY29ubiwgUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAqcmVxdWVz dCkKK3sKKwlsb2FkX3Rlc3RfZmxhZ3MoKTsKKworCXJldHVybiBvYXV0aF90ZXN0X3N0YXJ0X2Zs b3coY29ubiwgcmVxdWVzdCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL29hdXRo X3ZhbGlkYXRvci9vYXV0aF9ob29rX2NsaWVudC5jIGIvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92 YWxpZGF0b3Ivb2F1dGhfaG9va19jbGllbnQuYwppbmRleCBiMWEzYjAxNDA3OS4uZTBiMDIyYTI2 OGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL29hdXRoX2hv b2tfY2xpZW50LmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3Ivb2F1dGhf aG9va19jbGllbnQuYwpAQCAtMTgsMTQ0ICsxOCwxOCBAQAogCiAjaW5jbHVkZSA8c3lzL3NvY2tl dC5oPgogCi0jaW5jbHVkZSAiZ2V0b3B0X2xvbmcuaCIKICNpbmNsdWRlICJsaWJwcS1mZS5oIgot I2luY2x1ZGUgInBxZXhwYnVmZmVyLmgiCiAKLXN0YXRpYyBpbnQJaGFuZGxlX2F1dGhfZGF0YShQ R2F1dGhEYXRhIHR5cGUsIFBHY29ubiAqY29ubiwgdm9pZCAqZGF0YSk7Ci1zdGF0aWMgUG9zdGdy ZXNQb2xsaW5nU3RhdHVzVHlwZSBhc3luY19jYihQR2Nvbm4gKmNvbm4sCi0JCQkJCQkJCQkJICBQ R29hdXRoQmVhcmVyUmVxdWVzdCAqcmVxLAotCQkJCQkJCQkJCSAgcGdzb2NrZXQgKmFsdHNvY2sp Owotc3RhdGljIFBvc3RncmVzUG9sbGluZ1N0YXR1c1R5cGUgbWlzYmVoYXZlX2NiKFBHY29ubiAq Y29ubiwKLQkJCQkJCQkJCQkJICBQR29hdXRoQmVhcmVyUmVxdWVzdCAqcmVxLAotCQkJCQkJCQkJ CQkgIHBnc29ja2V0ICphbHRzb2NrKTsKLQotc3RhdGljIHZvaWQKLXVzYWdlKGNoYXIgKmFyZ3Zb XSkKLXsKLQlwcmludGYoInVzYWdlOiAlcyBbZmxhZ3NdIENPTk5JTkZPXG5cbiIsIGFyZ3ZbMF0p OwotCi0JcHJpbnRmKCJyZWNvZ25pemVkIGZsYWdzOlxuIik7Ci0JcHJpbnRmKCIgIC1oLCAtLWhl bHAgICAgICAgICAgICAgIHNob3cgdGhpcyBtZXNzYWdlXG4iKTsKLQlwcmludGYoIiAgLXYgVkVS U0lPTiAgICAgICAgICAgICAgc2VsZWN0IHRoZSBob29rIEFQSSB2ZXJzaW9uIChkZWZhdWx0IDIp XG4iKTsKLQlwcmludGYoIiAgLS1leHBlY3RlZC1zY29wZSBTQ09QRSAgZmFpbCBpZiByZWNlaXZl ZCBzY29wZXMgZG8gbm90IG1hdGNoIFNDT1BFXG4iKTsKLQlwcmludGYoIiAgLS1leHBlY3RlZC11 cmkgVVJJICAgICAgZmFpbCBpZiByZWNlaXZlZCBjb25maWd1cmF0aW9uIGxpbmsgZG9lcyBub3Qg bWF0Y2ggVVJJXG4iKTsKLQlwcmludGYoIiAgLS1leHBlY3RlZC1pc3N1ZXIgSVNTICAgZmFpbCBp ZiByZWNlaXZlZCBpc3N1ZXIgZG9lcyBub3QgbWF0Y2ggSVNTICh2MiBvbmx5KVxuIik7Ci0JcHJp bnRmKCIgIC0tbWlzYmVoYXZlPU1PREUgICAgICAgIGhhdmUgdGhlIGhvb2sgZmFpbCByZXF1aXJl ZCBwb3N0Y29uZGl0aW9uc1xuIgotCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAoTU9E RXM6IG5vLWhvb2ssIGZhaWwtYXN5bmMsIG5vLXRva2VuLCBuby1zb2NrZXQpXG4iKTsKLQlwcmlu dGYoIiAgLS1uby1ob29rICAgICAgICAgICAgICAgZG9uJ3QgaW5zdGFsbCBPQXV0aCBob29rc1xu Iik7Ci0JcHJpbnRmKCIgIC0taGFuZy1mb3JldmVyICAgICAgICAgIGRvbid0IGV2ZXIgcmV0dXJu IGEgdG9rZW4gKGNvbWJpbmUgd2l0aCBjb25uZWN0X3RpbWVvdXQpXG4iKTsKLQlwcmludGYoIiAg LS10b2tlbiBUT0tFTiAgICAgICAgICAgdXNlIHRoZSBwcm92aWRlZCBUT0tFTiB2YWx1ZVxuIik7 Ci0JcHJpbnRmKCIgIC0tZXJyb3IgRVJSTVNHICAgICAgICAgIGZhaWwgaW5zdGVhZCwgd2l0aCB0 aGUgZ2l2ZW4gRVJSTVNHICh2MiBvbmx5KVxuIik7Ci0JcHJpbnRmKCIgIC0tc3RyZXNzLWFzeW5j ICAgICAgICAgIGJ1c3ktbG9vcCBvbiBQUWNvbm5lY3RQb2xsIHJhdGhlciB0aGFuIHBvbGxpbmdc biIpOwotfQotCi0vKiAtLW9wdGlvbnMgKi8KLXN0YXRpYyBib29sIG5vX2hvb2sgPSBmYWxzZTsK LXN0YXRpYyBib29sIGhhbmdfZm9yZXZlciA9IGZhbHNlOwotc3RhdGljIGJvb2wgc3RyZXNzX2Fz eW5jID0gZmFsc2U7Ci1zdGF0aWMgY29uc3QgY2hhciAqZXhwZWN0ZWRfdXJpID0gTlVMTDsKLXN0 YXRpYyBjb25zdCBjaGFyICpleHBlY3RlZF9pc3N1ZXIgPSBOVUxMOwotc3RhdGljIGNvbnN0IGNo YXIgKmV4cGVjdGVkX3Njb3BlID0gTlVMTDsKLXN0YXRpYyBjb25zdCBjaGFyICptaXNiZWhhdmVf bW9kZSA9IE5VTEw7Ci1zdGF0aWMgY2hhciAqdG9rZW4gPSBOVUxMOwotc3RhdGljIGNoYXIgKmVy cm1zZyA9IE5VTEw7Ci1zdGF0aWMgaW50CWhvb2tfdmVyc2lvbiA9IFBRQVVUSERBVEFfT0FVVEhf QkVBUkVSX1RPS0VOX1YyOworI2luY2x1ZGUgIm9hdXRoX3Rlc3RfY29tbW9uLmgiCiAKIGludAog bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogewotCXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3B0 aW9uIGxvbmdfb3B0aW9uc1tdID0gewotCQl7ImhlbHAiLCBub19hcmd1bWVudCwgTlVMTCwgJ2gn fSwKLQotCQl7ImV4cGVjdGVkLXNjb3BlIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDEwMDB9 LAotCQl7ImV4cGVjdGVkLXVyaSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAxMDAxfSwKLQkJ eyJuby1ob29rIiwgbm9fYXJndW1lbnQsIE5VTEwsIDEwMDJ9LAotCQl7InRva2VuIiwgcmVxdWly ZWRfYXJndW1lbnQsIE5VTEwsIDEwMDN9LAotCQl7ImhhbmctZm9yZXZlciIsIG5vX2FyZ3VtZW50 LCBOVUxMLCAxMDA0fSwKLQkJeyJtaXNiZWhhdmUiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwg MTAwNX0sCi0JCXsic3RyZXNzLWFzeW5jIiwgbm9fYXJndW1lbnQsIE5VTEwsIDEwMDZ9LAotCQl7 ImV4cGVjdGVkLWlzc3VlciIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAxMDA3fSwKLQkJeyJl cnJvciIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAxMDA4fSwKLQkJezB9Ci0JfTsKLQotCWNv bnN0IGNoYXIgKmNvbm5pbmZvOworCWNvbnN0IGNoYXIgKmNvbm5pbmZvID0gb2F1dGhfdGVzdF9w YXJzZV9hcmd2KGFyZ2MsIGFyZ3YsIDAgLyogaG9vayAqLyApOwogCVBHY29ubgkgICAqY29ubjsK LQlpbnQJCQljOwotCi0Jd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImh2OiIs IGxvbmdfb3B0aW9ucywgTlVMTCkpICE9IC0xKQotCXsKLQkJc3dpdGNoIChjKQotCQl7Ci0JCQlj YXNlICdoJzoKLQkJCQl1c2FnZShhcmd2KTsKLQkJCQlyZXR1cm4gMDsKLQotCQkJY2FzZSAndic6 Ci0JCQkJaWYgKHN0cmNtcChvcHRhcmcsICIxIikgPT0gMCkKLQkJCQkJaG9va192ZXJzaW9uID0g UFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU47Ci0JCQkJZWxzZSBpZiAoc3RyY21wKG9wdGFy ZywgIjIiKSA9PSAwKQotCQkJCQlob29rX3ZlcnNpb24gPSBQUUFVVEhEQVRBX09BVVRIX0JFQVJF Ul9UT0tFTl9WMjsKLQkJCQllbHNlCi0JCQkJewotCQkJCQl1c2FnZShhcmd2KTsKLQkJCQkJcmV0 dXJuIDE7Ci0JCQkJfQotCQkJCWJyZWFrOwotCi0JCQljYXNlIDEwMDA6CQkJLyogLS1leHBlY3Rl ZC1zY29wZSAqLwotCQkJCWV4cGVjdGVkX3Njb3BlID0gb3B0YXJnOwotCQkJCWJyZWFrOwotCi0J CQljYXNlIDEwMDE6CQkJLyogLS1leHBlY3RlZC11cmkgKi8KLQkJCQlleHBlY3RlZF91cmkgPSBv cHRhcmc7Ci0JCQkJYnJlYWs7Ci0KLQkJCWNhc2UgMTAwMjoJCQkvKiAtLW5vLWhvb2sgKi8KLQkJ CQlub19ob29rID0gdHJ1ZTsKLQkJCQlicmVhazsKLQotCQkJY2FzZSAxMDAzOgkJCS8qIC0tdG9r ZW4gKi8KLQkJCQl0b2tlbiA9IG9wdGFyZzsKLQkJCQlicmVhazsKLQotCQkJY2FzZSAxMDA0OgkJ CS8qIC0taGFuZy1mb3JldmVyICovCi0JCQkJaGFuZ19mb3JldmVyID0gdHJ1ZTsKLQkJCQlicmVh azsKLQotCQkJY2FzZSAxMDA1OgkJCS8qIC0tbWlzYmVoYXZlICovCi0JCQkJbWlzYmVoYXZlX21v ZGUgPSBvcHRhcmc7Ci0JCQkJYnJlYWs7Ci0KLQkJCWNhc2UgMTAwNjoJCQkvKiAtLXN0cmVzcy1h c3luYyAqLwotCQkJCXN0cmVzc19hc3luYyA9IHRydWU7Ci0JCQkJYnJlYWs7Ci0KLQkJCWNhc2Ug MTAwNzoJCQkvKiAtLWV4cGVjdGVkLWlzc3VlciAqLwotCQkJCWV4cGVjdGVkX2lzc3VlciA9IG9w dGFyZzsKLQkJCQlicmVhazsKLQotCQkJY2FzZSAxMDA4OgkJCS8qIC0tZXJyb3IgKi8KLQkJCQll cnJtc2cgPSBvcHRhcmc7Ci0JCQkJYnJlYWs7Ci0KLQkJCWRlZmF1bHQ6Ci0JCQkJdXNhZ2UoYXJn dik7Ci0JCQkJcmV0dXJuIDE7Ci0JCX0KLQl9Ci0KLQlpZiAoYXJnYyAhPSBvcHRpbmQgKyAxKQot CXsKLQkJdXNhZ2UoYXJndik7Ci0JCXJldHVybiAxOwotCX0KLQotCWNvbm5pbmZvID0gYXJndltv cHRpbmRdOwogCiAJLyogU2V0IHVwIG91ciBPQXV0aCBob29rcy4gKi8KLQlQUXNldEF1dGhEYXRh SG9vayhoYW5kbGVfYXV0aF9kYXRhKTsKKwlQUXNldEF1dGhEYXRhSG9vayhvYXV0aF90ZXN0X2F1 dGhkYXRhX2hvb2spOwogCiAJLyogQ29ubmVjdC4gKEFsbCB0aGUgYWN0dWFsIHdvcmsgaXMgaW4g dGhlIGhvb2suKSAqLwogCWlmIChzdHJlc3NfYXN5bmMpCkBAIC0xOTMsMTkwICs2NywzIEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlQUWZpbmlzaChjb25uKTsKIAlyZXR1cm4gMDsK IH0KLQotLyoKLSAqIFBRYXV0aERhdGFIb29rIGltcGxlbWVudGF0aW9uLiBSZXBsYWNlcyB0aGUg ZGVmYXVsdCBjbGllbnQgZmxvdyBieSBoYW5kbGluZwotICogUFFBVVRIREFUQV9PQVVUSF9CRUFS RVJfVE9LRU5bX1YyXS4KLSAqLwotc3RhdGljIGludAotaGFuZGxlX2F1dGhfZGF0YShQR2F1dGhE YXRhIHR5cGUsIFBHY29ubiAqY29ubiwgdm9pZCAqZGF0YSkKLXsKLQlQR29hdXRoQmVhcmVyUmVx dWVzdCAqcmVxOwotCVBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJlcTIgPSBOVUxMOwotCi0JQXNz ZXJ0KGhvb2tfdmVyc2lvbiA9PSBQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTiB8fAotCQkg ICBob29rX3ZlcnNpb24gPT0gUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU5fVjIpOwotCi0J aWYgKG5vX2hvb2sgfHwgdHlwZSAhPSBob29rX3ZlcnNpb24pCi0JCXJldHVybiAwOwotCi0JcmVx ID0gZGF0YTsKLQlpZiAodHlwZSA9PSBQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTl9WMikK LQkJcmVxMiA9IGRhdGE7Ci0KLQlpZiAoaGFuZ19mb3JldmVyKQotCXsKLQkJLyogU3RhcnQgYXN5 bmNocm9ub3VzIHByb2Nlc3NpbmcuICovCi0JCXJlcS0+YXN5bmMgPSBhc3luY19jYjsKLQkJcmV0 dXJuIDE7Ci0JfQotCi0JaWYgKG1pc2JlaGF2ZV9tb2RlKQotCXsKLQkJaWYgKHN0cmNtcChtaXNi ZWhhdmVfbW9kZSwgIm5vLWhvb2siKSAhPSAwKQotCQkJcmVxLT5hc3luYyA9IG1pc2JlaGF2ZV9j YjsKLQkJcmV0dXJuIDE7Ci0JfQotCi0JaWYgKGV4cGVjdGVkX3VyaSkKLQl7Ci0JCWlmICghcmVx LT5vcGVuaWRfY29uZmlndXJhdGlvbikKLQkJewotCQkJZnByaW50ZihzdGRlcnIsICJleHBlY3Rl ZCBVUkkgXCIlc1wiLCBnb3QgTlVMTFxuIiwgZXhwZWN0ZWRfdXJpKTsKLQkJCXJldHVybiAtMTsK LQkJfQotCi0JCWlmIChzdHJjbXAoZXhwZWN0ZWRfdXJpLCByZXEtPm9wZW5pZF9jb25maWd1cmF0 aW9uKSAhPSAwKQotCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgImV4cGVjdGVkIFVSSSBcIiVzXCIs IGdvdCBcIiVzXCJcbiIsIGV4cGVjdGVkX3VyaSwgcmVxLT5vcGVuaWRfY29uZmlndXJhdGlvbik7 Ci0JCQlyZXR1cm4gLTE7Ci0JCX0KLQl9Ci0KLQlpZiAoZXhwZWN0ZWRfc2NvcGUpCi0JewotCQlp ZiAoIXJlcS0+c2NvcGUpCi0JCXsKLQkJCWZwcmludGYoc3RkZXJyLCAiZXhwZWN0ZWQgc2NvcGUg XCIlc1wiLCBnb3QgTlVMTFxuIiwgZXhwZWN0ZWRfc2NvcGUpOwotCQkJcmV0dXJuIC0xOwotCQl9 Ci0KLQkJaWYgKHN0cmNtcChleHBlY3RlZF9zY29wZSwgcmVxLT5zY29wZSkgIT0gMCkKLQkJewot CQkJZnByaW50ZihzdGRlcnIsICJleHBlY3RlZCBzY29wZSBcIiVzXCIsIGdvdCBcIiVzXCJcbiIs IGV4cGVjdGVkX3Njb3BlLCByZXEtPnNjb3BlKTsKLQkJCXJldHVybiAtMTsKLQkJfQotCX0KLQot CWlmIChleHBlY3RlZF9pc3N1ZXIpCi0JewotCQlpZiAoIXJlcTIpCi0JCXsKLQkJCWZwcmludGYo c3RkZXJyLCAiLS1leHBlY3RlZC1pc3N1ZXIgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggLXYxXG4i KTsKLQkJCXJldHVybiAtMTsKLQkJfQotCi0JCWlmICghcmVxMi0+aXNzdWVyKQotCQl7Ci0JCQlm cHJpbnRmKHN0ZGVyciwgImV4cGVjdGVkIGlzc3VlciBcIiVzXCIsIGdvdCBOVUxMXG4iLCBleHBl Y3RlZF9pc3N1ZXIpOwotCQkJcmV0dXJuIC0xOwotCQl9Ci0KLQkJaWYgKHN0cmNtcChleHBlY3Rl ZF9pc3N1ZXIsIHJlcTItPmlzc3VlcikgIT0gMCkKLQkJewotCQkJZnByaW50ZihzdGRlcnIsICJl eHBlY3RlZCBpc3N1ZXIgXCIlc1wiLCBnb3QgXCIlc1wiXG4iLCBleHBlY3RlZF9pc3N1ZXIsIHJl cTItPmlzc3Vlcik7Ci0JCQlyZXR1cm4gLTE7Ci0JCX0KLQl9Ci0KLQlpZiAoZXJybXNnKQotCXsK LQkJaWYgKHRva2VuKQotCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgIi0tZXJyb3IgY2Fubm90IGJl IGNvbWJpbmVkIHdpdGggLS10b2tlblxuIik7Ci0JCQlyZXR1cm4gLTE7Ci0JCX0KLQkJZWxzZSBp ZiAoIXJlcTIpCi0JCXsKLQkJCWZwcmludGYoc3RkZXJyLCAiLS1lcnJvciBjYW5ub3QgYmUgY29t YmluZWQgd2l0aCAtdjFcbiIpOwotCQkJcmV0dXJuIC0xOwotCQl9Ci0KLQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocmVxMi0+ZXJyb3IsIGVycm1zZyk7Ci0JCXJldHVybiAtMTsKLQl9Ci0KLQlyZXEt PnRva2VuID0gdG9rZW47Ci0JcmV0dXJuIDE7Ci19Ci0KLXN0YXRpYyBQb3N0Z3Jlc1BvbGxpbmdT dGF0dXNUeXBlCi1hc3luY19jYihQR2Nvbm4gKmNvbm4sIFBHb2F1dGhCZWFyZXJSZXF1ZXN0ICpy ZXEsIHBnc29ja2V0ICphbHRzb2NrKQotewotCWlmIChoYW5nX2ZvcmV2ZXIpCi0JewotCQkvKgot CQkgKiBUaGlzIGNvZGUgdGVzdHMgdGhhdCBub3RoaW5nIGlzIGludGVyZmVyaW5nIHdpdGggbGli cHEncyBoYW5kbGluZwotCQkgKiBvZiBjb25uZWN0X3RpbWVvdXQuCi0JCSAqLwotCQlzdGF0aWMg cGdzb2NrZXQgc29jayA9IFBHSU5WQUxJRF9TT0NLRVQ7Ci0KLQkJaWYgKHNvY2sgPT0gUEdJTlZB TElEX1NPQ0tFVCkKLQkJewotCQkJLyogRmlyc3QgY2FsbC4gQ3JlYXRlIGFuIHVuYm91bmQgc29j a2V0IHRvIHdhaXQgb24uICovCi0jaWZkZWYgV0lOMzIKLQkJCVdTQURBVEEJCXdzYURhdGE7Ci0J CQlpbnQJCQllcnI7Ci0KLQkJCWVyciA9IFdTQVN0YXJ0dXAoTUFLRVdPUkQoMiwgMiksICZ3c2FE YXRhKTsKLQkJCWlmIChlcnIpCi0JCQl7Ci0JCQkJcGVycm9yKCJXU0FTdGFydHVwIGZhaWxlZCIp OwotCQkJCXJldHVybiBQR1JFU19QT0xMSU5HX0ZBSUxFRDsKLQkJCX0KLSNlbmRpZgotCQkJc29j ayA9IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCAwKTsKLQkJCWlmIChzb2NrID09IFBHSU5W QUxJRF9TT0NLRVQpCi0JCQl7Ci0JCQkJcGVycm9yKCJmYWlsZWQgdG8gY3JlYXRlIGRhdGFncmFt IHNvY2tldCIpOwotCQkJCXJldHVybiBQR1JFU19QT0xMSU5HX0ZBSUxFRDsKLQkJCX0KLQkJfQot Ci0JCS8qIE1ha2UgbGlicHEgd2FpdCBvbiB0aGUgKHVucmVhZGFibGUpIHNvY2tldC4gKi8KLQkJ KmFsdHNvY2sgPSBzb2NrOwotCQlyZXR1cm4gUEdSRVNfUE9MTElOR19SRUFESU5HOwotCX0KLQot CXJlcS0+dG9rZW4gPSB0b2tlbjsKLQlyZXR1cm4gUEdSRVNfUE9MTElOR19PSzsKLX0KLQotc3Rh dGljIFBvc3RncmVzUG9sbGluZ1N0YXR1c1R5cGUKLW1pc2JlaGF2ZV9jYihQR2Nvbm4gKmNvbm4s IFBHb2F1dGhCZWFyZXJSZXF1ZXN0ICpyZXEsIHBnc29ja2V0ICphbHRzb2NrKQotewotCWlmIChz dHJjbXAobWlzYmVoYXZlX21vZGUsICJmYWlsLWFzeW5jIikgPT0gMCkKLQl7Ci0JCS8qIEp1c3Qg ZmFpbCAibm9ybWFsbHkiLiAqLwotCQlpZiAoZXJybXNnKQotCQl7Ci0JCQlQR29hdXRoQmVhcmVy UmVxdWVzdFYyICpyZXEyOwotCi0JCQlpZiAoaG9va192ZXJzaW9uID09IFBRQVVUSERBVEFfT0FV VEhfQkVBUkVSX1RPS0VOKQotCQkJewotCQkJCWZwcmludGYoc3RkZXJyLCAiLS1lcnJvciBjYW5u b3QgYmUgY29tYmluZWQgd2l0aCAtdjFcbiIpOwotCQkJCWV4aXQoMSk7Ci0JCQl9Ci0KLQkJCXJl cTIgPSAoUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAqKSByZXE7Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihyZXEyLT5lcnJvciwgZXJybXNnKTsKLQkJfQotCi0JCXJldHVybiBQR1JFU19QT0xMSU5H X0ZBSUxFRDsKLQl9Ci0JZWxzZSBpZiAoc3RyY21wKG1pc2JlaGF2ZV9tb2RlLCAibm8tdG9rZW4i KSA9PSAwKQotCXsKLQkJLyogQ2FsbGJhY2tzIG11c3QgYXNzaWduIHJlcS0+dG9rZW4gYmVmb3Jl IHJldHVybmluZyBPSy4gKi8KLQkJcmV0dXJuIFBHUkVTX1BPTExJTkdfT0s7Ci0JfQotCWVsc2Ug aWYgKHN0cmNtcChtaXNiZWhhdmVfbW9kZSwgIm5vLXNvY2tldCIpID09IDApCi0JewotCQkvKiBD YWxsYmFja3MgbXVzdCBhc3NpZ24gKmFsdHNvY2sgYmVmb3JlIGFza2luZyBmb3IgcG9sbGluZy4g Ki8KLQkJcmV0dXJuIFBHUkVTX1BPTExJTkdfUkVBRElORzsKLQl9Ci0JZWxzZQotCXsKLQkJZnBy aW50ZihzdGRlcnIsICJ1bnJlY29nbml6ZWQgLS1taXNiZWhhdmUgbW9kZTogJXNcbiIsIG1pc2Jl aGF2ZV9tb2RlKTsKLQkJZXhpdCgxKTsKLQl9Ci19CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL29hdXRoX3ZhbGlkYXRvci9vYXV0aF90ZXN0X2NvbW1vbi5jIGIvc3JjL3Rlc3QvbW9kdWxl cy9vYXV0aF92YWxpZGF0b3Ivb2F1dGhfdGVzdF9jb21tb24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uZjJhNWIxODBhNjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci9vYXV0aF90ZXN0X2NvbW1vbi5jCkBAIC0wLDAg KzEsMzc0IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBvYXV0aF90ZXN0X2NvbW1vbi5j CisgKgkgIFNoYXJlZCBmdW5jdGlvbmFsaXR5IGZvciBvYXV0aF9ob29rX2NsaWVudCBhbmQgb2F1 dGhfZmxvdworICoKKyAqIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAi cG9zdGdyZXNfZmUuaCIKKworI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKworI2luY2x1ZGUgImdl dG9wdF9sb25nLmgiCisjaW5jbHVkZSAibGlicHEtZmUuaCIKKyNpbmNsdWRlICJwcWV4cGJ1ZmZl ci5oIgorCisjaW5jbHVkZSAib2F1dGhfdGVzdF9jb21tb24uaCIKKworc3RhdGljIFBvc3RncmVz UG9sbGluZ1N0YXR1c1R5cGUgYXN5bmNfY2IoUEdjb25uICpjb25uLAorCQkJCQkJCQkJCSAgUEdv YXV0aEJlYXJlclJlcXVlc3QgKnJlcSwKKwkJCQkJCQkJCQkgIHBnc29ja2V0ICphbHRzb2NrKTsK K3N0YXRpYyBQb3N0Z3Jlc1BvbGxpbmdTdGF0dXNUeXBlIG1pc2JlaGF2ZV9jYihQR2Nvbm4gKmNv bm4sCisJCQkJCQkJCQkJCSAgUEdvYXV0aEJlYXJlclJlcXVlc3QgKnJlcSwKKwkJCQkJCQkJCQkJ ICBwZ3NvY2tldCAqYWx0c29jayk7CisKKy8qIC0tb3B0aW9ucyAqLworc3RhdGljIGJvb2wgbm9f aG9vayA9IGZhbHNlOworc3RhdGljIGJvb2wgaGFuZ19mb3JldmVyID0gZmFsc2U7CitzdGF0aWMg Y29uc3QgY2hhciAqZXhwZWN0ZWRfdXJpID0gTlVMTDsKK3N0YXRpYyBjb25zdCBjaGFyICpleHBl Y3RlZF9pc3N1ZXIgPSBOVUxMOworc3RhdGljIGNvbnN0IGNoYXIgKmV4cGVjdGVkX3Njb3BlID0g TlVMTDsKK3N0YXRpYyBjb25zdCBjaGFyICptaXNiZWhhdmVfbW9kZSA9IE5VTEw7CitzdGF0aWMg Y2hhciAqdG9rZW4gPSBOVUxMOworc3RhdGljIGNoYXIgKmVycm1zZyA9IE5VTEw7CitzdGF0aWMg aW50CWhvb2tfdmVyc2lvbiA9IFBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOX1YyOworCisv KgorICogWFhYOiBzdHJlc3NfYXN5bmMgaXMgZXhwb3J0ZWQgZm9yIHRoZSBiZW5lZml0IG9mIG9h dXRoX2hvb2tfY2xpZW50LiBTaW5jZQorICogd2Ugb25seSB1c2UgcHVibGljIGhlYWRlcnMgKGxp YnBxLWZlLmgpIGZvciBvYXV0aF9mbG93LCBpdCBuZWVkcyB0byBiZSBhbiBpbnQKKyAqIHJhdGhl ciB0aGFuIGEgYm9vbC4KKyAqLworaW50CQkJc3RyZXNzX2FzeW5jID0gZmFsc2U7CisKK3N0YXRp YyB2b2lkCit1c2FnZShjaGFyICphcmd2W10pCit7CisJcHJpbnRmKCJ1c2FnZTogJXMgW2ZsYWdz XSBDT05OSU5GT1xuXG4iLCBhcmd2WzBdKTsKKworCXByaW50ZigicmVjb2duaXplZCBmbGFnczpc biIpOworCXByaW50ZigiICAtaCwgLS1oZWxwICAgICAgICAgICAgICBzaG93IHRoaXMgbWVzc2Fn ZVxuIik7CisJcHJpbnRmKCIgIC12IFZFUlNJT04gICAgICAgICAgICAgIHNlbGVjdCB0aGUgaG9v ayBBUEkgdmVyc2lvbiAoZGVmYXVsdCAyKVxuIik7CisJcHJpbnRmKCIgIC0tZXhwZWN0ZWQtc2Nv cGUgU0NPUEUgIGZhaWwgaWYgcmVjZWl2ZWQgc2NvcGVzIGRvIG5vdCBtYXRjaCBTQ09QRVxuIik7 CisJcHJpbnRmKCIgIC0tZXhwZWN0ZWQtdXJpIFVSSSAgICAgIGZhaWwgaWYgcmVjZWl2ZWQgY29u ZmlndXJhdGlvbiBsaW5rIGRvZXMgbm90IG1hdGNoIFVSSVxuIik7CisJcHJpbnRmKCIgIC0tZXhw ZWN0ZWQtaXNzdWVyIElTUyAgIGZhaWwgaWYgcmVjZWl2ZWQgaXNzdWVyIGRvZXMgbm90IG1hdGNo IElTUyAodjIgb25seSlcbiIpOworCXByaW50ZigiICAtLW1pc2JlaGF2ZT1NT0RFICAgICAgICBo YXZlIHRoZSBob29rIGZhaWwgcmVxdWlyZWQgcG9zdGNvbmRpdGlvbnNcbiIKKwkJICAgIiAgICAg ICAgICAgICAgICAgICAgICAgICAgKE1PREVzOiBuby1ob29rLCBmYWlsLWFzeW5jLCBuby10b2tl biwgbm8tc29ja2V0KVxuIik7CisJcHJpbnRmKCIgIC0tbm8taG9vayAgICAgICAgICAgICAgIGRv bid0IGluc3RhbGwgT0F1dGggaG9va3NcbiIpOworCXByaW50ZigiICAtLWhhbmctZm9yZXZlciAg ICAgICAgICBkb24ndCBldmVyIHJldHVybiBhIHRva2VuIChjb21iaW5lIHdpdGggY29ubmVjdF90 aW1lb3V0KVxuIik7CisJcHJpbnRmKCIgIC0tdG9rZW4gVE9LRU4gICAgICAgICAgIHVzZSB0aGUg cHJvdmlkZWQgVE9LRU4gdmFsdWVcbiIpOworCXByaW50ZigiICAtLWVycm9yIEVSUk1TRyAgICAg ICAgICBmYWlsIGluc3RlYWQsIHdpdGggdGhlIGdpdmVuIEVSUk1TRyAodjIgb25seSlcbiIpOwor CXByaW50ZigiICAtLXN0cmVzcy1hc3luYyAgICAgICAgICBidXN5LWxvb3Agb24gUFFjb25uZWN0 UG9sbCByYXRoZXIgdGhhbiBwb2xsaW5nXG4iKTsKK30KKworY2hhciAqCitvYXV0aF90ZXN0X3Bh cnNlX2FyZ3YoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgaW50IGZvcl9wbHVnaW4pCit7CisJc3Rh dGljIGNvbnN0IHN0cnVjdCBvcHRpb24gbG9uZ19vcHRpb25zW10gPSB7CisJCXsiaGVscCIsIG5v X2FyZ3VtZW50LCBOVUxMLCAnaCd9LAorCisJCXsiZXhwZWN0ZWQtc2NvcGUiLCByZXF1aXJlZF9h cmd1bWVudCwgTlVMTCwgMTAwMH0sCisJCXsiZXhwZWN0ZWQtdXJpIiwgcmVxdWlyZWRfYXJndW1l bnQsIE5VTEwsIDEwMDF9LAorCQl7Im5vLWhvb2siLCBub19hcmd1bWVudCwgTlVMTCwgMTAwMn0s CisJCXsidG9rZW4iLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgMTAwM30sCisJCXsiaGFuZy1m b3JldmVyIiwgbm9fYXJndW1lbnQsIE5VTEwsIDEwMDR9LAorCQl7Im1pc2JlaGF2ZSIsIHJlcXVp cmVkX2FyZ3VtZW50LCBOVUxMLCAxMDA1fSwKKwkJeyJzdHJlc3MtYXN5bmMiLCBub19hcmd1bWVu dCwgTlVMTCwgMTAwNn0sCisJCXsiZXhwZWN0ZWQtaXNzdWVyIiwgcmVxdWlyZWRfYXJndW1lbnQs IE5VTEwsIDEwMDd9LAorCQl7ImVycm9yIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDEwMDh9 LAorCQl7MH0KKwl9OworCisJaW50CQkJYzsKKworCWlmIChmb3JfcGx1Z2luKQorCXsKKwkJLyog VGhlICJyZWFsIiBhcmd2IGhhcyBhbHJlYWR5IGJlZW4gcGFyc2VkLiBSZXNldCBvcHRpbmQuICov CisJCW9wdGluZCA9IDE7CisJfQorCisJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJn diwgImh2OiIsIGxvbmdfb3B0aW9ucywgTlVMTCkpICE9IC0xKQorCXsKKwkJc3dpdGNoIChjKQor CQl7CisJCQljYXNlICdoJzoKKwkJCQl1c2FnZShhcmd2KTsKKwkJCQlleGl0KDApOworCisJCQlj YXNlICd2JzoKKwkJCQlpZiAoc3RyY21wKG9wdGFyZywgIjEiKSA9PSAwKQorCQkJCQlob29rX3Zl cnNpb24gPSBQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTjsKKwkJCQllbHNlIGlmIChzdHJj bXAob3B0YXJnLCAiMiIpID09IDApCisJCQkJCWhvb2tfdmVyc2lvbiA9IFBRQVVUSERBVEFfT0FV VEhfQkVBUkVSX1RPS0VOX1YyOworCQkJCWVsc2UKKwkJCQl7CisJCQkJCXVzYWdlKGFyZ3YpOwor CQkJCQlleGl0KDEpOworCQkJCX0KKwkJCQlicmVhazsKKworCQkJY2FzZSAxMDAwOgkJCS8qIC0t ZXhwZWN0ZWQtc2NvcGUgKi8KKwkJCQlleHBlY3RlZF9zY29wZSA9IG9wdGFyZzsKKwkJCQlicmVh azsKKworCQkJY2FzZSAxMDAxOgkJCS8qIC0tZXhwZWN0ZWQtdXJpICovCisJCQkJZXhwZWN0ZWRf dXJpID0gb3B0YXJnOworCQkJCWJyZWFrOworCisJCQljYXNlIDEwMDI6CQkJLyogLS1uby1ob29r ICovCisJCQkJbm9faG9vayA9IHRydWU7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgMTAwMzoJCQkv KiAtLXRva2VuICovCisJCQkJdG9rZW4gPSBvcHRhcmc7CisJCQkJYnJlYWs7CisKKwkJCWNhc2Ug MTAwNDoJCQkvKiAtLWhhbmctZm9yZXZlciAqLworCQkJCWhhbmdfZm9yZXZlciA9IHRydWU7CisJ CQkJYnJlYWs7CisKKwkJCWNhc2UgMTAwNToJCQkvKiAtLW1pc2JlaGF2ZSAqLworCQkJCW1pc2Jl aGF2ZV9tb2RlID0gb3B0YXJnOworCQkJCWJyZWFrOworCisJCQljYXNlIDEwMDY6CQkJLyogLS1z dHJlc3MtYXN5bmMgKi8KKwkJCQlzdHJlc3NfYXN5bmMgPSB0cnVlOworCQkJCWJyZWFrOworCisJ CQljYXNlIDEwMDc6CQkJLyogLS1leHBlY3RlZC1pc3N1ZXIgKi8KKwkJCQlleHBlY3RlZF9pc3N1 ZXIgPSBvcHRhcmc7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgMTAwODoJCQkvKiAtLWVycm9yICov CisJCQkJZXJybXNnID0gb3B0YXJnOworCQkJCWJyZWFrOworCisJCQlkZWZhdWx0OgorCQkJCXVz YWdlKGFyZ3YpOworCQkJCWV4aXQoMSk7CisJCX0KKwl9CisKKwlpZiAoYXJnYyAhPSAoZm9yX3Bs dWdpbiA/IG9wdGluZCA6IG9wdGluZCArIDEpKQorCXsKKwkJdXNhZ2UoYXJndik7CisJCWV4aXQo MSk7CisJfQorCisJcmV0dXJuIGFyZ3Zbb3B0aW5kXTsKK30KKworLyoKKyAqIFBRYXV0aERhdGFI b29rIGltcGxlbWVudGF0aW9uLiBSZXBsYWNlcyB0aGUgZGVmYXVsdCBjbGllbnQgZmxvdyBieSBo YW5kbGluZworICogUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU5bX1YyXS4KKyAqLworaW50 CitvYXV0aF90ZXN0X2F1dGhkYXRhX2hvb2soUEdhdXRoRGF0YSB0eXBlLCBQR2Nvbm4gKmNvbm4s IHZvaWQgKmRhdGEpCit7CisJUEdvYXV0aEJlYXJlclJlcXVlc3QgKnJlcTsKKwlQR29hdXRoQmVh cmVyUmVxdWVzdFYyICpyZXEyID0gTlVMTDsKKworCUFzc2VydChob29rX3ZlcnNpb24gPT0gUFFB VVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU4gfHwKKwkJICAgaG9va192ZXJzaW9uID09IFBRQVVU SERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOX1YyKTsKKworCWlmIChub19ob29rIHx8IHR5cGUgIT0g aG9va192ZXJzaW9uKQorCQlyZXR1cm4gMDsKKworCXJlcSA9IGRhdGE7CisJaWYgKHR5cGUgPT0g UFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU5fVjIpCisJCXJlcTIgPSBkYXRhOworCisJaWYg KGhhbmdfZm9yZXZlcikKKwl7CisJCS8qIFN0YXJ0IGFzeW5jaHJvbm91cyBwcm9jZXNzaW5nLiAq LworCQlyZXEtPmFzeW5jID0gYXN5bmNfY2I7CisJCXJldHVybiAxOworCX0KKworCWlmIChtaXNi ZWhhdmVfbW9kZSkKKwl7CisJCWlmIChzdHJjbXAobWlzYmVoYXZlX21vZGUsICJuby1ob29rIikg IT0gMCkKKwkJCXJlcS0+YXN5bmMgPSBtaXNiZWhhdmVfY2I7CisJCXJldHVybiAxOworCX0KKwor CWlmIChleHBlY3RlZF91cmkpCisJeworCQlpZiAoIXJlcS0+b3BlbmlkX2NvbmZpZ3VyYXRpb24p CisJCXsKKwkJCWZwcmludGYoc3RkZXJyLCAiZXhwZWN0ZWQgVVJJIFwiJXNcIiwgZ290IE5VTExc biIsIGV4cGVjdGVkX3VyaSk7CisJCQlyZXR1cm4gLTE7CisJCX0KKworCQlpZiAoc3RyY21wKGV4 cGVjdGVkX3VyaSwgcmVxLT5vcGVuaWRfY29uZmlndXJhdGlvbikgIT0gMCkKKwkJeworCQkJZnBy aW50ZihzdGRlcnIsICJleHBlY3RlZCBVUkkgXCIlc1wiLCBnb3QgXCIlc1wiXG4iLCBleHBlY3Rl ZF91cmksIHJlcS0+b3BlbmlkX2NvbmZpZ3VyYXRpb24pOworCQkJcmV0dXJuIC0xOworCQl9CisJ fQorCisJaWYgKGV4cGVjdGVkX3Njb3BlKQorCXsKKwkJaWYgKCFyZXEtPnNjb3BlKQorCQl7CisJ CQlmcHJpbnRmKHN0ZGVyciwgImV4cGVjdGVkIHNjb3BlIFwiJXNcIiwgZ290IE5VTExcbiIsIGV4 cGVjdGVkX3Njb3BlKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCisJCWlmIChzdHJjbXAoZXhwZWN0 ZWRfc2NvcGUsIHJlcS0+c2NvcGUpICE9IDApCisJCXsKKwkJCWZwcmludGYoc3RkZXJyLCAiZXhw ZWN0ZWQgc2NvcGUgXCIlc1wiLCBnb3QgXCIlc1wiXG4iLCBleHBlY3RlZF9zY29wZSwgcmVxLT5z Y29wZSk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisKKwlpZiAoZXhwZWN0ZWRfaXNzdWVyKQor CXsKKwkJaWYgKCFyZXEyKQorCQl7CisJCQlmcHJpbnRmKHN0ZGVyciwgIi0tZXhwZWN0ZWQtaXNz dWVyIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIC12MVxuIik7CisJCQlyZXR1cm4gLTE7CisJCX0K KworCQlpZiAoIXJlcTItPmlzc3VlcikKKwkJeworCQkJZnByaW50ZihzdGRlcnIsICJleHBlY3Rl ZCBpc3N1ZXIgXCIlc1wiLCBnb3QgTlVMTFxuIiwgZXhwZWN0ZWRfaXNzdWVyKTsKKwkJCXJldHVy biAtMTsKKwkJfQorCisJCWlmIChzdHJjbXAoZXhwZWN0ZWRfaXNzdWVyLCByZXEyLT5pc3N1ZXIp ICE9IDApCisJCXsKKwkJCWZwcmludGYoc3RkZXJyLCAiZXhwZWN0ZWQgaXNzdWVyIFwiJXNcIiwg Z290IFwiJXNcIlxuIiwgZXhwZWN0ZWRfaXNzdWVyLCByZXEyLT5pc3N1ZXIpOworCQkJcmV0dXJu IC0xOworCQl9CisJfQorCisJaWYgKGVycm1zZykKKwl7CisJCWlmICh0b2tlbikKKwkJeworCQkJ ZnByaW50ZihzdGRlcnIsICItLWVycm9yIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIC0tdG9rZW5c biIpOworCQkJcmV0dXJuIC0xOworCQl9CisJCWVsc2UgaWYgKCFyZXEyKQorCQl7CisJCQlmcHJp bnRmKHN0ZGVyciwgIi0tZXJyb3IgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggLXYxXG4iKTsKKwkJ CXJldHVybiAtMTsKKwkJfQorCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHJlcTItPmVycm9yLCBl cnJtc2cpOworCQlyZXR1cm4gLTE7CisJfQorCisJcmVxLT50b2tlbiA9IHRva2VuOworCXJldHVy biAxOworfQorCisvKgorICogU2V0cyB1cCBhIHJlcXVlc3QgZm9yIGEgcGx1Z2luIG1vZHVsZSAo cGdfc3RhcnRfb2F1dGhiZWFyZXIoKSkgcmF0aGVyIHRoYW4KKyAqIHVzaW5nIHRoZSBob29rLgor ICovCitpbnQKK29hdXRoX3Rlc3Rfc3RhcnRfZmxvdyhQR2Nvbm4gKmNvbm4sIFBHb2F1dGhCZWFy ZXJSZXF1ZXN0VjIgKnJlcXVlc3QpCit7CisJaW50CQkJcmV0OworCisJLyoKKwkgKiBXZSBjYW4g c3RpbGwgZGVmZXIgdG8gdGhlIGhvb2sgYWJvdmUgdG8gYXZvaWQgY29weWluZyBjb2RlOyB3ZSBq dXN0CisJICogaGF2ZSB0byB0cmFuc2xhdGUgdGhlIHJldHVybiB2YWx1ZS4KKwkgKi8KKwlyZXQg PSBvYXV0aF90ZXN0X2F1dGhkYXRhX2hvb2soUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU5f VjIsIGNvbm4sCisJCQkJCQkJCSAgIHJlcXVlc3QpOworCisJaWYgKHJldCA9PSAwKQorCXsKKwkJ LyogVGhpcyBpcyBhIGJ1ZyBpbiB0aGUgdGVzdC4gKi8KKwkJZnByaW50ZihzdGRlcnIsICJwbHVn aW4gdGVzdHMgY2Fubm90IG1ha2UgdXNlIG9mIC12MSBvciAtLW5vLWhvb2tcbiIpOworCQlleGl0 KDEpOworCX0KKworCXJldHVybiAocmV0ID09IDEpID8gMCA6IC0xOworfQorCitzdGF0aWMgUG9z dGdyZXNQb2xsaW5nU3RhdHVzVHlwZQorYXN5bmNfY2IoUEdjb25uICpjb25uLCBQR29hdXRoQmVh cmVyUmVxdWVzdCAqcmVxLCBwZ3NvY2tldCAqYWx0c29jaykKK3sKKwlpZiAoaGFuZ19mb3JldmVy KQorCXsKKwkJLyoKKwkJICogVGhpcyBjb2RlIHRlc3RzIHRoYXQgbm90aGluZyBpcyBpbnRlcmZl cmluZyB3aXRoIGxpYnBxJ3MgaGFuZGxpbmcKKwkJICogb2YgY29ubmVjdF90aW1lb3V0LgorCQkg Ki8KKwkJc3RhdGljIHBnc29ja2V0IHNvY2sgPSBQR0lOVkFMSURfU09DS0VUOworCisJCWlmIChz b2NrID09IFBHSU5WQUxJRF9TT0NLRVQpCisJCXsKKwkJCS8qIEZpcnN0IGNhbGwuIENyZWF0ZSBh biB1bmJvdW5kIHNvY2tldCB0byB3YWl0IG9uLiAqLworI2lmZGVmIFdJTjMyCisJCQlXU0FEQVRB CQl3c2FEYXRhOworCQkJaW50CQkJZXJyOworCisJCQllcnIgPSBXU0FTdGFydHVwKE1BS0VXT1JE KDIsIDIpLCAmd3NhRGF0YSk7CisJCQlpZiAoZXJyKQorCQkJeworCQkJCXBlcnJvcigiV1NBU3Rh cnR1cCBmYWlsZWQiKTsKKwkJCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CisJCQl9Cisj ZW5kaWYKKwkJCXNvY2sgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7CisJCQlpZiAo c29jayA9PSBQR0lOVkFMSURfU09DS0VUKQorCQkJeworCQkJCXBlcnJvcigiZmFpbGVkIHRvIGNy ZWF0ZSBkYXRhZ3JhbSBzb2NrZXQiKTsKKwkJCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7 CisJCQl9CisJCX0KKworCQkvKiBNYWtlIGxpYnBxIHdhaXQgb24gdGhlICh1bnJlYWRhYmxlKSBz b2NrZXQuICovCisJCSphbHRzb2NrID0gc29jazsKKwkJcmV0dXJuIFBHUkVTX1BPTExJTkdfUkVB RElORzsKKwl9CisKKwlyZXEtPnRva2VuID0gdG9rZW47CisJcmV0dXJuIFBHUkVTX1BPTExJTkdf T0s7Cit9CisKK3N0YXRpYyBQb3N0Z3Jlc1BvbGxpbmdTdGF0dXNUeXBlCittaXNiZWhhdmVfY2Io UEdjb25uICpjb25uLCBQR29hdXRoQmVhcmVyUmVxdWVzdCAqcmVxLCBwZ3NvY2tldCAqYWx0c29j aykKK3sKKwlpZiAoc3RyY21wKG1pc2JlaGF2ZV9tb2RlLCAiZmFpbC1hc3luYyIpID09IDApCisJ eworCQkvKiBKdXN0IGZhaWwgIm5vcm1hbGx5Ii4gKi8KKwkJaWYgKGVycm1zZykKKwkJeworCQkJ UEdvYXV0aEJlYXJlclJlcXVlc3RWMiAqcmVxMjsKKworCQkJaWYgKGhvb2tfdmVyc2lvbiA9PSBQ UUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTikKKwkJCXsKKwkJCQlmcHJpbnRmKHN0ZGVyciwg Ii0tZXJyb3IgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggLXYxXG4iKTsKKwkJCQlleGl0KDEpOwor CQkJfQorCisJCQlyZXEyID0gKFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKikgcmVxOworCQkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIocmVxMi0+ZXJyb3IsIGVycm1zZyk7CisJCX0KKworCQlyZXR1cm4g UEdSRVNfUE9MTElOR19GQUlMRUQ7CisJfQorCWVsc2UgaWYgKHN0cmNtcChtaXNiZWhhdmVfbW9k ZSwgIm5vLXRva2VuIikgPT0gMCkKKwl7CisJCS8qIENhbGxiYWNrcyBtdXN0IGFzc2lnbiByZXEt PnRva2VuIGJlZm9yZSByZXR1cm5pbmcgT0suICovCisJCXJldHVybiBQR1JFU19QT0xMSU5HX09L OworCX0KKwllbHNlIGlmIChzdHJjbXAobWlzYmVoYXZlX21vZGUsICJuby1zb2NrZXQiKSA9PSAw KQorCXsKKwkJLyogQ2FsbGJhY2tzIG11c3QgYXNzaWduICphbHRzb2NrIGJlZm9yZSBhc2tpbmcg Zm9yIHBvbGxpbmcuICovCisJCXJldHVybiBQR1JFU19QT0xMSU5HX1JFQURJTkc7CisJfQorCWVs c2UKKwl7CisJCWZwcmludGYoc3RkZXJyLCAidW5yZWNvZ25pemVkIC0tbWlzYmVoYXZlIG1vZGU6 ICVzXG4iLCBtaXNiZWhhdmVfbW9kZSk7CisJCWV4aXQoMSk7CisJfQorfQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvdC8wMDJfY2xpZW50LnBsIGIvc3JjL3Rl c3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvdC8wMDJfY2xpZW50LnBsCmluZGV4IGY4NzhhMjNk MjAxLi5iMjNlNTc5ZjFmZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxp ZGF0b3IvdC8wMDJfY2xpZW50LnBsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRh dG9yL3QvMDAyX2NsaWVudC5wbApAQCAtMSw2ICsxLDYgQEAKICMKICMgRXhlcmNpc2VzIHRoZSBB UEkgZm9yIGN1c3RvbSBPQXV0aCBjbGllbnQgZmxvd3MsIHVzaW5nIHRoZSBvYXV0aF9ob29rX2Ns aWVudAotIyB0ZXN0IGRyaXZlci4KKyMgdGVzdCBkcml2ZXIgYW5kIHRoZSBvYXV0aF9mbG93IGN1 c3RvbSBwbHVnaW4uCiAjCiAjIENvcHlyaWdodCAoYykgMjAyMS0yMDI1LCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAogIwpAQCAtMjAsNiArMjAsMTAgQEAgaWYgKCEkRU5We1BH X1RFU1RfRVhUUkF9IHx8ICRFTlZ7UEdfVEVTVF9FWFRSQX0gIX4gL1xib2F1dGhcYi8pCiAJICAn UG90ZW50aWFsbHkgdW5zYWZlIHRlc3Qgb2F1dGggbm90IGVuYWJsZWQgaW4gUEdfVEVTVF9FWFRS QSc7CiB9CiAKK215ICRwbHVnaW5fc3VwcG9ydGVkID0gKAorCQkgY2hlY2tfcGdfY29uZmlnKCIj ZGVmaW5lIEhBVkVfU1lTX0VWRU5UX0ggMSIpCisJICBvciBjaGVja19wZ19jb25maWcoIiNkZWZp bmUgSEFWRV9TWVNfRVBPTExfSCAxIikpOworCiAjCiAjIENsdXN0ZXIgU2V0dXAKICMKQEAgLTcy LDYgKzc2LDggQEAgc3ViIHRlc3QKIAkJJGZsYWdzID0gJHBhcmFtc3tmbGFnc307CiAJfQogCisJ IyBGaXJzdCBydW4gdGhlIG9hdXRoX2hvb2tfY2xpZW50LCB3aGljaCB1c2VzIFBRYXV0aERhdGFI b29rIHRvIGluc2VydCBhIG5ldworCSMgT0F1dGggZmxvdy4KIAlteSBAY21kID0gKCJvYXV0aF9o b29rX2NsaWVudCIsIEB7JGZsYWdzfSwgJGNvbW1vbl9jb25uc3RyKTsKIAlub3RlICJydW5uaW5n ICciIC4gam9pbigiJyAnIiwgQGNtZCkgLiAiJyI7CiAKQEAgLTEwMyw2ICsxMDksMzcgQEAgc3Vi IHRlc3QKIAkJJG5vZGUtPmxvZ19jaGVjaygiJHRlc3RfbmFtZTogbG9nIG1hdGNoZXMiLAogCQkJ JGxvZ19zdGFydCwgbG9nX2xpa2UgPT4gJHBhcmFtc3tsb2dfbGlrZX0pOwogCX0KKworICBTS0lQ OgorCXsKKwkJbGFzdCBTS0lQIGlmICRwYXJhbXN7aG9va19vbmx5fTsKKwkJc2tpcCAiT0F1dGgg bW9kdWxlcyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIgorCQkgIHVubGVzcyAk cGx1Z2luX3N1cHBvcnRlZDsKKworCQkjIFJ1biB0aGUgc2FtZSB0ZXN0IHdpdGggcHNxbCBpdHNl bGYsIGxvYWRpbmcgdGhlIG9hdXRoX2Zsb3cuc28gbW9kdWxlLgorCQlsb2NhbCAkRU5We1BHT0FV VEhNT0RVTEV9ID0gJEVOVntmbG93X21vZHVsZV9wYXRofTsKKworCQkjIEZsYWdzIGFyZSBwYXNz ZWQgdG8gdGhlIG1vZHVsZSB2aWEgT0FVVEhfVEVTVF9GTEFHUywgd2l0aCAweDAxIGFzIGEKKwkJ IyBzZXBhcmF0b3IuCisJCWxvY2FsICRFTlZ7T0FVVEhfVEVTVF9GTEFHU30gPSBqb2luKCJceDAx IiwgQHskZmxhZ3N9KTsKKworCQlpZiAoJHBhcmFtc3tleHBlY3Rfc3VjY2Vzc30pCisJCXsKKwkJ CSRub2RlLT5jb25uZWN0X29rKAorCQkJCSRjb21tb25fY29ubnN0ciwKKwkJCQkiW3BsdWdpbiBm bG93XSAkdGVzdF9uYW1lIiwKKwkJCQlleHBlY3RlZF9zdGRlcnIgPT4gJHBhcmFtc3tleHBlY3Rl ZF9zdGRlcnJ9LAorCQkJCWxvZ19saWtlID0+ICRwYXJhbXN7bG9nX2xpa2V9KTsKKwkJfQorCQll bHNlCisJCXsKKwkJCSRub2RlLT5jb25uZWN0X2ZhaWxzKAorCQkJCSRjb21tb25fY29ubnN0ciwK KwkJCQkiW3BsdWdpbiBmbG93XSAkdGVzdF9uYW1lIiwKKwkJCQlleHBlY3RlZF9zdGRlcnIgPT4g JHBhcmFtc3tleHBlY3RlZF9zdGRlcnJ9LAorCQkJCWxvZ19saWtlID0+ICRwYXJhbXN7bG9nX2xp a2V9KTsKKwkJfQorCX0KIH0KIAogdGVzdCgKQEAgLTExOSw2ICsxNTYsNyBAQCB0ZXN0KAogIyBN YWtlIHN1cmUgdGhlIHYxIGhvb2sgY29udGludWVzIHRvIHdvcmsuCiB0ZXN0KAogCSJ2MSBzeW5j aHJvbm91cyBob29rIGNhbiBwcm92aWRlIGEgdG9rZW4iLAorCWhvb2tfb25seSA9PiAxLCAgICAj IHBsdWdpbnMgZG9uJ3Qgc3VwcG9ydCBBUEkgdjEKIAlmbGFncyA9PiBbCiAJCSItdjEiLAogCQki LS10b2tlbiIgPT4gIm15LXRva2VuLXYxIiwKQEAgLTEzMyw2ICsxNzEsNyBAQCBpZiAoJEVOVnt3 aXRoX2xpYmN1cmx9IG5lICd5ZXMnKQogCSMgbGlicHEgc2hvdWxkIGhlbHAgdXNlcnMgb3V0IGlm IG5vIE9BdXRoIHN1cHBvcnQgaXMgYnVpbHQgaW4uCiAJdGVzdCgKIAkJImZhaWxzIHdpdGhvdXQg Y3VzdG9tIGhvb2sgaW5zdGFsbGVkIiwKKwkJaG9va19vbmx5ID0+IDEsICAgICMgcGx1Z2lucyBj YW4ndCB1c2UgLS1uby1ob29rCiAJCWZsYWdzID0+IFsiLS1uby1ob29rIl0sCiAJCWV4cGVjdGVk X3N0ZGVyciA9PgogCQkgIHFyL25vIE9BdXRoIGZsb3dzIGFyZSBhdmFpbGFibGUgXCh0cnkgaW5z dGFsbGluZyB0aGUgbGlicHEtb2F1dGggcGFja2FnZVwpLwotLSAKMi4zNC4xCgo= --000000000000f056560646153aa9--