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.94.2) (envelope-from ) id 1ql7lv-001ILD-6x for pgsql-hackers@arkaria.postgresql.org; Tue, 26 Sep 2023 13:06:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1ql7lt-00Bved-U0 for pgsql-hackers@arkaria.postgresql.org; Tue, 26 Sep 2023 13:06:37 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1ql7lt-00BveR-9W for pgsql-hackers@lists.postgresql.org; Tue, 26 Sep 2023 13:06:37 +0000 Received: from mail-pg1-x532.google.com ([2607:f8b0:4864:20::532]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1ql7lp-007gSs-0e for pgsql-hackers@postgresql.org; Tue, 26 Sep 2023 13:06:36 +0000 Received: by mail-pg1-x532.google.com with SMTP id 41be03b00d2f7-573c62b3cd2so5211812a12.3 for ; Tue, 26 Sep 2023 06:06:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1695733590; x=1696338390; 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=dVuN8MkK1/XqC+hTvSKrtfhS1H8otV7betBdpLToFN0=; b=RcSHFfkVjTXxC5DejIMGEGdUXXijE/qXHIiRdcFz7xd6UEZ9DW0fRflxFbJ+RC4nR6 /49ohaDwmbQ1GyeR0Bdrn6FG7ix4gKlQSgL3VnlaAoloL0G+y5lz6R7BCwE9afTs0xHi jbzLCBVXSHJyS5lwJqWFfKisHVbZXWPvz0ZYDwhRScOOpW+tPxCjKXbeqx+GZ7YF2BPV x+5WI8Se6hzjZDuEXTN8f+HDbcw0gNBeHFVjCIHHOUAgv54gUs5g2Hs2rqZl4N6bKYOt Mmoa0guapclNMkNzMMPXz4gIOabZHAB5MD1qr7O5Z04KWtmHwymcwb8FysA6R/LHaSmI iLTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695733590; x=1696338390; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=dVuN8MkK1/XqC+hTvSKrtfhS1H8otV7betBdpLToFN0=; b=EephsC3UCQBtcdr2Zf9c1RGtNdGxRV5FkpAyY8/Z9TmSLQm9praZYq9vOPlKxU8H/b Z8617cKN6I5ZdjURqU5bvpkThvOUaNsRxxmqrik56s8Qi9hvfOm/xWMqnTyZpaYbCh4Y WLqrsyldp0d1PN2/xXyCUDapv5xmTL7LAgH2173fGxhOK+gkScjOkXpaEmGvxyRnfIjl z3IB+4Wp80FCkaLUJGo9RMXBF6c6azR9Y1d35U7WYvXlJpnVzujKxAQK+6sv5W78Zb+r K8T1eL9EEiYWIWxZnBp+o7yJrYdyGC+0ASWHu7Sxp8/y4lkBab1ftrIQA7w48mDxWYbQ BO5Q== X-Gm-Message-State: AOJu0YzJ2RlOZJn+uP6Pfpw6Tzmnt6B94Up0dMmx3Dc5oCFzbdLMXJVc jEM4AB5amG528VeHxn8ugZEhzTphf9fhGyrleM8= X-Google-Smtp-Source: AGHT+IGa+4jieIUJT54ZhhfYQGLHHg3hSiVyE0+iPv1OigW+JhPdTxQuFgMreb9PgwyrBleQ2ZAvqGnH5IN7+4DkzAw= X-Received: by 2002:a17:90a:134e:b0:26f:b733:6887 with SMTP id y14-20020a17090a134e00b0026fb7336887mr6883743pjf.27.1695733589789; Tue, 26 Sep 2023 06:06:29 -0700 (PDT) MIME-Version: 1.0 References: <20221221101846.7zsi7lscnm5ediik@alvherre.pgsql> <1350682.1671635927@sss.pgh.pa.us> <4191508.1674157166@sss.pgh.pa.us> <349124.1674185509@sss.pgh.pa.us> <20230207180855.xy5m4puwh5gzd7xy@awork3.anarazel.de> <1274885.1680558101@sss.pgh.pa.us> <9D23D8BB-83EE-451E-95C1-CF42ADB76869@yesql.se> In-Reply-To: From: Amit Langote Date: Tue, 26 Sep 2023 22:06:12 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Robert Haas Cc: Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , Jacob Champion , PostgreSQL Hackers , Thom Brown , Tom Lane Content-Type: multipart/mixed; boundary="00000000000041b1e2060642be90" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000041b1e2060642be90 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Sep 25, 2023 at 9:57=E2=80=AFPM Amit Langote wrote: > On Wed, Sep 6, 2023 at 11:20=E2=80=AFPM Robert Haas wrote: > > - Is there any point to all of these early exit cases? For example, in > > ExecInitBitmapAnd, why exit early if initialization fails? Why not > > just plunge ahead and if initialization failed the caller will notice > > that and when we ExecEndNode some of the child node pointers will be > > NULL but who cares? The obvious disadvantage of this approach is that > > we're doing a bunch of unnecessary initialization, but we're also > > speeding up the common case where we don't need to abort by avoiding a > > branch that will rarely be taken. I'm not quite sure what the right > > thing to do is here. > I thought about this some and figured that adding the > is-CachedPlan-still-valid tests in the following places should suffice > after all: > > 1. In InitPlan() right after the top-level ExecInitNode() calls > 2. In ExecInit*() functions of Scan nodes, right after > ExecOpenScanRelation() calls After sleeping on this, I think we do need the checks after all the ExecInitNode() calls too, because we have many instances of the code like the following one: outerPlanState(gatherstate) =3D ExecInitNode(outerNode, estate, eflags)= ; tupDesc =3D ExecGetResultType(outerPlanState(gatherstate)); If outerNode is a SeqScan and ExecInitSeqScan() returned early because ExecOpenScanRelation() detected that plan was invalidated, then tupDesc would be NULL in this case, causing the code to crash. Now one might say that perhaps we should only add the is-CachedPlan-valid test in the instances where there is an actual risk of such misbehavior, but that could lead to confusion, now or later. It seems better to add them after every ExecInitNode() call while we're inventing the notion, because doing so relieves the authors of future enhancements of the ExecInit*() routines from worrying about any of this. Attached 0003 should show how that turned out. Updated 0002 as mentioned in the previous reply -- setting pointers to NULL after freeing them more consistently across various ExecEnd*() routines and using the `if (pointer !=3D NULL)` style over the `if (pointer)` more consistently. Updated 0001's commit message to remove the mention of its relation to any future commits. I intend to push it tomorrow. Patches 0004 onwards contain changes too, mainly in terms of moving the code around from one patch to another, but I'll omit the details of the specific change for now. -- Thanks, Amit Langote EDB: http://www.enterprisedb.com --00000000000041b1e2060642be90 Content-Type: application/octet-stream; name="v47-0005-Teach-the-executor-to-lock-child-tables-in-some-.patch" Content-Disposition: attachment; filename="v47-0005-Teach-the-executor-to-lock-child-tables-in-some-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ln0bz7uy4 RnJvbSA1Y2U0MjdhNzU0ZDAzNGNiMmIzZWZhOTIyZThjOWQ3ZGFkMjAwNDE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgMjIgU2VwIDIwMjMgMTg6MTc6MTUgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 NyA1LzldIFRlYWNoIHRoZSBleGVjdXRvciB0byBsb2NrIGNoaWxkIHRhYmxlcyBpbiBzb21lIGNh c2VzCgpBbiB1cGNvbWluZyBjb21taXQgd2lsbCBtb3ZlIHRoZSBsb2NraW5nIG9mIGNoaWxkIHRh YmxlcyByZWZlcmVuY2VkCmluIGEgY2FjaGVkIHBsYW4gdHJlZSBmcm9tIEdldENhY2hlZFBsYW4o KSB0byB0aGUgZXhlY3V0b3IKaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBsYW4gdHJlZSBpbiBFeGVj dXRvclN0YXJ0KCkuICBUaGlzIGNvbW1pdAp0ZWFjaGVzIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRp b24oKSB0byBsb2NrIGNoaWxkIHRhYmxlcyBpZgpFU3RhdGUuZXNfY2FjaGVkcGxhbiBwb2ludHMg dG8gYSBDYWNoZWRQbGFuLgoKVGhlIGV4ZWN1dG9yIG11c3Qgbm93IGRlYWwgd2l0aCB0aGUgY2Fz ZXMgd2hlcmUgYW4gdW5sb2NrZWQgY2hpbGQKdGFibGUgbWlnaHQgaGF2ZSBiZWVuIGNvbmN1cnJl bnRseSBkcm9wcGVkLCBzbyB0aGlzIG1vZGlmaWVzCkV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24o KSB0byB1c2UgdHJ5X3RhYmxlX29wZW4oKS4gIEFsbCBvZiBpdHMKY2FsbGVycyAoYW5kIHRob3Nl IG9mIEV4ZWNPcGVuU2NhblJlbGF0aW9uKCkgdGhhdCBjYWxscyBpdCkgbXVzdApub3cgYWNjb3Vu dCBmb3IgdGhlIGNoaWxkIHRhYmxlIGRpc2FwcGVhcmluZywgd2hpY2ggbWVhbnMgdG8gYWJvcnQK aW5pdGlhbGl6aW5nIHRoZSB0YWJsZSdzIFNjYW4gbm9kZSBpbiB0aGUgbWlkZGxlLgoKRXhlY0dl dFJhbmdlVGFibGVSZWxhdGlvbigpIG5vdyBleGFtaW5lcyBpbkZyb21DbCBmaWVsZCBvZiBhbiBS VEUKdG8gZGV0ZXJtaW5lIHRoYXQgYSBnaXZlbiByYW5nZSB0YWJsZSByZWxhdGlvbiBpcyBhIGNo aWxkIHRhYmxlLCBzbwp0aGlzIGNvbW1pdCBhbHNvIG1ha2VzIHRoZSBwbGFubmVyIHNldCBpbkZy b21DbCB0byBmYWxzZSBpbiB0aGUKY2hpbGQgdGFibGVzJyBSVEVzIHRoYXQgaXQgbWFudWZhY3R1 cmVzLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStIaXdxRkdrTVNnZTZUZ0M5 S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdAbWFpbC5nbWFpbC5jb21rCi0tLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FICAgICAgICAgIHwgMzYgKysrKysrKysrKysrKysrKysr KysrKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgfCAgMiArKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgICAgIHwgNDEgKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvaW5oZXJpdC5jIHwgIDcgKysr KysKIHNyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgICAgICAgICB8ICA3ICsrLS0tCiBzcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgfCAgOCArKysrLS0KIDYgZmlsZXMgY2hh bmdlZCwgODQgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCmlu ZGV4IDE3Nzc1YTQ5ZTIuLjZkMjI0MDYxMGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL1JFQURNRQorKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKQEAgLTI4MCw2ICsy ODAsMzQgQEAgYXJlIHR5cGljYWxseSByZXNldCB0byBlbXB0eSBvbmNlIHBlciB0dXBsZS4gIFBl ci10dXBsZSBjb250ZXh0cyBhcmUgdXN1YWxseQogYXNzb2NpYXRlZCB3aXRoIEV4cHJDb250ZXh0 cywgYW5kIGNvbW1vbmx5IGVhY2ggUGxhblN0YXRlIG5vZGUgaGFzIGl0cyBvd24KIEV4cHJDb250 ZXh0IHRvIGV2YWx1YXRlIGl0cyBxdWFsIGFuZCB0YXJnZXRsaXN0IGV4cHJlc3Npb25zIGluLgog CitSZWxhdGlvbiBMb2NraW5nCistLS0tLS0tLS0tLS0tLS0tCisKK1R5cGljYWxseSwgd2hlbiB0 aGUgZXhlY3V0b3IgaW5pdGlhbGl6ZXMgYSBwbGFuIHRyZWUgZm9yIGV4ZWN1dGlvbiwgaXQgZG9l c24ndAorbG9jayBub24taW5kZXggcmVsYXRpb25zIGlmIHRoZSBwbGFuIHRyZWUgaXMgZnJlc2hs eSBnZW5lcmF0ZWQgYW5kIG5vdCBkZXJpdmVkCitmcm9tIGEgQ2FjaGVkUGxhbi4gVGhpcyBpcyBi ZWNhdXNlIHN1Y2ggbG9ja3MgaGF2ZSBhbHJlYWR5IGJlZW4gZXN0YWJsaXNoZWQKK2R1cmluZyB0 aGUgcXVlcnkncyBwYXJzaW5nLCByZXdyaXRpbmcsIGFuZCBwbGFubmluZyBwaGFzZXMuIEhvd2V2 ZXIsIHdpdGggYQorY2FjaGVkIHBsYW4gdHJlZSwgdGhlcmUgY2FuIGJlIHJlbGF0aW9ucyB0aGF0 IHJlbWFpbiB1bmxvY2tlZC4gVGhlIGZ1bmN0aW9uCitHZXRDYWNoZWRQbGFuKCkgbG9ja3MgcmVs YXRpb25zIGV4aXN0aW5nIGluIHRoZSBxdWVyeSdzIHJhbmdlIHRhYmxlIHByZS1wbGFubmluZwor YnV0IGRvZXNuJ3QgYWNjb3VudCBmb3IgdGhvc2UgYWRkZWQgZHVyaW5nIHRoZSBwbGFubmluZyBw aGFzZS4gQ29uc2VxdWVudGx5LAoraW5oZXJpdGFuY2UgY2hpbGQgdGFibGVzLCBpbnRyb2R1Y2Vk IHRvIHRoZSBxdWVyeSdzIHJhbmdlIHRhYmxlIGR1cmluZyBwbGFubmluZywKK3dvbid0IGJlIGxv Y2tlZCB3aGVuIHRoZSBjYWNoZWQgcGxhbiByZWFjaGVzIHRoZSBleGVjdXRvci4KKworVGhlIGRl Y2lzaW9uIHRvIGRlZmVyIGxvY2tpbmcgY2hpbGQgdGFibGVzIHdpdGggR2V0Q2FjaGVkUGxhbigp IGFyaXNlcyBmcm9tIHRoZQorZmFjdCB0aGF0IG5vdCBhbGwgbWlnaHQgYmUgYWNjZXNzZWQgZHVy aW5nIHBsYW4gZXhlY3V0aW9uLiBGb3IgaW5zdGFuY2UsIGlmCitjaGlsZCB0YWJsZXMgYXJlIHBh cnRpdGlvbnMsIHNvbWUgbWlnaHQgYmUgb21pdHRlZCBkdWUgdG8gcHJ1bmluZyBhdAorZXhlY3V0 aW9uLWluaXRpYWxpemF0aW9uLXRpbWUuIFRodXMsIHRoZSByZXNwb25zaWJpbGl0eSBvZiBsb2Nr aW5nIHRoZXNlIGNoaWxkCit0YWJsZXMgaXMgcHVzaGVkIHRvIGV4ZWN1dGlvbi1pbml0aWFsaXph dGlvbi10aW1lLCB0YWtpbmcgcGxhY2UgaW4gRXhlY0luaXROb2RlKCkKK2ZvciBwbGFuIG5vZGVz IGVuY29tcGFzc2luZyB0aGVzZSB0YWJsZXMuCisKK1RoaXMgYXBwcm9hY2ggb3BlbnMgYSB3aW5k b3cgd2hlcmUgYSBjYWNoZWQgcGxhbiB0cmVlIHdpdGggY2hpbGQgdGFibGVzIGNvdWxkCitiZWNv bWUgb3V0ZGF0ZWQgaWYgYW5vdGhlciBiYWNrZW5kIG1vZGlmaWVzIHRoZXNlIHRhYmxlcyBiZWZv cmUgRXhlY0luaXROb2RlKCkKK2xvY2tzIHRoZW0uIEdpdmVuIHRoaXMsIHRoZSBleGVjdXRvciBo YXMgdGhlIGFkZGVkIGR1dHkgdG8gY29uZmlybSB0aGUgcGxhbgordHJlZSdzIHZhbGlkaXR5IHdo ZW5ldmVyIGl0IGxvY2tzIGEgY2hpbGQgdGFibGUgcG9zdCBleGVjdXRpb24taW5pdGlhbGl6YXRp b24tCitwcnVuaW5nLiBUaGlzIHZhbGlkYXRpb24gaXMgZG9uZSBieSBjaGVja2luZyB0aGUgQ2Fj aGVkUGxhbi5pc192YWxpZCBhdHRyaWJ1dGUKK29mIHRoZSBDYWNoZWRQbGFuIHByb3ZpZGVkLiBJ ZiB0aGUgcGxhbiB0cmVlIGlzIG91dGRhdGVkIChpc192YWxpZD1mYWxzZSksIHRoZQorZXhlY3V0 b3IgaGFsdHMgYW55IGZ1cnRoZXIgaW5pdGlhbGl6YXRpb24gYW5kIGFsZXJ0cyB0aGUgY2FsbGVy IHRoYXQgdGhleSBzaG91bGQKK3JldHJ5IGV4ZWN1dGlvbiB3aXRoIGFub3RoZXIgZnJlc2hseSBj cmVhdGVkIHBsYW4gdHJlZS4KIAogUXVlcnkgUHJvY2Vzc2luZyBDb250cm9sIEZsb3cKIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMTYsNyArMzQ0LDEzIEBAIFRoaXMgaXMgYSBz a2V0Y2ggb2YgY29udHJvbCBmbG93IGZvciBmdWxsIHF1ZXJ5IHByb2Nlc3Npbmc6CiAKIAlGcmVl UXVlcnlEZXNjCiAKLVBlciBhYm92ZSBjb21tZW50cywgaXQncyBub3QgcmVhbGx5IGNyaXRpY2Fs IGZvciBFeGVjRW5kTm9kZSB0byBmcmVlIGFueQorQXMgbWVudGlvbmVkIGluIHRoZSAiUmVsYXRp b24gTG9ja2luZyIgc2VjdGlvbiwgaWYgdGhlIHBsYW4gdHJlZSBpcyBmb3VuZCB0bworYmUgc3Rh bGUgZHVyaW5nIG9uZSBvZiB0aGUgcmVjdXJzaXZlIGNhbGxzIG9mIEV4ZWNJbml0Tm9kZSgpIGFm dGVyIHRha2luZyBhCitsb2NrIG9uIGEgY2hpbGQgdGFibGUsIHRoZSBjb250cm9sIGlzIGltbW1l ZGlhdGVseSByZXR1cm5lZCB0byB0aGUgY2FsbGVyIG9mCitFeGVjdXRvclN0YXJ0KCksIHdoaWNo IG11c3QgcmVkbyB0aGUgc3RlcHMgZnJvbSBDcmVhdGVRdWVyeURlc2Mgd2l0aCBhIG5ldworcGxh biB0cmVlLgorCitQZXIgYWJvdmUgY29tbWVudHMsIGl0J3Mgbm90IHJlYWxseSBjcml0aWNhbCBm b3IgRXhlY0VuZFBsYW4gdG8gZnJlZSBhbnkKIG1lbW9yeTsgaXQnbGwgYWxsIGdvIGF3YXkgaW4g RnJlZUV4ZWN1dG9yU3RhdGUgYW55d2F5LiAgSG93ZXZlciwgd2UgZG8gbmVlZCB0bwogYmUgY2Fy ZWZ1bCB0byBjbG9zZSByZWxhdGlvbnMsIGRyb3AgYnVmZmVyIHBpbnMsIGV0Yywgc28gd2UgZG8g bmVlZCB0byBzY2FuCiB0aGUgcGxhbiBzdGF0ZSB0cmVlIHRvIGZpbmQgdGhlc2Ugc29ydHMgb2Yg cmVzb3VyY2VzLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlv bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IGViOGE4N2Zk NjMuLjg0OTc4YzU1MjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTE5 MjcsNiArMTkyNyw4IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFu c3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJICogZHVyYXRpb24gb2Yg dGhpcyBleGVjdXRvciBydW4uCiAJCQkgKi8KIAkJCXBhcnRyZWwgPSBFeGVjR2V0UmFuZ2VUYWJs ZVJlbGF0aW9uKGVzdGF0ZSwgcGluZm8tPnJ0aW5kZXgpOworCQkJaWYgKHVubGlrZWx5KHBhcnRy ZWwgPT0gTlVMTCkpCisJCQkJcmV0dXJuIE5VTEw7CiAJCQlwYXJ0a2V5ID0gUmVsYXRpb25HZXRQ YXJ0aXRpb25LZXkocGFydHJlbCk7CiAJCQlwYXJ0ZGVzYyA9IFBhcnRpdGlvbkRpcmVjdG9yeUxv b2t1cChlc3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3RvcnksCiAJCQkJCQkJCQkJCQlwYXJ0cmVs KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKaW5kZXggZjBmNTc0MGMyNi4uMTE3NzczNzA2YSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKQEAgLTY5Nyw2ICs2OTcsOCBAQCBFeGVjUmVsYXRp b25Jc1RhcmdldFJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBJbmRleCBzY2FucmVsaWQpCiAgKgog ICoJCU9wZW4gdGhlIGhlYXAgcmVsYXRpb24gdG8gYmUgc2Nhbm5lZCBieSBhIGJhc2UtbGV2ZWwg c2NhbiBwbGFuIG5vZGUuCiAgKgkJVGhpcyBzaG91bGQgYmUgY2FsbGVkIGR1cmluZyB0aGUgbm9k ZSdzIEV4ZWNJbml0IHJvdXRpbmUuCisgKgorICoJCU5VTEwgaXMgcmV0dXJuZWQgaWYgdGhlIHJl bGF0aW9uIGlzIGZvdW5kIHRvIGhhdmUgYmVlbiBkcm9wcGVkLgogICogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiBS ZWxhdGlvbgpAQCAtNzA2LDYgKzcwOCw4IEBAIEV4ZWNPcGVuU2NhblJlbGF0aW9uKEVTdGF0ZSAq ZXN0YXRlLCBJbmRleCBzY2FucmVsaWQsIGludCBlZmxhZ3MpCiAKIAkvKiBPcGVuIHRoZSByZWxh dGlvbi4gKi8KIAlyZWwgPSBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwgc2NhbnJl bGlkKTsKKwlpZiAodW5saWtlbHkocmVsID09IE5VTEwpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8q CiAJICogQ29tcGxhaW4gaWYgd2UncmUgYXR0ZW1wdGluZyBhIHNjYW4gb2YgYW4gdW5zY2FubmFi bGUgcmVsYXRpb24sIGV4Y2VwdApAQCAtNzYzLDYgKzc2Nyw5IEBAIEV4ZWNJbml0UmFuZ2VUYWJs ZShFU3RhdGUgKmVzdGF0ZSwgTGlzdCAqcmFuZ2VUYWJsZSwgTGlzdCAqcGVybUluZm9zKQogICoJ CU9wZW4gdGhlIFJlbGF0aW9uIGZvciBhIHJhbmdlIHRhYmxlIGVudHJ5LCBpZiBub3QgYWxyZWFk eSBkb25lCiAgKgogICogVGhlIFJlbGF0aW9ucyB3aWxsIGJlIGNsb3NlZCBhZ2FpbiBpbiBFeGVj RW5kUGxhbigpLgorICoKKyAqIFJldHVybmVkIHZhbHVlIG1heSBiZSBOVUxMIGlmIHRoZSByZWxh dGlvbiBpcyBhIGNoaWxkIHJlbGF0aW9uIHRoYXQgaXMgbm90CisgKiBhbHJlYWR5IGxvY2tlZC4K ICAqLwogUmVsYXRpb24KIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICplc3RhdGUs IEluZGV4IHJ0aSkKQEAgLTc3OSw3ICs3ODYsMjggQEAgRXhlY0dldFJhbmdlVGFibGVSZWxhdGlv bihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggcnRpKQogCiAJCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0g UlRFX1JFTEFUSU9OKTsKIAotCQlpZiAoIUlzUGFyYWxsZWxXb3JrZXIoKSkKKwkJaWYgKElzUGFy YWxsZWxXb3JrZXIoKSB8fAorCQkJKGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbiAhPSBOVUxMICYmICFy dGUtPmluRnJvbUNsKSkKKwkJeworCQkJLyoKKwkJCSAqIFRha2UgYSBsb2NrIGlmIHdlIGFyZSBh IHBhcmFsbGVsIHdvcmtlciBvciBpZiB0aGlzIGlzIGEgY2hpbGQKKwkJCSAqIHRhYmxlIHJlZmVy ZW5jZWQgaW4gYSBjYWNoZWQgcGxhbi4KKwkJCSAqCisJCQkgKiBQYXJhbGxlbCB3b3JrZXJzIG5l ZWQgdG8gaGF2ZSB0aGVpciBvd24gbG9jYWwgbG9jayBvbiB0aGUKKwkJCSAqIHJlbGF0aW9uLiAg VGhpcyBlbnN1cmVzIHNhbmUgYmVoYXZpb3IgaW4gY2FzZSB0aGUgcGFyZW50IHByb2Nlc3MKKwkJ CSAqIGV4aXRzIGJlZm9yZSB3ZSBkby4KKwkJCSAqCisJCQkgKiBXaGVuIGV4ZWN1dGluZyBhIGNh Y2hlZCBwbGFuLCBjaGlsZCB0YWJsZXMgbXVzdCBiZSBsb2NrZWQKKwkJCSAqIGhlcmUsIGJlY2F1 c2UgcGxhbmNhY2hlLmMgKEdldENhY2hlZFBsYW4oKSkgd291bGQgb25seSBoYXZlCisJCQkgKiBs b2NrZWQgdGFibGVzIG1lbnRpb25lZCBpbiB0aGUgcXVlcnksIHRoYXQgaXMsIHRhYmxlcyB3aG9z ZQorCQkJICogUlRFcycgaW5Gcm9tQ2wgaXMgdHJ1ZS4KKwkJCSAqCisJCQkgKiBOb3RlIHRoYXQg d2UgdXNlIHRyeV90YWJsZV9vcGVuKCkgaGVyZSwgYmVjYXVzZSB3aXRob3V0IGEgbG9jaworCQkJ ICogaGVsZCBvbiB0aGUgcmVsYXRpb24sIGl0IG1heSBoYXZlIGRpc2FwcGVhcmVkIGZyb20gdW5k ZXIgdXMuCisJCQkgKi8KKwkJCXJlbCA9IHRyeV90YWJsZV9vcGVuKHJ0ZS0+cmVsaWQsIHJ0ZS0+ cmVsbG9ja21vZGUpOworCQl9CisJCWVsc2UKIAkJewogCQkJLyoKIAkJCSAqIEluIGEgbm9ybWFs IHF1ZXJ5LCB3ZSBzaG91bGQgYWxyZWFkeSBoYXZlIHRoZSBhcHByb3ByaWF0ZSBsb2NrLApAQCAt NzkyLDE1ICs4MjAsNiBAQCBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRl LCBJbmRleCBydGkpCiAJCQlBc3NlcnQocnRlLT5yZWxsb2NrbW9kZSA9PSBBY2Nlc3NTaGFyZUxv Y2sgfHwKIAkJCQkgICBDaGVja1JlbGF0aW9uTG9ja2VkQnlNZShyZWwsIHJ0ZS0+cmVsbG9ja21v ZGUsIGZhbHNlKSk7CiAJCX0KLQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogSWYgd2UgYXJlIGEg cGFyYWxsZWwgd29ya2VyLCB3ZSBuZWVkIHRvIG9idGFpbiBvdXIgb3duIGxvY2FsCi0JCQkgKiBs b2NrIG9uIHRoZSByZWxhdGlvbi4gIFRoaXMgZW5zdXJlcyBzYW5lIGJlaGF2aW9yIGluIGNhc2Ug dGhlCi0JCQkgKiBwYXJlbnQgcHJvY2VzcyBleGl0cyBiZWZvcmUgd2UgZG8uCi0JCQkgKi8KLQkJ CXJlbCA9IHRhYmxlX29wZW4ocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7Ci0JCX0KIAog CQllc3RhdGUtPmVzX3JlbGF0aW9uc1tydGkgLSAxXSA9IHJlbDsKIAl9CkBAIC04MjMsNiArODQy LDggQEAgRXhlY0luaXRSZXN1bHRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5m byAqcmVzdWx0UmVsSW5mbywKIAlSZWxhdGlvbglyZXN1bHRSZWxhdGlvbkRlc2M7CiAKIAlyZXN1 bHRSZWxhdGlvbkRlc2MgPSBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwgcnRpKTsK KwlpZiAodW5saWtlbHkocmVzdWx0UmVsYXRpb25EZXNjID09IE5VTEwpKQorCQlyZXR1cm47CiAJ SW5pdFJlc3VsdFJlbEluZm8ocmVzdWx0UmVsSW5mbywKIAkJCQkJICByZXN1bHRSZWxhdGlvbkRl c2MsCiAJCQkJCSAgcnRpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwv aW5oZXJpdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvaW5oZXJpdC5jCmluZGV4IDk0 ZGU4NTVhMjIuLjFiMzBjMGZmODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL2luaGVyaXQuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9pbmhlcml0LmMK QEAgLTQ5Miw2ICs0OTIsMTMgQEAgZXhwYW5kX3NpbmdsZV9pbmhlcml0YW5jZV9jaGlsZChQbGFu bmVySW5mbyAqcm9vdCwgUmFuZ2VUYmxFbnRyeSAqcGFyZW50cnRlLAogCX0KIAllbHNlCiAJCWNo aWxkcnRlLT5pbmggPSBmYWxzZTsKKworCS8qCisJICogRmxhZyBjaGlsZCB0YWJsZXMgYXMgaW5k aXJlY3RseSByZWZlcmVuY2VkIGluIHRoZSBxdWVyeS4gVGhpcyBoZWxwcworCSAqIHRoZSBleGVj dXRvcidzIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oKSByZWNvZ25pemUgdGhlbSBhcworCSAq IGluaGVyaXRhbmNlIGNoaWxkcmVuLgorCSAqLworCWNoaWxkcnRlLT5pbkZyb21DbCA9IGZhbHNl OwogCWNoaWxkcnRlLT5zZWN1cml0eVF1YWxzID0gTklMOwogCiAJLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5j CmluZGV4IDdhMWRmYjYzNjQuLmNmMjY5ZjhjNTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwpAQCAtMzMw NSwxMCArMzMwNSw5IEBAIHRyYW5zZm9ybUxvY2tpbmdDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRl LCBRdWVyeSAqcXJ5LCBMb2NraW5nQ2xhdXNlICpsYywKIAkJLyoKIAkJICogTG9jayBhbGwgcmVn dWxhciB0YWJsZXMgdXNlZCBpbiBxdWVyeSBhbmQgaXRzIHN1YnF1ZXJpZXMuICBXZQogCQkgKiBl eGFtaW5lIGluRnJvbUNsIHRvIGV4Y2x1ZGUgYXV0by1hZGRlZCBSVEVzLCBwYXJ0aWN1bGFybHkg TkVXL09MRAotCQkgKiBpbiBydWxlcy4gIFRoaXMgaXMgYSBiaXQgb2YgYW4gYWJ1c2Ugb2YgYSBt b3N0bHktb2Jzb2xldGUgZmxhZywgYnV0Ci0JCSAqIGl0J3MgY29udmVuaWVudC4gIFdlIGNhbid0 IHJlbHkgb24gdGhlIG5hbWVzcGFjZSBtZWNoYW5pc20gdGhhdCBoYXMKLQkJICogbGFyZ2VseSBy ZXBsYWNlZCBpbkZyb21DbCwgc2luY2UgZm9yIGV4YW1wbGUgd2UgbmVlZCB0byBsb2NrCi0JCSAq IGJhc2UtcmVsYXRpb24gUlRFcyBldmVuIGlmIHRoZXkgYXJlIG1hc2tlZCBieSB1cHBlciBqb2lu cy4KKwkJICogaW4gcnVsZXMuICBXZSBjYW4ndCByZWx5IG9uIHRoZSBuYW1lc3BhY2UgbWVjaGFu aXNtIHNpbmNlIGZvcgorCQkgKiBleGFtcGxlIHdlIG5lZWQgdG8gbG9jayBiYXNlLXJlbGF0aW9u IFJURXMgZXZlbiBpZiB0aGV5IGFyZSBtYXNrZWQKKwkJICogYnkgdXBwZXIgam9pbnMuCiAJCSAq LwogCQlpID0gMDsKIAkJZm9yZWFjaChydCwgcXJ5LT5ydGFibGUpCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmgKaW5kZXggZmVmNGM3MTRiOC4uZDhiNWQwYzUwMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApA QCAtOTk0LDExICs5OTQsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uQ21kCiAgKgogICoJ ICBpbkZyb21DbCBtYXJrcyB0aG9zZSByYW5nZSB2YXJpYWJsZXMgdGhhdCBhcmUgbGlzdGVkIGlu IHRoZSBGUk9NIGNsYXVzZS4KICAqCSAgSXQncyBmYWxzZSBmb3IgUlRFcyB0aGF0IGFyZSBhZGRl ZCB0byBhIHF1ZXJ5IGJlaGluZCB0aGUgc2NlbmVzLCBzdWNoCi0gKgkgIGFzIHRoZSBORVcgYW5k IE9MRCB2YXJpYWJsZXMgZm9yIGEgcnVsZSwgb3IgdGhlIHN1YnF1ZXJpZXMgb2YgYSBVTklPTi4K KyAqCSAgYXMgdGhlIE5FVyBhbmQgT0xEIHZhcmlhYmxlcyBmb3IgYSBydWxlLCBvciB0aGUgc3Vi cXVlcmllcyBvZiBhIFVOSU9OLAorICoJICBvciB0aGUgUlRFcyBvZiBpbmhlcml0YW5jZSBjaGls ZCB0YWJsZXMgdGhhdCBhcmUgYWRkZWQgYnkgdGhlIHBsYW5uZXIuCiAgKgkgIFRoaXMgZmxhZyBp cyBub3QgdXNlZCBkdXJpbmcgcGFyc2luZyAoZXhjZXB0IGluIHRyYW5zZm9ybUxvY2tpbmdDbGF1 c2UsCiAgKgkgIHEudi4pOyB0aGUgcGFyc2VyIG5vdyB1c2VzIGEgc2VwYXJhdGUgIm5hbWVzcGFj ZSIgZGF0YSBzdHJ1Y3R1cmUgdG8KICAqCSAgY29udHJvbCB2aXNpYmlsaXR5LiAgQnV0IGl0IGlz IG5lZWRlZCBieSBydWxldXRpbHMuYyB0byBkZXRlcm1pbmUKLSAqCSAgd2hldGhlciBSVEVzIHNo b3VsZCBiZSBzaG93biBpbiBkZWNvbXBpbGVkIHF1ZXJpZXMuCisgKgkgIHdoZXRoZXIgUlRFcyBz aG91bGQgYmUgc2hvd24gaW4gZGVjb21waWxlZCBxdWVyaWVzLiAgVGhlIGV4ZWN1dG9yIHVzZXMK KyAqCSAgdGhpcyB0byBhc2NlcnRhaW4gaWYgYW4gUlRFX1JFTEFUSU9OIGVudHJ5IGlzIGZvciBh IHRhYmxlIGV4cGxpY2l0bHkKKyAqCSAgbmFtZWQgaW4gdGhlIHF1ZXJ5IG9yIGEgY2hpbGQgdGFi bGUgYWRkZWQgYnkgdGhlIHBsYW5uZXIuICBUaGlzCisgKgkgIGRpc3RpbmN0aW9uIGlzIHZpdGFs IHdoZW4gY2hpbGQgdGFibGVzIGluIGEgcGxhbiBtdXN0IGJlIGxvY2tlZC4KICAqCiAgKgkgIHNl Y3VyaXR5UXVhbHMgaXMgYSBsaXN0IG9mIHNlY3VyaXR5IGJhcnJpZXIgcXVhbHMgKGJvb2xlYW4g ZXhwcmVzc2lvbnMpLAogICoJICB0byBiZSB0ZXN0ZWQgaW4gdGhlIGxpc3RlZCBvcmRlciBiZWZv cmUgcmV0dXJuaW5nIGEgcm93IGZyb20gdGhlCi0tIAoyLjM1LjMKCg== --00000000000041b1e2060642be90 Content-Type: application/octet-stream; name="v47-0007-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Disposition: attachment; filename="v47-0007-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ln0bz7ur2 RnJvbSAzYjJlZmU3M2UzMDY0OWY3ZDIwNTliOGE5ZDkwMWIxOWE1OTg2YWQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1NDowMiArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ3 IDcvOV0gQWRkIGZpZWxkIHRvIHN0b3JlIHBhcmVudCByZWxpZHMgdG8KIEFwcGVuZC9NZXJnZUFw cGVuZAoKVGhlcmUncyBubyB3YXkgY3VycmVudGx5IGluIHRoZSBleGVjdXRvciB0byB0ZWxsIGlm IHRoZSBjaGlsZApzdWJwbGFucyBvZiBBcHBlbmQvTWVyZ2VBcHBlbmQgYXJlIHNjYW5uaW5nIHBh cnRpdGlvbnMsIGFuZCBpZgp0aGV5IGluZGVlZCBkbywgd2hhdCB0aGUgUlQgaW5kZXhlcyBvZiB0 aGVpciBwYXJlbnQvYW5jZXN0b3IgdGFibGVzCmFyZS4gIEV4ZWN1dG9yIGRvZXNuJ3QgbmVlZCB0 byBzZWUgdGhlaXIgUlQgaW5kZXhlcyBleGNlcHQgZm9yCnJ1bi10aW1lIHBydW5pbmcsIGluIHdo aWNoIGNhc2UgdGhleSBjYW4gY2FuIGJlIGZvdW5kIGluIHRoZQpQYXJ0aXRpb25QcnVuZUluZm8u ICBBIGZ1dHVyZSBjb21taXQgd2lsbCBjcmVhdGUgYSBuZWVkIGZvciB0aGVtIHRvCmJlIGF2YWls YWJsZSBhdCBhbGwgdGltZXMgZm9yIHRoZSBwdXJwb3NlIG9mIGxvY2tpbmcgdGhvc2UKcGFyZW50 L2FuY2VzdG9yIHRhYmxlcyB3aGVuIGV4ZWN1dGluZyBhIGNhY2hlZCBwbGFuLCBzbyBhZGQgYQpm aWVsZCBjYWxsZWQgYWxscGFydHJlbGlkcyB0byBBcHBlbmQvTWVyZ2VBcHBlbmQgdG8gc3RvcmUg dGhvc2UKUlQgaW5kZXhlcy4gIFRoaXMgYWxzbyBhZGRzIGEgZnVuY3Rpb24gY2FsbGVkCkV4ZWNM b2NrQXBwZW5kTm9uTGVhZlRhYmxlcygpIHRvIGxvY2sgdGhvc2UgdGFibGVzLgoKVGhlIGNvZGUg dG8gbG9vayB1cCBwYXJ0aXRpb25lZCBwYXJlbnQgcmVsaWRzIGZvciBhIGdpdmVuIGxpc3Qgb2YK cGFydGl0aW9uIHNjYW4gc3VicGF0aHMgb2YgYW4gQXBwZW5kL01lcmdlQXBwZW5kIGlzIGFscmVh ZHkgcHJlc2VudAppbiBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oKSBidXQgaXQncyBsb2NhbCB0 byBwYXJ0cHJ1bmUuYy4gIFRoaXMKY29tbWl0IHJlZmFjdG9ycyB0aGF0IGNvZGUgaW50byBpdHMg b3duIGZ1bmN0aW9uIGNhbGxlZAphZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcygpIGRlZmlu ZWQgaW4gYXBwZW5kaW5mby5jIGFuZApnZW5lcmFsaXplcyBpdCB0byBjb25zaWRlciBjaGlsZCBq b2luIGFuZCBhZ2dyZWdhdGUgcGF0aHMuICBUbwpmYWNpbGl0YXRlIGxvb2tpbmcgdXAgb2YgcGFy ZW50IHJlbHMgb2YgY2hpbGQgZ3JvdXBpbmcgcmVscyBpbgphZGRfYXBwZW5kX3N1YnBhdGhfcGFy dHJlbGlkcygpLCBwYXJlbnQgbGlua3MgYXJlIG5vdyBhbHNvIHNldCBpbgp0aGUgUmVsT3B0SW5m b3Mgb2YgY2hpbGQgZ3JvdXBpbmcgcmVscyB0b28sIGxpa2UgdGhleSBhcmUgaW4KdGhvc2Ugb2Yg Y2hpbGQgYmFzZSBhbmQgam9pbiByZWxzLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMv bS9DQStIaXdxRkdrTVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdAbWFp bC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAg fCAgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICB8ICAzMyAr KysrKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyAgICAgICB8ICAxNCArKysK IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jICB8ICAxNCArKysKIHNyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyB8ICA0MSArKysrKystLQogc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3NldHJlZnMuYyAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9hcHBlbmRpbmZvLmMgfCAxMzQgKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFj a2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgICAgfCAxMjQgKysrLS0tLS0tLS0tLS0tLS0t LS0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgICAgIHwgICAxICsKIHNy Yy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oICAgICAgICAgICB8ICAxNCArKysKIHNyYy9pbmNs dWRlL29wdGltaXplci9hcHBlbmRpbmZvLmggICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9wYXJ0 aXRpb25pbmcvcGFydHBydW5lLmggICAgfCAgIDMgKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDI2NiBp bnNlcnRpb25zKCspLCAxMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5k ZXggZmZjNjJlMzc5YS4uMjgwNGVjNzBmMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0x NDc1LDcgKzE0NzUsNyBAQCBFeGVjR2V0QW5jZXN0b3JSZXN1bHRSZWxzKEVTdGF0ZSAqZXN0YXRl LCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvKQogCiAJCQkvKgogCQkJICogQWxsIGFuY2Vz dG9ycyB1cCB0byB0aGUgcm9vdCB0YXJnZXQgcmVsYXRpb24gbXVzdCBoYXZlIGJlZW4KLQkJCSAq IGxvY2tlZCBieSB0aGUgcGxhbm5lciBvciBBY3F1aXJlRXhlY3V0b3JMb2NrcygpLgorCQkJICog bG9ja2VkIGJ5IHRoZSBwbGFubmVyIG9yIEV4ZWNMb2NrQXBwZW5kTm9uTGVhZlBhcnRpdGlvbnMo KS4KIAkJCSAqLwogCQkJYW5jUmVsID0gdGFibGVfb3BlbihhbmNPaWQsIE5vTG9jayk7CiAJCQly SW5mbyA9IG1ha2VOb2RlKFJlc3VsdFJlbEluZm8pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1V0aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwpp bmRleCAxMTc3NzM3MDZhLi4yYjdhMDhjOWJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwpA QCAtODI3LDYgKzgyNywzOSBAQCBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKEVTdGF0ZSAqZXN0 YXRlLCBJbmRleCBydGkpCiAJcmV0dXJuIHJlbDsKIH0KIAorLyoKKyAqIEV4ZWNMb2NrQXBwZW5k Tm9uTGVhZlBhcnRpdGlvbnMKKyAqCQlMb2NrIG5vbi1sZWFmIHBhcnRpdGlvbnMgd2hvc2UgY2hp bGQgcGFydGl0aW9ucyBhcmUgc2Nhbm5lZCBieSBhIGdpdmVuCisgKgkJQXBwZW5kL01lcmdlQXBw ZW5kIG5vZGUKKyAqLwordm9pZAorRXhlY0xvY2tBcHBlbmROb25MZWFmUGFydGl0aW9ucyhFU3Rh dGUgKmVzdGF0ZSwgTGlzdCAqYWxscGFydHJlbGlkcykKK3sKKwlMaXN0Q2VsbCAqbDsKKworCS8q IFRoaXMgc2hvdWxkIGdldCBjYWxsZWQgb25seSB3aGVuIGV4ZWN1dGluZyBjYWNoZWQgcGxhbnMu ICovCisJQXNzZXJ0KGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbiAhPSBOVUxMKTsKKwlmb3JlYWNoKGws IGFsbHBhcnRyZWxpZHMpCisJeworCQlCaXRtYXBzZXQgKnBhcnRyZWxpZHMgPSBsZmlyc3Rfbm9k ZShCaXRtYXBzZXQsIGwpOworCQlpbnQJCWkgPSAtMTsKKworCQl3aGlsZSAoKGkgPSBibXNfbmV4 dF9tZW1iZXIocGFydHJlbGlkcywgaSkpID4gMCkKKwkJeworCQkJUmFuZ2VUYmxFbnRyeSAqcnRl ID0gZXhlY19ydF9mZXRjaChpLCBlc3RhdGUpOworCisJCQkvKgorCQkJICogRG9uJ3QgbG9jayB0 aGUgcm9vdCBwYXJlbnQgbWVudGlvbmVkIGluIHRoZSBxdWVyeSwgYmVjYXVzZSBpdAorCQkJICog c2hvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIGxvY2tlZCBiZWZvcmUgZW50ZXJpbmcgdGhlIGV4ZWN1 dG9yLgorCQkJICovCisJCQlpZiAoIXJ0ZS0+aW5Gcm9tQ2wpCisJCQkJTG9ja1JlbGF0aW9uT2lk KHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQkJZWxzZQorCQkJCUFzc2VydChDaGVj a1JlbExvY2tlZEJ5TWUocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSwgdHJ1ZSkpOworCQl9 CisJfQorfQorCiAvKgogICogRXhlY0luaXRSZXN1bHRSZWxhdGlvbgogICoJCU9wZW4gcmVsYXRp b24gZ2l2ZW4gYnkgdGhlIHBhc3NlZC1pbiBSVCBpbmRleCBhbmQgZmlsbCBpdHMKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVBcHBlbmQuYwppbmRleCA1M2NhOWRjODVkLi40NzU5NTExZjg3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC0xMzMsNiArMTMzLDIwIEBAIEV4ZWNJbml0QXBwZW5kKEFw cGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJYXBwZW5kc3RhdGUtPmFz X3N5bmNkb25lID0gZmFsc2U7CiAJYXBwZW5kc3RhdGUtPmFzX2JlZ3VuID0gZmFsc2U7CiAKKwkv KgorCSAqIExvY2sgbm9uLWxlYWYgcGFydGl0aW9ucyB3aG9zZSBsZWFmIGNoaWxkcmVuIGFyZSBw cmVzZW50IGluCisJICogbm9kZS0+YXBwZW5kcGxhbnMuICBPbmx5IG5lZWQgdG8gZG8gc28gaWYg ZXhlY3V0aW5nIGEgY2FjaGVkCisJICogcGxhbiwgYmVjYXVzZSBjaGlsZCB0YWJsZXMgcHJlc2Vu dCBpbiBjYWNoZWQgcGxhbnMgYXJlIG5vdAorCSAqIGxvY2tlZCBiZWZvcmUgZXhlY3V0aW9uLgor CSAqCisJICogWFhYIC0gc29tZSBvZiB0aGUgbm9uLWxlYWYgcGFydGl0aW9ucyBtYXkgYWxzbyBi ZSBtZW50aW9uZWQgaW4KKwkgKiBwYXJ0X3BydW5lX2luZm8sIHdoaWNoIGlmIHRoZXkgYXJlIHdv dWxkIGdldCBsb2NrZWQgYWdhaW4gaW4KKwkgKiBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoKSBi ZWNhdXNlIGl0IGNhbGxzCisJICogRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbigpIHdoaWNoIGxv Y2tzIGNoaWxkIHRhYmxlcy4KKwkgKi8KKwlpZiAoZXN0YXRlLT5lc19jYWNoZWRwbGFuKQorCQlF eGVjTG9ja0FwcGVuZE5vbkxlYWZQYXJ0aXRpb25zKGVzdGF0ZSwgbm9kZS0+YWxscGFydHJlbGlk cyk7CisKIAkvKiBJZiBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBlbmFibGVkLCB0aGVu IHNldCB0aGF0IHVwIG5vdyAqLwogCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZm8gIT0gTlVMTCkK IAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCmluZGV4IDUyYzNlZGYyNzgu LjE1ODIxMGFhYzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFw cGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCkBAIC04 MSw2ICs4MSwyMCBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAltZXJnZXN0YXRlLT5wcy5zdGF0ZSA9IGVzdGF0ZTsK IAltZXJnZXN0YXRlLT5wcy5FeGVjUHJvY05vZGUgPSBFeGVjTWVyZ2VBcHBlbmQ7CiAKKwkvKgor CSAqIExvY2sgbm9uLWxlYWYgcGFydGl0aW9ucyB3aG9zZSBsZWFmIGNoaWxkcmVuIGFyZSBwcmVz ZW50IGluCisJICogbm9kZS0+bWVyZ2VwbGFucy4gIE9ubHkgbmVlZCB0byBkbyBzbyBpZiBleGVj dXRpbmcgYSBjYWNoZWQKKwkgKiBwbGFuLCBiZWNhdXNlIGNoaWxkIHRhYmxlcyBwcmVzZW50IGlu IGNhY2hlZCBwbGFucyBhcmUgbm90CisJICogbG9ja2VkIGJlZm9yZSBleGVjdXRpb24uCisJICoK KwkgKiBYWFggLSBzb21lIG9mIHRoZSBub24tbGVhZiBwYXJ0aXRpb25zIG1heSBhbHNvIGJlIG1l bnRpb25lZCBpbgorCSAqIHBhcnRfcHJ1bmVfaW5mbywgd2hpY2ggaWYgdGhleSBhcmUgd291bGQg Z2V0IGxvY2tlZCBhZ2FpbiBpbgorCSAqIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZygpIGJlY2F1 c2UgaXQgY2FsbHMKKwkgKiBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCkgd2hpY2ggbG9ja3Mg Y2hpbGQgdGFibGVzLgorCSAqLworCWlmIChlc3RhdGUtPmVzX2NhY2hlZHBsYW4pCisJCUV4ZWNM b2NrQXBwZW5kTm9uTGVhZlBhcnRpdGlvbnMoZXN0YXRlLCBub2RlLT5hbGxwYXJ0cmVsaWRzKTsK KwogCS8qIElmIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0 IHRoYXQgdXAgbm93ICovCiAJaWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5mbyAhPSBOVUxMKQogCXsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwppbmRleCAzNGNhNmQ0YWMyLi5k MWY0ZjYwNmJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVw bGFuLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0y NSw2ICsyNSw3IEBACiAjaW5jbHVkZSAibm9kZXMvZXh0ZW5zaWJsZS5oIgogI2luY2x1ZGUgIm5v ZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgorI2luY2x1ZGUg Im9wdGltaXplci9hcHBlbmRpbmZvLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2NsYXVzZXMuaCIK ICNpbmNsdWRlICJvcHRpbWl6ZXIvY29zdC5oIgogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6 ZXIuaCIKQEAgLTEyMjksNiArMTIzMCw3IEBAIGNyZWF0ZV9hcHBlbmRfcGxhbihQbGFubmVySW5m byAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRoLCBpbnQgZmxhZ3MpCiAJT2lkCQkgICAqbm9k ZUNvbGxhdGlvbnMgPSBOVUxMOwogCWJvb2wJICAgKm5vZGVOdWxsc0ZpcnN0ID0gTlVMTDsKIAli b29sCQljb25zaWRlcl9hc3luYyA9IGZhbHNlOworCUxpc3QJICAgKmFsbHBhcnRyZWxpZHMgPSBO SUw7CiAKIAkvKgogCSAqIFRoZSBzdWJwYXRocyBsaXN0IGNvdWxkIGJlIGVtcHR5LCBpZiBldmVy eSBjaGlsZCB3YXMgcHJvdmVuIGVtcHR5IGJ5CkBAIC0xMzcwLDE1ICsxMzcyLDIzIEBAIGNyZWF0 ZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRoLCBp bnQgZmxhZ3MpCiAJCQkrK25hc3luY3BsYW5zOwogCQl9CiAKKwkJLyoKKwkJICogRmluZCBwYXJ0 aXRpb25lZCBwYXJlbnQgcmVsKHMpIG9mIHRoZSBzdWJwYXRoJ3MgcmVsKHMpLgorCQkgKi8KKwkJ YWxscGFydHJlbGlkcyA9IGFkZF9hcHBlbmRfc3VicGF0aF9wYXJ0cmVsaWRzKHJvb3QsIHN1YnBh dGgsIHJlbCwKKwkJCQkJCQkJCQkJCQkgIGFsbHBhcnRyZWxpZHMpOworCiAJCXN1YnBsYW5zID0g bGFwcGVuZChzdWJwbGFucywgc3VicGxhbik7CiAJfQogCisJcGxhbi0+YWxscGFydHJlbGlkcyA9 IGFsbHBhcnRyZWxpZHM7CisKIAkvKgotCSAqIElmIGFueSBxdWFscyBleGlzdCwgdGhleSBtYXkg YmUgdXNlZnVsIHRvIHBlcmZvcm0gZnVydGhlciBwYXJ0aXRpb24KLQkgKiBwcnVuaW5nIGR1cmlu ZyBleGVjdXRpb24uICBHYXRoZXIgaW5mb3JtYXRpb24gbmVlZGVkIGJ5IHRoZSBleGVjdXRvciB0 bwotCSAqIGRvIHBhcnRpdGlvbiBwcnVuaW5nLgorCSAqIElmIHNjYW5uaW5nIHBhcnRpdGlvbnMs IGNoZWNrIGlmIHRoZXJlIGFyZSBxdWFscyB0aGF0IG1heSBiZSB1c2VmdWwgdG8KKwkgKiBwZXJm b3JtIGZ1cnRoZXIgcGFydGl0aW9uIHBydW5pbmcgZHVyaW5nIGV4ZWN1dGlvbi4gIEdhdGhlciBp bmZvcm1hdGlvbgorCSAqIG5lZWRlZCBieSB0aGUgZXhlY3V0b3IgdG8gZG8gcGFydGl0aW9uIHBy dW5pbmcuCiAJICovCi0JaWYgKGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZykKKwlpZiAoZW5hYmxl X3BhcnRpdGlvbl9wcnVuaW5nICYmIGFsbHBhcnRyZWxpZHMgIT0gTklMKQogCXsKIAkJTGlzdAkg ICAqcHJ1bmVxdWFsOwogCkBAIC0xMzk5LDcgKzE0MDksOCBAQCBjcmVhdGVfYXBwZW5kX3BsYW4o UGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCQkJ cGFydHBydW5laW5mbyA9CiAJCQkJbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHJvb3QsIHJlbCwK IAkJCQkJCQkJCQkgYmVzdF9wYXRoLT5zdWJwYXRocywKLQkJCQkJCQkJCQkgcHJ1bmVxdWFsKTsK KwkJCQkJCQkJCQkgcHJ1bmVxdWFsLAorCQkJCQkJCQkJCSBhbGxwYXJ0cmVsaWRzKTsKIAl9CiAK IAlwbGFuLT5hcHBlbmRwbGFucyA9IHN1YnBsYW5zOwpAQCAtMTQ0NSw2ICsxNDU2LDcgQEAgY3Jl YXRlX21lcmdlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGgg KmJlc3RfcGF0aCwKIAlMaXN0Q2VsbCAgICpzdWJwYXRoczsKIAlSZWxPcHRJbmZvICpyZWwgPSBi ZXN0X3BhdGgtPnBhdGgucGFyZW50OwogCVBhcnRpdGlvblBydW5lSW5mbyAqcGFydHBydW5laW5m byA9IE5VTEw7CisJTGlzdAkgICAqYWxscGFydHJlbGlkcyA9IE5JTDsKIAogCS8qCiAJICogV2Ug ZG9uJ3QgaGF2ZSB0aGUgYWN0dWFsIGNyZWF0aW9uIG9mIHRoZSBNZXJnZUFwcGVuZCBub2RlIHNw bGl0IG91dApAQCAtMTUzNCwxNSArMTU0NiwyMyBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BsYW4o UGxhbm5lckluZm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCQkJc3VicGxh biA9IChQbGFuICopIHNvcnQ7CiAJCX0KIAorCQkvKgorCQkgKiBGaW5kIHBhcnRpdGlvbmVkIHBh cmVudCByZWwocykgb2YgdGhlIHN1YnBhdGgncyByZWwocykuCisJCSAqLworCQlhbGxwYXJ0cmVs aWRzID0gYWRkX2FwcGVuZF9zdWJwYXRoX3BhcnRyZWxpZHMocm9vdCwgc3VicGF0aCwgcmVsLAor CQkJCQkJCQkJCQkJCSAgYWxscGFydHJlbGlkcyk7CisKIAkJc3VicGxhbnMgPSBsYXBwZW5kKHN1 YnBsYW5zLCBzdWJwbGFuKTsKIAl9CiAKKwlub2RlLT5hbGxwYXJ0cmVsaWRzID0gYWxscGFydHJl bGlkczsKKwogCS8qCi0JICogSWYgYW55IHF1YWxzIGV4aXN0LCB0aGV5IG1heSBiZSB1c2VmdWwg dG8gcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbgotCSAqIHBydW5pbmcgZHVyaW5nIGV4ZWN1dGlv bi4gIEdhdGhlciBpbmZvcm1hdGlvbiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvCi0JICogZG8g cGFydGl0aW9uIHBydW5pbmcuCisJICogSWYgc2Nhbm5pbmcgcGFydGl0aW9ucywgY2hlY2sgaWYg dGhlcmUgYXJlIHF1YWxzIHRoYXQgbWF5IGJlIHVzZWZ1bCB0bworCSAqIHBlcmZvcm0gZnVydGhl ciBwYXJ0aXRpb24gcHJ1bmluZyBkdXJpbmcgZXhlY3V0aW9uLiAgR2F0aGVyIGluZm9ybWF0aW9u CisJICogbmVlZGVkIGJ5IHRoZSBleGVjdXRvciB0byBkbyBwYXJ0aXRpb24gcHJ1bmluZy4KIAkg Ki8KLQlpZiAoZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5nKQorCWlmIChlbmFibGVfcGFydGl0aW9u X3BydW5pbmcgJiYgYWxscGFydHJlbGlkcyAhPSBOSUwpCiAJewogCQlMaXN0CSAgICpwcnVuZXF1 YWw7CiAKQEAgLTE1NTQsNyArMTU3NCw4IEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFu bmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3BhdGgsCiAJCWlmIChwcnVuZXF1 YWwgIT0gTklMKQogCQkJcGFydHBydW5laW5mbyA9IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhy b290LCByZWwsCiAJCQkJCQkJCQkJCQkJIGJlc3RfcGF0aC0+c3VicGF0aHMsCi0JCQkJCQkJCQkJ CQkJIHBydW5lcXVhbCk7CisJCQkJCQkJCQkJCQkJIHBydW5lcXVhbCwKKwkJCQkJCQkJCQkJCQkg YWxscGFydHJlbGlkcyk7CiAJfQogCiAJbm9kZS0+bWVyZ2VwbGFucyA9IHN1YnBsYW5zOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IDQ0ZWZiMWY0ZWIuLmY5N2JjMDkxMTMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTc4NTUsOCArNzg1NSwxMSBA QCBjcmVhdGVfcGFydGl0aW9ud2lzZV9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwK IAkJCQkJCQkJCSAgIGFnZ19jb3N0cywgZ2QsICZjaGlsZF9leHRyYSwKIAkJCQkJCQkJCSAgICZj aGlsZF9wYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwogCisJCS8qIE1hcmsgYXMgY2hpbGQgb2YgZ3Jv dXBlZF9yZWwuICovCisJCWNoaWxkX2dyb3VwZWRfcmVsLT5wYXJlbnQgPSBncm91cGVkX3JlbDsK IAkJaWYgKGNoaWxkX3BhcnRpYWxseV9ncm91cGVkX3JlbCkKIAkJeworCQkJY2hpbGRfcGFydGlh bGx5X2dyb3VwZWRfcmVsLT5wYXJlbnQgPSBncm91cGVkX3JlbDsKIAkJCXBhcnRpYWxseV9ncm91 cGVkX2xpdmVfY2hpbGRyZW4gPQogCQkJCWxhcHBlbmQocGFydGlhbGx5X2dyb3VwZWRfbGl2ZV9j aGlsZHJlbiwKIAkJCQkJCWNoaWxkX3BhcnRpYWxseV9ncm91cGVkX3JlbCk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggNTcwMGJmYjVjZC4uYzIzNWQzNDg4ZiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtMTc2Niw2ICsxNzY2LDggQEAgc2V0X2Fw cGVuZF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCXNldF9kdW1teV90bGlzdF9yZWZl cmVuY2VzKChQbGFuICopIGFwbGFuLCBydG9mZnNldCk7CiAKIAlhcGxhbi0+YXBwcmVsaWRzID0g b2Zmc2V0X3JlbGlkX3NldChhcGxhbi0+YXBwcmVsaWRzLCBydG9mZnNldCk7CisJZm9yZWFjaChs LCBhcGxhbi0+YWxscGFydHJlbGlkcykKKwkJbGZpcnN0KGwpID0gb2Zmc2V0X3JlbGlkX3NldCgo UmVsaWRzKSBsZmlyc3QobCksIHJ0b2Zmc2V0KTsKIAogCWlmIChhcGxhbi0+cGFydF9wcnVuZV9p bmZvKQogCXsKQEAgLTE4NDIsNiArMTg0NCw4IEBAIHNldF9tZXJnZWFwcGVuZF9yZWZlcmVuY2Vz KFBsYW5uZXJJbmZvICpyb290LAogCXNldF9kdW1teV90bGlzdF9yZWZlcmVuY2VzKChQbGFuICop IG1wbGFuLCBydG9mZnNldCk7CiAKIAltcGxhbi0+YXBwcmVsaWRzID0gb2Zmc2V0X3JlbGlkX3Nl dChtcGxhbi0+YXBwcmVsaWRzLCBydG9mZnNldCk7CisJZm9yZWFjaChsLCBtcGxhbi0+YWxscGFy dHJlbGlkcykKKwkJbGZpcnN0KGwpID0gb2Zmc2V0X3JlbGlkX3NldCgoUmVsaWRzKSBsZmlyc3Qo bCksIHJ0b2Zmc2V0KTsKIAogCWlmIChtcGxhbi0+cGFydF9wcnVuZV9pbmZvKQogCXsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYwppbmRleCBmNDU2YjNiMGE0Li41YmQ4ZTgy YjliIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jCkBAIC00MSw2ICs0 MSw3IEBAIHN0YXRpYyB2b2lkIG1ha2VfaW5oX3RyYW5zbGF0aW9uX2xpc3QoUmVsYXRpb24gb2xk cmVsYXRpb24sCiAJCQkJCQkJCQkgIEFwcGVuZFJlbEluZm8gKmFwcGluZm8pOwogc3RhdGljIE5v ZGUgKmFkanVzdF9hcHBlbmRyZWxfYXR0cnNfbXV0YXRvcihOb2RlICpub2RlLAogCQkJCQkJCQkJ CQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX2NvbnRleHQgKmNvbnRleHQpOworc3RhdGljIExpc3Qg KmFkZF9wYXJ0X3JlbGlkcyhMaXN0ICphbGxwYXJ0cmVsaWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxp ZHMpOwogCiAKIC8qCkBAIC0xMDM1LDMgKzEwMzYsMTM2IEBAIGRpc3RyaWJ1dGVfcm93X2lkZW50 aXR5X3ZhcnMoUGxhbm5lckluZm8gKnJvb3QpCiAJCX0KIAl9CiB9CisKKy8qCisgKiBhZGRfYXBw ZW5kX3N1YnBhdGhfcGFydHJlbGlkcworICoJCUxvb2sgdXAgYSBjaGlsZCBzdWJwYXRoJ3MgcmVs J3MgcGFydGl0aW9uZWQgcGFyZW50IHJlbGlkcyB1cCB0bworICoJCXBhcmVudHJlbCBhbmQgYWRk IHRoZSBiaXRtYXBzZXQgY29udGFpbmluZyB0aG9zZSBpbnRvCisgKgkJJ2FsbHBhcnRyZWxpZHMn CisgKi8KK0xpc3QgKgorYWRkX2FwcGVuZF9zdWJwYXRoX3BhcnRyZWxpZHMoUGxhbm5lckluZm8g KnJvb3QsIFBhdGggKnN1YnBhdGgsCisJCQkJCQkJICBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCisJ CQkJCQkJICBMaXN0ICphbGxwYXJ0cmVsaWRzKQoreworCVJlbE9wdEluZm8gKnByZWwgPSBzdWJw YXRoLT5wYXJlbnQ7CisJUmVsaWRzCQlwYXJ0cmVsaWRzID0gTlVMTDsKKworCS8qIE5vdGhpbmcg dG8gZG8gaWYgdGhlcmUncyBubyBwYXJlbnQgdG8gYmVnaW4gd2l0aC4gKi8KKwlpZiAoIUlTX09U SEVSX1JFTChwcmVsKSkKKwkJcmV0dXJuIGFsbHBhcnRyZWxpZHM7CisKKwkvKgorCSAqIFRyYXZl cnNlIHVwIHRvIHRoZSBwYXRocmVsJ3MgdG9wbW9zdCBwYXJ0aXRpb25lZCBwYXJlbnQsIGNvbGxl Y3RpbmcKKwkgKiBwYXJlbnQgcmVsaWRzIGFzIHdlIGdvOyBidXQgc3RvcCBpZiB3ZSByZWFjaCBw YXJlbnRyZWwuICAoTm9ybWFsbHksIGEKKwkgKiBwYXRocmVsJ3MgdG9wbW9zdCBwYXJ0aXRpb25l ZCBwYXJlbnQgaXMgZWl0aGVyIHBhcmVudHJlbCBvciBhIFVOSU9OIEFMTAorCSAqIGFwcGVuZHJl bCBjaGlsZCBvZiBwYXJlbnRyZWwuICBCdXQgd2hlbiBoYW5kbGluZyBwYXJ0aXRpb253aXNlIGpv aW5zIG9mCisJICogbXVsdGktbGV2ZWwgcGFydGl0aW9uaW5nIHRyZWVzLCB3ZSBjYW4gc2VlIGFu IGFwcGVuZCBwYXRoIHdob3NlCisJICogcGFyZW50cmVsIGlzIGFuIGludGVybWVkaWF0ZSBwYXJ0 aXRpb25lZCB0YWJsZS4pCisJICovCisJZG8KKwl7CisJCVJlbGlkcwlwYXJlbnRfcmVsaWRzID0g TlVMTDsKKworCQkvKgorCQkgKiBGb3Igc2ltcGxlIGNoaWxkIHJlbHMsIHdlIGNhbiBzaW1wbHkg c2V0IHRoZSBwYXJlbnRfcmVsaWRzIHRvCisJCSAqIHByZWwtPnBhcmVudC0+cmVsaWRzLiAgQnV0 IGZvciBwYXJ0aXRpb253aXNlIGpvaW4gYW5kIGFnZ3JlZ2F0ZQorCQkgKiBjaGlsZCByZWxzLCB3 aGlsZSB3ZSBjYW4gdXNlIHByZWwtPnBhcmVudCB0byBtb3ZlIHVwIHRoZSB0cmVlLAorCQkgKiBw YXJlbnRfcmVsaWRzIG11c3QgYmUgZm91bmQgdGhlIGhhcmQgd2F5IHRocm91Z2ggQXBwZW5kSW5m b0luZm9zLAorCQkgKiBiZWNhdXNlIDEpIGEgam9pbnJlbCdzIHJlbGlkcyBtYXkgcG9pbnQgdG8g UlRFX0pPSU4gZW50cmllcywKKwkJICogMikgdG9wbW9zdCBwYXJlbnQgZ3JvdXBpbmcgcmVsJ3Mg cmVsaWRzIGZpZWxkIGlzIE5VTEwuCisJCSAqLworCQlpZiAoSVNfU0lNUExFX1JFTChwcmVsKSkK KwkJeworCQkJcHJlbCA9IHByZWwtPnBhcmVudDsKKwkJCS8qIFN0b3Agb25jZSB3ZSByZWFjaCB0 aGUgcm9vdCBwYXJ0aXRpb25lZCByZWwuICovCisJCQlpZiAoIUlTX1BBUlRJVElPTkVEX1JFTChw cmVsKSkKKwkJCQlicmVhazsKKwkJCXBhcmVudF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcnMocGFy ZW50X3JlbGlkcywgcHJlbC0+cmVsaWRzKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCUFwcGVuZFJl bEluZm8gKiphcHBpbmZvczsKKwkJCWludAkJbmFwcGluZm9zLAorCQkJCQlpOworCisJCQlhcHBp bmZvcyA9IGZpbmRfYXBwaW5mb3NfYnlfcmVsaWRzKHJvb3QsIHByZWwtPnJlbGlkcywKKwkJCQkJ CQkJCQkJICAgJm5hcHBpbmZvcyk7CisJCQlmb3IgKGkgPSAwOyBpIDwgbmFwcGluZm9zOyBpKysp CisJCQl7CisJCQkJQXBwZW5kUmVsSW5mbyAqYXBwaW5mbyA9IGFwcGluZm9zW2ldOworCisJCQkJ cGFyZW50X3JlbGlkcyA9IGJtc19hZGRfbWVtYmVyKHBhcmVudF9yZWxpZHMsCisJCQkJCQkJCQkJ CSAgIGFwcGluZm8tPnBhcmVudF9yZWxpZCk7CisJCQl9CisJCQlwZnJlZShhcHBpbmZvcyk7CisJ CQlwcmVsID0gcHJlbC0+cGFyZW50OworCQl9CisJCS8qIGFjY2VwdCB0aGlzIGxldmVsIGFzIGFu IGludGVyZXN0aW5nIHBhcmVudCAqLworCQlwYXJ0cmVsaWRzID0gYm1zX2FkZF9tZW1iZXJzKHBh cnRyZWxpZHMsIHBhcmVudF9yZWxpZHMpOworCQlpZiAocHJlbCA9PSBwYXJlbnRyZWwpCisJCQli cmVhazsJCS8qIGRvbid0IHRyYXZlcnNlIGFib3ZlIHBhcmVudHJlbCAqLworCX0gd2hpbGUgKElT X09USEVSX1JFTChwcmVsKSk7CisKKwlpZiAocGFydHJlbGlkcyA9PSBOVUxMKQorCQlyZXR1cm4g YWxscGFydHJlbGlkczsKKworCXJldHVybiBhZGRfcGFydF9yZWxpZHMoYWxscGFydHJlbGlkcywg cGFydHJlbGlkcyk7Cit9CisKKy8qCisgKiBhZGRfcGFydF9yZWxpZHMKKyAqCQlBZGQgbmV3IGlu Zm8gdG8gYSBsaXN0IG9mIEJpdG1hcHNldHMgb2YgcGFydGl0aW9uZWQgcmVsaWRzLgorICoKKyAq IFdpdGhpbiAnYWxscGFydHJlbGlkcycsIHRoZXJlIGlzIG9uZSBCaXRtYXBzZXQgZm9yIGVhY2gg dG9wbW9zdCBwYXJlbnQKKyAqIHBhcnRpdGlvbmVkIHJlbC4gIEVhY2ggQml0bWFwc2V0IGNvbnRh aW5zIHRoZSBSVCBpbmRleGVzIG9mIHRoZSB0b3Btb3N0CisgKiBwYXJlbnQgYXMgd2VsbCBhcyBp dHMgcmVsZXZhbnQgbm9uLWxlYWYgY2hpbGQgcGFydGl0aW9ucy4gIFNpbmNlIChieQorICogY29u c3RydWN0aW9uIG9mIHRoZSByYW5nZXRhYmxlIGxpc3QpIHBhcmVudCBwYXJ0aXRpb25zIG11c3Qg aGF2ZSBsb3dlcgorICogUlQgaW5kZXhlcyB0aGFuIHRoZWlyIGNoaWxkcmVuLCB3ZSBjYW4gZGlz dGluZ3Vpc2ggdGhlIHRvcG1vc3QgcGFyZW50CisgKiBhcyBiZWluZyB0aGUgbG93ZXN0IHNldCBi aXQgaW4gdGhlIEJpdG1hcHNldC4KKyAqCisgKiAncGFydHJlbGlkcycgY29udGFpbnMgdGhlIFJU IGluZGV4ZXMgb2YgYSBwYXJlbnQgcGFydGl0aW9uZWQgcmVsLCBhbmQKKyAqIHBvc3NpYmx5IHNv bWUgbm9uLWxlYWYgY2hpbGRyZW4sIHRoYXQgYXJlIG5ld2x5IGlkZW50aWZpZWQgYXMgcGFyZW50 cyBvZgorICogc29tZSBzdWJwYXRoIHJlbCBwYXNzZWQgdG8gbWFrZV9wYXJ0aXRpb25fcHJ1bmVp bmZvKCkuICBUaGVzZSBhcmUgYWRkZWQKKyAqIHRvIGFuIGFwcHJvcHJpYXRlIG1lbWJlciBvZiAn YWxscGFydHJlbGlkcycuCisgKgorICogTm90ZSB0aGF0IHRoZSBsaXN0IGNvbnRhaW5zIG9ubHkg UlQgaW5kZXhlcyBvZiBwYXJ0aXRpb25lZCB0YWJsZXMgdGhhdAorICogYXJlIHBhcmVudHMgb2Yg c29tZSBzY2FuLWxldmVsIHJlbGF0aW9uIGFwcGVhcmluZyBpbiB0aGUgJ3N1YnBhdGhzJyB0aGF0 CisgKiBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oKSBpcyBkZWFsaW5nIHdpdGguICBBbHNvLCAi dG9wbW9zdCIgcGFyZW50cyBhcmUKKyAqIG5vdCBhbGxvd2VkIHRvIGJlIGhpZ2hlciB0aGFuIHRo ZSAncGFyZW50cmVsJyBhc3NvY2lhdGVkIHdpdGggdGhlIGFwcGVuZAorICogcGF0aC4gIEluIHRo aXMgd2F5LCB3ZSBhdm9pZCBleHBlbmRpbmcgY3ljbGVzIG9uIHBhcnRpdGlvbmVkIHJlbHMgdGhh dAorICogY2FuJ3QgY29udHJpYnV0ZSB1c2VmdWwgcHJ1bmluZyBpbmZvcm1hdGlvbiBmb3IgdGhl IHByb2JsZW0gYXQgaGFuZC4KKyAqIChJdCBpcyBwb3NzaWJsZSBmb3IgJ3BhcmVudHJlbCcgdG8g YmUgYSBjaGlsZCBwYXJ0aXRpb25lZCB0YWJsZSwgYW5kIGl0CisgKiBpcyBhbHNvIHBvc3NpYmxl IGZvciBzY2FuLWxldmVsIHJlbGF0aW9ucyB0byBiZSBjaGlsZCBwYXJ0aXRpb25lZCB0YWJsZXMK KyAqIHJhdGhlciB0aGFuIGxlYWYgcGFydGl0aW9ucy4gIEhlbmNlIHdlIG11c3QgY29uc3RydWN0 IHRoaXMgcmVsYXRpb24gc2V0CisgKiB3aXRoIHJlZmVyZW5jZSB0byB0aGUgcGFydGljdWxhciBh cHBlbmQgcGF0aCB3ZSdyZSBkZWFsaW5nIHdpdGgsIHJhdGhlcgorICogdGhhbiBsb29raW5nIGF0 IHRoZSBmdWxsIHBhcnRpdGlvbmluZyBzdHJ1Y3R1cmUgcmVwcmVzZW50ZWQgaW4gdGhlCisgKiBS ZWxPcHRJbmZvcy4pCisgKi8KK3N0YXRpYyBMaXN0ICoKK2FkZF9wYXJ0X3JlbGlkcyhMaXN0ICph bGxwYXJ0cmVsaWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxpZHMpCit7CisJSW5kZXgJCXRhcmdldHBh cnQ7CisJTGlzdENlbGwgICAqbGM7CisKKwkvKiBXZSBjYW4gZWFzaWx5IGdldCB0aGUgbG93ZXN0 IHNldCBiaXQgdGhpcyB3YXk6ICovCisJdGFyZ2V0cGFydCA9IGJtc19uZXh0X21lbWJlcihwYXJ0 cmVsaWRzLCAtMSk7CisJQXNzZXJ0KHRhcmdldHBhcnQgPiAwKTsKKworCS8qIExvb2sgZm9yIGEg bWF0Y2hpbmcgdG9wbW9zdCBwYXJlbnQgKi8KKwlmb3JlYWNoKGxjLCBhbGxwYXJ0cmVsaWRzKQor CXsKKwkJQml0bWFwc2V0ICAqY3VycnBhcnRyZWxpZHMgPSAoQml0bWFwc2V0ICopIGxmaXJzdChs Yyk7CisJCUluZGV4CQljdXJydGFyZ2V0ID0gYm1zX25leHRfbWVtYmVyKGN1cnJwYXJ0cmVsaWRz LCAtMSk7CisKKwkJaWYgKHRhcmdldHBhcnQgPT0gY3VycnRhcmdldCkKKwkJeworCQkJLyogRm91 bmQgYSBtYXRjaCwgc28gYWRkIGFueSBuZXcgUlQgaW5kZXhlcyB0byB0aGlzIGhpZXJhcmNoeSAq LworCQkJY3VycnBhcnRyZWxpZHMgPSBibXNfYWRkX21lbWJlcnMoY3VycnBhcnRyZWxpZHMsIHBh cnRyZWxpZHMpOworCQkJbGZpcnN0KGxjKSA9IGN1cnJwYXJ0cmVsaWRzOworCQkJcmV0dXJuIGFs bHBhcnRyZWxpZHM7CisJCX0KKwl9CisJLyogTm8gbWF0Y2gsIHNvIGFkZCB0aGUgbmV3IHBhcnRp dGlvbiBoaWVyYXJjaHkgdG8gdGhlIGxpc3QgKi8KKwlyZXR1cm4gbGFwcGVuZChhbGxwYXJ0cmVs aWRzLCBwYXJ0cmVsaWRzKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0cHJ1bmUuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwppbmRl eCA3MTc5YjIyYTA1Li4yMTM1MTJhNWY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRp b25pbmcvcGFydHBydW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVu ZS5jCkBAIC0xMzgsNyArMTM4LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVTdGVwUmVzdWx0CiB9 IFBydW5lU3RlcFJlc3VsdDsKIAogCi1zdGF0aWMgTGlzdCAqYWRkX3BhcnRfcmVsaWRzKExpc3Qg KmFsbHBhcnRyZWxpZHMsIEJpdG1hcHNldCAqcGFydHJlbGlkcyk7CiBzdGF0aWMgTGlzdCAqbWFr ZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJ ICAgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJCQkJCQkJCSAgIExpc3QgKnBydW5lcXVhbCwK QEAgLTIxOCwzMyArMjE3LDMyIEBAIHN0YXRpYyB2b2lkIHBhcnRrZXlfZGF0dW1fZnJvbV9leHBy KFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKICAqIG9mIHNjYW4gcGF0aHMgZm9yIGl0 cyBjaGlsZCByZWxzLgogICogJ3BydW5lcXVhbCcgaXMgYSBsaXN0IG9mIHBvdGVudGlhbCBwcnVu aW5nIHF1YWxzIChpLmUuLCByZXN0cmljdGlvbgogICogY2xhdXNlcyB0aGF0IGFyZSBhcHBsaWNh YmxlIHRvIHRoZSBhcHBlbmRyZWwpLgorICogJ2FsbHBhcnRyZWxpZHMnIGNvbnRhaW5zIEJpdG1h cHNldHMgb2YgUlQgaW5kZXhlcyBvZiBwYXJ0aXRpb25lZCBwYXJlbnRzCisgKiB3aG9zZSBwYXJ0 aXRpb25zJyBQYXRocyBhcmUgaW4gJ3N1YnBhdGhzJzsgdGhlcmUncyBvbmUgQml0bWFwc2V0IGZv ciBldmVyeQorICogcGFydGl0aW9uIHRyZWUgaW52b2x2ZWQuCiAgKi8KIFBhcnRpdGlvblBydW5l SW5mbyAqCiBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKnBhcmVudHJlbCwKIAkJCQkJCSBMaXN0ICpzdWJwYXRocywKLQkJCQkJCSBMaXN0ICpw cnVuZXF1YWwpCisJCQkJCQkgTGlzdCAqcHJ1bmVxdWFsLAorCQkJCQkJIExpc3QgKmFsbHBhcnRy ZWxpZHMpCiB7CiAJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm87CiAJQml0bWFwc2V0ICAq YWxsbWF0Y2hlZHN1YnBsYW5zID0gTlVMTDsKLQlMaXN0CSAgICphbGxwYXJ0cmVsaWRzOwogCUxp c3QJICAgKnBydW5lcmVsaW5mb3M7CiAJaW50CQkgICAqcmVsaWRfc3VicGxhbl9tYXA7CiAJTGlz dENlbGwgICAqbGM7CiAJaW50CQkJaTsKIAorCUFzc2VydChsaXN0X2xlbmd0aChhbGxwYXJ0cmVs aWRzKSA+IDApOworCiAJLyoKLQkgKiBTY2FuIHRoZSBzdWJwYXRocyB0byBzZWUgd2hpY2ggb25l cyBhcmUgc2NhbnMgb2YgcGFydGl0aW9uIGNoaWxkCi0JICogcmVsYXRpb25zLCBhbmQgaWRlbnRp ZnkgdGhlaXIgcGFyZW50IHBhcnRpdGlvbmVkIHJlbHMuICAoTm90ZTogd2UgbXVzdAotCSAqIHJl c3RyaWN0IHRoZSBwYXJlbnQgcGFydGl0aW9uZWQgcmVscyB0byBiZSBwYXJlbnRyZWwgb3IgY2hp bGRyZW4gb2YKLQkgKiBwYXJlbnRyZWwsIG90aGVyd2lzZSB3ZSBjb3VsZG4ndCB0cmFuc2xhdGUg cHJ1bmVxdWFsIHRvIG1hdGNoLikKLQkgKgotCSAqIEFsc28gY29uc3RydWN0IGEgdGVtcG9yYXJ5 IGFycmF5IHRvIG1hcCBmcm9tIHBhcnRpdGlvbi1jaGlsZC1yZWxhdGlvbgotCSAqIHJlbGlkIHRv IHRoZSBpbmRleCBpbiAnc3VicGF0aHMnIG9mIHRoZSBzY2FuIHBsYW4gZm9yIHRoYXQgcGFydGl0 aW9uLgorCSAqIENvbnN0cnVjdCBhIHRlbXBvcmFyeSBhcnJheSB0byBtYXAgZnJvbSBwYXJ0aXRp b24tY2hpbGQtcmVsYXRpb24gcmVsaWQKKwkgKiB0byB0aGUgaW5kZXggaW4gJ3N1YnBhdGhzJyBv ZiB0aGUgc2NhbiBwbGFuIGZvciB0aGF0IHBhcnRpdGlvbi4KIAkgKiAoVXNlIG9mICJzdWJwbGFu IiByYXRoZXIgdGhhbiAic3VicGF0aCIgaXMgYSBiaXQgb2YgYSBtaXNub21lciwgYnV0CiAJICog d2UnbGwgbGV0IGl0IHN0YW5kLikgIEZvciBjb252ZW5pZW5jZSwgd2UgdXNlIDEtYmFzZWQgaW5k ZXhlcyBoZXJlLCBzbwogCSAqIHRoYXQgemVybyBjYW4gcmVwcmVzZW50IGFuIHVuLWZpbGxlZCBh cnJheSBlbnRyeS4KIAkgKi8KLQlhbGxwYXJ0cmVsaWRzID0gTklMOwogCXJlbGlkX3N1YnBsYW5f bWFwID0gcGFsbG9jMChzaXplb2YoaW50KSAqIHJvb3QtPnNpbXBsZV9yZWxfYXJyYXlfc2l6ZSk7 CiAKIAlpID0gMTsKQEAgLTI1Myw1MCArMjUxLDkgQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZv KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCVBhdGgJICAgKnBh dGggPSAoUGF0aCAqKSBsZmlyc3QobGMpOwogCQlSZWxPcHRJbmZvICpwYXRocmVsID0gcGF0aC0+ cGFyZW50OwogCi0JCS8qIFdlIGRvbid0IGNvbnNpZGVyIHBhcnRpdGlvbmVkIGpvaW5zIGhlcmUg Ki8KLQkJaWYgKHBhdGhyZWwtPnJlbG9wdGtpbmQgPT0gUkVMT1BUX09USEVSX01FTUJFUl9SRUwp Ci0JCXsKLQkJCVJlbE9wdEluZm8gKnByZWwgPSBwYXRocmVsOwotCQkJQml0bWFwc2V0ICAqcGFy dHJlbGlkcyA9IE5VTEw7Ci0KLQkJCS8qCi0JCQkgKiBUcmF2ZXJzZSB1cCB0byB0aGUgcGF0aHJl bCdzIHRvcG1vc3QgcGFydGl0aW9uZWQgcGFyZW50LAotCQkJICogY29sbGVjdGluZyBwYXJlbnQg cmVsaWRzIGFzIHdlIGdvOyBidXQgc3RvcCBpZiB3ZSByZWFjaAotCQkJICogcGFyZW50cmVsLiAg KE5vcm1hbGx5LCBhIHBhdGhyZWwncyB0b3Btb3N0IHBhcnRpdGlvbmVkIHBhcmVudAotCQkJICog aXMgZWl0aGVyIHBhcmVudHJlbCBvciBhIFVOSU9OIEFMTCBhcHBlbmRyZWwgY2hpbGQgb2YKLQkJ CSAqIHBhcmVudHJlbC4gIEJ1dCB3aGVuIGhhbmRsaW5nIHBhcnRpdGlvbndpc2Ugam9pbnMgb2YK LQkJCSAqIG11bHRpLWxldmVsIHBhcnRpdGlvbmluZyB0cmVlcywgd2UgY2FuIHNlZSBhbiBhcHBl bmQgcGF0aCB3aG9zZQotCQkJICogcGFyZW50cmVsIGlzIGFuIGludGVybWVkaWF0ZSBwYXJ0aXRp b25lZCB0YWJsZS4pCi0JCQkgKi8KLQkJCWRvCi0JCQl7Ci0JCQkJQXBwZW5kUmVsSW5mbyAqYXBw aW5mbzsKLQotCQkJCUFzc2VydChwcmVsLT5yZWxpZCA8IHJvb3QtPnNpbXBsZV9yZWxfYXJyYXlf c2l6ZSk7Ci0JCQkJYXBwaW5mbyA9IHJvb3QtPmFwcGVuZF9yZWxfYXJyYXlbcHJlbC0+cmVsaWRd OwotCQkJCXByZWwgPSBmaW5kX2Jhc2VfcmVsKHJvb3QsIGFwcGluZm8tPnBhcmVudF9yZWxpZCk7 Ci0JCQkJaWYgKCFJU19QQVJUSVRJT05FRF9SRUwocHJlbCkpCi0JCQkJCWJyZWFrOwkJLyogcmVh Y2hlZCBhIG5vbi1wYXJ0aXRpb25lZCBwYXJlbnQgKi8KLQkJCQkvKiBhY2NlcHQgdGhpcyBsZXZl bCBhcyBhbiBpbnRlcmVzdGluZyBwYXJlbnQgKi8KLQkJCQlwYXJ0cmVsaWRzID0gYm1zX2FkZF9t ZW1iZXIocGFydHJlbGlkcywgcHJlbC0+cmVsaWQpOwotCQkJCWlmIChwcmVsID09IHBhcmVudHJl bCkKLQkJCQkJYnJlYWs7CQkvKiBkb24ndCB0cmF2ZXJzZSBhYm92ZSBwYXJlbnRyZWwgKi8KLQkJ CX0gd2hpbGUgKHByZWwtPnJlbG9wdGtpbmQgPT0gUkVMT1BUX09USEVSX01FTUJFUl9SRUwpOwot Ci0JCQlpZiAocGFydHJlbGlkcykKLQkJCXsKLQkJCQkvKgotCQkJCSAqIEZvdW5kIHNvbWUgcmVs ZXZhbnQgcGFyZW50IHBhcnRpdGlvbnMsIHdoaWNoIG1heSBvciBtYXkgbm90Ci0JCQkJICogb3Zl cmxhcCB3aXRoIHBhcnRpdGlvbiB0cmVlcyB3ZSBhbHJlYWR5IGZvdW5kLiAgQWRkIG5ldwotCQkJ CSAqIGluZm9ybWF0aW9uIHRvIHRoZSBhbGxwYXJ0cmVsaWRzIGxpc3QuCi0JCQkJICovCi0JCQkJ YWxscGFydHJlbGlkcyA9IGFkZF9wYXJ0X3JlbGlkcyhhbGxwYXJ0cmVsaWRzLCBwYXJ0cmVsaWRz KTsKLQkJCQkvKiBBbHNvIHJlY29yZCB0aGUgc3VicGxhbiBpbiByZWxpZF9zdWJwbGFuX21hcFtd ICovCi0JCQkJLyogTm8gZHVwbGljYXRlcyBwbGVhc2UgKi8KLQkJCQlBc3NlcnQocmVsaWRfc3Vi cGxhbl9tYXBbcGF0aHJlbC0+cmVsaWRdID09IDApOwotCQkJCXJlbGlkX3N1YnBsYW5fbWFwW3Bh dGhyZWwtPnJlbGlkXSA9IGk7Ci0JCQl9Ci0JCX0KKwkJLyogTm8gZHVwbGljYXRlcyBwbGVhc2Ug Ki8KKwkJQXNzZXJ0KHJlbGlkX3N1YnBsYW5fbWFwW3BhdGhyZWwtPnJlbGlkXSA9PSAwKTsKKwkJ cmVsaWRfc3VicGxhbl9tYXBbcGF0aHJlbC0+cmVsaWRdID0gaTsKIAkJaSsrOwogCX0KIApAQCAt MzYyLDYzICszMTksNiBAQCBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAlyZXR1cm4gcHJ1bmVpbmZvOwogfQogCi0vKgot ICogYWRkX3BhcnRfcmVsaWRzCi0gKgkJQWRkIG5ldyBpbmZvIHRvIGEgbGlzdCBvZiBCaXRtYXBz ZXRzIG9mIHBhcnRpdGlvbmVkIHJlbGlkcy4KLSAqCi0gKiBXaXRoaW4gJ2FsbHBhcnRyZWxpZHMn LCB0aGVyZSBpcyBvbmUgQml0bWFwc2V0IGZvciBlYWNoIHRvcG1vc3QgcGFyZW50Ci0gKiBwYXJ0 aXRpb25lZCByZWwuICBFYWNoIEJpdG1hcHNldCBjb250YWlucyB0aGUgUlQgaW5kZXhlcyBvZiB0 aGUgdG9wbW9zdAotICogcGFyZW50IGFzIHdlbGwgYXMgaXRzIHJlbGV2YW50IG5vbi1sZWFmIGNo aWxkIHBhcnRpdGlvbnMuICBTaW5jZSAoYnkKLSAqIGNvbnN0cnVjdGlvbiBvZiB0aGUgcmFuZ2V0 YWJsZSBsaXN0KSBwYXJlbnQgcGFydGl0aW9ucyBtdXN0IGhhdmUgbG93ZXIKLSAqIFJUIGluZGV4 ZXMgdGhhbiB0aGVpciBjaGlsZHJlbiwgd2UgY2FuIGRpc3Rpbmd1aXNoIHRoZSB0b3Btb3N0IHBh cmVudAotICogYXMgYmVpbmcgdGhlIGxvd2VzdCBzZXQgYml0IGluIHRoZSBCaXRtYXBzZXQuCi0g KgotICogJ3BhcnRyZWxpZHMnIGNvbnRhaW5zIHRoZSBSVCBpbmRleGVzIG9mIGEgcGFyZW50IHBh cnRpdGlvbmVkIHJlbCwgYW5kCi0gKiBwb3NzaWJseSBzb21lIG5vbi1sZWFmIGNoaWxkcmVuLCB0 aGF0IGFyZSBuZXdseSBpZGVudGlmaWVkIGFzIHBhcmVudHMgb2YKLSAqIHNvbWUgc3VicGF0aCBy ZWwgcGFzc2VkIHRvIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbygpLiAgVGhlc2UgYXJlIGFkZGVk Ci0gKiB0byBhbiBhcHByb3ByaWF0ZSBtZW1iZXIgb2YgJ2FsbHBhcnRyZWxpZHMnLgotICoKLSAq IE5vdGUgdGhhdCB0aGUgbGlzdCBjb250YWlucyBvbmx5IFJUIGluZGV4ZXMgb2YgcGFydGl0aW9u ZWQgdGFibGVzIHRoYXQKLSAqIGFyZSBwYXJlbnRzIG9mIHNvbWUgc2Nhbi1sZXZlbCByZWxhdGlv biBhcHBlYXJpbmcgaW4gdGhlICdzdWJwYXRocycgdGhhdAotICogbWFrZV9wYXJ0aXRpb25fcHJ1 bmVpbmZvKCkgaXMgZGVhbGluZyB3aXRoLiAgQWxzbywgInRvcG1vc3QiIHBhcmVudHMgYXJlCi0g KiBub3QgYWxsb3dlZCB0byBiZSBoaWdoZXIgdGhhbiB0aGUgJ3BhcmVudHJlbCcgYXNzb2NpYXRl ZCB3aXRoIHRoZSBhcHBlbmQKLSAqIHBhdGguICBJbiB0aGlzIHdheSwgd2UgYXZvaWQgZXhwZW5k aW5nIGN5Y2xlcyBvbiBwYXJ0aXRpb25lZCByZWxzIHRoYXQKLSAqIGNhbid0IGNvbnRyaWJ1dGUg dXNlZnVsIHBydW5pbmcgaW5mb3JtYXRpb24gZm9yIHRoZSBwcm9ibGVtIGF0IGhhbmQuCi0gKiAo SXQgaXMgcG9zc2libGUgZm9yICdwYXJlbnRyZWwnIHRvIGJlIGEgY2hpbGQgcGFydGl0aW9uZWQg dGFibGUsIGFuZCBpdAotICogaXMgYWxzbyBwb3NzaWJsZSBmb3Igc2Nhbi1sZXZlbCByZWxhdGlv bnMgdG8gYmUgY2hpbGQgcGFydGl0aW9uZWQgdGFibGVzCi0gKiByYXRoZXIgdGhhbiBsZWFmIHBh cnRpdGlvbnMuICBIZW5jZSB3ZSBtdXN0IGNvbnN0cnVjdCB0aGlzIHJlbGF0aW9uIHNldAotICog d2l0aCByZWZlcmVuY2UgdG8gdGhlIHBhcnRpY3VsYXIgYXBwZW5kIHBhdGggd2UncmUgZGVhbGlu ZyB3aXRoLCByYXRoZXIKLSAqIHRoYW4gbG9va2luZyBhdCB0aGUgZnVsbCBwYXJ0aXRpb25pbmcg c3RydWN0dXJlIHJlcHJlc2VudGVkIGluIHRoZQotICogUmVsT3B0SW5mb3MuKQotICovCi1zdGF0 aWMgTGlzdCAqCi1hZGRfcGFydF9yZWxpZHMoTGlzdCAqYWxscGFydHJlbGlkcywgQml0bWFwc2V0 ICpwYXJ0cmVsaWRzKQotewotCUluZGV4CQl0YXJnZXRwYXJ0OwotCUxpc3RDZWxsICAgKmxjOwot Ci0JLyogV2UgY2FuIGVhc2lseSBnZXQgdGhlIGxvd2VzdCBzZXQgYml0IHRoaXMgd2F5OiAqLwot CXRhcmdldHBhcnQgPSBibXNfbmV4dF9tZW1iZXIocGFydHJlbGlkcywgLTEpOwotCUFzc2VydCh0 YXJnZXRwYXJ0ID4gMCk7Ci0KLQkvKiBMb29rIGZvciBhIG1hdGNoaW5nIHRvcG1vc3QgcGFyZW50 ICovCi0JZm9yZWFjaChsYywgYWxscGFydHJlbGlkcykKLQl7Ci0JCUJpdG1hcHNldCAgKmN1cnJw YXJ0cmVsaWRzID0gKEJpdG1hcHNldCAqKSBsZmlyc3QobGMpOwotCQlJbmRleAkJY3VycnRhcmdl dCA9IGJtc19uZXh0X21lbWJlcihjdXJycGFydHJlbGlkcywgLTEpOwotCi0JCWlmICh0YXJnZXRw YXJ0ID09IGN1cnJ0YXJnZXQpCi0JCXsKLQkJCS8qIEZvdW5kIGEgbWF0Y2gsIHNvIGFkZCBhbnkg bmV3IFJUIGluZGV4ZXMgdG8gdGhpcyBoaWVyYXJjaHkgKi8KLQkJCWN1cnJwYXJ0cmVsaWRzID0g Ym1zX2FkZF9tZW1iZXJzKGN1cnJwYXJ0cmVsaWRzLCBwYXJ0cmVsaWRzKTsKLQkJCWxmaXJzdChs YykgPSBjdXJycGFydHJlbGlkczsKLQkJCXJldHVybiBhbGxwYXJ0cmVsaWRzOwotCQl9Ci0JfQot CS8qIE5vIG1hdGNoLCBzbyBhZGQgdGhlIG5ldyBwYXJ0aXRpb24gaGllcmFyY2h5IHRvIHRoZSBs aXN0ICovCi0JcmV0dXJuIGxhcHBlbmQoYWxscGFydHJlbGlkcywgcGFydHJlbGlkcyk7Ci19Ci0K IC8qCiAgKiBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbwogICoJCUJ1aWxkIGEgTGlzdCBv ZiBQYXJ0aXRpb25lZFJlbFBydW5lSW5mb3MsIG9uZSBmb3IgZWFjaCBpbnRlcmVzdGluZwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggMTBjNWNkYTE2OS4uNzRhNDcxZTNlMyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjdXRvci5oCkBAIC02MDEsNiArNjAxLDcgQEAgZXhlY19ydF9mZXRjaChJbmRleCBy dGksIEVTdGF0ZSAqZXN0YXRlKQogZXh0ZXJuIFJlbGF0aW9uIEV4ZWNHZXRSYW5nZVRhYmxlUmVs YXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSk7CiBleHRlcm4gdm9pZCBFeGVjSW5pdFJl c3VsdFJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZv LAogCQkJCQkJCQkgICBJbmRleCBydGkpOworZXh0ZXJuIHZvaWQgRXhlY0xvY2tBcHBlbmROb25M ZWFmUGFydGl0aW9ucyhFU3RhdGUgKmVzdGF0ZSwgTGlzdCAqYWxscGFydHJlbGlkcyk7CiAKIGV4 dGVybiBpbnQJZXhlY3V0b3JfZXJycG9zaXRpb24oRVN0YXRlICplc3RhdGUsIGludCBsb2NhdGlv bik7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggMWI3ODdmZTAzMS4uN2E1ZjNiYTYyNSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGxhbm5vZGVzLmgKQEAgLTI2Nyw2ICsyNjcsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBw ZW5kCiAJTGlzdAkgICAqYXBwZW5kcGxhbnM7CiAJaW50CQkJbmFzeW5jcGxhbnM7CS8qICMgb2Yg YXN5bmNocm9ub3VzIHBsYW5zICovCiAKKwkvKgorCSAqIFJUSXMgb2YgYWxsIHBhcnRpdGlvbmVk IHRhYmxlcyB3aG9zZSBjaGlsZHJlbiBhcmUgc2Nhbm5lZCBieQorCSAqIGFwcGVuZHBsYW5zLiBU aGUgbGlzdCBjb250YWlucyBhIGJpdG1hcHNldCBmb3IgZXZlcnkgcGFydGl0aW9uIHRyZWUKKwkg KiBjb3ZlcmVkIGJ5IHRoaXMgQXBwZW5kLgorCSAqLworCUxpc3QJICAgKmFsbHBhcnRyZWxpZHM7 CisKIAkvKgogCSAqIEFsbCAnYXBwZW5kcGxhbnMnIHByZWNlZGluZyB0aGlzIGluZGV4IGFyZSBu b24tcGFydGlhbCBwbGFucy4gQWxsCiAJICogJ2FwcGVuZHBsYW5zJyBmcm9tIHRoaXMgaW5kZXgg b253YXJkcyBhcmUgcGFydGlhbCBwbGFucy4KQEAgLTI5MSw2ICsyOTgsMTMgQEAgdHlwZWRlZiBz dHJ1Y3QgTWVyZ2VBcHBlbmQKIAogCUxpc3QJICAgKm1lcmdlcGxhbnM7CiAKKwkvKgorCSAqIFJU SXMgb2YgYWxsIHBhcnRpdGlvbmVkIHRhYmxlcyB3aG9zZSBjaGlsZHJlbiBhcmUgc2Nhbm5lZCBi eQorCSAqIG1lcmdlcGxhbnMuIFRoZSBsaXN0IGNvbnRhaW5zIGEgYml0bWFwc2V0IGZvciBldmVy eSBwYXJ0aXRpb24gdHJlZQorCSAqIGNvdmVyZWQgYnkgdGhpcyBNZXJnZUFwcGVuZC4KKwkgKi8K KwlMaXN0CSAgICphbGxwYXJ0cmVsaWRzOworCiAJLyogdGhlc2UgZmllbGRzIGFyZSBqdXN0IGxp a2UgdGhlIHNvcnQta2V5IGluZm8gaW4gc3RydWN0IFNvcnQ6ICovCiAKIAkvKiBudW1iZXIgb2Yg c29ydC1rZXkgY29sdW1ucyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2Fw cGVuZGluZm8uaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9hcHBlbmRpbmZvLmgKaW5kZXggYTA1 ZjkxZjc3ZC4uMTYyMWE3MzE5YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2Fw cGVuZGluZm8uaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvYXBwZW5kaW5mby5oCkBAIC00 Niw1ICs0Niw4IEBAIGV4dGVybiB2b2lkIGFkZF9yb3dfaWRlbnRpdHlfY29sdW1ucyhQbGFubmVy SW5mbyAqcm9vdCwgSW5kZXggcnRpbmRleCwKIAkJCQkJCQkJCSBSYW5nZVRibEVudHJ5ICp0YXJn ZXRfcnRlLAogCQkJCQkJCQkJIFJlbGF0aW9uIHRhcmdldF9yZWxhdGlvbik7CiBleHRlcm4gdm9p ZCBkaXN0cmlidXRlX3Jvd19pZGVudGl0eV92YXJzKFBsYW5uZXJJbmZvICpyb290KTsKK2V4dGVy biBMaXN0ICphZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcyhQbGFubmVySW5mbyAqcm9vdCwg UGF0aCAqc3VicGF0aCwKKwkJCQkJCQkgIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKKwkJCQkJCQkg IExpc3QgKmFsbHBhcnRyZWxpZHMpOwogCiAjZW5kaWYJCQkJCQkJLyogQVBQRU5ESU5GT19IICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmggYi9zcmMv aW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmgKaW5kZXggODYzNmUwNGUzNy4uY2FhNzc0 YTExMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCisr KyBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaApAQCAtNzMsNyArNzMsOCBA QCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZUNvbnRleHQKIGV4dGVybiBQYXJ0aXRpb25Q cnVuZUluZm8gKm1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhzdHJ1Y3QgUGxhbm5lckluZm8gKnJv b3QsCiAJCQkJCQkJCQkJCQkJc3RydWN0IFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCQkJCQkJ CQkJCQlMaXN0ICpzdWJwYXRocywKLQkJCQkJCQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwpOworCQkJ CQkJCQkJCQkJCUxpc3QgKnBydW5lcXVhbCwKKwkJCQkJCQkJCQkJCQlMaXN0ICphbGxwYXJ0cmVs aWRzKTsKIGV4dGVybiBCaXRtYXBzZXQgKnBydW5lX2FwcGVuZF9yZWxfcGFydGl0aW9ucyhzdHJ1 Y3QgUmVsT3B0SW5mbyAqcmVsKTsKIGV4dGVybiBCaXRtYXBzZXQgKmdldF9tYXRjaGluZ19wYXJ0 aXRpb25zKFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCQkgIExpc3Qg KnBydW5pbmdfc3RlcHMpOwotLSAKMi4zNS4zCgo= --00000000000041b1e2060642be90 Content-Type: application/octet-stream; name="v47-0009-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Disposition: attachment; filename="v47-0009-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ln0bz7ug0 RnJvbSAxYmMxNWNmMTIxMTExMWE2OTg2ZTA5N2Y1YTdhYzM4OTljOWE3ODRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1NDoxOSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ3 IDkvOV0gVHJhY2sgb3BlbmVkIHJhbmdlIHRhYmxlIHJlbGF0aW9ucyBpbiBhIExpc3QgaW4KIEVT dGF0ZQoKVGhpcyBtYWtlcyBFeGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zIGZhc3RlciB3aGVu IHRoZXJlIGFyZSBtYW55CnJlbGF0aW9ucyBpbiB0aGUgcmFuZ2UgdGFibGUgYnV0IG9ubHkgYSBm ZXcgYXJlIG9wZW5lZCBkdXJpbmcKZXhlY3V0aW9uLCBzdWNoIGFzIHdoZW4gcnVuLXRpbWUgcHJ1 bmluZyBraWNrcyBpbiBvbiBhbiBBcHBlbmQKY29udGFpbmluZyB0aG91c2FuZHMgb2YgcGFydGl0 aW9uIHN1YnBsYW5zLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStIaXdxRkdr TVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdAbWFpbC5nbWFpbC5jb20K LS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICB8IDkgKysrKystLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyB8IDMgKysrCiBzcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaCAgICB8IDIgKysKIDMgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwg NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFp bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCAyODA0ZWM3MGYxLi5k NTU5YzFkZTYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTE2NDksMTIgKzE2NDksMTMg QEAgRXhlY0Nsb3NlUmVzdWx0UmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRlKQogdm9pZAogRXhlY0Ns b3NlUmFuZ2VUYWJsZVJlbGF0aW9ucyhFU3RhdGUgKmVzdGF0ZSkKIHsKLQlpbnQJCQlpOworCUxp c3RDZWxsICpsYzsKIAotCWZvciAoaSA9IDA7IGkgPCBlc3RhdGUtPmVzX3JhbmdlX3RhYmxlX3Np emU7IGkrKykKKwlmb3JlYWNoKGxjLCBlc3RhdGUtPmVzX29wZW5lZF9yZWxhdGlvbnMpCiAJewot CQlpZiAoZXN0YXRlLT5lc19yZWxhdGlvbnNbaV0pCi0JCQl0YWJsZV9jbG9zZShlc3RhdGUtPmVz X3JlbGF0aW9uc1tpXSwgTm9Mb2NrKTsKKwkJUmVsYXRpb24gcmVsID0gbGZpcnN0KGxjKTsKKwor CQl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCmluZGV4IDJiN2EwOGM5YmEuLjFkZmVmNDQ0OTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCkBAIC04MjIsNiArODIyLDkgQEAgRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihFU3RhdGUg KmVzdGF0ZSwgSW5kZXggcnRpKQogCQl9CiAKIAkJZXN0YXRlLT5lc19yZWxhdGlvbnNbcnRpIC0g MV0gPSByZWw7CisJCWlmIChyZWwgIT0gTlVMTCkKKwkJCWVzdGF0ZS0+ZXNfb3BlbmVkX3JlbGF0 aW9ucyA9IGxhcHBlbmQoZXN0YXRlLT5lc19vcGVuZWRfcmVsYXRpb25zLAorCQkJCQkJCQkJCQkJ ICByZWwpOwogCX0KIAogCXJldHVybiByZWw7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGJiNTcz NGVkYjUuLjhiYmUxZjZiMTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC02MTksNiArNjE5LDgg QEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJSW5kZXgJCWVzX3JhbmdlX3RhYmxlX3NpemU7CS8q IHNpemUgb2YgdGhlIHJhbmdlIHRhYmxlIGFycmF5cyAqLwogCVJlbGF0aW9uICAgKmVzX3JlbGF0 aW9uczsJLyogQXJyYXkgb2YgcGVyLXJhbmdlLXRhYmxlLWVudHJ5IFJlbGF0aW9uCiAJCQkJCQkJ CSAqIHBvaW50ZXJzLCBvciBOVUxMIGlmIG5vdCB5ZXQgb3BlbmVkICovCisJTGlzdAkgICAqZXNf b3BlbmVkX3JlbGF0aW9uczsgLyogTGlzdCBvZiBub24tTlVMTCBlbnRyaWVzIGluCisJCQkJCQkJ CQkgICogZXNfcmVsYXRpb25zIGluIG5vIHNwZWNpZmljIG9yZGVyICovCiAJc3RydWN0IEV4ZWNS b3dNYXJrICoqZXNfcm93bWFya3M7CS8qIEFycmF5IG9mIHBlci1yYW5nZS10YWJsZS1lbnRyeQog CQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJrcywgb3IgTlVMTCBpZiBub25lICovCiAJTGlzdAkgICAq ZXNfcnRlcGVybWluZm9zOwkvKiBMaXN0IG9mIFJURVBlcm1pc3Npb25JbmZvICovCi0tIAoyLjM1 LjMKCg== --00000000000041b1e2060642be90 Content-Type: application/octet-stream; name="v47-0006-Assert-that-relations-needing-their-permissions-.patch" Content-Disposition: attachment; filename="v47-0006-Assert-that-relations-needing-their-permissions-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ln0bz7uu3 RnJvbSAyYjMxODdiMDQ0M2Y4NTY5ZGRiYjNmZDU1Y2I3MmYxYzBhZjM0YTQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IE1vbiwgMjUgU2VwIDIwMjMgMTE6NTI6MDIgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 NyA2LzldIEFzc2VydCB0aGF0IHJlbGF0aW9ucyBuZWVkaW5nIHRoZWlyIHBlcm1pc3Npb25zCiBj aGVja2VkIGFyZSBsb2NrZWQKCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAg ICAgfCAxMSArKysrKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jICAgICB8IDQ1 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9s c3lzY2FjaGUuYyB8IDIxICsrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3Iu aCAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oICAgICAgIHwg IDEgKwogNSBmaWxlcyBjaGFuZ2VkLCA3OSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMKaW5kZXggNTc1NTMzNmFiZC4uZmZjNjJlMzc5YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFp bi5jCkBAIC02MjYsNiArNjI2LDE3IEBAIEV4ZWNDaGVja1Blcm1pc3Npb25zKExpc3QgKnJhbmdl VGFibGUsIExpc3QgKnJ0ZXBlcm1pbmZvcywKIAkJCQkgICAocnRlLT5ydGVraW5kID09IFJURV9T VUJRVUVSWSAmJgogCQkJCQlydGUtPnJlbGtpbmQgPT0gUkVMS0lORF9WSUVXKSk7CiAKKwkJCS8q CisJCQkgKiBSZWxhdGlvbnMgd2hvc2UgcGVybWlzc2lvbnMgbmVlZCB0byBiZSBjaGVja2VkIG11 c3QgYWxyZWFkeQorCQkJICogaGF2ZSBiZWVuIGxvY2tlZCBieSB0aGUgcGFyc2VyIG9yIGJ5IEdl dENhY2hlZFBsYW4oKSBpZiBhCisJCQkgKiBjYWNoZWQgcGxhbiBpcyBiZWluZyBleGVjdXRlZC4K KwkJCSAqCisJCQkgKiBYWFggTWF5YmUgd2Ugc2hvdWxkIHdlIHNraXAgY2FsbGluZyBFeGVjQ2hl Y2tQZXJtaXNzaW9ucyBmcm9tCisJCQkgKiBJbml0UGxhbiBpbiBhIHBhcmFsbGVsIHdvcmtlci4K KwkJCSAqLworCQkJQXNzZXJ0KElzUGFyYWxsZWxXb3JrZXIoKSB8fAorCQkJCSAgIENoZWNrUmVs TG9ja2VkQnlNZShydGUtPnJlbGlkLCBBY2Nlc3NTaGFyZUxvY2ssIHRydWUpKTsKKwogCQkJKHZv aWQpIGdldFJURVBlcm1pc3Npb25JbmZvKHJ0ZXBlcm1pbmZvcywgcnRlKTsKIAkJCS8qIE1hbnkt dG8tb25lIG1hcHBpbmcgbm90IGFsbG93ZWQgKi8KIAkJCUFzc2VydCghYm1zX2lzX21lbWJlcihy dGUtPnBlcm1pbmZvaW5kZXgsIGluZGV4c2V0KSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvbG1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYwppbmRl eCBlZTliODlhNjcyLi5jODA3ZTljZGNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2xtZ3IvbG1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMKQEAgLTI3 LDYgKzI3LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0 b3JhZ2Uvc2ludmFsYWR0LmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1 dGlscy9sc3lzY2FjaGUuaCIKIAogCiAvKgpAQCAtMzY0LDYgKzM2NSw1MCBAQCBDaGVja1JlbGF0 aW9uTG9ja2VkQnlNZShSZWxhdGlvbiByZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUsIGJvb2wg b3JzdHJvbmdlcikKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisgKgkJQ2hlY2tSZWxMb2NrZWRC eU1lCisgKgorICogUmV0dXJucyB0cnVlIGlmIGN1cnJlbnQgdHJhbnNhY3Rpb24gaG9sZHMgYSBs b2NrIG9uIHRoZSBnaXZlbiByZWxhdGlvbiBvZgorICogbW9kZSAnbG9ja21vZGUnLiAgSWYgJ29y c3Ryb25nZXInIGlzIHRydWUsIGEgc3Ryb25nZXIgbG9ja21vZGUgaXMgYWxzbyBPSy4KKyAqICgi U3Ryb25nZXIiIGlzIGRlZmluZWQgYXMgIm51bWVyaWNhbGx5IGhpZ2hlciIsIHdoaWNoIGlzIGEg Yml0CisgKiBzZW1hbnRpY2FsbHkgZHViaW91cyBidXQgaXMgT0sgZm9yIHRoZSBwdXJwb3NlcyB3 ZSB1c2UgdGhpcyBmb3IuKQorICovCitib29sCitDaGVja1JlbExvY2tlZEJ5TWUoT2lkIHJlbGlk LCBMT0NLTU9ERSBsb2NrbW9kZSwgYm9vbCBvcnN0cm9uZ2VyKQoreworCU9pZAkJCWRiSWQgPSBn ZXRfcmVsX3JlbGlzc2hhcmVkKHJlbGlkKSA/IEludmFsaWRPaWQgOiBNeURhdGFiYXNlSWQ7CisJ TE9DS1RBRwkJdGFnOworCisJU0VUX0xPQ0tUQUdfUkVMQVRJT04odGFnLCBkYklkLCByZWxpZCk7 CisKKwlpZiAoTG9ja0hlbGRCeU1lKCZ0YWcsIGxvY2ttb2RlKSkKKwkJcmV0dXJuIHRydWU7CisK KwlpZiAob3JzdHJvbmdlcikKKwl7CisJCUxPQ0tNT0RFCXNsb2NrbW9kZTsKKworCQlmb3IgKHNs b2NrbW9kZSA9IGxvY2ttb2RlICsgMTsKKwkJCSBzbG9ja21vZGUgPD0gTWF4TG9ja01vZGU7CisJ CQkgc2xvY2ttb2RlKyspCisJCXsKKwkJCWlmIChMb2NrSGVsZEJ5TWUoJnRhZywgc2xvY2ttb2Rl KSkKKwkJCXsKKyNpZmRlZiBOT1RfVVNFRAorCQkJCS8qIFNvbWV0aW1lcyB0aGlzIG1pZ2h0IGJl IHVzZWZ1bCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzICovCisJCQkJZWxvZyhXQVJOSU5HLCAibG9j ayBtb2RlICVzIHN1YnN0aXR1dGVkIGZvciAlcyBvbiByZWxhdGlvbiAlcyIsCisJCQkJCSBHZXRM b2NrbW9kZU5hbWUodGFnLmxvY2t0YWdfbG9ja21ldGhvZGlkLCBzbG9ja21vZGUpLAorCQkJCQkg R2V0TG9ja21vZGVOYW1lKHRhZy5sb2NrdGFnX2xvY2ttZXRob2RpZCwgbG9ja21vZGUpLAorCQkJ CQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKTsKKyNlbmRpZgorCQkJCXJldHVy biB0cnVlOworCQkJfQorCQl9CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCiAvKgogICoJCUxv Y2tIYXNXYWl0ZXJzUmVsYXRpb24KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9sc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCmlu ZGV4IGZjNmQyNjdlNDQuLjI3MjVkMDIzMTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL2xzeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNo ZS5jCkBAIC0yMDk1LDYgKzIwOTUsMjcgQEAgZ2V0X3JlbF9wZXJzaXN0ZW5jZShPaWQgcmVsaWQp CiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIGdldF9yZWxfcmVsaXNzaGFyZWQKKyAqCisg KgkJUmV0dXJucyBpZiB0aGUgZ2l2ZW4gcmVsYXRpb24gaXMgc2hhcmVkIG9yIG5vdAorICovCiti b29sCitnZXRfcmVsX3JlbGlzc2hhcmVkKE9pZCByZWxpZCkKK3sKKwlIZWFwVHVwbGUJdHA7CisJ Rm9ybV9wZ19jbGFzcyByZWx0dXA7CisJYm9vbAkJcmVzdWx0OworCisJdHAgPSBTZWFyY2hTeXND YWNoZTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVtKHJlbGlkKSk7CisJaWYgKCFIZWFwVHVwbGVJ c1ZhbGlkKHRwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHJlbGF0 aW9uICV1IiwgcmVsaWQpOworCXJlbHR1cCA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHAp OworCXJlc3VsdCA9IHJlbHR1cC0+cmVsaXNzaGFyZWQ7CisJUmVsZWFzZVN5c0NhY2hlKHRwKTsK KworCXJldHVybiByZXN1bHQ7Cit9CiAKIC8qCQkJCS0tLS0tLS0tLS0gVFJBTlNGT1JNIENBQ0hF IC0tLS0tLS0tLS0JCQkJCQkgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9s bWdyLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3IuaAppbmRleCA0ZWU5MWUzY2Y5Li41OThi ZjI2ODhhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3IuaAorKysgYi9zcmMv aW5jbHVkZS9zdG9yYWdlL2xtZ3IuaApAQCAtNDgsNiArNDgsNyBAQCBleHRlcm4gYm9vbCBDb25k aXRpb25hbExvY2tSZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUp OwogZXh0ZXJuIHZvaWQgVW5sb2NrUmVsYXRpb24oUmVsYXRpb24gcmVsYXRpb24sIExPQ0tNT0RF IGxvY2ttb2RlKTsKIGV4dGVybiBib29sIENoZWNrUmVsYXRpb25Mb2NrZWRCeU1lKFJlbGF0aW9u IHJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSwKIAkJCQkJCQkJCWJvb2wgb3JzdHJvbmdlcik7 CitleHRlcm4gYm9vbCBDaGVja1JlbExvY2tlZEJ5TWUoT2lkIHJlbGlkLCBMT0NLTU9ERSBsb2Nr bW9kZSwgYm9vbCBvcnN0cm9uZ2VyKTsKIGV4dGVybiBib29sIExvY2tIYXNXYWl0ZXJzUmVsYXRp b24oUmVsYXRpb24gcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlKTsKIAogZXh0ZXJuIHZvaWQg TG9ja1JlbGF0aW9uSWRGb3JTZXNzaW9uKExvY2tSZWxJZCAqcmVsaWQsIExPQ0tNT0RFIGxvY2tt b2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5kZXggZjVmZGJmZTExNi4uYTAyNGU1ZGNkMCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvbHN5c2NhY2hlLmgKQEAgLTE0MCw2ICsxNDAsNyBAQCBleHRlcm4gY2hhciBnZXRfcmVs X3JlbGtpbmQoT2lkIHJlbGlkKTsKIGV4dGVybiBib29sIGdldF9yZWxfcmVsaXNwYXJ0aXRpb24o T2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3JlbF90YWJsZXNwYWNlKE9pZCByZWxpZCk7CiBl eHRlcm4gY2hhciBnZXRfcmVsX3BlcnNpc3RlbmNlKE9pZCByZWxpZCk7CitleHRlcm4gYm9vbCBn ZXRfcmVsX3JlbGlzc2hhcmVkKE9pZCByZWxpZCk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zvcm1f ZnJvbXNxbChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExpc3QgKnRyZnR5cGVzKTsKIGV4dGVybiBP aWQJZ2V0X3RyYW5zZm9ybV90b3NxbChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExpc3QgKnRyZnR5 cGVzKTsKIGV4dGVybiBib29sIGdldF90eXBpc2RlZmluZWQoT2lkIHR5cGlkKTsKLS0gCjIuMzUu MwoK --00000000000041b1e2060642be90 Content-Type: application/octet-stream; name="v47-0008-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Disposition: attachment; filename="v47-0008-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ln0bz7un1 RnJvbSBhOWUyNTc2OTM3OTBhOGIzODIzYjU5OGVkZDA3MWRlNzQ3OGI2YmQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1NDoxNSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ3 IDgvOV0gRGVsYXkgbG9ja2luZyBvZiBjaGlsZCB0YWJsZXMgaW4gY2FjaGVkIHBsYW5zIHVudGls CiBFeGVjdXRvclN0YXJ0KCkKCkN1cnJlbnRseSwgR2V0Q2FjaGVkUGxhbigpIHRha2VzIGEgbG9j ayBvbiBhbGwgcmVsYXRpb25zIGNvbnRhaW5lZCBpbgphIGNhY2hlZCBwbGFuIGJlZm9yZSByZXR1 cm5pbmcgaXQgYXMgYSB2YWxpZCBwbGFuIHRvIGl0cyBjYWxsZXJzIGZvcgpleGVjdXRpb24uICBP bmUgZGlzYWR2YW50YWdlIGlzIHRoYXQgaWYgdGhlIHBsYW4gY29udGFpbnMgcGFydGl0aW9ucwp0 aGF0IGFyZSBwcnVuYWJsZSB3aXRoIGNvbmRpdGlvbnMgaW52b2x2aW5nIEVYVEVSTiBwYXJhbWV0 ZXJzIGFuZApvdGhlciBzdGFibGUgZXhwcmVzc2lvbnMgKGtub3duIGFzICJpbml0aWFsIHBydW5p bmciKSwgbWFueSBvZiB0aGVtCndvdWxkIGJlIGxvY2tlZCB1bm5lY2Vzc2FyaWx5LCBiZWNhdXNl IG9ubHkgdGhvc2UgdGhhdCBzdXJ2aXZlCmluaXRpYWwgcHJ1bmluZyBuZWVkIHRvIGhhdmUgYmVl biBsb2NrZWQuICBMb2NraW5nIGFsbCBwYXJ0aXRpb25zIHRoaXMKd2F5IGNhdXNlcyBzaWduaWZp Y2FudCBkZWxheSB3aGVuIHRoZXJlIGFyZSBtYW55IHBhcnRpdGlvbnMuICBOb3RlCnRoYXQgaW5p dGlhbCBwcnVuaW5nIG9jY3VycyBkdXJpbmcgZXhlY3V0b3IncyBpbml0aWFsaXphdGlvbiBvZiB0 aGUKcGxhbiwgdGhhdCBpcywgRXhlY0luaXROb2RlKCkuCgpQcmV2aW91cyBjb21taXRzIGhhdmUg bWFkZSBhbGwgdGhlIG5lY2Vzc2FyeSBhZGp1c3RtZW50IHRvIG1ha2UgdGhlCmV4ZWN1dG9yIGxv Y2sgY2hpbGQgdGFibGVzLCB0byBkZXRlY3QgaW52YWxpZGF0aW9uIG9mIHRoZSBDYWNoZWRQbGFu CnJlc3VsdGluZyBmcm9tIHRoYXQsIGFuZCB0byByZXRyeSB0aGUgZXhlY3V0aW9uIHdpdGggYSBu ZXcgQ2FjaGVQbGFuLgpTbywgdGhpcyBjb21taXQgc2ltcGx5IHJlbW92ZXMgdGhlIGNvZGUgaW4g cGxhbmNhY2hlLmMgdGhhdCBkb2VzIHRoZQoiZm9yIGV4ZWN1dGlvbiIgbG9ja2luZywgYWthIEFj cXVpcmVFeGVjdXRvckxvY2tzKCkuCgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NB K0hpd3FGR2tNU2dlNlRnQzlLUXpkZTBvaHBBeWNMUXVWN29vaXRFRXBiS0IwT19tZ0BtYWlsLmdt YWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jICAgICAgICAgICAgICAgICAg ICB8ICAgMiArLQogc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyAgICAgICAgICAgICAgICAgICAg IHwgICA2ICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyAgICAgICAgICAg fCAxNTQgKysrKysrKy0tLS0tLS0tLS0KIHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9u L01ha2VmaWxlICAgICB8ICAgMyArLQogLi4uL21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5 X2V4ZWN1dGlvbi5jIHwgIDY3ICsrKysrKystCiAuLi4vZXhwZWN0ZWQvY2FjaGVkLXBsYW4tcmVw bGFuLm91dCAgICAgICAgICAgfCAxNTggKysrKysrKysrKysrKysrKysrCiAuLi4vc3BlY3MvY2Fj aGVkLXBsYW4tcmVwbGFuLnNwZWMgICAgICAgICAgICAgfCAgNjEgKysrKysrKwogNyBmaWxlcyBj aGFuZ2VkLCAzNDMgaW5zZXJ0aW9ucygrKSwgMTA4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1w bGFuLXJlcGxhbi5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5 X2V4ZWN1dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBsYW4uc3BlYwoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKaW5k ZXggODE0ZmYxMzkwZi4uOWM0ZWQ3NDI0MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKQEAgLTI2ODAsNyArMjY4 MCw3IEBAIHJlcGxhbjoKIAkJCQkJc25hcCA9IEludmFsaWRTbmFwc2hvdDsKIAogCQkJCXFkZXNj ID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsCi0JCQkJCQkJCQkJTlVMTCwKKwkJCQkJCQkJCQljcGxh biwKIAkJCQkJCQkJCQlwbGFuc291cmNlLT5xdWVyeV9zdHJpbmcsCiAJCQkJCQkJCQkJc25hcCwg Y3Jvc3NjaGVja19zbmFwc2hvdCwKIAkJCQkJCQkJCQlkZXN0LApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5kZXggZmNm OTkyNWVkNC4uOGQwNzcyYWUyOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnku YworKysgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCkBAIC00MTIsNyArNDEyLDcgQEAgUG9y dGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJICogc2V0 IHRoZSBkZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4KIAkJCQkgKi8KIAkJCQlxdWVyeURlc2MgPSBD cmVhdGVRdWVyeURlc2MobGluaXRpYWxfbm9kZShQbGFubmVkU3RtdCwgcG9ydGFsLT5zdG10cyks Ci0JCQkJCQkJCQkJCU5VTEwsCisJCQkJCQkJCQkJCXBvcnRhbC0+Y3BsYW4sCiAJCQkJCQkJCQkJ CXBvcnRhbC0+c291cmNlVGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJ CQkJCQkJCQkJSW52YWxpZFNuYXBzaG90LApAQCAtNDQzLDYgKzQ0Myw3IEBAIFBvcnRhbFN0YXJ0 KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCSAqLwogCQkJCWlmICgh RXhlY3V0b3JTdGFydChxdWVyeURlc2MsIG15ZWZsYWdzKSkKIAkJCQl7CisJCQkJCUFzc2VydChx dWVyeURlc2MtPmNwbGFuKTsKIAkJCQkJRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKIAkJCQkJRnJl ZVF1ZXJ5RGVzYyhxdWVyeURlc2MpOwogCQkJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwpAQCAtNTQy LDcgKzU0Myw3IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFy YW1zLAogCQkJCQkJICogUG9ydGFsUnVuTXVsdGkoKSBiZWZvcmUgY2FsbGluZyBFeGVjdXRvclJ1 bigpLgogCQkJCQkJICovCiAJCQkJCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwK LQkJCQkJCQkJCQkJCQlOVUxMLAorCQkJCQkJCQkJCQkJCXBvcnRhbC0+Y3BsYW4sCiAJCQkJCQkJ CQkJCQkJcG9ydGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCQkJCQkJCSFpc191dGlsaXR5ID8KIAkJ CQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpIDoKQEAgLTU2Niw2ICs1NjcsNyBAQCBQb3J0 YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJCWlmICgh RXhlY3V0b3JTdGFydChxdWVyeURlc2MsIG15ZWZsYWdzKSkKIAkJCQkJCXsKIAkJCQkJCQlQb3BB Y3RpdmVTbmFwc2hvdCgpOworCQkJCQkJCUFzc2VydChxdWVyeURlc2MtPmNwbGFuKTsKIAkJCQkJ CQlFeGVjdXRvckVuZChxdWVyeURlc2MpOwogCQkJCQkJCUZyZWVRdWVyeURlc2MocXVlcnlEZXNj KTsKIAkJCQkJCQlwbGFuX3ZhbGlkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9wbGFuY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNo ZS5jCmluZGV4IDdkNDE2OGY4MmYuLjM1ZDkwM2NiOTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3Bs YW5jYWNoZS5jCkBAIC0xMDQsMTMgKzEwNCwxMyBAQCBzdGF0aWMgdm9pZCBSZWxlYXNlR2VuZXJp Y1BsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CiBzdGF0aWMgTGlzdCAqUmV2YWxp ZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSAg IFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIHN0YXRpYyBib29sIENoZWNrQ2FjaGVkUGxh bihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKTsKK3N0YXRpYyBib29sIEdlbmVyaWNQbGFu SXNWYWxpZChDYWNoZWRQbGFuICpjcGxhbik7CiBzdGF0aWMgQ2FjaGVkUGxhbiAqQnVpbGRDYWNo ZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0LAogCQkJCQkJ CQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVu dik7CiBzdGF0aWMgYm9vbCBjaG9vc2VfY3VzdG9tX3BsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxh bnNvdXJjZSwKIAkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zKTsKIHN0YXRpYyBk b3VibGUgY2FjaGVkX3BsYW5fY29zdChDYWNoZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxh bm5lcik7CiBzdGF0aWMgUXVlcnkgKlF1ZXJ5TGlzdEdldFByaW1hcnlTdG10KExpc3QgKnN0bXRz KTsKLXN0YXRpYyB2b2lkIEFjcXVpcmVFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9v bCBhY3F1aXJlKTsKIHN0YXRpYyB2b2lkIEFjcXVpcmVQbGFubmVyTG9ja3MoTGlzdCAqc3RtdF9s aXN0LCBib29sIGFjcXVpcmUpOwogc3RhdGljIHZvaWQgU2NhblF1ZXJ5Rm9yTG9ja3MoUXVlcnkg KnBhcnNldHJlZSwgYm9vbCBhY3F1aXJlKTsKIHN0YXRpYyBib29sIFNjYW5RdWVyeVdhbGtlcihO b2RlICpub2RlLCBib29sICphY3F1aXJlKTsKQEAgLTc5Miw4ICs3OTIsMTMgQEAgUmV2YWxpZGF0 ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAgKiBDYWxsZXIgbXVz dCBoYXZlIGFscmVhZHkgY2FsbGVkIFJldmFsaWRhdGVDYWNoZWRRdWVyeSB0byB2ZXJpZnkgdGhh dCB0aGUKICAqIHF1ZXJ5dHJlZSBpcyB1cCB0byBkYXRlLgogICoKLSAqIE9uIGEgInRydWUiIHJl dHVybiwgd2UgaGF2ZSBhY3F1aXJlZCB0aGUgbG9ja3MgbmVlZGVkIHRvIHJ1biB0aGUgcGxhbi4K LSAqIChXZSBtdXN0IGRvIHRoaXMgZm9yIHRoZSAidHJ1ZSIgcmVzdWx0IHRvIGJlIHJhY2UtY29u ZGl0aW9uLWZyZWUuKQorICogSWYgdGhlIHBsYW4gaW5jbHVkZXMgY2hpbGQgcmVsYXRpb25zIGlu dHJvZHVjZWQgYnkgdGhlIHBsYW5uZXIsIHRoZXkKKyAqIHdvdWxkbid0IGJlIGxvY2tlZCB5ZXQu IFRoaXMgaXMgYmVjYXVzZSBBY3F1aXJlUGxhbm5lckxvY2tzKCkgb25seSBsb2NrcworICogcmVs YXRpb25zIHByZXNlbnQgaW4gdGhlIG9yaWdpbmFsIHF1ZXJ5J3MgcmFuZ2UgdGFibGUgKGJlZm9y ZSBwbGFubmVyCisgKiBlbnRyeSkuIEhlbmNlLCB0aGUgcGxhbiBtaWdodCBiZWNvbWUgc3RhbGUg aWYgY2hpbGQgcmVsYXRpb25zIGFyZSBtb2RpZmllZAorICogY29uY3VycmVudGx5LiBEdXJpbmcg dGhlIHBsYW4gaW5pdGlhbGl6YXRpb24sIHRoZSBleGVjdXRvciBtdXN0IGVuc3VyZSB0aGUKKyAq IHBsYW4gKENhY2hlZFBsYW4pIHJlbWFpbnMgdmFsaWQgYWZ0ZXIgbG9ja2luZyBlYWNoIGNoaWxk IHRhYmxlLiBJZiBmb3VuZAorICogaW52YWxpZCwgdGhlIGNhbGxlciBzaG91bGQgYmUgcHJvbXB0 ZWQgdG8gcmVjcmVhdGUgdGhlIHBsYW4uCiAgKi8KIHN0YXRpYyBib29sCiBDaGVja0NhY2hlZFBs YW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKQEAgLTgwNyw2MCArODEyLDU2IEBAIENo ZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogCWlmICghcGxhbikK IAkJcmV0dXJuIGZhbHNlOwogCi0JQXNzZXJ0KHBsYW4tPm1hZ2ljID09IENBQ0hFRFBMQU5fTUFH SUMpOwotCS8qIEdlbmVyaWMgcGxhbnMgYXJlIG5ldmVyIG9uZS1zaG90ICovCi0JQXNzZXJ0KCFw bGFuLT5pc19vbmVzaG90KTsKKwlpZiAoR2VuZXJpY1BsYW5Jc1ZhbGlkKHBsYW4pKQorCQlyZXR1 cm4gdHJ1ZTsKIAogCS8qCi0JICogSWYgcGxhbiBpc24ndCB2YWxpZCBmb3IgY3VycmVudCByb2xl LCB3ZSBjYW4ndCB1c2UgaXQuCisJICogUGxhbiBoYXMgYmVlbiBpbnZhbGlkYXRlZCwgc28gdW5s aW5rIGl0IGZyb20gdGhlIHBhcmVudCBhbmQgcmVsZWFzZSBpdC4KIAkgKi8KLQlpZiAocGxhbi0+ aXNfdmFsaWQgJiYgcGxhbi0+ZGVwZW5kc09uUm9sZSAmJgotCQlwbGFuLT5wbGFuUm9sZUlkICE9 IEdldFVzZXJJZCgpKQotCQlwbGFuLT5pc192YWxpZCA9IGZhbHNlOworCVJlbGVhc2VHZW5lcmlj UGxhbihwbGFuc291cmNlKTsKIAotCS8qCi0JICogSWYgaXQgYXBwZWFycyB2YWxpZCwgYWNxdWly ZSBsb2NrcyBhbmQgcmVjaGVjazsgdGhpcyBpcyBtdWNoIHRoZSBzYW1lCi0JICogbG9naWMgYXMg aW4gUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5LCBidXQgZm9yIGEgcGxhbi4KLQkgKi8KLQlpZiAocGxh bi0+aXNfdmFsaWQpCisJcmV0dXJuIGZhbHNlOworfQorCisvKgorICogR2VuZXJpY1BsYW5Jc1Zh bGlkCisgKgkJSXMgYSBnZW5lcmljIHBsYW4gc3RpbGwgdmFsaWQ/CisgKgorICogSXQgbWF5IGhh dmUgZ29uZSBzdGFsZSBkdWUgdG8gY29uY3VycmVudCBzY2hlbWEgbW9kaWZpY2F0aW9ucyBvZiBy ZWxhdGlvbnMKKyAqIG1lbnRpb25lZCBpbiB0aGUgcGxhbiBvciBhIGNvdXBsZSBvZiBvdGhlciB0 aGluZ3MgbWVudGlvbmVkIGJlbG93LgorICovCitzdGF0aWMgYm9vbAorR2VuZXJpY1BsYW5Jc1Zh bGlkKENhY2hlZFBsYW4gKmNwbGFuKQoreworCUFzc2VydChjcGxhbiAhPSBOVUxMKTsKKwlBc3Nl cnQoY3BsYW4tPm1hZ2ljID09IENBQ0hFRFBMQU5fTUFHSUMpOworCS8qIEdlbmVyaWMgcGxhbnMg YXJlIG5ldmVyIG9uZS1zaG90ICovCisJQXNzZXJ0KCFjcGxhbi0+aXNfb25lc2hvdCk7CisKKwlp ZiAoY3BsYW4tPmlzX3ZhbGlkKQogCXsKIAkJLyoKIAkJICogUGxhbiBtdXN0IGhhdmUgcG9zaXRp dmUgcmVmY291bnQgYmVjYXVzZSBpdCBpcyByZWZlcmVuY2VkIGJ5CiAJCSAqIHBsYW5zb3VyY2U7 IHNvIG5vIG5lZWQgdG8gZmVhciBpdCBkaXNhcHBlYXJzIHVuZGVyIHVzIGhlcmUuCiAJCSAqLwot CQlBc3NlcnQocGxhbi0+cmVmY291bnQgPiAwKTsKLQotCQlBY3F1aXJlRXhlY3V0b3JMb2Nrcyhw bGFuLT5zdG10X2xpc3QsIHRydWUpOworCQlBc3NlcnQoY3BsYW4tPnJlZmNvdW50ID4gMCk7CiAK IAkJLyoKLQkJICogSWYgcGxhbiB3YXMgdHJhbnNpZW50LCBjaGVjayB0byBzZWUgaWYgVHJhbnNh Y3Rpb25YbWluIGhhcwotCQkgKiBhZHZhbmNlZCwgYW5kIGlmIHNvIGludmFsaWRhdGUgaXQuCisJ CSAqIElmIHBsYW4gaXNuJ3QgdmFsaWQgZm9yIGN1cnJlbnQgcm9sZSwgd2UgY2FuJ3QgdXNlIGl0 LgogCQkgKi8KLQkJaWYgKHBsYW4tPmlzX3ZhbGlkICYmCi0JCQlUcmFuc2FjdGlvbklkSXNWYWxp ZChwbGFuLT5zYXZlZF94bWluKSAmJgotCQkJIVRyYW5zYWN0aW9uSWRFcXVhbHMocGxhbi0+c2F2 ZWRfeG1pbiwgVHJhbnNhY3Rpb25YbWluKSkKLQkJCXBsYW4tPmlzX3ZhbGlkID0gZmFsc2U7CisJ CWlmIChjcGxhbi0+ZGVwZW5kc09uUm9sZSAmJiBjcGxhbi0+cGxhblJvbGVJZCAhPSBHZXRVc2Vy SWQoKSkKKwkJCWNwbGFuLT5pc192YWxpZCA9IGZhbHNlOwogCiAJCS8qCi0JCSAqIEJ5IG5vdywg aWYgYW55IGludmFsaWRhdGlvbiBoYXMgaGFwcGVuZWQsIHRoZSBpbnZhbCBjYWxsYmFjawotCQkg KiBmdW5jdGlvbnMgd2lsbCBoYXZlIG1hcmtlZCB0aGUgcGxhbiBpbnZhbGlkLgorCQkgKiBJZiBw bGFuIHdhcyB0cmFuc2llbnQsIGNoZWNrIHRvIHNlZSBpZiBUcmFuc2FjdGlvblhtaW4gaGFzCisJ CSAqIGFkdmFuY2VkLCBhbmQgaWYgc28gaW52YWxpZGF0ZSBpdC4KIAkJICovCi0JCWlmIChwbGFu LT5pc192YWxpZCkKLQkJewotCQkJLyogU3VjY2Vzc2Z1bGx5IHJldmFsaWRhdGVkIGFuZCBsb2Nr ZWQgdGhlIHF1ZXJ5LiAqLwotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQotCQkvKiBPb3BzLCB0aGUg cmFjZSBjYXNlIGhhcHBlbmVkLiAgUmVsZWFzZSB1c2VsZXNzIGxvY2tzLiAqLwotCQlBY3F1aXJl RXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10X2xpc3QsIGZhbHNlKTsKKwkJaWYgKFRyYW5zYWN0aW9u SWRJc1ZhbGlkKGNwbGFuLT5zYXZlZF94bWluKSAmJgorCQkJIVRyYW5zYWN0aW9uSWRFcXVhbHMo Y3BsYW4tPnNhdmVkX3htaW4sIFRyYW5zYWN0aW9uWG1pbikpCisJCQljcGxhbi0+aXNfdmFsaWQg PSBmYWxzZTsKIAl9CiAKLQkvKgotCSAqIFBsYW4gaGFzIGJlZW4gaW52YWxpZGF0ZWQsIHNvIHVu bGluayBpdCBmcm9tIHRoZSBwYXJlbnQgYW5kIHJlbGVhc2UgaXQuCi0JICovCi0JUmVsZWFzZUdl bmVyaWNQbGFuKHBsYW5zb3VyY2UpOwotCi0JcmV0dXJuIGZhbHNlOworCXJldHVybiBjcGxhbi0+ aXNfdmFsaWQ7CiB9CiAKIC8qCkBAIC0xMTMwLDggKzExMzEsMTYgQEAgY2FjaGVkX3BsYW5fY29z dChDYWNoZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcikKICAqIHBsYW4gb3IgYSBj dXN0b20gcGxhbiBmb3IgdGhlIGdpdmVuIHBhcmFtZXRlcnM6IHRoZSBjYWxsZXIgZG9lcyBub3Qg a25vdwogICogd2hpY2ggaXQgd2lsbCBnZXQuCiAgKgotICogT24gcmV0dXJuLCB0aGUgcGxhbiBp cyB2YWxpZCBhbmQgd2UgaGF2ZSBzdWZmaWNpZW50IGxvY2tzIHRvIGJlZ2luCi0gKiBleGVjdXRp b24uCisgKiBUeXBpY2FsbHksIHRoZSBwbGFuIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gaXMg dmFsaWQuIEhvd2V2ZXIsIGEgY2F2ZWF0CisgKiBhcmlzZXMgd2l0aCBpbmhlcml0YW5jZS9wYXJ0 aXRpb24gY2hpbGQgdGFibGVzLiBUaGVzZSBhcmVuJ3QgbG9ja2VkIGJ5CisgKiB0aGlzIGZ1bmN0 aW9uLCBhcyB3ZSBvbmx5IGxvY2sgdGFibGVzIGRpcmVjdGx5IG1lbnRpb25lZCBpbiB0aGUgb3Jp Z2luYWwKKyAqIHF1ZXJ5IGhlcmUuICBUaGUgdGFzayBvZiBsb2NraW5nIHRoZXNlIGNoaWxkIHRh YmxlcyBmYWxscyB0byB0aGUgZXhlY3V0b3IKKyAqIGR1cmluZyBwbGFuIHRyZWUgc2V0dXAuIElm IGFjcXVpcmluZyB0aGVzZSBsb2NrcyBpbnZhbGlkYXRlcyB0aGUgcGxhbiwgdGhlCisgKiBleGVj dXRvciBzaG91bGQgaW5mb3JtIHRoZSBjYWxsZXIgdG8gcmVnZW5lcmF0ZSB0aGUgcGxhbiBieSBp bnZva2luZyB0aGlzCisgKiBmdW5jdGlvbiBhZ2Fpbi4gIFRoZSByZWFzb24gZm9yIHRoaXMgZGVm ZXJyZWQgY2hpbGQgdGFibGUgbG9ja2luZyBtZWNoYW5pc20KKyAqIGlzIGVmZmljaWVuY3k6IG5v dCBhbGwgbWlnaHQgbmVlZCB0byBiZSBsb2NrZWQuIFNvbWUgY291bGQgYmUgcHJ1bmVkIGR1cmlu ZworICogZXhlY3V0b3IgaW5pdGlhbGl6YXRpb24sIGVzcGVjaWFsbHkgaWYgdGhlaXIgY29ycmVz cG9uZGluZyBwbGFuIG5vZGVzCisgKiBmYWNpbGl0YXRlIHBhcnRpdGlvbiBwcnVuaW5nLgogICoK ICAqIE9uIHJldHVybiwgdGhlIHJlZmNvdW50IG9mIHRoZSBwbGFuIGhhcyBiZWVuIGluY3JlbWVu dGVkOyBhIGxhdGVyCiAgKiBSZWxlYXNlQ2FjaGVkUGxhbigpIGNhbGwgaXMgZXhwZWN0ZWQuICBJ ZiAib3duZXIiIGlzIG5vdCBOVUxMIHRoZW4KQEAgLTExNjYsNyArMTE3NSwxMCBAQCBHZXRDYWNo ZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQ YXJhbXMsCiAJewogCQlpZiAoQ2hlY2tDYWNoZWRQbGFuKHBsYW5zb3VyY2UpKQogCQl7Ci0JCQkv KiBXZSB3YW50IGEgZ2VuZXJpYyBwbGFuLCBhbmQgd2UgYWxyZWFkeSBoYXZlIGEgdmFsaWQgb25l ICovCisJCQkvKgorCQkJICogV2Ugd2FudCBhIGdlbmVyaWMgcGxhbiwgYW5kIHdlIGFscmVhZHkg aGF2ZSBhIHZhbGlkIG9uZSwgdGhvdWdoCisJCQkgKiBzZWUgdGhlIGhlYWRlciBjb21tZW50Lgor CQkJICovCiAJCQlwbGFuID0gcGxhbnNvdXJjZS0+Z3BsYW47CiAJCQlBc3NlcnQocGxhbi0+bWFn aWMgPT0gQ0FDSEVEUExBTl9NQUdJQyk7CiAJCX0KQEAgLTEzNjQsOCArMTM3Niw4IEBAIENhY2hl ZFBsYW5BbGxvd3NTaW1wbGVWYWxpZGl0eUNoZWNrKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3Vy Y2UsCiAJfQogCiAJLyoKLQkgKiBSZWplY3QgaWYgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mgd291bGQg aGF2ZSBhbnl0aGluZyB0byBkby4gIFRoaXMgaXMKLQkgKiBwcm9iYWJseSB1bm5lY2Vzc2FyeSBn aXZlbiB0aGUgcHJldmlvdXMgY2hlY2ssIGJ1dCBsZXQncyBiZSBzYWZlLgorCSAqIFJlamVjdCBp ZiB0aGUgZXhlY3V0b3Igd291bGQgbmVlZCB0byB0YWtlIGFkZGl0aW9uYWwgbG9ja3MsIHRoYXQg aXMsIGluCisJICogYWRkaXRpb24gdG8gdGhvc2UgdGFrZW4gYnkgQWNxdWlyZVBsYW5uZXJMb2Nr cygpIG9uIGEgZ2l2ZW4gcXVlcnkuCiAJICovCiAJZm9yZWFjaChsYywgcGxhbi0+c3RtdF9saXN0 KQogCXsKQEAgLTE3NDEsNTggKzE3NTMsNiBAQCBRdWVyeUxpc3RHZXRQcmltYXJ5U3RtdChMaXN0 ICpzdG10cykKIAlyZXR1cm4gTlVMTDsKIH0KIAotLyoKLSAqIEFjcXVpcmVFeGVjdXRvckxvY2tz OiBhY3F1aXJlIGxvY2tzIG5lZWRlZCBmb3IgZXhlY3V0aW9uIG9mIGEgY2FjaGVkIHBsYW47Ci0g KiBvciByZWxlYXNlIHRoZW0gaWYgYWNxdWlyZSBpcyBmYWxzZS4KLSAqLwotc3RhdGljIHZvaWQK LUFjcXVpcmVFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKQotewot CUxpc3RDZWxsICAgKmxjMTsKLQotCWZvcmVhY2gobGMxLCBzdG10X2xpc3QpCi0JewotCQlQbGFu bmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMxKTsKLQkJ TGlzdENlbGwgICAqbGMyOwotCi0JCWlmIChwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUgPT0gQ01E X1VUSUxJVFkpCi0JCXsKLQkJCS8qCi0JCQkgKiBJZ25vcmUgdXRpbGl0eSBzdGF0ZW1lbnRzLCBl eGNlcHQgdGhvc2UgKHN1Y2ggYXMgRVhQTEFJTikgdGhhdAotCQkJICogY29udGFpbiBhIHBhcnNl ZC1idXQtbm90LXBsYW5uZWQgcXVlcnkuICBOb3RlOiBpdCdzIG9rYXkgdG8gdXNlCi0JCQkgKiBT Y2FuUXVlcnlGb3JMb2NrcywgZXZlbiB0aG91Z2ggdGhlIHF1ZXJ5IGhhc24ndCBiZWVuIHRocm91 Z2gKLQkJCSAqIHJ1bGUgcmV3cml0aW5nLCBiZWNhdXNlIHJld3JpdGluZyBkb2Vzbid0IGNoYW5n ZSB0aGUgcXVlcnkKLQkJCSAqIHJlcHJlc2VudGF0aW9uLgotCQkJICovCi0JCQlRdWVyeQkgICAq cXVlcnkgPSBVdGlsaXR5Q29udGFpbnNRdWVyeShwbGFubmVkc3RtdC0+dXRpbGl0eVN0bXQpOwot Ci0JCQlpZiAocXVlcnkpCi0JCQkJU2NhblF1ZXJ5Rm9yTG9ja3MocXVlcnksIGFjcXVpcmUpOwot CQkJY29udGludWU7Ci0JCX0KLQotCQlmb3JlYWNoKGxjMiwgcGxhbm5lZHN0bXQtPnJ0YWJsZSkK LQkJewotCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gKFJhbmdlVGJsRW50cnkgKikgbGZpcnN0KGxj Mik7Ci0KLQkJCWlmICghKHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04gfHwKLQkJCQkgIChy dGUtPnJ0ZWtpbmQgPT0gUlRFX1NVQlFVRVJZICYmIE9pZElzVmFsaWQocnRlLT5yZWxpZCkpKSkK LQkJCQljb250aW51ZTsKLQotCQkJLyoKLQkJCSAqIEFjcXVpcmUgdGhlIGFwcHJvcHJpYXRlIHR5 cGUgb2YgbG9jayBvbiBlYWNoIHJlbGF0aW9uIE9JRC4gTm90ZQotCQkJICogdGhhdCB3ZSBkb24n dCBhY3R1YWxseSB0cnkgdG8gb3BlbiB0aGUgcmVsLCBhbmQgaGVuY2Ugd2lsbCBub3QKLQkJCSAq IGZhaWwgaWYgaXQncyBiZWVuIGRyb3BwZWQgZW50aXJlbHkgLS0tIHdlJ2xsIGp1c3QgdHJhbnNp ZW50bHkKLQkJCSAqIGFjcXVpcmUgYSBub24tY29uZmxpY3RpbmcgbG9jay4KLQkJCSAqLwotCQkJ aWYgKGFjcXVpcmUpCi0JCQkJTG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9j a21vZGUpOwotCQkJZWxzZQotCQkJCVVubG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+ cmVsbG9ja21vZGUpOwotCQl9Ci0JfQotfQotCiAvKgogICogQWNxdWlyZVBsYW5uZXJMb2Nrczog YWNxdWlyZSBsb2NrcyBuZWVkZWQgZm9yIHBsYW5uaW5nIG9mIGEgcXVlcnl0cmVlIGxpc3Q7CiAg KiBvciByZWxlYXNlIHRoZW0gaWYgYWNxdWlyZSBpcyBmYWxzZS4KZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy9k ZWxheV9leGVjdXRpb24vTWFrZWZpbGUKaW5kZXggNzBmMjRlODQ2ZC4uMmZjYTg0ZDAyNyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUKQEAgLTgsNyArOCw4IEBA IE9CSlMgPSBcCiAJZGVsYXlfZXhlY3V0aW9uLm8KIAogSVNPTEFUSU9OID0gcGFydGl0aW9uLWFk ZGl0aW9uIFwKLQkgICAgcGFydGl0aW9uLXJlbW92YWwtMQorCSAgICBwYXJ0aXRpb24tcmVtb3Zh bC0xIFwKKwkJY2FjaGVkLXBsYW4tcmVwbGFuCiAKIGlmZGVmIFVTRV9QR1hTCiBQR19DT05GSUcg PSBwZ19jb25maWcKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9u L2RlbGF5X2V4ZWN1dGlvbi5jIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVs YXlfZXhlY3V0aW9uLmMKaW5kZXggN2NkNzZlYjM0Yi4uY2UxODkxNTZhZCAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMKQEAgLTEs MTQgKzEsMTggQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAqIGRlbGF5X2V4ZWN1dGlvbi5j Ci0gKgkJVGVzdCBtb2R1bGUgdG8gYWxsb3cgZGVsYXkgYmV0d2VlbiBwYXJzaW5nIGFuZCBleGVj dXRpb24gb2YgYSBxdWVyeS4KKyAqCQlUZXN0IG1vZHVsZSB0byBpbnRyb2R1Y2UgZGVsYXkgYXQg dmFyaW91cyBwb2ludHMgZHVyaW5nIGV4ZWN1dGlvbiBvZiBhCisgKgkJcXVlcnkgdG8gdGVzdCB0 aGF0IGV4ZWN1dGlvbiBwcm9jZWVkcyBzYWZlbHkgaW4gbGlnaHQgb2YgY29uY3VycmVudAorICoJ CWNoYW5nZXMuCiAgKgogICogVGhlIGRlbGF5IGlzIGltcGxlbWVudGVkIGJ5IHRha2luZyBhbmQg aW1tZWRpYXRlbHkgcmVsZWFzaW5nIGEgc3BlY2lmaWVkCiAgKiBhZHZpc29yeSBsb2NrLiAgSWYg YW5vdGhlciBwcm9jZXNzIGhhcyBwcmV2aW91c2x5IHRha2VuIHRoYXQgbG9jaywgdGhlCiAgKiBj dXJyZW50IHByb2Nlc3Mgd2lsbCBiZSBibG9ja2VkIHVudGlsIHRoZSBsb2NrIGlzIHJlbGVhc2Vk OyBvdGhlcndpc2UsCiAgKiB0aGVyZSdzIG5vIGVmZmVjdC4gIFRoaXMgYWxsb3dzIGFuIGlzb2xh dGlvbnRlc3RlciBzY3JpcHQgdG8gcmVsaWFibHkKLSAqIHRlc3QgYmVoYXZpb3JzIHdoZXJlIHNv bWUgc3BlY2lmaWVkIGFjdGlvbiBoYXBwZW5zIGluIGFub3RoZXIgYmFja2VuZAotICogYmV0d2Vl biBwYXJzaW5nIGFuZCBleGVjdXRpb24gb2YgYW55IGRlc2lyZWQgcXVlcnkuCisgKiB0ZXN0IGJl aGF2aW9ycyB3aGVyZSBzb21lIHNwZWNpZmllZCBhY3Rpb24gaGFwcGVucyBpbiBhbm90aGVyIGJh Y2tlbmQgaW4KKyAqIGEgY291cGxlIG9mIGNhc2VzOiAxKSBiZXR3ZWVuIHBhcnNpbmcgYW5kIGV4 ZWN1dGlvbiBvZiBhbnkgZGVzaXJlZCBxdWVyeQorICogd2hlbiB1c2luZyB0aGUgcGxhbm5lcl9o b29rLCAyKSBiZXR3ZWVuIFJldmFsaWRhdGVDYWNoZWRRdWVyeSgpIGFuZAorICogRXhlY3V0b3JT dGFydCgpIHdoZW4gdXNpbmcgdGhlIEV4ZWN1dG9yU3RhcnRfaG9vay4KICAqCiAgKiBDb3B5cmln aHQgKGMpIDIwMjAtMjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKICAq CkBAIC0yMiw2ICsyNiw3IEBACiAKICNpbmNsdWRlIDxsaW1pdHMuaD4KIAorI2luY2x1ZGUgImV4 ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5uZXIuaCIKICNpbmNs dWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgpAQCAtMzIsOSAr MzcsMTEgQEAgUEdfTU9EVUxFX01BR0lDOwogCiAvKiBHVUM6IGFkdmlzb3J5IGxvY2sgSUQgdG8g dXNlLiAgWmVybyBkaXNhYmxlcyB0aGUgZmVhdHVyZS4gKi8KIHN0YXRpYyBpbnQJcG9zdF9wbGFu bmluZ19sb2NrX2lkID0gMDsKK3N0YXRpYyBpbnQJZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDA7 CiAKLS8qIFNhdmUgcHJldmlvdXMgcGxhbm5lciBob29rIHVzZXIgdG8gYmUgYSBnb29kIGNpdGl6 ZW4gKi8KKy8qIFNhdmUgcHJldmlvdXMgaG9vayB1c2VycyB0byBiZSBhIGdvb2QgY2l0aXplbiAq Lwogc3RhdGljIHBsYW5uZXJfaG9va190eXBlIHByZXZfcGxhbm5lcl9ob29rID0gTlVMTDsKK3N0 YXRpYyBFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yU3RhcnRfaG9vayA9IE5V TEw7CiAKIAogLyogcGxhbm5lcl9ob29rIGZ1bmN0aW9uIHRvIHByb3ZpZGUgdGhlIGRlc2lyZWQg ZGVsYXkgKi8KQEAgLTcwLDExICs3Nyw0NSBAQCBkZWxheV9leGVjdXRpb25fcGxhbm5lcihRdWVy eSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywKIAlyZXR1cm4gcmVzdWx0OwogfQog CisvKiBFeGVjdXRvclN0YXJ0X2hvb2sgZnVuY3Rpb24gdG8gcHJvdmlkZSB0aGUgZGVzaXJlZCBk ZWxheSAqLworc3RhdGljIGJvb2wKK2RlbGF5X2V4ZWN1dGlvbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5 RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQoreworCWJvb2wJcGxhbl92YWxpZDsKKworCS8q IElmIGVuYWJsZWQsIGRlbGF5IGJ5IHRha2luZyBhbmQgcmVsZWFzaW5nIHRoZSBzcGVjaWZpZWQg bG9jayAqLworCWlmIChleGVjdXRvcl9zdGFydF9sb2NrX2lkICE9IDApCisJeworCQlEaXJlY3RG dW5jdGlvbkNhbGwxKHBnX2Fkdmlzb3J5X2xvY2tfaW50OCwKKwkJCQkJCQlJbnQ2NEdldERhdHVt KChpbnQ2NCkgZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCkpOworCQlEaXJlY3RGdW5jdGlvbkNhbGwx KHBnX2Fkdmlzb3J5X3VubG9ja19pbnQ4LAorCQkJCQkJCUludDY0R2V0RGF0dW0oKGludDY0KSBl eGVjdXRvcl9zdGFydF9sb2NrX2lkKSk7CisKKwkJLyoKKwkJICogRW5zdXJlIHRoYXQgd2Ugbm90 aWNlIGFueSBwZW5kaW5nIGludmFsaWRhdGlvbnMsIHNpbmNlIHRoZSBhZHZpc29yeQorCQkgKiBs b2NrIGZ1bmN0aW9ucyBkb24ndCBkbyB0aGlzLgorCQkgKi8KKwkJQWNjZXB0SW52YWxpZGF0aW9u TWVzc2FnZXMoKTsKKwl9CisKKwkvKiBOb3cgc3RhcnQgdGhlIGV4ZWN1dG9yLCBwb3NzaWJseSB2 aWEgYSBwcmV2aW91cyBob29rIHVzZXIgKi8KKwlpZiAocHJldl9FeGVjdXRvclN0YXJ0X2hvb2sp CisJCXBsYW5fdmFsaWQgPSBwcmV2X0V4ZWN1dG9yU3RhcnRfaG9vayhxdWVyeURlc2MsIGVmbGFn cyk7CisJZWxzZQorCQlwbGFuX3ZhbGlkID0gc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURl c2MsIGVmbGFncyk7CisKKwlpZiAoZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCAhPSAwKQorCQllbG9n KE5PVElDRSwgIkZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyAlcyIsCisJ CQkgcGxhbl92YWxpZCA/ICJ2YWxpZCIgOiAibm90IHZhbGlkIik7CisKKwlyZXR1cm4gcGxhbl92 YWxpZDsKK30KKwogLyogTW9kdWxlIGxvYWQgZnVuY3Rpb24gKi8KIHZvaWQKIF9QR19pbml0KHZv aWQpCiB7Ci0JLyogU2V0IHVwIHRoZSBHVUMgdG8gY29udHJvbCB3aGljaCBsb2NrIGlzIHVzZWQg Ki8KKwkvKiBTZXQgdXAgR1VDcyB0byBjb250cm9sIHdoaWNoIGxvY2sgaXMgdXNlZCAqLwogCURl ZmluZUN1c3RvbUludFZhcmlhYmxlKCJkZWxheV9leGVjdXRpb24ucG9zdF9wbGFubmluZ19sb2Nr X2lkIiwKIAkJCQkJCQkiU2V0cyB0aGUgYWR2aXNvcnkgbG9jayBJRCB0byBiZSBsb2NrZWQvdW5s b2NrZWQgYWZ0ZXIgcGxhbm5pbmcuIiwKIAkJCQkJCQkiWmVybyBkaXNhYmxlcyB0aGUgZGVsYXku IiwKQEAgLTg2LDEwICsxMjcsMjIgQEAgX1BHX2luaXQodm9pZCkKIAkJCQkJCQlOVUxMLAogCQkJ CQkJCU5VTEwsCiAJCQkJCQkJTlVMTCk7Ci0KKwlEZWZpbmVDdXN0b21JbnRWYXJpYWJsZSgiZGVs YXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQiLAorCQkJCQkJCSJTZXRzIHRoZSBh ZHZpc29yeSBsb2NrIElEIHRvIGJlIGxvY2tlZC91bmxvY2tlZCBiZWZvcmUgc3RhcnRpbmcgZXhl Y3V0aW9uLiIsCisJCQkJCQkJIlplcm8gZGlzYWJsZXMgdGhlIGRlbGF5LiIsCisJCQkJCQkJJmV4 ZWN1dG9yX3N0YXJ0X2xvY2tfaWQsCisJCQkJCQkJMCwKKwkJCQkJCQkwLCBJTlRfTUFYLAorCQkJ CQkJCVBHQ19VU0VSU0VULAorCQkJCQkJCTAsCisJCQkJCQkJTlVMTCwKKwkJCQkJCQlOVUxMLAor CQkJCQkJCU5VTEwpOwogCU1hcmtHVUNQcmVmaXhSZXNlcnZlZCgiZGVsYXlfZXhlY3V0aW9uIik7 CiAKLQkvKiBJbnN0YWxsIG91ciBob29rICovCisJLyogSW5zdGFsbCBvdXIgaG9va3MuICovCiAJ cHJldl9wbGFubmVyX2hvb2sgPSBwbGFubmVyX2hvb2s7CiAJcGxhbm5lcl9ob29rID0gZGVsYXlf ZXhlY3V0aW9uX3BsYW5uZXI7CisJcHJldl9FeGVjdXRvclN0YXJ0X2hvb2sgPSBFeGVjdXRvclN0 YXJ0X2hvb2s7CisJRXhlY3V0b3JTdGFydF9ob29rID0gZGVsYXlfZXhlY3V0aW9uX0V4ZWN1dG9y U3RhcnQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9l eHBlY3RlZC9jYWNoZWQtcGxhbi1yZXBsYW4ub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9l eGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4tcmVwbGFuLm91dApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi4xMjJkODFmMmVlCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4tcmVwbGFu Lm91dApAQCAtMCwwICsxLDE1OCBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDIgc2Vzc2lvbnMK Kworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJlcCBzMmxvY2sgczFleGVjIHMyZHJvcGkgczJ1 bmxvY2sKK3N0ZXAgczFwcmVwOiBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19w bGFuOworCQkgIFBSRVBBUkUgcSBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9ICQxIEZP UiBVUERBVEU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOworUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTG9ja1Jvd3MgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAg ICAgIAorICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBmb28xMSBmb29fMSAgIAorICAg ICAgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0gJDEpICAgICAgICAgIAorICAgICAgICAgICAg ICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTFfYQorICAgICAgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoYSA9ICQxKSAgICAgIAorKDcgcm93cykKKworc3RlcCBzMmxvY2s6IFNFTEVD VCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X2xvY2sKKy0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWM6IExPQUQgJ2Rl bGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9s b2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOyA8 d2FpdGluZyAuLi4+CitzdGVwIHMyZHJvcGk6IERST1AgSU5ERVggZm9vMTFfYTsKK3N0ZXAgczJ1 bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5s b2NrCistLS0tLS0tLS0tLS0tLS0tLS0KK3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitz dGVwIHMxZXhlYzogPC4uLiBjb21wbGV0ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0 b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVk IEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitM b2NrUm93cyAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgQXBwZW5kICAgICAgICAg ICAgICAgICAgICAgICAKKyAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgCisgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBmb28xMSBmb29fMQorICAgICAgICAgICAgICBGaWx0ZXI6IChh ID0gJDEpICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJlcDIg czJsb2NrIHMxZXhlYzIgczJkcm9waSBzMnVubG9jaworc3RlcCBzMXByZXAyOiBTRVQgcGxhbl9j YWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcTIgQVMgU0VMRUNU ICogRlJPTSBmb292IFdIRVJFIGEgPSAxOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VU RSBxMjsKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4g aXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0JpdG1hcCBIZWFwIFNjYW4gb24gZm9vMTEgZm9vICAg ICAKKyAgUmVjaGVjayBDb25kOiAoYSA9IDEpICAgICAgICAgICAKKyAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIGZvbzExX2EKKyAgICAgICAgSW5kZXggQ29uZDogKGEgPSAxKSAgICAgICAKKyg0 IHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygxMjM0NSk7Citw Z19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgCisoMSBy b3cpCisKK3N0ZXAgczFleGVjMjogTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVs YXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlO IChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczJkcm9waTogRFJP UCBJTkRFWCBmb28xMV9hOworc3RlcCBzMnVubG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9j aygxMjM0NSk7CitwZ19hZHZpc29yeV91bmxvY2sKKy0tLS0tLS0tLS0tLS0tLS0tLQordCAgICAg ICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjMjogPC4uLiBjb21wbGV0ZWQ+Citz MTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIG5vdCB2 YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBp cyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Nl cSBTY2FuIG9uIGZvbzExIGZvbworICBGaWx0ZXI6IChhID0gMSkgICAgCisoMiByb3dzKQorCisK K3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMXByZXAzIHMybG9jayBzMWV4ZWMzIHMyZHJvcGkgczJ1 bmxvY2sKK3N0ZXAgczFwcmVwMzogU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNf cGxhbjsKKwkJICBTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2VfYWdncmVnYXRlID0gb247CisJCSAg U0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW4gPSBvbjsKKwkJICBQUkVQQVJFIHEzIEFTIFNF TEVDVCB0MS5hLCBjb3VudCh0Mi5iKSBGUk9NIGZvbyB0MSwgZm9vIHQyIFdIRVJFIHQxLmEgPSB0 Mi5hIEdST1VQIEJZIDE7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEzOworczE6 IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAor UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorICAtPiAgR3JvdXBBZ2dyZWdhdGUgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCisgICAgICAgIEdyb3VwIEtleTogdDEuYSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIE1lcmdlIEpvaW4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBNZXJnZSBDb25kOiAo dDEuYSA9IHQyLmEpICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIC0+ICBJbmRl eCBPbmx5IFNjYW4gdXNpbmcgZm9vMTFfYSBvbiBmb28xMSB0MSAKKyAgICAgICAgICAgICAgLT4g IE1hdGVyaWFsaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg ICAgICAgICAtPiAgSW5kZXggU2NhbiB1c2luZyBmb28xMV9hIG9uIGZvbzExIHQyCisgIC0+ICBH cm91cEFnZ3JlZ2F0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg ICAgICAgR3JvdXAgS2V5OiB0MV8xLmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorICAgICAgICAtPiAgTWVyZ2UgSm9pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCisgICAgICAgICAgICAgIE1lcmdlIENvbmQ6ICh0MV8xLmEgPSB0Ml8xLmEpICAgICAg ICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIFNvcnQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDFfMS5hICAg ICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBmb28yIHQxXzEgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIFNvcnQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBTb3J0 IEtleTogdDJfMS5hICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBmb28yIHQyXzEgICAgICAgICAgICAgICAKKygxOCByb3dzKQorCitz dGVwIHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOworcGdfYWR2aXNvcnlf bG9jaworLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVw IHMxZXhlYzM6IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlv bi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZG KSBFWEVDVVRFIHEzOyA8d2FpdGluZyAuLi4+CitzdGVwIHMyZHJvcGk6IERST1AgSU5ERVggZm9v MTFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soMTIzNDUpOwor cGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0tLS0tLS0tLS0KK3QgICAgICAgICAgICAgICAg IAorKDEgcm93KQorCitzdGVwIHMxZXhlYzM6IDwuLi4gY29tcGxldGVkPgorczE6IE5PVElDRTog IEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyBub3QgdmFsaWQKK3MxOiBO T1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBcHBlbmQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIEdyb3VwQWdncmVnYXRlICAgICAgICAgICAg ICAgICAgICAgICAgIAorICAgICAgICBHcm91cCBLZXk6IHQxLmEgICAgICAgICAgICAgICAgICAg ICAgCisgICAgICAgIC0+ICBNZXJnZSBKb2luICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAg ICAgICAgICAgTWVyZ2UgQ29uZDogKHQxLmEgPSB0Mi5hKSAgICAgIAorICAgICAgICAgICAgICAt PiAgU29ydCAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFNvcnQg S2V5OiB0MS5hICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IGZvbzExIHQxIAorICAgICAgICAgICAgICAtPiAgU29ydCAgICAgICAgICAgICAgICAgICAgICAg CisgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Mi5hICAgICAgICAgICAKKyAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzExIHQyIAorICAtPiAgR3JvdXBBZ2dyZWdh dGUgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIEdyb3VwIEtleTogdDFfMS5hICAg ICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIE1lcmdlIEpvaW4gICAgICAgICAgICAgICAg ICAgICAgIAorICAgICAgICAgICAgICBNZXJnZSBDb25kOiAodDFfMS5hID0gdDJfMS5hKSAgCisg ICAgICAgICAgICAgIC0+ICBTb3J0ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg ICAgICAgICAgU29ydCBLZXk6IHQxXzEuYSAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gZm9vMiB0MV8xCisgICAgICAgICAgICAgIC0+ICBTb3J0ICAgICAgICAg ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQyXzEuYSAgICAg ICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMiB0Ml8xCisoMjEg cm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3Bl Y3MvY2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1 dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBsYW4uc3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi4yZDA2MDdiMTc2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMKQEAg LTAsMCArMSw2MSBAQAorIyBUZXN0IHRvIGNoZWNrIHRoYXQgaW52YWxpZGF0aW9uIG9mIGNhY2hl ZCBnZW5lcmljIHBsYW5zIGR1cmluZyBFeGVjdXRvclN0YXJ0CisjIGNvcnJlY3RseSB0cmlnZ2Vy cyByZXBsYW5uaW5nIGFuZCByZS1leGVjdXRpb24uCisKK3NldHVwCit7CisgIENSRUFURSBUQUJM RSBmb28gKGEgaW50LCBiIHRleHQpIFBBUlRJVElPTiBCWSBMSVNUKGEpOworICBDUkVBVEUgVEFC TEUgZm9vMSBQQVJUSVRJT04gT0YgZm9vIEZPUiBWQUxVRVMgSU4gKDEpIFBBUlRJVElPTiBCWSBM SVNUIChhKTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzExIFBBUlRJVElPTiBPRiBmb28xIEZPUiBWQUxV RVMgSU4gKDEpOworICBDUkVBVEUgSU5ERVggZm9vMTFfYSBPTiBmb28xMSAoYSk7CisgIENSRUFU RSBUQUJMRSBmb28yIFBBUlRJVElPTiBPRiBmb28gRk9SIFZBTFVFUyBJTiAoMik7CisgIENSRUFU RSBWSUVXIGZvb3YgQVMgU0VMRUNUICogRlJPTSBmb287Cit9CisKK3RlYXJkb3duCit7CisgIERS T1AgVklFVyBmb292OworICBEUk9QIFRBQkxFIGZvbzsKK30KKworc2Vzc2lvbiAiczEiCisjIEFw cGVuZCB3aXRoIHJ1bi10aW1lIHBydW5pbmcKK3N0ZXAgInMxcHJlcCIgICB7IFNFVCBwbGFuX2Nh Y2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxIEFTIFNFTEVDVCAq IEZST00gZm9vdiBXSEVSRSBhID0gJDEgRk9SIFVQREFURTsKKwkJICBFWFBMQUlOIChDT1NUUyBP RkYpIEVYRUNVVEUgcSAoMSk7IH0KKworIyBubyBBcHBlbmQgY2FzZSAob25seSBvbmUgcGFydGl0 aW9uIHNlbGVjdGVkIGJ5IHRoZSBwbGFubmVyKQorc3RlcCAiczFwcmVwMiIgICB7IFNFVCBwbGFu X2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxMiBBUyBTRUxF Q1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9IDE7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVD VVRFIHEyOyB9CisKKyMgQXBwZW5kIHdpdGggcGFydGl0aW9uLXdpc2Ugam9pbiBhZ2dyZWdhdGUg YW5kIGpvaW4gcGxhbnMgYXMgY2hpbGQgc3VicGxhbnMKK3N0ZXAgInMxcHJlcDMiICAgeyBTRVQg cGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFNFVCBlbmFibGVfcGFy dGl0aW9ud2lzZV9hZ2dyZWdhdGUgPSBvbjsKKwkJICBTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vf am9pbiA9IG9uOworCQkgIFBSRVBBUkUgcTMgQVMgU0VMRUNUIHQxLmEsIGNvdW50KHQyLmIpIEZS T00gZm9vIHQxLCBmb28gdDIgV0hFUkUgdDEuYSA9IHQyLmEgR1JPVVAgQlkgMTsKKwkJICBFWFBM QUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTM7IH0KKworIyBFeGVjdXRlcyBhIGdlbmVyaWMgcGxh bgorc3RlcCAiczFleGVjIgl7IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5 X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAo Q09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOyB9CitzdGVwICJzMWV4ZWMyIgl7IExPQUQgJ2RlbGF5 X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2Nr X2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOyB9CitzdGVw ICJzMWV4ZWMzIgl7IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1 dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMg T0ZGKSBFWEVDVVRFIHEzOyB9CisKK3Nlc3Npb24gInMyIgorc3RlcCAiczJsb2NrIgl7IFNFTEVD VCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1KTsgfQorc3RlcCAiczJ1bmxvY2siCXsgU0VMRUNUIHBn X2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7IH0KK3N0ZXAgInMyZHJvcGkiCXsgRFJPUCBJTkRFWCBm b28xMV9hOyB9CisKKyMgV2hpbGUgInMxZXhlYyIsIGV0Yy4gd2FpdCB0byBhY3F1aXJlIHRoZSBh ZHZpc29yeSBsb2NrLCAiczJkcm9wIiBpcyBhYmxlIHRvCisjIGRyb3AgdGhlIGluZGV4IGJlaW5n IHVzZWQgaW4gdGhlIGNhY2hlZCBwbGFuLiAgV2hlbiAiczFleGVjIiBpcyB0aGVuCisjIHVuYmxv Y2tlZCBhbmQgaW5pdGlhbGl6ZXMgdGhlIGNhY2hlZCBwbGFuIGZvciBleGVjdXRpb24sIGl0IGRl dGVjdHMgdGhlCisjIGNvbmN1cnJlbnQgaW5kZXggZHJvcCBhbmQgY2F1c2VzIHRoZSBjYWNoZWQg cGxhbiB0byBiZSBkaXNjYXJkZWQgYW5kCisjIHJlY3JlYXRlZCB3aXRob3V0IHRoZSBpbmRleC4K K3Blcm11dGF0aW9uICJzMXByZXAiICJzMmxvY2siICJzMWV4ZWMiICJzMmRyb3BpIiAiczJ1bmxv Y2siCitwZXJtdXRhdGlvbiAiczFwcmVwMiIgInMybG9jayIgInMxZXhlYzIiICJzMmRyb3BpIiAi czJ1bmxvY2siCitwZXJtdXRhdGlvbiAiczFwcmVwMyIgInMybG9jayIgInMxZXhlYzMiICJzMmRy b3BpIiAiczJ1bmxvY2siCi0tIAoyLjM1LjMKCg== --00000000000041b1e2060642be90 Content-Type: application/octet-stream; name="v47-0002-Check-pointer-NULLness-before-cleanup-in-ExecEnd.patch" Content-Disposition: attachment; filename="v47-0002-Check-pointer-NULLness-before-cleanup-in-ExecEnd.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ln0bz7v77 RnJvbSA5NWFmNDg1YmYxMWUwNWQ0OTQ1MjYwMWUwNjczZWUzYzQxNTE3NmRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1MzoxNiArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ3 IDIvOV0gQ2hlY2sgcG9pbnRlciBOVUxMbmVzcyBiZWZvcmUgY2xlYW51cCBpbiBFeGVjRW5kKgog cm91dGluZXMKCk1hbnkgcm91dGluZXMgYWxyZWFkeSBwZXJmb3JtIHRoaXMgY2hlY2ssIGJ1dCBh IGZldyBpbnN0YW5jZXMgcmVtYWluLgoKQ3VycmVudGx5LCB0aGVzZSBOVUxMbmVzcyBjaGVja3Mg bWlnaHQgc2VlbSByZWR1bmRhbnQgc2luY2UgRXhlY0VuZCoKcm91dGluZXMgb3BlcmF0ZSB1bmRl ciB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZWlyIG1hdGNoaW5nIEV4ZWNJbml0Kgpyb3V0aW5lIHdv dWxkIGhhdmUgZnVsbHkgZXhlY3V0ZWQsIGVuc3VyaW5nIHBvaW50ZXJzIGFyZSBzZXQuIEhvd2V2 ZXIsCmEgZm9ydGhjb21pbmcgcGF0Y2ggd2lsbCBtb2RpZnkgRXhlY0luaXQqIHJvdXRpbmVzIHRv IHNvbWV0aW1lcyBleGl0CmVhcmx5LCBwb3RlbnRpYWxseSBsZWF2aW5nIHNvbWUgcG9pbnRlcnMg aW4gYW4gdW5kZXRlcm1pbmVkIHN0YXRlLApzbyBpdCB3aWxsIGJlY29tZSBjcnVjaWFsIHRvIGhh dmUgdGhlc2UgTlVMTG5lc3MgY2hlY2tzIGluIHBsYWNlLgpPdGhlciB0aGFuIHRoZSBFeGVjRW5k KiByb3V0aW5lcywgdGhpcyBhbHNvIGFkZHMgYSBndWFyZCBhdCB0aGUKYmVnaWdnaW5nIG9mIEV2 YWxQbGFuUXVhbEVuZCgpIHRvIHJldHVybiBlYXJseSBpZiB0aGUgRVBRU3RhdGUgZG9lcwpub3Qg YXBwZWFyIHRvIGhhdmUgYmVlbiBpbml0aWFsaXplZC4KCldoaWxlIGF0IGl0LCBzZXQgY2xlYW5l ZCB1cCBwb2ludGVycyB0byBOVUxMIG1vcmUgY29uc2lzdGVudGx5IGFjcm9zcwpFeGVjRW5kKiBy b3V0aW5lcy4gIEFsc28gZm9yIGNvbnNpc3RlbmN5LCBjaGFuZ2UgYWxsIHRoZSBOVUxMbmVzcwpj aGVja3MgdG8gZm9sbG93IHRoZSAiaWYgKHBvaW50ZXIgIT0gTlVMTCkiIHN0eWxlIG92ZXIgImlm IChwb2ludGVyKSIuCgpSZXZpZXdlZC1ieTogUm9iZXJ0IEhhYXMKLS0tCiBjb250cmliL3Bvc3Rn cmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyAgICAgICAgfCAgNSArKy0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMgICAgICAgICAgICB8ICA0ICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQWdnLmMgICAgICAgICAgICAgfCAyNyArKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQXBwZW5kLmMgICAgICAgICAgfCAgMyArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUJpdG1hcEFuZC5jICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVC aXRtYXBIZWFwc2Nhbi5jICB8IDQ3ICsrKysrKysrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYyB8IDIzICsrKysrLS0tLS0tCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYyAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMgICAgIHwgMTcgKysrKy0tLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVHYXRoZXIuYyAgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVHYXRoZXJNZXJnZS5jICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVHcm91cC5jICAgICAgICAgICB8ICA2ICstLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhh c2guYyAgICAgICAgICAgIHwgIDYgKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpv aW4uYyAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFs U29ydC5jIHwgMTMgKysrKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nh bi5jICAgfCAyNSArKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNj YW4uYyAgICAgICB8IDIzICsrKysrLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGlt aXQuYyAgICAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3Mu YyAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYyAgICAg ICAgfCAgNSArKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMgICAgICAgICB8 ICA4ICsrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jICAgICB8ICAz ICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMgICAgICAgfCAgMiArCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyAgICAgfCAxMSArKysrLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMgICAgICAgIHwgIDIgKwogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYyAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMgIHwgMjQgKysrKysrKysrLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVSZXN1bHQuYyAgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVTYW1wbGVzY2FuLmMgICAgICB8ICA3ICsrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVTZXFzY2FuLmMgICAgICAgICB8IDE2ICsrKy0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlU2V0T3AuYyAgICAgICAgICAgfCAgNiArKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVTb3J0LmMgICAgICAgICAgICB8ICA1ICsrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1 YnF1ZXJ5c2Nhbi5jICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxlRnVu Y3NjYW4uYyAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4u YyAgICB8IDEyICsrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYyAgICAg ICAgIHwgIDggKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jICAgICAgICAg IHwgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jICAgICAgIHwgNDEg KysrKysrKysrKysrKystLS0tLQogMzggZmlsZXMgY2hhbmdlZCwgMjUyIGluc2VydGlvbnMoKyks IDEyMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0 Z3Jlc19mZHcuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCmluZGV4IDEz OTM3MTY1ODcuLjgwMmY3NmM3M2UgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bv c3RncmVzX2Zkdy5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCkBA IC0yMTI2LDcgKzIxMjYsMTAgQEAgcG9zdGdyZXNFbmRGb3JlaWduTW9kaWZ5KEVTdGF0ZSAqZXN0 YXRlLAogewogCVBnRmR3TW9kaWZ5U3RhdGUgKmZtc3RhdGUgPSAoUGdGZHdNb2RpZnlTdGF0ZSAq KSByZXN1bHRSZWxJbmZvLT5yaV9GZHdTdGF0ZTsKIAotCS8qIElmIGZtc3RhdGUgaXMgTlVMTCwg d2UgYXJlIGluIEVYUExBSU47IG5vdGhpbmcgdG8gZG8gKi8KKwkvKgorCSAqIElmIGZtc3RhdGUg aXMgTlVMTCwgd2UgYXJlIGVpdGhlciBpbiBFWFBMQUlOIG9yIGlmIEJlZ2luRm9yZWlnbk1vZGlm eQorCSAqIHdhc24ndCBjYWxsZWQ7IG5vdGhpbmcgdG8gZG8gaW4gYW55IGNhc2UuCisJICovCiAJ aWYgKGZtc3RhdGUgPT0gTlVMTCkKIAkJcmV0dXJuOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpp bmRleCA0YzVhN2JiZjYyLi5mN2YxOGQzMDU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAg LTMwMTAsNiArMzAxMCwxMCBAQCBFdmFsUGxhblF1YWxFbmQoRVBRU3RhdGUgKmVwcXN0YXRlKQog CU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKIAlMaXN0Q2VsbCAgICpsOwogCisJLyogTm90aGlu ZyB0byBkbyBpZiBubyBFdmFsUGxhblF1YWxJbml0KCkgd2FzIGRvbmUgdG8gYmVnaW4gd2l0aC4g Ki8KKwlpZiAoZXBxc3RhdGUtPnBhcmVudGVzdGF0ZSA9PSBOVUxMKQorCQlyZXR1cm47CisKIAly dHNpemUgPSBlcHFzdGF0ZS0+cGFyZW50ZXN0YXRlLT5lc19yYW5nZV90YWJsZV9zaXplOwogCiAJ LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYwppbmRleCBmMTU0ZjI4OTAyLi5hZjIyYjE2NzZmIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUFnZy5jCkBAIC00MzA0LDcgKzQzMDQsNiBAQCBHZXRBZ2dJbml0VmFsKERh dHVtIHRleHRJbml0VmFsLCBPaWQgdHJhbnN0eXBlKQogdm9pZAogRXhlY0VuZEFnZyhBZ2dTdGF0 ZSAqbm9kZSkKIHsKLQlQbGFuU3RhdGUgICpvdXRlclBsYW47CiAJaW50CQkJdHJhbnNubzsKIAlp bnQJCQludW1Hcm91cGluZ1NldHMgPSBNYXgobm9kZS0+bWF4c2V0cywgMSk7CiAJaW50CQkJc2V0 bm87CkBAIC00MzE0LDcgKzQzMTMsNyBAQCBFeGVjRW5kQWdnKEFnZ1N0YXRlICpub2RlKQogCSAq IHdvcmtlciBiYWNrIGludG8gc2hhcmVkIG1lbW9yeSBzbyB0aGF0IGl0IGNhbiBiZSBwaWNrZWQg dXAgYnkgdGhlIG1haW4KIAkgKiBwcm9jZXNzIHRvIHJlcG9ydCBpbiBFWFBMQUlOIEFOQUxZWkUu CiAJICovCi0JaWYgKG5vZGUtPnNoYXJlZF9pbmZvICYmIElzUGFyYWxsZWxXb3JrZXIoKSkKKwlp ZiAobm9kZS0+c2hhcmVkX2luZm8gIT0gTlVMTCAmJiBJc1BhcmFsbGVsV29ya2VyKCkpCiAJewog CQlBZ2dyZWdhdGVJbnN0cnVtZW50YXRpb24gKnNpOwogCkBAIC00MzI3LDEwICs0MzI2LDE2IEBA IEV4ZWNFbmRBZ2coQWdnU3RhdGUgKm5vZGUpCiAKIAkvKiBNYWtlIHN1cmUgd2UgaGF2ZSBjbG9z ZWQgYW55IG9wZW4gdHVwbGVzb3J0cyAqLwogCi0JaWYgKG5vZGUtPnNvcnRfaW4pCisJaWYgKG5v ZGUtPnNvcnRfaW4gIT0gTlVMTCkKKwl7CiAJCXR1cGxlc29ydF9lbmQobm9kZS0+c29ydF9pbik7 Ci0JaWYgKG5vZGUtPnNvcnRfb3V0KQorCQlub2RlLT5zb3J0X2luID0gTlVMTDsKKwl9CisJaWYg KG5vZGUtPnNvcnRfb3V0ICE9IE5VTEwpCisJewogCQl0dXBsZXNvcnRfZW5kKG5vZGUtPnNvcnRf b3V0KTsKKwkJbm9kZS0+c29ydF9vdXQgPSBOVUxMOworCX0KIAogCWhhc2hhZ2dfcmVzZXRfc3Bp bGxfc3RhdGUobm9kZSk7CiAKQEAgLTQzNDYsMTkgKzQzNTEsMjUgQEAgRXhlY0VuZEFnZyhBZ2dT dGF0ZSAqbm9kZSkKIAogCQlmb3IgKHNldG5vID0gMDsgc2V0bm8gPCBudW1Hcm91cGluZ1NldHM7 IHNldG5vKyspCiAJCXsKLQkJCWlmIChwZXJ0cmFucy0+c29ydHN0YXRlc1tzZXRub10pCisJCQlp ZiAocGVydHJhbnMtPnNvcnRzdGF0ZXNbc2V0bm9dICE9IE5VTEwpCiAJCQkJdHVwbGVzb3J0X2Vu ZChwZXJ0cmFucy0+c29ydHN0YXRlc1tzZXRub10pOwogCQl9CiAJfQogCiAJLyogQW5kIGVuc3Vy ZSBhbnkgYWdnIHNodXRkb3duIGNhbGxiYWNrcyBoYXZlIGJlZW4gY2FsbGVkICovCiAJZm9yIChz ZXRubyA9IDA7IHNldG5vIDwgbnVtR3JvdXBpbmdTZXRzOyBzZXRubysrKQorCXsKIAkJUmVTY2Fu RXhwckNvbnRleHQobm9kZS0+YWdnY29udGV4dHNbc2V0bm9dKTsKLQlpZiAobm9kZS0+aGFzaGNv bnRleHQpCisJCW5vZGUtPmFnZ2NvbnRleHRzW3NldG5vXSA9IE5VTEw7CisJfQorCWlmIChub2Rl LT5oYXNoY29udGV4dCAhPSBOVUxMKQorCXsKIAkJUmVTY2FuRXhwckNvbnRleHQobm9kZS0+aGFz aGNvbnRleHQpOworCQlub2RlLT5oYXNoY29udGV4dCA9IE5VTEw7CisJfQogCi0Jb3V0ZXJQbGFu ID0gb3V0ZXJQbGFuU3RhdGUobm9kZSk7Ci0JRXhlY0VuZE5vZGUob3V0ZXJQbGFuKTsKKwlFeGVj RW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBO VUxMOwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBw ZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKaW5kZXggNjA5ZGY2Yjll Ni4uYTJhZjIyMWUwNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVu ZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpAQCAtMzk5LDcgKzM5 OSwxMCBAQCBFeGVjRW5kQXBwZW5kKEFwcGVuZFN0YXRlICpub2RlKQogCSAqIHNodXQgZG93biBl YWNoIG9mIHRoZSBzdWJzY2FucwogCSAqLwogCWZvciAoaSA9IDA7IGkgPCBucGxhbnM7IGkrKykK Kwl7CiAJCUV4ZWNFbmROb2RlKGFwcGVuZHBsYW5zW2ldKTsKKwkJYXBwZW5kcGxhbnNbaV0gPSBO VUxMOworCX0KIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJpdG1hcEFuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jCmluZGV4 IDRjNWViMmIyM2IuLjRhYmIwNjA5YTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVCaXRtYXBBbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5k LmMKQEAgLTE5Miw4ICsxOTIsOCBAQCBFeGVjRW5kQml0bWFwQW5kKEJpdG1hcEFuZFN0YXRlICpu b2RlKQogCSAqLwogCWZvciAoaSA9IDA7IGkgPCBucGxhbnM7IGkrKykKIAl7Ci0JCWlmIChiaXRt YXBwbGFuc1tpXSkKLQkJCUV4ZWNFbmROb2RlKGJpdG1hcHBsYW5zW2ldKTsKKwkJRXhlY0VuZE5v ZGUoYml0bWFwcGxhbnNbaV0pOworCQliaXRtYXBwbGFuc1tpXSA9IE5VTEw7CiAJfQogfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCmluZGV4IDJkYjBhY2ZjNzYu LmQzZjU4YzIyZjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBI ZWFwc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5j CkBAIC02NDgsNDAgKzY0OCw1OSBAQCBFeGVjUmVTY2FuQml0bWFwSGVhcFNjYW4oQml0bWFwSGVh cFNjYW5TdGF0ZSAqbm9kZSkKIHZvaWQKIEV4ZWNFbmRCaXRtYXBIZWFwU2NhbihCaXRtYXBIZWFw U2NhblN0YXRlICpub2RlKQogewotCVRhYmxlU2NhbkRlc2Mgc2NhbkRlc2M7Ci0KLQkvKgotCSAq IGV4dHJhY3QgaW5mb3JtYXRpb24gZnJvbSB0aGUgbm9kZQotCSAqLwotCXNjYW5EZXNjID0gbm9k ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjOwotCiAJLyoKIAkgKiBjbG9zZSBkb3duIHN1YnBsYW5z CiAJICovCiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0 YXRlKG5vZGUpID0gTlVMTDsKIAogCS8qCiAJICogcmVsZWFzZSBiaXRtYXBzIGFuZCBidWZmZXJz IGlmIGFueQogCSAqLwotCWlmIChub2RlLT50Ym1pdGVyYXRvcikKKwlpZiAobm9kZS0+dGJtaXRl cmF0b3IgIT0gTlVMTCkKKwl7CiAJCXRibV9lbmRfaXRlcmF0ZShub2RlLT50Ym1pdGVyYXRvcik7 Ci0JaWYgKG5vZGUtPnByZWZldGNoX2l0ZXJhdG9yKQorCQlub2RlLT50Ym1pdGVyYXRvciA9IE5V TEw7CisJfQorCWlmIChub2RlLT5wcmVmZXRjaF9pdGVyYXRvciAhPSBOVUxMKQorCXsKIAkJdGJt X2VuZF9pdGVyYXRlKG5vZGUtPnByZWZldGNoX2l0ZXJhdG9yKTsKLQlpZiAobm9kZS0+dGJtKQor CQlub2RlLT5wcmVmZXRjaF9pdGVyYXRvciA9IE5VTEw7CisJfQorCWlmIChub2RlLT50Ym0gIT0g TlVMTCkKKwl7CiAJCXRibV9mcmVlKG5vZGUtPnRibSk7Ci0JaWYgKG5vZGUtPnNoYXJlZF90Ym1p dGVyYXRvcikKKwkJbm9kZS0+dGJtID0gTlVMTDsKKwl9CisJaWYgKG5vZGUtPnNoYXJlZF90Ym1p dGVyYXRvciAhPSBOVUxMKQorCXsKIAkJdGJtX2VuZF9zaGFyZWRfaXRlcmF0ZShub2RlLT5zaGFy ZWRfdGJtaXRlcmF0b3IpOwotCWlmIChub2RlLT5zaGFyZWRfcHJlZmV0Y2hfaXRlcmF0b3IpCisJ CW5vZGUtPnNoYXJlZF90Ym1pdGVyYXRvciA9IE5VTEw7CisJfQorCWlmIChub2RlLT5zaGFyZWRf cHJlZmV0Y2hfaXRlcmF0b3IgIT0gTlVMTCkKKwl7CiAJCXRibV9lbmRfc2hhcmVkX2l0ZXJhdGUo bm9kZS0+c2hhcmVkX3ByZWZldGNoX2l0ZXJhdG9yKTsKKwkJbm9kZS0+c2hhcmVkX3ByZWZldGNo X2l0ZXJhdG9yID0gTlVMTDsKKwl9CiAJaWYgKG5vZGUtPnZtYnVmZmVyICE9IEludmFsaWRCdWZm ZXIpCisJewogCQlSZWxlYXNlQnVmZmVyKG5vZGUtPnZtYnVmZmVyKTsKKwkJbm9kZS0+dm1idWZm ZXIgPSBJbnZhbGlkQnVmZmVyOworCX0KIAlpZiAobm9kZS0+cHZtYnVmZmVyICE9IEludmFsaWRC dWZmZXIpCisJewogCQlSZWxlYXNlQnVmZmVyKG5vZGUtPnB2bWJ1ZmZlcik7CisJCW5vZGUtPnB2 bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJfQogCiAJLyoKLQkgKiBjbG9zZSBoZWFwIHNjYW4K KwkgKiBjbG9zZSBoZWFwIHNjYW4gKG5vLW9wIGlmIHdlIGRpZG4ndCBzdGFydCBpdCkKIAkgKi8K LQl0YWJsZV9lbmRzY2FuKHNjYW5EZXNjKTsKKwlpZiAobm9kZS0+c3Muc3NfY3VycmVudFNjYW5E ZXNjICE9IE5VTEwpCisJeworCQl0YWJsZV9lbmRzY2FuKG5vZGUtPnNzLnNzX2N1cnJlbnRTY2Fu RGVzYyk7CisJCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CisJfQogfQogCiAv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5k ZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMKaW5k ZXggN2NmODUzMmJjOS4uNDg4ZjExYTNmZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVC aXRtYXBJbmRleHNjYW4uYwpAQCAtMTc1LDIyICsxNzUsMjEgQEAgRXhlY1JlU2NhbkJpdG1hcElu ZGV4U2NhbihCaXRtYXBJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIHZvaWQKIEV4ZWNFbmRCaXRtYXBJ bmRleFNjYW4oQml0bWFwSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiB7Ci0JUmVsYXRpb24JaW5kZXhS ZWxhdGlvbkRlc2M7Ci0JSW5kZXhTY2FuRGVzYyBpbmRleFNjYW5EZXNjOwotCi0JLyoKLQkgKiBl eHRyYWN0IGluZm9ybWF0aW9uIGZyb20gdGhlIG5vZGUKLQkgKi8KLQlpbmRleFJlbGF0aW9uRGVz YyA9IG5vZGUtPmJpc3NfUmVsYXRpb25EZXNjOwotCWluZGV4U2NhbkRlc2MgPSBub2RlLT5iaXNz X1NjYW5EZXNjOworCS8qIGNsb3NlIHRoZSBzY2FuIChuby1vcCBpZiB3ZSBkaWRuJ3Qgc3RhcnQg aXQpICovCisJaWYgKG5vZGUtPmJpc3NfU2NhbkRlc2MgIT0gTlVMTCkKKwl7CisJCWluZGV4X2Vu ZHNjYW4obm9kZS0+Ymlzc19TY2FuRGVzYyk7CisJCW5vZGUtPmJpc3NfU2NhbkRlc2MgPSBOVUxM OworCX0KIAogCS8qCiAJICogY2xvc2UgdGhlIGluZGV4IHJlbGF0aW9uIChuby1vcCBpZiB3ZSBk aWRuJ3Qgb3BlbiBpdCkKIAkgKi8KLQlpZiAoaW5kZXhTY2FuRGVzYykKLQkJaW5kZXhfZW5kc2Nh bihpbmRleFNjYW5EZXNjKTsKLQlpZiAoaW5kZXhSZWxhdGlvbkRlc2MpCi0JCWluZGV4X2Nsb3Nl KGluZGV4UmVsYXRpb25EZXNjLCBOb0xvY2spOworCWlmIChub2RlLT5iaXNzX1JlbGF0aW9uRGVz YyAhPSBOVUxMKQorCXsKKwkJaW5kZXhfY2xvc2Uobm9kZS0+Ymlzc19SZWxhdGlvbkRlc2MsIE5v TG9jayk7CisJCW5vZGUtPmJpc3NfUmVsYXRpb25EZXNjID0gTlVMTDsKKwl9CiB9CiAKIC8qIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMKaW5kZXggMGJmOGFmOTY1Mi4uYWNl MTg1OTNhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMKQEAgLTIxMCw4ICsyMTAs OCBAQCBFeGVjRW5kQml0bWFwT3IoQml0bWFwT3JTdGF0ZSAqbm9kZSkKIAkgKi8KIAlmb3IgKGkg PSAwOyBpIDwgbnBsYW5zOyBpKyspCiAJewotCQlpZiAoYml0bWFwcGxhbnNbaV0pCi0JCQlFeGVj RW5kTm9kZShiaXRtYXBwbGFuc1tpXSk7CisJCUV4ZWNFbmROb2RlKGJpdG1hcHBsYW5zW2ldKTsK KwkJYml0bWFwcGxhbnNbaV0gPSBOVUxMOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl Rm9yZWlnbnNjYW4uYwppbmRleCA3MzkxM2ViYjE4Li4zYWJhMjgyODVhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYwpAQCAtMzAxLDE3ICszMDEsMjAgQEAgRXhlY0VuZEZv cmVpZ25TY2FuKEZvcmVpZ25TY2FuU3RhdGUgKm5vZGUpCiAJRVN0YXRlCSAgICplc3RhdGUgPSBu b2RlLT5zcy5wcy5zdGF0ZTsKIAogCS8qIExldCB0aGUgRkRXIHNodXQgZG93biAqLwotCWlmIChw bGFuLT5vcGVyYXRpb24gIT0gQ01EX1NFTEVDVCkKKwlpZiAobm9kZS0+ZmR3cm91dGluZSAhPSBO VUxMKQogCXsKLQkJaWYgKGVzdGF0ZS0+ZXNfZXBxX2FjdGl2ZSA9PSBOVUxMKQotCQkJbm9kZS0+ ZmR3cm91dGluZS0+RW5kRGlyZWN0TW9kaWZ5KG5vZGUpOworCQlpZiAocGxhbi0+b3BlcmF0aW9u ICE9IENNRF9TRUxFQ1QpCisJCXsKKwkJCWlmIChlc3RhdGUtPmVzX2VwcV9hY3RpdmUgPT0gTlVM TCkKKwkJCQlub2RlLT5mZHdyb3V0aW5lLT5FbmREaXJlY3RNb2RpZnkobm9kZSk7CisJCX0KKwkJ ZWxzZQorCQkJbm9kZS0+ZmR3cm91dGluZS0+RW5kRm9yZWlnblNjYW4obm9kZSk7CiAJfQotCWVs c2UKLQkJbm9kZS0+ZmR3cm91dGluZS0+RW5kRm9yZWlnblNjYW4obm9kZSk7CiAKIAkvKiBTaHV0 IGRvd24gYW55IG91dGVyIHBsYW4uICovCi0JaWYgKG91dGVyUGxhblN0YXRlKG5vZGUpKQotCQlF eGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CisJRXhlY0VuZE5vZGUob3V0ZXJQbGFu U3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAogLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCmluZGV4IGJiMjUwMGE0NjkuLjFhM2M4YWJk YWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKQEAgLTI0OSw2ICsyNDksNyBAQCB2b2lk CiBFeGVjRW5kR2F0aGVyKEdhdGhlclN0YXRlICpub2RlKQogewogCUV4ZWNFbmROb2RlKG91dGVy UGxhblN0YXRlKG5vZGUpKTsJLyogbGV0IGNoaWxkcmVuIGNsZWFuIHVwIGZpcnN0ICovCisJb3V0 ZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogCUV4ZWNTaHV0ZG93bkdhdGhlcihub2RlKTsKIH0K IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYwppbmRleCA3YTcxYTU4NTA5Li5j NmZiNDVmZWUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVy Z2UuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYwpAQCAtMjg5 LDYgKzI4OSw3IEBAIHZvaWQKIEV4ZWNFbmRHYXRoZXJNZXJnZShHYXRoZXJNZXJnZVN0YXRlICpu b2RlKQogewogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsJLyogbGV0IGNoaWxk cmVuIGNsZWFuIHVwIGZpcnN0ICovCisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogCUV4 ZWNTaHV0ZG93bkdhdGhlck1lcmdlKG5vZGUpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlR3JvdXAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5j CmluZGV4IDhjNjUwZjBlNDYuLjZkZmU1YTFkMjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVHcm91cC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5j CkBAIC0yMjYsMTAgKzIyNiw4IEBAIEV4ZWNJbml0R3JvdXAoR3JvdXAgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogdm9pZAogRXhlY0VuZEdyb3VwKEdyb3VwU3RhdGUgKm5vZGUp CiB7Ci0JUGxhblN0YXRlICAqb3V0ZXJQbGFuOwotCi0Jb3V0ZXJQbGFuID0gb3V0ZXJQbGFuU3Rh dGUobm9kZSk7Ci0JRXhlY0VuZE5vZGUob3V0ZXJQbGFuKTsKKwlFeGVjRW5kTm9kZShvdXRlclBs YW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogfQogCiB2b2lk CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUhhc2guYwppbmRleCBlNzJmMDk4NmMyLi44OGJhMzM2ODgyIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVIYXNoLmMKQEAgLTQxMywxMyArNDEzLDExIEBAIEV4ZWNJbml0SGFzaChI YXNoICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHZvaWQKIEV4ZWNFbmRIYXNo KEhhc2hTdGF0ZSAqbm9kZSkKIHsKLQlQbGFuU3RhdGUgICpvdXRlclBsYW47Ci0KIAkvKgogCSAq IHNodXQgZG93biB0aGUgc3VicGxhbgogCSAqLwotCW91dGVyUGxhbiA9IG91dGVyUGxhblN0YXRl KG5vZGUpOwotCUV4ZWNFbmROb2RlKG91dGVyUGxhbik7CisJRXhlY0VuZE5vZGUob3V0ZXJQbGFu U3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4uYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCmluZGV4IGFlYTQ0YTlkNTYuLjZkYzQzYjlmZjIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCkBAIC04NjEsNyArODYxLDcgQEAgRXhlY0Vu ZEhhc2hKb2luKEhhc2hKb2luU3RhdGUgKm5vZGUpCiAJLyoKIAkgKiBGcmVlIGhhc2ggdGFibGUK IAkgKi8KLQlpZiAobm9kZS0+aGpfSGFzaFRhYmxlKQorCWlmIChub2RlLT5oal9IYXNoVGFibGUg IT0gTlVMTCkKIAl7CiAJCUV4ZWNIYXNoVGFibGVEZXN0cm95KG5vZGUtPmhqX0hhc2hUYWJsZSk7 CiAJCW5vZGUtPmhqX0hhc2hUYWJsZSA9IE5VTEw7CkBAIC04NzEsNyArODcxLDkgQEAgRXhlY0Vu ZEhhc2hKb2luKEhhc2hKb2luU3RhdGUgKm5vZGUpCiAJICogY2xlYW4gdXAgc3VidHJlZXMKIAkg Ki8KIAlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUo bm9kZSkgPSBOVUxMOwogCUV4ZWNFbmROb2RlKGlubmVyUGxhblN0YXRlKG5vZGUpKTsKKwlpbm5l clBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSW5jcmVtZW50YWxTb3J0LmMKaW5kZXggY2QwOTRhMTkwYy4uMjhhMGU4MWNiMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYwpAQCAtMTA3OSw4ICsxMDc5 LDE2IEBAIEV4ZWNFbmRJbmNyZW1lbnRhbFNvcnQoSW5jcmVtZW50YWxTb3J0U3RhdGUgKm5vZGUp CiB7CiAJU09fcHJpbnRmKCJFeGVjRW5kSW5jcmVtZW50YWxTb3J0OiBzaHV0dGluZyBkb3duIHNv cnQgbm9kZVxuIik7CiAKLQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KG5vZGUtPmdyb3Vw X3Bpdm90KTsKLQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KG5vZGUtPnRyYW5zZmVyX3R1 cGxlKTsKKwlpZiAobm9kZS0+Z3JvdXBfcGl2b3QgIT0gTlVMTCkKKwl7CisJCUV4ZWNEcm9wU2lu Z2xlVHVwbGVUYWJsZVNsb3Qobm9kZS0+Z3JvdXBfcGl2b3QpOworCQlub2RlLT5ncm91cF9waXZv dCA9IE5VTEw7CisJfQorCWlmIChub2RlLT50cmFuc2Zlcl90dXBsZSAhPSBOVUxMKQorCXsKKwkJ RXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChub2RlLT50cmFuc2Zlcl90dXBsZSk7CisJCW5v ZGUtPnRyYW5zZmVyX3R1cGxlID0gTlVMTDsKKwl9CiAKIAkvKgogCSAqIFJlbGVhc2UgdHVwbGVz b3J0IHJlc291cmNlcy4KQEAgLTExMDAsNiArMTEwOCw3IEBAIEV4ZWNFbmRJbmNyZW1lbnRhbFNv cnQoSW5jcmVtZW50YWxTb3J0U3RhdGUgKm5vZGUpCiAJICogU2h1dCBkb3duIHRoZSBzdWJwbGFu LgogCSAqLwogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5T dGF0ZShub2RlKSA9IE5VTEw7CiAKIAlTT19wcmludGYoIkV4ZWNFbmRJbmNyZW1lbnRhbFNvcnQ6 IHNvcnQgbm9kZSBzaHV0ZG93blxuIik7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4 b25seXNjYW4uYwppbmRleCBmMWRiMzU2NjVjLi4xZjM4NDNhYmU5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKQEAgLTM2NCwxNSArMzY0LDYgQEAgRXhlY1JlU2Nh bkluZGV4T25seVNjYW4oSW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogdm9pZAogRXhlY0VuZElu ZGV4T25seVNjYW4oSW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogewotCVJlbGF0aW9uCWluZGV4 UmVsYXRpb25EZXNjOwotCUluZGV4U2NhbkRlc2MgaW5kZXhTY2FuRGVzYzsKLQotCS8qCi0JICog ZXh0cmFjdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBub2RlCi0JICovCi0JaW5kZXhSZWxhdGlvbkRl c2MgPSBub2RlLT5pb3NzX1JlbGF0aW9uRGVzYzsKLQlpbmRleFNjYW5EZXNjID0gbm9kZS0+aW9z c19TY2FuRGVzYzsKLQogCS8qIFJlbGVhc2UgVk0gYnVmZmVyIHBpbiwgaWYgYW55LiAqLwogCWlm IChub2RlLT5pb3NzX1ZNQnVmZmVyICE9IEludmFsaWRCdWZmZXIpCiAJewpAQCAtMzgwLDEzICsz NzEsMjEgQEAgRXhlY0VuZEluZGV4T25seVNjYW4oSW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQog CQlub2RlLT5pb3NzX1ZNQnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAl9CiAKKwkvKiBjbG9zZSB0 aGUgc2NhbiAobm8tb3AgaWYgd2UgZGlkbid0IHN0YXJ0IGl0KSAqLworCWlmIChub2RlLT5pb3Nz X1NjYW5EZXNjICE9IE5VTEwpCisJeworCQlpbmRleF9lbmRzY2FuKG5vZGUtPmlvc3NfU2NhbkRl c2MpOworCQlub2RlLT5pb3NzX1NjYW5EZXNjID0gTlVMTDsKKwl9CisKIAkvKgogCSAqIGNsb3Nl IHRoZSBpbmRleCByZWxhdGlvbiAobm8tb3AgaWYgd2UgZGlkbid0IG9wZW4gaXQpCiAJICovCi0J aWYgKGluZGV4U2NhbkRlc2MpCi0JCWluZGV4X2VuZHNjYW4oaW5kZXhTY2FuRGVzYyk7Ci0JaWYg KGluZGV4UmVsYXRpb25EZXNjKQotCQlpbmRleF9jbG9zZShpbmRleFJlbGF0aW9uRGVzYywgTm9M b2NrKTsKKwlpZiAobm9kZS0+aW9zc19SZWxhdGlvbkRlc2MgIT0gTlVMTCkKKwl7CisJCWluZGV4 X2Nsb3NlKG5vZGUtPmlvc3NfUmVsYXRpb25EZXNjLCBOb0xvY2spOworCQlub2RlLT5pb3NzX1Jl bGF0aW9uRGVzYyA9IE5VTEw7CisJfQogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSW5kZXhzY2FuLmMKaW5kZXggMTRiOWMwMDIxNy4uMzJlMTcxNGYxNSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmRleHNjYW4uYwpAQCAtNzg1LDIyICs3ODUsMjEgQEAgRXhlY0luZGV4QWR2 YW5jZUFycmF5S2V5cyhJbmRleEFycmF5S2V5SW5mbyAqYXJyYXlLZXlzLCBpbnQgbnVtQXJyYXlL ZXlzKQogdm9pZAogRXhlY0VuZEluZGV4U2NhbihJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIHsKLQlS ZWxhdGlvbglpbmRleFJlbGF0aW9uRGVzYzsKLQlJbmRleFNjYW5EZXNjIGluZGV4U2NhbkRlc2M7 Ci0KLQkvKgotCSAqIGV4dHJhY3QgaW5mb3JtYXRpb24gZnJvbSB0aGUgbm9kZQotCSAqLwotCWlu ZGV4UmVsYXRpb25EZXNjID0gbm9kZS0+aXNzX1JlbGF0aW9uRGVzYzsKLQlpbmRleFNjYW5EZXNj ID0gbm9kZS0+aXNzX1NjYW5EZXNjOworCS8qIGNsb3NlIHRoZSBzY2FuIChuby1vcCBpZiB3ZSBk aWRuJ3Qgc3RhcnQgaXQpICovCisJaWYgKG5vZGUtPmlzc19TY2FuRGVzYyAhPSBOVUxMKQorCXsK KwkJaW5kZXhfZW5kc2Nhbihub2RlLT5pc3NfU2NhbkRlc2MpOworCQlub2RlLT5pc3NfU2NhbkRl c2MgPSBOVUxMOworCX0KIAogCS8qCiAJICogY2xvc2UgdGhlIGluZGV4IHJlbGF0aW9uIChuby1v cCBpZiB3ZSBkaWRuJ3Qgb3BlbiBpdCkKIAkgKi8KLQlpZiAoaW5kZXhTY2FuRGVzYykKLQkJaW5k ZXhfZW5kc2NhbihpbmRleFNjYW5EZXNjKTsKLQlpZiAoaW5kZXhSZWxhdGlvbkRlc2MpCi0JCWlu ZGV4X2Nsb3NlKGluZGV4UmVsYXRpb25EZXNjLCBOb0xvY2spOworCWlmIChub2RlLT5pc3NfUmVs YXRpb25EZXNjICE9IE5VTEwpCisJeworCQlpbmRleF9jbG9zZShub2RlLT5pc3NfUmVsYXRpb25E ZXNjLCBOb0xvY2spOworCQlub2RlLT5pc3NfUmVsYXRpb25EZXNjID0gTlVMTDsKKwl9CiB9CiAK IC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMaW1pdC5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMKaW5kZXggNTY1NDE1OGUzZS4uYTk3 YmFjOWY2ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMKQEAgLTUzNSw2ICs1MzUsNyBAQCB2 b2lkCiBFeGVjRW5kTGltaXQoTGltaXRTdGF0ZSAqbm9kZSkKIHsKIAlFeGVjRW5kTm9kZShvdXRl clBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogfQogCiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKaW5kZXggZTQ1OTk3MWQzMi4uMjZmYmU5NWM1 NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKQEAgLTM4Nyw2ICszODcsNyBAQCBF eGVjRW5kTG9ja1Jvd3MoTG9ja1Jvd3NTdGF0ZSAqbm9kZSkKIAkvKiBXZSBtYXkgaGF2ZSBzaHV0 IGRvd24gRVBRIGFscmVhZHksIGJ1dCBubyBoYXJtIGluIGFub3RoZXIgY2FsbCAqLwogCUV2YWxQ bGFuUXVhbEVuZCgmbm9kZS0+bHJfZXBxc3RhdGUpOwogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0 YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiB9CiAKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTWF0ZXJpYWwuYwppbmRleCA3NTNlYTI4OTE1Li4wM2M1MTQ5MDBiIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYwpAQCAtMjQzLDEzICsyNDMsMTYgQEAgRXhlY0Vu ZE1hdGVyaWFsKE1hdGVyaWFsU3RhdGUgKm5vZGUpCiAJICogUmVsZWFzZSB0dXBsZXN0b3JlIHJl c291cmNlcwogCSAqLwogCWlmIChub2RlLT50dXBsZXN0b3Jlc3RhdGUgIT0gTlVMTCkKKwl7CiAJ CXR1cGxlc3RvcmVfZW5kKG5vZGUtPnR1cGxlc3RvcmVzdGF0ZSk7Ci0Jbm9kZS0+dHVwbGVzdG9y ZXN0YXRlID0gTlVMTDsKKwkJbm9kZS0+dHVwbGVzdG9yZXN0YXRlID0gTlVMTDsKKwl9CiAKIAkv KgogCSAqIHNodXQgZG93biB0aGUgc3VicGxhbgogCSAqLwogCUV4ZWNFbmROb2RlKG91dGVyUGxh blN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiB9CiAKIC8qIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jCmluZGV4IDk0YmY0NzkyODcuLmVlNDc0 OWM4NTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYwpAQCAtMTA0Myw2ICsxMDQzLDcg QEAgRXhlY0VuZE1lbW9pemUoTWVtb2l6ZVN0YXRlICpub2RlKQogewogI2lmZGVmIFVTRV9BU1NF UlRfQ0hFQ0tJTkcKIAkvKiBWYWxpZGF0ZSB0aGUgbWVtb3J5IGFjY291bnRpbmcgY29kZSBpcyBj b3JyZWN0IGluIGFzc2VydCBidWlsZHMuICovCisJaWYgKG5vZGUtPmhhc2h0YWJsZSAhPSBOVUxM KQogCXsKIAkJaW50CQkJY291bnQ7CiAJCXVpbnQ2NAkJbWVtID0gMDsKQEAgLTEwODksMTIgKzEw OTAsMTcgQEAgRXhlY0VuZE1lbW9pemUoTWVtb2l6ZVN0YXRlICpub2RlKQogCX0KIAogCS8qIFJl bW92ZSB0aGUgY2FjaGUgY29udGV4dCAqLwotCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+dGFi bGVDb250ZXh0KTsKKwlpZiAobm9kZS0+dGFibGVDb250ZXh0ICE9IE5VTEwpCisJeworCQlNZW1v cnlDb250ZXh0RGVsZXRlKG5vZGUtPnRhYmxlQ29udGV4dCk7CisJCW5vZGUtPnRhYmxlQ29udGV4 dCA9IE5VTEw7CisJfQogCiAJLyoKIAkgKiBzaHV0IGRvd24gdGhlIHN1YnBsYW4KIAkgKi8KIAlF eGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkg PSBOVUxMOwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWVyZ2VBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCmlu ZGV4IDIxYjU3MjZlNmUuLjBhNDJhMDRiMTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVNZXJnZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJn ZUFwcGVuZC5jCkBAIC0zMzMsNyArMzMzLDEwIEBAIEV4ZWNFbmRNZXJnZUFwcGVuZChNZXJnZUFw cGVuZFN0YXRlICpub2RlKQogCSAqIHNodXQgZG93biBlYWNoIG9mIHRoZSBzdWJzY2FucwogCSAq LwogCWZvciAoaSA9IDA7IGkgPCBucGxhbnM7IGkrKykKKwl7CiAJCUV4ZWNFbmROb2RlKG1lcmdl cGxhbnNbaV0pOworCQltZXJnZXBsYW5zW2ldID0gTlVMTDsKKwl9CiB9CiAKIHZvaWQKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYwppbmRleCA2NDhmZGQ5YTVmLi40ZDdkNzNhNjg0IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCkBAIC0xNjQ2LDcgKzE2NDYsOSBAQCBF eGVjRW5kTWVyZ2VKb2luKE1lcmdlSm9pblN0YXRlICpub2RlKQogCSAqIHNodXQgZG93biB0aGUg c3VicGxhbnMKIAkgKi8KIAlFeGVjRW5kTm9kZShpbm5lclBsYW5TdGF0ZShub2RlKSk7CisJaW5u ZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5v ZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiAKIAlNSjFfcHJpbnRmKCJFeGVj RW5kTWVyZ2VKb2luOiAlc1xuIiwKIAkJCSAgICJub2RlIHByb2Nlc3NpbmcgZW5kZWQiKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggZDIxYTE3OGFkNS4uZWEwNDNj NTdjMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTQ0MzAsNyAr NDQzMCw5IEBAIEV4ZWNFbmRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZVN0YXRlICpub2RlKQogCQlm b3IgKGogPSAwOyBqIDwgcmVzdWx0UmVsSW5mby0+cmlfTnVtU2xvdHNJbml0aWFsaXplZDsgaisr KQogCQl7CiAJCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHJlc3VsdFJlbEluZm8tPnJp X1Nsb3RzW2pdKTsKKwkJCXJlc3VsdFJlbEluZm8tPnJpX1Nsb3RzW2pdID0gTlVMTDsKIAkJCUV4 ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3QocmVzdWx0UmVsSW5mby0+cmlfUGxhblNsb3RzW2pd KTsKKwkJCXJlc3VsdFJlbEluZm8tPnJpX1BsYW5TbG90c1tqXSA9IE5VTEw7CiAJCX0KIAl9CiAK QEAgLTQ0MzgsMTIgKzQ0NDAsMTYgQEAgRXhlY0VuZE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlU3Rh dGUgKm5vZGUpCiAJICogQ2xvc2UgYWxsIHRoZSBwYXJ0aXRpb25lZCB0YWJsZXMsIGxlYWYgcGFy dGl0aW9ucywgYW5kIHRoZWlyIGluZGljZXMKIAkgKiBhbmQgcmVsZWFzZSB0aGUgc2xvdCB1c2Vk IGZvciB0dXBsZSByb3V0aW5nLCBpZiBzZXQuCiAJICovCi0JaWYgKG5vZGUtPm10X3BhcnRpdGlv bl90dXBsZV9yb3V0aW5nKQorCWlmIChub2RlLT5tdF9wYXJ0aXRpb25fdHVwbGVfcm91dGluZyAh PSBOVUxMKQogCXsKIAkJRXhlY0NsZWFudXBUdXBsZVJvdXRpbmcobm9kZSwgbm9kZS0+bXRfcGFy dGl0aW9uX3R1cGxlX3JvdXRpbmcpOworCQlub2RlLT5tdF9wYXJ0aXRpb25fdHVwbGVfcm91dGlu ZyA9IE5VTEw7CiAKLQkJaWYgKG5vZGUtPm10X3Jvb3RfdHVwbGVfc2xvdCkKKwkJaWYgKG5vZGUt Pm10X3Jvb3RfdHVwbGVfc2xvdCAhPSBOVUxMKQorCQl7CiAJCQlFeGVjRHJvcFNpbmdsZVR1cGxl VGFibGVTbG90KG5vZGUtPm10X3Jvb3RfdHVwbGVfc2xvdCk7CisJCQlub2RlLT5tdF9yb290X3R1 cGxlX3Nsb3QgPSBOVUxMOworCQl9CiAJfQogCiAJLyoKQEAgLTQ0NTUsNiArNDQ2MSw3IEBAIEV4 ZWNFbmRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZVN0YXRlICpub2RlKQogCSAqIHNodXQgZG93biBz dWJwbGFuCiAJICovCiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVy UGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVz dGxvb3AuYwppbmRleCBmYzhmODMzZDhiLi43NmUwMjQ0OWY1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTmVzdGxvb3AuYwpAQCAtMzY3LDcgKzM2Nyw5IEBAIEV4ZWNFbmROZXN0TG9vcChOZXN0TG9v cFN0YXRlICpub2RlKQogCSAqIGNsb3NlIGRvd24gc3VicGxhbnMKIAkgKi8KIAlFeGVjRW5kTm9k ZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwog CUV4ZWNFbmROb2RlKGlubmVyUGxhblN0YXRlKG5vZGUpKTsKKwlpbm5lclBsYW5TdGF0ZShub2Rl KSA9IE5VTEw7CiAKIAlOTDFfcHJpbnRmKCJFeGVjRW5kTmVzdExvb3A6ICVzXG4iLAogCQkJICAg Im5vZGUgcHJvY2Vzc2luZyBlbmRlZCIpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVByb2plY3RTZXQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0 LmMKaW5kZXggYjRiYmRjODliMS4uZTliOTY0MTZkMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl UHJvamVjdFNldC5jCkBAIC0zMjQsNiArMzI0LDcgQEAgRXhlY0VuZFByb2plY3RTZXQoUHJvamVj dFNldFN0YXRlICpub2RlKQogCSAqIHNodXQgZG93biBzdWJwbGFucwogCSAqLwogCUV4ZWNFbmRO b2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7 CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNp dmV1bmlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKaW5k ZXggZTc4MTAwMzkzNC4uZjZkNjBiY2Q2YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJl Y3Vyc2l2ZXVuaW9uLmMKQEAgLTI3MiwyMCArMjcyLDM2IEBAIHZvaWQKIEV4ZWNFbmRSZWN1cnNp dmVVbmlvbihSZWN1cnNpdmVVbmlvblN0YXRlICpub2RlKQogewogCS8qIFJlbGVhc2UgdHVwbGVz dG9yZXMgKi8KLQl0dXBsZXN0b3JlX2VuZChub2RlLT53b3JraW5nX3RhYmxlKTsKLQl0dXBsZXN0 b3JlX2VuZChub2RlLT5pbnRlcm1lZGlhdGVfdGFibGUpOworCWlmIChub2RlLT53b3JraW5nX3Rh YmxlICE9IE5VTEwpCisJeworCQl0dXBsZXN0b3JlX2VuZChub2RlLT53b3JraW5nX3RhYmxlKTsK KwkJbm9kZS0+d29ya2luZ190YWJsZSA9IE5VTEw7CisJfQorCWlmIChub2RlLT5pbnRlcm1lZGlh dGVfdGFibGUgIT0gTlVMTCkKKwl7CisJCXR1cGxlc3RvcmVfZW5kKG5vZGUtPmludGVybWVkaWF0 ZV90YWJsZSk7CisJCW5vZGUtPmludGVybWVkaWF0ZV90YWJsZSA9IE5VTEw7CisJfQogCiAJLyog ZnJlZSBzdWJzaWRpYXJ5IHN0dWZmIGluY2x1ZGluZyBoYXNodGFibGUgKi8KLQlpZiAobm9kZS0+ dGVtcENvbnRleHQpCisJaWYgKG5vZGUtPnRlbXBDb250ZXh0ICE9IE5VTEwpCisJewogCQlNZW1v cnlDb250ZXh0RGVsZXRlKG5vZGUtPnRlbXBDb250ZXh0KTsKLQlpZiAobm9kZS0+dGFibGVDb250 ZXh0KQorCQlub2RlLT50ZW1wQ29udGV4dCA9IE5VTEw7CisJfQorCWlmIChub2RlLT50YWJsZUNv bnRleHQgIT0gTlVMTCkKKwl7CiAJCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+dGFibGVDb250 ZXh0KTsKKwkJbm9kZS0+dGFibGVDb250ZXh0ID0gTlVMTDsKKwl9CiAKIAkvKgogCSAqIGNsb3Nl IGRvd24gc3VicGxhbnMKIAkgKi8KIAlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7 CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogCUV4ZWNFbmROb2RlKGlubmVyUGxhblN0 YXRlKG5vZGUpKTsKKwlpbm5lclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiB9CiAKIC8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYwppbmRleCBlOWY1NzMyZjMzLi5mMTU5MDJlODQw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCkBAIC0yNDQsNiArMjQ0LDcgQEAgRXhlY0Vu ZFJlc3VsdChSZXN1bHRTdGF0ZSAqbm9kZSkKIAkgKiBzaHV0IGRvd24gc3VicGxhbnMKIAkgKi8K IAlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9k ZSkgPSBOVUxMOwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlU2FtcGxlc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYwpp bmRleCA0MWMxZWEzN2FkLi5hNjgxMzU1OWU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlU2FtcGxlc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1w bGVzY2FuLmMKQEAgLTE4NSwxNCArMTg1LDE3IEBAIEV4ZWNFbmRTYW1wbGVTY2FuKFNhbXBsZVNj YW5TdGF0ZSAqbm9kZSkKIAkvKgogCSAqIFRlbGwgc2FtcGxpbmcgZnVuY3Rpb24gdGhhdCB3ZSBm aW5pc2hlZCB0aGUgc2Nhbi4KIAkgKi8KLQlpZiAobm9kZS0+dHNtcm91dGluZS0+RW5kU2FtcGxl U2NhbikKKwlpZiAobm9kZS0+dHNtcm91dGluZSAhPSBOVUxMICYmIG5vZGUtPnRzbXJvdXRpbmUt PkVuZFNhbXBsZVNjYW4pCiAJCW5vZGUtPnRzbXJvdXRpbmUtPkVuZFNhbXBsZVNjYW4obm9kZSk7 CiAKIAkvKgotCSAqIGNsb3NlIGhlYXAgc2NhbgorCSAqIGNsb3NlIGhlYXAgc2NhbiAobm8tb3Ag aWYgd2UgZGlkbid0IHN0YXJ0IGl0KQogCSAqLwogCWlmIChub2RlLT5zcy5zc19jdXJyZW50U2Nh bkRlc2MpCisJewogCQl0YWJsZV9lbmRzY2FuKG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyk7 CisJCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CisJfQogfQogCiAvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwppbmRleCA0OWE1OTMzYWZmLi45MTEyNjZk YTA3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKQEAgLTE4MywxOCArMTgzLDE0IEBA IEV4ZWNJbml0U2VxU2NhbihTZXFTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIHZvaWQKIEV4ZWNFbmRTZXFTY2FuKFNlcVNjYW5TdGF0ZSAqbm9kZSkKIHsKLQlUYWJsZVNj YW5EZXNjIHNjYW5EZXNjOwotCi0JLyoKLQkgKiBnZXQgaW5mb3JtYXRpb24gZnJvbSBub2RlCi0J ICovCi0Jc2NhbkRlc2MgPSBub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2M7Ci0KIAkvKgotCSAq IGNsb3NlIGhlYXAgc2NhbgorCSAqIGNsb3NlIGhlYXAgc2NhbiAobm8tb3AgaWYgd2UgZGlkbid0 IHN0YXJ0IGl0KQogCSAqLwotCWlmIChzY2FuRGVzYyAhPSBOVUxMKQotCQl0YWJsZV9lbmRzY2Fu KHNjYW5EZXNjKTsKKwlpZiAobm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjICE9IE5VTEwpCisJ eworCQl0YWJsZV9lbmRzY2FuKG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyk7CisJCW5vZGUt PnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CisJfQogfQogCiAvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTZXRPcC5jCmluZGV4IDk4YzFiODRkNDMuLjVjMjg2MWQyNDMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTZXRPcC5jCkBAIC01ODMsMTAgKzU4MywxNCBAQCB2b2lkCiBFeGVjRW5kU2V0 T3AoU2V0T3BTdGF0ZSAqbm9kZSkKIHsKIAkvKiBmcmVlIHN1YnNpZGlhcnkgc3R1ZmYgaW5jbHVk aW5nIGhhc2h0YWJsZSAqLwotCWlmIChub2RlLT50YWJsZUNvbnRleHQpCisJaWYgKG5vZGUtPnRh YmxlQ29udGV4dCAhPSBOVUxMKQorCXsKIAkJTWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT50YWJs ZUNvbnRleHQpOworCQlub2RlLT50YWJsZUNvbnRleHQgPSBOVUxMOworCX0KIAogCUV4ZWNFbmRO b2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7 CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKaW5kZXggZWVhN2YyYWUxNS4uYzhhMzViNjRh OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jCkBAIC0zMDcsMTMgKzMwNywxNiBAQCBFeGVjRW5k U29ydChTb3J0U3RhdGUgKm5vZGUpCiAJICogUmVsZWFzZSB0dXBsZXNvcnQgcmVzb3VyY2VzCiAJ ICovCiAJaWYgKG5vZGUtPnR1cGxlc29ydHN0YXRlICE9IE5VTEwpCisJewogCQl0dXBsZXNvcnRf ZW5kKChUdXBsZXNvcnRzdGF0ZSAqKSBub2RlLT50dXBsZXNvcnRzdGF0ZSk7Ci0Jbm9kZS0+dHVw bGVzb3J0c3RhdGUgPSBOVUxMOworCQlub2RlLT50dXBsZXNvcnRzdGF0ZSA9IE5VTEw7CisJfQog CiAJLyoKIAkgKiBzaHV0IGRvd24gdGhlIHN1YnBsYW4KIAkgKi8KIAlFeGVjRW5kTm9kZShvdXRl clBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogCiAJU08x X3ByaW50ZigiRXhlY0VuZFNvcnQ6ICVzXG4iLAogCQkJICAgInNvcnQgbm9kZSBzaHV0ZG93biIp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jCmluZGV4IDFlZTYyOTU2NjAu LjkxZDdhZTgyY2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVy eXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMKQEAg LTE3MSw2ICsxNzEsNyBAQCBFeGVjRW5kU3VicXVlcnlTY2FuKFN1YnF1ZXJ5U2NhblN0YXRlICpu b2RlKQogCSAqIGNsb3NlIGRvd24gc3VicXVlcnkKIAkgKi8KIAlFeGVjRW5kTm9kZShub2RlLT5z dWJwbGFuKTsKKwlub2RlLT5zdWJwbGFuID0gTlVMTDsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmMKaW5kZXggYTYwZGNkNDk0My4uODBlZDRi MjZhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jCkBAIC0yMTcs OCArMjE3LDEwIEBAIEV4ZWNFbmRUYWJsZUZ1bmNTY2FuKFRhYmxlRnVuY1NjYW5TdGF0ZSAqbm9k ZSkKIAkgKiBSZWxlYXNlIHR1cGxlc3RvcmUgcmVzb3VyY2VzCiAJICovCiAJaWYgKG5vZGUtPnR1 cHN0b3JlICE9IE5VTEwpCisJewogCQl0dXBsZXN0b3JlX2VuZChub2RlLT50dXBzdG9yZSk7Ci0J bm9kZS0+dHVwc3RvcmUgPSBOVUxMOworCQlub2RlLT50dXBzdG9yZSA9IE5VTEw7CisJfQogfQog CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFu Z2VzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMKaW5kZXgg ZGE2MjJkM2Y1Zi4uOTE0N2U0YWZhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVRpZHJhbmdlc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5n ZXNjYW4uYwpAQCAtMzI3LDEwICszMjcsMTQgQEAgRXhlY1JlU2NhblRpZFJhbmdlU2NhbihUaWRS YW5nZVNjYW5TdGF0ZSAqbm9kZSkKIHZvaWQKIEV4ZWNFbmRUaWRSYW5nZVNjYW4oVGlkUmFuZ2VT Y2FuU3RhdGUgKm5vZGUpCiB7Ci0JVGFibGVTY2FuRGVzYyBzY2FuID0gbm9kZS0+c3Muc3NfY3Vy cmVudFNjYW5EZXNjOwotCi0JaWYgKHNjYW4gIT0gTlVMTCkKLQkJdGFibGVfZW5kc2NhbihzY2Fu KTsKKwkvKgorCSAqIGNsb3NlIGhlYXAgc2NhbiAobm8tb3AgaWYgd2UgZGlkbid0IHN0YXJ0IGl0 KQorCSAqLworCWlmIChub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgIT0gTlVMTCkKKwl7CisJ CXRhYmxlX2VuZHNjYW4obm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKTsKKwkJbm9kZS0+c3Mu c3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsKKwl9CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlVGlkc2Nhbi5jCmluZGV4IDE1MDU1MDc3ZDAuLjc0ZWM2YWZkY2MgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYwpAQCAtNDcwLDggKzQ3MCwxNCBAQCBFeGVjUmVTY2FuVGlk U2NhbihUaWRTY2FuU3RhdGUgKm5vZGUpCiB2b2lkCiBFeGVjRW5kVGlkU2NhbihUaWRTY2FuU3Rh dGUgKm5vZGUpCiB7Ci0JaWYgKG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYykKKwkvKgorCSAq IGNsb3NlIGhlYXAgc2NhbiAobm8tb3AgaWYgd2UgZGlkbid0IHN0YXJ0IGl0KQorCSAqLworCWlm IChub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgIT0gTlVMTCkKKwl7CiAJCXRhYmxlX2VuZHNj YW4obm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKTsKKwkJbm9kZS0+c3Muc3NfY3VycmVudFNj YW5EZXNjID0gTlVMTDsKKwl9CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlx dWUuYwppbmRleCAwMWY5NTExOTdjLi4xM2M1NTYzMjZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlVW5pcXVlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVu aXF1ZS5jCkBAIC0xNjksNiArMTY5LDcgQEAgdm9pZAogRXhlY0VuZFVuaXF1ZShVbmlxdWVTdGF0 ZSAqbm9kZSkKIHsKIAlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQ bGFuU3RhdGUobm9kZSkgPSBOVUxMOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dB Z2cuYwppbmRleCA3NzcyNGE2ZGFhLi5jNGM2ZjAwOWJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVdpbmRvd0FnZy5jCkBAIC0xMzUxLDExICsxMzUxLDE0IEBAIHJlbGVhc2VfcGFydGl0aW9uKFdp bmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSkKIAkgKiBhbnkgYWdncmVnYXRlIHRlbXAgZGF0YSkuICBX ZSBkb24ndCByZWx5IG9uIHJldGFpbCBwZnJlZSBiZWNhdXNlIHNvbWUKIAkgKiBhZ2dyZWdhdGVz IG1pZ2h0IGhhdmUgYWxsb2NhdGVkIGRhdGEgd2UgZG9uJ3QgaGF2ZSBkaXJlY3QgcG9pbnRlcnMg dG8uCiAJICovCi0JTWVtb3J5Q29udGV4dFJlc2V0QW5kRGVsZXRlQ2hpbGRyZW4od2luc3RhdGUt PnBhcnRjb250ZXh0KTsKLQlNZW1vcnlDb250ZXh0UmVzZXRBbmREZWxldGVDaGlsZHJlbih3aW5z dGF0ZS0+YWdnY29udGV4dCk7CisJaWYgKHdpbnN0YXRlLT5wYXJ0Y29udGV4dCAhPSBOVUxMKQor CQlNZW1vcnlDb250ZXh0UmVzZXRBbmREZWxldGVDaGlsZHJlbih3aW5zdGF0ZS0+cGFydGNvbnRl eHQpOworCWlmICh3aW5zdGF0ZS0+YWdnY29udGV4dCAhPSBOVUxMKQorCQlNZW1vcnlDb250ZXh0 UmVzZXRBbmREZWxldGVDaGlsZHJlbih3aW5zdGF0ZS0+YWdnY29udGV4dCk7CiAJZm9yIChpID0g MDsgaSA8IHdpbnN0YXRlLT5udW1hZ2dzOyBpKyspCiAJewotCQlpZiAod2luc3RhdGUtPnBlcmFn Z1tpXS5hZ2djb250ZXh0ICE9IHdpbnN0YXRlLT5hZ2djb250ZXh0KQorCQlpZiAod2luc3RhdGUt PnBlcmFnZ1tpXS5hZ2djb250ZXh0ICE9IE5VTEwgJiYKKwkJCXdpbnN0YXRlLT5wZXJhZ2dbaV0u YWdnY29udGV4dCAhPSB3aW5zdGF0ZS0+YWdnY29udGV4dCkKIAkJCU1lbW9yeUNvbnRleHRSZXNl dEFuZERlbGV0ZUNoaWxkcmVuKHdpbnN0YXRlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCk7CiAJfQog CkBAIC0yNjgxLDI0ICsyNjg0LDQwIEBAIEV4ZWNJbml0V2luZG93QWdnKFdpbmRvd0FnZyAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiB2b2lkCiBFeGVjRW5kV2luZG93QWdnKFdp bmRvd0FnZ1N0YXRlICpub2RlKQogewotCVBsYW5TdGF0ZSAgKm91dGVyUGxhbjsKIAlpbnQJCQlp OwogCiAJcmVsZWFzZV9wYXJ0aXRpb24obm9kZSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbm9kZS0+ bnVtYWdnczsgaSsrKQogCXsKLQkJaWYgKG5vZGUtPnBlcmFnZ1tpXS5hZ2djb250ZXh0ICE9IG5v ZGUtPmFnZ2NvbnRleHQpCisJCWlmIChub2RlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCAhPSBOVUxM ICYmCisJCQlub2RlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCAhPSBub2RlLT5hZ2djb250ZXh0KQog CQkJTWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCk7CiAJfQot CU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+cGFydGNvbnRleHQpOwotCU1lbW9yeUNvbnRleHRE ZWxldGUobm9kZS0+YWdnY29udGV4dCk7CisJaWYgKG5vZGUtPnBhcnRjb250ZXh0ICE9IE5VTEwp CisJeworCQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPnBhcnRjb250ZXh0KTsKKwkJbm9kZS0+ cGFydGNvbnRleHQgPSBOVUxMOworCX0KKwlpZiAobm9kZS0+YWdnY29udGV4dCAhPSBOVUxMKQor CXsKKwkJTWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT5hZ2djb250ZXh0KTsKKwkJbm9kZS0+YWdn Y29udGV4dCA9IE5VTEw7CisJfQogCi0JcGZyZWUobm9kZS0+cGVyZnVuYyk7Ci0JcGZyZWUobm9k ZS0+cGVyYWdnKTsKKwlpZiAobm9kZS0+cGVyZnVuYyAhPSBOVUxMKQorCXsKKwkJcGZyZWUobm9k ZS0+cGVyZnVuYyk7CisJCW5vZGUtPnBlcmZ1bmMgPSBOVUxMOworCX0KKwlpZiAobm9kZS0+cGVy YWdnICE9IE5VTEwpCisJeworCQlwZnJlZShub2RlLT5wZXJhZ2cpOworCQlub2RlLT5wZXJhZ2cg PSBOVUxMOworCX0KIAotCW91dGVyUGxhbiA9IG91dGVyUGxhblN0YXRlKG5vZGUpOwotCUV4ZWNF bmROb2RlKG91dGVyUGxhbik7CisJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwor CW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0K LS0gCjIuMzUuMwoK --00000000000041b1e2060642be90 Content-Type: application/octet-stream; name="v47-0004-Adjustments-to-allow-ExecutorStart-to-sometimes-.patch" Content-Disposition: attachment; filename="v47-0004-Adjustments-to-allow-ExecutorStart-to-sometimes-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ln0bz7v15 RnJvbSAwZmE3MzIxZjhjMjY1NTE1ZmVmZTUzZWY2MzJlYTA5ZDY0YTg3OTc2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1Mzo0NiArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ3 IDQvOV0gQWRqdXN0bWVudHMgdG8gYWxsb3cgRXhlY3V0b3JTdGFydCgpIHRvIHNvbWV0aW1lcwog ZmFpbAoKVXBvbiBwYXNzaW5nIGEgcGxhbiB0cmVlIGZyb20gYSBDYWNoZWRQbGFuIHRvIHRoZSBl eGVjdXRvciwgdGhlcmUncyBhCnBvc3NpYmlsaXR5IHRoYXQgRXhlY3V0b3JTdGFydCgpIG1pZ2h0 IHJldHVybiBhbiBpbmNvbXBsZXRlbHkgc2V0IHVwCnBsYW5zdGF0ZSB0cmVlLiBUaGlzIGNhbiBo YXBwZW4gaWYgdGhlIENhY2hlZFBsYW4gdW5kZXJnb2VzIGludmFsaWRhdGlvbgpkdXJpbmcgdGhl IEV4ZWNJbml0Tm9kZSgpIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIEluIHN1Y2ggY2FzZXMsIHRo ZQpleGVjdXRpb24gc2hvdWxkIGJlIHJlYXR0ZW1wdGVkIHVzaW5nIGEgZnJlc2ggQ2FjaGVkUGxh bi4gQWxzbywgYW55CnBhcnRpYWxseSBpbml0aWFsaXplZCBFU3RhdGUgbXVzdCBiZSBjbGVhbmVk IHVwIGJ5IGludm9raW5nIGJvdGgKRXhlY3V0b3JFbmQoKSBhbmQgRnJlZUV4ZWN1dG9yU3RhdGUo KS4KCkV4ZWN1dG9yU3RhcnQoKSAoYW5kIEV4ZWN1dG9yU3RhcnRfaG9vaygpKSBub3cgcmV0dXJu IGEgQm9vbGVhbiB0ZWxsaW5nCnRoZSBjYWxsZXIgaWYgdGhlIHBsYW4gaW5pdGlhbGl6YXRpb24g ZmFpbGVkLgoKRm9yIHRoZSByZXBsYW4gbG9vcCBpbiB0aGF0IGNvbnRleHQsIGl0IG1ha2VzIG1v cmUgc2Vuc2UgdG8gaGF2ZQpFeGVjdXRvclN0YXJ0KCkgZWl0aGVyIGluIHRoZSBzYW1lIHNjb3Bl IG9yIGNsb3NlciB0byB3aGVyZQpHZXRDYWNoZWRQbGFuKCkgaXMgaW52b2tlZC4gIFNvIHRoaXMg Y29tbWl0IG1vZGlmaWVzIHRoZSBmb2xsb3dpbmcKc2l0ZXM6CgoqIFRoZSBFeGVjdXRvclN0YXJ0 KCkgY2FsbCBpbiBFeHBsYWluT25lUGxhbigpIGlzIG1vdmVkIGludG8gYSBuZXcKICBmdW5jdGlv biBFeHBsYWluUXVlcnlEZXNjKCkgYWxvbmcgd2l0aCBDcmVhdGVRdWVyeURlc2MoKS4gIENhbGxl cnMKICBvZiBFeHBsYWluT25lUGxhbigpIHNob3VsZCBub3cgY2FsbCB0aGUgbmV3IGZ1bmN0aW9u IGZpcnN0LgoKKiBUaGUgRXhlY3V0b3JTdGFydCgpIGNhbGwgaW4gX1NQSV9wcXVlcnkoKSBpcyBt b3ZlZCB0byBpdHMgY2FsbGVyCiAgX1NQSV9leGVjdXRlX3BsYW4oKS4KCiogVGhlIEV4ZWN1dG9y U3RhcnQoKSBjYWxsIGluIFBvcnRhbFJ1bk11bHRpKCkgaXMgbW92ZWQgdG8KICBQb3J0YWxTdGFy dCgpLiAgVGhpcyByZXF1aXJlcyBhIG5ldyBMaXN0IGZpZWxkIGluIFBvcnRhbERhdGEgdG8KICBz dG9yZSB0aGUgUXVlcnlEZXNjcyBjcmVhdGVkIGluIFBvcnRhbFN0YXJ0KCkgYW5kIGEgbmV3IG1l bW9yeQogIGNvbnRleHQgZm9yIHRob3NlLiAgT25lIHVuaW50ZW5kZWQgY29uc2VxdWVuY2UgaXMg dGhhdAogIENvbW1hbmRDb3VudGVySW5jcmVtZW50KCkgYmV0d2VlbiBxdWVyaWVzIGluIHRoZSBQ T1JUQUxfTVVMVElfUVVFUlkKICBjYXNlIGlzIG5vdyBkb25lIGluIHRoZSBsb29wIGluIFBvcnRh bFN0YXJ0KCkgYW5kIG5vdCBpbgogIFBvcnRhbFJ1bk11bHRpKCkuICBUaGF0IHN0aWxsIHdvcmtz IGJlY2F1c2UgdGhlIFNuYXBzaG90IHJlZ2lzdGVyZWQKICBpbiBRdWVyeURlc2MvRVN0YXRlIGlz IHVwZGF0ZWQgdG8gYWNjb3VudCBmb3IgdGhlIENDSSgpLgoKVGhpcyBjb21taXQgYWxzbyBhZGRz IGEgbmV3IGZsYWcgdG8gRVN0YXRlIGNhbGxlZCBlc19jYW5jZWxlZCB0aGF0CmNvbXBsZW1lbnRz IGVzX2ZpbmlzaGVkIHRvIGRlbm90ZSB0aGUgbmV3IHNjZW5hcmlvIHdoZXJlCkV4ZWN1dG9yU3Rh cnQoKSByZXR1cm5zIHdpdGggYSBwYXJ0aWFsbHkgc2V0dXAgcGxhbnN0YXRlIHRyZWUuICBBbHNv LAp0byByZXNldCB0aGUgQUZURVIgdHJpZ2dlciBzdGF0ZSB0aGF0IHdvdWxkIGhhdmUgYmVlbiBz ZXQgdXAgaW4gdGhlCkV4ZWN1dG9yU3RhcnQoKSwgdGhpcyBhZGRzIGEgbmV3IGZ1bmN0aW9uIEFm dGVyVHJpZ2dlckNhbmNlbFF1ZXJ5KCkKd2hpY2ggaXMgY2FsbGVkIGZyb20gRXhlY3V0b3JFbmQo KSAobm90IEV4ZWN1dG9yRmluaXNoKCkpIHdoZW4KZXNfY2FuY2VsZWQgaXMgdHJ1ZS4KCk5vdGUg dGhhdCB0aGlzIGNvbW1pdCBieSBpdHNlbGYgZG9lc24ndCBtYWtlIGFueSBmdW5jdGlvbmFsIGNo YW5nZSwKYmVjYXVzZSB0aGUgQ2FjaGVkUGxhbiBpcyBub3QgcGFzc2VkIGludG8gdGhlIGV4ZWN1 dG9yIHlldC4KLS0tCiBjb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYyAgICAgICAg ICAgfCAgMTIgKy0KIC4uLi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMg ICB8ICAxMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgICAgICAgICAgICAgICAg IHwgICA1ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jICAgICAgICAgICAgICAg fCAgIDkgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgICAgICAgICB8 IDE0NSArKysrKy0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgICAgICAgICAg ICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgICAgICAgICAgICAg ICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyAgICAgICAgICAg ICB8ICAgNiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jICAgICAgICAgICAgICAg IHwgIDMxICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgICAgICAgICAgICAgICAg fCAgMTMgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwg IDQ0ICsrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgICAgICAgIHwg ICA2ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgICAgICAgICAgICAgIHwgICA3 ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyAgICAgICAgICAgICAgICAgICAgfCAgNDgg KystCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgMTgg Ky0KIHNyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgICAgICAgICAgICAgICAgICAgICB8IDM0NiAr KysrKysrKystLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgICAg ICAgICAgICB8ICAgOSArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggICAgICAgICAg ICAgICAgfCAgIDcgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaCAgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAgICAgICAg ICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICAg ICB8ICAgMyArCiBzcmMvaW5jbHVkZS90Y29wL3BxdWVyeS5oICAgICAgICAgICAgICAgICAgICAg fCAgIDIgKy0KIHNyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oICAgICAgICAgICAgICAgICAgICB8 ICAgMiArCiAyNCBmaWxlcyBjaGFuZ2VkLCA0NjYgaW5zZXJ0aW9ucygrKSwgMjgyIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jIGIv Y29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMKaW5kZXggYzNhYzI3YWU5OS4uYTA2 MzBkNzk0NCAxMDA2NDQKLS0tIGEvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMK KysrIGIvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMKQEAgLTc4LDcgKzc4LDcg QEAgc3RhdGljIEV4ZWN1dG9yUnVuX2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yUnVuID0gTlVMTDsK IHN0YXRpYyBFeGVjdXRvckZpbmlzaF9ob29rX3R5cGUgcHJldl9FeGVjdXRvckZpbmlzaCA9IE5V TEw7CiBzdGF0aWMgRXhlY3V0b3JFbmRfaG9va190eXBlIHByZXZfRXhlY3V0b3JFbmQgPSBOVUxM OwogCi1zdGF0aWMgdm9pZCBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURl c2MsIGludCBlZmxhZ3MpOworc3RhdGljIGJvb2wgZXhwbGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5 RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIHN0YXRpYyB2b2lkIGV4cGxhaW5fRXhlY3V0 b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCQkJCQkJCVNjYW5EaXJlY3Rpb24gZGlyZWN0 aW9uLAogCQkJCQkJCQl1aW50NjQgY291bnQsIGJvb2wgZXhlY3V0ZV9vbmNlKTsKQEAgLTI1OCw5 ICsyNTgsMTEgQEAgX1BHX2luaXQodm9pZCkKIC8qCiAgKiBFeGVjdXRvclN0YXJ0IGhvb2s6IHN0 YXJ0IHVwIGxvZ2dpbmcgaWYgbmVlZGVkCiAgKi8KLXN0YXRpYyB2b2lkCitzdGF0aWMgYm9vbAog ZXhwbGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQog eworCWJvb2wJcGxhbl92YWxpZDsKKwogCS8qCiAJICogQXQgdGhlIGJlZ2lubmluZyBvZiBlYWNo IHRvcC1sZXZlbCBzdGF0ZW1lbnQsIGRlY2lkZSB3aGV0aGVyIHdlJ2xsCiAJICogc2FtcGxlIHRo aXMgc3RhdGVtZW50LiAgSWYgbmVzdGVkLXN0YXRlbWVudCBleHBsYWluaW5nIGlzIGVuYWJsZWQs CkBAIC0yOTYsOSArMjk4LDkgQEAgZXhwbGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLCBpbnQgZWZsYWdzKQogCX0KIAogCWlmIChwcmV2X0V4ZWN1dG9yU3RhcnQpCi0JCXBy ZXZfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJCXBsYW5fdmFsaWQgPSBwcmV2 X0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogCWVsc2UKLQkJc3RhbmRhcmRfRXhl Y3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJCXBsYW5fdmFsaWQgPSBzdGFuZGFyZF9F eGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKIAogCWlmIChhdXRvX2V4cGxhaW5fZW5h YmxlZCgpKQogCXsKQEAgLTMxNiw2ICszMTgsOCBAQCBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVl cnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY3h0KTsKIAkJfQogCX0KKworCXJldHVybiBwbGFuX3ZhbGlkOwogfQogCiAvKgpkaWZmIC0t Z2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMgYi9j b250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwppbmRleCBhNDZm MmRiMzUyLi41OGNiNjJlODcyIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50 cy9wZ19zdGF0X3N0YXRlbWVudHMuYworKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9w Z19zdGF0X3N0YXRlbWVudHMuYwpAQCAtMzMwLDcgKzMzMCw3IEBAIHN0YXRpYyBQbGFubmVkU3Rt dCAqcGdzc19wbGFubmVyKFF1ZXJ5ICpwYXJzZSwKIAkJCQkJCQkJIGNvbnN0IGNoYXIgKnF1ZXJ5 X3N0cmluZywKIAkJCQkJCQkJIGludCBjdXJzb3JPcHRpb25zLAogCQkJCQkJCQkgUGFyYW1MaXN0 SW5mbyBib3VuZFBhcmFtcyk7Ci1zdGF0aWMgdm9pZCBwZ3NzX0V4ZWN1dG9yU3RhcnQoUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOworc3RhdGljIGJvb2wgcGdzc19FeGVjdXRvclN0 YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIHN0YXRpYyB2b2lkIHBnc3Nf RXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCQkJCQkJIFNjYW5EaXJlY3Rpb24g ZGlyZWN0aW9uLAogCQkJCQkJCSB1aW50NjQgY291bnQsIGJvb2wgZXhlY3V0ZV9vbmNlKTsKQEAg LTk2NywxMyArOTY3LDE1IEBAIHBnc3NfcGxhbm5lcihRdWVyeSAqcGFyc2UsCiAvKgogICogRXhl Y3V0b3JTdGFydCBob29rOiBzdGFydCB1cCB0cmFja2luZyBpZiBuZWVkZWQKICAqLwotc3RhdGlj IHZvaWQKK3N0YXRpYyBib29sCiBwZ3NzX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURl c2MsIGludCBlZmxhZ3MpCiB7CisJYm9vbAlwbGFuX3ZhbGlkOworCiAJaWYgKHByZXZfRXhlY3V0 b3JTdGFydCkKLQkJcHJldl9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJcGxh bl92YWxpZCA9IHByZXZfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CiAJZWxzZQot CQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJcGxhbl92YWxp ZCA9IHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogCiAJLyoKIAkg KiBJZiBxdWVyeSBoYXMgcXVlcnlJZCB6ZXJvLCBkb24ndCB0cmFjayBpdC4gIFRoaXMgcHJldmVu dHMgZG91YmxlCkBAIC05OTYsNiArOTk4LDggQEAgcGdzc19FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVz YyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4 dCk7CiAJCX0KIAl9CisKKwlyZXR1cm4gcGxhbl92YWxpZDsKIH0KIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29w eXRvLmMKaW5kZXggMGUzNTQ3YzM1Yi4uZjc3MzBjODcwMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMK QEAgLTU2OCw4ICs1NjgsMTEgQEAgQmVnaW5Db3B5VG8oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkg KiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uLgog CQkgKgogCQkgKiBFeGVjdXRvclN0YXJ0IGNvbXB1dGVzIGEgcmVzdWx0IHR1cGRlc2MgZm9yIHVz CisJCSAqCisJCSAqIE9LIHRvIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlOyBwbGFuIGNhbid0IGJl Y29tZSBpbnZhbGlkLAorCQkgKiBiZWNhdXNlIHRoZXJlJ3Mgbm8gQ2FjaGVkUGxhbi4KIAkJICov Ci0JCUV4ZWN1dG9yU3RhcnQoY3N0YXRlLT5xdWVyeURlc2MsIDApOworCQkodm9pZCkgRXhlY3V0 b3JTdGFydChjc3RhdGUtPnF1ZXJ5RGVzYywgMCk7CiAKIAkJdHVwRGVzYyA9IGNzdGF0ZS0+cXVl cnlEZXNjLT50dXBEZXNjOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ny ZWF0ZWFzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCmluZGV4IDE4YjA3YzAy MDAuLjRhOTUwYzAzZmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFz LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYwpAQCAtMzI5LDggKzMyOSwx MyBAQCBFeGVjQ3JlYXRlVGFibGVBcyhQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVRhYmxlQXNT dG10ICpzdG10LAogCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90 LAogCQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgMCk7CiAKLQkJLyogY2FsbCBFeGVj dXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbiAqLwotCQlFeGVjdXRv clN0YXJ0KHF1ZXJ5RGVzYywgR2V0SW50b1JlbEVGbGFncyhpbnRvKSk7CisJCS8qCisJCSAqIGNh bGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24KKwkJICoK KwkJICogT0sgdG8gaWdub3JlIHRoZSByZXR1cm4gdmFsdWU7IHBsYW4gY2FuJ3QgYmVjb21lIGlu dmFsaWQsCisJCSAqIGJlY2F1c2UgdGhlcmUncyBubyBDYWNoZWRQbGFuLgorCQkgKi8KKwkJKHZv aWQpIEV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBHZXRJbnRvUmVsRUZsYWdzKGludG8pKTsKIAog CQkvKiBydW4gdGhlIHBsYW4gdG8gY29tcGxldGlvbiAqLwogCQlFeGVjdXRvclJ1bihxdWVyeURl c2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCAwLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpp bmRleCAyODFjNDdiMmVlLi44ZDFmZTU3MzhiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0z OTMsNiArMzkzLDcgQEAgRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9w dGlvbnMsCiAJZWxzZQogCXsKIAkJUGxhbm5lZFN0bXQgKnBsYW47CisJCVF1ZXJ5RGVzYyAgICpx dWVyeURlc2M7CiAJCWluc3RyX3RpbWUJcGxhbnN0YXJ0LAogCQkJCQlwbGFuZHVyYXRpb247CiAJ CUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlX3N0YXJ0LApAQCAtNDE1LDEyICs0MTYsOTAgQEAgRXhwbGFp bk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJCQlCdWZmZXJVc2Fn ZUFjY3VtRGlmZigmYnVmdXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAmYnVmdXNhZ2Vfc3RhcnQpOwog CQl9CiAKKwkJcXVlcnlEZXNjID0gRXhwbGFpblF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBxdWVyeVN0 cmluZywgaW50bywgZXMsCisJCQkJCQkJCQkgcGFyYW1zLCBxdWVyeUVudik7CisJCUFzc2VydChx dWVyeURlc2MpOworCiAJCS8qIHJ1biBpdCAoaWYgbmVlZGVkKSBhbmQgcHJvZHVjZSBvdXRwdXQg Ki8KLQkJRXhwbGFpbk9uZVBsYW4ocGxhbiwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMs IHF1ZXJ5RW52LAorCQlFeHBsYWluT25lUGxhbihxdWVyeURlc2MsIGludG8sIGVzLCBxdWVyeVN0 cmluZywgcGFyYW1zLCBxdWVyeUVudiwKIAkJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZm ZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCkpOwogCX0KIH0KIAorLyoKKyAqIEV4cGxhaW5RdWVyeURl c2MKKyAqCQlTZXQgdXAgUXVlcnlEZXNjIGZvciBFWFBMQUlOaW5nIGEgZ2l2ZW4gcGxhbgorICoK KyAqIFRoaXMgcmV0dXJucyBOVUxMIGlmIGNwbGFuIGlzIGZvdW5kIHRvIGhhdmUgYmVlbiBpbnZh bGlkYXRlZCBhZnRlcgorICogY2FsbGluZyBFeGVjdXRvclN0YXJ0KCkuCisgKi8KK1F1ZXJ5RGVz YyAqCitFeHBsYWluUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpzdG10LCBDYWNoZWRQbGFuICpjcGxh biwKKwkJCQkgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsIEludG9DbGF1c2UgKmludG8sIEV4cGxh aW5TdGF0ZSAqZXMsCisJCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50 ICpxdWVyeUVudikKK3sKKwlRdWVyeURlc2MgICpxdWVyeURlc2M7CisJRGVzdFJlY2VpdmVyICpk ZXN0OworCWludAkJCWVmbGFnczsKKwlpbnQJCQlpbnN0cnVtZW50X29wdGlvbiA9IDA7CisKKwkv KgorCSAqIE5vcm1hbGx5IHdlIGRpc2NhcmQgdGhlIHF1ZXJ5J3Mgb3V0cHV0LCBidXQgaWYgZXhw bGFpbmluZyBDUkVBVEUgVEFCTEUKKwkgKiBBUywgd2UnZCBiZXR0ZXIgdXNlIHRoZSBhcHByb3By aWF0ZSB0dXBsZSByZWNlaXZlci4KKwkgKi8KKwlpZiAoaW50bykKKwkJZGVzdCA9IENyZWF0ZUlu dG9SZWxEZXN0UmVjZWl2ZXIoaW50byk7CisJZWxzZQorCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsK KworCWlmIChlcy0+YW5hbHl6ZSAmJiBlcy0+dGltaW5nKQorCQlpbnN0cnVtZW50X29wdGlvbiB8 PSBJTlNUUlVNRU5UX1RJTUVSOworCWVsc2UgaWYgKGVzLT5hbmFseXplKQorCQlpbnN0cnVtZW50 X29wdGlvbiB8PSBJTlNUUlVNRU5UX1JPV1M7CisKKwlpZiAoZXMtPmJ1ZmZlcnMpCisJCWluc3Ry dW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfQlVGRkVSUzsKKwlpZiAoZXMtPndhbCkKKwkJaW5z dHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9XQUw7CisKKwkvKgorCSAqIFVzZSBhIHNuYXBz aG90IHdpdGggYW4gdXBkYXRlZCBjb21tYW5kIElEIHRvIGVuc3VyZSB0aGlzIHF1ZXJ5IHNlZXMK KwkgKiByZXN1bHRzIG9mIGFueSBwcmV2aW91c2x5IGV4ZWN1dGVkIHF1ZXJpZXMuCisJICovCisJ UHVzaENvcGllZFNuYXBzaG90KEdldEFjdGl2ZVNuYXBzaG90KCkpOworCVVwZGF0ZUFjdGl2ZVNu YXBzaG90Q29tbWFuZElkKCk7CisKKwkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVy eSAqLworCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LCBjcGxhbiwgcXVlcnlTdHJp bmcsCisJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKKwkJCQkJ CQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgaW5zdHJ1bWVudF9vcHRpb24pOworCisJLyogU2Vs ZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCisJaWYgKGVzLT5hbmFseXplKQorCQllZmxhZ3MgPSAw OwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdzICovCisJZWxzZQorCQllZmxh Z3MgPSBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZOworCWlmIChlcy0+Z2VuZXJpYykKKwkJZWZsYWdz IHw9IEVYRUNfRkxBR19FWFBMQUlOX0dFTkVSSUM7CisJaWYgKGludG8pCisJCWVmbGFncyB8PSBH ZXRJbnRvUmVsRUZsYWdzKGludG8pOworCisJLyoKKwkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8g cHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uLiAgQSBjYWNoZWQgcGxhbgorCSAqIG1heSBn ZXQgaW52YWxpZGF0ZWQgZHVyaW5nIHBsYW4gaW50aWFsaXphdGlvbi4KKwkgKi8KKwlpZiAoIUV4 ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpKQorCXsKKwkJLyogQ2xlYW4gdXAuICovCisJ CUV4ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7CisJCUZyZWVRdWVyeURlc2MocXVlcnlEZXNjKTsKKwkJ UG9wQWN0aXZlU25hcHNob3QoKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJcmV0dXJuIHF1ZXJ5 RGVzYzsKK30KKwogLyoKICAqIEV4cGxhaW5PbmVVdGlsaXR5IC0KICAqCSAgcHJpbnQgb3V0IHRo ZSBleGVjdXRpb24gcGxhbiBmb3Igb25lIHV0aWxpdHkgc3RhdGVtZW50CkBAIC01MjQsMjkgKzYw MywxNiBAQCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAq aW50bywgRXhwbGFpblN0YXRlICplcywKICAqIHRvIGNhbGwgaXQuCiAgKi8KIHZvaWQKLUV4cGxh aW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhw bGFpblN0YXRlICplcywKK0V4cGxhaW5PbmVQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAorCQkJ ICAgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJCSAgIGNvbnN0IGNoYXIg KnF1ZXJ5U3RyaW5nLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSAgIFF1ZXJ5RW52aXJvbm1l bnQgKnF1ZXJ5RW52LCBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24sCiAJCQkgICBjb25z dCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2UpCiB7Ci0JRGVzdFJlY2VpdmVyICpkZXN0OwotCVF1ZXJ5 RGVzYyAgKnF1ZXJ5RGVzYzsKIAlpbnN0cl90aW1lCXN0YXJ0dGltZTsKIAlkb3VibGUJCXRvdGFs dGltZSA9IDA7Ci0JaW50CQkJZWZsYWdzOwotCWludAkJCWluc3RydW1lbnRfb3B0aW9uID0gMDsK LQotCUFzc2VydChwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkpOwogCi0J aWYgKGVzLT5hbmFseXplICYmIGVzLT50aW1pbmcpCi0JCWluc3RydW1lbnRfb3B0aW9uIHw9IElO U1RSVU1FTlRfVElNRVI7Ci0JZWxzZSBpZiAoZXMtPmFuYWx5emUpCi0JCWluc3RydW1lbnRfb3B0 aW9uIHw9IElOU1RSVU1FTlRfUk9XUzsKLQotCWlmIChlcy0+YnVmZmVycykKLQkJaW5zdHJ1bWVu dF9vcHRpb24gfD0gSU5TVFJVTUVOVF9CVUZGRVJTOwotCWlmIChlcy0+d2FsKQotCQlpbnN0cnVt ZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1dBTDsKKwlBc3NlcnQocXVlcnlEZXNjLT5wbGFubmVk c3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkpOwogCiAJLyoKIAkgKiBXZSBhbHdheXMg Y29sbGVjdCB0aW1pbmcgZm9yIHRoZSBlbnRpcmUgc3RhdGVtZW50LCBldmVuIHdoZW4gbm9kZS1s ZXZlbApAQCAtNTU1LDQwICs2MjEsNiBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxh bm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJICovCiAJSU5T VFJfVElNRV9TRVRfQ1VSUkVOVChzdGFydHRpbWUpOwogCi0JLyoKLQkgKiBVc2UgYSBzbmFwc2hv dCB3aXRoIGFuIHVwZGF0ZWQgY29tbWFuZCBJRCB0byBlbnN1cmUgdGhpcyBxdWVyeSBzZWVzCi0J ICogcmVzdWx0cyBvZiBhbnkgcHJldmlvdXNseSBleGVjdXRlZCBxdWVyaWVzLgotCSAqLwotCVB1 c2hDb3BpZWRTbmFwc2hvdChHZXRBY3RpdmVTbmFwc2hvdCgpKTsKLQlVcGRhdGVBY3RpdmVTbmFw c2hvdENvbW1hbmRJZCgpOwotCi0JLyoKLQkgKiBOb3JtYWxseSB3ZSBkaXNjYXJkIHRoZSBxdWVy eSdzIG91dHB1dCwgYnV0IGlmIGV4cGxhaW5pbmcgQ1JFQVRFIFRBQkxFCi0JICogQVMsIHdlJ2Qg YmV0dGVyIHVzZSB0aGUgYXBwcm9wcmlhdGUgdHVwbGUgcmVjZWl2ZXIuCi0JICovCi0JaWYgKGlu dG8pCi0JCWRlc3QgPSBDcmVhdGVJbnRvUmVsRGVzdFJlY2VpdmVyKGludG8pOwotCWVsc2UKLQkJ ZGVzdCA9IE5vbmVfUmVjZWl2ZXI7Ci0KLQkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBx dWVyeSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFubmVkc3RtdCwgTlVMTCwg cXVlcnlTdHJpbmcsCi0JCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hv dCwKLQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgaW5zdHJ1bWVudF9vcHRpb24pOwot Ci0JLyogU2VsZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCi0JaWYgKGVzLT5hbmFseXplKQotCQll ZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdzICovCi0JZWxz ZQotCQllZmxhZ3MgPSBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZOwotCWlmIChlcy0+Z2VuZXJpYykK LQkJZWZsYWdzIHw9IEVYRUNfRkxBR19FWFBMQUlOX0dFTkVSSUM7Ci0JaWYgKGludG8pCi0JCWVm bGFncyB8PSBHZXRJbnRvUmVsRUZsYWdzKGludG8pOwotCi0JLyogY2FsbCBFeGVjdXRvclN0YXJ0 IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbiAqLwotCUV4ZWN1dG9yU3RhcnQocXVl cnlEZXNjLCBlZmxhZ3MpOwotCiAJLyogRXhlY3V0ZSB0aGUgcGxhbiBmb3Igc3RhdGlzdGljcyBp ZiBhc2tlZCBmb3IgKi8KIAlpZiAoZXMtPmFuYWx5emUpCiAJewpAQCAtNDg3Myw2ICs0OTA1LDE3 IEBAIEV4cGxhaW5EdW1teUdyb3VwKGNvbnN0IGNoYXIgKm9ianR5cGUsIGNvbnN0IGNoYXIgKmxh YmVsbmFtZSwgRXhwbGFpblN0YXRlICplcykKIAl9CiB9CiAKKy8qCisgKiBEaXNjYXJkIG91dHB1 dCBidWZmZXIgZm9yIGEgZnJlc2ggcmVzdGFydC4KKyAqLwordm9pZAorRXhwbGFpblJlc2V0T3V0 cHV0KEV4cGxhaW5TdGF0ZSAqZXMpCit7CisJQXNzZXJ0KGVzLT5zdHIpOworCXJlc2V0U3RyaW5n SW5mbyhlcy0+c3RyKTsKKwlFeHBsYWluQmVnaW5PdXRwdXQoZXMpOworfQorCiAvKgogICogRW1p dCB0aGUgc3RhcnQtb2Ytb3V0cHV0IGJvaWxlcnBsYXRlLgogICoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5z aW9uLmMKaW5kZXggYjI4N2EyZTg0Yy4uMTI3ZDJhM2IwYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5z aW9uLmMKQEAgLTgwMiw3ICs4MDIsMTEgQEAgZXhlY3V0ZV9zcWxfc3RyaW5nKGNvbnN0IGNoYXIg KnNxbCkKIAkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBOVUxMLAogCQkJCQkJCQkJCWRl c3QsIE5VTEwsIE5VTEwsIDApOwogCi0JCQkJRXhlY3V0b3JTdGFydChxZGVzYywgMCk7CisJCQkJ LyoKKwkJCQkgKiBPSyB0byBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZTsgcGxhbiBjYW4ndCBiZWNv bWUgaW52YWxpZCwKKwkJCQkgKiBiZWNhdXNlIHRoZXJlJ3Mgbm8gQ2FjaGVkUGxhbi4KKwkJCQkg Ki8KKwkJCQkodm9pZCkgRXhlY3V0b3JTdGFydChxZGVzYywgMCk7CiAJCQkJRXhlY3V0b3JSdW4o cWRlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCAwLCB0cnVlKTsKIAkJCQlFeGVjdXRvckZpbmlz aChxZGVzYyk7CiAJCQkJRXhlY3V0b3JFbmQocWRlc2MpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvbWF0dmlldy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCmlu ZGV4IDIyYjhiODIwYzMuLjcwODNmYjIzNTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL21hdHZpZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKQEAgLTQx Miw4ICs0MTIsMTMgQEAgcmVmcmVzaF9tYXR2aWV3X2RhdGFmaWxsKERlc3RSZWNlaXZlciAqZGVz dCwgUXVlcnkgKnF1ZXJ5LAogCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25h cHNob3QsCiAJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOwogCi0JLyogY2FsbCBFeGVjdXRv clN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbiAqLwotCUV4ZWN1dG9yU3Rh cnQocXVlcnlEZXNjLCAwKTsKKwkvKgorCSAqIGNhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJl IHRoZSBwbGFuIGZvciBleGVjdXRpb24KKwkgKgorCSAqIE9LIHRvIGlnbm9yZSB0aGUgcmV0dXJu IHZhbHVlOyBwbGFuIGNhbid0IGJlY29tZSBpbnZhbGlkLAorCSAqIGJlY2F1c2UgdGhlcmUncyBu byBDYWNoZWRQbGFuLgorCSAqLworCSh2b2lkKSBFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgMCk7 CiAKIAkvKiBydW4gdGhlIHBsYW4gKi8KIAlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndhcmRT Y2FuRGlyZWN0aW9uLCAwLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3BvcnRhbGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYwppbmRleCA3 M2VkN2FhMmYwLi5hMWVlNWMwYWNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9w b3J0YWxjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCkBAIC0x NDIsOSArMTQyLDExIEBAIFBlcmZvcm1DdXJzb3JPcGVuKFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVj bGFyZUN1cnNvclN0bXQgKmNzdG10LCBQYXJhbUxpc3RJbmZvIHBhCiAKIAkvKgogCSAqIFN0YXJ0 IGV4ZWN1dGlvbiwgaW5zZXJ0aW5nIHBhcmFtZXRlcnMgaWYgYW55LgorCSAqCisJICogT0sgdG8g aWdub3JlIHRoZSByZXR1cm4gdmFsdWU7IHBsYW4gY2FuJ3QgYmVjb21lIGludmFsaWQgaGVyZSwK KwkgKiBiZWNhdXNlIHRoZXJlJ3Mgbm8gQ2FjaGVkUGxhbi4KIAkgKi8KLQlQb3J0YWxTdGFydChw b3J0YWwsIHBhcmFtcywgMCwgR2V0QWN0aXZlU25hcHNob3QoKSk7Ci0KKwkodm9pZCkgUG9ydGFs U3RhcnQocG9ydGFsLCBwYXJhbXMsIDAsIEdldEFjdGl2ZVNuYXBzaG90KCkpOwogCUFzc2VydChw b3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfU0VMRUNUKTsKIAogCS8qCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9w cmVwYXJlLmMKaW5kZXggMThmNzAzMTlmYy4uZjhkMGIwZWUyNSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBh cmUuYwpAQCAtMTgzLDYgKzE4Myw3IEBAIEV4ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpwc3RhdGUs CiAJCXBhcmFtTEkgPSBFdmFsdWF0ZVBhcmFtcyhwc3RhdGUsIGVudHJ5LCBzdG10LT5wYXJhbXMs IGVzdGF0ZSk7CiAJfQogCityZXBsYW46CiAJLyogQ3JlYXRlIGEgbmV3IHBvcnRhbCB0byBydW4g dGhlIHF1ZXJ5IGluICovCiAJcG9ydGFsID0gQ3JlYXRlTmV3UG9ydGFsKCk7CiAJLyogRG9uJ3Qg ZGlzcGxheSB0aGUgcG9ydGFsIGluIHBnX2N1cnNvcnMsIGl0IGlzIGZvciBpbnRlcm5hbCB1c2Ug b25seSAqLwpAQCAtMjUxLDkgKzI1MiwxNSBAQCBFeGVjdXRlUXVlcnkoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCX0KIAogCS8qCi0JICogUnVuIHRoZSBwb3J0YWwgYXMgYXBwcm9wcmlhdGUuCisJICog UnVuIHRoZSBwb3J0YWwgYXMgYXBwcm9wcmlhdGUuIElmIHRoZSBwb3J0YWwgaGFzIGEgY2FjaGVk IHBsYW4gYW5kIAorCSAqIGl0J3MgZm91bmQgdG8gYmUgaW52YWxpZGF0ZWQgZHVyaW5nIHRoZSBp bml0aWFsaXphdGlvbiBvZiBpdHMgcGxhbgorCSAqIHRyZWVzLCB0aGUgcGxhbiBtdXN0IGJlIHJl Z2VuZXJhdGVkLgogCSAqLwotCVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1MSSwgZWZsYWdzLCBH ZXRBY3RpdmVTbmFwc2hvdCgpKTsKKwlpZiAoIVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1MSSwg ZWZsYWdzLCBHZXRBY3RpdmVTbmFwc2hvdCgpKSkKKwl7CisJCVBvcnRhbERyb3AocG9ydGFsLCBm YWxzZSk7CisJCWdvdG8gcmVwbGFuOworCX0KIAogCSh2b2lkKSBQb3J0YWxSdW4ocG9ydGFsLCBj b3VudCwgZmFsc2UsIHRydWUsIGRlc3QsIGRlc3QsIHFjKTsKIApAQCAtNTc0LDcgKzU4MSw3IEBA IEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICpp bnRvLCBFeHBsYWluU3RhdGUgKmVzLAogewogCVByZXBhcmVkU3RhdGVtZW50ICplbnRyeTsKIAlj b25zdCBjaGFyICpxdWVyeV9zdHJpbmc7Ci0JQ2FjaGVkUGxhbiAqY3BsYW47CisJQ2FjaGVkUGxh biAqY3BsYW4gPSBOVUxMOwogCUxpc3QJICAgKnBsYW5fbGlzdDsKIAlMaXN0Q2VsbCAgICpwOwog CVBhcmFtTGlzdEluZm8gcGFyYW1MSSA9IE5VTEw7CkBAIC02MTgsNiArNjI1LDcgQEAgRXhwbGFp bkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4 cGxhaW5TdGF0ZSAqZXMsCiAJfQogCiAJLyogUmVwbGFuIGlmIG5lZWRlZCwgYW5kIGFjcXVpcmUg YSB0cmFuc2llbnQgcmVmY291bnQgKi8KK3JlcGxhbjoKIAljcGxhbiA9IEdldENhY2hlZFBsYW4o ZW50cnktPnBsYW5zb3VyY2UsIHBhcmFtTEksCiAJCQkJCQkgIEN1cnJlbnRSZXNvdXJjZU93bmVy LCBxdWVyeUVudik7CiAKQEAgLTYzOSw4ICs2NDcsMjEgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShF eGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMs CiAJCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBwKTsKIAog CQlpZiAocHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElMSVRZKQotCQkJRXhwbGFpbk9uZVBs YW4ocHN0bXQsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEksIHF1ZXJ5RW52LAotCQkJ CQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCkpOwor CQl7CisJCQlRdWVyeURlc2MgKnF1ZXJ5RGVzYzsKKworCQkJcXVlcnlEZXNjID0gRXhwbGFpblF1 ZXJ5RGVzYyhwc3RtdCwgY3BsYW4sIHF1ZXJ5U3RyaW5nLAorCQkJCQkJCQkJCSBpbnRvLCBlcywg cGFyYW1MSSwgcXVlcnlFbnYpOworCQkJaWYgKHF1ZXJ5RGVzYyA9PSBOVUxMKQorCQkJeworCQkJ CUV4cGxhaW5SZXNldE91dHB1dChlcyk7CisJCQkJUmVsZWFzZUNhY2hlZFBsYW4oY3BsYW4sIEN1 cnJlbnRSZXNvdXJjZU93bmVyKTsKKwkJCQlnb3RvIHJlcGxhbjsKKwkJCX0KKwkJCUV4cGxhaW5P bmVQbGFuKHF1ZXJ5RGVzYywgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywgcGFyYW1MSSwKKwkJCQkJ CSAgIHF1ZXJ5RW52LCAmcGxhbmR1cmF0aW9uLAorCQkJCQkJICAgKGVzLT5idWZmZXJzID8gJmJ1 ZnVzYWdlIDogTlVMTCkpOworCQl9CiAJCWVsc2UKIAkJCUV4cGxhaW5PbmVVdGlsaXR5KHBzdG10 LT51dGlsaXR5U3RtdCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywKIAkJCQkJCQkgIHBhcmFtTEks IHF1ZXJ5RW52KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwppbmRleCA1MjE3Nzc1OWFiLi5kZDEzOTQz MmI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCkBAIC01MDA5LDYgKzUwMDksMTkgQEAgQWZ0ZXJU cmlnZ2VyQmVnaW5RdWVyeSh2b2lkKQogCWFmdGVyVHJpZ2dlcnMucXVlcnlfZGVwdGgrKzsKIH0K IAorLyogLS0tLS0tLS0tLQorICogQWZ0ZXJUcmlnZ2VyQ2FuY2VsUXVlcnkoKQorICoKKyAqCUNh bGxlZCBmcm9tIEV4ZWN1dG9yRW5kKCkgaWYgdGhlIHF1ZXJ5IGV4ZWN1dGlvbiB3YXMgY2FuY2Vs ZWQuCisgKiAtLS0tLS0tLS0tCisgKi8KK3ZvaWQKK0FmdGVyVHJpZ2dlckNhbmNlbFF1ZXJ5KHZv aWQpCit7CisJLyogU2V0IHRvIGEgdmFsdWUgZGVub3RpbmcgdGhhdCBubyBxdWVyeSBpcyBhY3Rp dmUuICovCisJYWZ0ZXJUcmlnZ2Vycy5xdWVyeV9kZXB0aCA9IC0xOworfQorCiAKIC8qIC0tLS0t LS0tLS0KICAqIEFmdGVyVHJpZ2dlckVuZFF1ZXJ5KCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmlu ZGV4IGRlN2JmN2NhNjcuLjU3NTUzMzZhYmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAt MTE5LDYgKzExOSwxMyBAQCBzdGF0aWMgdm9pZCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAq ZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKTsKICAqCiAgKiBlZmxhZ3MgY29udGFpbnMgZmxhZyBi aXRzIGFzIGRlc2NyaWJlZCBpbiBleGVjdXRvci5oLgogICoKKyAqIFBsYW4gaW5pdGlhbGl6YXRp b24gbWF5IGZhaWwgaWYgdGhlIGlucHV0IHBsYW4gdHJlZSBpcyBmb3VuZCB0byBoYXZlIGJlZW4K KyAqIGludmFsaWRhdGVkLCB3aGljaCBjYW4gaGFwcGVuIGlmIGl0IGNvbWVzIGZyb20gYSBDYWNo ZWRQbGFuLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBwbGFuIHdhcyBzdWNjZXNzZnVsbHkgaW5p dGlhbGl6ZWQgYW5kIGZhbHNlIG90aGVyd2lzZS4gIElmCisgKiB0aGUgbGF0dGVyLCB0aGUgY2Fs bGVyIG11c3QgY2FsbCBFeGVjdXRvckVuZCgpIG9uICdxdWVyeURlc2MnIHRvIGNsZWFuIHVwCisg KiBhZnRlciBmYWlsZWQgcGxhbiBpbml0aWFsaXphdGlvbi4KKyAqCiAgKiBOQjogdGhlIEN1cnJl bnRNZW1vcnlDb250ZXh0IHdoZW4gdGhpcyBpcyBjYWxsZWQgd2lsbCBiZWNvbWUgdGhlIHBhcmVu dAogICogb2YgdGhlIHBlci1xdWVyeSBjb250ZXh0IHVzZWQgZm9yIHRoaXMgRXhlY3V0b3IgaW52 b2NhdGlvbi4KICAqCkBAIC0xMjgsNyArMTM1LDcgQEAgc3RhdGljIHZvaWQgRXZhbFBsYW5RdWFs U3RhcnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpwbGFuVHJlZSk7CiAgKgogICogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICovCi12b2lkCitib29sCiBFeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBp bnQgZWZsYWdzKQogewogCS8qCkBAIC0xNDAsMTQgKzE0NywxNSBAQCBFeGVjdXRvclN0YXJ0KFF1 ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCXBnc3RhdF9yZXBvcnRfcXVlcnlfaWQo cXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+cXVlcnlJZCwgZmFsc2UpOwogCiAJaWYgKEV4ZWN1dG9y U3RhcnRfaG9vaykKLQkJKCpFeGVjdXRvclN0YXJ0X2hvb2spIChxdWVyeURlc2MsIGVmbGFncyk7 Ci0JZWxzZQotCQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJ cmV0dXJuICgqRXhlY3V0b3JTdGFydF9ob29rKSAocXVlcnlEZXNjLCBlZmxhZ3MpOworCisJcmV0 dXJuIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogfQogCi12b2lk Citib29sCiBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQg ZWZsYWdzKQogeworCWJvb2wJCXBsYW5fdmFsaWQ7CiAJRVN0YXRlCSAgICplc3RhdGU7CiAJTWVt b3J5Q29udGV4dCBvbGRjb250ZXh0OwogCkBAIC0yNjMsOSArMjcxLDE0IEBAIHN0YW5kYXJkX0V4 ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJLyoKIAkgKiBJ bml0aWFsaXplIHRoZSBwbGFuIHN0YXRlIHRyZWUKIAkgKi8KLQkodm9pZCkgSW5pdFBsYW4ocXVl cnlEZXNjLCBlZmxhZ3MpOworCXBsYW5fdmFsaWQgPSBJbml0UGxhbihxdWVyeURlc2MsIGVmbGFn cyk7CisKKwkvKiBNYXJrIGV4ZWN1dGlvbiBhcyBjYW5jZWxlZCBpZiBwbGFuIHdvbid0IGJlIGV4 ZWN1dGVkLiAqLworCWVzdGF0ZS0+ZXNfY2FuY2VsZWQgPSAhcGxhbl92YWxpZDsKIAogCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCXJldHVybiBwbGFuX3ZhbGlkOwogfQog CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCkBAIC0zMjUsNiArMzM4LDcgQEAgc3RhbmRhcmRfRXhlY3V0b3JSdW4oUXVl cnlEZXNjICpxdWVyeURlc2MsCiAJZXN0YXRlID0gcXVlcnlEZXNjLT5lc3RhdGU7CiAKIAlBc3Nl cnQoZXN0YXRlICE9IE5VTEwpOworCUFzc2VydCghZXN0YXRlLT5lc19jYW5jZWxlZCk7CiAJQXNz ZXJ0KCEoZXN0YXRlLT5lc190b3BfZWZsYWdzICYgRVhFQ19GTEFHX0VYUExBSU5fT05MWSkpOwog CiAJLyoKQEAgLTQyOSw3ICs0NDMsNyBAQCBzdGFuZGFyZF9FeGVjdXRvckZpbmlzaChRdWVyeURl c2MgKnF1ZXJ5RGVzYykKIAlBc3NlcnQoIShlc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZM QUdfRVhQTEFJTl9PTkxZKSk7CiAKIAkvKiBUaGlzIHNob3VsZCBiZSBydW4gb25jZSBhbmQgb25s eSBvbmNlIHBlciBFeGVjdXRvciBpbnN0YW5jZSAqLwotCUFzc2VydCghZXN0YXRlLT5lc19maW5p c2hlZCk7CisJQXNzZXJ0KCFlc3RhdGUtPmVzX2ZpbmlzaGVkICYmICFlc3RhdGUtPmVzX2NhbmNl bGVkKTsKIAogCS8qIFN3aXRjaCBpbnRvIHBlci1xdWVyeSBtZW1vcnkgY29udGV4dCAqLwogCW9s ZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZXN0YXRlLT5lc19xdWVyeV9jeHQpOwpA QCAtNDg4LDExICs1MDIsMTEgQEAgc3RhbmRhcmRfRXhlY3V0b3JFbmQoUXVlcnlEZXNjICpxdWVy eURlc2MpCiAJQXNzZXJ0KGVzdGF0ZSAhPSBOVUxMKTsKIAogCS8qCi0JICogQ2hlY2sgdGhhdCBF eGVjdXRvckZpbmlzaCB3YXMgY2FsbGVkLCB1bmxlc3MgaW4gRVhQTEFJTi1vbmx5IG1vZGUuIFRo aXMKLQkgKiBBc3NlcnQgaXMgbmVlZGVkIGJlY2F1c2UgRXhlY3V0b3JGaW5pc2ggaXMgbmV3IGFz IG9mIDkuMSwgYW5kIGNhbGxlcnMKLQkgKiBtaWdodCBmb3JnZXQgdG8gY2FsbCBpdC4KKwkgKiBD aGVjayB0aGF0IEV4ZWN1dG9yRmluaXNoIHdhcyBjYWxsZWQsIHVubGVzcyBpbiBFWFBMQUlOLW9u bHkgbW9kZSBvciBpZgorCSAqIGV4ZWN1dGlvbiB3YXMgY2FuY2VsZWQuIFRoaXMgQXNzZXJ0IGlz IG5lZWRlZCBiZWNhdXNlIEV4ZWN1dG9yRmluaXNoIGlzCisJICogbmV3IGFzIG9mIDkuMSwgYW5k IGNhbGxlcnMgbWlnaHQgZm9yZ2V0IHRvIGNhbGwgaXQuCiAJICovCi0JQXNzZXJ0KGVzdGF0ZS0+ ZXNfZmluaXNoZWQgfHwKKwlBc3NlcnQoZXN0YXRlLT5lc19maW5pc2hlZCB8fCBlc3RhdGUtPmVz X2NhbmNlbGVkIHx8CiAJCSAgIChlc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQ TEFJTl9PTkxZKSk7CiAKIAkvKgpAQCAtNTA2LDYgKzUyMCwxNCBAQCBzdGFuZGFyZF9FeGVjdXRv ckVuZChRdWVyeURlc2MgKnF1ZXJ5RGVzYykKIAlVbnJlZ2lzdGVyU25hcHNob3QoZXN0YXRlLT5l c19zbmFwc2hvdCk7CiAJVW5yZWdpc3RlclNuYXBzaG90KGVzdGF0ZS0+ZXNfY3Jvc3NjaGVja19z bmFwc2hvdCk7CiAKKwkvKgorCSAqIENhbmNlbCB0cmlnZ2VyIGV4ZWN1dGlvbiB0b28gaWYgdGhl IHF1ZXJ5IGV4ZWN1dGlvbiB3YXMgY2FuY2VsZWQuCisJICovCisJaWYgKGVzdGF0ZS0+ZXNfY2Fu Y2VsZWQgJiYKKwkJIShlc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJgorCQkgIChFWEVDX0ZMQUdfU0tJ UF9UUklHR0VSUyB8IEVYRUNfRkxBR19FWFBMQUlOX09OTFkpKSkKKwkJQWZ0ZXJUcmlnZ2VyQ2Fu Y2VsUXVlcnkoKTsKKwogCS8qCiAJICogTXVzdCBzd2l0Y2ggb3V0IG9mIGNvbnRleHQgYmVmb3Jl IGRlc3Ryb3lpbmcgaXQKIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXgg NDU3ZWU0NmZhZi4uMTNkMjgyMGE0MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMK QEAgLTE0MzcsNyArMTQzNywxMSBAQCBQYXJhbGxlbFF1ZXJ5TWFpbihkc21fc2VnbWVudCAqc2Vn LCBzaG1fdG9jICp0b2MpCiAKIAkvKiBTdGFydCB1cCB0aGUgZXhlY3V0b3IgKi8KIAlxdWVyeURl c2MtPnBsYW5uZWRzdG10LT5qaXRGbGFncyA9IGZwZXMtPmppdF9mbGFnczsKLQlFeGVjdXRvclN0 YXJ0KHF1ZXJ5RGVzYywgZnBlcy0+ZWZsYWdzKTsKKwkvKgorCSAqIE9LIHRvIGlnbm9yZSB0aGUg cmV0dXJuIHZhbHVlOyBwbGFuIGNhbid0IGJlY29tZSBpbnZhbGlkLAorCSAqIGJlY2F1c2UgdGhl cmUncyBubyBDYWNoZWRQbGFuLgorCSAqLworCSh2b2lkKSBFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVz YywgZnBlcy0+ZWZsYWdzKTsKIAogCS8qIFNwZWNpYWwgZXhlY3V0b3IgaW5pdGlhbGl6YXRpb24g c3RlcHMgZm9yIHBhcmFsbGVsIHdvcmtlcnMgKi8KIAlxdWVyeURlc2MtPnBsYW5zdGF0ZS0+c3Rh dGUtPmVzX3F1ZXJ5X2RzYSA9IGFyZWE7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IDE2 NzA0YzBjMmYuLmYwZjU3NDBjMjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC0xNTEs NiArMTUxLDcgQEAgQ3JlYXRlRXhlY3V0b3JTdGF0ZSh2b2lkKQogCWVzdGF0ZS0+ZXNfdG9wX2Vm bGFncyA9IDA7CiAJZXN0YXRlLT5lc19pbnN0cnVtZW50ID0gMDsKIAllc3RhdGUtPmVzX2Zpbmlz aGVkID0gZmFsc2U7CisJZXN0YXRlLT5lc19jYW5jZWxlZCA9IGZhbHNlOwogCiAJZXN0YXRlLT5l c19leHByY29udGV4dHMgPSBOSUw7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2Z1bmN0aW9ucy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKaW5kZXggN2U0 NTJlZDc0My4uNjA2ZGE3MjUzNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVu Y3Rpb25zLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKQEAgLTg2Myw3 ICs4NjMsMTIgQEAgcG9zdHF1ZWxfc3RhcnQoZXhlY3V0aW9uX3N0YXRlICplcywgU1FMRnVuY3Rp b25DYWNoZVB0ciBmY2FjaGUpCiAJCQllZmxhZ3MgPSBFWEVDX0ZMQUdfU0tJUF9UUklHR0VSUzsK IAkJZWxzZQogCQkJZWZsYWdzID0gMDsJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZs YWdzICovCi0JCUV4ZWN1dG9yU3RhcnQoZXMtPnFkLCBlZmxhZ3MpOworCisJCS8qCisJCSAqIE9L IHRvIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlOyBwbGFuIGNhbid0IGJlY29tZSBpbnZhbGlkLAor CQkgKiBiZWNhdXNlIHRoZXJlJ3Mgbm8gQ2FjaGVkUGxhbi4KKwkJICovCisJCSh2b2lkKSBFeGVj dXRvclN0YXJ0KGVzLT5xZCwgZWZsYWdzKTsKIAl9CiAKIAllcy0+c3RhdHVzID0gRl9FWEVDX1JV TjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivc3BpLmMKaW5kZXggZjJjY2E4MDdlZi4uODE0ZmYxMzkwZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3Bp LmMKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIGludAlfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFu UHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogc3RhdGljIFBhcmFt TGlzdEluZm8gX1NQSV9jb252ZXJ0X3BhcmFtcyhpbnQgbmFyZ3MsIE9pZCAqYXJndHlwZXMsCiAJ CQkJCQkJCQkJIERhdHVtICpWYWx1ZXMsIGNvbnN0IGNoYXIgKk51bGxzKTsKIAotc3RhdGljIGlu dAlfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1 aW50NjQgdGNvdW50KTsKK3N0YXRpYyBpbnQJX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURl c2MsIHVpbnQ2NCB0Y291bnQpOwogCiBzdGF0aWMgdm9pZCBfU1BJX2Vycm9yX2NhbGxiYWNrKHZv aWQgKmFyZyk7CiAKQEAgLTE1ODIsNiArMTU4Miw3IEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5h bChjb25zdCBjaGFyICpuYW1lLCBTUElQbGFuUHRyIHBsYW4sCiAJU25hcHNob3QJc25hcHNob3Q7 CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwogCVBvcnRhbAkJcG9ydGFsOworCWJvb2wJCXBs YW5fdmFsaWQ7CiAJU1BJQ2FsbGJhY2tBcmcgc3BpY2FsbGJhY2thcmc7CiAJRXJyb3JDb250ZXh0 Q2FsbGJhY2sgc3BpZXJyY29udGV4dDsKIApAQCAtMTYyMyw2ICsxNjI0LDcgQEAgU1BJX2N1cnNv cl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAlfU1BJ X2N1cnJlbnQtPnByb2Nlc3NlZCA9IDA7CiAJX1NQSV9jdXJyZW50LT50dXB0YWJsZSA9IE5VTEw7 CiAKK3JlcGxhbjoKIAkvKiBDcmVhdGUgdGhlIHBvcnRhbCAqLwogCWlmIChuYW1lID09IE5VTEwg fHwgbmFtZVswXSA9PSAnXDAnKQogCXsKQEAgLTE3NjYsMTUgKzE3NjgsMjMgQEAgU1BJX2N1cnNv cl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAl9CiAK IAkvKgotCSAqIFN0YXJ0IHBvcnRhbCBleGVjdXRpb24uCisJICogU3RhcnQgcG9ydGFsIGV4ZWN1 dGlvbi4gIElmIHRoZSBwb3J0YWwgY29udGFpbnMgYSBjYWNoZWQgcGxhbiwgaXQgbXVzdAorCSAq IGJlIHJlY3JlYXRlZCBpZiB0aGUgY2FjaGVkIHBsYW4gd2FzIGZvdW5kIHRvIGhhdmUgYmVlbiBp bnZhbGlkYXRlZCB3aGVuCisJICogaW5pdGlhbGl6aW5nIG9uZSBvZiB0aGUgcGxhbiB0cmVlcyBj b250YWluZWQgaW4gaXQuCiAJICovCi0JUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbUxJLCAwLCBz bmFwc2hvdCk7CisJcGxhbl92YWxpZCA9IFBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1MSSwgMCwg c25hcHNob3QpOwogCiAJQXNzZXJ0KHBvcnRhbC0+c3RyYXRlZ3kgIT0gUE9SVEFMX01VTFRJX1FV RVJZKTsKIAogCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLwogCWVycm9yX2NvbnRl eHRfc3RhY2sgPSBzcGllcnJjb250ZXh0LnByZXZpb3VzOwogCisJaWYgKCFwbGFuX3ZhbGlkKQor CXsKKwkJUG9ydGFsRHJvcChwb3J0YWwsIGZhbHNlKTsKKwkJZ290byByZXBsYW47CisJfQorCiAJ LyogUG9wIHRoZSBTUEkgc3RhY2sgKi8KIAlfU1BJX2VuZF9jYWxsKHRydWUpOwogCkBAIC0yNTUy LDYgKzI1NjIsNyBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQ SUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkgKiBSZXBsYW4gaWYgbmVlZGVkLCBhbmQgaW5j cmVtZW50IHBsYW4gcmVmY291bnQuICBJZiBpdCdzIGEgc2F2ZWQKIAkJICogcGxhbiwgdGhlIHJl ZmNvdW50IG11c3QgYmUgYmFja2VkIGJ5IHRoZSBwbGFuX293bmVyLgogCQkgKi8KK3JlcGxhbjoK IAkJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIG9wdGlvbnMtPnBhcmFtcywKIAkJ CQkJCQkgIHBsYW5fb3duZXIsIF9TUElfY3VycmVudC0+cXVlcnlFbnYpOwogCkBAIC0yNjYxLDYg KzI2NzIsNyBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4 ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkJewogCQkJCVF1ZXJ5RGVzYyAgKnFkZXNjOwogCQkJ CVNuYXBzaG90CXNuYXA7CisJCQkJaW50CQkJZWZsYWdzOwogCiAJCQkJaWYgKEFjdGl2ZVNuYXBz aG90U2V0KCkpCiAJCQkJCXNuYXAgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOwpAQCAtMjY3NSw4ICsy Njg3LDIzIEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhl Y3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQkJCQkJCQkJb3B0aW9ucy0+cGFyYW1zLAogCQkJCQkJ CQkJCV9TUElfY3VycmVudC0+cXVlcnlFbnYsCiAJCQkJCQkJCQkJMCk7Ci0JCQkJcmVzID0gX1NQ SV9wcXVlcnkocWRlc2MsIGZpcmVfdHJpZ2dlcnMsCi0JCQkJCQkJCSAgY2FuU2V0VGFnID8gb3B0 aW9ucy0+dGNvdW50IDogMCk7CisKKwkJCQkvKiBTZWxlY3QgZXhlY3V0aW9uIG9wdGlvbnMgKi8K KwkJCQlpZiAoZmlyZV90cmlnZ2VycykKKwkJCQkJZWZsYWdzID0gMDsJCQkJLyogZGVmYXVsdCBy dW4tdG8tY29tcGxldGlvbiBmbGFncyAqLworCQkJCWVsc2UKKwkJCQkJZWZsYWdzID0gRVhFQ19G TEFHX1NLSVBfVFJJR0dFUlM7CisKKwkJCQlpZiAoIUV4ZWN1dG9yU3RhcnQocWRlc2MsIGVmbGFn cykpCisJCQkJeworCQkJCQlFeGVjdXRvckVuZChxZGVzYyk7CisJCQkJCUZyZWVRdWVyeURlc2Mo cWRlc2MpOworCQkJCQlBc3NlcnQoY3BsYW4pOworCQkJCQlSZWxlYXNlQ2FjaGVkUGxhbihjcGxh biwgcGxhbl9vd25lcik7CisJCQkJCWdvdG8gcmVwbGFuOworCQkJCX0KKworCQkJCXJlcyA9IF9T UElfcHF1ZXJ5KHFkZXNjLCBjYW5TZXRUYWcgPyBvcHRpb25zLT50Y291bnQgOiAwKTsKIAkJCQlG cmVlUXVlcnlEZXNjKHFkZXNjKTsKIAkJCX0KIAkJCWVsc2UKQEAgLTI4NTEsMTAgKzI4NzgsOSBA QCBfU1BJX2NvbnZlcnRfcGFyYW1zKGludCBuYXJncywgT2lkICphcmd0eXBlcywKIH0KIAogc3Rh dGljIGludAotX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wgZmlyZV90cmln Z2VycywgdWludDY0IHRjb3VudCkKK19TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCB1 aW50NjQgdGNvdW50KQogewogCWludAkJCW9wZXJhdGlvbiA9IHF1ZXJ5RGVzYy0+b3BlcmF0aW9u OwotCWludAkJCWVmbGFnczsKIAlpbnQJCQlyZXM7CiAKIAlzd2l0Y2ggKG9wZXJhdGlvbikKQEAg LTI4OTgsMTQgKzI5MjQsNiBAQCBfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9v bCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KQogCQlSZXNldFVzYWdlKCk7CiAjZW5kaWYK IAotCS8qIFNlbGVjdCBleGVjdXRpb24gb3B0aW9ucyAqLwotCWlmIChmaXJlX3RyaWdnZXJzKQot CQllZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdzICovCi0J ZWxzZQotCQllZmxhZ3MgPSBFWEVDX0ZMQUdfU0tJUF9UUklHR0VSUzsKLQotCUV4ZWN1dG9yU3Rh cnQocXVlcnlEZXNjLCBlZmxhZ3MpOwotCiAJRXhlY3V0b3JSdW4ocXVlcnlEZXNjLCBGb3J3YXJk U2NhbkRpcmVjdGlvbiwgdGNvdW50LCB0cnVlKTsKIAogCV9TUElfY3VycmVudC0+cHJvY2Vzc2Vk ID0gcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCAy MWI5NzYzMTgzLi40ZjkyM2JiY2FlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3Rn cmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0xMjMwLDcgKzEyMzAs MTIgQEAgZXhlY19zaW1wbGVfcXVlcnkoY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nKQogCQkvKgog CQkgKiBTdGFydCB0aGUgcG9ydGFsLiAgTm8gcGFyYW1ldGVycyBoZXJlLgogCQkgKi8KLQkJUG9y dGFsU3RhcnQocG9ydGFsLCBOVUxMLCAwLCBJbnZhbGlkU25hcHNob3QpOworCQl7CisJCQlib29s CXBsYW5fdmFsaWQgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZOworCisJCQlwbGFuX3ZhbGlkID0g UG9ydGFsU3RhcnQocG9ydGFsLCBOVUxMLCAwLCBJbnZhbGlkU25hcHNob3QpOworCQkJQXNzZXJ0 KHBsYW5fdmFsaWQpOworCQl9CiAKIAkJLyoKIAkJICogU2VsZWN0IHRoZSBhcHByb3ByaWF0ZSBv dXRwdXQgZm9ybWF0OiB0ZXh0IHVubGVzcyB3ZSBhcmUgZG9pbmcgYQpAQCAtMTczNSw2ICsxNzQw LDcgQEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCQkJCQkJ ImNvbW1hbmRzIGlnbm9yZWQgdW50aWwgZW5kIG9mIHRyYW5zYWN0aW9uIGJsb2NrIiksCiAJCQkJ IGVycmRldGFpbF9hYm9ydCgpKSk7CiAKK3JlcGxhbjoKIAkvKgogCSAqIENyZWF0ZSB0aGUgcG9y dGFsLiAgQWxsb3cgc2lsZW50IHJlcGxhY2VtZW50IG9mIGFuIGV4aXN0aW5nIHBvcnRhbCBvbmx5 CiAJICogaWYgdGhlIHVubmFtZWQgcG9ydGFsIGlzIHNwZWNpZmllZC4KQEAgLTIwMjYsOSArMjAz MiwxNSBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJCVBv cEFjdGl2ZVNuYXBzaG90KCk7CiAKIAkvKgotCSAqIEFuZCB3ZSdyZSByZWFkeSB0byBzdGFydCBw b3J0YWwgZXhlY3V0aW9uLgorCSAqIFN0YXJ0IHBvcnRhbCBleGVjdXRpb24uICBJZiB0aGUgcG9y dGFsIGNvbnRhaW5zIGEgY2FjaGVkIHBsYW4sIGl0IG11c3QKKwkgKiBiZSByZWNyZWF0ZWQgaWYg dGhlIGNhY2hlZCBwbGFuIHdhcyBmb3VuZCB0byBoYXZlIGJlZW4gaW52YWxpZGF0ZWQgd2hlbgor CSAqIGluaXRpYWxpemluZyBvbmUgb2YgdGhlIHBsYW4gdHJlZXMgY29udGFpbmVkIGluIGl0Lgog CSAqLwotCVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1zLCAwLCBJbnZhbGlkU25hcHNob3QpOwor CWlmICghUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbXMsIDAsIEludmFsaWRTbmFwc2hvdCkpCisJ eworCQlQb3J0YWxEcm9wKHBvcnRhbCwgZmFsc2UpOworCQlnb3RvIHJlcGxhbjsKKwl9CiAKIAkv KgogCSAqIEFwcGx5IHRoZSByZXN1bHQgZm9ybWF0IHJlcXVlc3RzIHRvIHRoZSBwb3J0YWwuCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jIGIvc3JjL2JhY2tlbmQvdGNvcC9w cXVlcnkuYwppbmRleCA0ZWYzNDlkZjhiLi5mY2Y5OTI1ZWQ0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC90Y29wL3BxdWVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKQEAgLTE5 LDYgKzE5LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY29tbWFu ZHMvcHJlcGFyZS5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNkZXNjLmgiCiAjaW5jbHVkZSAi ZXhlY3V0b3IvdHN0b3JlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNs dWRlICJwZ190cmFjZS5oIgpAQCAtMzUsMTIgKzM2LDYgQEAKIFBvcnRhbAkJQWN0aXZlUG9ydGFs ID0gTlVMTDsKIAogCi1zdGF0aWMgdm9pZCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4s Ci0JCQkJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKLQkJCQkJCSBQYXJhbUxpc3RJbmZvIHBh cmFtcywKLQkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKLQkJCQkJCSBEZXN0UmVj ZWl2ZXIgKmRlc3QsCi0JCQkJCQkgUXVlcnlDb21wbGV0aW9uICpxYyk7CiBzdGF0aWMgdm9pZCBG aWxsUG9ydGFsU3RvcmUoUG9ydGFsIHBvcnRhbCwgYm9vbCBpc1RvcExldmVsKTsKIHN0YXRpYyB1 aW50NjQgUnVuRnJvbVN0b3JlKFBvcnRhbCBwb3J0YWwsIFNjYW5EaXJlY3Rpb24gZGlyZWN0aW9u LCB1aW50NjQgY291bnQsCiAJCQkJCQkgICBEZXN0UmVjZWl2ZXIgKmRlc3QpOwpAQCAtMTE4LDg2 ICsxMTMsNiBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiB9CiAKIAotLyoKLSAq IFByb2Nlc3NRdWVyeQotICoJCUV4ZWN1dGUgYSBzaW5nbGUgcGxhbm5hYmxlIHF1ZXJ5IHdpdGhp biBhIFBPUlRBTF9NVUxUSV9RVUVSWSwKLSAqCQlQT1JUQUxfT05FX1JFVFVSTklORywgb3IgUE9S VEFMX09ORV9NT0RfV0lUSCBwb3J0YWwKLSAqCi0gKglwbGFuOiB0aGUgcGxhbiB0cmVlIGZvciB0 aGUgcXVlcnkKLSAqCXNvdXJjZVRleHQ6IHRoZSBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkKLSAq CXBhcmFtczogYW55IHBhcmFtZXRlcnMgbmVlZGVkCi0gKglkZXN0OiB3aGVyZSB0byBzZW5kIHJl c3VsdHMKLSAqCXFjOiB3aGVyZSB0byBzdG9yZSB0aGUgY29tbWFuZCBjb21wbGV0aW9uIHN0YXR1 cyBkYXRhLgotICoKLSAqIHFjIG1heSBiZSBOVUxMIGlmIGNhbGxlciBkb2Vzbid0IHdhbnQgYSBz dGF0dXMgc3RyaW5nLgotICoKLSAqIE11c3QgYmUgY2FsbGVkIGluIGEgbWVtb3J5IGNvbnRleHQg dGhhdCB3aWxsIGJlIHJlc2V0IG9yIGRlbGV0ZWQgb24KLSAqIGVycm9yOyBvdGhlcndpc2UgdGhl IGV4ZWN1dG9yJ3MgbWVtb3J5IHVzYWdlIHdpbGwgYmUgbGVha2VkLgotICovCi1zdGF0aWMgdm9p ZAotUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLAotCQkJIGNvbnN0IGNoYXIgKnNvdXJj ZVRleHQsCi0JCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCi0JCQkgUXVlcnlFbnZpcm9ubWVudCAq cXVlcnlFbnYsCi0JCQkgRGVzdFJlY2VpdmVyICpkZXN0LAotCQkJIFF1ZXJ5Q29tcGxldGlvbiAq cWMpCi17Ci0JUXVlcnlEZXNjICAqcXVlcnlEZXNjOwotCi0JLyoKLQkgKiBDcmVhdGUgdGhlIFF1 ZXJ5RGVzYyBvYmplY3QKLQkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwg TlVMTCwgc291cmNlVGV4dCwKLQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNu YXBzaG90LAotCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKLQotCS8qCi0JICog Q2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgotCSAq LwotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKTsKLQotCS8qCi0JICogUnVuIHRoZSBwbGFu IHRvIGNvbXBsZXRpb24uCi0JICovCi0JRXhlY3V0b3JSdW4ocXVlcnlEZXNjLCBGb3J3YXJkU2Nh bkRpcmVjdGlvbiwgMCwgdHJ1ZSk7Ci0KLQkvKgotCSAqIEJ1aWxkIGNvbW1hbmQgY29tcGxldGlv biBzdGF0dXMgZGF0YSwgaWYgY2FsbGVyIHdhbnRzIG9uZS4KLQkgKi8KLQlpZiAocWMpCi0Jewot CQlzd2l0Y2ggKHF1ZXJ5RGVzYy0+b3BlcmF0aW9uKQotCQl7Ci0JCQljYXNlIENNRF9TRUxFQ1Q6 Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfU0VMRUNULCBxdWVyeURlc2MtPmVz dGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgQ01EX0lOU0VSVDoKLQkJ CQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19JTlNFUlQsIHF1ZXJ5RGVzYy0+ZXN0YXRl LT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBDTURfVVBEQVRFOgotCQkJCVNl dFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX1VQREFURSwgcXVlcnlEZXNjLT5lc3RhdGUtPmVz X3Byb2Nlc3NlZCk7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIENNRF9ERUxFVEU6Ci0JCQkJU2V0UXVl cnlDb21wbGV0aW9uKHFjLCBDTURUQUdfREVMRVRFLCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJv Y2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgQ01EX01FUkdFOgotCQkJCVNldFF1ZXJ5Q29t cGxldGlvbihxYywgQ01EVEFHX01FUkdFLCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2Vk KTsKLQkJCQlicmVhazsKLQkJCWRlZmF1bHQ6Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBD TURUQUdfVU5LTk9XTiwgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7Ci0JCQkJYnJl YWs7Ci0JCX0KLQl9Ci0KLQkvKgotCSAqIE5vdywgd2UgY2xvc2UgZG93biBhbGwgdGhlIHNjYW5z IGFuZCBmcmVlIGFsbG9jYXRlZCByZXNvdXJjZXMuCi0JICovCi0JRXhlY3V0b3JGaW5pc2gocXVl cnlEZXNjKTsKLQlFeGVjdXRvckVuZChxdWVyeURlc2MpOwotCi0JRnJlZVF1ZXJ5RGVzYyhxdWVy eURlc2MpOwotfQotCiAvKgogICogQ2hvb3NlUG9ydGFsU3RyYXRlZ3kKICAqCQlTZWxlY3QgcG9y dGFsIGV4ZWN1dGlvbiBzdHJhdGVneSBnaXZlbiB0aGUgaW50ZW5kZWQgc3RhdGVtZW50IGxpc3Qu CkBAIC00MjgsMTkgKzM0MywyMSBAQCBGZXRjaFN0YXRlbWVudFRhcmdldExpc3QoTm9kZSAqc3Rt dCkKICAqIHByZXNlbnRseSBpZ25vcmVkIGZvciBub24tUE9SVEFMX09ORV9TRUxFQ1QgcG9ydGFs cyAoaXQncyBvbmx5IGludGVuZGVkCiAgKiB0byBiZSB1c2VkIGZvciBjdXJzb3JzKS4KICAqCi0g KiBPbiByZXR1cm4sIHBvcnRhbCBpcyByZWFkeSB0byBhY2NlcHQgUG9ydGFsUnVuKCkgY2FsbHMs IGFuZCB0aGUgcmVzdWx0Ci0gKiB0dXBkZXNjIChpZiBhbnkpIGlzIGtub3duLgorICogVHJ1ZSBp cyByZXR1cm5lZCBpZiBwb3J0YWwgaXMgcmVhZHkgdG8gYWNjZXB0IFBvcnRhbFJ1bigpIGNhbGxz LCBhbmQgdGhlCisgKiByZXN1bHQgdHVwZGVzYyAoaWYgYW55KSBpcyBrbm93bi4gIEZhbHNlIGlm IHRoZSBwbGFuIHRyZWUgaXMgbm8gbG9uZ2VyCisgKiB2YWxpZCwgaW4gd2hpY2ggY2FzZSwgdGhl IGNhbGxlciBtdXN0IHJldHJ5IGFmdGVyIGdlbmVyYXRpbmcgYSBuZXcKKyAqIENhY2hlZFBsYW4u CiAgKi8KLXZvaWQKK2Jvb2wKIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdElu Zm8gcGFyYW1zLAogCQkJaW50IGVmbGFncywgU25hcHNob3Qgc25hcHNob3QpCiB7CiAJUG9ydGFs CQlzYXZlQWN0aXZlUG9ydGFsOwogCVJlc291cmNlT3duZXIgc2F2ZVJlc291cmNlT3duZXI7Ci0J TWVtb3J5Q29udGV4dCBzYXZlUG9ydGFsQ29udGV4dDsKIAlNZW1vcnlDb250ZXh0IG9sZENvbnRl eHQ7CiAJUXVlcnlEZXNjICAqcXVlcnlEZXNjOwotCWludAkJCW15ZWZsYWdzOworCWludAkJCW15 ZWZsYWdzID0gMDsKKwlib29sCQlwbGFuX3ZhbGlkID0gdHJ1ZTsKIAogCUFzc2VydChQb3J0YWxJ c1ZhbGlkKHBvcnRhbCkpOwogCUFzc2VydChwb3J0YWwtPnN0YXR1cyA9PSBQT1JUQUxfREVGSU5F RCk7CkBAIC00NTAsMTUgKzM2NywxMyBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJh bUxpc3RJbmZvIHBhcmFtcywKIAkgKi8KIAlzYXZlQWN0aXZlUG9ydGFsID0gQWN0aXZlUG9ydGFs OwogCXNhdmVSZXNvdXJjZU93bmVyID0gQ3VycmVudFJlc291cmNlT3duZXI7Ci0Jc2F2ZVBvcnRh bENvbnRleHQgPSBQb3J0YWxDb250ZXh0OwogCVBHX1RSWSgpOwogCXsKIAkJQWN0aXZlUG9ydGFs ID0gcG9ydGFsOwogCQlpZiAocG9ydGFsLT5yZXNvd25lcikKIAkJCUN1cnJlbnRSZXNvdXJjZU93 bmVyID0gcG9ydGFsLT5yZXNvd25lcjsKLQkJUG9ydGFsQ29udGV4dCA9IHBvcnRhbC0+cG9ydGFs Q29udGV4dDsKIAotCQlvbGRDb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFBvcnRhbENv bnRleHQpOworCQlvbGRDb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBvcnRhbC0+cXVl cnlDb250ZXh0KTsKIAogCQkvKiBNdXN0IHJlbWVtYmVyIHBvcnRhbCBwYXJhbSBsaXN0LCBpZiBh bnkgKi8KIAkJcG9ydGFsLT5wb3J0YWxQYXJhbXMgPSBwYXJhbXM7CkBAIC00NzQsNiArMzg5LDgg QEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCXN3 aXRjaCAocG9ydGFsLT5zdHJhdGVneSkKIAkJewogCQkJY2FzZSBQT1JUQUxfT05FX1NFTEVDVDoK KwkJCWNhc2UgUE9SVEFMX09ORV9SRVRVUk5JTkc6CisJCQljYXNlIFBPUlRBTF9PTkVfTU9EX1dJ VEg6CiAKIAkJCQkvKiBNdXN0IHNldCBzbmFwc2hvdCBiZWZvcmUgc3RhcnRpbmcgZXhlY3V0b3Iu ICovCiAJCQkJaWYgKHNuYXBzaG90KQpAQCAtNDkxLDggKzQwOCw4IEBAIFBvcnRhbFN0YXJ0KFBv cnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCSAqLwogCiAJCQkJLyoKLQkJ CQkgKiBDcmVhdGUgUXVlcnlEZXNjIGluIHBvcnRhbCdzIGNvbnRleHQ7IGZvciB0aGUgbW9tZW50 LCBzZXQKLQkJCQkgKiB0aGUgZGVzdGluYXRpb24gdG8gRGVzdE5vbmUuCisJCQkJICogQ3JlYXRl IFF1ZXJ5RGVzYyBpbiBwb3J0YWwtPnF1ZXJ5Q29udGV4dDsgZm9yIHRoZSBtb21lbnQsCisJCQkJ ICogc2V0IHRoZSBkZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4KIAkJCQkgKi8KIAkJCQlxdWVyeURl c2MgPSBDcmVhdGVRdWVyeURlc2MobGluaXRpYWxfbm9kZShQbGFubmVkU3RtdCwgcG9ydGFsLT5z dG10cyksCiAJCQkJCQkJCQkJCU5VTEwsCkBAIC01MDQsMzAgKzQyMSw1MSBAQCBQb3J0YWxTdGFy dChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJCQkJCQkJcG9ydGFs LT5xdWVyeUVudiwKIAkJCQkJCQkJCQkJMCk7CiAKKwkJCQkvKiBSZW1lbWJlciBmb3IgUG9ydGFs UnVuTXVsdGkoKS4gKi8KKwkJCQlpZiAocG9ydGFsLT5zdHJhdGVneSA9PSBQT1JUQUxfT05FX1JF VFVSTklORyB8fAorCQkJCQlwb3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfTU9EX1dJVEgp CisJCQkJCXBvcnRhbC0+cWRlc2NzID0gbGlzdF9tYWtlMShxdWVyeURlc2MpOworCiAJCQkJLyoK IAkJCQkgKiBJZiBpdCdzIGEgc2Nyb2xsYWJsZSBjdXJzb3IsIGV4ZWN1dG9yIG5lZWRzIHRvIHN1 cHBvcnQKIAkJCQkgKiBSRVdJTkQgYW5kIGJhY2t3YXJkcyBzY2FuLCBhcyB3ZWxsIGFzIHdoYXRl dmVyIHRoZSBjYWxsZXIKIAkJCQkgKiBtaWdodCd2ZSBhc2tlZCBmb3IuCiAJCQkJICovCi0JCQkJ aWYgKHBvcnRhbC0+Y3Vyc29yT3B0aW9ucyAmIENVUlNPUl9PUFRfU0NST0xMKQorCQkJCWlmIChw b3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfU0VMRUNUICYmCisJCQkJCShwb3J0YWwtPmN1 cnNvck9wdGlvbnMgJiBDVVJTT1JfT1BUX1NDUk9MTCkpCiAJCQkJCW15ZWZsYWdzID0gZWZsYWdz IHwgRVhFQ19GTEFHX1JFV0lORCB8IEVYRUNfRkxBR19CQUNLV0FSRDsKIAkJCQllbHNlCiAJCQkJ CW15ZWZsYWdzID0gZWZsYWdzOwogCiAJCQkJLyoKLQkJCQkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQg dG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uCisJCQkJICogQ2FsbCBFeGVjdXRvclN0 YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbi4gIEEKKwkJCQkgKiBjYWNoZWQg cGxhbiBtYXkgZ2V0IGludmFsaWRhdGVkIGR1cmluZyBwbGFuIGludGlhbGl6YXRpb24uCiAJCQkJ ICovCi0JCQkJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIG15ZWZsYWdzKTsKKwkJCQlpZiAoIUV4 ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBteWVmbGFncykpCisJCQkJeworCQkJCQlFeGVjdXRvckVu ZChxdWVyeURlc2MpOworCQkJCQlGcmVlUXVlcnlEZXNjKHF1ZXJ5RGVzYyk7CisJCQkJCVBvcEFj dGl2ZVNuYXBzaG90KCk7CisJCQkJCXBsYW5fdmFsaWQgPSBmYWxzZTsKKwkJCQkJZ290byBwbGFu X2luaXRfZmFpbGVkOworCQkJCX0KIAogCQkJCS8qCi0JCQkJICogVGhpcyB0ZWxscyBQb3J0YWxD bGVhbnVwIHRvIHNodXQgZG93biB0aGUgZXhlY3V0b3IKKwkJCQkgKiBUaGlzIHRlbGxzIFBvcnRh bENsZWFudXAgdG8gc2h1dCBkb3duIHRoZSBleGVjdXRvciwgdGhvdWdoCisJCQkJICogbm90IG5l ZWRlZCBmb3IgcXVlcmllcyBoYW5kbGVkIGJ5IFBvcnRhbFJ1bk11bHRpKCkuCiAJCQkJICovCi0J CQkJcG9ydGFsLT5xdWVyeURlc2MgPSBxdWVyeURlc2M7CisJCQkJaWYgKHBvcnRhbC0+c3RyYXRl Z3kgPT0gUE9SVEFMX09ORV9TRUxFQ1QpCisJCQkJCXBvcnRhbC0+cXVlcnlEZXNjID0gcXVlcnlE ZXNjOwogCiAJCQkJLyoKLQkJCQkgKiBSZW1lbWJlciB0dXBsZSBkZXNjcmlwdG9yIChjb21wdXRl ZCBieSBFeGVjdXRvclN0YXJ0KQorCQkJCSAqIFJlbWVtYmVyIHR1cGxlIGRlc2NyaXB0b3IgKGNv bXB1dGVkIGJ5IEV4ZWN1dG9yU3RhcnQpLAorCQkJCSAqIHRob3VnaCBtYWtlIGl0IGluZGVwZW5k ZW50IG9mIFF1ZXJ5RGVzYyBmb3IgcXVlcmllcyBoYW5kbGVkCisJCQkJICogYnkgUG9ydGFsUnVu TXVsdGkoKS4KIAkJCQkgKi8KLQkJCQlwb3J0YWwtPnR1cERlc2MgPSBxdWVyeURlc2MtPnR1cERl c2M7CisJCQkJaWYgKHBvcnRhbC0+c3RyYXRlZ3kgIT0gUE9SVEFMX09ORV9TRUxFQ1QpCisJCQkJ CXBvcnRhbC0+dHVwRGVzYyA9IENyZWF0ZVR1cGxlRGVzY0NvcHkocXVlcnlEZXNjLT50dXBEZXNj KTsKKwkJCQllbHNlCisJCQkJCXBvcnRhbC0+dHVwRGVzYyA9IHF1ZXJ5RGVzYy0+dHVwRGVzYzsK IAogCQkJCS8qCiAJCQkJICogUmVzZXQgY3Vyc29yIHBvc2l0aW9uIGRhdGEgdG8gInN0YXJ0IG9m IHF1ZXJ5IgpAQCAtNTM5LDI5ICs0NzcsNiBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQ YXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQkJCWJyZWFr OwogCi0JCQljYXNlIFBPUlRBTF9PTkVfUkVUVVJOSU5HOgotCQkJY2FzZSBQT1JUQUxfT05FX01P RF9XSVRIOgotCi0JCQkJLyoKLQkJCQkgKiBXZSBkb24ndCBzdGFydCB0aGUgZXhlY3V0b3IgdW50 aWwgd2UgYXJlIHRvbGQgdG8gcnVuIHRoZQotCQkJCSAqIHBvcnRhbC4gIFdlIGRvIG5lZWQgdG8g c2V0IHVwIHRoZSByZXN1bHQgdHVwZGVzYy4KLQkJCQkgKi8KLQkJCQl7Ci0JCQkJCVBsYW5uZWRT dG10ICpwc3RtdDsKLQotCQkJCQlwc3RtdCA9IFBvcnRhbEdldFByaW1hcnlTdG10KHBvcnRhbCk7 Ci0JCQkJCXBvcnRhbC0+dHVwRGVzYyA9Ci0JCQkJCQlFeGVjQ2xlYW5UeXBlRnJvbVRMKHBzdG10 LT5wbGFuVHJlZS0+dGFyZ2V0bGlzdCk7Ci0JCQkJfQotCi0JCQkJLyoKLQkJCQkgKiBSZXNldCBj dXJzb3IgcG9zaXRpb24gZGF0YSB0byAic3RhcnQgb2YgcXVlcnkiCi0JCQkJICovCi0JCQkJcG9y dGFsLT5hdFN0YXJ0ID0gdHJ1ZTsKLQkJCQlwb3J0YWwtPmF0RW5kID0gZmFsc2U7CS8qIGFsbG93 IGZldGNoZXMgKi8KLQkJCQlwb3J0YWwtPnBvcnRhbFBvcyA9IDA7Ci0JCQkJYnJlYWs7Ci0KIAkJ CWNhc2UgUE9SVEFMX1VUSUxfU0VMRUNUOgogCiAJCQkJLyoKQEAgLTU4NCw3ICs0OTksODIgQEAg UG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJYnJl YWs7CiAKIAkJCWNhc2UgUE9SVEFMX01VTFRJX1FVRVJZOgotCQkJCS8qIE5lZWQgZG8gbm90aGlu ZyBub3cgKi8KKwkJCQl7CisJCQkJCUxpc3RDZWxsICAgKmxjOworCQkJCQlib29sCQlmaXJzdCA9 IHRydWU7CisKKwkJCQkJbXllZmxhZ3MgPSBlZmxhZ3M7CisJCQkJCWZvcmVhY2gobGMsIHBvcnRh bC0+c3RtdHMpCisJCQkJCXsKKwkJCQkJCVBsYW5uZWRTdG10ICpwbGFuID0gbGZpcnN0X25vZGUo UGxhbm5lZFN0bXQsIGxjKTsKKwkJCQkJCWJvb2wJCWlzX3V0aWxpdHkgPSAocGxhbi0+dXRpbGl0 eVN0bXQgIT0gTlVMTCk7CisKKwkJCQkJCS8qCisJCQkJCQkgKiBQdXNoIHRoZSBzbmFwc2hvdCB0 byBiZSB1c2VkIGJ5IHRoZSBleGVjdXRvci4KKwkJCQkJCSAqLworCQkJCQkJaWYgKCFpc191dGls aXR5KQorCQkJCQkJeworCQkJCQkJCS8qCisJCQkJCQkJICogTXVzdCBjb3B5IHRoZSBzbmFwc2hv dCBmb3IgYWxsIHN0YXRlbWVudHMKKwkJCQkJCQkgKiBleGNlcHQgdGhlYyBmaXJzdCBhcyB3ZSds bCBuZWVkIHRvIHVwZGF0ZSBpdHMKKwkJCQkJCQkgKiBjb21tYW5kIElELgorCQkJCQkJCSAqLwor CQkJCQkJCWlmICghZmlyc3QpCisJCQkJCQkJCVB1c2hDb3BpZWRTbmFwc2hvdChHZXRUcmFuc2Fj dGlvblNuYXBzaG90KCkpOworCQkJCQkJCWVsc2UKKwkJCQkJCQkJUHVzaEFjdGl2ZVNuYXBzaG90 KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCQkJCQl9CisKKwkJCQkJCS8qCisJCQkJCQkg KiBGcm9tIHRoZSAybmQgc3RhdGVtZW50IG9ud2FyZHMsIHVwZGF0ZSB0aGUgY29tbWFuZAorCQkJ CQkJICogSUQgYW5kIHRoZSBzbmFwc2hvdCB0byBtYXRjaC4KKwkJCQkJCSAqLworCQkJCQkJaWYg KCFmaXJzdCkKKwkJCQkJCXsKKwkJCQkJCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCQkJ CQkJCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CisJCQkJCQl9CisKKwkJCQkJCWZp cnN0ID0gZmFsc2U7CisKKwkJCQkJCS8qCisJCQkJCQkgKiBDcmVhdGUgdGhlIFF1ZXJ5RGVzYy4g IERlc3RSZWNlaXZlciB3aWxsIGJlIHNldCBpbgorCQkJCQkJICogUG9ydGFsUnVuTXVsdGkoKSBi ZWZvcmUgY2FsbGluZyBFeGVjdXRvclJ1bigpLgorCQkJCQkJICovCisJCQkJCQlxdWVyeURlc2Mg PSBDcmVhdGVRdWVyeURlc2MocGxhbiwKKwkJCQkJCQkJCQkJCQlOVUxMLAorCQkJCQkJCQkJCQkJ CXBvcnRhbC0+c291cmNlVGV4dCwKKwkJCQkJCQkJCQkJCQkhaXNfdXRpbGl0eSA/CisJCQkJCQkJ CQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSA6CisJCQkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90 LAorCQkJCQkJCQkJCQkJCUludmFsaWRTbmFwc2hvdCwKKwkJCQkJCQkJCQkJCQlOVUxMLAorCQkJ CQkJCQkJCQkJCXBhcmFtcywKKwkJCQkJCQkJCQkJCQlwb3J0YWwtPnF1ZXJ5RW52LCAwKTsKKwor CQkJCQkJLyogUmVtZW1iZXIgZm9yIFBvcnRhbFJ1bk11bHRpKCkgKi8KKwkJCQkJCXBvcnRhbC0+ cWRlc2NzID0gbGFwcGVuZChwb3J0YWwtPnFkZXNjcywgcXVlcnlEZXNjKTsKKworCQkJCQkJaWYg KGlzX3V0aWxpdHkpCisJCQkJCQkJY29udGludWU7CisKKwkJCQkJCS8qCisJCQkJCQkgKiBDYWxs IEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IKKwkJCQkJCSAqIGV4ZWN1dGlv bi4gIEEgY2FjaGVkIHBsYW4gbWF5IGdldCBpbnZhbGlkYXRlZAorCQkJCQkJICogZHVyaW5nIHBs YW4gaW50aWFsaXphdGlvbi4KKwkJCQkJCSAqLworCQkJCQkJaWYgKCFFeGVjdXRvclN0YXJ0KHF1 ZXJ5RGVzYywgbXllZmxhZ3MpKQorCQkJCQkJeworCQkJCQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7 CisJCQkJCQkJRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKKwkJCQkJCQlGcmVlUXVlcnlEZXNjKHF1 ZXJ5RGVzYyk7CisJCQkJCQkJcGxhbl92YWxpZCA9IGZhbHNlOworCQkJCQkJCWdvdG8gcGxhbl9p bml0X2ZhaWxlZDsKKwkJCQkJCX0KKwkJCQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCQkJCX0K KwkJCQl9CisKIAkJCQlwb3J0YWwtPnR1cERlc2MgPSBOVUxMOwogCQkJCWJyZWFrOwogCQl9CkBA IC01OTcsMTkgKzU4NywyMCBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJ bmZvIHBhcmFtcywKIAkJLyogUmVzdG9yZSBnbG9iYWwgdmFycyBhbmQgcHJvcGFnYXRlIGVycm9y ICovCiAJCUFjdGl2ZVBvcnRhbCA9IHNhdmVBY3RpdmVQb3J0YWw7CiAJCUN1cnJlbnRSZXNvdXJj ZU93bmVyID0gc2F2ZVJlc291cmNlT3duZXI7Ci0JCVBvcnRhbENvbnRleHQgPSBzYXZlUG9ydGFs Q29udGV4dDsKIAogCQlQR19SRV9USFJPVygpOwogCX0KIAlQR19FTkRfVFJZKCk7CiAKKwlwb3J0 YWwtPnN0YXR1cyA9IFBPUlRBTF9SRUFEWTsKKworcGxhbl9pbml0X2ZhaWxlZDoKIAlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkQ29udGV4dCk7CiAKIAlBY3RpdmVQb3J0YWwgPSBzYXZlQWN0aXZl UG9ydGFsOwogCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gc2F2ZVJlc291cmNlT3duZXI7Ci0JUG9y dGFsQ29udGV4dCA9IHNhdmVQb3J0YWxDb250ZXh0OwogCi0JcG9ydGFsLT5zdGF0dXMgPSBQT1JU QUxfUkVBRFk7CisJcmV0dXJuIHBsYW5fdmFsaWQ7CiB9CiAKIC8qCkBAIC0xMTk2LDcgKzExODcs NyBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQkJICAgUXVlcnlDb21wbGV0aW9u ICpxYykKIHsKIAlib29sCQlhY3RpdmVfc25hcHNob3Rfc2V0ID0gZmFsc2U7Ci0JTGlzdENlbGwg ICAqc3RtdGxpc3RfaXRlbTsKKwlMaXN0Q2VsbCAgICpxZGVzY19pdGVtOwogCiAJLyoKIAkgKiBJ ZiB0aGUgZGVzdGluYXRpb24gaXMgRGVzdFJlbW90ZUV4ZWN1dGUsIGNoYW5nZSB0byBEZXN0Tm9u ZS4gIFRoZQpAQCAtMTIxNyw5ICsxMjA4LDEwIEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0 YWwsCiAJICogTG9vcCB0byBoYW5kbGUgdGhlIGluZGl2aWR1YWwgcXVlcmllcyBnZW5lcmF0ZWQg ZnJvbSBhIHNpbmdsZSBwYXJzZXRyZWUKIAkgKiBieSBhbmFseXNpcyBhbmQgcmV3cml0ZS4KIAkg Ki8KLQlmb3JlYWNoKHN0bXRsaXN0X2l0ZW0sIHBvcnRhbC0+c3RtdHMpCisJZm9yZWFjaChxZGVz Y19pdGVtLCBwb3J0YWwtPnFkZXNjcykKIAl7Ci0JCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJz dF9ub2RlKFBsYW5uZWRTdG10LCBzdG10bGlzdF9pdGVtKTsKKwkJUXVlcnlEZXNjICpxZGVzYyA9 IChRdWVyeURlc2MgKikgbGZpcnN0KHFkZXNjX2l0ZW0pOworCQlQbGFubmVkU3RtdCAqcHN0bXQg PSBxZGVzYy0+cGxhbm5lZHN0bXQ7CiAKIAkJLyoKIAkJICogSWYgd2UgZ290IGEgY2FuY2VsIHNp Z25hbCBpbiBwcmlvciBjb21tYW5kLCBxdWl0CkBAIC0xMjM2LDMzICsxMjI4LDI2IEBAIFBvcnRh bFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQlpZiAobG9nX2V4ZWN1dG9yX3N0YXRzKQogCQkJ CVJlc2V0VXNhZ2UoKTsKIAotCQkJLyoKLQkJCSAqIE11c3QgYWx3YXlzIGhhdmUgYSBzbmFwc2hv dCBmb3IgcGxhbm5hYmxlIHF1ZXJpZXMuICBGaXJzdCB0aW1lCi0JCQkgKiB0aHJvdWdoLCB0YWtl IGEgbmV3IHNuYXBzaG90OyBmb3Igc3Vic2VxdWVudCBxdWVyaWVzIGluIHRoZQotCQkJICogc2Ft ZSBwb3J0YWwsIGp1c3QgdXBkYXRlIHRoZSBzbmFwc2hvdCdzIGNvcHkgb2YgdGhlIGNvbW1hbmQK LQkJCSAqIGNvdW50ZXIuCi0JCQkgKi8KKwkJCS8qIFB1c2ggdGhlIHNuYXBzaG90IGZvciBwbGFu bmFibGUgcXVlcmllcy4gKi8KIAkJCWlmICghYWN0aXZlX3NuYXBzaG90X3NldCkKIAkJCXsKLQkJ CQlTbmFwc2hvdAlzbmFwc2hvdCA9IEdldFRyYW5zYWN0aW9uU25hcHNob3QoKTsKKwkJCQlTbmFw c2hvdAlzbmFwc2hvdCA9IHFkZXNjLT5zbmFwc2hvdDsKIAotCQkJCS8qIElmIHRvbGQgdG8sIHJl Z2lzdGVyIHRoZSBzbmFwc2hvdCBhbmQgc2F2ZSBpbiBwb3J0YWwgKi8KKwkJCQkvKgorCQkJCSAq IElmIHRvbGQgdG8sIHJlZ2lzdGVyIHRoZSBzbmFwc2hvdCBhbmQgc2F2ZSBpbiBwb3J0YWwKKwkJ CQkgKgorCQkJCSAqIE5vdGUgdGhhdCB0aGUgY29tbWFuZCBJRCBvZiBxZGVzYy0+c25hcHNob3Qg Zm9yIDJuZCBxdWVyeQorCQkJCSAqIG9ud2FyZHMgd291bGQgaGF2ZSBiZWVuIHVwZGF0ZWQgaW4g UG9ydGFsU3RhcnQoKSB0byBhY2NvdW50CisJCQkJICogZm9yIENDSSgpIGRvbmUgYmV0d2VlbiBx dWVyaWVzLCBidXQgaXQncyBPSyB0aGF0IGhlcmUgd2UKKwkJCQkgKiBkb24ndCBsaWtld2lzZSB1 cGRhdGUgaG9sZFNuYXBzaG90J3MgY29tbWFuZCBJRC4KKwkJCQkgKi8KIAkJCQlpZiAoc2V0SG9s ZFNuYXBzaG90KQogCQkJCXsKIAkJCQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KHNuYXBz aG90KTsKIAkJCQkJcG9ydGFsLT5ob2xkU25hcHNob3QgPSBzbmFwc2hvdDsKIAkJCQl9CiAKLQkJ CQkvKgotCQkJCSAqIFdlIGNhbid0IGhhdmUgdGhlIGhvbGRTbmFwc2hvdCBhbHNvIGJlIHRoZSBh Y3RpdmUgb25lLAotCQkJCSAqIGJlY2F1c2UgVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQg d291bGQgY29tcGxhaW4uICBTbwotCQkJCSAqIGZvcmNlIGFuIGV4dHJhIHNuYXBzaG90IGNvcHku ICBQbGFpbiBQdXNoQWN0aXZlU25hcHNob3QKLQkJCQkgKiB3b3VsZCBoYXZlIGNvcGllZCB0aGUg dHJhbnNhY3Rpb24gc25hcHNob3QgYW55d2F5LCBzbyB0aGlzCi0JCQkJICogb25seSBhZGRzIGEg Y29weSBzdGVwIHdoZW4gc2V0SG9sZFNuYXBzaG90IGlzIHRydWUuICAoSXQncwotCQkJCSAqIG9r YXkgZm9yIHRoZSBjb21tYW5kIElEIG9mIHRoZSBhY3RpdmUgc25hcHNob3QgdG8gZGl2ZXJnZQot CQkJCSAqIGZyb20gd2hhdCBob2xkU25hcHNob3QgaGFzLikKLQkJCQkgKi8KLQkJCQlQdXNoQ29w aWVkU25hcHNob3Qoc25hcHNob3QpOworCQkJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7 CiAKIAkJCQkvKgogCQkJCSAqIEFzIGZvciBQT1JUQUxfT05FX1NFTEVDVCBwb3J0YWxzLCBpdCBk b2VzIG5vdCBzZWVtCkBAIC0xMjcxLDI2ICsxMjU2LDM5IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRh bCBwb3J0YWwsCiAKIAkJCQlhY3RpdmVfc25hcHNob3Rfc2V0ID0gdHJ1ZTsKIAkJCX0KLQkJCWVs c2UKLQkJCQlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwogCisJCQkvKgorCQkJICog UnVuIHRoZSBwbGFuIHRvIGNvbXBsZXRpb24uCisJCQkgKi8KKwkJCXFkZXNjLT5kZXN0ID0gZGVz dDsKKwkJCUV4ZWN1dG9yUnVuKHFkZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgMCwgdHJ1ZSk7 CisKKwkJCS8qCisJCQkgKiBCdWlsZCBjb21tYW5kIGNvbXBsZXRpb24gc3RhdHVzIGRhdGEgaWYg bmVlZGVkLgorCQkJICovCiAJCQlpZiAocHN0bXQtPmNhblNldFRhZykKIAkJCXsKLQkJCQkvKiBz dGF0ZW1lbnQgY2FuIHNldCB0YWcgc3RyaW5nICovCi0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAot CQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCi0JCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1z LAotCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LAotCQkJCQkJCSBkZXN0LCBxYyk7Ci0JCQl9Ci0J CQllbHNlCi0JCQl7Ci0JCQkJLyogc3RtdCBhZGRlZCBieSByZXdyaXRlIGNhbm5vdCBzZXQgdGFn ICovCi0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAotCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQs Ci0JCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAotCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52 LAotCQkJCQkJCSBhbHRkZXN0LCBOVUxMKTsKKwkJCQlzd2l0Y2ggKHFkZXNjLT5vcGVyYXRpb24p CisJCQkJeworCQkJCQljYXNlIENNRF9TRUxFQ1Q6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24o cWMsIENNRFRBR19TRUxFQ1QsIHFkZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCQkJCQli cmVhazsKKwkJCQkJY2FzZSBDTURfSU5TRVJUOgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFj LCBDTURUQUdfSU5TRVJULCBxZGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOworCQkJCQkJYnJl YWs7CisJCQkJCWNhc2UgQ01EX1VQREFURToKKwkJCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywg Q01EVEFHX1VQREFURSwgcWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFr OworCQkJCQljYXNlIENNRF9ERUxFVEU6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENN RFRBR19ERUxFVEUsIHFkZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCQkJCQlicmVhazsK KwkJCQkJY2FzZSBDTURfTUVSR0U6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRB R19NRVJHRSwgcWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJ CQlkZWZhdWx0OgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfVU5LTk9XTiwg cWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJCX0KIAkJCX0K IAogCQkJaWYgKGxvZ19leGVjdXRvcl9zdGF0cykKQEAgLTEzNDUsMTIgKzEzNDMsMTIgQEAgUG9y dGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJaWYgKHBvcnRhbC0+c3RtdHMgPT0gTklMKQog CQkJYnJlYWs7CiAKLQkJLyoKLQkJICogSW5jcmVtZW50IGNvbW1hbmQgY291bnRlciBiZXR3ZWVu IHF1ZXJpZXMsIGJ1dCBub3QgYWZ0ZXIgdGhlIGxhc3QKLQkJICogb25lLgotCQkgKi8KLQkJaWYg KGxuZXh0KHBvcnRhbC0+c3RtdHMsIHN0bXRsaXN0X2l0ZW0pICE9IE5VTEwpCi0JCQlDb21tYW5k Q291bnRlckluY3JlbWVudCgpOworCQlpZiAocWRlc2MtPmVzdGF0ZSkKKwkJeworCQkJRXhlY3V0 b3JGaW5pc2gocWRlc2MpOworCQkJRXhlY3V0b3JFbmQocWRlc2MpOworCQl9CisJCUZyZWVRdWVy eURlc2MocWRlc2MpOwogCX0KIAogCS8qIFBvcCB0aGUgc25hcHNob3QgaWYgd2UgcHVzaGVkIG9u ZS4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgYi9z cmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCmluZGV4IDA2ZGZhODVmMDQuLjBjYWQ0 NTBkY2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwpAQCAtMjAxLDYgKzIwMSwxMyBA QCBDcmVhdGVQb3J0YWwoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBhbGxvd0R1cCwgYm9vbCBkdXBT aWxlbnQpCiAJcG9ydGFsLT5wb3J0YWxDb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRv cFBvcnRhbENvbnRleHQsCiAJCQkJCQkJCQkJCQkgICJQb3J0YWxDb250ZXh0IiwKIAkJCQkJCQkJ CQkJCSAgQUxMT0NTRVRfU01BTExfU0laRVMpOworCS8qCisJICogaW5pdGlhbGl6ZSBwb3J0YWwn cyBxdWVyeSBjb250ZXh0IHRvIHN0b3JlIFF1ZXJ5RGVzY3MgY3JlYXRlZCBkdXJpbmcKKwkgKiBQ b3J0YWxTdGFydCgpIGFuZCB0aGVuIHVzZWQgaW4gUG9ydGFsUnVuKCkuCisJICovCisJcG9ydGFs LT5xdWVyeUNvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9wUG9ydGFsQ29udGV4dCwK KwkJCQkJCQkJCQkJCSAiUG9ydGFsUXVlcnlDb250ZXh0IiwKKwkJCQkJCQkJCQkJCSBBTExPQ1NF VF9TTUFMTF9TSVpFUyk7CiAKIAkvKiBjcmVhdGUgYSByZXNvdXJjZSBvd25lciBmb3IgdGhlIHBv cnRhbCAqLwogCXBvcnRhbC0+cmVzb3duZXIgPSBSZXNvdXJjZU93bmVyQ3JlYXRlKEN1clRyYW5z YWN0aW9uUmVzb3VyY2VPd25lciwKQEAgLTIyNCw2ICsyMzEsNyBAQCBDcmVhdGVQb3J0YWwoY29u c3QgY2hhciAqbmFtZSwgYm9vbCBhbGxvd0R1cCwgYm9vbCBkdXBTaWxlbnQpCiAKIAkvKiBmb3Ig bmFtZWQgcG9ydGFscyByZXVzZSBwb3J0YWwtPm5hbWUgY29weSAqLwogCU1lbW9yeUNvbnRleHRT ZXRJZGVudGlmaWVyKHBvcnRhbC0+cG9ydGFsQ29udGV4dCwgcG9ydGFsLT5uYW1lWzBdID8gcG9y dGFsLT5uYW1lIDogIjx1bm5hbWVkPiIpOworCU1lbW9yeUNvbnRleHRTZXRJZGVudGlmaWVyKHBv cnRhbC0+cXVlcnlDb250ZXh0LCBwb3J0YWwtPm5hbWVbMF0gPyBwb3J0YWwtPm5hbWUgOiAiPHVu bmFtZWQ+Iik7CiAKIAlyZXR1cm4gcG9ydGFsOwogfQpAQCAtNTk0LDYgKzYwMiw3IEBAIFBvcnRh bERyb3AoUG9ydGFsIHBvcnRhbCwgYm9vbCBpc1RvcENvbW1pdCkKIAogCS8qIHJlbGVhc2Ugc3Vi c2lkaWFyeSBzdG9yYWdlICovCiAJTWVtb3J5Q29udGV4dERlbGV0ZShwb3J0YWwtPnBvcnRhbENv bnRleHQpOworCU1lbW9yeUNvbnRleHREZWxldGUocG9ydGFsLT5xdWVyeUNvbnRleHQpOwogCiAJ LyogcmVsZWFzZSBwb3J0YWwgc3RydWN0IChpdCdzIGluIFRvcFBvcnRhbENvbnRleHQpICovCiAJ cGZyZWUocG9ydGFsKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4u aCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAppbmRleCAzZDNlNjMyYTBjLi4zOTJh YmI1MTUwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKKysrIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCkBAIC04OCw3ICs4OCwxMSBAQCBleHRlcm4g dm9pZCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50 bywKIAkJCQkJCQkgIEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAog CQkJCQkJCSAgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52 KTsKIAotZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10 LCBJbnRvQ2xhdXNlICppbnRvLAorZXh0ZXJuIFF1ZXJ5RGVzYyAqRXhwbGFpblF1ZXJ5RGVzYyhQ bGFubmVkU3RtdCAqc3RtdCwgc3RydWN0IENhY2hlZFBsYW4gKmNwbGFuLAorCQkJCSBjb25zdCBj aGFyICpxdWVyeVN0cmluZywgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKKwkJ CQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKK2V4 dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAorCQkJCQkJICAg SW50b0NsYXVzZSAqaW50bywKIAkJCQkJCSAgIEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IGNoYXIg KnF1ZXJ5U3RyaW5nLAogCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5RW52aXJv bm1lbnQgKnF1ZXJ5RW52LAogCQkJCQkJICAgY29uc3QgaW5zdHJfdGltZSAqcGxhbmR1cmF0aW9u LApAQCAtMTA0LDYgKzEwOCw3IEBAIGV4dGVybiB2b2lkIEV4cGxhaW5RdWVyeVBhcmFtZXRlcnMo RXhwbGFpblN0YXRlICplcywgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIGludCBtCiAKIGV4dGVybiB2 b2lkIEV4cGxhaW5CZWdpbk91dHB1dChFeHBsYWluU3RhdGUgKmVzKTsKIGV4dGVybiB2b2lkIEV4 cGxhaW5FbmRPdXRwdXQoRXhwbGFpblN0YXRlICplcyk7CitleHRlcm4gdm9pZCBFeHBsYWluUmVz ZXRPdXRwdXQoRXhwbGFpblN0YXRlICplcyk7CiBleHRlcm4gdm9pZCBFeHBsYWluU2VwYXJhdGVQ bGFucyhFeHBsYWluU3RhdGUgKmVzKTsKIAogZXh0ZXJuIHZvaWQgRXhwbGFpblByb3BlcnR5TGlz dChjb25zdCBjaGFyICpxbGFiZWwsIExpc3QgKmRhdGEsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jb21tYW5kcy90cmlnZ2VyLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKaW5k ZXggNDMwZTNjYTdkZC4uZDRmN2MyOTMwMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFu ZHMvdHJpZ2dlci5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaApAQCAtMjU3 LDYgKzI1Nyw3IEBAIGV4dGVybiB2b2lkIEV4ZWNBU1RydW5jYXRlVHJpZ2dlcnMoRVN0YXRlICpl c3RhdGUsCiAKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckJlZ2luWGFjdCh2b2lkKTsKIGV4dGVy biB2b2lkIEFmdGVyVHJpZ2dlckJlZ2luUXVlcnkodm9pZCk7CitleHRlcm4gdm9pZCBBZnRlclRy aWdnZXJDYW5jZWxRdWVyeSh2b2lkKTsKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckVuZFF1ZXJ5 KEVTdGF0ZSAqZXN0YXRlKTsKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckZpcmVEZWZlcnJlZCh2 b2lkKTsKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckVuZFhhY3QoYm9vbCBpc0NvbW1pdCk7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCA3MmNiZjEyMGM1Li4xMGM1Y2RhMTY5IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTczLDcgKzczLDcgQEAKIAogCiAvKiBIb29rIGZvciBwbHVn aW5zIHRvIGdldCBjb250cm9sIGluIEV4ZWN1dG9yU3RhcnQoKSAqLwotdHlwZWRlZiB2b2lkICgq RXhlY3V0b3JTdGFydF9ob29rX3R5cGUpIChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFn cyk7Cit0eXBlZGVmIGJvb2wgKCpFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSkgKFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIGV4dGVybiBQR0RMTElNUE9SVCBFeGVjdXRvclN0YXJ0 X2hvb2tfdHlwZSBFeGVjdXRvclN0YXJ0X2hvb2s7CiAKIC8qIEhvb2sgZm9yIHBsdWdpbnMgdG8g Z2V0IGNvbnRyb2wgaW4gRXhlY3V0b3JSdW4oKSAqLwpAQCAtMTk4LDggKzE5OCw4IEBAIEV4ZWNH ZXRKdW5rQXR0cmlidXRlKFR1cGxlVGFibGVTbG90ICpzbG90LCBBdHRyTnVtYmVyIGF0dG5vLCBi b29sICppc051bGwpCiAvKgogICogcHJvdG90eXBlcyBmcm9tIGZ1bmN0aW9ucyBpbiBleGVjTWFp bi5jCiAgKi8KLWV4dGVybiB2b2lkIEV4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2Ms IGludCBlZmxhZ3MpOwotZXh0ZXJuIHZvaWQgc3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURl c2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CitleHRlcm4gYm9vbCBFeGVjdXRvclN0YXJ0KFF1 ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKK2V4dGVybiBib29sIHN0YW5kYXJkX0V4 ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwogZXh0ZXJuIHZv aWQgRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCQkJCQlTY2FuRGlyZWN0aW9u IGRpcmVjdGlvbiwgdWludDY0IGNvdW50LCBib29sIGV4ZWN1dGVfb25jZSk7CiBleHRlcm4gdm9p ZCBzdGFuZGFyZF9FeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmgKaW5kZXggODQ2ZWIzMmExZC4uYmI1NzM0ZWRiNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK QEAgLTY3MCw2ICs2NzAsOSBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAlpbnQJCQllc190b3Bf ZWZsYWdzOwkvKiBlZmxhZ3MgcGFzc2VkIHRvIEV4ZWN1dG9yU3RhcnQgKi8KIAlpbnQJCQllc19p bnN0cnVtZW50OwkvKiBPUiBvZiBJbnN0cnVtZW50T3B0aW9uIGZsYWdzICovCiAJYm9vbAkJZXNf ZmluaXNoZWQ7CS8qIHRydWUgd2hlbiBFeGVjdXRvckZpbmlzaCBpcyBkb25lICovCisJYm9vbAkJ ZXNfY2FuY2VsZWQ7CS8qIHRydWUgd2hlbiBleGVjdXRpb24gd2FzIGNhbmNlbGVkCisJCQkJCQkJ CSAqIHVwb24gZW5jb3VudGVyaW5nIHRoYXQgcGxhbiB3YXMgaW52YWxpZGVkCisJCQkJCQkJCSAq IGR1cmluZyBFeGVjSW5pdE5vZGUoKSAqLwogCiAJTGlzdAkgICAqZXNfZXhwcmNvbnRleHRzOwkv KiBMaXN0IG9mIEV4cHJDb250ZXh0cyB3aXRoaW4gRVN0YXRlICovCiAKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3Rjb3AvcHF1ZXJ5LmggYi9zcmMvaW5jbHVkZS90Y29wL3BxdWVyeS5oCmluZGV4 IGE1ZTY1Yjk4YWEuLjU3N2I4MWE5ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvcHF1 ZXJ5LmgKKysrIGIvc3JjL2luY2x1ZGUvdGNvcC9wcXVlcnkuaApAQCAtMjksNyArMjksNyBAQCBl eHRlcm4gTGlzdCAqRmV0Y2hQb3J0YWxUYXJnZXRMaXN0KFBvcnRhbCBwb3J0YWwpOwogCiBleHRl cm4gTGlzdCAqRmV0Y2hTdGF0ZW1lbnRUYXJnZXRMaXN0KE5vZGUgKnN0bXQpOwogCi1leHRlcm4g dm9pZCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKK2V4 dGVybiBib29sIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1z LAogCQkJCQkJaW50IGVmbGFncywgU25hcHNob3Qgc25hcHNob3QpOwogCiBleHRlcm4gdm9pZCBQ b3J0YWxTZXRSZXN1bHRGb3JtYXQoUG9ydGFsIHBvcnRhbCwgaW50IG5Gb3JtYXRzLApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0 YWwuaAppbmRleCBhYTA4YjFlMGZjLi5hZjA1OWUzMGY4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS91dGlscy9wb3J0YWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaApAQCAtMTM4 LDYgKzEzOCw4IEBAIHR5cGVkZWYgc3RydWN0IFBvcnRhbERhdGEKIAlRdWVyeUNvbXBsZXRpb24g cWM7CQkJLyogY29tbWFuZCBjb21wbGV0aW9uIGRhdGEgZm9yIGV4ZWN1dGVkIHF1ZXJ5ICovCiAJ TGlzdAkgICAqc3RtdHM7CQkJLyogbGlzdCBvZiBQbGFubmVkU3RtdHMgKi8KIAlDYWNoZWRQbGFu ICpjcGxhbjsJCQkvKiBDYWNoZWRQbGFuLCBpZiBzdG10cyBhcmUgZnJvbSBvbmUgKi8KKwlMaXN0 CSAgICpxZGVzY3M7CQkJLyogbGlzdCBvZiBRdWVyeURlc2NzICovCisJTWVtb3J5Q29udGV4dCBx dWVyeUNvbnRleHQ7CS8qIG1lbW9yeSBmb3IgUXVlcnlEZXNjcyBhbmQgY2hpbGRyZW4gKi8KIAog CVBhcmFtTGlzdEluZm8gcG9ydGFsUGFyYW1zOyAvKiBwYXJhbXMgdG8gcGFzcyB0byBxdWVyeSAq LwogCVF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52OyAvKiBlbnZpcm9ubWVudCBmb3IgcXVlcnkg Ki8KLS0gCjIuMzUuMwoK --00000000000041b1e2060642be90 Content-Type: application/octet-stream; name="v47-0003-Prepare-executor-to-support-detecting-CachedPlan.patch" Content-Disposition: attachment; filename="v47-0003-Prepare-executor-to-support-detecting-CachedPlan.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ln0bz7v46 RnJvbSA1MDYyMjA3YzFlNjg3OWNmODY1NTA4ZTEzMjVkY2FkZTg4ZDM5Y2M2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgMjIgU2VwIDIwMjMgMTg6MTI6MDQgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 NyAzLzldIFByZXBhcmUgZXhlY3V0b3IgdG8gc3VwcG9ydCBkZXRlY3RpbmcgQ2FjaGVkUGxhbgog aW52YWxpZGF0aW9uCgpUaGlzIGFkZHMgY2hlY2tzIGF0IHZhcmlvdXMgcG9pbnRzIGR1cmluZyB0 aGUgZXhlY3V0b3Incwppbml0aWFsaXphdGlvbiBvZiB0aGUgcGxhbiB0cmVlIHRvIGRldGVybWlu ZSB3aGV0aGVyIHRoZSBvcmlnaW5hdGluZwpDYWNoZWRQbGFuIGhhcyBiZWNvbWUgaW52YWxpZCBh cyBhIHJlc3VsdCBvZiB0YWtpbmcgbG9ja3Mgb24gdGhlCnJlbGF0aW9ucyByZWZlcmVuY2VkIGlu IHRoZSBwbGFuLiAgVGhpcyBpbmNsdWRlcyBhZGRkaW5nIHRoZSBjaGVjawphZnRlciBldmVyeSBj YWxsIHRvIEV4ZWNPcGVuU2NhblJlbGF0aW9uKCkgYW5kIHRvIEV4ZWNJbml0Tm9kZSgpLAppbmNs dWRpbmcgdGhlIHJlY3Vyc2l2ZSBvbmVzIHRvIGluaXRpYWxpemUgY2hpbGQgbm9kZXMuCgpJZiBh IGdpdmVuIEV4ZWNJbml0KigpIGZ1bmN0aW9uIGRldGVjdHMgdGhhdCB0aGUgcGxhbiBoYXMgYmVj b21lCmludmFsaWQsIGl0IHNob3VsZCByZXR1cm4gaW1tZWRpYXRlbHkgZXZlbiBpZiB0aGUgUGxh blN0YXRlIG5vZGUKaXQncyBidWlsZGluZyBtYXkgb25seSBiZSBwYXJ0aWFsbHkgdmFsaWQuICBU aGF0IGlzIGNydWNpYWwgZm9yCnR3byByZWFzb25zIGRlcGVuZGluZyBvbiB3aGVyZSB0aGUgY2hl Y2sgaXM6CgogKiBUaGUgY2hlY2tzIGZvbGxvd2luZyBFeGVjT3BlblNjYW5SZWxhdGlvbigpIG1h eSBmaW5kIHRoZSBwbGFuCiAgIGhhdmluZyBiZWNvbWUgaW52YWxpZCBiZWNhdXNlIHRoZSByZXF1 ZXN0ZWQgcmVsYXRpb24gd2FzIGRyb3BwZWQKICAgb3IgaGFkIGl0cyBzY2hlbWEgY2hhbmdlZCBj b25jdXJyZW50bHkgaW4gYSBtYW5uZXIgdGhhdCByaXNrcwogICB1bnNhZmUgb3BlcmF0aW9ucyBp biB0aGUgY29kZSB0aGF0IGZvbGxvd3MuICBGb3IgZXhhbXBsZSwgaXQKICAgbWlnaHQgdHJ5IHRv IGRlcmVmZXJlbmNlIGEgTlVMTCBwb2ludGVyIHdoZW4gdGhlIGNoZWNrIGZhaWxlZAogICBiZWNh dXNlIHRoZSByZWxhdGlvbiB3YXMgZHJvcHBlZC4KCiAqIEZvciB0aGUgY2hlY2tzIGZvbGxvd2lu ZyBFeGVjSW5pdE5vZGUoKSwgdGhlIHJldHVybmVkIGNoaWxkCiAgIFBsYW5TdGF0ZSBub2RlIG1p Z2h0IGJlIG9ubHkgcGFydGlhbGx5IGludmFsaWQuICBUaGUgY29kZSB0aGF0CiAgIGZvbGxvd3Mg bWF5IG1pc2JlaGF2ZSBpZiBpdCBkZXBlbmRzIG9uIGluc3BlY3RpbmcgdGhlIGNoaWxkCiAgIFBs YW5TdGF0ZS4gIE5vdGUgdGhhdCB0aGlzIGNvbW1pdCBhZGRzIHRoZSBjaGVjayBmb2xsb3dpbmcg YWxsCiAgIGNhbGxzIG9mIEV4ZWNJbml0Tm9kZSgpIHRoYXQgZXhpc3QgaW4gdGhlIGNvZGUgYmFz ZSwgZXZlbiBhdAogICBzaXRlcyB3aGVyZSB0aGVyZSBpcyBubyBjb2RlIHRoYXQgbWlnaHQgbWlz YmVoYXZlIHRvZGF5LCBiZWNhdXNlCiAgIGl0IG1pZ2h0IG1pc2JlaGF2ZSBpbiB0aGUgZnV0dXJl LiAgSXQgc2VlbXMgbGlrZSBhIGdvb2QgaWRlYSB0bwogICBwdXQgdGhlIGd1YXJkcyBpbiBwbGFj ZSB0b2RheSByYXRoZXIgdGhhbiBpbiB0aGUgZnV0dXJlIHdoZW4gdGhlCiAgIG5lZWQgYXJpc2Vz LgoKVG8gcGFzcyB0aGUgQ2FjaGVkUGxhbiB0aGF0IHRoZSBleGVjdXRvciB3aWxsIHVzZSBmb3Ig dGhlc2UgY2hlY2tzLAp0aGlzIGFkZHMgYSBuZXcgZmllbGQgdG8gUXVlcnlEZXNjIGFuZCBhIG5l dyBwYXJhbWV0ZXIgdG8KQ3JlYXRlUXVlcnlEZXNjKCkuICBObyBjYWxsZXIgb2YgQ3JlYXRlUXVl cnlEZXNjKCkgaXMgbWFkZSB0byBwYXNzCmFuIGFjdHVhbCBDYWNoZWRQbGFuIHRob3VnaCwgc28g dGhlcmUgaXMgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuCgpSZXZpZXdlZC1ieTogUm9iZXJ0IEhhYXMK LS0tCiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyAgICAgICAgfCAgNCArKysK IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAgICAgICAgICB8ICAzICstCiBzcmMv YmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tl bmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4dGVuc2lvbi5jICAgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRz L21hdHZpZXcuYyAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVj TWFpbi5jICAgICAgICAgICAgfCAzOSArKysrKysrKysrKysrKysrKystLS0tCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyAgICAgICAgfCAgOSArKysrLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgICAgICAgIHwgIDQgKysrCiBzcmMvYmFja2VuZC9leGVj dXRvci9mdW5jdGlvbnMuYyAgICAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQWdnLmMgICAgICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFw cGVuZC5jICAgICAgICAgIHwgMTAgKysrLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0 bWFwQW5kLmMgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhl YXBzY2FuLmMgIHwgIDQgKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYyAg ICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5jICAgICAgICAg IHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jICAgICB8ICA0 ICsrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jICAgICAgICAgIHwgIDIgKysK IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jICAgICB8ICAyICsrCiBzcmMv YmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYyAgICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUhhc2guYyAgICAgICAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVIYXNoam9pbi5jICAgICAgICB8ICA0ICsrKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVJbmRleG9ubHlzY2FuLmMgICB8ICAyICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5k ZXhzY2FuLmMgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMg ICAgICAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jICAg ICAgICB8ICAyICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYyAgICAgICAg fCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYyAgICAgICAgIHwgIDIg KysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jICAgICB8ICA0ICsrLQog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jICAgICAgIHwgIDQgKysrCiBzcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyAgICAgfCAxMyArKysrKysrKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMgICAgICAgIHwgIDQgKysrCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMgIHwgIDQgKysrCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlUmVzdWx0LmMgICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVNhbXBsZXNjYW4uYyAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVT ZXFzY2FuLmMgICAgICAgICB8ICAyICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3Au YyAgICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYyAgICAg ICAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYyAg ICB8ICAyICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMgICAgfCAg MiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYyAgICAgICAgIHwgIDIgKysK IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYyAgICAgICAgICB8ICAyICsrCiBzcmMv YmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgICAgICAgfCAgMiArKwogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivc3BpLmMgICAgICAgICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvdGNv cC9wcXVlcnkuYyAgICAgICAgICAgICAgICAgIHwgIDUgKystCiBzcmMvaW5jbHVkZS9leGVjdXRv ci9leGVjZGVzYy5oICAgICAgICAgICAgfCAgNCArKysKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWN1dG9yLmggICAgICAgICAgICB8IDEwICsrKysrKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmggICAgICAgICAgICAgIHwgIDIgKysKIHNyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5o ICAgICAgICAgICAgICB8IDE0ICsrKysrKysrCiA1MSBmaWxlcyBjaGFuZ2VkLCAxODkgaW5zZXJ0 aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19m ZHcvcG9zdGdyZXNfZmR3LmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwpp bmRleCA4MDJmNzZjNzNlLi40ZmE2YmIxMjFjIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVz X2Zkdy9wb3N0Z3Jlc19mZHcuYworKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19m ZHcuYwpAQCAtMjY2Myw3ICsyNjYzLDExIEBAIHBvc3RncmVzQmVnaW5EaXJlY3RNb2RpZnkoRm9y ZWlnblNjYW5TdGF0ZSAqbm9kZSwgaW50IGVmbGFncykKIAkvKiBHZXQgaW5mbyBhYm91dCBmb3Jl aWduIHRhYmxlLiAqLwogCXJ0aW5kZXggPSBub2RlLT5yZXN1bHRSZWxJbmZvLT5yaV9SYW5nZVRh YmxlSW5kZXg7CiAJaWYgKGZzcGxhbi0+c2Nhbi5zY2FucmVsaWQgPT0gMCkKKwl7CiAJCWRtc3Rh dGUtPnJlbCA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgcnRpbmRleCwgZWZsYWdzKTsK KwkJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCQlyZXR1cm47 CisJfQogCWVsc2UKIAkJZG1zdGF0ZS0+cmVsID0gbm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9u OwogCXRhYmxlID0gR2V0Rm9yZWlnblRhYmxlKFJlbGF0aW9uR2V0UmVsaWQoZG1zdGF0ZS0+cmVs KSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHl0by5jCmluZGV4IGVhYTMxNzI3OTMuLjBlMzU0N2MzNWIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHl0by5jCkBAIC01NTgsNyArNTU4LDggQEAgQmVnaW5Db3B5VG8oUGFyc2VTdGF0 ZSAqcHN0YXRlLAogCQkoKERSX2NvcHkgKikgZGVzdCktPmNzdGF0ZSA9IGNzdGF0ZTsKIAogCQkv KiBDcmVhdGUgYSBRdWVyeURlc2MgcmVxdWVzdGluZyBubyBvdXRwdXQgKi8KLQkJY3N0YXRlLT5x dWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJ CWNzdGF0ZS0+cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIE5VTEwsCisJCQkJCQkJ CQkJCXBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgp LAogCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCQkJCWRlc3QsIE5VTEwsIE5V TEwsIDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKaW5kZXggZTkxOTIwY2ExNC4uMThiMDdjMDIw MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCkBAIC0zMjUsNyArMzI1LDcgQEAgRXhlY0NyZWF0 ZVRhYmxlQXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVUYWJsZUFzU3RtdCAqc3RtdCwKIAkJ VXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAogCQkvKiBDcmVhdGUgYSBRdWVyeURl c2MsIHJlZGlyZWN0aW5nIG91dHB1dCB0byBvdXIgdHVwbGUgcmVjZWl2ZXIgKi8KLQkJcXVlcnlE ZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQlxdWVy eURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwgcHN0YXRlLT5wX3NvdXJjZXRleHQs CiAJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJ CQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4 IDEzMjE3ODA3ZWUuLjI4MWM0N2IyZWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTU3Miw3 ICs1NzIsNyBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9D bGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCWRlc3QgPSBOb25lX1JlY2VpdmVyOwog CiAJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkgKi8KLQlxdWVyeURlc2MgPSBD cmVhdGVRdWVyeURlc2MocGxhbm5lZHN0bXQsIHF1ZXJ5U3RyaW5nLAorCXF1ZXJ5RGVzYyA9IENy ZWF0ZVF1ZXJ5RGVzYyhwbGFubmVkc3RtdCwgTlVMTCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdl dEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgcGFyYW1z LCBxdWVyeUVudiwgaW5zdHJ1bWVudF9vcHRpb24pOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9leHRlbnNpb24uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5j CmluZGV4IDUzNTA3MmQxODEuLmIyODdhMmU4NGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4dGVuc2lvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5j CkBAIC03OTcsNiArNzk3LDcgQEAgZXhlY3V0ZV9zcWxfc3RyaW5nKGNvbnN0IGNoYXIgKnNxbCkK IAkJCQlRdWVyeURlc2MgICpxZGVzYzsKIAogCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0 bXQsCisJCQkJCQkJCQkJTlVMTCwKIAkJCQkJCQkJCQlzcWwsCiAJCQkJCQkJCQkJR2V0QWN0aXZl U25hcHNob3QoKSwgTlVMTCwKIAkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL21hdHZpZXcuYwppbmRleCBhYzJlNzRmYTNmLi4yMmI4YjgyMGMzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv bWF0dmlldy5jCkBAIC00MDgsNyArNDA4LDcgQEAgcmVmcmVzaF9tYXR2aWV3X2RhdGFmaWxsKERl c3RSZWNlaXZlciAqZGVzdCwgUXVlcnkgKnF1ZXJ5LAogCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29t bWFuZElkKCk7CiAKIAkvKiBDcmVhdGUgYSBRdWVyeURlc2MsIHJlZGlyZWN0aW5nIG91dHB1dCB0 byBvdXIgdHVwbGUgcmVjZWl2ZXIgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxh biwgcXVlcnlTdHJpbmcsCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIE5VTEws IHF1ZXJ5U3RyaW5nLAogCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNo b3QsCiAJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YwppbmRleCBmN2YxOGQzMDU0Li5kZTdiZjdjYTY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMK QEAgLTc5LDcgKzc5LDcgQEAgRXhlY3V0b3JFbmRfaG9va190eXBlIEV4ZWN1dG9yRW5kX2hvb2sg PSBOVUxMOwogRXhlY3V0b3JDaGVja1Blcm1zX2hvb2tfdHlwZSBFeGVjdXRvckNoZWNrUGVybXNf aG9vayA9IE5VTEw7CiAKIC8qIGRlY2xzIGZvciBsb2NhbCByb3V0aW5lcyBvbmx5IHVzZWQgd2l0 aGluIHRoaXMgbW9kdWxlICovCi1zdGF0aWMgdm9pZCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5 RGVzYywgaW50IGVmbGFncyk7CitzdGF0aWMgYm9vbCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5 RGVzYywgaW50IGVmbGFncyk7CiBzdGF0aWMgdm9pZCBDaGVja1ZhbGlkUm93TWFya1JlbChSZWxh dGlvbiByZWwsIFJvd01hcmtUeXBlIG1hcmtUeXBlKTsKIHN0YXRpYyB2b2lkIEV4ZWNQb3N0cHJv Y2Vzc1BsYW4oRVN0YXRlICplc3RhdGUpOwogc3RhdGljIHZvaWQgRXhlY0VuZFBsYW4oUGxhblN0 YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlKTsKQEAgLTI2Myw3ICsyNjMsNyBAQCBzdGFu ZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCS8q CiAJICogSW5pdGlhbGl6ZSB0aGUgcGxhbiBzdGF0ZSB0cmVlCiAJICovCi0JSW5pdFBsYW4ocXVl cnlEZXNjLCBlZmxhZ3MpOworCSh2b2lkKSBJbml0UGxhbihxdWVyeURlc2MsIGVmbGFncyk7CiAK IAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiB9CkBAIC04MjksOSArODI5LDEz IEBAIEV4ZWNDaGVja1hhY3RSZWFkT25seShQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQpCiAgKgog ICoJCUluaXRpYWxpemVzIHRoZSBxdWVyeSBwbGFuOiBvcGVuIGZpbGVzLCBhbGxvY2F0ZSBzdG9y YWdlCiAgKgkJYW5kIHN0YXJ0IHVwIHRoZSBydWxlIG1hbmFnZXIKKyAqCisgKiBSZXR1cm5zIHRy dWUgaWYgdGhlIHBsYW4gdHJlZSBpcyBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZWQgZm9yIGV4ZWN1 dGlvbiwKKyAqIGZhbHNlIG90aGVyd2lzZS4gIFRoZSBsYXR0ZXIgY2FzZSBtYXkgb2NjdXIgaWYg dGhlIENhY2hlZFBsYW4gdGhhdCBwcm92aWRlcworICogdGhlIHBsYW4gdHJlZSAocXVlcnlEZXNj LT5jcGxhbikgZ290IGludmFsaWRhdGVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24uCiAgKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgKi8KLXN0YXRpYyB2b2lkCitzdGF0aWMgYm9vbAogSW5pdFBsYW4oUXVlcnlEZXNj ICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiB7CiAJQ21kVHlwZQkJb3BlcmF0aW9uID0gcXVlcnlE ZXNjLT5vcGVyYXRpb247CkBAIC04MzksMTEgKzg0MywxNCBAQCBJbml0UGxhbihRdWVyeURlc2Mg KnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAlQbGFuCSAgICpwbGFuID0gcGxhbm5lZHN0bXQtPnBs YW5UcmVlOwogCUxpc3QJICAgKnJhbmdlVGFibGUgPSBwbGFubmVkc3RtdC0+cnRhYmxlOwogCUVT dGF0ZQkgICAqZXN0YXRlID0gcXVlcnlEZXNjLT5lc3RhdGU7Ci0JUGxhblN0YXRlICAqcGxhbnN0 YXRlOwotCVR1cGxlRGVzYwl0dXBUeXBlOworCVBsYW5TdGF0ZSAgKnBsYW5zdGF0ZSA9IE5VTEw7 CisJVHVwbGVEZXNjCXR1cFR5cGUgPSBOVUxMOwogCUxpc3RDZWxsICAgKmw7CiAJaW50CQkJaTsK IAorCUFzc2VydChxdWVyeURlc2MtPnBsYW5zdGF0ZSA9PSBOVUxMKTsKKwlBc3NlcnQocXVlcnlE ZXNjLT50dXBEZXNjID09IE5VTEwpOworCiAJLyoKIAkgKiBEbyBwZXJtaXNzaW9ucyBjaGVja3MK IAkgKi8KQEAgLTg1NSw2ICs4NjIsNyBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywg aW50IGVmbGFncykKIAlFeGVjSW5pdFJhbmdlVGFibGUoZXN0YXRlLCByYW5nZVRhYmxlLCBwbGFu bmVkc3RtdC0+cGVybUluZm9zKTsKIAogCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBwbGFubmVk c3RtdDsKKwllc3RhdGUtPmVzX2NhY2hlZHBsYW4gPSBxdWVyeURlc2MtPmNwbGFuOwogCiAJLyoK IAkgKiBOZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJyYXkgZnJvbSB0aGUgUGxhblJvd01h cmsocyksIGlmIGFueS4KQEAgLTg4Niw2ICs4OTQsOCBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1 ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJCQljYXNlIFJPV19NQVJLX0tFWVNIQVJFOgogCQkJCWNh c2UgUk9XX01BUktfUkVGRVJFTkNFOgogCQkJCQlyZWxhdGlvbiA9IEV4ZWNHZXRSYW5nZVRhYmxl UmVsYXRpb24oZXN0YXRlLCByYy0+cnRpKTsKKwkJCQkJaWYgKHVubGlrZWx5KHJlbGF0aW9uID09 IE5VTEwpKQorCQkJCQkJcmV0dXJuIGZhbHNlOwogCQkJCQlicmVhazsKIAkJCQljYXNlIFJPV19N QVJLX0NPUFk6CiAJCQkJCS8qIG5vIHBoeXNpY2FsIHRhYmxlIGFjY2VzcyBpcyByZXF1aXJlZCAq LwpAQCAtOTU2LDYgKzk2Niw4IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQg ZWZsYWdzKQogCiAJCWVzdGF0ZS0+ZXNfc3VicGxhbnN0YXRlcyA9IGxhcHBlbmQoZXN0YXRlLT5l c19zdWJwbGFuc3RhdGVzLAogCQkJCQkJCQkJCSAgIHN1YnBsYW5zdGF0ZSk7CisJCWlmICh1bmxp a2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQkJcmV0dXJuIGZhbHNlOwogCiAJ CWkrKzsKIAl9CkBAIC05NjYsNiArOTc4LDggQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURl c2MsIGludCBlZmxhZ3MpCiAJICogcHJvY2Vzc2luZyB0dXBsZXMuCiAJICovCiAJcGxhbnN0YXRl ID0gRXhlY0luaXROb2RlKHBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4 ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIGZhbHNlOwogCiAJLyoKIAkgKiBH ZXQgdGhlIHR1cGxlIGRlc2NyaXB0b3IgZGVzY3JpYmluZyB0aGUgdHlwZSBvZiB0dXBsZXMgdG8g cmV0dXJuLgpAQCAtMTAwOSw2ICsxMDIzLDggQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURl c2MsIGludCBlZmxhZ3MpCiAKIAlxdWVyeURlc2MtPnR1cERlc2MgPSB0dXBUeXBlOwogCXF1ZXJ5 RGVzYy0+cGxhbnN0YXRlID0gcGxhbnN0YXRlOworCisJcmV0dXJuIHRydWU7CiB9CiAKIC8qCkBA IC0yODU4LDcgKzI4NzQsOCBAQCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUs IFBsYW4gKnBsYW5UcmVlKQogCSAqIENoaWxkIEVQUSBFU3RhdGVzIHNoYXJlIHRoZSBwYXJlbnQn cyBjb3B5IG9mIHVuY2hhbmdpbmcgc3RhdGUgc3VjaCBhcwogCSAqIHRoZSBzbmFwc2hvdCwgcmFu Z2V0YWJsZSwgYW5kIGV4dGVybmFsIFBhcmFtIGluZm8uICBUaGV5IG5lZWQgdGhlaXIgb3duCiAJ ICogY29waWVzIG9mIGxvY2FsIHN0YXRlLCBpbmNsdWRpbmcgYSB0dXBsZSB0YWJsZSwgZXNfcGFy YW1fZXhlY192YWxzLAotCSAqIHJlc3VsdC1yZWwgaW5mbywgZXRjLgorCSAqIHJlc3VsdC1yZWwg aW5mbywgZXRjLiAgQWxzbywgd2UgZG9uJ3QgcGFzcyB0aGUgcGFyZW50J3QgY29weSBvZiB0aGUK KwkgKiBDYWNoZWRQbGFuLCBiZWNhdXNlIG5vIG5ldyBsb2NrcyB3aWxsIGJlIHRha2VuIGZvciBF dmFsUGxhblF1YWwoKS4KIAkgKi8KIAlyY2VzdGF0ZS0+ZXNfZGlyZWN0aW9uID0gRm9yd2FyZFNj YW5EaXJlY3Rpb247CiAJcmNlc3RhdGUtPmVzX3NuYXBzaG90ID0gcGFyZW50ZXN0YXRlLT5lc19z bmFwc2hvdDsKQEAgLTI5NDcsNiArMjk2NCwxMyBAQCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0 ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCQlzdWJwbGFuc3RhdGUgPSBFeGVjSW5pdE5v ZGUoc3VicGxhbiwgcmNlc3RhdGUsIDApOwogCQlyY2VzdGF0ZS0+ZXNfc3VicGxhbnN0YXRlcyA9 IGxhcHBlbmQocmNlc3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMsCiAJCQkJCQkJCQkJCSBzdWJwbGFu c3RhdGUpOworCisJCS8qCisJCSAqIEFsbCB0aGUgbmVjZXNzYXJ5IGxvY2tzIG11c3QgYWxyZWFk eSBoYXZlIGJlZW4gdGFrZW4gd2hlbgorCQkgKiBpbml0aWFsaXppbmcgdGhlIHBhcmVudCdzIGNv cHkgb2Ygc3VicGxhbnN0YXRlLCBzbyB0aGUgQ2FjaGVkUGxhbiwKKwkJICogaWYgYW55LCBzaG91 bGQgbm90IGhhdmUgYmVjb21lIGludmFsaWQgZHVyaW5nIEV4ZWNJbml0Tm9kZSgpLgorCQkgKi8K KwkJQXNzZXJ0KEV4ZWNQbGFuU3RpbGxWYWxpZChyY2VzdGF0ZSkpOwogCX0KIAogCS8qCkBAIC0y OTg4LDYgKzMwMTIsOSBAQCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBs YW4gKnBsYW5UcmVlKQogCSAqLwogCWVwcXN0YXRlLT5yZWNoZWNrcGxhbnN0YXRlID0gRXhlY0lu aXROb2RlKHBsYW5UcmVlLCByY2VzdGF0ZSwgMCk7CiAKKwkvKiBTZWUgdGhlIGNvbW1lbnQgYWJv dmUuICovCisJQXNzZXJ0KEV4ZWNQbGFuU3RpbGxWYWxpZChyY2VzdGF0ZSkpOworCiAJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJh bGxlbC5jCmluZGV4IGNjMmI4Y2NhYjcuLjQ1N2VlNDZmYWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJhbGxlbC5jCkBAIC0xMjQ4LDggKzEyNDgsMTUgQEAgRXhlY1BhcmFsbGVsR2V0UXVlcnlE ZXNjKHNobV90b2MgKnRvYywgRGVzdFJlY2VpdmVyICpyZWNlaXZlciwKIAlwYXJhbXNwYWNlID0g c2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfUEFSQU1MSVNUSU5GTywgZmFsc2UpOwog CXBhcmFtTEkgPSBSZXN0b3JlUGFyYW1MaXN0KCZwYXJhbXNwYWNlKTsKIAotCS8qIENyZWF0ZSBh IFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5LiAqLworCS8qCisJICogU2V0IHVwIGEgUXVlcnlEZXNj IGZvciB0aGUgcXVlcnkuIFdoaWxlIHRoZSBsZWFkZXIgbWlnaHQndmUgc291cmNlZAorCSAqIHRo ZSBwbGFuIHRyZWUgZnJvbSBhIENhY2hlZFBsYW4sIHdlIGRvbid0IGhhdmUgb25lIGhlcmUuIFRo aXMgaXNuJ3QKKwkgKiBhbiBpc3N1ZSBzaW5jZSB0aGUgbGVhZGVyIGVuc3VyZWQgdGhlIHJlcXVp cmVkIGxvY2tzLCBtYWtpbmcgb3VyCisJICogcGxhbiB0cmVlIHZhbGlkLiBFdmVuIGFzIHdlIGdl dCBvdXIgb3duIGxvY2sgY29waWVzIGluCisJICogRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbigp LCB0aGV5J3JlIGFsbCBhbHJlYWR5IGhlbGQgYnkgdGhlIGxlYWRlci4KKwkgKi8KIAlyZXR1cm4g Q3JlYXRlUXVlcnlEZXNjKHBzdG10LAorCQkJCQkJICAgTlVMTCwKIAkJCQkJCSAgIHF1ZXJ5U3Ry aW5nLAogCQkJCQkJICAgR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJ CQkJICAgcmVjZWl2ZXIsIHBhcmFtTEksIE5VTEwsIGluc3RydW1lbnRfb3B0aW9ucyk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCmluZGV4IDYwOThjZGNhNjkuLmYyMjY0YzdkODQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCkBAIC0xMzYsNiArMTM2LDEwIEBAIHN0YXRp YyBib29sIEV4ZWNTaHV0ZG93bk5vZGVfd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29u dGV4dCk7CiAgKgkJICAnZWZsYWdzJyBpcyBhIGJpdHdpc2UgT1Igb2YgZmxhZyBiaXRzIGRlc2Ny aWJlZCBpbiBleGVjdXRvci5oCiAgKgogICoJCVJldHVybnMgYSBQbGFuU3RhdGUgbm9kZSBjb3Jy ZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBQbGFuIG5vZGUuCisgKgorICoJCUNhbGxlcnMgc2hvdWxk IGNoZWNrIHVwb24gcmV0dXJuaW5nIHRoYXQgRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkKKyAq CQlyZXR1cm5zIHRydWUgYmVmb3JlIGNvbnRpbnVpbmcgZnVydGhlciB3aXRoIGl0cyBwcm9jZXNz aW5nLCBiZWNhdXNlIHRoZQorICoJCXJldHVybmVkIFBsYW5TdGF0ZSBtaWdodCBiZSBvbmx5IHBh cnRpYWxseSB2YWxpZCBvdGhlcndpc2UuCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogUGxhblN0 YXRlICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKaW5kZXggZjU1NDI0ZWI1YS4uN2U0NTJlZDc0 MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKQEAgLTgzOCw2ICs4MzgsNyBAQCBwb3N0cXVl bF9zdGFydChleGVjdXRpb25fc3RhdGUgKmVzLCBTUUxGdW5jdGlvbkNhY2hlUHRyIGZjYWNoZSkK IAkJZGVzdCA9IE5vbmVfUmVjZWl2ZXI7CiAKIAllcy0+cWQgPSBDcmVhdGVRdWVyeURlc2MoZXMt PnN0bXQsCisJCQkJCQkJIE5VTEwsCS8qIGZtZ3Jfc3FsKCkgZG9lc24ndCB1c2UgQ2FjaGVkUGxh bnMgKi8KIAkJCQkJCQkgZmNhY2hlLT5zcmMsCiAJCQkJCQkJIEdldEFjdGl2ZVNuYXBzaG90KCks CiAJCQkJCQkJIEludmFsaWRTbmFwc2hvdCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVBZ2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYwppbmRleCBhZjIy YjE2NzZmLi41OTdkNjgxMzllIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCkBAIC0zMzA0LDYgKzMz MDQsOCBAQCBFeGVjSW5pdEFnZyhBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCQllZmxhZ3MgJj0gfkVYRUNfRkxBR19SRVdJTkQ7CiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFu KG5vZGUpOwogCW91dGVyUGxhblN0YXRlKGFnZ3N0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBs YW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChl c3RhdGUpKSkKKwkJcmV0dXJuIGFnZ3N0YXRlOwogCiAJLyoKIAkgKiBpbml0aWFsaXplIHNvdXJj ZSB0dXBsZSB0eXBlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVu ZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCmluZGV4IGEyYWYyMjFlMDUu LjUzY2E5ZGM4NWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKQEAgLTE4NSw4ICsxODUs MTAgQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIAlhcHBlbmRzdGF0ZS0+cHMucmVzdWx0b3Bzc2V0ID0gdHJ1ZTsKIAlhcHBlbmRzdGF0 ZS0+cHMucmVzdWx0b3BzZml4ZWQgPSBmYWxzZTsKIAotCWFwcGVuZHBsYW5zdGF0ZXMgPSAoUGxh blN0YXRlICoqKSBwYWxsb2MobnBsYW5zICoKLQkJCQkJCQkJCQkJIHNpemVvZihQbGFuU3RhdGUg KikpOworCWFwcGVuZHBsYW5zdGF0ZXMgPSAoUGxhblN0YXRlICoqKSBwYWxsb2MwKG5wbGFucyAq CisJCQkJCQkJCQkJCSAgc2l6ZW9mKFBsYW5TdGF0ZSAqKSk7CisJYXBwZW5kc3RhdGUtPmFwcGVu ZHBsYW5zID0gYXBwZW5kcGxhbnN0YXRlczsKKwlhcHBlbmRzdGF0ZS0+YXNfbnBsYW5zID0gbnBs YW5zOwogCiAJLyoKIAkgKiBjYWxsIEV4ZWNJbml0Tm9kZSBvbiBlYWNoIG9mIHRoZSB2YWxpZCBw bGFucyB0byBiZSBleGVjdXRlZCBhbmQgc2F2ZQpAQCAtMjIxLDExICsyMjMsMTEgQEAgRXhlY0lu aXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCWZp cnN0dmFsaWQgPSBqOwogCiAJCWFwcGVuZHBsYW5zdGF0ZXNbaisrXSA9IEV4ZWNJbml0Tm9kZShp bml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCQlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKSkKKwkJCXJldHVybiBhcHBlbmRzdGF0ZTsKIAl9CiAKIAlhcHBlbmRzdGF0 ZS0+YXNfZmlyc3RfcGFydGlhbF9wbGFuID0gZmlyc3R2YWxpZDsKLQlhcHBlbmRzdGF0ZS0+YXBw ZW5kcGxhbnMgPSBhcHBlbmRwbGFuc3RhdGVzOwotCWFwcGVuZHN0YXRlLT5hc19ucGxhbnMgPSBu cGxhbnM7CiAKIAkvKiBJbml0aWFsaXplIGFzeW5jIHN0YXRlICovCiAJYXBwZW5kc3RhdGUtPmFz X2FzeW5jcGxhbnMgPSBhc3luY3BsYW5zOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUJpdG1hcEFuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5j CmluZGV4IDRhYmIwNjA5YTAuLjc1NTZiZTcxM2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVCaXRtYXBBbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0 bWFwQW5kLmMKQEAgLTg5LDYgKzg5LDggQEAgRXhlY0luaXRCaXRtYXBBbmQoQml0bWFwQW5kICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAl7CiAJCWluaXROb2RlID0gKFBsYW4g KikgbGZpcnN0KGwpOwogCQliaXRtYXBwbGFuc3RhdGVzW2ldID0gRXhlY0luaXROb2RlKGluaXRO b2RlLCBlc3RhdGUsIGVmbGFncyk7CisJCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlk KGVzdGF0ZSkpKQorCQkJcmV0dXJuIGJpdG1hcGFuZHN0YXRlOwogCQlpKys7CiAJfQogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCmluZGV4IGQzZjU4YzIyZjkuLmYx ZjhlMTZiMTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFw c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCkBA IC03NzAsMTEgKzc3MCwxNSBAQCBFeGVjSW5pdEJpdG1hcEhlYXBTY2FuKEJpdG1hcEhlYXBTY2Fu ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBvcGVuIHRoZSBzY2FuIHJl bGF0aW9uCiAJICovCiAJY3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0 YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIHNjYW5zdGF0ZTsKIAogCS8qCiAJICog aW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKHNjYW5zdGF0ZSkg PSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVu bGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBzY2Fuc3RhdGU7 CiAKIAkvKgogCSAqIGdldCB0aGUgc2NhbiB0eXBlIGZyb20gdGhlIHJlbGF0aW9uIGRlc2NyaXB0 b3IuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jCmluZGV4IGFjZTE4NTkzYWEuLjdkMmJm NDVkOWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jCkBAIC05MCw2ICs5MCw4IEBA IEV4ZWNJbml0Qml0bWFwT3IoQml0bWFwT3IgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCXsKIAkJaW5pdE5vZGUgPSAoUGxhbiAqKSBsZmlyc3QobCk7CiAJCWJpdG1hcHBsYW5z dGF0ZXNbaV0gPSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwkJaWYg KHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCQlyZXR1cm4gYml0bWFw b3JzdGF0ZTsKIAkJaSsrOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUN1c3RvbS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5jCmluZGV4IDI4 YjViYjkzNTMuLmEwYmVmYmQwYzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVDdXN0b20uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMKQEAgLTYx LDYgKzYxLDggQEAgRXhlY0luaXRDdXN0b21TY2FuKEN1c3RvbVNjYW4gKmNzY2FuLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAlpZiAoc2NhbnJlbGlkID4gMCkKIAl7CiAJCXNjYW5fcmVs ID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBzY2FucmVsaWQsIGVmbGFncyk7CisJCWlm ICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQkJcmV0dXJuIGNzczsK IAkJY3NzLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPSBzY2FuX3JlbDsKIAl9CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMKaW5kZXggM2FiYTI4Mjg1YS4uMzM2YWNmZjcxOSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMKQEAgLTE3Myw2ICsxNzMsOCBA QCBFeGVjSW5pdEZvcmVpZ25TY2FuKEZvcmVpZ25TY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAlpZiAoc2NhbnJlbGlkID4gMCkKIAl7CiAJCWN1cnJlbnRSZWxhdGlvbiA9 IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgc2NhbnJlbGlkLCBlZmxhZ3MpOworCQlpZiAo dW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJCXJldHVybiBzY2Fuc3Rh dGU7CiAJCXNjYW5zdGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3VycmVudFJlbGF0aW9u OwogCQlmZHdyb3V0aW5lID0gR2V0RmR3Um91dGluZUZvclJlbGF0aW9uKGN1cnJlbnRSZWxhdGlv biwgdHJ1ZSk7CiAJfQpAQCAtMjY0LDYgKzI2Niw4IEBAIEV4ZWNJbml0Rm9yZWlnblNjYW4oRm9y ZWlnblNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWlmIChvdXRlclBs YW4obm9kZSkpCiAJCW91dGVyUGxhblN0YXRlKHNjYW5zdGF0ZSkgPQogCQkJRXhlY0luaXROb2Rl KG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1Bs YW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gc2NhbnN0YXRlOwogCiAJLyoKIAkgKiBU ZWxsIHRoZSBGRFcgdG8gaW5pdGlhbGl6ZSB0aGUgc2Nhbi4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRo ZXIuYwppbmRleCAxYTNjOGFiZGFkLi5jNTI0MDIyYzA0IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdh dGhlci5jCkBAIC04OSw2ICs4OSw4IEBAIEV4ZWNJbml0R2F0aGVyKEdhdGhlciAqbm9kZSwgRVN0 YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJOb2RlID0gb3V0ZXJQbGFuKG5v ZGUpOwogCW91dGVyUGxhblN0YXRlKGdhdGhlcnN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlck5v ZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChl c3RhdGUpKSkKKwkJcmV0dXJuIGdhdGhlcnN0YXRlOwogCXR1cERlc2MgPSBFeGVjR2V0UmVzdWx0 VHlwZShvdXRlclBsYW5TdGF0ZShnYXRoZXJzdGF0ZSkpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUdhdGhlck1lcmdlLmMKaW5kZXggYzZmYjQ1ZmVlMC4uNjc2ZmFhYmVmNSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMKQEAgLTEwOCw2ICsxMDgsOCBAQCBFeGVj SW5pdEdhdGhlck1lcmdlKEdhdGhlck1lcmdlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIAkgKi8KIAlvdXRlck5vZGUgPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3Rh dGUoZ21fc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyTm9kZSwgZXN0YXRlLCBlZmxhZ3MpOwor CWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gZ21f c3RhdGU7CiAKIAkvKgogCSAqIExlYWRlciBtYXkgYWNjZXNzIEV4ZWNQcm9jTm9kZSByZXN1bHQg ZGlyZWN0bHkgKGlmCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCmluZGV4IDZkZmU1YTFkMjMuLmVm YTFjNDRhYjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCkBAIC0xODUsNiArMTg1LDggQEAg RXhlY0luaXRHcm91cChHcm91cCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ ICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKGdycHN0YXRl KSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAo dW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIGdycHN0YXRl OwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHNjYW4gc2xvdCBhbmQgdHlwZS4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSGFzaC5jCmluZGV4IDg4YmEzMzY4ODIuLjFhNGJkNTUwNGUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUhhc2guYwpAQCAtMzg2LDYgKzM4Niw4IEBAIEV4ZWNJbml0SGFzaChIYXNoICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIGNoaWxkIG5vZGVzCiAJICov CiAJb3V0ZXJQbGFuU3RhdGUoaGFzaHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9k ZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChl c3RhdGUpKSkKKwkJcmV0dXJuIGhhc2hzdGF0ZTsKIAogCS8qCiAJICogaW5pdGlhbGl6ZSBvdXIg cmVzdWx0IHNsb3QgYW5kIHR5cGUuIE5vIG5lZWQgdG8gYnVpbGQgcHJvamVjdGlvbgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlSGFzaGpvaW4uYwppbmRleCA2ZGM0M2I5ZmYyLi5jMDkxOTA3NGIwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4uYwpAQCAtNzUyLDggKzc1MiwxMiBAQCBFeGVjSW5p dEhhc2hKb2luKEhhc2hKb2luICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlo YXNoTm9kZSA9IChIYXNoICopIGlubmVyUGxhbihub2RlKTsKIAogCW91dGVyUGxhblN0YXRlKGhq c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyTm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1 bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gaGpzdGF0ZTsK IAlvdXRlckRlc2MgPSBFeGVjR2V0UmVzdWx0VHlwZShvdXRlclBsYW5TdGF0ZShoanN0YXRlKSk7 CiAJaW5uZXJQbGFuU3RhdGUoaGpzdGF0ZSkgPSBFeGVjSW5pdE5vZGUoKFBsYW4gKikgaGFzaE5v ZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChl c3RhdGUpKSkKKwkJcmV0dXJuIGhqc3RhdGU7CiAJaW5uZXJEZXNjID0gRXhlY0dldFJlc3VsdFR5 cGUoaW5uZXJQbGFuU3RhdGUoaGpzdGF0ZSkpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmNyZW1lbnRhbFNvcnQuYwppbmRleCAyOGEwZTgxY2IzLi42MjFmZmFmZTAyIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCkBAIC0xMDQxLDYgKzEw NDEsOCBAQCBFeGVjSW5pdEluY3JlbWVudGFsU29ydChJbmNyZW1lbnRhbFNvcnQgKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIG5vZGVzIG1heSBiZSBhYmxlIHRvIGRvIHNv bWV0aGluZyBtb3JlIHVzZWZ1bC4KIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShpbmNyc29ydHN0YXRl KSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAo dW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIGluY3Jzb3J0 c3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBlLgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKaW5kZXggMWYzODQzYWJlOS4uYzU1NWMx NDg4OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCkBAIC00OTUs NiArNDk1LDggQEAgRXhlY0luaXRJbmRleE9ubHlTY2FuKEluZGV4T25seVNjYW4gKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIG9wZW4gdGhlIHNjYW4gcmVsYXRpb24KIAkg Ki8KIAljdXJyZW50UmVsYXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIG5vZGUt PnNjYW4uc2NhbnJlbGlkLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZh bGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gaW5kZXhzdGF0ZTsKIAogCWluZGV4c3RhdGUtPnNzLnNz X2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRSZWxhdGlvbjsKIAlpbmRleHN0YXRlLT5zcy5zc19j dXJyZW50U2NhbkRlc2MgPSBOVUxMOwkvKiBubyBoZWFwIHNjYW4gaGVyZSAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluZGV4c2Nhbi5jCmluZGV4IDMyZTE3MTRmMTUuLmEzYmQxZjdmYjAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKQEAgLTkwOCw2ICs5MDgsOCBAQCBFeGVjSW5p dEluZGV4U2NhbihJbmRleFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CSAqIG9wZW4gdGhlIHNjYW4gcmVsYXRpb24KIAkgKi8KIAljdXJyZW50UmVsYXRpb24gPSBFeGVj T3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlZmxhZ3MpOwor CWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gaW5k ZXhzdGF0ZTsKIAogCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRS ZWxhdGlvbjsKIAlpbmRleHN0YXRlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOwkvKiBu byBoZWFwIHNjYW4gaGVyZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUxpbWl0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwppbmRleCBhOTdiYWM5 ZjZkLi5hYjEzM2YxNTgwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGlt aXQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwpAQCAtNDc2LDYgKzQ3 Niw4IEBAIEV4ZWNJbml0TGltaXQoTGltaXQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCSAqLwogCW91dGVyUGxhbiA9IG91dGVyUGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0 ZShsaW1pdHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsK KwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIGxp bWl0c3RhdGU7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgY2hpbGQgZXhwcmVzc2lvbnMKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKaW5kZXggMjZmYmU5NWM1Ny4uZTFlZjc2ODU3MSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKQEAgLTMyMiw2ICszMjIsOCBAQCBFeGVjSW5p dExvY2tSb3dzKExvY2tSb3dzICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkg KiB0aGVuIGluaXRpYWxpemUgb3V0ZXIgcGxhbgogCSAqLwogCW91dGVyUGxhblN0YXRlKGxyc3Rh dGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxp a2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gbHJzdGF0ZTsKIAog CS8qIG5vZGUgcmV0dXJucyB1bm1vZGlmaWVkIHNsb3RzIGZyb20gdGhlIG91dGVyIHBsYW4gKi8K IAlscnN0YXRlLT5wcy5yZXN1bHRvcHNzZXQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0 ZXJpYWwuYwppbmRleCAwM2M1MTQ5MDBiLi5jMzhlZWYwOTlkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTWF0ZXJpYWwuYwpAQCAtMjE0LDYgKzIxNCw4IEBAIEV4ZWNJbml0TWF0ZXJpYWwoTWF0ZXJp YWwgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJb3V0ZXJQbGFuID0gb3V0 ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKG1hdHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShv dXRlclBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIG1hdHN0YXRlOwogCiAJLyoKIAkgKiBJbml0aWFsaXpl IHJlc3VsdCB0eXBlIGFuZCBzbG90LiBObyBuZWVkIHRvIGluaXRpYWxpemUgcHJvamVjdGlvbiBp bmZvCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYwppbmRleCBlZTQ3NDljODUyLi5hNmJmNjYw MjljIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKQEAgLTkzOCw2ICs5MzgsOCBAQCBF eGVjSW5pdE1lbW9pemUoTWVtb2l6ZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiAKIAlvdXRlck5vZGUgPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUobXN0YXRl KSA9IEV4ZWNJbml0Tm9kZShvdXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtl bHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIG1zdGF0ZTsKIAogCS8q CiAJICogSW5pdGlhbGl6ZSByZXR1cm4gc2xvdCBhbmQgdHlwZS4gTm8gbmVlZCB0byBpbml0aWFs aXplIHByb2plY3Rpb24gaW5mbwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU1lcmdlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwpp bmRleCAwYTQyYTA0YjE5Li41MmMzZWRmMjc4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTWVyZ2VBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVy Z2VBcHBlbmQuYwpAQCAtMTIwLDcgKzEyMCw3IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VB cHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQltZXJnZXN0YXRlLT5t c19wcnVuZV9zdGF0ZSA9IE5VTEw7CiAJfQogCi0JbWVyZ2VwbGFuc3RhdGVzID0gKFBsYW5TdGF0 ZSAqKikgcGFsbG9jKG5wbGFucyAqIHNpemVvZihQbGFuU3RhdGUgKikpOworCW1lcmdlcGxhbnN0 YXRlcyA9IChQbGFuU3RhdGUgKiopIHBhbGxvYzAobnBsYW5zICogc2l6ZW9mKFBsYW5TdGF0ZSAq KSk7CiAJbWVyZ2VzdGF0ZS0+bWVyZ2VwbGFucyA9IG1lcmdlcGxhbnN0YXRlczsKIAltZXJnZXN0 YXRlLT5tc19ucGxhbnMgPSBucGxhbnM7CiAKQEAgLTE1MSw2ICsxNTEsOCBAQCBFeGVjSW5pdE1l cmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykK IAkJUGxhbgkgICAqaW5pdE5vZGUgPSAoUGxhbiAqKSBsaXN0X250aChub2RlLT5tZXJnZXBsYW5z LCBpKTsKIAogCQltZXJnZXBsYW5zdGF0ZXNbaisrXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwg ZXN0YXRlLCBlZmxhZ3MpOworCQlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3Rh dGUpKSkKKwkJCXJldHVybiBtZXJnZXN0YXRlOwogCX0KIAogCW1lcmdlc3RhdGUtPnBzLnBzX1By b2pJbmZvID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJn ZWpvaW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYwppbmRleCA0ZDdk NzNhNjg0Li42MzRjNmQ5ZmU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWVyZ2Vqb2luLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCkBA IC0xNDkwLDExICsxNDkwLDE1IEBAIEV4ZWNJbml0TWVyZ2VKb2luKE1lcmdlSm9pbiAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJbWVyZ2VzdGF0ZS0+bWpfU2tpcE1hcmtSZXN0 b3JlID0gbm9kZS0+c2tpcF9tYXJrX3Jlc3RvcmU7CiAKIAlvdXRlclBsYW5TdGF0ZShtZXJnZXN0 YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlp ZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIG1lcmdl c3RhdGU7CiAJb3V0ZXJEZXNjID0gRXhlY0dldFJlc3VsdFR5cGUob3V0ZXJQbGFuU3RhdGUobWVy Z2VzdGF0ZSkpOwogCWlubmVyUGxhblN0YXRlKG1lcmdlc3RhdGUpID0gRXhlY0luaXROb2RlKGlu bmVyUGxhbihub2RlKSwgZXN0YXRlLAogCQkJCQkJCQkJCQkgIG1lcmdlc3RhdGUtPm1qX1NraXBN YXJrUmVzdG9yZSA/CiAJCQkJCQkJCQkJCSAgZWZsYWdzIDoKIAkJCQkJCQkJCQkJICAoZWZsYWdz IHwgRVhFQ19GTEFHX01BUkspKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChl c3RhdGUpKSkKKwkJcmV0dXJuIG1lcmdlc3RhdGU7CiAJaW5uZXJEZXNjID0gRXhlY0dldFJlc3Vs dFR5cGUoaW5uZXJQbGFuU3RhdGUobWVyZ2VzdGF0ZSkpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggZWEwNDNjNTdjMS4uOTVkOTA5YzFkMCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTM5ODUsNiArMzk4NSwxMyBAQCBF eGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncykKIAkJCQkJCQkgICBsaW5pdGlhbF9pbnQobm9kZS0+cmVzdWx0UmVsYXRpb25zKSk7 CiAJfQogCisJLyoKKwkgKiBFeGVjSW5pdFJlc3VsdFJlbGF0aW9uKCkgbWF5IGhhdmUgcmV0dXJu ZWQgd2l0aG91dCBpbml0aWFsaXppbmcKKwkgKiByb290UmVzdWx0UmVsSW5mbyBpZiB0aGUgcGxh biBnb3QgaW52YWxpZGF0ZWQsIHNvIGNoZWNrLgorCSAqLworCWlmICh1bmxpa2VseSghRXhlY1Bs YW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gbXRzdGF0ZTsKKwogCS8qIHNldCB1cCBl cHFzdGF0ZSB3aXRoIGR1bW15IHN1YnBsYW4gZGF0YSBmb3IgdGhlIG1vbWVudCAqLwogCUV2YWxQ bGFuUXVhbEluaXQoJm10c3RhdGUtPm10X2VwcXN0YXRlLCBlc3RhdGUsIE5VTEwsIE5JTCwKIAkJ CQkJIG5vZGUtPmVwcVBhcmFtLCBub2RlLT5yZXN1bHRSZWxhdGlvbnMpOwpAQCAtNDAxMyw2ICs0 MDIwLDEwIEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCQl7CiAJCQlFeGVjSW5pdFJlc3VsdFJlbGF0aW9uKGVzdGF0 ZSwgcmVzdWx0UmVsSW5mbywgcmVzdWx0UmVsYXRpb24pOwogCisJCQkvKiBTZWUgdGhlIGNvbW1l bnQgYWJvdmUuICovCisJCQlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KSkKKwkJCQlyZXR1cm4gbXRzdGF0ZTsKKwogCQkJLyoKIAkJCSAqIEZvciBjaGlsZCByZXN1bHQg cmVsYXRpb25zLCBzdG9yZSB0aGUgcm9vdCByZXN1bHQgcmVsYXRpb24KIAkJCSAqIHBvaW50ZXIu ICBXZSBkbyBzbyBmb3IgdGhlIGNvbnZlbmllbmNlIG9mIHBsYWNlcyB0aGF0IHdhbnQgdG8KQEAg LTQwMzksNiArNDA1MCw4IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIE5vdyB3ZSBtYXkgaW5pdGlhbGl6ZSB0 aGUgc3VicGxhbi4KIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShtdHN0YXRlKSA9IEV4ZWNJbml0Tm9k ZShzdWJwbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxs VmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBtdHN0YXRlOwogCiAJLyoKIAkgKiBEbyBhZGRpdGlv bmFsIHBlci1yZXN1bHQtcmVsYXRpb24gaW5pdGlhbGl6YXRpb24uCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVOZXN0bG9vcC5jCmluZGV4IDc2ZTAyNDQ5ZjUuLjY0YTI0Y2I5NjUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVOZXN0bG9vcC5jCkBAIC0yOTUsMTEgKzI5NSwxNSBAQCBFeGVjSW5pdE5lc3RMb29w KE5lc3RMb29wICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiB2YWx1ZXMu CiAJICovCiAJb3V0ZXJQbGFuU3RhdGUobmxzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFu KG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFs aWQoZXN0YXRlKSkpCisJCXJldHVybiBubHN0YXRlOwogCWlmIChub2RlLT5uZXN0UGFyYW1zID09 IE5JTCkKIAkJZWZsYWdzIHw9IEVYRUNfRkxBR19SRVdJTkQ7CiAJZWxzZQogCQllZmxhZ3MgJj0g fkVYRUNfRkxBR19SRVdJTkQ7CiAJaW5uZXJQbGFuU3RhdGUobmxzdGF0ZSkgPSBFeGVjSW5pdE5v ZGUoaW5uZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBubHN0YXRlOwogCiAJLyoKIAkgKiBJ bml0aWFsaXplIHJlc3VsdCBzbG90LCB0eXBlIGFuZCBwcm9qZWN0aW9uLgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVQcm9qZWN0U2V0LmMKaW5kZXggZTliOTY0MTZkMy4uNzA2Y2MyM2EyMSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jCkBAIC0yNDcsNiArMjQ3LDggQEAgRXhlY0lu aXRQcm9qZWN0U2V0KFByb2plY3RTZXQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCSAqIGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShzdGF0 ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYg KHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBzdGF0ZTsK IAogCS8qCiAJICogd2UgZG9uJ3QgdXNlIGlubmVyIHBsYW4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVJlY3Vyc2l2ZXVuaW9uLmMKaW5kZXggZjZkNjBiY2Q2Yy4uMjdkYzMxOGFjYiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKQEAgLTI0NCw3ICsyNDQsMTEg QEAgRXhlY0luaXRSZWN1cnNpdmVVbmlvbihSZWN1cnNpdmVVbmlvbiAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91 dGVyUGxhblN0YXRlKHJ1c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0 YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkp KQorCQlyZXR1cm4gcnVzdGF0ZTsKIAlpbm5lclBsYW5TdGF0ZShydXN0YXRlKSA9IEV4ZWNJbml0 Tm9kZShpbm5lclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4 ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIHJ1c3RhdGU7CiAKIAkvKgogCSAq IElmIGhhc2hpbmcsIHByZWNvbXB1dGUgZm1nciBsb29rdXAgZGF0YSBmb3IgaW5uZXIgbG9vcCwg YW5kIGNyZWF0ZSB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1 bHQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYwppbmRleCBmMTU5MDJlODQw Li42ODIwZDNiZmQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0 LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCkBAIC0yMDgsNiArMjA4 LDggQEAgRXhlY0luaXRSZXN1bHQoUmVzdWx0ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIAkgKiBpbml0aWFsaXplIGNoaWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUo cmVzc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3Mp OworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4g cmVzc3RhdGU7CiAKIAkvKgogCSAqIHdlIGRvbid0IHVzZSBpbm5lciBwbGFuCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVNhbXBsZXNjYW4uYwppbmRleCBhNjgxMzU1OWU2Li4wMjA1MWZlYTUxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMKQEAgLTEyNSw2ICsxMjUsOCBAQCBFeGVj SW5pdFNhbXBsZVNjYW4oU2FtcGxlU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJCUV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwKIAkJCQkJCQkgbm9kZS0+c2Nhbi5z Y2FucmVsaWQsCiAJCQkJCQkJIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxs VmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBzY2Fuc3RhdGU7CiAKIAkvKiB3ZSB3b24ndCBzZXQg dXAgdGhlIEhlYXBTY2FuRGVzYyB0aWxsIGxhdGVyICovCiAJc2NhbnN0YXRlLT5zcy5zc19jdXJy ZW50U2NhbkRlc2MgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVNlcXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKaW5kZXggOTEx MjY2ZGEwNy4uOWUzZWY5NDM4OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVNlcXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC0x NTMsNiArMTUzLDggQEAgRXhlY0luaXRTZXFTY2FuKFNlcVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCQlFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsCiAJCQkJCQkJ IG5vZGUtPnNjYW4uc2NhbnJlbGlkLAogCQkJCQkJCSBlZmxhZ3MpOworCWlmICh1bmxpa2VseSgh RXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gc2NhbnN0YXRlOwogCiAJLyog YW5kIGNyZWF0ZSBzbG90IHdpdGggdGhlIGFwcHJvcHJpYXRlIHJvd3R5cGUgKi8KIAlFeGVjSW5p dFNjYW5UdXBsZVNsb3QoZXN0YXRlLCAmc2NhbnN0YXRlLT5zcywKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNl dE9wLmMKaW5kZXggNWMyODYxZDI0My4uNDc1YWY0ZGYyNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNl dE9wLmMKQEAgLTUyOCw2ICs1MjgsOCBAQCBFeGVjSW5pdFNldE9wKFNldE9wICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlpZiAobm9kZS0+c3RyYXRlZ3kgPT0gU0VUT1BfSEFT SEVEKQogCQllZmxhZ3MgJj0gfkVYRUNfRkxBR19SRVdJTkQ7CiAJb3V0ZXJQbGFuU3RhdGUoc2V0 b3BzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7 CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBz ZXRvcHN0YXRlOwogCW91dGVyRGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKG91dGVyUGxhblN0YXRl KHNldG9wc3RhdGUpKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlU29ydC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYwppbmRleCBjOGEzNWI2 NGE4Li45ZGU3MTdhYTdjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29y dC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKQEAgLTI2Myw2ICsyNjMs OCBAQCBFeGVjSW5pdFNvcnQoU29ydCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiAJZWZsYWdzICY9IH4oRVhFQ19GTEFHX1JFV0lORCB8IEVYRUNfRkxBR19CQUNLV0FSRCB8IEVY RUNfRkxBR19NQVJLKTsKIAogCW91dGVyUGxhblN0YXRlKHNvcnRzdGF0ZSkgPSBFeGVjSW5pdE5v ZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBzb3J0c3RhdGU7CiAKIAkvKgogCSAq IEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1 YnF1ZXJ5c2Nhbi5jCmluZGV4IDkxZDdhZTgyY2UuLmQ5YzEwZDFmNmYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMKQEAgLTEyNCw2ICsxMjQsOCBAQCBFeGVjSW5pdFN1 YnF1ZXJ5U2NhbihTdWJxdWVyeVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCSAqIGluaXRpYWxpemUgc3VicXVlcnkKIAkgKi8KIAlzdWJxdWVyeXN0YXRlLT5zdWJwbGFu ID0gRXhlY0luaXROb2RlKG5vZGUtPnN1YnBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5s aWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIHN1YnF1ZXJ5c3Rh dGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBlIChuZWVkZWQgYnkg RXhlY0Fzc2lnblNjYW5Qcm9qZWN0aW9uSW5mbykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRy YW5nZXNjYW4uYwppbmRleCA5MTQ3ZTRhZmE4Li5hNzQ4MmFlZTUwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCkBAIC0zNzgsNiArMzc4LDggQEAgRXhlY0luaXRUaWRS YW5nZVNjYW4oVGlkUmFuZ2VTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykK IAkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJY3VycmVudFJlbGF0aW9uID0gRXhl Y09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZsYWdzKTsK KwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIHRp ZHJhbmdlc3RhdGU7CiAKIAl0aWRyYW5nZXN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPSBj dXJyZW50UmVsYXRpb247CiAJdGlkcmFuZ2VzdGF0ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0g TlVMTDsJLyogbm8gdGFibGUgc2NhbiBoZXJlICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlVGlkc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4u YwppbmRleCA3NGVjNmFmZGNjLi42NTc0MTFlZjE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlVGlkc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRz Y2FuLmMKQEAgLTUyMyw2ICs1MjMsOCBAQCBFeGVjSW5pdFRpZFNjYW4oVGlkU2NhbiAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUgc2NhbiByZWxhdGlvbgog CSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9k ZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxs VmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiB0aWRzdGF0ZTsKIAogCXRpZHN0YXRlLT5zcy5zc19j dXJyZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRpb247CiAJdGlkc3RhdGUtPnNzLnNzX2N1cnJl bnRTY2FuRGVzYyA9IE5VTEw7IC8qIG5vIGhlYXAgc2NhbiBoZXJlICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlVW5pcXVlLmMKaW5kZXggMTNjNTU2MzI2YS4uZWUzMDY4ODQxNyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVVbmlxdWUuYwpAQCAtMTM2LDYgKzEzNiw4IEBAIEV4ZWNJbml0VW5pcXVlKFVuaXF1ZSAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogdGhlbiBpbml0aWFsaXplIG91 dGVyIHBsYW4KIAkgKi8KIAlvdXRlclBsYW5TdGF0ZSh1bmlxdWVzdGF0ZSkgPSBFeGVjSW5pdE5v ZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiB1bmlxdWVzdGF0ZTsKIAogCS8qCiAJ ICogSW5pdGlhbGl6ZSByZXN1bHQgc2xvdCBhbmQgdHlwZS4gVW5pcXVlIG5vZGVzIGRvIG5vIHBy b2plY3Rpb25zLCBzbwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRv d0FnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCmluZGV4IGM0YzZm MDA5YmEuLjEyNDZkNzkxOWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVX aW5kb3dBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKQEAg LTI0NjEsNiArMjQ2MSw4IEBAIEV4ZWNJbml0V2luZG93QWdnKFdpbmRvd0FnZyAqbm9kZSwgRVN0 YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFuKG5v ZGUpOwogCW91dGVyUGxhblN0YXRlKHdpbnN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4s IGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3Rh dGUpKSkKKwkJcmV0dXJuIHdpbnN0YXRlOwogCiAJLyoKIAkgKiBpbml0aWFsaXplIHNvdXJjZSB0 dXBsZSB0eXBlICh3aGljaCBpcyBhbHNvIHRoZSB0dXBsZSB0eXBlIHRoYXQgd2UnbGwKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv c3BpLmMKaW5kZXggMzM5NzU2ODdiMy4uZjJjY2E4MDdlZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKQEAgLTI2 NjgsNiArMjY2OCw3IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3Qg U1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQkJCXNuYXAgPSBJbnZhbGlkU25hcHNob3Q7 CiAKIAkJCQlxZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LAorCQkJCQkJCQkJCU5VTEwsCiAJ CQkJCQkJCQkJcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nLAogCQkJCQkJCQkJCXNuYXAsIGNyb3Nz Y2hlY2tfc25hcHNob3QsCiAJCQkJCQkJCQkJZGVzdCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3Rjb3AvcHF1ZXJ5LmMgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCmluZGV4IDU1NjVmMjAw YzMuLjRlZjM0OWRmOGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKKysr IGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwpAQCAtNjUsNiArNjUsNyBAQCBzdGF0aWMgdm9p ZCBEb1BvcnRhbFJld2luZChQb3J0YWwgcG9ydGFsKTsKICAqLwogUXVlcnlEZXNjICoKIENyZWF0 ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJQ2FjaGVkUGxhbiAqY3Bs YW4sCiAJCQkJY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQlTbmFwc2hvdCBzbmFwc2hvdCwK IAkJCQlTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90LApAQCAtNzcsNiArNzgsNyBAQCBDcmVh dGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAogCiAJcWQtPm9wZXJhdGlvbiA9 IHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZTsJLyogb3BlcmF0aW9uICovCiAJcWQtPnBsYW5uZWRz dG10ID0gcGxhbm5lZHN0bXQ7CS8qIHBsYW4gKi8KKwlxZC0+Y3BsYW4gPSBjcGxhbjsJCQkJLyog Q2FjaGVkUGxhbiwgaWYgcGxhbiBpcyBmcm9tIG9uZSAqLwogCXFkLT5zb3VyY2VUZXh0ID0gc291 cmNlVGV4dDsJLyogcXVlcnkgdGV4dCAqLwogCXFkLT5zbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNo b3Qoc25hcHNob3QpOwkvKiBzbmFwc2hvdCAqLwogCS8qIFJJIGNoZWNrIHNuYXBzaG90ICovCkBA IC0xNDUsNyArMTQ3LDcgQEAgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLAogCS8qCiAJ ICogQ3JlYXRlIHRoZSBRdWVyeURlc2Mgb2JqZWN0CiAJICovCi0JcXVlcnlEZXNjID0gQ3JlYXRl UXVlcnlEZXNjKHBsYW4sIHNvdXJjZVRleHQsCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNj KHBsYW4sIE5VTEwsIHNvdXJjZVRleHQsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIElu dmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgMCk7CiAKQEAg LTQ5Myw2ICs0OTUsNyBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZv IHBhcmFtcywKIAkJCQkgKiB0aGUgZGVzdGluYXRpb24gdG8gRGVzdE5vbmUuCiAJCQkJICovCiAJ CQkJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKGxpbml0aWFsX25vZGUoUGxhbm5lZFN0bXQs IHBvcnRhbC0+c3RtdHMpLAorCQkJCQkJCQkJCQlOVUxMLAogCQkJCQkJCQkJCQlwb3J0YWwtPnNv dXJjZVRleHQsCiAJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJCQkJCUlu dmFsaWRTbmFwc2hvdCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNj LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCmluZGV4IGFmMmJmMzZkZmIuLjRi NzM2OGEwZGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKKysr IGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaApAQCAtMzIsOSArMzIsMTIgQEAKICAq LwogdHlwZWRlZiBzdHJ1Y3QgUXVlcnlEZXNjCiB7CisJTm9kZVRhZwkJdHlwZTsKKwogCS8qIFRo ZXNlIGZpZWxkcyBhcmUgcHJvdmlkZWQgYnkgQ3JlYXRlUXVlcnlEZXNjICovCiAJQ21kVHlwZQkJ b3BlcmF0aW9uOwkJLyogQ01EX1NFTEVDVCwgQ01EX1VQREFURSwgZXRjLiAqLwogCVBsYW5uZWRT dG10ICpwbGFubmVkc3RtdDsJLyogcGxhbm5lcidzIG91dHB1dCAoY291bGQgYmUgdXRpbGl0eSwg dG9vKSAqLworCXN0cnVjdCBDYWNoZWRQbGFuICpjcGxhbjsJLyogQ2FjaGVkUGxhbiwgaWYgcGxh bm5lZHN0bXQgaXMgZnJvbSBvbmUgKi8KIAljb25zdCBjaGFyICpzb3VyY2VUZXh0OwkJLyogc291 cmNlIHRleHQgb2YgdGhlIHF1ZXJ5ICovCiAJU25hcHNob3QJc25hcHNob3Q7CQkvKiBzbmFwc2hv dCB0byB1c2UgZm9yIHF1ZXJ5ICovCiAJU25hcHNob3QJY3Jvc3NjaGVja19zbmFwc2hvdDsJLyog Y3Jvc3NjaGVjayBmb3IgUkkgdXBkYXRlL2RlbGV0ZSAqLwpAQCAtNTcsNiArNjAsNyBAQCB0eXBl ZGVmIHN0cnVjdCBRdWVyeURlc2MKIAogLyogaW4gcHF1ZXJ5LmMgKi8KIGV4dGVybiBRdWVyeURl c2MgKkNyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJCQkJCSAg c3RydWN0IENhY2hlZFBsYW4gKmNwbGFuLAogCQkJCQkJCQkgIGNvbnN0IGNoYXIgKnNvdXJjZVRl eHQsCiAJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQkJCSAgU25hcHNob3QgY3Jv c3NjaGVja19zbmFwc2hvdCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1 dG9yLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4IGFlZWJlMGUwZmYu LjcyY2JmMTIwYzUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgK KysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApAQCAtMTksNiArMTksNyBAQAog I2luY2x1ZGUgIm5vZGVzL2xvY2tvcHRpb25zLmgiCiAjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rl cy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcGxhbmNh Y2hlLmgiCiAKIAogLyoKQEAgLTI1Niw2ICsyNTcsMTUgQEAgZXh0ZXJuIHZvaWQgRXhlY0VuZE5v ZGUoUGxhblN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNTaHV0ZG93bk5vZGUoUGxhblN0 YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNTZXRUdXBsZUJvdW5kKGludDY0IHR1cGxlc19u ZWVkZWQsIFBsYW5TdGF0ZSAqY2hpbGRfbm9kZSk7CiAKKy8qCisgKiBJcyB0aGUgQ2FjaGVkUGxh biBpbiBlc19jYWNoZWRwbGFuIHN0aWxsIHZhbGlkPworICovCitzdGF0aWMgaW5saW5lIGJvb2wK K0V4ZWNQbGFuU3RpbGxWYWxpZChFU3RhdGUgKmVzdGF0ZSkKK3sKKwlyZXR1cm4gZXN0YXRlLT5l c19jYWNoZWRwbGFuID09IE5VTEwgPyB0cnVlIDoKKwkJQ2FjaGVkUGxhblN0aWxsVmFsaWQoZXN0 YXRlLT5lc19jYWNoZWRwbGFuKTsKK30KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNQcm9jTm9kZQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaAppbmRleCBjYjcxNGY0YTE5Li44NDZlYjMyYTFkIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaApAQCAtNjIzLDYgKzYyMyw4IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCQkJ CQkJCQkJCSAqIEV4ZWNSb3dNYXJrcywgb3IgTlVMTCBpZiBub25lICovCiAJTGlzdAkgICAqZXNf cnRlcGVybWluZm9zOwkvKiBMaXN0IG9mIFJURVBlcm1pc3Npb25JbmZvICovCiAJUGxhbm5lZFN0 bXQgKmVzX3BsYW5uZWRzdG10OwkvKiBsaW5rIHRvIHRvcCBvZiBwbGFuIHRyZWUgKi8KKwlzdHJ1 Y3QgQ2FjaGVkUGxhbiAgKmVzX2NhY2hlZHBsYW47CS8qIENhY2hlZFBsYW4gaWYgcGxhbm5lZHN0 bXQgaXMgZnJvbQorCQkJCQkJCQkJCSAqIG9uZSwgb3IgTlVMTCBpZiBub3QgKi8KIAljb25zdCBj aGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9tIFF1ZXJ5RGVzYyAqLwogCiAJ SnVua0ZpbHRlciAqZXNfanVua0ZpbHRlcjsJLyogdG9wLWxldmVsIGp1bmsgZmlsdGVyLCBpZiBh bnkgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKaW5kZXggOTE2ZTU5ZDlmZS4uMGE5ZTA0MWQ1MSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvcGxhbmNhY2hlLmgKQEAgLTIyMSw2ICsyMjEsMjAgQEAgZXh0ZXJuIENhY2hlZFBsYW4g KkdldENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkJIFBh cmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJCQkJCQkJCSBSZXNvdXJjZU93bmVyIG93bmVyLAog CQkJCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOworCisvKgorICogQ2FjaGVkUGxh blN0aWxsVmFsaWQKKyAqCQlSZXR1cm5zIGlmIGEgY2FjaGVkIGdlbmVyaWMgcGxhbiBpcyBzdGls bCB2YWxpZAorICoKKyAqIEludm9rZWQgYnkgdGhlIGV4ZWN1dG9yIGZvciBlYWNoIHJlbGF0aW9u IGxvY2sgYWNxdWlyZWQgZHVyaW5nIHRoZQorICogaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBsYW4g dHJlZSB3aXRoaW4gdGhlIENhY2hlZFBsYW4uCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorQ2Fj aGVkUGxhblN0aWxsVmFsaWQoQ2FjaGVkUGxhbiAqY3BsYW4pCit7CisJcmV0dXJuIGNwbGFuLT5p c192YWxpZDsKK30KKwogZXh0ZXJuIHZvaWQgUmVsZWFzZUNhY2hlZFBsYW4oQ2FjaGVkUGxhbiAq cGxhbiwgUmVzb3VyY2VPd25lciBvd25lcik7CiAKIGV4dGVybiBib29sIENhY2hlZFBsYW5BbGxv d3NTaW1wbGVWYWxpZGl0eUNoZWNrKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCi0tIAoy LjM1LjMKCg== --00000000000041b1e2060642be90 Content-Type: application/octet-stream; name="v47-0001-Remove-obsolete-executor-cleanup-code.patch" Content-Disposition: attachment; filename="v47-0001-Remove-obsolete-executor-cleanup-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ln0bz7va8 RnJvbSBlMDE1YmE3OThiNGI5MmJjNTE0MmNhOTRiYWFmMTJhMWNkYTA4OWQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1MjozOSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ3 IDEvOV0gUmVtb3ZlIG9ic29sZXRlIGV4ZWN1dG9yIGNsZWFudXAgY29kZQoKVGhpcyBjb21taXQg cmVtb3ZlcyB1bm5lY2Vzc2FyeSBFeGVjRXhwckZyZWVDb250ZXh0KCkgY2FsbHMgaW4gRXhlY0Vu ZCoKcm91dGluZXMgYXMgdGhlIGFjdHVhbCBjbGVhbnVwIGlzIG1hbmFnZWQgYnkgRnJlZUV4ZWN1 dG9yU3RhdGUuIFdpdGgKbm8gcmVtYWluaW5nIGNhbGxlcnMgZm9yIEV4ZWNFeHByRnJlZUNvbnRl eHQoKSwgdGhpcyBjb21taXQgYWxzbwpyZW1vdmVzIHRoZSBmdW5jdGlvbi4KClRoaXMgY29tbWl0 IGFsc28gZHJvcHMgcmVkdW5kYW50IEV4ZWNDbGVhclR1cGxlKCkgY2FsbHMsIGFzCkV4ZWNSZXNl dFR1cGxlVGFibGUoKSBpbiBFeGVjRW5kUGxhbigpIGFscmVhZHkgdGFrZXMgY2FyZSBvZiByZXNl dHRpbmcKYWxsIFR1cGxlVGFibGVTbG90cyBpbml0aWFsaXplZCB3aXRoIEV4ZWNJbml0U2NhblR1 cGxlU2xvdCgpIGFuZApFeGVjSW5pdEV4dHJhVHVwbGVTbG90KCkuCgpBZnRlciB0aGVzZSBtb2Rp ZmljYXRpb25zLCB0aGUgRXhlY0VuZCooKSByb3V0aW5lcyBmb3IgVmFsdWVzU2NhbiwKTmFtZWRU dXBsZXN0b3JlU2NhbiwgYW5kIFdvcmtUYWJsZVNjYW4gYmVjYW1lIHJlZHVuZGFudC4gVGh1cywg dGhpcwpjb21taXQgcmVtb3ZlcyB0aGVtLgoKUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzCkRpc2N1 c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0ErSGl3cUZHa01TZ2U2VGdDOUtRemRlMG9ocEF5 Y0xRdVY3b29pdEVFcGJLQjBPX21nQG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1Byb2Nub2RlLmMgICAgICAgICAgIHwgMTggKysrKystLS0tLS0tLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgICAgICAgICAgICAgIHwgMjYgLS0tLS0tLS0tLS0t LS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jICAgICAgICAgICAgICAgIHwg MTAgLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgICAg IHwgMTIgLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2Fu LmMgICAgfCAgOCAtLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdGVzY2FuLmMgICAg ICAgICAgICB8IDEyIC0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5j ICAgICAgICAgICAgIHwgIDcgLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWdu c2Nhbi5jICAgICAgICB8ICA4IC0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZ1bmN0 aW9uc2Nhbi5jICAgICAgIHwgMTUgLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVHYXRoZXIuYyAgICAgICAgICAgICB8ICAzIC0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUdhdGhlck1lcmdlLmMgICAgICAgIHwgIDMgLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl R3JvdXAuYyAgICAgICAgICAgICAgfCAgNSAtLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SGFzaC5jICAgICAgICAgICAgICAgfCAgNSAtLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SGFzaGpvaW4uYyAgICAgICAgICAgfCAxMiAtLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmNyZW1lbnRhbFNvcnQuYyAgICB8ICA1IC0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmRleG9ubHlzY2FuLmMgICAgICB8IDE2IC0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jICAgICAgICAgIHwgMTYgLS0tLS0tLS0tLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYyAgICAgICAgICAgICAgfCAgMSAtCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYyAgICAgICAgICAgfCAgNSAtLS0tCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jICAgICAgICAgICAgfCAgOSAtLS0tLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMgICAgICAgICAgfCAxMiAtLS0tLS0tLS0K IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgICB8IDExIC0tLS0t LS0tCiAuLi4vZXhlY3V0b3Ivbm9kZU5hbWVkdHVwbGVzdG9yZXNjYW4uYyAgICAgICAgfCAyMiAt LS0tLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYyAgICAg ICAgICAgfCAxMSAtLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQu YyAgICAgICAgIHwgMTAgLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5j ICAgICAgICAgICAgIHwgMTAgLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBs ZXNjYW4uYyAgICAgICAgIHwgMTIgLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U2Vxc2Nhbi5jICAgICAgICAgICAgfCAxMiAtLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVTZXRPcC5jICAgICAgICAgICAgICB8ICA0IC0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVNvcnQuYyAgICAgICAgICAgICAgIHwgIDcgLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVTdWJxdWVyeXNjYW4uYyAgICAgICB8IDEyIC0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYyAgICAgIHwgMTIgLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMgICAgICAgfCAxMiAtLS0tLS0tLS0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMgICAgICAgICAgICB8IDEyIC0tLS0tLS0tLQog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jICAgICAgICAgICAgIHwgIDUgLS0tLQog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVZhbHVlc3NjYW4uYyAgICAgICAgIHwgMjQgLS0tLS0t LS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyAgICAgICAg ICB8IDE3IC0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdvcmt0YWJsZXNj YW4uYyAgICAgIHwgMjIgLS0tLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y3V0b3IuaCAgICAgICAgICAgICAgIHwgIDEgLQogLi4uL2V4ZWN1dG9yL25vZGVOYW1lZHR1cGxl c3RvcmVzY2FuLmggICAgICAgIHwgIDEgLQogc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVZhbHVl c3NjYW4uaCAgICAgICAgIHwgIDEgLQogc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVdvcmt0YWJs ZXNjYW4uaCAgICAgIHwgIDEgLQogNDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA0 MjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1By b2Nub2RlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYwppbmRleCA0ZDI4 OGJjOGQ0Li42MDk4Y2RjYTY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UHJvY25vZGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYwpAQCAt NjY3LDIyICs2NjcsMTAgQEAgRXhlY0VuZE5vZGUoUGxhblN0YXRlICpub2RlKQogCQkJRXhlY0Vu ZFRhYmxlRnVuY1NjYW4oKFRhYmxlRnVuY1NjYW5TdGF0ZSAqKSBub2RlKTsKIAkJCWJyZWFrOwog Ci0JCWNhc2UgVF9WYWx1ZXNTY2FuU3RhdGU6Ci0JCQlFeGVjRW5kVmFsdWVzU2NhbigoVmFsdWVz U2NhblN0YXRlICopIG5vZGUpOwotCQkJYnJlYWs7Ci0KIAkJY2FzZSBUX0N0ZVNjYW5TdGF0ZToK IAkJCUV4ZWNFbmRDdGVTY2FuKChDdGVTY2FuU3RhdGUgKikgbm9kZSk7CiAJCQlicmVhazsKIAot CQljYXNlIFRfTmFtZWRUdXBsZXN0b3JlU2NhblN0YXRlOgotCQkJRXhlY0VuZE5hbWVkVHVwbGVz dG9yZVNjYW4oKE5hbWVkVHVwbGVzdG9yZVNjYW5TdGF0ZSAqKSBub2RlKTsKLQkJCWJyZWFrOwot Ci0JCWNhc2UgVF9Xb3JrVGFibGVTY2FuU3RhdGU6Ci0JCQlFeGVjRW5kV29ya1RhYmxlU2Nhbigo V29ya1RhYmxlU2NhblN0YXRlICopIG5vZGUpOwotCQkJYnJlYWs7Ci0KIAkJY2FzZSBUX0ZvcmVp Z25TY2FuU3RhdGU6CiAJCQlFeGVjRW5kRm9yZWlnblNjYW4oKEZvcmVpZ25TY2FuU3RhdGUgKikg bm9kZSk7CiAJCQlicmVhazsKQEAgLTc1Nyw2ICs3NDUsMTIgQEAgRXhlY0VuZE5vZGUoUGxhblN0 YXRlICpub2RlKQogCQkJRXhlY0VuZExpbWl0KChMaW1pdFN0YXRlICopIG5vZGUpOwogCQkJYnJl YWs7CiAKKwkJLyogTm8gY2xlYW4gdXAgYWN0aW9ucyBmb3IgdGhlc2Ugbm9kZXMuICovCisJCWNh c2UgVF9WYWx1ZXNTY2FuU3RhdGU6CisJCWNhc2UgVF9OYW1lZFR1cGxlc3RvcmVTY2FuU3RhdGU6 CisJCWNhc2UgVF9Xb3JrVGFibGVTY2FuU3RhdGU6CisJCQlicmVhazsKKwogCQlkZWZhdWx0Ogog CQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBub2RlIHR5cGU6ICVkIiwgKGludCkgbm9kZVRh Zyhub2RlKSk7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKaW5kZXggYzA2YjIy ODg1OC4uMTY3MDRjMGMyZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0 aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKQEAgLTYzOCwzMiAr NjM4LDYgQEAgdGxpc3RfbWF0Y2hlc190dXBkZXNjKFBsYW5TdGF0ZSAqcHMsIExpc3QgKnRsaXN0 LCBpbnQgdmFybm8sIFR1cGxlRGVzYyB0dXBkZXNjKQogCXJldHVybiB0cnVlOwogfQogCi0vKiAt LS0tLS0tLS0tLS0tLS0tCi0gKgkJRXhlY0ZyZWVFeHByQ29udGV4dAotICoKLSAqIEEgcGxhbiBu b2RlJ3MgRXhwckNvbnRleHQgc2hvdWxkIGJlIGZyZWVkIGV4cGxpY2l0bHkgZHVyaW5nIGV4ZWN1 dG9yCi0gKiBzaHV0ZG93biBiZWNhdXNlIHRoZXJlIG1heSBiZSBzaHV0ZG93biBjYWxsYmFja3Mg dG8gY2FsbC4gIChPdGhlciByZXNvdXJjZXMKLSAqIG1hZGUgYnkgdGhlIGFib3ZlIHJvdXRpbmVz LCBzdWNoIGFzIHByb2plY3Rpb24gaW5mbywgZG9uJ3QgbmVlZCB0byBiZSBmcmVlZAotICogZXhw bGljaXRseSBiZWNhdXNlIHRoZXkncmUganVzdCBtZW1vcnkgaW4gdGhlIHBlci1xdWVyeSBtZW1v cnkgY29udGV4dC4pCi0gKgotICogSG93ZXZlciAuLi4gdGhlcmUgaXMgbm8gcGFydGljdWxhciBu ZWVkIHRvIGRvIGl0IGR1cmluZyBFeGVjRW5kTm9kZSwKLSAqIGJlY2F1c2UgRnJlZUV4ZWN1dG9y U3RhdGUgd2lsbCBmcmVlIGFueSByZW1haW5pbmcgRXhwckNvbnRleHRzIHdpdGhpbgotICogdGhl IEVTdGF0ZS4gIExldHRpbmcgRnJlZUV4ZWN1dG9yU3RhdGUgZG8gaXQgYWxsb3dzIHRoZSBFeHBy Q29udGV4dHMgdG8KLSAqIGJlIGZyZWVkIGluIHJldmVyc2Ugb3JkZXIgb2YgY3JlYXRpb24sIHJh dGhlciB0aGFuIG9yZGVyIG9mIGNyZWF0aW9uIGFzCi0gKiB3aWxsIGhhcHBlbiBpZiB3ZSBkZWxl dGUgdGhlbSBoZXJlLCB3aGljaCBzYXZlcyBPKE5eMikgd29yayBpbiB0aGUgbGlzdAotICogY2xl YW51cCBpbnNpZGUgRnJlZUV4cHJDb250ZXh0LgotICogLS0tLS0tLS0tLS0tLS0tLQotICovCi12 b2lkCi1FeGVjRnJlZUV4cHJDb250ZXh0KFBsYW5TdGF0ZSAqcGxhbnN0YXRlKQotewotCS8qCi0J ICogUGVyIGFib3ZlIGRpc2N1c3Npb24sIGRvbid0IGFjdHVhbGx5IGRlbGV0ZSB0aGUgRXhwckNv bnRleHQuIFdlIGRvCi0JICogdW5saW5rIGl0IGZyb20gdGhlIHBsYW4gbm9kZSwgdGhvdWdoLgot CSAqLwotCXBsYW5zdGF0ZS0+cHNfRXhwckNvbnRleHQgPSBOVUxMOwotfQotCiAKIC8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAqCQkJCSAgU2NhbiBub2RlIHN1cHBvcnQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVBZ2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYwppbmRleCA0 NjhkYjk0ZmU1Li5mMTU0ZjI4OTAyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCkBAIC00MzU3LDE2 ICs0MzU3LDYgQEAgRXhlY0VuZEFnZyhBZ2dTdGF0ZSAqbm9kZSkKIAlpZiAobm9kZS0+aGFzaGNv bnRleHQpCiAJCVJlU2NhbkV4cHJDb250ZXh0KG5vZGUtPmhhc2hjb250ZXh0KTsKIAotCS8qCi0J ICogV2UgZG9uJ3QgYWN0dWFsbHkgZnJlZSBhbnkgRXhwckNvbnRleHRzIGhlcmUgKHNlZSBjb21t ZW50IGluCi0JICogRXhlY0ZyZWVFeHByQ29udGV4dCksIGp1c3QgdW5saW5raW5nIHRoZSBvdXRw dXQgb25lIGZyb20gdGhlIHBsYW4gbm9kZQotCSAqIHN1ZmZpY2VzLgotCSAqLwotCUV4ZWNGcmVl RXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQotCS8qIGNsZWFuIHVwIHR1cGxlIHRhYmxlICov Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci0KIAlvdXRlclBs YW4gPSBvdXRlclBsYW5TdGF0ZShub2RlKTsKIAlFeGVjRW5kTm9kZShvdXRlclBsYW4pOwogfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwppbmRleCBmMzVkZjBiOGJm Li4yZGIwYWNmYzc2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFw SGVhcHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4u YwpAQCAtNjU1LDE4ICs2NTUsNiBAQCBFeGVjRW5kQml0bWFwSGVhcFNjYW4oQml0bWFwSGVhcFNj YW5TdGF0ZSAqbm9kZSkKIAkgKi8KIAlzY2FuRGVzYyA9IG5vZGUtPnNzLnNzX2N1cnJlbnRTY2Fu RGVzYzsKIAotCS8qCi0JICogRnJlZSB0aGUgZXhwcmNvbnRleHQKLQkgKi8KLQlFeGVjRnJlZUV4 cHJDb250ZXh0KCZub2RlLT5zcy5wcyk7Ci0KLQkvKgotCSAqIGNsZWFyIG91dCB0dXBsZSB0YWJs ZSBzbG90cwotCSAqLwotCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCi0JCUV4 ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFy VHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci0KIAkvKgogCSAqIGNsb3NlIGRvd24g c3VicGxhbnMKIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRt YXBJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4u YwppbmRleCA4M2VjOWVkZTg5Li43Y2Y4NTMyYmM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUJpdG1hcEluZGV4c2Nhbi5jCkBAIC0xODQsMTQgKzE4NCw2IEBAIEV4ZWNFbmRCaXRtYXBJ bmRleFNjYW4oQml0bWFwSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAJaW5kZXhSZWxhdGlvbkRlc2Mg PSBub2RlLT5iaXNzX1JlbGF0aW9uRGVzYzsKIAlpbmRleFNjYW5EZXNjID0gbm9kZS0+Ymlzc19T Y2FuRGVzYzsKIAotCS8qCi0JICogRnJlZSB0aGUgZXhwcmNvbnRleHQgLi4uIG5vdyBkZWFkIGNv ZGUsIHNlZSBFeGVjRnJlZUV4cHJDb250ZXh0Ci0JICovCi0jaWZkZWYgTk9UX1VTRUQKLQlpZiAo bm9kZS0+Ymlzc19SdW50aW1lQ29udGV4dCkKLQkJRnJlZUV4cHJDb250ZXh0KG5vZGUtPmJpc3Nf UnVudGltZUNvbnRleHQsIHRydWUpOwotI2VuZGlmCi0KIAkvKgogCSAqIGNsb3NlIHRoZSBpbmRl eCByZWxhdGlvbiAobm8tb3AgaWYgd2UgZGlkbid0IG9wZW4gaXQpCiAJICovCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3Rlc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUN0ZXNjYW4uYwppbmRleCBjYzRjNDI0M2UyLi5hMGMwYzRiZTMzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3Rlc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVDdGVzY2FuLmMKQEAgLTI4NywxOCArMjg3LDYgQEAgRXhlY0luaXRDdGVTY2Fu KEN0ZVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogdm9pZAogRXhlY0Vu ZEN0ZVNjYW4oQ3RlU2NhblN0YXRlICpub2RlKQogewotCS8qCi0JICogRnJlZSBleHByY29udGV4 dAotCSAqLwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQotCS8qCi0JICog Y2xlYW4gb3V0IHRoZSB0dXBsZSB0YWJsZQotCSAqLwotCWlmIChub2RlLT5zcy5wcy5wc19SZXN1 bHRUdXBsZVNsb3QpCi0JCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxl U2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci0KIAkv KgogCSAqIElmIEkgYW0gdGhlIGxlYWRlciwgZnJlZSB0aGUgdHVwbGVzdG9yZS4KIAkgKi8KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdXN0b20uYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVDdXN0b20uYwppbmRleCBiZDQyYzY1YjI5Li4yOGI1YmI5MzUzIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5jCkBAIC0xMjksMTMgKzEyOSw2IEBAIEV4ZWNFbmRDdXN0 b21TY2FuKEN1c3RvbVNjYW5TdGF0ZSAqbm9kZSkKIHsKIAlBc3NlcnQobm9kZS0+bWV0aG9kcy0+ RW5kQ3VzdG9tU2NhbiAhPSBOVUxMKTsKIAlub2RlLT5tZXRob2RzLT5FbmRDdXN0b21TY2FuKG5v ZGUpOwotCi0JLyogRnJlZSB0aGUgZXhwcmNvbnRleHQgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0 KCZub2RlLT5zcy5wcyk7Ci0KLQkvKiBDbGVhbiBvdXQgdGhlIHR1cGxlIHRhYmxlICovCi0JRXhl Y0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJU dXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlRm9yZWlnbnNjYW4uYwppbmRleCBjMjEzOWFjY2EwLi43MzkxM2ViYjE4IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYwpAQCAtMzEyLDE0ICszMTIsNiBAQCBF eGVjRW5kRm9yZWlnblNjYW4oRm9yZWlnblNjYW5TdGF0ZSAqbm9kZSkKIAkvKiBTaHV0IGRvd24g YW55IG91dGVyIHBsYW4uICovCiAJaWYgKG91dGVyUGxhblN0YXRlKG5vZGUpKQogCQlFeGVjRW5k Tm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7Ci0KLQkvKiBGcmVlIHRoZSBleHByY29udGV4dCAq LwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQotCS8qIGNsZWFuIG91dCB0 aGUgdHVwbGUgdGFibGUgKi8KLQlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KQot CQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCUV4ZWND bGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogfQogCiAvKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRnVuY3Rpb25zY2FuLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlRnVuY3Rpb25zY2FuLmMKaW5kZXggZGQwNmVmOGFlZS4uMmRk ZGJjZGExNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZ1bmN0aW9uc2Nh bi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGdW5jdGlvbnNjYW4uYwpAQCAtNTIz LDE4ICs1MjMsNiBAQCBFeGVjRW5kRnVuY3Rpb25TY2FuKEZ1bmN0aW9uU2NhblN0YXRlICpub2Rl KQogewogCWludAkJCWk7CiAKLQkvKgotCSAqIEZyZWUgdGhlIGV4cHJjb250ZXh0Ci0JICovCi0J RXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwotCi0JLyoKLQkgKiBjbGVhbiBvdXQg dGhlIHR1cGxlIHRhYmxlCi0JICovCi0JaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xv dCkKLQkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlF eGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKLQogCS8qCiAJICogUmVs ZWFzZSBzbG90cyBhbmQgdHVwbGVzdG9yZSByZXNvdXJjZXMKIAkgKi8KQEAgLTU0Miw5ICs1MzAs NiBAQCBFeGVjRW5kRnVuY3Rpb25TY2FuKEZ1bmN0aW9uU2NhblN0YXRlICpub2RlKQogCXsKIAkJ RnVuY3Rpb25TY2FuUGVyRnVuY1N0YXRlICpmcyA9ICZub2RlLT5mdW5jc3RhdGVzW2ldOwogCi0J CWlmIChmcy0+ZnVuY19zbG90KQotCQkJRXhlY0NsZWFyVHVwbGUoZnMtPmZ1bmNfc2xvdCk7Ci0K IAkJaWYgKGZzLT50c3RvcmUgIT0gTlVMTCkKIAkJewogCQkJdHVwbGVzdG9yZV9lbmQobm9kZS0+ ZnVuY3N0YXRlc1tpXS50c3RvcmUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUdhdGhlci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCmluZGV4IDMw N2ZjMTBlZWEuLmJiMjUwMGE0NjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVHYXRoZXIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKQEAgLTI1 MCw5ICsyNTAsNiBAQCBFeGVjRW5kR2F0aGVyKEdhdGhlclN0YXRlICpub2RlKQogewogCUV4ZWNF bmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsJLyogbGV0IGNoaWxkcmVuIGNsZWFuIHVwIGZp cnN0ICovCiAJRXhlY1NodXRkb3duR2F0aGVyKG5vZGUpOwotCUV4ZWNGcmVlRXhwckNvbnRleHQo Jm5vZGUtPnBzKTsKLQlpZiAobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KQotCQlFeGVjQ2xl YXJUdXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwogfQogCiAvKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYwppbmRleCA5ZDVlMWE0NmU5Li43YTcxYTU4NTA5IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYwpAQCAtMjkwLDkgKzI5MCw2IEBA IEV4ZWNFbmRHYXRoZXJNZXJnZShHYXRoZXJNZXJnZVN0YXRlICpub2RlKQogewogCUV4ZWNFbmRO b2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsJLyogbGV0IGNoaWxkcmVuIGNsZWFuIHVwIGZpcnN0 ICovCiAJRXhlY1NodXRkb3duR2F0aGVyTWVyZ2Uobm9kZSk7Ci0JRXhlY0ZyZWVFeHByQ29udGV4 dCgmbm9kZS0+cHMpOwotCWlmIChub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCi0JCUV4ZWND bGVhclR1cGxlKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CiB9CiAKIC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKaW5kZXggMjVhMTYxODk1Mi4uOGM2NTBmMGU0NiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKQEAgLTIyOCwxMSArMjI4LDYgQEAgRXhlY0VuZEdyb3Vw KEdyb3VwU3RhdGUgKm5vZGUpCiB7CiAJUGxhblN0YXRlICAqb3V0ZXJQbGFuOwogCi0JRXhlY0Zy ZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwotCi0JLyogY2xlYW4gdXAgdHVwbGUgdGFibGUg Ki8KLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKLQogCW91dGVy UGxhbiA9IG91dGVyUGxhblN0YXRlKG5vZGUpOwogCUV4ZWNFbmROb2RlKG91dGVyUGxhbik7CiB9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUhhc2guYwppbmRleCA4YjVjMzViODJiLi5lNzJmMDk4NmMyIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVIYXNoLmMKQEAgLTQxNSwxMSArNDE1LDYgQEAgRXhlY0VuZEhhc2goSGFz aFN0YXRlICpub2RlKQogewogCVBsYW5TdGF0ZSAgKm91dGVyUGxhbjsKIAotCS8qCi0JICogZnJl ZSBleHByY29udGV4dAotCSAqLwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnBzKTsKLQog CS8qCiAJICogc2h1dCBkb3duIHRoZSBzdWJwbGFuCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVI YXNoam9pbi5jCmluZGV4IDk4MDc0NjEyOGIuLmFlYTQ0YTlkNTYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVIYXNoam9pbi5jCkBAIC04NjcsMTggKzg2Nyw2IEBAIEV4ZWNFbmRIYXNoSm9pbihIYXNo Sm9pblN0YXRlICpub2RlKQogCQlub2RlLT5oal9IYXNoVGFibGUgPSBOVUxMOwogCX0KIAotCS8q Ci0JICogRnJlZSB0aGUgZXhwcmNvbnRleHQKLQkgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZu b2RlLT5qcy5wcyk7Ci0KLQkvKgotCSAqIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUKLQkgKi8K LQlFeGVjQ2xlYXJUdXBsZShub2RlLT5qcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCUV4ZWND bGVhclR1cGxlKG5vZGUtPmhqX091dGVyVHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2Rl LT5oal9IYXNoVHVwbGVTbG90KTsKLQogCS8qCiAJICogY2xlYW4gdXAgc3VidHJlZXMKIAkgKi8K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYwppbmRleCA3NjgzZTMz NDFjLi5jZDA5NGExOTBjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5j cmVtZW50YWxTb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFs U29ydC5jCkBAIC0xMDc5LDExICsxMDc5LDYgQEAgRXhlY0VuZEluY3JlbWVudGFsU29ydChJbmNy ZW1lbnRhbFNvcnRTdGF0ZSAqbm9kZSkKIHsKIAlTT19wcmludGYoIkV4ZWNFbmRJbmNyZW1lbnRh bFNvcnQ6IHNodXR0aW5nIGRvd24gc29ydCBub2RlXG4iKTsKIAotCS8qIGNsZWFuIG91dCB0aGUg c2NhbiB0dXBsZSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3Qp OwotCS8qIG11c3QgZHJvcCBwb2ludGVyIHRvIHNvcnQgcmVzdWx0IHR1cGxlICovCi0JRXhlY0Ns ZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQkvKiBtdXN0IGRyb3Ag c3RhbmRhbG9uZSB0dXBsZSBzbG90cyBmcm9tIG91dGVyIG5vZGUgKi8KIAlFeGVjRHJvcFNpbmds ZVR1cGxlVGFibGVTbG90KG5vZGUtPmdyb3VwX3Bpdm90KTsKIAlFeGVjRHJvcFNpbmdsZVR1cGxl VGFibGVTbG90KG5vZGUtPnRyYW5zZmVyX3R1cGxlKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVJbmRleG9ubHlzY2FuLmMKaW5kZXggMGI0M2E5Yjk2OS4uZjFkYjM1NjY1YyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCkBAIC0zODAsMjIgKzM4MCw2IEBAIEV4 ZWNFbmRJbmRleE9ubHlTY2FuKEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSkKIAkJbm9kZS0+aW9z c19WTUJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAJfQogCi0JLyoKLQkgKiBGcmVlIHRoZSBleHBy Y29udGV4dChzKSAuLi4gbm93IGRlYWQgY29kZSwgc2VlIEV4ZWNGcmVlRXhwckNvbnRleHQKLQkg Ki8KLSNpZmRlZiBOT1RfVVNFRAotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsK LQlpZiAobm9kZS0+aW9zc19SdW50aW1lQ29udGV4dCkKLQkJRnJlZUV4cHJDb250ZXh0KG5vZGUt Pmlvc3NfUnVudGltZUNvbnRleHQsIHRydWUpOwotI2VuZGlmCi0KLQkvKgotCSAqIGNsZWFyIG91 dCB0dXBsZSB0YWJsZSBzbG90cwotCSAqLwotCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBs ZVNsb3QpCi0JCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7 Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci0KIAkvKgogCSAq IGNsb3NlIHRoZSBpbmRleCByZWxhdGlvbiAobm8tb3AgaWYgd2UgZGlkbid0IG9wZW4gaXQpCiAJ ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKaW5kZXggNDU0MGM3NzgxZC4uMTRi OWMwMDIxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYwpAQCAtNzk0LDIyICs3 OTQsNiBAQCBFeGVjRW5kSW5kZXhTY2FuKEluZGV4U2NhblN0YXRlICpub2RlKQogCWluZGV4UmVs YXRpb25EZXNjID0gbm9kZS0+aXNzX1JlbGF0aW9uRGVzYzsKIAlpbmRleFNjYW5EZXNjID0gbm9k ZS0+aXNzX1NjYW5EZXNjOwogCi0JLyoKLQkgKiBGcmVlIHRoZSBleHByY29udGV4dChzKSAuLi4g bm93IGRlYWQgY29kZSwgc2VlIEV4ZWNGcmVlRXhwckNvbnRleHQKLQkgKi8KLSNpZmRlZiBOT1Rf VVNFRAotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQlpZiAobm9kZS0+aXNz X1J1bnRpbWVDb250ZXh0KQotCQlGcmVlRXhwckNvbnRleHQobm9kZS0+aXNzX1J1bnRpbWVDb250 ZXh0LCB0cnVlKTsKLSNlbmRpZgotCi0JLyoKLQkgKiBjbGVhciBvdXQgdHVwbGUgdGFibGUgc2xv dHMKLQkgKi8KLQlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KQotCQlFeGVjQ2xl YXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCUV4ZWNDbGVhclR1cGxl KG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwotCiAJLyoKIAkgKiBjbG9zZSB0aGUgaW5kZXgg cmVsYXRpb24gKG5vLW9wIGlmIHdlIGRpZG4ndCBvcGVuIGl0KQogCSAqLwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTGltaXQuYwppbmRleCA0MjVmYmZjNDA1Li41NjU0MTU4ZTNlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTGltaXQuYwpAQCAtNTM0LDcgKzUzNCw2IEBAIEV4ZWNJbml0TGltaXQoTGltaXQgKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogdm9pZAogRXhlY0VuZExpbWl0KExpbWl0U3Rh dGUgKm5vZGUpCiB7Ci0JRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+cHMpOwogCUV4ZWNFbmRO b2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJp YWwuYwppbmRleCAwOTYzMjY3OGIwLi43NTNlYTI4OTE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWF0ZXJpYWwuYwpAQCAtMjM5LDExICsyMzksNiBAQCBFeGVjSW5pdE1hdGVyaWFsKE1hdGVyaWFs ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHZvaWQKIEV4ZWNFbmRNYXRlcmlh bChNYXRlcmlhbFN0YXRlICpub2RlKQogewotCS8qCi0JICogY2xlYW4gb3V0IHRoZSB0dXBsZSB0 YWJsZQotCSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwot CiAJLyoKIAkgKiBSZWxlYXNlIHR1cGxlc3RvcmUgcmVzb3VyY2VzCiAJICovCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU1lbW9pemUuYwppbmRleCA0ZjA0MjY5ZTI2Li45NGJmNDc5Mjg3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNZW1vaXplLmMKQEAgLTEwOTEsMTUgKzEwOTEsNiBAQCBFeGVjRW5kTWVtb2l6 ZShNZW1vaXplU3RhdGUgKm5vZGUpCiAJLyogUmVtb3ZlIHRoZSBjYWNoZSBjb250ZXh0ICovCiAJ TWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT50YWJsZUNvbnRleHQpOwogCi0JRXhlY0NsZWFyVHVw bGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci0JLyogbXVzdCBkcm9wIHBvaW50ZXIgdG8g Y2FjaGUgcmVzdWx0IHR1cGxlICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVz dWx0VHVwbGVTbG90KTsKLQotCS8qCi0JICogZnJlZSBleHByY29udGV4dAotCSAqLwotCUV4ZWNG cmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQogCS8qCiAJICogc2h1dCBkb3duIHRoZSBz dWJwbGFuCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vq b2luLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMKaW5kZXggMDBmOTZk MDQ1ZS4uNjQ4ZmRkOWE1ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l cmdlam9pbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYwpAQCAt MTY0MiwxOCArMTY0Miw2IEBAIEV4ZWNFbmRNZXJnZUpvaW4oTWVyZ2VKb2luU3RhdGUgKm5vZGUp CiB7CiAJTUoxX3ByaW50ZigiRXhlY0VuZE1lcmdlSm9pbjogJXNcbiIsCiAJCQkgICAiZW5kaW5n IG5vZGUgcHJvY2Vzc2luZyIpOwotCi0JLyoKLQkgKiBGcmVlIHRoZSBleHByY29udGV4dAotCSAq LwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPmpzLnBzKTsKLQotCS8qCi0JICogY2xlYW4g b3V0IHRoZSB0dXBsZSB0YWJsZQotCSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmpzLnBzLnBz X1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+bWpfTWFya2VkVHVwbGVT bG90KTsKLQogCS8qCiAJICogc2h1dCBkb3duIHRoZSBzdWJwbGFucwogCSAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCA1MDA1ZDhjMGQxLi5kMjFhMTc4YWQ1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNDQ0NiwxNyArNDQ0Niw2 IEBAIEV4ZWNFbmRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZVN0YXRlICpub2RlKQogCQkJRXhlY0Ry b3BTaW5nbGVUdXBsZVRhYmxlU2xvdChub2RlLT5tdF9yb290X3R1cGxlX3Nsb3QpOwogCX0KIAot CS8qCi0JICogRnJlZSB0aGUgZXhwcmNvbnRleHQKLQkgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0 KCZub2RlLT5wcyk7Ci0KLQkvKgotCSAqIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUKLQkgKi8K LQlpZiAobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KQotCQlFeGVjQ2xlYXJUdXBsZShub2Rl LT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCiAJLyoKIAkgKiBUZXJtaW5hdGUgRVBRIGV4ZWN1 dGlvbiBpZiBhY3RpdmUKIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVOYW1lZHR1cGxlc3RvcmVzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmFtZWR0 dXBsZXN0b3Jlc2Nhbi5jCmluZGV4IDQ2ODMyYWQ4MmYuLjM1NDdkYzJiMTAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOYW1lZHR1cGxlc3RvcmVzY2FuLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5hbWVkdHVwbGVzdG9yZXNjYW4uYwpAQCAtMTU1LDI4ICsx NTUsNiBAQCBFeGVjSW5pdE5hbWVkVHVwbGVzdG9yZVNjYW4oTmFtZWRUdXBsZXN0b3JlU2NhbiAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZwogCXJldHVybiBzY2Fuc3RhdGU7CiB9CiAK LS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KLSAqCQlFeGVjRW5kTmFtZWRUdXBsZXN0b3JlU2NhbgotICoKLSAqCQlmcmVl cyBhbnkgc3RvcmFnZSBhbGxvY2F0ZWQgdGhyb3VnaCBDIHJvdXRpbmVzLgotICogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot ICovCi12b2lkCi1FeGVjRW5kTmFtZWRUdXBsZXN0b3JlU2NhbihOYW1lZFR1cGxlc3RvcmVTY2Fu U3RhdGUgKm5vZGUpCi17Ci0JLyoKLQkgKiBGcmVlIGV4cHJjb250ZXh0Ci0JICovCi0JRXhlY0Zy ZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwotCi0JLyoKLQkgKiBjbGVhbiBvdXQgdGhlIHR1 cGxlIHRhYmxlCi0JICovCi0JaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKLQkJ RXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xl YXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKLX0KLQogLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJ CUV4ZWNSZVNjYW5OYW1lZFR1cGxlc3RvcmVTY2FuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVz dGxvb3AuYwppbmRleCBiM2Q1MmU2OWVjLi5mYzhmODMzZDhiIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTmVzdGxvb3AuYwpAQCAtMzYzLDE3ICszNjMsNiBAQCBFeGVjRW5kTmVzdExvb3AoTmVzdExv b3BTdGF0ZSAqbm9kZSkKIHsKIAlOTDFfcHJpbnRmKCJFeGVjRW5kTmVzdExvb3A6ICVzXG4iLAog CQkJICAgImVuZGluZyBub2RlIHByb2Nlc3NpbmciKTsKLQotCS8qCi0JICogRnJlZSB0aGUgZXhw cmNvbnRleHQKLQkgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5qcy5wcyk7Ci0KLQkv KgotCSAqIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUKLQkgKi8KLQlFeGVjQ2xlYXJUdXBsZShu b2RlLT5qcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCiAJLyoKIAkgKiBjbG9zZSBkb3duIHN1 YnBsYW5zCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVj dFNldC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYwppbmRleCBmNmZm M2RjNDRjLi5iNGJiZGM4OWIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl UHJvamVjdFNldC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMK QEAgLTMyMCwxNiArMzIwLDYgQEAgRXhlY0luaXRQcm9qZWN0U2V0KFByb2plY3RTZXQgKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogdm9pZAogRXhlY0VuZFByb2plY3RTZXQoUHJv amVjdFNldFN0YXRlICpub2RlKQogewotCS8qCi0JICogRnJlZSB0aGUgZXhwcmNvbnRleHQKLQkg Ki8KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5wcyk7Ci0KLQkvKgotCSAqIGNsZWFuIG91 dCB0aGUgdHVwbGUgdGFibGUKLQkgKi8KLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5wc19SZXN1 bHRUdXBsZVNsb3QpOwotCiAJLyoKIAkgKiBzaHV0IGRvd24gc3VicGxhbnMKIAkgKi8KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVSZXN1bHQuYwppbmRleCA0MjE5NzEyZDMwLi5lOWY1NzMyZjMzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCkBAIC0yNDAsMTYgKzI0MCw2IEBAIEV4ZWNJbml0UmVzdWx0 KFJlc3VsdCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiB2b2lkCiBFeGVjRW5k UmVzdWx0KFJlc3VsdFN0YXRlICpub2RlKQogewotCS8qCi0JICogRnJlZSB0aGUgZXhwcmNvbnRl eHQKLQkgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5wcyk7Ci0KLQkvKgotCSAqIGNs ZWFuIG91dCB0aGUgdHVwbGUgdGFibGUKLQkgKi8KLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5w c19SZXN1bHRUdXBsZVNsb3QpOwotCiAJLyoKIAkgKiBzaHV0IGRvd24gc3VicGxhbnMKIAkgKi8K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jCmluZGV4IGQ3ZTIyYjFkYmIuLjQxYzFl YTM3YWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYwpAQCAtMTg4LDE4ICsx ODgsNiBAQCBFeGVjRW5kU2FtcGxlU2NhbihTYW1wbGVTY2FuU3RhdGUgKm5vZGUpCiAJaWYgKG5v ZGUtPnRzbXJvdXRpbmUtPkVuZFNhbXBsZVNjYW4pCiAJCW5vZGUtPnRzbXJvdXRpbmUtPkVuZFNh bXBsZVNjYW4obm9kZSk7CiAKLQkvKgotCSAqIEZyZWUgdGhlIGV4cHJjb250ZXh0Ci0JICovCi0J RXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwotCi0JLyoKLQkgKiBjbGVhbiBvdXQg dGhlIHR1cGxlIHRhYmxlCi0JICovCi0JaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xv dCkKLQkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlF eGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKLQogCS8qCiAJICogY2xv c2UgaGVhcCBzY2FuCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U2Vxc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwppbmRleCA0ZGEw ZjI4ZjdiLi40OWE1OTMzYWZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U2Vxc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKQEAgLTE5 MCwxOCArMTkwLDYgQEAgRXhlY0VuZFNlcVNjYW4oU2VxU2NhblN0YXRlICpub2RlKQogCSAqLwog CXNjYW5EZXNjID0gbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjOwogCi0JLyoKLQkgKiBGcmVl IHRoZSBleHByY29udGV4dAotCSAqLwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBz KTsKLQotCS8qCi0JICogY2xlYW4gb3V0IHRoZSB0dXBsZSB0YWJsZQotCSAqLwotCWlmIChub2Rl LT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCi0JCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBz LnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1 cGxlU2xvdCk7Ci0KIAkvKgogCSAqIGNsb3NlIGhlYXAgc2NhbgogCSAqLwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlU2V0T3AuYwppbmRleCA0YmMyNDA2Yjg5Li45OGMxYjg0ZDQzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlU2V0T3AuYwpAQCAtNTgyLDEzICs1ODIsOSBAQCBFeGVjSW5pdFNldE9wKFNldE9wICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHZvaWQKIEV4ZWNFbmRTZXRPcChTZXRPcFN0 YXRlICpub2RlKQogewotCS8qIGNsZWFuIHVwIHR1cGxlIHRhYmxlICovCi0JRXhlY0NsZWFyVHVw bGUobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQogCS8qIGZyZWUgc3Vic2lkaWFyeSBz dHVmZiBpbmNsdWRpbmcgaGFzaHRhYmxlICovCiAJaWYgKG5vZGUtPnRhYmxlQ29udGV4dCkKIAkJ TWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT50YWJsZUNvbnRleHQpOwotCUV4ZWNGcmVlRXhwckNv bnRleHQoJm5vZGUtPnBzKTsKIAogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsK IH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU29ydC5jCmluZGV4IGM2YzcyYzZlNjcuLmVlYTdmMmFlMTUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVNvcnQuYwpAQCAtMzAzLDEzICszMDMsNiBAQCBFeGVjRW5kU29ydChT b3J0U3RhdGUgKm5vZGUpCiAJU08xX3ByaW50ZigiRXhlY0VuZFNvcnQ6ICVzXG4iLAogCQkJICAg InNodXR0aW5nIGRvd24gc29ydCBub2RlIik7CiAKLQkvKgotCSAqIGNsZWFuIG91dCB0aGUgdHVw bGUgdGFibGUKLQkgKi8KLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90 KTsKLQkvKiBtdXN0IGRyb3AgcG9pbnRlciB0byBzb3J0IHJlc3VsdCB0dXBsZSAqLwotCUV4ZWND bGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0KIAkvKgogCSAqIFJl bGVhc2UgdHVwbGVzb3J0IHJlc291cmNlcwogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1 YnF1ZXJ5c2Nhbi5jCmluZGV4IDQyNDcxYmZjMDQuLjFlZTYyOTU2NjAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMKQEAgLTE2NywxOCArMTY3LDYgQEAgRXhlY0luaXRT dWJxdWVyeVNjYW4oU3VicXVlcnlTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIHZvaWQKIEV4ZWNFbmRTdWJxdWVyeVNjYW4oU3VicXVlcnlTY2FuU3RhdGUgKm5vZGUpCiB7 Ci0JLyoKLQkgKiBGcmVlIHRoZSBleHByY29udGV4dAotCSAqLwotCUV4ZWNGcmVlRXhwckNvbnRl eHQoJm5vZGUtPnNzLnBzKTsKLQotCS8qCi0JICogY2xlYW4gb3V0IHRoZSB1cHBlciB0dXBsZSB0 YWJsZQotCSAqLwotCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCi0JCUV4ZWND bGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVw bGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci0KIAkvKgogCSAqIGNsb3NlIGRvd24gc3Vi cXVlcnkKIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1 bmNzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jCmluZGV4 IDc5MWNiZDIzNzIuLmE2MGRjZDQ5NDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVUYWJsZUZ1bmNzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxl RnVuY3NjYW4uYwpAQCAtMjEzLDE4ICsyMTMsNiBAQCBFeGVjSW5pdFRhYmxlRnVuY1NjYW4oVGFi bGVGdW5jU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiB2b2lkCiBFeGVj RW5kVGFibGVGdW5jU2NhbihUYWJsZUZ1bmNTY2FuU3RhdGUgKm5vZGUpCiB7Ci0JLyoKLQkgKiBG cmVlIHRoZSBleHByY29udGV4dAotCSAqLwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNz LnBzKTsKLQotCS8qCi0JICogY2xlYW4gb3V0IHRoZSB0dXBsZSB0YWJsZQotCSAqLwotCWlmIChu b2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCi0JCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNz LnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2Nh blR1cGxlU2xvdCk7Ci0KIAkvKgogCSAqIFJlbGVhc2UgdHVwbGVzdG9yZSByZXNvdXJjZXMKIAkg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYwppbmRleCAyMTI0YzU1ZWY1 Li5kYTYyMmQzZjVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFu Z2VzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCkBA IC0zMzEsMTggKzMzMSw2IEBAIEV4ZWNFbmRUaWRSYW5nZVNjYW4oVGlkUmFuZ2VTY2FuU3RhdGUg Km5vZGUpCiAKIAlpZiAoc2NhbiAhPSBOVUxMKQogCQl0YWJsZV9lbmRzY2FuKHNjYW4pOwotCi0J LyoKLQkgKiBGcmVlIHRoZSBleHByY29udGV4dAotCSAqLwotCUV4ZWNGcmVlRXhwckNvbnRleHQo Jm5vZGUtPnNzLnBzKTsKLQotCS8qCi0JICogY2xlYXIgb3V0IHR1cGxlIHRhYmxlIHNsb3RzCi0J ICovCi0JaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKLQkJRXhlY0NsZWFyVHVw bGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2Rl LT5zcy5zc19TY2FuVHVwbGVTbG90KTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVUaWRzY2FuLmMKaW5kZXggODYyYmQwMzMwYi4uMTUwNTUwNzdkMCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlVGlkc2Nhbi5jCkBAIC00NzIsMTggKzQ3Miw2IEBAIEV4ZWNFbmRUaWRTY2FuKFRpZFNj YW5TdGF0ZSAqbm9kZSkKIHsKIAlpZiAobm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKQogCQl0 YWJsZV9lbmRzY2FuKG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyk7Ci0KLQkvKgotCSAqIEZy ZWUgdGhlIGV4cHJjb250ZXh0Ci0JICovCi0JRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3Mu cHMpOwotCi0JLyoKLQkgKiBjbGVhciBvdXQgdHVwbGUgdGFibGUgc2xvdHMKLQkgKi8KLQlpZiAo bm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KQotCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5z cy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1Nj YW5UdXBsZVNsb3QpOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlVW5pcXVlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMK aW5kZXggNDUwMzVkNzRmYS4uMDFmOTUxMTk3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVVuaXF1ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUu YwpAQCAtMTY4LDExICsxNjgsNiBAQCBFeGVjSW5pdFVuaXF1ZShVbmlxdWUgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogdm9pZAogRXhlY0VuZFVuaXF1ZShVbmlxdWVTdGF0ZSAq bm9kZSkKIHsKLQkvKiBjbGVhbiB1cCB0dXBsZSB0YWJsZSAqLwotCUV4ZWNDbGVhclR1cGxlKG5v ZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2Rl LT5wcyk7Ci0KIAlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CiB9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVWYWx1ZXNzY2FuLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlVmFsdWVzc2Nhbi5jCmluZGV4IDMyYWNlNjMwMTcuLmZiZmIwNjdmM2Ig MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVWYWx1ZXNzY2FuLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVZhbHVlc3NjYW4uYwpAQCAtMzE5LDMwICszMTksNiBA QCBFeGVjSW5pdFZhbHVlc1NjYW4oVmFsdWVzU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJcmV0dXJuIHNjYW5zdGF0ZTsKIH0KIAotLyogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICoJCUV4ZWNF bmRWYWx1ZXNTY2FuCi0gKgotICoJCWZyZWVzIGFueSBzdG9yYWdlIGFsbG9jYXRlZCB0aHJvdWdo IEMgcm91dGluZXMuCi0gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKi8KLXZvaWQKLUV4ZWNFbmRWYWx1ZXNTY2FuKFZh bHVlc1NjYW5TdGF0ZSAqbm9kZSkKLXsKLQkvKgotCSAqIEZyZWUgYm90aCBleHByY29udGV4dHMK LQkgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5zcy5wcyk7Ci0Jbm9kZS0+c3MucHMu cHNfRXhwckNvbnRleHQgPSBub2RlLT5yb3djb250ZXh0OwotCUV4ZWNGcmVlRXhwckNvbnRleHQo Jm5vZGUtPnNzLnBzKTsKLQotCS8qCi0JICogY2xlYW4gb3V0IHRoZSB0dXBsZSB0YWJsZQotCSAq LwotCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCi0JCUV4ZWNDbGVhclR1cGxl KG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+ c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci19Ci0KIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjUmVTY2FuVmFs dWVzU2NhbgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dB Z2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwppbmRleCAzMTBhYzIz ZTNhLi43NzcyNGE2ZGFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2lu ZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCkBAIC0y Njg2LDIzICsyNjg2LDYgQEAgRXhlY0VuZFdpbmRvd0FnZyhXaW5kb3dBZ2dTdGF0ZSAqbm9kZSkK IAogCXJlbGVhc2VfcGFydGl0aW9uKG5vZGUpOwogCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Mu c3NfU2NhblR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+Zmlyc3RfcGFydF9zbG90 KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5hZ2dfcm93X3Nsb3QpOwotCUV4ZWNDbGVhclR1cGxl KG5vZGUtPnRlbXBfc2xvdF8xKTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT50ZW1wX3Nsb3RfMik7 Ci0JaWYgKG5vZGUtPmZyYW1laGVhZF9zbG90KQotCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5mcmFt ZWhlYWRfc2xvdCk7Ci0JaWYgKG5vZGUtPmZyYW1ldGFpbF9zbG90KQotCQlFeGVjQ2xlYXJUdXBs ZShub2RlLT5mcmFtZXRhaWxfc2xvdCk7Ci0KLQkvKgotCSAqIEZyZWUgYm90aCB0aGUgZXhwciBj b250ZXh0cy4KLQkgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5zcy5wcyk7Ci0Jbm9k ZS0+c3MucHMucHNfRXhwckNvbnRleHQgPSBub2RlLT50bXBjb250ZXh0OwotCUV4ZWNGcmVlRXhw ckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQogCWZvciAoaSA9IDA7IGkgPCBub2RlLT5udW1hZ2dz OyBpKyspCiAJewogCQlpZiAobm9kZS0+cGVyYWdnW2ldLmFnZ2NvbnRleHQgIT0gbm9kZS0+YWdn Y29udGV4dCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXb3JrdGFibGVz Y2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV29ya3RhYmxlc2Nhbi5jCmluZGV4IDBj MTM0NDgyMzYuLjE3YTU0ODg2NWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVXb3JrdGFibGVzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdvcmt0YWJs ZXNjYW4uYwpAQCAtMTgxLDI4ICsxODEsNiBAQCBFeGVjSW5pdFdvcmtUYWJsZVNjYW4oV29ya1Rh YmxlU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJcmV0dXJuIHNjYW5z dGF0ZTsKIH0KIAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICoJCUV4ZWNFbmRXb3JrVGFibGVTY2FuCi0gKgotICoJ CWZyZWVzIGFueSBzdG9yYWdlIGFsbG9jYXRlZCB0aHJvdWdoIEMgcm91dGluZXMuCi0gKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCi0gKi8KLXZvaWQKLUV4ZWNFbmRXb3JrVGFibGVTY2FuKFdvcmtUYWJsZVNjYW5TdGF0ZSAq bm9kZSkKLXsKLQkvKgotCSAqIEZyZWUgZXhwcmNvbnRleHQKLQkgKi8KLQlFeGVjRnJlZUV4cHJD b250ZXh0KCZub2RlLT5zcy5wcyk7Ci0KLQkvKgotCSAqIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFi bGUKLQkgKi8KLQlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KQotCQlFeGVjQ2xl YXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCUV4ZWNDbGVhclR1cGxl KG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwotfQotCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY1Jl U2NhbldvcmtUYWJsZVNjYW4KICAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCBjNjc3ZTQ5 MGQ3Li5hZWViZTBlMGZmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRv ci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTU2OSw3ICs1Njks NiBAQCBleHRlcm4gdm9pZCBFeGVjQXNzaWduUHJvamVjdGlvbkluZm8oUGxhblN0YXRlICpwbGFu c3RhdGUsCiAJCQkJCQkJCQkgVHVwbGVEZXNjIGlucHV0RGVzYyk7CiBleHRlcm4gdm9pZCBFeGVj Q29uZGl0aW9uYWxBc3NpZ25Qcm9qZWN0aW9uSW5mbyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkJ CQkJCQkJCQkJCVR1cGxlRGVzYyBpbnB1dERlc2MsIGludCB2YXJubyk7Ci1leHRlcm4gdm9pZCBF eGVjRnJlZUV4cHJDb250ZXh0KFBsYW5TdGF0ZSAqcGxhbnN0YXRlKTsKIGV4dGVybiB2b2lkIEV4 ZWNBc3NpZ25TY2FuVHlwZShTY2FuU3RhdGUgKnNjYW5zdGF0ZSwgVHVwbGVEZXNjIHR1cERlc2Mp OwogZXh0ZXJuIHZvaWQgRXhlY0NyZWF0ZVNjYW5TbG90RnJvbU91dGVyUGxhbihFU3RhdGUgKmVz dGF0ZSwKIAkJCQkJCQkJCQkJU2NhblN0YXRlICpzY2Fuc3RhdGUsCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9leGVjdXRvci9ub2RlTmFtZWR0dXBsZXN0b3Jlc2Nhbi5oIGIvc3JjL2luY2x1ZGUv ZXhlY3V0b3Ivbm9kZU5hbWVkdHVwbGVzdG9yZXNjYW4uaAppbmRleCAzZmY2ODcwMjNhLi45ZDgw MjM2ZmU1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTmFtZWR0dXBsZXN0 b3Jlc2Nhbi5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVOYW1lZHR1cGxlc3RvcmVz Y2FuLmgKQEAgLTE3LDcgKzE3LDYgQEAKICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKIAog ZXh0ZXJuIE5hbWVkVHVwbGVzdG9yZVNjYW5TdGF0ZSAqRXhlY0luaXROYW1lZFR1cGxlc3RvcmVT Y2FuKE5hbWVkVHVwbGVzdG9yZVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KTsKLWV4dGVybiB2b2lkIEV4ZWNFbmROYW1lZFR1cGxlc3RvcmVTY2FuKE5hbWVkVHVwbGVzdG9y ZVNjYW5TdGF0ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBFeGVjUmVTY2FuTmFtZWRUdXBsZXN0b3Jl U2NhbihOYW1lZFR1cGxlc3RvcmVTY2FuU3RhdGUgKm5vZGUpOwogCiAjZW5kaWYJCQkJCQkJLyog Tk9ERU5BTUVEVFVQTEVTVE9SRVNDQU5fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhl Y3V0b3Ivbm9kZVZhbHVlc3NjYW4uaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVWYWx1ZXNz Y2FuLmgKaW5kZXggYTUyZmE2NzhkZi4uZmUzZjA0Mzk1MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvZXhlY3V0b3Ivbm9kZVZhbHVlc3NjYW4uaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9u b2RlVmFsdWVzc2Nhbi5oCkBAIC0xNyw3ICsxNyw2IEBACiAjaW5jbHVkZSAibm9kZXMvZXhlY25v ZGVzLmgiCiAKIGV4dGVybiBWYWx1ZXNTY2FuU3RhdGUgKkV4ZWNJbml0VmFsdWVzU2NhbihWYWx1 ZXNTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncyk7Ci1leHRlcm4gdm9pZCBF eGVjRW5kVmFsdWVzU2NhbihWYWx1ZXNTY2FuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhl Y1JlU2NhblZhbHVlc1NjYW4oVmFsdWVzU2NhblN0YXRlICpub2RlKTsKIAogI2VuZGlmCQkJCQkJ CS8qIE5PREVWQUxVRVNTQ0FOX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L25vZGVXb3JrdGFibGVzY2FuLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlV29ya3RhYmxl c2Nhbi5oCmluZGV4IGU1NTNhNDUzZjMuLmYzMWIyMmNlYzQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL25vZGVXb3JrdGFibGVzY2FuLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0 b3Ivbm9kZVdvcmt0YWJsZXNjYW4uaApAQCAtMTcsNyArMTcsNiBAQAogI2luY2x1ZGUgIm5vZGVz L2V4ZWNub2Rlcy5oIgogCiBleHRlcm4gV29ya1RhYmxlU2NhblN0YXRlICpFeGVjSW5pdFdvcmtU YWJsZVNjYW4oV29ya1RhYmxlU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp OwotZXh0ZXJuIHZvaWQgRXhlY0VuZFdvcmtUYWJsZVNjYW4oV29ya1RhYmxlU2NhblN0YXRlICpu b2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNSZVNjYW5Xb3JrVGFibGVTY2FuKFdvcmtUYWJsZVNjYW5T dGF0ZSAqbm9kZSk7CiAKICNlbmRpZgkJCQkJCQkvKiBOT0RFV09SS1RBQkxFU0NBTl9IICovCi0t IAoyLjM1LjMKCg== --00000000000041b1e2060642be90--