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 1r4vvO-00AyLn-Hz for pgsql-hackers@arkaria.postgresql.org; Mon, 20 Nov 2023 04:30:19 +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 1r4vvM-005mJn-QQ for pgsql-hackers@arkaria.postgresql.org; Mon, 20 Nov 2023 04:30:16 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r4vvL-005mJf-OL for pgsql-hackers@lists.postgresql.org; Mon, 20 Nov 2023 04:30:16 +0000 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1r4vvI-006Psb-1J for pgsql-hackers@postgresql.org; Mon, 20 Nov 2023 04:30:14 +0000 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-285196556fcso674857a91.0 for ; Sun, 19 Nov 2023 20:30:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700454611; x=1701059411; 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=d9o8Deuw3kO6sWs95nLCmjPIw9/V2TO4Tk3r7VgRjzI=; b=ZMoz0P4xKwm58SEUv2OtGuYvIiRBCShb1pHlvGKIc6OzSX1M+5rxe6kBTRlwG1E/MZ Mce/VFISkrqhhAiOqEp1PQPHij/3uoqV7xt/9AuzgTJqtkChHRQHoAHpoXaoyagxuTdm Wny1qDAhRax0swzww+kQJvlMr+pRA2S8LZwkUmX5Xk2V7fdM9WVx/IIhwzjUp64BrDy7 6H88aUU23GKTsUleBd+HLa/kxiQh0X7QUdsPoOfLMNbf+LYlAt27WLCbvxLNM64bLB9f hQSZfphhrL8s4oa5GvvH91JWbiSTCgleYuvKvrUn05Htb8Y/dkqhDkYD3zjoJihSO8vE +iFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700454611; x=1701059411; 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=d9o8Deuw3kO6sWs95nLCmjPIw9/V2TO4Tk3r7VgRjzI=; b=AX8nbOk3uCDMzZK7tC2gj7xgCxJV0/03uO6MZccwLvyFd8uVCLJNP0BQMx7ayq5yGI MjovqjVEQNEyvNyra+x/pkxVMsYTFuQUykGVQuZbzhV8WapmK/0sD5OvDBhTco7fwx/r ldiLadERgtY5nnwbkSfuHH8H5xvJahQEeJl5nZkDlu3+Qa8/nuKXGpeMOttNds8dY2l7 8S1pdM6SAykF99VgSHsiIjQcxlH/YvsiaPmSdKAHUlr7AhSzekT6NOcJuVArTjV6Qaws M+C0KEVcvB/I0Gii1nJ26DgoF+pT0BfYZgJzIQEr1801a8QMapJO3z1QhcUO1tq5Njom tuXQ== X-Gm-Message-State: AOJu0YwB2DVmEZ9He6Ae7C3PKWbuEscpyMLKsvuQ8YquOSC/dBldl+G0 drrk8oNw2btz3Gi8LoqnZxsmegMZVbiy+i0jPRQ= X-Google-Smtp-Source: AGHT+IF5rGdwFyhipsESNmhEoHb5OS0z9TYF8x3pv6KVdKt4ruiECL5Hv37xLjs7RtV/YqX3WVjNXuSSbP/Y29lweB0= X-Received: by 2002:a17:90a:1942:b0:285:2d62:84c4 with SMTP id 2-20020a17090a194200b002852d6284c4mr656731pjh.29.1700454610879; Sun, 19 Nov 2023 20:30:10 -0800 (PST) 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: Mon, 20 Nov 2023 13:29:53 +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="0000000000000a00a4060a8df157" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000a00a4060a8df157 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Sep 28, 2023 at 5:26=E2=80=AFPM Amit Langote wrote: > On Tue, Sep 26, 2023 at 10:06=E2=80=AFPM Amit Langote wrote: > > 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, efl= ags); > > 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. > > Pushed that one. Here are the rebased patches. > > 0001 seems ready to me, but I'll wait a couple more days for others to > weigh in. Just to highlight a kind of change that others may have > differing opinions on, consider this hunk from the patch: > > - MemoryContextDelete(node->aggcontext); > + if (node->aggcontext !=3D NULL) > + { > + MemoryContextDelete(node->aggcontext); > + node->aggcontext =3D NULL; > + } > ... > + ExecEndNode(outerPlanState(node)); > + outerPlanState(node) =3D NULL; > > So the patch wants to enhance the consistency of setting the pointer > to NULL after freeing part. Robert mentioned his preference for doing > it in the patch, which I agree with. Rebased. I haven't been able to reproduce and debug a crash reported by cfbot that I see every now and then: https://cirrus-ci.com/task/5673432591892480?logs=3Dcores#L0 [22:46:12.328] Program terminated with signal SIGSEGV, Segmentation fault. [22:46:12.328] Address not mapped to object. [22:46:12.838] #0 afterTriggerInvokeEvents (events=3Devents@entry=3D0x836db0460, firing_id=3D1, estate=3Destate@entry=3D0x842eec100, delete_ok=3D) at ../src/backend/commands/trigger.c:4656 [22:46:12.838] #1 0x00000000006c67a8 in AfterTriggerEndQuery (estate=3Destate@entry=3D0x842eec100) at ../src/backend/commands/trigger.c:5085 [22:46:12.838] #2 0x000000000065bfba in CopyFrom (cstate=3D0x836df9038) at ../src/backend/commands/copyfrom.c:1293 ... While a patch in this series does change src/backend/commands/trigger.c, I'm not yet sure about its relation with the backtrace shown there. --=20 Thanks, Amit Langote EDB: http://www.enterprisedb.com --0000000000000a00a4060a8df157 Content-Type: application/octet-stream; name="v49-0006-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Disposition: attachment; filename="v49-0006-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lp6ekt5w2 RnJvbSBiYmRlMzJmNTZiZmJhYmEwN2Q2OTlkZWM0ODM4ZjIxZDQzZTQwMzg0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1NDowMiArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ5 IDYvOF0gQWRkIGZpZWxkIHRvIHN0b3JlIHBhcmVudCByZWxpZHMgdG8KIEFwcGVuZC9NZXJnZUFw 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 bmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IGE4Y2VhNWVmZTEuLjYzYTExZTUxMWUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTc4NTAsOCArNzg1MCwxMSBA QCBjcmVhdGVfcGFydGl0aW9ud2lzZV9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwK IAkJCQkJCQkJCSAgIGFnZ19jb3N0cywgZ2QsICZjaGlsZF9leHRyYSwKIAkJCQkJCQkJCSAgICZj aGlsZF9wYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwogCisJCS8qIE1hcmsgYXMgY2hpbGQgb2YgZ3Jv dXBlZF9yZWwuICovCisJCWNoaWxkX2dyb3VwZWRfcmVsLT5wYXJlbnQgPSBncm91cGVkX3JlbDsK IAkJaWYgKGNoaWxkX3BhcnRpYWxseV9ncm91cGVkX3JlbCkKIAkJeworCQkJY2hpbGRfcGFydGlh bGx5X2dyb3VwZWRfcmVsLT5wYXJlbnQgPSBncm91cGVkX3JlbDsKIAkJCXBhcnRpYWxseV9ncm91 cGVkX2xpdmVfY2hpbGRyZW4gPQogCQkJCWxhcHBlbmQocGFydGlhbGx5X2dyb3VwZWRfbGl2ZV9j aGlsZHJlbiwKIAkJCQkJCWNoaWxkX3BhcnRpYWxseV9ncm91cGVkX3JlbCk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggZmMzNzA5NTEwZC4uMDQ5MTBjMzAxZiAxMDA2NDQK 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 eCAzZjMxZWNjOTU2Li40MjQ2MWE1YjJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRp b25pbmcvcGFydHBydW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVu ZS5jCkBAIC0xMzgsNyArMTM4LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVTdGVwUmVzdWx0CiB9 IFBydW5lU3RlcFJlc3VsdDsKIAogCi1zdGF0aWMgTGlzdCAqYWRkX3BhcnRfcmVsaWRzKExpc3Qg KmFsbHBhcnRyZWxpZHMsIEJpdG1hcHNldCAqcGFydHJlbGlkcyk7CiBzdGF0aWMgTGlzdCAqbWFr ZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJ ICAgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJCQkJCQkJCSAgIExpc3QgKnBydW5lcXVhbCwK QEAgLTIxNiwzMyArMjE1LDMyIEBAIHN0YXRpYyB2b2lkIHBhcnRrZXlfZGF0dW1fZnJvbV9leHBy 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 CiAKIAlpID0gMTsKQEAgLTI1MSw1MCArMjQ5LDkgQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZv 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 MzYwLDYzICszMTcsNiBAQCBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJv 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 ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggNGYxODNlYzZjZC4uMzUwYTYyNTEwNyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjdXRvci5oCkBAIC02MDEsNiArNjAxLDcgQEAgZXhlY19ydF9mZXRjaChJbmRleCBy dGksIEVTdGF0ZSAqZXN0YXRlKQogZXh0ZXJuIFJlbGF0aW9uIEV4ZWNHZXRSYW5nZVRhYmxlUmVs YXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSk7CiBleHRlcm4gdm9pZCBFeGVjSW5pdFJl c3VsdFJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZv LAogCQkJCQkJCQkgICBJbmRleCBydGkpOworZXh0ZXJuIHZvaWQgRXhlY0xvY2tBcHBlbmROb25M ZWFmUGFydGl0aW9ucyhFU3RhdGUgKmVzdGF0ZSwgTGlzdCAqYWxscGFydHJlbGlkcyk7CiAKIGV4 dGVybiBpbnQJZXhlY3V0b3JfZXJycG9zaXRpb24oRVN0YXRlICplc3RhdGUsIGludCBsb2NhdGlv bik7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggZDQwYWY4ZTU5Zi4uZmZjYzg0OTBkNyAxMDA2 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= --0000000000000a00a4060a8df157 Content-Type: application/octet-stream; name="v49-0007-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Disposition: attachment; filename="v49-0007-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lp6ekt5v1 RnJvbSBhOGJjMjA2ZDUzNjdkZWNmYjA0Zjk1MjgzYTY3NjQ1Yjg1YmE1YzgxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1NDoxNSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ5 IDcvOF0gRGVsYXkgbG9ja2luZyBvZiBjaGlsZCB0YWJsZXMgaW4gY2FjaGVkIHBsYW5zIHVudGls 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 ZXggNjBlMjYzMmNkMi4uOTlmNGVkOTJmYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 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 ZS5jCmluZGV4IDhmOTU1MjBmMmYuLmZhZDE0NTcxOTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3Bs YW5jYWNoZS5jCkBAIC0xMDQsMTMgKzEwNCwxMyBAQCBzdGF0aWMgdm9pZCBSZWxlYXNlR2VuZXJp Y1BsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CiBzdGF0aWMgTGlzdCAqUmV2YWxp ZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSAg IFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIHN0YXRpYyBib29sIENoZWNrQ2FjaGVkUGxh bihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKTsKK3N0YXRpYyBib29sIEdlbmVyaWNQbGFu SXNWYWxpZChDYWNoZWRQbGFuICpjcGxhbik7CiBzdGF0aWMgQ2FjaGVkUGxhbiAqQnVpbGRDYWNo ZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0LAogCQkJCQkJ CQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVu dik7CiBzdGF0aWMgYm9vbCBjaG9vc2VfY3VzdG9tX3BsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxh bnNvdXJjZSwKIAkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zKTsKIHN0YXRpYyBk b3VibGUgY2FjaGVkX3BsYW5fY29zdChDYWNoZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxh bm5lcik7CiBzdGF0aWMgUXVlcnkgKlF1ZXJ5TGlzdEdldFByaW1hcnlTdG10KExpc3QgKnN0bXRz KTsKLXN0YXRpYyB2b2lkIEFjcXVpcmVFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9v bCBhY3F1aXJlKTsKIHN0YXRpYyB2b2lkIEFjcXVpcmVQbGFubmVyTG9ja3MoTGlzdCAqc3RtdF9s aXN0LCBib29sIGFjcXVpcmUpOwogc3RhdGljIHZvaWQgU2NhblF1ZXJ5Rm9yTG9ja3MoUXVlcnkg KnBhcnNldHJlZSwgYm9vbCBhY3F1aXJlKTsKIHN0YXRpYyBib29sIFNjYW5RdWVyeVdhbGtlcihO b2RlICpub2RlLCBib29sICphY3F1aXJlKTsKQEAgLTgxNyw4ICs4MTcsMTMgQEAgUmV2YWxpZGF0 ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAgKiBDYWxsZXIgbXVz dCBoYXZlIGFscmVhZHkgY2FsbGVkIFJldmFsaWRhdGVDYWNoZWRRdWVyeSB0byB2ZXJpZnkgdGhh dCB0aGUKICAqIHF1ZXJ5dHJlZSBpcyB1cCB0byBkYXRlLgogICoKLSAqIE9uIGEgInRydWUiIHJl dHVybiwgd2UgaGF2ZSBhY3F1aXJlZCB0aGUgbG9ja3MgbmVlZGVkIHRvIHJ1biB0aGUgcGxhbi4K LSAqIChXZSBtdXN0IGRvIHRoaXMgZm9yIHRoZSAidHJ1ZSIgcmVzdWx0IHRvIGJlIHJhY2UtY29u ZGl0aW9uLWZyZWUuKQorICogSWYgdGhlIHBsYW4gaW5jbHVkZXMgY2hpbGQgcmVsYXRpb25zIGlu dHJvZHVjZWQgYnkgdGhlIHBsYW5uZXIsIHRoZXkKKyAqIHdvdWxkbid0IGJlIGxvY2tlZCB5ZXQu IFRoaXMgaXMgYmVjYXVzZSBBY3F1aXJlUGxhbm5lckxvY2tzKCkgb25seSBsb2NrcworICogcmVs YXRpb25zIHByZXNlbnQgaW4gdGhlIG9yaWdpbmFsIHF1ZXJ5J3MgcmFuZ2UgdGFibGUgKGJlZm9y ZSBwbGFubmVyCisgKiBlbnRyeSkuIEhlbmNlLCB0aGUgcGxhbiBtaWdodCBiZWNvbWUgc3RhbGUg aWYgY2hpbGQgcmVsYXRpb25zIGFyZSBtb2RpZmllZAorICogY29uY3VycmVudGx5LiBEdXJpbmcg dGhlIHBsYW4gaW5pdGlhbGl6YXRpb24sIHRoZSBleGVjdXRvciBtdXN0IGVuc3VyZSB0aGUKKyAq IHBsYW4gKENhY2hlZFBsYW4pIHJlbWFpbnMgdmFsaWQgYWZ0ZXIgbG9ja2luZyBlYWNoIGNoaWxk IHRhYmxlLiBJZiBmb3VuZAorICogaW52YWxpZCwgdGhlIGNhbGxlciBzaG91bGQgYmUgcHJvbXB0 ZWQgdG8gcmVjcmVhdGUgdGhlIHBsYW4uCiAgKi8KIHN0YXRpYyBib29sCiBDaGVja0NhY2hlZFBs YW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKQEAgLTgzMiw2MCArODM3LDU2IEBAIENo 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+ aXNfdmFsaWQ7CiB9CiAKIC8qCkBAIC0xMTU1LDggKzExNTYsMTYgQEAgY2FjaGVkX3BsYW5fY29z dChDYWNoZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcikKICAqIHBsYW4gb3IgYSBj dXN0b20gcGxhbiBmb3IgdGhlIGdpdmVuIHBhcmFtZXRlcnM6IHRoZSBjYWxsZXIgZG9lcyBub3Qg a25vdwogICogd2hpY2ggaXQgd2lsbCBnZXQuCiAgKgotICogT24gcmV0dXJuLCB0aGUgcGxhbiBp cyB2YWxpZCBhbmQgd2UgaGF2ZSBzdWZmaWNpZW50IGxvY2tzIHRvIGJlZ2luCi0gKiBleGVjdXRp b24uCisgKiBUeXBpY2FsbHksIHRoZSBwbGFuIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gaXMg dmFsaWQuIEhvd2V2ZXIsIGEgY2F2ZWF0CisgKiBhcmlzZXMgd2l0aCBpbmhlcml0YW5jZS9wYXJ0 aXRpb24gY2hpbGQgdGFibGVzLiBUaGVzZSBhcmVuJ3QgbG9ja2VkIGJ5CisgKiB0aGlzIGZ1bmN0 aW9uLCBhcyB3ZSBvbmx5IGxvY2sgdGFibGVzIGRpcmVjdGx5IG1lbnRpb25lZCBpbiB0aGUgb3Jp Z2luYWwKKyAqIHF1ZXJ5IGhlcmUuICBUaGUgdGFzayBvZiBsb2NraW5nIHRoZXNlIGNoaWxkIHRh YmxlcyBmYWxscyB0byB0aGUgZXhlY3V0b3IKKyAqIGR1cmluZyBwbGFuIHRyZWUgc2V0dXAuIElm IGFjcXVpcmluZyB0aGVzZSBsb2NrcyBpbnZhbGlkYXRlcyB0aGUgcGxhbiwgdGhlCisgKiBleGVj dXRvciBzaG91bGQgaW5mb3JtIHRoZSBjYWxsZXIgdG8gcmVnZW5lcmF0ZSB0aGUgcGxhbiBieSBp bnZva2luZyB0aGlzCisgKiBmdW5jdGlvbiBhZ2Fpbi4gIFRoZSByZWFzb24gZm9yIHRoaXMgZGVm ZXJyZWQgY2hpbGQgdGFibGUgbG9ja2luZyBtZWNoYW5pc20KKyAqIGlzIGVmZmljaWVuY3k6IG5v dCBhbGwgbWlnaHQgbmVlZCB0byBiZSBsb2NrZWQuIFNvbWUgY291bGQgYmUgcHJ1bmVkIGR1cmlu ZworICogZXhlY3V0b3IgaW5pdGlhbGl6YXRpb24sIGVzcGVjaWFsbHkgaWYgdGhlaXIgY29ycmVz cG9uZGluZyBwbGFuIG5vZGVzCisgKiBmYWNpbGl0YXRlIHBhcnRpdGlvbiBwcnVuaW5nLgogICoK ICAqIE9uIHJldHVybiwgdGhlIHJlZmNvdW50IG9mIHRoZSBwbGFuIGhhcyBiZWVuIGluY3JlbWVu dGVkOyBhIGxhdGVyCiAgKiBSZWxlYXNlQ2FjaGVkUGxhbigpIGNhbGwgaXMgZXhwZWN0ZWQuICBJ ZiAib3duZXIiIGlzIG5vdCBOVUxMIHRoZW4KQEAgLTExOTEsNyArMTIwMCwxMCBAQCBHZXRDYWNo ZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQ YXJhbXMsCiAJewogCQlpZiAoQ2hlY2tDYWNoZWRQbGFuKHBsYW5zb3VyY2UpKQogCQl7Ci0JCQkv KiBXZSB3YW50IGEgZ2VuZXJpYyBwbGFuLCBhbmQgd2UgYWxyZWFkeSBoYXZlIGEgdmFsaWQgb25l ICovCisJCQkvKgorCQkJICogV2Ugd2FudCBhIGdlbmVyaWMgcGxhbiwgYW5kIHdlIGFscmVhZHkg aGF2ZSBhIHZhbGlkIG9uZSwgdGhvdWdoCisJCQkgKiBzZWUgdGhlIGhlYWRlciBjb21tZW50Lgor CQkJICovCiAJCQlwbGFuID0gcGxhbnNvdXJjZS0+Z3BsYW47CiAJCQlBc3NlcnQocGxhbi0+bWFn aWMgPT0gQ0FDSEVEUExBTl9NQUdJQyk7CiAJCX0KQEAgLTEzODksOCArMTQwMSw4IEBAIENhY2hl ZFBsYW5BbGxvd3NTaW1wbGVWYWxpZGl0eUNoZWNrKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3Vy Y2UsCiAJfQogCiAJLyoKLQkgKiBSZWplY3QgaWYgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mgd291bGQg aGF2ZSBhbnl0aGluZyB0byBkby4gIFRoaXMgaXMKLQkgKiBwcm9iYWJseSB1bm5lY2Vzc2FyeSBn aXZlbiB0aGUgcHJldmlvdXMgY2hlY2ssIGJ1dCBsZXQncyBiZSBzYWZlLgorCSAqIFJlamVjdCBp ZiB0aGUgZXhlY3V0b3Igd291bGQgbmVlZCB0byB0YWtlIGFkZGl0aW9uYWwgbG9ja3MsIHRoYXQg aXMsIGluCisJICogYWRkaXRpb24gdG8gdGhvc2UgdGFrZW4gYnkgQWNxdWlyZVBsYW5uZXJMb2Nr cygpIG9uIGEgZ2l2ZW4gcXVlcnkuCiAJICovCiAJZm9yZWFjaChsYywgcGxhbi0+c3RtdF9saXN0 KQogCXsKQEAgLTE3NjYsNTggKzE3NzgsNiBAQCBRdWVyeUxpc3RHZXRQcmltYXJ5U3RtdChMaXN0 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== --0000000000000a00a4060a8df157 Content-Type: application/octet-stream; name="v49-0005-Assert-that-relations-needing-their-permissions-.patch" Content-Disposition: attachment; filename="v49-0005-Assert-that-relations-needing-their-permissions-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lp6ekt5x3 RnJvbSA3MDNkN2YxMjE3MmE3NGMyZWYyNmZhNzcyMzEwNTg0NmI0MzY1YjRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IE1vbiwgMjUgU2VwIDIwMjMgMTE6NTI6MDIgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 OSA1LzhdIEFzc2VydCB0aGF0IHJlbGF0aW9ucyBuZWVkaW5nIHRoZWlyIHBlcm1pc3Npb25zCiBj aGVja2VkIGFyZSBsb2NrZWQKCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAg ICAgfCAxMSArKysrKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jICAgICB8IDQ1 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9s c3lzY2FjaGUuYyB8IDIxICsrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3Iu aCAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oICAgICAgIHwg IDEgKwogNSBmaWxlcyBjaGFuZ2VkLCA3OSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMKaW5kZXggNTc1NTMzNmFiZC4uZmZjNjJlMzc5YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFp bi5jCkBAIC02MjYsNiArNjI2LDE3IEBAIEV4ZWNDaGVja1Blcm1pc3Npb25zKExpc3QgKnJhbmdl VGFibGUsIExpc3QgKnJ0ZXBlcm1pbmZvcywKIAkJCQkgICAocnRlLT5ydGVraW5kID09IFJURV9T VUJRVUVSWSAmJgogCQkJCQlydGUtPnJlbGtpbmQgPT0gUkVMS0lORF9WSUVXKSk7CiAKKwkJCS8q CisJCQkgKiBSZWxhdGlvbnMgd2hvc2UgcGVybWlzc2lvbnMgbmVlZCB0byBiZSBjaGVja2VkIG11 c3QgYWxyZWFkeQorCQkJICogaGF2ZSBiZWVuIGxvY2tlZCBieSB0aGUgcGFyc2VyIG9yIGJ5IEdl dENhY2hlZFBsYW4oKSBpZiBhCisJCQkgKiBjYWNoZWQgcGxhbiBpcyBiZWluZyBleGVjdXRlZC4K KwkJCSAqCisJCQkgKiBYWFggTWF5YmUgd2Ugc2hvdWxkIHdlIHNraXAgY2FsbGluZyBFeGVjQ2hl Y2tQZXJtaXNzaW9ucyBmcm9tCisJCQkgKiBJbml0UGxhbiBpbiBhIHBhcmFsbGVsIHdvcmtlci4K KwkJCSAqLworCQkJQXNzZXJ0KElzUGFyYWxsZWxXb3JrZXIoKSB8fAorCQkJCSAgIENoZWNrUmVs TG9ja2VkQnlNZShydGUtPnJlbGlkLCBBY2Nlc3NTaGFyZUxvY2ssIHRydWUpKTsKKwogCQkJKHZv aWQpIGdldFJURVBlcm1pc3Npb25JbmZvKHJ0ZXBlcm1pbmZvcywgcnRlKTsKIAkJCS8qIE1hbnkt dG8tb25lIG1hcHBpbmcgbm90IGFsbG93ZWQgKi8KIAkJCUFzc2VydCghYm1zX2lzX21lbWJlcihy dGUtPnBlcm1pbmZvaW5kZXgsIGluZGV4c2V0KSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvbG1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYwppbmRl eCBiNDQ3ZGRmMTFiLi4zYzA1ZDhkODdkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl 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 bWdyLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3IuaAppbmRleCAzOWYwZTM0NmIwLi40MjY2 MTQwNTBkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3IuaAorKysgYi9zcmMv aW5jbHVkZS9zdG9yYWdlL2xtZ3IuaApAQCAtNDgsNiArNDgsNyBAQCBleHRlcm4gYm9vbCBDb25k aXRpb25hbExvY2tSZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUp OwogZXh0ZXJuIHZvaWQgVW5sb2NrUmVsYXRpb24oUmVsYXRpb24gcmVsYXRpb24sIExPQ0tNT0RF IGxvY2ttb2RlKTsKIGV4dGVybiBib29sIENoZWNrUmVsYXRpb25Mb2NrZWRCeU1lKFJlbGF0aW9u IHJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSwKIAkJCQkJCQkJCWJvb2wgb3JzdHJvbmdlcik7 CitleHRlcm4gYm9vbCBDaGVja1JlbExvY2tlZEJ5TWUoT2lkIHJlbGlkLCBMT0NLTU9ERSBsb2Nr bW9kZSwgYm9vbCBvcnN0cm9uZ2VyKTsKIGV4dGVybiBib29sIExvY2tIYXNXYWl0ZXJzUmVsYXRp b24oUmVsYXRpb24gcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlKTsKIAogZXh0ZXJuIHZvaWQg TG9ja1JlbGF0aW9uSWRGb3JTZXNzaW9uKExvY2tSZWxJZCAqcmVsaWQsIExPQ0tNT0RFIGxvY2tt b2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5kZXggYzIyY2FiZGY0Mi4uMTc3ZTVkN2YxMiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvbHN5c2NhY2hlLmgKQEAgLTE0MCw2ICsxNDAsNyBAQCBleHRlcm4gY2hhciBnZXRfcmVs X3JlbGtpbmQoT2lkIHJlbGlkKTsKIGV4dGVybiBib29sIGdldF9yZWxfcmVsaXNwYXJ0aXRpb24o T2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3JlbF90YWJsZXNwYWNlKE9pZCByZWxpZCk7CiBl eHRlcm4gY2hhciBnZXRfcmVsX3BlcnNpc3RlbmNlKE9pZCByZWxpZCk7CitleHRlcm4gYm9vbCBn ZXRfcmVsX3JlbGlzc2hhcmVkKE9pZCByZWxpZCk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zvcm1f ZnJvbXNxbChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExpc3QgKnRyZnR5cGVzKTsKIGV4dGVybiBP aWQJZ2V0X3RyYW5zZm9ybV90b3NxbChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExpc3QgKnRyZnR5 cGVzKTsKIGV4dGVybiBib29sIGdldF90eXBpc2RlZmluZWQoT2lkIHR5cGlkKTsKLS0gCjIuMzUu MwoK --0000000000000a00a4060a8df157 Content-Type: application/octet-stream; name="v49-0004-Teach-the-executor-to-lock-child-tables-in-some-.patch" Content-Disposition: attachment; filename="v49-0004-Teach-the-executor-to-lock-child-tables-in-some-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lp6ekt5y4 RnJvbSBkY2U2NjU3ZTkxMWFmZWNlZjgyY2RkZGE5MGUwZDIzNmMyNzNmZTE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgMjIgU2VwIDIwMjMgMTg6MTc6MTUgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 OSA0LzhdIFRlYWNoIHRoZSBleGVjdXRvciB0byBsb2NrIGNoaWxkIHRhYmxlcyBpbiBzb21lIGNh 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 ZGV4IDY0MmQ2M2JlNjEuLjZjZDg0MGQzYTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 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 bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IGY2YzM0MzI4 YjguLjUzMjczNGQ3NTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 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 aW5oZXJpdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvaW5oZXJpdC5jCmluZGV4IGY5 ZDNmZjFlN2EuLjFiOWQ3OWUzNDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL2luaGVyaXQuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9pbmhlcml0LmMK QEAgLTQ5Myw2ICs0OTMsMTMgQEAgZXhwYW5kX3NpbmdsZV9pbmhlcml0YW5jZV9jaGlsZChQbGFu bmVySW5mbyAqcm9vdCwgUmFuZ2VUYmxFbnRyeSAqcGFyZW50cnRlLAogCX0KIAllbHNlCiAJCWNo aWxkcnRlLT5pbmggPSBmYWxzZTsKKworCS8qCisJICogRmxhZyBjaGlsZCB0YWJsZXMgYXMgaW5k aXJlY3RseSByZWZlcmVuY2VkIGluIHRoZSBxdWVyeS4gVGhpcyBoZWxwcworCSAqIHRoZSBleGVj dXRvcidzIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oKSByZWNvZ25pemUgdGhlbSBhcworCSAq IGluaGVyaXRhbmNlIGNoaWxkcmVuLgorCSAqLworCWNoaWxkcnRlLT5pbkZyb21DbCA9IGZhbHNl OwogCWNoaWxkcnRlLT5zZWN1cml0eVF1YWxzID0gTklMOwogCiAJLyogTm8gcGVybWlzc2lvbiBj aGVja2luZyBmb3IgY2hpbGQgUlRFcy4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNl ci9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCmluZGV4IDdhMWRmYjYz NjQuLmNmMjY5ZjhjNTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwpAQCAtMzMwNSwxMCArMzMwNSw5IEBA IHRyYW5zZm9ybUxvY2tpbmdDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBRdWVyeSAqcXJ5LCBM b2NraW5nQ2xhdXNlICpsYywKIAkJLyoKIAkJICogTG9jayBhbGwgcmVndWxhciB0YWJsZXMgdXNl ZCBpbiBxdWVyeSBhbmQgaXRzIHN1YnF1ZXJpZXMuICBXZQogCQkgKiBleGFtaW5lIGluRnJvbUNs IHRvIGV4Y2x1ZGUgYXV0by1hZGRlZCBSVEVzLCBwYXJ0aWN1bGFybHkgTkVXL09MRAotCQkgKiBp biBydWxlcy4gIFRoaXMgaXMgYSBiaXQgb2YgYW4gYWJ1c2Ugb2YgYSBtb3N0bHktb2Jzb2xldGUg ZmxhZywgYnV0Ci0JCSAqIGl0J3MgY29udmVuaWVudC4gIFdlIGNhbid0IHJlbHkgb24gdGhlIG5h bWVzcGFjZSBtZWNoYW5pc20gdGhhdCBoYXMKLQkJICogbGFyZ2VseSByZXBsYWNlZCBpbkZyb21D bCwgc2luY2UgZm9yIGV4YW1wbGUgd2UgbmVlZCB0byBsb2NrCi0JCSAqIGJhc2UtcmVsYXRpb24g UlRFcyBldmVuIGlmIHRoZXkgYXJlIG1hc2tlZCBieSB1cHBlciBqb2lucy4KKwkJICogaW4gcnVs ZXMuICBXZSBjYW4ndCByZWx5IG9uIHRoZSBuYW1lc3BhY2UgbWVjaGFuaXNtIHNpbmNlIGZvcgor CQkgKiBleGFtcGxlIHdlIG5lZWQgdG8gbG9jayBiYXNlLXJlbGF0aW9uIFJURXMgZXZlbiBpZiB0 aGV5IGFyZSBtYXNrZWQKKwkJICogYnkgdXBwZXIgam9pbnMuCiAJCSAqLwogCQlpID0gMDsKIAkJ Zm9yZWFjaChydCwgcXJ5LT5ydGFibGUpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggZTQ5NDMw OWRhOC4uNjQyYzdiZGZlYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtOTg3LDExICs5ODcs MTUgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uQ21kCiAgKgogICoJICBpbkZyb21DbCBtYXJr cyB0aG9zZSByYW5nZSB2YXJpYWJsZXMgdGhhdCBhcmUgbGlzdGVkIGluIHRoZSBGUk9NIGNsYXVz ZS4KICAqCSAgSXQncyBmYWxzZSBmb3IgUlRFcyB0aGF0IGFyZSBhZGRlZCB0byBhIHF1ZXJ5IGJl aGluZCB0aGUgc2NlbmVzLCBzdWNoCi0gKgkgIGFzIHRoZSBORVcgYW5kIE9MRCB2YXJpYWJsZXMg Zm9yIGEgcnVsZSwgb3IgdGhlIHN1YnF1ZXJpZXMgb2YgYSBVTklPTi4KKyAqCSAgYXMgdGhlIE5F VyBhbmQgT0xEIHZhcmlhYmxlcyBmb3IgYSBydWxlLCBvciB0aGUgc3VicXVlcmllcyBvZiBhIFVO SU9OLAorICoJICBvciB0aGUgUlRFcyBvZiBpbmhlcml0YW5jZSBjaGlsZCB0YWJsZXMgdGhhdCBh cmUgYWRkZWQgYnkgdGhlIHBsYW5uZXIuCiAgKgkgIFRoaXMgZmxhZyBpcyBub3QgdXNlZCBkdXJp bmcgcGFyc2luZyAoZXhjZXB0IGluIHRyYW5zZm9ybUxvY2tpbmdDbGF1c2UsCiAgKgkgIHEudi4p OyB0aGUgcGFyc2VyIG5vdyB1c2VzIGEgc2VwYXJhdGUgIm5hbWVzcGFjZSIgZGF0YSBzdHJ1Y3R1 cmUgdG8KICAqCSAgY29udHJvbCB2aXNpYmlsaXR5LiAgQnV0IGl0IGlzIG5lZWRlZCBieSBydWxl dXRpbHMuYyB0byBkZXRlcm1pbmUKLSAqCSAgd2hldGhlciBSVEVzIHNob3VsZCBiZSBzaG93biBp biBkZWNvbXBpbGVkIHF1ZXJpZXMuCisgKgkgIHdoZXRoZXIgUlRFcyBzaG91bGQgYmUgc2hvd24g aW4gZGVjb21waWxlZCBxdWVyaWVzLiAgVGhlIGV4ZWN1dG9yIHVzZXMKKyAqCSAgdGhpcyB0byBh c2NlcnRhaW4gaWYgYW4gUlRFX1JFTEFUSU9OIGVudHJ5IGlzIGZvciBhIHRhYmxlIGV4cGxpY2l0 bHkKKyAqCSAgbmFtZWQgaW4gdGhlIHF1ZXJ5IG9yIGEgY2hpbGQgdGFibGUgYWRkZWQgYnkgdGhl IHBsYW5uZXIuICBUaGlzCisgKgkgIGRpc3RpbmN0aW9uIGlzIHZpdGFsIHdoZW4gY2hpbGQgdGFi bGVzIGluIGEgcGxhbiBtdXN0IGJlIGxvY2tlZC4KICAqCiAgKgkgIHNlY3VyaXR5UXVhbHMgaXMg YSBsaXN0IG9mIHNlY3VyaXR5IGJhcnJpZXIgcXVhbHMgKGJvb2xlYW4gZXhwcmVzc2lvbnMpLAog ICoJICB0byBiZSB0ZXN0ZWQgaW4gdGhlIGxpc3RlZCBvcmRlciBiZWZvcmUgcmV0dXJuaW5nIGEg cm93IGZyb20gdGhlCi0tIAoyLjM1LjMKCg== --0000000000000a00a4060a8df157 Content-Type: application/octet-stream; name="v49-0008-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Disposition: attachment; filename="v49-0008-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lp6ekt5c0 RnJvbSBiYWU0ZGMyMDk2YjY3M2MxZmY4ZmY3ZGEyZjRlMDY4YWUzOWQ4NTllIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1NDoxOSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ5 IDgvOF0gVHJhY2sgb3BlbmVkIHJhbmdlIHRhYmxlIHJlbGF0aW9ucyBpbiBhIExpc3QgaW4KIEVT 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 cy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGNhZDIz MjlhYzkuLmM3YmQyMzU3MzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC02MTgsNiArNjE4LDgg QEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJSW5kZXgJCWVzX3JhbmdlX3RhYmxlX3NpemU7CS8q IHNpemUgb2YgdGhlIHJhbmdlIHRhYmxlIGFycmF5cyAqLwogCVJlbGF0aW9uICAgKmVzX3JlbGF0 aW9uczsJLyogQXJyYXkgb2YgcGVyLXJhbmdlLXRhYmxlLWVudHJ5IFJlbGF0aW9uCiAJCQkJCQkJ CSAqIHBvaW50ZXJzLCBvciBOVUxMIGlmIG5vdCB5ZXQgb3BlbmVkICovCisJTGlzdAkgICAqZXNf b3BlbmVkX3JlbGF0aW9uczsgLyogTGlzdCBvZiBub24tTlVMTCBlbnRyaWVzIGluCisJCQkJCQkJ CQkgICogZXNfcmVsYXRpb25zIGluIG5vIHNwZWNpZmljIG9yZGVyICovCiAJc3RydWN0IEV4ZWNS b3dNYXJrICoqZXNfcm93bWFya3M7CS8qIEFycmF5IG9mIHBlci1yYW5nZS10YWJsZS1lbnRyeQog CQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJrcywgb3IgTlVMTCBpZiBub25lICovCiAJTGlzdAkgICAq ZXNfcnRlcGVybWluZm9zOwkvKiBMaXN0IG9mIFJURVBlcm1pc3Npb25JbmZvICovCi0tIAoyLjM1 LjMKCg== --0000000000000a00a4060a8df157 Content-Type: application/octet-stream; name="v49-0002-Prepare-executor-to-support-detecting-CachedPlan.patch" Content-Disposition: attachment; filename="v49-0002-Prepare-executor-to-support-detecting-CachedPlan.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lp6ekt606 RnJvbSAxYzEzNGY5OWI3OTJjODQyMWQ5ZDVmOTU5MGMyZjc2MWM2ZGQzMWM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgMjIgU2VwIDIwMjMgMTg6MTI6MDQgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 OSAyLzhdIFByZXBhcmUgZXhlY3V0b3IgdG8gc3VwcG9ydCBkZXRlY3RpbmcgQ2FjaGVkUGxhbgog 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 LS0tCiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyAgICAgICAgfCAxMCArKysr Ky0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAgICAgICAgICB8ICAzICstCiBz cmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jICAgICAgICAgICAgfCAgMiArLQogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL2V4dGVuc2lvbi5jICAgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2NvbW1h bmRzL21hdHZpZXcuYyAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9l eGVjTWFpbi5jICAgICAgICAgICAgfCAzOSArKysrKysrKysrKysrKysrKystLS0tCiBzcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyAgICAgICAgfCAgOSArKysrLQogc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgICAgICAgIHwgIDQgKysrCiBzcmMvYmFja2VuZC9l eGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlQWdnLmMgICAgICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUFwcGVuZC5jICAgICAgICAgIHwgMTAgKysrLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl Qml0bWFwQW5kLmMgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1h cEhlYXBzY2FuLmMgIHwgIDQgKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3Iu YyAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5jICAgICAg ICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jICAgICB8 ICA0ICsrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jICAgICAgICAgIHwgIDIg KysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jICAgICB8ICAyICsrCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYyAgICAgICAgICAgfCAgMiArKwogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYyAgICAgICAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jICAgICAgICB8ICA0ICsrKwogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmRleG9ubHlzY2FuLmMgICB8ICAyICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhzY2FuLmMgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0 LmMgICAgICAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5j ICAgICAgICB8ICAyICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYyAgICAg ICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYyAgICAgICAgIHwg IDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jICAgICB8ICA0ICsr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jICAgICAgIHwgIDQgKysrCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyAgICAgfCAxMyArKysrKysrKwog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMgICAgICAgIHwgIDQgKysrCiBzcmMv YmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jICAgICAgfCAgMiArKwogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMgIHwgIDQgKysrCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlUmVzdWx0LmMgICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVNhbXBsZXNjYW4uYyAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVTZXFzY2FuLmMgICAgICAgICB8ICAyICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0 T3AuYyAgICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYyAg ICAgICAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4u YyAgICB8ICAyICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMgICAg fCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYyAgICAgICAgIHwgIDIg KysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYyAgICAgICAgICB8ICAyICsrCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgICAgICAgfCAgMiArKwogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivc3BpLmMgICAgICAgICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQv dGNvcC9wcXVlcnkuYyAgICAgICAgICAgICAgICAgIHwgIDUgKystCiBzcmMvaW5jbHVkZS9leGVj dXRvci9leGVjZGVzYy5oICAgICAgICAgICAgfCAgNCArKysKIHNyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWN1dG9yLmggICAgICAgICAgICB8IDEwICsrKysrKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmggICAgICAgICAgICAgIHwgIDIgKysKIHNyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNo ZS5oICAgICAgICAgICAgICB8IDE0ICsrKysrKysrCiA1MSBmaWxlcyBjaGFuZ2VkLCAxOTQgaW5z ZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jl c19mZHcvcG9zdGdyZXNfZmR3LmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcu YwppbmRleCA2ZGUyYmVjM2I3Li40OTEyMDBhMWZkIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3Rn cmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYworKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jl c19mZHcuYwpAQCAtMjEyNiw3ICsyMTI2LDExIEBAIHBvc3RncmVzRW5kRm9yZWlnbk1vZGlmeShF U3RhdGUgKmVzdGF0ZSwKIHsKIAlQZ0Zkd01vZGlmeVN0YXRlICpmbXN0YXRlID0gKFBnRmR3TW9k aWZ5U3RhdGUgKikgcmVzdWx0UmVsSW5mby0+cmlfRmR3U3RhdGU7CiAKLQkvKiBJZiBmbXN0YXRl IGlzIE5VTEwsIHdlIGFyZSBpbiBFWFBMQUlOOyBub3RoaW5nIHRvIGRvICovCisJLyoKKwkgKiBm bXN0YXRlIGNvdWxkIGJlIE5VTEwgdW5kZXIgdHdvIGNvbmRpdGlvbnM6IGR1cmluZyBhbiBFWFBM QUlOCisJICogb3BlcmF0aW9uLCBvciBpZiBCZWdpbkZvcmVpZ25Nb2RpZnkoKSBoYXNuJ3QgYmVl biBpbnZva2VkLgorCSAqIEluIGVpdGhlciBjYXNlLCBubyBhY3Rpb24gaXMgcmVxdWlyZWQuCisJ ICovCiAJaWYgKGZtc3RhdGUgPT0gTlVMTCkKIAkJcmV0dXJuOwogCkBAIC0yNjYwLDcgKzI2NjQs MTEgQEAgcG9zdGdyZXNCZWdpbkRpcmVjdE1vZGlmeShGb3JlaWduU2NhblN0YXRlICpub2RlLCBp bnQgZWZsYWdzKQogCS8qIEdldCBpbmZvIGFib3V0IGZvcmVpZ24gdGFibGUuICovCiAJcnRpbmRl eCA9IG5vZGUtPnJlc3VsdFJlbEluZm8tPnJpX1JhbmdlVGFibGVJbmRleDsKIAlpZiAoZnNwbGFu LT5zY2FuLnNjYW5yZWxpZCA9PSAwKQorCXsKIAkJZG1zdGF0ZS0+cmVsID0gRXhlY09wZW5TY2Fu UmVsYXRpb24oZXN0YXRlLCBydGluZGV4LCBlZmxhZ3MpOworCQlpZiAodW5saWtlbHkoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJCXJldHVybjsKKwl9CiAJZWxzZQogCQlkbXN0YXRl LT5yZWwgPSBub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb247CiAJdGFibGUgPSBHZXRGb3JlaWdu VGFibGUoUmVsYXRpb25HZXRSZWxpZChkbXN0YXRlLT5yZWwpKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMK aW5kZXggYzY2YTA0N2M0YS4uMDkyOWFkOTI5YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAgLTU1 OCw3ICs1NTgsOCBAQCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCSgoRFJfY29w eSAqKSBkZXN0KS0+Y3N0YXRlID0gY3N0YXRlOwogCiAJCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyBy ZXF1ZXN0aW5nIG5vIG91dHB1dCAqLwotCQljc3RhdGUtPnF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5 RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJY3N0YXRlLT5xdWVyeURlc2MgPSBD cmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwKKwkJCQkJCQkJCQkJcHN0YXRlLT5wX3NvdXJjZXRl eHQsCiAJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJCQkJCUludmFsaWRT bmFwc2hvdCwKIAkJCQkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3Jl YXRlYXMuYwppbmRleCBlOTE5MjBjYTE0Li4xOGIwN2MwMjAwIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0 ZWFzLmMKQEAgLTMyNSw3ICszMjUsNyBAQCBFeGVjQ3JlYXRlVGFibGVBcyhQYXJzZVN0YXRlICpw c3RhdGUsIENyZWF0ZVRhYmxlQXNTdG10ICpzdG10LAogCQlVcGRhdGVBY3RpdmVTbmFwc2hvdENv bW1hbmRJZCgpOwogCiAJCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0 IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2Mo cGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVz YyhwbGFuLCBOVUxMLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCUdldEFjdGl2ZVNu YXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlF bnYsIDApOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggZjFkNzFiYzU0ZS4uYzY5OGU1NGZl YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtNTcyLDcgKzU3Miw3IEBAIEV4cGxhaW5PbmVQ bGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0 YXRlICplcywKIAkJZGVzdCA9IE5vbmVfUmVjZWl2ZXI7CiAKIAkvKiBDcmVhdGUgYSBRdWVyeURl c2MgZm9yIHRoZSBxdWVyeSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFubmVk c3RtdCwgcXVlcnlTdHJpbmcsCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW5uZWRz dG10LCBOVUxMLCBxdWVyeVN0cmluZywKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52 YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCBpbnN0cnVtZW50 X29wdGlvbik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKaW5kZXggNTM1MDcyZDE4MS4uYjI4 N2EyZTg0YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKQEAgLTc5Nyw2ICs3OTcsNyBAQCBl eGVjdXRlX3NxbF9zdHJpbmcoY29uc3QgY2hhciAqc3FsKQogCQkJCVF1ZXJ5RGVzYyAgKnFkZXNj OwogCiAJCQkJcWRlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwKKwkJCQkJCQkJCQlOVUxMLAog CQkJCQkJCQkJCXNxbCwKIAkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBOVUxMLAogCQkJ CQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvbWF0dmlldy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCmluZGV4IGFj MmU3NGZhM2YuLjIyYjhiODIwYzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21h dHZpZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKQEAgLTQwOCw3ICs0 MDgsNyBAQCByZWZyZXNoX21hdHZpZXdfZGF0YWZpbGwoRGVzdFJlY2VpdmVyICpkZXN0LCBRdWVy eSAqcXVlcnksCiAJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAogCS8qIENyZWF0 ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAq LwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBxdWVyeVN0cmluZywKKwlxdWVy eURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJ CUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgTlVM TCwgTlVMTCwgMCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWlu LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IGY3ZjE4ZDMwNTQuLmRl N2JmN2NhNjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtNzksNyArNzksNyBAQCBFeGVj dXRvckVuZF9ob29rX3R5cGUgRXhlY3V0b3JFbmRfaG9vayA9IE5VTEw7CiBFeGVjdXRvckNoZWNr UGVybXNfaG9va190eXBlIEV4ZWN1dG9yQ2hlY2tQZXJtc19ob29rID0gTlVMTDsKIAogLyogZGVj bHMgZm9yIGxvY2FsIHJvdXRpbmVzIG9ubHkgdXNlZCB3aXRoaW4gdGhpcyBtb2R1bGUgKi8KLXN0 YXRpYyB2b2lkIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKK3N0 YXRpYyBib29sIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIHN0 YXRpYyB2b2lkIENoZWNrVmFsaWRSb3dNYXJrUmVsKFJlbGF0aW9uIHJlbCwgUm93TWFya1R5cGUg bWFya1R5cGUpOwogc3RhdGljIHZvaWQgRXhlY1Bvc3Rwcm9jZXNzUGxhbihFU3RhdGUgKmVzdGF0 ZSk7CiBzdGF0aWMgdm9pZCBFeGVjRW5kUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRl ICplc3RhdGUpOwpAQCAtMjYzLDcgKzI2Myw3IEBAIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVl cnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJLyoKIAkgKiBJbml0aWFsaXplIHRoZSBw bGFuIHN0YXRlIHRyZWUKIAkgKi8KLQlJbml0UGxhbihxdWVyeURlc2MsIGVmbGFncyk7CisJKHZv aWQpIEluaXRQbGFuKHF1ZXJ5RGVzYywgZWZsYWdzKTsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjb250ZXh0KTsKIH0KQEAgLTgyOSw5ICs4MjksMTMgQEAgRXhlY0NoZWNrWGFjdFJlYWRP bmx5KFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCkKICAqCiAgKgkJSW5pdGlhbGl6ZXMgdGhlIHF1 ZXJ5IHBsYW46IG9wZW4gZmlsZXMsIGFsbG9jYXRlIHN0b3JhZ2UKICAqCQlhbmQgc3RhcnQgdXAg dGhlIHJ1bGUgbWFuYWdlcgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGxhbiB0cmVlIGlz IHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCBmb3IgZXhlY3V0aW9uLAorICogZmFsc2Ugb3RoZXJ3 aXNlLiAgVGhlIGxhdHRlciBjYXNlIG1heSBvY2N1ciBpZiB0aGUgQ2FjaGVkUGxhbiB0aGF0IHBy b3ZpZGVzCisgKiB0aGUgcGxhbiB0cmVlIChxdWVyeURlc2MtPmNwbGFuKSBnb3QgaW52YWxpZGF0 ZWQgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbi4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwotc3RhdGljIHZv aWQKK3N0YXRpYyBib29sCiBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFn cykKIHsKIAlDbWRUeXBlCQlvcGVyYXRpb24gPSBxdWVyeURlc2MtPm9wZXJhdGlvbjsKQEAgLTgz OSwxMSArODQzLDE0IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdz KQogCVBsYW4JICAgKnBsYW4gPSBwbGFubmVkc3RtdC0+cGxhblRyZWU7CiAJTGlzdAkgICAqcmFu Z2VUYWJsZSA9IHBsYW5uZWRzdG10LT5ydGFibGU7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBxdWVy eURlc2MtPmVzdGF0ZTsKLQlQbGFuU3RhdGUgICpwbGFuc3RhdGU7Ci0JVHVwbGVEZXNjCXR1cFR5 cGU7CisJUGxhblN0YXRlICAqcGxhbnN0YXRlID0gTlVMTDsKKwlUdXBsZURlc2MJdHVwVHlwZSA9 IE5VTEw7CiAJTGlzdENlbGwgICAqbDsKIAlpbnQJCQlpOwogCisJQXNzZXJ0KHF1ZXJ5RGVzYy0+ cGxhbnN0YXRlID09IE5VTEwpOworCUFzc2VydChxdWVyeURlc2MtPnR1cERlc2MgPT0gTlVMTCk7 CisKIAkvKgogCSAqIERvIHBlcm1pc3Npb25zIGNoZWNrcwogCSAqLwpAQCAtODU1LDYgKzg2Miw3 IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCUV4ZWNJbml0 UmFuZ2VUYWJsZShlc3RhdGUsIHJhbmdlVGFibGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3MpOwog CiAJZXN0YXRlLT5lc19wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10OworCWVzdGF0ZS0+ZXNfY2Fj aGVkcGxhbiA9IHF1ZXJ5RGVzYy0+Y3BsYW47CiAKIAkvKgogCSAqIE5leHQsIGJ1aWxkIHRoZSBF eGVjUm93TWFyayBhcnJheSBmcm9tIHRoZSBQbGFuUm93TWFyayhzKSwgaWYgYW55LgpAQCAtODg2 LDYgKzg5NCw4IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQog CQkJCWNhc2UgUk9XX01BUktfS0VZU0hBUkU6CiAJCQkJY2FzZSBST1dfTUFSS19SRUZFUkVOQ0U6 CiAJCQkJCXJlbGF0aW9uID0gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihlc3RhdGUsIHJjLT5y dGkpOworCQkJCQlpZiAodW5saWtlbHkocmVsYXRpb24gPT0gTlVMTCkpCisJCQkJCQlyZXR1cm4g ZmFsc2U7CiAJCQkJCWJyZWFrOwogCQkJCWNhc2UgUk9XX01BUktfQ09QWToKIAkJCQkJLyogbm8g cGh5c2ljYWwgdGFibGUgYWNjZXNzIGlzIHJlcXVpcmVkICovCkBAIC05NTYsNiArOTY2LDggQEAg SW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAKIAkJZXN0YXRlLT5l c19zdWJwbGFuc3RhdGVzID0gbGFwcGVuZChlc3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMsCiAJCQkJ CQkJCQkJICAgc3VicGxhbnN0YXRlKTsKKwkJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFs aWQoZXN0YXRlKSkpCisJCQlyZXR1cm4gZmFsc2U7CiAKIAkJaSsrOwogCX0KQEAgLTk2Niw2ICs5 NzgsOCBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkgKiBw cm9jZXNzaW5nIHR1cGxlcy4KIAkgKi8KIAlwbGFuc3RhdGUgPSBFeGVjSW5pdE5vZGUocGxhbiwg ZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0 ZSkpKQorCQlyZXR1cm4gZmFsc2U7CiAKIAkvKgogCSAqIEdldCB0aGUgdHVwbGUgZGVzY3JpcHRv ciBkZXNjcmliaW5nIHRoZSB0eXBlIG9mIHR1cGxlcyB0byByZXR1cm4uCkBAIC0xMDA5LDYgKzEw MjMsOCBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAogCXF1 ZXJ5RGVzYy0+dHVwRGVzYyA9IHR1cFR5cGU7CiAJcXVlcnlEZXNjLT5wbGFuc3RhdGUgPSBwbGFu c3RhdGU7CisKKwlyZXR1cm4gdHJ1ZTsKIH0KIAogLyoKQEAgLTI4NTgsNyArMjg3NCw4IEBAIEV2 YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpCiAJICog Q2hpbGQgRVBRIEVTdGF0ZXMgc2hhcmUgdGhlIHBhcmVudCdzIGNvcHkgb2YgdW5jaGFuZ2luZyBz dGF0ZSBzdWNoIGFzCiAJICogdGhlIHNuYXBzaG90LCByYW5nZXRhYmxlLCBhbmQgZXh0ZXJuYWwg UGFyYW0gaW5mby4gIFRoZXkgbmVlZCB0aGVpciBvd24KIAkgKiBjb3BpZXMgb2YgbG9jYWwgc3Rh dGUsIGluY2x1ZGluZyBhIHR1cGxlIHRhYmxlLCBlc19wYXJhbV9leGVjX3ZhbHMsCi0JICogcmVz dWx0LXJlbCBpbmZvLCBldGMuCisJICogcmVzdWx0LXJlbCBpbmZvLCBldGMuICBBbHNvLCB3ZSBk b24ndCBwYXNzIHRoZSBwYXJlbnQndCBjb3B5IG9mIHRoZQorCSAqIENhY2hlZFBsYW4sIGJlY2F1 c2Ugbm8gbmV3IGxvY2tzIHdpbGwgYmUgdGFrZW4gZm9yIEV2YWxQbGFuUXVhbCgpLgogCSAqLwog CXJjZXN0YXRlLT5lc19kaXJlY3Rpb24gPSBGb3J3YXJkU2NhbkRpcmVjdGlvbjsKIAlyY2VzdGF0 ZS0+ZXNfc25hcHNob3QgPSBwYXJlbnRlc3RhdGUtPmVzX3NuYXBzaG90OwpAQCAtMjk0Nyw2ICsy OTY0LDEzIEBAIEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxh blRyZWUpCiAJCXN1YnBsYW5zdGF0ZSA9IEV4ZWNJbml0Tm9kZShzdWJwbGFuLCByY2VzdGF0ZSwg MCk7CiAJCXJjZXN0YXRlLT5lc19zdWJwbGFuc3RhdGVzID0gbGFwcGVuZChyY2VzdGF0ZS0+ZXNf c3VicGxhbnN0YXRlcywKIAkJCQkJCQkJCQkJIHN1YnBsYW5zdGF0ZSk7CisKKwkJLyoKKwkJICog QWxsIHRoZSBuZWNlc3NhcnkgbG9ja3MgbXVzdCBhbHJlYWR5IGhhdmUgYmVlbiB0YWtlbiB3aGVu CisJCSAqIGluaXRpYWxpemluZyB0aGUgcGFyZW50J3MgY29weSBvZiBzdWJwbGFuc3RhdGUsIHNv IHRoZSBDYWNoZWRQbGFuLAorCQkgKiBpZiBhbnksIHNob3VsZCBub3QgaGF2ZSBiZWNvbWUgaW52 YWxpZCBkdXJpbmcgRXhlY0luaXROb2RlKCkuCisJCSAqLworCQlBc3NlcnQoRXhlY1BsYW5TdGls bFZhbGlkKHJjZXN0YXRlKSk7CiAJfQogCiAJLyoKQEAgLTI5ODgsNiArMzAxMiw5IEBAIEV2YWxQ bGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpCiAJICovCiAJ ZXBxc3RhdGUtPnJlY2hlY2twbGFuc3RhdGUgPSBFeGVjSW5pdE5vZGUocGxhblRyZWUsIHJjZXN0 YXRlLCAwKTsKIAorCS8qIFNlZSB0aGUgY29tbWVudCBhYm92ZS4gKi8KKwlBc3NlcnQoRXhlY1Bs YW5TdGlsbFZhbGlkKHJjZXN0YXRlKSk7CisKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29u dGV4dCk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxl bC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggY2MyYjhjY2Fi Ny4uNDU3ZWU0NmZhZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFs bGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTEyNDgs OCArMTI0OCwxNSBAQCBFeGVjUGFyYWxsZWxHZXRRdWVyeURlc2Moc2htX3RvYyAqdG9jLCBEZXN0 UmVjZWl2ZXIgKnJlY2VpdmVyLAogCXBhcmFtc3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBB UkFMTEVMX0tFWV9QQVJBTUxJU1RJTkZPLCBmYWxzZSk7CiAJcGFyYW1MSSA9IFJlc3RvcmVQYXJh bUxpc3QoJnBhcmFtc3BhY2UpOwogCi0JLyogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVl cnkuICovCisJLyoKKwkgKiBTZXQgdXAgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeS4gV2hpbGUg dGhlIGxlYWRlciBtaWdodCd2ZSBzb3VyY2VkCisJICogdGhlIHBsYW4gdHJlZSBmcm9tIGEgQ2Fj aGVkUGxhbiwgd2UgZG9uJ3QgaGF2ZSBvbmUgaGVyZS4gVGhpcyBpc24ndAorCSAqIGFuIGlzc3Vl IHNpbmNlIHRoZSBsZWFkZXIgZW5zdXJlZCB0aGUgcmVxdWlyZWQgbG9ja3MsIG1ha2luZyBvdXIK KwkgKiBwbGFuIHRyZWUgdmFsaWQuIEV2ZW4gYXMgd2UgZ2V0IG91ciBvd24gbG9jayBjb3BpZXMg aW4KKwkgKiBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCksIHRoZXkncmUgYWxsIGFscmVhZHkg aGVsZCBieSB0aGUgbGVhZGVyLgorCSAqLwogCXJldHVybiBDcmVhdGVRdWVyeURlc2MocHN0bXQs CisJCQkJCQkgICBOVUxMLAogCQkJCQkJICAgcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBHZXRBY3Rp dmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkgICByZWNlaXZlciwgcGFyYW1M SSwgTlVMTCwgaW5zdHJ1bWVudF9vcHRpb25zKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2Rl LmMKaW5kZXggYjRiNWM1NjJjMC4uZmViYWExOTRjNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1By b2Nub2RlLmMKQEAgLTEzNiw2ICsxMzYsMTAgQEAgc3RhdGljIGJvb2wgRXhlY1NodXRkb3duTm9k ZV93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpjb250ZXh0KTsKICAqCQkgICdlZmxhZ3Mn IGlzIGEgYml0d2lzZSBPUiBvZiBmbGFnIGJpdHMgZGVzY3JpYmVkIGluIGV4ZWN1dG9yLmgKICAq CiAgKgkJUmV0dXJucyBhIFBsYW5TdGF0ZSBub2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVu IFBsYW4gbm9kZS4KKyAqCisgKgkJQ2FsbGVycyBzaG91bGQgY2hlY2sgdXBvbiByZXR1cm5pbmcg dGhhdCBFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKQorICoJCXJldHVybnMgdHJ1ZSBiZWZvcmUg Y29udGludWluZyBmdXJ0aGVyIHdpdGggaXRzIHByb2Nlc3NpbmcsIGJlY2F1c2UgdGhlCisgKgkJ cmV0dXJuZWQgUGxhblN0YXRlIG1pZ2h0IGJlIG9ubHkgcGFydGlhbGx5IHZhbGlkIG90aGVyd2lz ZS4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiBQbGFuU3RhdGUgKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5j dGlvbnMuYwppbmRleCBiYWNlMjUyMzRjLi42NjYzNmIwNWE1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5j dGlvbnMuYwpAQCAtODM4LDYgKzgzOCw3IEBAIHBvc3RxdWVsX3N0YXJ0KGV4ZWN1dGlvbl9zdGF0 ZSAqZXMsIFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQogCQlkZXN0ID0gTm9uZV9SZWNlaXZl cjsKIAogCWVzLT5xZCA9IENyZWF0ZVF1ZXJ5RGVzYyhlcy0+c3RtdCwKKwkJCQkJCQkgTlVMTCwJ LyogZm1ncl9zcWwoKSBkb2Vzbid0IHVzZSBDYWNoZWRQbGFucyAqLwogCQkJCQkJCSBmY2FjaGUt PnNyYywKIAkJCQkJCQkgR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkgSW52YWxpZFNuYXBz aG90LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCmluZGV4IGFmMjJiMTY3NmYuLjU5N2Q2ODEzOWUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQWdnLmMKQEAgLTMzMDQsNiArMzMwNCw4IEBAIEV4ZWNJbml0QWdnKEFn ZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCWVmbGFncyAmPSB+RVhFQ19G TEFHX1JFV0lORDsKIAlvdXRlclBsYW4gPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3Rh dGUoYWdnc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3MpOwor CWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gYWdn c3RhdGU7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgc291cmNlIHR1cGxlIHR5cGUuCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQXBwZW5kLmMKaW5kZXggYTJhZjIyMWUwNS4uNTNjYTlkYzg1ZCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVBcHBlbmQuYwpAQCAtMTg1LDggKzE4NSwxMCBAQCBFeGVjSW5pdEFwcGVuZChB cHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWFwcGVuZHN0YXRlLT5w cy5yZXN1bHRvcHNzZXQgPSB0cnVlOwogCWFwcGVuZHN0YXRlLT5wcy5yZXN1bHRvcHNmaXhlZCA9 IGZhbHNlOwogCi0JYXBwZW5kcGxhbnN0YXRlcyA9IChQbGFuU3RhdGUgKiopIHBhbGxvYyhucGxh bnMgKgotCQkJCQkJCQkJCQkgc2l6ZW9mKFBsYW5TdGF0ZSAqKSk7CisJYXBwZW5kcGxhbnN0YXRl cyA9IChQbGFuU3RhdGUgKiopIHBhbGxvYzAobnBsYW5zICoKKwkJCQkJCQkJCQkJICBzaXplb2Yo UGxhblN0YXRlICopKTsKKwlhcHBlbmRzdGF0ZS0+YXBwZW5kcGxhbnMgPSBhcHBlbmRwbGFuc3Rh dGVzOworCWFwcGVuZHN0YXRlLT5hc19ucGxhbnMgPSBucGxhbnM7CiAKIAkvKgogCSAqIGNhbGwg RXhlY0luaXROb2RlIG9uIGVhY2ggb2YgdGhlIHZhbGlkIHBsYW5zIHRvIGJlIGV4ZWN1dGVkIGFu ZCBzYXZlCkBAIC0yMjEsMTEgKzIyMywxMSBAQCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJZmlyc3R2YWxpZCA9IGo7CiAKIAkJYXBw ZW5kcGxhbnN0YXRlc1tqKytdID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFn cyk7CisJCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQkJcmV0 dXJuIGFwcGVuZHN0YXRlOwogCX0KIAogCWFwcGVuZHN0YXRlLT5hc19maXJzdF9wYXJ0aWFsX3Bs YW4gPSBmaXJzdHZhbGlkOwotCWFwcGVuZHN0YXRlLT5hcHBlbmRwbGFucyA9IGFwcGVuZHBsYW5z dGF0ZXM7Ci0JYXBwZW5kc3RhdGUtPmFzX25wbGFucyA9IG5wbGFuczsKIAogCS8qIEluaXRpYWxp emUgYXN5bmMgc3RhdGUgKi8KIAlhcHBlbmRzdGF0ZS0+YXNfYXN5bmNwbGFucyA9IGFzeW5jcGxh bnM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMKaW5kZXggNGFiYjA2MDlhMC4uNzU1 NmJlNzEzYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYwpAQCAtODksNiArODks OCBAQCBFeGVjSW5pdEJpdG1hcEFuZChCaXRtYXBBbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCXsKIAkJaW5pdE5vZGUgPSAoUGxhbiAqKSBsZmlyc3QobCk7CiAJCWJpdG1h cHBsYW5zdGF0ZXNbaV0gPSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsK KwkJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCQlyZXR1cm4g Yml0bWFwYW5kc3RhdGU7CiAJCWkrKzsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJp dG1hcEhlYXBzY2FuLmMKaW5kZXggZDNmNThjMjJmOS4uZjFmOGUxNmIxNyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKQEAgLTc3MCwxMSArNzcwLDE1IEBAIEV4 ZWNJbml0Qml0bWFwSGVhcFNjYW4oQml0bWFwSGVhcFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCSAqIG9wZW4gdGhlIHNjYW4gcmVsYXRpb24KIAkgKi8KIAljdXJyZW50 UmVsYXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIG5vZGUtPnNjYW4uc2NhbnJl bGlkLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkp KQorCQlyZXR1cm4gc2NhbnN0YXRlOwogCiAJLyoKIAkgKiBpbml0aWFsaXplIGNoaWxkIG5vZGVz CiAJICovCiAJb3V0ZXJQbGFuU3RhdGUoc2NhbnN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBs YW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIHNjYW5zdGF0ZTsKIAogCS8qCiAJICogZ2V0IHRoZSBz Y2FuIHR5cGUgZnJvbSB0aGUgcmVsYXRpb24gZGVzY3JpcHRvci4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJpdG1hcE9yLmMKaW5kZXggYWNlMTg1OTNhYS4uN2QyYmY0NWQ5YyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUJpdG1hcE9yLmMKQEAgLTkwLDYgKzkwLDggQEAgRXhlY0luaXRCaXRtYXBPcihCaXRt YXBPciAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJewogCQlpbml0Tm9kZSA9 IChQbGFuICopIGxmaXJzdChsKTsKIAkJYml0bWFwcGxhbnN0YXRlc1tpXSA9IEV4ZWNJbml0Tm9k ZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCQlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3Rp bGxWYWxpZChlc3RhdGUpKSkKKwkJCXJldHVybiBiaXRtYXBvcnN0YXRlOwogCQlpKys7CiAJfQog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMKaW5kZXggMjhiNWJiOTM1My4uYTBiZWZiZDBjNiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVDdXN0b20uYwpAQCAtNjEsNiArNjEsOCBAQCBFeGVjSW5pdEN1 c3RvbVNjYW4oQ3VzdG9tU2NhbiAqY3NjYW4sIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CWlmIChzY2FucmVsaWQgPiAwKQogCXsKIAkJc2Nhbl9yZWwgPSBFeGVjT3BlblNjYW5SZWxhdGlv bihlc3RhdGUsIHNjYW5yZWxpZCwgZWZsYWdzKTsKKwkJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkpCisJCQlyZXR1cm4gY3NzOwogCQljc3MtPnNzLnNzX2N1cnJlbnRS ZWxhdGlvbiA9IHNjYW5fcmVsOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUZvcmVpZ25zY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNj YW4uYwppbmRleCAzYWJhMjgyODVhLi4zMzZhY2ZmNzE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlRm9yZWlnbnNjYW4uYwpAQCAtMTczLDYgKzE3Myw4IEBAIEV4ZWNJbml0Rm9yZWlnblNjYW4o Rm9yZWlnblNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWlmIChzY2Fu cmVsaWQgPiAwKQogCXsKIAkJY3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVsYXRpb24o ZXN0YXRlLCBzY2FucmVsaWQsIGVmbGFncyk7CisJCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGls bFZhbGlkKGVzdGF0ZSkpKQorCQkJcmV0dXJuIHNjYW5zdGF0ZTsKIAkJc2NhbnN0YXRlLT5zcy5z c19jdXJyZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRpb247CiAJCWZkd3JvdXRpbmUgPSBHZXRG ZHdSb3V0aW5lRm9yUmVsYXRpb24oY3VycmVudFJlbGF0aW9uLCB0cnVlKTsKIAl9CkBAIC0yNjQs NiArMjY2LDggQEAgRXhlY0luaXRGb3JlaWduU2NhbihGb3JlaWduU2NhbiAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaWYgKG91dGVyUGxhbihub2RlKSkKIAkJb3V0ZXJQbGFu U3RhdGUoc2NhbnN0YXRlKSA9CiAJCQlFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3Rh dGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkp CisJCXJldHVybiBzY2Fuc3RhdGU7CiAKIAkvKgogCSAqIFRlbGwgdGhlIEZEVyB0byBpbml0aWFs aXplIHRoZSBzY2FuLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhl ci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCmluZGV4IDFhM2M4YWJkYWQu LmM1MjQwMjJjMDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKQEAgLTg5LDYgKzg5LDgg QEAgRXhlY0luaXRHYXRoZXIoR2F0aGVyICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAkgKi8KIAlvdXRlck5vZGUgPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUo Z2F0aGVyc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyTm9kZSwgZXN0YXRlLCBlZmxhZ3MpOwor CWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gZ2F0 aGVyc3RhdGU7CiAJdHVwRGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKG91dGVyUGxhblN0YXRlKGdh dGhlcnN0YXRlKSk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUdhdGhlck1lcmdlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYwpp bmRleCBjNmZiNDVmZWUwLi42NzZmYWFiZWY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlR2F0aGVyTWVyZ2UuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0 aGVyTWVyZ2UuYwpAQCAtMTA4LDYgKzEwOCw4IEBAIEV4ZWNJbml0R2F0aGVyTWVyZ2UoR2F0aGVy TWVyZ2UgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqLwogCW91dGVyTm9k ZSA9IG91dGVyUGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZShnbV9zdGF0ZSkgPSBFeGVjSW5p dE5vZGUob3V0ZXJOb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxh blN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBnbV9zdGF0ZTsKIAogCS8qCiAJICogTGVh ZGVyIG1heSBhY2Nlc3MgRXhlY1Byb2NOb2RlIHJlc3VsdCBkaXJlY3RseSAoaWYKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUdyb3VwLmMKaW5kZXggNmRmZTVhMWQyMy4uZWZhMWM0NGFiNCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUdyb3VwLmMKQEAgLTE4NSw2ICsxODUsOCBAQCBFeGVjSW5pdEdyb3VwKEdyb3VwICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIGNoaWxkIG5v ZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUoZ3Jwc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVy UGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGls bFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gZ3Jwc3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxp emUgc2NhbiBzbG90IGFuZCB0eXBlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUhhc2guYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKaW5kZXggODhiYTMz Njg4Mi4uMWE0YmQ1NTA0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhh c2guYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCkBAIC0zODYsNiArMzg2 LDggQEAgRXhlY0luaXRIYXNoKEhhc2ggKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCSAqIGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShoYXNo c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOwor CWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gaGFz aHN0YXRlOwogCiAJLyoKIAkgKiBpbml0aWFsaXplIG91ciByZXN1bHQgc2xvdCBhbmQgdHlwZS4g Tm8gbmVlZCB0byBidWlsZCBwcm9qZWN0aW9uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlSGFzaGpvaW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5j CmluZGV4IDAzZGQ5MzE1MjcuLmUzYjNjMjMwNWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVIYXNoam9pbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNo am9pbi5jCkBAIC03NTIsOCArNzUyLDEyIEBAIEV4ZWNJbml0SGFzaEpvaW4oSGFzaEpvaW4gKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWhhc2hOb2RlID0gKEhhc2ggKikgaW5u ZXJQbGFuKG5vZGUpOwogCiAJb3V0ZXJQbGFuU3RhdGUoaGpzdGF0ZSkgPSBFeGVjSW5pdE5vZGUo b3V0ZXJOb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxs VmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBoanN0YXRlOwogCW91dGVyRGVzYyA9IEV4ZWNHZXRS ZXN1bHRUeXBlKG91dGVyUGxhblN0YXRlKGhqc3RhdGUpKTsKIAlpbm5lclBsYW5TdGF0ZShoanN0 YXRlKSA9IEV4ZWNJbml0Tm9kZSgoUGxhbiAqKSBoYXNoTm9kZSwgZXN0YXRlLCBlZmxhZ3MpOwor CWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gaGpz dGF0ZTsKIAlpbm5lckRlc2MgPSBFeGVjR2V0UmVzdWx0VHlwZShpbm5lclBsYW5TdGF0ZShoanN0 YXRlKSk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3Jl bWVudGFsU29ydC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5j CmluZGV4IDI4YTBlODFjYjMuLjYyMWZmYWZlMDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSW5jcmVtZW50YWxTb3J0LmMKQEAgLTEwNDEsNiArMTA0MSw4IEBAIEV4ZWNJbml0SW5jcmVt ZW50YWxTb3J0KEluY3JlbWVudGFsU29ydCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJICogbm9kZXMgbWF5IGJlIGFibGUgdG8gZG8gc29tZXRoaW5nIG1vcmUgdXNlZnVsLgog CSAqLwogCW91dGVyUGxhblN0YXRlKGluY3Jzb3J0c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVy UGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGls bFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gaW5jcnNvcnRzdGF0ZTsKIAogCS8qCiAJICogSW5p dGlhbGl6ZSBzY2FuIHNsb3QgYW5kIHR5cGUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4 b25seXNjYW4uYwppbmRleCAxZjM4NDNhYmU5Li5jNTU1YzE0ODg4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKQEAgLTQ5NSw2ICs0OTUsOCBAQCBFeGVjSW5pdElu ZGV4T25seVNjYW4oSW5kZXhPbmx5U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJICogb3BlbiB0aGUgc2NhbiByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9 IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFn cyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVy biBpbmRleHN0YXRlOwogCiAJaW5kZXhzdGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3Vy cmVudFJlbGF0aW9uOwogCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7 CS8qIG5vIGhlYXAgc2NhbiBoZXJlICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlSW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMK aW5kZXggMzJlMTcxNGYxNS4uYTNiZDFmN2ZiMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRl eHNjYW4uYwpAQCAtOTA4LDYgKzkwOCw4IEBAIEV4ZWNJbml0SW5kZXhTY2FuKEluZGV4U2NhbiAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUgc2NhbiByZWxh dGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0 ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxh blN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBpbmRleHN0YXRlOwogCiAJaW5kZXhzdGF0 ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3VycmVudFJlbGF0aW9uOwogCWluZGV4c3RhdGUt PnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CS8qIG5vIGhlYXAgc2NhbiBoZXJlICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVMaW1pdC5jCmluZGV4IGE5N2JhYzlmNmQuLmFiMTMzZjE1ODAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMaW1pdC5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVMaW1pdC5jCkBAIC00NzYsNiArNDc2LDggQEAgRXhlY0luaXRMaW1pdChM aW1pdCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJQbGFu ID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKGxpbWl0c3RhdGUpID0gRXhlY0lu aXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1Bs YW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gbGltaXRzdGF0ZTsKIAogCS8qCiAJICog aW5pdGlhbGl6ZSBjaGlsZCBleHByZXNzaW9ucwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUxvY2tSb3dzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3Mu YwppbmRleCAyNmZiZTk1YzU3Li5lMWVmNzY4NTcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTG9ja1Jvd3MuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9j a1Jvd3MuYwpAQCAtMzIyLDYgKzMyMiw4IEBAIEV4ZWNJbml0TG9ja1Jvd3MoTG9ja1Jvd3MgKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIHRoZW4gaW5pdGlhbGl6ZSBvdXRl ciBwbGFuCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUobHJzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0 ZXJQbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFs aWQoZXN0YXRlKSkpCisJCXJldHVybiBscnN0YXRlOwogCiAJLyogbm9kZSByZXR1cm5zIHVubW9k aWZpZWQgc2xvdHMgZnJvbSB0aGUgb3V0ZXIgcGxhbiAqLwogCWxyc3RhdGUtPnBzLnJlc3VsdG9w c3NldCA9IHRydWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJp YWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jCmluZGV4IDAzYzUxNDkw MGIuLmMzOGVlZjA5OWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRl cmlhbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jCkBAIC0yMTQs NiArMjE0LDggQEAgRXhlY0luaXRNYXRlcmlhbChNYXRlcmlhbCAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAKIAlvdXRlclBsYW4gPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQ bGFuU3RhdGUobWF0c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxh Z3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1 cm4gbWF0c3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgcmVzdWx0IHR5cGUgYW5kIHNsb3Qu IE5vIG5lZWQgdG8gaW5pdGlhbGl6ZSBwcm9qZWN0aW9uIGluZm8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWVtb2l6ZS5jCmluZGV4IDliMTNlMmU1NTIuLmRmZDY5NWFkMDcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1lbW9pemUuYwpAQCAtOTU3LDYgKzk1Nyw4IEBAIEV4ZWNJbml0TWVtb2l6ZShNZW1vaXpl ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCW91dGVyTm9kZSA9IG91dGVy UGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZShtc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVy Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlk KGVzdGF0ZSkpKQorCQlyZXR1cm4gbXN0YXRlOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHJldHVy biBzbG90IGFuZCB0eXBlLiBObyBuZWVkIHRvIGluaXRpYWxpemUgcHJvamVjdGlvbiBpbmZvCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCmluZGV4IDBhNDJhMDRiMTkuLjUyYzNl ZGYyNzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCkBAIC0xMjAsNyAr MTIwLDcgQEAgRXhlY0luaXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiAJCW1lcmdlc3RhdGUtPm1zX3BydW5lX3N0YXRlID0gTlVMTDsK IAl9CiAKLQltZXJnZXBsYW5zdGF0ZXMgPSAoUGxhblN0YXRlICoqKSBwYWxsb2MobnBsYW5zICog c2l6ZW9mKFBsYW5TdGF0ZSAqKSk7CisJbWVyZ2VwbGFuc3RhdGVzID0gKFBsYW5TdGF0ZSAqKikg cGFsbG9jMChucGxhbnMgKiBzaXplb2YoUGxhblN0YXRlICopKTsKIAltZXJnZXN0YXRlLT5tZXJn ZXBsYW5zID0gbWVyZ2VwbGFuc3RhdGVzOwogCW1lcmdlc3RhdGUtPm1zX25wbGFucyA9IG5wbGFu czsKIApAQCAtMTUxLDYgKzE1MSw4IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQg Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlQbGFuCSAgICppbml0Tm9kZSA9 IChQbGFuICopIGxpc3RfbnRoKG5vZGUtPm1lcmdlcGxhbnMsIGkpOwogCiAJCW1lcmdlcGxhbnN0 YXRlc1tqKytdID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJCWlm ICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQkJcmV0dXJuIG1lcmdl c3RhdGU7CiAJfQogCiAJbWVyZ2VzdGF0ZS0+cHMucHNfUHJvakluZm8gPSBOVUxMOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCmluZGV4IDRiMTgxNjIxZjkuLmU1ZDRmOGUyMWQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMKQEAgLTE0OTAsMTEgKzE0OTAsMTUgQEAg RXhlY0luaXRNZXJnZUpvaW4oTWVyZ2VKb2luICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIAltZXJnZXN0YXRlLT5tal9Ta2lwTWFya1Jlc3RvcmUgPSBub2RlLT5za2lwX21hcmtf cmVzdG9yZTsKIAogCW91dGVyUGxhblN0YXRlKG1lcmdlc3RhdGUpID0gRXhlY0luaXROb2RlKG91 dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5T dGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gbWVyZ2VzdGF0ZTsKIAlvdXRlckRlc2MgPSBF eGVjR2V0UmVzdWx0VHlwZShvdXRlclBsYW5TdGF0ZShtZXJnZXN0YXRlKSk7CiAJaW5uZXJQbGFu U3RhdGUobWVyZ2VzdGF0ZSkgPSBFeGVjSW5pdE5vZGUoaW5uZXJQbGFuKG5vZGUpLCBlc3RhdGUs CiAJCQkJCQkJCQkJCSAgbWVyZ2VzdGF0ZS0+bWpfU2tpcE1hcmtSZXN0b3JlID8KIAkJCQkJCQkJ CQkJICBlZmxhZ3MgOgogCQkJCQkJCQkJCQkgIChlZmxhZ3MgfCBFWEVDX0ZMQUdfTUFSSykpOwor CWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gbWVy Z2VzdGF0ZTsKIAlpbm5lckRlc2MgPSBFeGVjR2V0UmVzdWx0VHlwZShpbm5lclBsYW5TdGF0ZSht ZXJnZXN0YXRlKSk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpp bmRleCBiYzgyZmIwMzNhLi5lNzU1MDBhMWY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9k aWZ5VGFibGUuYwpAQCAtNDAwMiw2ICs0MDAyLDEzIEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9k aWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJCQkJCSAgIGxp bml0aWFsX2ludChub2RlLT5yZXN1bHRSZWxhdGlvbnMpKTsKIAl9CiAKKwkvKgorCSAqIEV4ZWNJ bml0UmVzdWx0UmVsYXRpb24oKSBtYXkgaGF2ZSByZXR1cm5lZCB3aXRob3V0IGluaXRpYWxpemlu ZworCSAqIHJvb3RSZXN1bHRSZWxJbmZvIGlmIHRoZSBwbGFuIGdvdCBpbnZhbGlkYXRlZCwgc28g Y2hlY2suCisJICovCisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkp CisJCXJldHVybiBtdHN0YXRlOworCiAJLyogc2V0IHVwIGVwcXN0YXRlIHdpdGggZHVtbXkgc3Vi cGxhbiBkYXRhIGZvciB0aGUgbW9tZW50ICovCiAJRXZhbFBsYW5RdWFsSW5pdCgmbXRzdGF0ZS0+ bXRfZXBxc3RhdGUsIGVzdGF0ZSwgTlVMTCwgTklMLAogCQkJCQkgbm9kZS0+ZXBxUGFyYW0sIG5v ZGUtPnJlc3VsdFJlbGF0aW9ucyk7CkBAIC00MDMwLDYgKzQwMzcsMTAgQEAgRXhlY0luaXRNb2Rp ZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ CXsKIAkJCUV4ZWNJbml0UmVzdWx0UmVsYXRpb24oZXN0YXRlLCByZXN1bHRSZWxJbmZvLCByZXN1 bHRSZWxhdGlvbik7CiAKKwkJCS8qIFNlZSB0aGUgY29tbWVudCBhYm92ZS4gKi8KKwkJCWlmICh1 bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQkJCXJldHVybiBtdHN0YXRl OworCiAJCQkvKgogCQkJICogRm9yIGNoaWxkIHJlc3VsdCByZWxhdGlvbnMsIHN0b3JlIHRoZSBy b290IHJlc3VsdCByZWxhdGlvbgogCQkJICogcG9pbnRlci4gIFdlIGRvIHNvIGZvciB0aGUgY29u dmVuaWVuY2Ugb2YgcGxhY2VzIHRoYXQgd2FudCB0bwpAQCAtNDA1Niw2ICs0MDY3LDggQEAgRXhl Y0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJICogTm93IHdlIG1heSBpbml0aWFsaXplIHRoZSBzdWJwbGFuLgogCSAqLwogCW91 dGVyUGxhblN0YXRlKG10c3RhdGUpID0gRXhlY0luaXROb2RlKHN1YnBsYW4sIGVzdGF0ZSwgZWZs YWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0 dXJuIG10c3RhdGU7CiAKIAkvKgogCSAqIERvIGFkZGl0aW9uYWwgcGVyLXJlc3VsdC1yZWxhdGlv biBpbml0aWFsaXphdGlvbi4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVO ZXN0bG9vcC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKaW5kZXggMTIx MWQ4NzFlYS4uOGQ2N2QxN2UxMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU5lc3Rsb29wLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKQEAg LTI5NSwxMSArMjk1LDE1IEBAIEV4ZWNJbml0TmVzdExvb3AoTmVzdExvb3AgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIHZhbHVlcy4KIAkgKi8KIAlvdXRlclBsYW5TdGF0 ZShubHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdz KTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJu IG5sc3RhdGU7CiAJaWYgKG5vZGUtPm5lc3RQYXJhbXMgPT0gTklMKQogCQllZmxhZ3MgfD0gRVhF Q19GTEFHX1JFV0lORDsKIAllbHNlCiAJCWVmbGFncyAmPSB+RVhFQ19GTEFHX1JFV0lORDsKIAlp bm5lclBsYW5TdGF0ZShubHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShpbm5lclBsYW4obm9kZSksIGVz dGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KSkKKwkJcmV0dXJuIG5sc3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgcmVzdWx0IHNsb3Qs IHR5cGUgYW5kIHByb2plY3Rpb24uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlUHJvamVjdFNldC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYwpp bmRleCA1MTQ2Njk1NThjLi4yMDc0YmE2NjgzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlUHJvamVjdFNldC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9q ZWN0U2V0LmMKQEAgLTI1NSw2ICsyNTUsOCBAQCBFeGVjSW5pdFByb2plY3RTZXQoUHJvamVjdFNl dCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGls ZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRl clBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3Rp bGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIHN0YXRlOwogCiAJLyoKIAkgKiB3ZSBkb24ndCB1 c2UgaW5uZXIgcGxhbgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vy c2l2ZXVuaW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYwpp bmRleCAwODYzN2E2NGRiLi5mMDcyMDVmOTU4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlUmVjdXJzaXZldW5pb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl UmVjdXJzaXZldW5pb24uYwpAQCAtMjQ0LDcgKzI0NCwxMSBAQCBFeGVjSW5pdFJlY3Vyc2l2ZVVu aW9uKFJlY3Vyc2l2ZVVuaW9uICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkg KiBpbml0aWFsaXplIGNoaWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUocnVzdGF0ZSkg PSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVu bGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBydXN0YXRlOwog CWlubmVyUGxhblN0YXRlKHJ1c3RhdGUpID0gRXhlY0luaXROb2RlKGlubmVyUGxhbihub2RlKSwg ZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0 ZSkpKQorCQlyZXR1cm4gcnVzdGF0ZTsKIAogCS8qCiAJICogSWYgaGFzaGluZywgcHJlY29tcHV0 ZSBmbWdyIGxvb2t1cCBkYXRhIGZvciBpbm5lciBsb29wLCBhbmQgY3JlYXRlIHRoZQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVJlc3VsdC5jCmluZGV4IGYxNTkwMmU4NDAuLjY4MjBkM2JmZDUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlUmVzdWx0LmMKQEAgLTIwOCw2ICsyMDgsOCBAQCBFeGVjSW5pdFJlc3VsdChS ZXN1bHQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIGluaXRpYWxpemUg Y2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShyZXNzdGF0ZSkgPSBFeGVjSW5pdE5v ZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiByZXNzdGF0ZTsKIAogCS8qCiAJICog d2UgZG9uJ3QgdXNlIGlubmVyIHBsYW4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVTYW1wbGVzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5j CmluZGV4IGE2ODEzNTU5ZTYuLjAyMDUxZmVhNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNh bXBsZXNjYW4uYwpAQCAtMTI1LDYgKzEyNSw4IEBAIEV4ZWNJbml0U2FtcGxlU2NhbihTYW1wbGVT Y2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY09wZW5TY2FuUmVs YXRpb24oZXN0YXRlLAogCQkJCQkJCSBub2RlLT5zY2FuLnNjYW5yZWxpZCwKIAkJCQkJCQkgZWZs YWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0 dXJuIHNjYW5zdGF0ZTsKIAogCS8qIHdlIHdvbid0IHNldCB1cCB0aGUgSGVhcFNjYW5EZXNjIHRp bGwgbGF0ZXIgKi8KIAlzY2Fuc3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwppbmRleCA5MTEyNjZkYTA3Li45ZTNlZjk0Mzg4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKQEAgLTE1Myw2ICsxNTMsOCBAQCBFeGVjSW5p dFNlcVNjYW4oU2VxU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCUV4 ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwKIAkJCQkJCQkgbm9kZS0+c2Nhbi5zY2FucmVsaWQs CiAJCQkJCQkJIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0 YXRlKSkpCisJCXJldHVybiBzY2Fuc3RhdGU7CiAKIAkvKiBhbmQgY3JlYXRlIHNsb3Qgd2l0aCB0 aGUgYXBwcm9wcmlhdGUgcm93dHlwZSAqLwogCUV4ZWNJbml0U2NhblR1cGxlU2xvdChlc3RhdGUs ICZzY2Fuc3RhdGUtPnNzLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNl dE9wLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYwppbmRleCA5MmJkMmRhOGUw Li40NmUyOTRiYTUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3Au YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYwpAQCAtNTI4LDYgKzUyOCw4 IEBAIEV4ZWNJbml0U2V0T3AoU2V0T3AgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCWlmIChub2RlLT5zdHJhdGVneSA9PSBTRVRPUF9IQVNIRUQpCiAJCWVmbGFncyAmPSB+RVhF Q19GTEFHX1JFV0lORDsKIAlvdXRlclBsYW5TdGF0ZShzZXRvcHN0YXRlKSA9IEV4ZWNJbml0Tm9k ZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIHNldG9wc3RhdGU7CiAJb3V0ZXJEZXNj ID0gRXhlY0dldFJlc3VsdFR5cGUob3V0ZXJQbGFuU3RhdGUoc2V0b3BzdGF0ZSkpOwogCiAJLyoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlU29ydC5jCmluZGV4IGM4YTM1YjY0YTguLjlkZTcxN2FhN2MgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVNvcnQuYwpAQCAtMjYzLDYgKzI2Myw4IEBAIEV4ZWNJbml0U29ydChTb3J0 ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAllZmxhZ3MgJj0gfihFWEVDX0ZM QUdfUkVXSU5EIHwgRVhFQ19GTEFHX0JBQ0tXQVJEIHwgRVhFQ19GTEFHX01BUkspOwogCiAJb3V0 ZXJQbGFuU3RhdGUoc29ydHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVz dGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KSkKKwkJcmV0dXJuIHNvcnRzdGF0ZTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBzY2FuIHNsb3Qg YW5kIHR5cGUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlz Y2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMKaW5kZXggOTFk N2FlODJjZS4uZDljMTBkMWY2ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVN1YnF1ZXJ5c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNj YW4uYwpAQCAtMTI0LDYgKzEyNCw4IEBAIEV4ZWNJbml0U3VicXVlcnlTY2FuKFN1YnF1ZXJ5U2Nh biAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBzdWJx dWVyeQogCSAqLwogCXN1YnF1ZXJ5c3RhdGUtPnN1YnBsYW4gPSBFeGVjSW5pdE5vZGUobm9kZS0+ c3VicGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZh bGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gc3VicXVlcnlzdGF0ZTsKIAogCS8qCiAJICogSW5pdGlh bGl6ZSBzY2FuIHNsb3QgYW5kIHR5cGUgKG5lZWRlZCBieSBFeGVjQXNzaWduU2NhblByb2plY3Rp b25JbmZvKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nh bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCmluZGV4IGQ2YjRl ZDJlNDIuLjgzMWY1MTRjNGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVU aWRyYW5nZXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2Fu LmMKQEAgLTM3OCw2ICszNzgsOCBAQCBFeGVjSW5pdFRpZFJhbmdlU2NhbihUaWRSYW5nZVNjYW4g Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIG9wZW4gdGhlIHNjYW4gcmVs YXRpb24KIAkgKi8KIAljdXJyZW50UmVsYXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3Rh dGUsIG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1Bs YW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gdGlkcmFuZ2VzdGF0ZTsKIAogCXRpZHJh bmdlc3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRSZWxhdGlvbjsKIAl0aWRy YW5nZXN0YXRlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOwkvKiBubyB0YWJsZSBzY2Fu IGhlcmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCmluZGV4IDc0ZWM2YWZkY2MuLjY1 NzQxMWVmMTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYwpAQCAtNTIzLDYgKzUyMyw4 IEBAIEV4ZWNJbml0VGlkU2NhbihUaWRTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIAkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJY3VycmVudFJlbGF0aW9u ID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZs YWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0 dXJuIHRpZHN0YXRlOwogCiAJdGlkc3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJl bnRSZWxhdGlvbjsKIAl0aWRzdGF0ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsgLyog bm8gaGVhcCBzY2FuIGhlcmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVVbmlxdWUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYwppbmRleCAxM2M1 NTYzMjZhLi5lZTMwNjg4NDE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl VW5pcXVlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCkBAIC0xMzYs NiArMTM2LDggQEAgRXhlY0luaXRVbmlxdWUoVW5pcXVlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAkgKiB0aGVuIGluaXRpYWxpemUgb3V0ZXIgcGxhbgogCSAqLwogCW91dGVy UGxhblN0YXRlKHVuaXF1ZXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVz dGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KSkKKwkJcmV0dXJuIHVuaXF1ZXN0YXRlOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHJlc3VsdCBz bG90IGFuZCB0eXBlLiBVbmlxdWUgbm9kZXMgZG8gbm8gcHJvamVjdGlvbnMsIHNvCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlV2luZG93QWdnLmMKaW5kZXggMDI1M2M0NzQ0OC4uODA5Y2VkZjE4NyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwpAQCAtMjQ2MSw2ICsyNDYxLDggQEAgRXhl Y0luaXRXaW5kb3dBZ2coV2luZG93QWdnICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAkgKi8KIAlvdXRlclBsYW4gPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUo d2luc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlm ICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gd2luc3Rh dGU7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgc291cmNlIHR1cGxlIHR5cGUgKHdoaWNoIGlzIGFs c28gdGhlIHR1cGxlIHR5cGUgdGhhdCB3ZSdsbApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivc3BpLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwppbmRleCAwZTQ2YzU5ZDI1 Li44OTJiMjg1M2VkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwpAQCAtMjY2OCw2ICsyNjY4LDcgQEAgX1NQSV9l eGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0 aW9ucywKIAkJCQkJc25hcCA9IEludmFsaWRTbmFwc2hvdDsKIAogCQkJCXFkZXNjID0gQ3JlYXRl UXVlcnlEZXNjKHN0bXQsCisJCQkJCQkJCQkJTlVMTCwKIAkJCQkJCQkJCQlwbGFuc291cmNlLT5x dWVyeV9zdHJpbmcsCiAJCQkJCQkJCQkJc25hcCwgY3Jvc3NjaGVja19zbmFwc2hvdCwKIAkJCQkJ CQkJCQlkZXN0LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9i YWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5kZXggNTU2NWYyMDBjMy4uNGVmMzQ5ZGY4YiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bx dWVyeS5jCkBAIC02NSw2ICs2NSw3IEBAIHN0YXRpYyB2b2lkIERvUG9ydGFsUmV3aW5kKFBvcnRh bCBwb3J0YWwpOwogICovCiBRdWVyeURlc2MgKgogQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10 ICpwbGFubmVkc3RtdCwKKwkJCQlDYWNoZWRQbGFuICpjcGxhbiwKIAkJCQljb25zdCBjaGFyICpz b3VyY2VUZXh0LAogCQkJCVNuYXBzaG90IHNuYXBzaG90LAogCQkJCVNuYXBzaG90IGNyb3NzY2hl Y2tfc25hcHNob3QsCkBAIC03Nyw2ICs3OCw3IEBAIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3Rt dCAqcGxhbm5lZHN0bXQsCiAKIAlxZC0+b3BlcmF0aW9uID0gcGxhbm5lZHN0bXQtPmNvbW1hbmRU eXBlOwkvKiBvcGVyYXRpb24gKi8KIAlxZC0+cGxhbm5lZHN0bXQgPSBwbGFubmVkc3RtdDsJLyog cGxhbiAqLworCXFkLT5jcGxhbiA9IGNwbGFuOwkJCQkvKiBDYWNoZWRQbGFuLCBpZiBwbGFuIGlz IGZyb20gb25lICovCiAJcWQtPnNvdXJjZVRleHQgPSBzb3VyY2VUZXh0OwkvKiBxdWVyeSB0ZXh0 ICovCiAJcWQtPnNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CS8qIHNuYXBz aG90ICovCiAJLyogUkkgY2hlY2sgc25hcHNob3QgKi8KQEAgLTE0NSw3ICsxNDcsNyBAQCBQcm9j ZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCiAJLyoKIAkgKiBDcmVhdGUgdGhlIFF1ZXJ5RGVz YyBvYmplY3QKIAkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgc291cmNl VGV4dCwKKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwgc291cmNlVGV4 dCwKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJ CQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKIApAQCAtNDkzLDYgKzQ5NSw3IEBAIFBvcnRh bFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCSAqIHRoZSBk ZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4KIAkJCQkgKi8KIAkJCQlxdWVyeURlc2MgPSBDcmVhdGVR dWVyeURlc2MobGluaXRpYWxfbm9kZShQbGFubmVkU3RtdCwgcG9ydGFsLT5zdG10cyksCisJCQkJ CQkJCQkJCU5VTEwsCiAJCQkJCQkJCQkJCXBvcnRhbC0+c291cmNlVGV4dCwKIAkJCQkJCQkJCQkJ R2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90LApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWNkZXNjLmgKaW5kZXggYWYyYmYzNmRmYi4uNGI3MzY4YTBkYyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRv ci9leGVjZGVzYy5oCkBAIC0zMiw5ICszMiwxMiBAQAogICovCiB0eXBlZGVmIHN0cnVjdCBRdWVy eURlc2MKIHsKKwlOb2RlVGFnCQl0eXBlOworCiAJLyogVGhlc2UgZmllbGRzIGFyZSBwcm92aWRl ZCBieSBDcmVhdGVRdWVyeURlc2MgKi8KIAlDbWRUeXBlCQlvcGVyYXRpb247CQkvKiBDTURfU0VM RUNULCBDTURfVVBEQVRFLCBldGMuICovCiAJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10OwkvKiBw bGFubmVyJ3Mgb3V0cHV0IChjb3VsZCBiZSB1dGlsaXR5LCB0b28pICovCisJc3RydWN0IENhY2hl ZFBsYW4gKmNwbGFuOwkvKiBDYWNoZWRQbGFuLCBpZiBwbGFubmVkc3RtdCBpcyBmcm9tIG9uZSAq LwogCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQ7CQkvKiBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkg Ki8KIAlTbmFwc2hvdAlzbmFwc2hvdDsJCS8qIHNuYXBzaG90IHRvIHVzZSBmb3IgcXVlcnkgKi8K IAlTbmFwc2hvdAljcm9zc2NoZWNrX3NuYXBzaG90OwkvKiBjcm9zc2NoZWNrIGZvciBSSSB1cGRh dGUvZGVsZXRlICovCkBAIC01Nyw2ICs2MCw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwog CiAvKiBpbiBwcXVlcnkuYyAqLwogZXh0ZXJuIFF1ZXJ5RGVzYyAqQ3JlYXRlUXVlcnlEZXNjKFBs YW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQkJCQkJICBzdHJ1Y3QgQ2FjaGVkUGxhbiAqY3Bs YW4sCiAJCQkJCQkJCSAgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCQkJICBTbmFwc2hv dCBzbmFwc2hvdCwKIAkJCQkJCQkJICBTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90LApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggZTFlZWZiNDAwYi4uM2IzM2IzODE5NiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjdXRvci5oCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAibm9kZXMvbG9ja29w dGlvbnMuaCIKICNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMv bWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9wbGFuY2FjaGUuaCIKIAogCiAvKgpAQCAtMjU2 LDYgKzI1NywxNSBAQCBleHRlcm4gdm9pZCBFeGVjRW5kTm9kZShQbGFuU3RhdGUgKm5vZGUpOwog ZXh0ZXJuIHZvaWQgRXhlY1NodXRkb3duTm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZv aWQgRXhlY1NldFR1cGxlQm91bmQoaW50NjQgdHVwbGVzX25lZWRlZCwgUGxhblN0YXRlICpjaGls ZF9ub2RlKTsKIAorLyoKKyAqIElzIHRoZSBDYWNoZWRQbGFuIGluIGVzX2NhY2hlZHBsYW4gc3Rp bGwgdmFsaWQ/CisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorRXhlY1BsYW5TdGlsbFZhbGlkKEVT dGF0ZSAqZXN0YXRlKQoreworCXJldHVybiBlc3RhdGUtPmVzX2NhY2hlZHBsYW4gPT0gTlVMTCA/ IHRydWUgOgorCQlDYWNoZWRQbGFuU3RpbGxWYWxpZChlc3RhdGUtPmVzX2NhY2hlZHBsYW4pOwor fQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY1Byb2NOb2RlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4 IDVkN2YxN2RlZTAuLjA4NjcwYmM1ZWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC02MjIsNiAr NjIyLDggQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJCQkJCQkJCQkJICogRXhlY1Jvd01hcmtz LCBvciBOVUxMIGlmIG5vbmUgKi8KIAlMaXN0CSAgICplc19ydGVwZXJtaW5mb3M7CS8qIExpc3Qg b2YgUlRFUGVybWlzc2lvbkluZm8gKi8KIAlQbGFubmVkU3RtdCAqZXNfcGxhbm5lZHN0bXQ7CS8q IGxpbmsgdG8gdG9wIG9mIHBsYW4gdHJlZSAqLworCXN0cnVjdCBDYWNoZWRQbGFuICAqZXNfY2Fj aGVkcGxhbjsJLyogQ2FjaGVkUGxhbiBpZiBwbGFubmVkc3RtdCBpcyBmcm9tCisJCQkJCQkJCQkJ ICogb25lLCBvciBOVUxMIGlmIG5vdCAqLwogCWNvbnN0IGNoYXIgKmVzX3NvdXJjZVRleHQ7CS8q IFNvdXJjZSB0ZXh0IGZyb20gUXVlcnlEZXNjICovCiAKIAlKdW5rRmlsdGVyICplc19qdW5rRmls dGVyOwkvKiB0b3AtbGV2ZWwganVuayBmaWx0ZXIsIGlmIGFueSAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUu aAppbmRleCAxMTBlNjQ5ZmNlLi41YTU0ZjhhOTE3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91 dGlscy9wbGFuY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaApAQCAt MjIzLDYgKzIyMywyMCBAQCBleHRlcm4gQ2FjaGVkUGxhbiAqR2V0Q2FjaGVkUGxhbihDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCQkgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFt cywKIAkJCQkJCQkJIFJlc291cmNlT3duZXIgb3duZXIsCiAJCQkJCQkJCSBRdWVyeUVudmlyb25t ZW50ICpxdWVyeUVudik7CisKKy8qCisgKiBDYWNoZWRQbGFuU3RpbGxWYWxpZAorICoJCVJldHVy bnMgaWYgYSBjYWNoZWQgZ2VuZXJpYyBwbGFuIGlzIHN0aWxsIHZhbGlkCisgKgorICogSW52b2tl ZCBieSB0aGUgZXhlY3V0b3IgZm9yIGVhY2ggcmVsYXRpb24gbG9jayBhY3F1aXJlZCBkdXJpbmcg dGhlCisgKiBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGxhbiB0cmVlIHdpdGhpbiB0aGUgQ2FjaGVk UGxhbi4KKyAqLworc3RhdGljIGlubGluZSBib29sCitDYWNoZWRQbGFuU3RpbGxWYWxpZChDYWNo ZWRQbGFuICpjcGxhbikKK3sKKwlyZXR1cm4gY3BsYW4tPmlzX3ZhbGlkOworfQorCiBleHRlcm4g dm9pZCBSZWxlYXNlQ2FjaGVkUGxhbihDYWNoZWRQbGFuICpwbGFuLCBSZXNvdXJjZU93bmVyIG93 bmVyKTsKIAogZXh0ZXJuIGJvb2wgQ2FjaGVkUGxhbkFsbG93c1NpbXBsZVZhbGlkaXR5Q2hlY2so Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKLS0gCjIuMzUuMwoK --0000000000000a00a4060a8df157 Content-Type: application/octet-stream; name="v49-0001-Assorted-tightening-in-various-ExecEnd-routines.patch" Content-Disposition: attachment; filename="v49-0001-Assorted-tightening-in-various-ExecEnd-routines.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lp6ekt617 RnJvbSBmNzkwMmM2OTcwNDU5OGU5ZGJiYzFlZTcyZDQyYmM5Y2E2Yzk4YTIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMjggU2VwIDIwMjMgMTY6NTY6MjkgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 OSAxLzhdIEFzc29ydGVkIHRpZ2h0ZW5pbmcgaW4gdmFyaW91cyBFeGVjRW5kKCkqIHJvdXRpbmVz CgpUaGlzIGluY2x1ZGVzIGFkZGluZyBOVUxMbmVzcyBjaGVja3Mgb24gcG9pbnRlcnMgYmVmb3Jl IGNsZWFuaW5nIHRoZW0KaW4gdXAuICBNYW55IEV4ZWNFbmQqKCkgcm91dGluZXMgYWxyZWFkeSBw ZXJmb3JtIHRoaXMgY2hlY2ssIGJ1dCBhIGZldwppbnN0YW5jZXMgcmVtYWluLiAgVGhlc2UgTlVM TG5lc3MgY2hlY2tzIG1pZ2h0IHNlZW0gcmVkdW5kYW50IGFzCnRoaW5ncyBzdGFuZCBzaW5jZSB0 aGUgRXhlY0VuZCooKSByb3V0aW5lcyBvcGVyYXRlIHVuZGVyIHRoZQphc3N1bXB0aW9uIHRoYXQg dGhlaXIgbWF0Y2hpbmcgRXhlY0luaXQqIHJvdXRpbmUgd291bGQgaGF2ZSBmdWxseQpleGVjdXRl ZCwgZW5zdXJpbmcgcG9pbnRlcnMgYXJlIHNldC4gSG93ZXZlciwgYSBmb3J0aGNvbWluZyBwYXRj aCB3aWxsCm1vZGlmeSBFeGVjSW5pdCogcm91dGluZXMgdG8gc29tZXRpbWVzIGV4aXQgZWFybHks IHBvdGVudGlhbGx5IGxlYXZpbmcKc29tZSBwb2ludGVycyBpbiBhbiB1bmRldGVybWluZWQgc3Rh dGUsIHNvIGl0IHdpbGwgYmVjb21lIGNydWNpYWwgdG8KaGF2ZSB0aGVzZSBOVUxMbmVzcyBjaGVj a3MgaW4gcGxhY2UuCgpUaGlzIGFsc28gYWRkcyBhIGd1YXJkIGF0IHRoZSBiZWdpZ2dpbmcgb2Yg RXZhbFBsYW5RdWFsRW5kKCkgdG8gcmV0dXJuCmVhcmx5IGlmIHRoZSBFUFFTdGF0ZSBkb2VzIG5v dCBhcHBlYXIgdG8gaGF2ZSBiZWVuIGluaXRpYWxpemVkLiAgVGhhdApjYXNlIGNhbiBoYXBwZW4g aWYgdGhlIGNvcnJlc3BvbmRpbmcgRXhlY0luaXQqKCkgcm91dGluZSByZXR1cm5lZAplYXJseSB3 aXRob3V0IGNhbGxpbmcgRXZhbFBsYW5RdWFsSW5pdCgpLgoKV2hpbGUgYXQgaXQsIHRoaXMgY29t bWl0IGVuc3VyZXMgdGhhdCBwb2ludGVycyBhcmUgY29uc2lzdGVudGx5IHNldAp0byBOVUxMIGFm dGVyIGNsZWFudXAgaW4gYWxsIEV4ZWNFbmQqKCkgcm91dGluZXMuCgpGaW5hbGx5LCBmb3IgZW5o YW5jZWQgY29uc2lzdGVuY3ksIHRoZSBmb3JtYXQgb2YgTlVMTG5lc3MgY2hlY2tzIGhhcwpiZWVu IHN0YW5kYXJkaXplZCB0byAiaWYgKHBvaW50ZXIgIT0gTlVMTCkiLCByZXBsYWNpbmcgdGhlIHBy ZXZpb3VzCiJpZiAocG9pbnRlcikiIHN0eWxlLgoKUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzCkRp c2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0ErSGl3cUZHa01TZ2U2VGdDOUtRemRlMG9o cEF5Y0xRdVY3b29pdEVFcGJLQjBPX21nQG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgIHwgIDQgKysKIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVBZ2cuYyAgICAgICAgICAgICB8IDI3ICsrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVBcHBlbmQuYyAgICAgICAgICB8ICAzICsrCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQml0bWFwQW5kLmMgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUJpdG1hcEhlYXBzY2FuLmMgIHwgNDcgKysrKysrKysrKysrKysrLS0tLS0tLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jIHwgMjMgKysrKystLS0tLS0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jICAgICAgICB8ICA0ICstCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYyAgICAgfCAxNyArKysrLS0tLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUdyb3VwLmMgICAgICAgICAgIHwgIDYgKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSGFzaC5jICAgICAgICAgICAgfCAgNiArLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVI YXNoam9pbi5jICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVt ZW50YWxTb3J0LmMgfCAxMyArKysrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9u bHlzY2FuLmMgICB8IDI1ICsrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUlu ZGV4c2Nhbi5jICAgICAgIHwgMjMgKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVMaW1pdC5jICAgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2Nr Um93cy5jICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5j ICAgICAgICB8ICA1ICsrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYyAgICAg ICAgIHwgIDggKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgICAg IHwgIDMgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYyAgICAgICB8ICAy ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICB8IDExICsrKyst CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYyAgICAgICAgfCAgMiArCiBzcmMv YmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jICAgICAgfCAgMSArCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYyAgfCAyNCArKysrKysrKystLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYyAgICAgIHwgIDcgKysrLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAgIHwgMTYgKysrLS0tLS0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTZXRPcC5jICAgICAgICAgICB8ICA2ICsrLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVNvcnQuYyAgICAgICAgICAgIHwgIDUgKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlU3VicXVlcnlzY2FuLmMgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFi bGVGdW5jc2Nhbi5jICAgfCAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdl c2Nhbi5jICAgIHwgMTIgKysrKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5j ICAgICAgICAgfCAgOCArKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMgICAg ICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgICAgICAg fCA0MSArKysrKysrKysrKysrKy0tLS0tCiAzNyBmaWxlcyBjaGFuZ2VkLCAyNDggaW5zZXJ0aW9u cygrKSwgMTIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDRjNWE3 YmJmNjIuLmY3ZjE4ZDMwNTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtMzAxMCw2ICsz MDEwLDEwIEBAIEV2YWxQbGFuUXVhbEVuZChFUFFTdGF0ZSAqZXBxc3RhdGUpCiAJTWVtb3J5Q29u dGV4dCBvbGRjb250ZXh0OwogCUxpc3RDZWxsICAgKmw7CiAKKwkvKiBOb3RoaW5nIHRvIGRvIGlm IG5vIEV2YWxQbGFuUXVhbEluaXQoKSB3YXMgZG9uZSB0byBiZWdpbiB3aXRoLiAqLworCWlmIChl cHFzdGF0ZS0+cGFyZW50ZXN0YXRlID09IE5VTEwpCisJCXJldHVybjsKKwogCXJ0c2l6ZSA9IGVw cXN0YXRlLT5wYXJlbnRlc3RhdGUtPmVzX3JhbmdlX3RhYmxlX3NpemU7CiAKIAkvKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUFnZy5jCmluZGV4IGYxNTRmMjg5MDIuLmFmMjJiMTY3NmYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQWdnLmMKQEAgLTQzMDQsNyArNDMwNCw2IEBAIEdldEFnZ0luaXRWYWwoRGF0dW0gdGV4dElu aXRWYWwsIE9pZCB0cmFuc3R5cGUpCiB2b2lkCiBFeGVjRW5kQWdnKEFnZ1N0YXRlICpub2RlKQog ewotCVBsYW5TdGF0ZSAgKm91dGVyUGxhbjsKIAlpbnQJCQl0cmFuc25vOwogCWludAkJCW51bUdy b3VwaW5nU2V0cyA9IE1heChub2RlLT5tYXhzZXRzLCAxKTsKIAlpbnQJCQlzZXRubzsKQEAgLTQz MTQsNyArNDMxMyw3IEBAIEV4ZWNFbmRBZ2coQWdnU3RhdGUgKm5vZGUpCiAJICogd29ya2VyIGJh Y2sgaW50byBzaGFyZWQgbWVtb3J5IHNvIHRoYXQgaXQgY2FuIGJlIHBpY2tlZCB1cCBieSB0aGUg bWFpbgogCSAqIHByb2Nlc3MgdG8gcmVwb3J0IGluIEVYUExBSU4gQU5BTFlaRS4KIAkgKi8KLQlp ZiAobm9kZS0+c2hhcmVkX2luZm8gJiYgSXNQYXJhbGxlbFdvcmtlcigpKQorCWlmIChub2RlLT5z aGFyZWRfaW5mbyAhPSBOVUxMICYmIElzUGFyYWxsZWxXb3JrZXIoKSkKIAl7CiAJCUFnZ3JlZ2F0 ZUluc3RydW1lbnRhdGlvbiAqc2k7CiAKQEAgLTQzMjcsMTAgKzQzMjYsMTYgQEAgRXhlY0VuZEFn ZyhBZ2dTdGF0ZSAqbm9kZSkKIAogCS8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGNsb3NlZCBhbnkgb3Bl biB0dXBsZXNvcnRzICovCiAKLQlpZiAobm9kZS0+c29ydF9pbikKKwlpZiAobm9kZS0+c29ydF9p biAhPSBOVUxMKQorCXsKIAkJdHVwbGVzb3J0X2VuZChub2RlLT5zb3J0X2luKTsKLQlpZiAobm9k ZS0+c29ydF9vdXQpCisJCW5vZGUtPnNvcnRfaW4gPSBOVUxMOworCX0KKwlpZiAobm9kZS0+c29y dF9vdXQgIT0gTlVMTCkKKwl7CiAJCXR1cGxlc29ydF9lbmQobm9kZS0+c29ydF9vdXQpOworCQlu b2RlLT5zb3J0X291dCA9IE5VTEw7CisJfQogCiAJaGFzaGFnZ19yZXNldF9zcGlsbF9zdGF0ZShu b2RlKTsKIApAQCAtNDM0NiwxOSArNDM1MSwyNSBAQCBFeGVjRW5kQWdnKEFnZ1N0YXRlICpub2Rl KQogCiAJCWZvciAoc2V0bm8gPSAwOyBzZXRubyA8IG51bUdyb3VwaW5nU2V0czsgc2V0bm8rKykK IAkJewotCQkJaWYgKHBlcnRyYW5zLT5zb3J0c3RhdGVzW3NldG5vXSkKKwkJCWlmIChwZXJ0cmFu cy0+c29ydHN0YXRlc1tzZXRub10gIT0gTlVMTCkKIAkJCQl0dXBsZXNvcnRfZW5kKHBlcnRyYW5z LT5zb3J0c3RhdGVzW3NldG5vXSk7CiAJCX0KIAl9CiAKIAkvKiBBbmQgZW5zdXJlIGFueSBhZ2cg c2h1dGRvd24gY2FsbGJhY2tzIGhhdmUgYmVlbiBjYWxsZWQgKi8KIAlmb3IgKHNldG5vID0gMDsg c2V0bm8gPCBudW1Hcm91cGluZ1NldHM7IHNldG5vKyspCisJewogCQlSZVNjYW5FeHByQ29udGV4 dChub2RlLT5hZ2djb250ZXh0c1tzZXRub10pOwotCWlmIChub2RlLT5oYXNoY29udGV4dCkKKwkJ bm9kZS0+YWdnY29udGV4dHNbc2V0bm9dID0gTlVMTDsKKwl9CisJaWYgKG5vZGUtPmhhc2hjb250 ZXh0ICE9IE5VTEwpCisJewogCQlSZVNjYW5FeHByQ29udGV4dChub2RlLT5oYXNoY29udGV4dCk7 CisJCW5vZGUtPmhhc2hjb250ZXh0ID0gTlVMTDsKKwl9CiAKLQlvdXRlclBsYW4gPSBvdXRlclBs YW5TdGF0ZShub2RlKTsKLQlFeGVjRW5kTm9kZShvdXRlclBsYW4pOworCUV4ZWNFbmROb2RlKG91 dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiB9CiAK IHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwppbmRleCA2MDlkZjZiOWU2Li5hMmFmMjIx ZTA1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC0zOTksNyArMzk5LDEwIEBAIEV4 ZWNFbmRBcHBlbmQoQXBwZW5kU3RhdGUgKm5vZGUpCiAJICogc2h1dCBkb3duIGVhY2ggb2YgdGhl IHN1YnNjYW5zCiAJICovCiAJZm9yIChpID0gMDsgaSA8IG5wbGFuczsgaSsrKQorCXsKIAkJRXhl Y0VuZE5vZGUoYXBwZW5kcGxhbnNbaV0pOworCQlhcHBlbmRwbGFuc1tpXSA9IE5VTEw7CisJfQog fQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5k LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMKaW5kZXggNGM1ZWIyYjIz Yi4uNGFiYjA2MDlhMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1h cEFuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYwpAQCAtMTky LDggKzE5Miw4IEBAIEV4ZWNFbmRCaXRtYXBBbmQoQml0bWFwQW5kU3RhdGUgKm5vZGUpCiAJICov CiAJZm9yIChpID0gMDsgaSA8IG5wbGFuczsgaSsrKQogCXsKLQkJaWYgKGJpdG1hcHBsYW5zW2ld KQotCQkJRXhlY0VuZE5vZGUoYml0bWFwcGxhbnNbaV0pOworCQlFeGVjRW5kTm9kZShiaXRtYXBw bGFuc1tpXSk7CisJCWJpdG1hcHBsYW5zW2ldID0gTlVMTDsKIAl9CiB9CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKaW5kZXggMmRiMGFjZmM3Ni4uZDNmNThjMjJm OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKQEAgLTY0OCw0 MCArNjQ4LDU5IEBAIEV4ZWNSZVNjYW5CaXRtYXBIZWFwU2NhbihCaXRtYXBIZWFwU2NhblN0YXRl ICpub2RlKQogdm9pZAogRXhlY0VuZEJpdG1hcEhlYXBTY2FuKEJpdG1hcEhlYXBTY2FuU3RhdGUg Km5vZGUpCiB7Ci0JVGFibGVTY2FuRGVzYyBzY2FuRGVzYzsKLQotCS8qCi0JICogZXh0cmFjdCBp bmZvcm1hdGlvbiBmcm9tIHRoZSBub2RlCi0JICovCi0Jc2NhbkRlc2MgPSBub2RlLT5zcy5zc19j dXJyZW50U2NhbkRlc2M7Ci0KIAkvKgogCSAqIGNsb3NlIGRvd24gc3VicGxhbnMKIAkgKi8KIAlF eGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkg PSBOVUxMOwogCiAJLyoKIAkgKiByZWxlYXNlIGJpdG1hcHMgYW5kIGJ1ZmZlcnMgaWYgYW55CiAJ ICovCi0JaWYgKG5vZGUtPnRibWl0ZXJhdG9yKQorCWlmIChub2RlLT50Ym1pdGVyYXRvciAhPSBO VUxMKQorCXsKIAkJdGJtX2VuZF9pdGVyYXRlKG5vZGUtPnRibWl0ZXJhdG9yKTsKLQlpZiAobm9k ZS0+cHJlZmV0Y2hfaXRlcmF0b3IpCisJCW5vZGUtPnRibWl0ZXJhdG9yID0gTlVMTDsKKwl9CisJ aWYgKG5vZGUtPnByZWZldGNoX2l0ZXJhdG9yICE9IE5VTEwpCisJewogCQl0Ym1fZW5kX2l0ZXJh dGUobm9kZS0+cHJlZmV0Y2hfaXRlcmF0b3IpOwotCWlmIChub2RlLT50Ym0pCisJCW5vZGUtPnBy ZWZldGNoX2l0ZXJhdG9yID0gTlVMTDsKKwl9CisJaWYgKG5vZGUtPnRibSAhPSBOVUxMKQorCXsK IAkJdGJtX2ZyZWUobm9kZS0+dGJtKTsKLQlpZiAobm9kZS0+c2hhcmVkX3RibWl0ZXJhdG9yKQor CQlub2RlLT50Ym0gPSBOVUxMOworCX0KKwlpZiAobm9kZS0+c2hhcmVkX3RibWl0ZXJhdG9yICE9 IE5VTEwpCisJewogCQl0Ym1fZW5kX3NoYXJlZF9pdGVyYXRlKG5vZGUtPnNoYXJlZF90Ym1pdGVy YXRvcik7Ci0JaWYgKG5vZGUtPnNoYXJlZF9wcmVmZXRjaF9pdGVyYXRvcikKKwkJbm9kZS0+c2hh cmVkX3RibWl0ZXJhdG9yID0gTlVMTDsKKwl9CisJaWYgKG5vZGUtPnNoYXJlZF9wcmVmZXRjaF9p dGVyYXRvciAhPSBOVUxMKQorCXsKIAkJdGJtX2VuZF9zaGFyZWRfaXRlcmF0ZShub2RlLT5zaGFy ZWRfcHJlZmV0Y2hfaXRlcmF0b3IpOworCQlub2RlLT5zaGFyZWRfcHJlZmV0Y2hfaXRlcmF0b3Ig PSBOVUxMOworCX0KIAlpZiAobm9kZS0+dm1idWZmZXIgIT0gSW52YWxpZEJ1ZmZlcikKKwl7CiAJ CVJlbGVhc2VCdWZmZXIobm9kZS0+dm1idWZmZXIpOworCQlub2RlLT52bWJ1ZmZlciA9IEludmFs aWRCdWZmZXI7CisJfQogCWlmIChub2RlLT5wdm1idWZmZXIgIT0gSW52YWxpZEJ1ZmZlcikKKwl7 CiAJCVJlbGVhc2VCdWZmZXIobm9kZS0+cHZtYnVmZmVyKTsKKwkJbm9kZS0+cHZtYnVmZmVyID0g SW52YWxpZEJ1ZmZlcjsKKwl9CiAKIAkvKgotCSAqIGNsb3NlIGhlYXAgc2NhbgorCSAqIGNsb3Nl IGhlYXAgc2NhbiAobm8tb3AgaWYgd2UgZGlkbid0IHN0YXJ0IGl0KQogCSAqLwotCXRhYmxlX2Vu ZHNjYW4oc2NhbkRlc2MpOworCWlmIChub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgIT0gTlVM TCkKKwl7CisJCXRhYmxlX2VuZHNjYW4obm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKTsKKwkJ bm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsKKwl9CiB9CiAKIC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYwppbmRleCA3Y2Y4NTMy YmM5Li40ODhmMTFhM2ZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0 bWFwSW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4 c2Nhbi5jCkBAIC0xNzUsMjIgKzE3NSwyMSBAQCBFeGVjUmVTY2FuQml0bWFwSW5kZXhTY2FuKEJp dG1hcEluZGV4U2NhblN0YXRlICpub2RlKQogdm9pZAogRXhlY0VuZEJpdG1hcEluZGV4U2NhbihC aXRtYXBJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIHsKLQlSZWxhdGlvbglpbmRleFJlbGF0aW9uRGVz YzsKLQlJbmRleFNjYW5EZXNjIGluZGV4U2NhbkRlc2M7Ci0KLQkvKgotCSAqIGV4dHJhY3QgaW5m b3JtYXRpb24gZnJvbSB0aGUgbm9kZQotCSAqLwotCWluZGV4UmVsYXRpb25EZXNjID0gbm9kZS0+ Ymlzc19SZWxhdGlvbkRlc2M7Ci0JaW5kZXhTY2FuRGVzYyA9IG5vZGUtPmJpc3NfU2NhbkRlc2M7 CisJLyogY2xvc2UgdGhlIHNjYW4gKG5vLW9wIGlmIHdlIGRpZG4ndCBzdGFydCBpdCkgKi8KKwlp ZiAobm9kZS0+Ymlzc19TY2FuRGVzYyAhPSBOVUxMKQorCXsKKwkJaW5kZXhfZW5kc2Nhbihub2Rl LT5iaXNzX1NjYW5EZXNjKTsKKwkJbm9kZS0+Ymlzc19TY2FuRGVzYyA9IE5VTEw7CisJfQogCiAJ LyoKIAkgKiBjbG9zZSB0aGUgaW5kZXggcmVsYXRpb24gKG5vLW9wIGlmIHdlIGRpZG4ndCBvcGVu IGl0KQogCSAqLwotCWlmIChpbmRleFNjYW5EZXNjKQotCQlpbmRleF9lbmRzY2FuKGluZGV4U2Nh bkRlc2MpOwotCWlmIChpbmRleFJlbGF0aW9uRGVzYykKLQkJaW5kZXhfY2xvc2UoaW5kZXhSZWxh dGlvbkRlc2MsIE5vTG9jayk7CisJaWYgKG5vZGUtPmJpc3NfUmVsYXRpb25EZXNjICE9IE5VTEwp CisJeworCQlpbmRleF9jbG9zZShub2RlLT5iaXNzX1JlbGF0aW9uRGVzYywgTm9Mb2NrKTsKKwkJ bm9kZS0+Ymlzc19SZWxhdGlvbkRlc2MgPSBOVUxMOworCX0KIH0KIAogLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYwppbmRleCAwYmY4YWY5NjUyLi5hY2UxODU5M2FhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYwpAQCAtMjEwLDggKzIxMCw4IEBAIEV4ZWNF bmRCaXRtYXBPcihCaXRtYXBPclN0YXRlICpub2RlKQogCSAqLwogCWZvciAoaSA9IDA7IGkgPCBu cGxhbnM7IGkrKykKIAl7Ci0JCWlmIChiaXRtYXBwbGFuc1tpXSkKLQkJCUV4ZWNFbmROb2RlKGJp dG1hcHBsYW5zW2ldKTsKKwkJRXhlY0VuZE5vZGUoYml0bWFwcGxhbnNbaV0pOworCQliaXRtYXBw bGFuc1tpXSA9IE5VTEw7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlRm9yZWlnbnNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nh bi5jCmluZGV4IDczOTEzZWJiMTguLjNhYmEyODI4NWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVGb3JlaWduc2Nhbi5jCkBAIC0zMDEsMTcgKzMwMSwyMCBAQCBFeGVjRW5kRm9yZWlnblNjYW4o Rm9yZWlnblNjYW5TdGF0ZSAqbm9kZSkKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBz LnN0YXRlOwogCiAJLyogTGV0IHRoZSBGRFcgc2h1dCBkb3duICovCi0JaWYgKHBsYW4tPm9wZXJh dGlvbiAhPSBDTURfU0VMRUNUKQorCWlmIChub2RlLT5mZHdyb3V0aW5lICE9IE5VTEwpCiAJewot CQlpZiAoZXN0YXRlLT5lc19lcHFfYWN0aXZlID09IE5VTEwpCi0JCQlub2RlLT5mZHdyb3V0aW5l LT5FbmREaXJlY3RNb2RpZnkobm9kZSk7CisJCWlmIChwbGFuLT5vcGVyYXRpb24gIT0gQ01EX1NF TEVDVCkKKwkJeworCQkJaWYgKGVzdGF0ZS0+ZXNfZXBxX2FjdGl2ZSA9PSBOVUxMKQorCQkJCW5v ZGUtPmZkd3JvdXRpbmUtPkVuZERpcmVjdE1vZGlmeShub2RlKTsKKwkJfQorCQllbHNlCisJCQlu b2RlLT5mZHdyb3V0aW5lLT5FbmRGb3JlaWduU2Nhbihub2RlKTsKIAl9Ci0JZWxzZQotCQlub2Rl LT5mZHdyb3V0aW5lLT5FbmRGb3JlaWduU2Nhbihub2RlKTsKIAogCS8qIFNodXQgZG93biBhbnkg b3V0ZXIgcGxhbi4gKi8KLQlpZiAob3V0ZXJQbGFuU3RhdGUobm9kZSkpCi0JCUV4ZWNFbmROb2Rl KG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2Rl KSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogfQogCiAvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlR2F0aGVyLmMKaW5kZXggYmIyNTAwYTQ2OS4uMWEzYzhhYmRhZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVHYXRoZXIuYwpAQCAtMjQ5LDYgKzI0OSw3IEBAIHZvaWQKIEV4ZWNFbmRH YXRoZXIoR2F0aGVyU3RhdGUgKm5vZGUpCiB7CiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUo bm9kZSkpOwkvKiBsZXQgY2hpbGRyZW4gY2xlYW4gdXAgZmlyc3QgKi8KKwlvdXRlclBsYW5TdGF0 ZShub2RlKSA9IE5VTEw7CiAJRXhlY1NodXRkb3duR2F0aGVyKG5vZGUpOwogfQogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCmluZGV4IDdhNzFhNTg1MDkuLmM2ZmI0NWZlZTAg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCkBAIC0yODksNiArMjg5LDcg QEAgdm9pZAogRXhlY0VuZEdhdGhlck1lcmdlKEdhdGhlck1lcmdlU3RhdGUgKm5vZGUpCiB7CiAJ RXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwkvKiBsZXQgY2hpbGRyZW4gY2xlYW4g dXAgZmlyc3QgKi8KKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiAJRXhlY1NodXRkb3du R2F0aGVyTWVyZ2Uobm9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVHcm91cC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKaW5kZXggOGM2 NTBmMGU0Ni4uNmRmZTVhMWQyMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUdyb3VwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKQEAgLTIyNiwx MCArMjI2LDggQEAgRXhlY0luaXRHcm91cChHcm91cCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiB2b2lkCiBFeGVjRW5kR3JvdXAoR3JvdXBTdGF0ZSAqbm9kZSkKIHsKLQlQbGFu U3RhdGUgICpvdXRlclBsYW47Ci0KLQlvdXRlclBsYW4gPSBvdXRlclBsYW5TdGF0ZShub2RlKTsK LQlFeGVjRW5kTm9kZShvdXRlclBsYW4pOworCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5v ZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiB9CiAKIHZvaWQKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlSGFzaC5jCmluZGV4IGU3MmYwOTg2YzIuLjg4YmEzMzY4ODIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUhhc2guYwpAQCAtNDEzLDEzICs0MTMsMTEgQEAgRXhlY0luaXRIYXNoKEhhc2ggKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogdm9pZAogRXhlY0VuZEhhc2goSGFzaFN0YXRl ICpub2RlKQogewotCVBsYW5TdGF0ZSAgKm91dGVyUGxhbjsKLQogCS8qCiAJICogc2h1dCBkb3du IHRoZSBzdWJwbGFuCiAJICovCi0Jb3V0ZXJQbGFuID0gb3V0ZXJQbGFuU3RhdGUobm9kZSk7Ci0J RXhlY0VuZE5vZGUob3V0ZXJQbGFuKTsKKwlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2Rl KSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogfQogCiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUhhc2hqb2luLmMKaW5kZXggMjVhMmQ3OGYxNS4uMDNkZDkzMTUyNyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUhhc2hqb2luLmMKQEAgLTg2MSw3ICs4NjEsNyBAQCBFeGVjRW5kSGFzaEpvaW4o SGFzaEpvaW5TdGF0ZSAqbm9kZSkKIAkvKgogCSAqIEZyZWUgaGFzaCB0YWJsZQogCSAqLwotCWlm IChub2RlLT5oal9IYXNoVGFibGUpCisJaWYgKG5vZGUtPmhqX0hhc2hUYWJsZSAhPSBOVUxMKQog CXsKIAkJRXhlY0hhc2hUYWJsZURlc3Ryb3kobm9kZS0+aGpfSGFzaFRhYmxlKTsKIAkJbm9kZS0+ aGpfSGFzaFRhYmxlID0gTlVMTDsKQEAgLTg3MSw3ICs4NzEsOSBAQCBFeGVjRW5kSGFzaEpvaW4o SGFzaEpvaW5TdGF0ZSAqbm9kZSkKIAkgKiBjbGVhbiB1cCBzdWJ0cmVlcwogCSAqLwogCUV4ZWNF bmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5V TEw7CiAJRXhlY0VuZE5vZGUoaW5uZXJQbGFuU3RhdGUobm9kZSkpOworCWlubmVyUGxhblN0YXRl KG5vZGUpID0gTlVMTDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmNyZW1lbnRhbFNvcnQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1l bnRhbFNvcnQuYwppbmRleCBjZDA5NGExOTBjLi4yOGEwZTgxY2IzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCkBAIC0xMDc5LDggKzEwNzksMTYgQEAgRXhl Y0VuZEluY3JlbWVudGFsU29ydChJbmNyZW1lbnRhbFNvcnRTdGF0ZSAqbm9kZSkKIHsKIAlTT19w cmludGYoIkV4ZWNFbmRJbmNyZW1lbnRhbFNvcnQ6IHNodXR0aW5nIGRvd24gc29ydCBub2RlXG4i KTsKIAotCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qobm9kZS0+Z3JvdXBfcGl2b3QpOwot CUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qobm9kZS0+dHJhbnNmZXJfdHVwbGUpOworCWlm IChub2RlLT5ncm91cF9waXZvdCAhPSBOVUxMKQorCXsKKwkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRh YmxlU2xvdChub2RlLT5ncm91cF9waXZvdCk7CisJCW5vZGUtPmdyb3VwX3Bpdm90ID0gTlVMTDsK Kwl9CisJaWYgKG5vZGUtPnRyYW5zZmVyX3R1cGxlICE9IE5VTEwpCisJeworCQlFeGVjRHJvcFNp bmdsZVR1cGxlVGFibGVTbG90KG5vZGUtPnRyYW5zZmVyX3R1cGxlKTsKKwkJbm9kZS0+dHJhbnNm ZXJfdHVwbGUgPSBOVUxMOworCX0KIAogCS8qCiAJICogUmVsZWFzZSB0dXBsZXNvcnQgcmVzb3Vy Y2VzLgpAQCAtMTEwMCw2ICsxMTA4LDcgQEAgRXhlY0VuZEluY3JlbWVudGFsU29ydChJbmNyZW1l bnRhbFNvcnRTdGF0ZSAqbm9kZSkKIAkgKiBTaHV0IGRvd24gdGhlIHN1YnBsYW4uCiAJICovCiAJ RXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUp ID0gTlVMTDsKIAogCVNPX3ByaW50ZigiRXhlY0VuZEluY3JlbWVudGFsU29ydDogc29ydCBub2Rl IHNodXRkb3duXG4iKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJ bmRleG9ubHlzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5j CmluZGV4IGYxZGIzNTY2NWMuLjFmMzg0M2FiZTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUluZGV4b25seXNjYW4uYwpAQCAtMzY0LDE1ICszNjQsNiBAQCBFeGVjUmVTY2FuSW5kZXhPbmx5 U2NhbihJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUpCiB2b2lkCiBFeGVjRW5kSW5kZXhPbmx5U2Nh bihJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUpCiB7Ci0JUmVsYXRpb24JaW5kZXhSZWxhdGlvbkRl c2M7Ci0JSW5kZXhTY2FuRGVzYyBpbmRleFNjYW5EZXNjOwotCi0JLyoKLQkgKiBleHRyYWN0IGlu Zm9ybWF0aW9uIGZyb20gdGhlIG5vZGUKLQkgKi8KLQlpbmRleFJlbGF0aW9uRGVzYyA9IG5vZGUt Pmlvc3NfUmVsYXRpb25EZXNjOwotCWluZGV4U2NhbkRlc2MgPSBub2RlLT5pb3NzX1NjYW5EZXNj OwotCiAJLyogUmVsZWFzZSBWTSBidWZmZXIgcGluLCBpZiBhbnkuICovCiAJaWYgKG5vZGUtPmlv c3NfVk1CdWZmZXIgIT0gSW52YWxpZEJ1ZmZlcikKIAl7CkBAIC0zODAsMTMgKzM3MSwyMSBAQCBF eGVjRW5kSW5kZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUpCiAJCW5vZGUtPmlv c3NfVk1CdWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCX0KIAorCS8qIGNsb3NlIHRoZSBzY2FuIChu by1vcCBpZiB3ZSBkaWRuJ3Qgc3RhcnQgaXQpICovCisJaWYgKG5vZGUtPmlvc3NfU2NhbkRlc2Mg IT0gTlVMTCkKKwl7CisJCWluZGV4X2VuZHNjYW4obm9kZS0+aW9zc19TY2FuRGVzYyk7CisJCW5v ZGUtPmlvc3NfU2NhbkRlc2MgPSBOVUxMOworCX0KKwogCS8qCiAJICogY2xvc2UgdGhlIGluZGV4 IHJlbGF0aW9uIChuby1vcCBpZiB3ZSBkaWRuJ3Qgb3BlbiBpdCkKIAkgKi8KLQlpZiAoaW5kZXhT Y2FuRGVzYykKLQkJaW5kZXhfZW5kc2NhbihpbmRleFNjYW5EZXNjKTsKLQlpZiAoaW5kZXhSZWxh dGlvbkRlc2MpCi0JCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb25EZXNjLCBOb0xvY2spOworCWlm IChub2RlLT5pb3NzX1JlbGF0aW9uRGVzYyAhPSBOVUxMKQorCXsKKwkJaW5kZXhfY2xvc2Uobm9k ZS0+aW9zc19SZWxhdGlvbkRlc2MsIE5vTG9jayk7CisJCW5vZGUtPmlvc3NfUmVsYXRpb25EZXNj ID0gTlVMTDsKKwl9CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNj YW4uYwppbmRleCAxNGI5YzAwMjE3Li4zMmUxNzE0ZjE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUluZGV4c2Nhbi5jCkBAIC03ODUsMjIgKzc4NSwyMSBAQCBFeGVjSW5kZXhBZHZhbmNlQXJyYXlL ZXlzKEluZGV4QXJyYXlLZXlJbmZvICphcnJheUtleXMsIGludCBudW1BcnJheUtleXMpCiB2b2lk CiBFeGVjRW5kSW5kZXhTY2FuKEluZGV4U2NhblN0YXRlICpub2RlKQogewotCVJlbGF0aW9uCWlu ZGV4UmVsYXRpb25EZXNjOwotCUluZGV4U2NhbkRlc2MgaW5kZXhTY2FuRGVzYzsKLQotCS8qCi0J ICogZXh0cmFjdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBub2RlCi0JICovCi0JaW5kZXhSZWxhdGlv bkRlc2MgPSBub2RlLT5pc3NfUmVsYXRpb25EZXNjOwotCWluZGV4U2NhbkRlc2MgPSBub2RlLT5p c3NfU2NhbkRlc2M7CisJLyogY2xvc2UgdGhlIHNjYW4gKG5vLW9wIGlmIHdlIGRpZG4ndCBzdGFy dCBpdCkgKi8KKwlpZiAobm9kZS0+aXNzX1NjYW5EZXNjICE9IE5VTEwpCisJeworCQlpbmRleF9l bmRzY2FuKG5vZGUtPmlzc19TY2FuRGVzYyk7CisJCW5vZGUtPmlzc19TY2FuRGVzYyA9IE5VTEw7 CisJfQogCiAJLyoKIAkgKiBjbG9zZSB0aGUgaW5kZXggcmVsYXRpb24gKG5vLW9wIGlmIHdlIGRp ZG4ndCBvcGVuIGl0KQogCSAqLwotCWlmIChpbmRleFNjYW5EZXNjKQotCQlpbmRleF9lbmRzY2Fu KGluZGV4U2NhbkRlc2MpOwotCWlmIChpbmRleFJlbGF0aW9uRGVzYykKLQkJaW5kZXhfY2xvc2Uo aW5kZXhSZWxhdGlvbkRlc2MsIE5vTG9jayk7CisJaWYgKG5vZGUtPmlzc19SZWxhdGlvbkRlc2Mg IT0gTlVMTCkKKwl7CisJCWluZGV4X2Nsb3NlKG5vZGUtPmlzc19SZWxhdGlvbkRlc2MsIE5vTG9j ayk7CisJCW5vZGUtPmlzc19SZWxhdGlvbkRlc2MgPSBOVUxMOworCX0KIH0KIAogLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwppbmRleCA1NjU0MTU4ZTNlLi5hOTdiYWM5ZjZkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwpAQCAtNTM1LDYgKzUzNSw3IEBAIHZvaWQKIEV4ZWNF bmRMaW1pdChMaW1pdFN0YXRlICpub2RlKQogewogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRl KG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiB9CiAKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTG9ja1Jvd3MuYwppbmRleCBlNDU5OTcxZDMyLi4yNmZiZTk1YzU3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYwpAQCAtMzg3LDYgKzM4Nyw3IEBAIEV4ZWNFbmRMb2Nr Um93cyhMb2NrUm93c1N0YXRlICpub2RlKQogCS8qIFdlIG1heSBoYXZlIHNodXQgZG93biBFUFEg YWxyZWFkeSwgYnV0IG5vIGhhcm0gaW4gYW5vdGhlciBjYWxsICovCiAJRXZhbFBsYW5RdWFsRW5k KCZub2RlLT5scl9lcHFzdGF0ZSk7CiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkp OworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNYXRlcmlhbC5jCmluZGV4IDc1M2VhMjg5MTUuLjAzYzUxNDkwMGIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVNYXRlcmlhbC5jCkBAIC0yNDMsMTMgKzI0MywxNiBAQCBFeGVjRW5kTWF0ZXJpYWwo TWF0ZXJpYWxTdGF0ZSAqbm9kZSkKIAkgKiBSZWxlYXNlIHR1cGxlc3RvcmUgcmVzb3VyY2VzCiAJ ICovCiAJaWYgKG5vZGUtPnR1cGxlc3RvcmVzdGF0ZSAhPSBOVUxMKQorCXsKIAkJdHVwbGVzdG9y ZV9lbmQobm9kZS0+dHVwbGVzdG9yZXN0YXRlKTsKLQlub2RlLT50dXBsZXN0b3Jlc3RhdGUgPSBO VUxMOworCQlub2RlLT50dXBsZXN0b3Jlc3RhdGUgPSBOVUxMOworCX0KIAogCS8qCiAJICogc2h1 dCBkb3duIHRoZSBzdWJwbGFuCiAJICovCiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9k ZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAogLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKaW5kZXggMTA4NWIzYzc5ZC4uOWIxM2UyZTU1MiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jCkBAIC0xMDYyLDYgKzEwNjIsNyBAQCBFeGVjRW5k TWVtb2l6ZShNZW1vaXplU3RhdGUgKm5vZGUpCiB7CiAjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lO RwogCS8qIFZhbGlkYXRlIHRoZSBtZW1vcnkgYWNjb3VudGluZyBjb2RlIGlzIGNvcnJlY3QgaW4g YXNzZXJ0IGJ1aWxkcy4gKi8KKwlpZiAobm9kZS0+aGFzaHRhYmxlICE9IE5VTEwpCiAJewogCQlp bnQJCQljb3VudDsKIAkJdWludDY0CQltZW0gPSAwOwpAQCAtMTEwOCwxMiArMTEwOSwxNyBAQCBF eGVjRW5kTWVtb2l6ZShNZW1vaXplU3RhdGUgKm5vZGUpCiAJfQogCiAJLyogUmVtb3ZlIHRoZSBj YWNoZSBjb250ZXh0ICovCi0JTWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT50YWJsZUNvbnRleHQp OworCWlmIChub2RlLT50YWJsZUNvbnRleHQgIT0gTlVMTCkKKwl7CisJCU1lbW9yeUNvbnRleHRE ZWxldGUobm9kZS0+dGFibGVDb250ZXh0KTsKKwkJbm9kZS0+dGFibGVDb250ZXh0ID0gTlVMTDsK Kwl9CiAKIAkvKgogCSAqIHNodXQgZG93biB0aGUgc3VicGxhbgogCSAqLwogCUV4ZWNFbmROb2Rl KG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiB9 CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVu ZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKaW5kZXggMjFiNTcy NmU2ZS4uMGE0MmEwNGIxOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l cmdlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMK QEAgLTMzMyw3ICszMzMsMTAgQEAgRXhlY0VuZE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kU3RhdGUg Km5vZGUpCiAJICogc2h1dCBkb3duIGVhY2ggb2YgdGhlIHN1YnNjYW5zCiAJICovCiAJZm9yIChp ID0gMDsgaSA8IG5wbGFuczsgaSsrKQorCXsKIAkJRXhlY0VuZE5vZGUobWVyZ2VwbGFuc1tpXSk7 CisJCW1lcmdlcGxhbnNbaV0gPSBOVUxMOworCX0KIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1lcmdlam9pbi5jCmluZGV4IDNjZGFiNzdkZmMuLjRiMTgxNjIxZjkgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMKQEAgLTE2NDcsNyArMTY0Nyw5IEBAIEV4ZWNFbmRNZXJn ZUpvaW4oTWVyZ2VKb2luU3RhdGUgKm5vZGUpCiAJICogc2h1dCBkb3duIHRoZSBzdWJwbGFucwog CSAqLwogCUV4ZWNFbmROb2RlKGlubmVyUGxhblN0YXRlKG5vZGUpKTsKKwlpbm5lclBsYW5TdGF0 ZShub2RlKSA9IE5VTEw7CiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91 dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIAogCU1KMV9wcmludGYoIkV4ZWNFbmRNZXJnZUpv aW46ICVzXG4iLAogCQkJICAgIm5vZGUgcHJvY2Vzc2luZyBlbmRlZCIpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCBiMTZmYmU5ZTIyLi5iYzgyZmIwMzNhIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNDQ0Nyw3ICs0NDQ3LDkgQEAg RXhlY0VuZE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlU3RhdGUgKm5vZGUpCiAJCWZvciAoaiA9IDA7 IGogPCByZXN1bHRSZWxJbmZvLT5yaV9OdW1TbG90c0luaXRpYWxpemVkOyBqKyspCiAJCXsKIAkJ CUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3QocmVzdWx0UmVsSW5mby0+cmlfU2xvdHNbal0p OworCQkJcmVzdWx0UmVsSW5mby0+cmlfU2xvdHNbal0gPSBOVUxMOwogCQkJRXhlY0Ryb3BTaW5n bGVUdXBsZVRhYmxlU2xvdChyZXN1bHRSZWxJbmZvLT5yaV9QbGFuU2xvdHNbal0pOworCQkJcmVz dWx0UmVsSW5mby0+cmlfUGxhblNsb3RzW2pdID0gTlVMTDsKIAkJfQogCX0KIApAQCAtNDQ1NSwx MiArNDQ1NywxNiBAQCBFeGVjRW5kTW9kaWZ5VGFibGUoTW9kaWZ5VGFibGVTdGF0ZSAqbm9kZSkK IAkgKiBDbG9zZSBhbGwgdGhlIHBhcnRpdGlvbmVkIHRhYmxlcywgbGVhZiBwYXJ0aXRpb25zLCBh bmQgdGhlaXIgaW5kaWNlcwogCSAqIGFuZCByZWxlYXNlIHRoZSBzbG90IHVzZWQgZm9yIHR1cGxl IHJvdXRpbmcsIGlmIHNldC4KIAkgKi8KLQlpZiAobm9kZS0+bXRfcGFydGl0aW9uX3R1cGxlX3Jv dXRpbmcpCisJaWYgKG5vZGUtPm10X3BhcnRpdGlvbl90dXBsZV9yb3V0aW5nICE9IE5VTEwpCiAJ ewogCQlFeGVjQ2xlYW51cFR1cGxlUm91dGluZyhub2RlLCBub2RlLT5tdF9wYXJ0aXRpb25fdHVw bGVfcm91dGluZyk7CisJCW5vZGUtPm10X3BhcnRpdGlvbl90dXBsZV9yb3V0aW5nID0gTlVMTDsK IAotCQlpZiAobm9kZS0+bXRfcm9vdF90dXBsZV9zbG90KQorCQlpZiAobm9kZS0+bXRfcm9vdF90 dXBsZV9zbG90ICE9IE5VTEwpCisJCXsKIAkJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qo bm9kZS0+bXRfcm9vdF90dXBsZV9zbG90KTsKKwkJCW5vZGUtPm10X3Jvb3RfdHVwbGVfc2xvdCA9 IE5VTEw7CisJCX0KIAl9CiAKIAkvKgpAQCAtNDQ3Miw2ICs0NDc4LDcgQEAgRXhlY0VuZE1vZGlm eVRhYmxlKE1vZGlmeVRhYmxlU3RhdGUgKm5vZGUpCiAJICogc2h1dCBkb3duIHN1YnBsYW4KIAkg Ki8KIAlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUo bm9kZSkgPSBOVUxMOwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTmVzdGxvb3AuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jCmlu ZGV4IGViZDE0MDY4NDMuLjEyMTFkODcxZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVOZXN0bG9vcC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9v cC5jCkBAIC0zNjgsNyArMzY4LDkgQEAgRXhlY0VuZE5lc3RMb29wKE5lc3RMb29wU3RhdGUgKm5v ZGUpCiAJICogY2xvc2UgZG93biBzdWJwbGFucwogCSAqLwogCUV4ZWNFbmROb2RlKG91dGVyUGxh blN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiAJRXhlY0VuZE5v ZGUoaW5uZXJQbGFuU3RhdGUobm9kZSkpOworCWlubmVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsK IAogCU5MMV9wcmludGYoIkV4ZWNFbmROZXN0TG9vcDogJXNcbiIsCiAJCQkgICAibm9kZSBwcm9j ZXNzaW5nIGVuZGVkIik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJv amVjdFNldC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYwppbmRleCBh ZWUyNmQzODEzLi41MTQ2Njk1NThjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlUHJvamVjdFNldC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0 LmMKQEAgLTMzMiw2ICszMzIsNyBAQCBFeGVjRW5kUHJvamVjdFNldChQcm9qZWN0U2V0U3RhdGUg Km5vZGUpCiAJICogc2h1dCBkb3duIHN1YnBsYW5zCiAJICovCiAJRXhlY0VuZE5vZGUob3V0ZXJQ bGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAogdm9p ZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYwppbmRleCAzMjA3NjQz MTU2Li4wODYzN2E2NGRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVj dXJzaXZldW5pb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5p b24uYwpAQCAtMjcyLDIwICsyNzIsMzYgQEAgdm9pZAogRXhlY0VuZFJlY3Vyc2l2ZVVuaW9uKFJl Y3Vyc2l2ZVVuaW9uU3RhdGUgKm5vZGUpCiB7CiAJLyogUmVsZWFzZSB0dXBsZXN0b3JlcyAqLwot CXR1cGxlc3RvcmVfZW5kKG5vZGUtPndvcmtpbmdfdGFibGUpOwotCXR1cGxlc3RvcmVfZW5kKG5v ZGUtPmludGVybWVkaWF0ZV90YWJsZSk7CisJaWYgKG5vZGUtPndvcmtpbmdfdGFibGUgIT0gTlVM TCkKKwl7CisJCXR1cGxlc3RvcmVfZW5kKG5vZGUtPndvcmtpbmdfdGFibGUpOworCQlub2RlLT53 b3JraW5nX3RhYmxlID0gTlVMTDsKKwl9CisJaWYgKG5vZGUtPmludGVybWVkaWF0ZV90YWJsZSAh PSBOVUxMKQorCXsKKwkJdHVwbGVzdG9yZV9lbmQobm9kZS0+aW50ZXJtZWRpYXRlX3RhYmxlKTsK KwkJbm9kZS0+aW50ZXJtZWRpYXRlX3RhYmxlID0gTlVMTDsKKwl9CiAKIAkvKiBmcmVlIHN1YnNp ZGlhcnkgc3R1ZmYgaW5jbHVkaW5nIGhhc2h0YWJsZSAqLwotCWlmIChub2RlLT50ZW1wQ29udGV4 dCkKKwlpZiAobm9kZS0+dGVtcENvbnRleHQgIT0gTlVMTCkKKwl7CiAJCU1lbW9yeUNvbnRleHRE ZWxldGUobm9kZS0+dGVtcENvbnRleHQpOwotCWlmIChub2RlLT50YWJsZUNvbnRleHQpCisJCW5v ZGUtPnRlbXBDb250ZXh0ID0gTlVMTDsKKwl9CisJaWYgKG5vZGUtPnRhYmxlQ29udGV4dCAhPSBO VUxMKQorCXsKIAkJTWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT50YWJsZUNvbnRleHQpOworCQlu b2RlLT50YWJsZUNvbnRleHQgPSBOVUxMOworCX0KIAogCS8qCiAJICogY2xvc2UgZG93biBzdWJw bGFucwogCSAqLwogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBs YW5TdGF0ZShub2RlKSA9IE5VTEw7CiAJRXhlY0VuZE5vZGUoaW5uZXJQbGFuU3RhdGUobm9kZSkp OworCWlubmVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVJlc3VsdC5jCmluZGV4IGU5ZjU3MzJmMzMuLmYxNTkwMmU4NDAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlUmVzdWx0LmMKQEAgLTI0NCw2ICsyNDQsNyBAQCBFeGVjRW5kUmVzdWx0KFJl c3VsdFN0YXRlICpub2RlKQogCSAqIHNodXQgZG93biBzdWJwbGFucwogCSAqLwogCUV4ZWNFbmRO b2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7 CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVz Y2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jCmluZGV4IDQxYzFl YTM3YWQuLmE2ODEzNTU5ZTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVT YW1wbGVzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYwpA QCAtMTg1LDE0ICsxODUsMTcgQEAgRXhlY0VuZFNhbXBsZVNjYW4oU2FtcGxlU2NhblN0YXRlICpu b2RlKQogCS8qCiAJICogVGVsbCBzYW1wbGluZyBmdW5jdGlvbiB0aGF0IHdlIGZpbmlzaGVkIHRo ZSBzY2FuLgogCSAqLwotCWlmIChub2RlLT50c21yb3V0aW5lLT5FbmRTYW1wbGVTY2FuKQorCWlm IChub2RlLT50c21yb3V0aW5lICE9IE5VTEwgJiYgbm9kZS0+dHNtcm91dGluZS0+RW5kU2FtcGxl U2NhbikKIAkJbm9kZS0+dHNtcm91dGluZS0+RW5kU2FtcGxlU2Nhbihub2RlKTsKIAogCS8qCi0J ICogY2xvc2UgaGVhcCBzY2FuCisJICogY2xvc2UgaGVhcCBzY2FuIChuby1vcCBpZiB3ZSBkaWRu J3Qgc3RhcnQgaXQpCiAJICovCiAJaWYgKG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYykKKwl7 CiAJCXRhYmxlX2VuZHNjYW4obm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKTsKKwkJbm9kZS0+ c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsKKwl9CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IDQ5YTU5MzNhZmYuLjkxMTI2NmRhMDcgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwpAQCAtMTgzLDE4ICsxODMsMTQgQEAgRXhlY0luaXRT ZXFTY2FuKFNlcVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogdm9pZAog RXhlY0VuZFNlcVNjYW4oU2VxU2NhblN0YXRlICpub2RlKQogewotCVRhYmxlU2NhbkRlc2Mgc2Nh bkRlc2M7Ci0KLQkvKgotCSAqIGdldCBpbmZvcm1hdGlvbiBmcm9tIG5vZGUKLQkgKi8KLQlzY2Fu RGVzYyA9IG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYzsKLQogCS8qCi0JICogY2xvc2UgaGVh cCBzY2FuCisJICogY2xvc2UgaGVhcCBzY2FuIChuby1vcCBpZiB3ZSBkaWRuJ3Qgc3RhcnQgaXQp CiAJICovCi0JaWYgKHNjYW5EZXNjICE9IE5VTEwpCi0JCXRhYmxlX2VuZHNjYW4oc2NhbkRlc2Mp OworCWlmIChub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgIT0gTlVMTCkKKwl7CisJCXRhYmxl X2VuZHNjYW4obm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKTsKKwkJbm9kZS0+c3Muc3NfY3Vy cmVudFNjYW5EZXNjID0gTlVMTDsKKwl9CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVNldE9wLmMKaW5kZXggNWE4NDk2OWNmOC4uOTJiZDJkYThlMCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVNldE9wLmMKQEAgLTU4MywxMCArNTgzLDE0IEBAIHZvaWQKIEV4ZWNFbmRTZXRPcChTZXRPcFN0 YXRlICpub2RlKQogewogCS8qIGZyZWUgc3Vic2lkaWFyeSBzdHVmZiBpbmNsdWRpbmcgaGFzaHRh YmxlICovCi0JaWYgKG5vZGUtPnRhYmxlQ29udGV4dCkKKwlpZiAobm9kZS0+dGFibGVDb250ZXh0 ICE9IE5VTEwpCisJewogCQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPnRhYmxlQ29udGV4dCk7 CisJCW5vZGUtPnRhYmxlQ29udGV4dCA9IE5VTEw7CisJfQogCiAJRXhlY0VuZE5vZGUob3V0ZXJQ bGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVNvcnQuYwppbmRleCBlZWE3ZjJhZTE1Li5jOGEzNWI2NGE4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTb3J0LmMKQEAgLTMwNywxMyArMzA3LDE2IEBAIEV4ZWNFbmRTb3J0KFNvcnRT dGF0ZSAqbm9kZSkKIAkgKiBSZWxlYXNlIHR1cGxlc29ydCByZXNvdXJjZXMKIAkgKi8KIAlpZiAo bm9kZS0+dHVwbGVzb3J0c3RhdGUgIT0gTlVMTCkKKwl7CiAJCXR1cGxlc29ydF9lbmQoKFR1cGxl c29ydHN0YXRlICopIG5vZGUtPnR1cGxlc29ydHN0YXRlKTsKLQlub2RlLT50dXBsZXNvcnRzdGF0 ZSA9IE5VTEw7CisJCW5vZGUtPnR1cGxlc29ydHN0YXRlID0gTlVMTDsKKwl9CiAKIAkvKgogCSAq IHNodXQgZG93biB0aGUgc3VicGxhbgogCSAqLwogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRl KG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiAKIAlTTzFfcHJpbnRmKCJF eGVjRW5kU29ydDogJXNcbiIsCiAJCQkgICAic29ydCBub2RlIHNodXRkb3duIik7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMKaW5kZXggMWVlNjI5NTY2MC4uOTFkN2FlODJj ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYwpAQCAtMTcxLDYgKzE3 MSw3IEBAIEV4ZWNFbmRTdWJxdWVyeVNjYW4oU3VicXVlcnlTY2FuU3RhdGUgKm5vZGUpCiAJICog Y2xvc2UgZG93biBzdWJxdWVyeQogCSAqLwogCUV4ZWNFbmROb2RlKG5vZGUtPnN1YnBsYW4pOwor CW5vZGUtPnN1YnBsYW4gPSBOVUxMOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYwppbmRleCBhNjBkY2Q0OTQzLi44MGVkNGIyNmE4IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmMKQEAgLTIxNyw4ICsyMTcsMTAg QEAgRXhlY0VuZFRhYmxlRnVuY1NjYW4oVGFibGVGdW5jU2NhblN0YXRlICpub2RlKQogCSAqIFJl bGVhc2UgdHVwbGVzdG9yZSByZXNvdXJjZXMKIAkgKi8KIAlpZiAobm9kZS0+dHVwc3RvcmUgIT0g TlVMTCkKKwl7CiAJCXR1cGxlc3RvcmVfZW5kKG5vZGUtPnR1cHN0b3JlKTsKLQlub2RlLT50dXBz dG9yZSA9IE5VTEw7CisJCW5vZGUtPnR1cHN0b3JlID0gTlVMTDsKKwl9CiB9CiAKIC8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYwppbmRleCA2Zjk3YzM1ZGFh Li5kNmI0ZWQyZTQyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFu Z2VzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCkBA IC0zMjcsMTAgKzMyNywxNCBAQCBFeGVjUmVTY2FuVGlkUmFuZ2VTY2FuKFRpZFJhbmdlU2NhblN0 YXRlICpub2RlKQogdm9pZAogRXhlY0VuZFRpZFJhbmdlU2NhbihUaWRSYW5nZVNjYW5TdGF0ZSAq bm9kZSkKIHsKLQlUYWJsZVNjYW5EZXNjIHNjYW4gPSBub2RlLT5zcy5zc19jdXJyZW50U2NhbkRl c2M7Ci0KLQlpZiAoc2NhbiAhPSBOVUxMKQotCQl0YWJsZV9lbmRzY2FuKHNjYW4pOworCS8qCisJ ICogY2xvc2UgaGVhcCBzY2FuIChuby1vcCBpZiB3ZSBkaWRuJ3Qgc3RhcnQgaXQpCisJICovCisJ aWYgKG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyAhPSBOVUxMKQorCXsKKwkJdGFibGVfZW5k c2Nhbihub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MpOworCQlub2RlLT5zcy5zc19jdXJyZW50 U2NhbkRlc2MgPSBOVUxMOworCX0KIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVU aWRzY2FuLmMKaW5kZXggMTUwNTUwNzdkMC4uNzRlYzZhZmRjYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlVGlkc2Nhbi5jCkBAIC00NzAsOCArNDcwLDE0IEBAIEV4ZWNSZVNjYW5UaWRTY2FuKFRpZFNj YW5TdGF0ZSAqbm9kZSkKIHZvaWQKIEV4ZWNFbmRUaWRTY2FuKFRpZFNjYW5TdGF0ZSAqbm9kZSkK IHsKLQlpZiAobm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKQorCS8qCisJICogY2xvc2UgaGVh cCBzY2FuIChuby1vcCBpZiB3ZSBkaWRuJ3Qgc3RhcnQgaXQpCisJICovCisJaWYgKG5vZGUtPnNz LnNzX2N1cnJlbnRTY2FuRGVzYyAhPSBOVUxMKQorCXsKIAkJdGFibGVfZW5kc2Nhbihub2RlLT5z cy5zc19jdXJyZW50U2NhbkRlc2MpOworCQlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBO VUxMOworCX0KIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVVuaXF1ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCmluZGV4 IDAxZjk1MTE5N2MuLjEzYzU1NjMyNmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVVbmlxdWUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMKQEAg LTE2OSw2ICsxNjksNyBAQCB2b2lkCiBFeGVjRW5kVW5pcXVlKFVuaXF1ZVN0YXRlICpub2RlKQog ewogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShu b2RlKSA9IE5VTEw7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVdpbmRvd0FnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCmluZGV4 IDMyNTgzMDVmNTcuLjAyNTNjNDc0NDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVXaW5kb3dBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdn LmMKQEAgLTEzNTEsMTEgKzEzNTEsMTQgQEAgcmVsZWFzZV9wYXJ0aXRpb24oV2luZG93QWdnU3Rh dGUgKndpbnN0YXRlKQogCSAqIGFueSBhZ2dyZWdhdGUgdGVtcCBkYXRhKS4gIFdlIGRvbid0IHJl bHkgb24gcmV0YWlsIHBmcmVlIGJlY2F1c2Ugc29tZQogCSAqIGFnZ3JlZ2F0ZXMgbWlnaHQgaGF2 ZSBhbGxvY2F0ZWQgZGF0YSB3ZSBkb24ndCBoYXZlIGRpcmVjdCBwb2ludGVycyB0by4KIAkgKi8K LQlNZW1vcnlDb250ZXh0UmVzZXQod2luc3RhdGUtPnBhcnRjb250ZXh0KTsKLQlNZW1vcnlDb250 ZXh0UmVzZXQod2luc3RhdGUtPmFnZ2NvbnRleHQpOworCWlmICh3aW5zdGF0ZS0+cGFydGNvbnRl eHQgIT0gTlVMTCkKKwkJTWVtb3J5Q29udGV4dFJlc2V0KHdpbnN0YXRlLT5wYXJ0Y29udGV4dCk7 CisJaWYgKHdpbnN0YXRlLT5hZ2djb250ZXh0ICE9IE5VTEwpCisJCU1lbW9yeUNvbnRleHRSZXNl dCh3aW5zdGF0ZS0+YWdnY29udGV4dCk7CiAJZm9yIChpID0gMDsgaSA8IHdpbnN0YXRlLT5udW1h Z2dzOyBpKyspCiAJewotCQlpZiAod2luc3RhdGUtPnBlcmFnZ1tpXS5hZ2djb250ZXh0ICE9IHdp bnN0YXRlLT5hZ2djb250ZXh0KQorCQlpZiAod2luc3RhdGUtPnBlcmFnZ1tpXS5hZ2djb250ZXh0 ICE9IE5VTEwgJiYKKwkJCXdpbnN0YXRlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCAhPSB3aW5zdGF0 ZS0+YWdnY29udGV4dCkKIAkJCU1lbW9yeUNvbnRleHRSZXNldCh3aW5zdGF0ZS0+cGVyYWdnW2ld LmFnZ2NvbnRleHQpOwogCX0KIApAQCAtMjY4MSwyNCArMjY4NCw0MCBAQCBFeGVjSW5pdFdpbmRv d0FnZyhXaW5kb3dBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogdm9pZAog RXhlY0VuZFdpbmRvd0FnZyhXaW5kb3dBZ2dTdGF0ZSAqbm9kZSkKIHsKLQlQbGFuU3RhdGUgICpv dXRlclBsYW47CiAJaW50CQkJaTsKIAogCXJlbGVhc2VfcGFydGl0aW9uKG5vZGUpOwogCiAJZm9y IChpID0gMDsgaSA8IG5vZGUtPm51bWFnZ3M7IGkrKykKIAl7Ci0JCWlmIChub2RlLT5wZXJhZ2db aV0uYWdnY29udGV4dCAhPSBub2RlLT5hZ2djb250ZXh0KQorCQlpZiAobm9kZS0+cGVyYWdnW2ld LmFnZ2NvbnRleHQgIT0gTlVMTCAmJgorCQkJbm9kZS0+cGVyYWdnW2ldLmFnZ2NvbnRleHQgIT0g bm9kZS0+YWdnY29udGV4dCkKIAkJCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+cGVyYWdnW2ld LmFnZ2NvbnRleHQpOwogCX0KLQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPnBhcnRjb250ZXh0 KTsKLQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPmFnZ2NvbnRleHQpOworCWlmIChub2RlLT5w YXJ0Y29udGV4dCAhPSBOVUxMKQorCXsKKwkJTWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT5wYXJ0 Y29udGV4dCk7CisJCW5vZGUtPnBhcnRjb250ZXh0ID0gTlVMTDsKKwl9CisJaWYgKG5vZGUtPmFn Z2NvbnRleHQgIT0gTlVMTCkKKwl7CisJCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+YWdnY29u dGV4dCk7CisJCW5vZGUtPmFnZ2NvbnRleHQgPSBOVUxMOworCX0KIAotCXBmcmVlKG5vZGUtPnBl cmZ1bmMpOwotCXBmcmVlKG5vZGUtPnBlcmFnZyk7CisJaWYgKG5vZGUtPnBlcmZ1bmMgIT0gTlVM TCkKKwl7CisJCXBmcmVlKG5vZGUtPnBlcmZ1bmMpOworCQlub2RlLT5wZXJmdW5jID0gTlVMTDsK Kwl9CisJaWYgKG5vZGUtPnBlcmFnZyAhPSBOVUxMKQorCXsKKwkJcGZyZWUobm9kZS0+cGVyYWdn KTsKKwkJbm9kZS0+cGVyYWdnID0gTlVMTDsKKwl9CiAKLQlvdXRlclBsYW4gPSBvdXRlclBsYW5T dGF0ZShub2RlKTsKLQlFeGVjRW5kTm9kZShvdXRlclBsYW4pOworCUV4ZWNFbmROb2RlKG91dGVy UGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiB9CiAKIC8q IC0tLS0tLS0tLS0tLS0tLS0tCi0tIAoyLjM1LjMKCg== --0000000000000a00a4060a8df157 Content-Type: application/octet-stream; name="v49-0003-Adjustments-to-allow-ExecutorStart-to-sometimes-.patch" Content-Disposition: attachment; filename="v49-0003-Adjustments-to-allow-ExecutorStart-to-sometimes-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lp6ekt5z5 RnJvbSBmYTVlOWFiMDMxNmJkNTdmMDI0ODk4MjcyOWY5MDZkZGZiZGNhODBlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1Mzo0NiArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ5 IDMvOF0gQWRqdXN0bWVudHMgdG8gYWxsb3cgRXhlY3V0b3JTdGFydCgpIHRvIHNvbWV0aW1lcwog 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 b250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwppbmRleCA2YzYz YWNmOTg5Li42MzI1ZWVhZjQ2IDEwMDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50 cy9wZ19zdGF0X3N0YXRlbWVudHMuYworKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9w Z19zdGF0X3N0YXRlbWVudHMuYwpAQCAtMzI2LDcgKzMyNiw3IEBAIHN0YXRpYyBQbGFubmVkU3Rt dCAqcGdzc19wbGFubmVyKFF1ZXJ5ICpwYXJzZSwKIAkJCQkJCQkJIGNvbnN0IGNoYXIgKnF1ZXJ5 X3N0cmluZywKIAkJCQkJCQkJIGludCBjdXJzb3JPcHRpb25zLAogCQkJCQkJCQkgUGFyYW1MaXN0 SW5mbyBib3VuZFBhcmFtcyk7Ci1zdGF0aWMgdm9pZCBwZ3NzX0V4ZWN1dG9yU3RhcnQoUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOworc3RhdGljIGJvb2wgcGdzc19FeGVjdXRvclN0 YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIHN0YXRpYyB2b2lkIHBnc3Nf RXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCQkJCQkJIFNjYW5EaXJlY3Rpb24g ZGlyZWN0aW9uLAogCQkJCQkJCSB1aW50NjQgY291bnQsIGJvb2wgZXhlY3V0ZV9vbmNlKTsKQEAg LTk3OSwxMyArOTc5LDE1IEBAIHBnc3NfcGxhbm5lcihRdWVyeSAqcGFyc2UsCiAvKgogICogRXhl Y3V0b3JTdGFydCBob29rOiBzdGFydCB1cCB0cmFja2luZyBpZiBuZWVkZWQKICAqLwotc3RhdGlj IHZvaWQKK3N0YXRpYyBib29sCiBwZ3NzX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURl c2MsIGludCBlZmxhZ3MpCiB7CisJYm9vbAlwbGFuX3ZhbGlkOworCiAJaWYgKHByZXZfRXhlY3V0 b3JTdGFydCkKLQkJcHJldl9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJcGxh bl92YWxpZCA9IHByZXZfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CiAJZWxzZQot CQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJcGxhbl92YWxp ZCA9IHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogCiAJLyoKIAkg KiBJZiBxdWVyeSBoYXMgcXVlcnlJZCB6ZXJvLCBkb24ndCB0cmFjayBpdC4gIFRoaXMgcHJldmVu dHMgZG91YmxlCkBAIC0xMDA4LDYgKzEwMTAsOCBAQCBwZ3NzX0V4ZWN1dG9yU3RhcnQoUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y3h0KTsKIAkJfQogCX0KKworCXJldHVybiBwbGFuX3ZhbGlkOwogfQogCiAvKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5dG8uYwppbmRleCAwOTI5YWQ5MjlhLi42OTkwNjBmZDU1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8u YwpAQCAtNTY4LDggKzU2OCwxMSBAQCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24u CiAJCSAqCiAJCSAqIEV4ZWN1dG9yU3RhcnQgY29tcHV0ZXMgYSByZXN1bHQgdHVwZGVzYyBmb3Ig dXMKKwkJICoKKwkJICogT0sgdG8gaWdub3JlIHRoZSByZXR1cm4gdmFsdWU7IHBsYW4gY2FuJ3Qg YmVjb21lIGludmFsaWQsCisJCSAqIGJlY2F1c2UgdGhlcmUncyBubyBDYWNoZWRQbGFuLgogCQkg Ki8KLQkJRXhlY3V0b3JTdGFydChjc3RhdGUtPnF1ZXJ5RGVzYywgMCk7CisJCSh2b2lkKSBFeGVj dXRvclN0YXJ0KGNzdGF0ZS0+cXVlcnlEZXNjLCAwKTsKIAogCQl0dXBEZXNjID0gY3N0YXRlLT5x dWVyeURlc2MtPnR1cERlc2M7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y3JlYXRlYXMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKaW5kZXggMThiMDdj MDIwMC4uNGE5NTBjMDNmZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRl YXMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCkBAIC0zMjksOCArMzI5 LDEzIEBAIEV4ZWNDcmVhdGVUYWJsZUFzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlVGFibGVB c1N0bXQgKnN0bXQsCiAJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNo b3QsCiAJCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKIAotCQkvKiBjYWxsIEV4 ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uICovCi0JCUV4ZWN1 dG9yU3RhcnQocXVlcnlEZXNjLCBHZXRJbnRvUmVsRUZsYWdzKGludG8pKTsKKwkJLyoKKwkJICog Y2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgorCQkg KgorCQkgKiBPSyB0byBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZTsgcGxhbiBjYW4ndCBiZWNvbWUg aW52YWxpZCwKKwkJICogYmVjYXVzZSB0aGVyZSdzIG5vIENhY2hlZFBsYW4uCisJCSAqLworCQko dm9pZCkgRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIEdldEludG9SZWxFRmxhZ3MoaW50bykpOwog CiAJCS8qIHJ1biB0aGUgcGxhbiB0byBjb21wbGV0aW9uICovCiAJCUV4ZWN1dG9yUnVuKHF1ZXJ5 RGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIDAsIHRydWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5j CmluZGV4IGM2OThlNTRmZWMuLjdiNTdjZDAyYWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAg LTM5Myw2ICszOTMsNyBAQCBFeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29y T3B0aW9ucywKIAllbHNlCiAJewogCQlQbGFubmVkU3RtdCAqcGxhbjsKKwkJUXVlcnlEZXNjICAg KnF1ZXJ5RGVzYzsKIAkJaW5zdHJfdGltZQlwbGFuc3RhcnQsCiAJCQkJCXBsYW5kdXJhdGlvbjsK IAkJQnVmZmVyVXNhZ2UgYnVmdXNhZ2Vfc3RhcnQsCkBAIC00MTUsMTIgKzQxNiw5MCBAQCBFeHBs YWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9ucywKIAkJCUJ1ZmZlclVz YWdlQWNjdW1EaWZmKCZidWZ1c2FnZSwgJnBnQnVmZmVyVXNhZ2UsICZidWZ1c2FnZV9zdGFydCk7 CiAJCX0KIAorCQlxdWVyeURlc2MgPSBFeHBsYWluUXVlcnlEZXNjKHBsYW4sIE5VTEwsIHF1ZXJ5 U3RyaW5nLCBpbnRvLCBlcywKKwkJCQkJCQkJCSBwYXJhbXMsIHF1ZXJ5RW52KTsKKwkJQXNzZXJ0 KHF1ZXJ5RGVzYyk7CisKIAkJLyogcnVuIGl0IChpZiBuZWVkZWQpIGFuZCBwcm9kdWNlIG91dHB1 dCAqLwotCQlFeHBsYWluT25lUGxhbihwbGFuLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFt cywgcXVlcnlFbnYsCisJCUV4cGxhaW5PbmVQbGFuKHF1ZXJ5RGVzYywgaW50bywgZXMsIHF1ZXJ5 U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5RW52LAogCQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1 ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSk7CiAJfQogfQogCisvKgorICogRXhwbGFpblF1ZXJ5 RGVzYworICoJCVNldCB1cCBRdWVyeURlc2MgZm9yIEVYUExBSU5pbmcgYSBnaXZlbiBwbGFuCisg KgorICogVGhpcyByZXR1cm5zIE5VTEwgaWYgY3BsYW4gaXMgZm91bmQgdG8gaGF2ZSBiZWVuIGlu dmFsaWRhdGVkIGFmdGVyCisgKiBjYWxsaW5nIEV4ZWN1dG9yU3RhcnQoKS4KKyAqLworUXVlcnlE ZXNjICoKK0V4cGxhaW5RdWVyeURlc2MoUGxhbm5lZFN0bXQgKnN0bXQsIENhY2hlZFBsYW4gKmNw bGFuLAorCQkJCSBjb25zdCBjaGFyICpxdWVyeVN0cmluZywgSW50b0NsYXVzZSAqaW50bywgRXhw bGFpblN0YXRlICplcywKKwkJCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5RW52aXJvbm1l bnQgKnF1ZXJ5RW52KQoreworCVF1ZXJ5RGVzYyAgKnF1ZXJ5RGVzYzsKKwlEZXN0UmVjZWl2ZXIg KmRlc3Q7CisJaW50CQkJZWZsYWdzOworCWludAkJCWluc3RydW1lbnRfb3B0aW9uID0gMDsKKwor CS8qCisJICogTm9ybWFsbHkgd2UgZGlzY2FyZCB0aGUgcXVlcnkncyBvdXRwdXQsIGJ1dCBpZiBl eHBsYWluaW5nIENSRUFURSBUQUJMRQorCSAqIEFTLCB3ZSdkIGJldHRlciB1c2UgdGhlIGFwcHJv cHJpYXRlIHR1cGxlIHJlY2VpdmVyLgorCSAqLworCWlmIChpbnRvKQorCQlkZXN0ID0gQ3JlYXRl SW50b1JlbERlc3RSZWNlaXZlcihpbnRvKTsKKwllbHNlCisJCWRlc3QgPSBOb25lX1JlY2VpdmVy OworCisJaWYgKGVzLT5hbmFseXplICYmIGVzLT50aW1pbmcpCisJCWluc3RydW1lbnRfb3B0aW9u IHw9IElOU1RSVU1FTlRfVElNRVI7CisJZWxzZSBpZiAoZXMtPmFuYWx5emUpCisJCWluc3RydW1l bnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfUk9XUzsKKworCWlmIChlcy0+YnVmZmVycykKKwkJaW5z dHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9CVUZGRVJTOworCWlmIChlcy0+d2FsKQorCQlp bnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1dBTDsKKworCS8qCisJICogVXNlIGEgc25h cHNob3Qgd2l0aCBhbiB1cGRhdGVkIGNvbW1hbmQgSUQgdG8gZW5zdXJlIHRoaXMgcXVlcnkgc2Vl cworCSAqIHJlc3VsdHMgb2YgYW55IHByZXZpb3VzbHkgZXhlY3V0ZWQgcXVlcmllcy4KKwkgKi8K KwlQdXNoQ29waWVkU25hcHNob3QoR2V0QWN0aXZlU25hcHNob3QoKSk7CisJVXBkYXRlQWN0aXZl U25hcHNob3RDb21tYW5kSWQoKTsKKworCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1 ZXJ5ICovCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsIGNwbGFuLCBxdWVyeVN0 cmluZywKKwkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAorCQkJ CQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCBpbnN0cnVtZW50X29wdGlvbik7CisKKwkvKiBT ZWxlY3QgZXhlY3V0aW9uIG9wdGlvbnMgKi8KKwlpZiAoZXMtPmFuYWx5emUpCisJCWVmbGFncyA9 IDA7CQkJCS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24gZmxhZ3MgKi8KKwllbHNlCisJCWVm bGFncyA9IEVYRUNfRkxBR19FWFBMQUlOX09OTFk7CisJaWYgKGVzLT5nZW5lcmljKQorCQllZmxh Z3MgfD0gRVhFQ19GTEFHX0VYUExBSU5fR0VORVJJQzsKKwlpZiAoaW50bykKKwkJZWZsYWdzIHw9 IEdldEludG9SZWxFRmxhZ3MoaW50byk7CisKKwkvKgorCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0 byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24uICBBIGNhY2hlZCBwbGFuCisJICogbWF5 IGdldCBpbnZhbGlkYXRlZCBkdXJpbmcgcGxhbiBpbnRpYWxpemF0aW9uLgorCSAqLworCWlmICgh RXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncykpCisJeworCQkvKiBDbGVhbiB1cC4gKi8K KwkJRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKKwkJRnJlZVF1ZXJ5RGVzYyhxdWVyeURlc2MpOwor CQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlyZXR1cm4gcXVl cnlEZXNjOworfQorCiAvKgogICogRXhwbGFpbk9uZVV0aWxpdHkgLQogICoJICBwcmludCBvdXQg dGhlIGV4ZWN1dGlvbiBwbGFuIGZvciBvbmUgdXRpbGl0eSBzdGF0ZW1lbnQKQEAgLTUyNCwyOSAr NjAzLDE2IEBAIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNl ICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogICogdG8gY2FsbCBpdC4KICAqLwogdm9pZAotRXhw bGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBF eHBsYWluU3RhdGUgKmVzLAorRXhwbGFpbk9uZVBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCisJ CQkgICBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQkJICAgY29uc3QgY2hh ciAqcXVlcnlTdHJpbmcsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJICAgUXVlcnlFbnZpcm9u bWVudCAqcXVlcnlFbnYsIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKIAkJCSAgIGNv bnN0IEJ1ZmZlclVzYWdlICpidWZ1c2FnZSkKIHsKLQlEZXN0UmVjZWl2ZXIgKmRlc3Q7Ci0JUXVl cnlEZXNjICAqcXVlcnlEZXNjOwogCWluc3RyX3RpbWUJc3RhcnR0aW1lOwogCWRvdWJsZQkJdG90 YWx0aW1lID0gMDsKLQlpbnQJCQllZmxhZ3M7Ci0JaW50CQkJaW5zdHJ1bWVudF9vcHRpb24gPSAw OwotCi0JQXNzZXJ0KHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSk7CiAK LQlpZiAoZXMtPmFuYWx5emUgJiYgZXMtPnRpbWluZykKLQkJaW5zdHJ1bWVudF9vcHRpb24gfD0g SU5TVFJVTUVOVF9USU1FUjsKLQllbHNlIGlmIChlcy0+YW5hbHl6ZSkKLQkJaW5zdHJ1bWVudF9v cHRpb24gfD0gSU5TVFJVTUVOVF9ST1dTOwotCi0JaWYgKGVzLT5idWZmZXJzKQotCQlpbnN0cnVt ZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX0JVRkZFUlM7Ci0JaWYgKGVzLT53YWwpCi0JCWluc3Ry dW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfV0FMOworCUFzc2VydChxdWVyeURlc2MtPnBsYW5u ZWRzdG10LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSk7CiAKIAkvKgogCSAqIFdlIGFsd2F5 cyBjb2xsZWN0IHRpbWluZyBmb3IgdGhlIGVudGlyZSBzdGF0ZW1lbnQsIGV2ZW4gd2hlbiBub2Rl LWxldmVsCkBAIC01NTUsNDAgKzYyMSw2IEBAIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpw bGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkgKi8KIAlJ TlNUUl9USU1FX1NFVF9DVVJSRU5UKHN0YXJ0dGltZSk7CiAKLQkvKgotCSAqIFVzZSBhIHNuYXBz aG90IHdpdGggYW4gdXBkYXRlZCBjb21tYW5kIElEIHRvIGVuc3VyZSB0aGlzIHF1ZXJ5IHNlZXMK LQkgKiByZXN1bHRzIG9mIGFueSBwcmV2aW91c2x5IGV4ZWN1dGVkIHF1ZXJpZXMuCi0JICovCi0J UHVzaENvcGllZFNuYXBzaG90KEdldEFjdGl2ZVNuYXBzaG90KCkpOwotCVVwZGF0ZUFjdGl2ZVNu YXBzaG90Q29tbWFuZElkKCk7Ci0KLQkvKgotCSAqIE5vcm1hbGx5IHdlIGRpc2NhcmQgdGhlIHF1 ZXJ5J3Mgb3V0cHV0LCBidXQgaWYgZXhwbGFpbmluZyBDUkVBVEUgVEFCTEUKLQkgKiBBUywgd2Un ZCBiZXR0ZXIgdXNlIHRoZSBhcHByb3ByaWF0ZSB0dXBsZSByZWNlaXZlci4KLQkgKi8KLQlpZiAo aW50bykKLQkJZGVzdCA9IENyZWF0ZUludG9SZWxEZXN0UmVjZWl2ZXIoaW50byk7Ci0JZWxzZQot CQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKLQotCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhl IHF1ZXJ5ICovCi0JcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW5uZWRzdG10LCBOVUxM LCBxdWVyeVN0cmluZywKLQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBz aG90LAotCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCBpbnN0cnVtZW50X29wdGlvbik7 Ci0KLQkvKiBTZWxlY3QgZXhlY3V0aW9uIG9wdGlvbnMgKi8KLQlpZiAoZXMtPmFuYWx5emUpCi0J CWVmbGFncyA9IDA7CQkJCS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24gZmxhZ3MgKi8KLQll bHNlCi0JCWVmbGFncyA9IEVYRUNfRkxBR19FWFBMQUlOX09OTFk7Ci0JaWYgKGVzLT5nZW5lcmlj KQotCQllZmxhZ3MgfD0gRVhFQ19GTEFHX0VYUExBSU5fR0VORVJJQzsKLQlpZiAoaW50bykKLQkJ ZWZsYWdzIHw9IEdldEludG9SZWxFRmxhZ3MoaW50byk7Ci0KLQkvKiBjYWxsIEV4ZWN1dG9yU3Rh cnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uICovCi0JRXhlY3V0b3JTdGFydChx dWVyeURlc2MsIGVmbGFncyk7Ci0KIAkvKiBFeGVjdXRlIHRoZSBwbGFuIGZvciBzdGF0aXN0aWNz IGlmIGFza2VkIGZvciAqLwogCWlmIChlcy0+YW5hbHl6ZSkKIAl7CkBAIC00ODk1LDYgKzQ5Mjcs MTcgQEAgRXhwbGFpbkR1bW15R3JvdXAoY29uc3QgY2hhciAqb2JqdHlwZSwgY29uc3QgY2hhciAq bGFiZWxuYW1lLCBFeHBsYWluU3RhdGUgKmVzKQogCX0KIH0KIAorLyoKKyAqIERpc2NhcmQgb3V0 cHV0IGJ1ZmZlciBmb3IgYSBmcmVzaCByZXN0YXJ0LgorICovCit2b2lkCitFeHBsYWluUmVzZXRP dXRwdXQoRXhwbGFpblN0YXRlICplcykKK3sKKwlBc3NlcnQoZXMtPnN0cik7CisJcmVzZXRTdHJp bmdJbmZvKGVzLT5zdHIpOworCUV4cGxhaW5CZWdpbk91dHB1dChlcyk7Cit9CisKIC8qCiAgKiBF bWl0IHRoZSBzdGFydC1vZi1vdXRwdXQgYm9pbGVycGxhdGUuCiAgKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRl bnNpb24uYwppbmRleCBiMjg3YTJlODRjLi4xMjdkMmEzYjBhIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHRlbnNpb24uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRl bnNpb24uYwpAQCAtODAyLDcgKzgwMiwxMSBAQCBleGVjdXRlX3NxbF9zdHJpbmcoY29uc3QgY2hh ciAqc3FsKQogCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIE5VTEwsCiAJCQkJCQkJCQkJ ZGVzdCwgTlVMTCwgTlVMTCwgMCk7CiAKLQkJCQlFeGVjdXRvclN0YXJ0KHFkZXNjLCAwKTsKKwkJ CQkvKgorCQkJCSAqIE9LIHRvIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlOyBwbGFuIGNhbid0IGJl Y29tZSBpbnZhbGlkLAorCQkJCSAqIGJlY2F1c2UgdGhlcmUncyBubyBDYWNoZWRQbGFuLgorCQkJ CSAqLworCQkJCSh2b2lkKSBFeGVjdXRvclN0YXJ0KHFkZXNjLCAwKTsKIAkJCQlFeGVjdXRvclJ1 bihxZGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIDAsIHRydWUpOwogCQkJCUV4ZWN1dG9yRmlu aXNoKHFkZXNjKTsKIAkJCQlFeGVjdXRvckVuZChxZGVzYyk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMK aW5kZXggMjJiOGI4MjBjMy4uNzA4M2ZiMjM1MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvbWF0dmlldy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwpAQCAt NDEyLDggKzQxMiwxMyBAQCByZWZyZXNoX21hdHZpZXdfZGF0YWZpbGwoRGVzdFJlY2VpdmVyICpk ZXN0LCBRdWVyeSAqcXVlcnksCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRT bmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CiAKLQkvKiBjYWxsIEV4ZWN1 dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uICovCi0JRXhlY3V0b3JT dGFydChxdWVyeURlc2MsIDApOworCS8qCisJICogY2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBh cmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgorCSAqCisJICogT0sgdG8gaWdub3JlIHRoZSByZXR1 cm4gdmFsdWU7IHBsYW4gY2FuJ3QgYmVjb21lIGludmFsaWQsCisJICogYmVjYXVzZSB0aGVyZSdz IG5vIENhY2hlZFBsYW4uCisJICovCisJKHZvaWQpIEV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAw KTsKIAogCS8qIHJ1biB0aGUgcGxhbiAqLwogCUV4ZWN1dG9yUnVuKHF1ZXJ5RGVzYywgRm9yd2Fy ZFNjYW5EaXJlY3Rpb24sIDAsIHRydWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvcG9ydGFsY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCmluZGV4 IDczZWQ3YWEyZjAuLmExZWU1YzBhY2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3BvcnRhbGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMKQEAg LTE0Miw5ICsxNDIsMTEgQEAgUGVyZm9ybUN1cnNvck9wZW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBE ZWNsYXJlQ3Vyc29yU3RtdCAqY3N0bXQsIFBhcmFtTGlzdEluZm8gcGEKIAogCS8qCiAJICogU3Rh cnQgZXhlY3V0aW9uLCBpbnNlcnRpbmcgcGFyYW1ldGVycyBpZiBhbnkuCisJICoKKwkgKiBPSyB0 byBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZTsgcGxhbiBjYW4ndCBiZWNvbWUgaW52YWxpZCBoZXJl LAorCSAqIGJlY2F1c2UgdGhlcmUncyBubyBDYWNoZWRQbGFuLgogCSAqLwotCVBvcnRhbFN0YXJ0 KHBvcnRhbCwgcGFyYW1zLCAwLCBHZXRBY3RpdmVTbmFwc2hvdCgpKTsKLQorCSh2b2lkKSBQb3J0 YWxTdGFydChwb3J0YWwsIHBhcmFtcywgMCwgR2V0QWN0aXZlU25hcHNob3QoKSk7CiAJQXNzZXJ0 KHBvcnRhbC0+c3RyYXRlZ3kgPT0gUE9SVEFMX09ORV9TRUxFQ1QpOwogCiAJLyoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3ByZXBhcmUuYwppbmRleCAxOGY3MDMxOWZjLi5mOGQwYjBlZTI1IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJl cGFyZS5jCkBAIC0xODMsNiArMTgzLDcgQEAgRXhlY3V0ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAkJcGFyYW1MSSA9IEV2YWx1YXRlUGFyYW1zKHBzdGF0ZSwgZW50cnksIHN0bXQtPnBhcmFt cywgZXN0YXRlKTsKIAl9CiAKK3JlcGxhbjoKIAkvKiBDcmVhdGUgYSBuZXcgcG9ydGFsIHRvIHJ1 biB0aGUgcXVlcnkgaW4gKi8KIAlwb3J0YWwgPSBDcmVhdGVOZXdQb3J0YWwoKTsKIAkvKiBEb24n dCBkaXNwbGF5IHRoZSBwb3J0YWwgaW4gcGdfY3Vyc29ycywgaXQgaXMgZm9yIGludGVybmFsIHVz ZSBvbmx5ICovCkBAIC0yNTEsOSArMjUyLDE1IEBAIEV4ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpw c3RhdGUsCiAJfQogCiAJLyoKLQkgKiBSdW4gdGhlIHBvcnRhbCBhcyBhcHByb3ByaWF0ZS4KKwkg KiBSdW4gdGhlIHBvcnRhbCBhcyBhcHByb3ByaWF0ZS4gSWYgdGhlIHBvcnRhbCBoYXMgYSBjYWNo ZWQgcGxhbiBhbmQgCisJICogaXQncyBmb3VuZCB0byBiZSBpbnZhbGlkYXRlZCBkdXJpbmcgdGhl IGluaXRpYWxpemF0aW9uIG9mIGl0cyBwbGFuCisJICogdHJlZXMsIHRoZSBwbGFuIG11c3QgYmUg cmVnZW5lcmF0ZWQuCiAJICovCi0JUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbUxJLCBlZmxhZ3Ms IEdldEFjdGl2ZVNuYXBzaG90KCkpOworCWlmICghUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbUxJ LCBlZmxhZ3MsIEdldEFjdGl2ZVNuYXBzaG90KCkpKQorCXsKKwkJUG9ydGFsRHJvcChwb3J0YWws IGZhbHNlKTsKKwkJZ290byByZXBsYW47CisJfQogCiAJKHZvaWQpIFBvcnRhbFJ1bihwb3J0YWws IGNvdW50LCBmYWxzZSwgdHJ1ZSwgZGVzdCwgZGVzdCwgcWMpOwogCkBAIC01NzQsNyArNTgxLDcg QEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2Ug KmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiB7CiAJUHJlcGFyZWRTdGF0ZW1lbnQgKmVudHJ5Owog CWNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZzsKLQlDYWNoZWRQbGFuICpjcGxhbjsKKwlDYWNoZWRQ bGFuICpjcGxhbiA9IE5VTEw7CiAJTGlzdAkgICAqcGxhbl9saXN0OwogCUxpc3RDZWxsICAgKnA7 CiAJUGFyYW1MaXN0SW5mbyBwYXJhbUxJID0gTlVMTDsKQEAgLTYxOCw2ICs2MjUsNyBAQCBFeHBs YWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywg RXhwbGFpblN0YXRlICplcywKIAl9CiAKIAkvKiBSZXBsYW4gaWYgbmVlZGVkLCBhbmQgYWNxdWly ZSBhIHRyYW5zaWVudCByZWZjb3VudCAqLworcmVwbGFuOgogCWNwbGFuID0gR2V0Q2FjaGVkUGxh bihlbnRyeS0+cGxhbnNvdXJjZSwgcGFyYW1MSSwKIAkJCQkJCSAgQ3VycmVudFJlc291cmNlT3du ZXIsIHF1ZXJ5RW52KTsKIApAQCAtNjM5LDggKzY0NywyMSBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5 KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICpl cywKIAkJUGxhbm5lZFN0bXQgKnBzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIHApOwog CiAJCWlmIChwc3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkpCi0JCQlFeHBsYWluT25l UGxhbihwc3RtdCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywgcGFyYW1MSSwgcXVlcnlFbnYsCi0J CQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSk7 CisJCXsKKwkJCVF1ZXJ5RGVzYyAqcXVlcnlEZXNjOworCisJCQlxdWVyeURlc2MgPSBFeHBsYWlu UXVlcnlEZXNjKHBzdG10LCBjcGxhbiwgcXVlcnlTdHJpbmcsCisJCQkJCQkJCQkJIGludG8sIGVz LCBwYXJhbUxJLCBxdWVyeUVudik7CisJCQlpZiAocXVlcnlEZXNjID09IE5VTEwpCisJCQl7CisJ CQkJRXhwbGFpblJlc2V0T3V0cHV0KGVzKTsKKwkJCQlSZWxlYXNlQ2FjaGVkUGxhbihjcGxhbiwg Q3VycmVudFJlc291cmNlT3duZXIpOworCQkJCWdvdG8gcmVwbGFuOworCQkJfQorCQkJRXhwbGFp bk9uZVBsYW4ocXVlcnlEZXNjLCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLAorCQkJ CQkJICAgcXVlcnlFbnYsICZwbGFuZHVyYXRpb24sCisJCQkJCQkgICAoZXMtPmJ1ZmZlcnMgPyAm YnVmdXNhZ2UgOiBOVUxMKSk7CisJCX0KIAkJZWxzZQogCQkJRXhwbGFpbk9uZVV0aWxpdHkocHN0 bXQtPnV0aWxpdHlTdG10LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLAogCQkJCQkJCSAgcGFyYW1M SSwgcXVlcnlFbnYpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCmluZGV4IDUyMTc3NzU5YWIuLmRkMTM5 NDMyYjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKQEAgLTUwMDksNiArNTAwOSwxOSBAQCBBZnRl clRyaWdnZXJCZWdpblF1ZXJ5KHZvaWQpCiAJYWZ0ZXJUcmlnZ2Vycy5xdWVyeV9kZXB0aCsrOwog fQogCisvKiAtLS0tLS0tLS0tCisgKiBBZnRlclRyaWdnZXJDYW5jZWxRdWVyeSgpCisgKgorICoJ Q2FsbGVkIGZyb20gRXhlY3V0b3JFbmQoKSBpZiB0aGUgcXVlcnkgZXhlY3V0aW9uIHdhcyBjYW5j ZWxlZC4KKyAqIC0tLS0tLS0tLS0KKyAqLwordm9pZAorQWZ0ZXJUcmlnZ2VyQ2FuY2VsUXVlcnko dm9pZCkKK3sKKwkvKiBTZXQgdG8gYSB2YWx1ZSBkZW5vdGluZyB0aGF0IG5vIHF1ZXJ5IGlzIGFj dGl2ZS4gKi8KKwlhZnRlclRyaWdnZXJzLnF1ZXJ5X2RlcHRoID0gLTE7Cit9CisKIAogLyogLS0t LS0tLS0tLQogICogQWZ0ZXJUcmlnZ2VyRW5kUXVlcnkoKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMK aW5kZXggZGU3YmY3Y2E2Ny4uNTc1NTMzNmFiZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBA IC0xMTksNiArMTE5LDEzIEBAIHN0YXRpYyB2b2lkIEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRl ICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpOwogICoKICAqIGVmbGFncyBjb250YWlucyBmbGFn IGJpdHMgYXMgZGVzY3JpYmVkIGluIGV4ZWN1dG9yLmguCiAgKgorICogUGxhbiBpbml0aWFsaXph dGlvbiBtYXkgZmFpbCBpZiB0aGUgaW5wdXQgcGxhbiB0cmVlIGlzIGZvdW5kIHRvIGhhdmUgYmVl bgorICogaW52YWxpZGF0ZWQsIHdoaWNoIGNhbiBoYXBwZW4gaWYgaXQgY29tZXMgZnJvbSBhIENh Y2hlZFBsYW4uCisgKgorICogUmV0dXJucyB0cnVlIGlmIHBsYW4gd2FzIHN1Y2Nlc3NmdWxseSBp bml0aWFsaXplZCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLiAgSWYKKyAqIHRoZSBsYXR0ZXIsIHRoZSBj YWxsZXIgbXVzdCBjYWxsIEV4ZWN1dG9yRW5kKCkgb24gJ3F1ZXJ5RGVzYycgdG8gY2xlYW4gdXAK KyAqIGFmdGVyIGZhaWxlZCBwbGFuIGluaXRpYWxpemF0aW9uLgorICoKICAqIE5COiB0aGUgQ3Vy cmVudE1lbW9yeUNvbnRleHQgd2hlbiB0aGlzIGlzIGNhbGxlZCB3aWxsIGJlY29tZSB0aGUgcGFy ZW50CiAgKiBvZiB0aGUgcGVyLXF1ZXJ5IGNvbnRleHQgdXNlZCBmb3IgdGhpcyBFeGVjdXRvciBp bnZvY2F0aW9uLgogICoKQEAgLTEyOCw3ICsxMzUsNyBAQCBzdGF0aWMgdm9pZCBFdmFsUGxhblF1 YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKTsKICAqCiAgKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgKi8KLXZvaWQKK2Jvb2wKIEV4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2Ms IGludCBlZmxhZ3MpCiB7CiAJLyoKQEAgLTE0MCwxNCArMTQ3LDE1IEBAIEV4ZWN1dG9yU3RhcnQo UXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJcGdzdGF0X3JlcG9ydF9xdWVyeV9p ZChxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5xdWVyeUlkLCBmYWxzZSk7CiAKIAlpZiAoRXhlY3V0 b3JTdGFydF9ob29rKQotCQkoKkV4ZWN1dG9yU3RhcnRfaG9vaykgKHF1ZXJ5RGVzYywgZWZsYWdz KTsKLQllbHNlCi0JCXN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwor CQlyZXR1cm4gKCpFeGVjdXRvclN0YXJ0X2hvb2spIChxdWVyeURlc2MsIGVmbGFncyk7CisKKwly ZXR1cm4gc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CiB9CiAKLXZv aWQKK2Jvb2wKIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGlu dCBlZmxhZ3MpCiB7CisJYm9vbAkJcGxhbl92YWxpZDsKIAlFU3RhdGUJICAgKmVzdGF0ZTsKIAlN ZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CiAKQEAgLTI2Myw5ICsyNzEsMTQgQEAgc3RhbmRhcmRf RXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkvKgogCSAq IEluaXRpYWxpemUgdGhlIHBsYW4gc3RhdGUgdHJlZQogCSAqLwotCSh2b2lkKSBJbml0UGxhbihx dWVyeURlc2MsIGVmbGFncyk7CisJcGxhbl92YWxpZCA9IEluaXRQbGFuKHF1ZXJ5RGVzYywgZWZs YWdzKTsKKworCS8qIE1hcmsgZXhlY3V0aW9uIGFzIGNhbmNlbGVkIGlmIHBsYW4gd29uJ3QgYmUg ZXhlY3V0ZWQuICovCisJZXN0YXRlLT5lc19jYW5jZWxlZCA9ICFwbGFuX3ZhbGlkOwogCiAJTWVt b3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJcmV0dXJuIHBsYW5fdmFsaWQ7CiB9 CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KQEAgLTMyNSw2ICszMzgsNyBAQCBzdGFuZGFyZF9FeGVjdXRvclJ1bihR dWVyeURlc2MgKnF1ZXJ5RGVzYywKIAllc3RhdGUgPSBxdWVyeURlc2MtPmVzdGF0ZTsKIAogCUFz c2VydChlc3RhdGUgIT0gTlVMTCk7CisJQXNzZXJ0KCFlc3RhdGUtPmVzX2NhbmNlbGVkKTsKIAlB c3NlcnQoIShlc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZKSk7 CiAKIAkvKgpAQCAtNDI5LDcgKzQ0Myw3IEBAIHN0YW5kYXJkX0V4ZWN1dG9yRmluaXNoKFF1ZXJ5 RGVzYyAqcXVlcnlEZXNjKQogCUFzc2VydCghKGVzdGF0ZS0+ZXNfdG9wX2VmbGFncyAmIEVYRUNf RkxBR19FWFBMQUlOX09OTFkpKTsKIAogCS8qIFRoaXMgc2hvdWxkIGJlIHJ1biBvbmNlIGFuZCBv bmx5IG9uY2UgcGVyIEV4ZWN1dG9yIGluc3RhbmNlICovCi0JQXNzZXJ0KCFlc3RhdGUtPmVzX2Zp bmlzaGVkKTsKKwlBc3NlcnQoIWVzdGF0ZS0+ZXNfZmluaXNoZWQgJiYgIWVzdGF0ZS0+ZXNfY2Fu Y2VsZWQpOwogCiAJLyogU3dpdGNoIGludG8gcGVyLXF1ZXJ5IG1lbW9yeSBjb250ZXh0ICovCiAJ b2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7 CkBAIC00ODgsMTEgKzUwMiwxMSBAQCBzdGFuZGFyZF9FeGVjdXRvckVuZChRdWVyeURlc2MgKnF1 ZXJ5RGVzYykKIAlBc3NlcnQoZXN0YXRlICE9IE5VTEwpOwogCiAJLyoKLQkgKiBDaGVjayB0aGF0 IEV4ZWN1dG9yRmluaXNoIHdhcyBjYWxsZWQsIHVubGVzcyBpbiBFWFBMQUlOLW9ubHkgbW9kZS4g VGhpcwotCSAqIEFzc2VydCBpcyBuZWVkZWQgYmVjYXVzZSBFeGVjdXRvckZpbmlzaCBpcyBuZXcg YXMgb2YgOS4xLCBhbmQgY2FsbGVycwotCSAqIG1pZ2h0IGZvcmdldCB0byBjYWxsIGl0LgorCSAq IENoZWNrIHRoYXQgRXhlY3V0b3JGaW5pc2ggd2FzIGNhbGxlZCwgdW5sZXNzIGluIEVYUExBSU4t b25seSBtb2RlIG9yIGlmCisJICogZXhlY3V0aW9uIHdhcyBjYW5jZWxlZC4gVGhpcyBBc3NlcnQg aXMgbmVlZGVkIGJlY2F1c2UgRXhlY3V0b3JGaW5pc2ggaXMKKwkgKiBuZXcgYXMgb2YgOS4xLCBh bmQgY2FsbGVycyBtaWdodCBmb3JnZXQgdG8gY2FsbCBpdC4KIAkgKi8KLQlBc3NlcnQoZXN0YXRl LT5lc19maW5pc2hlZCB8fAorCUFzc2VydChlc3RhdGUtPmVzX2ZpbmlzaGVkIHx8IGVzdGF0ZS0+ ZXNfY2FuY2VsZWQgfHwKIAkJICAgKGVzdGF0ZS0+ZXNfdG9wX2VmbGFncyAmIEVYRUNfRkxBR19F WFBMQUlOX09OTFkpKTsKIAogCS8qCkBAIC01MDYsNiArNTIwLDE0IEBAIHN0YW5kYXJkX0V4ZWN1 dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCVVucmVnaXN0ZXJTbmFwc2hvdChlc3RhdGUt PmVzX3NuYXBzaG90KTsKIAlVbnJlZ2lzdGVyU25hcHNob3QoZXN0YXRlLT5lc19jcm9zc2NoZWNr X3NuYXBzaG90KTsKIAorCS8qCisJICogQ2FuY2VsIHRyaWdnZXIgZXhlY3V0aW9uIHRvbyBpZiB0 aGUgcXVlcnkgZXhlY3V0aW9uIHdhcyBjYW5jZWxlZC4KKwkgKi8KKwlpZiAoZXN0YXRlLT5lc19j YW5jZWxlZCAmJgorCQkhKGVzdGF0ZS0+ZXNfdG9wX2VmbGFncyAmCisJCSAgKEVYRUNfRkxBR19T S0lQX1RSSUdHRVJTIHwgRVhFQ19GTEFHX0VYUExBSU5fT05MWSkpKQorCQlBZnRlclRyaWdnZXJD YW5jZWxRdWVyeSgpOworCiAJLyoKIAkgKiBNdXN0IHN3aXRjaCBvdXQgb2YgY29udGV4dCBiZWZv cmUgZGVzdHJveWluZyBpdAogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRl eCA0NTdlZTQ2ZmFmLi4xM2QyODIwYTQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwu YwpAQCAtMTQzNyw3ICsxNDM3LDExIEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpz ZWcsIHNobV90b2MgKnRvYykKIAogCS8qIFN0YXJ0IHVwIHRoZSBleGVjdXRvciAqLwogCXF1ZXJ5 RGVzYy0+cGxhbm5lZHN0bXQtPmppdEZsYWdzID0gZnBlcy0+aml0X2ZsYWdzOwotCUV4ZWN1dG9y U3RhcnQocXVlcnlEZXNjLCBmcGVzLT5lZmxhZ3MpOworCS8qCisJICogT0sgdG8gaWdub3JlIHRo ZSByZXR1cm4gdmFsdWU7IHBsYW4gY2FuJ3QgYmVjb21lIGludmFsaWQsCisJICogYmVjYXVzZSB0 aGVyZSdzIG5vIENhY2hlZFBsYW4uCisJICovCisJKHZvaWQpIEV4ZWN1dG9yU3RhcnQocXVlcnlE ZXNjLCBmcGVzLT5lZmxhZ3MpOwogCiAJLyogU3BlY2lhbCBleGVjdXRvciBpbml0aWFsaXphdGlv biBzdGVwcyBmb3IgcGFyYWxsZWwgd29ya2VycyAqLwogCXF1ZXJ5RGVzYy0+cGxhbnN0YXRlLT5z dGF0ZS0+ZXNfcXVlcnlfZHNhID0gYXJlYTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKaW5kZXgg MTY3MDRjMGMyZi4uZjBmNTc0MGMyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKQEAgLTE1 MSw2ICsxNTEsNyBAQCBDcmVhdGVFeGVjdXRvclN0YXRlKHZvaWQpCiAJZXN0YXRlLT5lc190b3Bf ZWZsYWdzID0gMDsKIAllc3RhdGUtPmVzX2luc3RydW1lbnQgPSAwOwogCWVzdGF0ZS0+ZXNfZmlu aXNoZWQgPSBmYWxzZTsKKwllc3RhdGUtPmVzX2NhbmNlbGVkID0gZmFsc2U7CiAKIAllc3RhdGUt PmVzX2V4cHJjb250ZXh0cyA9IE5JTDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZnVuY3Rpb25zLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwppbmRleCA2 NjYzNmIwNWE1Li4yNzU2NWE4Yjc4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9m dW5jdGlvbnMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwpAQCAtODYz LDcgKzg2MywxMiBAQCBwb3N0cXVlbF9zdGFydChleGVjdXRpb25fc3RhdGUgKmVzLCBTUUxGdW5j dGlvbkNhY2hlUHRyIGZjYWNoZSkKIAkJCWVmbGFncyA9IEVYRUNfRkxBR19TS0lQX1RSSUdHRVJT OwogCQllbHNlCiAJCQllZmxhZ3MgPSAwOwkJCS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24g ZmxhZ3MgKi8KLQkJRXhlY3V0b3JTdGFydChlcy0+cWQsIGVmbGFncyk7CisKKwkJLyoKKwkJICog T0sgdG8gaWdub3JlIHRoZSByZXR1cm4gdmFsdWU7IHBsYW4gY2FuJ3QgYmVjb21lIGludmFsaWQs CisJCSAqIGJlY2F1c2UgdGhlcmUncyBubyBDYWNoZWRQbGFuLgorCQkgKi8KKwkJKHZvaWQpIEV4 ZWN1dG9yU3RhcnQoZXMtPnFkLCBlZmxhZ3MpOwogCX0KIAogCWVzLT5zdGF0dXMgPSBGX0VYRUNf UlVOOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9zcGkuYwppbmRleCA4OTJiMjg1M2VkLi42MGUyNjMyY2QyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9z cGkuYwpAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgaW50CV9TUElfZXhlY3V0ZV9wbGFuKFNQSVBs YW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiBzdGF0aWMgUGFy YW1MaXN0SW5mbyBfU1BJX2NvbnZlcnRfcGFyYW1zKGludCBuYXJncywgT2lkICphcmd0eXBlcywK IAkJCQkJCQkJCQkgRGF0dW0gKlZhbHVlcywgY29uc3QgY2hhciAqTnVsbHMpOwogCi1zdGF0aWMg aW50CV9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBib29sIGZpcmVfdHJpZ2dlcnMs IHVpbnQ2NCB0Y291bnQpOworc3RhdGljIGludAlfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5 RGVzYywgdWludDY0IHRjb3VudCk7CiAKIHN0YXRpYyB2b2lkIF9TUElfZXJyb3JfY2FsbGJhY2so dm9pZCAqYXJnKTsKIApAQCAtMTU4Miw2ICsxNTgyLDcgQEAgU1BJX2N1cnNvcl9vcGVuX2ludGVy bmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAlTbmFwc2hvdAlzbmFwc2hv dDsKIAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CiAJUG9ydGFsCQlwb3J0YWw7CisJYm9vbAkJ cGxhbl92YWxpZDsKIAlTUElDYWxsYmFja0FyZyBzcGljYWxsYmFja2FyZzsKIAlFcnJvckNvbnRl eHRDYWxsYmFjayBzcGllcnJjb250ZXh0OwogCkBAIC0xNjIzLDYgKzE2MjQsNyBAQCBTUElfY3Vy c29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCV9T UElfY3VycmVudC0+cHJvY2Vzc2VkID0gMDsKIAlfU1BJX2N1cnJlbnQtPnR1cHRhYmxlID0gTlVM TDsKIAorcmVwbGFuOgogCS8qIENyZWF0ZSB0aGUgcG9ydGFsICovCiAJaWYgKG5hbWUgPT0gTlVM TCB8fCBuYW1lWzBdID09ICdcMCcpCiAJewpAQCAtMTc2NiwxNSArMTc2OCwyMyBAQCBTUElfY3Vy c29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCX0K IAogCS8qCi0JICogU3RhcnQgcG9ydGFsIGV4ZWN1dGlvbi4KKwkgKiBTdGFydCBwb3J0YWwgZXhl Y3V0aW9uLiAgSWYgdGhlIHBvcnRhbCBjb250YWlucyBhIGNhY2hlZCBwbGFuLCBpdCBtdXN0CisJ ICogYmUgcmVjcmVhdGVkIGlmIHRoZSBjYWNoZWQgcGxhbiB3YXMgZm91bmQgdG8gaGF2ZSBiZWVu IGludmFsaWRhdGVkIHdoZW4KKwkgKiBpbml0aWFsaXppbmcgb25lIG9mIHRoZSBwbGFuIHRyZWVz IGNvbnRhaW5lZCBpbiBpdC4KIAkgKi8KLQlQb3J0YWxTdGFydChwb3J0YWwsIHBhcmFtTEksIDAs IHNuYXBzaG90KTsKKwlwbGFuX3ZhbGlkID0gUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbUxJLCAw LCBzbmFwc2hvdCk7CiAKIAlBc3NlcnQocG9ydGFsLT5zdHJhdGVneSAhPSBQT1JUQUxfTVVMVElf UVVFUlkpOwogCiAJLyogUG9wIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICovCiAJZXJyb3JfY29u dGV4dF9zdGFjayA9IHNwaWVycmNvbnRleHQucHJldmlvdXM7CiAKKwlpZiAoIXBsYW5fdmFsaWQp CisJeworCQlQb3J0YWxEcm9wKHBvcnRhbCwgZmFsc2UpOworCQlnb3RvIHJlcGxhbjsKKwl9CisK IAkvKiBQb3AgdGhlIFNQSSBzdGFjayAqLwogCV9TUElfZW5kX2NhbGwodHJ1ZSk7CiAKQEAgLTI1 NTIsNiArMjU2Miw3IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3Qg U1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCSAqIFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBp bmNyZW1lbnQgcGxhbiByZWZjb3VudC4gIElmIGl0J3MgYSBzYXZlZAogCQkgKiBwbGFuLCB0aGUg cmVmY291bnQgbXVzdCBiZSBiYWNrZWQgYnkgdGhlIHBsYW5fb3duZXIuCiAJCSAqLworcmVwbGFu OgogCQljcGxhbiA9IEdldENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgb3B0aW9ucy0+cGFyYW1zLAog CQkJCQkJCSAgcGxhbl9vd25lciwgX1NQSV9jdXJyZW50LT5xdWVyeUVudik7CiAKQEAgLTI2NjEs NiArMjY3Miw3IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJ RXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQl7CiAJCQkJUXVlcnlEZXNjICAqcWRlc2M7CiAJ CQkJU25hcHNob3QJc25hcDsKKwkJCQlpbnQJCQllZmxhZ3M7CiAKIAkJCQlpZiAoQWN0aXZlU25h cHNob3RTZXQoKSkKIAkJCQkJc25hcCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7CkBAIC0yNjc1LDgg KzI2ODcsMjMgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElF eGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCQkJCQkJCQlvcHRpb25zLT5wYXJhbXMsCiAJCQkJ CQkJCQkJX1NQSV9jdXJyZW50LT5xdWVyeUVudiwKIAkJCQkJCQkJCQkwKTsKLQkJCQlyZXMgPSBf U1BJX3BxdWVyeShxZGVzYywgZmlyZV90cmlnZ2VycywKLQkJCQkJCQkJICBjYW5TZXRUYWcgPyBv cHRpb25zLT50Y291bnQgOiAwKTsKKworCQkJCS8qIFNlbGVjdCBleGVjdXRpb24gb3B0aW9ucyAq LworCQkJCWlmIChmaXJlX3RyaWdnZXJzKQorCQkJCQllZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0 IHJ1bi10by1jb21wbGV0aW9uIGZsYWdzICovCisJCQkJZWxzZQorCQkJCQllZmxhZ3MgPSBFWEVD X0ZMQUdfU0tJUF9UUklHR0VSUzsKKworCQkJCWlmICghRXhlY3V0b3JTdGFydChxZGVzYywgZWZs YWdzKSkKKwkJCQl7CisJCQkJCUV4ZWN1dG9yRW5kKHFkZXNjKTsKKwkJCQkJRnJlZVF1ZXJ5RGVz YyhxZGVzYyk7CisJCQkJCUFzc2VydChjcGxhbik7CisJCQkJCVJlbGVhc2VDYWNoZWRQbGFuKGNw bGFuLCBwbGFuX293bmVyKTsKKwkJCQkJZ290byByZXBsYW47CisJCQkJfQorCisJCQkJcmVzID0g X1NQSV9wcXVlcnkocWRlc2MsIGNhblNldFRhZyA/IG9wdGlvbnMtPnRjb3VudCA6IDApOwogCQkJ CUZyZWVRdWVyeURlc2MocWRlc2MpOwogCQkJfQogCQkJZWxzZQpAQCAtMjg1MSwxMCArMjg3OCw5 IEBAIF9TUElfY29udmVydF9wYXJhbXMoaW50IG5hcmdzLCBPaWQgKmFyZ3R5cGVzLAogfQogCiBz dGF0aWMgaW50Ci1fU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3Ry aWdnZXJzLCB1aW50NjQgdGNvdW50KQorX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2Ms IHVpbnQ2NCB0Y291bnQpCiB7CiAJaW50CQkJb3BlcmF0aW9uID0gcXVlcnlEZXNjLT5vcGVyYXRp b247Ci0JaW50CQkJZWZsYWdzOwogCWludAkJCXJlczsKIAogCXN3aXRjaCAob3BlcmF0aW9uKQpA QCAtMjg5OCwxNCArMjkyNCw2IEBAIF9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBi b29sIGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQpCiAJCVJlc2V0VXNhZ2UoKTsKICNlbmRp ZgogCi0JLyogU2VsZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCi0JaWYgKGZpcmVfdHJpZ2dlcnMp Ci0JCWVmbGFncyA9IDA7CQkJCS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24gZmxhZ3MgKi8K LQllbHNlCi0JCWVmbGFncyA9IEVYRUNfRkxBR19TS0lQX1RSSUdHRVJTOwotCi0JRXhlY3V0b3JT dGFydChxdWVyeURlc2MsIGVmbGFncyk7Ci0KIAlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndh cmRTY2FuRGlyZWN0aW9uLCB0Y291bnQsIHRydWUpOwogCiAJX1NQSV9jdXJyZW50LT5wcm9jZXNz ZWQgPSBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4 IGU0MTVjZjFmMzQuLjcwZTdhMDIzZDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9z dGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTEyMzEsNyArMTIz MSwxMiBAQCBleGVjX3NpbXBsZV9xdWVyeShjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcpCiAJCS8q CiAJCSAqIFN0YXJ0IHRoZSBwb3J0YWwuICBObyBwYXJhbWV0ZXJzIGhlcmUuCiAJCSAqLwotCQlQ b3J0YWxTdGFydChwb3J0YWwsIE5VTEwsIDAsIEludmFsaWRTbmFwc2hvdCk7CisJCXsKKwkJCWJv b2wJcGxhbl92YWxpZCBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CisKKwkJCXBsYW5fdmFsaWQg PSBQb3J0YWxTdGFydChwb3J0YWwsIE5VTEwsIDAsIEludmFsaWRTbmFwc2hvdCk7CisJCQlBc3Nl cnQocGxhbl92YWxpZCk7CisJCX0KIAogCQkvKgogCQkgKiBTZWxlY3QgdGhlIGFwcHJvcHJpYXRl IG91dHB1dCBmb3JtYXQ6IHRleHQgdW5sZXNzIHdlIGFyZSBkb2luZyBhCkBAIC0xNzM2LDYgKzE3 NDEsNyBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJCQkJ CQkiY29tbWFuZHMgaWdub3JlZCB1bnRpbCBlbmQgb2YgdHJhbnNhY3Rpb24gYmxvY2siKSwKIAkJ CQkgZXJyZGV0YWlsX2Fib3J0KCkpKTsKIAorcmVwbGFuOgogCS8qCiAJICogQ3JlYXRlIHRoZSBw b3J0YWwuICBBbGxvdyBzaWxlbnQgcmVwbGFjZW1lbnQgb2YgYW4gZXhpc3RpbmcgcG9ydGFsIG9u bHkKIAkgKiBpZiB0aGUgdW5uYW1lZCBwb3J0YWwgaXMgc3BlY2lmaWVkLgpAQCAtMjAyMyw5ICsy MDI5LDE1IEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0cmluZ0luZm8gaW5wdXRfbWVzc2FnZSkKIAkJ UG9wQWN0aXZlU25hcHNob3QoKTsKIAogCS8qCi0JICogQW5kIHdlJ3JlIHJlYWR5IHRvIHN0YXJ0 IHBvcnRhbCBleGVjdXRpb24uCisJICogU3RhcnQgcG9ydGFsIGV4ZWN1dGlvbi4gIElmIHRoZSBw b3J0YWwgY29udGFpbnMgYSBjYWNoZWQgcGxhbiwgaXQgbXVzdAorCSAqIGJlIHJlY3JlYXRlZCBp ZiB0aGUgY2FjaGVkIHBsYW4gd2FzIGZvdW5kIHRvIGhhdmUgYmVlbiBpbnZhbGlkYXRlZCB3aGVu CisJICogaW5pdGlhbGl6aW5nIG9uZSBvZiB0aGUgcGxhbiB0cmVlcyBjb250YWluZWQgaW4gaXQu CiAJICovCi0JUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbXMsIDAsIEludmFsaWRTbmFwc2hvdCk7 CisJaWYgKCFQb3J0YWxTdGFydChwb3J0YWwsIHBhcmFtcywgMCwgSW52YWxpZFNuYXBzaG90KSkK Kwl7CisJCVBvcnRhbERyb3AocG9ydGFsLCBmYWxzZSk7CisJCWdvdG8gcmVwbGFuOworCX0KIAog CS8qCiAJICogQXBwbHkgdGhlIHJlc3VsdCBmb3JtYXQgcmVxdWVzdHMgdG8gdGhlIHBvcnRhbC4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9zcmMvYmFja2VuZC90Y29w L3BxdWVyeS5jCmluZGV4IDRlZjM0OWRmOGIuLmZjZjk5MjVlZDQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwpAQCAt MTksNiArMTksNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjb21t YW5kcy9wcmVwYXJlLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2Rlc2MuaCIKICNpbmNsdWRl ICJleGVjdXRvci90c3RvcmVSZWNlaXZlci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2lu Y2x1ZGUgInBnX3RyYWNlLmgiCkBAIC0zNSwxMiArMzYsNiBAQAogUG9ydGFsCQlBY3RpdmVQb3J0 YWwgPSBOVUxMOwogCiAKLXN0YXRpYyB2b2lkIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxh biwKLQkJCQkJCSBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAotCQkJCQkJIFBhcmFtTGlzdEluZm8g cGFyYW1zLAotCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAotCQkJCQkJIERlc3RS ZWNlaXZlciAqZGVzdCwKLQkJCQkJCSBRdWVyeUNvbXBsZXRpb24gKnFjKTsKIHN0YXRpYyB2b2lk IEZpbGxQb3J0YWxTdG9yZShQb3J0YWwgcG9ydGFsLCBib29sIGlzVG9wTGV2ZWwpOwogc3RhdGlj IHVpbnQ2NCBSdW5Gcm9tU3RvcmUoUG9ydGFsIHBvcnRhbCwgU2NhbkRpcmVjdGlvbiBkaXJlY3Rp b24sIHVpbnQ2NCBjb3VudCwKIAkJCQkJCSAgIERlc3RSZWNlaXZlciAqZGVzdCk7CkBAIC0xMTgs ODYgKzExMyw2IEBAIEZyZWVRdWVyeURlc2MoUXVlcnlEZXNjICpxZGVzYykKIH0KIAogCi0vKgot ICogUHJvY2Vzc1F1ZXJ5Ci0gKgkJRXhlY3V0ZSBhIHNpbmdsZSBwbGFubmFibGUgcXVlcnkgd2l0 aGluIGEgUE9SVEFMX01VTFRJX1FVRVJZLAotICoJCVBPUlRBTF9PTkVfUkVUVVJOSU5HLCBvciBQ T1JUQUxfT05FX01PRF9XSVRIIHBvcnRhbAotICoKLSAqCXBsYW46IHRoZSBwbGFuIHRyZWUgZm9y IHRoZSBxdWVyeQotICoJc291cmNlVGV4dDogdGhlIHNvdXJjZSB0ZXh0IG9mIHRoZSBxdWVyeQot ICoJcGFyYW1zOiBhbnkgcGFyYW1ldGVycyBuZWVkZWQKLSAqCWRlc3Q6IHdoZXJlIHRvIHNlbmQg cmVzdWx0cwotICoJcWM6IHdoZXJlIHRvIHN0b3JlIHRoZSBjb21tYW5kIGNvbXBsZXRpb24gc3Rh dHVzIGRhdGEuCi0gKgotICogcWMgbWF5IGJlIE5VTEwgaWYgY2FsbGVyIGRvZXNuJ3Qgd2FudCBh IHN0YXR1cyBzdHJpbmcuCi0gKgotICogTXVzdCBiZSBjYWxsZWQgaW4gYSBtZW1vcnkgY29udGV4 dCB0aGF0IHdpbGwgYmUgcmVzZXQgb3IgZGVsZXRlZCBvbgotICogZXJyb3I7IG90aGVyd2lzZSB0 aGUgZXhlY3V0b3IncyBtZW1vcnkgdXNhZ2Ugd2lsbCBiZSBsZWFrZWQuCi0gKi8KLXN0YXRpYyB2 b2lkCi1Qcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCi0JCQkgY29uc3QgY2hhciAqc291 cmNlVGV4dCwKLQkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKLQkJCSBRdWVyeUVudmlyb25tZW50 ICpxdWVyeUVudiwKLQkJCSBEZXN0UmVjZWl2ZXIgKmRlc3QsCi0JCQkgUXVlcnlDb21wbGV0aW9u ICpxYykKLXsKLQlRdWVyeURlc2MgICpxdWVyeURlc2M7Ci0KLQkvKgotCSAqIENyZWF0ZSB0aGUg UXVlcnlEZXNjIG9iamVjdAotCSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFu LCBOVUxMLCBzb3VyY2VUZXh0LAotCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlk U25hcHNob3QsCi0JCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIDApOwotCi0JLyoKLQkg KiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uCi0J ICovCi0JRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIDApOwotCi0JLyoKLQkgKiBSdW4gdGhlIHBs YW4gdG8gY29tcGxldGlvbi4KLQkgKi8KLQlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndhcmRT Y2FuRGlyZWN0aW9uLCAwLCB0cnVlKTsKLQotCS8qCi0JICogQnVpbGQgY29tbWFuZCBjb21wbGV0 aW9uIHN0YXR1cyBkYXRhLCBpZiBjYWxsZXIgd2FudHMgb25lLgotCSAqLwotCWlmIChxYykKLQl7 Ci0JCXN3aXRjaCAocXVlcnlEZXNjLT5vcGVyYXRpb24pCi0JCXsKLQkJCWNhc2UgQ01EX1NFTEVD VDoKLQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19TRUxFQ1QsIHF1ZXJ5RGVzYy0+ ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBDTURfSU5TRVJUOgot CQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX0lOU0VSVCwgcXVlcnlEZXNjLT5lc3Rh dGUtPmVzX3Byb2Nlc3NlZCk7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIENNRF9VUERBVEU6Ci0JCQkJ U2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfVVBEQVRFLCBxdWVyeURlc2MtPmVzdGF0ZS0+ ZXNfcHJvY2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgQ01EX0RFTEVURToKLQkJCQlTZXRR dWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19ERUxFVEUsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19w cm9jZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBDTURfTUVSR0U6Ci0JCQkJU2V0UXVlcnlD b21wbGV0aW9uKHFjLCBDTURUQUdfTUVSR0UsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNz ZWQpOwotCQkJCWJyZWFrOwotCQkJZGVmYXVsdDoKLQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMs IENNRFRBR19VTktOT1dOLCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKLQkJCQli cmVhazsKLQkJfQotCX0KLQotCS8qCi0JICogTm93LCB3ZSBjbG9zZSBkb3duIGFsbCB0aGUgc2Nh bnMgYW5kIGZyZWUgYWxsb2NhdGVkIHJlc291cmNlcy4KLQkgKi8KLQlFeGVjdXRvckZpbmlzaChx dWVyeURlc2MpOwotCUV4ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7Ci0KLQlGcmVlUXVlcnlEZXNjKHF1 ZXJ5RGVzYyk7Ci19Ci0KIC8qCiAgKiBDaG9vc2VQb3J0YWxTdHJhdGVneQogICoJCVNlbGVjdCBw b3J0YWwgZXhlY3V0aW9uIHN0cmF0ZWd5IGdpdmVuIHRoZSBpbnRlbmRlZCBzdGF0ZW1lbnQgbGlz dC4KQEAgLTQyOCwxOSArMzQzLDIxIEBAIEZldGNoU3RhdGVtZW50VGFyZ2V0TGlzdChOb2RlICpz dG10KQogICogcHJlc2VudGx5IGlnbm9yZWQgZm9yIG5vbi1QT1JUQUxfT05FX1NFTEVDVCBwb3J0 YWxzIChpdCdzIG9ubHkgaW50ZW5kZWQKICAqIHRvIGJlIHVzZWQgZm9yIGN1cnNvcnMpLgogICoK LSAqIE9uIHJldHVybiwgcG9ydGFsIGlzIHJlYWR5IHRvIGFjY2VwdCBQb3J0YWxSdW4oKSBjYWxs cywgYW5kIHRoZSByZXN1bHQKLSAqIHR1cGRlc2MgKGlmIGFueSkgaXMga25vd24uCisgKiBUcnVl IGlzIHJldHVybmVkIGlmIHBvcnRhbCBpcyByZWFkeSB0byBhY2NlcHQgUG9ydGFsUnVuKCkgY2Fs bHMsIGFuZCB0aGUKKyAqIHJlc3VsdCB0dXBkZXNjIChpZiBhbnkpIGlzIGtub3duLiAgRmFsc2Ug aWYgdGhlIHBsYW4gdHJlZSBpcyBubyBsb25nZXIKKyAqIHZhbGlkLCBpbiB3aGljaCBjYXNlLCB0 aGUgY2FsbGVyIG11c3QgcmV0cnkgYWZ0ZXIgZ2VuZXJhdGluZyBhIG5ldworICogQ2FjaGVkUGxh bi4KICAqLwotdm9pZAorYm9vbAogUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0 SW5mbyBwYXJhbXMsCiAJCQlpbnQgZWZsYWdzLCBTbmFwc2hvdCBzbmFwc2hvdCkKIHsKIAlQb3J0 YWwJCXNhdmVBY3RpdmVQb3J0YWw7CiAJUmVzb3VyY2VPd25lciBzYXZlUmVzb3VyY2VPd25lcjsK LQlNZW1vcnlDb250ZXh0IHNhdmVQb3J0YWxDb250ZXh0OwogCU1lbW9yeUNvbnRleHQgb2xkQ29u dGV4dDsKIAlRdWVyeURlc2MgICpxdWVyeURlc2M7Ci0JaW50CQkJbXllZmxhZ3M7CisJaW50CQkJ bXllZmxhZ3MgPSAwOworCWJvb2wJCXBsYW5fdmFsaWQgPSB0cnVlOwogCiAJQXNzZXJ0KFBvcnRh bElzVmFsaWQocG9ydGFsKSk7CiAJQXNzZXJ0KHBvcnRhbC0+c3RhdHVzID09IFBPUlRBTF9ERUZJ TkVEKTsKQEAgLTQ1MCwxNSArMzY3LDEzIEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBh cmFtTGlzdEluZm8gcGFyYW1zLAogCSAqLwogCXNhdmVBY3RpdmVQb3J0YWwgPSBBY3RpdmVQb3J0 YWw7CiAJc2F2ZVJlc291cmNlT3duZXIgPSBDdXJyZW50UmVzb3VyY2VPd25lcjsKLQlzYXZlUG9y dGFsQ29udGV4dCA9IFBvcnRhbENvbnRleHQ7CiAJUEdfVFJZKCk7CiAJewogCQlBY3RpdmVQb3J0 YWwgPSBwb3J0YWw7CiAJCWlmIChwb3J0YWwtPnJlc293bmVyKQogCQkJQ3VycmVudFJlc291cmNl T3duZXIgPSBwb3J0YWwtPnJlc293bmVyOwotCQlQb3J0YWxDb250ZXh0ID0gcG9ydGFsLT5wb3J0 YWxDb250ZXh0OwogCi0JCW9sZENvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oUG9ydGFs Q29udGV4dCk7CisJCW9sZENvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocG9ydGFsLT5x dWVyeUNvbnRleHQpOwogCiAJCS8qIE11c3QgcmVtZW1iZXIgcG9ydGFsIHBhcmFtIGxpc3QsIGlm IGFueSAqLwogCQlwb3J0YWwtPnBvcnRhbFBhcmFtcyA9IHBhcmFtczsKQEAgLTQ3NCw2ICszODks OCBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJ c3dpdGNoIChwb3J0YWwtPnN0cmF0ZWd5KQogCQl7CiAJCQljYXNlIFBPUlRBTF9PTkVfU0VMRUNU OgorCQkJY2FzZSBQT1JUQUxfT05FX1JFVFVSTklORzoKKwkJCWNhc2UgUE9SVEFMX09ORV9NT0Rf V0lUSDoKIAogCQkJCS8qIE11c3Qgc2V0IHNuYXBzaG90IGJlZm9yZSBzdGFydGluZyBleGVjdXRv ci4gKi8KIAkJCQlpZiAoc25hcHNob3QpCkBAIC00OTEsOCArNDA4LDggQEAgUG9ydGFsU3RhcnQo UG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJICovCiAKIAkJCQkvKgot CQkJCSAqIENyZWF0ZSBRdWVyeURlc2MgaW4gcG9ydGFsJ3MgY29udGV4dDsgZm9yIHRoZSBtb21l bnQsIHNldAotCQkJCSAqIHRoZSBkZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4KKwkJCQkgKiBDcmVh dGUgUXVlcnlEZXNjIGluIHBvcnRhbC0+cXVlcnlDb250ZXh0OyBmb3IgdGhlIG1vbWVudCwKKwkJ CQkgKiBzZXQgdGhlIGRlc3RpbmF0aW9uIHRvIERlc3ROb25lLgogCQkJCSAqLwogCQkJCXF1ZXJ5 RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhsaW5pdGlhbF9ub2RlKFBsYW5uZWRTdG10LCBwb3J0YWwt PnN0bXRzKSwKIAkJCQkJCQkJCQkJTlVMTCwKQEAgLTUwNCwzMCArNDIxLDUxIEBAIFBvcnRhbFN0 YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCQkJCQkJCQlwb3J0 YWwtPnF1ZXJ5RW52LAogCQkJCQkJCQkJCQkwKTsKIAorCQkJCS8qIFJlbWVtYmVyIGZvciBQb3J0 YWxSdW5NdWx0aSgpLiAqLworCQkJCWlmIChwb3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVf UkVUVVJOSU5HIHx8CisJCQkJCXBvcnRhbC0+c3RyYXRlZ3kgPT0gUE9SVEFMX09ORV9NT0RfV0lU SCkKKwkJCQkJcG9ydGFsLT5xZGVzY3MgPSBsaXN0X21ha2UxKHF1ZXJ5RGVzYyk7CisKIAkJCQkv KgogCQkJCSAqIElmIGl0J3MgYSBzY3JvbGxhYmxlIGN1cnNvciwgZXhlY3V0b3IgbmVlZHMgdG8g c3VwcG9ydAogCQkJCSAqIFJFV0lORCBhbmQgYmFja3dhcmRzIHNjYW4sIGFzIHdlbGwgYXMgd2hh dGV2ZXIgdGhlIGNhbGxlcgogCQkJCSAqIG1pZ2h0J3ZlIGFza2VkIGZvci4KIAkJCQkgKi8KLQkJ CQlpZiAocG9ydGFsLT5jdXJzb3JPcHRpb25zICYgQ1VSU09SX09QVF9TQ1JPTEwpCisJCQkJaWYg KHBvcnRhbC0+c3RyYXRlZ3kgPT0gUE9SVEFMX09ORV9TRUxFQ1QgJiYKKwkJCQkJKHBvcnRhbC0+ Y3Vyc29yT3B0aW9ucyAmIENVUlNPUl9PUFRfU0NST0xMKSkKIAkJCQkJbXllZmxhZ3MgPSBlZmxh Z3MgfCBFWEVDX0ZMQUdfUkVXSU5EIHwgRVhFQ19GTEFHX0JBQ0tXQVJEOwogCQkJCWVsc2UKIAkJ CQkJbXllZmxhZ3MgPSBlZmxhZ3M7CiAKIAkJCQkvKgotCQkJCSAqIENhbGwgRXhlY3V0b3JTdGFy dCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24KKwkJCQkgKiBDYWxsIEV4ZWN1dG9y U3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uLiAgQQorCQkJCSAqIGNhY2hl ZCBwbGFuIG1heSBnZXQgaW52YWxpZGF0ZWQgZHVyaW5nIHBsYW4gaW50aWFsaXphdGlvbi4KIAkJ CQkgKi8KLQkJCQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgbXllZmxhZ3MpOworCQkJCWlmICgh RXhlY3V0b3JTdGFydChxdWVyeURlc2MsIG15ZWZsYWdzKSkKKwkJCQl7CisJCQkJCUV4ZWN1dG9y RW5kKHF1ZXJ5RGVzYyk7CisJCQkJCUZyZWVRdWVyeURlc2MocXVlcnlEZXNjKTsKKwkJCQkJUG9w QWN0aXZlU25hcHNob3QoKTsKKwkJCQkJcGxhbl92YWxpZCA9IGZhbHNlOworCQkJCQlnb3RvIHBs YW5faW5pdF9mYWlsZWQ7CisJCQkJfQogCiAJCQkJLyoKLQkJCQkgKiBUaGlzIHRlbGxzIFBvcnRh bENsZWFudXAgdG8gc2h1dCBkb3duIHRoZSBleGVjdXRvcgorCQkJCSAqIFRoaXMgdGVsbHMgUG9y dGFsQ2xlYW51cCB0byBzaHV0IGRvd24gdGhlIGV4ZWN1dG9yLCB0aG91Z2gKKwkJCQkgKiBub3Qg bmVlZGVkIGZvciBxdWVyaWVzIGhhbmRsZWQgYnkgUG9ydGFsUnVuTXVsdGkoKS4KIAkJCQkgKi8K LQkJCQlwb3J0YWwtPnF1ZXJ5RGVzYyA9IHF1ZXJ5RGVzYzsKKwkJCQlpZiAocG9ydGFsLT5zdHJh dGVneSA9PSBQT1JUQUxfT05FX1NFTEVDVCkKKwkJCQkJcG9ydGFsLT5xdWVyeURlc2MgPSBxdWVy eURlc2M7CiAKIAkJCQkvKgotCQkJCSAqIFJlbWVtYmVyIHR1cGxlIGRlc2NyaXB0b3IgKGNvbXB1 dGVkIGJ5IEV4ZWN1dG9yU3RhcnQpCisJCQkJICogUmVtZW1iZXIgdHVwbGUgZGVzY3JpcHRvciAo Y29tcHV0ZWQgYnkgRXhlY3V0b3JTdGFydCksCisJCQkJICogdGhvdWdoIG1ha2UgaXQgaW5kZXBl bmRlbnQgb2YgUXVlcnlEZXNjIGZvciBxdWVyaWVzIGhhbmRsZWQKKwkJCQkgKiBieSBQb3J0YWxS dW5NdWx0aSgpLgogCQkJCSAqLwotCQkJCXBvcnRhbC0+dHVwRGVzYyA9IHF1ZXJ5RGVzYy0+dHVw RGVzYzsKKwkJCQlpZiAocG9ydGFsLT5zdHJhdGVneSAhPSBQT1JUQUxfT05FX1NFTEVDVCkKKwkJ CQkJcG9ydGFsLT50dXBEZXNjID0gQ3JlYXRlVHVwbGVEZXNjQ29weShxdWVyeURlc2MtPnR1cERl c2MpOworCQkJCWVsc2UKKwkJCQkJcG9ydGFsLT50dXBEZXNjID0gcXVlcnlEZXNjLT50dXBEZXNj OwogCiAJCQkJLyoKIAkJCQkgKiBSZXNldCBjdXJzb3IgcG9zaXRpb24gZGF0YSB0byAic3RhcnQg b2YgcXVlcnkiCkBAIC01MzksMjkgKzQ3Nyw2IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWws IFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCQkJYnJl YWs7CiAKLQkJCWNhc2UgUE9SVEFMX09ORV9SRVRVUk5JTkc6Ci0JCQljYXNlIFBPUlRBTF9PTkVf TU9EX1dJVEg6Ci0KLQkJCQkvKgotCQkJCSAqIFdlIGRvbid0IHN0YXJ0IHRoZSBleGVjdXRvciB1 bnRpbCB3ZSBhcmUgdG9sZCB0byBydW4gdGhlCi0JCQkJICogcG9ydGFsLiAgV2UgZG8gbmVlZCB0 byBzZXQgdXAgdGhlIHJlc3VsdCB0dXBkZXNjLgotCQkJCSAqLwotCQkJCXsKLQkJCQkJUGxhbm5l ZFN0bXQgKnBzdG10OwotCi0JCQkJCXBzdG10ID0gUG9ydGFsR2V0UHJpbWFyeVN0bXQocG9ydGFs KTsKLQkJCQkJcG9ydGFsLT50dXBEZXNjID0KLQkJCQkJCUV4ZWNDbGVhblR5cGVGcm9tVEwocHN0 bXQtPnBsYW5UcmVlLT50YXJnZXRsaXN0KTsKLQkJCQl9Ci0KLQkJCQkvKgotCQkJCSAqIFJlc2V0 IGN1cnNvciBwb3NpdGlvbiBkYXRhIHRvICJzdGFydCBvZiBxdWVyeSIKLQkJCQkgKi8KLQkJCQlw b3J0YWwtPmF0U3RhcnQgPSB0cnVlOwotCQkJCXBvcnRhbC0+YXRFbmQgPSBmYWxzZTsJLyogYWxs b3cgZmV0Y2hlcyAqLwotCQkJCXBvcnRhbC0+cG9ydGFsUG9zID0gMDsKLQkJCQlicmVhazsKLQog CQkJY2FzZSBQT1JUQUxfVVRJTF9TRUxFQ1Q6CiAKIAkJCQkvKgpAQCAtNTg0LDcgKzQ5OSw4MiBA QCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQli cmVhazsKIAogCQkJY2FzZSBQT1JUQUxfTVVMVElfUVVFUlk6Ci0JCQkJLyogTmVlZCBkbyBub3Ro aW5nIG5vdyAqLworCQkJCXsKKwkJCQkJTGlzdENlbGwgICAqbGM7CisJCQkJCWJvb2wJCWZpcnN0 ID0gdHJ1ZTsKKworCQkJCQlteWVmbGFncyA9IGVmbGFnczsKKwkJCQkJZm9yZWFjaChsYywgcG9y dGFsLT5zdG10cykKKwkJCQkJeworCQkJCQkJUGxhbm5lZFN0bXQgKnBsYW4gPSBsZmlyc3Rfbm9k ZShQbGFubmVkU3RtdCwgbGMpOworCQkJCQkJYm9vbAkJaXNfdXRpbGl0eSA9IChwbGFuLT51dGls aXR5U3RtdCAhPSBOVUxMKTsKKworCQkJCQkJLyoKKwkJCQkJCSAqIFB1c2ggdGhlIHNuYXBzaG90 IHRvIGJlIHVzZWQgYnkgdGhlIGV4ZWN1dG9yLgorCQkJCQkJICovCisJCQkJCQlpZiAoIWlzX3V0 aWxpdHkpCisJCQkJCQl7CisJCQkJCQkJLyoKKwkJCQkJCQkgKiBNdXN0IGNvcHkgdGhlIHNuYXBz aG90IGZvciBhbGwgc3RhdGVtZW50cworCQkJCQkJCSAqIGV4Y2VwdCB0aGVjIGZpcnN0IGFzIHdl J2xsIG5lZWQgdG8gdXBkYXRlIGl0cworCQkJCQkJCSAqIGNvbW1hbmQgSUQuCisJCQkJCQkJICov CisJCQkJCQkJaWYgKCFmaXJzdCkKKwkJCQkJCQkJUHVzaENvcGllZFNuYXBzaG90KEdldFRyYW5z YWN0aW9uU25hcHNob3QoKSk7CisJCQkJCQkJZWxzZQorCQkJCQkJCQlQdXNoQWN0aXZlU25hcHNo b3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJCQkJCX0KKworCQkJCQkJLyoKKwkJCQkJ CSAqIEZyb20gdGhlIDJuZCBzdGF0ZW1lbnQgb253YXJkcywgdXBkYXRlIHRoZSBjb21tYW5kCisJ CQkJCQkgKiBJRCBhbmQgdGhlIHNuYXBzaG90IHRvIG1hdGNoLgorCQkJCQkJICovCisJCQkJCQlp ZiAoIWZpcnN0KQorCQkJCQkJeworCQkJCQkJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisJ CQkJCQkJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKKwkJCQkJCX0KKworCQkJCQkJ Zmlyc3QgPSBmYWxzZTsKKworCQkJCQkJLyoKKwkJCQkJCSAqIENyZWF0ZSB0aGUgUXVlcnlEZXNj LiAgRGVzdFJlY2VpdmVyIHdpbGwgYmUgc2V0IGluCisJCQkJCQkgKiBQb3J0YWxSdW5NdWx0aSgp IGJlZm9yZSBjYWxsaW5nIEV4ZWN1dG9yUnVuKCkuCisJCQkJCQkgKi8KKwkJCQkJCXF1ZXJ5RGVz YyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLAorCQkJCQkJCQkJCQkJCU5VTEwsCisJCQkJCQkJCQkJ CQkJcG9ydGFsLT5zb3VyY2VUZXh0LAorCQkJCQkJCQkJCQkJCSFpc191dGlsaXR5ID8KKwkJCQkJ CQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpIDoKKwkJCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNo b3QsCisJCQkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90LAorCQkJCQkJCQkJCQkJCU5VTEwsCisJ CQkJCQkJCQkJCQkJcGFyYW1zLAorCQkJCQkJCQkJCQkJCXBvcnRhbC0+cXVlcnlFbnYsIDApOwor CisJCQkJCQkvKiBSZW1lbWJlciBmb3IgUG9ydGFsUnVuTXVsdGkoKSAqLworCQkJCQkJcG9ydGFs LT5xZGVzY3MgPSBsYXBwZW5kKHBvcnRhbC0+cWRlc2NzLCBxdWVyeURlc2MpOworCisJCQkJCQlp ZiAoaXNfdXRpbGl0eSkKKwkJCQkJCQljb250aW51ZTsKKworCQkJCQkJLyoKKwkJCQkJCSAqIENh bGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvcgorCQkJCQkJICogZXhlY3V0 aW9uLiAgQSBjYWNoZWQgcGxhbiBtYXkgZ2V0IGludmFsaWRhdGVkCisJCQkJCQkgKiBkdXJpbmcg cGxhbiBpbnRpYWxpemF0aW9uLgorCQkJCQkJICovCisJCQkJCQlpZiAoIUV4ZWN1dG9yU3RhcnQo cXVlcnlEZXNjLCBteWVmbGFncykpCisJCQkJCQl7CisJCQkJCQkJUG9wQWN0aXZlU25hcHNob3Qo KTsKKwkJCQkJCQlFeGVjdXRvckVuZChxdWVyeURlc2MpOworCQkJCQkJCUZyZWVRdWVyeURlc2Mo cXVlcnlEZXNjKTsKKwkJCQkJCQlwbGFuX3ZhbGlkID0gZmFsc2U7CisJCQkJCQkJZ290byBwbGFu X2luaXRfZmFpbGVkOworCQkJCQkJfQorCQkJCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJCQkJ fQorCQkJCX0KKwogCQkJCXBvcnRhbC0+dHVwRGVzYyA9IE5VTEw7CiAJCQkJYnJlYWs7CiAJCX0K QEAgLTU5NywxOSArNTg3LDIwIEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlz dEluZm8gcGFyYW1zLAogCQkvKiBSZXN0b3JlIGdsb2JhbCB2YXJzIGFuZCBwcm9wYWdhdGUgZXJy b3IgKi8KIAkJQWN0aXZlUG9ydGFsID0gc2F2ZUFjdGl2ZVBvcnRhbDsKIAkJQ3VycmVudFJlc291 cmNlT3duZXIgPSBzYXZlUmVzb3VyY2VPd25lcjsKLQkJUG9ydGFsQ29udGV4dCA9IHNhdmVQb3J0 YWxDb250ZXh0OwogCiAJCVBHX1JFX1RIUk9XKCk7CiAJfQogCVBHX0VORF9UUlkoKTsKIAorCXBv cnRhbC0+c3RhdHVzID0gUE9SVEFMX1JFQURZOworCitwbGFuX2luaXRfZmFpbGVkOgogCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRDb250ZXh0KTsKIAogCUFjdGl2ZVBvcnRhbCA9IHNhdmVBY3Rp dmVQb3J0YWw7CiAJQ3VycmVudFJlc291cmNlT3duZXIgPSBzYXZlUmVzb3VyY2VPd25lcjsKLQlQ b3J0YWxDb250ZXh0ID0gc2F2ZVBvcnRhbENvbnRleHQ7CiAKLQlwb3J0YWwtPnN0YXR1cyA9IFBP UlRBTF9SRUFEWTsKKwlyZXR1cm4gcGxhbl92YWxpZDsKIH0KIAogLyoKQEAgLTExOTYsNyArMTE4 Nyw3IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQkgICBRdWVyeUNvbXBsZXRp b24gKnFjKQogewogCWJvb2wJCWFjdGl2ZV9zbmFwc2hvdF9zZXQgPSBmYWxzZTsKLQlMaXN0Q2Vs bCAgICpzdG10bGlzdF9pdGVtOworCUxpc3RDZWxsICAgKnFkZXNjX2l0ZW07CiAKIAkvKgogCSAq IElmIHRoZSBkZXN0aW5hdGlvbiBpcyBEZXN0UmVtb3RlRXhlY3V0ZSwgY2hhbmdlIHRvIERlc3RO b25lLiAgVGhlCkBAIC0xMjE3LDkgKzEyMDgsMTAgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBv cnRhbCwKIAkgKiBMb29wIHRvIGhhbmRsZSB0aGUgaW5kaXZpZHVhbCBxdWVyaWVzIGdlbmVyYXRl ZCBmcm9tIGEgc2luZ2xlIHBhcnNldHJlZQogCSAqIGJ5IGFuYWx5c2lzIGFuZCByZXdyaXRlLgog CSAqLwotCWZvcmVhY2goc3RtdGxpc3RfaXRlbSwgcG9ydGFsLT5zdG10cykKKwlmb3JlYWNoKHFk ZXNjX2l0ZW0sIHBvcnRhbC0+cWRlc2NzKQogCXsKLQkJUGxhbm5lZFN0bXQgKnBzdG10ID0gbGZp cnN0X25vZGUoUGxhbm5lZFN0bXQsIHN0bXRsaXN0X2l0ZW0pOworCQlRdWVyeURlc2MgKnFkZXNj ID0gKFF1ZXJ5RGVzYyAqKSBsZmlyc3QocWRlc2NfaXRlbSk7CisJCVBsYW5uZWRTdG10ICpwc3Rt dCA9IHFkZXNjLT5wbGFubmVkc3RtdDsKIAogCQkvKgogCQkgKiBJZiB3ZSBnb3QgYSBjYW5jZWwg c2lnbmFsIGluIHByaW9yIGNvbW1hbmQsIHF1aXQKQEAgLTEyMzYsMzMgKzEyMjgsMjYgQEAgUG9y dGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJCWlmIChsb2dfZXhlY3V0b3Jfc3RhdHMpCiAJ CQkJUmVzZXRVc2FnZSgpOwogCi0JCQkvKgotCQkJICogTXVzdCBhbHdheXMgaGF2ZSBhIHNuYXBz aG90IGZvciBwbGFubmFibGUgcXVlcmllcy4gIEZpcnN0IHRpbWUKLQkJCSAqIHRocm91Z2gsIHRh a2UgYSBuZXcgc25hcHNob3Q7IGZvciBzdWJzZXF1ZW50IHF1ZXJpZXMgaW4gdGhlCi0JCQkgKiBz YW1lIHBvcnRhbCwganVzdCB1cGRhdGUgdGhlIHNuYXBzaG90J3MgY29weSBvZiB0aGUgY29tbWFu ZAotCQkJICogY291bnRlci4KLQkJCSAqLworCQkJLyogUHVzaCB0aGUgc25hcHNob3QgZm9yIHBs YW5uYWJsZSBxdWVyaWVzLiAqLwogCQkJaWYgKCFhY3RpdmVfc25hcHNob3Rfc2V0KQogCQkJewot CQkJCVNuYXBzaG90CXNuYXBzaG90ID0gR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpOworCQkJCVNu YXBzaG90CXNuYXBzaG90ID0gcWRlc2MtPnNuYXBzaG90OwogCi0JCQkJLyogSWYgdG9sZCB0bywg cmVnaXN0ZXIgdGhlIHNuYXBzaG90IGFuZCBzYXZlIGluIHBvcnRhbCAqLworCQkJCS8qCisJCQkJ ICogSWYgdG9sZCB0bywgcmVnaXN0ZXIgdGhlIHNuYXBzaG90IGFuZCBzYXZlIGluIHBvcnRhbAor CQkJCSAqCisJCQkJICogTm90ZSB0aGF0IHRoZSBjb21tYW5kIElEIG9mIHFkZXNjLT5zbmFwc2hv dCBmb3IgMm5kIHF1ZXJ5CisJCQkJICogb253YXJkcyB3b3VsZCBoYXZlIGJlZW4gdXBkYXRlZCBp biBQb3J0YWxTdGFydCgpIHRvIGFjY291bnQKKwkJCQkgKiBmb3IgQ0NJKCkgZG9uZSBiZXR3ZWVu IHF1ZXJpZXMsIGJ1dCBpdCdzIE9LIHRoYXQgaGVyZSB3ZQorCQkJCSAqIGRvbid0IGxpa2V3aXNl IHVwZGF0ZSBob2xkU25hcHNob3QncyBjb21tYW5kIElELgorCQkJCSAqLwogCQkJCWlmIChzZXRI b2xkU25hcHNob3QpCiAJCQkJewogCQkJCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3Qoc25h cHNob3QpOwogCQkJCQlwb3J0YWwtPmhvbGRTbmFwc2hvdCA9IHNuYXBzaG90OwogCQkJCX0KIAot CQkJCS8qCi0JCQkJICogV2UgY2FuJ3QgaGF2ZSB0aGUgaG9sZFNuYXBzaG90IGFsc28gYmUgdGhl IGFjdGl2ZSBvbmUsCi0JCQkJICogYmVjYXVzZSBVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJ ZCB3b3VsZCBjb21wbGFpbi4gIFNvCi0JCQkJICogZm9yY2UgYW4gZXh0cmEgc25hcHNob3QgY29w eS4gIFBsYWluIFB1c2hBY3RpdmVTbmFwc2hvdAotCQkJCSAqIHdvdWxkIGhhdmUgY29waWVkIHRo ZSB0cmFuc2FjdGlvbiBzbmFwc2hvdCBhbnl3YXksIHNvIHRoaXMKLQkJCQkgKiBvbmx5IGFkZHMg YSBjb3B5IHN0ZXAgd2hlbiBzZXRIb2xkU25hcHNob3QgaXMgdHJ1ZS4gIChJdCdzCi0JCQkJICog b2theSBmb3IgdGhlIGNvbW1hbmQgSUQgb2YgdGhlIGFjdGl2ZSBzbmFwc2hvdCB0byBkaXZlcmdl Ci0JCQkJICogZnJvbSB3aGF0IGhvbGRTbmFwc2hvdCBoYXMuKQotCQkJCSAqLwotCQkJCVB1c2hD b3BpZWRTbmFwc2hvdChzbmFwc2hvdCk7CisJCQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90 KTsKIAogCQkJCS8qCiAJCQkJICogQXMgZm9yIFBPUlRBTF9PTkVfU0VMRUNUIHBvcnRhbHMsIGl0 IGRvZXMgbm90IHNlZW0KQEAgLTEyNzEsMjYgKzEyNTYsMzkgQEAgUG9ydGFsUnVuTXVsdGkoUG9y dGFsIHBvcnRhbCwKIAogCQkJCWFjdGl2ZV9zbmFwc2hvdF9zZXQgPSB0cnVlOwogCQkJfQotCQkJ ZWxzZQotCQkJCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKKwkJCS8qCisJCQkg KiBSdW4gdGhlIHBsYW4gdG8gY29tcGxldGlvbi4KKwkJCSAqLworCQkJcWRlc2MtPmRlc3QgPSBk ZXN0OworCQkJRXhlY3V0b3JSdW4ocWRlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCAwLCB0cnVl KTsKKworCQkJLyoKKwkJCSAqIEJ1aWxkIGNvbW1hbmQgY29tcGxldGlvbiBzdGF0dXMgZGF0YSBp ZiBuZWVkZWQuCisJCQkgKi8KIAkJCWlmIChwc3RtdC0+Y2FuU2V0VGFnKQogCQkJewotCQkJCS8q IHN0YXRlbWVudCBjYW4gc2V0IHRhZyBzdHJpbmcgKi8KLQkJCQlQcm9jZXNzUXVlcnkocHN0bXQs Ci0JCQkJCQkJIHBvcnRhbC0+c291cmNlVGV4dCwKLQkJCQkJCQkgcG9ydGFsLT5wb3J0YWxQYXJh bXMsCi0JCQkJCQkJIHBvcnRhbC0+cXVlcnlFbnYsCi0JCQkJCQkJIGRlc3QsIHFjKTsKLQkJCX0K LQkJCWVsc2UKLQkJCXsKLQkJCQkvKiBzdG10IGFkZGVkIGJ5IHJld3JpdGUgY2Fubm90IHNldCB0 YWcgKi8KLQkJCQlQcm9jZXNzUXVlcnkocHN0bXQsCi0JCQkJCQkJIHBvcnRhbC0+c291cmNlVGV4 dCwKLQkJCQkJCQkgcG9ydGFsLT5wb3J0YWxQYXJhbXMsCi0JCQkJCQkJIHBvcnRhbC0+cXVlcnlF bnYsCi0JCQkJCQkJIGFsdGRlc3QsIE5VTEwpOworCQkJCXN3aXRjaCAocWRlc2MtPm9wZXJhdGlv bikKKwkJCQl7CisJCQkJCWNhc2UgQ01EX1NFTEVDVDoKKwkJCQkJCVNldFF1ZXJ5Q29tcGxldGlv bihxYywgQ01EVEFHX1NFTEVDVCwgcWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJ CWJyZWFrOworCQkJCQljYXNlIENNRF9JTlNFUlQ6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24o cWMsIENNRFRBR19JTlNFUlQsIHFkZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCQkJCQli cmVhazsKKwkJCQkJY2FzZSBDTURfVVBEQVRFOgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFj LCBDTURUQUdfVVBEQVRFLCBxZGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOworCQkJCQkJYnJl YWs7CisJCQkJCWNhc2UgQ01EX0RFTEVURToKKwkJCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywg Q01EVEFHX0RFTEVURSwgcWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFr OworCQkJCQljYXNlIENNRF9NRVJHRToKKwkJCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01E VEFHX01FUkdFLCBxZGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOworCQkJCQkJYnJlYWs7CisJ CQkJCWRlZmF1bHQ6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19VTktOT1dO LCBxZGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOworCQkJCQkJYnJlYWs7CisJCQkJfQogCQkJ fQogCiAJCQlpZiAobG9nX2V4ZWN1dG9yX3N0YXRzKQpAQCAtMTM0NSwxMiArMTM0MywxMiBAQCBQ b3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQlpZiAocG9ydGFsLT5zdG10cyA9PSBOSUwp CiAJCQlicmVhazsKIAotCQkvKgotCQkgKiBJbmNyZW1lbnQgY29tbWFuZCBjb3VudGVyIGJldHdl ZW4gcXVlcmllcywgYnV0IG5vdCBhZnRlciB0aGUgbGFzdAotCQkgKiBvbmUuCi0JCSAqLwotCQlp ZiAobG5leHQocG9ydGFsLT5zdG10cywgc3RtdGxpc3RfaXRlbSkgIT0gTlVMTCkKLQkJCUNvbW1h bmRDb3VudGVySW5jcmVtZW50KCk7CisJCWlmIChxZGVzYy0+ZXN0YXRlKQorCQl7CisJCQlFeGVj dXRvckZpbmlzaChxZGVzYyk7CisJCQlFeGVjdXRvckVuZChxZGVzYyk7CisJCX0KKwkJRnJlZVF1 ZXJ5RGVzYyhxZGVzYyk7CiAJfQogCiAJLyogUG9wIHRoZSBzbmFwc2hvdCBpZiB3ZSBwdXNoZWQg b25lLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyBi L3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKaW5kZXggMDZkZmE4NWYwNC4uMGNh ZDQ1MGRjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCkBAIC0yMDEsNiArMjAxLDEz IEBAIENyZWF0ZVBvcnRhbChjb25zdCBjaGFyICpuYW1lLCBib29sIGFsbG93RHVwLCBib29sIGR1 cFNpbGVudCkKIAlwb3J0YWwtPnBvcnRhbENvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUo VG9wUG9ydGFsQ29udGV4dCwKIAkJCQkJCQkJCQkJCSAgIlBvcnRhbENvbnRleHQiLAogCQkJCQkJ CQkJCQkJICBBTExPQ1NFVF9TTUFMTF9TSVpFUyk7CisJLyoKKwkgKiBpbml0aWFsaXplIHBvcnRh bCdzIHF1ZXJ5IGNvbnRleHQgdG8gc3RvcmUgUXVlcnlEZXNjcyBjcmVhdGVkIGR1cmluZworCSAq IFBvcnRhbFN0YXJ0KCkgYW5kIHRoZW4gdXNlZCBpbiBQb3J0YWxSdW4oKS4KKwkgKi8KKwlwb3J0 YWwtPnF1ZXJ5Q29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BQb3J0YWxDb250ZXh0 LAorCQkJCQkJCQkJCQkJICJQb3J0YWxRdWVyeUNvbnRleHQiLAorCQkJCQkJCQkJCQkJIEFMTE9D U0VUX1NNQUxMX1NJWkVTKTsKIAogCS8qIGNyZWF0ZSBhIHJlc291cmNlIG93bmVyIGZvciB0aGUg cG9ydGFsICovCiAJcG9ydGFsLT5yZXNvd25lciA9IFJlc291cmNlT3duZXJDcmVhdGUoQ3VyVHJh bnNhY3Rpb25SZXNvdXJjZU93bmVyLApAQCAtMjI0LDYgKzIzMSw3IEBAIENyZWF0ZVBvcnRhbChj b25zdCBjaGFyICpuYW1lLCBib29sIGFsbG93RHVwLCBib29sIGR1cFNpbGVudCkKIAogCS8qIGZv ciBuYW1lZCBwb3J0YWxzIHJldXNlIHBvcnRhbC0+bmFtZSBjb3B5ICovCiAJTWVtb3J5Q29udGV4 dFNldElkZW50aWZpZXIocG9ydGFsLT5wb3J0YWxDb250ZXh0LCBwb3J0YWwtPm5hbWVbMF0gPyBw b3J0YWwtPm5hbWUgOiAiPHVubmFtZWQ+Iik7CisJTWVtb3J5Q29udGV4dFNldElkZW50aWZpZXIo cG9ydGFsLT5xdWVyeUNvbnRleHQsIHBvcnRhbC0+bmFtZVswXSA/IHBvcnRhbC0+bmFtZSA6ICI8 dW5uYW1lZD4iKTsKIAogCXJldHVybiBwb3J0YWw7CiB9CkBAIC01OTQsNiArNjAyLDcgQEAgUG9y dGFsRHJvcChQb3J0YWwgcG9ydGFsLCBib29sIGlzVG9wQ29tbWl0KQogCiAJLyogcmVsZWFzZSBz dWJzaWRpYXJ5IHN0b3JhZ2UgKi8KIAlNZW1vcnlDb250ZXh0RGVsZXRlKHBvcnRhbC0+cG9ydGFs Q29udGV4dCk7CisJTWVtb3J5Q29udGV4dERlbGV0ZShwb3J0YWwtPnF1ZXJ5Q29udGV4dCk7CiAK IAkvKiByZWxlYXNlIHBvcnRhbCBzdHJ1Y3QgKGl0J3MgaW4gVG9wUG9ydGFsQ29udGV4dCkgKi8K IAlwZnJlZShwb3J0YWwpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFp bi5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCmluZGV4IGY5NTI1ZmI1NzIuLjA1 NDEzMjgyM2MgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAorKysg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKQEAgLTg4LDcgKzg4LDExIEBAIGV4dGVy biB2b2lkIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICpp bnRvLAogCQkJCQkJCSAgRXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcs CiAJCQkJCQkJICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlF bnYpOwogCi1leHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0 bXQsIEludG9DbGF1c2UgKmludG8sCitleHRlcm4gUXVlcnlEZXNjICpFeHBsYWluUXVlcnlEZXNj KFBsYW5uZWRTdG10ICpzdG10LCBzdHJ1Y3QgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkJIGNvbnN0 IGNoYXIgKnF1ZXJ5U3RyaW5nLCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAor CQkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOwor ZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCisJCQkJCQkg ICBJbnRvQ2xhdXNlICppbnRvLAogCQkJCQkJICAgRXhwbGFpblN0YXRlICplcywgY29uc3QgY2hh ciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZp cm9ubWVudCAqcXVlcnlFbnYsCiAJCQkJCQkgICBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRp b24sCkBAIC0xMDQsNiArMTA4LDcgQEAgZXh0ZXJuIHZvaWQgRXhwbGFpblF1ZXJ5UGFyYW1ldGVy cyhFeHBsYWluU3RhdGUgKmVzLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywgaW50IG0KIAogZXh0ZXJu IHZvaWQgRXhwbGFpbkJlZ2luT3V0cHV0KEV4cGxhaW5TdGF0ZSAqZXMpOwogZXh0ZXJuIHZvaWQg RXhwbGFpbkVuZE91dHB1dChFeHBsYWluU3RhdGUgKmVzKTsKK2V4dGVybiB2b2lkIEV4cGxhaW5S ZXNldE91dHB1dChFeHBsYWluU3RhdGUgKmVzKTsKIGV4dGVybiB2b2lkIEV4cGxhaW5TZXBhcmF0 ZVBsYW5zKEV4cGxhaW5TdGF0ZSAqZXMpOwogCiBleHRlcm4gdm9pZCBFeHBsYWluUHJvcGVydHlM aXN0KGNvbnN0IGNoYXIgKnFsYWJlbCwgTGlzdCAqZGF0YSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3RyaWdnZXIuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaApp bmRleCA0MzBlM2NhN2RkLi5kNGY3YzI5MzAxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21t YW5kcy90cmlnZ2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oCkBAIC0y NTcsNiArMjU3LDcgQEAgZXh0ZXJuIHZvaWQgRXhlY0FTVHJ1bmNhdGVUcmlnZ2VycyhFU3RhdGUg KmVzdGF0ZSwKIAogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyQmVnaW5YYWN0KHZvaWQpOwogZXh0 ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyQmVnaW5RdWVyeSh2b2lkKTsKK2V4dGVybiB2b2lkIEFmdGVy VHJpZ2dlckNhbmNlbFF1ZXJ5KHZvaWQpOwogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyRW5kUXVl cnkoRVN0YXRlICplc3RhdGUpOwogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyRmlyZURlZmVycmVk KHZvaWQpOwogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyRW5kWGFjdChib29sIGlzQ29tbWl0KTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggYi9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4IDNiMzNiMzgxOTYuLjRmMTgzZWM2Y2QgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY3V0b3IuaApAQCAtNzMsNyArNzMsNyBAQAogCiAKIC8qIEhvb2sgZm9yIHBs dWdpbnMgdG8gZ2V0IGNvbnRyb2wgaW4gRXhlY3V0b3JTdGFydCgpICovCi10eXBlZGVmIHZvaWQg KCpFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSkgKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZs YWdzKTsKK3R5cGVkZWYgYm9vbCAoKkV4ZWN1dG9yU3RhcnRfaG9va190eXBlKSAoUXVlcnlEZXNj ICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwogZXh0ZXJuIFBHRExMSU1QT1JUIEV4ZWN1dG9yU3Rh cnRfaG9va190eXBlIEV4ZWN1dG9yU3RhcnRfaG9vazsKIAogLyogSG9vayBmb3IgcGx1Z2lucyB0 byBnZXQgY29udHJvbCBpbiBFeGVjdXRvclJ1bigpICovCkBAIC0xOTgsOCArMTk4LDggQEAgRXhl Y0dldEp1bmtBdHRyaWJ1dGUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIEF0dHJOdW1iZXIgYXR0bm8s IGJvb2wgKmlzTnVsbCkKIC8qCiAgKiBwcm90b3R5cGVzIGZyb20gZnVuY3Rpb25zIGluIGV4ZWNN YWluLmMKICAqLwotZXh0ZXJuIHZvaWQgRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVz YywgaW50IGVmbGFncyk7Ci1leHRlcm4gdm9pZCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5 RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKK2V4dGVybiBib29sIEV4ZWN1dG9yU3RhcnQo UXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOworZXh0ZXJuIGJvb2wgc3RhbmRhcmRf RXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBleHRlcm4g dm9pZCBFeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJCQkJCVNjYW5EaXJlY3Rp b24gZGlyZWN0aW9uLCB1aW50NjQgY291bnQsIGJvb2wgZXhlY3V0ZV9vbmNlKTsKIGV4dGVybiB2 b2lkIHN0YW5kYXJkX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaAppbmRleCAwODY3MGJjNWVkLi5jYWQyMzI5YWM5IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aApAQCAtNjY5LDYgKzY2OSw5IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCWludAkJCWVzX3Rv cF9lZmxhZ3M7CS8qIGVmbGFncyBwYXNzZWQgdG8gRXhlY3V0b3JTdGFydCAqLwogCWludAkJCWVz X2luc3RydW1lbnQ7CS8qIE9SIG9mIEluc3RydW1lbnRPcHRpb24gZmxhZ3MgKi8KIAlib29sCQll c19maW5pc2hlZDsJLyogdHJ1ZSB3aGVuIEV4ZWN1dG9yRmluaXNoIGlzIGRvbmUgKi8KKwlib29s CQllc19jYW5jZWxlZDsJLyogdHJ1ZSB3aGVuIGV4ZWN1dGlvbiB3YXMgY2FuY2VsZWQKKwkJCQkJ CQkJICogdXBvbiBlbmNvdW50ZXJpbmcgdGhhdCBwbGFuIHdhcyBpbnZhbGlkZWQKKwkJCQkJCQkJ ICogZHVyaW5nIEV4ZWNJbml0Tm9kZSgpICovCiAKIAlMaXN0CSAgICplc19leHByY29udGV4dHM7 CS8qIExpc3Qgb2YgRXhwckNvbnRleHRzIHdpdGhpbiBFU3RhdGUgKi8KIApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdGNvcC9wcXVlcnkuaCBiL3NyYy9pbmNsdWRlL3Rjb3AvcHF1ZXJ5LmgKaW5k ZXggYTVlNjViOThhYS4uNTc3YjgxYTllZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9w cXVlcnkuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL3BxdWVyeS5oCkBAIC0yOSw3ICsyOSw3IEBA IGV4dGVybiBMaXN0ICpGZXRjaFBvcnRhbFRhcmdldExpc3QoUG9ydGFsIHBvcnRhbCk7CiAKIGV4 dGVybiBMaXN0ICpGZXRjaFN0YXRlbWVudFRhcmdldExpc3QoTm9kZSAqc3RtdCk7CiAKLWV4dGVy biB2b2lkIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAor ZXh0ZXJuIGJvb2wgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJh bXMsCiAJCQkJCQlpbnQgZWZsYWdzLCBTbmFwc2hvdCBzbmFwc2hvdCk7CiAKIGV4dGVybiB2b2lk IFBvcnRhbFNldFJlc3VsdEZvcm1hdChQb3J0YWwgcG9ydGFsLCBpbnQgbkZvcm1hdHMsCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3Bv cnRhbC5oCmluZGV4IDhiNDQ3MWNiZTUuLjUxM2UzYzM4OGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3V0aWxzL3BvcnRhbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCkBAIC0x MzgsNiArMTM4LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUG9ydGFsRGF0YQogCVF1ZXJ5Q29tcGxldGlv biBxYzsJCQkvKiBjb21tYW5kIGNvbXBsZXRpb24gZGF0YSBmb3IgZXhlY3V0ZWQgcXVlcnkgKi8K IAlMaXN0CSAgICpzdG10czsJCQkvKiBsaXN0IG9mIFBsYW5uZWRTdG10cyAqLwogCUNhY2hlZFBs YW4gKmNwbGFuOwkJCS8qIENhY2hlZFBsYW4sIGlmIHN0bXRzIGFyZSBmcm9tIG9uZSAqLworCUxp c3QJICAgKnFkZXNjczsJCQkvKiBsaXN0IG9mIFF1ZXJ5RGVzY3MgKi8KKwlNZW1vcnlDb250ZXh0 IHF1ZXJ5Q29udGV4dDsJLyogbWVtb3J5IGZvciBRdWVyeURlc2NzIGFuZCBjaGlsZHJlbiAqLwog CiAJUGFyYW1MaXN0SW5mbyBwb3J0YWxQYXJhbXM7IC8qIHBhcmFtcyB0byBwYXNzIHRvIHF1ZXJ5 ICovCiAJUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnY7IC8qIGVudmlyb25tZW50IGZvciBxdWVy eSAqLwotLSAKMi4zNS4zCgo= --0000000000000a00a4060a8df157--